diff --git a/dist/face-api.esm-nobundle.js b/dist/face-api.esm-nobundle.js index 25f89bd..13d8670 100644 --- a/dist/face-api.esm-nobundle.js +++ b/dist/face-api.esm-nobundle.js @@ -5,5 +5,5 @@ author: ' */ -var __create=Object.create,__defProp=Object.defineProperty,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropDesc=Object.getOwnPropertyDescriptor;var __markAsModule=target=>__defProp(target,"__esModule",{value:!0});var __commonJS=(callback,module)=>()=>(module||(module={exports:{}},callback(module.exports,module)),module.exports),__export=(target,all)=>{__markAsModule(target);for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__exportStar=(target,module,desc)=>{if(__markAsModule(target),module&&typeof module=="object"||typeof module=="function")for(let key of __getOwnPropNames(module))!__hasOwnProp.call(target,key)&&key!=="default"&&__defProp(target,key,{get:()=>module[key],enumerable:!(desc=__getOwnPropDesc(module,key))||desc.enumerable});return target},__toModule=module=>module&&module.__esModule?module:__exportStar(__defProp(module!=null?__create(__getProtoOf(module)):{},"default",{value:module,enumerable:!0}),module);import*as dist_star from"@tensorflow/tfjs/dist/index.js";import*as tfjs_backend_wasm_star from"@tensorflow/tfjs-backend-wasm";var require_tfjs_esm=__commonJS(exports=>{__exportStar(exports,dist_star);__exportStar(exports,tfjs_backend_wasm_star)});var require_isNodejs=__commonJS((exports,module)=>{__export(exports,{isNodejs:()=>isNodejs2});function isNodejs2(){return typeof global=="object"&&!0&&typeof module!="undefined"&&typeof process!="undefined"&&!!process.version}});var tf42=__toModule(require_tfjs_esm());var draw_exports={};__export(draw_exports,{AnchorPosition:()=>AnchorPosition,DrawBox:()=>DrawBox,DrawBoxOptions:()=>DrawBoxOptions,DrawFaceLandmarks:()=>DrawFaceLandmarks,DrawFaceLandmarksOptions:()=>DrawFaceLandmarksOptions,DrawTextField:()=>DrawTextField,DrawTextFieldOptions:()=>DrawTextFieldOptions,drawContour:()=>drawContour,drawDetections:()=>drawDetections,drawFaceExpressions:()=>drawFaceExpressions,drawFaceLandmarks:()=>drawFaceLandmarks});function drawContour(ctx,points,isClosed=!1){if(ctx.beginPath(),points.slice(1).forEach(({x,y},prevIdx)=>{let from=points[prevIdx];ctx.moveTo(from.x,from.y),ctx.lineTo(x,y)}),isClosed){let from=points[points.length-1],to=points[0];if(!from||!to)return;ctx.moveTo(from.x,from.y),ctx.lineTo(to.x,to.y)}ctx.stroke()}var utils_exports={};__export(utils_exports,{computeReshapedDimensions:()=>computeReshapedDimensions,getCenterPoint:()=>getCenterPoint,isDimensions:()=>isDimensions,isEven:()=>isEven,isFloat:()=>isFloat,isTensor:()=>isTensor,isTensor1D:()=>isTensor1D,isTensor2D:()=>isTensor2D,isTensor3D:()=>isTensor3D,isTensor4D:()=>isTensor4D,isValidNumber:()=>isValidNumber,isValidProbablitiy:()=>isValidProbablitiy,range:()=>range,round:()=>round});var tf=__toModule(require_tfjs_esm());var Dimensions=class{constructor(width,height){if(!isValidNumber(width)||!isValidNumber(height))throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({width,height})}`);this._width=width,this._height=height}get width(){return this._width}get height(){return this._height}reverse(){return new Dimensions(1/this.width,1/this.height)}};function isTensor(tensor2,dim){return tensor2 instanceof tf.Tensor&&tensor2.shape.length===dim}function isTensor1D(tensor2){return isTensor(tensor2,1)}function isTensor2D(tensor2){return isTensor(tensor2,2)}function isTensor3D(tensor2){return isTensor(tensor2,3)}function isTensor4D(tensor2){return isTensor(tensor2,4)}function isFloat(num){return num%1!=0}function isEven(num){return num%2==0}function round(num,prec=2){let f=10**prec;return Math.floor(num*f)/f}function isDimensions(obj){return obj&&obj.width&&obj.height}function computeReshapedDimensions({width,height},inputSize){let scale2=inputSize/Math.max(height,width);return new Dimensions(Math.round(width*scale2),Math.round(height*scale2))}function getCenterPoint(pts){return pts.reduce((sum,pt)=>sum.add(pt),new Point(0,0)).div(new Point(pts.length,pts.length))}function range(num,start,step){return Array(num).fill(0).map((_,i)=>start+i*step)}function isValidNumber(num){return!!num&&num!==Infinity&&num!==-Infinity&&!Number.isNaN(num)||num===0}function isValidProbablitiy(num){return isValidNumber(num)&&num>=0&&num<=1}var Point=class{constructor(x,y){this._x=x,this._y=y}get x(){return this._x}get y(){return this._y}add(pt){return new Point(this.x+pt.x,this.y+pt.y)}sub(pt){return new Point(this.x-pt.x,this.y-pt.y)}mul(pt){return new Point(this.x*pt.x,this.y*pt.y)}div(pt){return new Point(this.x/pt.x,this.y/pt.y)}abs(){return new Point(Math.abs(this.x),Math.abs(this.y))}magnitude(){return Math.sqrt(this.x**2+this.y**2)}floor(){return new Point(Math.floor(this.x),Math.floor(this.y))}};var Box=class{static isRect(rect){return!!rect&&[rect.x,rect.y,rect.width,rect.height].every(isValidNumber)}static assertIsValidBox(box,callee,allowNegativeDimensions=!1){if(!Box.isRect(box))throw new Error(`${callee} - invalid box: ${JSON.stringify(box)}, expected object with properties x, y, width, height`);if(!allowNegativeDimensions&&(box.width<0||box.height<0))throw new Error(`${callee} - width (${box.width}) and height (${box.height}) must be positive numbers`)}constructor(_box,allowNegativeDimensions=!0){let box=_box||{},isBbox=[box.left,box.top,box.right,box.bottom].every(isValidNumber),isRect=[box.x,box.y,box.width,box.height].every(isValidNumber);if(!isRect&&!isBbox)throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(box)}`);let[x,y,width,height]=isRect?[box.x,box.y,box.width,box.height]:[box.left,box.top,box.right-box.left,box.bottom-box.top];Box.assertIsValidBox({x,y,width,height},"Box.constructor",allowNegativeDimensions),this._x=x,this._y=y,this._width=width,this._height=height}get x(){return this._x}get y(){return this._y}get width(){return this._width}get height(){return this._height}get left(){return this.x}get top(){return this.y}get right(){return this.x+this.width}get bottom(){return this.y+this.height}get area(){return this.width*this.height}get topLeft(){return new Point(this.left,this.top)}get topRight(){return new Point(this.right,this.top)}get bottomLeft(){return new Point(this.left,this.bottom)}get bottomRight(){return new Point(this.right,this.bottom)}round(){let[x,y,width,height]=[this.x,this.y,this.width,this.height].map(val=>Math.round(val));return new Box({x,y,width,height})}floor(){let[x,y,width,height]=[this.x,this.y,this.width,this.height].map(val=>Math.floor(val));return new Box({x,y,width,height})}toSquare(){let{x,y,width,height}=this,diff=Math.abs(width-height);return widthimageWidth&&(edx=-ex+imageWidth+w,ex=imageWidth),ey>imageHeight&&(edy=-ey+imageHeight+h,ey=imageHeight),x<1&&(edy=2-x,x=1),y<1&&(edy=2-y,y=1),{dy,edy,dx,edx,y,ey,x,ex,w,h}}calibrate(region){return new Box({left:this.left+region.left*this.width,top:this.top+region.top*this.height,right:this.right+region.right*this.width,bottom:this.bottom+region.bottom*this.height}).toSquare().round()}};var BoundingBox=class extends Box{constructor(left,top,right,bottom,allowNegativeDimensions=!1){super({left,top,right,bottom},allowNegativeDimensions)}};var ObjectDetection=class{constructor(score,classScore,className,relativeBox,imageDims){this._imageDims=new Dimensions(imageDims.width,imageDims.height),this._score=score,this._classScore=classScore,this._className=className,this._box=new Box(relativeBox).rescale(this._imageDims)}get score(){return this._score}get classScore(){return this._classScore}get className(){return this._className}get box(){return this._box}get imageDims(){return this._imageDims}get imageWidth(){return this.imageDims.width}get imageHeight(){return this.imageDims.height}get relativeBox(){return new Box(this._box).rescale(this.imageDims.reverse())}forSize(width,height){return new ObjectDetection(this.score,this.classScore,this.className,this.relativeBox,{width,height})}};var FaceDetection=class extends ObjectDetection{constructor(score,relativeBox,imageDims){super(score,score,"",relativeBox,imageDims)}forSize(width,height){let{score,relativeBox,imageDims}=super.forSize(width,height);return new FaceDetection(score,relativeBox,imageDims)}};function iou(box1,box2,isIOU=!0){let width=Math.max(0,Math.min(box1.right,box2.right)-Math.max(box1.left,box2.left)),height=Math.max(0,Math.min(box1.bottom,box2.bottom)-Math.max(box1.top,box2.top)),interSection=width*height;return isIOU?interSection/(box1.area+box2.area-interSection):interSection/Math.min(box1.area,box2.area)}function minBbox(pts){let xs=pts.map(pt=>pt.x),ys=pts.map(pt=>pt.y),minX=xs.reduce((min,x)=>xymaxmax({score,boxIndex})).sort((c1,c2)=>c1.score-c2.score).map(c=>c.boxIndex),pick=[];for(;indicesSortedByScore.length>0;){let curr=indicesSortedByScore.pop();pick.push(curr);let indices=indicesSortedByScore,outputs=[];for(let i=0;ioutputs[j]<=iouThreshold)}return pick}var tf2=__toModule(require_tfjs_esm());function normalize(x,meanRgb){return tf2.tidy(()=>{let[r,g,b]=meanRgb,avg_r=tf2.fill([...x.shape.slice(0,3),1],r,"float32"),avg_g=tf2.fill([...x.shape.slice(0,3),1],g,"float32"),avg_b=tf2.fill([...x.shape.slice(0,3),1],b,"float32"),avg_rgb=tf2.concat([avg_r,avg_g,avg_b],3);return tf2.sub(x,avg_rgb)})}var tf3=__toModule(require_tfjs_esm());function padToSquare(imgTensor,isCenterImage=!1){return tf3.tidy(()=>{let[height,width]=imgTensor.shape.slice(1);if(height===width)return imgTensor;let dimDiff=Math.abs(height-width),paddingAmount=Math.round(dimDiff*(isCenterImage?.5:1)),paddingAxis=height>width?2:1,createPaddingTensor=paddingAmountLocal=>{let paddingTensorShape=imgTensor.shape.slice();return paddingTensorShape[paddingAxis]=paddingAmountLocal,tf3.fill(paddingTensorShape,0,"float32")},paddingTensorAppend=createPaddingTensor(paddingAmount),remainingPaddingAmount=dimDiff-paddingTensorAppend.shape[paddingAxis],tensorsToStack=[isCenterImage&&remainingPaddingAmount?createPaddingTensor(remainingPaddingAmount):null,imgTensor,paddingTensorAppend].filter(t=>!!t).map(t=>tf3.cast(t,"float32"));return tf3.concat(tensorsToStack,paddingAxis)})}function shuffleArray(inputArray){let array=inputArray.slice();for(let i=array.length-1;i>0;i--){let j=Math.floor(Math.random()*(i+1)),x=array[i];array[i]=array[j],array[j]=x}return array}function sigmoid(x){return 1/(1+Math.exp(-x))}function inverseSigmoid(x){return Math.log(x/(1-x))}var Rect=class extends Box{constructor(x,y,width,height,allowNegativeDimensions=!1){super({x,y,width,height},allowNegativeDimensions)}};var relX=.5,relY=.43,relScale=.45,FaceLandmarks=class{constructor(relativeFaceLandmarkPositions,imgDims,shift=new Point(0,0)){let{width,height}=imgDims;this._imgDims=new Dimensions(width,height),this._shift=shift,this._positions=relativeFaceLandmarkPositions.map(pt=>pt.mul(new Point(width,height)).add(shift))}get shift(){return new Point(this._shift.x,this._shift.y)}get imageWidth(){return this._imgDims.width}get imageHeight(){return this._imgDims.height}get positions(){return this._positions}get relativePositions(){return this._positions.map(pt=>pt.sub(this._shift).div(new Point(this.imageWidth,this.imageHeight)))}forSize(width,height){return new this.constructor(this.relativePositions,{width,height})}shiftBy(x,y){return new this.constructor(this.relativePositions,this._imgDims,new Point(x,y))}shiftByPoint(pt){return this.shiftBy(pt.x,pt.y)}align(detection,options={}){if(detection){let box=detection instanceof FaceDetection?detection.box.floor():new Box(detection);return this.shiftBy(box.x,box.y).align(null,options)}let{useDlibAlignment,minBoxPadding}={useDlibAlignment:!1,minBoxPadding:.2,...options};return useDlibAlignment?this.alignDlib():this.alignMinBbox(minBoxPadding)}alignDlib(){let centers=this.getRefPointsForAlignment(),[leftEyeCenter,rightEyeCenter,mouthCenter]=centers,distToMouth=pt=>mouthCenter.sub(pt).magnitude(),eyeToMouthDist=(distToMouth(leftEyeCenter)+distToMouth(rightEyeCenter))/2,size=Math.floor(eyeToMouthDist/relScale),refPoint=getCenterPoint(centers),x=Math.floor(Math.max(0,refPoint.x-relX*size)),y=Math.floor(Math.max(0,refPoint.y-relY*size));return new Rect(x,y,Math.min(size,this.imageWidth+x),Math.min(size,this.imageHeight+y))}alignMinBbox(padding){let box=minBbox(this.positions);return box.pad(box.width*padding,box.height*padding)}getRefPointsForAlignment(){throw new Error("getRefPointsForAlignment not implemented by base class")}};var FaceLandmarks5=class extends FaceLandmarks{getRefPointsForAlignment(){let pts=this.positions;return[pts[0],pts[1],getCenterPoint([pts[3],pts[4]])]}};var FaceLandmarks68=class extends FaceLandmarks{getJawOutline(){return this.positions.slice(0,17)}getLeftEyeBrow(){return this.positions.slice(17,22)}getRightEyeBrow(){return this.positions.slice(22,27)}getNose(){return this.positions.slice(27,36)}getLeftEye(){return this.positions.slice(36,42)}getRightEye(){return this.positions.slice(42,48)}getMouth(){return this.positions.slice(48,68)}getRefPointsForAlignment(){return[this.getLeftEye(),this.getRightEye(),this.getMouth()].map(getCenterPoint)}};var FaceMatch=class{constructor(label,distance){this._label=label,this._distance=distance}get label(){return this._label}get distance(){return this._distance}toString(withDistance=!0){return`${this.label}${withDistance?` (${round(this.distance)})`:""}`}};var LabeledBox=class extends Box{static assertIsValidLabeledBox(box,callee){if(Box.assertIsValidBox(box,callee),!isValidNumber(box.label))throw new Error(`${callee} - expected property label (${box.label}) to be a number`)}constructor(box,label){super(box);this._label=label}get label(){return this._label}};var LabeledFaceDescriptors=class{constructor(label,descriptors){if(typeof label!="string")throw new Error("LabeledFaceDescriptors - constructor expected label to be a string");if(!Array.isArray(descriptors)||descriptors.some(desc=>!(desc instanceof Float32Array)))throw new Error("LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array");this._label=label,this._descriptors=descriptors}get label(){return this._label}get descriptors(){return this._descriptors}toJSON(){return{label:this.label,descriptors:this.descriptors.map(d=>Array.from(d))}}static fromJSON(json){let descriptors=json.descriptors.map(d=>new Float32Array(d));return new LabeledFaceDescriptors(json.label,descriptors)}};var PredictedBox=class extends LabeledBox{static assertIsValidPredictedBox(box,callee){if(LabeledBox.assertIsValidLabeledBox(box,callee),!isValidProbablitiy(box.score)||!isValidProbablitiy(box.classScore))throw new Error(`${callee} - expected properties score (${box.score}) and (${box.classScore}) to be a number between [0, 1]`)}constructor(box,label,score,classScore){super(box,label);this._score=score,this._classScore=classScore}get score(){return this._score}get classScore(){return this._classScore}};function isWithFaceDetection(obj){return obj.detection instanceof FaceDetection}function extendWithFaceDetection(sourceObj,detection){return{...sourceObj,...{detection}}}function createBrowserEnv(){let fetch=window.fetch;if(!fetch)throw new Error("fetch - missing fetch implementation for browser environment");let readFile=()=>{throw new Error("readFile - filesystem not available for browser environment")};return{Canvas:HTMLCanvasElement,CanvasRenderingContext2D,Image:HTMLImageElement,ImageData,Video:HTMLVideoElement,createCanvasElement:()=>document.createElement("canvas"),createImageElement:()=>document.createElement("img"),fetch,readFile}}function createFileSystem(fs){let requireFsError="";if(!fs)try{fs=require("fs")}catch(err){requireFsError=err.toString()}return{readFile:fs?filePath=>new Promise((resolve,reject)=>{fs.readFile(filePath,(err,buffer)=>err?reject(err):resolve(buffer))}):()=>{throw new Error(`readFile - failed to require fs in nodejs environment with error: ${requireFsError}`)}}}function createNodejsEnv(){let Canvas=global.Canvas||global.HTMLCanvasElement,Image=global.Image||global.HTMLImageElement,createCanvasElement=()=>{if(Canvas)return new Canvas;throw new Error("createCanvasElement - missing Canvas implementation for nodejs environment")},createImageElement=()=>{if(Image)return new Image;throw new Error("createImageElement - missing Image implementation for nodejs environment")},fetch=global.fetch,fileSystem=createFileSystem();return{Canvas:Canvas||class{},CanvasRenderingContext2D:global.CanvasRenderingContext2D||class{},Image:Image||class{},ImageData:global.ImageData||class{},Video:global.HTMLVideoElement||class{},createCanvasElement,createImageElement,fetch,...fileSystem}}function isBrowser(){return typeof window=="object"&&typeof document!="undefined"&&typeof HTMLImageElement!="undefined"&&typeof HTMLCanvasElement!="undefined"&&typeof HTMLVideoElement!="undefined"&&typeof ImageData!="undefined"&&typeof CanvasRenderingContext2D!="undefined"}var import_isNodejs=__toModule(require_isNodejs()),environment;function getEnv(){if(!environment)throw new Error("getEnv - environment is not defined, check isNodejs() and isBrowser()");return environment}function setEnv(env2){environment=env2}function initialize(){return isBrowser()?setEnv(createBrowserEnv()):import_isNodejs.isNodejs()?setEnv(createNodejsEnv()):null}function monkeyPatch(env2){if(environment||initialize(),!environment)throw new Error("monkeyPatch - environment is not defined, check isNodejs() and isBrowser()");let{Canvas=environment.Canvas,Image=environment.Image}=env2;environment.Canvas=Canvas,environment.Image=Image,environment.createCanvasElement=env2.createCanvasElement||(()=>new Canvas),environment.createImageElement=env2.createImageElement||(()=>new Image),environment.ImageData=env2.ImageData||environment.ImageData,environment.Video=env2.Video||environment.Video,environment.fetch=env2.fetch||environment.fetch,environment.readFile=env2.readFile||environment.readFile}var env={getEnv,setEnv,initialize,createBrowserEnv,createFileSystem,createNodejsEnv,monkeyPatch,isBrowser,isNodejs:import_isNodejs.isNodejs};initialize();function resolveInput(arg){return!env.isNodejs()&&typeof arg=="string"?document.getElementById(arg):arg}function getContext2dOrThrow(canvasArg){let{Canvas,CanvasRenderingContext2D:CanvasRenderingContext2D2}=env.getEnv();if(canvasArg instanceof CanvasRenderingContext2D2)return canvasArg;let canvas=resolveInput(canvasArg);if(!(canvas instanceof Canvas))throw new Error("resolveContext2d - expected canvas to be of instance of Canvas");let ctx=canvas.getContext("2d");if(!ctx)throw new Error("resolveContext2d - canvas 2d context is null");return ctx}var AnchorPosition;(function(AnchorPosition2){AnchorPosition2.TOP_LEFT="TOP_LEFT",AnchorPosition2.TOP_RIGHT="TOP_RIGHT",AnchorPosition2.BOTTOM_LEFT="BOTTOM_LEFT",AnchorPosition2.BOTTOM_RIGHT="BOTTOM_RIGHT"})(AnchorPosition||(AnchorPosition={}));var DrawTextFieldOptions=class{constructor(options={}){let{anchorPosition,backgroundColor,fontColor,fontSize,fontStyle,padding}=options;this.anchorPosition=anchorPosition||AnchorPosition.TOP_LEFT,this.backgroundColor=backgroundColor||"rgba(0, 0, 0, 0.5)",this.fontColor=fontColor||"rgba(255, 255, 255, 1)",this.fontSize=fontSize||14,this.fontStyle=fontStyle||"Georgia",this.padding=padding||4}},DrawTextField=class{constructor(text,anchor,options={}){this.text=typeof text=="string"?[text]:text instanceof DrawTextField?text.text:text,this.anchor=anchor,this.options=new DrawTextFieldOptions(options)}measureWidth(ctx){let{padding}=this.options;return this.text.map(l=>ctx.measureText(l).width).reduce((w0,w1)=>w0{let x=padding+upperLeft.x,y=padding+upperLeft.y+(i+1)*fontSize;ctx.fillText(textLine,x,y)})}};var DrawBoxOptions=class{constructor(options={}){let{boxColor,lineWidth,label,drawLabelOptions}=options;this.boxColor=boxColor||"rgba(0, 0, 255, 1)",this.lineWidth=lineWidth||2,this.label=label;let defaultDrawLabelOptions={anchorPosition:AnchorPosition.BOTTOM_LEFT,backgroundColor:this.boxColor};this.drawLabelOptions=new DrawTextFieldOptions({...defaultDrawLabelOptions,...drawLabelOptions})}},DrawBox=class{constructor(box,options={}){this.box=new Box(box),this.options=new DrawBoxOptions(options)}draw(canvasArg){let ctx=getContext2dOrThrow(canvasArg),{boxColor,lineWidth}=this.options,{x,y,width,height}=this.box;ctx.strokeStyle=boxColor,ctx.lineWidth=lineWidth,ctx.strokeRect(x,y,width,height);let{label}=this.options;label&&new DrawTextField([label],{x:x-lineWidth/2,y},this.options.drawLabelOptions).draw(canvasArg)}};function drawDetections(canvasArg,detections){(Array.isArray(detections)?detections:[detections]).forEach(det=>{let score=det instanceof FaceDetection?det.score:isWithFaceDetection(det)?det.detection.score:void 0,box=det instanceof FaceDetection?det.box:isWithFaceDetection(det)?det.detection.box:new Box(det),label=score?`${round(score)}`:void 0;new DrawBox(box,{label}).draw(canvasArg)})}var tf18=__toModule(require_tfjs_esm());function isMediaLoaded(media){let{Image,Video}=env.getEnv();return media instanceof Image&&media.complete||media instanceof Video&&media.readyState>=3}function awaitMediaLoaded(media){return new Promise((resolve,reject)=>{if(media instanceof env.getEnv().Canvas||isMediaLoaded(media))return resolve(null);function onError(e){!e.currentTarget||(e.currentTarget.removeEventListener("load",onLoad),e.currentTarget.removeEventListener("error",onError),reject(e))}function onLoad(e){!e.currentTarget||(e.currentTarget.removeEventListener("load",onLoad),e.currentTarget.removeEventListener("error",onError),resolve(e))}media.addEventListener("load",onLoad),media.addEventListener("error",onError)})}function bufferToImage(buf){return new Promise((resolve,reject)=>{buf instanceof Blob||reject(new Error("bufferToImage - expected buf to be of type: Blob"));let reader=new FileReader;reader.onload=()=>{typeof reader.result!="string"&&reject(new Error("bufferToImage - expected reader.result to be a string, in onload"));let img=env.getEnv().createImageElement();img.onload=()=>resolve(img),img.onerror=reject,img.src=reader.result},reader.onerror=reject,reader.readAsDataURL(buf)})}function getMediaDimensions(input){let{Image,Video}=env.getEnv();return input instanceof Image?new Dimensions(input.naturalWidth,input.naturalHeight):input instanceof Video?new Dimensions(input.videoWidth,input.videoHeight):new Dimensions(input.width,input.height)}function createCanvas({width,height}){let{createCanvasElement}=env.getEnv(),canvas=createCanvasElement();return canvas.width=width,canvas.height=height,canvas}function createCanvasFromMedia(media,dims){let{ImageData:ImageData2}=env.getEnv();if(!(media instanceof ImageData2)&&!isMediaLoaded(media))throw new Error("createCanvasFromMedia - media has not finished loading yet");let{width,height}=dims||getMediaDimensions(media),canvas=createCanvas({width,height});return media instanceof ImageData2?getContext2dOrThrow(canvas).putImageData(media,0,0):getContext2dOrThrow(canvas).drawImage(media,0,0,width,height),canvas}var tf4=__toModule(require_tfjs_esm());async function imageTensorToCanvas(imgTensor,canvas){let targetCanvas=canvas||env.getEnv().createCanvasElement(),[height,width,numChannels]=imgTensor.shape.slice(isTensor4D(imgTensor)?1:0),imgTensor3D=tf4.tidy(()=>imgTensor.as3D(height,width,numChannels).toInt());return await tf4.browser.toPixels(imgTensor3D,targetCanvas),imgTensor3D.dispose(),targetCanvas}function isMediaElement(input){let{Image,Canvas,Video}=env.getEnv();return input instanceof Image||input instanceof Canvas||input instanceof Video}var tf5=__toModule(require_tfjs_esm());function imageToSquare(input,inputSize,centerImage=!1){let{Image,Canvas}=env.getEnv();if(!(input instanceof Image||input instanceof Canvas))throw new Error("imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement");let dims=getMediaDimensions(input),scale2=inputSize/Math.max(dims.height,dims.width),width=scale2*dims.width,height=scale2*dims.height,targetCanvas=createCanvas({width:inputSize,height:inputSize}),inputCanvas=input instanceof Canvas?input:createCanvasFromMedia(input),offset=Math.abs(width-height)/2,dx=centerImage&&width{if(isTensor3D(input)){this._imageTensors[idx]=input,this._inputDimensions[idx]=input.shape;return}if(isTensor4D(input)){let batchSize=input.shape[0];if(batchSize!==1)throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);this._imageTensors[idx]=input,this._inputDimensions[idx]=input.shape.slice(1);return}let canvas=input instanceof env.getEnv().Canvas?input:createCanvasFromMedia(input);this._canvases[idx]=canvas,this._inputDimensions[idx]=[canvas.height,canvas.width,3]})}get imageTensors(){return this._imageTensors}get canvases(){return this._canvases}get isBatchInput(){return this.batchSize>1||this._treatAsBatchInput}get batchSize(){return this._batchSize}get inputDimensions(){return this._inputDimensions}get inputSize(){return this._inputSize}get reshapedInputDimensions(){return range(this.batchSize,0,1).map((_,batchIdx)=>this.getReshapedInputDimensions(batchIdx))}getInput(batchIdx){return this.canvases[batchIdx]||this.imageTensors[batchIdx]}getInputDimensions(batchIdx){return this._inputDimensions[batchIdx]}getInputHeight(batchIdx){return this._inputDimensions[batchIdx][0]}getInputWidth(batchIdx){return this._inputDimensions[batchIdx][1]}getReshapedInputDimensions(batchIdx){if(typeof this.inputSize!="number")throw new Error("getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet");let width=this.getInputWidth(batchIdx),height=this.getInputHeight(batchIdx);return computeReshapedDimensions({width,height},this.inputSize)}toBatchTensor(inputSize,isCenterInputs=!0){return this._inputSize=inputSize,tf5.tidy(()=>{let inputTensors=range(this.batchSize,0,1).map(batchIdx=>{let input=this.getInput(batchIdx);if(input instanceof tf5.Tensor){let imgTensor=isTensor4D(input)?input:input.expandDims();return imgTensor=padToSquare(imgTensor,isCenterInputs),(imgTensor.shape[1]!==inputSize||imgTensor.shape[2]!==inputSize)&&(imgTensor=tf5.image.resizeBilinear(imgTensor,[inputSize,inputSize])),imgTensor.as3D(inputSize,inputSize,3)}if(input instanceof env.getEnv().Canvas)return tf5.browser.fromPixels(imageToSquare(input,inputSize,isCenterInputs));throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input}`)});return tf5.stack(inputTensors.map(t=>tf5.cast(t,"float32"))).as4D(this.batchSize,inputSize,inputSize,3)})}};async function toNetInput(inputs){if(inputs instanceof NetInput)return inputs;let inputArgArray=Array.isArray(inputs)?inputs:[inputs];if(!inputArgArray.length)throw new Error("toNetInput - empty array passed as input");let getIdxHint=idx=>Array.isArray(inputs)?` at input index ${idx}:`:"",inputArray=inputArgArray.map(resolveInput);return inputArray.forEach((input,i)=>{if(!isMediaElement(input)&&!isTensor3D(input)&&!isTensor4D(input))throw typeof inputArgArray[i]=="string"?new Error(`toNetInput -${getIdxHint(i)} string passed, but could not resolve HTMLElement for element id ${inputArgArray[i]}`):new Error(`toNetInput -${getIdxHint(i)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`);if(isTensor4D(input)){let batchSize=input.shape[0];if(batchSize!==1)throw new Error(`toNetInput -${getIdxHint(i)} tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`)}}),await Promise.all(inputArray.map(input=>isMediaElement(input)&&awaitMediaLoaded(input))),new NetInput(inputArray,Array.isArray(inputs))}async function extractFaces(input,detections){let{Canvas}=env.getEnv(),canvas=input;if(!(input instanceof Canvas)){let netInput=await toNetInput(input);if(netInput.batchSize>1)throw new Error("extractFaces - batchSize > 1 not supported");let tensorOrCanvas=netInput.getInput(0);canvas=tensorOrCanvas instanceof Canvas?tensorOrCanvas:await imageTensorToCanvas(tensorOrCanvas)}let ctx=getContext2dOrThrow(canvas);return detections.map(det=>det instanceof FaceDetection?det.forSize(canvas.width,canvas.height).box.floor():det).map(box=>box.clipAtImageBorders(canvas.width,canvas.height)).map(({x,y,width,height})=>{let faceImg=createCanvas({width,height});return getContext2dOrThrow(faceImg).putImageData(ctx.getImageData(x,y,width,height),0,0),faceImg})}var tf6=__toModule(require_tfjs_esm());async function extractFaceTensors(imageTensor,detections){if(!isTensor3D(imageTensor)&&!isTensor4D(imageTensor))throw new Error("extractFaceTensors - expected image tensor to be 3D or 4D");if(isTensor4D(imageTensor)&&imageTensor.shape[0]>1)throw new Error("extractFaceTensors - batchSize > 1 not supported");return tf6.tidy(()=>{let[imgHeight,imgWidth,numChannels]=imageTensor.shape.slice(isTensor4D(imageTensor)?1:0);return detections.map(det=>det instanceof FaceDetection?det.forSize(imgWidth,imgHeight).box:det).map(box=>box.clipAtImageBorders(imgWidth,imgHeight)).map(({x,y,width,height})=>tf6.slice3d(imageTensor.as3D(imgHeight,imgWidth,numChannels),[y,x,0],[height,width,numChannels]))})}async function fetchOrThrow(url,init){let{fetch}=env.getEnv(),res=await fetch(url,init);if(!(res.status<400))throw new Error(`failed to fetch: (${res.status}) ${res.statusText}, from url: ${res.url}`);return res}async function fetchImage(uri){let res=await fetchOrThrow(uri),blob=await res.blob();if(!blob.type.startsWith("image/"))throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${blob.type}, for url: ${res.url}`);return bufferToImage(blob)}async function fetchJson(uri){return(await fetchOrThrow(uri)).json()}async function fetchNetWeights(uri){return new Float32Array(await(await fetchOrThrow(uri)).arrayBuffer())}var tf7=__toModule(require_tfjs_esm());function getModelUris(uri,defaultModelName){let defaultManifestFilename=`${defaultModelName}-weights_manifest.json`;if(!uri)return{modelBaseUri:"",manifestUri:defaultManifestFilename};if(uri==="/")return{modelBaseUri:"/",manifestUri:`/${defaultManifestFilename}`};let protocol=uri.startsWith("http://")?"http://":uri.startsWith("https://")?"https://":"";uri=uri.replace(protocol,"");let parts=uri.split("/").filter(s=>s),manifestFile=uri.endsWith(".json")?parts[parts.length-1]:defaultManifestFilename,modelBaseUri=protocol+(uri.endsWith(".json")?parts.slice(0,parts.length-1):parts).join("/");return modelBaseUri=uri.startsWith("/")?`/${modelBaseUri}`:modelBaseUri,{modelBaseUri,manifestUri:modelBaseUri==="/"?`/${manifestFile}`:`${modelBaseUri}/${manifestFile}`}}async function loadWeightMap(uri,defaultModelName){let{manifestUri,modelBaseUri}=getModelUris(uri,defaultModelName),manifest=await fetchJson(manifestUri);return tf7.io.loadWeights(manifest,modelBaseUri)}function matchDimensions(input,reference,useMediaDimensions=!1){let{width,height}=useMediaDimensions?getMediaDimensions(reference):reference;return input.width=width,input.height=height,{width,height}}var tf15=__toModule(require_tfjs_esm());var tf8=__toModule(require_tfjs_esm());var NeuralNetwork=class{constructor(){this._params=void 0;this._paramMappings=[]}get params(){return this._params}get paramMappings(){return this._paramMappings}get isLoaded(){return!!this.params}getParamFromPath(paramPath){let{obj,objProp}=this.traversePropertyPath(paramPath);return obj[objProp]}reassignParamFromPath(paramPath,tensor2){let{obj,objProp}=this.traversePropertyPath(paramPath);obj[objProp].dispose(),obj[objProp]=tensor2}getParamList(){return this._paramMappings.map(({paramPath})=>({path:paramPath,tensor:this.getParamFromPath(paramPath)}))}getTrainableParams(){return this.getParamList().filter(param=>param.tensor instanceof tf8.Variable)}getFrozenParams(){return this.getParamList().filter(param=>!(param.tensor instanceof tf8.Variable))}variable(){this.getFrozenParams().forEach(({path,tensor:tensor2})=>{this.reassignParamFromPath(path,tensor2.variable())})}freeze(){this.getTrainableParams().forEach(({path,tensor:variable})=>{let tensor2=tf8.tensor(variable.dataSync());variable.dispose(),this.reassignParamFromPath(path,tensor2)})}dispose(throwOnRedispose=!0){this.getParamList().forEach(param=>{if(throwOnRedispose&¶m.tensor.isDisposed)throw new Error(`param tensor has already been disposed for path ${param.path}`);param.tensor.dispose()}),this._params=void 0}serializeParams(){return new Float32Array(this.getParamList().map(({tensor:tensor2})=>Array.from(tensor2.dataSync())).reduce((flat,arr)=>flat.concat(arr)))}async load(weightsOrUrl){if(weightsOrUrl instanceof Float32Array){this.extractWeights(weightsOrUrl);return}await this.loadFromUri(weightsOrUrl)}async loadFromUri(uri){if(uri&&typeof uri!="string")throw new Error(`${this._name}.loadFromUri - expected model uri`);let weightMap=await loadWeightMap(uri,this.getDefaultModelName());this.loadFromWeightMap(weightMap)}async loadFromDisk(filePath){if(filePath&&typeof filePath!="string")throw new Error(`${this._name}.loadFromDisk - expected model file path`);let{readFile}=env.getEnv(),{manifestUri,modelBaseUri}=getModelUris(filePath,this.getDefaultModelName()),fetchWeightsFromDisk=filePaths=>Promise.all(filePaths.map(fp=>readFile(fp).then(buf=>buf.buffer))),loadWeights=tf8.io.weightsLoaderFactory(fetchWeightsFromDisk),manifest=JSON.parse((await readFile(manifestUri)).toString()),weightMap=await loadWeights(manifest,modelBaseUri);this.loadFromWeightMap(weightMap)}loadFromWeightMap(weightMap){let{paramMappings,params}=this.extractParamsFromWeigthMap(weightMap);this._paramMappings=paramMappings,this._params=params}extractWeights(weights){let{paramMappings,params}=this.extractParams(weights);this._paramMappings=paramMappings,this._params=params}traversePropertyPath(paramPath){if(!this.params)throw new Error("traversePropertyPath - model has no loaded params");let result=paramPath.split("/").reduce((res,objProp2)=>{if(!res.nextObj.hasOwnProperty(objProp2))throw new Error(`traversePropertyPath - object does not have property ${objProp2}, for path ${paramPath}`);return{obj:res.nextObj,objProp:objProp2,nextObj:res.nextObj[objProp2]}},{nextObj:this.params}),{obj,objProp}=result;if(!obj||!objProp||!(obj[objProp]instanceof tf8.Tensor))throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${paramPath}`);return{obj,objProp}}};var tf10=__toModule(require_tfjs_esm());var tf9=__toModule(require_tfjs_esm());function depthwiseSeparableConv(x,params,stride){return tf9.tidy(()=>{let out=tf9.separableConv2d(x,params.depthwise_filter,params.pointwise_filter,stride,"same");return out=tf9.add(out,params.bias),out})}function denseBlock3(x,denseBlockParams,isFirstLayer=!1){return tf10.tidy(()=>{let out1=tf10.relu(isFirstLayer?tf10.add(tf10.conv2d(x,denseBlockParams.conv0.filters,[2,2],"same"),denseBlockParams.conv0.bias):depthwiseSeparableConv(x,denseBlockParams.conv0,[2,2])),out2=depthwiseSeparableConv(out1,denseBlockParams.conv1,[1,1]),in3=tf10.relu(tf10.add(out1,out2)),out3=depthwiseSeparableConv(in3,denseBlockParams.conv2,[1,1]);return tf10.relu(tf10.add(out1,tf10.add(out2,out3)))})}function denseBlock4(x,denseBlockParams,isFirstLayer=!1,isScaleDown=!0){return tf10.tidy(()=>{let out1=tf10.relu(isFirstLayer?tf10.add(tf10.conv2d(x,denseBlockParams.conv0.filters,isScaleDown?[2,2]:[1,1],"same"),denseBlockParams.conv0.bias):depthwiseSeparableConv(x,denseBlockParams.conv0,isScaleDown?[2,2]:[1,1])),out2=depthwiseSeparableConv(out1,denseBlockParams.conv1,[1,1]),in3=tf10.relu(tf10.add(out1,out2)),out3=depthwiseSeparableConv(in3,denseBlockParams.conv2,[1,1]),in4=tf10.relu(tf10.add(out1,tf10.add(out2,out3))),out4=depthwiseSeparableConv(in4,denseBlockParams.conv3,[1,1]);return tf10.relu(tf10.add(out1,tf10.add(out2,tf10.add(out3,out4))))})}var tf11=__toModule(require_tfjs_esm());function convLayer(x,params,padding="same",withRelu=!1){return tf11.tidy(()=>{let out=tf11.add(tf11.conv2d(x,params.filters,[1,1],padding),params.bias);return withRelu?tf11.relu(out):out})}function disposeUnusedWeightTensors(weightMap,paramMappings){Object.keys(weightMap).forEach(path=>{paramMappings.some(pm=>pm.originalPath===path)||weightMap[path].dispose()})}var tf12=__toModule(require_tfjs_esm());function extractConvParamsFactory(extractWeights,paramMappings){return(channelsIn,channelsOut,filterSize,mappedPrefix)=>{let filters=tf12.tensor4d(extractWeights(channelsIn*channelsOut*filterSize*filterSize),[filterSize,filterSize,channelsIn,channelsOut]),bias=tf12.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/bias`}),{filters,bias}}}var tf13=__toModule(require_tfjs_esm());function extractFCParamsFactory(extractWeights,paramMappings){return(channelsIn,channelsOut,mappedPrefix)=>{let fc_weights=tf13.tensor2d(extractWeights(channelsIn*channelsOut),[channelsIn,channelsOut]),fc_bias=tf13.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/weights`},{paramPath:`${mappedPrefix}/bias`}),{weights:fc_weights,bias:fc_bias}}}var tf14=__toModule(require_tfjs_esm());var SeparableConvParams=class{constructor(depthwise_filter,pointwise_filter,bias){this.depthwise_filter=depthwise_filter;this.pointwise_filter=pointwise_filter;this.bias=bias}};function extractSeparableConvParamsFactory(extractWeights,paramMappings){return(channelsIn,channelsOut,mappedPrefix)=>{let depthwise_filter=tf14.tensor4d(extractWeights(3*3*channelsIn),[3,3,channelsIn,1]),pointwise_filter=tf14.tensor4d(extractWeights(channelsIn*channelsOut),[1,1,channelsIn,channelsOut]),bias=tf14.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/depthwise_filter`},{paramPath:`${mappedPrefix}/pointwise_filter`},{paramPath:`${mappedPrefix}/bias`}),new SeparableConvParams(depthwise_filter,pointwise_filter,bias)}}function loadSeparableConvParamsFactory(extractWeightEntry){return prefix=>{let depthwise_filter=extractWeightEntry(`${prefix}/depthwise_filter`,4),pointwise_filter=extractWeightEntry(`${prefix}/pointwise_filter`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return new SeparableConvParams(depthwise_filter,pointwise_filter,bias)}}function extractWeightEntryFactory(weightMap,paramMappings){return(originalPath,paramRank,mappedPath)=>{let tensor2=weightMap[originalPath];if(!isTensor(tensor2,paramRank))throw new Error(`expected weightMap[${originalPath}] to be a Tensor${paramRank}D, instead have ${tensor2}`);return paramMappings.push({originalPath,paramPath:mappedPath||originalPath}),tensor2}}function extractWeightsFactory(weights){let remainingWeights=weights;function extractWeights(numWeights){let ret=remainingWeights.slice(0,numWeights);return remainingWeights=remainingWeights.slice(numWeights),ret}function getRemainingWeights(){return remainingWeights}return{extractWeights,getRemainingWeights}}function extractorsFactory(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings),extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);function extractDenseBlock3Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(channelsIn,channelsOut,3,`${mappedPrefix}/conv0`):extractSeparableConvParams(channelsIn,channelsOut,`${mappedPrefix}/conv0`),conv1=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv1`),conv22=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv2`);return{conv0,conv1,conv2:conv22}}function extractDenseBlock4Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer=!1){let{conv0,conv1,conv2:conv22}=extractDenseBlock3Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer),conv3=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv3`);return{conv0,conv1,conv2:conv22,conv3}}return{extractDenseBlock3Params,extractDenseBlock4Params}}function extractParams(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractDenseBlock4Params}=extractorsFactory(extractWeights,paramMappings),dense0=extractDenseBlock4Params(3,32,"dense0",!0),dense1=extractDenseBlock4Params(32,64,"dense1"),dense2=extractDenseBlock4Params(64,128,"dense2"),dense3=extractDenseBlock4Params(128,256,"dense3");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{dense0,dense1,dense2,dense3}}}function loadConvParamsFactory(extractWeightEntry){return prefix=>{let filters=extractWeightEntry(`${prefix}/filters`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return{filters,bias}}}function loadParamsFactory(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings),extractConvParams=loadConvParamsFactory(extractWeightEntry),extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);function extractDenseBlock3Params(prefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(`${prefix}/conv0`):extractSeparableConvParams(`${prefix}/conv0`),conv1=extractSeparableConvParams(`${prefix}/conv1`),conv22=extractSeparableConvParams(`${prefix}/conv2`);return{conv0,conv1,conv2:conv22}}function extractDenseBlock4Params(prefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(`${prefix}/conv0`):extractSeparableConvParams(`${prefix}/conv0`),conv1=extractSeparableConvParams(`${prefix}/conv1`),conv22=extractSeparableConvParams(`${prefix}/conv2`),conv3=extractSeparableConvParams(`${prefix}/conv3`);return{conv0,conv1,conv2:conv22,conv3}}return{extractDenseBlock3Params,extractDenseBlock4Params}}function extractParamsFromWeigthMap(weightMap){let paramMappings=[],{extractDenseBlock4Params}=loadParamsFactory(weightMap,paramMappings),params={dense0:extractDenseBlock4Params("dense0",!0),dense1:extractDenseBlock4Params("dense1"),dense2:extractDenseBlock4Params("dense2"),dense3:extractDenseBlock4Params("dense3")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var FaceFeatureExtractor=class extends NeuralNetwork{constructor(){super("FaceFeatureExtractor")}forwardInput(input){let{params}=this;if(!params)throw new Error("FaceFeatureExtractor - load model before inference");return tf15.tidy(()=>{let batchTensor=tf15.cast(input.toBatchTensor(112,!0),"float32"),normalized=normalize(batchTensor,[122.782,117.001,104.298]).div(tf15.scalar(255)),out=denseBlock4(normalized,params.dense0,!0);return out=denseBlock4(out,params.dense1),out=denseBlock4(out,params.dense2),out=denseBlock4(out,params.dense3),out=tf15.avgPool(out,[7,7],[2,2],"valid"),out})}async forward(input){return this.forwardInput(await toNetInput(input))}getDefaultModelName(){return"face_feature_extractor_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap(weightMap)}extractParams(weights){return extractParams(weights)}};var tf17=__toModule(require_tfjs_esm());var tf16=__toModule(require_tfjs_esm());function fullyConnectedLayer(x,params){return tf16.tidy(()=>tf16.add(tf16.matMul(x,params.weights),params.bias))}function extractParams2(weights,channelsIn,channelsOut){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),fc=extractFCParamsFactory(extractWeights,paramMappings)(channelsIn,channelsOut,"fc");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{fc}}}function extractParamsFromWeigthMap2(weightMap){let paramMappings=[],extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractFcParams(prefix){let weights=extractWeightEntry(`${prefix}/weights`,2),bias=extractWeightEntry(`${prefix}/bias`,1);return{weights,bias}}let params={fc:extractFcParams("fc")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function seperateWeightMaps(weightMap){let featureExtractorMap={},classifierMap={};return Object.keys(weightMap).forEach(key=>{let map=key.startsWith("fc")?classifierMap:featureExtractorMap;map[key]=weightMap[key]}),{featureExtractorMap,classifierMap}}var FaceProcessor=class extends NeuralNetwork{constructor(_name,faceFeatureExtractor){super(_name);this._faceFeatureExtractor=faceFeatureExtractor}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(input){let{params}=this;if(!params)throw new Error(`${this._name} - load model before inference`);return tf17.tidy(()=>{let bottleneckFeatures=input instanceof NetInput?this.faceFeatureExtractor.forwardInput(input):input;return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0],-1),params.fc)})}dispose(throwOnRedispose=!0){this.faceFeatureExtractor.dispose(throwOnRedispose),super.dispose(throwOnRedispose)}loadClassifierParams(weights){let{params,paramMappings}=this.extractClassifierParams(weights);this._params=params,this._paramMappings=paramMappings}extractClassifierParams(weights){return extractParams2(weights,this.getClassifierChannelsIn(),this.getClassifierChannelsOut())}extractParamsFromWeigthMap(weightMap){let{featureExtractorMap,classifierMap}=seperateWeightMaps(weightMap);return this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap),extractParamsFromWeigthMap2(classifierMap)}extractParams(weights){let cIn=this.getClassifierChannelsIn(),cOut=this.getClassifierChannelsOut(),classifierWeightSize=cOut*cIn+cOut,featureExtractorWeights=weights.slice(0,weights.length-classifierWeightSize),classifierWeights=weights.slice(weights.length-classifierWeightSize);return this.faceFeatureExtractor.extractWeights(featureExtractorWeights),this.extractClassifierParams(classifierWeights)}};var FACE_EXPRESSION_LABELS=["neutral","happy","sad","angry","fearful","disgusted","surprised"],FaceExpressions=class{constructor(probabilities){if(probabilities.length!==7)throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${probabilities.length}`);FACE_EXPRESSION_LABELS.forEach((expression,idx)=>{this[expression]=probabilities[idx]})}asSortedArray(){return FACE_EXPRESSION_LABELS.map(expression=>({expression,probability:this[expression]})).sort((e0,e1)=>e1.probability-e0.probability)}};var FaceExpressionNet=class extends FaceProcessor{constructor(faceFeatureExtractor=new FaceFeatureExtractor){super("FaceExpressionNet",faceFeatureExtractor)}forwardInput(input){return tf18.tidy(()=>tf18.softmax(this.runNet(input)))}async forward(input){return this.forwardInput(await toNetInput(input))}async predictExpressions(input){let netInput=await toNetInput(input),out=await this.forwardInput(netInput),probabilitesByBatch=await Promise.all(tf18.unstack(out).map(async t=>{let data=await t.data();return t.dispose(),data}));out.dispose();let predictionsByBatch=probabilitesByBatch.map(probabilites=>new FaceExpressions(probabilites));return netInput.isBatchInput?predictionsByBatch:predictionsByBatch[0]}getDefaultModelName(){return"face_expression_model"}getClassifierChannelsIn(){return 256}getClassifierChannelsOut(){return 7}};function isWithFaceExpressions(obj){return obj.expressions instanceof FaceExpressions}function extendWithFaceExpressions(sourceObj,expressions){return{...sourceObj,...{expressions}}}function drawFaceExpressions(canvasArg,faceExpressions,minConfidence=.1,textFieldAnchor){(Array.isArray(faceExpressions)?faceExpressions:[faceExpressions]).forEach(e=>{let expr=e instanceof FaceExpressions?e:isWithFaceExpressions(e)?e.expressions:void 0;if(!expr)throw new Error("drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof");let resultsToDisplay=expr.asSortedArray().filter(exprLocal=>exprLocal.probability>minConfidence),anchor=isWithFaceDetection(e)?e.detection.box.bottomLeft:textFieldAnchor||new Point(0,0);new DrawTextField(resultsToDisplay.map(exprLocal=>`${exprLocal.expression} (${round(exprLocal.probability)})`),anchor).draw(canvasArg)})}function isWithFaceLandmarks(obj){return isWithFaceDetection(obj)&&obj.landmarks instanceof FaceLandmarks&&obj.unshiftedLandmarks instanceof FaceLandmarks&&obj.alignedRect instanceof FaceDetection}function extendWithFaceLandmarks(sourceObj,unshiftedLandmarks){let{box:shift}=sourceObj.detection,landmarks=unshiftedLandmarks.shiftBy(shift.x,shift.y),rect=landmarks.align(),{imageDims}=sourceObj.detection,alignedRect=new FaceDetection(sourceObj.detection.score,rect.rescale(imageDims.reverse()),imageDims);return{...sourceObj,...{landmarks,unshiftedLandmarks,alignedRect}}}var DrawFaceLandmarksOptions=class{constructor(options={}){let{drawLines=!0,drawPoints=!0,lineWidth,lineColor,pointSize,pointColor}=options;this.drawLines=drawLines,this.drawPoints=drawPoints,this.lineWidth=lineWidth||1,this.pointSize=pointSize||2,this.lineColor=lineColor||"rgba(0, 255, 255, 1)",this.pointColor=pointColor||"rgba(255, 0, 255, 1)"}},DrawFaceLandmarks=class{constructor(faceLandmarks,options={}){this.faceLandmarks=faceLandmarks,this.options=new DrawFaceLandmarksOptions(options)}draw(canvasArg){let ctx=getContext2dOrThrow(canvasArg),{drawLines,drawPoints,lineWidth,lineColor,pointSize,pointColor}=this.options;if(drawLines&&this.faceLandmarks instanceof FaceLandmarks68&&(ctx.strokeStyle=lineColor,ctx.lineWidth=lineWidth,drawContour(ctx,this.faceLandmarks.getJawOutline()),drawContour(ctx,this.faceLandmarks.getLeftEyeBrow()),drawContour(ctx,this.faceLandmarks.getRightEyeBrow()),drawContour(ctx,this.faceLandmarks.getNose()),drawContour(ctx,this.faceLandmarks.getLeftEye(),!0),drawContour(ctx,this.faceLandmarks.getRightEye(),!0),drawContour(ctx,this.faceLandmarks.getMouth(),!0)),drawPoints){ctx.strokeStyle=pointColor,ctx.fillStyle=pointColor;let drawPoint=pt=>{ctx.beginPath(),ctx.arc(pt.x,pt.y,pointSize,0,2*Math.PI),ctx.fill()};this.faceLandmarks.positions.forEach(drawPoint)}}};function drawFaceLandmarks(canvasArg,faceLandmarks){(Array.isArray(faceLandmarks)?faceLandmarks:[faceLandmarks]).forEach(f=>{let landmarks=f instanceof FaceLandmarks?f:isWithFaceLandmarks(f)?f.landmarks:void 0;if(!landmarks)throw new Error("drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof");new DrawFaceLandmarks(landmarks).draw(canvasArg)})}var version="0.11.1";var tf20=__toModule(require_tfjs_esm());var tf19=__toModule(require_tfjs_esm());function extractorsFactory2(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings),extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);function extractReductionBlockParams(channelsIn,channelsOut,mappedPrefix){let separable_conv0=extractSeparableConvParams(channelsIn,channelsOut,`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/separable_conv1`),expansion_conv=extractConvParams(channelsIn,channelsOut,1,`${mappedPrefix}/expansion_conv`);return{separable_conv0,separable_conv1,expansion_conv}}function extractMainBlockParams(channels,mappedPrefix){let separable_conv0=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv1`),separable_conv2=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv2`);return{separable_conv0,separable_conv1,separable_conv2}}return{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}}function extractParams3(weights,numMainBlocks){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}=extractorsFactory2(extractWeights,paramMappings),entry_flow_conv_in=extractConvParams(3,32,3,"entry_flow/conv_in"),entry_flow_reduction_block_0=extractReductionBlockParams(32,64,"entry_flow/reduction_block_0"),entry_flow_reduction_block_1=extractReductionBlockParams(64,128,"entry_flow/reduction_block_1"),entry_flow={conv_in:entry_flow_conv_in,reduction_block_0:entry_flow_reduction_block_0,reduction_block_1:entry_flow_reduction_block_1},middle_flow={};range(numMainBlocks,0,1).forEach(idx=>{middle_flow[`main_block_${idx}`]=extractMainBlockParams(128,`middle_flow/main_block_${idx}`)});let exit_flow_reduction_block=extractReductionBlockParams(128,256,"exit_flow/reduction_block"),exit_flow_separable_conv=extractSeparableConvParams(256,512,"exit_flow/separable_conv"),exit_flow={reduction_block:exit_flow_reduction_block,separable_conv:exit_flow_separable_conv};if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{entry_flow,middle_flow,exit_flow}}}function loadParamsFactory2(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings),extractConvParams=loadConvParamsFactory(extractWeightEntry),extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);function extractReductionBlockParams(mappedPrefix){let separable_conv0=extractSeparableConvParams(`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(`${mappedPrefix}/separable_conv1`),expansion_conv=extractConvParams(`${mappedPrefix}/expansion_conv`);return{separable_conv0,separable_conv1,expansion_conv}}function extractMainBlockParams(mappedPrefix){let separable_conv0=extractSeparableConvParams(`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(`${mappedPrefix}/separable_conv1`),separable_conv2=extractSeparableConvParams(`${mappedPrefix}/separable_conv2`);return{separable_conv0,separable_conv1,separable_conv2}}return{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}}function extractParamsFromWeigthMap3(weightMap,numMainBlocks){let paramMappings=[],{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}=loadParamsFactory2(weightMap,paramMappings),entry_flow_conv_in=extractConvParams("entry_flow/conv_in"),entry_flow_reduction_block_0=extractReductionBlockParams("entry_flow/reduction_block_0"),entry_flow_reduction_block_1=extractReductionBlockParams("entry_flow/reduction_block_1"),entry_flow={conv_in:entry_flow_conv_in,reduction_block_0:entry_flow_reduction_block_0,reduction_block_1:entry_flow_reduction_block_1},middle_flow={};range(numMainBlocks,0,1).forEach(idx=>{middle_flow[`main_block_${idx}`]=extractMainBlockParams(`middle_flow/main_block_${idx}`)});let exit_flow_reduction_block=extractReductionBlockParams("exit_flow/reduction_block"),exit_flow_separable_conv=extractSeparableConvParams("exit_flow/separable_conv"),exit_flow={reduction_block:exit_flow_reduction_block,separable_conv:exit_flow_separable_conv};return disposeUnusedWeightTensors(weightMap,paramMappings),{params:{entry_flow,middle_flow,exit_flow},paramMappings}}function conv(x,params,stride){return tf19.add(tf19.conv2d(x,params.filters,stride,"same"),params.bias)}function reductionBlock(x,params,isActivateInput=!0){let out=isActivateInput?tf19.relu(x):x;return out=depthwiseSeparableConv(out,params.separable_conv0,[1,1]),out=depthwiseSeparableConv(tf19.relu(out),params.separable_conv1,[1,1]),out=tf19.maxPool(out,[3,3],[2,2],"same"),out=tf19.add(out,conv(x,params.expansion_conv,[2,2])),out}function mainBlock(x,params){let out=depthwiseSeparableConv(tf19.relu(x),params.separable_conv0,[1,1]);return out=depthwiseSeparableConv(tf19.relu(out),params.separable_conv1,[1,1]),out=depthwiseSeparableConv(tf19.relu(out),params.separable_conv2,[1,1]),out=tf19.add(out,x),out}var TinyXception=class extends NeuralNetwork{constructor(numMainBlocks){super("TinyXception");this._numMainBlocks=numMainBlocks}forwardInput(input){let{params}=this;if(!params)throw new Error("TinyXception - load model before inference");return tf19.tidy(()=>{let batchTensor=tf19.cast(input.toBatchTensor(112,!0),"float32"),normalized=normalize(batchTensor,[122.782,117.001,104.298]).div(tf19.scalar(256)),out=tf19.relu(conv(normalized,params.entry_flow.conv_in,[2,2]));return out=reductionBlock(out,params.entry_flow.reduction_block_0,!1),out=reductionBlock(out,params.entry_flow.reduction_block_1),range(this._numMainBlocks,0,1).forEach(idx=>{out=mainBlock(out,params.middle_flow[`main_block_${idx}`])}),out=reductionBlock(out,params.exit_flow.reduction_block),out=tf19.relu(depthwiseSeparableConv(out,params.exit_flow.separable_conv,[1,1])),out})}async forward(input){return this.forwardInput(await toNetInput(input))}getDefaultModelName(){return"tiny_xception_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap3(weightMap,this._numMainBlocks)}extractParams(weights){return extractParams3(weights,this._numMainBlocks)}};function extractParams4(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),extractFCParams=extractFCParamsFactory(extractWeights,paramMappings),age=extractFCParams(512,1,"fc/age"),gender=extractFCParams(512,2,"fc/gender");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{fc:{age,gender}}}}function extractParamsFromWeigthMap4(weightMap){let paramMappings=[],extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractFcParams(prefix){let weights=extractWeightEntry(`${prefix}/weights`,2),bias=extractWeightEntry(`${prefix}/bias`,1);return{weights,bias}}let params={fc:{age:extractFcParams("fc/age"),gender:extractFcParams("fc/gender")}};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var Gender;(function(Gender2){Gender2.FEMALE="female",Gender2.MALE="male"})(Gender||(Gender={}));var AgeGenderNet=class extends NeuralNetwork{constructor(faceFeatureExtractor=new TinyXception(2)){super("AgeGenderNet");this._faceFeatureExtractor=faceFeatureExtractor}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(input){let{params}=this;if(!params)throw new Error(`${this._name} - load model before inference`);return tf20.tidy(()=>{let bottleneckFeatures=input instanceof NetInput?this.faceFeatureExtractor.forwardInput(input):input,pooled=tf20.avgPool(bottleneckFeatures,[7,7],[2,2],"valid").as2D(bottleneckFeatures.shape[0],-1),age=fullyConnectedLayer(pooled,params.fc.age).as1D(),gender=fullyConnectedLayer(pooled,params.fc.gender);return{age,gender}})}forwardInput(input){return tf20.tidy(()=>{let{age,gender}=this.runNet(input);return{age,gender:tf20.softmax(gender)}})}async forward(input){return this.forwardInput(await toNetInput(input))}async predictAgeAndGender(input){let netInput=await toNetInput(input),out=await this.forwardInput(netInput),ages=tf20.unstack(out.age),genders=tf20.unstack(out.gender),ageAndGenderTensors=ages.map((ageTensor,i)=>({ageTensor,genderTensor:genders[i]})),predictionsByBatch=await Promise.all(ageAndGenderTensors.map(async({ageTensor,genderTensor})=>{let age=(await ageTensor.data())[0],probMale=(await genderTensor.data())[0],isMale=probMale>.5,gender=isMale?Gender.MALE:Gender.FEMALE,genderProbability=isMale?probMale:1-probMale;return ageTensor.dispose(),genderTensor.dispose(),{age,gender,genderProbability}}));return out.age.dispose(),out.gender.dispose(),netInput.isBatchInput?predictionsByBatch:predictionsByBatch[0]}getDefaultModelName(){return"age_gender_model"}dispose(throwOnRedispose=!0){this.faceFeatureExtractor.dispose(throwOnRedispose),super.dispose(throwOnRedispose)}loadClassifierParams(weights){let{params,paramMappings}=this.extractClassifierParams(weights);this._params=params,this._paramMappings=paramMappings}extractClassifierParams(weights){return extractParams4(weights)}extractParamsFromWeigthMap(weightMap){let{featureExtractorMap,classifierMap}=seperateWeightMaps(weightMap);return this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap),extractParamsFromWeigthMap4(classifierMap)}extractParams(weights){let classifierWeightSize=512*1+1+(512*2+2),featureExtractorWeights=weights.slice(0,weights.length-classifierWeightSize),classifierWeights=weights.slice(weights.length-classifierWeightSize);return this.faceFeatureExtractor.extractWeights(featureExtractorWeights),this.extractClassifierParams(classifierWeights)}};var tf21=__toModule(require_tfjs_esm());var FaceLandmark68NetBase=class extends FaceProcessor{postProcess(output,inputSize,originalDimensions){let inputDimensions=originalDimensions.map(({width,height})=>{let scale2=inputSize/Math.max(height,width);return{width:width*scale2,height:height*scale2}}),batchSize=inputDimensions.length;return tf21.tidy(()=>{let createInterleavedTensor=(fillX,fillY)=>tf21.stack([tf21.fill([68],fillX,"float32"),tf21.fill([68],fillY,"float32")],1).as2D(1,136).as1D(),getPadding=(batchIdx,cond)=>{let{width,height}=inputDimensions[batchIdx];return cond(width,height)?Math.abs(width-height)/2:0},getPaddingX=batchIdx=>getPadding(batchIdx,(w,h)=>wgetPadding(batchIdx,(w,h)=>hcreateInterleavedTensor(getPaddingX(batchIdx),getPaddingY(batchIdx))))).div(tf21.stack(Array.from(Array(batchSize),(_,batchIdx)=>createInterleavedTensor(inputDimensions[batchIdx].width,inputDimensions[batchIdx].height))))})}forwardInput(input){return tf21.tidy(()=>{let out=this.runNet(input);return this.postProcess(out,input.inputSize,input.inputDimensions.map(([height,width])=>({height,width})))})}async forward(input){return this.forwardInput(await toNetInput(input))}async detectLandmarks(input){let netInput=await toNetInput(input),landmarkTensors=tf21.tidy(()=>tf21.unstack(this.forwardInput(netInput))),landmarksForBatch=await Promise.all(landmarkTensors.map(async(landmarkTensor,batchIdx)=>{let landmarksArray=Array.from(await landmarkTensor.data()),xCoords=landmarksArray.filter((_,i)=>isEven(i)),yCoords=landmarksArray.filter((_,i)=>!isEven(i));return new FaceLandmarks68(Array(68).fill(0).map((_,i)=>new Point(xCoords[i],yCoords[i])),{height:netInput.getInputHeight(batchIdx),width:netInput.getInputWidth(batchIdx)})}));return landmarkTensors.forEach(t=>t.dispose()),netInput.isBatchInput?landmarksForBatch:landmarksForBatch[0]}getClassifierChannelsOut(){return 136}};var FaceLandmark68Net=class extends FaceLandmark68NetBase{constructor(faceFeatureExtractor=new FaceFeatureExtractor){super("FaceLandmark68Net",faceFeatureExtractor)}getDefaultModelName(){return"face_landmark_68_model"}getClassifierChannelsIn(){return 256}};var tf22=__toModule(require_tfjs_esm());function extractParamsFromWeigthMapTiny(weightMap){let paramMappings=[],{extractDenseBlock3Params}=loadParamsFactory(weightMap,paramMappings),params={dense0:extractDenseBlock3Params("dense0",!0),dense1:extractDenseBlock3Params("dense1"),dense2:extractDenseBlock3Params("dense2")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function extractParamsTiny(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractDenseBlock3Params}=extractorsFactory(extractWeights,paramMappings),dense0=extractDenseBlock3Params(3,32,"dense0",!0),dense1=extractDenseBlock3Params(32,64,"dense1"),dense2=extractDenseBlock3Params(64,128,"dense2");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{dense0,dense1,dense2}}}var TinyFaceFeatureExtractor=class extends NeuralNetwork{constructor(){super("TinyFaceFeatureExtractor")}forwardInput(input){let{params}=this;if(!params)throw new Error("TinyFaceFeatureExtractor - load model before inference");return tf22.tidy(()=>{let batchTensor=tf22.cast(input.toBatchTensor(112,!0),"float32"),normalized=normalize(batchTensor,[122.782,117.001,104.298]).div(tf22.scalar(255)),out=denseBlock3(normalized,params.dense0,!0);return out=denseBlock3(out,params.dense1),out=denseBlock3(out,params.dense2),out=tf22.avgPool(out,[14,14],[2,2],"valid"),out})}async forward(input){return this.forwardInput(await toNetInput(input))}getDefaultModelName(){return"face_feature_extractor_tiny_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMapTiny(weightMap)}extractParams(weights){return extractParamsTiny(weights)}};var FaceLandmark68TinyNet=class extends FaceLandmark68NetBase{constructor(faceFeatureExtractor=new TinyFaceFeatureExtractor){super("FaceLandmark68TinyNet",faceFeatureExtractor)}getDefaultModelName(){return"face_landmark_68_tiny_model"}getClassifierChannelsIn(){return 128}};var FaceLandmarkNet=class extends FaceLandmark68Net{};var tf27=__toModule(require_tfjs_esm());var tf24=__toModule(require_tfjs_esm());var tf23=__toModule(require_tfjs_esm());function scale(x,params){return tf23.add(tf23.mul(x,params.weights),params.biases)}function convLayer2(x,params,strides,withRelu,padding="same"){let{filters,bias}=params.conv,out=tf24.conv2d(x,filters,strides,padding);return out=tf24.add(out,bias),out=scale(out,params.scale),withRelu?tf24.relu(out):out}function conv2(x,params){return convLayer2(x,params,[1,1],!0)}function convNoRelu(x,params){return convLayer2(x,params,[1,1],!1)}function convDown(x,params){return convLayer2(x,params,[2,2],!0,"valid")}var tf25=__toModule(require_tfjs_esm());function extractorsFactory3(extractWeights,paramMappings){function extractFilterValues(numFilterValues,numFilters,filterSize){let weights=extractWeights(numFilterValues),depth=weights.length/(numFilters*filterSize*filterSize);if(isFloat(depth))throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`);return tf25.tidy(()=>tf25.transpose(tf25.tensor4d(weights,[numFilters,depth,filterSize,filterSize]),[2,3,1,0]))}function extractConvParams(numFilterValues,numFilters,filterSize,mappedPrefix){let filters=extractFilterValues(numFilterValues,numFilters,filterSize),bias=tf25.tensor1d(extractWeights(numFilters));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/bias`}),{filters,bias}}function extractScaleLayerParams(numWeights,mappedPrefix){let weights=tf25.tensor1d(extractWeights(numWeights)),biases=tf25.tensor1d(extractWeights(numWeights));return paramMappings.push({paramPath:`${mappedPrefix}/weights`},{paramPath:`${mappedPrefix}/biases`}),{weights,biases}}function extractConvLayerParams(numFilterValues,numFilters,filterSize,mappedPrefix){let conv3=extractConvParams(numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv`),scale2=extractScaleLayerParams(numFilters,`${mappedPrefix}/scale`);return{conv:conv3,scale:scale2}}function extractResidualLayerParams(numFilterValues,numFilters,filterSize,mappedPrefix,isDown=!1){let conv1=extractConvLayerParams((isDown?.5:1)*numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv1`),conv22=extractConvLayerParams(numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv2`);return{conv1,conv2:conv22}}return{extractConvLayerParams,extractResidualLayerParams}}function extractParams5(weights){let{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),paramMappings=[],{extractConvLayerParams,extractResidualLayerParams}=extractorsFactory3(extractWeights,paramMappings),conv32_down=extractConvLayerParams(4704,32,7,"conv32_down"),conv32_1=extractResidualLayerParams(9216,32,3,"conv32_1"),conv32_2=extractResidualLayerParams(9216,32,3,"conv32_2"),conv32_3=extractResidualLayerParams(9216,32,3,"conv32_3"),conv64_down=extractResidualLayerParams(36864,64,3,"conv64_down",!0),conv64_1=extractResidualLayerParams(36864,64,3,"conv64_1"),conv64_2=extractResidualLayerParams(36864,64,3,"conv64_2"),conv64_3=extractResidualLayerParams(36864,64,3,"conv64_3"),conv128_down=extractResidualLayerParams(147456,128,3,"conv128_down",!0),conv128_1=extractResidualLayerParams(147456,128,3,"conv128_1"),conv128_2=extractResidualLayerParams(147456,128,3,"conv128_2"),conv256_down=extractResidualLayerParams(589824,256,3,"conv256_down",!0),conv256_1=extractResidualLayerParams(589824,256,3,"conv256_1"),conv256_2=extractResidualLayerParams(589824,256,3,"conv256_2"),conv256_down_out=extractResidualLayerParams(589824,256,3,"conv256_down_out"),fc=tf25.tidy(()=>tf25.transpose(tf25.tensor2d(extractWeights(256*128),[128,256]),[1,0]));if(paramMappings.push({paramPath:"fc"}),getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params:{conv32_down,conv32_1,conv32_2,conv32_3,conv64_down,conv64_1,conv64_2,conv64_3,conv128_down,conv128_1,conv128_2,conv256_down,conv256_1,conv256_2,conv256_down_out,fc},paramMappings}}function extractorsFactory4(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractScaleLayerParams(prefix){let weights=extractWeightEntry(`${prefix}/scale/weights`,1),biases=extractWeightEntry(`${prefix}/scale/biases`,1);return{weights,biases}}function extractConvLayerParams(prefix){let filters=extractWeightEntry(`${prefix}/conv/filters`,4),bias=extractWeightEntry(`${prefix}/conv/bias`,1),scale2=extractScaleLayerParams(prefix);return{conv:{filters,bias},scale:scale2}}function extractResidualLayerParams(prefix){return{conv1:extractConvLayerParams(`${prefix}/conv1`),conv2:extractConvLayerParams(`${prefix}/conv2`)}}return{extractConvLayerParams,extractResidualLayerParams}}function extractParamsFromWeigthMap5(weightMap){let paramMappings=[],{extractConvLayerParams,extractResidualLayerParams}=extractorsFactory4(weightMap,paramMappings),conv32_down=extractConvLayerParams("conv32_down"),conv32_1=extractResidualLayerParams("conv32_1"),conv32_2=extractResidualLayerParams("conv32_2"),conv32_3=extractResidualLayerParams("conv32_3"),conv64_down=extractResidualLayerParams("conv64_down"),conv64_1=extractResidualLayerParams("conv64_1"),conv64_2=extractResidualLayerParams("conv64_2"),conv64_3=extractResidualLayerParams("conv64_3"),conv128_down=extractResidualLayerParams("conv128_down"),conv128_1=extractResidualLayerParams("conv128_1"),conv128_2=extractResidualLayerParams("conv128_2"),conv256_down=extractResidualLayerParams("conv256_down"),conv256_1=extractResidualLayerParams("conv256_1"),conv256_2=extractResidualLayerParams("conv256_2"),conv256_down_out=extractResidualLayerParams("conv256_down_out"),{fc}=weightMap;if(paramMappings.push({originalPath:"fc",paramPath:"fc"}),!isTensor2D(fc))throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${fc}`);let params={conv32_down,conv32_1,conv32_2,conv32_3,conv64_down,conv64_1,conv64_2,conv64_3,conv128_down,conv128_1,conv128_2,conv256_down,conv256_1,conv256_2,conv256_down_out,fc};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var tf26=__toModule(require_tfjs_esm());function residual(x,params){let out=conv2(x,params.conv1);return out=convNoRelu(out,params.conv2),out=tf26.add(out,x),out=tf26.relu(out),out}function residualDown(x,params){let out=convDown(x,params.conv1);out=convNoRelu(out,params.conv2);let pooled=tf26.avgPool(x,2,2,"valid"),zeros2=tf26.zeros(pooled.shape),isPad=pooled.shape[3]!==out.shape[3];if(pooled.shape[1]!==out.shape[1]||pooled.shape[2]!==out.shape[2]){let padShapeX=[...out.shape];padShapeX[1]=1;let zerosW=tf26.zeros(padShapeX);out=tf26.concat([out,zerosW],1);let padShapeY=[...out.shape];padShapeY[2]=1;let zerosH=tf26.zeros(padShapeY);out=tf26.concat([out,zerosH],2)}return pooled=isPad?tf26.concat([pooled,zeros2],3):pooled,out=tf26.add(pooled,out),out=tf26.relu(out),out}var FaceRecognitionNet=class extends NeuralNetwork{constructor(){super("FaceRecognitionNet")}forwardInput(input){let{params}=this;if(!params)throw new Error("FaceRecognitionNet - load model before inference");return tf27.tidy(()=>{let batchTensor=tf27.cast(input.toBatchTensor(150,!0),"float32"),normalized=normalize(batchTensor,[122.782,117.001,104.298]).div(tf27.scalar(256)),out=convDown(normalized,params.conv32_down);out=tf27.maxPool(out,3,2,"valid"),out=residual(out,params.conv32_1),out=residual(out,params.conv32_2),out=residual(out,params.conv32_3),out=residualDown(out,params.conv64_down),out=residual(out,params.conv64_1),out=residual(out,params.conv64_2),out=residual(out,params.conv64_3),out=residualDown(out,params.conv128_down),out=residual(out,params.conv128_1),out=residual(out,params.conv128_2),out=residualDown(out,params.conv256_down),out=residual(out,params.conv256_1),out=residual(out,params.conv256_2),out=residualDown(out,params.conv256_down_out);let globalAvg=out.mean([1,2]);return tf27.matMul(globalAvg,params.fc)})}async forward(input){return this.forwardInput(await toNetInput(input))}async computeFaceDescriptor(input){let netInput=await toNetInput(input),faceDescriptorTensors=tf27.tidy(()=>tf27.unstack(this.forwardInput(netInput))),faceDescriptorsForBatch=await Promise.all(faceDescriptorTensors.map(t=>t.data()));return faceDescriptorTensors.forEach(t=>t.dispose()),netInput.isBatchInput?faceDescriptorsForBatch:faceDescriptorsForBatch[0]}getDefaultModelName(){return"face_recognition_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap5(weightMap)}extractParams(weights){return extractParams5(weights)}};function createFaceRecognitionNet(weights){let net=new FaceRecognitionNet;return net.extractWeights(weights),net}function extendWithFaceDescriptor(sourceObj,descriptor){return{...sourceObj,...{descriptor}}}function isWithAge(obj){return typeof obj.age=="number"}function extendWithAge(sourceObj,age){return{...sourceObj,...{age}}}function isWithGender(obj){return(obj.gender===Gender.MALE||obj.gender===Gender.FEMALE)&&isValidProbablitiy(obj.genderProbability)}function extendWithGender(sourceObj,gender,genderProbability){return{...sourceObj,...{gender,genderProbability}}}var tf34=__toModule(require_tfjs_esm());var tf28=__toModule(require_tfjs_esm());function extractorsFactory5(extractWeights,paramMappings){function extractDepthwiseConvParams(numChannels,mappedPrefix){let filters=tf28.tensor4d(extractWeights(3*3*numChannels),[3,3,numChannels,1]),batch_norm_scale=tf28.tensor1d(extractWeights(numChannels)),batch_norm_offset=tf28.tensor1d(extractWeights(numChannels)),batch_norm_mean=tf28.tensor1d(extractWeights(numChannels)),batch_norm_variance=tf28.tensor1d(extractWeights(numChannels));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/batch_norm_scale`},{paramPath:`${mappedPrefix}/batch_norm_offset`},{paramPath:`${mappedPrefix}/batch_norm_mean`},{paramPath:`${mappedPrefix}/batch_norm_variance`}),{filters,batch_norm_scale,batch_norm_offset,batch_norm_mean,batch_norm_variance}}function extractConvParams(channelsIn,channelsOut,filterSize,mappedPrefix,isPointwiseConv){let filters=tf28.tensor4d(extractWeights(channelsIn*channelsOut*filterSize*filterSize),[filterSize,filterSize,channelsIn,channelsOut]),bias=tf28.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/${isPointwiseConv?"batch_norm_offset":"bias"}`}),{filters,bias}}function extractPointwiseConvParams(channelsIn,channelsOut,filterSize,mappedPrefix){let{filters,bias}=extractConvParams(channelsIn,channelsOut,filterSize,mappedPrefix,!0);return{filters,batch_norm_offset:bias}}function extractConvPairParams(channelsIn,channelsOut,mappedPrefix){let depthwise_conv=extractDepthwiseConvParams(channelsIn,`${mappedPrefix}/depthwise_conv`),pointwise_conv=extractPointwiseConvParams(channelsIn,channelsOut,1,`${mappedPrefix}/pointwise_conv`);return{depthwise_conv,pointwise_conv}}function extractMobilenetV1Params(){let conv_0=extractPointwiseConvParams(3,32,3,"mobilenetv1/conv_0"),conv_1=extractConvPairParams(32,64,"mobilenetv1/conv_1"),conv_2=extractConvPairParams(64,128,"mobilenetv1/conv_2"),conv_3=extractConvPairParams(128,128,"mobilenetv1/conv_3"),conv_4=extractConvPairParams(128,256,"mobilenetv1/conv_4"),conv_5=extractConvPairParams(256,256,"mobilenetv1/conv_5"),conv_6=extractConvPairParams(256,512,"mobilenetv1/conv_6"),conv_7=extractConvPairParams(512,512,"mobilenetv1/conv_7"),conv_8=extractConvPairParams(512,512,"mobilenetv1/conv_8"),conv_9=extractConvPairParams(512,512,"mobilenetv1/conv_9"),conv_10=extractConvPairParams(512,512,"mobilenetv1/conv_10"),conv_11=extractConvPairParams(512,512,"mobilenetv1/conv_11"),conv_12=extractConvPairParams(512,1024,"mobilenetv1/conv_12"),conv_13=extractConvPairParams(1024,1024,"mobilenetv1/conv_13");return{conv_0,conv_1,conv_2,conv_3,conv_4,conv_5,conv_6,conv_7,conv_8,conv_9,conv_10,conv_11,conv_12,conv_13}}function extractPredictionLayerParams(){let conv_0=extractPointwiseConvParams(1024,256,1,"prediction_layer/conv_0"),conv_1=extractPointwiseConvParams(256,512,3,"prediction_layer/conv_1"),conv_2=extractPointwiseConvParams(512,128,1,"prediction_layer/conv_2"),conv_3=extractPointwiseConvParams(128,256,3,"prediction_layer/conv_3"),conv_4=extractPointwiseConvParams(256,128,1,"prediction_layer/conv_4"),conv_5=extractPointwiseConvParams(128,256,3,"prediction_layer/conv_5"),conv_6=extractPointwiseConvParams(256,64,1,"prediction_layer/conv_6"),conv_7=extractPointwiseConvParams(64,128,3,"prediction_layer/conv_7"),box_encoding_0_predictor=extractConvParams(512,12,1,"prediction_layer/box_predictor_0/box_encoding_predictor"),class_predictor_0=extractConvParams(512,9,1,"prediction_layer/box_predictor_0/class_predictor"),box_encoding_1_predictor=extractConvParams(1024,24,1,"prediction_layer/box_predictor_1/box_encoding_predictor"),class_predictor_1=extractConvParams(1024,18,1,"prediction_layer/box_predictor_1/class_predictor"),box_encoding_2_predictor=extractConvParams(512,24,1,"prediction_layer/box_predictor_2/box_encoding_predictor"),class_predictor_2=extractConvParams(512,18,1,"prediction_layer/box_predictor_2/class_predictor"),box_encoding_3_predictor=extractConvParams(256,24,1,"prediction_layer/box_predictor_3/box_encoding_predictor"),class_predictor_3=extractConvParams(256,18,1,"prediction_layer/box_predictor_3/class_predictor"),box_encoding_4_predictor=extractConvParams(256,24,1,"prediction_layer/box_predictor_4/box_encoding_predictor"),class_predictor_4=extractConvParams(256,18,1,"prediction_layer/box_predictor_4/class_predictor"),box_encoding_5_predictor=extractConvParams(128,24,1,"prediction_layer/box_predictor_5/box_encoding_predictor"),class_predictor_5=extractConvParams(128,18,1,"prediction_layer/box_predictor_5/class_predictor");return{conv_0,conv_1,conv_2,conv_3,conv_4,conv_5,conv_6,conv_7,box_predictor_0:{box_encoding_predictor:box_encoding_0_predictor,class_predictor:class_predictor_0},box_predictor_1:{box_encoding_predictor:box_encoding_1_predictor,class_predictor:class_predictor_1},box_predictor_2:{box_encoding_predictor:box_encoding_2_predictor,class_predictor:class_predictor_2},box_predictor_3:{box_encoding_predictor:box_encoding_3_predictor,class_predictor:class_predictor_3},box_predictor_4:{box_encoding_predictor:box_encoding_4_predictor,class_predictor:class_predictor_4},box_predictor_5:{box_encoding_predictor:box_encoding_5_predictor,class_predictor:class_predictor_5}}}return{extractMobilenetV1Params,extractPredictionLayerParams}}function extractParams6(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractMobilenetV1Params,extractPredictionLayerParams}=extractorsFactory5(extractWeights,paramMappings),mobilenetv1=extractMobilenetV1Params(),prediction_layer=extractPredictionLayerParams(),output_layer={extra_dim:tf28.tensor3d(extractWeights(5118*4),[1,5118,4])};if(paramMappings.push({paramPath:"output_layer/extra_dim"}),getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params:{mobilenetv1,prediction_layer,output_layer},paramMappings}}function extractorsFactory6(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractPointwiseConvParams(prefix,idx,mappedPrefix){let filters=extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`,4,`${mappedPrefix}/filters`),batch_norm_offset=extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`,1,`${mappedPrefix}/batch_norm_offset`);return{filters,batch_norm_offset}}function extractConvPairParams(idx){let mappedPrefix=`mobilenetv1/conv_${idx}`,prefixDepthwiseConv=`MobilenetV1/Conv2d_${idx}_depthwise`,mappedPrefixDepthwiseConv=`${mappedPrefix}/depthwise_conv`,mappedPrefixPointwiseConv=`${mappedPrefix}/pointwise_conv`,filters=extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`,4,`${mappedPrefixDepthwiseConv}/filters`),batch_norm_scale=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`,1,`${mappedPrefixDepthwiseConv}/batch_norm_scale`),batch_norm_offset=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`,1,`${mappedPrefixDepthwiseConv}/batch_norm_offset`),batch_norm_mean=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`,1,`${mappedPrefixDepthwiseConv}/batch_norm_mean`),batch_norm_variance=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`,1,`${mappedPrefixDepthwiseConv}/batch_norm_variance`);return{depthwise_conv:{filters,batch_norm_scale,batch_norm_offset,batch_norm_mean,batch_norm_variance},pointwise_conv:extractPointwiseConvParams("MobilenetV1",idx,mappedPrefixPointwiseConv)}}function extractMobilenetV1Params(){return{conv_0:extractPointwiseConvParams("MobilenetV1",0,"mobilenetv1/conv_0"),conv_1:extractConvPairParams(1),conv_2:extractConvPairParams(2),conv_3:extractConvPairParams(3),conv_4:extractConvPairParams(4),conv_5:extractConvPairParams(5),conv_6:extractConvPairParams(6),conv_7:extractConvPairParams(7),conv_8:extractConvPairParams(8),conv_9:extractConvPairParams(9),conv_10:extractConvPairParams(10),conv_11:extractConvPairParams(11),conv_12:extractConvPairParams(12),conv_13:extractConvPairParams(13)}}function extractConvParams(prefix,mappedPrefix){let filters=extractWeightEntry(`${prefix}/weights`,4,`${mappedPrefix}/filters`),bias=extractWeightEntry(`${prefix}/biases`,1,`${mappedPrefix}/bias`);return{filters,bias}}function extractBoxPredictorParams(idx){let box_encoding_predictor=extractConvParams(`Prediction/BoxPredictor_${idx}/BoxEncodingPredictor`,`prediction_layer/box_predictor_${idx}/box_encoding_predictor`),class_predictor=extractConvParams(`Prediction/BoxPredictor_${idx}/ClassPredictor`,`prediction_layer/box_predictor_${idx}/class_predictor`);return{box_encoding_predictor,class_predictor}}function extractPredictionLayerParams(){return{conv_0:extractPointwiseConvParams("Prediction",0,"prediction_layer/conv_0"),conv_1:extractPointwiseConvParams("Prediction",1,"prediction_layer/conv_1"),conv_2:extractPointwiseConvParams("Prediction",2,"prediction_layer/conv_2"),conv_3:extractPointwiseConvParams("Prediction",3,"prediction_layer/conv_3"),conv_4:extractPointwiseConvParams("Prediction",4,"prediction_layer/conv_4"),conv_5:extractPointwiseConvParams("Prediction",5,"prediction_layer/conv_5"),conv_6:extractPointwiseConvParams("Prediction",6,"prediction_layer/conv_6"),conv_7:extractPointwiseConvParams("Prediction",7,"prediction_layer/conv_7"),box_predictor_0:extractBoxPredictorParams(0),box_predictor_1:extractBoxPredictorParams(1),box_predictor_2:extractBoxPredictorParams(2),box_predictor_3:extractBoxPredictorParams(3),box_predictor_4:extractBoxPredictorParams(4),box_predictor_5:extractBoxPredictorParams(5)}}return{extractMobilenetV1Params,extractPredictionLayerParams}}function extractParamsFromWeigthMap6(weightMap){let paramMappings=[],{extractMobilenetV1Params,extractPredictionLayerParams}=extractorsFactory6(weightMap,paramMappings),extra_dim=weightMap["Output/extra_dim"];if(paramMappings.push({originalPath:"Output/extra_dim",paramPath:"output_layer/extra_dim"}),!isTensor3D(extra_dim))throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`);let params={mobilenetv1:extractMobilenetV1Params(),prediction_layer:extractPredictionLayerParams(),output_layer:{extra_dim}};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var tf30=__toModule(require_tfjs_esm());var tf29=__toModule(require_tfjs_esm());function pointwiseConvLayer(x,params,strides){return tf29.tidy(()=>{let out=tf29.conv2d(x,params.filters,strides,"same");return out=tf29.add(out,params.batch_norm_offset),tf29.clipByValue(out,0,6)})}var epsilon=.0010000000474974513;function depthwiseConvLayer(x,params,strides){return tf30.tidy(()=>{let out=tf30.depthwiseConv2d(x,params.filters,strides,"same");return out=tf30.batchNorm(out,params.batch_norm_mean,params.batch_norm_variance,params.batch_norm_offset,params.batch_norm_scale,epsilon),tf30.clipByValue(out,0,6)})}function getStridesForLayerIdx(layerIdx){return[2,4,6,12].some(idx=>idx===layerIdx)?[2,2]:[1,1]}function mobileNetV1(x,params){return tf30.tidy(()=>{let conv11,out=pointwiseConvLayer(x,params.conv_0,[2,2]);if([params.conv_1,params.conv_2,params.conv_3,params.conv_4,params.conv_5,params.conv_6,params.conv_7,params.conv_8,params.conv_9,params.conv_10,params.conv_11,params.conv_12,params.conv_13].forEach((param,i)=>{let layerIdx=i+1,depthwiseConvStrides=getStridesForLayerIdx(layerIdx);out=depthwiseConvLayer(out,param.depthwise_conv,depthwiseConvStrides),out=pointwiseConvLayer(out,param.pointwise_conv,[1,1]),layerIdx===11&&(conv11=out)}),conv11===null)throw new Error("mobileNetV1 - output of conv layer 11 is null");return{out,conv11}})}function IOU(boxes,i,j){let boxesData=boxes.arraySync(),yminI=Math.min(boxesData[i][0],boxesData[i][2]),xminI=Math.min(boxesData[i][1],boxesData[i][3]),ymaxI=Math.max(boxesData[i][0],boxesData[i][2]),xmaxI=Math.max(boxesData[i][1],boxesData[i][3]),yminJ=Math.min(boxesData[j][0],boxesData[j][2]),xminJ=Math.min(boxesData[j][1],boxesData[j][3]),ymaxJ=Math.max(boxesData[j][0],boxesData[j][2]),xmaxJ=Math.max(boxesData[j][1],boxesData[j][3]),areaI=(ymaxI-yminI)*(xmaxI-xminI),areaJ=(ymaxJ-yminJ)*(xmaxJ-xminJ);if(areaI<=0||areaJ<=0)return 0;let intersectionYmin=Math.max(yminI,yminJ),intersectionXmin=Math.max(xminI,xminJ),intersectionYmax=Math.min(ymaxI,ymaxJ),intersectionXmax=Math.min(xmaxI,xmaxJ),intersectionArea=Math.max(intersectionYmax-intersectionYmin,0)*Math.max(intersectionXmax-intersectionXmin,0);return intersectionArea/(areaI+areaJ-intersectionArea)}function nonMaxSuppression2(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){let numBoxes=boxes.shape[0],outputSize=Math.min(maxOutputSize,numBoxes),candidates=scores.map((score,boxIndex)=>({score,boxIndex})).filter(c=>c.score>scoreThreshold).sort((c1,c2)=>c2.score-c1.score),suppressFunc=x=>x<=iouThreshold?1:0,selected=[];return candidates.forEach(c=>{if(selected.length>=outputSize)return;let originalScore=c.score;for(let j=selected.length-1;j>=0;--j){let iou2=IOU(boxes,c.boxIndex,selected[j]);if(iou2!==0&&(c.score*=suppressFunc(iou2),c.score<=scoreThreshold))break}originalScore===c.score&&selected.push(c.boxIndex)}),selected}var tf31=__toModule(require_tfjs_esm());function getCenterCoordinatesAndSizesLayer(x){let vec=tf31.unstack(tf31.transpose(x,[1,0])),sizes=[tf31.sub(vec[2],vec[0]),tf31.sub(vec[3],vec[1])],centers=[tf31.add(vec[0],tf31.div(sizes[0],tf31.scalar(2))),tf31.add(vec[1],tf31.div(sizes[1],tf31.scalar(2)))];return{sizes,centers}}function decodeBoxesLayer(x0,x1){let{sizes,centers}=getCenterCoordinatesAndSizesLayer(x0),vec=tf31.unstack(tf31.transpose(x1,[1,0])),div0_out=tf31.div(tf31.mul(tf31.exp(tf31.div(vec[2],tf31.scalar(5))),sizes[0]),tf31.scalar(2)),add0_out=tf31.add(tf31.mul(tf31.div(vec[0],tf31.scalar(10)),sizes[0]),centers[0]),div1_out=tf31.div(tf31.mul(tf31.exp(tf31.div(vec[3],tf31.scalar(5))),sizes[1]),tf31.scalar(2)),add1_out=tf31.add(tf31.mul(tf31.div(vec[1],tf31.scalar(10)),sizes[1]),centers[1]);return tf31.transpose(tf31.stack([tf31.sub(add0_out,div0_out),tf31.sub(add1_out,div1_out),tf31.add(add0_out,div0_out),tf31.add(add1_out,div1_out)]),[1,0])}function outputLayer(boxPredictions,classPredictions,params){return tf31.tidy(()=>{let batchSize=boxPredictions.shape[0],boxes=decodeBoxesLayer(tf31.reshape(tf31.tile(params.extra_dim,[batchSize,1,1]),[-1,4]),tf31.reshape(boxPredictions,[-1,4]));boxes=tf31.reshape(boxes,[batchSize,boxes.shape[0]/batchSize,4]);let scoresAndClasses=tf31.sigmoid(tf31.slice(classPredictions,[0,0,1],[-1,-1,-1])),scores=tf31.slice(scoresAndClasses,[0,0,0],[-1,-1,1]);scores=tf31.reshape(scores,[batchSize,scores.shape[1]]);let boxesByBatch=tf31.unstack(boxes),scoresByBatch=tf31.unstack(scores);return{boxes:boxesByBatch,scores:scoresByBatch}})}var tf33=__toModule(require_tfjs_esm());var tf32=__toModule(require_tfjs_esm());function boxPredictionLayer(x,params){return tf32.tidy(()=>{let batchSize=x.shape[0],boxPredictionEncoding=tf32.reshape(convLayer(x,params.box_encoding_predictor),[batchSize,-1,1,4]),classPrediction=tf32.reshape(convLayer(x,params.class_predictor),[batchSize,-1,3]);return{boxPredictionEncoding,classPrediction}})}function predictionLayer(x,conv11,params){return tf33.tidy(()=>{let conv0=pointwiseConvLayer(x,params.conv_0,[1,1]),conv1=pointwiseConvLayer(conv0,params.conv_1,[2,2]),conv22=pointwiseConvLayer(conv1,params.conv_2,[1,1]),conv3=pointwiseConvLayer(conv22,params.conv_3,[2,2]),conv4=pointwiseConvLayer(conv3,params.conv_4,[1,1]),conv5=pointwiseConvLayer(conv4,params.conv_5,[2,2]),conv6=pointwiseConvLayer(conv5,params.conv_6,[1,1]),conv7=pointwiseConvLayer(conv6,params.conv_7,[2,2]),boxPrediction0=boxPredictionLayer(conv11,params.box_predictor_0),boxPrediction1=boxPredictionLayer(x,params.box_predictor_1),boxPrediction2=boxPredictionLayer(conv1,params.box_predictor_2),boxPrediction3=boxPredictionLayer(conv3,params.box_predictor_3),boxPrediction4=boxPredictionLayer(conv5,params.box_predictor_4),boxPrediction5=boxPredictionLayer(conv7,params.box_predictor_5),boxPredictions=tf33.concat([boxPrediction0.boxPredictionEncoding,boxPrediction1.boxPredictionEncoding,boxPrediction2.boxPredictionEncoding,boxPrediction3.boxPredictionEncoding,boxPrediction4.boxPredictionEncoding,boxPrediction5.boxPredictionEncoding],1),classPredictions=tf33.concat([boxPrediction0.classPrediction,boxPrediction1.classPrediction,boxPrediction2.classPrediction,boxPrediction3.classPrediction,boxPrediction4.classPrediction,boxPrediction5.classPrediction],1);return{boxPredictions,classPredictions}})}var SsdMobilenetv1Options=class{constructor({minConfidence,maxResults}={}){this._name="SsdMobilenetv1Options";if(this._minConfidence=minConfidence||.5,this._maxResults=maxResults||100,typeof this._minConfidence!="number"||this._minConfidence<=0||this._minConfidence>=1)throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`);if(typeof this._maxResults!="number")throw new Error(`${this._name} - expected maxResults to be a number`)}get minConfidence(){return this._minConfidence}get maxResults(){return this._maxResults}};var SsdMobilenetv1=class extends NeuralNetwork{constructor(){super("SsdMobilenetv1")}forwardInput(input){let{params}=this;if(!params)throw new Error("SsdMobilenetv1 - load model before inference");return tf34.tidy(()=>{let batchTensor=tf34.cast(input.toBatchTensor(512,!1),"float32"),x=tf34.sub(tf34.mul(batchTensor,tf34.scalar(.007843137718737125)),tf34.scalar(1)),features=mobileNetV1(x,params.mobilenetv1),{boxPredictions,classPredictions}=predictionLayer(features.out,features.conv11,params.prediction_layer);return outputLayer(boxPredictions,classPredictions,params.output_layer)})}async forward(input){return this.forwardInput(await toNetInput(input))}async locateFaces(input,options={}){let{maxResults,minConfidence}=new SsdMobilenetv1Options(options),netInput=await toNetInput(input),{boxes:_boxes,scores:_scores}=this.forwardInput(netInput),boxes=_boxes[0],scores=_scores[0];for(let i=1;i<_boxes.length;i++)_boxes[i].dispose(),_scores[i].dispose();let scoresData=Array.from(await scores.data()),indices=nonMaxSuppression2(boxes,scoresData,maxResults,.5,minConfidence),reshapedDims=netInput.getReshapedInputDimensions(0),inputSize=netInput.inputSize,padX=inputSize/reshapedDims.width,padY=inputSize/reshapedDims.height,boxesData=boxes.arraySync(),results=indices.map(idx=>{let[top,bottom]=[Math.max(0,boxesData[idx][0]),Math.min(1,boxesData[idx][2])].map(val=>val*padY),[left,right]=[Math.max(0,boxesData[idx][1]),Math.min(1,boxesData[idx][3])].map(val=>val*padX);return new FaceDetection(scoresData[idx],new Rect(left,top,right-left,bottom-top),{height:netInput.getInputHeight(0),width:netInput.getInputWidth(0)})});return boxes.dispose(),scores.dispose(),results}getDefaultModelName(){return"ssd_mobilenetv1_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap6(weightMap)}extractParams(weights){return extractParams6(weights)}};function createSsdMobilenetv1(weights){let net=new SsdMobilenetv1;return net.extractWeights(weights),net}function createFaceDetectionNet(weights){return createSsdMobilenetv1(weights)}var FaceDetectionNet=class extends SsdMobilenetv1{};var IOU_THRESHOLD=.4,BOX_ANCHORS=[new Point(.738768,.874946),new Point(2.42204,2.65704),new Point(4.30971,7.04493),new Point(10.246,4.59428),new Point(12.6868,11.8741)],BOX_ANCHORS_SEPARABLE=[new Point(1.603231,2.094468),new Point(6.041143,7.080126),new Point(2.882459,3.518061),new Point(4.266906,5.178857),new Point(9.041765,10.66308)],MEAN_RGB_SEPARABLE=[117.001,114.697,97.404],DEFAULT_MODEL_NAME="tiny_yolov2_model",DEFAULT_MODEL_NAME_SEPARABLE_CONV="tiny_yolov2_separable_conv_model";var tf39=__toModule(require_tfjs_esm());var isNumber=arg=>typeof arg=="number";function validateConfig(config){if(!config)throw new Error(`invalid config: ${config}`);if(typeof config.withSeparableConvs!="boolean")throw new Error(`config.withSeparableConvs has to be a boolean, have: ${config.withSeparableConvs}`);if(!isNumber(config.iouThreshold)||config.iouThreshold<0||config.iouThreshold>1)throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${config.iouThreshold}`);if(!Array.isArray(config.classes)||!config.classes.length||!config.classes.every(c=>typeof c=="string"))throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(config.classes)}`);if(!Array.isArray(config.anchors)||!config.anchors.length||!config.anchors.map(a=>a||{}).every(a=>isNumber(a.x)&&isNumber(a.y)))throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(config.anchors)}`);if(config.meanRgb&&(!Array.isArray(config.meanRgb)||config.meanRgb.length!==3||!config.meanRgb.every(isNumber)))throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(config.meanRgb)}`)}var tf36=__toModule(require_tfjs_esm());var tf35=__toModule(require_tfjs_esm());function leaky(x){return tf35.tidy(()=>{let min=tf35.mul(x,tf35.scalar(.10000000149011612));return tf35.add(tf35.relu(tf35.sub(x,min)),min)})}function convWithBatchNorm(x,params){return tf36.tidy(()=>{let out=tf36.pad(x,[[0,0],[1,1],[1,1],[0,0]]);return out=tf36.conv2d(out,params.conv.filters,[1,1],"valid"),out=tf36.sub(out,params.bn.sub),out=tf36.mul(out,params.bn.truediv),out=tf36.add(out,params.conv.bias),leaky(out)})}var tf37=__toModule(require_tfjs_esm());function depthwiseSeparableConv2(x,params){return tf37.tidy(()=>{let out=tf37.pad(x,[[0,0],[1,1],[1,1],[0,0]]);return out=tf37.separableConv2d(out,params.depthwise_filter,params.pointwise_filter,[1,1],"valid"),out=tf37.add(out,params.bias),leaky(out)})}var tf38=__toModule(require_tfjs_esm());function extractorsFactory7(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings);function extractBatchNormParams(size,mappedPrefix){let sub6=tf38.tensor1d(extractWeights(size)),truediv=tf38.tensor1d(extractWeights(size));return paramMappings.push({paramPath:`${mappedPrefix}/sub`},{paramPath:`${mappedPrefix}/truediv`}),{sub:sub6,truediv}}function extractConvWithBatchNormParams(channelsIn,channelsOut,mappedPrefix){let conv3=extractConvParams(channelsIn,channelsOut,3,`${mappedPrefix}/conv`),bn=extractBatchNormParams(channelsOut,`${mappedPrefix}/bn`);return{conv:conv3,bn}}let extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);return{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}}function extractParams7(weights,config,boxEncodingSize,filterSizes){let{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),paramMappings=[],{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}=extractorsFactory7(extractWeights,paramMappings),params;if(config.withSeparableConvs){let[s0,s1,s2,s3,s4,s5,s6,s7,s8]=filterSizes,conv0=config.isFirstLayerConv2d?extractConvParams(s0,s1,3,"conv0"):extractSeparableConvParams(s0,s1,"conv0"),conv1=extractSeparableConvParams(s1,s2,"conv1"),conv22=extractSeparableConvParams(s2,s3,"conv2"),conv3=extractSeparableConvParams(s3,s4,"conv3"),conv4=extractSeparableConvParams(s4,s5,"conv4"),conv5=extractSeparableConvParams(s5,s6,"conv5"),conv6=s7?extractSeparableConvParams(s6,s7,"conv6"):void 0,conv7=s8?extractSeparableConvParams(s7,s8,"conv7"):void 0,conv8=extractConvParams(s8||s7||s6,5*boxEncodingSize,1,"conv8");params={conv0,conv1,conv2:conv22,conv3,conv4,conv5,conv6,conv7,conv8}}else{let[s0,s1,s2,s3,s4,s5,s6,s7,s8]=filterSizes,conv0=extractConvWithBatchNormParams(s0,s1,"conv0"),conv1=extractConvWithBatchNormParams(s1,s2,"conv1"),conv22=extractConvWithBatchNormParams(s2,s3,"conv2"),conv3=extractConvWithBatchNormParams(s3,s4,"conv3"),conv4=extractConvWithBatchNormParams(s4,s5,"conv4"),conv5=extractConvWithBatchNormParams(s5,s6,"conv5"),conv6=extractConvWithBatchNormParams(s6,s7,"conv6"),conv7=extractConvWithBatchNormParams(s7,s8,"conv7"),conv8=extractConvParams(s8,5*boxEncodingSize,1,"conv8");params={conv0,conv1,conv2:conv22,conv3,conv4,conv5,conv6,conv7,conv8}}if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params,paramMappings}}function extractorsFactory8(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractBatchNormParams(prefix){let sub6=extractWeightEntry(`${prefix}/sub`,1),truediv=extractWeightEntry(`${prefix}/truediv`,1);return{sub:sub6,truediv}}function extractConvParams(prefix){let filters=extractWeightEntry(`${prefix}/filters`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return{filters,bias}}function extractConvWithBatchNormParams(prefix){let conv3=extractConvParams(`${prefix}/conv`),bn=extractBatchNormParams(`${prefix}/bn`);return{conv:conv3,bn}}let extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);return{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}}function extractParamsFromWeigthMap7(weightMap,config){let paramMappings=[],{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}=extractorsFactory8(weightMap,paramMappings),params;if(config.withSeparableConvs){let numFilters=config.filterSizes&&config.filterSizes.length||9;params={conv0:config.isFirstLayerConv2d?extractConvParams("conv0"):extractSeparableConvParams("conv0"),conv1:extractSeparableConvParams("conv1"),conv2:extractSeparableConvParams("conv2"),conv3:extractSeparableConvParams("conv3"),conv4:extractSeparableConvParams("conv4"),conv5:extractSeparableConvParams("conv5"),conv6:numFilters>7?extractSeparableConvParams("conv6"):void 0,conv7:numFilters>8?extractSeparableConvParams("conv7"):void 0,conv8:extractConvParams("conv8")}}else params={conv0:extractConvWithBatchNormParams("conv0"),conv1:extractConvWithBatchNormParams("conv1"),conv2:extractConvWithBatchNormParams("conv2"),conv3:extractConvWithBatchNormParams("conv3"),conv4:extractConvWithBatchNormParams("conv4"),conv5:extractConvWithBatchNormParams("conv5"),conv6:extractConvWithBatchNormParams("conv6"),conv7:extractConvWithBatchNormParams("conv7"),conv8:extractConvParams("conv8")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var TinyYolov2Options=class{constructor({inputSize,scoreThreshold}={}){this._name="TinyYolov2Options";if(this._inputSize=inputSize||416,this._scoreThreshold=scoreThreshold||.5,typeof this._inputSize!="number"||this._inputSize%32!=0)throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`);if(typeof this._scoreThreshold!="number"||this._scoreThreshold<=0||this._scoreThreshold>=1)throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`)}get inputSize(){return this._inputSize}get scoreThreshold(){return this._scoreThreshold}};var TinyYolov2Base2=class extends NeuralNetwork{constructor(config){super("TinyYolov2");validateConfig(config),this._config=config}get config(){return this._config}get withClassScores(){return this.config.withClassScores||this.config.classes.length>1}get boxEncodingSize(){return 5+(this.withClassScores?this.config.classes.length:0)}runTinyYolov2(x,params){let out=convWithBatchNorm(x,params.conv0);return out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv1),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv2),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv3),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv4),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv5),out=tf39.maxPool(out,[2,2],[1,1],"same"),out=convWithBatchNorm(out,params.conv6),out=convWithBatchNorm(out,params.conv7),convLayer(out,params.conv8,"valid",!1)}runMobilenet(x,params){let out=this.config.isFirstLayerConv2d?leaky(convLayer(x,params.conv0,"valid",!1)):depthwiseSeparableConv2(x,params.conv0);return out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv2(out,params.conv1),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv2(out,params.conv2),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv2(out,params.conv3),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv2(out,params.conv4),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv2(out,params.conv5),out=tf39.maxPool(out,[2,2],[1,1],"same"),out=params.conv6?depthwiseSeparableConv2(out,params.conv6):out,out=params.conv7?depthwiseSeparableConv2(out,params.conv7):out,convLayer(out,params.conv8,"valid",!1)}forwardInput(input,inputSize){let{params}=this;if(!params)throw new Error("TinyYolov2 - load model before inference");return tf39.tidy(()=>{let batchTensor=tf39.cast(input.toBatchTensor(inputSize,!1),"float32");return batchTensor=this.config.meanRgb?normalize(batchTensor,this.config.meanRgb):batchTensor,batchTensor=batchTensor.div(tf39.scalar(256)),this.config.withSeparableConvs?this.runMobilenet(batchTensor,params):this.runTinyYolov2(batchTensor,params)})}async forward(input,inputSize){return this.forwardInput(await toNetInput(input),inputSize)}async detect(input,forwardParams={}){let{inputSize,scoreThreshold}=new TinyYolov2Options(forwardParams),netInput=await toNetInput(input),out=await this.forwardInput(netInput,inputSize),out0=tf39.tidy(()=>tf39.unstack(out)[0].expandDims()),inputDimensions={width:netInput.getInputWidth(0),height:netInput.getInputHeight(0)},results=await this.extractBoxes(out0,netInput.getReshapedInputDimensions(0),scoreThreshold);out.dispose(),out0.dispose();let boxes=results.map(res=>res.box),scores=results.map(res=>res.score),classScores=results.map(res=>res.classScore),classNames=results.map(res=>this.config.classes[res.label]);return nonMaxSuppression(boxes.map(box=>box.rescale(inputSize)),scores,this.config.iouThreshold,!0).map(idx=>new ObjectDetection(scores[idx],classScores[idx],classNames[idx],boxes[idx],inputDimensions))}getDefaultModelName(){return""}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap7(weightMap,this.config)}extractParams(weights){let filterSizes=this.config.filterSizes||TinyYolov2Base2.DEFAULT_FILTER_SIZES,numFilters=filterSizes?filterSizes.length:void 0;if(numFilters!==7&&numFilters!==8&&numFilters!==9)throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`);return extractParams7(weights,this.config,this.boxEncodingSize,filterSizes)}async extractBoxes(outputTensor,inputBlobDimensions,scoreThreshold){let{width,height}=inputBlobDimensions,inputSize=Math.max(width,height),correctionFactorX=inputSize/width,correctionFactorY=inputSize/height,numCells=outputTensor.shape[1],numBoxes=this.config.anchors.length,[boxesTensor,scoresTensor,classScoresTensor]=tf39.tidy(()=>{let reshaped=outputTensor.reshape([numCells,numCells,numBoxes,this.boxEncodingSize]),boxes=reshaped.slice([0,0,0,0],[numCells,numCells,numBoxes,4]),scores=reshaped.slice([0,0,0,4],[numCells,numCells,numBoxes,1]),classScores=this.withClassScores?tf39.softmax(reshaped.slice([0,0,0,5],[numCells,numCells,numBoxes,this.config.classes.length]),3):tf39.scalar(0);return[boxes,scores,classScores]}),results=[],scoresData=await scoresTensor.array(),boxesData=await boxesTensor.array();for(let row=0;rowscoreThreshold){let ctX=(col+sigmoid(boxesData[row][col][anchor][0]))/numCells*correctionFactorX,ctY=(row+sigmoid(boxesData[row][col][anchor][1]))/numCells*correctionFactorY,widthLocal=Math.exp(boxesData[row][col][anchor][2])*this.config.anchors[anchor].x/numCells*correctionFactorX,heightLocal=Math.exp(boxesData[row][col][anchor][3])*this.config.anchors[anchor].y/numCells*correctionFactorY,x=ctX-widthLocal/2,y=ctY-heightLocal/2,pos={row,col,anchor},{classScore,label}=this.withClassScores?await this.extractPredictedClass(classScoresTensor,pos):{classScore:1,label:0};results.push({box:new BoundingBox(x,y,x+widthLocal,y+heightLocal),score,classScore:score*classScore,label,...pos})}}return boxesTensor.dispose(),scoresTensor.dispose(),classScoresTensor.dispose(),results}async extractPredictedClass(classesTensor,pos){let{row,col,anchor}=pos,classesData=await classesTensor.array();return Array(this.config.classes.length).fill(0).map((_,i)=>classesData[row][col][anchor][i]).map((classScore,label)=>({classScore,label})).reduce((max,curr)=>max.classScore>curr.classScore?max:curr)}},TinyYolov2Base=TinyYolov2Base2;TinyYolov2Base.DEFAULT_FILTER_SIZES=[3,16,32,64,128,256,512,1024,1024];var TinyYolov2=class extends TinyYolov2Base{constructor(withSeparableConvs=!0){let config={withSeparableConvs,iouThreshold:IOU_THRESHOLD,classes:["face"],...withSeparableConvs?{anchors:BOX_ANCHORS_SEPARABLE,meanRgb:MEAN_RGB_SEPARABLE}:{anchors:BOX_ANCHORS,withClassScores:!0}};super(config)}get withSeparableConvs(){return this.config.withSeparableConvs}get anchors(){return this.config.anchors}async locateFaces(input,forwardParams){return(await this.detect(input,forwardParams)).map(det=>new FaceDetection(det.score,det.relativeBox,{width:det.imageWidth,height:det.imageHeight}))}getDefaultModelName(){return this.withSeparableConvs?DEFAULT_MODEL_NAME_SEPARABLE_CONV:DEFAULT_MODEL_NAME}extractParamsFromWeigthMap(weightMap){return super.extractParamsFromWeigthMap(weightMap)}};function createTinyYolov2(weights,withSeparableConvs=!0){let net=new TinyYolov2(withSeparableConvs);return net.extractWeights(weights),net}var TinyFaceDetectorOptions=class extends TinyYolov2Options{constructor(){super(...arguments);this._name="TinyFaceDetectorOptions"}};var ComposableTask=class{async then(onfulfilled){return onfulfilled(await this.run())}async run(){throw new Error("ComposableTask - run is not implemented")}};var tf41=__toModule(require_tfjs_esm());var tf40=__toModule(require_tfjs_esm());async function extractAllFacesAndComputeResults(parentResults,input,computeResults,extractedFaces,getRectForAlignment=({alignedRect})=>alignedRect){let faceBoxes=parentResults.map(parentResult=>isWithFaceLandmarks(parentResult)?getRectForAlignment(parentResult):parentResult.detection),faces=extractedFaces||(input instanceof tf40.Tensor?await extractFaceTensors(input,faceBoxes):await extractFaces(input,faceBoxes)),results=await computeResults(faces);return faces.forEach(f=>f instanceof tf40.Tensor&&f.dispose()),results}async function extractSingleFaceAndComputeResult(parentResult,input,computeResult,extractedFaces,getRectForAlignment){return extractAllFacesAndComputeResults([parentResult],input,async faces=>computeResult(faces[0]),extractedFaces,getRectForAlignment)}var IOU_THRESHOLD2=.4,BOX_ANCHORS2=[new Point(1.603231,2.094468),new Point(6.041143,7.080126),new Point(2.882459,3.518061),new Point(4.266906,5.178857),new Point(9.041765,10.66308)],MEAN_RGB=[117.001,114.697,97.404];var TinyFaceDetector=class extends TinyYolov2Base{constructor(){let config={withSeparableConvs:!0,iouThreshold:IOU_THRESHOLD2,classes:["face"],anchors:BOX_ANCHORS2,meanRgb:MEAN_RGB,isFirstLayerConv2d:!0,filterSizes:[3,16,32,64,128,256,512]};super(config)}get anchors(){return this.config.anchors}async locateFaces(input,forwardParams){return(await this.detect(input,forwardParams)).map(det=>new FaceDetection(det.score,det.relativeBox,{width:det.imageWidth,height:det.imageHeight}))}getDefaultModelName(){return"tiny_face_detector_model"}extractParamsFromWeigthMap(weightMap){return super.extractParamsFromWeigthMap(weightMap)}};var nets={ssdMobilenetv1:new SsdMobilenetv1,tinyFaceDetector:new TinyFaceDetector,tinyYolov2:new TinyYolov2,faceLandmark68Net:new FaceLandmark68Net,faceLandmark68TinyNet:new FaceLandmark68TinyNet,faceRecognitionNet:new FaceRecognitionNet,faceExpressionNet:new FaceExpressionNet,ageGenderNet:new AgeGenderNet},ssdMobilenetv1=(input,options)=>nets.ssdMobilenetv1.locateFaces(input,options),tinyFaceDetector=(input,options)=>nets.tinyFaceDetector.locateFaces(input,options),tinyYolov2=(input,options)=>nets.tinyYolov2.locateFaces(input,options),detectFaceLandmarks=input=>nets.faceLandmark68Net.detectLandmarks(input),detectFaceLandmarksTiny=input=>nets.faceLandmark68TinyNet.detectLandmarks(input),computeFaceDescriptor=input=>nets.faceRecognitionNet.computeFaceDescriptor(input),recognizeFaceExpressions=input=>nets.faceExpressionNet.predictExpressions(input),predictAgeAndGender=input=>nets.ageGenderNet.predictAgeAndGender(input),loadSsdMobilenetv1Model=url=>nets.ssdMobilenetv1.load(url),loadTinyFaceDetectorModel=url=>nets.tinyFaceDetector.load(url),loadTinyYolov2Model=url=>nets.tinyYolov2.load(url),loadFaceLandmarkModel=url=>nets.faceLandmark68Net.load(url),loadFaceLandmarkTinyModel=url=>nets.faceLandmark68TinyNet.load(url),loadFaceRecognitionModel=url=>nets.faceRecognitionNet.load(url),loadFaceExpressionModel=url=>nets.faceExpressionNet.load(url),loadAgeGenderModel=url=>nets.ageGenderNet.load(url),loadFaceDetectionModel=loadSsdMobilenetv1Model,locateFaces=ssdMobilenetv1,detectLandmarks=detectFaceLandmarks;var PredictFaceExpressionsTaskBase=class extends ComposableTask{constructor(parentTask,input,extractedFaces){super();this.parentTask=parentTask;this.input=input;this.extractedFaces=extractedFaces}},PredictAllFaceExpressionsTask=class extends PredictFaceExpressionsTaskBase{async run(){let parentResults=await this.parentTask,faceExpressionsByFace=await extractAllFacesAndComputeResults(parentResults,this.input,async faces=>Promise.all(faces.map(face=>nets.faceExpressionNet.predictExpressions(face))),this.extractedFaces);return parentResults.map((parentResult,i)=>extendWithFaceExpressions(parentResult,faceExpressionsByFace[i]))}withAgeAndGender(){return new PredictAllAgeAndGenderTask(this,this.input)}},PredictSingleFaceExpressionsTask=class extends PredictFaceExpressionsTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let faceExpressions=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.faceExpressionNet.predictExpressions(face),this.extractedFaces);return extendWithFaceExpressions(parentResult,faceExpressions)}withAgeAndGender(){return new PredictSingleAgeAndGenderTask(this,this.input)}},PredictAllFaceExpressionsWithFaceAlignmentTask=class extends PredictAllFaceExpressionsTask{withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},PredictSingleFaceExpressionsWithFaceAlignmentTask=class extends PredictSingleFaceExpressionsTask{withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}};var PredictAgeAndGenderTaskBase=class extends ComposableTask{constructor(parentTask,input,extractedFaces){super();this.parentTask=parentTask;this.input=input;this.extractedFaces=extractedFaces}},PredictAllAgeAndGenderTask=class extends PredictAgeAndGenderTaskBase{async run(){let parentResults=await this.parentTask,ageAndGenderByFace=await extractAllFacesAndComputeResults(parentResults,this.input,async faces=>Promise.all(faces.map(face=>nets.ageGenderNet.predictAgeAndGender(face))),this.extractedFaces);return parentResults.map((parentResult,i)=>{let{age,gender,genderProbability}=ageAndGenderByFace[i];return extendWithAge(extendWithGender(parentResult,gender,genderProbability),age)})}withFaceExpressions(){return new PredictAllFaceExpressionsTask(this,this.input)}},PredictSingleAgeAndGenderTask=class extends PredictAgeAndGenderTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let{age,gender,genderProbability}=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.ageGenderNet.predictAgeAndGender(face),this.extractedFaces);return extendWithAge(extendWithGender(parentResult,gender,genderProbability),age)}withFaceExpressions(){return new PredictSingleFaceExpressionsTask(this,this.input)}},PredictAllAgeAndGenderWithFaceAlignmentTask=class extends PredictAllAgeAndGenderTask{withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},PredictSingleAgeAndGenderWithFaceAlignmentTask=class extends PredictSingleAgeAndGenderTask{withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}};var ComputeFaceDescriptorsTaskBase=class extends ComposableTask{constructor(parentTask,input){super();this.parentTask=parentTask;this.input=input}},ComputeAllFaceDescriptorsTask=class extends ComputeFaceDescriptorsTaskBase{async run(){let parentResults=await this.parentTask;return(await extractAllFacesAndComputeResults(parentResults,this.input,faces=>Promise.all(faces.map(face=>nets.faceRecognitionNet.computeFaceDescriptor(face))),null,parentResult=>parentResult.landmarks.align(null,{useDlibAlignment:!0}))).map((descriptor,i)=>extendWithFaceDescriptor(parentResults[i],descriptor))}withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}},ComputeSingleFaceDescriptorTask=class extends ComputeFaceDescriptorsTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let descriptor=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.faceRecognitionNet.computeFaceDescriptor(face),null,parentResult2=>parentResult2.landmarks.align(null,{useDlibAlignment:!0}));return extendWithFaceDescriptor(parentResult,descriptor)}withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}};var DetectFaceLandmarksTaskBase=class extends ComposableTask{constructor(parentTask,input,useTinyLandmarkNet){super();this.parentTask=parentTask;this.input=input;this.useTinyLandmarkNet=useTinyLandmarkNet}get landmarkNet(){return this.useTinyLandmarkNet?nets.faceLandmark68TinyNet:nets.faceLandmark68Net}},DetectAllFaceLandmarksTask=class extends DetectFaceLandmarksTaskBase{async run(){let parentResults=await this.parentTask,detections=parentResults.map(res=>res.detection),faces=this.input instanceof tf41.Tensor?await extractFaceTensors(this.input,detections):await extractFaces(this.input,detections),faceLandmarksByFace=await Promise.all(faces.map(face=>this.landmarkNet.detectLandmarks(face)));return faces.forEach(f=>f instanceof tf41.Tensor&&f.dispose()),parentResults.map((parentResult,i)=>extendWithFaceLandmarks(parentResult,faceLandmarksByFace[i]))}withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},DetectSingleFaceLandmarksTask=class extends DetectFaceLandmarksTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let{detection}=parentResult,faces=this.input instanceof tf41.Tensor?await extractFaceTensors(this.input,[detection]):await extractFaces(this.input,[detection]),landmarks=await this.landmarkNet.detectLandmarks(faces[0]);return faces.forEach(f=>f instanceof tf41.Tensor&&f.dispose()),extendWithFaceLandmarks(parentResult,landmarks)}withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}};var DetectFacesTaskBase=class extends ComposableTask{constructor(input,options=new SsdMobilenetv1Options){super();this.input=input;this.options=options}},DetectAllFacesTask=class extends DetectFacesTaskBase{async run(){let{input,options}=this,faceDetectionFunction=options instanceof TinyFaceDetectorOptions?input2=>nets.tinyFaceDetector.locateFaces(input2,options):options instanceof SsdMobilenetv1Options?input2=>nets.ssdMobilenetv1.locateFaces(input2,options):options instanceof TinyYolov2Options?input2=>nets.tinyYolov2.locateFaces(input2,options):null;if(!faceDetectionFunction)throw new Error("detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options");return faceDetectionFunction(input)}runAndExtendWithFaceDetections(){return new Promise(async resolve=>{let detections=await this.run();resolve(detections.map(detection=>extendWithFaceDetection({},detection)))})}withFaceLandmarks(useTinyLandmarkNet=!1){return new DetectAllFaceLandmarksTask(this.runAndExtendWithFaceDetections(),this.input,useTinyLandmarkNet)}withFaceExpressions(){return new PredictAllFaceExpressionsTask(this.runAndExtendWithFaceDetections(),this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderTask(this.runAndExtendWithFaceDetections(),this.input)}},DetectSingleFaceTask=class extends DetectFacesTaskBase{async run(){let faceDetections=await new DetectAllFacesTask(this.input,this.options),faceDetectionWithHighestScore=faceDetections[0];return faceDetections.forEach(faceDetection=>{faceDetection.score>faceDetectionWithHighestScore.score&&(faceDetectionWithHighestScore=faceDetection)}),faceDetectionWithHighestScore}runAndExtendWithFaceDetection(){return new Promise(async resolve=>{let detection=await this.run();resolve(detection?extendWithFaceDetection({},detection):void 0)})}withFaceLandmarks(useTinyLandmarkNet=!1){return new DetectSingleFaceLandmarksTask(this.runAndExtendWithFaceDetection(),this.input,useTinyLandmarkNet)}withFaceExpressions(){return new PredictSingleFaceExpressionsTask(this.runAndExtendWithFaceDetection(),this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderTask(this.runAndExtendWithFaceDetection(),this.input)}};function detectSingleFace(input,options=new SsdMobilenetv1Options){return new DetectSingleFaceTask(input,options)}function detectAllFaces(input,options=new SsdMobilenetv1Options){return new DetectAllFacesTask(input,options)}async function allFacesSsdMobilenetv1(input,minConfidence){return detectAllFaces(input,new SsdMobilenetv1Options(minConfidence?{minConfidence}:{})).withFaceLandmarks().withFaceDescriptors()}async function allFacesTinyYolov2(input,forwardParams={}){return detectAllFaces(input,new TinyYolov2Options(forwardParams)).withFaceLandmarks().withFaceDescriptors()}var allFaces=allFacesSsdMobilenetv1;function euclideanDistance(arr1,arr2){if(arr1.length!==arr2.length)throw new Error("euclideanDistance: arr1.length !== arr2.length");let desc1=Array.from(arr1),desc2=Array.from(arr2);return Math.sqrt(desc1.map((val,i)=>val-desc2[i]).reduce((res,diff)=>res+diff**2,0))}var FaceMatcher=class{constructor(inputs,distanceThreshold=.6){this._distanceThreshold=distanceThreshold;let inputArray=Array.isArray(inputs)?inputs:[inputs];if(!inputArray.length)throw new Error("FaceRecognizer.constructor - expected atleast one input");let count=1,createUniqueLabel=()=>`person ${count++}`;this._labeledDescriptors=inputArray.map(desc=>{if(desc instanceof LabeledFaceDescriptors)return desc;if(desc instanceof Float32Array)return new LabeledFaceDescriptors(createUniqueLabel(),[desc]);if(desc.descriptor&&desc.descriptor instanceof Float32Array)return new LabeledFaceDescriptors(createUniqueLabel(),[desc.descriptor]);throw new Error("FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>")})}get labeledDescriptors(){return this._labeledDescriptors}get distanceThreshold(){return this._distanceThreshold}computeMeanDistance(queryDescriptor,descriptors){return descriptors.map(d=>euclideanDistance(d,queryDescriptor)).reduce((d1,d2)=>d1+d2,0)/(descriptors.length||1)}matchDescriptor(queryDescriptor){return this.labeledDescriptors.map(({descriptors,label})=>new FaceMatch(label,this.computeMeanDistance(queryDescriptor,descriptors))).reduce((best,curr)=>best.distanceld.toJSON())}}static fromJSON(json){let labeledDescriptors=json.labeledDescriptors.map(ld=>LabeledFaceDescriptors.fromJSON(ld));return new FaceMatcher(labeledDescriptors,json.distanceThreshold)}};function createTinyFaceDetector(weights){let net=new TinyFaceDetector;return net.extractWeights(weights),net}function resizeResults(results,dimensions){let{width,height}=new Dimensions(dimensions.width,dimensions.height);if(width<=0||height<=0)throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({width,height})}`);if(Array.isArray(results))return results.map(obj=>resizeResults(obj,{width,height}));if(isWithFaceLandmarks(results)){let resizedDetection=results.detection.forSize(width,height),resizedLandmarks=results.unshiftedLandmarks.forSize(resizedDetection.box.width,resizedDetection.box.height);return extendWithFaceLandmarks(extendWithFaceDetection(results,resizedDetection),resizedLandmarks)}return isWithFaceDetection(results)?extendWithFaceDetection(results,results.detection.forSize(width,height)):results instanceof FaceLandmarks||results instanceof FaceDetection?results.forSize(width,height):results}var node=typeof process!="undefined",browser3=typeof navigator!="undefined"&&typeof navigator.userAgent!="undefined",version2={faceapi:version,node,browser:browser3};export{AgeGenderNet,BoundingBox,Box,ComposableTask,ComputeAllFaceDescriptorsTask,ComputeFaceDescriptorsTaskBase,ComputeSingleFaceDescriptorTask,DetectAllFaceLandmarksTask,DetectAllFacesTask,DetectFaceLandmarksTaskBase,DetectFacesTaskBase,DetectSingleFaceLandmarksTask,DetectSingleFaceTask,Dimensions,FACE_EXPRESSION_LABELS,FaceDetection,FaceDetectionNet,FaceExpressionNet,FaceExpressions,FaceLandmark68Net,FaceLandmark68TinyNet,FaceLandmarkNet,FaceLandmarks,FaceLandmarks5,FaceLandmarks68,FaceMatch,FaceMatcher,FaceRecognitionNet,Gender,LabeledBox,LabeledFaceDescriptors,NetInput,NeuralNetwork,ObjectDetection,Point,PredictedBox,Rect,SsdMobilenetv1,SsdMobilenetv1Options,TinyFaceDetector,TinyFaceDetectorOptions,TinyYolov2,TinyYolov2Options,allFaces,allFacesSsdMobilenetv1,allFacesTinyYolov2,awaitMediaLoaded,bufferToImage,computeFaceDescriptor,createCanvas,createCanvasFromMedia,createFaceDetectionNet,createFaceRecognitionNet,createSsdMobilenetv1,createTinyFaceDetector,createTinyYolov2,detectAllFaces,detectFaceLandmarks,detectFaceLandmarksTiny,detectLandmarks,detectSingleFace,draw_exports as draw,env,euclideanDistance,extendWithAge,extendWithFaceDescriptor,extendWithFaceDetection,extendWithFaceExpressions,extendWithFaceLandmarks,extendWithGender,extractFaceTensors,extractFaces,fetchImage,fetchJson,fetchNetWeights,fetchOrThrow,getContext2dOrThrow,getMediaDimensions,imageTensorToCanvas,imageToSquare,inverseSigmoid,iou,isMediaElement,isMediaLoaded,isWithAge,isWithFaceDetection,isWithFaceExpressions,isWithFaceLandmarks,isWithGender,loadAgeGenderModel,loadFaceDetectionModel,loadFaceExpressionModel,loadFaceLandmarkModel,loadFaceLandmarkTinyModel,loadFaceRecognitionModel,loadSsdMobilenetv1Model,loadTinyFaceDetectorModel,loadTinyYolov2Model,loadWeightMap,locateFaces,matchDimensions,minBbox,nets,nonMaxSuppression,normalize,padToSquare,predictAgeAndGender,recognizeFaceExpressions,resizeResults,resolveInput,shuffleArray,sigmoid,ssdMobilenetv1,tf42 as tf,tinyFaceDetector,tinyYolov2,toNetInput,utils_exports as utils,validateConfig,version2 as version}; +var dn=Object.create,Ge=Object.defineProperty,un=Object.getPrototypeOf,fn=Object.prototype.hasOwnProperty,ln=Object.getOwnPropertyNames,hn=Object.getOwnPropertyDescriptor;var lo=o=>Ge(o,"__esModule",{value:!0});var ho=(o,t)=>()=>(t||(t={exports:{}},o(t.exports,t)),t.exports),Er=(o,t)=>{lo(o);for(var e in t)Ge(o,e,{get:t[e],enumerable:!0})},Bt=(o,t,e)=>{if(lo(o),t&&typeof t=="object"||typeof t=="function")for(let r of ln(t))!fn.call(o,r)&&r!=="default"&&Ge(o,r,{get:()=>t[r],enumerable:!(e=hn(t,r))||e.enumerable});return o},b=o=>o&&o.__esModule?o:Bt(Ge(o!=null?dn(un(o)):{},"default",{value:o,enumerable:!0}),o);import*as Ma from"@tensorflow/tfjs/dist/index.js";import*as Ca from"@tensorflow/tfjs-backend-wasm";var g=ho(xn=>{Bt(xn,Ma);Bt(xn,Ca)});var yo=ho((Pn,vo)=>{Er(Pn,{isNodejs:()=>_n});function _n(){return typeof global=="object"&&!0&&typeof vo!="undefined"&&typeof process!="undefined"&&!!process.version}});var va=b(g());var Qr={};Er(Qr,{AnchorPosition:()=>dt,DrawBox:()=>Xe,DrawBoxOptions:()=>Hr,DrawFaceLandmarks:()=>Kr,DrawFaceLandmarksOptions:()=>Zr,DrawTextField:()=>Mt,DrawTextFieldOptions:()=>Ne,drawContour:()=>lt,drawDetections:()=>En,drawFaceExpressions:()=>In,drawFaceLandmarks:()=>Ln});function lt(o,t,e=!1){if(o.beginPath(),t.slice(1).forEach(({x:r,y:n},a)=>{let s=t[a];o.moveTo(s.x,s.y),o.lineTo(r,n)}),e){let r=t[t.length-1],n=t[0];if(!r||!n)return;o.moveTo(r.x,r.y),o.lineTo(n.x,n.y)}o.stroke()}var Mr={};Er(Mr,{computeReshapedDimensions:()=>Ir,getCenterPoint:()=>Ot,isDimensions:()=>Ve,isEven:()=>ze,isFloat:()=>Nr,isTensor:()=>Rt,isTensor1D:()=>bn,isTensor2D:()=>Cr,isTensor3D:()=>ht,isTensor4D:()=>z,isValidNumber:()=>rt,isValidProbablitiy:()=>ee,range:()=>ct,round:()=>$t});var xo=b(g());var A=class{constructor(t,e){if(!rt(t)||!rt(e))throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({width:t,height:e})}`);this._width=t,this._height=e}get width(){return this._width}get height(){return this._height}reverse(){return new A(1/this.width,1/this.height)}};function Rt(o,t){return o instanceof xo.Tensor&&o.shape.length===t}function bn(o){return Rt(o,1)}function Cr(o){return Rt(o,2)}function ht(o){return Rt(o,3)}function z(o){return Rt(o,4)}function Nr(o){return o%1!=0}function ze(o){return o%2==0}function $t(o,t=2){let e=10**t;return Math.floor(o*e)/e}function Ve(o){return o&&o.width&&o.height}function Ir({width:o,height:t},e){let r=e/Math.max(t,o);return new A(Math.round(o*r),Math.round(t*r))}function Ot(o){return o.reduce((t,e)=>t.add(e),new x(0,0)).div(new x(o.length,o.length))}function ct(o,t,e){return Array(o).fill(0).map((r,n)=>t+n*e)}function rt(o){return!!o&&o!==Infinity&&o!==-Infinity&&!Number.isNaN(o)||o===0}function ee(o){return rt(o)&&o>=0&&o<=1}var x=class{constructor(t,e){this._x=t,this._y=e}get x(){return this._x}get y(){return this._y}add(t){return new x(this.x+t.x,this.y+t.y)}sub(t){return new x(this.x-t.x,this.y-t.y)}mul(t){return new x(this.x*t.x,this.y*t.y)}div(t){return new x(this.x/t.x,this.y/t.y)}abs(){return new x(Math.abs(this.x),Math.abs(this.y))}magnitude(){return Math.sqrt(this.x**2+this.y**2)}floor(){return new x(Math.floor(this.x),Math.floor(this.y))}};var D=class{static isRect(t){return!!t&&[t.x,t.y,t.width,t.height].every(rt)}static assertIsValidBox(t,e,r=!1){if(!D.isRect(t))throw new Error(`${e} - invalid box: ${JSON.stringify(t)}, expected object with properties x, y, width, height`);if(!r&&(t.width<0||t.height<0))throw new Error(`${e} - width (${t.width}) and height (${t.height}) must be positive numbers`)}constructor(t,e=!0){let r=t||{},n=[r.left,r.top,r.right,r.bottom].every(rt),a=[r.x,r.y,r.width,r.height].every(rt);if(!a&&!n)throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(r)}`);let[s,i,c,m]=a?[r.x,r.y,r.width,r.height]:[r.left,r.top,r.right-r.left,r.bottom-r.top];D.assertIsValidBox({x:s,y:i,width:c,height:m},"Box.constructor",e),this._x=s,this._y=i,this._width=c,this._height=m}get x(){return this._x}get y(){return this._y}get width(){return this._width}get height(){return this._height}get left(){return this.x}get top(){return this.y}get right(){return this.x+this.width}get bottom(){return this.y+this.height}get area(){return this.width*this.height}get topLeft(){return new x(this.left,this.top)}get topRight(){return new x(this.right,this.top)}get bottomLeft(){return new x(this.left,this.bottom)}get bottomRight(){return new x(this.right,this.bottom)}round(){let[t,e,r,n]=[this.x,this.y,this.width,this.height].map(a=>Math.round(a));return new D({x:t,y:e,width:r,height:n})}floor(){let[t,e,r,n]=[this.x,this.y,this.width,this.height].map(a=>Math.floor(a));return new D({x:t,y:e,width:r,height:n})}toSquare(){let{x:t,y:e,width:r,height:n}=this,a=Math.abs(r-n);return re&&(i=-d+e+r,d=e),u>t&&(c=-u+t+n,u=t),m<1&&(c=2-m,m=1),p<1&&(c=2-p,p=1),{dy:s,edy:c,dx:a,edx:i,y:p,ey:u,x:m,ex:d,w:r,h:n}}calibrate(t){return new D({left:this.left+t.left*this.width,top:this.top+t.top*this.height,right:this.right+t.right*this.width,bottom:this.bottom+t.bottom*this.height}).toSquare().round()}};var re=class extends D{constructor(t,e,r,n,a=!1){super({left:t,top:e,right:r,bottom:n},a)}};var Dt=class{constructor(t,e,r,n,a){this._imageDims=new A(a.width,a.height),this._score=t,this._classScore=e,this._className=r,this._box=new D(n).rescale(this._imageDims)}get score(){return this._score}get classScore(){return this._classScore}get className(){return this._className}get box(){return this._box}get imageDims(){return this._imageDims}get imageWidth(){return this.imageDims.width}get imageHeight(){return this.imageDims.height}get relativeBox(){return new D(this._box).rescale(this.imageDims.reverse())}forSize(t,e){return new Dt(this.score,this.classScore,this.className,this.relativeBox,{width:t,height:e})}};var M=class extends Dt{constructor(t,e,r){super(t,t,"",e,r)}forSize(t,e){let{score:r,relativeBox:n,imageDims:a}=super.forSize(t,e);return new M(r,n,a)}};function Lr(o,t,e=!0){let r=Math.max(0,Math.min(o.right,t.right)-Math.max(o.left,t.left)),n=Math.max(0,Math.min(o.bottom,t.bottom)-Math.max(o.top,t.top)),a=r*n;return e?a/(o.area+t.area-a):a/Math.min(o.area,t.area)}function kr(o){let t=o.map(i=>i.x),e=o.map(i=>i.y),r=t.reduce((i,c)=>ccii({score:s,boxIndex:i})).sort((s,i)=>s.score-i.score).map(s=>s.boxIndex),a=[];for(;n.length>0;){let s=n.pop();a.push(s);let i=n,c=[];for(let m=0;mc[p]<=e)}return a}var mt=b(g());function ot(o,t){return mt.tidy(()=>{let[e,r,n]=t,a=mt.fill([...o.shape.slice(0,3),1],e,"float32"),s=mt.fill([...o.shape.slice(0,3),1],r,"float32"),i=mt.fill([...o.shape.slice(0,3),1],n,"float32"),c=mt.concat([a,s,i],3);return mt.sub(o,c)})}var Et=b(g());function Ar(o,t=!1){return Et.tidy(()=>{let[e,r]=o.shape.slice(1);if(e===r)return o;let n=Math.abs(e-r),a=Math.round(n*(t?.5:1)),s=e>r?2:1,i=u=>{let f=o.shape.slice();return f[s]=u,Et.fill(f,0,"float32")},c=i(a),m=n-c.shape[s],d=[t&&m?i(m):null,o,c].filter(u=>!!u).map(u=>Et.cast(u,"float32"));return Et.concat(d,s)})}function gn(o){let t=o.slice();for(let e=t.length-1;e>0;e--){let r=Math.floor(Math.random()*(e+1)),n=t[e];t[e]=t[r],t[r]=n}return t}function Ee(o){return 1/(1+Math.exp(-o))}function vn(o){return Math.log(o/(1-o))}var oe=class extends D{constructor(t,e,r,n,a=!1){super({x:t,y:e,width:r,height:n},a)}};var yn=.5,Fn=.43,Tn=.45,V=class{constructor(t,e,r=new x(0,0)){let{width:n,height:a}=e;this._imgDims=new A(n,a),this._shift=r,this._positions=t.map(s=>s.mul(new x(n,a)).add(r))}get shift(){return new x(this._shift.x,this._shift.y)}get imageWidth(){return this._imgDims.width}get imageHeight(){return this._imgDims.height}get positions(){return this._positions}get relativePositions(){return this._positions.map(t=>t.sub(this._shift).div(new x(this.imageWidth,this.imageHeight)))}forSize(t,e){return new this.constructor(this.relativePositions,{width:t,height:e})}shiftBy(t,e){return new this.constructor(this.relativePositions,this._imgDims,new x(t,e))}shiftByPoint(t){return this.shiftBy(t.x,t.y)}align(t,e={}){if(t){let a=t instanceof M?t.box.floor():new D(t);return this.shiftBy(a.x,a.y).align(null,e)}let{useDlibAlignment:r,minBoxPadding:n}={useDlibAlignment:!1,minBoxPadding:.2,...e};return r?this.alignDlib():this.alignMinBbox(n)}alignDlib(){let t=this.getRefPointsForAlignment(),[e,r,n]=t,a=d=>n.sub(d).magnitude(),s=(a(e)+a(r))/2,i=Math.floor(s/Tn),c=Ot(t),m=Math.floor(Math.max(0,c.x-yn*i)),p=Math.floor(Math.max(0,c.y-Fn*i));return new oe(m,p,Math.min(i,this.imageWidth+m),Math.min(i,this.imageHeight+p))}alignMinBbox(t){let e=kr(this.positions);return e.pad(e.width*t,e.height*t)}getRefPointsForAlignment(){throw new Error("getRefPointsForAlignment not implemented by base class")}};var bo=class extends V{getRefPointsForAlignment(){let t=this.positions;return[t[0],t[1],Ot([t[3],t[4]])]}};var ne=class extends V{getJawOutline(){return this.positions.slice(0,17)}getLeftEyeBrow(){return this.positions.slice(17,22)}getRightEyeBrow(){return this.positions.slice(22,27)}getNose(){return this.positions.slice(27,36)}getLeftEye(){return this.positions.slice(36,42)}getRightEye(){return this.positions.slice(42,48)}getMouth(){return this.positions.slice(48,68)}getRefPointsForAlignment(){return[this.getLeftEye(),this.getRightEye(),this.getMouth()].map(Ot)}};var Me=class{constructor(t,e){this._label=t,this._distance=e}get label(){return this._label}get distance(){return this._distance}toString(t=!0){return`${this.label}${t?` (${$t(this.distance)})`:""}`}};var Ce=class extends D{static assertIsValidLabeledBox(t,e){if(D.assertIsValidBox(t,e),!rt(t.label))throw new Error(`${e} - expected property label (${t.label}) to be a number`)}constructor(t,e){super(t);this._label=e}get label(){return this._label}};var xt=class{constructor(t,e){if(typeof t!="string")throw new Error("LabeledFaceDescriptors - constructor expected label to be a string");if(!Array.isArray(e)||e.some(r=>!(r instanceof Float32Array)))throw new Error("LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array");this._label=t,this._descriptors=e}get label(){return this._label}get descriptors(){return this._descriptors}toJSON(){return{label:this.label,descriptors:this.descriptors.map(t=>Array.from(t))}}static fromJSON(t){let e=t.descriptors.map(r=>new Float32Array(r));return new xt(t.label,e)}};var go=class extends Ce{static assertIsValidPredictedBox(t,e){if(Ce.assertIsValidLabeledBox(t,e),!ee(t.score)||!ee(t.classScore))throw new Error(`${e} - expected properties score (${t.score}) and (${t.classScore}) to be a number between [0, 1]`)}constructor(t,e,r,n){super(t,e);this._score=r,this._classScore=n}get score(){return this._score}get classScore(){return this._classScore}};function pt(o){return o.detection instanceof M}function jt(o,t){return{...o,...{detection:t}}}function Wr(){let o=window.fetch;if(!o)throw new Error("fetch - missing fetch implementation for browser environment");let t=()=>{throw new Error("readFile - filesystem not available for browser environment")};return{Canvas:HTMLCanvasElement,CanvasRenderingContext2D,Image:HTMLImageElement,ImageData,Video:HTMLVideoElement,createCanvasElement:()=>document.createElement("canvas"),createImageElement:()=>document.createElement("img"),fetch:o,readFile:t}}function Ue(o){let t="";if(!o)try{o=require("fs")}catch(r){t=r.toString()}return{readFile:o?r=>new Promise((n,a)=>{o.readFile(r,(s,i)=>s?a(s):n(i))}):()=>{throw new Error(`readFile - failed to require fs in nodejs environment with error: ${t}`)}}}function Br(){let o=global.Canvas||global.HTMLCanvasElement,t=global.Image||global.HTMLImageElement,e=()=>{if(o)return new o;throw new Error("createCanvasElement - missing Canvas implementation for nodejs environment")},r=()=>{if(t)return new t;throw new Error("createImageElement - missing Image implementation for nodejs environment")},n=global.fetch,a=Ue();return{Canvas:o||class{},CanvasRenderingContext2D:global.CanvasRenderingContext2D||class{},Image:t||class{},ImageData:global.ImageData||class{},Video:global.HTMLVideoElement||class{},createCanvasElement:e,createImageElement:r,fetch:n,...a}}function Rr(){return typeof window=="object"&&typeof document!="undefined"&&typeof HTMLImageElement!="undefined"&&typeof HTMLCanvasElement!="undefined"&&typeof HTMLVideoElement!="undefined"&&typeof ImageData!="undefined"&&typeof CanvasRenderingContext2D!="undefined"}var $r=b(yo()),k;function wn(){if(!k)throw new Error("getEnv - environment is not defined, check isNodejs() and isBrowser()");return k}function Or(o){k=o}function jr(){return Rr()?Or(Wr()):$r.isNodejs()?Or(Br()):null}function Dn(o){if(k||jr(),!k)throw new Error("monkeyPatch - environment is not defined, check isNodejs() and isBrowser()");let{Canvas:t=k.Canvas,Image:e=k.Image}=o;k.Canvas=t,k.Image=e,k.createCanvasElement=o.createCanvasElement||(()=>new t),k.createImageElement=o.createImageElement||(()=>new e),k.ImageData=o.ImageData||k.ImageData,k.Video=o.Video||k.Video,k.fetch=o.fetch||k.fetch,k.readFile=o.readFile||k.readFile}var w={getEnv:wn,setEnv:Or,initialize:jr,createBrowserEnv:Wr,createFileSystem:Ue,createNodejsEnv:Br,monkeyPatch:Dn,isBrowser:Rr,isNodejs:$r.isNodejs};jr();function Ht(o){return!w.isNodejs()&&typeof o=="string"?document.getElementById(o):o}function $(o){let{Canvas:t,CanvasRenderingContext2D:e}=w.getEnv();if(o instanceof e)return o;let r=Ht(o);if(!(r instanceof t))throw new Error("resolveContext2d - expected canvas to be of instance of Canvas");let n=r.getContext("2d");if(!n)throw new Error("resolveContext2d - canvas 2d context is null");return n}var dt;(function(o){o.TOP_LEFT="TOP_LEFT",o.TOP_RIGHT="TOP_RIGHT",o.BOTTOM_LEFT="BOTTOM_LEFT",o.BOTTOM_RIGHT="BOTTOM_RIGHT"})(dt||(dt={}));var Ne=class{constructor(t={}){let{anchorPosition:e,backgroundColor:r,fontColor:n,fontSize:a,fontStyle:s,padding:i}=t;this.anchorPosition=e||dt.TOP_LEFT,this.backgroundColor=r||"rgba(0, 0, 0, 0.5)",this.fontColor=n||"rgba(255, 255, 255, 1)",this.fontSize=a||14,this.fontStyle=s||"Georgia",this.padding=i||4}},Mt=class{constructor(t,e,r={}){this.text=typeof t=="string"?[t]:t instanceof Mt?t.text:t,this.anchor=e,this.options=new Ne(r)}measureWidth(t){let{padding:e}=this.options;return this.text.map(r=>t.measureText(r).width).reduce((r,n)=>r{let v=c+d.x,_=c+d.y+(f+1)*s;r.fillText(u,v,_)})}};var Hr=class{constructor(t={}){let{boxColor:e,lineWidth:r,label:n,drawLabelOptions:a}=t;this.boxColor=e||"rgba(0, 0, 255, 1)",this.lineWidth=r||2,this.label=n;let s={anchorPosition:dt.BOTTOM_LEFT,backgroundColor:this.boxColor};this.drawLabelOptions=new Ne({...s,...a})}},Xe=class{constructor(t,e={}){this.box=new D(t),this.options=new Hr(e)}draw(t){let e=$(t),{boxColor:r,lineWidth:n}=this.options,{x:a,y:s,width:i,height:c}=this.box;e.strokeStyle=r,e.lineWidth=n,e.strokeRect(a,s,i,c);let{label:m}=this.options;m&&new Mt([m],{x:a-n/2,y:s},this.options.drawLabelOptions).draw(t)}};function En(o,t){(Array.isArray(t)?t:[t]).forEach(r=>{let n=r instanceof M?r.score:pt(r)?r.detection.score:void 0,a=r instanceof M?r.box:pt(r)?r.detection.box:new D(r),s=n?`${$t(n)}`:void 0;new Xe(a,{label:s}).draw(o)})}var fe=b(g());function Ie(o){let{Image:t,Video:e}=w.getEnv();return o instanceof t&&o.complete||o instanceof e&&o.readyState>=3}function Yr(o){return new Promise((t,e)=>{if(o instanceof w.getEnv().Canvas||Ie(o))return t(null);function r(a){!a.currentTarget||(a.currentTarget.removeEventListener("load",n),a.currentTarget.removeEventListener("error",r),e(a))}function n(a){!a.currentTarget||(a.currentTarget.removeEventListener("load",n),a.currentTarget.removeEventListener("error",r),t(a))}o.addEventListener("load",n),o.addEventListener("error",r)})}function Gr(o){return new Promise((t,e)=>{o instanceof Blob||e(new Error("bufferToImage - expected buf to be of type: Blob"));let r=new FileReader;r.onload=()=>{typeof r.result!="string"&&e(new Error("bufferToImage - expected reader.result to be a string, in onload"));let n=w.getEnv().createImageElement();n.onload=()=>t(n),n.onerror=e,n.src=r.result},r.onerror=e,r.readAsDataURL(o)})}function Yt(o){let{Image:t,Video:e}=w.getEnv();return o instanceof t?new A(o.naturalWidth,o.naturalHeight):o instanceof e?new A(o.videoWidth,o.videoHeight):new A(o.width,o.height)}function ae({width:o,height:t}){let{createCanvasElement:e}=w.getEnv(),r=e();return r.width=o,r.height=t,r}function Le(o,t){let{ImageData:e}=w.getEnv();if(!(o instanceof e)&&!Ie(o))throw new Error("createCanvasFromMedia - media has not finished loading yet");let{width:r,height:n}=t||Yt(o),a=ae({width:r,height:n});return o instanceof e?$(a).putImageData(o,0,0):$(a).drawImage(o,0,0,r,n),a}var Je=b(g());async function zr(o,t){let e=t||w.getEnv().createCanvasElement(),[r,n,a]=o.shape.slice(z(o)?1:0),s=Je.tidy(()=>o.as3D(r,n,a).toInt());return await Je.browser.toPixels(s,e),s.dispose(),e}function qe(o){let{Image:t,Canvas:e,Video:r}=w.getEnv();return o instanceof t||o instanceof e||o instanceof r}var J=b(g());function Vr(o,t,e=!1){let{Image:r,Canvas:n}=w.getEnv();if(!(o instanceof r||o instanceof n))throw new Error("imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement");let a=Yt(o),s=t/Math.max(a.height,a.width),i=s*a.width,c=s*a.height,m=ae({width:t,height:t}),p=o instanceof n?o:Le(o),d=Math.abs(i-c)/2,u=e&&i{if(ht(r)){this._imageTensors[n]=r,this._inputDimensions[n]=r.shape;return}if(z(r)){let s=r.shape[0];if(s!==1)throw new Error(`NetInput - tf.Tensor4D with batchSize ${s} passed, but not supported in input array`);this._imageTensors[n]=r,this._inputDimensions[n]=r.shape.slice(1);return}let a=r instanceof w.getEnv().Canvas?r:Le(r);this._canvases[n]=a,this._inputDimensions[n]=[a.height,a.width,3]})}get imageTensors(){return this._imageTensors}get canvases(){return this._canvases}get isBatchInput(){return this.batchSize>1||this._treatAsBatchInput}get batchSize(){return this._batchSize}get inputDimensions(){return this._inputDimensions}get inputSize(){return this._inputSize}get reshapedInputDimensions(){return ct(this.batchSize,0,1).map((t,e)=>this.getReshapedInputDimensions(e))}getInput(t){return this.canvases[t]||this.imageTensors[t]}getInputDimensions(t){return this._inputDimensions[t]}getInputHeight(t){return this._inputDimensions[t][0]}getInputWidth(t){return this._inputDimensions[t][1]}getReshapedInputDimensions(t){if(typeof this.inputSize!="number")throw new Error("getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet");let e=this.getInputWidth(t),r=this.getInputHeight(t);return Ir({width:e,height:r},this.inputSize)}toBatchTensor(t,e=!0){return this._inputSize=t,J.tidy(()=>{let r=ct(this.batchSize,0,1).map(a=>{let s=this.getInput(a);if(s instanceof J.Tensor){let i=z(s)?s:s.expandDims();return i=Ar(i,e),(i.shape[1]!==t||i.shape[2]!==t)&&(i=J.image.resizeBilinear(i,[t,t])),i.as3D(t,t,3)}if(s instanceof w.getEnv().Canvas)return J.browser.fromPixels(Vr(s,t,e));throw new Error(`toBatchTensor - at batchIdx ${a}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${s}`)});return J.stack(r.map(a=>J.cast(a,"float32"))).as4D(this.batchSize,t,t,3)})}};async function E(o){if(o instanceof bt)return o;let t=Array.isArray(o)?o:[o];if(!t.length)throw new Error("toNetInput - empty array passed as input");let e=n=>Array.isArray(o)?` at input index ${n}:`:"",r=t.map(Ht);return r.forEach((n,a)=>{if(!qe(n)&&!ht(n)&&!z(n))throw typeof t[a]=="string"?new Error(`toNetInput -${e(a)} string passed, but could not resolve HTMLElement for element id ${t[a]}`):new Error(`toNetInput -${e(a)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`);if(z(n)){let s=n.shape[0];if(s!==1)throw new Error(`toNetInput -${e(a)} tf.Tensor4D with batchSize ${s} passed, but not supported in input array`)}}),await Promise.all(r.map(n=>qe(n)&&Yr(n))),new bt(r,Array.isArray(o))}async function se(o,t){let{Canvas:e}=w.getEnv(),r=o;if(!(o instanceof e)){let s=await E(o);if(s.batchSize>1)throw new Error("extractFaces - batchSize > 1 not supported");let i=s.getInput(0);r=i instanceof e?i:await zr(i)}let n=$(r);return t.map(s=>s instanceof M?s.forSize(r.width,r.height).box.floor():s).map(s=>s.clipAtImageBorders(r.width,r.height)).map(({x:s,y:i,width:c,height:m})=>{let p=ae({width:c,height:m});return $(p).putImageData(n.getImageData(s,i,c,m),0,0),p})}var Ze=b(g());async function ie(o,t){if(!ht(o)&&!z(o))throw new Error("extractFaceTensors - expected image tensor to be 3D or 4D");if(z(o)&&o.shape[0]>1)throw new Error("extractFaceTensors - batchSize > 1 not supported");return Ze.tidy(()=>{let[e,r,n]=o.shape.slice(z(o)?1:0);return t.map(i=>i instanceof M?i.forSize(r,e).box:i).map(i=>i.clipAtImageBorders(r,e)).map(({x:i,y:c,width:m,height:p})=>Ze.slice3d(o.as3D(e,r,n),[c,i,0],[p,m,n]))})}async function Gt(o,t){let{fetch:e}=w.getEnv(),r=await e(o,t);if(!(r.status<400))throw new Error(`failed to fetch: (${r.status}) ${r.statusText}, from url: ${r.url}`);return r}async function Mn(o){let t=await Gt(o),e=await t.blob();if(!e.type.startsWith("image/"))throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${e.type}, for url: ${t.url}`);return Gr(e)}async function Ur(o){return(await Gt(o)).json()}async function Cn(o){return new Float32Array(await(await Gt(o)).arrayBuffer())}var Fo=b(g());function Ke(o,t){let e=`${t}-weights_manifest.json`;if(!o)return{modelBaseUri:"",manifestUri:e};if(o==="/")return{modelBaseUri:"/",manifestUri:`/${e}`};let r=o.startsWith("http://")?"http://":o.startsWith("https://")?"https://":"";o=o.replace(r,"");let n=o.split("/").filter(i=>i),a=o.endsWith(".json")?n[n.length-1]:e,s=r+(o.endsWith(".json")?n.slice(0,n.length-1):n).join("/");return s=o.startsWith("/")?`/${s}`:s,{modelBaseUri:s,manifestUri:s==="/"?`/${a}`:`${s}/${a}`}}async function Xr(o,t){let{manifestUri:e,modelBaseUri:r}=Ke(o,t),n=await Ur(e);return Fo.io.loadWeights(n,r)}function Nn(o,t,e=!1){let{width:r,height:n}=e?Yt(t):t;return o.width=r,o.height=n,{width:r,height:n}}var Nt=b(g());var gt=b(g());var S=class{constructor(){this._params=void 0;this._paramMappings=[]}get params(){return this._params}get paramMappings(){return this._paramMappings}get isLoaded(){return!!this.params}getParamFromPath(t){let{obj:e,objProp:r}=this.traversePropertyPath(t);return e[r]}reassignParamFromPath(t,e){let{obj:r,objProp:n}=this.traversePropertyPath(t);r[n].dispose(),r[n]=e}getParamList(){return this._paramMappings.map(({paramPath:t})=>({path:t,tensor:this.getParamFromPath(t)}))}getTrainableParams(){return this.getParamList().filter(t=>t.tensor instanceof gt.Variable)}getFrozenParams(){return this.getParamList().filter(t=>!(t.tensor instanceof gt.Variable))}variable(){this.getFrozenParams().forEach(({path:t,tensor:e})=>{this.reassignParamFromPath(t,e.variable())})}freeze(){this.getTrainableParams().forEach(({path:t,tensor:e})=>{let r=gt.tensor(e.dataSync());e.dispose(),this.reassignParamFromPath(t,r)})}dispose(t=!0){this.getParamList().forEach(e=>{if(t&&e.tensor.isDisposed)throw new Error(`param tensor has already been disposed for path ${e.path}`);e.tensor.dispose()}),this._params=void 0}serializeParams(){return new Float32Array(this.getParamList().map(({tensor:t})=>Array.from(t.dataSync())).reduce((t,e)=>t.concat(e)))}async load(t){if(t instanceof Float32Array){this.extractWeights(t);return}await this.loadFromUri(t)}async loadFromUri(t){if(t&&typeof t!="string")throw new Error(`${this._name}.loadFromUri - expected model uri`);let e=await Xr(t,this.getDefaultModelName());this.loadFromWeightMap(e)}async loadFromDisk(t){if(t&&typeof t!="string")throw new Error(`${this._name}.loadFromDisk - expected model file path`);let{readFile:e}=w.getEnv(),{manifestUri:r,modelBaseUri:n}=Ke(t,this.getDefaultModelName()),a=m=>Promise.all(m.map(p=>e(p).then(d=>d.buffer))),s=gt.io.weightsLoaderFactory(a),i=JSON.parse((await e(r)).toString()),c=await s(i,n);this.loadFromWeightMap(c)}loadFromWeightMap(t){let{paramMappings:e,params:r}=this.extractParamsFromWeigthMap(t);this._paramMappings=e,this._params=r}extractWeights(t){let{paramMappings:e,params:r}=this.extractParams(t);this._paramMappings=e,this._params=r}traversePropertyPath(t){if(!this.params)throw new Error("traversePropertyPath - model has no loaded params");let e=t.split("/").reduce((a,s)=>{if(!a.nextObj.hasOwnProperty(s))throw new Error(`traversePropertyPath - object does not have property ${s}, for path ${t}`);return{obj:a.nextObj,objProp:s,nextObj:a.nextObj[s]}},{nextObj:this.params}),{obj:r,objProp:n}=e;if(!r||!n||!(r[n]instanceof gt.Tensor))throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${t}`);return{obj:r,objProp:n}}};var C=b(g());var ce=b(g());function O(o,t,e){return ce.tidy(()=>{let r=ce.separableConv2d(o,t.depthwise_filter,t.pointwise_filter,e,"same");return r=ce.add(r,t.bias),r})}function Qe(o,t,e=!1){return C.tidy(()=>{let r=C.relu(e?C.add(C.conv2d(o,t.conv0.filters,[2,2],"same"),t.conv0.bias):O(o,t.conv0,[2,2])),n=O(r,t.conv1,[1,1]),a=C.relu(C.add(r,n)),s=O(a,t.conv2,[1,1]);return C.relu(C.add(r,C.add(n,s)))})}function ke(o,t,e=!1,r=!0){return C.tidy(()=>{let n=C.relu(e?C.add(C.conv2d(o,t.conv0.filters,r?[2,2]:[1,1],"same"),t.conv0.bias):O(o,t.conv0,r?[2,2]:[1,1])),a=O(n,t.conv1,[1,1]),s=C.relu(C.add(n,a)),i=O(s,t.conv2,[1,1]),c=C.relu(C.add(n,C.add(a,i))),m=O(c,t.conv3,[1,1]);return C.relu(C.add(n,C.add(a,C.add(i,m))))})}var Ct=b(g());function zt(o,t,e="same",r=!1){return Ct.tidy(()=>{let n=Ct.add(Ct.conv2d(o,t.filters,[1,1],e),t.bias);return r?Ct.relu(n):n})}function W(o,t){Object.keys(o).forEach(e=>{t.some(r=>r.originalPath===e)||o[e].dispose()})}var tr=b(g());function me(o,t){return(e,r,n,a)=>{let s=tr.tensor4d(o(e*r*n*n),[n,n,e,r]),i=tr.tensor1d(o(r));return t.push({paramPath:`${a}/filters`},{paramPath:`${a}/bias`}),{filters:s,bias:i}}}var er=b(g());function rr(o,t){return(e,r,n)=>{let a=er.tensor2d(o(e*r),[e,r]),s=er.tensor1d(o(r));return t.push({paramPath:`${n}/weights`},{paramPath:`${n}/bias`}),{weights:a,bias:s}}}var Se=b(g());var or=class{constructor(t,e,r){this.depthwise_filter=t;this.pointwise_filter=e;this.bias=r}};function pe(o,t){return(e,r,n)=>{let a=Se.tensor4d(o(3*3*e),[3,3,e,1]),s=Se.tensor4d(o(e*r),[1,1,e,r]),i=Se.tensor1d(o(r));return t.push({paramPath:`${n}/depthwise_filter`},{paramPath:`${n}/pointwise_filter`},{paramPath:`${n}/bias`}),new or(a,s,i)}}function de(o){return t=>{let e=o(`${t}/depthwise_filter`,4),r=o(`${t}/pointwise_filter`,4),n=o(`${t}/bias`,1);return new or(e,r,n)}}function j(o,t){return(e,r,n)=>{let a=o[e];if(!Rt(a,r))throw new Error(`expected weightMap[${e}] to be a Tensor${r}D, instead have ${a}`);return t.push({originalPath:e,paramPath:n||e}),a}}function B(o){let t=o;function e(n){let a=t.slice(0,n);return t=t.slice(n),a}function r(){return t}return{extractWeights:e,getRemainingWeights:r}}function nr(o,t){let e=me(o,t),r=pe(o,t);function n(s,i,c,m=!1){let p=m?e(s,i,3,`${c}/conv0`):r(s,i,`${c}/conv0`),d=r(i,i,`${c}/conv1`),u=r(i,i,`${c}/conv2`);return{conv0:p,conv1:d,conv2:u}}function a(s,i,c,m=!1){let{conv0:p,conv1:d,conv2:u}=n(s,i,c,m),f=r(i,i,`${c}/conv3`);return{conv0:p,conv1:d,conv2:u,conv3:f}}return{extractDenseBlock3Params:n,extractDenseBlock4Params:a}}function To(o){let t=[],{extractWeights:e,getRemainingWeights:r}=B(o),{extractDenseBlock4Params:n}=nr(e,t),a=n(3,32,"dense0",!0),s=n(32,64,"dense1"),i=n(64,128,"dense2"),c=n(128,256,"dense3");if(r().length!==0)throw new Error(`weights remaing after extract: ${r().length}`);return{paramMappings:t,params:{dense0:a,dense1:s,dense2:i,dense3:c}}}function ar(o){return t=>{let e=o(`${t}/filters`,4),r=o(`${t}/bias`,1);return{filters:e,bias:r}}}function sr(o,t){let e=j(o,t),r=ar(e),n=de(e);function a(i,c=!1){let m=c?r(`${i}/conv0`):n(`${i}/conv0`),p=n(`${i}/conv1`),d=n(`${i}/conv2`);return{conv0:m,conv1:p,conv2:d}}function s(i,c=!1){let m=c?r(`${i}/conv0`):n(`${i}/conv0`),p=n(`${i}/conv1`),d=n(`${i}/conv2`),u=n(`${i}/conv3`);return{conv0:m,conv1:p,conv2:d,conv3:u}}return{extractDenseBlock3Params:a,extractDenseBlock4Params:s}}function Po(o){let t=[],{extractDenseBlock4Params:e}=sr(o,t),r={dense0:e("dense0",!0),dense1:e("dense1"),dense2:e("dense2"),dense3:e("dense3")};return W(o,t),{params:r,paramMappings:t}}var Ae=class extends S{constructor(){super("FaceFeatureExtractor")}forwardInput(t){let{params:e}=this;if(!e)throw new Error("FaceFeatureExtractor - load model before inference");return Nt.tidy(()=>{let r=Nt.cast(t.toBatchTensor(112,!0),"float32"),a=ot(r,[122.782,117.001,104.298]).div(Nt.scalar(255)),s=ke(a,e.dense0,!0);return s=ke(s,e.dense1),s=ke(s,e.dense2),s=ke(s,e.dense3),s=Nt.avgPool(s,[7,7],[2,2],"valid"),s})}async forward(t){return this.forwardInput(await E(t))}getDefaultModelName(){return"face_feature_extractor_model"}extractParamsFromWeigthMap(t){return Po(t)}extractParams(t){return To(t)}};var Do=b(g());var ue=b(g());function We(o,t){return ue.tidy(()=>ue.add(ue.matMul(o,t.weights),t.bias))}function _o(o,t,e){let r=[],{extractWeights:n,getRemainingWeights:a}=B(o),i=rr(n,r)(t,e,"fc");if(a().length!==0)throw new Error(`weights remaing after extract: ${a().length}`);return{paramMappings:r,params:{fc:i}}}function wo(o){let t=[],e=j(o,t);function r(a){let s=e(`${a}/weights`,2),i=e(`${a}/bias`,1);return{weights:s,bias:i}}let n={fc:r("fc")};return W(o,t),{params:n,paramMappings:t}}function ir(o){let t={},e={};return Object.keys(o).forEach(r=>{let n=r.startsWith("fc")?e:t;n[r]=o[r]}),{featureExtractorMap:t,classifierMap:e}}var Be=class extends S{constructor(t,e){super(t);this._faceFeatureExtractor=e}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(t){let{params:e}=this;if(!e)throw new Error(`${this._name} - load model before inference`);return Do.tidy(()=>{let r=t instanceof bt?this.faceFeatureExtractor.forwardInput(t):t;return We(r.as2D(r.shape[0],-1),e.fc)})}dispose(t=!0){this.faceFeatureExtractor.dispose(t),super.dispose(t)}loadClassifierParams(t){let{params:e,paramMappings:r}=this.extractClassifierParams(t);this._params=e,this._paramMappings=r}extractClassifierParams(t){return _o(t,this.getClassifierChannelsIn(),this.getClassifierChannelsOut())}extractParamsFromWeigthMap(t){let{featureExtractorMap:e,classifierMap:r}=ir(t);return this.faceFeatureExtractor.loadFromWeightMap(e),wo(r)}extractParams(t){let e=this.getClassifierChannelsIn(),r=this.getClassifierChannelsOut(),n=r*e+r,a=t.slice(0,t.length-n),s=t.slice(t.length-n);return this.faceFeatureExtractor.extractWeights(a),this.extractClassifierParams(s)}};var Jr=["neutral","happy","sad","angry","fearful","disgusted","surprised"],It=class{constructor(t){if(t.length!==7)throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${t.length}`);Jr.forEach((e,r)=>{this[e]=t[r]})}asSortedArray(){return Jr.map(t=>({expression:t,probability:this[t]})).sort((t,e)=>e.probability-t.probability)}};var cr=class extends Be{constructor(t=new Ae){super("FaceExpressionNet",t)}forwardInput(t){return fe.tidy(()=>fe.softmax(this.runNet(t)))}async forward(t){return this.forwardInput(await E(t))}async predictExpressions(t){let e=await E(t),r=await this.forwardInput(e),n=await Promise.all(fe.unstack(r).map(async s=>{let i=await s.data();return s.dispose(),i}));r.dispose();let a=n.map(s=>new It(s));return e.isBatchInput?a:a[0]}getDefaultModelName(){return"face_expression_model"}getClassifierChannelsIn(){return 256}getClassifierChannelsOut(){return 7}};function qr(o){return o.expressions instanceof It}function mr(o,t){return{...o,...{expressions:t}}}function In(o,t,e=.1,r){(Array.isArray(t)?t:[t]).forEach(a=>{let s=a instanceof It?a:qr(a)?a.expressions:void 0;if(!s)throw new Error("drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof");let c=s.asSortedArray().filter(d=>d.probability>e),m=pt(a)?a.detection.box.bottomLeft:r||new x(0,0);new Mt(c.map(d=>`${d.expression} (${$t(d.probability)})`),m).draw(o)})}function Vt(o){return pt(o)&&o.landmarks instanceof V&&o.unshiftedLandmarks instanceof V&&o.alignedRect instanceof M}function le(o,t){let{box:e}=o.detection,r=t.shiftBy(e.x,e.y),n=r.align(),{imageDims:a}=o.detection,s=new M(o.detection.score,n.rescale(a.reverse()),a);return{...o,...{landmarks:r,unshiftedLandmarks:t,alignedRect:s}}}var Zr=class{constructor(t={}){let{drawLines:e=!0,drawPoints:r=!0,lineWidth:n,lineColor:a,pointSize:s,pointColor:i}=t;this.drawLines=e,this.drawPoints=r,this.lineWidth=n||1,this.pointSize=s||2,this.lineColor=a||"rgba(0, 255, 255, 1)",this.pointColor=i||"rgba(255, 0, 255, 1)"}},Kr=class{constructor(t,e={}){this.faceLandmarks=t,this.options=new Zr(e)}draw(t){let e=$(t),{drawLines:r,drawPoints:n,lineWidth:a,lineColor:s,pointSize:i,pointColor:c}=this.options;if(r&&this.faceLandmarks instanceof ne&&(e.strokeStyle=s,e.lineWidth=a,lt(e,this.faceLandmarks.getJawOutline()),lt(e,this.faceLandmarks.getLeftEyeBrow()),lt(e,this.faceLandmarks.getRightEyeBrow()),lt(e,this.faceLandmarks.getNose()),lt(e,this.faceLandmarks.getLeftEye(),!0),lt(e,this.faceLandmarks.getRightEye(),!0),lt(e,this.faceLandmarks.getMouth(),!0)),n){e.strokeStyle=c,e.fillStyle=c;let m=p=>{e.beginPath(),e.arc(p.x,p.y,i,0,2*Math.PI),e.fill()};this.faceLandmarks.positions.forEach(m)}}};function Ln(o,t){(Array.isArray(t)?t:[t]).forEach(r=>{let n=r instanceof V?r:Vt(r)?r.landmarks:void 0;if(!n)throw new Error("drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof");new Kr(n).draw(o)})}var Eo="0.11.2";var ut=b(g());var I=b(g());function kn(o,t){let e=me(o,t),r=pe(o,t);function n(s,i,c){let m=r(s,i,`${c}/separable_conv0`),p=r(i,i,`${c}/separable_conv1`),d=e(s,i,1,`${c}/expansion_conv`);return{separable_conv0:m,separable_conv1:p,expansion_conv:d}}function a(s,i){let c=r(s,s,`${i}/separable_conv0`),m=r(s,s,`${i}/separable_conv1`),p=r(s,s,`${i}/separable_conv2`);return{separable_conv0:c,separable_conv1:m,separable_conv2:p}}return{extractConvParams:e,extractSeparableConvParams:r,extractReductionBlockParams:n,extractMainBlockParams:a}}function Mo(o,t){let e=[],{extractWeights:r,getRemainingWeights:n}=B(o),{extractConvParams:a,extractSeparableConvParams:s,extractReductionBlockParams:i,extractMainBlockParams:c}=kn(r,e),m=a(3,32,3,"entry_flow/conv_in"),p=i(32,64,"entry_flow/reduction_block_0"),d=i(64,128,"entry_flow/reduction_block_1"),u={conv_in:m,reduction_block_0:p,reduction_block_1:d},f={};ct(t,0,1).forEach(y=>{f[`main_block_${y}`]=c(128,`middle_flow/main_block_${y}`)});let v=i(128,256,"exit_flow/reduction_block"),_=s(256,512,"exit_flow/separable_conv"),h={reduction_block:v,separable_conv:_};if(n().length!==0)throw new Error(`weights remaing after extract: ${n().length}`);return{paramMappings:e,params:{entry_flow:u,middle_flow:f,exit_flow:h}}}function Sn(o,t){let e=j(o,t),r=ar(e),n=de(e);function a(i){let c=n(`${i}/separable_conv0`),m=n(`${i}/separable_conv1`),p=r(`${i}/expansion_conv`);return{separable_conv0:c,separable_conv1:m,expansion_conv:p}}function s(i){let c=n(`${i}/separable_conv0`),m=n(`${i}/separable_conv1`),p=n(`${i}/separable_conv2`);return{separable_conv0:c,separable_conv1:m,separable_conv2:p}}return{extractConvParams:r,extractSeparableConvParams:n,extractReductionBlockParams:a,extractMainBlockParams:s}}function Co(o,t){let e=[],{extractConvParams:r,extractSeparableConvParams:n,extractReductionBlockParams:a,extractMainBlockParams:s}=Sn(o,e),i=r("entry_flow/conv_in"),c=a("entry_flow/reduction_block_0"),m=a("entry_flow/reduction_block_1"),p={conv_in:i,reduction_block_0:c,reduction_block_1:m},d={};ct(t,0,1).forEach(_=>{d[`main_block_${_}`]=s(`middle_flow/main_block_${_}`)});let u=a("exit_flow/reduction_block"),f=n("exit_flow/separable_conv"),v={reduction_block:u,separable_conv:f};return W(o,e),{params:{entry_flow:p,middle_flow:d,exit_flow:v},paramMappings:e}}function No(o,t,e){return I.add(I.conv2d(o,t.filters,e,"same"),t.bias)}function to(o,t,e=!0){let r=e?I.relu(o):o;return r=O(r,t.separable_conv0,[1,1]),r=O(I.relu(r),t.separable_conv1,[1,1]),r=I.maxPool(r,[3,3],[2,2],"same"),r=I.add(r,No(o,t.expansion_conv,[2,2])),r}function An(o,t){let e=O(I.relu(o),t.separable_conv0,[1,1]);return e=O(I.relu(e),t.separable_conv1,[1,1]),e=O(I.relu(e),t.separable_conv2,[1,1]),e=I.add(e,o),e}var eo=class extends S{constructor(t){super("TinyXception");this._numMainBlocks=t}forwardInput(t){let{params:e}=this;if(!e)throw new Error("TinyXception - load model before inference");return I.tidy(()=>{let r=I.cast(t.toBatchTensor(112,!0),"float32"),a=ot(r,[122.782,117.001,104.298]).div(I.scalar(256)),s=I.relu(No(a,e.entry_flow.conv_in,[2,2]));return s=to(s,e.entry_flow.reduction_block_0,!1),s=to(s,e.entry_flow.reduction_block_1),ct(this._numMainBlocks,0,1).forEach(i=>{s=An(s,e.middle_flow[`main_block_${i}`])}),s=to(s,e.exit_flow.reduction_block),s=I.relu(O(s,e.exit_flow.separable_conv,[1,1])),s})}async forward(t){return this.forwardInput(await E(t))}getDefaultModelName(){return"tiny_xception_model"}extractParamsFromWeigthMap(t){return Co(t,this._numMainBlocks)}extractParams(t){return Mo(t,this._numMainBlocks)}};function Io(o){let t=[],{extractWeights:e,getRemainingWeights:r}=B(o),n=rr(e,t),a=n(512,1,"fc/age"),s=n(512,2,"fc/gender");if(r().length!==0)throw new Error(`weights remaing after extract: ${r().length}`);return{paramMappings:t,params:{fc:{age:a,gender:s}}}}function Lo(o){let t=[],e=j(o,t);function r(a){let s=e(`${a}/weights`,2),i=e(`${a}/bias`,1);return{weights:s,bias:i}}let n={fc:{age:r("fc/age"),gender:r("fc/gender")}};return W(o,t),{params:n,paramMappings:t}}var vt;(function(o){o.FEMALE="female",o.MALE="male"})(vt||(vt={}));var pr=class extends S{constructor(t=new eo(2)){super("AgeGenderNet");this._faceFeatureExtractor=t}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(t){let{params:e}=this;if(!e)throw new Error(`${this._name} - load model before inference`);return ut.tidy(()=>{let r=t instanceof bt?this.faceFeatureExtractor.forwardInput(t):t,n=ut.avgPool(r,[7,7],[2,2],"valid").as2D(r.shape[0],-1),a=We(n,e.fc.age).as1D(),s=We(n,e.fc.gender);return{age:a,gender:s}})}forwardInput(t){return ut.tidy(()=>{let{age:e,gender:r}=this.runNet(t);return{age:e,gender:ut.softmax(r)}})}async forward(t){return this.forwardInput(await E(t))}async predictAgeAndGender(t){let e=await E(t),r=await this.forwardInput(e),n=ut.unstack(r.age),a=ut.unstack(r.gender),s=n.map((c,m)=>({ageTensor:c,genderTensor:a[m]})),i=await Promise.all(s.map(async({ageTensor:c,genderTensor:m})=>{let p=(await c.data())[0],d=(await m.data())[0],u=d>.5,f=u?vt.MALE:vt.FEMALE,v=u?d:1-d;return c.dispose(),m.dispose(),{age:p,gender:f,genderProbability:v}}));return r.age.dispose(),r.gender.dispose(),e.isBatchInput?i:i[0]}getDefaultModelName(){return"age_gender_model"}dispose(t=!0){this.faceFeatureExtractor.dispose(t),super.dispose(t)}loadClassifierParams(t){let{params:e,paramMappings:r}=this.extractClassifierParams(t);this._params=e,this._paramMappings=r}extractClassifierParams(t){return Io(t)}extractParamsFromWeigthMap(t){let{featureExtractorMap:e,classifierMap:r}=ir(t);return this.faceFeatureExtractor.loadFromWeightMap(e),Lo(r)}extractParams(t){let e=512*1+1+(512*2+2),r=t.slice(0,t.length-e),n=t.slice(t.length-e);return this.faceFeatureExtractor.extractWeights(r),this.extractClassifierParams(n)}};var H=b(g());var Re=class extends Be{postProcess(t,e,r){let n=r.map(({width:s,height:i})=>{let c=e/Math.max(i,s);return{width:s*c,height:i*c}}),a=n.length;return H.tidy(()=>{let s=(d,u)=>H.stack([H.fill([68],d,"float32"),H.fill([68],u,"float32")],1).as2D(1,136).as1D(),i=(d,u)=>{let{width:f,height:v}=n[d];return u(f,v)?Math.abs(f-v)/2:0},c=d=>i(d,(u,f)=>ui(d,(u,f)=>fs(c(u),m(u))))).div(H.stack(Array.from(Array(a),(d,u)=>s(n[u].width,n[u].height))))})}forwardInput(t){return H.tidy(()=>{let e=this.runNet(t);return this.postProcess(e,t.inputSize,t.inputDimensions.map(([r,n])=>({height:r,width:n})))})}async forward(t){return this.forwardInput(await E(t))}async detectLandmarks(t){let e=await E(t),r=H.tidy(()=>H.unstack(this.forwardInput(e))),n=await Promise.all(r.map(async(a,s)=>{let i=Array.from(await a.data()),c=i.filter((p,d)=>ze(d)),m=i.filter((p,d)=>!ze(d));return new ne(Array(68).fill(0).map((p,d)=>new x(c[d],m[d])),{height:e.getInputHeight(s),width:e.getInputWidth(s)})}));return r.forEach(a=>a.dispose()),e.isBatchInput?n:n[0]}getClassifierChannelsOut(){return 136}};var he=class extends Re{constructor(t=new Ae){super("FaceLandmark68Net",t)}getDefaultModelName(){return"face_landmark_68_model"}getClassifierChannelsIn(){return 256}};var Lt=b(g());function ko(o){let t=[],{extractDenseBlock3Params:e}=sr(o,t),r={dense0:e("dense0",!0),dense1:e("dense1"),dense2:e("dense2")};return W(o,t),{params:r,paramMappings:t}}function So(o){let t=[],{extractWeights:e,getRemainingWeights:r}=B(o),{extractDenseBlock3Params:n}=nr(e,t),a=n(3,32,"dense0",!0),s=n(32,64,"dense1"),i=n(64,128,"dense2");if(r().length!==0)throw new Error(`weights remaing after extract: ${r().length}`);return{paramMappings:t,params:{dense0:a,dense1:s,dense2:i}}}var ro=class extends S{constructor(){super("TinyFaceFeatureExtractor")}forwardInput(t){let{params:e}=this;if(!e)throw new Error("TinyFaceFeatureExtractor - load model before inference");return Lt.tidy(()=>{let r=Lt.cast(t.toBatchTensor(112,!0),"float32"),a=ot(r,[122.782,117.001,104.298]).div(Lt.scalar(255)),s=Qe(a,e.dense0,!0);return s=Qe(s,e.dense1),s=Qe(s,e.dense2),s=Lt.avgPool(s,[14,14],[2,2],"valid"),s})}async forward(t){return this.forwardInput(await E(t))}getDefaultModelName(){return"face_feature_extractor_tiny_model"}extractParamsFromWeigthMap(t){return ko(t)}extractParams(t){return So(t)}};var dr=class extends Re{constructor(t=new ro){super("FaceLandmark68TinyNet",t)}getDefaultModelName(){return"face_landmark_68_tiny_model"}getClassifierChannelsIn(){return 128}};var Ao=class extends he{};var U=b(g());var xe=b(g());var ur=b(g());function Wo(o,t){return ur.add(ur.mul(o,t.weights),t.biases)}function oo(o,t,e,r,n="same"){let{filters:a,bias:s}=t.conv,i=xe.conv2d(o,a,e,n);return i=xe.add(i,s),i=Wo(i,t.scale),r?xe.relu(i):i}function Bo(o,t){return oo(o,t,[1,1],!0)}function no(o,t){return oo(o,t,[1,1],!1)}function fr(o,t){return oo(o,t,[2,2],!0,"valid")}var Y=b(g());function Wn(o,t){function e(i,c,m){let p=o(i),d=p.length/(c*m*m);if(Nr(d))throw new Error(`depth has to be an integer: ${d}, weights.length: ${p.length}, numFilters: ${c}, filterSize: ${m}`);return Y.tidy(()=>Y.transpose(Y.tensor4d(p,[c,d,m,m]),[2,3,1,0]))}function r(i,c,m,p){let d=e(i,c,m),u=Y.tensor1d(o(c));return t.push({paramPath:`${p}/filters`},{paramPath:`${p}/bias`}),{filters:d,bias:u}}function n(i,c){let m=Y.tensor1d(o(i)),p=Y.tensor1d(o(i));return t.push({paramPath:`${c}/weights`},{paramPath:`${c}/biases`}),{weights:m,biases:p}}function a(i,c,m,p){let d=r(i,c,m,`${p}/conv`),u=n(c,`${p}/scale`);return{conv:d,scale:u}}function s(i,c,m,p,d=!1){let u=a((d?.5:1)*i,c,m,`${p}/conv1`),f=a(i,c,m,`${p}/conv2`);return{conv1:u,conv2:f}}return{extractConvLayerParams:a,extractResidualLayerParams:s}}function Ro(o){let{extractWeights:t,getRemainingWeights:e}=B(o),r=[],{extractConvLayerParams:n,extractResidualLayerParams:a}=Wn(t,r),s=n(4704,32,7,"conv32_down"),i=a(9216,32,3,"conv32_1"),c=a(9216,32,3,"conv32_2"),m=a(9216,32,3,"conv32_3"),p=a(36864,64,3,"conv64_down",!0),d=a(36864,64,3,"conv64_1"),u=a(36864,64,3,"conv64_2"),f=a(36864,64,3,"conv64_3"),v=a(147456,128,3,"conv128_down",!0),_=a(147456,128,3,"conv128_1"),h=a(147456,128,3,"conv128_2"),y=a(589824,256,3,"conv256_down",!0),T=a(589824,256,3,"conv256_1"),F=a(589824,256,3,"conv256_2"),L=a(589824,256,3,"conv256_down_out"),G=Y.tidy(()=>Y.transpose(Y.tensor2d(t(256*128),[128,256]),[1,0]));if(r.push({paramPath:"fc"}),e().length!==0)throw new Error(`weights remaing after extract: ${e().length}`);return{params:{conv32_down:s,conv32_1:i,conv32_2:c,conv32_3:m,conv64_down:p,conv64_1:d,conv64_2:u,conv64_3:f,conv128_down:v,conv128_1:_,conv128_2:h,conv256_down:y,conv256_1:T,conv256_2:F,conv256_down_out:L,fc:G},paramMappings:r}}function Bn(o,t){let e=j(o,t);function r(s){let i=e(`${s}/scale/weights`,1),c=e(`${s}/scale/biases`,1);return{weights:i,biases:c}}function n(s){let i=e(`${s}/conv/filters`,4),c=e(`${s}/conv/bias`,1),m=r(s);return{conv:{filters:i,bias:c},scale:m}}function a(s){return{conv1:n(`${s}/conv1`),conv2:n(`${s}/conv2`)}}return{extractConvLayerParams:n,extractResidualLayerParams:a}}function $o(o){let t=[],{extractConvLayerParams:e,extractResidualLayerParams:r}=Bn(o,t),n=e("conv32_down"),a=r("conv32_1"),s=r("conv32_2"),i=r("conv32_3"),c=r("conv64_down"),m=r("conv64_1"),p=r("conv64_2"),d=r("conv64_3"),u=r("conv128_down"),f=r("conv128_1"),v=r("conv128_2"),_=r("conv256_down"),h=r("conv256_1"),y=r("conv256_2"),T=r("conv256_down_out"),{fc:F}=o;if(t.push({originalPath:"fc",paramPath:"fc"}),!Cr(F))throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${F}`);let L={conv32_down:n,conv32_1:a,conv32_2:s,conv32_3:i,conv64_down:c,conv64_1:m,conv64_2:p,conv64_3:d,conv128_down:u,conv128_1:f,conv128_2:v,conv256_down:_,conv256_1:h,conv256_2:y,conv256_down_out:T,fc:F};return W(o,t),{params:L,paramMappings:t}}var R=b(g());function nt(o,t){let e=Bo(o,t.conv1);return e=no(e,t.conv2),e=R.add(e,o),e=R.relu(e),e}function $e(o,t){let e=fr(o,t.conv1);e=no(e,t.conv2);let r=R.avgPool(o,2,2,"valid"),n=R.zeros(r.shape),a=r.shape[3]!==e.shape[3];if(r.shape[1]!==e.shape[1]||r.shape[2]!==e.shape[2]){let i=[...e.shape];i[1]=1;let c=R.zeros(i);e=R.concat([e,c],1);let m=[...e.shape];m[2]=1;let p=R.zeros(m);e=R.concat([e,p],2)}return r=a?R.concat([r,n],3):r,e=R.add(r,e),e=R.relu(e),e}var be=class extends S{constructor(){super("FaceRecognitionNet")}forwardInput(t){let{params:e}=this;if(!e)throw new Error("FaceRecognitionNet - load model before inference");return U.tidy(()=>{let r=U.cast(t.toBatchTensor(150,!0),"float32"),a=ot(r,[122.782,117.001,104.298]).div(U.scalar(256)),s=fr(a,e.conv32_down);s=U.maxPool(s,3,2,"valid"),s=nt(s,e.conv32_1),s=nt(s,e.conv32_2),s=nt(s,e.conv32_3),s=$e(s,e.conv64_down),s=nt(s,e.conv64_1),s=nt(s,e.conv64_2),s=nt(s,e.conv64_3),s=$e(s,e.conv128_down),s=nt(s,e.conv128_1),s=nt(s,e.conv128_2),s=$e(s,e.conv256_down),s=nt(s,e.conv256_1),s=nt(s,e.conv256_2),s=$e(s,e.conv256_down_out);let i=s.mean([1,2]);return U.matMul(i,e.fc)})}async forward(t){return this.forwardInput(await E(t))}async computeFaceDescriptor(t){let e=await E(t),r=U.tidy(()=>U.unstack(this.forwardInput(e))),n=await Promise.all(r.map(a=>a.data()));return r.forEach(a=>a.dispose()),e.isBatchInput?n:n[0]}getDefaultModelName(){return"face_recognition_model"}extractParamsFromWeigthMap(t){return $o(t)}extractParams(t){return Ro(t)}};function Rn(o){let t=new be;return t.extractWeights(o),t}function lr(o,t){return{...o,...{descriptor:t}}}function $n(o){return typeof o.age=="number"}function hr(o,t){return{...o,...{age:t}}}function On(o){return(o.gender===vt.MALE||o.gender===vt.FEMALE)&&ee(o.genderProbability)}function xr(o,t,e){return{...o,...{gender:t,genderProbability:e}}}var st=b(g());var at=b(g());function jn(o,t){function e(c,m){let p=at.tensor4d(o(3*3*c),[3,3,c,1]),d=at.tensor1d(o(c)),u=at.tensor1d(o(c)),f=at.tensor1d(o(c)),v=at.tensor1d(o(c));return t.push({paramPath:`${m}/filters`},{paramPath:`${m}/batch_norm_scale`},{paramPath:`${m}/batch_norm_offset`},{paramPath:`${m}/batch_norm_mean`},{paramPath:`${m}/batch_norm_variance`}),{filters:p,batch_norm_scale:d,batch_norm_offset:u,batch_norm_mean:f,batch_norm_variance:v}}function r(c,m,p,d,u){let f=at.tensor4d(o(c*m*p*p),[p,p,c,m]),v=at.tensor1d(o(m));return t.push({paramPath:`${d}/filters`},{paramPath:`${d}/${u?"batch_norm_offset":"bias"}`}),{filters:f,bias:v}}function n(c,m,p,d){let{filters:u,bias:f}=r(c,m,p,d,!0);return{filters:u,batch_norm_offset:f}}function a(c,m,p){let d=e(c,`${p}/depthwise_conv`),u=n(c,m,1,`${p}/pointwise_conv`);return{depthwise_conv:d,pointwise_conv:u}}function s(){let c=n(3,32,3,"mobilenetv1/conv_0"),m=a(32,64,"mobilenetv1/conv_1"),p=a(64,128,"mobilenetv1/conv_2"),d=a(128,128,"mobilenetv1/conv_3"),u=a(128,256,"mobilenetv1/conv_4"),f=a(256,256,"mobilenetv1/conv_5"),v=a(256,512,"mobilenetv1/conv_6"),_=a(512,512,"mobilenetv1/conv_7"),h=a(512,512,"mobilenetv1/conv_8"),y=a(512,512,"mobilenetv1/conv_9"),T=a(512,512,"mobilenetv1/conv_10"),F=a(512,512,"mobilenetv1/conv_11"),L=a(512,1024,"mobilenetv1/conv_12"),G=a(1024,1024,"mobilenetv1/conv_13");return{conv_0:c,conv_1:m,conv_2:p,conv_3:d,conv_4:u,conv_5:f,conv_6:v,conv_7:_,conv_8:h,conv_9:y,conv_10:T,conv_11:F,conv_12:L,conv_13:G}}function i(){let c=n(1024,256,1,"prediction_layer/conv_0"),m=n(256,512,3,"prediction_layer/conv_1"),p=n(512,128,1,"prediction_layer/conv_2"),d=n(128,256,3,"prediction_layer/conv_3"),u=n(256,128,1,"prediction_layer/conv_4"),f=n(128,256,3,"prediction_layer/conv_5"),v=n(256,64,1,"prediction_layer/conv_6"),_=n(64,128,3,"prediction_layer/conv_7"),h=r(512,12,1,"prediction_layer/box_predictor_0/box_encoding_predictor"),y=r(512,9,1,"prediction_layer/box_predictor_0/class_predictor"),T=r(1024,24,1,"prediction_layer/box_predictor_1/box_encoding_predictor"),F=r(1024,18,1,"prediction_layer/box_predictor_1/class_predictor"),L=r(512,24,1,"prediction_layer/box_predictor_2/box_encoding_predictor"),G=r(512,18,1,"prediction_layer/box_predictor_2/class_predictor"),et=r(256,24,1,"prediction_layer/box_predictor_3/box_encoding_predictor"),it=r(256,18,1,"prediction_layer/box_predictor_3/class_predictor"),X=r(256,24,1,"prediction_layer/box_predictor_4/box_encoding_predictor"),Pt=r(256,18,1,"prediction_layer/box_predictor_4/class_predictor"),_t=r(128,24,1,"prediction_layer/box_predictor_5/box_encoding_predictor"),wt=r(128,18,1,"prediction_layer/box_predictor_5/class_predictor");return{conv_0:c,conv_1:m,conv_2:p,conv_3:d,conv_4:u,conv_5:f,conv_6:v,conv_7:_,box_predictor_0:{box_encoding_predictor:h,class_predictor:y},box_predictor_1:{box_encoding_predictor:T,class_predictor:F},box_predictor_2:{box_encoding_predictor:L,class_predictor:G},box_predictor_3:{box_encoding_predictor:et,class_predictor:it},box_predictor_4:{box_encoding_predictor:X,class_predictor:Pt},box_predictor_5:{box_encoding_predictor:_t,class_predictor:wt}}}return{extractMobilenetV1Params:s,extractPredictionLayerParams:i}}function Oo(o){let t=[],{extractWeights:e,getRemainingWeights:r}=B(o),{extractMobilenetV1Params:n,extractPredictionLayerParams:a}=jn(e,t),s=n(),i=a(),m={extra_dim:at.tensor3d(e(5118*4),[1,5118,4])};if(t.push({paramPath:"output_layer/extra_dim"}),r().length!==0)throw new Error(`weights remaing after extract: ${r().length}`);return{params:{mobilenetv1:s,prediction_layer:i,output_layer:m},paramMappings:t}}function Hn(o,t){let e=j(o,t);function r(m,p,d){let u=e(`${m}/Conv2d_${p}_pointwise/weights`,4,`${d}/filters`),f=e(`${m}/Conv2d_${p}_pointwise/convolution_bn_offset`,1,`${d}/batch_norm_offset`);return{filters:u,batch_norm_offset:f}}function n(m){let p=`mobilenetv1/conv_${m}`,d=`MobilenetV1/Conv2d_${m}_depthwise`,u=`${p}/depthwise_conv`,f=`${p}/pointwise_conv`,v=e(`${d}/depthwise_weights`,4,`${u}/filters`),_=e(`${d}/BatchNorm/gamma`,1,`${u}/batch_norm_scale`),h=e(`${d}/BatchNorm/beta`,1,`${u}/batch_norm_offset`),y=e(`${d}/BatchNorm/moving_mean`,1,`${u}/batch_norm_mean`),T=e(`${d}/BatchNorm/moving_variance`,1,`${u}/batch_norm_variance`);return{depthwise_conv:{filters:v,batch_norm_scale:_,batch_norm_offset:h,batch_norm_mean:y,batch_norm_variance:T},pointwise_conv:r("MobilenetV1",m,f)}}function a(){return{conv_0:r("MobilenetV1",0,"mobilenetv1/conv_0"),conv_1:n(1),conv_2:n(2),conv_3:n(3),conv_4:n(4),conv_5:n(5),conv_6:n(6),conv_7:n(7),conv_8:n(8),conv_9:n(9),conv_10:n(10),conv_11:n(11),conv_12:n(12),conv_13:n(13)}}function s(m,p){let d=e(`${m}/weights`,4,`${p}/filters`),u=e(`${m}/biases`,1,`${p}/bias`);return{filters:d,bias:u}}function i(m){let p=s(`Prediction/BoxPredictor_${m}/BoxEncodingPredictor`,`prediction_layer/box_predictor_${m}/box_encoding_predictor`),d=s(`Prediction/BoxPredictor_${m}/ClassPredictor`,`prediction_layer/box_predictor_${m}/class_predictor`);return{box_encoding_predictor:p,class_predictor:d}}function c(){return{conv_0:r("Prediction",0,"prediction_layer/conv_0"),conv_1:r("Prediction",1,"prediction_layer/conv_1"),conv_2:r("Prediction",2,"prediction_layer/conv_2"),conv_3:r("Prediction",3,"prediction_layer/conv_3"),conv_4:r("Prediction",4,"prediction_layer/conv_4"),conv_5:r("Prediction",5,"prediction_layer/conv_5"),conv_6:r("Prediction",6,"prediction_layer/conv_6"),conv_7:r("Prediction",7,"prediction_layer/conv_7"),box_predictor_0:i(0),box_predictor_1:i(1),box_predictor_2:i(2),box_predictor_3:i(3),box_predictor_4:i(4),box_predictor_5:i(5)}}return{extractMobilenetV1Params:a,extractPredictionLayerParams:c}}function jo(o){let t=[],{extractMobilenetV1Params:e,extractPredictionLayerParams:r}=Hn(o,t),n=o["Output/extra_dim"];if(t.push({originalPath:"Output/extra_dim",paramPath:"output_layer/extra_dim"}),!ht(n))throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${n}`);let a={mobilenetv1:e(),prediction_layer:r(),output_layer:{extra_dim:n}};return W(o,t),{params:a,paramMappings:t}}var yt=b(g());var kt=b(g());function q(o,t,e){return kt.tidy(()=>{let r=kt.conv2d(o,t.filters,e,"same");return r=kt.add(r,t.batch_norm_offset),kt.clipByValue(r,0,6)})}var Yn=.0010000000474974513;function Gn(o,t,e){return yt.tidy(()=>{let r=yt.depthwiseConv2d(o,t.filters,e,"same");return r=yt.batchNorm(r,t.batch_norm_mean,t.batch_norm_variance,t.batch_norm_offset,t.batch_norm_scale,Yn),yt.clipByValue(r,0,6)})}function zn(o){return[2,4,6,12].some(t=>t===o)?[2,2]:[1,1]}function Ho(o,t){return yt.tidy(()=>{let e,r=q(o,t.conv_0,[2,2]);if([t.conv_1,t.conv_2,t.conv_3,t.conv_4,t.conv_5,t.conv_6,t.conv_7,t.conv_8,t.conv_9,t.conv_10,t.conv_11,t.conv_12,t.conv_13].forEach((a,s)=>{let i=s+1,c=zn(i);r=Gn(r,a.depthwise_conv,c),r=q(r,a.pointwise_conv,[1,1]),i===11&&(e=r)}),e===null)throw new Error("mobileNetV1 - output of conv layer 11 is null");return{out:r,conv11:e}})}function Vn(o,t,e){let r=o.arraySync(),n=Math.min(r[t][0],r[t][2]),a=Math.min(r[t][1],r[t][3]),s=Math.max(r[t][0],r[t][2]),i=Math.max(r[t][1],r[t][3]),c=Math.min(r[e][0],r[e][2]),m=Math.min(r[e][1],r[e][3]),p=Math.max(r[e][0],r[e][2]),d=Math.max(r[e][1],r[e][3]),u=(s-n)*(i-a),f=(p-c)*(d-m);if(u<=0||f<=0)return 0;let v=Math.max(n,c),_=Math.max(a,m),h=Math.min(s,p),y=Math.min(i,d),T=Math.max(h-v,0)*Math.max(y-_,0);return T/(u+f-T)}function Yo(o,t,e,r,n){let a=o.shape[0],s=Math.min(e,a),i=t.map((p,d)=>({score:p,boxIndex:d})).filter(p=>p.score>n).sort((p,d)=>d.score-p.score),c=p=>p<=r?1:0,m=[];return i.forEach(p=>{if(m.length>=s)return;let d=p.score;for(let u=m.length-1;u>=0;--u){let f=Vn(o,p.boxIndex,m[u]);if(f!==0&&(p.score*=c(f),p.score<=n))break}d===p.score&&m.push(p.boxIndex)}),m}var l=b(g());function Un(o){let t=l.unstack(l.transpose(o,[1,0])),e=[l.sub(t[2],t[0]),l.sub(t[3],t[1])],r=[l.add(t[0],l.div(e[0],l.scalar(2))),l.add(t[1],l.div(e[1],l.scalar(2)))];return{sizes:e,centers:r}}function Xn(o,t){let{sizes:e,centers:r}=Un(o),n=l.unstack(l.transpose(t,[1,0])),a=l.div(l.mul(l.exp(l.div(n[2],l.scalar(5))),e[0]),l.scalar(2)),s=l.add(l.mul(l.div(n[0],l.scalar(10)),e[0]),r[0]),i=l.div(l.mul(l.exp(l.div(n[3],l.scalar(5))),e[1]),l.scalar(2)),c=l.add(l.mul(l.div(n[1],l.scalar(10)),e[1]),r[1]);return l.transpose(l.stack([l.sub(s,a),l.sub(c,i),l.add(s,a),l.add(c,i)]),[1,0])}function Go(o,t,e){return l.tidy(()=>{let r=o.shape[0],n=Xn(l.reshape(l.tile(e.extra_dim,[r,1,1]),[-1,4]),l.reshape(o,[-1,4]));n=l.reshape(n,[r,n.shape[0]/r,4]);let a=l.sigmoid(l.slice(t,[0,0,1],[-1,-1,-1])),s=l.slice(a,[0,0,0],[-1,-1,1]);s=l.reshape(s,[r,s.shape[1]]);let i=l.unstack(n),c=l.unstack(s);return{boxes:i,scores:c}})}var je=b(g());var Oe=b(g());function Ut(o,t){return Oe.tidy(()=>{let e=o.shape[0],r=Oe.reshape(zt(o,t.box_encoding_predictor),[e,-1,1,4]),n=Oe.reshape(zt(o,t.class_predictor),[e,-1,3]);return{boxPredictionEncoding:r,classPrediction:n}})}function zo(o,t,e){return je.tidy(()=>{let r=q(o,e.conv_0,[1,1]),n=q(r,e.conv_1,[2,2]),a=q(n,e.conv_2,[1,1]),s=q(a,e.conv_3,[2,2]),i=q(s,e.conv_4,[1,1]),c=q(i,e.conv_5,[2,2]),m=q(c,e.conv_6,[1,1]),p=q(m,e.conv_7,[2,2]),d=Ut(t,e.box_predictor_0),u=Ut(o,e.box_predictor_1),f=Ut(n,e.box_predictor_2),v=Ut(s,e.box_predictor_3),_=Ut(c,e.box_predictor_4),h=Ut(p,e.box_predictor_5),y=je.concat([d.boxPredictionEncoding,u.boxPredictionEncoding,f.boxPredictionEncoding,v.boxPredictionEncoding,_.boxPredictionEncoding,h.boxPredictionEncoding],1),T=je.concat([d.classPrediction,u.classPrediction,f.classPrediction,v.classPrediction,_.classPrediction,h.classPrediction],1);return{boxPredictions:y,classPredictions:T}})}var Z=class{constructor({minConfidence:t,maxResults:e}={}){this._name="SsdMobilenetv1Options";if(this._minConfidence=t||.5,this._maxResults=e||100,typeof this._minConfidence!="number"||this._minConfidence<=0||this._minConfidence>=1)throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`);if(typeof this._maxResults!="number")throw new Error(`${this._name} - expected maxResults to be a number`)}get minConfidence(){return this._minConfidence}get maxResults(){return this._maxResults}};var Xt=class extends S{constructor(){super("SsdMobilenetv1")}forwardInput(t){let{params:e}=this;if(!e)throw new Error("SsdMobilenetv1 - load model before inference");return st.tidy(()=>{let r=st.cast(t.toBatchTensor(512,!1),"float32"),n=st.sub(st.mul(r,st.scalar(.007843137718737125)),st.scalar(1)),a=Ho(n,e.mobilenetv1),{boxPredictions:s,classPredictions:i}=zo(a.out,a.conv11,e.prediction_layer);return Go(s,i,e.output_layer)})}async forward(t){return this.forwardInput(await E(t))}async locateFaces(t,e={}){let{maxResults:r,minConfidence:n}=new Z(e),a=await E(t),{boxes:s,scores:i}=this.forwardInput(a),c=s[0],m=i[0];for(let F=1;F{let[L,G]=[Math.max(0,y[F][0]),Math.min(1,y[F][2])].map(X=>X*h),[et,it]=[Math.max(0,y[F][1]),Math.min(1,y[F][3])].map(X=>X*_);return new M(p[F],new oe(et,L,it-et,G-L),{height:a.getInputHeight(0),width:a.getInputWidth(0)})});return c.dispose(),m.dispose(),T}getDefaultModelName(){return"ssd_mobilenetv1_model"}extractParamsFromWeigthMap(t){return jo(t)}extractParams(t){return Oo(t)}};function Vo(o){let t=new Xt;return t.extractWeights(o),t}function Jn(o){return Vo(o)}var Uo=class extends Xt{};var Xo=.4,Jo=[new x(.738768,.874946),new x(2.42204,2.65704),new x(4.30971,7.04493),new x(10.246,4.59428),new x(12.6868,11.8741)],qo=[new x(1.603231,2.094468),new x(6.041143,7.080126),new x(2.882459,3.518061),new x(4.266906,5.178857),new x(9.041765,10.66308)],Zo=[117.001,114.697,97.404],Ko="tiny_yolov2_model",Qo="tiny_yolov2_separable_conv_model";var N=b(g());var br=o=>typeof o=="number";function ao(o){if(!o)throw new Error(`invalid config: ${o}`);if(typeof o.withSeparableConvs!="boolean")throw new Error(`config.withSeparableConvs has to be a boolean, have: ${o.withSeparableConvs}`);if(!br(o.iouThreshold)||o.iouThreshold<0||o.iouThreshold>1)throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${o.iouThreshold}`);if(!Array.isArray(o.classes)||!o.classes.length||!o.classes.every(t=>typeof t=="string"))throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(o.classes)}`);if(!Array.isArray(o.anchors)||!o.anchors.length||!o.anchors.map(t=>t||{}).every(t=>br(t.x)&&br(t.y)))throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(o.anchors)}`);if(o.meanRgb&&(!Array.isArray(o.meanRgb)||o.meanRgb.length!==3||!o.meanRgb.every(br)))throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(o.meanRgb)}`)}var Q=b(g());var K=b(g());function ge(o){return K.tidy(()=>{let t=K.mul(o,K.scalar(.10000000149011612));return K.add(K.relu(K.sub(o,t)),t)})}function Ft(o,t){return Q.tidy(()=>{let e=Q.pad(o,[[0,0],[1,1],[1,1],[0,0]]);return e=Q.conv2d(e,t.conv.filters,[1,1],"valid"),e=Q.sub(e,t.bn.sub),e=Q.mul(e,t.bn.truediv),e=Q.add(e,t.conv.bias),ge(e)})}var St=b(g());function Tt(o,t){return St.tidy(()=>{let e=St.pad(o,[[0,0],[1,1],[1,1],[0,0]]);return e=St.separableConv2d(e,t.depthwise_filter,t.pointwise_filter,[1,1],"valid"),e=St.add(e,t.bias),ge(e)})}var so=b(g());function qn(o,t){let e=me(o,t);function r(s,i){let c=so.tensor1d(o(s)),m=so.tensor1d(o(s));return t.push({paramPath:`${i}/sub`},{paramPath:`${i}/truediv`}),{sub:c,truediv:m}}function n(s,i,c){let m=e(s,i,3,`${c}/conv`),p=r(i,`${c}/bn`);return{conv:m,bn:p}}let a=pe(o,t);return{extractConvParams:e,extractConvWithBatchNormParams:n,extractSeparableConvParams:a}}function tn(o,t,e,r){let{extractWeights:n,getRemainingWeights:a}=B(o),s=[],{extractConvParams:i,extractConvWithBatchNormParams:c,extractSeparableConvParams:m}=qn(n,s),p;if(t.withSeparableConvs){let[d,u,f,v,_,h,y,T,F]=r,L=t.isFirstLayerConv2d?i(d,u,3,"conv0"):m(d,u,"conv0"),G=m(u,f,"conv1"),et=m(f,v,"conv2"),it=m(v,_,"conv3"),X=m(_,h,"conv4"),Pt=m(h,y,"conv5"),_t=T?m(y,T,"conv6"):void 0,wt=F?m(T,F,"conv7"):void 0,te=i(F||T||y,5*e,1,"conv8");p={conv0:L,conv1:G,conv2:et,conv3:it,conv4:X,conv5:Pt,conv6:_t,conv7:wt,conv8:te}}else{let[d,u,f,v,_,h,y,T,F]=r,L=c(d,u,"conv0"),G=c(u,f,"conv1"),et=c(f,v,"conv2"),it=c(v,_,"conv3"),X=c(_,h,"conv4"),Pt=c(h,y,"conv5"),_t=c(y,T,"conv6"),wt=c(T,F,"conv7"),te=i(F,5*e,1,"conv8");p={conv0:L,conv1:G,conv2:et,conv3:it,conv4:X,conv5:Pt,conv6:_t,conv7:wt,conv8:te}}if(a().length!==0)throw new Error(`weights remaing after extract: ${a().length}`);return{params:p,paramMappings:s}}function Zn(o,t){let e=j(o,t);function r(i){let c=e(`${i}/sub`,1),m=e(`${i}/truediv`,1);return{sub:c,truediv:m}}function n(i){let c=e(`${i}/filters`,4),m=e(`${i}/bias`,1);return{filters:c,bias:m}}function a(i){let c=n(`${i}/conv`),m=r(`${i}/bn`);return{conv:c,bn:m}}let s=de(e);return{extractConvParams:n,extractConvWithBatchNormParams:a,extractSeparableConvParams:s}}function en(o,t){let e=[],{extractConvParams:r,extractConvWithBatchNormParams:n,extractSeparableConvParams:a}=Zn(o,e),s;if(t.withSeparableConvs){let i=t.filterSizes&&t.filterSizes.length||9;s={conv0:t.isFirstLayerConv2d?r("conv0"):a("conv0"),conv1:a("conv1"),conv2:a("conv2"),conv3:a("conv3"),conv4:a("conv4"),conv5:a("conv5"),conv6:i>7?a("conv6"):void 0,conv7:i>8?a("conv7"):void 0,conv8:r("conv8")}}else s={conv0:n("conv0"),conv1:n("conv1"),conv2:n("conv2"),conv3:n("conv3"),conv4:n("conv4"),conv5:n("conv5"),conv6:n("conv6"),conv7:n("conv7"),conv8:r("conv8")};return W(o,e),{params:s,paramMappings:e}}var ft=class{constructor({inputSize:t,scoreThreshold:e}={}){this._name="TinyYolov2Options";if(this._inputSize=t||416,this._scoreThreshold=e||.5,typeof this._inputSize!="number"||this._inputSize%32!=0)throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`);if(typeof this._scoreThreshold!="number"||this._scoreThreshold<=0||this._scoreThreshold>=1)throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`)}get inputSize(){return this._inputSize}get scoreThreshold(){return this._scoreThreshold}};var io=class extends S{constructor(t){super("TinyYolov2");ao(t),this._config=t}get config(){return this._config}get withClassScores(){return this.config.withClassScores||this.config.classes.length>1}get boxEncodingSize(){return 5+(this.withClassScores?this.config.classes.length:0)}runTinyYolov2(t,e){let r=Ft(t,e.conv0);return r=N.maxPool(r,[2,2],[2,2],"same"),r=Ft(r,e.conv1),r=N.maxPool(r,[2,2],[2,2],"same"),r=Ft(r,e.conv2),r=N.maxPool(r,[2,2],[2,2],"same"),r=Ft(r,e.conv3),r=N.maxPool(r,[2,2],[2,2],"same"),r=Ft(r,e.conv4),r=N.maxPool(r,[2,2],[2,2],"same"),r=Ft(r,e.conv5),r=N.maxPool(r,[2,2],[1,1],"same"),r=Ft(r,e.conv6),r=Ft(r,e.conv7),zt(r,e.conv8,"valid",!1)}runMobilenet(t,e){let r=this.config.isFirstLayerConv2d?ge(zt(t,e.conv0,"valid",!1)):Tt(t,e.conv0);return r=N.maxPool(r,[2,2],[2,2],"same"),r=Tt(r,e.conv1),r=N.maxPool(r,[2,2],[2,2],"same"),r=Tt(r,e.conv2),r=N.maxPool(r,[2,2],[2,2],"same"),r=Tt(r,e.conv3),r=N.maxPool(r,[2,2],[2,2],"same"),r=Tt(r,e.conv4),r=N.maxPool(r,[2,2],[2,2],"same"),r=Tt(r,e.conv5),r=N.maxPool(r,[2,2],[1,1],"same"),r=e.conv6?Tt(r,e.conv6):r,r=e.conv7?Tt(r,e.conv7):r,zt(r,e.conv8,"valid",!1)}forwardInput(t,e){let{params:r}=this;if(!r)throw new Error("TinyYolov2 - load model before inference");return N.tidy(()=>{let n=N.cast(t.toBatchTensor(e,!1),"float32");return n=this.config.meanRgb?ot(n,this.config.meanRgb):n,n=n.div(N.scalar(256)),this.config.withSeparableConvs?this.runMobilenet(n,r):this.runTinyYolov2(n,r)})}async forward(t,e){return this.forwardInput(await E(t),e)}async detect(t,e={}){let{inputSize:r,scoreThreshold:n}=new ft(e),a=await E(t),s=await this.forwardInput(a,r),i=N.tidy(()=>N.unstack(s)[0].expandDims()),c={width:a.getInputWidth(0),height:a.getInputHeight(0)},m=await this.extractBoxes(i,a.getReshapedInputDimensions(0),n);s.dispose(),i.dispose();let p=m.map(h=>h.box),d=m.map(h=>h.score),u=m.map(h=>h.classScore),f=m.map(h=>this.config.classes[h.label]);return Sr(p.map(h=>h.rescale(r)),d,this.config.iouThreshold,!0).map(h=>new Dt(d[h],u[h],f[h],p[h],c))}getDefaultModelName(){return""}extractParamsFromWeigthMap(t){return en(t,this.config)}extractParams(t){let e=this.config.filterSizes||io.DEFAULT_FILTER_SIZES,r=e?e.length:void 0;if(r!==7&&r!==8&&r!==9)throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${r} filterSizes in config`);return tn(t,this.config,this.boxEncodingSize,e)}async extractBoxes(t,e,r){let{width:n,height:a}=e,s=Math.max(n,a),i=s/n,c=s/a,m=t.shape[1],p=this.config.anchors.length,[d,u,f]=N.tidy(()=>{let y=t.reshape([m,m,p,this.boxEncodingSize]),T=y.slice([0,0,0,0],[m,m,p,4]),F=y.slice([0,0,0,4],[m,m,p,1]),L=this.withClassScores?N.softmax(y.slice([0,0,0,5],[m,m,p,this.config.classes.length]),3):N.scalar(0);return[T,F,L]}),v=[],_=await u.array(),h=await d.array();for(let y=0;yr){let G=(T+Ee(h[y][T][F][0]))/m*i,et=(y+Ee(h[y][T][F][1]))/m*c,it=Math.exp(h[y][T][F][2])*this.config.anchors[F].x/m*i,X=Math.exp(h[y][T][F][3])*this.config.anchors[F].y/m*c,Pt=G-it/2,_t=et-X/2,wt={row:y,col:T,anchor:F},{classScore:te,label:fo}=this.withClassScores?await this.extractPredictedClass(f,wt):{classScore:1,label:0};v.push({box:new re(Pt,_t,Pt+it,_t+X),score:L,classScore:L*te,label:fo,...wt})}}return d.dispose(),u.dispose(),f.dispose(),v}async extractPredictedClass(t,e){let{row:r,col:n,anchor:a}=e,s=await t.array();return Array(this.config.classes.length).fill(0).map((i,c)=>s[r][n][a][c]).map((i,c)=>({classScore:i,label:c})).reduce((i,c)=>i.classScore>c.classScore?i:c)}},ve=io;ve.DEFAULT_FILTER_SIZES=[3,16,32,64,128,256,512,1024,1024];var ye=class extends ve{constructor(t=!0){let e={withSeparableConvs:t,iouThreshold:Xo,classes:["face"],...t?{anchors:qo,meanRgb:Zo}:{anchors:Jo,withClassScores:!0}};super(e)}get withSeparableConvs(){return this.config.withSeparableConvs}get anchors(){return this.config.anchors}async locateFaces(t,e){return(await this.detect(t,e)).map(n=>new M(n.score,n.relativeBox,{width:n.imageWidth,height:n.imageHeight}))}getDefaultModelName(){return this.withSeparableConvs?Qo:Ko}extractParamsFromWeigthMap(t){return super.extractParamsFromWeigthMap(t)}};function Kn(o,t=!0){let e=new ye(t);return e.extractWeights(o),e}var gr=class extends ft{constructor(){super(...arguments);this._name="TinyFaceDetectorOptions"}};var tt=class{async then(t){return t(await this.run())}async run(){throw new Error("ComposableTask - run is not implemented")}};var He=b(g());var co=b(g());async function Jt(o,t,e,r,n=({alignedRect:a})=>a){let a=o.map(c=>Vt(c)?n(c):c.detection),s=r||(t instanceof co.Tensor?await ie(t,a):await se(t,a)),i=await e(s);return s.forEach(c=>c instanceof co.Tensor&&c.dispose()),i}async function Fe(o,t,e,r,n){return Jt([o],t,async a=>e(a[0]),r,n)}var rn=.4,on=[new x(1.603231,2.094468),new x(6.041143,7.080126),new x(2.882459,3.518061),new x(4.266906,5.178857),new x(9.041765,10.66308)],nn=[117.001,114.697,97.404];var Te=class extends ve{constructor(){let t={withSeparableConvs:!0,iouThreshold:rn,classes:["face"],anchors:on,meanRgb:nn,isFirstLayerConv2d:!0,filterSizes:[3,16,32,64,128,256,512]};super(t)}get anchors(){return this.config.anchors}async locateFaces(t,e){return(await this.detect(t,e)).map(n=>new M(n.score,n.relativeBox,{width:n.imageWidth,height:n.imageHeight}))}getDefaultModelName(){return"tiny_face_detector_model"}extractParamsFromWeigthMap(t){return super.extractParamsFromWeigthMap(t)}};var P={ssdMobilenetv1:new Xt,tinyFaceDetector:new Te,tinyYolov2:new ye,faceLandmark68Net:new he,faceLandmark68TinyNet:new dr,faceRecognitionNet:new be,faceExpressionNet:new cr,ageGenderNet:new pr},an=(o,t)=>P.ssdMobilenetv1.locateFaces(o,t),Qn=(o,t)=>P.tinyFaceDetector.locateFaces(o,t),ta=(o,t)=>P.tinyYolov2.locateFaces(o,t),sn=o=>P.faceLandmark68Net.detectLandmarks(o),ea=o=>P.faceLandmark68TinyNet.detectLandmarks(o),ra=o=>P.faceRecognitionNet.computeFaceDescriptor(o),oa=o=>P.faceExpressionNet.predictExpressions(o),na=o=>P.ageGenderNet.predictAgeAndGender(o),cn=o=>P.ssdMobilenetv1.load(o),aa=o=>P.tinyFaceDetector.load(o),sa=o=>P.tinyYolov2.load(o),ia=o=>P.faceLandmark68Net.load(o),ca=o=>P.faceLandmark68TinyNet.load(o),ma=o=>P.faceRecognitionNet.load(o),pa=o=>P.faceExpressionNet.load(o),da=o=>P.ageGenderNet.load(o),ua=cn,fa=an,la=sn;var mo=class extends tt{constructor(t,e,r){super();this.parentTask=t;this.input=e;this.extractedFaces=r}},we=class extends mo{async run(){let t=await this.parentTask,e=await Jt(t,this.input,async r=>Promise.all(r.map(n=>P.faceExpressionNet.predictExpressions(n))),this.extractedFaces);return t.map((r,n)=>mr(r,e[n]))}withAgeAndGender(){return new Pe(this,this.input)}},De=class extends mo{async run(){let t=await this.parentTask;if(!t)return;let e=await Fe(t,this.input,r=>P.faceExpressionNet.predictExpressions(r),this.extractedFaces);return mr(t,e)}withAgeAndGender(){return new _e(this,this.input)}},Kt=class extends we{withAgeAndGender(){return new qt(this,this.input)}withFaceDescriptors(){return new At(this,this.input)}},Qt=class extends De{withAgeAndGender(){return new Zt(this,this.input)}withFaceDescriptor(){return new Wt(this,this.input)}};var po=class extends tt{constructor(t,e,r){super();this.parentTask=t;this.input=e;this.extractedFaces=r}},Pe=class extends po{async run(){let t=await this.parentTask,e=await Jt(t,this.input,async r=>Promise.all(r.map(n=>P.ageGenderNet.predictAgeAndGender(n))),this.extractedFaces);return t.map((r,n)=>{let{age:a,gender:s,genderProbability:i}=e[n];return hr(xr(r,s,i),a)})}withFaceExpressions(){return new we(this,this.input)}},_e=class extends po{async run(){let t=await this.parentTask;if(!t)return;let{age:e,gender:r,genderProbability:n}=await Fe(t,this.input,a=>P.ageGenderNet.predictAgeAndGender(a),this.extractedFaces);return hr(xr(t,r,n),e)}withFaceExpressions(){return new De(this,this.input)}},qt=class extends Pe{withFaceExpressions(){return new Kt(this,this.input)}withFaceDescriptors(){return new At(this,this.input)}},Zt=class extends _e{withFaceExpressions(){return new Qt(this,this.input)}withFaceDescriptor(){return new Wt(this,this.input)}};var vr=class extends tt{constructor(t,e){super();this.parentTask=t;this.input=e}},At=class extends vr{async run(){let t=await this.parentTask;return(await Jt(t,this.input,r=>Promise.all(r.map(n=>P.faceRecognitionNet.computeFaceDescriptor(n))),null,r=>r.landmarks.align(null,{useDlibAlignment:!0}))).map((r,n)=>lr(t[n],r))}withFaceExpressions(){return new Kt(this,this.input)}withAgeAndGender(){return new qt(this,this.input)}},Wt=class extends vr{async run(){let t=await this.parentTask;if(!t)return;let e=await Fe(t,this.input,r=>P.faceRecognitionNet.computeFaceDescriptor(r),null,r=>r.landmarks.align(null,{useDlibAlignment:!0}));return lr(t,e)}withFaceExpressions(){return new Qt(this,this.input)}withAgeAndGender(){return new Zt(this,this.input)}};var yr=class extends tt{constructor(t,e,r){super();this.parentTask=t;this.input=e;this.useTinyLandmarkNet=r}get landmarkNet(){return this.useTinyLandmarkNet?P.faceLandmark68TinyNet:P.faceLandmark68Net}},Fr=class extends yr{async run(){let t=await this.parentTask,e=t.map(a=>a.detection),r=this.input instanceof He.Tensor?await ie(this.input,e):await se(this.input,e),n=await Promise.all(r.map(a=>this.landmarkNet.detectLandmarks(a)));return r.forEach(a=>a instanceof He.Tensor&&a.dispose()),t.map((a,s)=>le(a,n[s]))}withFaceExpressions(){return new Kt(this,this.input)}withAgeAndGender(){return new qt(this,this.input)}withFaceDescriptors(){return new At(this,this.input)}},Tr=class extends yr{async run(){let t=await this.parentTask;if(!t)return;let{detection:e}=t,r=this.input instanceof He.Tensor?await ie(this.input,[e]):await se(this.input,[e]),n=await this.landmarkNet.detectLandmarks(r[0]);return r.forEach(a=>a instanceof He.Tensor&&a.dispose()),le(t,n)}withFaceExpressions(){return new Qt(this,this.input)}withAgeAndGender(){return new Zt(this,this.input)}withFaceDescriptor(){return new Wt(this,this.input)}};var Pr=class extends tt{constructor(t,e=new Z){super();this.input=t;this.options=e}},Ye=class extends Pr{async run(){let{input:t,options:e}=this,r=e instanceof gr?n=>P.tinyFaceDetector.locateFaces(n,e):e instanceof Z?n=>P.ssdMobilenetv1.locateFaces(n,e):e instanceof ft?n=>P.tinyYolov2.locateFaces(n,e):null;if(!r)throw new Error("detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options");return r(t)}runAndExtendWithFaceDetections(){return new Promise(async t=>{let e=await this.run();t(e.map(r=>jt({},r)))})}withFaceLandmarks(t=!1){return new Fr(this.runAndExtendWithFaceDetections(),this.input,t)}withFaceExpressions(){return new we(this.runAndExtendWithFaceDetections(),this.input)}withAgeAndGender(){return new Pe(this.runAndExtendWithFaceDetections(),this.input)}},_r=class extends Pr{async run(){let t=await new Ye(this.input,this.options),e=t[0];return t.forEach(r=>{r.score>e.score&&(e=r)}),e}runAndExtendWithFaceDetection(){return new Promise(async t=>{let e=await this.run();t(e?jt({},e):void 0)})}withFaceLandmarks(t=!1){return new Tr(this.runAndExtendWithFaceDetection(),this.input,t)}withFaceExpressions(){return new De(this.runAndExtendWithFaceDetection(),this.input)}withAgeAndGender(){return new _e(this.runAndExtendWithFaceDetection(),this.input)}};function ha(o,t=new Z){return new _r(o,t)}function wr(o,t=new Z){return new Ye(o,t)}async function mn(o,t){return wr(o,new Z(t?{minConfidence:t}:{})).withFaceLandmarks().withFaceDescriptors()}async function xa(o,t={}){return wr(o,new ft(t)).withFaceLandmarks().withFaceDescriptors()}var ba=mn;function uo(o,t){if(o.length!==t.length)throw new Error("euclideanDistance: arr1.length !== arr2.length");let e=Array.from(o),r=Array.from(t);return Math.sqrt(e.map((n,a)=>n-r[a]).reduce((n,a)=>n+a**2,0))}var Dr=class{constructor(t,e=.6){this._distanceThreshold=e;let r=Array.isArray(t)?t:[t];if(!r.length)throw new Error("FaceRecognizer.constructor - expected atleast one input");let n=1,a=()=>`person ${n++}`;this._labeledDescriptors=r.map(s=>{if(s instanceof xt)return s;if(s instanceof Float32Array)return new xt(a(),[s]);if(s.descriptor&&s.descriptor instanceof Float32Array)return new xt(a(),[s.descriptor]);throw new Error("FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>")})}get labeledDescriptors(){return this._labeledDescriptors}get distanceThreshold(){return this._distanceThreshold}computeMeanDistance(t,e){return e.map(r=>uo(r,t)).reduce((r,n)=>r+n,0)/(e.length||1)}matchDescriptor(t){return this.labeledDescriptors.map(({descriptors:e,label:r})=>new Me(r,this.computeMeanDistance(t,e))).reduce((e,r)=>e.distancet.toJSON())}}static fromJSON(t){let e=t.labeledDescriptors.map(r=>xt.fromJSON(r));return new Dr(e,t.distanceThreshold)}};function ga(o){let t=new Te;return t.extractWeights(o),t}function pn(o,t){let{width:e,height:r}=new A(t.width,t.height);if(e<=0||r<=0)throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({width:e,height:r})}`);if(Array.isArray(o))return o.map(n=>pn(n,{width:e,height:r}));if(Vt(o)){let n=o.detection.forSize(e,r),a=o.unshiftedLandmarks.forSize(n.box.width,n.box.height);return le(jt(o,n),a)}return pt(o)?jt(o,o.detection.forSize(e,r)):o instanceof V||o instanceof M?o.forSize(e,r):o}var ya=typeof process!="undefined",Fa=typeof navigator!="undefined"&&typeof navigator.userAgent!="undefined",Ta={faceapi:Eo,node:ya,browser:Fa};export{pr as AgeGenderNet,re as BoundingBox,D as Box,tt as ComposableTask,At as ComputeAllFaceDescriptorsTask,vr as ComputeFaceDescriptorsTaskBase,Wt as ComputeSingleFaceDescriptorTask,Fr as DetectAllFaceLandmarksTask,Ye as DetectAllFacesTask,yr as DetectFaceLandmarksTaskBase,Pr as DetectFacesTaskBase,Tr as DetectSingleFaceLandmarksTask,_r as DetectSingleFaceTask,A as Dimensions,Jr as FACE_EXPRESSION_LABELS,M as FaceDetection,Uo as FaceDetectionNet,cr as FaceExpressionNet,It as FaceExpressions,he as FaceLandmark68Net,dr as FaceLandmark68TinyNet,Ao as FaceLandmarkNet,V as FaceLandmarks,bo as FaceLandmarks5,ne as FaceLandmarks68,Me as FaceMatch,Dr as FaceMatcher,be as FaceRecognitionNet,vt as Gender,Ce as LabeledBox,xt as LabeledFaceDescriptors,bt as NetInput,S as NeuralNetwork,Dt as ObjectDetection,x as Point,go as PredictedBox,oe as Rect,Xt as SsdMobilenetv1,Z as SsdMobilenetv1Options,Te as TinyFaceDetector,gr as TinyFaceDetectorOptions,ye as TinyYolov2,ft as TinyYolov2Options,ba as allFaces,mn as allFacesSsdMobilenetv1,xa as allFacesTinyYolov2,Yr as awaitMediaLoaded,Gr as bufferToImage,ra as computeFaceDescriptor,ae as createCanvas,Le as createCanvasFromMedia,Jn as createFaceDetectionNet,Rn as createFaceRecognitionNet,Vo as createSsdMobilenetv1,ga as createTinyFaceDetector,Kn as createTinyYolov2,wr as detectAllFaces,sn as detectFaceLandmarks,ea as detectFaceLandmarksTiny,la as detectLandmarks,ha as detectSingleFace,Qr as draw,w as env,uo as euclideanDistance,hr as extendWithAge,lr as extendWithFaceDescriptor,jt as extendWithFaceDetection,mr as extendWithFaceExpressions,le as extendWithFaceLandmarks,xr as extendWithGender,ie as extractFaceTensors,se as extractFaces,Mn as fetchImage,Ur as fetchJson,Cn as fetchNetWeights,Gt as fetchOrThrow,$ as getContext2dOrThrow,Yt as getMediaDimensions,zr as imageTensorToCanvas,Vr as imageToSquare,vn as inverseSigmoid,Lr as iou,qe as isMediaElement,Ie as isMediaLoaded,$n as isWithAge,pt as isWithFaceDetection,qr as isWithFaceExpressions,Vt as isWithFaceLandmarks,On as isWithGender,da as loadAgeGenderModel,ua as loadFaceDetectionModel,pa as loadFaceExpressionModel,ia as loadFaceLandmarkModel,ca as loadFaceLandmarkTinyModel,ma as loadFaceRecognitionModel,cn as loadSsdMobilenetv1Model,aa as loadTinyFaceDetectorModel,sa as loadTinyYolov2Model,Xr as loadWeightMap,fa as locateFaces,Nn as matchDimensions,kr as minBbox,P as nets,Sr as nonMaxSuppression,ot as normalize,Ar as padToSquare,na as predictAgeAndGender,oa as recognizeFaceExpressions,pn as resizeResults,Ht as resolveInput,gn as shuffleArray,Ee as sigmoid,an as ssdMobilenetv1,va as tf,Qn as tinyFaceDetector,ta as tinyYolov2,E as toNetInput,Mr as utils,ao as validateConfig,Ta as version}; //# sourceMappingURL=face-api.esm-nobundle.js.map diff --git a/dist/face-api.esm-nobundle.js.map b/dist/face-api.esm-nobundle.js.map index 4d0d7b1..ca24338 100644 --- a/dist/face-api.esm-nobundle.js.map +++ b/dist/face-api.esm-nobundle.js.map @@ -2,6 +2,6 @@ "version": 3, "sources": ["../src/tfjs/tf-browser.ts", "../src/env/isNodejs.ts", "../src/index.ts", "../src/draw/index.ts", "../src/draw/drawContour.ts", "../src/utils/index.ts", "../src/classes/Dimensions.ts", "../src/classes/Point.ts", "../src/classes/Box.ts", "../src/classes/BoundingBox.ts", "../src/classes/ObjectDetection.ts", "../src/classes/FaceDetection.ts", "../src/ops/iou.ts", "../src/ops/minBbox.ts", "../src/ops/nonMaxSuppression.ts", "../src/ops/normalize.ts", "../src/ops/padToSquare.ts", "../src/ops/shuffleArray.ts", "../src/ops/index.ts", "../src/classes/Rect.ts", "../src/classes/FaceLandmarks.ts", "../src/classes/FaceLandmarks5.ts", "../src/classes/FaceLandmarks68.ts", "../src/classes/FaceMatch.ts", "../src/classes/LabeledBox.ts", "../src/classes/LabeledFaceDescriptors.ts", "../src/classes/PredictedBox.ts", "../src/factories/WithFaceDetection.ts", "../src/env/createBrowserEnv.ts", "../src/env/createFileSystem.ts", "../src/env/createNodejsEnv.ts", "../src/env/isBrowser.ts", "../src/env/index.ts", "../src/dom/resolveInput.ts", "../src/dom/getContext2dOrThrow.ts", "../src/draw/DrawTextField.ts", "../src/draw/DrawBox.ts", "../src/draw/drawDetections.ts", "../src/faceExpressionNet/FaceExpressionNet.ts", "../src/dom/isMediaLoaded.ts", "../src/dom/awaitMediaLoaded.ts", "../src/dom/bufferToImage.ts", "../src/dom/getMediaDimensions.ts", "../src/dom/createCanvas.ts", "../src/dom/imageTensorToCanvas.ts", "../src/dom/isMediaElement.ts", "../src/dom/NetInput.ts", "../src/dom/imageToSquare.ts", "../src/dom/toNetInput.ts", "../src/dom/extractFaces.ts", "../src/dom/extractFaceTensors.ts", "../src/dom/fetchOrThrow.ts", "../src/dom/fetchImage.ts", "../src/dom/fetchJson.ts", "../src/dom/fetchNetWeights.ts", "../src/dom/loadWeightMap.ts", "../src/common/getModelUris.ts", "../src/dom/matchDimensions.ts", "../src/faceFeatureExtractor/FaceFeatureExtractor.ts", "../src/NeuralNetwork.ts", "../src/faceFeatureExtractor/denseBlock.ts", "../src/common/depthwiseSeparableConv.ts", "../src/common/convLayer.ts", "../src/common/disposeUnusedWeightTensors.ts", "../src/common/extractConvParamsFactory.ts", "../src/common/extractFCParamsFactory.ts", "../src/common/extractSeparableConvParamsFactory.ts", "../src/common/types.ts", "../src/common/extractWeightEntryFactory.ts", "../src/common/extractWeightsFactory.ts", "../src/faceFeatureExtractor/extractorsFactory.ts", "../src/faceFeatureExtractor/extractParams.ts", "../src/common/loadConvParamsFactory.ts", "../src/faceFeatureExtractor/loadParamsFactory.ts", "../src/faceFeatureExtractor/extractParamsFromWeigthMap.ts", "../src/faceProcessor/FaceProcessor.ts", "../src/common/fullyConnectedLayer.ts", "../src/faceProcessor/extractParams.ts", "../src/faceProcessor/extractParamsFromWeigthMap.ts", "../src/faceProcessor/util.ts", "../src/faceExpressionNet/FaceExpressions.ts", "../src/factories/WithFaceExpressions.ts", "../src/draw/drawFaceExpressions.ts", "../src/factories/WithFaceLandmarks.ts", "../src/draw/DrawFaceLandmarks.ts", "../src/ageGenderNet/AgeGenderNet.ts", "../src/xception/TinyXception.ts", "../src/xception/extractParams.ts", "../src/xception/extractParamsFromWeigthMap.ts", "../src/ageGenderNet/extractParams.ts", "../src/ageGenderNet/extractParamsFromWeigthMap.ts", "../src/ageGenderNet/types.ts", "../src/faceLandmarkNet/FaceLandmark68NetBase.ts", "../src/faceLandmarkNet/FaceLandmark68Net.ts", "../src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts", "../src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts", "../src/faceFeatureExtractor/extractParamsTiny.ts", "../src/faceLandmarkNet/FaceLandmark68TinyNet.ts", "../src/faceLandmarkNet/index.ts", "../src/faceRecognitionNet/FaceRecognitionNet.ts", "../src/faceRecognitionNet/convLayer.ts", "../src/faceRecognitionNet/scaleLayer.ts", "../src/faceRecognitionNet/extractParams.ts", "../src/faceRecognitionNet/extractParamsFromWeigthMap.ts", "../src/faceRecognitionNet/residualLayer.ts", "../src/faceRecognitionNet/index.ts", "../src/factories/WithFaceDescriptor.ts", "../src/factories/WithAge.ts", "../src/factories/WithGender.ts", "../src/ssdMobilenetv1/SsdMobilenetv1.ts", "../src/ssdMobilenetv1/extractParams.ts", "../src/ssdMobilenetv1/extractParamsFromWeigthMap.ts", "../src/ssdMobilenetv1/mobileNetV1.ts", "../src/ssdMobilenetv1/pointwiseConvLayer.ts", "../src/ssdMobilenetv1/nonMaxSuppression.ts", "../src/ssdMobilenetv1/outputLayer.ts", "../src/ssdMobilenetv1/predictionLayer.ts", "../src/ssdMobilenetv1/boxPredictionLayer.ts", "../src/ssdMobilenetv1/SsdMobilenetv1Options.ts", "../src/ssdMobilenetv1/index.ts", "../src/tinyYolov2/const.ts", "../src/tinyYolov2/TinyYolov2Base.ts", "../src/tinyYolov2/config.ts", "../src/tinyYolov2/convWithBatchNorm.ts", "../src/tinyYolov2/leaky.ts", "../src/tinyYolov2/depthwiseSeparableConv.ts", "../src/tinyYolov2/extractParams.ts", "../src/tinyYolov2/extractParamsFromWeigthMap.ts", "../src/tinyYolov2/TinyYolov2Options.ts", "../src/tinyYolov2/TinyYolov2.ts", "../src/tinyYolov2/index.ts", "../src/tinyFaceDetector/TinyFaceDetectorOptions.ts", "../src/globalApi/ComposableTask.ts", "../src/globalApi/DetectFaceLandmarksTasks.ts", "../src/globalApi/extractFacesAndComputeResults.ts", "../src/tinyFaceDetector/const.ts", "../src/tinyFaceDetector/TinyFaceDetector.ts", "../src/globalApi/nets.ts", "../src/globalApi/PredictFaceExpressionsTask.ts", "../src/globalApi/PredictAgeAndGenderTask.ts", "../src/globalApi/ComputeFaceDescriptorsTasks.ts", "../src/globalApi/DetectFacesTasks.ts", "../src/globalApi/detectFaces.ts", "../src/globalApi/allFaces.ts", "../src/euclideanDistance.ts", "../src/globalApi/FaceMatcher.ts", "../src/tinyFaceDetector/index.ts", "../src/resizeResults.ts"], "sourcesContent": ["/* eslint-disable import/no-extraneous-dependencies */\n/* eslint-disable node/no-unpublished-import */\n\n// wrapper to load tfjs in a single place so version can be changed quickly\n\nexport * from '@tensorflow/tfjs/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-wasm';\n", "export function isNodejs(): boolean {\n return typeof global === 'object'\n && typeof require === 'function'\n && typeof module !== 'undefined'\n // issues with gatsby.js: module.exports is undefined\n // && !!module.exports\n && typeof process !== 'undefined' && !!process.version;\n}\n", "import * as tf from '../dist/tfjs.esm';\nimport * as draw from './draw/index';\nimport * as utils from './utils/index';\nimport * as pkg from '../package.json';\n\nexport { tf, draw, utils };\n\nexport * from './ageGenderNet/index';\nexport * from './classes/index';\nexport * from './dom/index';\nexport * from './env/index';\nexport * from './faceExpressionNet/index';\nexport * from './faceLandmarkNet/index';\nexport * from './faceRecognitionNet/index';\nexport * from './factories/index';\nexport * from './globalApi/index';\nexport * from './ops/index';\nexport * from './ssdMobilenetv1/index';\nexport * from './tinyFaceDetector/index';\nexport * from './tinyYolov2/index';\nexport * from './euclideanDistance';\nexport * from './NeuralNetwork';\nexport * from './resizeResults';\n\nconst node = (typeof process !== 'undefined');\n// eslint-disable-next-line no-undef\nconst browser = (typeof navigator !== 'undefined') && (typeof navigator.userAgent !== 'undefined');\nexport const version = { faceapi: pkg.version as string, node, browser };\n", "export * from './drawContour';\nexport * from './drawDetections';\nexport * from './drawFaceExpressions';\nexport * from './DrawBox';\nexport * from './DrawFaceLandmarks';\nexport * from './DrawTextField';\n", "import { Point } from '../classes/index';\n\nexport function drawContour(\n ctx: CanvasRenderingContext2D,\n points: Point[],\n isClosed: boolean = false,\n) {\n ctx.beginPath();\n\n points.slice(1).forEach(({ x, y }, prevIdx) => {\n const from = points[prevIdx];\n ctx.moveTo(from.x, from.y);\n ctx.lineTo(x, y);\n });\n\n if (isClosed) {\n const from = points[points.length - 1];\n const to = points[0];\n if (!from || !to) {\n return;\n }\n\n ctx.moveTo(from.x, from.y);\n ctx.lineTo(to.x, to.y);\n }\n\n ctx.stroke();\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { Point } from '../classes/index';\nimport { Dimensions, IDimensions } from '../classes/Dimensions';\n\nexport function isTensor(tensor: any, dim: number) {\n return tensor instanceof tf.Tensor && tensor.shape.length === dim;\n}\n\nexport function isTensor1D(tensor: any): tensor is tf.Tensor1D {\n return isTensor(tensor, 1);\n}\n\nexport function isTensor2D(tensor: any): tensor is tf.Tensor2D {\n return isTensor(tensor, 2);\n}\n\nexport function isTensor3D(tensor: any): tensor is tf.Tensor3D {\n return isTensor(tensor, 3);\n}\n\nexport function isTensor4D(tensor: any): tensor is tf.Tensor4D {\n return isTensor(tensor, 4);\n}\n\nexport function isFloat(num: number) {\n return num % 1 !== 0;\n}\n\nexport function isEven(num: number) {\n return num % 2 === 0;\n}\n\nexport function round(num: number, prec: number = 2) {\n const f = 10 ** prec;\n return Math.floor(num * f) / f;\n}\n\nexport function isDimensions(obj: any): boolean {\n return obj && obj.width && obj.height;\n}\n\nexport function computeReshapedDimensions({ width, height }: IDimensions, inputSize: number) {\n const scale = inputSize / Math.max(height, width);\n return new Dimensions(Math.round(width * scale), Math.round(height * scale));\n}\n\nexport function getCenterPoint(pts: Point[]): Point {\n return pts.reduce((sum, pt) => sum.add(pt), new Point(0, 0))\n .div(new Point(pts.length, pts.length));\n}\n\nexport function range(num: number, start: number, step: number): number[] {\n return Array(num).fill(0).map((_, i) => start + (i * step));\n}\n\nexport function isValidNumber(num: any) {\n // eslint-disable-next-line no-mixed-operators\n return !!num && (num !== Infinity) && (num !== -Infinity) && !Number.isNaN(num) || num === 0;\n}\n\nexport function isValidProbablitiy(num: any) {\n return isValidNumber(num) && num >= 0 && num <= 1.0;\n}\n", "import { isValidNumber } from '../utils/index';\n\nexport interface IDimensions {\n width: number\n height: number\n}\n\nexport class Dimensions implements IDimensions {\n private _width: number\n\n private _height: number\n\n constructor(width: number, height: number) {\n if (!isValidNumber(width) || !isValidNumber(height)) {\n throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({ width, height })}`);\n }\n\n this._width = width;\n this._height = height;\n }\n\n public get width(): number { return this._width; }\n\n public get height(): number { return this._height; }\n\n public reverse(): Dimensions {\n return new Dimensions(1 / this.width, 1 / this.height);\n }\n}\n", "export interface IPoint {\n x: number\n y: number\n}\n\nexport class Point implements IPoint {\n private _x: number\n\n private _y: number\n\n constructor(x: number, y: number) {\n this._x = x;\n this._y = y;\n }\n\n get x(): number { return this._x; }\n\n get y(): number { return this._y; }\n\n public add(pt: IPoint): Point {\n return new Point(this.x + pt.x, this.y + pt.y);\n }\n\n public sub(pt: IPoint): Point {\n return new Point(this.x - pt.x, this.y - pt.y);\n }\n\n public mul(pt: IPoint): Point {\n return new Point(this.x * pt.x, this.y * pt.y);\n }\n\n public div(pt: IPoint): Point {\n return new Point(this.x / pt.x, this.y / pt.y);\n }\n\n public abs(): Point {\n return new Point(Math.abs(this.x), Math.abs(this.y));\n }\n\n public magnitude(): number {\n return Math.sqrt((this.x ** 2) + (this.y ** 2));\n }\n\n public floor(): Point {\n return new Point(Math.floor(this.x), Math.floor(this.y));\n }\n}\n", "import { isDimensions, isValidNumber } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { IDimensions } from './Dimensions';\nimport { Point } from './Point';\nimport { IRect } from './Rect';\n\nexport class Box implements IBoundingBox, IRect {\n public static isRect(rect: any): boolean {\n return !!rect && [rect.x, rect.y, rect.width, rect.height].every(isValidNumber);\n }\n\n public static assertIsValidBox(box: any, callee: string, allowNegativeDimensions: boolean = false) {\n if (!Box.isRect(box)) {\n throw new Error(`${callee} - invalid box: ${JSON.stringify(box)}, expected object with properties x, y, width, height`);\n }\n\n if (!allowNegativeDimensions && (box.width < 0 || box.height < 0)) {\n throw new Error(`${callee} - width (${box.width}) and height (${box.height}) must be positive numbers`);\n }\n }\n\n private _x: number\n\n private _y: number\n\n private _width: number\n\n private _height: number\n\n constructor(_box: IBoundingBox | IRect, allowNegativeDimensions: boolean = true) {\n const box = (_box || {}) as any;\n\n const isBbox = [box.left, box.top, box.right, box.bottom].every(isValidNumber);\n const isRect = [box.x, box.y, box.width, box.height].every(isValidNumber);\n\n if (!isRect && !isBbox) {\n throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(box)}`);\n }\n\n const [x, y, width, height] = isRect\n ? [box.x, box.y, box.width, box.height]\n : [box.left, box.top, box.right - box.left, box.bottom - box.top];\n\n Box.assertIsValidBox({\n x, y, width, height,\n }, 'Box.constructor', allowNegativeDimensions);\n\n this._x = x;\n this._y = y;\n this._width = width;\n this._height = height;\n }\n\n public get x(): number { return this._x; }\n\n public get y(): number { return this._y; }\n\n public get width(): number { return this._width; }\n\n public get height(): number { return this._height; }\n\n public get left(): number { return this.x; }\n\n public get top(): number { return this.y; }\n\n public get right(): number { return this.x + this.width; }\n\n public get bottom(): number { return this.y + this.height; }\n\n public get area(): number { return this.width * this.height; }\n\n public get topLeft(): Point { return new Point(this.left, this.top); }\n\n public get topRight(): Point { return new Point(this.right, this.top); }\n\n public get bottomLeft(): Point { return new Point(this.left, this.bottom); }\n\n public get bottomRight(): Point { return new Point(this.right, this.bottom); }\n\n public round(): Box {\n const [x, y, width, height] = [this.x, this.y, this.width, this.height]\n .map((val) => Math.round(val));\n return new Box({\n x, y, width, height,\n });\n }\n\n public floor(): Box {\n const [x, y, width, height] = [this.x, this.y, this.width, this.height]\n .map((val) => Math.floor(val));\n return new Box({\n x, y, width, height,\n });\n }\n\n public toSquare(): Box {\n let {\n x, y, width, height,\n } = this;\n const diff = Math.abs(width - height);\n if (width < height) {\n x -= (diff / 2);\n width += diff;\n }\n if (height < width) {\n y -= (diff / 2);\n height += diff;\n }\n\n return new Box({\n x, y, width, height,\n });\n }\n\n public rescale(s: IDimensions | number): Box {\n const scaleX = isDimensions(s) ? (s as IDimensions).width : s as number;\n const scaleY = isDimensions(s) ? (s as IDimensions).height : s as number;\n return new Box({\n x: this.x * scaleX,\n y: this.y * scaleY,\n width: this.width * scaleX,\n height: this.height * scaleY,\n });\n }\n\n public pad(padX: number, padY: number): Box {\n const [x, y, width, height] = [\n this.x - (padX / 2),\n this.y - (padY / 2),\n this.width + padX,\n this.height + padY,\n ];\n return new Box({\n x, y, width, height,\n });\n }\n\n public clipAtImageBorders(imgWidth: number, imgHeight: number): Box {\n const {\n x, y, right, bottom,\n } = this;\n const clippedX = Math.max(x, 0);\n const clippedY = Math.max(y, 0);\n\n const newWidth = right - clippedX;\n const newHeight = bottom - clippedY;\n const clippedWidth = Math.min(newWidth, imgWidth - clippedX);\n const clippedHeight = Math.min(newHeight, imgHeight - clippedY);\n\n return (new Box({\n x: clippedX, y: clippedY, width: clippedWidth, height: clippedHeight,\n })).floor();\n }\n\n public shift(sx: number, sy: number): Box {\n const { width, height } = this;\n const x = this.x + sx;\n const y = this.y + sy;\n\n return new Box({\n x, y, width, height,\n });\n }\n\n public padAtBorders(imageHeight: number, imageWidth: number) {\n const w = this.width + 1;\n const h = this.height + 1;\n\n const dx = 1;\n const dy = 1;\n let edx = w;\n let edy = h;\n\n let x = this.left;\n let y = this.top;\n let ex = this.right;\n let ey = this.bottom;\n\n if (ex > imageWidth) {\n edx = -ex + imageWidth + w;\n ex = imageWidth;\n }\n if (ey > imageHeight) {\n edy = -ey + imageHeight + h;\n ey = imageHeight;\n }\n if (x < 1) {\n edy = 2 - x;\n x = 1;\n }\n if (y < 1) {\n edy = 2 - y;\n y = 1;\n }\n\n return {\n dy, edy, dx, edx, y, ey, x, ex, w, h,\n };\n }\n\n public calibrate(region: Box) {\n return new Box({\n left: this.left + (region.left * this.width),\n top: this.top + (region.top * this.height),\n right: this.right + (region.right * this.width),\n bottom: this.bottom + (region.bottom * this.height),\n }).toSquare().round();\n }\n}\n", "import { Box } from './Box';\n\nexport interface IBoundingBox {\n left: number\n top: number\n right: number\n bottom: number\n}\n\nexport class BoundingBox extends Box implements IBoundingBox {\n constructor(left: number, top: number, right: number, bottom: number, allowNegativeDimensions: boolean = false) {\n super({\n left, top, right, bottom,\n }, allowNegativeDimensions);\n }\n}\n", "import { Box } from './Box';\nimport { Dimensions, IDimensions } from './Dimensions';\nimport { IRect, Rect } from './Rect';\n\nexport class ObjectDetection {\n private _score: number\n\n private _classScore: number\n\n private _className: string\n\n private _box: Rect\n\n private _imageDims: Dimensions\n\n constructor(\n score: number,\n classScore: number,\n className: string,\n relativeBox: IRect,\n imageDims: IDimensions,\n ) {\n this._imageDims = new Dimensions(imageDims.width, imageDims.height);\n this._score = score;\n this._classScore = classScore;\n this._className = className;\n this._box = new Box(relativeBox).rescale(this._imageDims);\n }\n\n public get score(): number { return this._score; }\n\n public get classScore(): number { return this._classScore; }\n\n public get className(): string { return this._className; }\n\n public get box(): Box { return this._box; }\n\n public get imageDims(): Dimensions { return this._imageDims; }\n\n public get imageWidth(): number { return this.imageDims.width; }\n\n public get imageHeight(): number { return this.imageDims.height; }\n\n public get relativeBox(): Box { return new Box(this._box).rescale(this.imageDims.reverse()); }\n\n public forSize(width: number, height: number): ObjectDetection {\n return new ObjectDetection(\n this.score,\n this.classScore,\n this.className,\n this.relativeBox,\n { width, height },\n );\n }\n}\n", "import { Box } from './Box';\nimport { IDimensions } from './Dimensions';\nimport { ObjectDetection } from './ObjectDetection';\nimport { Rect } from './Rect';\n\nexport interface IFaceDetecion {\n score: number\n box: Box\n}\n\nexport class FaceDetection extends ObjectDetection implements IFaceDetecion {\n constructor(\n score: number,\n relativeBox: Rect,\n imageDims: IDimensions,\n ) {\n super(score, score, '', relativeBox, imageDims);\n }\n\n public forSize(width: number, height: number): FaceDetection {\n const { score, relativeBox, imageDims } = super.forSize(width, height);\n return new FaceDetection(score, relativeBox, imageDims);\n }\n}\n", "import { Box } from '../classes/Box';\n\nexport function iou(box1: Box, box2: Box, isIOU: boolean = true) {\n const width = Math.max(0.0, Math.min(box1.right, box2.right) - Math.max(box1.left, box2.left));\n const height = Math.max(0.0, Math.min(box1.bottom, box2.bottom) - Math.max(box1.top, box2.top));\n const interSection = width * height;\n\n return isIOU\n ? interSection / (box1.area + box2.area - interSection)\n : interSection / Math.min(box1.area, box2.area);\n}\n", "import { BoundingBox, IPoint } from '../classes/index';\n\nexport function minBbox(pts: IPoint[]): BoundingBox {\n const xs = pts.map((pt) => pt.x);\n const ys = pts.map((pt) => pt.y);\n const minX = xs.reduce((min, x) => (x < min ? x : min), Infinity);\n const minY = ys.reduce((min, y) => (y < min ? y : min), Infinity);\n const maxX = xs.reduce((max, x) => (max < x ? x : max), 0);\n const maxY = ys.reduce((max, y) => (max < y ? y : max), 0);\n\n return new BoundingBox(minX, minY, maxX, maxY);\n}\n", "import { Box } from '../classes/Box';\nimport { iou } from './iou';\n\nexport function nonMaxSuppression(\n boxes: Box[],\n scores: number[],\n iouThreshold: number,\n isIOU: boolean = true,\n): number[] {\n let indicesSortedByScore = scores\n .map((score, boxIndex) => ({ score, boxIndex }))\n .sort((c1, c2) => c1.score - c2.score)\n .map((c) => c.boxIndex);\n\n const pick: number[] = [];\n\n while (indicesSortedByScore.length > 0) {\n const curr = indicesSortedByScore.pop() as number;\n pick.push(curr);\n\n const indices = indicesSortedByScore;\n\n const outputs: number[] = [];\n for (let i = 0; i < indices.length; i++) {\n const idx = indices[i];\n\n const currBox = boxes[curr];\n const idxBox = boxes[idx];\n\n outputs.push(iou(currBox, idxBox, isIOU));\n }\n\n indicesSortedByScore = indicesSortedByScore.filter(\n (_, j) => outputs[j] <= iouThreshold,\n );\n }\n\n return pick;\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nexport function normalize(x: tf.Tensor4D, meanRgb: number[]): tf.Tensor4D {\n return tf.tidy(() => {\n const [r, g, b] = meanRgb;\n const avg_r = tf.fill([...x.shape.slice(0, 3), 1], r, 'float32');\n const avg_g = tf.fill([...x.shape.slice(0, 3), 1], g, 'float32');\n const avg_b = tf.fill([...x.shape.slice(0, 3), 1], b, 'float32');\n const avg_rgb = tf.concat([avg_r, avg_g, avg_b], 3);\n\n return tf.sub(x, avg_rgb);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\n/**\n * Pads the smaller dimension of an image tensor with zeros, such that width === height.\n *\n * @param imgTensor The image tensor.\n * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on\n * both sides of the minor dimension oof the image.\n * @returns The padded tensor with width === height.\n */\nexport function padToSquare(\n imgTensor: tf.Tensor4D,\n isCenterImage: boolean = false,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const [height, width] = imgTensor.shape.slice(1);\n if (height === width) {\n return imgTensor;\n }\n\n const dimDiff = Math.abs(height - width);\n const paddingAmount = Math.round(dimDiff * (isCenterImage ? 0.5 : 1));\n const paddingAxis = height > width ? 2 : 1;\n\n const createPaddingTensor = (paddingAmountLocal: number): tf.Tensor => {\n const paddingTensorShape = imgTensor.shape.slice();\n paddingTensorShape[paddingAxis] = paddingAmountLocal;\n return tf.fill(paddingTensorShape, 0, 'float32');\n };\n\n const paddingTensorAppend = createPaddingTensor(paddingAmount);\n const remainingPaddingAmount = dimDiff - (paddingTensorAppend.shape[paddingAxis] as number);\n\n const paddingTensorPrepend = isCenterImage && remainingPaddingAmount\n ? createPaddingTensor(remainingPaddingAmount)\n : null;\n\n const tensorsToStack = [\n paddingTensorPrepend,\n imgTensor,\n paddingTensorAppend,\n ]\n .filter((t) => !!t)\n // .map((t: tf.Tensor) => t.toFloat()) as tf.Tensor4D[]\n .map((t: tf.Tensor) => tf.cast(t, 'float32')) as tf.Tensor4D[];\n return tf.concat(tensorsToStack, paddingAxis);\n });\n}\n", "export function shuffleArray(inputArray: any[]) {\n const array = inputArray.slice();\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const x = array[i];\n array[i] = array[j];\n array[j] = x;\n }\n return array;\n}\n", "export * from './iou';\nexport * from './minBbox';\nexport * from './nonMaxSuppression';\nexport * from './normalize';\nexport * from './padToSquare';\nexport * from './shuffleArray';\n\nexport function sigmoid(x: number) {\n return 1 / (1 + Math.exp(-x));\n}\n\nexport function inverseSigmoid(x: number) {\n return Math.log(x / (1 - x));\n}\n", "import { Box } from './Box';\n\nexport interface IRect {\n x: number\n y: number\n width: number\n height: number\n}\n\nexport class Rect extends Box implements IRect {\n constructor(x: number, y: number, width: number, height: number, allowNegativeDimensions: boolean = false) {\n super({\n x, y, width, height,\n }, allowNegativeDimensions);\n }\n}\n", "import { minBbox } from '../ops/index';\nimport { getCenterPoint } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { Box } from './Box';\nimport { Dimensions, IDimensions } from './Dimensions';\nimport { FaceDetection } from './FaceDetection';\nimport { Point } from './Point';\nimport { IRect, Rect } from './Rect';\n\n// face alignment constants\nconst relX = 0.5;\nconst relY = 0.43;\nconst relScale = 0.45;\n\nexport interface IFaceLandmarks {\n positions: Point[]\n shift: Point\n}\n\nexport class FaceLandmarks implements IFaceLandmarks {\n protected _shift: Point\n\n protected _positions: Point[]\n\n protected _imgDims: Dimensions\n\n constructor(\n relativeFaceLandmarkPositions: Point[],\n imgDims: IDimensions,\n shift: Point = new Point(0, 0),\n ) {\n const { width, height } = imgDims;\n this._imgDims = new Dimensions(width, height);\n this._shift = shift;\n this._positions = relativeFaceLandmarkPositions.map(\n (pt) => pt.mul(new Point(width, height)).add(shift),\n );\n }\n\n public get shift(): Point { return new Point(this._shift.x, this._shift.y); }\n\n public get imageWidth(): number { return this._imgDims.width; }\n\n public get imageHeight(): number { return this._imgDims.height; }\n\n public get positions(): Point[] { return this._positions; }\n\n public get relativePositions(): Point[] {\n return this._positions.map(\n (pt) => pt.sub(this._shift).div(new Point(this.imageWidth, this.imageHeight)),\n );\n }\n\n public forSize(width: number, height: number): T {\n return new (this.constructor as any)(\n this.relativePositions,\n { width, height },\n );\n }\n\n public shiftBy(x: number, y: number): T {\n return new (this.constructor as any)(\n this.relativePositions,\n this._imgDims,\n new Point(x, y),\n );\n }\n\n public shiftByPoint(pt: Point): T {\n return this.shiftBy(pt.x, pt.y);\n }\n\n /**\n * Aligns the face landmarks after face detection from the relative positions of the faces\n * bounding box, or it's current shift. This function should be used to align the face images\n * after face detection has been performed, before they are passed to the face recognition net.\n * This will make the computed face descriptor more accurate.\n *\n * @param detection (optional) The bounding box of the face or the face detection result. If\n * no argument was passed the position of the face landmarks are assumed to be relative to\n * it's current shift.\n * @returns The bounding box of the aligned face.\n */\n public align(\n detection?: FaceDetection | IRect | IBoundingBox | null,\n options: { useDlibAlignment?: boolean, minBoxPadding?: number } = { },\n ): Box {\n if (detection) {\n const box = detection instanceof FaceDetection\n ? detection.box.floor()\n : new Box(detection);\n\n return this.shiftBy(box.x, box.y).align(null, options);\n }\n\n const { useDlibAlignment, minBoxPadding } = { useDlibAlignment: false, minBoxPadding: 0.2, ...options };\n\n if (useDlibAlignment) {\n return this.alignDlib();\n }\n\n return this.alignMinBbox(minBoxPadding);\n }\n\n private alignDlib(): Box {\n const centers = this.getRefPointsForAlignment();\n\n const [leftEyeCenter, rightEyeCenter, mouthCenter] = centers;\n const distToMouth = (pt: Point) => mouthCenter.sub(pt).magnitude();\n const eyeToMouthDist = (distToMouth(leftEyeCenter) + distToMouth(rightEyeCenter)) / 2;\n\n const size = Math.floor(eyeToMouthDist / relScale);\n\n const refPoint = getCenterPoint(centers);\n // TODO: pad in case rectangle is out of image bounds\n const x = Math.floor(Math.max(0, refPoint.x - (relX * size)));\n const y = Math.floor(Math.max(0, refPoint.y - (relY * size)));\n\n return new Rect(x, y, Math.min(size, this.imageWidth + x), Math.min(size, this.imageHeight + y));\n }\n\n private alignMinBbox(padding: number): Box {\n const box = minBbox(this.positions);\n return box.pad(box.width * padding, box.height * padding);\n }\n\n protected getRefPointsForAlignment(): Point[] {\n throw new Error('getRefPointsForAlignment not implemented by base class');\n }\n}\n", "import { getCenterPoint } from '../utils/index';\nimport { FaceLandmarks } from './FaceLandmarks';\nimport { Point } from './Point';\n\nexport class FaceLandmarks5 extends FaceLandmarks {\n protected getRefPointsForAlignment(): Point[] {\n const pts = this.positions;\n return [\n pts[0],\n pts[1],\n getCenterPoint([pts[3], pts[4]]),\n ];\n }\n}\n", "import { getCenterPoint } from '../utils/index';\nimport { FaceLandmarks } from './FaceLandmarks';\nimport { Point } from './Point';\n\nexport class FaceLandmarks68 extends FaceLandmarks {\n public getJawOutline(): Point[] {\n return this.positions.slice(0, 17);\n }\n\n public getLeftEyeBrow(): Point[] {\n return this.positions.slice(17, 22);\n }\n\n public getRightEyeBrow(): Point[] {\n return this.positions.slice(22, 27);\n }\n\n public getNose(): Point[] {\n return this.positions.slice(27, 36);\n }\n\n public getLeftEye(): Point[] {\n return this.positions.slice(36, 42);\n }\n\n public getRightEye(): Point[] {\n return this.positions.slice(42, 48);\n }\n\n public getMouth(): Point[] {\n return this.positions.slice(48, 68);\n }\n\n protected getRefPointsForAlignment(): Point[] {\n return [\n this.getLeftEye(),\n this.getRightEye(),\n this.getMouth(),\n ].map(getCenterPoint);\n }\n}\n", "import { round } from '../utils/index';\n\nexport interface IFaceMatch {\n label: string\n distance: number\n}\n\nexport class FaceMatch implements IFaceMatch {\n private _label: string\n\n private _distance: number\n\n constructor(label: string, distance: number) {\n this._label = label;\n this._distance = distance;\n }\n\n public get label(): string { return this._label; }\n\n public get distance(): number { return this._distance; }\n\n public toString(withDistance: boolean = true): string {\n return `${this.label}${withDistance ? ` (${round(this.distance)})` : ''}`;\n }\n}\n", "import { isValidNumber } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { Box } from './Box';\nimport { IRect } from './Rect';\n\nexport class LabeledBox extends Box {\n public static assertIsValidLabeledBox(box: any, callee: string) {\n Box.assertIsValidBox(box, callee);\n\n if (!isValidNumber(box.label)) {\n throw new Error(`${callee} - expected property label (${box.label}) to be a number`);\n }\n }\n\n private _label: number\n\n constructor(box: IBoundingBox | IRect | any, label: number) {\n super(box);\n this._label = label;\n }\n\n public get label(): number { return this._label; }\n}\n", "export class LabeledFaceDescriptors {\n private _label: string\n\n private _descriptors: Float32Array[]\n\n constructor(label: string, descriptors: Float32Array[]) {\n if (!(typeof label === 'string')) {\n throw new Error('LabeledFaceDescriptors - constructor expected label to be a string');\n }\n\n if (!Array.isArray(descriptors) || descriptors.some((desc) => !(desc instanceof Float32Array))) {\n throw new Error('LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array');\n }\n\n this._label = label;\n this._descriptors = descriptors;\n }\n\n public get label(): string { return this._label; }\n\n public get descriptors(): Float32Array[] { return this._descriptors; }\n\n public toJSON(): any {\n return {\n label: this.label,\n descriptors: this.descriptors.map((d) => Array.from(d)),\n };\n }\n\n public static fromJSON(json: any): LabeledFaceDescriptors {\n const descriptors = json.descriptors.map((d: any) => new Float32Array(d));\n return new LabeledFaceDescriptors(json.label, descriptors);\n }\n}\n", "import { isValidProbablitiy } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { LabeledBox } from './LabeledBox';\nimport { IRect } from './Rect';\n\nexport class PredictedBox extends LabeledBox {\n public static assertIsValidPredictedBox(box: any, callee: string) {\n LabeledBox.assertIsValidLabeledBox(box, callee);\n\n if (\n !isValidProbablitiy(box.score)\n || !isValidProbablitiy(box.classScore)\n ) {\n throw new Error(`${callee} - expected properties score (${box.score}) and (${box.classScore}) to be a number between [0, 1]`);\n }\n }\n\n private _score: number\n\n private _classScore: number\n\n constructor(box: IBoundingBox | IRect | any, label: number, score: number, classScore: number) {\n super(box, label);\n this._score = score;\n this._classScore = classScore;\n }\n\n public get score(): number { return this._score; }\n\n public get classScore(): number { return this._classScore; }\n}\n", "import { FaceDetection } from '../classes/FaceDetection';\n\nexport type WithFaceDetection = TSource & {\n detection: FaceDetection\n}\n\nexport function isWithFaceDetection(obj: any): obj is WithFaceDetection<{}> {\n return obj.detection instanceof FaceDetection;\n}\n\nexport function extendWithFaceDetection<\n TSource\n>(\n sourceObj: TSource,\n detection: FaceDetection,\n): WithFaceDetection {\n const extension = { detection };\n return { ...sourceObj, ...extension };\n}\n", "import { Environment } from './types';\n\nexport function createBrowserEnv(): Environment {\n const fetch = window.fetch;\n if (!fetch) throw new Error('fetch - missing fetch implementation for browser environment');\n\n const readFile = () => {\n throw new Error('readFile - filesystem not available for browser environment');\n };\n\n return {\n Canvas: HTMLCanvasElement,\n CanvasRenderingContext2D,\n Image: HTMLImageElement,\n ImageData,\n Video: HTMLVideoElement,\n createCanvasElement: () => document.createElement('canvas'),\n createImageElement: () => document.createElement('img'),\n fetch,\n readFile,\n };\n}\n", "import { FileSystem } from './types';\n\nexport function createFileSystem(fs?: any): FileSystem {\n let requireFsError = '';\n\n if (!fs) {\n try {\n // eslint-disable-next-line global-require\n fs = require('fs');\n } catch (err) {\n requireFsError = err.toString();\n }\n }\n\n const readFile = fs\n ? (filePath: string) => new Promise((resolve, reject) => {\n fs.readFile(filePath, (err: any, buffer: Buffer) => (err ? reject(err) : resolve(buffer)));\n })\n : () => {\n throw new Error(`readFile - failed to require fs in nodejs environment with error: ${requireFsError}`);\n };\n\n return {\n readFile,\n };\n}\n", "/* eslint-disable max-classes-per-file */\nimport { createFileSystem } from './createFileSystem';\nimport { Environment } from './types';\n\nexport function createNodejsEnv(): Environment {\n // eslint-disable-next-line dot-notation\n const Canvas = global['Canvas'] || global.HTMLCanvasElement;\n const Image = global.Image || global.HTMLImageElement;\n\n const createCanvasElement = () => {\n if (Canvas) return new Canvas();\n throw new Error('createCanvasElement - missing Canvas implementation for nodejs environment');\n };\n\n const createImageElement = () => {\n if (Image) return new Image();\n throw new Error('createImageElement - missing Image implementation for nodejs environment');\n };\n\n const fetch = global.fetch;\n // if (!fetch) throw new Error('fetch - missing fetch implementation for nodejs environment');\n\n const fileSystem = createFileSystem();\n\n return {\n Canvas: Canvas || class {},\n CanvasRenderingContext2D: global.CanvasRenderingContext2D || class {},\n Image: Image || class {},\n ImageData: global.ImageData || class {},\n Video: global.HTMLVideoElement || class {},\n createCanvasElement,\n createImageElement,\n fetch,\n ...fileSystem,\n };\n}\n", "export function isBrowser(): boolean {\n return typeof window === 'object'\n && typeof document !== 'undefined'\n && typeof HTMLImageElement !== 'undefined'\n && typeof HTMLCanvasElement !== 'undefined'\n && typeof HTMLVideoElement !== 'undefined'\n && typeof ImageData !== 'undefined'\n && typeof CanvasRenderingContext2D !== 'undefined';\n}\n", "import { createBrowserEnv } from './createBrowserEnv';\nimport { createFileSystem } from './createFileSystem';\nimport { createNodejsEnv } from './createNodejsEnv';\nimport { isBrowser } from './isBrowser';\nimport { isNodejs } from './isNodejs';\nimport { Environment } from './types';\n\nlet environment: Environment | null;\n\nfunction getEnv(): Environment {\n if (!environment) {\n throw new Error('getEnv - environment is not defined, check isNodejs() and isBrowser()');\n }\n return environment;\n}\n\nfunction setEnv(env: Environment) {\n environment = env;\n}\n\nfunction initialize() {\n // check for isBrowser() first to prevent electron renderer process\n // to be initialized with wrong environment due to isNodejs() returning true\n if (isBrowser()) return setEnv(createBrowserEnv());\n if (isNodejs()) return setEnv(createNodejsEnv());\n return null;\n}\n\nfunction monkeyPatch(env: Partial) {\n if (!environment) {\n initialize();\n }\n\n if (!environment) {\n throw new Error('monkeyPatch - environment is not defined, check isNodejs() and isBrowser()');\n }\n\n const { Canvas = environment.Canvas, Image = environment.Image } = env;\n environment.Canvas = Canvas;\n environment.Image = Image;\n environment.createCanvasElement = env.createCanvasElement || (() => new Canvas());\n environment.createImageElement = env.createImageElement || (() => new Image());\n\n environment.ImageData = env.ImageData || environment.ImageData;\n environment.Video = env.Video || environment.Video;\n environment.fetch = env.fetch || environment.fetch;\n environment.readFile = env.readFile || environment.readFile;\n}\n\nexport const env = {\n getEnv,\n setEnv,\n initialize,\n createBrowserEnv,\n createFileSystem,\n createNodejsEnv,\n monkeyPatch,\n isBrowser,\n isNodejs,\n};\n\ninitialize();\n\nexport * from './types';\n", "import { env } from '../env/index';\n\nexport function resolveInput(arg: string | any) {\n if (!env.isNodejs() && typeof arg === 'string') {\n return document.getElementById(arg);\n }\n return arg;\n}\n", "import { env } from '../env/index';\nimport { resolveInput } from './resolveInput';\n\nexport function getContext2dOrThrow(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D): CanvasRenderingContext2D {\n const { Canvas, CanvasRenderingContext2D } = env.getEnv();\n\n if (canvasArg instanceof CanvasRenderingContext2D) {\n return canvasArg;\n }\n\n const canvas = resolveInput(canvasArg);\n\n if (!(canvas instanceof Canvas)) {\n throw new Error('resolveContext2d - expected canvas to be of instance of Canvas');\n }\n\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n throw new Error('resolveContext2d - canvas 2d context is null');\n }\n\n return ctx;\n}\n", "/* eslint-disable max-classes-per-file */\nimport { IDimensions, IPoint } from '../classes/index';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { resolveInput } from '../dom/resolveInput';\n\n// eslint-disable-next-line no-shadow\nexport enum AnchorPosition {\n // eslint-disable-next-line no-unused-vars\n TOP_LEFT = 'TOP_LEFT',\n // eslint-disable-next-line no-unused-vars\n TOP_RIGHT = 'TOP_RIGHT',\n // eslint-disable-next-line no-unused-vars\n BOTTOM_LEFT = 'BOTTOM_LEFT',\n // eslint-disable-next-line no-unused-vars\n BOTTOM_RIGHT = 'BOTTOM_RIGHT'\n}\n\nexport interface IDrawTextFieldOptions {\n anchorPosition?: AnchorPosition\n backgroundColor?: string\n fontColor?: string\n fontSize?: number\n fontStyle?: string\n padding?: number\n}\n\nexport class DrawTextFieldOptions implements IDrawTextFieldOptions {\n public anchorPosition: AnchorPosition\n\n public backgroundColor: string\n\n public fontColor: string\n\n public fontSize: number\n\n public fontStyle: string\n\n public padding: number\n\n constructor(options: IDrawTextFieldOptions = {}) {\n const {\n anchorPosition, backgroundColor, fontColor, fontSize, fontStyle, padding,\n } = options;\n this.anchorPosition = anchorPosition || AnchorPosition.TOP_LEFT;\n this.backgroundColor = backgroundColor || 'rgba(0, 0, 0, 0.5)';\n this.fontColor = fontColor || 'rgba(255, 255, 255, 1)';\n this.fontSize = fontSize || 14;\n this.fontStyle = fontStyle || 'Georgia';\n this.padding = padding || 4;\n }\n}\n\nexport class DrawTextField {\n public text: string[]\n\n public anchor : IPoint\n\n public options: DrawTextFieldOptions\n\n constructor(\n text: string | string[] | DrawTextField,\n anchor: IPoint,\n options: IDrawTextFieldOptions = {},\n ) {\n // eslint-disable-next-line no-nested-ternary\n this.text = typeof text === 'string'\n ? [text]\n : (text instanceof DrawTextField ? text.text : text);\n this.anchor = anchor;\n this.options = new DrawTextFieldOptions(options);\n }\n\n measureWidth(ctx: CanvasRenderingContext2D): number {\n const { padding } = this.options;\n return this.text.map((l) => ctx.measureText(l).width).reduce((w0, w1) => (w0 < w1 ? w1 : w0), 0) + (2 * padding);\n }\n\n measureHeight(): number {\n const { fontSize, padding } = this.options;\n return this.text.length * fontSize + (2 * padding);\n }\n\n getUpperLeft(ctx: CanvasRenderingContext2D, canvasDims?: IDimensions): IPoint {\n const { anchorPosition } = this.options;\n const isShiftLeft = anchorPosition === AnchorPosition.BOTTOM_RIGHT || anchorPosition === AnchorPosition.TOP_RIGHT;\n const isShiftTop = anchorPosition === AnchorPosition.BOTTOM_LEFT || anchorPosition === AnchorPosition.BOTTOM_RIGHT;\n\n const textFieldWidth = this.measureWidth(ctx);\n const textFieldHeight = this.measureHeight();\n const x = (isShiftLeft ? this.anchor.x - textFieldWidth : this.anchor.x);\n const y = isShiftTop ? this.anchor.y - textFieldHeight : this.anchor.y;\n\n // adjust anchor if text box exceeds canvas borders\n if (canvasDims) {\n const { width, height } = canvasDims;\n const newX = Math.max(Math.min(x, width - textFieldWidth), 0);\n const newY = Math.max(Math.min(y, height - textFieldHeight), 0);\n return { x: newX, y: newY };\n }\n return { x, y };\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const canvas = resolveInput(canvasArg);\n const ctx = getContext2dOrThrow(canvas);\n\n const {\n backgroundColor, fontColor, fontSize, fontStyle, padding,\n } = this.options;\n\n ctx.font = `${fontSize}px ${fontStyle}`;\n const maxTextWidth = this.measureWidth(ctx);\n const textHeight = this.measureHeight();\n\n ctx.fillStyle = backgroundColor;\n const upperLeft = this.getUpperLeft(ctx, canvas);\n ctx.fillRect(upperLeft.x, upperLeft.y, maxTextWidth, textHeight);\n\n ctx.fillStyle = fontColor;\n this.text.forEach((textLine, i) => {\n const x = padding + upperLeft.x;\n const y = padding + upperLeft.y + ((i + 1) * fontSize);\n ctx.fillText(textLine, x, y);\n });\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport { Box, IBoundingBox, IRect } from '../classes/index';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport {\n AnchorPosition, DrawTextField, DrawTextFieldOptions, IDrawTextFieldOptions,\n} from './DrawTextField';\n\nexport interface IDrawBoxOptions {\n boxColor?: string\n lineWidth?: number\n drawLabelOptions?: IDrawTextFieldOptions\n label?: string\n}\n\nexport class DrawBoxOptions {\n public boxColor: string\n\n public lineWidth: number\n\n public drawLabelOptions: DrawTextFieldOptions\n\n public label?: string\n\n constructor(options: IDrawBoxOptions = {}) {\n const {\n boxColor, lineWidth, label, drawLabelOptions,\n } = options;\n this.boxColor = boxColor || 'rgba(0, 0, 255, 1)';\n this.lineWidth = lineWidth || 2;\n this.label = label;\n\n const defaultDrawLabelOptions = {\n anchorPosition: AnchorPosition.BOTTOM_LEFT,\n backgroundColor: this.boxColor,\n };\n this.drawLabelOptions = new DrawTextFieldOptions({ ...defaultDrawLabelOptions, ...drawLabelOptions });\n }\n}\n\nexport class DrawBox {\n public box: Box\n\n public options: DrawBoxOptions\n\n constructor(\n box: IBoundingBox | IRect,\n options: IDrawBoxOptions = {},\n ) {\n this.box = new Box(box);\n this.options = new DrawBoxOptions(options);\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const ctx = getContext2dOrThrow(canvasArg);\n\n const { boxColor, lineWidth } = this.options;\n\n const {\n x, y, width, height,\n } = this.box;\n ctx.strokeStyle = boxColor;\n ctx.lineWidth = lineWidth;\n ctx.strokeRect(x, y, width, height);\n\n const { label } = this.options;\n if (label) {\n new DrawTextField([label], { x: x - (lineWidth / 2), y }, this.options.drawLabelOptions).draw(canvasArg);\n }\n }\n}\n", "import { Box, IBoundingBox, IRect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { isWithFaceDetection, WithFaceDetection } from '../factories/WithFaceDetection';\nimport { round } from '../utils/index';\nimport { DrawBox } from './DrawBox';\n\nexport type TDrawDetectionsInput = IRect | IBoundingBox | FaceDetection | WithFaceDetection<{}>\n\nexport function drawDetections(\n canvasArg: string | HTMLCanvasElement,\n detections: TDrawDetectionsInput | Array,\n) {\n const detectionsArray = Array.isArray(detections) ? detections : [detections];\n\n detectionsArray.forEach((det) => {\n // eslint-disable-next-line no-nested-ternary\n const score = det instanceof FaceDetection\n ? det.score\n : (isWithFaceDetection(det) ? det.detection.score : undefined);\n\n // eslint-disable-next-line no-nested-ternary\n const box = det instanceof FaceDetection\n ? det.box\n : (isWithFaceDetection(det) ? det.detection.box : new Box(det));\n\n const label = score ? `${round(score)}` : undefined;\n new DrawBox(box, { label }).draw(canvasArg);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';\nimport { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { FaceExpressions } from './FaceExpressions';\n\nexport class FaceExpressionNet extends FaceProcessor {\n constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) {\n super('FaceExpressionNet', faceFeatureExtractor);\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n return tf.tidy(() => tf.softmax(this.runNet(input)));\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async predictExpressions(input: TNetInput) {\n const netInput = await toNetInput(input);\n const out = await this.forwardInput(netInput);\n const probabilitesByBatch = await Promise.all(tf.unstack(out).map(async (t) => {\n const data = await t.data();\n t.dispose();\n return data;\n }));\n out.dispose();\n\n const predictionsByBatch = probabilitesByBatch\n .map((probabilites) => new FaceExpressions(probabilites as Float32Array));\n\n return netInput.isBatchInput\n ? predictionsByBatch\n : predictionsByBatch[0];\n }\n\n protected getDefaultModelName(): string {\n return 'face_expression_model';\n }\n\n protected getClassifierChannelsIn(): number {\n return 256;\n }\n\n protected getClassifierChannelsOut(): number {\n return 7;\n }\n}\n", "import { env } from '../env/index';\n\nexport function isMediaLoaded(media: HTMLImageElement | HTMLVideoElement) : boolean {\n const { Image, Video } = env.getEnv();\n\n return (media instanceof Image && media.complete)\n || (media instanceof Video && media.readyState >= 3);\n}\n", "import { env } from '../env/index';\nimport { isMediaLoaded } from './isMediaLoaded';\n\nexport function awaitMediaLoaded(media: HTMLImageElement | HTMLVideoElement | HTMLCanvasElement) {\n // eslint-disable-next-line consistent-return\n return new Promise((resolve, reject) => {\n if (media instanceof env.getEnv().Canvas || isMediaLoaded(media)) {\n return resolve(null);\n }\n\n function onError(e: Event) {\n if (!e.currentTarget) return;\n // eslint-disable-next-line no-use-before-define\n e.currentTarget.removeEventListener('load', onLoad);\n e.currentTarget.removeEventListener('error', onError);\n reject(e);\n }\n\n function onLoad(e: Event) {\n if (!e.currentTarget) return;\n e.currentTarget.removeEventListener('load', onLoad);\n e.currentTarget.removeEventListener('error', onError);\n resolve(e);\n }\n\n media.addEventListener('load', onLoad);\n media.addEventListener('error', onError);\n });\n}\n", "import { env } from '../env/index';\n\nexport function bufferToImage(buf: Blob): Promise {\n return new Promise((resolve, reject) => {\n if (!(buf instanceof Blob)) reject(new Error('bufferToImage - expected buf to be of type: Blob'));\n const reader = new FileReader();\n reader.onload = () => {\n if (typeof reader.result !== 'string') reject(new Error('bufferToImage - expected reader.result to be a string, in onload'));\n const img = env.getEnv().createImageElement();\n img.onload = () => resolve(img);\n img.onerror = reject;\n img.src = reader.result as string;\n };\n reader.onerror = reject;\n reader.readAsDataURL(buf);\n });\n}\n", "import { Dimensions, IDimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\n\nexport function getMediaDimensions(input: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | IDimensions): Dimensions {\n const { Image, Video } = env.getEnv();\n\n if (input instanceof Image) {\n return new Dimensions(input.naturalWidth, input.naturalHeight);\n }\n if (input instanceof Video) {\n return new Dimensions(input.videoWidth, input.videoHeight);\n }\n return new Dimensions(input.width, input.height);\n}\n", "import { IDimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { getMediaDimensions } from './getMediaDimensions';\nimport { isMediaLoaded } from './isMediaLoaded';\n\nexport function createCanvas({ width, height }: IDimensions): HTMLCanvasElement {\n const { createCanvasElement } = env.getEnv();\n const canvas = createCanvasElement();\n canvas.width = width;\n canvas.height = height;\n return canvas;\n}\n\nexport function createCanvasFromMedia(media: HTMLImageElement | HTMLVideoElement | ImageData, dims?: IDimensions): HTMLCanvasElement {\n const { ImageData } = env.getEnv();\n\n if (!(media instanceof ImageData) && !isMediaLoaded(media)) {\n throw new Error('createCanvasFromMedia - media has not finished loading yet');\n }\n\n const { width, height } = dims || getMediaDimensions(media);\n const canvas = createCanvas({ width, height });\n\n if (media instanceof ImageData) {\n getContext2dOrThrow(canvas).putImageData(media, 0, 0);\n } else {\n getContext2dOrThrow(canvas).drawImage(media, 0, 0, width, height);\n }\n return canvas;\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { env } from '../env/index';\nimport { isTensor4D } from '../utils/index';\n\nexport async function imageTensorToCanvas(\n imgTensor: tf.Tensor,\n canvas?: HTMLCanvasElement,\n): Promise {\n const targetCanvas = canvas || env.getEnv().createCanvasElement();\n\n const [height, width, numChannels] = imgTensor.shape.slice(isTensor4D(imgTensor) ? 1 : 0);\n const imgTensor3D = tf.tidy(() => imgTensor.as3D(height, width, numChannels).toInt());\n await tf.browser.toPixels(imgTensor3D, targetCanvas);\n\n imgTensor3D.dispose();\n\n return targetCanvas;\n}\n", "import { env } from '../env/index';\n\nexport function isMediaElement(input: any) {\n const { Image, Canvas, Video } = env.getEnv();\n\n return input instanceof Image\n || input instanceof Canvas\n || input instanceof Video;\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { Dimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\nimport { padToSquare } from '../ops/padToSquare';\nimport {\n computeReshapedDimensions, isTensor3D, isTensor4D, range,\n} from '../utils/index';\nimport { createCanvasFromMedia } from './createCanvas';\nimport { imageToSquare } from './imageToSquare';\nimport { TResolvedNetInput } from './types';\n\nexport class NetInput {\n private _imageTensors: Array = []\n\n private _canvases: HTMLCanvasElement[] = []\n\n private _batchSize: number\n\n private _treatAsBatchInput: boolean = false\n\n private _inputDimensions: number[][] = []\n\n private _inputSize: number\n\n constructor(\n inputs: Array,\n treatAsBatchInput: boolean = false,\n ) {\n if (!Array.isArray(inputs)) {\n throw new Error(`NetInput.constructor - expected inputs to be an Array of TResolvedNetInput or to be instanceof tf.Tensor4D, instead have ${inputs}`);\n }\n\n this._treatAsBatchInput = treatAsBatchInput;\n this._batchSize = inputs.length;\n\n inputs.forEach((input, idx) => {\n if (isTensor3D(input)) {\n this._imageTensors[idx] = input;\n this._inputDimensions[idx] = input.shape;\n return;\n }\n\n if (isTensor4D(input)) {\n const batchSize = (input as any).shape[0];\n if (batchSize !== 1) {\n throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);\n }\n\n this._imageTensors[idx] = input;\n this._inputDimensions[idx] = (input as any).shape.slice(1);\n return;\n }\n\n const canvas = (input as any) instanceof env.getEnv().Canvas ? input : createCanvasFromMedia(input);\n this._canvases[idx] = canvas;\n this._inputDimensions[idx] = [canvas.height, canvas.width, 3];\n });\n }\n\n public get imageTensors(): Array {\n return this._imageTensors;\n }\n\n public get canvases(): HTMLCanvasElement[] {\n return this._canvases;\n }\n\n public get isBatchInput(): boolean {\n return this.batchSize > 1 || this._treatAsBatchInput;\n }\n\n public get batchSize(): number {\n return this._batchSize;\n }\n\n public get inputDimensions(): number[][] {\n return this._inputDimensions;\n }\n\n public get inputSize(): number | undefined {\n return this._inputSize;\n }\n\n public get reshapedInputDimensions(): Dimensions[] {\n return range(this.batchSize, 0, 1).map(\n (_, batchIdx) => this.getReshapedInputDimensions(batchIdx),\n );\n }\n\n public getInput(batchIdx: number): tf.Tensor3D | tf.Tensor4D | HTMLCanvasElement {\n return this.canvases[batchIdx] || this.imageTensors[batchIdx];\n }\n\n public getInputDimensions(batchIdx: number): number[] {\n return this._inputDimensions[batchIdx];\n }\n\n public getInputHeight(batchIdx: number): number {\n return this._inputDimensions[batchIdx][0];\n }\n\n public getInputWidth(batchIdx: number): number {\n return this._inputDimensions[batchIdx][1];\n }\n\n public getReshapedInputDimensions(batchIdx: number): Dimensions {\n if (typeof this.inputSize !== 'number') {\n throw new Error('getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet');\n }\n\n const width = this.getInputWidth(batchIdx);\n const height = this.getInputHeight(batchIdx);\n return computeReshapedDimensions({ width, height }, this.inputSize);\n }\n\n /**\n * Create a batch tensor from all input canvases and tensors\n * with size [batchSize, inputSize, inputSize, 3].\n *\n * @param inputSize Height and width of the tensor.\n * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on\n * both sides of the minor dimension oof the image.\n * @returns The batch tensor.\n */\n public toBatchTensor(inputSize: number, isCenterInputs: boolean = true): tf.Tensor4D {\n this._inputSize = inputSize;\n\n return tf.tidy(() => {\n const inputTensors = range(this.batchSize, 0, 1).map((batchIdx) => {\n const input = this.getInput(batchIdx);\n\n if (input instanceof tf.Tensor) {\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n let imgTensor = isTensor4D(input) ? input : input.expandDims();\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n imgTensor = padToSquare(imgTensor, isCenterInputs);\n\n if (imgTensor.shape[1] !== inputSize || imgTensor.shape[2] !== inputSize) {\n imgTensor = tf.image.resizeBilinear(imgTensor, [inputSize, inputSize]);\n }\n\n return imgTensor.as3D(inputSize, inputSize, 3);\n }\n\n if (input instanceof env.getEnv().Canvas) {\n return tf.browser.fromPixels(imageToSquare(input, inputSize, isCenterInputs));\n }\n\n throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input}`);\n });\n\n // const batchTensor = tf.stack(inputTensors.map(t => t.toFloat())).as4D(this.batchSize, inputSize, inputSize, 3)\n const batchTensor = tf.stack(inputTensors.map((t) => tf.cast(t, 'float32'))).as4D(this.batchSize, inputSize, inputSize, 3);\n // const batchTensor = tf.stack(inputTensors.map(t => tf.Tensor.as4D(tf.cast(t, 'float32'))), this.batchSize, inputSize, inputSize, 3);\n\n return batchTensor;\n });\n }\n}\n", "import { env } from '../env/index';\nimport { createCanvas, createCanvasFromMedia } from './createCanvas';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { getMediaDimensions } from './getMediaDimensions';\n\nexport function imageToSquare(input: HTMLImageElement | HTMLCanvasElement, inputSize: number, centerImage: boolean = false) {\n const { Image, Canvas } = env.getEnv();\n\n if (!(input instanceof Image || input instanceof Canvas)) {\n throw new Error('imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement');\n }\n\n const dims = getMediaDimensions(input);\n const scale = inputSize / Math.max(dims.height, dims.width);\n const width = scale * dims.width;\n const height = scale * dims.height;\n\n const targetCanvas = createCanvas({ width: inputSize, height: inputSize });\n const inputCanvas = input instanceof Canvas ? input : createCanvasFromMedia(input);\n\n const offset = Math.abs(width - height) / 2;\n const dx = centerImage && width < height ? offset : 0;\n const dy = centerImage && height < width ? offset : 0;\n getContext2dOrThrow(targetCanvas).drawImage(inputCanvas, dx, dy, width, height);\n\n return targetCanvas;\n}\n", "import { isTensor3D, isTensor4D } from '../utils/index';\nimport { awaitMediaLoaded } from './awaitMediaLoaded';\nimport { isMediaElement } from './isMediaElement';\nimport { NetInput } from './NetInput';\nimport { resolveInput } from './resolveInput';\nimport { TNetInput } from './types';\n\n/**\n * Validates the input to make sure, they are valid net inputs and awaits all media elements\n * to be finished loading.\n *\n * @param input The input, which can be a media element or an array of different media elements.\n * @returns A NetInput instance, which can be passed into one of the neural networks.\n */\nexport async function toNetInput(inputs: TNetInput): Promise {\n if (inputs instanceof NetInput) {\n return inputs;\n }\n\n const inputArgArray = Array.isArray(inputs)\n ? inputs\n : [inputs];\n\n if (!inputArgArray.length) {\n throw new Error('toNetInput - empty array passed as input');\n }\n\n const getIdxHint = (idx: number) => (Array.isArray(inputs) ? ` at input index ${idx}:` : '');\n\n const inputArray = inputArgArray.map(resolveInput);\n\n inputArray.forEach((input, i) => {\n if (!isMediaElement(input) && !isTensor3D(input) && !isTensor4D(input)) {\n if (typeof inputArgArray[i] === 'string') {\n throw new Error(`toNetInput -${getIdxHint(i)} string passed, but could not resolve HTMLElement for element id ${inputArgArray[i]}`);\n }\n\n throw new Error(`toNetInput -${getIdxHint(i)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`);\n }\n\n if (isTensor4D(input)) {\n // if tf.Tensor4D is passed in the input array, the batch size has to be 1\n const batchSize = input.shape[0];\n if (batchSize !== 1) {\n throw new Error(`toNetInput -${getIdxHint(i)} tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);\n }\n }\n });\n\n // wait for all media elements being loaded\n await Promise.all(\n inputArray.map((input) => isMediaElement(input) && awaitMediaLoaded(input)),\n );\n\n return new NetInput(inputArray, Array.isArray(inputs));\n}\n", "import { FaceDetection } from '../classes/FaceDetection';\nimport { Rect } from '../classes/Rect';\nimport { env } from '../env/index';\nimport { createCanvas } from './createCanvas';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { imageTensorToCanvas } from './imageTensorToCanvas';\nimport { toNetInput } from './toNetInput';\nimport { TNetInput } from './types';\n\n/**\n * Extracts the image regions containing the detected faces.\n *\n * @param input The image that face detection has been performed on.\n * @param detections The face detection results or face bounding boxes for that image.\n * @returns The Canvases of the corresponding image region for each detected face.\n */\nexport async function extractFaces(\n input: TNetInput,\n detections: Array,\n): Promise {\n const { Canvas } = env.getEnv();\n\n let canvas = input as HTMLCanvasElement;\n\n if (!(input instanceof Canvas)) {\n const netInput = await toNetInput(input);\n\n if (netInput.batchSize > 1) {\n throw new Error('extractFaces - batchSize > 1 not supported');\n }\n\n const tensorOrCanvas = netInput.getInput(0);\n canvas = tensorOrCanvas instanceof Canvas\n ? tensorOrCanvas\n : await imageTensorToCanvas(tensorOrCanvas);\n }\n\n const ctx = getContext2dOrThrow(canvas);\n const boxes = detections.map(\n (det) => (det instanceof FaceDetection\n ? det.forSize(canvas.width, canvas.height).box.floor()\n : det),\n )\n .map((box) => box.clipAtImageBorders(canvas.width, canvas.height));\n\n return boxes.map(({\n x, y, width, height,\n }) => {\n const faceImg = createCanvas({ width, height });\n getContext2dOrThrow(faceImg)\n .putImageData(ctx.getImageData(x, y, width, height), 0, 0);\n return faceImg;\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { isTensor3D, isTensor4D } from '../utils/index';\n\n/**\n * Extracts the tensors of the image regions containing the detected faces.\n * Useful if you want to compute the face descriptors for the face images.\n * Using this method is faster then extracting a canvas for each face and\n * converting them to tensors individually.\n *\n * @param imageTensor The image tensor that face detection has been performed on.\n * @param detections The face detection results or face bounding boxes for that image.\n * @returns Tensors of the corresponding image region for each detected face.\n */\nexport async function extractFaceTensors(\n imageTensor: tf.Tensor3D | tf.Tensor4D,\n detections: Array,\n): Promise {\n if (!isTensor3D(imageTensor) && !isTensor4D(imageTensor)) {\n throw new Error('extractFaceTensors - expected image tensor to be 3D or 4D');\n }\n\n if (isTensor4D(imageTensor) && imageTensor.shape[0] > 1) {\n throw new Error('extractFaceTensors - batchSize > 1 not supported');\n }\n\n return tf.tidy(() => {\n const [imgHeight, imgWidth, numChannels] = imageTensor.shape.slice(isTensor4D(imageTensor) ? 1 : 0);\n\n const boxes = detections.map(\n (det) => (det instanceof FaceDetection\n ? det.forSize(imgWidth, imgHeight).box\n : det),\n )\n .map((box) => box.clipAtImageBorders(imgWidth, imgHeight));\n\n const faceTensors = boxes.map(({\n x, y, width, height,\n }) => tf.slice3d(imageTensor.as3D(imgHeight, imgWidth, numChannels), [y, x, 0], [height, width, numChannels]));\n\n return faceTensors;\n });\n}\n", "import { env } from '../env/index';\n\nexport async function fetchOrThrow(\n url: string,\n // eslint-disable-next-line no-undef\n init?: RequestInit,\n): Promise {\n const { fetch } = env.getEnv();\n const res = await fetch(url, init);\n if (!(res.status < 400)) {\n throw new Error(`failed to fetch: (${res.status}) ${res.statusText}, from url: ${res.url}`);\n }\n return res;\n}\n", "import { bufferToImage } from './bufferToImage';\nimport { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchImage(uri: string): Promise {\n const res = await fetchOrThrow(uri);\n const blob = await (res).blob();\n\n if (!blob.type.startsWith('image/')) {\n throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${blob.type}, for url: ${res.url}`);\n }\n return bufferToImage(blob);\n}\n", "import { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchJson(uri: string): Promise {\n return (await fetchOrThrow(uri)).json();\n}\n", "import { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchNetWeights(uri: string): Promise {\n return new Float32Array(await (await fetchOrThrow(uri)).arrayBuffer());\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { getModelUris } from '../common/getModelUris';\nimport { fetchJson } from './fetchJson';\n\nexport async function loadWeightMap(\n uri: string | undefined,\n defaultModelName: string,\n): Promise {\n const { manifestUri, modelBaseUri } = getModelUris(uri, defaultModelName);\n const manifest = await fetchJson(manifestUri);\n // if (manifest['weightsManifest']) manifest = manifest['weightsManifest'];\n return tf.io.loadWeights(manifest, modelBaseUri);\n}\n", "export function getModelUris(uri: string | undefined, defaultModelName: string) {\n const defaultManifestFilename = `${defaultModelName}-weights_manifest.json`;\n\n if (!uri) {\n return {\n modelBaseUri: '',\n manifestUri: defaultManifestFilename,\n };\n }\n\n if (uri === '/') {\n return {\n modelBaseUri: '/',\n manifestUri: `/${defaultManifestFilename}`,\n };\n }\n // eslint-disable-next-line no-nested-ternary\n const protocol = uri.startsWith('http://') ? 'http://' : uri.startsWith('https://') ? 'https://' : '';\n uri = uri.replace(protocol, '');\n\n const parts = uri.split('/').filter((s) => s);\n\n const manifestFile = uri.endsWith('.json')\n ? parts[parts.length - 1]\n : defaultManifestFilename;\n\n let modelBaseUri = protocol + (uri.endsWith('.json') ? parts.slice(0, parts.length - 1) : parts).join('/');\n modelBaseUri = uri.startsWith('/') ? `/${modelBaseUri}` : modelBaseUri;\n\n return {\n modelBaseUri,\n manifestUri: modelBaseUri === '/' ? `/${manifestFile}` : `${modelBaseUri}/${manifestFile}`,\n };\n}\n", "import { IDimensions } from '../classes/index';\nimport { getMediaDimensions } from './getMediaDimensions';\n\nexport function matchDimensions(input: IDimensions, reference: IDimensions, useMediaDimensions: boolean = false) {\n const { width, height } = useMediaDimensions\n ? getMediaDimensions(reference)\n : reference;\n input.width = width;\n input.height = height;\n return { width, height };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock4 } from './denseBlock';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { FaceFeatureExtractorParams, IFaceFeatureExtractor } from './types';\n\nexport class FaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n constructor() {\n super('FaceFeatureExtractor');\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('FaceFeatureExtractor - load model before inference');\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D;\n\n let out = denseBlock4(normalized, params.dense0, true);\n out = denseBlock4(out, params.dense1);\n out = denseBlock4(out, params.dense2);\n out = denseBlock4(out, params.dense3);\n out = tf.avgPool(out, [7, 7], [2, 2], 'valid');\n\n return out;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights);\n }\n}\n", "import * as tf from '../dist/tfjs.esm';\n\nimport { ParamMapping } from './common/index';\nimport { getModelUris } from './common/getModelUris';\nimport { loadWeightMap } from './dom/index';\nimport { env } from './env/index';\n\nexport abstract class NeuralNetwork {\n protected _params: TNetParams | undefined = undefined\n\n protected _paramMappings: ParamMapping[] = []\n\n public _name: any;\n\n public get params(): TNetParams | undefined { return this._params; }\n\n public get paramMappings(): ParamMapping[] { return this._paramMappings; }\n\n public get isLoaded(): boolean { return !!this.params; }\n\n public getParamFromPath(paramPath: string): tf.Tensor {\n const { obj, objProp } = this.traversePropertyPath(paramPath);\n return obj[objProp];\n }\n\n public reassignParamFromPath(paramPath: string, tensor: tf.Tensor) {\n const { obj, objProp } = this.traversePropertyPath(paramPath);\n obj[objProp].dispose();\n obj[objProp] = tensor;\n }\n\n public getParamList() {\n return this._paramMappings.map(({ paramPath }) => ({\n path: paramPath,\n tensor: this.getParamFromPath(paramPath),\n }));\n }\n\n public getTrainableParams() {\n return this.getParamList().filter((param) => param.tensor instanceof tf.Variable);\n }\n\n public getFrozenParams() {\n return this.getParamList().filter((param) => !(param.tensor instanceof tf.Variable));\n }\n\n public variable() {\n this.getFrozenParams().forEach(({ path, tensor }) => {\n this.reassignParamFromPath(path, tensor.variable());\n });\n }\n\n public freeze() {\n this.getTrainableParams().forEach(({ path, tensor: variable }) => {\n const tensor = tf.tensor(variable.dataSync());\n variable.dispose();\n this.reassignParamFromPath(path, tensor);\n });\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.getParamList().forEach((param) => {\n if (throwOnRedispose && param.tensor.isDisposed) {\n throw new Error(`param tensor has already been disposed for path ${param.path}`);\n }\n param.tensor.dispose();\n });\n this._params = undefined;\n }\n\n public serializeParams(): Float32Array {\n return new Float32Array(\n this.getParamList()\n .map(({ tensor }) => Array.from(tensor.dataSync()) as number[])\n .reduce((flat, arr) => flat.concat(arr)),\n );\n }\n\n public async load(weightsOrUrl: Float32Array | string | undefined): Promise {\n if (weightsOrUrl instanceof Float32Array) {\n this.extractWeights(weightsOrUrl);\n return;\n }\n\n await this.loadFromUri(weightsOrUrl);\n }\n\n public async loadFromUri(uri: string | undefined) {\n if (uri && typeof uri !== 'string') {\n throw new Error(`${this._name}.loadFromUri - expected model uri`);\n }\n\n const weightMap = await loadWeightMap(uri, this.getDefaultModelName());\n this.loadFromWeightMap(weightMap);\n }\n\n public async loadFromDisk(filePath: string | undefined) {\n if (filePath && typeof filePath !== 'string') {\n throw new Error(`${this._name}.loadFromDisk - expected model file path`);\n }\n\n const { readFile } = env.getEnv();\n\n const { manifestUri, modelBaseUri } = getModelUris(filePath, this.getDefaultModelName());\n\n const fetchWeightsFromDisk = (filePaths: string[]) => Promise.all(\n filePaths.map((fp) => readFile(fp).then((buf) => buf.buffer)),\n );\n const loadWeights = tf.io.weightsLoaderFactory(fetchWeightsFromDisk);\n const manifest = JSON.parse((await readFile(manifestUri)).toString());\n const weightMap = await loadWeights(manifest, modelBaseUri);\n\n this.loadFromWeightMap(weightMap);\n }\n\n public loadFromWeightMap(weightMap: tf.NamedTensorMap) {\n const {\n paramMappings,\n params,\n } = this.extractParamsFromWeigthMap(weightMap);\n\n this._paramMappings = paramMappings;\n this._params = params;\n }\n\n public extractWeights(weights: Float32Array) {\n const {\n paramMappings,\n params,\n } = this.extractParams(weights);\n\n this._paramMappings = paramMappings;\n this._params = params;\n }\n\n private traversePropertyPath(paramPath: string) {\n if (!this.params) {\n throw new Error('traversePropertyPath - model has no loaded params');\n }\n\n const result = paramPath.split('/').reduce((res: { nextObj: any, obj?: any, objProp?: string }, objProp) => {\n // eslint-disable-next-line no-prototype-builtins\n if (!res.nextObj.hasOwnProperty(objProp)) {\n throw new Error(`traversePropertyPath - object does not have property ${objProp}, for path ${paramPath}`);\n }\n\n return { obj: res.nextObj, objProp, nextObj: res.nextObj[objProp] };\n }, { nextObj: this.params });\n\n const { obj, objProp } = result;\n if (!obj || !objProp || !(obj[objProp] instanceof tf.Tensor)) {\n throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${paramPath}`);\n }\n\n return { obj, objProp };\n }\n\n protected abstract getDefaultModelName(): string\n\n // eslint-disable-next-line no-unused-vars\n protected abstract extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TNetParams, paramMappings: ParamMapping[] }\n\n // eslint-disable-next-line no-unused-vars\n protected abstract extractParams(weights: Float32Array): { params: TNetParams, paramMappings: ParamMapping[] }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ConvParams, SeparableConvParams } from '../common/index';\nimport { depthwiseSeparableConv } from '../common/depthwiseSeparableConv';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function denseBlock3(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock3Params,\n isFirstLayer: boolean = false,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, [2, 2], 'same'),\n denseBlockParams.conv0.bias,\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, [2, 2]),\n ) as tf.Tensor4D;\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1]);\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D;\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1]);\n\n return tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D;\n });\n}\n\nexport function denseBlock4(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock4Params,\n isFirstLayer: boolean = false,\n isScaleDown: boolean = true,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, isScaleDown ? [2, 2] : [1, 1], 'same'),\n denseBlockParams.conv0.bias,\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, isScaleDown ? [2, 2] : [1, 1]),\n ) as tf.Tensor4D;\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1]);\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D;\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1]);\n\n const in4 = tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D;\n const out4 = depthwiseSeparableConv(in4, denseBlockParams.conv3, [1, 1]);\n\n return tf.relu(tf.add(out1, tf.add(out2, tf.add(out3, out4)))) as tf.Tensor4D;\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { SeparableConvParams } from './types';\n\nexport function depthwiseSeparableConv(\n x: tf.Tensor4D,\n params: SeparableConvParams,\n stride: [number, number],\n): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.separableConv2d(x, params.depthwise_filter, params.pointwise_filter, stride, 'same');\n out = tf.add(out, params.bias);\n return out;\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ConvParams } from './types';\n\nexport function convLayer(\n x: tf.Tensor4D,\n params: ConvParams,\n padding: 'valid' | 'same' = 'same',\n withRelu: boolean = false,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out = tf.add(\n tf.conv2d(x, params.filters, [1, 1], padding),\n params.bias,\n ) as tf.Tensor4D;\n\n return withRelu ? tf.relu(out) : out;\n });\n}\n", "import { ParamMapping } from './types';\n\nexport function disposeUnusedWeightTensors(weightMap: any, paramMappings: ParamMapping[]) {\n Object.keys(weightMap).forEach((path) => {\n if (!paramMappings.some((pm) => pm.originalPath === path)) {\n weightMap[path].dispose();\n }\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ConvParams, ExtractWeightsFunction, ParamMapping } from './types';\n\nexport function extractConvParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[],\n) {\n return (\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n ): ConvParams => {\n const filters = tf.tensor4d(\n extractWeights(channelsIn * channelsOut * filterSize * filterSize),\n [filterSize, filterSize, channelsIn, channelsOut],\n );\n const bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return { filters, bias };\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ExtractWeightsFunction, FCParams, ParamMapping } from './types';\n\nexport function extractFCParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[],\n) {\n return (\n channelsIn: number,\n channelsOut: number,\n mappedPrefix: string,\n ): FCParams => {\n const fc_weights = tf.tensor2d(extractWeights(channelsIn * channelsOut), [channelsIn, channelsOut]);\n const fc_bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/weights` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return {\n weights: fc_weights,\n bias: fc_bias,\n };\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ExtractWeightsFunction, ParamMapping, SeparableConvParams } from './types';\n\nexport function extractSeparableConvParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[],\n) {\n return (channelsIn: number, channelsOut: number, mappedPrefix: string): SeparableConvParams => {\n const depthwise_filter = tf.tensor4d(extractWeights(3 * 3 * channelsIn), [3, 3, channelsIn, 1]);\n const pointwise_filter = tf.tensor4d(extractWeights(channelsIn * channelsOut), [1, 1, channelsIn, channelsOut]);\n const bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/depthwise_filter` },\n { paramPath: `${mappedPrefix}/pointwise_filter` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias,\n );\n };\n}\n\nexport function loadSeparableConvParamsFactory(\n // eslint-disable-next-line no-unused-vars\n extractWeightEntry: (originalPath: string, paramRank: number) => T,\n) {\n return (prefix: string): SeparableConvParams => {\n const depthwise_filter = extractWeightEntry(`${prefix}/depthwise_filter`, 4);\n const pointwise_filter = extractWeightEntry(`${prefix}/pointwise_filter`, 4);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias,\n );\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\n// eslint-disable-next-line no-unused-vars\nexport type ExtractWeightsFunction = (numWeights: number) => Float32Array\n\nexport type ParamMapping = {\n originalPath?: string\n paramPath: string\n}\n\nexport type ConvParams = {\n filters: tf.Tensor4D\n bias: tf.Tensor1D\n}\n\nexport type FCParams = {\n weights: tf.Tensor2D\n bias: tf.Tensor1D\n}\n\nexport class SeparableConvParams {\n // eslint-disable-next-line no-useless-constructor\n constructor(\n // eslint-disable-next-line no-unused-vars\n public depthwise_filter: tf.Tensor4D,\n // eslint-disable-next-line no-unused-vars\n public pointwise_filter: tf.Tensor4D,\n // eslint-disable-next-line no-unused-vars\n public bias: tf.Tensor1D,\n // eslint-disable-next-line no-empty-function\n ) {}\n}\n", "import { isTensor } from '../utils/index';\nimport { ParamMapping } from './types';\n\nexport function extractWeightEntryFactory(weightMap: any, paramMappings: ParamMapping[]) {\n return (originalPath: string, paramRank: number, mappedPath?: string) => {\n const tensor = weightMap[originalPath];\n\n if (!isTensor(tensor, paramRank)) {\n throw new Error(`expected weightMap[${originalPath}] to be a Tensor${paramRank}D, instead have ${tensor}`);\n }\n\n paramMappings.push(\n { originalPath, paramPath: mappedPath || originalPath },\n );\n\n return tensor;\n };\n}\n", "export function extractWeightsFactory(weights: Float32Array) {\n let remainingWeights = weights;\n\n function extractWeights(numWeights: number): Float32Array {\n const ret = remainingWeights.slice(0, numWeights);\n remainingWeights = remainingWeights.slice(numWeights);\n return ret;\n }\n\n function getRemainingWeights(): Float32Array {\n return remainingWeights;\n }\n\n return {\n extractWeights,\n getRemainingWeights,\n };\n}\n", "import {\n extractConvParamsFactory,\n extractSeparableConvParamsFactory,\n ExtractWeightsFunction,\n ParamMapping,\n} from '../common/index';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings);\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings);\n\n function extractDenseBlock3Params(channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer: boolean = false): DenseBlock3Params {\n const conv0 = isFirstLayer\n ? extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv0`)\n : extractSeparableConvParams(channelsIn, channelsOut, `${mappedPrefix}/conv0`);\n const conv1 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv1`);\n const conv2 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv2`);\n\n return { conv0, conv1, conv2 };\n }\n\n function extractDenseBlock4Params(channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer: boolean = false): DenseBlock4Params {\n const { conv0, conv1, conv2 } = extractDenseBlock3Params(channelsIn, channelsOut, mappedPrefix, isFirstLayer);\n const conv3 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv3`);\n\n return {\n conv0, conv1, conv2, conv3,\n };\n }\n\n return {\n extractDenseBlock3Params,\n extractDenseBlock4Params,\n };\n}\n", "import { extractWeightsFactory, ParamMapping } from '../common/index';\nimport { extractorsFactory } from './extractorsFactory';\nimport { FaceFeatureExtractorParams } from './types';\n\nexport function extractParams(weights: Float32Array): { params: FaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractDenseBlock4Params,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const dense0 = extractDenseBlock4Params(3, 32, 'dense0', true);\n const dense1 = extractDenseBlock4Params(32, 64, 'dense1');\n const dense2 = extractDenseBlock4Params(64, 128, 'dense2');\n const dense3 = extractDenseBlock4Params(128, 256, 'dense3');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: {\n dense0, dense1, dense2, dense3,\n },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ConvParams } from './types';\n\n// eslint-disable-next-line no-unused-vars\nexport function loadConvParamsFactory(extractWeightEntry: (originalPath: string, paramRank: number) => T) {\n return (prefix: string): ConvParams => {\n const filters = extractWeightEntry(`${prefix}/filters`, 4);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n\n return { filters, bias };\n };\n}\n", "import { extractWeightEntryFactory, loadSeparableConvParamsFactory, ParamMapping } from '../common/index';\nimport { loadConvParamsFactory } from '../common/loadConvParamsFactory';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function loadParamsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n const extractConvParams = loadConvParamsFactory(extractWeightEntry);\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry);\n\n function extractDenseBlock3Params(prefix: string, isFirstLayer: boolean = false): DenseBlock3Params {\n const conv0 = isFirstLayer\n ? extractConvParams(`${prefix}/conv0`)\n : extractSeparableConvParams(`${prefix}/conv0`);\n const conv1 = extractSeparableConvParams(`${prefix}/conv1`);\n const conv2 = extractSeparableConvParams(`${prefix}/conv2`);\n\n return { conv0, conv1, conv2 };\n }\n\n function extractDenseBlock4Params(prefix: string, isFirstLayer: boolean = false): DenseBlock4Params {\n const conv0 = isFirstLayer\n ? extractConvParams(`${prefix}/conv0`)\n : extractSeparableConvParams(`${prefix}/conv0`);\n const conv1 = extractSeparableConvParams(`${prefix}/conv1`);\n const conv2 = extractSeparableConvParams(`${prefix}/conv2`);\n const conv3 = extractSeparableConvParams(`${prefix}/conv3`);\n\n return {\n conv0, conv1, conv2, conv3,\n };\n }\n\n return {\n extractDenseBlock3Params,\n extractDenseBlock4Params,\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { disposeUnusedWeightTensors, ParamMapping } from '../common/index';\nimport { loadParamsFactory } from './loadParamsFactory';\nimport { FaceFeatureExtractorParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: FaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractDenseBlock4Params,\n } = loadParamsFactory(weightMap, paramMappings);\n\n const params = {\n dense0: extractDenseBlock4Params('dense0', true),\n dense1: extractDenseBlock4Params('dense1'),\n dense2: extractDenseBlock4Params('dense2'),\n dense3: extractDenseBlock4Params('dense3'),\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { NetInput } from '../dom/index';\nimport {\n FaceFeatureExtractorParams,\n IFaceFeatureExtractor,\n TinyFaceFeatureExtractorParams,\n} from '../faceFeatureExtractor/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { NetParams } from './types';\nimport { seperateWeightMaps } from './util';\n\nexport abstract class FaceProcessor<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends NeuralNetwork {\n protected _faceFeatureExtractor: IFaceFeatureExtractor\n\n constructor(_name: string, faceFeatureExtractor: IFaceFeatureExtractor) {\n super(_name);\n this._faceFeatureExtractor = faceFeatureExtractor;\n }\n\n public get faceFeatureExtractor(): IFaceFeatureExtractor {\n return this._faceFeatureExtractor;\n }\n\n protected abstract getDefaultModelName(): string\n\n protected abstract getClassifierChannelsIn(): number\n\n protected abstract getClassifierChannelsOut(): number\n\n public runNet(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n const { params } = this;\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`);\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input;\n return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0], -1), params.fc);\n });\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose);\n super.dispose(throwOnRedispose);\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights);\n this._params = params;\n this._paramMappings = paramMappings;\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights, this.getClassifierChannelsIn(), this.getClassifierChannelsOut());\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap);\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap);\n\n return extractParamsFromWeigthMap(classifierMap);\n }\n\n protected extractParams(weights: Float32Array) {\n const cIn = this.getClassifierChannelsIn();\n const cOut = this.getClassifierChannelsOut();\n const classifierWeightSize = (cOut * cIn) + cOut;\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize);\n const classifierWeights = weights.slice(weights.length - classifierWeightSize);\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights);\n return this.extractClassifierParams(classifierWeights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { FCParams } from './types';\n\nexport function fullyConnectedLayer(\n x: tf.Tensor2D,\n params: FCParams,\n): tf.Tensor2D {\n return tf.tidy(() => tf.add(\n tf.matMul(x, params.weights),\n params.bias,\n ));\n}\n", "import { extractFCParamsFactory, extractWeightsFactory, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParams(weights: Float32Array, channelsIn: number, channelsOut: number): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const extractFCParams = extractFCParamsFactory(extractWeights, paramMappings);\n\n const fc = extractFCParams(channelsIn, channelsOut, 'fc');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { fc },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport {\n disposeUnusedWeightTensors, extractWeightEntryFactory, FCParams, ParamMapping,\n} from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractFcParams(prefix: string): FCParams {\n const weights = extractWeightEntry(`${prefix}/weights`, 2);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n return { weights, bias };\n }\n\n const params = {\n fc: extractFcParams('fc'),\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nexport function seperateWeightMaps(weightMap: tf.NamedTensorMap) {\n const featureExtractorMap: tf.NamedTensorMap = {};\n const classifierMap: tf.NamedTensorMap = {};\n\n Object.keys(weightMap).forEach((key) => {\n const map = key.startsWith('fc') ? classifierMap : featureExtractorMap;\n map[key] = weightMap[key];\n });\n\n return { featureExtractorMap, classifierMap };\n}\n", "export const FACE_EXPRESSION_LABELS = ['neutral', 'happy', 'sad', 'angry', 'fearful', 'disgusted', 'surprised'];\n\nexport class FaceExpressions {\n public neutral: number\n\n public happy: number\n\n public sad: number\n\n public angry: number\n\n public fearful: number\n\n public disgusted: number\n\n public surprised: number\n\n constructor(probabilities: number[] | Float32Array) {\n if (probabilities.length !== 7) {\n throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${probabilities.length}`);\n }\n\n FACE_EXPRESSION_LABELS.forEach((expression, idx) => {\n this[expression] = probabilities[idx];\n });\n }\n\n asSortedArray() {\n return FACE_EXPRESSION_LABELS\n .map((expression) => ({ expression, probability: this[expression] as number }))\n .sort((e0, e1) => e1.probability - e0.probability);\n }\n}\n", "import { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\n\nexport type WithFaceExpressions = TSource & {\n expressions: FaceExpressions\n}\n\nexport function isWithFaceExpressions(obj: any): obj is WithFaceExpressions<{}> {\n return obj.expressions instanceof FaceExpressions;\n}\n\nexport function extendWithFaceExpressions<\n TSource\n>(\n sourceObj: TSource,\n expressions: FaceExpressions,\n): WithFaceExpressions {\n const extension = { expressions };\n return { ...sourceObj, ...extension };\n}\n", "import { IPoint, Point } from '../classes/index';\nimport { FaceExpressions } from '../faceExpressionNet/index';\nimport { isWithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceExpressions, WithFaceExpressions } from '../factories/WithFaceExpressions';\nimport { round } from '../utils/index';\nimport { DrawTextField } from './DrawTextField';\n\nexport type DrawFaceExpressionsInput = FaceExpressions | WithFaceExpressions<{}>\n\nexport function drawFaceExpressions(\n canvasArg: string | HTMLCanvasElement,\n faceExpressions: DrawFaceExpressionsInput | Array,\n minConfidence = 0.1,\n textFieldAnchor?: IPoint,\n) {\n const faceExpressionsArray = Array.isArray(faceExpressions) ? faceExpressions : [faceExpressions];\n\n faceExpressionsArray.forEach((e) => {\n // eslint-disable-next-line no-nested-ternary\n const expr = e instanceof FaceExpressions\n ? e\n : (isWithFaceExpressions(e) ? e.expressions : undefined);\n if (!expr) {\n throw new Error('drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof');\n }\n\n const sorted = expr.asSortedArray();\n const resultsToDisplay = sorted.filter((exprLocal) => exprLocal.probability > minConfidence);\n\n const anchor = isWithFaceDetection(e)\n ? e.detection.box.bottomLeft\n : (textFieldAnchor || new Point(0, 0));\n\n const drawTextField = new DrawTextField(\n resultsToDisplay.map((exprLocal) => `${exprLocal.expression} (${round(exprLocal.probability)})`),\n anchor,\n );\n drawTextField.draw(canvasArg);\n });\n}\n", "import { FaceDetection } from '../classes/FaceDetection';\nimport { FaceLandmarks } from '../classes/FaceLandmarks';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { isWithFaceDetection, WithFaceDetection } from './WithFaceDetection';\n\nexport type WithFaceLandmarks<\n TSource extends WithFaceDetection<{}>,\n TFaceLandmarks extends FaceLandmarks = FaceLandmarks68 > = TSource & {\n landmarks: TFaceLandmarks\n unshiftedLandmarks: TFaceLandmarks\n alignedRect: FaceDetection\n }\n\nexport function isWithFaceLandmarks(obj: any): obj is WithFaceLandmarks, FaceLandmarks> {\n return isWithFaceDetection(obj)\n // eslint-disable-next-line dot-notation\n && obj['landmarks'] instanceof FaceLandmarks\n // eslint-disable-next-line dot-notation\n && obj['unshiftedLandmarks'] instanceof FaceLandmarks\n // eslint-disable-next-line dot-notation\n && obj['alignedRect'] instanceof FaceDetection;\n}\n\nexport function extendWithFaceLandmarks<\n TSource extends WithFaceDetection<{}>,\n TFaceLandmarks extends FaceLandmarks = FaceLandmarks68 >(sourceObj: TSource, unshiftedLandmarks: TFaceLandmarks): WithFaceLandmarks {\n const { box: shift } = sourceObj.detection;\n const landmarks = unshiftedLandmarks.shiftBy(shift.x, shift.y);\n\n const rect = landmarks.align();\n const { imageDims } = sourceObj.detection;\n const alignedRect = new FaceDetection(sourceObj.detection.score, rect.rescale(imageDims.reverse()), imageDims);\n\n const extension = {\n landmarks,\n unshiftedLandmarks,\n alignedRect,\n };\n\n return { ...sourceObj, ...extension };\n}\n", "/* eslint-disable max-classes-per-file */\nimport { IPoint } from '../classes/index';\nimport { FaceLandmarks } from '../classes/FaceLandmarks';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { drawContour } from './drawContour';\n\nexport interface IDrawFaceLandmarksOptions {\n drawLines?: boolean\n drawPoints?: boolean\n lineWidth?: number\n pointSize?: number\n lineColor?: string\n pointColor?: string\n}\n\nexport class DrawFaceLandmarksOptions {\n public drawLines: boolean\n\n public drawPoints: boolean\n\n public lineWidth: number\n\n public pointSize: number\n\n public lineColor: string\n\n public pointColor: string\n\n constructor(options: IDrawFaceLandmarksOptions = {}) {\n const {\n drawLines = true, drawPoints = true, lineWidth, lineColor, pointSize, pointColor,\n } = options;\n this.drawLines = drawLines;\n this.drawPoints = drawPoints;\n this.lineWidth = lineWidth || 1;\n this.pointSize = pointSize || 2;\n this.lineColor = lineColor || 'rgba(0, 255, 255, 1)';\n this.pointColor = pointColor || 'rgba(255, 0, 255, 1)';\n }\n}\n\nexport class DrawFaceLandmarks {\n public faceLandmarks: FaceLandmarks\n\n public options: DrawFaceLandmarksOptions\n\n constructor(\n faceLandmarks: FaceLandmarks,\n options: IDrawFaceLandmarksOptions = {},\n ) {\n this.faceLandmarks = faceLandmarks;\n this.options = new DrawFaceLandmarksOptions(options);\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const ctx = getContext2dOrThrow(canvasArg);\n\n const {\n drawLines, drawPoints, lineWidth, lineColor, pointSize, pointColor,\n } = this.options;\n\n if (drawLines && this.faceLandmarks instanceof FaceLandmarks68) {\n ctx.strokeStyle = lineColor;\n ctx.lineWidth = lineWidth;\n drawContour(ctx, this.faceLandmarks.getJawOutline());\n drawContour(ctx, this.faceLandmarks.getLeftEyeBrow());\n drawContour(ctx, this.faceLandmarks.getRightEyeBrow());\n drawContour(ctx, this.faceLandmarks.getNose());\n drawContour(ctx, this.faceLandmarks.getLeftEye(), true);\n drawContour(ctx, this.faceLandmarks.getRightEye(), true);\n drawContour(ctx, this.faceLandmarks.getMouth(), true);\n }\n\n if (drawPoints) {\n ctx.strokeStyle = pointColor;\n ctx.fillStyle = pointColor;\n\n const drawPoint = (pt: IPoint) => {\n ctx.beginPath();\n ctx.arc(pt.x, pt.y, pointSize, 0, 2 * Math.PI);\n ctx.fill();\n };\n this.faceLandmarks.positions.forEach(drawPoint);\n }\n }\n}\n\nexport type DrawFaceLandmarksInput = FaceLandmarks | WithFaceLandmarks>\n\nexport function drawFaceLandmarks(\n canvasArg: string | HTMLCanvasElement,\n faceLandmarks: DrawFaceLandmarksInput | Array,\n) {\n const faceLandmarksArray = Array.isArray(faceLandmarks) ? faceLandmarks : [faceLandmarks];\n faceLandmarksArray.forEach((f) => {\n // eslint-disable-next-line no-nested-ternary\n const landmarks = f instanceof FaceLandmarks\n ? f\n : (isWithFaceLandmarks(f) ? f.landmarks : undefined);\n if (!landmarks) {\n throw new Error('drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof');\n }\n\n new DrawFaceLandmarks(landmarks).draw(canvasArg);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { seperateWeightMaps } from '../faceProcessor/util';\nimport { TinyXception } from '../xception/TinyXception';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport {\n AgeAndGenderPrediction, Gender, NetOutput, NetParams,\n} from './types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\n\nexport class AgeGenderNet extends NeuralNetwork {\n private _faceFeatureExtractor: TinyXception\n\n constructor(faceFeatureExtractor: TinyXception = new TinyXception(2)) {\n super('AgeGenderNet');\n this._faceFeatureExtractor = faceFeatureExtractor;\n }\n\n public get faceFeatureExtractor(): TinyXception {\n return this._faceFeatureExtractor;\n }\n\n public runNet(input: NetInput | tf.Tensor4D): NetOutput {\n const { params } = this;\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`);\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input;\n\n const pooled = tf.avgPool(bottleneckFeatures, [7, 7], [2, 2], 'valid').as2D(bottleneckFeatures.shape[0], -1);\n const age = fullyConnectedLayer(pooled, params.fc.age).as1D();\n const gender = fullyConnectedLayer(pooled, params.fc.gender);\n return { age, gender };\n });\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): NetOutput {\n return tf.tidy(() => {\n const { age, gender } = this.runNet(input);\n return { age, gender: tf.softmax(gender) };\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async predictAgeAndGender(input: TNetInput): Promise {\n const netInput = await toNetInput(input);\n const out = await this.forwardInput(netInput);\n\n const ages = tf.unstack(out.age);\n const genders = tf.unstack(out.gender);\n const ageAndGenderTensors = ages.map((ageTensor, i) => ({\n ageTensor,\n genderTensor: genders[i],\n }));\n\n const predictionsByBatch = await Promise.all(\n ageAndGenderTensors.map(async ({ ageTensor, genderTensor }) => {\n const age = (await ageTensor.data())[0];\n const probMale = (await genderTensor.data())[0];\n const isMale = probMale > 0.5;\n const gender = isMale ? Gender.MALE : Gender.FEMALE;\n const genderProbability = isMale ? probMale : (1 - probMale);\n\n ageTensor.dispose();\n genderTensor.dispose();\n return { age, gender, genderProbability };\n }),\n );\n out.age.dispose();\n out.gender.dispose();\n\n return netInput.isBatchInput ? predictionsByBatch as AgeAndGenderPrediction[] : predictionsByBatch[0] as AgeAndGenderPrediction;\n }\n\n protected getDefaultModelName(): string {\n return 'age_gender_model';\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose);\n super.dispose(throwOnRedispose);\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights);\n this._params = params;\n this._paramMappings = paramMappings;\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights);\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap);\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap);\n\n return extractParamsFromWeigthMap(classifierMap);\n }\n\n protected extractParams(weights: Float32Array) {\n const classifierWeightSize = (512 * 1 + 1) + (512 * 2 + 2);\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize);\n const classifierWeights = weights.slice(weights.length - classifierWeightSize);\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights);\n return this.extractClassifierParams(classifierWeights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ConvParams, depthwiseSeparableConv } from '../common/index';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { range } from '../utils/index';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction conv(x: tf.Tensor4D, params: ConvParams, stride: [number, number]): tf.Tensor4D {\n return tf.add(tf.conv2d(x, params.filters, stride, 'same'), params.bias);\n}\n\nfunction reductionBlock(x: tf.Tensor4D, params: ReductionBlockParams, isActivateInput: boolean = true): tf.Tensor4D {\n let out = isActivateInput ? tf.relu(x) : x;\n out = depthwiseSeparableConv(out, params.separable_conv0, [1, 1]);\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1]);\n out = tf.maxPool(out, [3, 3], [2, 2], 'same');\n out = tf.add(out, conv(x, params.expansion_conv, [2, 2]));\n return out;\n}\n\nfunction mainBlock(x: tf.Tensor4D, params: MainBlockParams): tf.Tensor4D {\n let out = depthwiseSeparableConv(tf.relu(x), params.separable_conv0, [1, 1]);\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1]);\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv2, [1, 1]);\n out = tf.add(out, x);\n return out;\n}\n\nexport class TinyXception extends NeuralNetwork {\n private _numMainBlocks: number\n\n constructor(numMainBlocks: number) {\n super('TinyXception');\n this._numMainBlocks = numMainBlocks;\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('TinyXception - load model before inference');\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D;\n\n let out = tf.relu(conv(normalized, params.entry_flow.conv_in, [2, 2]));\n out = reductionBlock(out, params.entry_flow.reduction_block_0, false);\n out = reductionBlock(out, params.entry_flow.reduction_block_1);\n\n range(this._numMainBlocks, 0, 1).forEach((idx) => {\n out = mainBlock(out, params.middle_flow[`main_block_${idx}`]);\n });\n\n out = reductionBlock(out, params.exit_flow.reduction_block);\n out = tf.relu(depthwiseSeparableConv(out, params.exit_flow.separable_conv, [1, 1]));\n return out;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n protected getDefaultModelName(): string {\n return 'tiny_xception_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this._numMainBlocks);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights, this._numMainBlocks);\n }\n}\n", "import { extractConvParamsFactory, extractSeparableConvParamsFactory, extractWeightsFactory } from '../common/index';\nimport { ExtractWeightsFunction, ParamMapping } from '../common/types';\nimport { range } from '../utils/index';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings);\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings);\n\n function extractReductionBlockParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ReductionBlockParams {\n const separable_conv0 = extractSeparableConvParams(channelsIn, channelsOut, `${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/separable_conv1`);\n const expansion_conv = extractConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/expansion_conv`);\n\n return { separable_conv0, separable_conv1, expansion_conv };\n }\n\n function extractMainBlockParams(channels: number, mappedPrefix: string): MainBlockParams {\n const separable_conv0 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv1`);\n const separable_conv2 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv2`);\n\n return { separable_conv0, separable_conv1, separable_conv2 };\n }\n\n return {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n };\n}\n\nexport function extractParams(weights: Float32Array, numMainBlocks: number): { params: TinyXceptionParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const entry_flow_conv_in = extractConvParams(3, 32, 3, 'entry_flow/conv_in');\n const entry_flow_reduction_block_0 = extractReductionBlockParams(32, 64, 'entry_flow/reduction_block_0');\n const entry_flow_reduction_block_1 = extractReductionBlockParams(64, 128, 'entry_flow/reduction_block_1');\n\n const entry_flow = {\n conv_in: entry_flow_conv_in,\n reduction_block_0: entry_flow_reduction_block_0,\n reduction_block_1: entry_flow_reduction_block_1,\n };\n\n const middle_flow = {};\n range(numMainBlocks, 0, 1).forEach((idx) => {\n middle_flow[`main_block_${idx}`] = extractMainBlockParams(128, `middle_flow/main_block_${idx}`);\n });\n\n const exit_flow_reduction_block = extractReductionBlockParams(128, 256, 'exit_flow/reduction_block');\n const exit_flow_separable_conv = extractSeparableConvParams(256, 512, 'exit_flow/separable_conv');\n\n const exit_flow = {\n reduction_block: exit_flow_reduction_block,\n separable_conv: exit_flow_separable_conv,\n };\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { entry_flow, middle_flow, exit_flow },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport {\n disposeUnusedWeightTensors,\n extractWeightEntryFactory,\n loadSeparableConvParamsFactory,\n ParamMapping,\n} from '../common/index';\nimport { loadConvParamsFactory } from '../common/loadConvParamsFactory';\nimport { range } from '../utils/index';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction loadParamsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n const extractConvParams = loadConvParamsFactory(extractWeightEntry);\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry);\n\n function extractReductionBlockParams(mappedPrefix: string): ReductionBlockParams {\n const separable_conv0 = extractSeparableConvParams(`${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(`${mappedPrefix}/separable_conv1`);\n const expansion_conv = extractConvParams(`${mappedPrefix}/expansion_conv`);\n\n return { separable_conv0, separable_conv1, expansion_conv };\n }\n\n function extractMainBlockParams(mappedPrefix: string): MainBlockParams {\n const separable_conv0 = extractSeparableConvParams(`${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(`${mappedPrefix}/separable_conv1`);\n const separable_conv2 = extractSeparableConvParams(`${mappedPrefix}/separable_conv2`);\n\n return { separable_conv0, separable_conv1, separable_conv2 };\n }\n\n return {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n numMainBlocks: number,\n): { params: TinyXceptionParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n } = loadParamsFactory(weightMap, paramMappings);\n\n const entry_flow_conv_in = extractConvParams('entry_flow/conv_in');\n const entry_flow_reduction_block_0 = extractReductionBlockParams('entry_flow/reduction_block_0');\n const entry_flow_reduction_block_1 = extractReductionBlockParams('entry_flow/reduction_block_1');\n\n const entry_flow = {\n conv_in: entry_flow_conv_in,\n reduction_block_0: entry_flow_reduction_block_0,\n reduction_block_1: entry_flow_reduction_block_1,\n };\n\n const middle_flow = {};\n range(numMainBlocks, 0, 1).forEach((idx) => {\n middle_flow[`main_block_${idx}`] = extractMainBlockParams(`middle_flow/main_block_${idx}`);\n });\n\n const exit_flow_reduction_block = extractReductionBlockParams('exit_flow/reduction_block');\n const exit_flow_separable_conv = extractSeparableConvParams('exit_flow/separable_conv');\n\n const exit_flow = {\n reduction_block: exit_flow_reduction_block,\n separable_conv: exit_flow_separable_conv,\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params: { entry_flow, middle_flow, exit_flow }, paramMappings };\n}\n", "import { extractFCParamsFactory, extractWeightsFactory, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const extractFCParams = extractFCParamsFactory(extractWeights, paramMappings);\n\n const age = extractFCParams(512, 1, 'fc/age');\n const gender = extractFCParams(512, 2, 'fc/gender');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { fc: { age, gender } },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport {\n disposeUnusedWeightTensors, extractWeightEntryFactory, FCParams, ParamMapping,\n} from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractFcParams(prefix: string): FCParams {\n const weights = extractWeightEntry(`${prefix}/weights`, 2);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n return { weights, bias };\n }\n\n const params = {\n fc: {\n age: extractFcParams('fc/age'),\n gender: extractFcParams('fc/gender'),\n },\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { FCParams } from '../common/index';\n\n// eslint-disable-next-line no-shadow\nexport enum Gender {\n // eslint-disable-next-line no-unused-vars\n FEMALE = 'female',\n // eslint-disable-next-line no-unused-vars\n MALE = 'male'\n}\n\nexport type AgeAndGenderPrediction = {\n age: number\n gender: Gender\n genderProbability: number\n}\n\nexport type NetOutput = { age: tf.Tensor1D, gender: tf.Tensor2D }\n\nexport type NetParams = {\n fc: {\n age: FCParams\n gender: FCParams\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { IDimensions, Point } from '../classes/index';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractorParams, TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { isEven } from '../utils/index';\n\nexport abstract class FaceLandmark68NetBase<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends FaceProcessor {\n public postProcess(output: tf.Tensor2D, inputSize: number, originalDimensions: IDimensions[]): tf.Tensor2D {\n const inputDimensions = originalDimensions.map(({ width, height }) => {\n const scale = inputSize / Math.max(height, width);\n return {\n width: width * scale,\n height: height * scale,\n };\n });\n\n const batchSize = inputDimensions.length;\n\n return tf.tidy(() => {\n const createInterleavedTensor = (fillX: number, fillY: number) => tf.stack([tf.fill([68], fillX, 'float32'), tf.fill([68], fillY, 'float32')], 1).as2D(1, 136).as1D();\n\n // eslint-disable-next-line no-unused-vars\n const getPadding = (batchIdx: number, cond: (w: number, h: number) => boolean): number => {\n const { width, height } = inputDimensions[batchIdx];\n return cond(width, height) ? Math.abs(width - height) / 2 : 0;\n };\n\n const getPaddingX = (batchIdx: number) => getPadding(batchIdx, (w, h) => w < h);\n const getPaddingY = (batchIdx: number) => getPadding(batchIdx, (w, h) => h < w);\n\n const landmarkTensors = output\n .mul(tf.fill([batchSize, 136], inputSize, 'float32'))\n .sub(tf.stack(Array.from(Array(batchSize), (_, batchIdx) => createInterleavedTensor(\n getPaddingX(batchIdx),\n getPaddingY(batchIdx),\n ))))\n .div(tf.stack(Array.from(Array(batchSize), (_, batchIdx) => createInterleavedTensor(\n inputDimensions[batchIdx].width,\n inputDimensions[batchIdx].height,\n ))));\n\n return landmarkTensors as tf.Tensor2D;\n });\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n return tf.tidy(() => {\n const out = this.runNet(input);\n return this.postProcess(\n out,\n input.inputSize as number,\n input.inputDimensions.map(([height, width]) => ({ height, width })),\n );\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async detectLandmarks(input: TNetInput): Promise {\n const netInput = await toNetInput(input);\n const landmarkTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput)),\n );\n\n const landmarksForBatch = await Promise.all(landmarkTensors.map(\n async (landmarkTensor, batchIdx) => {\n const landmarksArray = Array.from(await landmarkTensor.data());\n const xCoords = landmarksArray.filter((_, i) => isEven(i));\n const yCoords = landmarksArray.filter((_, i) => !isEven(i));\n\n return new FaceLandmarks68(\n Array(68).fill(0).map((_, i) => new Point(xCoords[i] as number, yCoords[i] as number)),\n {\n height: netInput.getInputHeight(batchIdx),\n width: netInput.getInputWidth(batchIdx),\n },\n );\n },\n ));\n\n landmarkTensors.forEach((t) => t.dispose());\n\n return netInput.isBatchInput ? landmarksForBatch as FaceLandmarks68[] : landmarksForBatch[0] as FaceLandmarks68;\n }\n\n protected getClassifierChannelsOut(): number {\n return 136;\n }\n}\n", "import { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';\nimport { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceLandmark68NetBase } from './FaceLandmark68NetBase';\n\nexport class FaceLandmark68Net extends FaceLandmark68NetBase {\n constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) {\n super('FaceLandmark68Net', faceFeatureExtractor);\n }\n\n protected getDefaultModelName(): string {\n return 'face_landmark_68_model';\n }\n\n protected getClassifierChannelsIn(): number {\n return 256;\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock3 } from './denseBlock';\nimport { extractParamsFromWeigthMapTiny } from './extractParamsFromWeigthMapTiny';\nimport { extractParamsTiny } from './extractParamsTiny';\nimport { IFaceFeatureExtractor, TinyFaceFeatureExtractorParams } from './types';\n\nexport class TinyFaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n constructor() {\n super('TinyFaceFeatureExtractor');\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('TinyFaceFeatureExtractor - load model before inference');\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D;\n\n let out = denseBlock3(normalized, params.dense0, true);\n out = denseBlock3(out, params.dense1);\n out = denseBlock3(out, params.dense2);\n out = tf.avgPool(out, [14, 14], [2, 2], 'valid');\n\n return out;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_tiny_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMapTiny(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParamsTiny(weights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { disposeUnusedWeightTensors, ParamMapping } from '../common/index';\nimport { loadParamsFactory } from './loadParamsFactory';\nimport { TinyFaceFeatureExtractorParams } from './types';\n\nexport function extractParamsFromWeigthMapTiny(\n weightMap: tf.NamedTensorMap,\n): { params: TinyFaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractDenseBlock3Params,\n } = loadParamsFactory(weightMap, paramMappings);\n\n const params = {\n dense0: extractDenseBlock3Params('dense0', true),\n dense1: extractDenseBlock3Params('dense1'),\n dense2: extractDenseBlock3Params('dense2'),\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import { extractWeightsFactory, ParamMapping } from '../common/index';\nimport { extractorsFactory } from './extractorsFactory';\nimport { TinyFaceFeatureExtractorParams } from './types';\n\nexport function extractParamsTiny(weights: Float32Array): { params: TinyFaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractDenseBlock3Params,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const dense0 = extractDenseBlock3Params(3, 32, 'dense0', true);\n const dense1 = extractDenseBlock3Params(32, 64, 'dense1');\n const dense2 = extractDenseBlock3Params(64, 128, 'dense2');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { dense0, dense1, dense2 },\n };\n}\n", "import { TinyFaceFeatureExtractor } from '../faceFeatureExtractor/TinyFaceFeatureExtractor';\nimport { TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceLandmark68NetBase } from './FaceLandmark68NetBase';\n\nexport class FaceLandmark68TinyNet extends FaceLandmark68NetBase {\n constructor(faceFeatureExtractor: TinyFaceFeatureExtractor = new TinyFaceFeatureExtractor()) {\n super('FaceLandmark68TinyNet', faceFeatureExtractor);\n }\n\n protected getDefaultModelName(): string {\n return 'face_landmark_68_tiny_model';\n }\n\n protected getClassifierChannelsIn(): number {\n return 128;\n }\n}\n", "import { FaceLandmark68Net } from './FaceLandmark68Net';\n\nexport * from './FaceLandmark68Net';\nexport * from './FaceLandmark68TinyNet';\n\nexport class FaceLandmarkNet extends FaceLandmark68Net {}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { convDown } from './convLayer';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { residual, residualDown } from './residualLayer';\nimport { NetParams } from './types';\n\nexport class FaceRecognitionNet extends NeuralNetwork {\n constructor() {\n super('FaceRecognitionNet');\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n const { params } = this;\n\n if (!params) {\n throw new Error('FaceRecognitionNet - load model before inference');\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(150, true).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(150, true), 'float32');\n\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D;\n\n let out = convDown(normalized, params.conv32_down);\n out = tf.maxPool(out, 3, 2, 'valid');\n\n out = residual(out, params.conv32_1);\n out = residual(out, params.conv32_2);\n out = residual(out, params.conv32_3);\n\n out = residualDown(out, params.conv64_down);\n out = residual(out, params.conv64_1);\n out = residual(out, params.conv64_2);\n out = residual(out, params.conv64_3);\n\n out = residualDown(out, params.conv128_down);\n out = residual(out, params.conv128_1);\n out = residual(out, params.conv128_2);\n\n out = residualDown(out, params.conv256_down);\n out = residual(out, params.conv256_1);\n out = residual(out, params.conv256_2);\n out = residualDown(out, params.conv256_down_out);\n\n const globalAvg = out.mean([1, 2]) as tf.Tensor2D;\n const fullyConnected = tf.matMul(globalAvg, params.fc);\n\n return fullyConnected;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async computeFaceDescriptor(input: TNetInput): Promise {\n const netInput = await toNetInput(input);\n\n const faceDescriptorTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput)),\n );\n\n const faceDescriptorsForBatch = await Promise.all(faceDescriptorTensors.map(\n (t) => t.data(),\n )) as Float32Array[];\n\n faceDescriptorTensors.forEach((t) => t.dispose());\n\n return netInput.isBatchInput\n ? faceDescriptorsForBatch\n : faceDescriptorsForBatch[0];\n }\n\n protected getDefaultModelName(): string {\n return 'face_recognition_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { scale } from './scaleLayer';\nimport { ConvLayerParams } from './types';\n\nfunction convLayer(\n x: tf.Tensor4D,\n params: ConvLayerParams,\n strides: [number, number],\n withRelu: boolean,\n padding: 'valid' | 'same' = 'same',\n): tf.Tensor4D {\n const { filters, bias } = params.conv;\n\n let out = tf.conv2d(x, filters, strides, padding);\n out = tf.add(out, bias);\n out = scale(out, params.scale);\n return withRelu ? tf.relu(out) : out;\n}\n\nexport function conv(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], true);\n}\n\nexport function convNoRelu(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], false);\n}\n\nexport function convDown(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [2, 2], true, 'valid');\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ScaleLayerParams } from './types';\n\nexport function scale(x: tf.Tensor4D, params: ScaleLayerParams): tf.Tensor4D {\n return tf.add(tf.mul(x, params.weights), params.biases);\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport {\n ConvParams, extractWeightsFactory, ExtractWeightsFunction, ParamMapping,\n} from '../common/index';\nimport { isFloat } from '../utils/index';\nimport {\n ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams,\n} from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n function extractFilterValues(numFilterValues: number, numFilters: number, filterSize: number): tf.Tensor4D {\n const weights = extractWeights(numFilterValues);\n const depth = weights.length / (numFilters * filterSize * filterSize);\n\n if (isFloat(depth)) {\n throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`);\n }\n\n return tf.tidy(\n () => tf.transpose(\n tf.tensor4d(weights, [numFilters, depth, filterSize, filterSize]),\n [2, 3, 1, 0],\n ),\n );\n }\n\n function extractConvParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n ): ConvParams {\n const filters = extractFilterValues(numFilterValues, numFilters, filterSize);\n const bias = tf.tensor1d(extractWeights(numFilters));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return { filters, bias };\n }\n\n function extractScaleLayerParams(numWeights: number, mappedPrefix: string): ScaleLayerParams {\n const weights = tf.tensor1d(extractWeights(numWeights));\n const biases = tf.tensor1d(extractWeights(numWeights));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/weights` },\n { paramPath: `${mappedPrefix}/biases` },\n );\n\n return {\n weights,\n biases,\n };\n }\n\n function extractConvLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n ): ConvLayerParams {\n const conv = extractConvParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv`);\n const scale = extractScaleLayerParams(numFilters, `${mappedPrefix}/scale`);\n\n return { conv, scale };\n }\n\n function extractResidualLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n isDown: boolean = false,\n ): ResidualLayerParams {\n const conv1 = extractConvLayerParams((isDown ? 0.5 : 1) * numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv1`);\n const conv2 = extractConvLayerParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv2`);\n\n return { conv1, conv2 };\n }\n\n return {\n extractConvLayerParams,\n extractResidualLayerParams,\n };\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvLayerParams,\n extractResidualLayerParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const conv32_down = extractConvLayerParams(4704, 32, 7, 'conv32_down');\n const conv32_1 = extractResidualLayerParams(9216, 32, 3, 'conv32_1');\n const conv32_2 = extractResidualLayerParams(9216, 32, 3, 'conv32_2');\n const conv32_3 = extractResidualLayerParams(9216, 32, 3, 'conv32_3');\n\n const conv64_down = extractResidualLayerParams(36864, 64, 3, 'conv64_down', true);\n const conv64_1 = extractResidualLayerParams(36864, 64, 3, 'conv64_1');\n const conv64_2 = extractResidualLayerParams(36864, 64, 3, 'conv64_2');\n const conv64_3 = extractResidualLayerParams(36864, 64, 3, 'conv64_3');\n\n const conv128_down = extractResidualLayerParams(147456, 128, 3, 'conv128_down', true);\n const conv128_1 = extractResidualLayerParams(147456, 128, 3, 'conv128_1');\n const conv128_2 = extractResidualLayerParams(147456, 128, 3, 'conv128_2');\n\n const conv256_down = extractResidualLayerParams(589824, 256, 3, 'conv256_down', true);\n const conv256_1 = extractResidualLayerParams(589824, 256, 3, 'conv256_1');\n const conv256_2 = extractResidualLayerParams(589824, 256, 3, 'conv256_2');\n const conv256_down_out = extractResidualLayerParams(589824, 256, 3, 'conv256_down_out');\n\n const fc = tf.tidy(\n () => tf.transpose(tf.tensor2d(extractWeights(256 * 128), [128, 256]), [1, 0]),\n );\n paramMappings.push({ paramPath: 'fc' });\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n const params = {\n conv32_down,\n conv32_1,\n conv32_2,\n conv32_3,\n conv64_down,\n conv64_1,\n conv64_2,\n conv64_3,\n conv128_down,\n conv128_1,\n conv128_2,\n conv256_down,\n conv256_1,\n conv256_2,\n conv256_down_out,\n fc,\n };\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { disposeUnusedWeightTensors, extractWeightEntryFactory, ParamMapping } from '../common/index';\nimport { isTensor2D } from '../utils/index';\nimport {\n ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams,\n} from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractScaleLayerParams(prefix: string): ScaleLayerParams {\n const weights = extractWeightEntry(`${prefix}/scale/weights`, 1);\n const biases = extractWeightEntry(`${prefix}/scale/biases`, 1);\n\n return { weights, biases };\n }\n\n function extractConvLayerParams(prefix: string): ConvLayerParams {\n const filters = extractWeightEntry(`${prefix}/conv/filters`, 4);\n const bias = extractWeightEntry(`${prefix}/conv/bias`, 1);\n const scale = extractScaleLayerParams(prefix);\n\n return { conv: { filters, bias }, scale };\n }\n\n function extractResidualLayerParams(prefix: string): ResidualLayerParams {\n return {\n conv1: extractConvLayerParams(`${prefix}/conv1`),\n conv2: extractConvLayerParams(`${prefix}/conv2`),\n };\n }\n\n return {\n extractConvLayerParams,\n extractResidualLayerParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvLayerParams,\n extractResidualLayerParams,\n } = extractorsFactory(weightMap, paramMappings);\n\n const conv32_down = extractConvLayerParams('conv32_down');\n const conv32_1 = extractResidualLayerParams('conv32_1');\n const conv32_2 = extractResidualLayerParams('conv32_2');\n const conv32_3 = extractResidualLayerParams('conv32_3');\n\n const conv64_down = extractResidualLayerParams('conv64_down');\n const conv64_1 = extractResidualLayerParams('conv64_1');\n const conv64_2 = extractResidualLayerParams('conv64_2');\n const conv64_3 = extractResidualLayerParams('conv64_3');\n\n const conv128_down = extractResidualLayerParams('conv128_down');\n const conv128_1 = extractResidualLayerParams('conv128_1');\n const conv128_2 = extractResidualLayerParams('conv128_2');\n\n const conv256_down = extractResidualLayerParams('conv256_down');\n const conv256_1 = extractResidualLayerParams('conv256_1');\n const conv256_2 = extractResidualLayerParams('conv256_2');\n const conv256_down_out = extractResidualLayerParams('conv256_down_out');\n\n const { fc } = weightMap;\n paramMappings.push({ originalPath: 'fc', paramPath: 'fc' });\n\n if (!isTensor2D(fc)) {\n throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${fc}`);\n }\n\n const params = {\n conv32_down,\n conv32_1,\n conv32_2,\n conv32_3,\n conv64_down,\n conv64_1,\n conv64_2,\n conv64_3,\n conv128_down,\n conv128_1,\n conv128_2,\n conv256_down,\n conv256_1,\n conv256_2,\n conv256_down_out,\n fc,\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { conv, convDown, convNoRelu } from './convLayer';\nimport { ResidualLayerParams } from './types';\n\nexport function residual(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = conv(x, params.conv1);\n out = convNoRelu(out, params.conv2);\n out = tf.add(out, x);\n out = tf.relu(out);\n return out;\n}\n\nexport function residualDown(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = convDown(x, params.conv1);\n out = convNoRelu(out, params.conv2);\n\n let pooled = tf.avgPool(x, 2, 2, 'valid') as tf.Tensor4D;\n const zeros = tf.zeros(pooled.shape);\n const isPad = pooled.shape[3] !== out.shape[3];\n const isAdjustShape = pooled.shape[1] !== out.shape[1] || pooled.shape[2] !== out.shape[2];\n\n if (isAdjustShape) {\n const padShapeX = [...out.shape] as [number, number, number, number];\n padShapeX[1] = 1;\n const zerosW = tf.zeros(padShapeX);\n out = tf.concat([out, zerosW], 1);\n\n const padShapeY = [...out.shape] as [number, number, number, number];\n padShapeY[2] = 1;\n const zerosH = tf.zeros(padShapeY);\n out = tf.concat([out, zerosH], 2);\n }\n\n pooled = isPad ? tf.concat([pooled, zeros], 3) : pooled;\n out = tf.add(pooled, out) as tf.Tensor4D;\n\n out = tf.relu(out);\n return out;\n}\n", "import { FaceRecognitionNet } from './FaceRecognitionNet';\n\nexport * from './FaceRecognitionNet';\n\nexport function createFaceRecognitionNet(weights: Float32Array) {\n const net = new FaceRecognitionNet();\n net.extractWeights(weights);\n return net;\n}\n", "export type WithFaceDescriptor = TSource & {\n descriptor: Float32Array\n}\n\nexport function extendWithFaceDescriptor<\n TSource\n>(\n sourceObj: TSource,\n descriptor: Float32Array,\n): WithFaceDescriptor {\n const extension = { descriptor };\n return { ...sourceObj, ...extension };\n}\n", "export type WithAge = TSource & {\n age: number\n}\n\nexport function isWithAge(obj: any): obj is WithAge<{}> {\n return typeof obj.age === 'number';\n}\n\nexport function extendWithAge<\n TSource\n>(\n sourceObj: TSource,\n age: number,\n): WithAge {\n const extension = { age };\n return { ...sourceObj, ...extension };\n}\n", "import { Gender } from '../ageGenderNet/types';\nimport { isValidProbablitiy } from '../utils/index';\n\nexport type WithGender = TSource & {\n gender: Gender\n genderProbability: number\n}\n\nexport function isWithGender(obj: any): obj is WithGender<{}> {\n return (obj.gender === Gender.MALE || obj.gender === Gender.FEMALE)\n && isValidProbablitiy(obj.genderProbability);\n}\n\nexport function extendWithGender<\n TSource\n>(\n sourceObj: TSource,\n gender: Gender,\n genderProbability: number,\n): WithGender {\n const extension = { gender, genderProbability };\n return { ...sourceObj, ...extension };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { mobileNetV1 } from './mobileNetV1';\nimport { nonMaxSuppression } from './nonMaxSuppression';\nimport { outputLayer } from './outputLayer';\nimport { predictionLayer } from './predictionLayer';\nimport { ISsdMobilenetv1Options, SsdMobilenetv1Options } from './SsdMobilenetv1Options';\nimport { NetParams } from './types';\n\nexport class SsdMobilenetv1 extends NeuralNetwork {\n constructor() {\n super('SsdMobilenetv1');\n }\n\n public forwardInput(input: NetInput) {\n const { params } = this;\n\n if (!params) {\n throw new Error('SsdMobilenetv1 - load model before inference');\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(512, false).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(512, false), 'float32');\n\n const x = tf.sub(tf.mul(batchTensor, tf.scalar(0.007843137718737125)), tf.scalar(1)) as tf.Tensor4D;\n const features = mobileNetV1(x, params.mobilenetv1);\n\n const {\n boxPredictions,\n classPredictions,\n } = predictionLayer(features.out, features.conv11, params.prediction_layer);\n\n return outputLayer(boxPredictions, classPredictions, params.output_layer);\n });\n }\n\n public async forward(input: TNetInput) {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async locateFaces(\n input: TNetInput,\n options: ISsdMobilenetv1Options = {},\n ): Promise {\n const { maxResults, minConfidence } = new SsdMobilenetv1Options(options);\n\n const netInput = await toNetInput(input);\n\n const {\n boxes: _boxes,\n scores: _scores,\n } = this.forwardInput(netInput);\n\n // TODO batches\n const boxes = _boxes[0];\n const scores = _scores[0];\n for (let i = 1; i < _boxes.length; i++) {\n _boxes[i].dispose();\n _scores[i].dispose();\n }\n\n // TODO find a better way to filter by minConfidence\n const scoresData = Array.from(await scores.data());\n\n const iouThreshold = 0.5;\n const indices = nonMaxSuppression(\n boxes,\n scoresData as number[],\n maxResults,\n iouThreshold,\n minConfidence,\n );\n\n const reshapedDims = netInput.getReshapedInputDimensions(0);\n const inputSize = netInput.inputSize as number;\n const padX = inputSize / reshapedDims.width;\n const padY = inputSize / reshapedDims.height;\n\n const boxesData = boxes.arraySync();\n const results = indices\n .map((idx) => {\n const [top, bottom] = [\n Math.max(0, boxesData[idx][0]),\n Math.min(1.0, boxesData[idx][2]),\n ].map((val) => val * padY);\n const [left, right] = [\n Math.max(0, boxesData[idx][1]),\n Math.min(1.0, boxesData[idx][3]),\n ].map((val) => val * padX);\n return new FaceDetection(\n scoresData[idx] as number,\n new Rect(\n left,\n top,\n right - left,\n bottom - top,\n ),\n {\n height: netInput.getInputHeight(0),\n width: netInput.getInputWidth(0),\n },\n );\n });\n\n boxes.dispose();\n scores.dispose();\n\n return results;\n }\n\n protected getDefaultModelName(): string {\n return 'ssd_mobilenetv1_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport {\n ExtractWeightsFunction, ParamMapping, ConvParams, extractWeightsFactory,\n} from '../common/index';\nimport {\n MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams,\n} from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n function extractDepthwiseConvParams(numChannels: number, mappedPrefix: string): MobileNetV1.DepthwiseConvParams {\n const filters = tf.tensor4d(extractWeights(3 * 3 * numChannels), [3, 3, numChannels, 1]);\n const batch_norm_scale = tf.tensor1d(extractWeights(numChannels));\n const batch_norm_offset = tf.tensor1d(extractWeights(numChannels));\n const batch_norm_mean = tf.tensor1d(extractWeights(numChannels));\n const batch_norm_variance = tf.tensor1d(extractWeights(numChannels));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/batch_norm_scale` },\n { paramPath: `${mappedPrefix}/batch_norm_offset` },\n { paramPath: `${mappedPrefix}/batch_norm_mean` },\n { paramPath: `${mappedPrefix}/batch_norm_variance` },\n );\n\n return {\n filters,\n batch_norm_scale,\n batch_norm_offset,\n batch_norm_mean,\n batch_norm_variance,\n };\n }\n\n function extractConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n isPointwiseConv?: boolean,\n ): ConvParams {\n const filters = tf.tensor4d(\n extractWeights(channelsIn * channelsOut * filterSize * filterSize),\n [filterSize, filterSize, channelsIn, channelsOut],\n );\n const bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/${isPointwiseConv ? 'batch_norm_offset' : 'bias'}` },\n );\n\n return { filters, bias };\n }\n\n function extractPointwiseConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n ): PointwiseConvParams {\n const {\n filters,\n bias,\n } = extractConvParams(channelsIn, channelsOut, filterSize, mappedPrefix, true);\n\n return {\n filters,\n batch_norm_offset: bias,\n };\n }\n\n function extractConvPairParams(\n channelsIn: number,\n channelsOut: number,\n mappedPrefix: string,\n ): MobileNetV1.ConvPairParams {\n const depthwise_conv = extractDepthwiseConvParams(channelsIn, `${mappedPrefix}/depthwise_conv`);\n const pointwise_conv = extractPointwiseConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/pointwise_conv`);\n\n return { depthwise_conv, pointwise_conv };\n }\n\n function extractMobilenetV1Params(): MobileNetV1.Params {\n const conv_0 = extractPointwiseConvParams(3, 32, 3, 'mobilenetv1/conv_0');\n\n const conv_1 = extractConvPairParams(32, 64, 'mobilenetv1/conv_1');\n const conv_2 = extractConvPairParams(64, 128, 'mobilenetv1/conv_2');\n const conv_3 = extractConvPairParams(128, 128, 'mobilenetv1/conv_3');\n const conv_4 = extractConvPairParams(128, 256, 'mobilenetv1/conv_4');\n const conv_5 = extractConvPairParams(256, 256, 'mobilenetv1/conv_5');\n const conv_6 = extractConvPairParams(256, 512, 'mobilenetv1/conv_6');\n const conv_7 = extractConvPairParams(512, 512, 'mobilenetv1/conv_7');\n const conv_8 = extractConvPairParams(512, 512, 'mobilenetv1/conv_8');\n const conv_9 = extractConvPairParams(512, 512, 'mobilenetv1/conv_9');\n const conv_10 = extractConvPairParams(512, 512, 'mobilenetv1/conv_10');\n const conv_11 = extractConvPairParams(512, 512, 'mobilenetv1/conv_11');\n const conv_12 = extractConvPairParams(512, 1024, 'mobilenetv1/conv_12');\n const conv_13 = extractConvPairParams(1024, 1024, 'mobilenetv1/conv_13');\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n conv_8,\n conv_9,\n conv_10,\n conv_11,\n conv_12,\n conv_13,\n };\n }\n\n function extractPredictionLayerParams(): PredictionLayerParams {\n const conv_0 = extractPointwiseConvParams(1024, 256, 1, 'prediction_layer/conv_0');\n const conv_1 = extractPointwiseConvParams(256, 512, 3, 'prediction_layer/conv_1');\n const conv_2 = extractPointwiseConvParams(512, 128, 1, 'prediction_layer/conv_2');\n const conv_3 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_3');\n const conv_4 = extractPointwiseConvParams(256, 128, 1, 'prediction_layer/conv_4');\n const conv_5 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_5');\n const conv_6 = extractPointwiseConvParams(256, 64, 1, 'prediction_layer/conv_6');\n const conv_7 = extractPointwiseConvParams(64, 128, 3, 'prediction_layer/conv_7');\n\n const box_encoding_0_predictor = extractConvParams(512, 12, 1, 'prediction_layer/box_predictor_0/box_encoding_predictor');\n const class_predictor_0 = extractConvParams(512, 9, 1, 'prediction_layer/box_predictor_0/class_predictor');\n const box_encoding_1_predictor = extractConvParams(1024, 24, 1, 'prediction_layer/box_predictor_1/box_encoding_predictor');\n const class_predictor_1 = extractConvParams(1024, 18, 1, 'prediction_layer/box_predictor_1/class_predictor');\n const box_encoding_2_predictor = extractConvParams(512, 24, 1, 'prediction_layer/box_predictor_2/box_encoding_predictor');\n const class_predictor_2 = extractConvParams(512, 18, 1, 'prediction_layer/box_predictor_2/class_predictor');\n const box_encoding_3_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_3/box_encoding_predictor');\n const class_predictor_3 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_3/class_predictor');\n const box_encoding_4_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_4/box_encoding_predictor');\n const class_predictor_4 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_4/class_predictor');\n const box_encoding_5_predictor = extractConvParams(128, 24, 1, 'prediction_layer/box_predictor_5/box_encoding_predictor');\n const class_predictor_5 = extractConvParams(128, 18, 1, 'prediction_layer/box_predictor_5/class_predictor');\n\n const box_predictor_0 = {\n box_encoding_predictor: box_encoding_0_predictor,\n class_predictor: class_predictor_0,\n };\n const box_predictor_1 = {\n box_encoding_predictor: box_encoding_1_predictor,\n class_predictor: class_predictor_1,\n };\n const box_predictor_2 = {\n box_encoding_predictor: box_encoding_2_predictor,\n class_predictor: class_predictor_2,\n };\n const box_predictor_3 = {\n box_encoding_predictor: box_encoding_3_predictor,\n class_predictor: class_predictor_3,\n };\n const box_predictor_4 = {\n box_encoding_predictor: box_encoding_4_predictor,\n class_predictor: class_predictor_4,\n };\n const box_predictor_5 = {\n box_encoding_predictor: box_encoding_5_predictor,\n class_predictor: class_predictor_5,\n };\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n box_predictor_0,\n box_predictor_1,\n box_predictor_2,\n box_predictor_3,\n box_predictor_4,\n box_predictor_5,\n };\n }\n\n return {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n };\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const mobilenetv1 = extractMobilenetV1Params();\n const prediction_layer = extractPredictionLayerParams();\n const extra_dim = tf.tensor3d(\n extractWeights(5118 * 4),\n [1, 5118, 4],\n );\n const output_layer = {\n extra_dim,\n };\n\n paramMappings.push({ paramPath: 'output_layer/extra_dim' });\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n params: {\n mobilenetv1,\n prediction_layer,\n output_layer,\n },\n paramMappings,\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport {\n ConvParams, disposeUnusedWeightTensors, extractWeightEntryFactory, ParamMapping,\n} from '../common/index';\nimport { isTensor3D } from '../utils/index';\nimport {\n BoxPredictionParams, MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams,\n} from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractPointwiseConvParams(prefix: string, idx: number, mappedPrefix: string): PointwiseConvParams {\n const filters = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`, 4, `${mappedPrefix}/filters`);\n const batch_norm_offset = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`, 1, `${mappedPrefix}/batch_norm_offset`);\n\n return { filters, batch_norm_offset };\n }\n\n function extractConvPairParams(idx: number): MobileNetV1.ConvPairParams {\n const mappedPrefix = `mobilenetv1/conv_${idx}`;\n const prefixDepthwiseConv = `MobilenetV1/Conv2d_${idx}_depthwise`;\n const mappedPrefixDepthwiseConv = `${mappedPrefix}/depthwise_conv`;\n const mappedPrefixPointwiseConv = `${mappedPrefix}/pointwise_conv`;\n\n const filters = extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`, 4, `${mappedPrefixDepthwiseConv}/filters`);\n const batch_norm_scale = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_scale`);\n const batch_norm_offset = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_offset`);\n const batch_norm_mean = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_mean`);\n const batch_norm_variance = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_variance`);\n\n return {\n depthwise_conv: {\n filters,\n batch_norm_scale,\n batch_norm_offset,\n batch_norm_mean,\n batch_norm_variance,\n },\n pointwise_conv: extractPointwiseConvParams('MobilenetV1', idx, mappedPrefixPointwiseConv),\n };\n }\n\n function extractMobilenetV1Params(): MobileNetV1.Params {\n return {\n conv_0: extractPointwiseConvParams('MobilenetV1', 0, 'mobilenetv1/conv_0'),\n conv_1: extractConvPairParams(1),\n conv_2: extractConvPairParams(2),\n conv_3: extractConvPairParams(3),\n conv_4: extractConvPairParams(4),\n conv_5: extractConvPairParams(5),\n conv_6: extractConvPairParams(6),\n conv_7: extractConvPairParams(7),\n conv_8: extractConvPairParams(8),\n conv_9: extractConvPairParams(9),\n conv_10: extractConvPairParams(10),\n conv_11: extractConvPairParams(11),\n conv_12: extractConvPairParams(12),\n conv_13: extractConvPairParams(13),\n };\n }\n\n function extractConvParams(prefix: string, mappedPrefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/weights`, 4, `${mappedPrefix}/filters`);\n const bias = extractWeightEntry(`${prefix}/biases`, 1, `${mappedPrefix}/bias`);\n\n return { filters, bias };\n }\n\n function extractBoxPredictorParams(idx: number): BoxPredictionParams {\n const box_encoding_predictor = extractConvParams(\n `Prediction/BoxPredictor_${idx}/BoxEncodingPredictor`,\n `prediction_layer/box_predictor_${idx}/box_encoding_predictor`,\n );\n const class_predictor = extractConvParams(\n `Prediction/BoxPredictor_${idx}/ClassPredictor`,\n `prediction_layer/box_predictor_${idx}/class_predictor`,\n );\n\n return { box_encoding_predictor, class_predictor };\n }\n\n function extractPredictionLayerParams(): PredictionLayerParams {\n return {\n conv_0: extractPointwiseConvParams('Prediction', 0, 'prediction_layer/conv_0'),\n conv_1: extractPointwiseConvParams('Prediction', 1, 'prediction_layer/conv_1'),\n conv_2: extractPointwiseConvParams('Prediction', 2, 'prediction_layer/conv_2'),\n conv_3: extractPointwiseConvParams('Prediction', 3, 'prediction_layer/conv_3'),\n conv_4: extractPointwiseConvParams('Prediction', 4, 'prediction_layer/conv_4'),\n conv_5: extractPointwiseConvParams('Prediction', 5, 'prediction_layer/conv_5'),\n conv_6: extractPointwiseConvParams('Prediction', 6, 'prediction_layer/conv_6'),\n conv_7: extractPointwiseConvParams('Prediction', 7, 'prediction_layer/conv_7'),\n box_predictor_0: extractBoxPredictorParams(0),\n box_predictor_1: extractBoxPredictorParams(1),\n box_predictor_2: extractBoxPredictorParams(2),\n box_predictor_3: extractBoxPredictorParams(3),\n box_predictor_4: extractBoxPredictorParams(4),\n box_predictor_5: extractBoxPredictorParams(5),\n };\n }\n\n return {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n } = extractorsFactory(weightMap, paramMappings);\n\n const extra_dim = weightMap['Output/extra_dim'];\n paramMappings.push({ originalPath: 'Output/extra_dim', paramPath: 'output_layer/extra_dim' });\n\n if (!isTensor3D(extra_dim)) {\n throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`);\n }\n\n const params = {\n mobilenetv1: extractMobilenetV1Params(),\n prediction_layer: extractPredictionLayerParams(),\n output_layer: {\n extra_dim,\n },\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { MobileNetV1 } from './types';\n\nconst epsilon = 0.0010000000474974513;\n\nfunction depthwiseConvLayer(\n x: tf.Tensor4D,\n params: MobileNetV1.DepthwiseConvParams,\n strides: [number, number],\n) {\n return tf.tidy(() => {\n let out = tf.depthwiseConv2d(x, params.filters, strides, 'same');\n out = tf.batchNorm(\n out,\n params.batch_norm_mean,\n params.batch_norm_variance,\n params.batch_norm_offset,\n params.batch_norm_scale,\n epsilon,\n );\n return tf.clipByValue(out, 0, 6);\n });\n}\n\nfunction getStridesForLayerIdx(layerIdx: number): [number, number] {\n return [2, 4, 6, 12].some((idx) => idx === layerIdx) ? [2, 2] : [1, 1];\n}\n\nexport function mobileNetV1(x: tf.Tensor4D, params: MobileNetV1.Params) {\n return tf.tidy(() => {\n let conv11;\n let out = pointwiseConvLayer(x, params.conv_0, [2, 2]);\n\n const convPairParams = [\n params.conv_1,\n params.conv_2,\n params.conv_3,\n params.conv_4,\n params.conv_5,\n params.conv_6,\n params.conv_7,\n params.conv_8,\n params.conv_9,\n params.conv_10,\n params.conv_11,\n params.conv_12,\n params.conv_13,\n ];\n\n convPairParams.forEach((param, i) => {\n const layerIdx = i + 1;\n const depthwiseConvStrides = getStridesForLayerIdx(layerIdx);\n out = depthwiseConvLayer(out, param.depthwise_conv, depthwiseConvStrides);\n out = pointwiseConvLayer(out, param.pointwise_conv, [1, 1]);\n if (layerIdx === 11) {\n conv11 = out;\n }\n });\n\n if (conv11 === null) {\n throw new Error('mobileNetV1 - output of conv layer 11 is null');\n }\n\n return {\n out,\n conv11: conv11 as any,\n };\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { PointwiseConvParams } from './types';\n\nexport function pointwiseConvLayer(\n x: tf.Tensor4D,\n params: PointwiseConvParams,\n strides: [number, number],\n) {\n return tf.tidy(() => {\n let out = tf.conv2d(x, params.filters, strides, 'same');\n out = tf.add(out, params.batch_norm_offset);\n return tf.clipByValue(out, 0, 6);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nfunction IOU(boxes: tf.Tensor2D, i: number, j: number) {\n const boxesData = boxes.arraySync();\n const yminI = Math.min(boxesData[i][0], boxesData[i][2]);\n const xminI = Math.min(boxesData[i][1], boxesData[i][3]);\n const ymaxI = Math.max(boxesData[i][0], boxesData[i][2]);\n const xmaxI = Math.max(boxesData[i][1], boxesData[i][3]);\n const yminJ = Math.min(boxesData[j][0], boxesData[j][2]);\n const xminJ = Math.min(boxesData[j][1], boxesData[j][3]);\n const ymaxJ = Math.max(boxesData[j][0], boxesData[j][2]);\n const xmaxJ = Math.max(boxesData[j][1], boxesData[j][3]);\n const areaI = (ymaxI - yminI) * (xmaxI - xminI);\n const areaJ = (ymaxJ - yminJ) * (xmaxJ - xminJ);\n if (areaI <= 0 || areaJ <= 0) {\n return 0.0;\n }\n const intersectionYmin = Math.max(yminI, yminJ);\n const intersectionXmin = Math.max(xminI, xminJ);\n const intersectionYmax = Math.min(ymaxI, ymaxJ);\n const intersectionXmax = Math.min(xmaxI, xmaxJ);\n const intersectionArea = Math.max(intersectionYmax - intersectionYmin, 0.0)\n * Math.max(intersectionXmax - intersectionXmin, 0.0);\n return intersectionArea / (areaI + areaJ - intersectionArea);\n}\n\nexport function nonMaxSuppression(\n boxes: tf.Tensor2D,\n scores: number[],\n maxOutputSize: number,\n iouThreshold: number,\n scoreThreshold: number,\n): number[] {\n const numBoxes = boxes.shape[0];\n const outputSize = Math.min(\n maxOutputSize,\n numBoxes,\n );\n\n const candidates = scores\n .map((score, boxIndex) => ({ score, boxIndex }))\n .filter((c) => c.score > scoreThreshold)\n .sort((c1, c2) => c2.score - c1.score);\n\n const suppressFunc = (x: number) => (x <= iouThreshold ? 1 : 0);\n\n const selected: number[] = [];\n\n candidates.forEach((c) => {\n if (selected.length >= outputSize) {\n return;\n }\n const originalScore = c.score;\n\n for (let j = selected.length - 1; j >= 0; --j) {\n const iou = IOU(boxes, c.boxIndex, selected[j]);\n if (iou === 0.0) continue;\n c.score *= suppressFunc(iou);\n if (c.score <= scoreThreshold) break;\n }\n if (originalScore === c.score) {\n selected.push(c.boxIndex);\n }\n });\n\n return selected;\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { OutputLayerParams } from './types';\n\nfunction getCenterCoordinatesAndSizesLayer(x: tf.Tensor2D) {\n const vec = tf.unstack(tf.transpose(x, [1, 0]));\n\n const sizes = [\n tf.sub(vec[2], vec[0]),\n tf.sub(vec[3], vec[1]),\n ];\n\n const centers = [\n tf.add(vec[0], tf.div(sizes[0], tf.scalar(2))),\n tf.add(vec[1], tf.div(sizes[1], tf.scalar(2))),\n ];\n\n return {\n sizes,\n centers,\n };\n}\n\nfunction decodeBoxesLayer(x0: tf.Tensor2D, x1: tf.Tensor2D) {\n const {\n sizes,\n centers,\n } = getCenterCoordinatesAndSizesLayer(x0);\n\n const vec = tf.unstack(tf.transpose(x1, [1, 0]));\n\n const div0_out = tf.div(tf.mul(tf.exp(tf.div(vec[2], tf.scalar(5))), sizes[0]), tf.scalar(2));\n const add0_out = tf.add(tf.mul(tf.div(vec[0], tf.scalar(10)), sizes[0]), centers[0]);\n\n const div1_out = tf.div(tf.mul(tf.exp(tf.div(vec[3], tf.scalar(5))), sizes[1]), tf.scalar(2));\n const add1_out = tf.add(tf.mul(tf.div(vec[1], tf.scalar(10)), sizes[1]), centers[1]);\n\n return tf.transpose(\n tf.stack([\n tf.sub(add0_out, div0_out),\n tf.sub(add1_out, div1_out),\n tf.add(add0_out, div0_out),\n tf.add(add1_out, div1_out),\n ]),\n [1, 0],\n );\n}\n\nexport function outputLayer(\n boxPredictions: tf.Tensor4D,\n classPredictions: tf.Tensor4D,\n params: OutputLayerParams,\n) {\n return tf.tidy(() => {\n const batchSize = boxPredictions.shape[0];\n\n let boxes = decodeBoxesLayer(\n tf.reshape(tf.tile(params.extra_dim, [batchSize, 1, 1]), [-1, 4]) as tf.Tensor2D,\n tf.reshape(boxPredictions, [-1, 4]) as tf.Tensor2D,\n );\n boxes = tf.reshape(\n boxes,\n [batchSize, (boxes.shape[0] / batchSize), 4],\n );\n\n const scoresAndClasses = tf.sigmoid(tf.slice(classPredictions, [0, 0, 1], [-1, -1, -1]));\n let scores = tf.slice(scoresAndClasses, [0, 0, 0], [-1, -1, 1]) as tf.Tensor;\n\n scores = tf.reshape(\n scores,\n [batchSize, scores.shape[1] as number],\n );\n\n const boxesByBatch = tf.unstack(boxes) as tf.Tensor2D[];\n const scoresByBatch = tf.unstack(scores) as tf.Tensor1D[];\n\n return {\n boxes: boxesByBatch,\n scores: scoresByBatch,\n };\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { boxPredictionLayer } from './boxPredictionLayer';\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { PredictionLayerParams } from './types';\n\nexport function predictionLayer(\n x: tf.Tensor4D,\n conv11: tf.Tensor4D,\n params: PredictionLayerParams,\n) {\n return tf.tidy(() => {\n const conv0 = pointwiseConvLayer(x, params.conv_0, [1, 1]);\n const conv1 = pointwiseConvLayer(conv0, params.conv_1, [2, 2]);\n const conv2 = pointwiseConvLayer(conv1, params.conv_2, [1, 1]);\n const conv3 = pointwiseConvLayer(conv2, params.conv_3, [2, 2]);\n const conv4 = pointwiseConvLayer(conv3, params.conv_4, [1, 1]);\n const conv5 = pointwiseConvLayer(conv4, params.conv_5, [2, 2]);\n const conv6 = pointwiseConvLayer(conv5, params.conv_6, [1, 1]);\n const conv7 = pointwiseConvLayer(conv6, params.conv_7, [2, 2]);\n\n const boxPrediction0 = boxPredictionLayer(conv11, params.box_predictor_0);\n const boxPrediction1 = boxPredictionLayer(x, params.box_predictor_1);\n const boxPrediction2 = boxPredictionLayer(conv1, params.box_predictor_2);\n const boxPrediction3 = boxPredictionLayer(conv3, params.box_predictor_3);\n const boxPrediction4 = boxPredictionLayer(conv5, params.box_predictor_4);\n const boxPrediction5 = boxPredictionLayer(conv7, params.box_predictor_5);\n\n const boxPredictions = tf.concat([\n boxPrediction0.boxPredictionEncoding,\n boxPrediction1.boxPredictionEncoding,\n boxPrediction2.boxPredictionEncoding,\n boxPrediction3.boxPredictionEncoding,\n boxPrediction4.boxPredictionEncoding,\n boxPrediction5.boxPredictionEncoding,\n ], 1) as tf.Tensor4D;\n\n const classPredictions = tf.concat([\n boxPrediction0.classPrediction,\n boxPrediction1.classPrediction,\n boxPrediction2.classPrediction,\n boxPrediction3.classPrediction,\n boxPrediction4.classPrediction,\n boxPrediction5.classPrediction,\n ], 1) as tf.Tensor4D;\n\n return {\n boxPredictions,\n classPredictions,\n };\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { convLayer } from '../common/index';\nimport { BoxPredictionParams } from './types';\n\nexport function boxPredictionLayer(\n x: tf.Tensor4D,\n params: BoxPredictionParams,\n) {\n return tf.tidy(() => {\n const batchSize = x.shape[0];\n\n const boxPredictionEncoding = tf.reshape(\n convLayer(x, params.box_encoding_predictor),\n [batchSize, -1, 1, 4],\n );\n const classPrediction = tf.reshape(\n convLayer(x, params.class_predictor),\n [batchSize, -1, 3],\n );\n\n return {\n boxPredictionEncoding,\n classPrediction,\n };\n });\n}\n", "export interface ISsdMobilenetv1Options {\n minConfidence?: number\n maxResults?: number\n}\n\nexport class SsdMobilenetv1Options {\n protected _name: string = 'SsdMobilenetv1Options'\n\n private _minConfidence: number\n\n private _maxResults: number\n\n constructor({ minConfidence, maxResults }: ISsdMobilenetv1Options = {}) {\n this._minConfidence = minConfidence || 0.5;\n this._maxResults = maxResults || 100;\n\n if (typeof this._minConfidence !== 'number' || this._minConfidence <= 0 || this._minConfidence >= 1) {\n throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`);\n }\n\n if (typeof this._maxResults !== 'number') {\n throw new Error(`${this._name} - expected maxResults to be a number`);\n }\n }\n\n get minConfidence(): number { return this._minConfidence; }\n\n get maxResults(): number { return this._maxResults; }\n}\n", "import { SsdMobilenetv1 } from './SsdMobilenetv1';\n\nexport * from './SsdMobilenetv1';\nexport * from './SsdMobilenetv1Options';\n\nexport function createSsdMobilenetv1(weights: Float32Array) {\n const net = new SsdMobilenetv1();\n net.extractWeights(weights);\n return net;\n}\n\nexport function createFaceDetectionNet(weights: Float32Array) {\n return createSsdMobilenetv1(weights);\n}\n\n// alias for backward compatibily\nexport class FaceDetectionNet extends SsdMobilenetv1 {}\n", "import { Point } from '../classes/index';\n\nexport const IOU_THRESHOLD = 0.4;\n\nexport const BOX_ANCHORS = [\n new Point(0.738768, 0.874946),\n new Point(2.42204, 2.65704),\n new Point(4.30971, 7.04493),\n new Point(10.246, 4.59428),\n new Point(12.6868, 11.8741),\n];\n\nexport const BOX_ANCHORS_SEPARABLE = [\n new Point(1.603231, 2.094468),\n new Point(6.041143, 7.080126),\n new Point(2.882459, 3.518061),\n new Point(4.266906, 5.178857),\n new Point(9.041765, 10.66308),\n];\n\nexport const MEAN_RGB_SEPARABLE: [number, number, number] = [117.001, 114.697, 97.404];\n\nexport const DEFAULT_MODEL_NAME = 'tiny_yolov2_model';\nexport const DEFAULT_MODEL_NAME_SEPARABLE_CONV = 'tiny_yolov2_separable_conv_model';\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { BoundingBox } from '../classes/BoundingBox';\nimport { Dimensions } from '../classes/Dimensions';\nimport { ObjectDetection } from '../classes/ObjectDetection';\nimport { convLayer } from '../common/index';\nimport { ConvParams, SeparableConvParams } from '../common/types';\nimport { toNetInput } from '../dom/index';\nimport { NetInput } from '../dom/NetInput';\nimport { TNetInput } from '../dom/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { sigmoid } from '../ops/index';\nimport { nonMaxSuppression } from '../ops/nonMaxSuppression';\nimport { normalize } from '../ops/normalize';\nimport { TinyYolov2Config, validateConfig } from './config';\nimport { convWithBatchNorm } from './convWithBatchNorm';\nimport { depthwiseSeparableConv } from './depthwiseSeparableConv';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { leaky } from './leaky';\nimport { ITinyYolov2Options, TinyYolov2Options } from './TinyYolov2Options';\nimport { DefaultTinyYolov2NetParams, MobilenetParams, TinyYolov2NetParams } from './types';\n\nexport class TinyYolov2Base extends NeuralNetwork {\n public static DEFAULT_FILTER_SIZES = [\n 3, 16, 32, 64, 128, 256, 512, 1024, 1024,\n ]\n\n private _config: TinyYolov2Config\n\n constructor(config: TinyYolov2Config) {\n super('TinyYolov2');\n validateConfig(config);\n this._config = config;\n }\n\n public get config(): TinyYolov2Config {\n return this._config;\n }\n\n public get withClassScores(): boolean {\n return this.config.withClassScores || this.config.classes.length > 1;\n }\n\n public get boxEncodingSize(): number {\n return 5 + (this.withClassScores ? this.config.classes.length : 0);\n }\n\n public runTinyYolov2(x: tf.Tensor4D, params: DefaultTinyYolov2NetParams): tf.Tensor4D {\n let out = convWithBatchNorm(x, params.conv0);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv1);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv2);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv3);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv4);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv5);\n out = tf.maxPool(out, [2, 2], [1, 1], 'same');\n out = convWithBatchNorm(out, params.conv6);\n out = convWithBatchNorm(out, params.conv7);\n\n return convLayer(out, params.conv8, 'valid', false);\n }\n\n public runMobilenet(x: tf.Tensor4D, params: MobilenetParams): tf.Tensor4D {\n let out = this.config.isFirstLayerConv2d\n ? leaky(convLayer(x, params.conv0 as ConvParams, 'valid', false))\n : depthwiseSeparableConv(x, params.conv0 as SeparableConvParams);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv1);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv2);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv3);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv4);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv5);\n out = tf.maxPool(out, [2, 2], [1, 1], 'same');\n out = params.conv6 ? depthwiseSeparableConv(out, params.conv6) : out;\n out = params.conv7 ? depthwiseSeparableConv(out, params.conv7) : out;\n\n return convLayer(out, params.conv8, 'valid', false);\n }\n\n public forwardInput(input: NetInput, inputSize: number): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('TinyYolov2 - load model before inference');\n }\n\n return tf.tidy(() => {\n // let batchTensor = input.toBatchTensor(inputSize, false).toFloat()\n let batchTensor = tf.cast(input.toBatchTensor(inputSize, false), 'float32');\n batchTensor = this.config.meanRgb\n ? normalize(batchTensor, this.config.meanRgb)\n : batchTensor;\n batchTensor = batchTensor.div(tf.scalar(256)) as tf.Tensor4D;\n\n return this.config.withSeparableConvs\n ? this.runMobilenet(batchTensor, params as MobilenetParams)\n : this.runTinyYolov2(batchTensor, params as DefaultTinyYolov2NetParams);\n });\n }\n\n public async forward(input: TNetInput, inputSize: number): Promise {\n return this.forwardInput(await toNetInput(input), inputSize);\n }\n\n public async detect(input: TNetInput, forwardParams: ITinyYolov2Options = {}): Promise {\n const { inputSize, scoreThreshold } = new TinyYolov2Options(forwardParams);\n\n const netInput = await toNetInput(input);\n const out = await this.forwardInput(netInput, inputSize);\n const out0 = tf.tidy(() => tf.unstack(out)[0].expandDims()) as tf.Tensor4D;\n\n const inputDimensions = {\n width: netInput.getInputWidth(0),\n height: netInput.getInputHeight(0),\n };\n\n const results = await this.extractBoxes(out0, netInput.getReshapedInputDimensions(0), scoreThreshold);\n out.dispose();\n out0.dispose();\n\n const boxes = results.map((res) => res.box);\n const scores = results.map((res) => res.score);\n const classScores = results.map((res) => res.classScore);\n const classNames = results.map((res) => this.config.classes[res.label]);\n\n const indices = nonMaxSuppression(\n boxes.map((box) => box.rescale(inputSize)),\n scores,\n this.config.iouThreshold,\n true,\n );\n\n const detections = indices.map((idx) => new ObjectDetection(\n scores[idx],\n classScores[idx],\n classNames[idx],\n boxes[idx],\n inputDimensions,\n ));\n\n return detections;\n }\n\n protected getDefaultModelName(): string {\n return '';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this.config);\n }\n\n protected extractParams(weights: Float32Array) {\n const filterSizes = this.config.filterSizes || TinyYolov2Base.DEFAULT_FILTER_SIZES;\n\n const numFilters = filterSizes ? filterSizes.length : undefined;\n if (numFilters !== 7 && numFilters !== 8 && numFilters !== 9) {\n throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`);\n }\n return extractParams(weights, this.config, this.boxEncodingSize, filterSizes);\n }\n\n protected async extractBoxes(\n outputTensor: tf.Tensor4D,\n inputBlobDimensions: Dimensions,\n scoreThreshold?: number,\n ) {\n const { width, height } = inputBlobDimensions;\n const inputSize = Math.max(width, height);\n const correctionFactorX = inputSize / width;\n const correctionFactorY = inputSize / height;\n\n const numCells = outputTensor.shape[1];\n const numBoxes = this.config.anchors.length;\n\n const [boxesTensor, scoresTensor, classScoresTensor] = tf.tidy(() => {\n const reshaped = outputTensor.reshape([numCells, numCells, numBoxes, this.boxEncodingSize]);\n\n const boxes = reshaped.slice([0, 0, 0, 0], [numCells, numCells, numBoxes, 4]);\n const scores = reshaped.slice([0, 0, 0, 4], [numCells, numCells, numBoxes, 1]);\n const classScores = this.withClassScores\n ? tf.softmax(reshaped.slice([0, 0, 0, 5], [numCells, numCells, numBoxes, this.config.classes.length]), 3)\n : tf.scalar(0);\n return [boxes, scores, classScores];\n });\n\n const results = [] as any;\n\n const scoresData = await scoresTensor.array();\n const boxesData = await boxesTensor.array();\n for (let row = 0; row < numCells; row++) {\n for (let col = 0; col < numCells; col++) {\n for (let anchor = 0; anchor < numBoxes; anchor++) {\n const score = sigmoid(scoresData[row][col][anchor][0]);\n if (!scoreThreshold || score > scoreThreshold) {\n const ctX = ((col + sigmoid(boxesData[row][col][anchor][0])) / numCells) * correctionFactorX;\n const ctY = ((row + sigmoid(boxesData[row][col][anchor][1])) / numCells) * correctionFactorY;\n const widthLocal = ((Math.exp(boxesData[row][col][anchor][2]) * this.config.anchors[anchor].x) / numCells) * correctionFactorX;\n const heightLocal = ((Math.exp(boxesData[row][col][anchor][3]) * this.config.anchors[anchor].y) / numCells) * correctionFactorY;\n\n const x = (ctX - (widthLocal / 2));\n const y = (ctY - (heightLocal / 2));\n\n const pos = { row, col, anchor };\n const { classScore, label } = this.withClassScores\n ? await this.extractPredictedClass(classScoresTensor as tf.Tensor4D, pos)\n : { classScore: 1, label: 0 };\n\n results.push({\n box: new BoundingBox(x, y, x + widthLocal, y + heightLocal),\n score,\n classScore: score * classScore,\n label,\n ...pos,\n });\n }\n }\n }\n }\n\n boxesTensor.dispose();\n scoresTensor.dispose();\n classScoresTensor.dispose();\n\n return results;\n }\n\n private async extractPredictedClass(classesTensor: tf.Tensor4D, pos: { row: number, col: number, anchor: number }) {\n const { row, col, anchor } = pos;\n const classesData = await classesTensor.array();\n return Array(this.config.classes.length).fill(0)\n .map((_, i) => classesData[row][col][anchor][i])\n .map((classScore, label) => ({\n classScore,\n label,\n }))\n .reduce((max, curr) => (max.classScore > curr.classScore ? max : curr));\n }\n}\n", "import { Point } from '../classes/Point';\n\nexport type TinyYolov2Config = {\n withSeparableConvs: boolean\n iouThreshold: number\n anchors: Point[]\n classes: string[]\n meanRgb?: [number, number, number]\n withClassScores?: boolean,\n filterSizes?: number[]\n isFirstLayerConv2d?: boolean\n}\n\nconst isNumber = (arg: any) => typeof arg === 'number';\n\nexport function validateConfig(config: any) {\n if (!config) {\n throw new Error(`invalid config: ${config}`);\n }\n\n if (typeof config.withSeparableConvs !== 'boolean') {\n throw new Error(`config.withSeparableConvs has to be a boolean, have: ${config.withSeparableConvs}`);\n }\n\n if (!isNumber(config.iouThreshold) || config.iouThreshold < 0 || config.iouThreshold > 1.0) {\n throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${config.iouThreshold}`);\n }\n\n if (\n !Array.isArray(config.classes)\n || !config.classes.length\n || !config.classes.every((c: any) => typeof c === 'string')\n ) {\n throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(config.classes)}`);\n }\n\n if (\n !Array.isArray(config.anchors)\n || !config.anchors.length\n || !config.anchors.map((a: any) => a || {}).every((a: any) => isNumber(a.x) && isNumber(a.y))\n ) {\n throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(config.anchors)}`);\n }\n\n if (config.meanRgb && (\n !Array.isArray(config.meanRgb)\n || config.meanRgb.length !== 3\n || !config.meanRgb.every(isNumber)\n )) {\n throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(config.meanRgb)}`);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { leaky } from './leaky';\nimport { ConvWithBatchNorm } from './types';\n\nexport function convWithBatchNorm(x: tf.Tensor4D, params: ConvWithBatchNorm): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D;\n\n out = tf.conv2d(out, params.conv.filters, [1, 1], 'valid');\n out = tf.sub(out, params.bn.sub);\n out = tf.mul(out, params.bn.truediv);\n out = tf.add(out, params.conv.bias);\n\n return leaky(out);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nexport function leaky(x: tf.Tensor4D): tf.Tensor4D {\n return tf.tidy(() => {\n const min = tf.mul(x, tf.scalar(0.10000000149011612));\n return tf.add(tf.relu(tf.sub(x, min)), min);\n // return tf.maximum(x, min)\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { SeparableConvParams } from '../common/types';\nimport { leaky } from './leaky';\n\nexport function depthwiseSeparableConv(x: tf.Tensor4D, params: SeparableConvParams): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D;\n\n out = tf.separableConv2d(out, params.depthwise_filter, params.pointwise_filter, [1, 1], 'valid');\n out = tf.add(out, params.bias);\n\n return leaky(out);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { extractConvParamsFactory } from '../common/index';\nimport { extractSeparableConvParamsFactory } from '../common/extractSeparableConvParamsFactory';\nimport { extractWeightsFactory } from '../common/extractWeightsFactory';\nimport { ExtractWeightsFunction, ParamMapping } from '../common/types';\nimport { TinyYolov2Config } from './config';\nimport { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings);\n\n function extractBatchNormParams(size: number, mappedPrefix: string): BatchNorm {\n const sub = tf.tensor1d(extractWeights(size));\n const truediv = tf.tensor1d(extractWeights(size));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/sub` },\n { paramPath: `${mappedPrefix}/truediv` },\n );\n\n return { sub, truediv };\n }\n\n function extractConvWithBatchNormParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ConvWithBatchNorm {\n const conv = extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv`);\n const bn = extractBatchNormParams(channelsOut, `${mappedPrefix}/bn`);\n\n return { conv, bn };\n }\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings);\n\n return {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n };\n}\n\nexport function extractParams(\n weights: Float32Array,\n config: TinyYolov2Config,\n boxEncodingSize: number,\n filterSizes: number[],\n): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n let params: TinyYolov2NetParams;\n\n if (config.withSeparableConvs) {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes;\n\n const conv0 = config.isFirstLayerConv2d\n ? extractConvParams(s0, s1, 3, 'conv0')\n : extractSeparableConvParams(s0, s1, 'conv0');\n const conv1 = extractSeparableConvParams(s1, s2, 'conv1');\n const conv2 = extractSeparableConvParams(s2, s3, 'conv2');\n const conv3 = extractSeparableConvParams(s3, s4, 'conv3');\n const conv4 = extractSeparableConvParams(s4, s5, 'conv4');\n const conv5 = extractSeparableConvParams(s5, s6, 'conv5');\n const conv6 = s7 ? extractSeparableConvParams(s6, s7, 'conv6') : undefined;\n const conv7 = s8 ? extractSeparableConvParams(s7, s8, 'conv7') : undefined;\n const conv8 = extractConvParams(s8 || s7 || s6, 5 * boxEncodingSize, 1, 'conv8');\n params = {\n conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8,\n };\n } else {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes;\n const conv0 = extractConvWithBatchNormParams(s0, s1, 'conv0');\n const conv1 = extractConvWithBatchNormParams(s1, s2, 'conv1');\n const conv2 = extractConvWithBatchNormParams(s2, s3, 'conv2');\n const conv3 = extractConvWithBatchNormParams(s3, s4, 'conv3');\n const conv4 = extractConvWithBatchNormParams(s4, s5, 'conv4');\n const conv5 = extractConvWithBatchNormParams(s5, s6, 'conv5');\n const conv6 = extractConvWithBatchNormParams(s6, s7, 'conv6');\n const conv7 = extractConvWithBatchNormParams(s7, s8, 'conv7');\n const conv8 = extractConvParams(s8, 5 * boxEncodingSize, 1, 'conv8');\n params = {\n conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8,\n };\n }\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ConvParams } from '../common/index';\nimport { disposeUnusedWeightTensors } from '../common/disposeUnusedWeightTensors';\nimport { loadSeparableConvParamsFactory } from '../common/extractSeparableConvParamsFactory';\nimport { extractWeightEntryFactory } from '../common/extractWeightEntryFactory';\nimport { ParamMapping } from '../common/types';\nimport { TinyYolov2Config } from './config';\nimport { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractBatchNormParams(prefix: string): BatchNorm {\n const sub = extractWeightEntry(`${prefix}/sub`, 1);\n const truediv = extractWeightEntry(`${prefix}/truediv`, 1);\n return { sub, truediv };\n }\n\n function extractConvParams(prefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/filters`, 4);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n return { filters, bias };\n }\n\n function extractConvWithBatchNormParams(prefix: string): ConvWithBatchNorm {\n const conv = extractConvParams(`${prefix}/conv`);\n const bn = extractBatchNormParams(`${prefix}/bn`);\n return { conv, bn };\n }\n\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry);\n\n return {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n config: TinyYolov2Config,\n): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n } = extractorsFactory(weightMap, paramMappings);\n\n let params: TinyYolov2NetParams;\n\n if (config.withSeparableConvs) {\n // eslint-disable-next-line no-mixed-operators\n const numFilters = (config.filterSizes && config.filterSizes.length || 9);\n params = {\n conv0: config.isFirstLayerConv2d ? extractConvParams('conv0') : extractSeparableConvParams('conv0'),\n conv1: extractSeparableConvParams('conv1'),\n conv2: extractSeparableConvParams('conv2'),\n conv3: extractSeparableConvParams('conv3'),\n conv4: extractSeparableConvParams('conv4'),\n conv5: extractSeparableConvParams('conv5'),\n conv6: numFilters > 7 ? extractSeparableConvParams('conv6') : undefined,\n conv7: numFilters > 8 ? extractSeparableConvParams('conv7') : undefined,\n conv8: extractConvParams('conv8'),\n };\n } else {\n params = {\n conv0: extractConvWithBatchNormParams('conv0'),\n conv1: extractConvWithBatchNormParams('conv1'),\n conv2: extractConvWithBatchNormParams('conv2'),\n conv3: extractConvWithBatchNormParams('conv3'),\n conv4: extractConvWithBatchNormParams('conv4'),\n conv5: extractConvWithBatchNormParams('conv5'),\n conv6: extractConvWithBatchNormParams('conv6'),\n conv7: extractConvWithBatchNormParams('conv7'),\n conv8: extractConvParams('conv8'),\n };\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "export interface ITinyYolov2Options {\n inputSize?: number\n scoreThreshold?: number\n}\n\nexport class TinyYolov2Options {\n protected _name: string = 'TinyYolov2Options'\n\n private _inputSize: number\n\n private _scoreThreshold: number\n\n constructor({ inputSize, scoreThreshold }: ITinyYolov2Options = {}) {\n this._inputSize = inputSize || 416;\n this._scoreThreshold = scoreThreshold || 0.5;\n\n if (typeof this._inputSize !== 'number' || this._inputSize % 32 !== 0) {\n throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`);\n }\n\n if (typeof this._scoreThreshold !== 'number' || this._scoreThreshold <= 0 || this._scoreThreshold >= 1) {\n throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`);\n }\n }\n\n get inputSize(): number { return this._inputSize; }\n\n get scoreThreshold(): number { return this._scoreThreshold; }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { FaceDetection, Point } from '../classes/index';\nimport { ParamMapping } from '../common/types';\nimport { TNetInput } from '../dom/types';\nimport {\n BOX_ANCHORS,\n BOX_ANCHORS_SEPARABLE,\n DEFAULT_MODEL_NAME,\n DEFAULT_MODEL_NAME_SEPARABLE_CONV,\n IOU_THRESHOLD,\n MEAN_RGB_SEPARABLE,\n} from './const';\nimport { TinyYolov2Base } from './TinyYolov2Base';\nimport { ITinyYolov2Options } from './TinyYolov2Options';\nimport { TinyYolov2NetParams } from './types';\n\nexport class TinyYolov2 extends TinyYolov2Base {\n constructor(withSeparableConvs: boolean = true) {\n const config = {\n withSeparableConvs,\n iouThreshold: IOU_THRESHOLD,\n classes: ['face'],\n ...(withSeparableConvs\n ? {\n anchors: BOX_ANCHORS_SEPARABLE,\n meanRgb: MEAN_RGB_SEPARABLE,\n }\n : {\n anchors: BOX_ANCHORS,\n withClassScores: true,\n }),\n };\n\n super(config);\n }\n\n public get withSeparableConvs(): boolean {\n return this.config.withSeparableConvs;\n }\n\n public get anchors(): Point[] {\n return this.config.anchors;\n }\n\n public async locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise {\n const objectDetections = await this.detect(input, forwardParams);\n return objectDetections.map((det) => new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }));\n }\n\n protected getDefaultModelName(): string {\n return this.withSeparableConvs ? DEFAULT_MODEL_NAME_SEPARABLE_CONV : DEFAULT_MODEL_NAME;\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n return super.extractParamsFromWeigthMap(weightMap);\n }\n}\n", "import { TinyYolov2 } from './TinyYolov2';\n\nexport * from './TinyYolov2Options';\n\nexport * from './config';\nexport * from './types';\n\nexport { TinyYolov2 };\n\nexport function createTinyYolov2(weights: Float32Array, withSeparableConvs: boolean = true) {\n const net = new TinyYolov2(withSeparableConvs);\n net.extractWeights(weights);\n return net;\n}\n", "import { ITinyYolov2Options, TinyYolov2Options } from '../tinyYolov2/index';\n\nexport interface ITinyFaceDetectorOptions extends ITinyYolov2Options {}\n\nexport class TinyFaceDetectorOptions extends TinyYolov2Options {\n protected _name: string = 'TinyFaceDetectorOptions'\n}\n", "export class ComposableTask {\n public async then(\n // eslint-disable-next-line no-unused-vars\n onfulfilled: (value: T) => T | PromiseLike,\n ): Promise {\n return onfulfilled(await this.run());\n }\n\n public async run(): Promise {\n throw new Error('ComposableTask - run is not implemented');\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport * as tf from '../../dist/tfjs.esm';\n\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';\nimport { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { extendWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\nimport {\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class DetectFaceLandmarksTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected useTinyLandmarkNet: boolean,\n ) {\n super();\n }\n\n protected get landmarkNet(): FaceLandmark68Net | FaceLandmark68TinyNet {\n return this.useTinyLandmarkNet\n ? nets.faceLandmark68TinyNet\n : nets.faceLandmark68Net;\n }\n}\n\nexport class DetectAllFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase[], TSource[]> {\n public async run(): Promise[]> {\n const parentResults = await this.parentTask;\n const detections = parentResults.map((res) => res.detection);\n\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, detections)\n : await extractFaces(this.input, detections);\n\n const faceLandmarksByFace = await Promise.all(faces.map(\n (face) => this.landmarkNet.detectLandmarks(face),\n )) as FaceLandmarks68[];\n\n faces.forEach((f) => f instanceof tf.Tensor && f.dispose());\n\n return parentResults.map((parentResult, i) => extendWithFaceLandmarks(parentResult, faceLandmarksByFace[i]));\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input);\n }\n}\n\nexport class DetectSingleFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase | undefined, TSource | undefined> {\n public async run(): Promise | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n\n const { detection } = parentResult;\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, [detection])\n : await extractFaces(this.input, [detection]);\n\n const landmarks = await this.landmarkNet.detectLandmarks(faces[0]) as FaceLandmarks68;\n\n faces.forEach((f) => f instanceof tf.Tensor && f.dispose());\n\n return extendWithFaceLandmarks(parentResult, landmarks);\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\n\nexport async function extractAllFacesAndComputeResults, TResult>(\n parentResults: TSource[],\n input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n computeResults: (faces: Array) => Promise,\n extractedFaces?: Array | null,\n // eslint-disable-next-line no-unused-vars\n getRectForAlignment: (parentResult: WithFaceLandmarks) => FaceDetection = ({ alignedRect }) => alignedRect,\n) {\n const faceBoxes = parentResults.map((parentResult) => (isWithFaceLandmarks(parentResult)\n ? getRectForAlignment(parentResult)\n : parentResult.detection));\n const faces: Array = extractedFaces || (\n input instanceof tf.Tensor\n ? await extractFaceTensors(input, faceBoxes)\n : await extractFaces(input, faceBoxes)\n );\n\n const results = await computeResults(faces);\n\n faces.forEach((f) => f instanceof tf.Tensor && f.dispose());\n\n return results;\n}\n\nexport async function extractSingleFaceAndComputeResult, TResult>(\n parentResult: TSource,\n input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n computeResult: (face: HTMLCanvasElement | tf.Tensor3D) => Promise,\n extractedFaces?: Array | null,\n // eslint-disable-next-line no-unused-vars\n getRectForAlignment?: (parentResultLocal: WithFaceLandmarks) => FaceDetection,\n) {\n return extractAllFacesAndComputeResults(\n [parentResult],\n input,\n async (faces) => computeResult(faces[0]),\n extractedFaces,\n getRectForAlignment,\n );\n}\n", "import { Point } from '../classes/index';\n\nexport const IOU_THRESHOLD = 0.4;\n\nexport const BOX_ANCHORS = [\n new Point(1.603231, 2.094468),\n new Point(6.041143, 7.080126),\n new Point(2.882459, 3.518061),\n new Point(4.266906, 5.178857),\n new Point(9.041765, 10.66308),\n];\n\nexport const MEAN_RGB: [number, number, number] = [117.001, 114.697, 97.404];\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { FaceDetection, Point } from '../classes/index';\nimport { ParamMapping } from '../common/index';\nimport { TNetInput } from '../dom/index';\nimport { ITinyYolov2Options } from '../tinyYolov2/index';\nimport { TinyYolov2Base } from '../tinyYolov2/TinyYolov2Base';\nimport { TinyYolov2NetParams } from '../tinyYolov2/types';\nimport { BOX_ANCHORS, IOU_THRESHOLD, MEAN_RGB } from './const';\n\nexport class TinyFaceDetector extends TinyYolov2Base {\n constructor() {\n const config = {\n withSeparableConvs: true,\n iouThreshold: IOU_THRESHOLD,\n classes: ['face'],\n anchors: BOX_ANCHORS,\n meanRgb: MEAN_RGB,\n isFirstLayerConv2d: true,\n filterSizes: [3, 16, 32, 64, 128, 256, 512],\n };\n\n super(config);\n }\n\n public get anchors(): Point[] {\n return this.config.anchors;\n }\n\n public async locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise {\n const objectDetections = await this.detect(input, forwardParams);\n return objectDetections.map((det) => new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }));\n }\n\n protected getDefaultModelName(): string {\n return 'tiny_face_detector_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n return super.extractParamsFromWeigthMap(weightMap);\n }\n}\n", "import { AgeGenderNet } from '../ageGenderNet/AgeGenderNet';\nimport { AgeAndGenderPrediction } from '../ageGenderNet/types';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { TNetInput } from '../dom/index';\nimport { FaceExpressionNet } from '../faceExpressionNet/FaceExpressionNet';\nimport { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\nimport { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';\nimport { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';\nimport { FaceRecognitionNet } from '../faceRecognitionNet/FaceRecognitionNet';\nimport { SsdMobilenetv1 } from '../ssdMobilenetv1/SsdMobilenetv1';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { TinyFaceDetector } from '../tinyFaceDetector/TinyFaceDetector';\nimport { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';\nimport { ITinyYolov2Options, TinyYolov2 } from '../tinyYolov2/index';\n\nexport const nets = {\n ssdMobilenetv1: new SsdMobilenetv1(),\n tinyFaceDetector: new TinyFaceDetector(),\n tinyYolov2: new TinyYolov2(),\n faceLandmark68Net: new FaceLandmark68Net(),\n faceLandmark68TinyNet: new FaceLandmark68TinyNet(),\n faceRecognitionNet: new FaceRecognitionNet(),\n faceExpressionNet: new FaceExpressionNet(),\n ageGenderNet: new AgeGenderNet(),\n};\n\n/**\n * Attempts to detect all faces in an image using SSD Mobilenetv1 Network.\n *\n * @param input The input image.\n * @param options (optional, default: see SsdMobilenetv1Options constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const ssdMobilenetv1 = (input: TNetInput, options: SsdMobilenetv1Options): Promise => nets.ssdMobilenetv1.locateFaces(input, options);\n\n/**\n * Attempts to detect all faces in an image using the Tiny Face Detector.\n *\n * @param input The input image.\n * @param options (optional, default: see TinyFaceDetectorOptions constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const tinyFaceDetector = (input: TNetInput, options: TinyFaceDetectorOptions): Promise => nets.tinyFaceDetector.locateFaces(input, options);\n\n/**\n * Attempts to detect all faces in an image using the Tiny Yolov2 Network.\n *\n * @param input The input image.\n * @param options (optional, default: see TinyYolov2Options constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const tinyYolov2 = (input: TNetInput, options: ITinyYolov2Options): Promise => nets.tinyYolov2.locateFaces(input, options);\n\n/**\n * Detects the 68 point face landmark positions of the face shown in an image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns 68 point face landmarks or array thereof in case of batch input.\n */\nexport const detectFaceLandmarks = (input: TNetInput): Promise => nets.faceLandmark68Net.detectLandmarks(input);\n\n/**\n * Detects the 68 point face landmark positions of the face shown in an image\n * using a tinier version of the 68 point face landmark model, which is slightly\n * faster at inference, but also slightly less accurate.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns 68 point face landmarks or array thereof in case of batch input.\n */\nexport const detectFaceLandmarksTiny = (input: TNetInput): Promise => nets.faceLandmark68TinyNet.detectLandmarks(input);\n\n/**\n * Computes a 128 entry vector (face descriptor / face embeddings) from the face shown in an image,\n * which uniquely represents the features of that persons face. The computed face descriptor can\n * be used to measure the similarity between faces, by computing the euclidean distance of two\n * face descriptors.\n *\n * @param inputs The face image extracted from the aligned bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Face descriptor with 128 entries or array thereof in case of batch input.\n */\nexport const computeFaceDescriptor = (input: TNetInput): Promise => nets.faceRecognitionNet.computeFaceDescriptor(input);\n\n/**\n * Recognizes the facial expressions from a face image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Facial expressions with corresponding probabilities or array thereof in case of batch input.\n */\nexport const recognizeFaceExpressions = (input: TNetInput): Promise => nets.faceExpressionNet.predictExpressions(input);\n\n/**\n * Predicts age and gender from a face image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Predictions with age, gender and gender probability or array thereof in case of batch input.\n */\nexport const predictAgeAndGender = (input: TNetInput): Promise => nets.ageGenderNet.predictAgeAndGender(input);\n\nexport const loadSsdMobilenetv1Model = (url: string) => nets.ssdMobilenetv1.load(url);\nexport const loadTinyFaceDetectorModel = (url: string) => nets.tinyFaceDetector.load(url);\nexport const loadTinyYolov2Model = (url: string) => nets.tinyYolov2.load(url);\nexport const loadFaceLandmarkModel = (url: string) => nets.faceLandmark68Net.load(url);\nexport const loadFaceLandmarkTinyModel = (url: string) => nets.faceLandmark68TinyNet.load(url);\nexport const loadFaceRecognitionModel = (url: string) => nets.faceRecognitionNet.load(url);\nexport const loadFaceExpressionModel = (url: string) => nets.faceExpressionNet.load(url);\nexport const loadAgeGenderModel = (url: string) => nets.ageGenderNet.load(url);\n\n// backward compatibility\nexport const loadFaceDetectionModel = loadSsdMobilenetv1Model;\nexport const locateFaces = ssdMobilenetv1;\nexport const detectLandmarks = detectFaceLandmarks;\n", "/* eslint-disable max-classes-per-file */\nimport * as tf from '../../dist/tfjs.esm';\n\nimport { TNetInput } from '../dom/index';\nimport { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { extendWithFaceExpressions, WithFaceExpressions } from '../factories/WithFaceExpressions';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderTask,\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\n\nexport class PredictFaceExpressionsTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected extractedFaces?: Array,\n ) {\n super();\n }\n}\n\nexport class PredictAllFaceExpressionsTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictFaceExpressionsTaskBase[], TSource[]> {\n public async run(): Promise[]> {\n const parentResults = await this.parentTask;\n\n const faceExpressionsByFace = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n async (faces) => Promise.all(faces.map(\n (face) => nets.faceExpressionNet.predictExpressions(face) as Promise,\n )),\n this.extractedFaces,\n );\n\n return parentResults.map(\n (parentResult, i) => extendWithFaceExpressions(parentResult, faceExpressionsByFace[i]),\n );\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderTask(this, this.input);\n }\n}\n\nexport class PredictSingleFaceExpressionsTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictFaceExpressionsTaskBase | undefined, TSource | undefined> {\n public async run(): Promise | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n\n const faceExpressions = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n (face) => nets.faceExpressionNet.predictExpressions(face) as Promise,\n this.extractedFaces,\n );\n\n return extendWithFaceExpressions(parentResult, faceExpressions);\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderTask(this, this.input);\n }\n}\n\nexport class PredictAllFaceExpressionsWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictAllFaceExpressionsTask {\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input);\n }\n}\n\nexport class PredictSingleFaceExpressionsWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictSingleFaceExpressionsTask {\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input);\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport * as tf from '../../dist/tfjs.esm';\n\nimport { AgeAndGenderPrediction } from '../ageGenderNet/types';\nimport { TNetInput } from '../dom/index';\nimport { extendWithAge, WithAge } from '../factories/WithAge';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { extendWithGender, WithGender } from '../factories/WithGender';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllFaceExpressionsTask,\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class PredictAgeAndGenderTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected extractedFaces?: Array,\n ) {\n super();\n }\n}\n\nexport class PredictAllAgeAndGenderTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictAgeAndGenderTaskBase>[], TSource[]> {\n public async run(): Promise>[]> {\n const parentResults = await this.parentTask;\n\n const ageAndGenderByFace = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n async (faces) => Promise.all(faces.map(\n (face) => nets.ageGenderNet.predictAgeAndGender(face) as Promise,\n )),\n this.extractedFaces,\n );\n\n return parentResults.map((parentResult, i) => {\n const { age, gender, genderProbability } = ageAndGenderByFace[i];\n return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age);\n });\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsTask(this, this.input);\n }\n}\n\nexport class PredictSingleAgeAndGenderTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictAgeAndGenderTaskBase> | undefined, TSource | undefined> {\n public async run(): Promise> | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n\n const { age, gender, genderProbability } = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n (face) => nets.ageGenderNet.predictAgeAndGender(face) as Promise,\n this.extractedFaces,\n );\n\n return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age);\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsTask(this, this.input);\n }\n}\n\nexport class PredictAllAgeAndGenderWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictAllAgeAndGenderTask {\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input);\n }\n}\n\nexport class PredictSingleAgeAndGenderWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictSingleAgeAndGenderTask {\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input);\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport { TNetInput } from '../dom/index';\nimport { extendWithFaceDescriptor, WithFaceDescriptor } from '../factories/WithFaceDescriptor';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\nimport {\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class ComputeFaceDescriptorsTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n ) {\n super();\n }\n}\n\nexport class ComputeAllFaceDescriptorsTask<\n TSource extends WithFaceLandmarks>\n> extends ComputeFaceDescriptorsTaskBase[], TSource[]> {\n public async run(): Promise[]> {\n const parentResults = await this.parentTask;\n\n const descriptors = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n (faces) => Promise.all(faces.map((face) => nets.faceRecognitionNet.computeFaceDescriptor(face) as Promise)),\n null,\n (parentResult) => parentResult.landmarks.align(null, { useDlibAlignment: true }),\n );\n\n return descriptors.map((descriptor, i) => extendWithFaceDescriptor(parentResults[i], descriptor));\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n}\n\nexport class ComputeSingleFaceDescriptorTask<\n TSource extends WithFaceLandmarks>\n> extends ComputeFaceDescriptorsTaskBase | undefined, TSource | undefined> {\n public async run(): Promise | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n const descriptor = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n (face) => nets.faceRecognitionNet.computeFaceDescriptor(face) as Promise,\n null,\n // eslint-disable-next-line no-shadow\n (parentResult) => parentResult.landmarks.align(null, { useDlibAlignment: true }),\n );\n\n return extendWithFaceDescriptor(parentResult, descriptor);\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { TNetInput } from '../dom/index';\nimport { extendWithFaceDetection, WithFaceDetection } from '../factories/WithFaceDetection';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';\nimport { TinyYolov2Options } from '../tinyYolov2/index';\nimport { ComposableTask } from './ComposableTask';\nimport { DetectAllFaceLandmarksTask, DetectSingleFaceLandmarksTask } from './DetectFaceLandmarksTasks';\nimport { nets } from './nets';\nimport { PredictAllAgeAndGenderTask, PredictSingleAgeAndGenderTask } from './PredictAgeAndGenderTask';\nimport { PredictAllFaceExpressionsTask, PredictSingleFaceExpressionsTask } from './PredictFaceExpressionsTask';\nimport { FaceDetectionOptions } from './types';\n\nexport class DetectFacesTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected options: FaceDetectionOptions = new SsdMobilenetv1Options(),\n ) {\n super();\n }\n}\n\nexport class DetectAllFacesTask extends DetectFacesTaskBase {\n public async run(): Promise {\n const { input, options } = this;\n\n // eslint-disable-next-line no-nested-ternary\n const faceDetectionFunction = options instanceof TinyFaceDetectorOptions\n // eslint-disable-next-line no-shadow\n ? (input: TNetInput) => nets.tinyFaceDetector.locateFaces(input, options)\n : (\n // eslint-disable-next-line no-nested-ternary\n options instanceof SsdMobilenetv1Options\n // eslint-disable-next-line no-shadow\n ? (input: TNetInput) => nets.ssdMobilenetv1.locateFaces(input, options)\n : (\n options instanceof TinyYolov2Options\n // eslint-disable-next-line no-shadow\n ? (input: TNetInput) => nets.tinyYolov2.locateFaces(input, options)\n : null\n )\n );\n\n if (!faceDetectionFunction) {\n throw new Error('detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options');\n }\n\n return faceDetectionFunction(input);\n }\n\n private runAndExtendWithFaceDetections(): Promise[]> {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise[]>(async (resolve) => {\n const detections = await this.run();\n resolve(detections.map((detection) => extendWithFaceDetection({}, detection)));\n });\n }\n\n withFaceLandmarks(useTinyLandmarkNet: boolean = false) {\n return new DetectAllFaceLandmarksTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n useTinyLandmarkNet,\n );\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n );\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n );\n }\n}\n\nexport class DetectSingleFaceTask extends DetectFacesTaskBase {\n public async run(): Promise {\n const faceDetections = await new DetectAllFacesTask(this.input, this.options);\n let faceDetectionWithHighestScore = faceDetections[0];\n faceDetections.forEach((faceDetection) => {\n if (faceDetection.score > faceDetectionWithHighestScore.score) {\n faceDetectionWithHighestScore = faceDetection;\n }\n });\n return faceDetectionWithHighestScore;\n }\n\n private runAndExtendWithFaceDetection(): Promise | undefined> {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise | undefined>(async (resolve) => {\n const detection = await this.run();\n resolve(detection ? extendWithFaceDetection<{}>({}, detection) : undefined);\n });\n }\n\n withFaceLandmarks(useTinyLandmarkNet: boolean = false) {\n return new DetectSingleFaceLandmarksTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n useTinyLandmarkNet,\n );\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n );\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n );\n }\n}\n", "import { TNetInput } from '../dom/index';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { DetectAllFacesTask, DetectSingleFaceTask } from './DetectFacesTasks';\nimport { FaceDetectionOptions } from './types';\n\nexport function detectSingleFace(\n input: TNetInput,\n options: FaceDetectionOptions = new SsdMobilenetv1Options(),\n): DetectSingleFaceTask {\n return new DetectSingleFaceTask(input, options);\n}\n\nexport function detectAllFaces(\n input: TNetInput,\n options: FaceDetectionOptions = new SsdMobilenetv1Options(),\n): DetectAllFacesTask {\n return new DetectAllFacesTask(input, options);\n}\n", "import { TNetInput } from '../dom/index';\nimport { WithFaceDescriptor, WithFaceDetection, WithFaceLandmarks } from '../factories/index';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/index';\nimport { ITinyYolov2Options, TinyYolov2Options } from '../tinyYolov2/index';\nimport { detectAllFaces } from './detectFaces';\n\n// export allFaces API for backward compatibility\n\nexport async function allFacesSsdMobilenetv1(\n input: TNetInput,\n minConfidence?: number,\n): Promise>>[]> {\n return detectAllFaces(input, new SsdMobilenetv1Options(minConfidence ? { minConfidence } : {}))\n .withFaceLandmarks()\n .withFaceDescriptors();\n}\n\nexport async function allFacesTinyYolov2(\n input: TNetInput,\n forwardParams: ITinyYolov2Options = {},\n): Promise>>[]> {\n return detectAllFaces(input, new TinyYolov2Options(forwardParams))\n .withFaceLandmarks()\n .withFaceDescriptors();\n}\n\nexport const allFaces = allFacesSsdMobilenetv1;\n", "export function euclideanDistance(arr1: number[] | Float32Array, arr2: number[] | Float32Array) {\n if (arr1.length !== arr2.length) throw new Error('euclideanDistance: arr1.length !== arr2.length');\n\n const desc1 = Array.from(arr1);\n const desc2 = Array.from(arr2);\n\n return Math.sqrt(\n desc1\n .map((val, i) => val - desc2[i])\n .reduce((res, diff) => res + (diff ** 2), 0),\n );\n}\n", "import { FaceMatch } from '../classes/FaceMatch';\nimport { LabeledFaceDescriptors } from '../classes/LabeledFaceDescriptors';\nimport { euclideanDistance } from '../euclideanDistance';\nimport { WithFaceDescriptor } from '../factories/index';\n\nexport class FaceMatcher {\n private _labeledDescriptors: LabeledFaceDescriptors[]\n\n private _distanceThreshold: number\n\n constructor(\n inputs: LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>,\n distanceThreshold: number = 0.6,\n ) {\n this._distanceThreshold = distanceThreshold;\n\n const inputArray = Array.isArray(inputs) ? inputs : [inputs];\n\n if (!inputArray.length) {\n throw new Error('FaceRecognizer.constructor - expected atleast one input');\n }\n\n let count = 1;\n const createUniqueLabel = () => `person ${count++}`;\n\n this._labeledDescriptors = inputArray.map((desc) => {\n if (desc instanceof LabeledFaceDescriptors) {\n return desc;\n }\n\n if (desc instanceof Float32Array) {\n return new LabeledFaceDescriptors(createUniqueLabel(), [desc]);\n }\n\n if (desc.descriptor && desc.descriptor instanceof Float32Array) {\n return new LabeledFaceDescriptors(createUniqueLabel(), [desc.descriptor]);\n }\n\n throw new Error('FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>');\n });\n }\n\n public get labeledDescriptors(): LabeledFaceDescriptors[] { return this._labeledDescriptors; }\n\n public get distanceThreshold(): number { return this._distanceThreshold; }\n\n public computeMeanDistance(queryDescriptor: Float32Array, descriptors: Float32Array[]): number {\n return descriptors\n .map((d) => euclideanDistance(d, queryDescriptor))\n .reduce((d1, d2) => d1 + d2, 0)\n / (descriptors.length || 1);\n }\n\n public matchDescriptor(queryDescriptor: Float32Array): FaceMatch {\n return this.labeledDescriptors\n .map(({ descriptors, label }) => new FaceMatch(\n label,\n this.computeMeanDistance(queryDescriptor, descriptors),\n ))\n .reduce((best, curr) => (best.distance < curr.distance ? best : curr));\n }\n\n public findBestMatch(queryDescriptor: Float32Array): FaceMatch {\n const bestMatch = this.matchDescriptor(queryDescriptor);\n return bestMatch.distance < this.distanceThreshold\n ? bestMatch\n : new FaceMatch('unknown', bestMatch.distance);\n }\n\n public toJSON(): any {\n return {\n distanceThreshold: this.distanceThreshold,\n labeledDescriptors: this.labeledDescriptors.map((ld) => ld.toJSON()),\n };\n }\n\n public static fromJSON(json: any): FaceMatcher {\n const labeledDescriptors = json.labeledDescriptors\n .map((ld: any) => LabeledFaceDescriptors.fromJSON(ld));\n return new FaceMatcher(labeledDescriptors, json.distanceThreshold);\n }\n}\n", "import { TinyFaceDetector } from './TinyFaceDetector';\n\nexport * from './TinyFaceDetector';\nexport * from './TinyFaceDetectorOptions';\n\nexport function createTinyFaceDetector(weights: Float32Array) {\n const net = new TinyFaceDetector();\n net.extractWeights(weights);\n return net;\n}\n", "import { Dimensions, IDimensions } from './classes/index';\nimport { FaceDetection } from './classes/FaceDetection';\nimport { FaceLandmarks } from './classes/FaceLandmarks';\nimport { extendWithFaceDetection, isWithFaceDetection } from './factories/WithFaceDetection';\nimport { extendWithFaceLandmarks, isWithFaceLandmarks } from './factories/WithFaceLandmarks';\n\nexport function resizeResults(results: T, dimensions: IDimensions): T {\n const { width, height } = new Dimensions(dimensions.width, dimensions.height);\n\n if (width <= 0 || height <= 0) {\n throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({ width, height })}`);\n }\n\n if (Array.isArray(results)) {\n // return results.map(obj => resizeResults(obj, { width, height })) as any as T\n return (results as Array).map((obj) => resizeResults(obj, { width, height } as IDimensions)) as any as T;\n }\n\n if (isWithFaceLandmarks(results)) {\n const resizedDetection = results.detection.forSize(width, height);\n const resizedLandmarks = results.unshiftedLandmarks.forSize(resizedDetection.box.width, resizedDetection.box.height);\n return extendWithFaceLandmarks(extendWithFaceDetection(results, resizedDetection), resizedLandmarks);\n }\n\n if (isWithFaceDetection(results)) {\n return extendWithFaceDetection(results, results.detection.forSize(width, height));\n }\n\n if (results instanceof FaceLandmarks || results instanceof FaceDetection) {\n return (results as any).forSize(width, height);\n }\n\n return results;\n}\n"], - "mappings": "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", + "mappings": "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", "names": [] } diff --git a/dist/face-api.esm-nobundle.json b/dist/face-api.esm-nobundle.json index fff414a..faa387c 100644 --- a/dist/face-api.esm-nobundle.json +++ b/dist/face-api.esm-nobundle.json @@ -1077,7 +1077,7 @@ ] }, "package.json": { - "bytes": 1807, + "bytes": 1839, "imports": [] }, "src/xception/extractParams.ts": { @@ -2136,7 +2136,7 @@ "dist/face-api.esm-nobundle.js.map": { "imports": [], "inputs": {}, - "bytes": 311523 + "bytes": 310237 }, "dist/face-api.esm-nobundle.js": { "imports": [], @@ -2264,475 +2264,475 @@ ], "inputs": { "dist/tfjs.esm.js": { - "bytesInOutput": 247 + "bytesInOutput": 135 }, "src/env/isNodejs.ts": { - "bytesInOutput": 229 + "bytesInOutput": 169 }, "src/index.ts": { - "bytesInOutput": 206 + "bytesInOutput": 158 }, "src/draw/index.ts": { - "bytesInOutput": 451 + "bytesInOutput": 277 }, "src/draw/drawContour.ts": { - "bytesInOutput": 313 + "bytesInOutput": 213 }, "src/utils/index.ts": { - "bytesInOutput": 1560 + "bytesInOutput": 1011 }, "src/classes/Dimensions.ts": { - "bytesInOutput": 398 + "bytesInOutput": 335 }, "src/classes/Point.ts": { - "bytesInOutput": 473 + "bytesInOutput": 433 }, "src/classes/Box.ts": { - "bytesInOutput": 3305 + "bytesInOutput": 2646 }, "src/classes/BoundingBox.ts": { - "bytesInOutput": 153 + "bytesInOutput": 92 }, "src/classes/index.ts": { "bytesInOutput": 0 }, "src/classes/ObjectDetection.ts": { - "bytesInOutput": 754 + "bytesInOutput": 624 }, "src/classes/FaceDetection.ts": { - "bytesInOutput": 272 - }, - "src/ops/iou.ts": { - "bytesInOutput": 328 - }, - "src/ops/index.ts": { - "bytesInOutput": 98 - }, - "src/ops/minBbox.ts": { - "bytesInOutput": 282 - }, - "src/ops/nonMaxSuppression.ts": { - "bytesInOutput": 555 - }, - "src/ops/normalize.ts": { - "bytesInOutput": 341 - }, - "src/ops/padToSquare.ts": { - "bytesInOutput": 846 - }, - "src/ops/shuffleArray.ts": { - "bytesInOutput": 188 - }, - "src/classes/Rect.ts": { - "bytesInOutput": 136 - }, - "src/classes/FaceLandmarks.ts": { - "bytesInOutput": 1888 - }, - "src/classes/FaceLandmarks5.ts": { "bytesInOutput": 153 }, - "src/classes/FaceLandmarks68.ts": { - "bytesInOutput": 501 + "src/ops/iou.ts": { + "bytesInOutput": 215 }, - "src/classes/FaceMatch.ts": { + "src/ops/index.ts": { + "bytesInOutput": 81 + }, + "src/ops/minBbox.ts": { + "bytesInOutput": 204 + }, + "src/ops/nonMaxSuppression.ts": { + "bytesInOutput": 282 + }, + "src/ops/normalize.ts": { "bytesInOutput": 255 }, + "src/ops/padToSquare.ts": { + "bytesInOutput": 332 + }, + "src/ops/shuffleArray.ts": { + "bytesInOutput": 132 + }, + "src/classes/Rect.ts": { + "bytesInOutput": 87 + }, + "src/classes/FaceLandmarks.ts": { + "bytesInOutput": 1393 + }, + "src/classes/FaceLandmarks5.ts": { + "bytesInOutput": 107 + }, + "src/classes/FaceLandmarks68.ts": { + "bytesInOutput": 464 + }, + "src/classes/FaceMatch.ts": { + "bytesInOutput": 201 + }, "src/classes/LabeledBox.ts": { - "bytesInOutput": 308 + "bytesInOutput": 250 }, "src/classes/LabeledFaceDescriptors.ts": { - "bytesInOutput": 722 + "bytesInOutput": 595 }, "src/classes/PredictedBox.ts": { - "bytesInOutput": 508 + "bytesInOutput": 385 }, "src/factories/WithFaceDetection.ts": { - "bytesInOutput": 170 + "bytesInOutput": 94 }, "src/env/createBrowserEnv.ts": { - "bytesInOutput": 478 + "bytesInOutput": 453 }, "src/env/createFileSystem.ts": { - "bytesInOutput": 361 + "bytesInOutput": 247 }, "src/env/createNodejsEnv.ts": { - "bytesInOutput": 714 + "bytesInOutput": 600 }, "src/env/isBrowser.ts": { - "bytesInOutput": 274 + "bytesInOutput": 267 }, "src/env/index.ts": { - "bytesInOutput": 1157 + "bytesInOutput": 790 }, "src/dom/resolveInput.ts": { - "bytesInOutput": 104 + "bytesInOutput": 84 }, "src/dom/getContext2dOrThrow.ts": { - "bytesInOutput": 446 + "bytesInOutput": 312 }, "src/draw/DrawTextField.ts": { - "bytesInOutput": 2255 + "bytesInOutput": 1484 }, "src/draw/DrawBox.ts": { - "bytesInOutput": 825 + "bytesInOutput": 581 }, "src/draw/drawDetections.ts": { - "bytesInOutput": 390 + "bytesInOutput": 220 }, "src/faceExpressionNet/FaceExpressionNet.ts": { - "bytesInOutput": 878 + "bytesInOutput": 567 }, "src/dom/isMediaLoaded.ts": { - "bytesInOutput": 151 + "bytesInOutput": 114 }, "src/dom/awaitMediaLoaded.ts": { - "bytesInOutput": 542 + "bytesInOutput": 423 }, "src/dom/index.ts": { "bytesInOutput": 0 }, "src/dom/bufferToImage.ts": { - "bytesInOutput": 482 + "bytesInOutput": 386 }, "src/dom/getMediaDimensions.ts": { - "bytesInOutput": 265 + "bytesInOutput": 180 }, "src/dom/createCanvas.ts": { - "bytesInOutput": 618 + "bytesInOutput": 389 }, "src/dom/imageTensorToCanvas.ts": { - "bytesInOutput": 398 + "bytesInOutput": 200 }, "src/dom/isMediaElement.ts": { - "bytesInOutput": 147 + "bytesInOutput": 110 }, "src/dom/NetInput.ts": { - "bytesInOutput": 2884 + "bytesInOutput": 2214 }, "src/dom/imageToSquare.ts": { - "bytesInOutput": 704 + "bytesInOutput": 381 }, "src/dom/toNetInput.ts": { - "bytesInOutput": 1104 + "bytesInOutput": 773 }, "src/dom/extractFaces.ts": { - "bytesInOutput": 752 + "bytesInOutput": 475 }, "src/dom/extractFaceTensors.ts": { - "bytesInOutput": 733 + "bytesInOutput": 442 }, "src/dom/fetchOrThrow.ts": { - "bytesInOutput": 212 + "bytesInOutput": 176 }, "src/dom/fetchImage.ts": { - "bytesInOutput": 269 + "bytesInOutput": 218 }, "src/dom/fetchJson.ts": { - "bytesInOutput": 69 + "bytesInOutput": 48 }, "src/dom/fetchNetWeights.ts": { - "bytesInOutput": 106 + "bytesInOutput": 79 }, "src/dom/loadWeightMap.ts": { - "bytesInOutput": 242 + "bytesInOutput": 123 }, "src/common/getModelUris.ts": { - "bytesInOutput": 765 + "bytesInOutput": 473 }, "src/dom/matchDimensions.ts": { - "bytesInOutput": 201 + "bytesInOutput": 101 }, "src/faceFeatureExtractor/FaceFeatureExtractor.ts": { - "bytesInOutput": 897 + "bytesInOutput": 621 }, "src/NeuralNetwork.ts": { - "bytesInOutput": 3292 + "bytesInOutput": 2640 }, "src/faceFeatureExtractor/denseBlock.ts": { - "bytesInOutput": 1176 + "bytesInOutput": 568 }, "src/common/depthwiseSeparableConv.ts": { - "bytesInOutput": 244 + "bytesInOutput": 157 }, "src/common/convLayer.ts": { - "bytesInOutput": 229 + "bytesInOutput": 141 }, "src/common/index.ts": { "bytesInOutput": 0 }, "src/common/disposeUnusedWeightTensors.ts": { - "bytesInOutput": 175 + "bytesInOutput": 91 }, "src/common/extractConvParamsFactory.ts": { - "bytesInOutput": 460 + "bytesInOutput": 195 }, "src/common/extractFCParamsFactory.ts": { - "bytesInOutput": 428 + "bytesInOutput": 185 }, "src/common/extractSeparableConvParamsFactory.ts": { - "bytesInOutput": 946 + "bytesInOutput": 396 }, "src/common/types.ts": { - "bytesInOutput": 177 + "bytesInOutput": 94 }, "src/common/extractWeightEntryFactory.ts": { - "bytesInOutput": 366 + "bytesInOutput": 188 }, "src/common/extractWeightsFactory.ts": { - "bytesInOutput": 311 + "bytesInOutput": 146 }, "src/faceFeatureExtractor/extractorsFactory.ts": { - "bytesInOutput": 1047 + "bytesInOutput": 377 }, "src/faceFeatureExtractor/extractParams.ts": { - "bytesInOutput": 570 + "bytesInOutput": 343 }, "src/common/loadConvParamsFactory.ts": { - "bytesInOutput": 187 + "bytesInOutput": 97 }, "src/faceFeatureExtractor/loadParamsFactory.ts": { - "bytesInOutput": 984 + "bytesInOutput": 388 }, "src/faceFeatureExtractor/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 400 + "bytesInOutput": 185 }, "src/faceProcessor/FaceProcessor.ts": { - "bytesInOutput": 1585 + "bytesInOutput": 1037 }, "src/common/fullyConnectedLayer.ts": { - "bytesInOutput": 153 + "bytesInOutput": 89 }, "src/faceProcessor/extractParams.ts": { - "bytesInOutput": 382 + "bytesInOutput": 214 }, "src/faceProcessor/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 411 + "bytesInOutput": 177 }, "src/faceProcessor/util.ts": { - "bytesInOutput": 252 + "bytesInOutput": 144 }, "src/faceExpressionNet/FaceExpressions.ts": { - "bytesInOutput": 532 + "bytesInOutput": 369 }, "src/faceExpressionNet/index.ts": { "bytesInOutput": 0 }, "src/factories/WithFaceExpressions.ts": { - "bytesInOutput": 182 + "bytesInOutput": 99 }, "src/draw/drawFaceExpressions.ts": { - "bytesInOutput": 717 + "bytesInOutput": 420 }, "src/factories/WithFaceLandmarks.ts": { - "bytesInOutput": 572 + "bytesInOutput": 333 }, "src/draw/DrawFaceLandmarks.ts": { - "bytesInOutput": 1723 + "bytesInOutput": 1225 }, "package.json": { - "bytesInOutput": 21 + "bytesInOutput": 16 }, "src/ageGenderNet/AgeGenderNet.ts": { - "bytesInOutput": 2559 + "bytesInOutput": 1688 }, "src/xception/TinyXception.ts": { - "bytesInOutput": 1905 + "bytesInOutput": 1265 }, "src/xception/extractParams.ts": { - "bytesInOutput": 2443 + "bytesInOutput": 1234 }, "src/xception/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 2161 + "bytesInOutput": 1047 }, "src/ageGenderNet/extractParams.ts": { - "bytesInOutput": 434 + "bytesInOutput": 258 }, "src/ageGenderNet/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 457 + "bytesInOutput": 209 }, "src/ageGenderNet/types.ts": { - "bytesInOutput": 97 + "bytesInOutput": 67 }, "src/ageGenderNet/index.ts": { "bytesInOutput": 0 }, "src/faceLandmarkNet/FaceLandmark68NetBase.ts": { - "bytesInOutput": 2035 + "bytesInOutput": 1177 }, "src/faceLandmarkNet/FaceLandmark68Net.ts": { - "bytesInOutput": 257 + "bytesInOutput": 167 }, "src/faceLandmarkNet/index.ts": { - "bytesInOutput": 54 + "bytesInOutput": 26 }, "src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts": { - "bytesInOutput": 889 + "bytesInOutput": 619 }, "src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts": { - "bytesInOutput": 362 + "bytesInOutput": 166 }, "src/faceFeatureExtractor/extractParamsTiny.ts": { - "bytesInOutput": 517 + "bytesInOutput": 312 }, "src/faceLandmarkNet/FaceLandmark68TinyNet.ts": { - "bytesInOutput": 274 + "bytesInOutput": 176 }, "src/faceRecognitionNet/FaceRecognitionNet.ts": { - "bytesInOutput": 1706 + "bytesInOutput": 1062 }, "src/faceRecognitionNet/convLayer.ts": { - "bytesInOutput": 463 + "bytesInOutput": 277 }, "src/faceRecognitionNet/scaleLayer.ts": { - "bytesInOutput": 123 + "bytesInOutput": 75 }, "src/faceRecognitionNet/extractParams.ts": { - "bytesInOutput": 3405 + "bytesInOutput": 1803 }, "src/faceRecognitionNet/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 2099 + "bytesInOutput": 1113 }, "src/faceRecognitionNet/residualLayer.ts": { - "bytesInOutput": 778 + "bytesInOutput": 466 }, "src/faceRecognitionNet/index.ts": { - "bytesInOutput": 113 + "bytesInOutput": 57 }, "src/factories/WithFaceDescriptor.ts": { - "bytesInOutput": 93 + "bytesInOutput": 48 }, "src/factories/index.ts": { "bytesInOutput": 0 }, "src/factories/WithAge.ts": { - "bytesInOutput": 124 + "bytesInOutput": 86 }, "src/factories/WithGender.ts": { - "bytesInOutput": 244 + "bytesInOutput": 155 }, "src/ssdMobilenetv1/SsdMobilenetv1.ts": { - "bytesInOutput": 1905 + "bytesInOutput": 1224 }, "src/ssdMobilenetv1/extractParams.ts": { - "bytesInOutput": 5967 + "bytesInOutput": 3588 }, "src/ssdMobilenetv1/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 4319 + "bytesInOutput": 2463 }, "src/ssdMobilenetv1/mobileNetV1.ts": { - "bytesInOutput": 1111 + "bytesInOutput": 715 }, "src/ssdMobilenetv1/pointwiseConvLayer.ts": { - "bytesInOutput": 239 + "bytesInOutput": 153 }, "src/ssdMobilenetv1/nonMaxSuppression.ts": { - "bytesInOutput": 1504 + "bytesInOutput": 792 }, "src/ssdMobilenetv1/outputLayer.ts": { - "bytesInOutput": 1590 + "bytesInOutput": 927 }, "src/ssdMobilenetv1/predictionLayer.ts": { - "bytesInOutput": 1419 + "bytesInOutput": 721 }, "src/ssdMobilenetv1/boxPredictionLayer.ts": { - "bytesInOutput": 354 + "bytesInOutput": 223 }, "src/ssdMobilenetv1/SsdMobilenetv1Options.ts": { - "bytesInOutput": 555 + "bytesInOutput": 518 }, "src/ssdMobilenetv1/index.ts": { - "bytesInOutput": 235 + "bytesInOutput": 111 }, "src/tinyYolov2/const.ts": { - "bytesInOutput": 490 + "bytesInOutput": 348 }, "src/tinyYolov2/TinyYolov2Base.ts": { - "bytesInOutput": 5894 + "bytesInOutput": 3656 }, "src/tinyYolov2/config.ts": { - "bytesInOutput": 1168 + "bytesInOutput": 1012 }, "src/tinyYolov2/convWithBatchNorm.ts": { - "bytesInOutput": 323 + "bytesInOutput": 215 }, "src/tinyYolov2/leaky.ts": { - "bytesInOutput": 182 + "bytesInOutput": 128 }, "src/tinyYolov2/depthwiseSeparableConv.ts": { - "bytesInOutput": 293 + "bytesInOutput": 203 }, "src/tinyYolov2/extractParams.ts": { - "bytesInOutput": 2551 + "bytesInOutput": 1290 }, "src/tinyYolov2/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 2034 + "bytesInOutput": 972 }, "src/tinyYolov2/TinyYolov2Options.ts": { - "bytesInOutput": 588 + "bytesInOutput": 556 }, "src/tinyYolov2/TinyYolov2.ts": { - "bytesInOutput": 779 + "bytesInOutput": 545 }, "src/tinyYolov2/index.ts": { - "bytesInOutput": 139 + "bytesInOutput": 65 }, "src/tinyFaceDetector/TinyFaceDetectorOptions.ts": { - "bytesInOutput": 133 + "bytesInOutput": 97 }, "src/globalApi/ComposableTask.ts": { - "bytesInOutput": 159 + "bytesInOutput": 127 }, "src/globalApi/DetectFaceLandmarksTasks.ts": { - "bytesInOutput": 1926 + "bytesInOutput": 1133 }, "src/globalApi/extractFacesAndComputeResults.ts": { - "bytesInOutput": 816 + "bytesInOutput": 300 }, "src/tinyFaceDetector/const.ts": { - "bytesInOutput": 216 + "bytesInOutput": 168 }, "src/tinyFaceDetector/TinyFaceDetector.ts": { - "bytesInOutput": 629 + "bytesInOutput": 495 }, "src/globalApi/nets.ts": { - "bytesInOutput": 1520 + "bytesInOutput": 844 }, "src/globalApi/PredictFaceExpressionsTask.ts": { - "bytesInOutput": 1700 + "bytesInOutput": 852 }, "src/globalApi/PredictAgeAndGenderTask.ts": { - "bytesInOutput": 1794 + "bytesInOutput": 957 }, "src/globalApi/ComputeFaceDescriptorsTasks.ts": { - "bytesInOutput": 1399 + "bytesInOutput": 752 }, "src/globalApi/DetectFacesTasks.ts": { - "bytesInOutput": 2225 + "bytesInOutput": 1343 }, "src/globalApi/detectFaces.ts": { - "bytesInOutput": 224 + "bytesInOutput": 84 }, "src/globalApi/allFaces.ts": { - "bytesInOutput": 392 + "bytesInOutput": 209 }, "src/globalApi/index.ts": { "bytesInOutput": 0 }, "src/euclideanDistance.ts": { - "bytesInOutput": 268 + "bytesInOutput": 205 }, "src/globalApi/FaceMatcher.ts": { - "bytesInOutput": 1844 + "bytesInOutput": 1333 }, "src/tinyFaceDetector/index.ts": { - "bytesInOutput": 109 + "bytesInOutput": 57 }, "src/resizeResults.ts": { - "bytesInOutput": 824 + "bytesInOutput": 443 } }, - "bytes": 129272 + "bytes": 82050 } } } diff --git a/dist/face-api.esm.js b/dist/face-api.esm.js index 4065fe6..bb66d3e 100644 --- a/dist/face-api.esm.js +++ b/dist/face-api.esm.js @@ -5,43 +5,43 @@ author: ' */ -var __create=Object.create,__defProp=Object.defineProperty,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropDesc=Object.getOwnPropertyDescriptor;var __markAsModule=target=>__defProp(target,"__esModule",{value:!0});var __commonJS=(callback,module)=>()=>(module||(module={exports:{}},callback(module.exports,module)),module.exports),__export=(target,all4)=>{__markAsModule(target);for(var name in all4)__defProp(target,name,{get:all4[name],enumerable:!0})},__exportStar=(target,module,desc)=>{if(__markAsModule(target),module&&typeof module=="object"||typeof module=="function")for(let key of __getOwnPropNames(module))!__hasOwnProp.call(target,key)&&key!=="default"&&__defProp(target,key,{get:()=>module[key],enumerable:!(desc=__getOwnPropDesc(module,key))||desc.enumerable});return target},__toModule=module=>module&&module.__esModule?module:__exportStar(__defProp(module!=null?__create(__getProtoOf(module)):{},"default",{value:module,enumerable:!0}),module);var require_isNodejs=__commonJS((exports,module)=>{__export(exports,{isNodejs:()=>isNodejs2});function isNodejs2(){return typeof global=="object"&&!0&&typeof module!="undefined"&&typeof process!="undefined"&&!!process.version}});var tfjs_esm_exports={};__export(tfjs_esm_exports,{Abs:()=>Abs,Acos:()=>Acos,Acosh:()=>Acosh,AdadeltaOptimizer:()=>AdadeltaOptimizer,AdagradOptimizer:()=>AdagradOptimizer,AdamOptimizer:()=>AdamOptimizer,AdamaxOptimizer:()=>AdamaxOptimizer,Add:()=>Add,AddN:()=>AddN,All:()=>All,Any:()=>Any,ArgMax:()=>ArgMax,ArgMin:()=>ArgMin,Asin:()=>Asin,Asinh:()=>Asinh,Atan:()=>Atan,Atan2:()=>Atan2,Atanh:()=>Atanh,AvgPool:()=>AvgPool,AvgPool3D:()=>AvgPool3D,AvgPool3DGrad:()=>AvgPool3DGrad,AvgPoolGrad:()=>AvgPoolGrad,BackendWasm:()=>BackendWasm,BatchMatMul:()=>BatchMatMul,BatchToSpaceND:()=>BatchToSpaceND,Bincount:()=>Bincount,BroadcastTo:()=>BroadcastTo,Callback:()=>Callback,CallbackList:()=>CallbackList,Cast:()=>Cast,Ceil:()=>Ceil,ClipByValue:()=>ClipByValue,Complex:()=>Complex,ComplexAbs:()=>ComplexAbs,Concat:()=>Concat,Conv2D:()=>Conv2D,Conv2DBackpropFilter:()=>Conv2DBackpropFilter,Conv2DBackpropInput:()=>Conv2DBackpropInput,Conv3D:()=>Conv3D,Conv3DBackpropFilterV2:()=>Conv3DBackpropFilterV2,Conv3DBackpropInputV2:()=>Conv3DBackpropInputV2,Cos:()=>Cos,Cosh:()=>Cosh,CropAndResize:()=>CropAndResize,Cumsum:()=>Cumsum,CustomCallback:()=>CustomCallback,DataStorage:()=>DataStorage,DenseBincount:()=>DenseBincount,DepthToSpace:()=>DepthToSpace,DepthwiseConv2dNative:()=>DepthwiseConv2dNative,DepthwiseConv2dNativeBackpropFilter:()=>DepthwiseConv2dNativeBackpropFilter,DepthwiseConv2dNativeBackpropInput:()=>DepthwiseConv2dNativeBackpropInput,Diag:()=>Diag,Dilation2D:()=>Dilation2D,Dilation2DBackpropFilter:()=>Dilation2DBackpropFilter,Dilation2DBackpropInput:()=>Dilation2DBackpropInput,ENV:()=>ENV,EarlyStopping:()=>EarlyStopping,Elu:()=>Elu,EluGrad:()=>EluGrad,Environment:()=>Environment,Equal:()=>Equal,Erf:()=>Erf,Exp:()=>Exp,ExpandDims:()=>ExpandDims,Expm1:()=>Expm1,FFT:()=>FFT,Fill:()=>Fill,FlipLeftRight:()=>FlipLeftRight,Floor:()=>Floor,FloorDiv:()=>FloorDiv,FromPixels:()=>FromPixels,FusedBatchNorm:()=>FusedBatchNorm,FusedConv2D:()=>FusedConv2D,FusedDepthwiseConv2D:()=>FusedDepthwiseConv2D,GatherNd:()=>GatherNd,GatherV2:()=>GatherV2,GraphModel:()=>GraphModel,Greater:()=>Greater,GreaterEqual:()=>GreaterEqual,History:()=>History,IFFT:()=>IFFT,Identity:()=>Identity,Imag:()=>Imag,InputSpec:()=>InputSpec,IsFinite:()=>IsFinite,IsInf:()=>IsInf,IsNan:()=>IsNan,KernelBackend:()=>KernelBackend,LRN:()=>LRN,LRNGrad:()=>LRNGrad,LayerVariable:()=>LayerVariable,LayersModel:()=>LayersModel,LeakyRelu:()=>LeakyRelu,Less:()=>Less,LessEqual:()=>LessEqual,LinSpace:()=>LinSpace,Log:()=>Log,Log1p:()=>Log1p,LogSoftmax:()=>LogSoftmax,LogicalAnd:()=>LogicalAnd,LogicalNot:()=>LogicalNot,LogicalOr:()=>LogicalOr,Max:()=>Max,MaxPool:()=>MaxPool,MaxPool3D:()=>MaxPool3D,MaxPool3DGrad:()=>MaxPool3DGrad,MaxPoolGrad:()=>MaxPoolGrad,MaxPoolWithArgmax:()=>MaxPoolWithArgmax,Maximum:()=>Maximum,Mean:()=>Mean,Min:()=>Min,Minimum:()=>Minimum,MirrorPad:()=>MirrorPad,Mod:()=>Mod,MomentumOptimizer:()=>MomentumOptimizer,Multinomial:()=>Multinomial,Multiply:()=>Multiply,Neg:()=>Neg,NonMaxSuppressionV3:()=>NonMaxSuppressionV3,NonMaxSuppressionV4:()=>NonMaxSuppressionV4,NonMaxSuppressionV5:()=>NonMaxSuppressionV5,NotEqual:()=>NotEqual,OP_SCOPE_SUFFIX:()=>OP_SCOPE_SUFFIX,OneHot:()=>OneHot,OnesLike:()=>OnesLike,Optimizer:()=>Optimizer,Pack:()=>Pack,PadV2:()=>PadV2,Pool:()=>Pool,Pow:()=>Pow,Prelu:()=>Prelu,Prod:()=>Prod,RMSPropOptimizer:()=>RMSPropOptimizer,RNN:()=>RNN,Range:()=>Range,Rank:()=>Rank,Real:()=>Real,RealDiv:()=>RealDiv,Reciprocal:()=>Reciprocal,Reduction:()=>Reduction,Relu:()=>Relu,Relu6:()=>Relu6,Reshape:()=>Reshape,ResizeBilinear:()=>ResizeBilinear,ResizeBilinearGrad:()=>ResizeBilinearGrad,ResizeNearestNeighbor:()=>ResizeNearestNeighbor,ResizeNearestNeighborGrad:()=>ResizeNearestNeighborGrad,Reverse:()=>Reverse,RotateWithOffset:()=>RotateWithOffset,Round:()=>Round,Rsqrt:()=>Rsqrt,SGDOptimizer:()=>SGDOptimizer,ScatterNd:()=>ScatterNd,Select:()=>Select,Selu:()=>Selu,Sequential:()=>Sequential,Sigmoid:()=>Sigmoid,Sign:()=>Sign,Sin:()=>Sin,Sinh:()=>Sinh,Slice:()=>Slice,Softmax:()=>Softmax,Softplus:()=>Softplus,SpaceToBatchND:()=>SpaceToBatchND,SparseToDense:()=>SparseToDense,SplitV:()=>SplitV,Sqrt:()=>Sqrt,Square:()=>Square,SquaredDifference:()=>SquaredDifference,Step:()=>Step,StridedSlice:()=>StridedSlice,Sub:()=>Sub,Sum:()=>Sum,SymbolicTensor:()=>SymbolicTensor,Tan:()=>Tan,Tanh:()=>Tanh,Tensor:()=>Tensor,TensorBuffer:()=>TensorBuffer,Tile:()=>Tile,TopK:()=>TopK,Transpose:()=>Transpose,Unique:()=>Unique,Unpack:()=>Unpack,UnsortedSegmentSum:()=>UnsortedSegmentSum,Variable:()=>Variable,ZerosLike:()=>ZerosLike,_FusedMatMul:()=>_FusedMatMul,abs:()=>abs,acos:()=>acos,acosh:()=>acosh,add:()=>add2,addN:()=>addN,addStrict:()=>addStrict,all:()=>all,any:()=>any,argMax:()=>argMax,argMin:()=>argMin,asin:()=>asin,asinh:()=>asinh,atan:()=>atan,atan2:()=>atan2,atanh:()=>atanh,avgPool:()=>avgPool,avgPool3d:()=>avgPool3d,backend:()=>backend,backend_util:()=>backend_util_exports,basicLSTMCell:()=>basicLSTMCell,batchNorm:()=>batchNorm,batchNorm2d:()=>batchNorm2d,batchNorm3d:()=>batchNorm3d,batchNorm4d:()=>batchNorm4d,batchToSpaceND:()=>batchToSpaceND,bincount:()=>bincount,booleanMaskAsync:()=>booleanMaskAsync,broadcastTo:()=>broadcastTo,browser:()=>browser_exports,buffer:()=>buffer,callbacks:()=>callbacks,cast:()=>cast,ceil:()=>ceil,clipByValue:()=>clipByValue,clone:()=>clone,complex:()=>complex,concat:()=>concat,concat1d:()=>concat1d,concat2d:()=>concat2d,concat3d:()=>concat3d,concat4d:()=>concat4d,constraints:()=>exports_constraints_exports,conv1d:()=>conv1d,conv2d:()=>conv2d,conv2dTranspose:()=>conv2dTranspose,conv3d:()=>conv3d,conv3dTranspose:()=>conv3dTranspose,copyRegisteredKernels:()=>copyRegisteredKernels,cos:()=>cos,cosh:()=>cosh,cosineWindow:()=>cosineWindow,cumsum:()=>cumsum,customGrad:()=>customGrad,data:()=>dist_exports,denseBincount:()=>denseBincount,deprecationWarn:()=>deprecationWarn,depthToSpace:()=>depthToSpace,depthwiseConv2d:()=>depthwiseConv2d,deregisterOp:()=>deregisterOp,device_util:()=>device_util_exports,diag:()=>diag,dilation2d:()=>dilation2d,disableDeprecationWarnings:()=>disableDeprecationWarnings,dispose:()=>dispose,disposeVariables:()=>disposeVariables,div:()=>div,divNoNan:()=>divNoNan,divStrict:()=>divStrict,dot:()=>dot,dropout:()=>dropout,elu:()=>elu,enableDebugMode:()=>enableDebugMode,enableProdMode:()=>enableProdMode,enclosingPowerOfTwo:()=>enclosingPowerOfTwo,engine:()=>engine,env:()=>env,equal:()=>equal,equalStrict:()=>equalStrict,erf:()=>erf,exp:()=>exp,expandDims:()=>expandDims,expm1:()=>expm1,eye:()=>eye,fft:()=>fft,fill:()=>fill,findBackend:()=>findBackend,findBackendFactory:()=>findBackendFactory,floor:()=>floor,floorDiv:()=>floorDiv,fused:()=>fused_ops_exports,gather:()=>gather,gatherND:()=>gatherND,gather_util:()=>gather_nd_util_exports,getBackend:()=>getBackend,getGradient:()=>getGradient,getKernel:()=>getKernel,getKernelsForBackend:()=>getKernelsForBackend,grad:()=>grad,grads:()=>grads,greater:()=>greater,greaterEqual:()=>greaterEqual,greaterEqualStrict:()=>greaterEqualStrict,greaterStrict:()=>greaterStrict,ifft:()=>ifft,imag:()=>imag,image:()=>image,inTopKAsync:()=>inTopKAsync,initializers:()=>exports_initializers_exports,input:()=>input,io:()=>io_exports,irfft:()=>irfft,isFinite:()=>isFinite2,isInf:()=>isInf,isNaN:()=>isNaN2,keep:()=>keep,kernel_impls:()=>kernel_impls_exports,layers:()=>exports_layers_exports,leakyRelu:()=>leakyRelu,less:()=>less,lessEqual:()=>lessEqual,lessEqualStrict:()=>lessEqualStrict,lessStrict:()=>lessStrict,linalg:()=>linalg,linspace:()=>linspace,loadGraphModel:()=>loadGraphModel,loadLayersModel:()=>loadLayersModel,localResponseNormalization:()=>localResponseNormalization,log:()=>log,log1p:()=>log1p,logSigmoid:()=>logSigmoid,logSoftmax:()=>logSoftmax,logSumExp:()=>logSumExp,logicalAnd:()=>logicalAnd,logicalNot:()=>logicalNot,logicalOr:()=>logicalOr,logicalXor:()=>logicalXor,losses:()=>losses,matMul:()=>matMul,math:()=>math_exports,max:()=>max,maxPool:()=>maxPool,maxPool3d:()=>maxPool3d,maxPoolWithArgmax:()=>maxPoolWithArgmax,maximum:()=>maximum,maximumStrict:()=>maximumStrict,mean:()=>mean,memory:()=>memory,metrics:()=>exports_metrics_exports,min:()=>min,minimum:()=>minimum,minimumStrict:()=>minimumStrict,mirrorPad:()=>mirrorPad,mod:()=>mod,modStrict:()=>modStrict,model:()=>model,models:()=>exports_models_exports,moments:()=>moments,movingAverage:()=>movingAverage,mul:()=>mul,mulStrict:()=>mulStrict,multiRNNCell:()=>multiRNNCell,multinomial:()=>multinomial,neg:()=>neg,nextFrame:()=>nextFrame,norm:()=>norm,notEqual:()=>notEqual,notEqualStrict:()=>notEqualStrict,oneHot:()=>oneHot,ones:()=>ones2,onesLike:()=>onesLike,op:()=>op,outerProduct:()=>outerProduct,pad:()=>pad,pad1d:()=>pad1d,pad2d:()=>pad2d,pad3d:()=>pad3d,pad4d:()=>pad4d,pool:()=>pool,pow:()=>pow,powStrict:()=>powStrict,prelu:()=>prelu,print:()=>print2,prod:()=>prod,profile:()=>profile,rand:()=>rand,randomGamma:()=>randomGamma,randomNormal:()=>randomNormal,randomUniform:()=>randomUniform,range:()=>range,ready:()=>ready,real:()=>real,reciprocal:()=>reciprocal,registerBackend:()=>registerBackend,registerCallbackConstructor:()=>registerCallbackConstructor,registerGradient:()=>registerGradient,registerKernel:()=>registerKernel,registerOp:()=>registerOp,regularizers:()=>exports_regularizers_exports,relu:()=>relu,relu6:()=>relu6,removeBackend:()=>removeBackend,reshape:()=>reshape,reverse:()=>reverse,reverse1d:()=>reverse1d,reverse2d:()=>reverse2d,reverse3d:()=>reverse3d,reverse4d:()=>reverse4d,rfft:()=>rfft,round:()=>round2,rsqrt:()=>rsqrt,scalar:()=>scalar,scatterND:()=>scatterND,scatter_util:()=>scatter_nd_util_exports,selu:()=>selu,separableConv2d:()=>separableConv2d,sequential:()=>sequential,serialization:()=>serialization_exports,setBackend:()=>setBackend,setPlatform:()=>setPlatform,setWasmPath:()=>setWasmPath,setWasmPaths:()=>setWasmPaths,setdiff1dAsync:()=>setdiff1dAsync,sigmoid:()=>sigmoid,sign:()=>sign,signal:()=>signal,sin:()=>sin,sinh:()=>sinh,slice:()=>slice,slice1d:()=>slice1d,slice2d:()=>slice2d,slice3d:()=>slice3d,slice4d:()=>slice4d,slice_util:()=>slice_util_exports,softmax:()=>softmax,softplus:()=>softplus,spaceToBatchND:()=>spaceToBatchND,sparseToDense:()=>sparseToDense,spectral:()=>spectral,split:()=>split,sqrt:()=>sqrt,square:()=>square,squaredDifference:()=>squaredDifference,squaredDifferenceStrict:()=>squaredDifferenceStrict,squeeze:()=>squeeze,stack:()=>stack,step:()=>step,stridedSlice:()=>stridedSlice,sub:()=>sub,subStrict:()=>subStrict,sum:()=>sum2,sumOutType:()=>sumOutType,tan:()=>tan,tanh:()=>tanh2,tensor:()=>tensor,tensor1d:()=>tensor1d,tensor2d:()=>tensor2d,tensor3d:()=>tensor3d,tensor4d:()=>tensor4d,tensor5d:()=>tensor5d,tensor6d:()=>tensor6d,tensor_util:()=>tensor_util_exports,test_util:()=>test_util_exports,tidy:()=>tidy,tile:()=>tile,time:()=>time,topk:()=>topk,train:()=>train,transpose:()=>transpose,truncatedNormal:()=>truncatedNormal,unique:()=>unique,unregisterGradient:()=>unregisterGradient,unregisterKernel:()=>unregisterKernel,unsortedSegmentSum:()=>unsortedSegmentSum,unstack:()=>unstack,upcastType:()=>upcastType,util:()=>util_exports,valueAndGrad:()=>valueAndGrad,valueAndGrads:()=>valueAndGrads,variable:()=>variable,variableGrads:()=>variableGrads,version:()=>version8,version_converter:()=>version3,version_core:()=>version,version_layers:()=>version2,version_wasm:()=>version9,where:()=>where,whereAsync:()=>whereAsync,zeros:()=>zeros,zerosLike:()=>zerosLike});var __create2=Object.create,__defProp2=Object.defineProperty,__getProtoOf2=Object.getPrototypeOf,__hasOwnProp2=Object.prototype.hasOwnProperty,__getOwnPropNames2=Object.getOwnPropertyNames,__getOwnPropDesc2=Object.getOwnPropertyDescriptor,__markAsModule2=target=>__defProp2(target,"__esModule",{value:!0}),__commonJS2=(callback,module)=>()=>(module||(module={exports:{}},callback(module.exports,module)),module.exports),__export2=(target,all4)=>{__markAsModule2(target);for(var name in all4)__defProp2(target,name,{get:all4[name],enumerable:!0})},__exportStar2=(target,module,desc)=>{if(__markAsModule2(target),module&&typeof module=="object"||typeof module=="function")for(let key of __getOwnPropNames2(module))!__hasOwnProp2.call(target,key)&&key!=="default"&&__defProp2(target,key,{get:()=>module[key],enumerable:!(desc=__getOwnPropDesc2(module,key))||desc.enumerable});return target},__toModule2=module=>module&&module.__esModule?module:__exportStar2(__defProp2(module!=null?__create2(__getProtoOf2(module)):{},"default",{value:module,enumerable:!0}),module),require_browser=__commonJS2(()=>{}),require_alea=__commonJS2((exports,module)=>{(function(global2,module2,define2){function Alea(seed){var me=this,mash=Mash();me.next=function(){var t=2091639*me.s0+me.c*23283064365386963e-26;return me.s0=me.s1,me.s1=me.s2,me.s2=t-(me.c=t|0)},me.c=1,me.s0=mash(" "),me.s1=mash(" "),me.s2=mash(" "),me.s0-=mash(seed),me.s0<0&&(me.s0+=1),me.s1-=mash(seed),me.s1<0&&(me.s1+=1),me.s2-=mash(seed),me.s2<0&&(me.s2+=1),mash=null}function copy(f,t){return t.c=f.c,t.s0=f.s0,t.s1=f.s1,t.s2=f.s2,t}function impl(seed,opts){var xg=new Alea(seed),state=opts&&opts.state,prng=xg.next;return prng.int32=function(){return xg.next()*4294967296|0},prng.double=function(){return prng()+(prng()*2097152|0)*11102230246251565e-32},prng.quick=prng,state&&(typeof state=="object"&©(state,xg),prng.state=function(){return copy(xg,{})}),prng}function Mash(){var n=4022871197,mash=function(data){data=data.toString();for(var i=0;i>>0,h-=n,h*=n,n=h>>>0,h-=n,n+=h*4294967296}return(n>>>0)*23283064365386963e-26};return mash}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.alea=impl})(exports,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor128=__commonJS2((exports,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.x=0,me.y=0,me.z=0,me.w=0,me.next=function(){var t=me.x^me.x<<11;return me.x=me.y,me.y=me.z,me.z=me.w,me.w^=me.w>>>19^t^t>>>8},seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state&&(typeof state=="object"&©(state,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor128=impl})(exports,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorwow=__commonJS2((exports,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var t=me.x^me.x>>>2;return me.x=me.y,me.y=me.z,me.z=me.w,me.w=me.v,(me.d=me.d+362437|0)+(me.v=me.v^me.v<<4^(t^t<<1))|0},me.x=0,me.y=0,me.z=0,me.w=0,me.v=0,seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>4),me.next()}function copy(f,t){return t.x=f.x,t.y=f.y,t.z=f.z,t.w=f.w,t.v=f.v,t.d=f.d,t}function impl(seed,opts){var xg=new XorGen(seed),state=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state&&(typeof state=="object"&©(state,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorwow=impl})(exports,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorshift7=__commonJS2((exports,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var X=me.x,i=me.i,t,v,w;return t=X[i],t^=t>>>7,v=t^t<<24,t=X[i+1&7],v^=t^t>>>10,t=X[i+3&7],v^=t^t>>>3,t=X[i+4&7],v^=t^t<<7,t=X[i+7&7],t=t^t<<13,v^=t^t<<9,X[i]=v,me.i=i+1&7,v};function init2(me2,seed2){var j,w,X=[];if(seed2===(seed2|0))w=X[0]=seed2;else for(seed2=""+seed2,j=0;j0;--j)me2.next()}init2(me,seed)}function copy(f,t){return t.x=f.x.slice(),t.i=f.i,t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state&&(state.x&©(state,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorshift7=impl})(exports,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor4096=__commonJS2((exports,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var w=me.w,X=me.X,i=me.i,t,v;return me.w=w=w+1640531527|0,v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,v=X[i]=v^t,me.i=i,v+(w^w>>>16)|0};function init2(me2,seed2){var t,v,i,j,w,X=[],limit=128;for(seed2===(seed2|0)?(v=seed2,seed2=null):(seed2=seed2+"\0",v=0,limit=Math.max(limit,seed2.length)),i=0,j=-32;j>>15,v^=v<<4,v^=v>>>13,j>=0&&(w=w+1640531527|0,t=X[j&127]^=v+w,i=t==0?i+1:0);for(i>=128&&(X[(seed2&&seed2.length||0)&127]=-1),i=127,j=4*128;j>0;--j)v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,X[i]=v^t;me2.w=w,me2.X=X,me2.i=i}init2(me,seed)}function copy(f,t){return t.i=f.i,t.w=f.w,t.X=f.X.slice(),t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state&&(state.X&©(state,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor4096=impl})(exports,typeof module=="object"&&module,typeof define=="function"&&define)}),require_tychei=__commonJS2((exports,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var b=me.b,c=me.c,d=me.d,a=me.a;return b=b<<25^b>>>7^c,c=c-d|0,d=d<<24^d>>>8^a,a=a-b|0,me.b=b=b<<20^b>>>12^c,me.c=c=c-d|0,me.d=d<<16^c>>>16^a,me.a=a-b|0},me.a=0,me.b=0,me.c=2654435769|0,me.d=1367130551,seed===Math.floor(seed)?(me.a=seed/4294967296|0,me.b=seed|0):strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state&&(typeof state=="object"&©(state,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.tychei=impl})(exports,typeof module=="object"&&module,typeof define=="function"&&define)}),require_crypto=__commonJS2(()=>{}),require_seedrandom=__commonJS2((exports,module)=>{(function(pool3,math){var global2=this,width=256,chunks=6,digits=52,rngname="random",startdenom=math.pow(width,chunks),significance=math.pow(2,digits),overflow=significance*2,mask=width-1,nodecrypto;function seedrandom5(seed,options,callback){var key=[];options=options==!0?{entropy:!0}:options||{};var shortseed=mixkey(flatten4(options.entropy?[seed,tostring(pool3)]:seed==null?autoseed():seed,3),key),arc4=new ARC4(key),prng=function(){for(var n=arc4.g(chunks),d=startdenom,x=0;n=overflow;)n/=2,d/=2,x>>>=1;return(n+x)/d};return prng.int32=function(){return arc4.g(4)|0},prng.quick=function(){return arc4.g(4)/4294967296},prng.double=prng,mixkey(tostring(arc4.S),pool3),(options.pass||callback||function(prng2,seed2,is_math_call,state){return state&&(state.S&©(state,arc4),prng2.state=function(){return copy(arc4,{})}),is_math_call?(math[rngname]=prng2,seed2):prng2})(prng,shortseed,"global"in options?options.global:this==math,options.state)}math["seed"+rngname]=seedrandom5;function ARC4(key){var t,keylen=key.length,me=this,i=0,j=me.i=me.j=0,s=me.S=[];for(keylen||(key=[keylen++]);i{var alea5=require_alea(),xor128=require_xor128(),xorwow=require_xorwow(),xorshift7=require_xorshift7(),xor4096=require_xor4096(),tychei=require_tychei(),sr=require_seedrandom();sr.alea=alea5,sr.xor128=xor128,sr.xorwow=xorwow,sr.xorshift7=xorshift7,sr.xor4096=xor4096,sr.tychei=tychei,module.exports=sr}),require_string_decoder=__commonJS2(()=>{}),require_path=__commonJS2(()=>{}),require_worker_threads=__commonJS2(()=>{}),require_perf_hooks=__commonJS2(()=>{}),require_tfjs_backend_wasm_threaded_simd=__commonJS2((exports,module)=>{var WasmBackendModuleThreadedSimd=function(){var _scriptDir=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(_scriptDir=_scriptDir||__filename),function(WasmBackendModuleThreadedSimd2){WasmBackendModuleThreadedSimd2=WasmBackendModuleThreadedSimd2||{};function GROWABLE_HEAP_I8(){return wasmMemory.buffer!=buffer2&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAP8}function GROWABLE_HEAP_U8(){return wasmMemory.buffer!=buffer2&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPU8}function GROWABLE_HEAP_I32(){return wasmMemory.buffer!=buffer2&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAP32}function GROWABLE_HEAP_U32(){return wasmMemory.buffer!=buffer2&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPU32}function GROWABLE_HEAP_F64(){return wasmMemory.buffer!=buffer2&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd2!="undefined"?WasmBackendModuleThreadedSimd2:{},_scriptDir2=void 0,moduleOverrides={},key;for(key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var arguments_=[],thisProgram="./this.program",quit_=function(status,toThrow){throw toThrow},ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module.ENVIRONMENT_IS_PTHREAD||!1;ENVIRONMENT_IS_PTHREAD&&(buffer2=Module.buffer,DYNAMIC_BASE=Module.DYNAMIC_BASE,DYNAMICTOP_PTR=Module.DYNAMICTOP_PTR);var scriptDirectory="";function locateFile(path){return Module.locateFile?Module.locateFile(path,scriptDirectory):scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle,nodeFS,nodePath;if(ENVIRONMENT_IS_NODE){ENVIRONMENT_IS_WORKER?scriptDirectory=require_path().dirname(scriptDirectory)+"/":scriptDirectory=__dirname+"/",read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret},process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),process.on("uncaughtException",function(ex){if(!(ex instanceof ExitStatus))throw ex}),process.on("unhandledRejection",abort),quit_=function(status){process.exit(status)},Module.inspect=function(){return"[Emscripten Module object]"};var nodeWorkerThreads;try{nodeWorkerThreads=require_worker_threads()}catch(e){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),e}Worker=nodeWorkerThreads.Worker}else ENVIRONMENT_IS_SHELL?(typeof read!="undefined"&&(read_=function(f){return read(f)}),readBinary=function(f){var data;return typeof readbuffer=="function"?new Uint8Array(readbuffer(f)):(data=read(f,"binary"),assert3(typeof data=="object"),data)},typeof scriptArgs!="undefined"?arguments_=scriptArgs:typeof arguments!="undefined"&&(arguments_=arguments),typeof quit=="function"&&(quit_=function(status){quit(status)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:document.currentScript&&(scriptDirectory=document.currentScript.src),_scriptDir2&&(scriptDirectory=_scriptDir2),scriptDirectory.indexOf("blob:")!==0?scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1):scriptDirectory="",ENVIRONMENT_IS_NODE?(read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret}):(read_=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.send(null),xhr.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.responseType="arraybuffer",xhr.send(null),new Uint8Array(xhr.response)}),readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.responseType="arraybuffer",xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()},xhr.onerror=onerror,xhr.send(null)}),setWindowTitle=function(title){document.title=title});ENVIRONMENT_IS_NODE&&typeof performance=="undefined"&&(performance=require_perf_hooks().performance);var out=Module.print||console.log.bind(console),err=Module.printErr||console.warn.bind(console);for(key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&(quit_=Module.quit);var Atomics_load=Atomics.load,Atomics_store=Atomics.store,Atomics_compareExchange=Atomics.compareExchange,wasmBinary;Module.wasmBinary&&(wasmBinary=Module.wasmBinary);var noExitRuntime;Module.noExitRuntime&&(noExitRuntime=Module.noExitRuntime),typeof WebAssembly!="object"&&err("no native wasm support detected");var wasmMemory,wasmTable=new WebAssembly.Table({initial:169,maximum:169+0,element:"anyfunc"}),wasmModule,threadInfoStruct=0,selfThreadId=0,ABORT=!1,EXITSTATUS=0;function assert3(condition,text){condition||abort("Assertion failed: "+text)}function getCFunc(ident){var func2=Module["_"+ident];return assert3(func2,"Cannot call unknown function "+ident+", make sure it is exported"),func2}function ccall(ident,returnType,argTypes,args,opts){var toC={string:function(str){var ret2=0;if(str!=null&&str!==0){var len=(str.length<<2)+1;ret2=stackAlloc(len),stringToUTF8(str,ret2,len)}return ret2},array:function(arr){var ret2=stackAlloc(arr.length);return writeArrayToMemory(arr,ret2),ret2}};function convertReturnValue(ret2){return returnType==="string"?UTF8ToString(ret2):returnType==="boolean"?Boolean(ret2):ret2}var func2=getCFunc(ident),cArgs=[],stack2=0;if(args)for(var i=0;i=endIdx);){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224?u0=(u0&15)<<12|u1<<6|u2:u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63,u0<65536)str+=String.fromCharCode(u0);else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;for(var startIdx=outIdx,endIdx=outIdx+maxBytesToWrite-1,i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6,heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18,heap[outIdx++]=128|u>>12&63,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}}return heap[outIdx]=0,outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){for(var len=0,i=0;i=55296&&u<=57343&&(u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023),u<=127?++len:u<=2047?len+=2:u<=65535?len+=3:len+=4}return len}function writeArrayToMemory(array2,buffer3){GROWABLE_HEAP_I8().set(array2,buffer3)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){return x%multiple>0&&(x+=multiple-x%multiple),x}var buffer2,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer2=buf,Module.HEAP8=HEAP8=new Int8Array(buf),Module.HEAP16=HEAP16=new Int16Array(buf),Module.HEAP32=HEAP32=new Int32Array(buf),Module.HEAPU8=HEAPU8=new Uint8Array(buf),Module.HEAPU16=HEAPU16=new Uint16Array(buf),Module.HEAPU32=HEAPU32=new Uint32Array(buf),Module.HEAPF32=HEAPF32=new Float32Array(buf),Module.HEAPF64=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256464,STACKTOP=STACK_BASE,STACK_MAX=13584,DYNAMIC_BASE=5256464,DYNAMICTOP_PTR=12656,INITIAL_INITIAL_MEMORY=Module.INITIAL_MEMORY||16777216;if(ENVIRONMENT_IS_PTHREAD)wasmMemory=Module.wasmMemory,buffer2=Module.buffer;else if(Module.wasmMemory)wasmMemory=Module.wasmMemory;else if(wasmMemory=new WebAssembly.Memory({initial:INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,maximum:2147483648/WASM_PAGE_SIZE,shared:!0}),!(wasmMemory.buffer instanceof SharedArrayBuffer))throw err("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"),ENVIRONMENT_IS_NODE&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"),Error("bad memory");wasmMemory&&(buffer2=wasmMemory.buffer),INITIAL_INITIAL_MEMORY=buffer2.byteLength,updateGlobalBufferAndViews(buffer2),ENVIRONMENT_IS_PTHREAD||(GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE);function callRuntimeCallbacks(callbacks2){for(;callbacks2.length>0;){var callback=callbacks2.shift();if(typeof callback=="function"){callback(Module);continue}var func2=callback.func;typeof func2=="number"?callback.arg===void 0?Module.dynCall_v(func2):Module.dynCall_vi(func2,callback.arg):func2(callback.arg===void 0?null:callback.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1;ENVIRONMENT_IS_PTHREAD&&(runtimeInitialized=!0);function preRun(){if(!ENVIRONMENT_IS_PTHREAD){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}}function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__)}function preMain(){ENVIRONMENT_IS_PTHREAD||callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(!ENVIRONMENT_IS_PTHREAD){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil,Math_floor=Math.floor,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function addRunDependency(id){assert3(!ENVIRONMENT_IS_PTHREAD,"addRunDependency cannot be used in a pthread worker"),runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(id){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var callback=dependenciesFulfilled;dependenciesFulfilled=null,callback()}}Module.preloadedImages={},Module.preloadedAudios={};function abort(what){throw Module.onAbort&&Module.onAbort(what),ENVIRONMENT_IS_PTHREAD&&console.error("Pthread aborting at "+new Error().stack),what+="",out(what),err(what),ABORT=!0,EXITSTATUS=1,what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="tfjs-backend-wasm-threaded-simd.wasm";isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile));function getBinary(){try{if(wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(wasmBinaryFile);throw"both async and sync fetching of the wasm failed"}catch(err2){abort(err2)}}function getBinaryPromise(){return!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch=="function"&&!isFileURI(wasmBinaryFile)?fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response.ok)throw"failed to load wasm binary file at '"+wasmBinaryFile+"'";return response.arrayBuffer()}).catch(function(){return getBinary()}):new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={a:asmLibraryArg};function receiveInstance(instance,module2){var exports3=instance.exports;if(Module.asm=exports3,wasmModule=module2,!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){--numWorkersToLoad||removeRunDependency("wasm-instantiate")})})}}ENVIRONMENT_IS_PTHREAD||addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output.instance,output.module)}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason),abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function")fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(receiveInstantiatedSource)})});else return instantiateArrayBuffer(receiveInstantiatedSource)}if(Module.instantiateWasm)try{var exports2=Module.instantiateWasm(info,receiveInstance);return exports2}catch(e){return err("Module.instantiateWasm callback failed with error: "+e),!1}return instantiateAsync(),{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}ENVIRONMENT_IS_PTHREAD||__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0,__pthread_is_main_runtime_thread=0,__pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0,isMainBrowserThread=isMainBrowserThread|0,isMainRuntimeThread=isMainRuntimeThread|0,__pthread_ptr=pthreadPtr,__pthread_is_main_browser_thread=isMainBrowserThread,__pthread_is_main_runtime_thread=isMainRuntimeThread}Module.__register_pthread_ptr=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},__main_thread_futex_wait_address=13568;function _emscripten_futex_wake(addr,count2){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&!0||count2<0)return-28;if(count2==0)return 0;count2>=2147483647&&(count2=Infinity);var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2),mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress&&(--count2,mainThreadWoken=1,count2<=0))return 1}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count2);if(ret>=0)return ret+mainThreadWoken;throw"Atomics.notify returned an unexpected value "+ret}Module._emscripten_futex_wake=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _kill_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _kill_thread!";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate(),PThread.freeThreadData(pthread),PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1),pthread.worker.pthread=void 0}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _cancel_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _cancel_thread!";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({cmd:"cancel"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _cleanup_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _cleanup_thread!";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1),_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){for(var pthreadPoolSize=8,i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;for(var tlsMemory=13056,i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory),Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock),Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){for(;PThread.exitHandlers.length>0;)PThread.exitHandlers.pop()();PThread.exitHandlers=null}ENVIRONMENT_IS_PTHREAD&&threadInfoStruct&&___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();tb&&(Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode),Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1),Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1),Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0),PThread.runExitHandlers(),_emscripten_futex_wake(tb+0,2147483647),__register_pthread_ptr(0,0,0),threadInfoStruct=0,ENVIRONMENT_IS_PTHREAD&&postMessage({cmd:"exit"}))},threadCancel:function(){PThread.runExitHandlers(),Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1),Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1),_emscripten_futex_wake(threadInfoStruct+0,2147483647),threadInfoStruct=selfThreadId=0,__register_pthread_ptr(0,0,0),postMessage({cmd:"cancelDone"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];pthread&&pthread.worker&&PThread.returnWorkerToPool(pthread.worker)}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0,_free(tlsMemory),_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0,pthread.allocatedOwnStack&&pthread.stackBase&&_free(pthread.stackBase),pthread.stackBase=0,pthread.worker&&(pthread.worker.pthread=null)}},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread],PThread.unusedWorkers.push(worker),PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1),PThread.freeThreadData(worker.pthread),worker.pthread=void 0},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e.data,cmd=d.cmd;if(worker.pthread&&(PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct),d.targetThread&&d.targetThread!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];thread?thread.worker.postMessage(e.data,d.transferList):console.error('Internal error! Worker sent a message "'+cmd+'" to target pthread '+d.targetThread+", but that thread no longer exists!"),PThread.currentProxiedOperationCallerThread=void 0;return}if(cmd==="processQueuedMainThreadWork")_emscripten_main_thread_process_queued_calls();else if(cmd==="spawnThread")__spawn_thread(e.data);else if(cmd==="cleanupThread")__cleanup_thread(d.thread);else if(cmd==="killThread")__kill_thread(d.thread);else if(cmd==="cancelThread")__cancel_thread(d.thread);else if(cmd==="loaded")worker.loaded=!0,onFinishedLoading&&onFinishedLoading(worker),worker.runPthread&&(worker.runPthread(),delete worker.runPthread);else if(cmd==="print")out("Thread "+d.threadId+": "+d.text);else if(cmd==="printErr")err("Thread "+d.threadId+": "+d.text);else if(cmd==="alert")alert("Thread "+d.threadId+": "+d.text);else if(cmd==="exit"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);detached&&PThread.returnWorkerToPool(worker)}else cmd==="cancelDone"?PThread.returnWorkerToPool(worker):cmd==="objectTransfer"?PThread.receiveObjectTransfer(e.data):e.data.target==="setimmediate"?worker.postMessage(e.data):err("worker sent an unknown command "+cmd);PThread.currentProxiedOperationCallerThread=void 0},worker.onerror=function(e){err("pthread sent an error! "+e.filename+":"+e.lineno+": "+e.message)},ENVIRONMENT_IS_NODE&&(worker.on("message",function(data){worker.onmessage({data})}),worker.on("error",function(data){worker.onerror(data)}),worker.on("exit",function(data){console.log("worker exited - TODO: update the worker queue?")})),worker.postMessage({cmd:"load",urlOrBlob:Module.mainScriptUrlOrBlob||_scriptDir2,wasmMemory,wasmModule,DYNAMIC_BASE,DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile("tfjs-backend-wasm-threaded-simd.worker.js");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){return PThread.unusedWorkers.length==0&&(PThread.allocateUnusedWorker(),PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])),PThread.unusedWorkers.length>0?PThread.unusedWorkers.pop():null},busySpinWait:function(msecs){for(var t=performance.now()+msecs;performance.now()>2]=value,value}function _atexit(func2,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func2,arg);__ATEXIT__.unshift({func:func2,arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId)postMessage({cmd:"processQueuedMainThreadWork"});else if(ENVIRONMENT_IS_PTHREAD)postMessage({targetThread:targetThreadId,cmd:"processThreadQueue"});else{var pthread=PThread.pthreads[targetThreadId],worker=pthread&&pthread.worker;if(!worker)return;worker.postMessage({cmd:"processThreadQueue"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0,newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&!0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret==="timed-out")return-73;if(ret==="not-equal")return-6;if(ret==="ok")return 0;throw"Atomics.wait returned an unexpected value "+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now(),tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);for(var ourWaitAddress=addr;addr==ourWaitAddress;){if(tNow=performance.now(),tNow>tEnd)return-73;_emscripten_main_thread_process_queued_calls(),addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator.hardwareConcurrency}function _emscripten_proxy_to_main_thread_js(index,sync){for(var numCallArgs=arguments.length-2,stack2=stackSave(),args=stackAlloc(numCallArgs*8),b=args>>3,i=0;i>3]),buf+=8):(buf=buf+3&~3,args.push(GROWABLE_HEAP_I32()[buf>>2]),buf+=4);return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;for(var b=args>>3,i=0;i>>16),updateGlobalBufferAndViews(wasmMemory.buffer),1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize)return!1;var PAGE_MULTIPLE=65536,maxHeapSize=2147483648;if(requestedSize>maxHeapSize)return!1;for(var minHeapSize=16777216,cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE)),replacement=emscripten_realloc_buffer(newSize);if(replacement)return!0}return!1}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:!1,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i)JSEvents._removeHandler(i);JSEvents.eventHandlers=[],JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){JSEvents.removeEventListenersRegistered||(__ATEXIT__.push(JSEvents.removeAllEventListeners),JSEvents.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return!1;for(var i2 in arrA)if(arrA[i2]!=arrB[i2])return!1;return!0}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList))return}JSEvents.deferredCalls.push({targetFunction,precedence,argsList}),JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId,GROWABLE_HEAP_I32()[varargs+4>>2]=eventData,GROWABLE_HEAP_I32()[varargs+8>>2]=userData,_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs),stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){return target?target==window?"#window":target==screen?"#screen":target&&target.nodeName?target.nodeName:"":""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1,cString=_malloc(length);return stringToUTF8(jsString,cString,length),cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave(),varargs=stackAlloc(12),targetCanvasPtr=0;targetCanvas&&(targetCanvasPtr=stringToNewUTF8(targetCanvas)),GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr,GROWABLE_HEAP_I32()[varargs+4>>2]=width,GROWABLE_HEAP_I32()[varargs+8>>2]=height,_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs),stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):"",_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):void 0);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr&&(GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width,GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height),canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){canvas.offscreenCanvas&&(canvas=canvas.offscreenCanvas);var autoResizeViewport=!1;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width,canvas.height=height,autoResizeViewport&&canvas.GLctxObject.GLctx.viewport(0,0,width,height)}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];return _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height),1}else return-4;return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){return ENVIRONMENT_IS_PTHREAD?_emscripten_proxy_to_main_thread_js(2,1,target,width,height):_emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);return canvas?_emscripten_set_canvas_element_size_calling_thread(target,width,height):_emscripten_set_canvas_element_size_main_thread(target,width,height)}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0,name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext)return ctx.vertexAttribDivisor=function(index,divisor){ext.vertexAttribDivisorANGLE(index,divisor)},ctx.drawArraysInstanced=function(mode,first,count2,primcount){ext.drawArraysInstancedANGLE(mode,first,count2,primcount)},ctx.drawElementsInstanced=function(mode,count2,type,indices,primcount){ext.drawElementsInstancedANGLE(mode,count2,type,indices,primcount)},1}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext)return ctx.createVertexArray=function(){return ext.createVertexArrayOES()},ctx.deleteVertexArray=function(vao){ext.deleteVertexArrayOES(vao)},ctx.bindVertexArray=function(vao){ext.bindVertexArrayOES(vao)},ctx.isVertexArray=function(vao){return ext.isVertexArrayOES(vao)},1}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext)return ctx.drawBuffers=function(n,bufs){ext.drawBuffersWEBGL(n,bufs)},1}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){for(var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE),i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?void 0:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};return ctx.canvas&&(ctx.canvas.GLctxObject=context),GL.contexts[handle]=context,(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault)&&GL.initExtensions(context),handle},makeContextCurrent:function(contextHandle){return GL.currentContext=GL.contexts[contextHandle],Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx,!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){GL.currentContext===GL.contexts[contextHandle]&&(GL.currentContext=null),typeof JSEvents=="object"&&JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas),GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas&&(GL.contexts[contextHandle].GLctx.canvas.GLctxObject=void 0),_free(GL.contexts[contextHandle].handle),GL.contexts[contextHandle]=null},initExtensions:function(context){if(context||(context=GL.currentContext),!context.initExtensionsDone){context.initExtensionsDone=!0;var GLctx2=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx2),__webgl_enable_OES_vertex_array_object(GLctx2),__webgl_enable_WEBGL_draw_buffers(GLctx2),GLctx2.disjointTimerQueryExt=GLctx2.getExtension("EXT_disjoint_timer_query");var automaticallyEnabledExtensions=["OES_texture_float","OES_texture_half_float","OES_standard_derivatives","OES_vertex_array_object","WEBGL_compressed_texture_s3tc","WEBGL_depth_texture","OES_element_index_uint","EXT_texture_filter_anisotropic","EXT_frag_depth","WEBGL_draw_buffers","ANGLE_instanced_arrays","OES_texture_float_linear","OES_texture_half_float_linear","EXT_blend_minmax","EXT_shader_texture_lod","EXT_texture_norm16","WEBGL_compressed_texture_pvrtc","EXT_color_buffer_half_float","WEBGL_color_buffer_float","EXT_sRGB","WEBGL_compressed_texture_etc1","EXT_disjoint_timer_query","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_astc","EXT_color_buffer_float","WEBGL_compressed_texture_s3tc_srgb","EXT_disjoint_timer_query_webgl2","WEBKIT_WEBGL_compressed_texture_pvrtc"],exts=GLctx2.getSupportedExtensions()||[];exts.forEach(function(ext){automaticallyEnabledExtensions.indexOf(ext)!=-1&&GLctx2.getExtension(ext)})}},populateUniformTable:function(program){for(var p2=GL.programs[program],ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1},utable=ptable.uniforms,numUniforms=GLctx.getProgramParameter(p2,35718),i=0;i>2;contextAttributes.alpha=!!GROWABLE_HEAP_I32()[a+(0>>2)],contextAttributes.depth=!!GROWABLE_HEAP_I32()[a+(4>>2)],contextAttributes.stencil=!!GROWABLE_HEAP_I32()[a+(8>>2)],contextAttributes.antialias=!!GROWABLE_HEAP_I32()[a+(12>>2)],contextAttributes.premultipliedAlpha=!!GROWABLE_HEAP_I32()[a+(16>>2)],contextAttributes.preserveDrawingBuffer=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes.powerPreference=__emscripten_webgl_power_preferences[powerPreference],contextAttributes.failIfMajorPerformanceCaveat=!!GROWABLE_HEAP_I32()[a+(28>>2)],contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)],contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)],contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)],contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)],contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)],contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(contextAttributes.explicitSwapControl)return-1;var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a12){return _emscripten_webgl_do_create_context(a0,a12)}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){for(var up=0,i=parts.length-1;i>=0;i--){var last=parts[i];last==="."?parts.splice(i,1):last===".."?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up;up--)parts.unshift("..");return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";return path=PATH.normalizeArray(path.split("/").filter(function(p2){return!!p2}),!isAbsolute).join("/"),!path&&!isAbsolute&&(path="."),path&&trailingSlash&&(path+="/"),(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];return!root&&!dir?".":(dir&&(dir=dir.substr(0,dir.length-1)),root+dir)},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");return lastSlash===-1?path:path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}},SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer3=SYSCALLS.buffers[stream];curr===0||curr===10?((stream===1?out:err)(UTF8ArrayToString(buffer3,0)),buffer3.length=0):buffer3.push(curr)},varargs:void 0,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return ENVIRONMENT_IS_PTHREAD?_emscripten_proxy_to_main_thread_js(3,1,fd):0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);for(var num=0,i=0;i>2],len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2],j=0;j>2]=num,0}function _pthread_cleanup_pop(execute2){var routine=PThread.exitHandlers.pop();execute2&&routine()}function _pthread_cleanup_push(routine,arg){PThread.exitHandlers===null&&(PThread.exitHandlers=[]),PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _spawn_thread() can only ever be called from main application thread!";var worker=PThread.getNewWorker();if(worker.pthread!==void 0)throw"Internal error!";if(!threadParams.pthread_ptr)throw"Internal error, no pthread ptr!";PThread.runningWorkers.push(worker);for(var tlsMemory=_malloc(128*4),i=0;i<128;++i)GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0;var stackHigh=threadParams.stackBase+threadParams.stackSize,pthread=PThread.pthreads[threadParams.pthread_ptr]={worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr},tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached),Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory),Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct),Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42),Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize),Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize),Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc(),global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale),worker.pthread=pthread;var msg={cmd:"run",start_routine:threadParams.startRoutine,arg:threadParams.arg,threadInfoStruct:threadParams.pthread_ptr,selfThreadId:threadParams.pthread_ptr,parentThreadId:threadParams.parent_pthread_ptr,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now(),worker.postMessage(msg,threadParams.transferList)},worker.loaded&&(worker.runPthread(),delete worker.runPthread)}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread)return err("pthread_getschedparam called with a null thread pointer!"),ERRNO_CODES.ESRCH;var self2=GROWABLE_HEAP_I32()[thread+12>>2];if(self2!==thread)return err("pthread_getschedparam attempted on thread "+thread+", which does not point to a valid thread, or does not exist anymore!"),ERRNO_CODES.ESRCH;var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2),schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);return policy&&(GROWABLE_HEAP_I32()[policy>>2]=schedPolicy),schedparam&&(GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio),0}function _pthread_self(){return __pthread_ptr|0}Module._pthread_self=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer=="undefined")return err("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;if(!pthread_ptr)return err("pthread_create called with a null thread pointer!"),28;var transferList=[],error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error))return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg);if(error)return error;var stackSize=0,stackBase=0,detached=0,schedPolicy=0,schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2],stackSize+=81920,stackBase=GROWABLE_HEAP_I32()[attr+8>>2],detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2],parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24),schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],schedPrio=GROWABLE_HEAP_I32()[attr+24>>2],GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy,GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}else stackSize=2097152;var allocatedOwnStack=stackBase==0;allocatedOwnStack?stackBase=_memalign(16,stackSize):(stackBase-=stackSize,assert3(stackBase>0));for(var threadInfoStruct2=_malloc(232),i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct2>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct2,GROWABLE_HEAP_I32()[threadInfoStruct2+12>>2]=threadInfoStruct2;var headPtr=threadInfoStruct2+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase,stackSize,allocatedOwnStack,schedPolicy,schedPrio,detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct2,parent_pthread_ptr:_pthread_self(),arg,transferList};return ENVIRONMENT_IS_PTHREAD?(threadParams.cmd="spawnThread",postMessage(threadParams,transferList)):__spawn_thread(threadParams),0}function _roundf(d){return d=+d,d>=0?+Math_floor(d+.5):+Math_ceil(d-.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return typeof navigator=="object"&&navigator.hardwareConcurrency||1}return setErrNo(28),-1}ENVIRONMENT_IS_PTHREAD?PThread.initWorker():PThread.initMainThreadBlock();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf],asmLibraryArg={e:___assert_fail,r:___call_main,w:__emscripten_notify_thread_queue,a:_abort,l:_emscripten_conditional_set_current_thread_status,d:_emscripten_futex_wait,c:_emscripten_futex_wake,h:_emscripten_get_now,g:_emscripten_is_main_browser_thread,x:_emscripten_is_main_runtime_thread,q:_emscripten_memcpy_big,B:_emscripten_num_logical_cores,t:_emscripten_receive_on_main_thread_js,A:_emscripten_resize_heap,u:_emscripten_set_canvas_element_size,k:_emscripten_set_current_thread_status,s:_emscripten_set_thread_name,v:_emscripten_webgl_create_context,m:_fd_close,o:_fd_seek,i:_fd_write,p:initPthreadsJS,memory:wasmMemory||Module.wasmMemory,y:_pthread_cleanup_pop,z:_pthread_cleanup_push,j:_pthread_create,b:_pthread_self,f:_roundf,n:_sysconf,table:wasmTable},asm=createWasm();Module.asm=asm;var ___wasm_call_ctors=Module.___wasm_call_ctors=function(){return(___wasm_call_ctors=Module.___wasm_call_ctors=Module.asm.C).apply(null,arguments)},_init=Module._init=function(){return(_init=Module._init=Module.asm.D).apply(null,arguments)},_register_tensor=Module._register_tensor=function(){return(_register_tensor=Module._register_tensor=Module.asm.E).apply(null,arguments)},_dispose_data=Module._dispose_data=function(){return(_dispose_data=Module._dispose_data=Module.asm.F).apply(null,arguments)},_dispose=Module._dispose=function(){return(_dispose=Module._dispose=Module.asm.G).apply(null,arguments)},_Abs=Module._Abs=function(){return(_Abs=Module._Abs=Module.asm.H).apply(null,arguments)},_Add=Module._Add=function(){return(_Add=Module._Add=Module.asm.I).apply(null,arguments)},_AddN=Module._AddN=function(){return(_AddN=Module._AddN=Module.asm.J).apply(null,arguments)},_ArgMax=Module._ArgMax=function(){return(_ArgMax=Module._ArgMax=Module.asm.K).apply(null,arguments)},_AvgPool=Module._AvgPool=function(){return(_AvgPool=Module._AvgPool=Module.asm.L).apply(null,arguments)},_BatchMatMul=Module._BatchMatMul=function(){return(_BatchMatMul=Module._BatchMatMul=Module.asm.M).apply(null,arguments)},_ClipByValue=Module._ClipByValue=function(){return(_ClipByValue=Module._ClipByValue=Module.asm.N).apply(null,arguments)},_Conv2D=Module._Conv2D=function(){return(_Conv2D=Module._Conv2D=Module.asm.O).apply(null,arguments)},_Conv2DBackpropInput=Module._Conv2DBackpropInput=function(){return(_Conv2DBackpropInput=Module._Conv2DBackpropInput=Module.asm.P).apply(null,arguments)},_Cos=Module._Cos=function(){return(_Cos=Module._Cos=Module.asm.Q).apply(null,arguments)},_CropAndResize=Module._CropAndResize=function(){return(_CropAndResize=Module._CropAndResize=Module.asm.R).apply(null,arguments)},_Cumsum=Module._Cumsum=function(){return(_Cumsum=Module._Cumsum=Module.asm.S).apply(null,arguments)},_DepthToSpace=Module._DepthToSpace=function(){return(_DepthToSpace=Module._DepthToSpace=Module.asm.T).apply(null,arguments)},_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=function(){return(_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=Module.asm.U).apply(null,arguments)},_Equal=Module._Equal=function(){return(_Equal=Module._Equal=Module.asm.V).apply(null,arguments)},_Exp=Module._Exp=function(){return(_Exp=Module._Exp=Module.asm.W).apply(null,arguments)},_FlipLeftRight=Module._FlipLeftRight=function(){return(_FlipLeftRight=Module._FlipLeftRight=Module.asm.X).apply(null,arguments)},_Floor=Module._Floor=function(){return(_Floor=Module._Floor=Module.asm.Y).apply(null,arguments)},_FloorDiv=Module._FloorDiv=function(){return(_FloorDiv=Module._FloorDiv=Module.asm.Z).apply(null,arguments)},_FusedBatchNorm=Module._FusedBatchNorm=function(){return(_FusedBatchNorm=Module._FusedBatchNorm=Module.asm._).apply(null,arguments)},_FusedConv2D=Module._FusedConv2D=function(){return(_FusedConv2D=Module._FusedConv2D=Module.asm.$).apply(null,arguments)},_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=function(){return(_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=Module.asm.aa).apply(null,arguments)},_Gather=Module._Gather=function(){return(_Gather=Module._Gather=Module.asm.ba).apply(null,arguments)},_GatherNd=Module._GatherNd=function(){return(_GatherNd=Module._GatherNd=Module.asm.ca).apply(null,arguments)},_Greater=Module._Greater=function(){return(_Greater=Module._Greater=Module.asm.da).apply(null,arguments)},_GreaterEqual=Module._GreaterEqual=function(){return(_GreaterEqual=Module._GreaterEqual=Module.asm.ea).apply(null,arguments)},_LeakyRelu=Module._LeakyRelu=function(){return(_LeakyRelu=Module._LeakyRelu=Module.asm.fa).apply(null,arguments)},_Less=Module._Less=function(){return(_Less=Module._Less=Module.asm.ga).apply(null,arguments)},_LessEqual=Module._LessEqual=function(){return(_LessEqual=Module._LessEqual=Module.asm.ha).apply(null,arguments)},_Log=Module._Log=function(){return(_Log=Module._Log=Module.asm.ia).apply(null,arguments)},_LogicalAnd=Module._LogicalAnd=function(){return(_LogicalAnd=Module._LogicalAnd=Module.asm.ja).apply(null,arguments)},_Max=Module._Max=function(){return(_Max=Module._Max=Module.asm.ka).apply(null,arguments)},_MaxPool=Module._MaxPool=function(){return(_MaxPool=Module._MaxPool=Module.asm.la).apply(null,arguments)},_Maximum=Module._Maximum=function(){return(_Maximum=Module._Maximum=Module.asm.ma).apply(null,arguments)},_Mean=Module._Mean=function(){return(_Mean=Module._Mean=Module.asm.na).apply(null,arguments)},_Min=Module._Min=function(){return(_Min=Module._Min=Module.asm.oa).apply(null,arguments)},_Minimum=Module._Minimum=function(){return(_Minimum=Module._Minimum=Module.asm.pa).apply(null,arguments)},_Multiply=Module._Multiply=function(){return(_Multiply=Module._Multiply=Module.asm.qa).apply(null,arguments)},_Neg=Module._Neg=function(){return(_Neg=Module._Neg=Module.asm.ra).apply(null,arguments)},_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=function(){return(_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=Module.asm.sa).apply(null,arguments)},_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=function(){return(_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=Module.asm.ta).apply(null,arguments)},_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=function(){return(_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=Module.asm.ua).apply(null,arguments)},_NotEqual=Module._NotEqual=function(){return(_NotEqual=Module._NotEqual=Module.asm.va).apply(null,arguments)},_OneHot=Module._OneHot=function(){return(_OneHot=Module._OneHot=Module.asm.wa).apply(null,arguments)},_PadV2=Module._PadV2=function(){return(_PadV2=Module._PadV2=Module.asm.xa).apply(null,arguments)},_Pow=Module._Pow=function(){return(_Pow=Module._Pow=Module.asm.ya).apply(null,arguments)},_Prelu=Module._Prelu=function(){return(_Prelu=Module._Prelu=Module.asm.za).apply(null,arguments)},_Prod=Module._Prod=function(){return(_Prod=Module._Prod=Module.asm.Aa).apply(null,arguments)},_RealDiv=Module._RealDiv=function(){return(_RealDiv=Module._RealDiv=Module.asm.Ba).apply(null,arguments)},_Relu=Module._Relu=function(){return(_Relu=Module._Relu=Module.asm.Ca).apply(null,arguments)},_Relu6=Module._Relu6=function(){return(_Relu6=Module._Relu6=Module.asm.Da).apply(null,arguments)},_ResizeBilinear=Module._ResizeBilinear=function(){return(_ResizeBilinear=Module._ResizeBilinear=Module.asm.Ea).apply(null,arguments)},_Reverse=Module._Reverse=function(){return(_Reverse=Module._Reverse=Module.asm.Fa).apply(null,arguments)},_RotateWithOffset=Module._RotateWithOffset=function(){return(_RotateWithOffset=Module._RotateWithOffset=Module.asm.Ga).apply(null,arguments)},_Round=Module._Round=function(){return(_Round=Module._Round=Module.asm.Ha).apply(null,arguments)},_Rsqrt=Module._Rsqrt=function(){return(_Rsqrt=Module._Rsqrt=Module.asm.Ia).apply(null,arguments)},_ScatterNd=Module._ScatterNd=function(){return(_ScatterNd=Module._ScatterNd=Module.asm.Ja).apply(null,arguments)},_SelectV2=Module._SelectV2=function(){return(_SelectV2=Module._SelectV2=Module.asm.Ka).apply(null,arguments)},_Sigmoid=Module._Sigmoid=function(){return(_Sigmoid=Module._Sigmoid=Module.asm.La).apply(null,arguments)},_Sin=Module._Sin=function(){return(_Sin=Module._Sin=Module.asm.Ma).apply(null,arguments)},_Softmax=Module._Softmax=function(){return(_Softmax=Module._Softmax=Module.asm.Na).apply(null,arguments)},_Sqrt=Module._Sqrt=function(){return(_Sqrt=Module._Sqrt=Module.asm.Oa).apply(null,arguments)},_Square=Module._Square=function(){return(_Square=Module._Square=Module.asm.Pa).apply(null,arguments)},_SquaredDifference=Module._SquaredDifference=function(){return(_SquaredDifference=Module._SquaredDifference=Module.asm.Qa).apply(null,arguments)},_StridedSlice=Module._StridedSlice=function(){return(_StridedSlice=Module._StridedSlice=Module.asm.Ra).apply(null,arguments)},_Sub=Module._Sub=function(){return(_Sub=Module._Sub=Module.asm.Sa).apply(null,arguments)},_Sum=Module._Sum=function(){return(_Sum=Module._Sum=Module.asm.Ta).apply(null,arguments)},_Tanh=Module._Tanh=function(){return(_Tanh=Module._Tanh=Module.asm.Ua).apply(null,arguments)},_Tile=Module._Tile=function(){return(_Tile=Module._Tile=Module.asm.Va).apply(null,arguments)},_TopK=Module._TopK=function(){return(_TopK=Module._TopK=Module.asm.Wa).apply(null,arguments)},_Transpose=Module._Transpose=function(){return(_Transpose=Module._Transpose=Module.asm.Xa).apply(null,arguments)},__FusedMatMul=Module.__FusedMatMul=function(){return(__FusedMatMul=Module.__FusedMatMul=Module.asm.Ya).apply(null,arguments)},_malloc=Module._malloc=function(){return(_malloc=Module._malloc=Module.asm.Za).apply(null,arguments)},_free=Module._free=function(){return(_free=Module._free=Module.asm._a).apply(null,arguments)},_emscripten_get_global_libc=Module._emscripten_get_global_libc=function(){return(_emscripten_get_global_libc=Module._emscripten_get_global_libc=Module.asm.$a).apply(null,arguments)},___errno_location=Module.___errno_location=function(){return(___errno_location=Module.___errno_location=Module.asm.ab).apply(null,arguments)},___em_js__initPthreadsJS=Module.___em_js__initPthreadsJS=function(){return(___em_js__initPthreadsJS=Module.___em_js__initPthreadsJS=Module.asm.bb).apply(null,arguments)},_memalign=Module._memalign=function(){return(_memalign=Module._memalign=Module.asm.cb).apply(null,arguments)},___pthread_tsd_run_dtors=Module.___pthread_tsd_run_dtors=function(){return(___pthread_tsd_run_dtors=Module.___pthread_tsd_run_dtors=Module.asm.db).apply(null,arguments)},_emscripten_main_thread_process_queued_calls=Module._emscripten_main_thread_process_queued_calls=function(){return(_emscripten_main_thread_process_queued_calls=Module._emscripten_main_thread_process_queued_calls=Module.asm.eb).apply(null,arguments)},_emscripten_current_thread_process_queued_calls=Module._emscripten_current_thread_process_queued_calls=function(){return(_emscripten_current_thread_process_queued_calls=Module._emscripten_current_thread_process_queued_calls=Module.asm.fb).apply(null,arguments)},_emscripten_register_main_browser_thread_id=Module._emscripten_register_main_browser_thread_id=function(){return(_emscripten_register_main_browser_thread_id=Module._emscripten_register_main_browser_thread_id=Module.asm.gb).apply(null,arguments)},_emscripten_main_browser_thread_id=Module._emscripten_main_browser_thread_id=function(){return(_emscripten_main_browser_thread_id=Module._emscripten_main_browser_thread_id=Module.asm.hb).apply(null,arguments)},_emscripten_async_run_in_main_thread=Module._emscripten_async_run_in_main_thread=function(){return(_emscripten_async_run_in_main_thread=Module._emscripten_async_run_in_main_thread=Module.asm.ib).apply(null,arguments)},_emscripten_sync_run_in_main_thread=Module._emscripten_sync_run_in_main_thread=function(){return(_emscripten_sync_run_in_main_thread=Module._emscripten_sync_run_in_main_thread=Module.asm.jb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_0=Module._emscripten_sync_run_in_main_thread_0=function(){return(_emscripten_sync_run_in_main_thread_0=Module._emscripten_sync_run_in_main_thread_0=Module.asm.kb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_1=Module._emscripten_sync_run_in_main_thread_1=function(){return(_emscripten_sync_run_in_main_thread_1=Module._emscripten_sync_run_in_main_thread_1=Module.asm.lb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_2=Module._emscripten_sync_run_in_main_thread_2=function(){return(_emscripten_sync_run_in_main_thread_2=Module._emscripten_sync_run_in_main_thread_2=Module.asm.mb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_xprintf_varargs=Module._emscripten_sync_run_in_main_thread_xprintf_varargs=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module._emscripten_sync_run_in_main_thread_xprintf_varargs=Module.asm.nb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_3=Module._emscripten_sync_run_in_main_thread_3=function(){return(_emscripten_sync_run_in_main_thread_3=Module._emscripten_sync_run_in_main_thread_3=Module.asm.ob).apply(null,arguments)},_emscripten_sync_run_in_main_thread_4=Module._emscripten_sync_run_in_main_thread_4=function(){return(_emscripten_sync_run_in_main_thread_4=Module._emscripten_sync_run_in_main_thread_4=Module.asm.pb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_5=Module._emscripten_sync_run_in_main_thread_5=function(){return(_emscripten_sync_run_in_main_thread_5=Module._emscripten_sync_run_in_main_thread_5=Module.asm.qb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_6=Module._emscripten_sync_run_in_main_thread_6=function(){return(_emscripten_sync_run_in_main_thread_6=Module._emscripten_sync_run_in_main_thread_6=Module.asm.rb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_7=Module._emscripten_sync_run_in_main_thread_7=function(){return(_emscripten_sync_run_in_main_thread_7=Module._emscripten_sync_run_in_main_thread_7=Module.asm.sb).apply(null,arguments)},_emscripten_run_in_main_runtime_thread_js=Module._emscripten_run_in_main_runtime_thread_js=function(){return(_emscripten_run_in_main_runtime_thread_js=Module._emscripten_run_in_main_runtime_thread_js=Module.asm.tb).apply(null,arguments)},_emscripten_async_queue_on_thread_=Module._emscripten_async_queue_on_thread_=function(){return(_emscripten_async_queue_on_thread_=Module._emscripten_async_queue_on_thread_=Module.asm.ub).apply(null,arguments)},_emscripten_tls_init=Module._emscripten_tls_init=function(){return(_emscripten_tls_init=Module._emscripten_tls_init=Module.asm.vb).apply(null,arguments)},stackSave=Module.stackSave=function(){return(stackSave=Module.stackSave=Module.asm.wb).apply(null,arguments)},stackAlloc=Module.stackAlloc=function(){return(stackAlloc=Module.stackAlloc=Module.asm.xb).apply(null,arguments)},stackRestore=Module.stackRestore=function(){return(stackRestore=Module.stackRestore=Module.asm.yb).apply(null,arguments)},dynCall_vi=Module.dynCall_vi=function(){return(dynCall_vi=Module.dynCall_vi=Module.asm.zb).apply(null,arguments)},dynCall_v=Module.dynCall_v=function(){return(dynCall_v=Module.dynCall_v=Module.asm.Ab).apply(null,arguments)},dynCall_ii=Module.dynCall_ii=function(){return(dynCall_ii=Module.dynCall_ii=Module.asm.Bb).apply(null,arguments)};Module.asm=asm,Module.cwrap=cwrap,Module.PThread=PThread,Module.PThread=PThread,Module._pthread_self=_pthread_self,Module.wasmMemory=wasmMemory,Module.ExitStatus=ExitStatus;var calledRun;Module.then=function(func2){if(calledRun)func2(Module);else{var old=Module.onRuntimeInitialized;Module.onRuntimeInitialized=function(){old&&old(),func2(Module)}}return Module};function ExitStatus(status){this.name="ExitStatus",this.message="Program terminated with exit("+status+")",this.status=status}dependenciesFulfilled=function runCaller(){calledRun||run(),calledRun||(dependenciesFulfilled=runCaller)};function run(args){if(args=args||arguments_,runDependencies>0||(preRun(),runDependencies>0))return;function doRun(){calledRun||(calledRun=!0,Module.calledRun=!0,!ABORT&&(initRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),postRun()))}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),doRun()},1)):doRun()}if(Module.run=run,Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();return ENVIRONMENT_IS_PTHREAD||(noExitRuntime=!0),ENVIRONMENT_IS_PTHREAD||run(),WasmBackendModuleThreadedSimd2}}();typeof exports=="object"&&typeof module=="object"?module.exports=WasmBackendModuleThreadedSimd:typeof define=="function"&&define.amd?define([],function(){return WasmBackendModuleThreadedSimd}):typeof exports=="object"&&(exports.WasmBackendModuleThreadedSimd=WasmBackendModuleThreadedSimd)}),require_tfjs_backend_wasm=__commonJS2((exports,module)=>{var WasmBackendModule=function(){var _scriptDir=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(_scriptDir=_scriptDir||__filename),function(WasmBackendModule2){WasmBackendModule2=WasmBackendModule2||{};var Module=typeof WasmBackendModule2!="undefined"?WasmBackendModule2:{},moduleOverrides={},key;for(key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var arguments_=[],thisProgram="./this.program",quit_=function(status,toThrow){throw toThrow},ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){return Module.locateFile?Module.locateFile(path,scriptDirectory):scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle,nodeFS,nodePath;ENVIRONMENT_IS_NODE?(ENVIRONMENT_IS_WORKER?scriptDirectory=require_path().dirname(scriptDirectory)+"/":scriptDirectory=__dirname+"/",read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret},process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),process.on("uncaughtException",function(ex){if(!(ex instanceof ExitStatus))throw ex}),process.on("unhandledRejection",abort),quit_=function(status){process.exit(status)},Module.inspect=function(){return"[Emscripten Module object]"}):ENVIRONMENT_IS_SHELL?(typeof read!="undefined"&&(read_=function(f){return read(f)}),readBinary=function(f){var data;return typeof readbuffer=="function"?new Uint8Array(readbuffer(f)):(data=read(f,"binary"),assert3(typeof data=="object"),data)},typeof scriptArgs!="undefined"?arguments_=scriptArgs:typeof arguments!="undefined"&&(arguments_=arguments),typeof quit=="function"&&(quit_=function(status){quit(status)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:document.currentScript&&(scriptDirectory=document.currentScript.src),_scriptDir&&(scriptDirectory=_scriptDir),scriptDirectory.indexOf("blob:")!==0?scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1):scriptDirectory="",read_=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.send(null),xhr.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.responseType="arraybuffer",xhr.send(null),new Uint8Array(xhr.response)}),readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.responseType="arraybuffer",xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()},xhr.onerror=onerror,xhr.send(null)},setWindowTitle=function(title){document.title=title});var out=Module.print||console.log.bind(console),err=Module.printErr||console.warn.bind(console);for(key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&(quit_=Module.quit);var wasmBinary;Module.wasmBinary&&(wasmBinary=Module.wasmBinary);var noExitRuntime;Module.noExitRuntime&&(noExitRuntime=Module.noExitRuntime),typeof WebAssembly!="object"&&err("no native wasm support detected");var wasmMemory,wasmTable=new WebAssembly.Table({initial:151,maximum:151+0,element:"anyfunc"}),ABORT=!1,EXITSTATUS=0;function assert3(condition,text){condition||abort("Assertion failed: "+text)}function getCFunc(ident){var func2=Module["_"+ident];return assert3(func2,"Cannot call unknown function "+ident+", make sure it is exported"),func2}function ccall(ident,returnType,argTypes,args,opts){var toC={string:function(str){var ret2=0;if(str!=null&&str!==0){var len=(str.length<<2)+1;ret2=stackAlloc(len),stringToUTF8(str,ret2,len)}return ret2},array:function(arr){var ret2=stackAlloc(arr.length);return writeArrayToMemory(arr,ret2),ret2}};function convertReturnValue(ret2){return returnType==="string"?UTF8ToString(ret2):returnType==="boolean"?Boolean(ret2):ret2}var func2=getCFunc(ident),cArgs=[],stack2=0;if(args)for(var i=0;i=endIdx);)++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder)return UTF8Decoder.decode(heap.subarray(idx,endPtr));for(var str="";idx>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;for(var startIdx=outIdx,endIdx=outIdx+maxBytesToWrite-1,i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6,heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18,heap[outIdx++]=128|u>>12&63,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}}return heap[outIdx]=0,outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array2,buffer3){HEAP8.set(array2,buffer3)}var buffer2,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer2=buf,Module.HEAP8=HEAP8=new Int8Array(buf),Module.HEAP16=HEAP16=new Int16Array(buf),Module.HEAP32=HEAP32=new Int32Array(buf),Module.HEAPU8=HEAPU8=new Uint8Array(buf),Module.HEAPU16=HEAPU16=new Uint16Array(buf),Module.HEAPU32=HEAPU32=new Uint32Array(buf),Module.HEAPF32=HEAPF32=new Float32Array(buf),Module.HEAPF64=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module.INITIAL_MEMORY||16777216;function callRuntimeCallbacks(callbacks2){for(;callbacks2.length>0;){var callback=callbacks2.shift();if(typeof callback=="function"){callback(Module);continue}var func2=callback.func;typeof func2=="number"?callback.arg===void 0?Module.dynCall_v(func2):Module.dynCall_vi(func2,callback.arg):func2(callback.arg===void 0?null:callback.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=!0}function postRun(){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil,Math_floor=Math.floor,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function addRunDependency(id){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(id){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var callback=dependenciesFulfilled;dependenciesFulfilled=null,callback()}}Module.preloadedImages={},Module.preloadedAudios={};function abort(what){throw Module.onAbort&&Module.onAbort(what),what+="",out(what),err(what),ABORT=!0,EXITSTATUS=1,what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="tfjs-backend-wasm.wasm";isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile));function getBinary(){try{if(wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(wasmBinaryFile);throw"both async and sync fetching of the wasm failed"}catch(err2){abort(err2)}}function getBinaryPromise(){return!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch=="function"&&!isFileURI(wasmBinaryFile)?fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response.ok)throw"failed to load wasm binary file at '"+wasmBinaryFile+"'";return response.arrayBuffer()}).catch(function(){return getBinary()}):new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={env:asmLibraryArg,wasi_snapshot_preview1:asmLibraryArg};function receiveInstance(instance,module2){var exports3=instance.exports;Module.asm=exports3,wasmMemory=exports3.memory,updateGlobalBufferAndViews(wasmMemory.buffer),removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output.instance)}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason),abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function")fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(receiveInstantiatedSource)})});else return instantiateArrayBuffer(receiveInstantiatedSource)}if(Module.instantiateWasm)try{var exports2=Module.instantiateWasm(info,receiveInstance);return exports2}catch(e){return err("Module.instantiateWasm callback failed with error: "+e),!1}return instantiateAsync(),{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){for(var up=0,i=parts.length-1;i>=0;i--){var last=parts[i];last==="."?parts.splice(i,1):last===".."?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up;up--)parts.unshift("..");return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";return path=PATH.normalizeArray(path.split("/").filter(function(p2){return!!p2}),!isAbsolute).join("/"),!path&&!isAbsolute&&(path="."),path&&trailingSlash&&(path+="/"),(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];return!root&&!dir?".":(dir&&(dir=dir.substr(0,dir.length-1)),root+dir)},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");return lastSlash===-1?path:path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}},SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer3=SYSCALLS.buffers[stream];curr===0||curr===10?((stream===1?out:err)(UTF8ArrayToString(buffer3,0)),buffer3.length=0):buffer3.push(curr)},varargs:void 0,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){for(var num=0,i=0;i>2],len=HEAP32[iov+(i*8+4)>>2],j=0;j>2]=num,0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){return d=+d,d>=0?+Math_floor(d+.5):+Math_ceil(d-.5)}var asmLibraryArg={emscripten_notify_memory_growth:_emscripten_notify_memory_growth,fd_close:_fd_close,fd_seek:_fd_seek,fd_write:_fd_write,proc_exit:_proc_exit,roundf:_roundf},asm=createWasm();Module.asm=asm;var _init=Module._init=function(){return(_init=Module._init=Module.asm.init).apply(null,arguments)},_register_tensor=Module._register_tensor=function(){return(_register_tensor=Module._register_tensor=Module.asm.register_tensor).apply(null,arguments)},_dispose_data=Module._dispose_data=function(){return(_dispose_data=Module._dispose_data=Module.asm.dispose_data).apply(null,arguments)},_dispose=Module._dispose=function(){return(_dispose=Module._dispose=Module.asm.dispose).apply(null,arguments)},_Abs=Module._Abs=function(){return(_Abs=Module._Abs=Module.asm.Abs).apply(null,arguments)},_Add=Module._Add=function(){return(_Add=Module._Add=Module.asm.Add).apply(null,arguments)},_AddN=Module._AddN=function(){return(_AddN=Module._AddN=Module.asm.AddN).apply(null,arguments)},_ArgMax=Module._ArgMax=function(){return(_ArgMax=Module._ArgMax=Module.asm.ArgMax).apply(null,arguments)},_AvgPool=Module._AvgPool=function(){return(_AvgPool=Module._AvgPool=Module.asm.AvgPool).apply(null,arguments)},_BatchMatMul=Module._BatchMatMul=function(){return(_BatchMatMul=Module._BatchMatMul=Module.asm.BatchMatMul).apply(null,arguments)},_ClipByValue=Module._ClipByValue=function(){return(_ClipByValue=Module._ClipByValue=Module.asm.ClipByValue).apply(null,arguments)},_Conv2D=Module._Conv2D=function(){return(_Conv2D=Module._Conv2D=Module.asm.Conv2D).apply(null,arguments)},_Conv2DBackpropInput=Module._Conv2DBackpropInput=function(){return(_Conv2DBackpropInput=Module._Conv2DBackpropInput=Module.asm.Conv2DBackpropInput).apply(null,arguments)},_Cos=Module._Cos=function(){return(_Cos=Module._Cos=Module.asm.Cos).apply(null,arguments)},_CropAndResize=Module._CropAndResize=function(){return(_CropAndResize=Module._CropAndResize=Module.asm.CropAndResize).apply(null,arguments)},_Cumsum=Module._Cumsum=function(){return(_Cumsum=Module._Cumsum=Module.asm.Cumsum).apply(null,arguments)},_DepthToSpace=Module._DepthToSpace=function(){return(_DepthToSpace=Module._DepthToSpace=Module.asm.DepthToSpace).apply(null,arguments)},_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=function(){return(_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=Module.asm.DepthwiseConv2dNative).apply(null,arguments)},_Equal=Module._Equal=function(){return(_Equal=Module._Equal=Module.asm.Equal).apply(null,arguments)},_Exp=Module._Exp=function(){return(_Exp=Module._Exp=Module.asm.Exp).apply(null,arguments)},_FlipLeftRight=Module._FlipLeftRight=function(){return(_FlipLeftRight=Module._FlipLeftRight=Module.asm.FlipLeftRight).apply(null,arguments)},_Floor=Module._Floor=function(){return(_Floor=Module._Floor=Module.asm.Floor).apply(null,arguments)},_FloorDiv=Module._FloorDiv=function(){return(_FloorDiv=Module._FloorDiv=Module.asm.FloorDiv).apply(null,arguments)},_FusedBatchNorm=Module._FusedBatchNorm=function(){return(_FusedBatchNorm=Module._FusedBatchNorm=Module.asm.FusedBatchNorm).apply(null,arguments)},_FusedConv2D=Module._FusedConv2D=function(){return(_FusedConv2D=Module._FusedConv2D=Module.asm.FusedConv2D).apply(null,arguments)},_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=function(){return(_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=Module.asm.FusedDepthwiseConv2D).apply(null,arguments)},_Gather=Module._Gather=function(){return(_Gather=Module._Gather=Module.asm.Gather).apply(null,arguments)},_GatherNd=Module._GatherNd=function(){return(_GatherNd=Module._GatherNd=Module.asm.GatherNd).apply(null,arguments)},_Greater=Module._Greater=function(){return(_Greater=Module._Greater=Module.asm.Greater).apply(null,arguments)},_GreaterEqual=Module._GreaterEqual=function(){return(_GreaterEqual=Module._GreaterEqual=Module.asm.GreaterEqual).apply(null,arguments)},_LeakyRelu=Module._LeakyRelu=function(){return(_LeakyRelu=Module._LeakyRelu=Module.asm.LeakyRelu).apply(null,arguments)},_Less=Module._Less=function(){return(_Less=Module._Less=Module.asm.Less).apply(null,arguments)},_LessEqual=Module._LessEqual=function(){return(_LessEqual=Module._LessEqual=Module.asm.LessEqual).apply(null,arguments)},_Log=Module._Log=function(){return(_Log=Module._Log=Module.asm.Log).apply(null,arguments)},_LogicalAnd=Module._LogicalAnd=function(){return(_LogicalAnd=Module._LogicalAnd=Module.asm.LogicalAnd).apply(null,arguments)},_Max=Module._Max=function(){return(_Max=Module._Max=Module.asm.Max).apply(null,arguments)},_MaxPool=Module._MaxPool=function(){return(_MaxPool=Module._MaxPool=Module.asm.MaxPool).apply(null,arguments)},_Maximum=Module._Maximum=function(){return(_Maximum=Module._Maximum=Module.asm.Maximum).apply(null,arguments)},_Mean=Module._Mean=function(){return(_Mean=Module._Mean=Module.asm.Mean).apply(null,arguments)},_Min=Module._Min=function(){return(_Min=Module._Min=Module.asm.Min).apply(null,arguments)},_Minimum=Module._Minimum=function(){return(_Minimum=Module._Minimum=Module.asm.Minimum).apply(null,arguments)},_Multiply=Module._Multiply=function(){return(_Multiply=Module._Multiply=Module.asm.Multiply).apply(null,arguments)},_Neg=Module._Neg=function(){return(_Neg=Module._Neg=Module.asm.Neg).apply(null,arguments)},_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=function(){return(_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=Module.asm.NonMaxSuppressionV3).apply(null,arguments)},_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=function(){return(_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=Module.asm.NonMaxSuppressionV4).apply(null,arguments)},_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=function(){return(_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=Module.asm.NonMaxSuppressionV5).apply(null,arguments)},_NotEqual=Module._NotEqual=function(){return(_NotEqual=Module._NotEqual=Module.asm.NotEqual).apply(null,arguments)},_OneHot=Module._OneHot=function(){return(_OneHot=Module._OneHot=Module.asm.OneHot).apply(null,arguments)},_PadV2=Module._PadV2=function(){return(_PadV2=Module._PadV2=Module.asm.PadV2).apply(null,arguments)},_Pow=Module._Pow=function(){return(_Pow=Module._Pow=Module.asm.Pow).apply(null,arguments)},_Prelu=Module._Prelu=function(){return(_Prelu=Module._Prelu=Module.asm.Prelu).apply(null,arguments)},_Prod=Module._Prod=function(){return(_Prod=Module._Prod=Module.asm.Prod).apply(null,arguments)},_RealDiv=Module._RealDiv=function(){return(_RealDiv=Module._RealDiv=Module.asm.RealDiv).apply(null,arguments)},_Relu=Module._Relu=function(){return(_Relu=Module._Relu=Module.asm.Relu).apply(null,arguments)},_Relu6=Module._Relu6=function(){return(_Relu6=Module._Relu6=Module.asm.Relu6).apply(null,arguments)},_ResizeBilinear=Module._ResizeBilinear=function(){return(_ResizeBilinear=Module._ResizeBilinear=Module.asm.ResizeBilinear).apply(null,arguments)},_Reverse=Module._Reverse=function(){return(_Reverse=Module._Reverse=Module.asm.Reverse).apply(null,arguments)},_RotateWithOffset=Module._RotateWithOffset=function(){return(_RotateWithOffset=Module._RotateWithOffset=Module.asm.RotateWithOffset).apply(null,arguments)},_Round=Module._Round=function(){return(_Round=Module._Round=Module.asm.Round).apply(null,arguments)},_Rsqrt=Module._Rsqrt=function(){return(_Rsqrt=Module._Rsqrt=Module.asm.Rsqrt).apply(null,arguments)},_ScatterNd=Module._ScatterNd=function(){return(_ScatterNd=Module._ScatterNd=Module.asm.ScatterNd).apply(null,arguments)},_SelectV2=Module._SelectV2=function(){return(_SelectV2=Module._SelectV2=Module.asm.SelectV2).apply(null,arguments)},_Sigmoid=Module._Sigmoid=function(){return(_Sigmoid=Module._Sigmoid=Module.asm.Sigmoid).apply(null,arguments)},_Sin=Module._Sin=function(){return(_Sin=Module._Sin=Module.asm.Sin).apply(null,arguments)},_Softmax=Module._Softmax=function(){return(_Softmax=Module._Softmax=Module.asm.Softmax).apply(null,arguments)},_Sqrt=Module._Sqrt=function(){return(_Sqrt=Module._Sqrt=Module.asm.Sqrt).apply(null,arguments)},_Square=Module._Square=function(){return(_Square=Module._Square=Module.asm.Square).apply(null,arguments)},_SquaredDifference=Module._SquaredDifference=function(){return(_SquaredDifference=Module._SquaredDifference=Module.asm.SquaredDifference).apply(null,arguments)},_StridedSlice=Module._StridedSlice=function(){return(_StridedSlice=Module._StridedSlice=Module.asm.StridedSlice).apply(null,arguments)},_Sub=Module._Sub=function(){return(_Sub=Module._Sub=Module.asm.Sub).apply(null,arguments)},_Sum=Module._Sum=function(){return(_Sum=Module._Sum=Module.asm.Sum).apply(null,arguments)},_Tanh=Module._Tanh=function(){return(_Tanh=Module._Tanh=Module.asm.Tanh).apply(null,arguments)},_Tile=Module._Tile=function(){return(_Tile=Module._Tile=Module.asm.Tile).apply(null,arguments)},_TopK=Module._TopK=function(){return(_TopK=Module._TopK=Module.asm.TopK).apply(null,arguments)},_Transpose=Module._Transpose=function(){return(_Transpose=Module._Transpose=Module.asm.Transpose).apply(null,arguments)},__FusedMatMul=Module.__FusedMatMul=function(){return(__FusedMatMul=Module.__FusedMatMul=Module.asm._FusedMatMul).apply(null,arguments)},_malloc=Module._malloc=function(){return(_malloc=Module._malloc=Module.asm.malloc).apply(null,arguments)},_free=Module._free=function(){return(_free=Module._free=Module.asm.free).apply(null,arguments)},__start=Module.__start=function(){return(__start=Module.__start=Module.asm._start).apply(null,arguments)},stackSave=Module.stackSave=function(){return(stackSave=Module.stackSave=Module.asm.stackSave).apply(null,arguments)},stackAlloc=Module.stackAlloc=function(){return(stackAlloc=Module.stackAlloc=Module.asm.stackAlloc).apply(null,arguments)},stackRestore=Module.stackRestore=function(){return(stackRestore=Module.stackRestore=Module.asm.stackRestore).apply(null,arguments)};Module.asm=asm,Module.cwrap=cwrap;var calledRun;Module.then=function(func2){if(calledRun)func2(Module);else{var old=Module.onRuntimeInitialized;Module.onRuntimeInitialized=function(){old&&old(),func2(Module)}}return Module};function ExitStatus(status){this.name="ExitStatus",this.message="Program terminated with exit("+status+")",this.status=status}var calledMain=!1;dependenciesFulfilled=function runCaller(){calledRun||run(),calledRun||(dependenciesFulfilled=runCaller)};function callMain(args){var entryFunction=Module.__start;try{entryFunction();var ret=0;exit(ret,!0)}catch(e){if(e instanceof ExitStatus)return;if(e=="unwind"){noExitRuntime=!0;return}else{var toLog=e;e&&typeof e=="object"&&e.stack&&(toLog=[e,e.stack]),err("exception thrown: "+toLog),quit_(1,e)}}finally{calledMain=!0}}function run(args){if(args=args||arguments_,runDependencies>0||(preRun(),runDependencies>0))return;function doRun(){calledRun||(calledRun=!0,Module.calledRun=!0,!ABORT&&(initRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),shouldRunNow&&callMain(args),postRun()))}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),doRun()},1)):doRun()}Module.run=run;function exit(status,implicit){implicit&&noExitRuntime&&status===0||(noExitRuntime||(ABORT=!0,EXITSTATUS=status,exitRuntime(),Module.onExit&&Module.onExit(status)),quit_(status,new ExitStatus(status)))}if(Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;return Module.noInitialRun&&(shouldRunNow=!1),noExitRuntime=!0,run(),WasmBackendModule2}}();typeof exports=="object"&&typeof module=="object"?module.exports=WasmBackendModule:typeof define=="function"&&define.amd?define([],function(){return WasmBackendModule}):typeof exports=="object"&&(exports.WasmBackendModule=WasmBackendModule)}),EPSILON_FLOAT32=1e-7,EPSILON_FLOAT16=1e-4,DataStorage=class{constructor(backend2,dataMover){this.backend=backend2,this.dataMover=dataMover,this.data=new WeakMap,this.dataIdsCount=0}get(dataId){return this.data.has(dataId)||this.dataMover.moveData(this.backend,dataId),this.data.get(dataId)}set(dataId,value){this.dataIdsCount++,this.data.set(dataId,value)}has(dataId){return this.data.has(dataId)}delete(dataId){return this.dataIdsCount--,this.data.delete(dataId)}numDataIds(){return this.dataIdsCount}},KernelBackend=class{time(f){return notYetImplemented("time")}read(dataId){return notYetImplemented("read")}readSync(dataId){return notYetImplemented("readSync")}numDataIds(){return notYetImplemented("numDataIds")}disposeData(dataId){return notYetImplemented("disposeData")}write(values,shape,dtype){return notYetImplemented("write")}move(dataId,values,shape,dtype){return notYetImplemented("move")}memory(){return notYetImplemented("memory")}floatPrecision(){return notYetImplemented("floatPrecision")}epsilon(){return this.floatPrecision()===32?EPSILON_FLOAT32:EPSILON_FLOAT16}batchMatMul(a,b,transposeA,transposeB){return notYetImplemented("batchMatMul")}fusedBatchMatMul({a,b,transposeA,transposeB,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedBatchMatMul")}slice(x,begin,size){return notYetImplemented("slice")}stridedSlice(x,begin,end,strides){return notYetImplemented("stridedSlice")}unstack(x,axis){return notYetImplemented("unstack")}reverse(a,axis){return notYetImplemented("reverse")}concat(tensors,axis){return notYetImplemented("concat")}neg(a){return notYetImplemented("neg")}add(a,b){return notYetImplemented("add")}addN(tensors){return notYetImplemented("addN")}subtract(a,b){return notYetImplemented("subtract")}multiply(a,b){return notYetImplemented("multiply")}realDivide(a,b){return notYetImplemented("realDivide")}floorDiv(a,b){return notYetImplemented("floorDiv")}sum(x,axes){return notYetImplemented("sum")}prod(x,axes){return notYetImplemented("prod")}unsortedSegmentSum(x,segmentIds,numSegments){return notYetImplemented("unsortedSegmentSum")}argMin(x,axis){return notYetImplemented("argMin")}argMax(x,axis){return notYetImplemented("argMax")}equal(a,b){return notYetImplemented("equal")}notEqual(a,b){return notYetImplemented("notEqual")}less(a,b){return notYetImplemented("less")}lessEqual(a,b){return notYetImplemented("lessEqual")}greater(a,b){return notYetImplemented("greater")}greaterEqual(a,b){return notYetImplemented("greaterEqual")}logicalNot(a){return notYetImplemented("logicalNot")}logicalAnd(a,b){return notYetImplemented("logicalAnd")}logicalOr(a,b){return notYetImplemented("logicalOr")}where(condition){return notYetImplemented("where")}select(condition,a,b){return notYetImplemented("select")}topk(x,k,sorted){return notYetImplemented("topk")}min(x,axes){return notYetImplemented("min")}minimum(a,b){return notYetImplemented("minimum")}mod(a,b){return notYetImplemented("mod")}max(x,axes){return notYetImplemented("max")}maximum(a,b){return notYetImplemented("maximum")}all(x,axes){return notYetImplemented("all")}any(x,axes){return notYetImplemented("any")}squaredDifference(a,b){return notYetImplemented("squaredDifference")}ceil(x){return notYetImplemented("ceil")}floor(x){return notYetImplemented("floor")}round(x){return notYetImplemented("round")}sign(x){return notYetImplemented("sign")}isNaN(x){return notYetImplemented("isNaN")}isInf(x){return notYetImplemented("isInf")}isFinite(x){return notYetImplemented("isFinite")}pow(a,b){return notYetImplemented("pow")}exp(x){return notYetImplemented("exp")}expm1(x){return notYetImplemented("expm1")}softmax(x,dim){return notYetImplemented("softmax")}log(x){return notYetImplemented("log")}log1p(x){return notYetImplemented("log1p")}sqrt(x){return notYetImplemented("sqrt")}rsqrt(x){return notYetImplemented("rsqrt")}square(x){return notYetImplemented("square")}reciprocal(x){return notYetImplemented("reciprocal")}relu(x){return notYetImplemented("relu")}relu6(x){return notYetImplemented("relu6")}prelu(x,a){return notYetImplemented("prelu")}elu(x){return notYetImplemented("elu")}eluDer(dy,y){return notYetImplemented("eluDer")}selu(x){return notYetImplemented("selu")}int(x){return notYetImplemented("int")}clip(x,min6,max6){return notYetImplemented("clip")}abs(x){return notYetImplemented("abs")}complexAbs(x){return notYetImplemented("complexAbs")}sigmoid(x){return notYetImplemented("sigmoid")}softplus(x){return notYetImplemented("softplus")}sin(x){return notYetImplemented("sin")}cos(x){return notYetImplemented("cos")}tan(x){return notYetImplemented("tan")}asin(x){return notYetImplemented("asin")}acos(x){return notYetImplemented("acos")}atan(x){return notYetImplemented("atan")}atan2(a,b){return notYetImplemented("atan2")}sinh(x){return notYetImplemented("sinh")}cosh(x){return notYetImplemented("cosh")}tanh(x){return notYetImplemented("tanh")}asinh(x){return notYetImplemented("asinh")}acosh(x){return notYetImplemented("acosh")}atanh(x){return notYetImplemented("atanh")}erf(x){return notYetImplemented("erf")}step(x,alpha){return notYetImplemented("step")}fusedConv2d({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedConv2d")}conv2d(x,filter,convInfo){return notYetImplemented("conv2d")}conv2dDerInput(dy,filter,convInfo){return notYetImplemented("conv2dDerInput")}conv2dDerFilter(x,dY,convInfo){return notYetImplemented("conv2dDerFilter")}fusedDepthwiseConv2D({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedDepthwiseConv2D")}depthwiseConv2D(input2,filter,convInfo){return notYetImplemented("depthwiseConv2D")}depthwiseConv2DDerInput(dy,filter,convInfo){return notYetImplemented("depthwiseConv2DDerInput")}depthwiseConv2DDerFilter(x,dY,convInfo){return notYetImplemented("depthwiseConv2DDerFilter")}conv3d(x,filter,convInfo){return notYetImplemented("conv3d")}conv3dDerInput(dy,filter,convInfo){return notYetImplemented("conv3dDerInput")}conv3dDerFilter(x,dY,convInfo){return notYetImplemented("conv3dDerFilter")}maxPool(x,convInfo){return notYetImplemented("maxPool")}maxPoolBackprop(dy,x,y,convInfo){return notYetImplemented("maxPoolBackprop")}avgPool(x,convInfo){return notYetImplemented("avgPool")}avgPoolBackprop(dy,x,convInfo){return notYetImplemented("avgPoolBackprop")}avgPool3d(x,convInfo){return notYetImplemented("avgPool3d")}avgPool3dBackprop(dy,x,convInfo){return notYetImplemented("avgPool3dBackprop")}maxPool3d(x,convInfo){return notYetImplemented("maxPool3d")}maxPool3dBackprop(dy,x,y,convInfo){return notYetImplemented("maxPool3dBackprop")}reshape(x,shape){return notYetImplemented("reshape")}cast(x,dtype){return notYetImplemented("cast")}tile(x,reps){return notYetImplemented("tile")}pad(x,paddings,constantValue){return notYetImplemented("pad")}transpose(x,perm){return notYetImplemented("transpose")}gather(x,indices,axis,batchDims=0){return notYetImplemented("gather")}gatherND(x,indices){return notYetImplemented("gatherND")}scatterND(indices,updates,shape){return notYetImplemented("scatterND")}batchToSpaceND(x,blockShape,crops){return notYetImplemented("batchToSpaceND")}spaceToBatchND(x,blockShape,paddings){return notYetImplemented("spaceToBatchND")}resizeBilinear(x,newHeight,newWidth,alignCorners,halfPixelCenters){return notYetImplemented("resizeBilinear")}resizeBilinearBackprop(dy,x,alignCorners){return notYetImplemented("resizeBilinearBackprop")}resizeNearestNeighbor(x,newHEight,newWidth,alignCorners,halfPixelCenters){return notYetImplemented("resizeNearestNeighbor")}resizeNearestNeighborBackprop(dy,x,alignCorners){return notYetImplemented("resizeNearestNeighborBackprop")}batchNorm(x,mean4,variance,offset,scale22,varianceEpsilon){return notYetImplemented("batchNorm")}localResponseNormalization4D(x,radius,bias,alpha,beta){return notYetImplemented("localResponseNormalization4D")}LRNGrad(dy,inputImage,outputImage,radius,bias,alpha,beta){return notYetImplemented("LRNGrad")}multinomial(logits,normalized,numSamples,seed){return notYetImplemented("multinomial")}oneHot(indices,depth,onValue,offValue){return notYetImplemented("oneHot")}cumsum(x,axis,exclusive,reverse5){return notYetImplemented("cumsum")}nonMaxSuppression(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){return notYetImplemented("nonMaxSuppression")}fft(x){return notYetImplemented("fft")}ifft(x){return notYetImplemented("ifft")}complex(real4,imag4){return notYetImplemented("complex")}real(input2){return notYetImplemented("real")}imag(input2){return notYetImplemented("imag")}cropAndResize(image3,boxes,boxIndex,cropSize,method,extrapolationValue){return notYetImplemented("cropAndResize")}depthToSpace(x,blockSize,dataFormat){return notYetImplemented("depthToSpace")}split(value,sizeSplits,axis){return notYetImplemented("split")}sparseToDense(sparseIndices,sparseValues,outputShape,defaultValue){return notYetImplemented("sparseToDense")}diag(x){return notYetImplemented("diag")}fill(shape,value,dtype){return notYetImplemented("fill")}onesLike(x){return notYetImplemented("onesLike")}zerosLike(x){return notYetImplemented("zerosLike")}linspace(start,stop,num){return notYetImplemented("linspace")}dispose(){return notYetImplemented("dispose")}};function notYetImplemented(kernelName){throw new Error(`'${kernelName}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}function shuffle(array2){let counter=array2.length,temp=0,index=0;for(;counter>0;)index=Math.random()*counter|0,counter--,temp=array2[counter],array2[counter]=array2[index],array2[index]=temp}function clamp(min6,x,max6){return Math.max(min6,Math.min(x,max6))}function nearestLargerEven(val){return val%2==0?val:val+1}function sum(arr){let sum6=0;for(let i=0;ierrorMessagePrefix+` Shapes ${shapeA} and ${shapeB} must match`)}function assertNonNull(a){assert(a!=null,()=>"The input to the tensor constructor must be a non-null value.")}function flatten(arr,result=[],skipTypedArray=!1){if(result==null&&(result=[]),Array.isArray(arr)||isTypedArray(arr)&&!skipTypedArray)for(let i=0;i0,maxCounter){return new Promise((resolve,reject)=>{let tryCount=0,tryFn=()=>{if(checkFn()){resolve();return}tryCount++;let nextBackoff=delayFn(tryCount);if(maxCounter!=null&&tryCount>=maxCounter){reject();return}setTimeout(tryFn,nextBackoff)};tryFn()})}function inferFromImplicitShape(shape,size){let shapeProd=1,implicitIdx=-1;for(let i=0;i=0)shapeProd*=shape[i];else if(shape[i]===-1){if(implicitIdx!==-1)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${implicitIdx} and dim ${i}`);implicitIdx=i}else if(shape[i]<0)throw Error(`Shapes can not be < 0. Found ${shape[i]} at dim ${i}`);if(implicitIdx===-1){if(size>0&&size!==shapeProd)throw Error(`Size(${size}) must match the product of shape ${shape}`);return shape}if(shapeProd===0)throw Error(`Cannot infer the missing size in [${shape}] when there are 0 elements`);if(size%shapeProd!=0)throw Error(`The implicit shape can't be a fractional number. Got ${size} / ${shapeProd}`);let newShape=shape.slice();return newShape[implicitIdx]=size/shapeProd,newShape}function parseAxisParam(axis,shape){let rank=shape.length;return axis=axis==null?shape.map((s,i)=>i):[].concat(axis),assert(axis.every(ax=>ax>=-rank&&ax`All values in axis param must be in range [-${rank}, ${rank}) but got axis ${axis}`),assert(axis.every(ax=>isInt(ax)),()=>`All values in axis param must be integers but got axis ${axis}`),axis.map(a=>a<0?rank+a:a)}function squeezeShape(shape,axis){let newShape=[],keptDims=[],isEmptyArray=axis!=null&&Array.isArray(axis)&&axis.length===0,axes=axis==null||isEmptyArray?null:parseAxisParam(axis,shape).sort(),j=0;for(let i=0;ii)&&shape[i]===1&&(newShape.push(shape[i]),keptDims.push(i)),axes[j]<=i&&j++}shape[i]!==1&&(newShape.push(shape[i]),keptDims.push(i))}return{newShape,keptDims}}function getTypedArrayFromDType(dtype,size){let values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else throw new Error(`Unknown data type ${dtype}`);return values}function getArrayFromDType(dtype,size){let values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else if(dtype==="string")values=new Array(size);else throw new Error(`Unknown data type ${dtype}`);return values}function checkConversionForErrors(vals,dtype){for(let i=0;ibytes+=x.length),bytes}function isString(value){return typeof value=="string"||value instanceof String}function isBoolean(value){return typeof value=="boolean"}function isNumber(value){return typeof value=="number"}function inferDtype(values){return Array.isArray(values)?inferDtype(values[0]):values instanceof Float32Array?"float32":values instanceof Int32Array||values instanceof Uint8Array?"int32":isNumber(values)?"float32":isString(values)?"string":isBoolean(values)?"bool":"float32"}function isFunction(f){return!!(f&&f.constructor&&f.call&&f.apply)}function nearestDivisor(size,start){for(let i=start;i=0;--i)strides[i]=strides[i+1]*shape[i+1];return strides}function createNestedArray(offset,shape,a){let ret=new Array;if(shape.length===1){let d=shape[0];for(let i=0;iacc*c);for(let i=0;iacc*c);if(size===0)return[];if(size!==a.length)throw new Error(`[${shape}] does not match the input size ${a.length}.`);return createNestedArray(0,shape,a)}function makeOnesTypedArray(size,dtype){let array2=makeZerosTypedArray(size,dtype);for(let i=0;iprev*curr,1);if(dtype==null||dtype==="float32")return toNestedArray(shape,new Float32Array(size));if(dtype==="int32")return toNestedArray(shape,new Int32Array(size));if(dtype==="bool")return toNestedArray(shape,new Uint8Array(size));throw new Error(`Unknown data type ${dtype}`)}function assertNonNegativeIntegerDimensions(shape){shape.forEach(dimSize=>{assert(Number.isInteger(dimSize)&&dimSize>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${shape}].`)})}function locToIndex(locs,rank,strides){if(rank===0)return 0;if(rank===1)return locs[0];let index=locs[locs.length-1];for(let i=0;i{let[key,value]=keyValue.split(":");this.urlFlags[key]=parseValue(key,value)})}};function getQueryParams(queryString){let params={};return queryString.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(s,...t)=>(decodeParam(params,t[0],t[1]),t.join("="))),params}function decodeParam(params,name,value){params[decodeURIComponent(name)]=decodeURIComponent(value||"")}function parseValue(flagName,value){if(value=value.toLowerCase(),value==="true"||value==="false")return value==="true";if(`${+value}`===value)return+value;throw new Error(`Could not parse value flag value ${value} for flag ${flagName}.`)}function env(){return ENV}var ENV=null;function setEnvironmentGlobal(environment2){ENV=environment2}var globalNameSpace;function getGlobalNamespace(){if(globalNameSpace==null){let ns;if(typeof window!="undefined")ns=window;else if(typeof global!="undefined")ns=global;else if(typeof process!="undefined")ns=process;else if(typeof self!="undefined")ns=self;else throw new Error("Could not find a global object");globalNameSpace=ns}return globalNameSpace}function getGlobalMap(){let ns=getGlobalNamespace();return ns._tfGlobals==null&&(ns._tfGlobals=new Map),ns._tfGlobals}function getGlobal(key,init2){let globalMap=getGlobalMap();if(globalMap.has(key))return globalMap.get(key);{let singleton=init2();return globalMap.set(key,singleton),globalMap.get(key)}}var Abs="Abs",Acos="Acos",Acosh="Acosh",Add="Add",AddN="AddN",All="All",Any="Any",ArgMax="ArgMax",ArgMin="ArgMin",Asin="Asin",Asinh="Asinh",Atan="Atan",Atanh="Atanh",Atan2="Atan2",AvgPool="AvgPool",AvgPoolGrad="AvgPoolGrad",AvgPool3D="AvgPool3D",AvgPool3DGrad="AvgPool3DGrad",BatchMatMul="BatchMatMul",BatchToSpaceND="BatchToSpaceND",Bincount="Bincount",BroadcastTo="BroadcastTo",Cast="Cast",Ceil="Ceil",ClipByValue="ClipByValue",Complex="Complex",ComplexAbs="ComplexAbs",Concat="Concat",Conv2D="Conv2D",Conv2DBackpropFilter="Conv2DBackpropFilter",Conv2DBackpropInput="Conv2DBackpropInput",Conv3D="Conv3D",Conv3DBackpropFilterV2="Conv3DBackpropFilterV2",Conv3DBackpropInputV2="Conv3DBackpropInputV2",Cos="Cos",Cosh="Cosh",Cumsum="Cumsum",CropAndResize="CropAndResize",DenseBincount="DenseBincount",DepthToSpace="DepthToSpace",DepthwiseConv2dNative="DepthwiseConv2dNative",DepthwiseConv2dNativeBackpropFilter="DepthwiseConv2dNativeBackpropFilter",DepthwiseConv2dNativeBackpropInput="DepthwiseConv2dNativeBackpropInput",Diag="Diag",Dilation2D="Dilation2D",Dilation2DBackpropInput="Dilation2DBackpropInput",Dilation2DBackpropFilter="Dilation2DBackpropFilter",RealDiv="RealDiv",Elu="Elu",EluGrad="EluGrad",Erf="Erf",Equal="Equal",Exp="Exp",ExpandDims="ExpandDims",Expm1="Expm1",FFT="FFT",Fill="Fill",FlipLeftRight="FlipLeftRight",Floor="Floor",FloorDiv="FloorDiv",FusedBatchNorm="FusedBatchNorm",GatherV2="GatherV2",GatherNd="GatherNd",Greater="Greater",GreaterEqual="GreaterEqual",Identity="Identity",IFFT="IFFT",Imag="Imag",IsFinite="IsFinite",IsInf="IsInf",IsNan="IsNan",LeakyRelu="LeakyRelu",Less="Less",LessEqual="LessEqual",LinSpace="LinSpace",Log="Log",Log1p="Log1p",LogicalAnd="LogicalAnd",LogicalNot="LogicalNot",LogicalOr="LogicalOr",LogSoftmax="LogSoftmax",LRN="LRN",LRNGrad="LRNGrad",Max="Max",Maximum="Maximum",MaxPool="MaxPool",MaxPoolGrad="MaxPoolGrad",MaxPool3D="MaxPool3D",MaxPool3DGrad="MaxPool3DGrad",MaxPoolWithArgmax="MaxPoolWithArgmax",Mean="Mean",Min="Min",Minimum="Minimum",MirrorPad="MirrorPad",Mod="Mod",Multinomial="Multinomial",Multiply="Multiply",Neg="Neg",NotEqual="NotEqual",NonMaxSuppressionV3="NonMaxSuppressionV3",NonMaxSuppressionV4="NonMaxSuppressionV4",NonMaxSuppressionV5="NonMaxSuppressionV5",OnesLike="OnesLike",OneHot="OneHot",Pack="Pack",PadV2="PadV2",Pool="Pool",Pow="Pow",Prelu="Prelu",Prod="Prod",Range="Range",Real="Real",Reciprocal="Reciprocal",Relu="Relu",Reshape="Reshape",ResizeNearestNeighbor="ResizeNearestNeighbor",ResizeNearestNeighborGrad="ResizeNearestNeighborGrad",ResizeBilinear="ResizeBilinear",ResizeBilinearGrad="ResizeBilinearGrad",Relu6="Relu6",Reverse="Reverse",Round="Round",Rsqrt="Rsqrt",ScatterNd="ScatterNd",Select="Select",Selu="Selu",Slice="Slice",Sin="Sin",Sinh="Sinh",Sign="Sign",Sigmoid="Sigmoid",Softplus="Softplus",Sqrt="Sqrt",Sum="Sum",SpaceToBatchND="SpaceToBatchND",SplitV="SplitV",Softmax="Softmax",SquaredDifference="SquaredDifference",Square="Square",Sub="Sub",SparseToDense="SparseToDense",StridedSlice="StridedSlice",Tan="Tan",Tanh="Tanh",Tile="Tile",TopK="TopK",Transpose="Transpose",Unique="Unique",Unpack="Unpack",UnsortedSegmentSum="UnsortedSegmentSum",ZerosLike="ZerosLike",Step="Step",FromPixels="FromPixels",RotateWithOffset="RotateWithOffset",_FusedMatMul="_FusedMatMul",FusedConv2D="FusedConv2D",FusedDepthwiseConv2D="FusedDepthwiseConv2D",kernelRegistry=getGlobal("kernelRegistry",()=>new Map),gradRegistry=getGlobal("gradRegistry",()=>new Map);function getKernel(kernelName,backendName){let key=makeKey(kernelName,backendName);return kernelRegistry.get(key)}function getGradient(kernelName){return gradRegistry.get(kernelName)}function getKernelsForBackend(backendName){let it=kernelRegistry.entries(),result=[];for(;;){let{done,value}=it.next();if(done)break;let[key,config]=value,[backend2]=key.split("_");backend2===backendName&&result.push(config)}return result}function registerKernel(config){let{kernelName,backendName}=config,key=makeKey(kernelName,backendName);kernelRegistry.has(key)&&console.warn(`The kernel '${kernelName}' for backend '${backendName}' is already registered`),kernelRegistry.set(key,config)}function registerGradient(config){let{kernelName}=config;gradRegistry.has(kernelName)&&env().getBool("DEBUG")&&console.warn(`Overriding the gradient for '${kernelName}'`),gradRegistry.set(kernelName,config)}function unregisterKernel(kernelName,backendName){let key=makeKey(kernelName,backendName);if(!kernelRegistry.has(key))throw new Error(`The kernel '${kernelName}' for backend '${backendName}' is not registered`);kernelRegistry.delete(key)}function unregisterGradient(kernelName){if(!gradRegistry.has(kernelName))throw new Error(`The gradient '${kernelName}' for backend is not registered`);gradRegistry.delete(kernelName)}function copyRegisteredKernels(registeredBackendName,newBackendName){getKernelsForBackend(registeredBackendName).forEach(kernelConfig=>{let newKernelConfig=Object.assign({},kernelConfig,{backendName:newBackendName});registerKernel(newKernelConfig)})}function makeKey(kernelName,backendName){return`${backendName}_${kernelName}`}var util_exports={};__export2(util_exports,{arraysEqual:()=>arraysEqual,assert:()=>assert,assertNonNegativeIntegerDimensions:()=>assertNonNegativeIntegerDimensions,assertNonNull:()=>assertNonNull,assertShapesMatch:()=>assertShapesMatch,bytesFromStringArray:()=>bytesFromStringArray,bytesPerElement:()=>bytesPerElement,checkConversionForErrors:()=>checkConversionForErrors,clamp:()=>clamp,computeStrides:()=>computeStrides,createScalarValue:()=>createScalarValue,createShuffledIndices:()=>createShuffledIndices,decodeString:()=>decodeString,distSquared:()=>distSquared,encodeString:()=>encodeString,fetch:()=>fetch2,flatten:()=>flatten,getArrayFromDType:()=>getArrayFromDType,getTypedArrayFromDType:()=>getTypedArrayFromDType,hasEncodingLoss:()=>hasEncodingLoss,indexToLoc:()=>indexToLoc,inferDtype:()=>inferDtype,inferFromImplicitShape:()=>inferFromImplicitShape,isBoolean:()=>isBoolean,isFunction:()=>isFunction,isInt:()=>isInt,isNumber:()=>isNumber,isPromise:()=>isPromise,isScalarShape:()=>isScalarShape,isString:()=>isString,isTypedArray:()=>isTypedArray,isValidDtype:()=>isValidDtype,locToIndex:()=>locToIndex,makeOnesTypedArray:()=>makeOnesTypedArray,makeZerosNestedTypedArray:()=>makeZerosNestedTypedArray,makeZerosTypedArray:()=>makeZerosTypedArray,nearestDivisor:()=>nearestDivisor,nearestLargerEven:()=>nearestLargerEven,now:()=>now,parseAxisParam:()=>parseAxisParam,randUniform:()=>randUniform,repeatedTry:()=>repeatedTry,rightPad:()=>rightPad,shuffle:()=>shuffle,sizeFromShape:()=>sizeFromShape,sizeToSquarishShape:()=>sizeToSquarishShape,squeezeShape:()=>squeezeShape,sum:()=>sum,tanh:()=>tanh,toNestedArray:()=>toNestedArray,toTypedArray:()=>toTypedArray});function createScalarValue(value,dtype){return dtype==="string"?encodeString(value):toTypedArray([value],dtype)}function noConversionNeeded(a,dtype){return a instanceof Float32Array&&dtype==="float32"||a instanceof Int32Array&&dtype==="int32"||a instanceof Uint8Array&&dtype==="bool"}function toTypedArray(a,dtype){if(dtype==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(a)&&(a=flatten(a)),env().getBool("DEBUG")&&checkConversionForErrors(a,dtype),noConversionNeeded(a,dtype))return a;if(dtype==null||dtype==="float32"||dtype==="complex64")return new Float32Array(a);if(dtype==="int32")return new Int32Array(a);if(dtype==="bool"){let bool=new Uint8Array(a.length);for(let i=0;i{outputs=f()},timer=this.backendTimer.time(holdResultWrapperFn);if(env().getBool("CHECK_COMPUTATION_FOR_ERRORS"))for(let i=0;i{checkComputationForErrors(tensorVals,output.dtype,kernelName)})}return{kernelName,outputs,inputs,timeMs:timer.then(timing=>timing.kernelMs),extraInfo:timer.then(timing=>timing.getExtraProfileInfo!=null?timing.getExtraProfileInfo():"")}}logKernelProfile(kernelProfile){let{kernelName,outputs,timeMs,inputs,extraInfo}=kernelProfile;outputs.forEach(result=>{Promise.all([result.data(),timeMs,extraInfo]).then(valueContainer=>{this.logger.logKernelProfile(kernelName,result,valueContainer[0],valueContainer[1],inputs,valueContainer[2])})})}};function checkComputationForErrors(vals,dtype,kernelName){if(dtype!=="float32")return!1;for(let i=0;i0?inputShape:""} `}}console.log(`%c${paddedName} %c${time2} %c${rank}D ${shape} %c${size} %c${inputShapesDescription} %c${extraInfo}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}};function getFilteredNodesXToY(tape,xs,y){let tensorsFromX={},nodesFromX={};for(let i=0;itensorsFromX[output.id]=!0),anyInputFromX=!0,nodesFromX[node2.id]=!0;break}if(anyInputFromX)break}}let tensorsLeadToY={};tensorsLeadToY[y.id]=!0;let nodesToY={};for(let i=tape.length-1;i>=0;i--){let node2=tape[i],nodeInputs=node2.inputs;for(let j=0;j=0;i--){let node2=filteredTape[i],dys=[];if(node2.outputs.forEach(o=>{let gradTensor=tensorAccumulatedGradientMap[o.id];gradTensor!=null?dys.push(gradTensor):dys.push(null)}),node2.gradient==null)throw new Error(`Cannot compute gradient: gradient function not found for ${node2.kernelName}.`);let inputGradients=node2.gradient(dys);for(let inputName in node2.inputs){if(!(inputName in inputGradients))throw new Error(`Cannot backprop through input ${inputName}. Available gradients found: ${Object.keys(inputGradients)}.`);let dx=tidy2(()=>inputGradients[inputName]());if(dx.dtype!=="float32")throw new Error(`Error in gradient for op ${node2.kernelName}. The gradient of input ${inputName} must have 'float32' dtype, but has '${dx.dtype}'`);let x=node2.inputs[inputName];if(!arraysEqual(dx.shape,x.shape))throw new Error(`Error in gradient for op ${node2.kernelName}. The gradient of input '${inputName}' has shape '${dx.shape}', which does not match the shape of the input '${x.shape}'`);if(tensorAccumulatedGradientMap[x.id]==null)tensorAccumulatedGradientMap[x.id]=dx;else{let curGradient=tensorAccumulatedGradientMap[x.id];tensorAccumulatedGradientMap[x.id]=add5(curGradient,dx),curGradient.dispose()}}}}var FORMAT_LIMIT_NUM_VALS=20,FORMAT_NUM_FIRST_LAST_VALS=3,FORMAT_NUM_SIG_DIGITS=7;function tensorToString(vals,shape,dtype,verbose){let strides=computeStrides(shape),padPerCol=computeMaxSizePerColumn(vals,shape,dtype,strides),rank=shape.length,valsLines=subTensorToString(vals,shape,dtype,strides,padPerCol),lines=["Tensor"];return verbose&&(lines.push(` dtype: ${dtype}`),lines.push(` rank: ${rank}`),lines.push(` shape: [${shape}]`),lines.push(" values:")),lines.push(valsLines.map(l=>" "+l).join(` -`)),lines.join(` -`)}function computeMaxSizePerColumn(vals,shape,dtype,strides){let n=sizeFromShape(shape),numCols=strides[strides.length-1],padPerCol=new Array(numCols).fill(0),rank=shape.length,valuesOrTuples=dtype==="complex64"?createComplexTuples(vals):vals;if(rank>1)for(let row=0;rowFORMAT_LIMIT_NUM_VALS){let firstValsSize=FORMAT_NUM_FIRST_LAST_VALS*storagePerElement,firstVals=Array.from(vals.slice(0,firstValsSize)),lastVals=Array.from(vals.slice((size-FORMAT_NUM_FIRST_LAST_VALS)*storagePerElement,size*storagePerElement));return dtype==="complex64"&&(firstVals=createComplexTuples(firstVals),lastVals=createComplexTuples(lastVals)),["["+firstVals.map((x,i)=>valToString(x,padPerCol[i],dtype)).join(", ")+", ..., "+lastVals.map((x,i)=>valToString(x,padPerCol[size-FORMAT_NUM_FIRST_LAST_VALS+i],dtype)).join(", ")+"]"]}let displayVals=dtype==="complex64"?createComplexTuples(vals):Array.from(vals);return["["+displayVals.map((x,i)=>valToString(x,padPerCol[i],dtype)).join(", ")+"]"]}let subshape=shape.slice(1),substrides=strides.slice(1),stride=strides[0]*storagePerElement,lines=[];if(size>FORMAT_LIMIT_NUM_VALS){for(let i=0;i`Length of values '${n}' does not match the size inferred by the shape '${this.size}'.`)}if(dtype==="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=values||getArrayFromDType(dtype,this.size),this.strides=computeStrides(shape)}set(value,...locs){locs.length===0&&(locs=[0]),assert(locs.length===this.rank,()=>`The number of provided coordinates (${locs.length}) must match the rank (${this.rank})`);let index=this.locToIndex(locs);this.values[index]=value}get(...locs){locs.length===0&&(locs=[0]);let i=0;for(let loc of locs){if(loc<0||loc>=this.shape[i]){let msg=`Requested out of range element at ${locs}. Buffer shape=${this.shape}`;throw new Error(msg)}i++}let index=locs[locs.length-1];for(let i2=0;i2decodeString(b))}catch(_a){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}}return data}dataSync(){this.throwIfDisposed();let data=trackerFn().readSync(this.dataId);if(this.dtype==="string")try{return data.map(b=>decodeString(b))}catch(_a){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}return data}async bytes(){this.throwIfDisposed();let data=await trackerFn().read(this.dataId);return this.dtype==="string"?data:new Uint8Array(data.buffer)}dispose(){this.isDisposed||(trackerFn().disposeTensor(this),this.isDisposedInternal=!0)}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(verbose=!1){return opHandler.print(this,verbose)}clone(){return this.throwIfDisposed(),opHandler.clone(this)}toString(verbose=!1){let vals=this.dataSync();return tensorToString(vals,this.shape,this.dtype,verbose)}cast(dtype){return this.throwIfDisposed(),opHandler.cast(this,dtype)}variable(trainable=!0,name,dtype){return this.throwIfDisposed(),trackerFn().makeVariable(this,trainable,name,dtype)}};Object.defineProperty(Tensor,Symbol.hasInstance,{value:instance=>!!instance&&instance.data!=null&&instance.dataSync!=null&&instance.throwIfDisposed!=null});var Variable=class extends Tensor{constructor(initialValue,trainable,name,tensorId){super(initialValue.shape,initialValue.dtype,initialValue.dataId,tensorId);this.trainable=trainable,this.name=name}assign(newValue){if(newValue.dtype!==this.dtype)throw new Error(`dtype of the new value (${newValue.dtype}) and previous value (${this.dtype}) must match`);if(!arraysEqual(newValue.shape,this.shape))throw new Error(`shape of the new value (${newValue.shape}) and previous value (${this.shape}) must match`);trackerFn().disposeTensor(this),this.dataId=newValue.dataId,trackerFn().incRef(this,null)}dispose(){trackerFn().disposeVariable(this),this.isDisposedInternal=!0}};Object.defineProperty(Variable,Symbol.hasInstance,{value:instance=>instance instanceof Tensor&&instance.assign!=null&&instance.assign instanceof Function});var tensor_util_exports={};__export2(tensor_util_exports,{assertTypesMatch:()=>assertTypesMatch,getTensorsInContainer:()=>getTensorsInContainer,isTensorInList:()=>isTensorInList,makeTypesMatch:()=>makeTypesMatch});var Rank;(function(Rank2){Rank2.R0="R0",Rank2.R1="R1",Rank2.R2="R2",Rank2.R3="R3",Rank2.R4="R4",Rank2.R5="R5",Rank2.R6="R6"})(Rank||(Rank={}));var UpcastInt32AndMap;(function(UpcastInt32AndMap2){UpcastInt32AndMap2.float32="float32",UpcastInt32AndMap2.int32="int32",UpcastInt32AndMap2.bool="int32",UpcastInt32AndMap2.complex64="complex64"})(UpcastInt32AndMap||(UpcastInt32AndMap={}));var UpcastBoolAndMap;(function(UpcastBoolAndMap2){UpcastBoolAndMap2.float32="float32",UpcastBoolAndMap2.int32="int32",UpcastBoolAndMap2.bool="bool",UpcastBoolAndMap2.complex64="complex64"})(UpcastBoolAndMap||(UpcastBoolAndMap={}));var UpcastFloat32AndMap;(function(UpcastFloat32AndMap2){UpcastFloat32AndMap2.float32="float32",UpcastFloat32AndMap2.int32="float32",UpcastFloat32AndMap2.bool="float32",UpcastFloat32AndMap2.complex64="complex64"})(UpcastFloat32AndMap||(UpcastFloat32AndMap={}));var UpcastComplex64AndMap;(function(UpcastComplex64AndMap2){UpcastComplex64AndMap2.float32="complex64",UpcastComplex64AndMap2.int32="complex64",UpcastComplex64AndMap2.bool="complex64",UpcastComplex64AndMap2.complex64="complex64"})(UpcastComplex64AndMap||(UpcastComplex64AndMap={}));var upcastTypeMap={float32:UpcastFloat32AndMap,int32:UpcastInt32AndMap,bool:UpcastBoolAndMap,complex64:UpcastComplex64AndMap};function upcastType(typeA,typeB){if(typeA==="string"||typeB==="string"){if(typeA==="string"&&typeB==="string")return"string";throw new Error(`Can not upcast ${typeA} with ${typeB}`)}return upcastTypeMap[typeA][typeB]}function sumOutType(type){return upcastType(type,"int32")}function makeTypesMatch(a,b){if(a.dtype===b.dtype)return[a,b];let dtype=upcastType(a.dtype,b.dtype);return[a.cast(dtype),b.cast(dtype)]}function assertTypesMatch(a,b){assert(a.dtype===b.dtype,()=>`The dtypes of the first(${a.dtype}) and second(${b.dtype}) input must match`)}function isTensorInList(tensor2,tensorList){return tensorList.some(x=>x.id===tensor2.id)}function getTensorsInContainer(result){let list=[],seen=new Set;return walkTensorContainer(result,list,seen),list}function walkTensorContainer(container,list,seen){if(container==null)return;if(container instanceof Tensor){list.push(container);return}if(!isIterable(container))return;let iterable=container;for(let k in iterable){let val=iterable[k];seen.has(val)||(seen.add(val),walkTensorContainer(val,list,seen))}}function isIterable(obj){return Array.isArray(obj)||typeof obj=="object"}var EngineState=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(k=>k.name)))}}}dispose(){for(let variableName in this.registeredVariables)this.registeredVariables[variableName].dispose()}},Engine=class{constructor(ENV5){this.ENV=ENV5,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new EngineState}async ready(){if(this.pendingBackendInit!=null)return this.pendingBackendInit.then(()=>{});if(this.backendInstance!=null)return;let sortedBackends=this.getSortedBackends();for(let i=0;i{kernel.setupFunc!=null&&kernel.setupFunc(this.backendInstance)})}disposeRegisteredKernels(backendName){getKernelsForBackend(backendName).forEach(kernel=>{kernel.disposeFunc!=null&&kernel.disposeFunc(this.registry[backendName])})}initializeBackend(backendName){let registryFactoryEntry=this.registryFactory[backendName];if(registryFactoryEntry==null)throw new Error(`Cannot initialize backend ${backendName}, no registration found.`);try{let backend2=registryFactoryEntry.factory();if(backend2&&!(backend2 instanceof KernelBackend)&&typeof backend2.then=="function"){let promiseId=++this.pendingBackendInitId,success=backend2.then(backendInstance=>promiseId(promiseIdthis.registryFactory[b].priority-this.registryFactory[a].priority)}initializeBackendsAndReturnBest(){let sortedBackends=this.getSortedBackends();for(let i=0;ithis.startScope(name),()=>this.endScope(result),()=>(result=fn(),result instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),result))}scopedRun(start,end,f){start();try{let res=f();return end(),res}catch(ex){throw end(),ex}}nextTensorId(){return Engine.nextTensorId++}nextVariableId(){return Engine.nextVariableId++}clone(x){let y=this.makeTensorFromDataId(x.dataId,x.shape,x.dtype),inputs={x},grad2=dy=>({x:()=>{let dtype="float32",gradInputs={x:dy},attrs={dtype};return ENGINE.runKernelFunc(backend2=>backend2.cast(dy,dtype),gradInputs,null,Cast,attrs)}}),saved=[];return this.addTapeNode(this.state.activeScope.name,inputs,[y],grad2,saved,{}),y}runKernel(kernelName,inputs,attrs,inputsToSave,outputsToSave){let forwardFunc=null,backwardsFunc=null;return this.runKernelFunc(forwardFunc,inputs,backwardsFunc,kernelName,attrs,inputsToSave,outputsToSave)}shouldCheckForMemLeaks(){return this.ENV.getBool("IS_TEST")}checkKernelForMemLeak(kernelName,numDataIdsBefore,outInfos){let numDataIdsAfter=this.backend.numDataIds(),numOutputDataIds=0;outInfos.forEach(info=>{numOutputDataIds+=info.dtype==="complex64"?3:1});let numMoves=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],dataIdsLeaked=numDataIdsAfter-numDataIdsBefore-numOutputDataIds-numMoves;if(dataIdsLeaked>0)throw new Error(`Backend '${this.backendName}' has an internal memory leak (${dataIdsLeaked} data ids) after running '${kernelName}'`)}runKernelFunc(forwardFunc,inputs,backwardsFunc,kernelName,attrs,inputsToSave,outputsToSave){let outputs,saved=[],isTapeOn=this.isTapeOn();kernelName==null&&(kernelName=this.state.activeScope!=null?this.state.activeScope.name:"");let startingBytecount=this.state.numBytes,startingNumTensors=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);let kernelFunc3;this.backendName==null&&this.backend;let kernel=getKernel(kernelName,this.backendName),out;if(kernel!=null)kernelFunc3=()=>{let numDataIdsBefore=this.backend.numDataIds();out=kernel.kernelFunc({inputs,attrs,backend:this.backend});let outInfos=Array.isArray(out)?out:[out];this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(kernelName,numDataIdsBefore,outInfos);let outTensors=outInfos.map(outInfo=>{if(outInfo.rank!=null)return outInfo;let{dataId,shape,dtype}=outInfo;return this.makeTensorFromDataId(dataId,shape,dtype)});if(isTapeOn){let tensorsToSave=this.getTensorsForGradient(kernelName,inputs,outTensors);if(tensorsToSave==null){outputsToSave==null&&(outputsToSave=[]);let outsToSave=outTensors.filter((_,i)=>outputsToSave[i]);tensorsToSave=(inputsToSave||[]).slice().concat(outsToSave)}saved=this.saveTensorsForBackwardMode(tensorsToSave)}return outTensors};else{if(forwardFunc==null)throw new Error(`Error running ${kernelName}: Neither modular kernel nor forward func passed`);let saveFunc=tensors=>{!isTapeOn||(saved=tensors.map(tensor2=>this.keep(this.clone(tensor2))))};kernelFunc3=()=>{let numDataIdsBefore=this.backend.numDataIds();out=this.tidy(()=>forwardFunc(this.backend,saveFunc));let outs=Array.isArray(out)?out:[out];return this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(kernelName,numDataIdsBefore,outs),outs}}let kernelProfile;return this.scopedRun(()=>this.state.kernelDepth++,()=>this.state.kernelDepth--,()=>{!this.ENV.getBool("DEBUG")&&!this.state.profiling?outputs=kernelFunc3():(kernelProfile=this.profiler.profileKernel(kernelName,inputs,()=>kernelFunc3()),this.ENV.getBool("DEBUG")&&this.profiler.logKernelProfile(kernelProfile),outputs=kernelProfile.outputs)}),isTapeOn&&this.addTapeNode(kernelName,inputs,outputs,backwardsFunc,saved,attrs),this.state.profiling&&this.state.activeProfile.kernels.push({name:kernelName,bytesAdded:this.state.numBytes-startingBytecount,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-startingNumTensors,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(inputs).map(key=>inputs[key]!=null?inputs[key].shape:null),outputShapes:outputs.map(item=>item.shape),kernelTimeMs:kernelProfile.timeMs,extraInfo:kernelProfile.extraInfo}),Array.isArray(out)?outputs:outputs[0]}saveTensorsForBackwardMode(tensors){return tensors.map(tensor2=>this.keep(this.clone(tensor2)))}getTensorsForGradient(kernelName,inputs,outputs){let gradConfig=getGradient(kernelName);if(gradConfig!=null){let inputsToSave=gradConfig.inputsToSave||[],outputsToSave=gradConfig.outputsToSave||[],inputTensorsToSave;gradConfig.saveAllInputs?(assert(Array.isArray(inputs),()=>"saveAllInputs is true, expected inputs to be an array."),inputTensorsToSave=Object.keys(inputs).map(key=>inputs[key])):inputTensorsToSave=inputsToSave.map(inputName=>inputs[inputName]);let outputTensorsToSave=outputs.filter((_,i)=>outputsToSave[i]);return inputTensorsToSave.concat(outputTensorsToSave)}return null}makeTensor(values,shape,dtype,backend2){if(values==null)throw new Error("Values passed to engine.makeTensor() are null");dtype=dtype||"float32",backend2=backend2||this.backend;let backendVals=values;dtype==="string"&&isString(values[0])&&(backendVals=values.map(d=>encodeString(d)));let dataId=backend2.write(backendVals,shape,dtype),t=new Tensor(shape,dtype,dataId,this.nextTensorId());if(this.incRef(t,backend2),dtype==="string"){let info=this.state.tensorInfo.get(dataId),newBytes=bytesFromStringArray(backendVals);this.state.numBytes+=newBytes-info.bytes,info.bytes=newBytes}return t}makeTensorFromDataId(dataId,shape,dtype,backend2){dtype=dtype||"float32";let t=new Tensor(shape,dtype,dataId,this.nextTensorId());return this.incRef(t,backend2),t}makeVariable(initialValue,trainable=!0,name,dtype){name=name||this.nextVariableId().toString(),dtype!=null&&dtype!==initialValue.dtype&&(initialValue=initialValue.cast(dtype));let v=new Variable(initialValue,trainable,name,this.nextTensorId());if(this.state.registeredVariables[v.name]!=null)throw new Error(`Variable with name ${v.name} was already registered`);return this.state.registeredVariables[v.name]=v,this.incRef(v,this.backend),v}incRef(a,backend2){let refCount=this.state.tensorInfo.has(a.dataId)?this.state.tensorInfo.get(a.dataId).refCount:0;if(this.state.numTensors++,a.dtype==="string"&&this.state.numStringTensors++,refCount===0){this.state.numDataBuffers++;let bytes=0;a.dtype!=="complex64"&&a.dtype!=="string"&&(bytes=a.size*bytesPerElement(a.dtype)),this.state.tensorInfo.set(a.dataId,{backend:backend2||this.backend,dtype:a.dtype,shape:a.shape,bytes,refCount:0}),this.state.numBytes+=bytes}this.state.tensorInfo.get(a.dataId).refCount++,a instanceof Variable||this.track(a)}disposeTensor(a){if(!this.state.tensorInfo.has(a.dataId))return;this.state.numTensors--,a.dtype==="string"&&this.state.numStringTensors--;let info=this.state.tensorInfo.get(a.dataId);info.refCount<=1?(a.dtype!=="complex64"&&(this.state.numBytes-=info.bytes),this.state.numDataBuffers--,info.backend.disposeData(a.dataId),this.state.tensorInfo.delete(a.dataId)):this.state.tensorInfo.get(a.dataId).refCount--}disposeVariables(){for(let varName in this.state.registeredVariables){let v=this.state.registeredVariables[varName];this.disposeVariable(v)}}disposeVariable(v){this.disposeTensor(v),this.state.registeredVariables[v.name]!=null&&delete this.state.registeredVariables[v.name]}memory(){let info=this.backend.memory();return info.numTensors=this.state.numTensors,info.numDataBuffers=this.state.numDataBuffers,info.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(info.unreliable=!0,info.reasons==null&&(info.reasons=[]),info.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),info}async profile(query){this.state.profiling=!0;let startBytes=this.state.numBytes,startNumTensors=this.state.numTensors;this.state.activeProfile.kernels=[],this.state.activeProfile.result=await query(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max(...this.state.activeProfile.kernels.map(d=>d.totalBytesSnapshot)),this.state.activeProfile.newBytes=this.state.numBytes-startBytes,this.state.activeProfile.newTensors=this.state.numTensors-startNumTensors;for(let kernel of this.state.activeProfile.kernels)kernel.kernelTimeMs=await kernel.kernelTimeMs,kernel.extraInfo=await kernel.extraInfo;return this.state.activeProfile}isTapeOn(){return this.state.gradientDepth>0&&this.state.kernelDepth===0}addTapeNode(kernelName,inputs,outputs,gradientsFunc,saved,attrs){let tapeNode={id:this.state.nextTapeNodeId++,kernelName,inputs,outputs,saved},gradConfig=getGradient(kernelName);gradConfig!=null&&(gradientsFunc=gradConfig.gradFunc),gradientsFunc!=null&&(tapeNode.gradient=dys=>(dys=dys.map((dy,i)=>{if(dy==null){let output=outputs[i],vals=makeZerosTypedArray(output.size,output.dtype);return this.makeTensor(vals,output.shape,output.dtype)}return dy}),gradientsFunc(dys.length>1?dys:dys[0],saved,attrs))),this.state.activeTape.push(tapeNode)}keep(result){return result.kept=!0,result}startTape(){this.state.gradientDepth===0&&(this.state.activeTape=[]),this.state.gradientDepth++}endTape(){this.state.gradientDepth--}startScope(name){let scopeInfo={track:[],name:"unnamed scope",id:this.state.nextScopeId++};name&&(scopeInfo.name=name),this.state.scopeStack.push(scopeInfo),this.state.activeScope=scopeInfo}endScope(result){let tensorsToTrackInParent=getTensorsInContainer(result),tensorsToTrackInParentSet=new Set(tensorsToTrackInParent.map(t=>t.id));for(let i=0;i{!tensor2.kept&&tensor2.scopeId===oldScope.id&&this.track(tensor2)})}gradients(f,xs,dy,allowNoGradients=!1){if(assert(xs.length>0,()=>"gradients() received an empty list of xs."),dy!=null&&dy.dtype!=="float32")throw new Error(`dy must have 'float32' dtype, but has '${dy.dtype}'`);let y=this.scopedRun(()=>this.startTape(),()=>this.endTape(),()=>this.tidy("forward",f));assert(y instanceof Tensor,()=>"The result y returned by f() must be a tensor.");let filteredTape=getFilteredNodesXToY(this.state.activeTape,xs,y);if(!allowNoGradients&&filteredTape.length===0&&xs.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 accumulatedGradientMap={};accumulatedGradientMap[y.id]=dy==null?ones(y.shape):dy,backpropagateGradients(accumulatedGradientMap,filteredTape,f2=>this.tidy(f2),add);let grads2=xs.map(x=>accumulatedGradientMap[x.id]);return this.state.gradientDepth===0&&(this.state.activeTape.forEach(node2=>{for(let tensor2 of node2.saved)tensor2.dispose()}),this.state.activeTape=null),{value:y,grads:grads2}})}customGrad(f){return assert(isFunction(f),()=>"The f passed in customGrad(f) must be a function."),(...inputs)=>{assert(inputs.every(t=>t instanceof Tensor),()=>"The args passed in customGrad(f)(x1, x2,...) must all be tensors");let res,inputMap={};return inputs.forEach((input2,i)=>{inputMap[i]=input2}),this.runKernelFunc((_,save)=>(res=f(...inputs,save),assert(res.value instanceof Tensor,()=>"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"),assert(isFunction(res.gradFunc),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."),res.value),inputMap,(dy,saved)=>{let gradRes=res.gradFunc(dy,saved),grads2=Array.isArray(gradRes)?gradRes:[gradRes];assert(grads2.length===inputs.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(...)."),assert(grads2.every(t=>t instanceof Tensor),()=>"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 gradMap={};return grads2.forEach((grad2,i)=>{gradMap[i]=()=>grad2}),gradMap})}}readSync(dataId){return this.state.tensorInfo.get(dataId).backend.readSync(dataId)}read(dataId){return this.state.tensorInfo.get(dataId).backend.read(dataId)}async time(query){let start=now(),timingInfo=await this.backend.time(query);return timingInfo.wallMs=now()-start,timingInfo}track(result){return this.state.activeScope!=null&&(result.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(result)),result}get registeredVariables(){return this.state.registeredVariables}reset(){this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new EngineState;for(let backendName in this.registry)this.disposeRegisteredKernels(backendName),this.registry[backendName].dispose(),delete this.registry[backendName];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null}};Engine.nextTensorId=0;Engine.nextVariableId=0;function ones(shape){let values=makeOnesTypedArray(sizeFromShape(shape),"float32");return ENGINE.makeTensor(values,shape,"float32")}function getOrMakeEngine(){let ns=getGlobalNamespace();if(ns._tfengine==null){let environment2=new Environment(ns);ns._tfengine=new Engine(environment2)}return setEnvironmentGlobal(ns._tfengine.ENV),setTensorTracker(()=>ns._tfengine),ns._tfengine}var ENGINE=getOrMakeEngine();function add(a,b){let inputs={a,b};return ENGINE.runKernel(Add,inputs)}var device_util_exports={};__export2(device_util_exports,{isBrowser:()=>isBrowser,isMobile:()=>isMobile});function _isNavigatorDefined(){return typeof navigator!="undefined"&&navigator!=null}function isMobile(){if(_isNavigatorDefined()){let a=navigator.userAgent||navigator.vendor||window.opera;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(a)||/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(a.substr(0,4))}return!1}function isBrowser(){return typeof window!="undefined"&&window.document!=null||typeof WorkerGlobalScope!="undefined"}var ENV2=env();ENV2.registerFlag("DEBUG",()=>!1,debugValue=>{debugValue&&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.")});ENV2.registerFlag("IS_BROWSER",()=>isBrowser());ENV2.registerFlag("IS_NODE",()=>typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined");ENV2.registerFlag("IS_CHROME",()=>typeof navigator!="undefined"&&navigator!=null&&navigator.userAgent!=null&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor));ENV2.registerFlag("PROD",()=>!1);ENV2.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",()=>ENV2.getBool("DEBUG"));ENV2.registerFlag("DEPRECATION_WARNINGS_ENABLED",()=>!0);ENV2.registerFlag("IS_TEST",()=>!1);ENV2.registerFlag("CHECK_COMPUTATION_FOR_ERRORS",()=>!0);function inferShape(val,dtype){let firstElem=val;if(isTypedArray(val))return dtype==="string"?[]:[val.length];if(!Array.isArray(val))return[];let shape=[];for(;Array.isArray(firstElem)||isTypedArray(firstElem)&&dtype!=="string";)shape.push(firstElem.length),firstElem=firstElem[0];return Array.isArray(val)&&env().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&deepAssertShapeConsistency(val,shape,[]),shape}function deepAssertShapeConsistency(val,shape,indices){if(indices=indices||[],!Array.isArray(val)&&!isTypedArray(val)){assert(shape.length===0,()=>`Element arr[${indices.join("][")}] is a primitive, but should be an array/TypedArray of ${shape[0]} elements`);return}assert(shape.length>0,()=>`Element arr[${indices.join("][")}] should be a primitive, but is an array of ${val.length} elements`),assert(val.length===shape[0],()=>`Element arr[${indices.join("][")}] should have ${shape[0]} elements, but has ${val.length} elements`);let subShape=shape.slice(1);for(let i=0;i=0&&(inferredDtype=parseAsDtype),assertDtype(parseAsDtype,inferredDtype,argName,functionName),x==null||!isTypedArray(x)&&!Array.isArray(x)&&typeof x!="number"&&typeof x!="boolean"&&typeof x!="string"){let type=x==null?"null":x.constructor.name;throw new Error(`Argument '${argName}' passed to '${functionName}' must be a Tensor or TensorLike, but got '${type}'`)}let inferredShape=inferShape(x,inferredDtype);!isTypedArray(x)&&!Array.isArray(x)&&(x=[x]);let values=inferredDtype!=="string"?toTypedArray(x,inferredDtype):flatten(x,[],!0);return ENGINE.makeTensor(values,inferredShape,inferredDtype)}function convertToTensorArray(arg,argName,functionName,parseAsDtype="numeric"){if(!Array.isArray(arg))throw new Error(`Argument ${argName} passed to ${functionName} must be a \`Tensor[]\` or \`TensorLike[]\``);return arg.map((t,i)=>convertToTensor(t,`${argName}[${i}]`,functionName,parseAsDtype))}var OP_SCOPE_SUFFIX="__op";function op(f){let keys=Object.keys(f);if(keys.length!==1)throw new Error(`Please provide an object with a single key (operation name) mapping to a function. Got an object with ${keys.length} keys.`);let opName=keys[0],fn=f[opName];opName.endsWith("_")&&(opName=opName.substring(0,opName.length-1)),opName=opName+OP_SCOPE_SUFFIX;let f2=(...args)=>{ENGINE.startScope(opName);try{let result=fn(...args);return isPromise(result)&&console.error("Cannot return a Promise inside of tidy."),ENGINE.endScope(result),result}catch(ex){throw ENGINE.endScope(null),ex}};return Object.defineProperty(f2,"name",{value:opName,configurable:!0}),f2}function complex_(real4,imag4){let $real=convertToTensor(real4,"real","complex"),$imag=convertToTensor(imag4,"imag","complex");assertShapesMatch($real.shape,$imag.shape,`real and imag shapes, ${$real.shape} and ${$imag.shape}, must match in call to tf.complex().`);let inputs={real:$real,imag:$imag};return ENGINE.runKernel(Complex,inputs)}var complex=op({complex_});function makeTensor(values,shape,inferredShape,dtype){if(dtype==null&&(dtype=inferDtype(values)),dtype==="complex64")throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(!isTypedArray(values)&&!Array.isArray(values)&&typeof values!="number"&&typeof values!="boolean"&&typeof values!="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(shape!=null){assertNonNegativeIntegerDimensions(shape);let providedSize=sizeFromShape(shape),inferredSize=sizeFromShape(inferredShape);assert(providedSize===inferredSize,()=>`Based on the provided shape, [${shape}], the tensor should have ${providedSize} values but has ${inferredSize}`);for(let i=0;i`Error creating a new Tensor. Inferred shape (${inferredShape}) does not match the provided shape (${shape}). `)}}return!isTypedArray(values)&&!Array.isArray(values)&&(values=[values]),shape=shape||inferredShape,values=dtype!=="string"?toTypedArray(values,dtype):flatten(values,[],!0),ENGINE.makeTensor(values,shape,dtype)}function tensor(values,shape,dtype){let inferredShape=inferShape(values,dtype);return makeTensor(values,shape,inferredShape,dtype)}var DTYPE_VALUE_SIZE_MAP={float32:4,float16:2,int32:4,uint16:2,uint8:1,bool:1,complex64:8},NUM_BYTES_STRING_LENGTH=4;async function encodeWeights(tensors,group){let specs=[],dataPromises=[],names=Array.isArray(tensors)?tensors.map(tensor2=>tensor2.name):Object.keys(tensors);for(let i=0;i{let vals=await t.bytes(),totalNumBytes=vals.reduce((p2,c)=>p2+c.length,0)+NUM_BYTES_STRING_LENGTH*vals.length,bytes=new Uint8Array(totalNumBytes),offset=0;for(let i2=0;i2{if(totalByteLength+=x.byteLength,normalizedXs.push(x.byteLength===x.buffer.byteLength?x:new x.constructor(x)),!(x instanceof Float32Array||x instanceof Int32Array||x instanceof Uint8Array))throw new Error(`Unsupported TypedArray subtype: ${x.constructor.name}`)});let y=new Uint8Array(totalByteLength),offset=0;return normalizedXs.forEach(x=>{y.set(new Uint8Array(x.buffer),offset),offset+=x.byteLength}),y.buffer}var useNodeBuffer=typeof Buffer!="undefined"&&(typeof Blob=="undefined"||typeof atob=="undefined"||typeof btoa=="undefined");function stringByteLength(str){return useNodeBuffer?Buffer.byteLength(str):new Blob([str]).size}function arrayBufferToBase64String(buffer2){if(useNodeBuffer)return Buffer.from(buffer2).toString("base64");let buf=new Uint8Array(buffer2),s="";for(let i=0,l=buf.length;i{totalByteLength+=buffer2.byteLength});let temp=new Uint8Array(totalByteLength),offset=0;return buffers.forEach(buffer2=>{temp.set(new Uint8Array(buffer2),offset),offset+=buffer2.byteLength}),temp.buffer}function basename(path){let SEPARATOR="/";for(path=path.trim();path.endsWith(SEPARATOR);)path=path.slice(0,path.length-1);let items=path.split(SEPARATOR);return items[items.length-1]}function getModelArtifactsInfoForJSON(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date,modelTopologyType:"JSON",modelTopologyBytes:modelArtifacts.modelTopology==null?0:stringByteLength(JSON.stringify(modelArtifacts.modelTopology)),weightSpecsBytes:modelArtifacts.weightSpecs==null?0:stringByteLength(JSON.stringify(modelArtifacts.weightSpecs)),weightDataBytes:modelArtifacts.weightData==null?0:modelArtifacts.weightData.byteLength}}function computeFloat16MantisaTable(){let convertMantissa=i=>{let m=i<<13,e=0;for(;(m&8388608)==0;)e-=8388608,m<<=1;return m&=~8388608,e+=947912704,m|e},mantisaTable=new Uint32Array(2048);mantisaTable[0]=0;for(let i=1;i<1024;i++)mantisaTable[i]=convertMantissa(i);for(let i=1024;i<2048;i++)mantisaTable[i]=939524096+(i-1024<<13);return mantisaTable}function computeFloat16ExponentTable(){let exponentTable=new Uint32Array(64);exponentTable[0]=0,exponentTable[31]=1199570944,exponentTable[32]=2147483648,exponentTable[63]=3347054592;for(let i=1;i<31;i++)exponentTable[i]=i<<23;for(let i=33;i<63;i++)exponentTable[i]=2147483648+(i-32<<23);return exponentTable}function computeFloat16OffsetTable(){let offsetTable=new Uint32Array(64);for(let i=0;i<64;i++)offsetTable[i]=1024;return offsetTable[0]=offsetTable[32]=0,offsetTable}function getFloat16Decoder(){let mantisaTable=computeFloat16MantisaTable(),exponentTable=computeFloat16ExponentTable(),offsetTable=computeFloat16OffsetTable();return quantizedArray=>{let buffer2=new ArrayBuffer(4*quantizedArray.length),bufferUint32View=new Uint32Array(buffer2);for(let index=0;index>10]+(float16Bits&1023)]+exponentTable[float16Bits>>10];bufferUint32View[index]=float32Bits}return new Float32Array(buffer2)}}var IORouterRegistry=class{constructor(){this.saveRouters=[],this.loadRouters=[]}static getInstance(){return IORouterRegistry.instance==null&&(IORouterRegistry.instance=new IORouterRegistry),IORouterRegistry.instance}static registerSaveRouter(saveRouter){IORouterRegistry.getInstance().saveRouters.push(saveRouter)}static registerLoadRouter(loadRouter){IORouterRegistry.getInstance().loadRouters.push(loadRouter)}static getSaveHandlers(url){return IORouterRegistry.getHandlers(url,"save")}static getLoadHandlers(url,loadOptions){return IORouterRegistry.getHandlers(url,"load",loadOptions)}static getHandlers(url,handlerType,loadOptions){let validHandlers=[];return(handlerType==="load"?IORouterRegistry.getInstance().loadRouters:IORouterRegistry.getInstance().saveRouters).forEach(router=>{let handler=router(url,loadOptions);handler!==null&&validHandlers.push(handler)}),validHandlers}},registerSaveRouter=loudRouter=>IORouterRegistry.registerSaveRouter(loudRouter),registerLoadRouter=loudRouter=>IORouterRegistry.registerLoadRouter(loudRouter),getSaveHandlers=url=>IORouterRegistry.getSaveHandlers(url),getLoadHandlers=(url,loadOptions)=>IORouterRegistry.getLoadHandlers(url,loadOptions),DATABASE_NAME="tensorflowjs",DATABASE_VERSION=1,MODEL_STORE_NAME="models_store",INFO_STORE_NAME="model_info_store";function getIndexedDBFactory(){if(!env().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");let theWindow=typeof window=="undefined"?self:window,factory=theWindow.indexedDB||theWindow.mozIndexedDB||theWindow.webkitIndexedDB||theWindow.msIndexedDB||theWindow.shimIndexedDB;if(factory==null)throw new Error("The current browser does not appear to support IndexedDB.");return factory}function setUpDatabase(openRequest){let db=openRequest.result;db.createObjectStore(MODEL_STORE_NAME,{keyPath:"modelPath"}),db.createObjectStore(INFO_STORE_NAME,{keyPath:"modelPath"})}var BrowserIndexedDB=class{constructor(modelPath){if(this.indexedDB=getIndexedDBFactory(),modelPath==null||!modelPath)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=modelPath}async save(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return this.databaseAction(this.modelPath,modelArtifacts)}async load(){return this.databaseAction(this.modelPath)}databaseAction(modelPath,modelArtifacts){return new Promise((resolve,reject)=>{let openRequest=this.indexedDB.open(DATABASE_NAME,DATABASE_VERSION);openRequest.onupgradeneeded=()=>setUpDatabase(openRequest),openRequest.onsuccess=()=>{let db=openRequest.result;if(modelArtifacts==null){let modelTx=db.transaction(MODEL_STORE_NAME,"readonly"),getRequest=modelTx.objectStore(MODEL_STORE_NAME).get(this.modelPath);getRequest.onsuccess=()=>{if(getRequest.result==null)return db.close(),reject(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`));resolve(getRequest.result.modelArtifacts)},getRequest.onerror=error=>(db.close(),reject(getRequest.error)),modelTx.oncomplete=()=>db.close()}else{let modelArtifactsInfo=getModelArtifactsInfoForJSON(modelArtifacts),infoTx=db.transaction(INFO_STORE_NAME,"readwrite"),infoStore=infoTx.objectStore(INFO_STORE_NAME),putInfoRequest=infoStore.put({modelPath:this.modelPath,modelArtifactsInfo}),modelTx;putInfoRequest.onsuccess=()=>{modelTx=db.transaction(MODEL_STORE_NAME,"readwrite");let putModelRequest=modelTx.objectStore(MODEL_STORE_NAME).put({modelPath:this.modelPath,modelArtifacts,modelArtifactsInfo});putModelRequest.onsuccess=()=>resolve({modelArtifactsInfo}),putModelRequest.onerror=error=>{infoStore=infoTx.objectStore(INFO_STORE_NAME);let deleteInfoRequest=infoStore.delete(this.modelPath);deleteInfoRequest.onsuccess=()=>(db.close(),reject(putModelRequest.error)),deleteInfoRequest.onerror=error2=>(db.close(),reject(putModelRequest.error))}},putInfoRequest.onerror=error=>(db.close(),reject(putInfoRequest.error)),infoTx.oncomplete=()=>{modelTx==null?db.close():modelTx.oncomplete=()=>db.close()}}},openRequest.onerror=error=>reject(openRequest.error)})}};BrowserIndexedDB.URL_SCHEME="indexeddb://";var indexedDBRouter=url=>env().getBool("IS_BROWSER")&&!Array.isArray(url)&&url.startsWith(BrowserIndexedDB.URL_SCHEME)?browserIndexedDB(url.slice(BrowserIndexedDB.URL_SCHEME.length)):null;IORouterRegistry.registerSaveRouter(indexedDBRouter);IORouterRegistry.registerLoadRouter(indexedDBRouter);function browserIndexedDB(modelPath){return new BrowserIndexedDB(modelPath)}function maybeStripScheme(key){return key.startsWith(BrowserIndexedDB.URL_SCHEME)?key.slice(BrowserIndexedDB.URL_SCHEME.length):key}var BrowserIndexedDBManager=class{constructor(){this.indexedDB=getIndexedDBFactory()}async listModels(){return new Promise((resolve,reject)=>{let openRequest=this.indexedDB.open(DATABASE_NAME,DATABASE_VERSION);openRequest.onupgradeneeded=()=>setUpDatabase(openRequest),openRequest.onsuccess=()=>{let db=openRequest.result,tx=db.transaction(INFO_STORE_NAME,"readonly"),getAllInfoRequest=tx.objectStore(INFO_STORE_NAME).getAll();getAllInfoRequest.onsuccess=()=>{let out={};for(let item of getAllInfoRequest.result)out[item.modelPath]=item.modelArtifactsInfo;resolve(out)},getAllInfoRequest.onerror=error=>(db.close(),reject(getAllInfoRequest.error)),tx.oncomplete=()=>db.close()},openRequest.onerror=error=>reject(openRequest.error)})}async removeModel(path){return path=maybeStripScheme(path),new Promise((resolve,reject)=>{let openRequest=this.indexedDB.open(DATABASE_NAME,DATABASE_VERSION);openRequest.onupgradeneeded=()=>setUpDatabase(openRequest),openRequest.onsuccess=()=>{let db=openRequest.result,infoTx=db.transaction(INFO_STORE_NAME,"readwrite"),infoStore=infoTx.objectStore(INFO_STORE_NAME),getInfoRequest=infoStore.get(path),modelTx;getInfoRequest.onsuccess=()=>{if(getInfoRequest.result==null)return db.close(),reject(new Error(`Cannot find model with path '${path}' in IndexedDB.`));{let deleteInfoRequest=infoStore.delete(path),deleteModelData=()=>{modelTx=db.transaction(MODEL_STORE_NAME,"readwrite");let deleteModelRequest=modelTx.objectStore(MODEL_STORE_NAME).delete(path);deleteModelRequest.onsuccess=()=>resolve(getInfoRequest.result.modelArtifactsInfo),deleteModelRequest.onerror=error=>reject(getInfoRequest.error)};deleteInfoRequest.onsuccess=deleteModelData,deleteInfoRequest.onerror=error=>(deleteModelData(),db.close(),reject(getInfoRequest.error))}},getInfoRequest.onerror=error=>(db.close(),reject(getInfoRequest.error)),infoTx.oncomplete=()=>{modelTx==null?db.close():modelTx.oncomplete=()=>db.close()}},openRequest.onerror=error=>reject(openRequest.error)})}},PATH_SEPARATOR="/",PATH_PREFIX="tensorflowjs_models",INFO_SUFFIX="info",MODEL_TOPOLOGY_SUFFIX="model_topology",WEIGHT_SPECS_SUFFIX="weight_specs",WEIGHT_DATA_SUFFIX="weight_data",MODEL_METADATA_SUFFIX="model_metadata";function getModelKeys(path){return{info:[PATH_PREFIX,path,INFO_SUFFIX].join(PATH_SEPARATOR),topology:[PATH_PREFIX,path,MODEL_TOPOLOGY_SUFFIX].join(PATH_SEPARATOR),weightSpecs:[PATH_PREFIX,path,WEIGHT_SPECS_SUFFIX].join(PATH_SEPARATOR),weightData:[PATH_PREFIX,path,WEIGHT_DATA_SUFFIX].join(PATH_SEPARATOR),modelMetadata:[PATH_PREFIX,path,MODEL_METADATA_SUFFIX].join(PATH_SEPARATOR)}}function getModelPathFromKey(key){let items=key.split(PATH_SEPARATOR);if(items.length<3)throw new Error(`Invalid key format: ${key}`);return items.slice(1,items.length-1).join(PATH_SEPARATOR)}function maybeStripScheme2(key){return key.startsWith(BrowserLocalStorage.URL_SCHEME)?key.slice(BrowserLocalStorage.URL_SCHEME.length):key}var BrowserLocalStorage=class{constructor(modelPath){if(!env().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,modelPath==null||!modelPath)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=modelPath,this.keys=getModelKeys(this.modelPath)}async save(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");{let topology=JSON.stringify(modelArtifacts.modelTopology),weightSpecs=JSON.stringify(modelArtifacts.weightSpecs),modelArtifactsInfo=getModelArtifactsInfoForJSON(modelArtifacts);try{this.LS.setItem(this.keys.info,JSON.stringify(modelArtifactsInfo)),this.LS.setItem(this.keys.topology,topology),this.LS.setItem(this.keys.weightSpecs,weightSpecs),this.LS.setItem(this.keys.weightData,arrayBufferToBase64String(modelArtifacts.weightData));let result={format:modelArtifacts.format,generatedBy:modelArtifacts.generatedBy,convertedBy:modelArtifacts.convertedBy};return modelArtifacts.signature!=null&&(result.signature=modelArtifacts.signature),modelArtifacts.userDefinedMetadata!=null&&(result.userDefinedMetadata=modelArtifacts.userDefinedMetadata),modelArtifacts.modelInitializer!=null&&(result.modelInitializer=modelArtifacts.modelInitializer),this.LS.setItem(this.keys.modelMetadata,JSON.stringify(result)),{modelArtifactsInfo}}catch(err){throw this.LS.removeItem(this.keys.info),this.LS.removeItem(this.keys.topology),this.LS.removeItem(this.keys.weightSpecs),this.LS.removeItem(this.keys.weightData),this.LS.removeItem(this.keys.modelMetadata),new Error(`Failed to save model '${this.modelPath}' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes=${modelArtifactsInfo.modelTopologyBytes}, weightSpecsBytes=${modelArtifactsInfo.weightSpecsBytes}, weightDataBytes=${modelArtifactsInfo.weightDataBytes}.`)}}}async load(){let info=JSON.parse(this.LS.getItem(this.keys.info));if(info==null)throw new Error(`In local storage, there is no model with name '${this.modelPath}'`);if(info.modelTopologyType!=="JSON")throw new Error("BrowserLocalStorage does not support loading non-JSON model topology yet.");let out={},topology=JSON.parse(this.LS.getItem(this.keys.topology));if(topology==null)throw new Error(`In local storage, the topology of model '${this.modelPath}' is missing.`);out.modelTopology=topology;let weightSpecs=JSON.parse(this.LS.getItem(this.keys.weightSpecs));if(weightSpecs==null)throw new Error(`In local storage, the weight specs of model '${this.modelPath}' are missing.`);out.weightSpecs=weightSpecs;let metadataString=this.LS.getItem(this.keys.modelMetadata);if(metadataString!=null){let metadata=JSON.parse(metadataString);out.format=metadata.format,out.generatedBy=metadata.generatedBy,out.convertedBy=metadata.convertedBy,metadata.signature!=null&&(out.signature=metadata.signature),metadata.userDefinedMetadata!=null&&(out.userDefinedMetadata=metadata.userDefinedMetadata),metadata.modelInitializer!=null&&(out.modelInitializer=metadata.modelInitializer)}let weightDataBase64=this.LS.getItem(this.keys.weightData);if(weightDataBase64==null)throw new Error(`In local storage, the binary weight values of model '${this.modelPath}' are missing.`);return out.weightData=base64StringToArrayBuffer(weightDataBase64),out}};BrowserLocalStorage.URL_SCHEME="localstorage://";var localStorageRouter=url=>env().getBool("IS_BROWSER")&&!Array.isArray(url)&&url.startsWith(BrowserLocalStorage.URL_SCHEME)?browserLocalStorage(url.slice(BrowserLocalStorage.URL_SCHEME.length)):null;IORouterRegistry.registerSaveRouter(localStorageRouter);IORouterRegistry.registerLoadRouter(localStorageRouter);function browserLocalStorage(modelPath){return new BrowserLocalStorage(modelPath)}var BrowserLocalStorageManager=class{constructor(){assert(env().getBool("IS_BROWSER"),()=>"Current environment is not a web browser"),assert(typeof window=="undefined"||typeof window.localStorage!="undefined",()=>"Current browser does not appear to support localStorage"),this.LS=window.localStorage}async listModels(){let out={},prefix=PATH_PREFIX+PATH_SEPARATOR,suffix=PATH_SEPARATOR+INFO_SUFFIX;for(let i=0;i"scheme must not be undefined or null."),scheme.endsWith(URL_SCHEME_SUFFIX)&&(scheme=scheme.slice(0,scheme.indexOf(URL_SCHEME_SUFFIX))),assert(scheme.length>0,()=>"scheme must not be an empty string.");let registry=ModelStoreManagerRegistry.getInstance();assert(registry.managers[scheme]==null,()=>`A model store manager is already registered for scheme '${scheme}'.`),registry.managers[scheme]=manager}static getManager(scheme){let manager=this.getInstance().managers[scheme];if(manager==null)throw new Error(`Cannot find model manager for scheme '${scheme}'`);return manager}static getSchemes(){return Object.keys(this.getInstance().managers)}};function parseURL(url){if(url.indexOf(URL_SCHEME_SUFFIX)===-1)throw new Error(`The url string provided does not contain a scheme. Supported schemes are: ${ModelStoreManagerRegistry.getSchemes().join(",")}`);return{scheme:url.split(URL_SCHEME_SUFFIX)[0],path:url.split(URL_SCHEME_SUFFIX)[1]}}async function cloneModelInternal(sourceURL,destURL,deleteSource=!1){assert(sourceURL!==destURL,()=>`Old path and new path are the same: '${sourceURL}'`);let loadHandlers=IORouterRegistry.getLoadHandlers(sourceURL);assert(loadHandlers.length>0,()=>`Copying failed because no load handler is found for source URL ${sourceURL}.`),assert(loadHandlers.length<2,()=>`Copying failed because more than one (${loadHandlers.length}) load handlers for source URL ${sourceURL}.`);let loadHandler=loadHandlers[0],saveHandlers=IORouterRegistry.getSaveHandlers(destURL);assert(saveHandlers.length>0,()=>`Copying failed because no save handler is found for destination URL ${destURL}.`),assert(saveHandlers.length<2,()=>`Copying failed because more than one (${loadHandlers.length}) save handlers for destination URL ${destURL}.`);let saveHandler=saveHandlers[0],sourceScheme=parseURL(sourceURL).scheme,sourcePath=parseURL(sourceURL).path,sameMedium=sourceScheme===parseURL(sourceURL).scheme,modelArtifacts=await loadHandler.load();deleteSource&&sameMedium&&await ModelStoreManagerRegistry.getManager(sourceScheme).removeModel(sourcePath);let saveResult=await saveHandler.save(modelArtifacts);return deleteSource&&!sameMedium&&await ModelStoreManagerRegistry.getManager(sourceScheme).removeModel(sourcePath),saveResult.modelArtifactsInfo}async function listModels(){let schemes=ModelStoreManagerRegistry.getSchemes(),out={};for(let scheme of schemes){let schemeOut=await ModelStoreManagerRegistry.getManager(scheme).listModels();for(let path in schemeOut){let url=scheme+URL_SCHEME_SUFFIX+path;out[url]=schemeOut[path]}}return out}async function removeModel(url){let schemeAndPath=parseURL(url);return ModelStoreManagerRegistry.getManager(schemeAndPath.scheme).removeModel(schemeAndPath.path)}async function copyModel(sourceURL,destURL){return cloneModelInternal(sourceURL,destURL,!1)}async function moveModel(sourceURL,destURL){return cloneModelInternal(sourceURL,destURL,!0)}var PlatformBrowser=class{fetch(path,init2){return fetch(path,init2)}now(){return performance.now()}encode(text,encoding){if(encoding!=="utf-8"&&encoding!=="utf8")throw new Error(`Browser's encoder only supports utf-8, but got ${encoding}`);return this.textEncoder==null&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(text)}decode(bytes,encoding){return new TextDecoder(encoding).decode(bytes)}};if(env().get("IS_BROWSER")){env().setPlatform("browser",new PlatformBrowser);try{ModelStoreManagerRegistry.registerManager(BrowserLocalStorage.URL_SCHEME,new BrowserLocalStorageManager)}catch(err){}try{ModelStoreManagerRegistry.registerManager(BrowserIndexedDB.URL_SCHEME,new BrowserIndexedDBManager)}catch(err){}}var getNodeFetch={importFetch:()=>require_browser()},systemFetch,PlatformNode=class{constructor(){this.util=require("util"),this.textEncoder=new this.util.TextEncoder}fetch(path,requestInits){return env().global.fetch!=null?env().global.fetch(path,requestInits):(systemFetch==null&&(systemFetch=getNodeFetch.importFetch()),systemFetch(path,requestInits))}now(){let time2=process.hrtime();return time2[0]*1e3+time2[1]/1e6}encode(text,encoding){if(encoding!=="utf-8"&&encoding!=="utf8")throw new Error(`Node built-in encoder only supports utf-8, but got ${encoding}`);return this.textEncoder.encode(text)}decode(bytes,encoding){return bytes.length===0?"":new this.util.TextDecoder(encoding).decode(bytes)}};env().get("IS_NODE")&&env().setPlatform("node",new PlatformNode);function buffer(shape,dtype="float32",values){return dtype=dtype||"float32",assertNonNegativeIntegerDimensions(shape),new TensorBuffer(shape,dtype,values)}function cast_(x,dtype){let $x=convertToTensor(x,"x","cast");if(!isValidDtype(dtype))throw new Error(`Failed to cast to unknown dtype ${dtype}`);if(dtype==="string"&&$x.dtype!=="string"||dtype!=="string"&&$x.dtype==="string")throw new Error("Only strings can be casted to strings");let inputs={x:$x},attrs={dtype};return ENGINE.runKernel(Cast,inputs,attrs)}var cast=op({cast_});function clone_(x){let inputs={x:convertToTensor(x,"x","clone","string_or_numeric")};return ENGINE.runKernel(Identity,inputs)}var clone=op({clone_});function print2(x,verbose=!1){console.log(x.toString(verbose))}getOrMakeEngine();var opHandler2={buffer,cast,clone,print:print2};setOpHandler(opHandler2);var io_exports={};__export2(io_exports,{browserFiles:()=>browserFiles,browserHTTPRequest:()=>browserHTTPRequest,concatenateArrayBuffers:()=>concatenateArrayBuffers,copyModel:()=>copyModel,decodeWeights:()=>decodeWeights,encodeWeights:()=>encodeWeights,fromMemory:()=>fromMemory,getLoadHandlers:()=>getLoadHandlers,getModelArtifactsInfoForJSON:()=>getModelArtifactsInfoForJSON,getSaveHandlers:()=>getSaveHandlers,http:()=>http,isHTTPScheme:()=>isHTTPScheme,listModels:()=>listModels,loadWeights:()=>loadWeights,moveModel:()=>moveModel,registerLoadRouter:()=>registerLoadRouter,registerSaveRouter:()=>registerSaveRouter,removeModel:()=>removeModel,weightsLoaderFactory:()=>weightsLoaderFactory,withSaveHandler:()=>withSaveHandler});var DEFAULT_FILE_NAME_PREFIX="model",DEFAULT_JSON_EXTENSION_NAME=".json",DEFAULT_WEIGHT_DATA_EXTENSION_NAME=".weights.bin";function defer(f){return new Promise(resolve=>setTimeout(resolve)).then(f)}var BrowserDownloads=class{constructor(fileNamePrefix){if(!env().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");fileNamePrefix.startsWith(BrowserDownloads.URL_SCHEME)&&(fileNamePrefix=fileNamePrefix.slice(BrowserDownloads.URL_SCHEME.length)),(fileNamePrefix==null||fileNamePrefix.length===0)&&(fileNamePrefix=DEFAULT_FILE_NAME_PREFIX),this.modelTopologyFileName=fileNamePrefix+DEFAULT_JSON_EXTENSION_NAME,this.weightDataFileName=fileNamePrefix+DEFAULT_WEIGHT_DATA_EXTENSION_NAME}async save(modelArtifacts){if(typeof document=="undefined")throw new Error("Browser downloads are not supported in this environment since `document` is not present");let weightsURL=window.URL.createObjectURL(new Blob([modelArtifacts.weightData],{type:"application/octet-stream"}));if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet.");{let weightsManifest=[{paths:["./"+this.weightDataFileName],weights:modelArtifacts.weightSpecs}],modelTopologyAndWeightManifest={modelTopology:modelArtifacts.modelTopology,format:modelArtifacts.format,generatedBy:modelArtifacts.generatedBy,convertedBy:modelArtifacts.convertedBy,weightsManifest};modelArtifacts.signature!=null&&(modelTopologyAndWeightManifest.signature=modelArtifacts.signature),modelArtifacts.userDefinedMetadata!=null&&(modelTopologyAndWeightManifest.userDefinedMetadata=modelArtifacts.userDefinedMetadata),modelArtifacts.modelInitializer!=null&&(modelTopologyAndWeightManifest.modelInitializer=modelArtifacts.modelInitializer);let modelTopologyAndWeightManifestURL=window.URL.createObjectURL(new Blob([JSON.stringify(modelTopologyAndWeightManifest)],{type:"application/json"})),jsonAnchor=this.jsonAnchor==null?document.createElement("a"):this.jsonAnchor;if(jsonAnchor.download=this.modelTopologyFileName,jsonAnchor.href=modelTopologyAndWeightManifestURL,await defer(()=>jsonAnchor.dispatchEvent(new MouseEvent("click"))),modelArtifacts.weightData!=null){let weightDataAnchor=this.weightDataAnchor==null?document.createElement("a"):this.weightDataAnchor;weightDataAnchor.download=this.weightDataFileName,weightDataAnchor.href=weightsURL,await defer(()=>weightDataAnchor.dispatchEvent(new MouseEvent("click")))}return{modelArtifactsInfo:getModelArtifactsInfoForJSON(modelArtifacts)}}}};BrowserDownloads.URL_SCHEME="downloads://";var BrowserFiles=class{constructor(files){if(files==null||files.length<1)throw new Error(`When calling browserFiles, at least 1 file is required, but received ${files}`);this.files=files}async load(){let jsonFile=this.files[0],weightFiles=this.files.slice(1);return new Promise((resolve,reject)=>{let jsonReader=new FileReader;jsonReader.onload=event=>{let modelJSON=JSON.parse(event.target.result),modelTopology=modelJSON.modelTopology;if(modelTopology==null){reject(new Error(`modelTopology field is missing from file ${jsonFile.name}`));return}weightFiles.length===0&&resolve({modelTopology});let weightsManifest=modelJSON.weightsManifest;if(weightsManifest==null){reject(new Error(`weightManifest field is missing from file ${jsonFile.name}`));return}let pathToFile;try{pathToFile=this.checkManifestAndWeightFiles(weightsManifest,weightFiles)}catch(err){reject(err);return}let weightSpecs=[],paths=[],perFileBuffers=[];weightsManifest.forEach(weightsGroup=>{weightsGroup.paths.forEach(path=>{paths.push(path),perFileBuffers.push(null)}),weightSpecs.push(...weightsGroup.weights)}),weightsManifest.forEach(weightsGroup=>{weightsGroup.paths.forEach(path=>{let weightFileReader=new FileReader;weightFileReader.onload=event2=>{let weightData=event2.target.result,index=paths.indexOf(path);if(perFileBuffers[index]=weightData,perFileBuffers.indexOf(null)===-1){let result={modelTopology,weightSpecs,weightData:concatenateArrayBuffers(perFileBuffers),format:modelJSON.format,generatedBy:modelJSON.generatedBy,convertedBy:modelJSON.convertedBy};modelJSON.signature!=null&&(result.signature=modelJSON.signature),modelJSON.userDefinedMetadata!=null&&(result.userDefinedMetadata=modelJSON.userDefinedMetadata),modelJSON.modelInitializer!=null&&(result.modelInitializer=modelJSON.modelInitializer),resolve(result)}},weightFileReader.onerror=error=>reject(`Failed to weights data from file of path '${path}'.`),weightFileReader.readAsArrayBuffer(pathToFile[path])})})},jsonReader.onerror=error=>reject(`Failed to read model topology and weights manifest JSON from file '${jsonFile.name}'. BrowserFiles supports loading Keras-style tf.Model artifacts only.`),jsonReader.readAsText(jsonFile)})}checkManifestAndWeightFiles(manifest,files){let basenames=[],fileNames=files.map(file=>basename(file.name)),pathToFile={};for(let group of manifest)group.paths.forEach(path=>{let pathBasename=basename(path);if(basenames.indexOf(pathBasename)!==-1)throw new Error(`Duplicate file basename found in weights manifest: '${pathBasename}'`);if(basenames.push(pathBasename),fileNames.indexOf(pathBasename)===-1)throw new Error(`Weight file with basename '${pathBasename}' is not provided.`);pathToFile[path]=files[fileNames.indexOf(pathBasename)]});if(basenames.length!==files.length)throw new Error(`Mismatch in the number of files in weights manifest (${basenames.length}) and the number of weight files provided (${files.length}).`);return pathToFile}},browserDownloadsRouter=url=>env().getBool("IS_BROWSER")&&!Array.isArray(url)&&url.startsWith(BrowserDownloads.URL_SCHEME)?browserDownloads(url.slice(BrowserDownloads.URL_SCHEME.length)):null;IORouterRegistry.registerSaveRouter(browserDownloadsRouter);function browserDownloads(fileNamePrefix="model"){return new BrowserDownloads(fileNamePrefix)}function browserFiles(files){return new BrowserFiles(files)}function monitorPromisesProgress(promises,onProgress,startFraction,endFraction){checkPromises(promises),startFraction=startFraction==null?0:startFraction,endFraction=endFraction==null?1:endFraction,checkFraction(startFraction,endFraction);let resolvedPromise=0,registerMonitor=promise=>(promise.then(value=>{let fraction=startFraction+ ++resolvedPromise/promises.length*(endFraction-startFraction);return onProgress(fraction),value}),promise);function checkPromises(promises2){assert(promises2!=null&&Array.isArray(promises2)&&promises2.length>0,()=>"promises must be a none empty array")}function checkFraction(startFraction2,endFraction2){assert(startFraction2>=0&&startFraction2<=1,()=>`Progress fraction must be in range [0, 1], but got startFraction ${startFraction2}`),assert(endFraction2>=0&&endFraction2<=1,()=>`Progress fraction must be in range [0, 1], but got endFraction ${endFraction2}`),assert(endFraction2>=startFraction2,()=>`startFraction must be no more than endFraction, but got startFraction ${startFraction2} and endFraction ${endFraction2}`)}return Promise.all(promises.map(registerMonitor))}async function loadWeightsAsArrayBuffer(fetchURLs,loadOptions){loadOptions==null&&(loadOptions={});let fetchFunc=loadOptions.fetchFunc==null?env().platform.fetch:loadOptions.fetchFunc,requests=fetchURLs.map(fetchURL=>fetchFunc(fetchURL,loadOptions.requestInit,{isBinary:!0})),fetchStartFraction=0,fetchEndFraction=.5,bufferPromises=(loadOptions.onProgress==null?await Promise.all(requests):await monitorPromisesProgress(requests,loadOptions.onProgress,fetchStartFraction,fetchEndFraction)).map(response=>response.arrayBuffer()),bufferStartFraction=.5,bufferEndFraction=1;return loadOptions.onProgress==null?await Promise.all(bufferPromises):await monitorPromisesProgress(bufferPromises,loadOptions.onProgress,bufferStartFraction,bufferEndFraction)}async function loadWeights(manifest,filePathPrefix="",weightNames,requestInit){return weightsLoaderFactory(fetchUrls=>loadWeightsAsArrayBuffer(fetchUrls,{requestInit}))(manifest,filePathPrefix,weightNames)}function weightsLoaderFactory(fetchWeightsFunction){return async(manifest,filePathPrefix="",weightNames)=>{let groupIndicesToFetchMap=manifest.map(()=>!1),groupWeightsToFetch={},weightsFound=weightNames!=null?weightNames.map(()=>!1):[],allManifestWeightNames=[];if(manifest.forEach((manifestGroupConfig,groupIndex)=>{let groupOffset=0;manifestGroupConfig.weights.forEach(weightsEntry=>{let rawDtype="quantization"in weightsEntry?weightsEntry.quantization.dtype:weightsEntry.dtype,weightsBytes=DTYPE_VALUE_SIZE_MAP[rawDtype]*sizeFromShape(weightsEntry.shape),enqueueWeightsForFetchingFn=()=>{groupIndicesToFetchMap[groupIndex]=!0,groupWeightsToFetch[groupIndex]==null&&(groupWeightsToFetch[groupIndex]=[]),groupWeightsToFetch[groupIndex].push({manifestEntry:weightsEntry,groupOffset,sizeBytes:weightsBytes})};weightNames!=null?weightNames.forEach((weightName,weightIndex)=>{weightName===weightsEntry.name&&(enqueueWeightsForFetchingFn(),weightsFound[weightIndex]=!0)}):enqueueWeightsForFetchingFn(),allManifestWeightNames.push(weightsEntry.name),groupOffset+=weightsBytes})}),!weightsFound.every(found=>found)){let weightsNotFound=weightNames.filter((_,i)=>!weightsFound[i]);throw new Error(`Could not find weights in manifest with names: ${weightsNotFound.join(", ")}. -Manifest JSON has weights with names: ${allManifestWeightNames.join(", ")}.`)}let groupIndicesToFetch=groupIndicesToFetchMap.reduce((accumulator,shouldFetch,i)=>(shouldFetch&&accumulator.push(i),accumulator),[]),fetchUrls=[];groupIndicesToFetch.forEach(i=>{manifest[i].paths.forEach(filepath=>{let fetchUrl=filePathPrefix+(filePathPrefix.endsWith("/")?"":"/")+filepath;fetchUrls.push(fetchUrl)})});let buffers=await fetchWeightsFunction(fetchUrls),weightsTensorMap={},bufferIndexOffset=0;return groupIndicesToFetch.forEach(i=>{let numBuffers=manifest[i].paths.length,groupBytes=0;for(let i2=0;i2{let byteBuffer=groupBuffer.slice(weightsEntry.groupOffset,weightsEntry.groupOffset+weightsEntry.sizeBytes),nameToTensorMap=decodeWeights(byteBuffer,[weightsEntry.manifestEntry]);for(let name in nameToTensorMap)weightsTensorMap[name]=nameToTensorMap[name]}),bufferIndexOffset+=numBuffers}),weightsTensorMap}}var OCTET_STREAM_MIME_TYPE="application/octet-stream",JSON_TYPE="application/json",HTTPRequest=class{constructor(path,loadOptions){if(this.DEFAULT_METHOD="POST",loadOptions==null&&(loadOptions={}),this.weightPathPrefix=loadOptions.weightPathPrefix,this.onProgress=loadOptions.onProgress,this.weightUrlConverter=loadOptions.weightUrlConverter,loadOptions.fetchFunc!=null?(assert(typeof loadOptions.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=loadOptions.fetchFunc):this.fetch=env().platform.fetch,assert(path!=null&&path.length>0,()=>"URL path for http must not be null, undefined or empty."),Array.isArray(path)&&assert(path.length===2,()=>`URL paths for http must have a length of 2, (actual length is ${path.length}).`),this.path=path,loadOptions.requestInit!=null&&loadOptions.requestInit.body!=null)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=loadOptions.requestInit||{}}async save(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");let init2=Object.assign({method:this.DEFAULT_METHOD},this.requestInit);init2.body=new FormData;let weightsManifest=[{paths:["./model.weights.bin"],weights:modelArtifacts.weightSpecs}],modelTopologyAndWeightManifest={modelTopology:modelArtifacts.modelTopology,format:modelArtifacts.format,generatedBy:modelArtifacts.generatedBy,convertedBy:modelArtifacts.convertedBy,weightsManifest};modelArtifacts.signature!=null&&(modelTopologyAndWeightManifest.signature=modelArtifacts.signature),modelArtifacts.userDefinedMetadata!=null&&(modelTopologyAndWeightManifest.userDefinedMetadata=modelArtifacts.userDefinedMetadata),modelArtifacts.modelInitializer!=null&&(modelTopologyAndWeightManifest.modelInitializer=modelArtifacts.modelInitializer),init2.body.append("model.json",new Blob([JSON.stringify(modelTopologyAndWeightManifest)],{type:JSON_TYPE}),"model.json"),modelArtifacts.weightData!=null&&init2.body.append("model.weights.bin",new Blob([modelArtifacts.weightData],{type:OCTET_STREAM_MIME_TYPE}),"model.weights.bin");let response=await this.fetch(this.path,init2);if(response.ok)return{modelArtifactsInfo:getModelArtifactsInfoForJSON(modelArtifacts),responses:[response]};throw new Error(`BrowserHTTPRequest.save() failed due to HTTP response status ${response.status}.`)}async load(){let modelConfigRequest=await this.fetch(this.path,this.requestInit);if(!modelConfigRequest.ok)throw new Error(`Request to ${this.path} failed with status code ${modelConfigRequest.status}. Please verify this URL points to the model JSON of the model to load.`);let modelConfig;try{modelConfig=await modelConfigRequest.json()}catch(e){let message=`Failed to parse model JSON of response from ${this.path}.`;throw this.path.endsWith(".pb")?message+=" 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.":message+=" Please make sure the server is serving valid JSON for this request.",new Error(message)}let modelTopology=modelConfig.modelTopology,weightsManifest=modelConfig.weightsManifest,generatedBy=modelConfig.generatedBy,convertedBy=modelConfig.convertedBy,format=modelConfig.format,signature=modelConfig.signature,userDefinedMetadata=modelConfig.userDefinedMetadata;if(modelTopology==null&&weightsManifest==null)throw new Error(`The JSON from HTTP path ${this.path} contains neither model topology or manifest for weights.`);let weightSpecs,weightData;weightsManifest!=null&&([weightSpecs,weightData]=await this.loadWeights(weightsManifest));let artifacts={modelTopology,weightSpecs,weightData,generatedBy,convertedBy,format};signature!=null&&(artifacts.signature=signature),userDefinedMetadata!=null&&(artifacts.userDefinedMetadata=userDefinedMetadata);let initializer=modelConfig.modelInitializer;return initializer&&(artifacts.modelInitializer=initializer),artifacts}async loadWeights(weightsManifest){let weightPath=Array.isArray(this.path)?this.path[1]:this.path,[prefix,suffix]=parseUrl(weightPath),pathPrefix=this.weightPathPrefix||prefix,weightSpecs=[];for(let entry of weightsManifest)weightSpecs.push(...entry.weights);let fetchURLs=[],urlPromises=[];for(let weightsGroup of weightsManifest)for(let path of weightsGroup.paths)this.weightUrlConverter!=null?urlPromises.push(this.weightUrlConverter(path)):fetchURLs.push(pathPrefix+path+suffix);this.weightUrlConverter&&fetchURLs.push(...await Promise.all(urlPromises));let buffers=await loadWeightsAsArrayBuffer(fetchURLs,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress});return[weightSpecs,concatenateArrayBuffers(buffers)]}};HTTPRequest.URL_SCHEME_REGEX=/^https?:\/\//;function parseUrl(url){let lastSlash=url.lastIndexOf("/"),lastSearchParam=url.lastIndexOf("?"),prefix=url.substring(0,lastSlash),suffix=lastSearchParam>lastSlash?url.substring(lastSearchParam):"";return[prefix+"/",suffix]}function isHTTPScheme(url){return url.match(HTTPRequest.URL_SCHEME_REGEX)!=null}var httpRouter=(url,loadOptions)=>{if(typeof fetch=="undefined"&&(loadOptions==null||loadOptions.fetchFunc==null))return null;{let isHTTP=!0;if(Array.isArray(url)?isHTTP=url.every(urlItem=>isHTTPScheme(urlItem)):isHTTP=isHTTPScheme(url),isHTTP)return http(url,loadOptions)}return null};IORouterRegistry.registerSaveRouter(httpRouter);IORouterRegistry.registerLoadRouter(httpRouter);function http(path,loadOptions){return new HTTPRequest(path,loadOptions)}function browserHTTPRequest(path,loadOptions){return http(path,loadOptions)}var PassthroughLoader=class{constructor(modelArtifacts){this.modelArtifacts=modelArtifacts}async load(){return this.modelArtifacts}},PassthroughSaver=class{constructor(saveHandler){this.saveHandler=saveHandler}async save(modelArtifacts){return this.saveHandler(modelArtifacts)}};function fromMemory(modelArtifacts,weightSpecs,weightData,trainingConfig){return arguments.length===1?modelArtifacts.modelTopology!=null||modelArtifacts.weightSpecs!=null?new PassthroughLoader(modelArtifacts):(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 PassthroughLoader({modelTopology:modelArtifacts})):(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 PassthroughLoader({modelTopology:modelArtifacts,weightSpecs,weightData,trainingConfig}))}function withSaveHandler(saveHandler){return new PassthroughSaver(saveHandler)}var math_exports={};__export2(math_exports,{confusionMatrix:()=>confusionMatrix});function matMul_(a,b,transposeA=!1,transposeB=!1){let $a=convertToTensor(a,"a","matMul"),$b=convertToTensor(b,"b","matMul");[$a,$b]=makeTypesMatch($a,$b);let inputs={a:$a,b:$b},attrs={transposeA,transposeB};return ENGINE.runKernel(BatchMatMul,inputs,attrs)}var matMul=op({matMul_});function oneHot_(indices,depth,onValue=1,offValue=0){if(depth<2)throw new Error(`Error in oneHot: depth must be >=2, but it is ${depth}`);let inputs={indices:convertToTensor(indices,"indices","oneHot","int32")},attrs={depth,onValue,offValue};return ENGINE.runKernel(OneHot,inputs,attrs)}var oneHot=op({oneHot_});function transpose_(x,perm){let $x=convertToTensor(x,"x","transpose");if(perm==null&&(perm=$x.shape.map((s,i)=>i).reverse()),assert($x.rank===perm.length,()=>`Error in transpose: rank of input ${$x.rank} must match length of perm ${perm}.`),perm.forEach(axis=>{assert(axis>=0&&axis<$x.rank,()=>`All entries in 'perm' must be between 0 and ${$x.rank-1} but got ${perm}`)}),$x.rank<=1)return $x.clone();let inputs={x:$x},attrs={perm};return ENGINE.runKernel(Transpose,inputs,attrs)}var transpose=op({transpose_});function confusionMatrix_(labels,predictions,numClasses){let $labels=convertToTensor(labels,"labels","confusionMatrix"),$predictions=convertToTensor(predictions,"predictions","confusionMatrix");assert(numClasses==null||numClasses>0&&Number.isInteger(numClasses),()=>`If provided, numClasses must be a positive integer, but got ${numClasses}`),assert($labels.rank===1,()=>`Expected the rank of labels to be 1, but got ${$labels.rank}`),assert($predictions.rank===1,()=>`Expected the rank of predictions to be 1, but got ${$predictions.rank}`),assert($labels.shape[0]===$predictions.shape[0],()=>`Mismatch in the number of examples: ${$labels.shape[0]} vs. ${$predictions.shape[0]}. Labels and predictions should have the same number of elements.`),assert(numClasses>0&&Number.isInteger(numClasses),()=>`numClasses is required to be a positive integer, but got ${numClasses}`);let oneHotLabels=oneHot(cast($labels,"int32"),numClasses),oneHotPredictions=oneHot(cast($predictions,"int32"),numClasses),oneHotLabelsT=transpose(oneHotLabels),product=matMul(oneHotLabelsT,oneHotPredictions);return cast(product,"int32")}var confusionMatrix=op({confusionMatrix_}),browser_exports={};__export2(browser_exports,{fromPixels:()=>fromPixels,toPixels:()=>toPixels});function tensor3d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==3)throw new Error("tensor3d() requires shape to have three numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==3&&inferredShape.length!==1)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return makeTensor(values,shape,inferredShape,dtype)}var fromPixels2DContext;function fromPixels_(pixels,numChannels=3){if(numChannels>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(pixels==null)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");let isPixelData=!1,isImageData=!1,isVideo=!1,isImage=!1,isCanvasLike=!1,isImageBitmap=!1;if(pixels.data instanceof Uint8Array)isPixelData=!0;else if(typeof ImageData!="undefined"&&pixels instanceof ImageData)isImageData=!0;else if(typeof HTMLVideoElement!="undefined"&&pixels instanceof HTMLVideoElement)isVideo=!0;else if(typeof HTMLImageElement!="undefined"&&pixels instanceof HTMLImageElement)isImage=!0;else if(pixels.getContext!=null)isCanvasLike=!0;else if(typeof ImageBitmap!="undefined"&&pixels instanceof ImageBitmap)isImageBitmap=!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 ${pixels.constructor.name}`);if(isVideo){let HAVE_CURRENT_DATA_READY_STATE=2;if(isVideo&&pixels.readyState element.")}if(getKernel(FromPixels,ENGINE.backendName)!=null){let inputs={pixels},attrs={numChannels};return ENGINE.runKernel(FromPixels,inputs,attrs)}let[width,height]=isVideo?[pixels.videoWidth,pixels.videoHeight]:[pixels.width,pixels.height],vals;isCanvasLike?vals=pixels.getContext("2d").getImageData(0,0,width,height).data:isImageData||isPixelData?vals=pixels.data:(isImage||isVideo||isImageBitmap)&&(fromPixels2DContext==null&&(fromPixels2DContext=document.createElement("canvas").getContext("2d")),fromPixels2DContext.canvas.width=width,fromPixels2DContext.canvas.height=height,fromPixels2DContext.drawImage(pixels,0,0,width,height),vals=fromPixels2DContext.getImageData(0,0,width,height).data);let values;if(numChannels===4)values=new Int32Array(vals);else{let numPixels=width*height;values=new Int32Array(numPixels*numChannels);for(let i=0;i4||depth===2)throw new Error(`toPixels only supports depth of size 1, 3 or 4 but got ${depth}`);if($img.dtype!=="float32"&&$img.dtype!=="int32")throw new Error(`Unsupported type for toPixels: ${$img.dtype}. Please use float32 or int32 tensors.`);let data=await $img.data(),multiplier=$img.dtype==="float32"?255:1,bytes=new Uint8ClampedArray(width*height*4);for(let i=0;i1)throw new Error(`Tensor values for a float32 Tensor must be in the range [0 - 1] but encountered ${value}.`)}else if($img.dtype==="int32"&&(value<0||value>255))throw new Error(`Tensor values for a int32 Tensor must be in the range [0 - 255] but encountered ${value}.`);depth===1?(rgba[0]=value*multiplier,rgba[1]=value*multiplier,rgba[2]=value*multiplier):rgba[d]=value*multiplier}let j=i*4;bytes[j+0]=Math.round(rgba[0]),bytes[j+1]=Math.round(rgba[1]),bytes[j+2]=Math.round(rgba[2]),bytes[j+3]=Math.round(rgba[3])}if(canvas!=null){canvas.width=width,canvas.height=height;let ctx=canvas.getContext("2d"),imageData=new ImageData(bytes,width,height);ctx.putImageData(imageData,0,0)}return $img!==img&&$img.dispose(),bytes}var fromPixels=op({fromPixels_}),gather_nd_util_exports={};__export2(gather_nd_util_exports,{prepareAndValidate:()=>prepareAndValidate});function prepareAndValidate(tensor2,indices){let tensorRank=tensor2.shape.length,indicesRank=indices.shape.length;if(tensorRank<1)throw new Error(`tf.gatherND() expects the input to be rank 1 or higher, but the rank was ${tensorRank}.`);if(indicesRank<1)throw new Error(`tf.gatherND() expects the indices to be rank 1 or higher, but the rank was ${indicesRank}.`);if(indices.dtype!=="int32")throw new Error(`tf.gatherND() expects the indices to be int32 type, but the dtype was ${indices.dtype}.`);if(indices.shape[indicesRank-1]>tensorRank)throw new Error(`index innermost dimension length must be <= tensor rank; saw: ${indices.shape[indicesRank-1]} vs. ${tensorRank}`);if(sizeFromShape(tensor2.shape)===0)throw new Error(`Requested more than 0 entries, but input is empty. Input shape: ${tensor2.shape}.`);let indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],nResult=1;for(let i=0;istride/sliceSize),1].slice(0,sliceRank);return[resultShape,nResult,sliceSize,strides]}var scatter_nd_util_exports={};__export2(scatter_nd_util_exports,{calculateShapes:()=>calculateShapes,validateInput:()=>validateInput,validateUpdateShape:()=>validateUpdateShape});function validateUpdateShape(shape,indices,updates){let sliceDim=indices.rank>1?indices.shape[indices.rank-1]:1,batchDim=indices.rank>1?indices.rank-1:1,shapeError=`Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: ${updates.shape}, indices.shape: ${indices.shape}, shape: ${shape}, sliceDim: ${sliceDim}, and batchDim: ${batchDim}.`;if(updates.rank1?indices.shape[indicesRank-1]:1,totalNd=shape.length,sliceSize=1;for(let i=sliceRank;iassertParamsValid,computeFlatOffset:()=>computeFlatOffset,computeOutShape:()=>computeOutShape,getNormalizedAxes:()=>getNormalizedAxes,isSliceContinous:()=>isSliceContinous,maskToAxes:()=>maskToAxes,parseSliceParams:()=>parseSliceParams,sliceInfo:()=>sliceInfo,startForAxis:()=>startForAxis,startIndicesWithElidedDims:()=>startIndicesWithElidedDims,stopForAxis:()=>stopForAxis,stopIndicesWithElidedDims:()=>stopIndicesWithElidedDims,stridesForAxis:()=>stridesForAxis,stridesWithElidedDims:()=>stridesWithElidedDims});function assertParamsValid(input2,begin,size){let inputRank=input2.shape.length;assert(inputRank===begin.length,()=>`Error in slice${inputRank}D: Length of begin ${begin} must match the rank of the array (${inputRank}).`),assert(inputRank===size.length,()=>`Error in slice${inputRank}D: Length of size ${size} must match the rank of the array (${inputRank}).`);for(let i=0;i`Error in slice${inputRank}D: begin[${i}] + size[${i}] (${begin[i]+size[i]}) would overflow input.shape[${i}] (${input2.shape[i]})`)}function maskToAxes(mask){let axes=[],axis=0;for(;mask>0;)mask&1&&axes.push(axis),mask/=2,axis++;return axes}function computeOutShape(begin,end,strides){let size=[];for(let axis=0;axis0){let fullIndex=ellipsisAxes[0],numElidedAxes=numInterpolatedAxes+1;normalizedBegin=startIndicesWithElidedDims(beginMask,fullIndex,numElidedAxes,begin,inputShape),normalizedEnd=stopIndicesWithElidedDims(endMask,fullIndex,numElidedAxes,end,inputShape),normalizedStrides=stridesWithElidedDims(strides,fullIndex,numElidedAxes,inputShape)}else for(let axis=0;axis-1)newIndices[axis]=0;else{let originalAxis=unnormalizeAxis(ellipsisInsertionIndex,numElidedAxes,axis),originalValue=originalBegin[originalAxis];beginMask&1<-1)newIndices[axis]=Number.MAX_SAFE_INTEGER;else{let originalAxis=unnormalizeAxis(ellipsisInsertionIndex,numElidedAxes,axis),originalValue=originalEnd[originalAxis];endMask&1<0?start=Number.MIN_SAFE_INTEGER:start=Number.MAX_SAFE_INTEGER);let axisSize=inputShape[axis];return start<0&&(start+=axisSize),start=clamp(0,start,axisSize-1),start}function stopForAxis(endMask,stopIndices,strides,inputShape,axis,ellipsisMask){let stop=stopIndices[axis],stride=strides[axis]||1;(endMask&1<0?stop=Number.MAX_SAFE_INTEGER:stop=Number.MIN_SAFE_INTEGER);let axisSize=inputShape[axis];return stop<0&&(stop+=axisSize),stride>0?stop=clamp(0,stop,axisSize):stop=clamp(-1,stop,axisSize-1),stop}function isSliceContinous(shape,begin,size){let firstNonOneAxis=size.length;for(let i=0;i1){firstNonOneAxis=i;break}for(let i=firstNonOneAxis+1;i0||size[i]!==shape[i])return!1;return!0}function computeFlatOffset(begin,strides){let flatOffset=begin.length>0?begin[begin.length-1]:1;for(let i=0;i{assert(d!==-1,()=>"slice() does not support negative begin indexing.")});let size_;return size==null?size_=new Array(xRank).fill(-1):typeof size=="number"?size_=[size,...new Array(xRank-1).fill(-1)]:size.lengthd>=0?d:(assert(d===-1,()=>`Negative size values should be exactly -1 but got ${d} for the slice() size at index ${i}.`),x.shape[i]-begin_[i])),[begin_,size_]}function sliceInfo(xShape,begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask){let $begin=begin.slice(),$end=end.slice(),$strides=strides;strides==null&&($strides=new Array($begin.length));let ellipsisAxes=maskToAxes(ellipsisMask);if(ellipsisAxes.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(ellipsisMask!==0&&newAxisMask!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(ellipsisMask!==0&&shrinkAxisMask!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let numInterpolatedAxes=xShape.length-$begin.length,expandAxes=maskToAxes(newAxisMask),newShape=xShape.slice();expandAxes.forEach(axis=>{$begin[axis]=0,$end[axis]=1,newShape.splice(axis,0,1)});let{begin:normalizedBegin,end:normalizedEnd,strides:normalizedStrides}=getNormalizedAxes(newShape,ellipsisAxes,numInterpolatedAxes,$begin,$end,$strides,beginMask,endMask,ellipsisMask);$begin=normalizedBegin,$end=normalizedEnd,$strides=normalizedStrides;let shrinkAxes=maskToAxes(shrinkAxisMask);shrinkAxes.forEach(axis=>{$end[axis]=$begin[axis]+1,$strides[axis]=1});let size=computeOutShape($begin,$end,$strides),outShape=size.filter((_,axis)=>shrinkAxes.indexOf(axis)===-1);return{nonStrided:$strides.every(v=>v===1),$begin,$end,$strides,size,newShape,outShape}}var serialization_exports={};__export2(serialization_exports,{Serializable:()=>Serializable,SerializationMap:()=>SerializationMap,registerClass:()=>registerClass});var Serializable=class{getClassName(){return this.constructor.className}static fromConfig(cls,config){return new cls(config)}},SerializationMap=class{constructor(){this.classNameMap={}}static getMap(){return SerializationMap.instance==null&&(SerializationMap.instance=new SerializationMap),SerializationMap.instance}static register(cls){SerializationMap.getMap().classNameMap[cls.className]=[cls,cls.fromConfig]}};function registerClass(cls){assert(cls.className!=null,()=>"Class being registered does not have the static className property defined."),assert(typeof cls.className=="string",()=>"className is required to be a string, but got type "+typeof cls.className),assert(cls.className.length>0,()=>"Class being registered has an empty-string as its className, which is disallowed."),SerializationMap.register(cls)}var test_util_exports={};__export2(test_util_exports,{TEST_EPSILON_FLOAT16:()=>TEST_EPSILON_FLOAT16,encodeStrings:()=>encodeStrings,expectArrayBuffersEqual:()=>expectArrayBuffersEqual,expectArraysClose:()=>expectArraysClose,expectArraysEqual:()=>expectArraysEqual,expectNumbersClose:()=>expectNumbersClose,expectPromiseToFail:()=>expectPromiseToFail,expectValuesInRange:()=>expectValuesInRange,testEpsilon:()=>testEpsilon});var TEST_EPSILON_FLOAT32=.001,TEST_EPSILON_FLOAT16=.1;function expectArraysClose(actual,expected,epsilon32){return epsilon32==null&&(epsilon32=testEpsilon()),expectArraysPredicate(actual,expected,(a,b)=>areClose(a,b,epsilon32))}function testEpsilon(){return ENGINE.backend.floatPrecision()===32?TEST_EPSILON_FLOAT32:TEST_EPSILON_FLOAT16}function expectArraysPredicate(actual,expected,predicate){let checkClassType=!0;if((isTypedArray(actual)||isTypedArray(expected))&&(checkClassType=!1),isTypedArray(actual)&&isTypedArray(expected)&&(checkClassType=!0),checkClassType){let aType=actual.constructor.name,bType=expected.constructor.name;if(aType!==bType)throw new Error(`Arrays are of different type. Actual: ${aType}. Expected: ${bType}`)}if(Array.isArray(actual)&&Array.isArray(expected)){let actualShape=inferShape(actual),expectedShape=inferShape(expected);if(!arraysEqual(actualShape,expectedShape))throw new Error(`Arrays have different shapes. Actual: [${actualShape}]. Expected: [${expectedShape}]`)}let actualFlat=isTypedArray(actual)?actual:flatten(actual),expectedFlat=isTypedArray(expected)?expected:flatten(expected);if(actualFlat.length!==expectedFlat.length)throw new Error(`Arrays have different lengths actual: ${actualFlat.length} vs expected: ${expectedFlat.length}. -Actual: ${actualFlat}. -Expected: ${expectedFlat}.`);for(let i=0;idone.fail(),()=>done())}function expectArraysEqual(actual,expected){let exp4=typeof expected=="string"||typeof expected=="number"||typeof expected=="boolean"?[expected]:expected;return isString(actual)||isString(actual[0])||isString(expected)||isString(expected[0])?expectArraysPredicate(actual,exp4,(a,b)=>a==b):expectArraysPredicate(actual,expected,(a,b)=>areClose(a,b,0))}function expectNumbersClose(a,e,epsilon32){if(epsilon32==null&&(epsilon32=testEpsilon()),!areClose(a,e,epsilon32))throw new Error(`Numbers differ: actual === ${a}, expected === ${e}`)}function areClose(a,e,epsilon32){return!isFinite(a)&&!isFinite(e)?!0:!(isNaN(a)||isNaN(e)||Math.abs(a-e)>epsilon32)}function expectValuesInRange(actual,low,high){for(let i=0;ihigh)throw new Error(`Value out of range:${actual[i]} low: ${low}, high: ${high}`)}function expectArrayBuffersEqual(actual,expected){expect(new Float32Array(actual)).toEqual(new Float32Array(expected))}function encodeStrings(a){for(let i=0;itensor2.dispose())}function keep(result){return ENGINE.keep(result)}function time(f){return ENGINE.time(f)}function setBackend(backendName){return ENGINE.setBackend(backendName)}function ready(){return ENGINE.ready()}function getBackend(){return ENGINE.backendName}function removeBackend(name){ENGINE.removeBackend(name)}function findBackend(name){return ENGINE.findBackend(name)}function findBackendFactory(name){return ENGINE.findBackendFactory(name)}function registerBackend(name,factory,priority=1){return ENGINE.registerBackend(name,factory,priority)}function backend(){return ENGINE.backend}function setPlatform(platformName,platform){env().setPlatform(platformName,platform)}function add_(a,b){let $a=convertToTensor(a,"a","add"),$b=convertToTensor(b,"b","add");[$a,$b]=makeTypesMatch($a,$b);let inputs={a:$a,b:$b};return ENGINE.runKernel(Add,inputs)}var add2=op({add_});function floorDiv_(a,b){let $a=convertToTensor(a,"a","floorDiv"),$b=convertToTensor(b,"b","floorDiv");[$a,$b]=makeTypesMatch($a,$b);let inputs={a:$a,b:$b};return ENGINE.runKernel(FloorDiv,inputs)}var floorDiv=op({floorDiv_});function div_(a,b){let $a=convertToTensor(a,"a","div"),$b=convertToTensor(b,"b","div");if([$a,$b]=makeTypesMatch($a,$b),$a.dtype==="int32"&&$b.dtype==="int32")return floorDiv($a,$b);let inputs={a:$a,b:$b},attrs={};return ENGINE.runKernel(RealDiv,inputs,attrs)}var div=op({div_});function mul_(a,b){let $a=convertToTensor(a,"a","mul"),$b=convertToTensor(b,"b","mul");[$a,$b]=makeTypesMatch($a,$b);let inputs={a:$a,b:$b};return ENGINE.runKernel(Multiply,inputs)}var mul=op({mul_});function abs_(x){let $x=convertToTensor(x,"x","abs");if($x.dtype==="complex64"){let inputs={x:$x};return ENGINE.runKernel(ComplexAbs,inputs)}else{let inputs={x:$x};return ENGINE.runKernel(Abs,inputs)}}var abs=op({abs_});function acos_(x){let inputs={x:convertToTensor(x,"x","acos")};return ENGINE.runKernel(Acos,inputs)}var acos=op({acos_});function acosh_(x){let inputs={x:convertToTensor(x,"x","acosh")};return ENGINE.runKernel(Acosh,inputs)}var acosh=op({acosh_});function addN_(tensors){assert(Array.isArray(tensors),()=>"The argument passed to tf.addN() must be a list of tensors"),assert(tensors.length>=1,()=>`Must pass at least one tensor to tf.addN(), but got ${tensors.length}`);let $tensors=tensors.map((t,i)=>convertToTensor(t,`tensors${i}`,"addN")),firstTensor=$tensors[0];$tensors.forEach(t=>{if(t.dtype!==firstTensor.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),$tensors.forEach(t=>{if(!arraysEqual(t.shape,firstTensor.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});let inputs=$tensors;return ENGINE.runKernel(AddN,inputs)}var addN=op({addN_});function all_(x,axis=null,keepDims=!1){let inputs={x:convertToTensor(x,"x","all","bool")},attrs={axis,keepDims};return ENGINE.runKernel(All,inputs,attrs)}var all=op({all_});function any_(x,axis=null,keepDims=!1){let inputs={x:convertToTensor(x,"x","any","bool")},attrs={axis,keepDims};return ENGINE.runKernel(Any,inputs,attrs)}var any=op({any_});function argMax_(x,axis=0){let inputs={x:convertToTensor(x,"x","argMax")},attrs={axis};return ENGINE.runKernel(ArgMax,inputs,attrs)}var argMax=op({argMax_});function argMin_(x,axis=0){let inputs={x:convertToTensor(x,"x","argMin")},attrs={axis};return ENGINE.runKernel(ArgMin,inputs,attrs)}var argMin=op({argMin_});function asin_(x){let inputs={x:convertToTensor(x,"x","asin")};return ENGINE.runKernel(Asin,inputs)}var asin=op({asin_});function asinh_(x){let inputs={x:convertToTensor(x,"x","asinh")};return ENGINE.runKernel(Asinh,inputs)}var asinh=op({asinh_});function atan_(x){let inputs={x:convertToTensor(x,"x","atan")};return ENGINE.runKernel(Atan,inputs)}var atan=op({atan_});function atan2_(a,b){let $a=convertToTensor(a,"a","atan2"),$b=convertToTensor(b,"b","atan2");[$a,$b]=makeTypesMatch($a,$b);let inputs={a:$a,b:$b};return ENGINE.runKernel(Atan2,inputs)}var atan2=op({atan2_});function atanh_(x){let inputs={x:convertToTensor(x,"x","atanh")};return ENGINE.runKernel(Atanh,inputs)}var atanh=op({atanh_});function computeDilation2DInfo(inputShape,filterShape,strides,pad3,dataFormat="NHWC",dilations){let inputChannels=inputShape[3],$filterShape=[...filterShape,inputChannels],$dataFormat=convertConv2DDataFormat(dataFormat);return computeConv2DInfo(inputShape,$filterShape,strides,dilations,pad3,null,null,$dataFormat)}function computePool2DInfo(inShape,filterSize,strides,dilations,pad3,roundingMode,dataFormat="channelsLast"){let[filterHeight,filterWidth]=parseTupleParam(filterSize),filterShape;if(dataFormat==="channelsLast")filterShape=[filterHeight,filterWidth,inShape[3],inShape[3]];else if(dataFormat==="channelsFirst")filterShape=[filterHeight,filterWidth,inShape[1],inShape[1]];else throw new Error(`Unknown dataFormat ${dataFormat}`);return computeConv2DInfo(inShape,filterShape,strides,dilations,pad3,roundingMode,!1,dataFormat)}function computePool3DInfo(inShape,filterSize,strides,dilations,pad3,roundingMode,dataFormat="NDHWC"){let[filterDepth,filterHeight,filterWidth]=parse3TupleParam(filterSize),filterShape,$dataFormat;if(dataFormat==="NDHWC")$dataFormat="channelsLast",filterShape=[filterDepth,filterHeight,filterWidth,inShape[4],inShape[4]];else if(dataFormat==="NCDHW")$dataFormat="channelsFirst",filterShape=[filterDepth,filterHeight,filterWidth,inShape[1],inShape[1]];else throw new Error(`Unknown dataFormat ${dataFormat}`);return computeConv3DInfo(inShape,filterShape,strides,dilations,pad3,!1,$dataFormat,roundingMode)}function computeConv2DInfo(inShape,filterShape,strides,dilations,pad3,roundingMode,depthwise=!1,dataFormat="channelsLast"){let[batchSize,inHeight,inWidth,inChannels]=[-1,-1,-1,-1];if(dataFormat==="channelsLast")[batchSize,inHeight,inWidth,inChannels]=inShape;else if(dataFormat==="channelsFirst")[batchSize,inChannels,inHeight,inWidth]=inShape;else throw new Error(`Unknown dataFormat ${dataFormat}`);let[filterHeight,filterWidth,,filterChannels]=filterShape,[strideHeight,strideWidth]=parseTupleParam(strides),[dilationHeight,dilationWidth]=parseTupleParam(dilations),effectiveFilterHeight=getEffectiveFilterSize(filterHeight,dilationHeight),effectiveFilterWidth=getEffectiveFilterSize(filterWidth,dilationWidth),{padInfo,outHeight,outWidth}=getPadAndOutInfo(pad3,inHeight,inWidth,strideHeight,strideWidth,effectiveFilterHeight,effectiveFilterWidth,roundingMode,dataFormat),outChannels=depthwise?filterChannels*inChannels:filterChannels,outShape;return dataFormat==="channelsFirst"?outShape=[batchSize,outChannels,outHeight,outWidth]:dataFormat==="channelsLast"&&(outShape=[batchSize,outHeight,outWidth,outChannels]),{batchSize,dataFormat,inHeight,inWidth,inChannels,outHeight,outWidth,outChannels,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,effectiveFilterHeight,effectiveFilterWidth,dilationHeight,dilationWidth,inShape,outShape,filterShape}}function computeConv3DInfo(inShape,filterShape,strides,dilations,pad3,depthwise=!1,dataFormat="channelsLast",roundingMode){let[batchSize,inDepth,inHeight,inWidth,inChannels]=[-1,-1,-1,-1,-1];if(dataFormat==="channelsLast")[batchSize,inDepth,inHeight,inWidth,inChannels]=inShape;else if(dataFormat==="channelsFirst")[batchSize,inChannels,inDepth,inHeight,inWidth]=inShape;else throw new Error(`Unknown dataFormat ${dataFormat}`);let[filterDepth,filterHeight,filterWidth,,filterChannels]=filterShape,[strideDepth,strideHeight,strideWidth]=parse3TupleParam(strides),[dilationDepth,dilationHeight,dilationWidth]=parse3TupleParam(dilations),effectiveFilterDepth=getEffectiveFilterSize(filterDepth,dilationDepth),effectiveFilterHeight=getEffectiveFilterSize(filterHeight,dilationHeight),effectiveFilterWidth=getEffectiveFilterSize(filterWidth,dilationWidth),{padInfo,outDepth,outHeight,outWidth}=get3DPadAndOutInfo(pad3,inDepth,inHeight,inWidth,strideDepth,strideHeight,strideWidth,effectiveFilterDepth,effectiveFilterHeight,effectiveFilterWidth,roundingMode),outChannels=depthwise?filterChannels*inChannels:filterChannels,outShape;return dataFormat==="channelsFirst"?outShape=[batchSize,outChannels,outDepth,outHeight,outWidth]:dataFormat==="channelsLast"&&(outShape=[batchSize,outDepth,outHeight,outWidth,outChannels]),{batchSize,dataFormat,inDepth,inHeight,inWidth,inChannels,outDepth,outHeight,outWidth,outChannels,padInfo,strideDepth,strideHeight,strideWidth,filterDepth,filterHeight,filterWidth,effectiveFilterDepth,effectiveFilterHeight,effectiveFilterWidth,dilationDepth,dilationHeight,dilationWidth,inShape,outShape,filterShape}}function computeOutputShape2D(inShape,fieldSize,stride,zeroPad,roundingMode){zeroPad==null&&(zeroPad=computeDefaultPad(inShape,fieldSize,stride));let inputRows=inShape[0],inputCols=inShape[1],outputRows=round((inputRows-fieldSize+2*zeroPad)/stride+1,roundingMode),outputCols=round((inputCols-fieldSize+2*zeroPad)/stride+1,roundingMode);return[outputRows,outputCols]}function computeOutputShape4D(inShape,fieldSize,outChannels,stride,zeroPad,roundingMode){zeroPad==null&&(zeroPad=computeDefaultPad(inShape,fieldSize,stride));let inputDepth=inShape[0],inputRows=inShape[1],inputCols=inShape[2],outputDepths=round((inputDepth-fieldSize+2*zeroPad)/stride+1,roundingMode),outputRows=round((inputRows-fieldSize+2*zeroPad)/stride+1,roundingMode),outputCols=round((inputCols-fieldSize+2*zeroPad)/stride+1,roundingMode);return[outputDepths,outputRows,outputCols,outChannels]}function computeDefaultPad(inputShape,fieldSize,stride,dilation=1){let effectiveFieldSize=getEffectiveFilterSize(fieldSize,dilation);return Math.floor((inputShape[0]*(stride-1)-stride+effectiveFieldSize)/2)}function parseTupleParam(param){return typeof param=="number"?[param,param,param]:param.length===2?[param[0],param[1],1]:param}function parse3TupleParam(param){return typeof param=="number"?[param,param,param]:param}function getEffectiveFilterSize(filterSize,dilation){return dilation<=1?filterSize:filterSize+(filterSize-1)*(dilation-1)}function getPadAndOutInfo(pad3,inHeight,inWidth,strideHeight,strideWidth,filterHeight,filterWidth,roundingMode,dataFormat){let padInfo,outHeight,outWidth;if(typeof pad3=="number"){padInfo={top:pad3,bottom:pad3,left:pad3,right:pad3,type:pad3===0?"VALID":"NUMBER"};let outShape=computeOutputShape2D([inHeight,inWidth],filterHeight,strideHeight,pad3,roundingMode);outHeight=outShape[0],outWidth=outShape[1]}else if(pad3==="same"){outHeight=Math.ceil(inHeight/strideHeight),outWidth=Math.ceil(inWidth/strideWidth);let padAlongHeight=Math.max(0,(outHeight-1)*strideHeight+filterHeight-inHeight),padAlongWidth=Math.max(0,(outWidth-1)*strideWidth+filterWidth-inWidth),top=Math.floor(padAlongHeight/2),bottom=padAlongHeight-top,left=Math.floor(padAlongWidth/2),right=padAlongWidth-left;padInfo={top,bottom,left,right,type:"SAME"}}else if(pad3==="valid")padInfo={top:0,bottom:0,left:0,right:0,type:"VALID"},outHeight=Math.ceil((inHeight-filterHeight+1)/strideHeight),outWidth=Math.ceil((inWidth-filterWidth+1)/strideWidth);else if(typeof pad3=="object"){let top=dataFormat==="channelsLast"?pad3[1][0]:pad3[2][0],bottom=dataFormat==="channelsLast"?pad3[1][1]:pad3[2][1],left=dataFormat==="channelsLast"?pad3[2][0]:pad3[3][0],right=dataFormat==="channelsLast"?pad3[2][1]:pad3[3][1];padInfo={top,bottom,left,right,type:top===0&&bottom===0&&left===0&&right===0?"VALID":"EXPLICIT"},outHeight=round((inHeight-filterHeight+top+bottom)/strideHeight+1,roundingMode),outWidth=round((inWidth-filterWidth+left+right)/strideWidth+1,roundingMode)}else throw Error(`Unknown padding parameter: ${pad3}`);return{padInfo,outHeight,outWidth}}function get3DPadAndOutInfo(pad3,inDepth,inHeight,inWidth,strideDepth,strideHeight,strideWidth,filterDepth,filterHeight,filterWidth,roundingMode){let padInfo,outDepth,outHeight,outWidth;if(typeof pad3=="number"){padInfo={top:pad3,bottom:pad3,left:pad3,right:pad3,front:pad3,back:pad3,type:pad3===0?"VALID":"NUMBER"};let outShape=computeOutputShape4D([inDepth,inHeight,inWidth,1],filterDepth,1,strideDepth,pad3,roundingMode);outDepth=outShape[0],outHeight=outShape[1],outWidth=outShape[2]}else if(pad3==="same"){outDepth=Math.ceil(inDepth/strideDepth),outHeight=Math.ceil(inHeight/strideHeight),outWidth=Math.ceil(inWidth/strideWidth);let padAlongDepth=(outDepth-1)*strideDepth+filterDepth-inDepth,padAlongHeight=(outHeight-1)*strideHeight+filterHeight-inHeight,padAlongWidth=(outWidth-1)*strideWidth+filterWidth-inWidth,front=Math.floor(padAlongDepth/2),back=padAlongDepth-front,top=Math.floor(padAlongHeight/2),bottom=padAlongHeight-top,left=Math.floor(padAlongWidth/2),right=padAlongWidth-left;padInfo={top,bottom,left,right,front,back,type:"SAME"}}else if(pad3==="valid")padInfo={top:0,bottom:0,left:0,right:0,front:0,back:0,type:"VALID"},outDepth=Math.ceil((inDepth-filterDepth+1)/strideDepth),outHeight=Math.ceil((inHeight-filterHeight+1)/strideHeight),outWidth=Math.ceil((inWidth-filterWidth+1)/strideWidth);else throw Error(`Unknown padding parameter: ${pad3}`);return{padInfo,outDepth,outHeight,outWidth}}function round(value,roundingMode){if(!roundingMode)return Math.trunc(value);switch(roundingMode){case"round":return Math.round(value);case"ceil":return Math.ceil(value);case"floor":return Math.floor(value);default:throw new Error(`Unknown roundingMode ${roundingMode}`)}}function tupleValuesAreOne(param){let[dimA,dimB,dimC]=parseTupleParam(param);return dimA===1&&dimB===1&&dimC===1}function eitherStridesOrDilationsAreOne(strides,dilations){return tupleValuesAreOne(strides)||tupleValuesAreOne(dilations)}function convertConv2DDataFormat(dataFormat){if(dataFormat==="NHWC")return"channelsLast";if(dataFormat==="NCHW")return"channelsFirst";throw new Error(`Unknown dataFormat ${dataFormat}`)}function reshape_(x,shape){let inputs={x:convertToTensor(x,"x","reshape","string_or_numeric")},attrs={shape};return ENGINE.runKernel(Reshape,inputs,attrs)}var reshape=op({reshape_});function avgPool_(x,filterSize,strides,pad3,dimRoundingMode){let $x=convertToTensor(x,"x","avgPool","float32"),dilations=1;assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in avgPool: x must be rank 4 but got rank ${x4D.rank}.`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in avgPool: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let inputs={x:x4D},attrs={filterSize,strides,pad:pad3,dimRoundingMode},res=ENGINE.runKernel(AvgPool,inputs,attrs);return res=cast(res,$x.dtype),reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var avgPool=op({avgPool_});function avgPool3d_(x,filterSize,strides,pad3,dimRoundingMode,dataFormat="NDHWC",dilations){dilations==null?dilations=[1,1,1]:deprecationWarn("dilations is deprecated, this field will be gone in v3.0.0.");let $x=convertToTensor(x,"x","avgPool3d","float32"),x5D=$x,reshapedTo5D=!1;$x.rank===4&&(reshapedTo5D=!0,x5D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2],$x.shape[3]])),assert(x5D.rank===5,()=>`Error in avgPool3d: x must be rank 5 but got rank ${x5D.rank}.`),assert(dataFormat==="NDHWC",()=>`Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of ${dataFormat}`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool3d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in avgPool3d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let inputs={x:x5D},attrs={filterSize,strides,pad:pad3,dimRoundingMode,dataFormat,dilations},res=ENGINE.runKernel(AvgPool3D,inputs,attrs);return res=cast(res,x5D.dtype),reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var avgPool3d=op({avgPool3d_});function concat_(tensors,axis=0){assert(tensors.length>=1,()=>"Pass at least one tensor to concat");let $tensors=convertToTensorArray(tensors,"tensors","concat","string_or_numeric");if($tensors[0].dtype==="complex64"&&$tensors.forEach(tensor2=>{if(tensor2.dtype!=="complex64")throw new Error(`Cannot concatenate complex64 tensors with a tensor - with dtype ${tensor2.dtype}. `)}),$tensors.length===1)return clone($tensors[0]);let inputs=$tensors,attr={axis};return ENGINE.runKernel(Concat,inputs,attr)}var concat=op({concat_});function sigmoid_(x){let inputs={x:convertToTensor(x,"x","sigmoid")};return ENGINE.runKernel(Sigmoid,inputs)}var sigmoid=op({sigmoid_});function slice_(x,begin,size){let $x=convertToTensor(x,"x","slice","string_or_numeric");if($x.rank===0)throw new Error("Slicing scalar is not possible");let inputs={x:$x},attrs={begin,size};return ENGINE.runKernel(Slice,inputs,attrs)}var slice=op({slice_});function tanh_(x){let inputs={x:convertToTensor(x,"x","tanh")};return ENGINE.runKernel(Tanh,inputs)}var tanh2=op({tanh_});function basicLSTMCell_(forgetBias,lstmKernel,lstmBias,data,c,h){let $forgetBias=convertToTensor(forgetBias,"forgetBias","basicLSTMCell"),$lstmKernel=convertToTensor(lstmKernel,"lstmKernel","basicLSTMCell"),$lstmBias=convertToTensor(lstmBias,"lstmBias","basicLSTMCell"),$data=convertToTensor(data,"data","basicLSTMCell"),$c=convertToTensor(c,"c","basicLSTMCell"),$h=convertToTensor(h,"h","basicLSTMCell"),combined=concat([$data,$h],1),weighted=matMul(combined,$lstmKernel),res=add2(weighted,$lstmBias),batchSize=res.shape[0],sliceCols=res.shape[1]/4,sliceSize=[batchSize,sliceCols],i=slice(res,[0,0],sliceSize),j=slice(res,[0,sliceCols],sliceSize),f=slice(res,[0,sliceCols*2],sliceSize),o=slice(res,[0,sliceCols*3],sliceSize),newC=add2(mul(sigmoid(i),tanh2(j)),mul($c,sigmoid(add2($forgetBias,f)))),newH=mul(tanh2(newC),sigmoid(o));return[newC,newH]}var basicLSTMCell=op({basicLSTMCell_});function batchToSpaceND_(x,blockShape,crops){let $x=convertToTensor(x,"x","batchToSpaceND"),prod5=blockShape.reduce((a,b)=>a*b);assert($x.rank>=1+blockShape.length,()=>`input rank is ${$x.rank} but should be > than blockShape.length ${blockShape.length}`),assert(crops.length===blockShape.length,()=>`crops.length is ${crops.length} but should be equal to blockShape.length ${blockShape.length}`),assert($x.shape[0]%prod5==0,()=>`input tensor batch is ${$x.shape[0]} but is not divisible by the product of the elements of blockShape ${blockShape.join(" * ")} === ${prod5}`);let inputs={x:$x},attrs={blockShape,crops};return ENGINE.runKernel(BatchToSpaceND,inputs,attrs)}var batchToSpaceND=op({batchToSpaceND_});function xAs4D(x){let x4D;return x.rank===0||x.rank===1?x4D=reshape(x,[1,1,1,x.size]):x.rank===2?x4D=reshape(x,[1,1,x.shape[0],x.shape[1]]):x.rank===3?x4D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]):x4D=x,x4D}function batchNorm_(x,mean4,variance,offset,scale22,varianceEpsilon){varianceEpsilon==null&&(varianceEpsilon=.001);let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean4,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale22!=null&&($scale=convertToTensor(scale22,"scale","batchNorm"));let $offset;offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($mean.rank===$variance.rank,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),assert($offset==null||$mean.rank===$offset.rank,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),assert($scale==null||$mean.rank===$scale.rank,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let inputs={x:xAs4D($x),scale:$scale,offset:$offset,mean:$mean,variance:$variance},attrs={varianceEpsilon},res=ENGINE.runKernel(FusedBatchNorm,inputs,attrs);return reshape(res,$x.shape)}var batchNorm=op({batchNorm_});function batchNorm2d_(x,mean4,variance,offset,scale22,varianceEpsilon){let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean4,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale22!=null&&($scale=convertToTensor(scale22,"scale","batchNorm"));let $offset;return offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($x.rank===2,()=>`Error in batchNorm2D: x must be rank 2 but got rank ${$x.rank}.`),assert($mean.rank===2||$mean.rank===1,()=>`Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank ${$mean.rank}.`),assert($variance.rank===2||$variance.rank===1,()=>`Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank ${$variance.rank}.`),$scale!=null&&assert($scale.rank===2||$scale.rank===1,()=>`Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank ${$scale.rank}.`),$offset!=null&&assert($offset.rank===2||$offset.rank===1,()=>`Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank ${$offset.rank}.`),batchNorm($x,$mean,$variance,$offset,$scale,varianceEpsilon)}var batchNorm2d=op({batchNorm2d_});function batchNorm3d_(x,mean4,variance,offset,scale22,varianceEpsilon){let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean4,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale22!=null&&($scale=convertToTensor(scale22,"scale","batchNorm"));let $offset;return offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($x.rank===3,()=>`Error in batchNorm3D: x must be rank 3 but got rank ${$x.rank}.`),assert($mean.rank===3||$mean.rank===1,()=>`Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank ${$mean.rank}.`),assert($variance.rank===3||$variance.rank===1,()=>`Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank ${$variance.rank}.`),$scale!=null&&assert($scale.rank===3||$scale.rank===1,()=>`Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank ${$scale.rank}.`),$offset!=null&&assert($offset.rank===3||$offset.rank===1,()=>`Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank ${$offset.rank}.`),batchNorm($x,$mean,$variance,$offset,$scale,varianceEpsilon)}var batchNorm3d=op({batchNorm3d_});function batchNorm4d_(x,mean4,variance,offset,scale22,varianceEpsilon){let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean4,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale22!=null&&($scale=convertToTensor(scale22,"scale","batchNorm"));let $offset;return offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($x.rank===4,()=>`Error in batchNorm4D: x must be rank 4 but got rank ${$x.rank}.`),assert($mean.rank===4||$mean.rank===1,()=>`Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank ${$mean.rank}.`),assert($variance.rank===4||$variance.rank===1,()=>`Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank ${$variance.rank}.`),$scale!=null&&assert($scale.rank===4||$scale.rank===1,()=>`Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank ${$scale.rank}.`),$offset!=null&&assert($offset.rank===4||$offset.rank===1,()=>`Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank ${$offset.rank}.`),batchNorm($x,$mean,$variance,$offset,$scale,varianceEpsilon)}var batchNorm4d=op({batchNorm4d_});function bincount_(x,weights,size){let $x=convertToTensor(x,"x","bincount"),$weights=convertToTensor(weights,"weights","bincount");assert($x.dtype==="int32",()=>`Error in bincount: input dtype must be int32, but got ${$x.dtype}`),assert(size>=0,()=>`size must be non-negative, but got ${size}.`),assert($weights.size===$x.size||$weights.size===0,()=>`Error in bincount: weights must have the same size as input or0-length, but got input shape: ${$x.shape}, weights shape: ${$weights.shape}.`);let inputs={x:$x,weights:$weights},attrs={size};return ENGINE.runKernel(Bincount,inputs,attrs)}var bincount=op({bincount_});function broadcastTo_(x,shape){let input2=convertToTensor(x,"broadcastTo","x"),xShape=input2.shape;if(shape.some(d=>!(d>0)||d%1!=0))throw new Error(`broadcastTo(): Invalid broadcast shape [${shape}].`);if(shape.lengthinput2.rank){let newShape=input2.shape.slice();for(;newShape.length=0;i--)if(inputShape[i]===shape[i])reps[i]=1;else if(input2.shape[i]!==1)throw new Error(`broadcastTo(): [${xShape}] cannot be broadcast to [${shape}].`);if(reps.map((n,i)=>n>1?i:-1).filter(i=>i>=0).length===0)return clone(input2);let inputs={x:input2},attrs={reps};return ENGINE.runKernel(Tile,inputs,attrs)}var broadcastTo=op({broadcastTo_});function ceil_(x){let inputs={x:convertToTensor(x,"x","ceil")};return ENGINE.runKernel(Ceil,inputs)}var ceil=op({ceil_});function clipByValue_(x,clipValueMin,clipValueMax){let $x=convertToTensor(x,"x","clipByValue");assert(clipValueMin<=clipValueMax,()=>`Error in clip: min (${clipValueMin}) must be less than or equal to max (${clipValueMax}).`);let inputs={x:$x},attrs={clipValueMin,clipValueMax};return ENGINE.runKernel(ClipByValue,inputs,attrs)}var clipByValue=op({clipByValue_});function concat1d_(tensors){return concat(tensors,0)}var concat1d=op({concat1d_});function concat2d_(tensors,axis){return concat(tensors,axis)}var concat2d=op({concat2d_});function concat3d_(tensors,axis){return concat(tensors,axis)}var concat3d=op({concat3d_});function concat4d_(tensors,axis){return concat(tensors,axis)}var concat4d=op({concat4d_});function conv2d_(x,filter,strides,pad3,dataFormat="NHWC",dilations=[1,1],dimRoundingMode){let $x=convertToTensor(x,"x","conv2d"),$filter=convertToTensor(filter,"filter","conv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in conv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in conv2d: filter must be rank 4, but got rank ${$filter.rank}.`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in conv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let inDepth=dataFormat==="NHWC"?x4D.shape[3]:x4D.shape[1];assert(inDepth===$filter.shape[2],()=>`Error in conv2d: depth of input (${inDepth}) must match input depth for filter ${$filter.shape[2]}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let inputs={x:x4D,filter:$filter},attrs={strides,pad:pad3,dataFormat,dilations,dimRoundingMode},res=ENGINE.runKernel(Conv2D,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var conv2d=op({conv2d_});function conv1d_(x,filter,stride,pad3,dataFormat="NWC",dilation=1,dimRoundingMode){let $x=convertToTensor(x,"x","conv1d"),$filter=convertToTensor(filter,"filter","conv1d"),x3D=$x,reshapedTo3D=!1;$x.rank===2&&(reshapedTo3D=!0,x3D=reshape($x,[1,$x.shape[0],$x.shape[1]])),assert(x3D.rank===3,()=>`Error in conv1d: input must be rank 3, but got rank ${x3D.rank}.`),assert($filter.rank===3,()=>`Error in conv1d: filter must be rank 3, but got rank ${$filter.rank}.`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in conv1d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`),assert(x3D.shape[2]===$filter.shape[1],()=>`Error in conv1d: depth of input (${x3D.shape[2]}) must match input depth for filter ${$filter.shape[1]}.`),assert(eitherStridesOrDilationsAreOne(stride,dilation),()=>`Error in conv1D: Either stride or dilation must be 1. Got stride ${stride} and dilation '${dilation}'`),assert(dataFormat==="NWC",()=>`Error in conv1d: got dataFormat of ${dataFormat} but only NWC is currently supported.`);let filter4D=reshape($filter,[1,$filter.shape[0],$filter.shape[1],$filter.shape[2]]),input4D=reshape(x3D,[x3D.shape[0],1,x3D.shape[1],x3D.shape[2]]),res=conv2d(input4D,filter4D,[1,stride],pad3,"NHWC",[1,dilation],dimRoundingMode);return reshapedTo3D?reshape(res,[res.shape[2],res.shape[3]]):reshape(res,[res.shape[0],res.shape[2],res.shape[3]])}var conv1d=op({conv1d_});function conv2DBackpropInput_(xShape,dy,filter,strides,pad3,dataFormat="NHWC",dimRoundingMode){assert(xShape.length===dy.rank,()=>`Length of inShape (${xShape.length}) and rank of dy (${dy.rank}) must match`);let xShape4D=xShape,dy4D=dy,reshapedTo4D=!1;dy.rank===3&&(reshapedTo4D=!0,dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]]),xShape4D=[1,xShape[0],xShape[1],xShape[2]]),assert(xShape4D.length===4,()=>`Error in conv2dDerInput: inShape must be length 4, but got length ${xShape4D.length}.`),assert(dy4D.rank===4,()=>`Error in conv2dDerInput: dy must be rank 4, but got rank ${dy4D.rank}`),assert(filter.rank===4,()=>`Error in conv2dDerInput: filter must be rank 4, but got rank ${filter.rank}`);let inDepth=dataFormat==="NHWC"?xShape4D[3]:xShape4D[1],outDepth=dataFormat==="NHWC"?dy4D.shape[3]:dy4D.shape[1];assert(inDepth===filter.shape[2],()=>`Error in conv2dDerInput: depth of input (${inDepth}) must match input depth for filter ${filter.shape[2]}.`),assert(outDepth===filter.shape[3],()=>`Error in conv2dDerInput: depth of output (${outDepth}) must match output depth for filter ${filter.shape[3]}.`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let inputs={dy:dy4D,filter},attrs={strides,pad:pad3,dataFormat,dimRoundingMode,inputShape:xShape4D},res=ENGINE.runKernel(Conv2DBackpropInput,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var conv2DBackpropInput=op({conv2DBackpropInput_});function conv2dTranspose_(x,filter,outputShape,strides,pad3,dimRoundingMode){let $x=convertToTensor(x,"x","conv2dTranspose"),$filter=convertToTensor(filter,"filter","conv2dTranspose");return conv2DBackpropInput(outputShape,$x,$filter,strides,pad3,"NHWC",dimRoundingMode)}var conv2dTranspose=op({conv2dTranspose_});function conv3d_(x,filter,strides,pad3,dataFormat="NDHWC",dilations=[1,1,1]){let $x=convertToTensor(x,"x","conv3d"),$filter=convertToTensor(filter,"filter","conv3d"),x5D=$x,reshapedTo5D=!1;$x.rank===4&&(reshapedTo5D=!0,x5D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2],$x.shape[3]])),assert(x5D.rank===5,()=>`Error in conv3d: input must be rank 5, but got rank ${x5D.rank}.`),assert($filter.rank===5,()=>`Error in conv3d: filter must be rank 5, but got rank ${$filter.rank}.`),assert(x5D.shape[4]===$filter.shape[3],()=>`Error in conv3d: depth of input (${x5D.shape[4]}) must match input depth for filter ${$filter.shape[3]}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in conv3D: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),assert(dataFormat==="NDHWC",()=>`Error in conv3d: got dataFormat of ${dataFormat} but only NDHWC is currently supported.`);let inputs={x:x5D,filter:$filter},attrs={strides,pad:pad3,dataFormat,dilations},res=ENGINE.runKernel(Conv3D,inputs,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var conv3d=op({conv3d_});function conv3DBackpropInput_(xShape,dy,filter,strides,pad3){assert(xShape.length===dy.rank,()=>`Length of inShape (${xShape.length}) and rank of dy (${dy.rank}) must match`);let xShape5D=xShape,dy5D=dy,reshapedTo5D=!1;dy.rank===4&&(reshapedTo5D=!0,dy5D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2],dy.shape[3]]),xShape5D=[1,xShape[0],xShape[1],xShape[2],xShape[3]]);let inDepth=xShape5D[4],outDepth=dy5D.shape[4];assert(xShape5D.length===5,()=>`Error in conv3dDerInput: inShape must be length 5, but got length ${xShape5D.length}.`),assert(dy5D.rank===5,()=>`Error in conv3dDerInput: dy must be rank 5, but got rank ${dy5D.rank}`),assert(filter.rank===5,()=>`Error in conv3dDerInput: filter must be rank 5, but got rank ${filter.rank}`),assert(inDepth===filter.shape[3],()=>`Error in conv3dDerInput: depth of input (${inDepth}) must match input depth for filter ${filter.shape[3]}.`),assert(outDepth===filter.shape[4],()=>`Error in conv3dDerInput: depth of output (${outDepth}) must match output depth for filter ${filter.shape[4]}.`);let inputs={dy:dy5D,filter},attrs={pad:pad3,strides,inputShape:xShape5D},res=ENGINE.runKernel(Conv3DBackpropInputV2,inputs,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var conv3DBackpropInput=op({conv3DBackpropInput_});function conv3dTranspose_(x,filter,outputShape,strides,pad3){let $x=convertToTensor(x,"x","conv3dTranspose"),$filter=convertToTensor(filter,"filter","conv3dTranspose");return conv3DBackpropInput(outputShape,$x,$filter,strides,pad3)}var conv3dTranspose=op({conv3dTranspose_});function cos_(x){let inputs={x:convertToTensor(x,"x","cos")};return ENGINE.runKernel(Cos,inputs)}var cos=op({cos_});function cosh_(x){let inputs={x:convertToTensor(x,"x","cosh")};return ENGINE.runKernel(Cosh,inputs)}var cosh=op({cosh_});function cumsum_(x,axis=0,exclusive=!1,reverse5=!1){let inputs={x:convertToTensor(x,"x","cumsum")},attrs={axis,exclusive,reverse:reverse5};return ENGINE.runKernel(Cumsum,inputs,attrs)}var cumsum=op({cumsum_});function denseBincount_(x,weights,size,binaryOutput=!1){let $x=convertToTensor(x,"x","denseBincount"),$weights=convertToTensor(weights,"weights","denseBincount");assert($x.dtype==="int32",()=>`Error in denseBincount: input dtype must be int32, but got ${$x.dtype}`),assert($x.rank<=2,()=>`Error in denseBincount: input must be at most rank 2, but got rank ${$x.rank}.`),assert(size>=0,()=>`size must be non-negative, but got ${size}.`),assert($weights.size===$x.size||$weights.size===0,()=>`Error in denseBincount: weights must have the same shape as x or 0-length, but got x shape: ${$x.shape}, weights shape: ${$weights.shape}.`);let inputs={x:$x,weights:$weights},attrs={size,binaryOutput};return ENGINE.runKernel(DenseBincount,inputs,attrs)}var denseBincount=op({denseBincount_});function depthToSpace_(x,blockSize,dataFormat="NHWC"){let $x=convertToTensor(x,"x","depthToSpace"),inputHeight=dataFormat==="NHWC"?$x.shape[1]:$x.shape[2],inputWidth=dataFormat==="NHWC"?$x.shape[2]:$x.shape[3],inputDepth=dataFormat==="NHWC"?$x.shape[3]:$x.shape[1];assert(inputHeight*blockSize>=0,()=>`Negative dimension size caused by overflow when multiplying - ${inputHeight} and ${blockSize} for depthToSpace with input shape - ${$x.shape}`),assert(inputWidth*blockSize>=0,()=>`Negative dimension size caused by overflow when multiplying - ${inputWidth} and ${blockSize} for depthToSpace with input shape - ${$x.shape}`),assert(inputDepth%(blockSize*blockSize)==0,()=>`Dimension size must be evenly divisible by ${blockSize*blockSize} but is ${inputDepth} for depthToSpace with input shape ${$x.shape}`);let inputs={x:$x},attrs={blockSize,dataFormat};return ENGINE.runKernel(DepthToSpace,inputs,attrs)}var depthToSpace=op({depthToSpace_});function depthwiseConv2d_(x,filter,strides,pad3,dataFormat="NHWC",dilations=[1,1],dimRoundingMode){let $x=convertToTensor(x,"x","depthwiseConv2d"),$filter=convertToTensor(filter,"filter","depthwiseConv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in depthwiseConv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in depthwiseConv2d: filter must be rank 4, but got rank ${$filter.rank}.`),assert(x4D.shape[3]===$filter.shape[2],()=>`Error in depthwiseConv2d: number of input channels (${x4D.shape[3]}) must match the inChannels dimension in filter ${$filter.shape[2]}.`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let inputs={x:x4D,filter:$filter},attrs={strides,pad:pad3,dataFormat,dilations,dimRoundingMode},res=ENGINE.runKernel(DepthwiseConv2dNative,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var depthwiseConv2d=op({depthwiseConv2d_});function diag_(x){let inputs={x:convertToTensor(x,"x","diag")};return ENGINE.runKernel(Diag,inputs)}var diag=op({diag_});function dilation2d_(x,filter,strides,pad3,dilations=[1,1],dataFormat="NHWC"){let $x=convertToTensor(x,"x","dilation2d"),$filter=convertToTensor(filter,"filter","dilation2d");assert($x.rank===3||$x.rank===4,()=>`Error in dilation2d: input must be rank 3 or 4, but got rank ${$x.rank}.`),assert($filter.rank===3,()=>`Error in dilation2d: filter must be rank 3, but got rank ${$filter.rank}.`),assert(dataFormat==="NHWC",()=>`Error in dilation2d: Only NHWC is currently supported, but got dataFormat of ${dataFormat}`);let x4D=$x,reshapedTo4D=!1;$x.rank===3&&(x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]]),reshapedTo4D=!0);let inputs={x:x4D,filter:$filter},attrs={strides,pad:pad3,dilations},res=ENGINE.runKernel(Dilation2D,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var dilation2d=op({dilation2d_});function getBroadcastDims(inShape,outShape){let inRank=inShape.length,dims=[];for(let i=0;i1&&a===1&&dims.unshift(dim)}return dims}function getReductionAxes(inShape,outShape){let result=[];for(let i=0;i1)&&result.unshift(outAxis)}return result}function assertAndGetBroadcastShape(shapeA,shapeB){let result=[],l=Math.max(shapeA.length,shapeB.length);for(let i=0;i"The first dimension of `a` must match the size of `condition`."),$condition.rank!==1&&assertShapesMatch($condition.shape,$broadcastedB.shape,"Error in where: ");let inputs={condition:$condition,t:$broadcastedA,e:$broadcastedB};return ENGINE.runKernel(Select,inputs)}var where=op({where_});function zerosLike_(x){let inputs={x:convertToTensor(x,"x","zerosLike")};return ENGINE.runKernel(ZerosLike,inputs)}var zerosLike=op({zerosLike_});function divNoNan_(a,b){let $a=convertToTensor(a,"a","div"),$b=convertToTensor(b,"b","div");[$a,$b]=makeTypesMatch($a,$b);let divResult=div($a,$b),zeros4=zerosLike(divResult),bEqualsZero=equal($b,zeros4);return where(bEqualsZero,zeros4,divResult)}var divNoNan=op({divNoNan_});function dot_(t1,t2){let $t1=convertToTensor(t1,"t1","dot"),$t2=convertToTensor(t2,"t2","dot");assert(($t1.rank===1||$t1.rank===2)&&($t2.rank===1||$t2.rank===2),()=>`Error in dot: inputs must all be rank 1 or 2, but got ranks ${$t1.rank} and ${$t2.rank}.`);let t1Inner=$t1.rank===1?$t1.size:$t1.shape[1],t2Inner=$t2.rank===1?$t2.size:$t2.shape[0];if(assert(t1Inner===t2Inner,()=>`Error in dot: inner dimensions of inputs must match, but got ${t1Inner} and ${t2Inner}.`),$t1.rank===1&&$t2.rank===1){let t12D=reshape($t1,[1,-1]),t22D=reshape($t2,[-1,1]),t1t2=matMul(t12D,t22D);return reshape(t1t2,[])}else if($t1.rank===1&&$t2.rank===2){let t12D=reshape($t1,[1,-1]),t22D=reshape($t2,[$t2.shape[0],$t2.shape[1]]),t1t2=matMul(t12D,t22D);return reshape(t1t2,[t1t2.size])}else if($t1.rank===2&&$t2.rank===1){let t22D=reshape($t2,[-1,1]),t1t2=matMul($t1,t22D);return reshape(t1t2,[t1t2.size])}else{let t22D=reshape($t2,[$t2.shape[0],$t2.shape[1]]);return matMul($t1,t22D)}}var dot=op({dot_});function elu_(x){let inputs={x:convertToTensor(x,"x","elu")};return ENGINE.runKernel(Elu,inputs)}var elu=op({elu_});function erf_(x){let $x=convertToTensor(x,"x","erf");assert($x.dtype==="int32"||$x.dtype==="float32",()=>"Input dtype must be `int32` or `float32`."),$x.dtype==="int32"&&($x=cast($x,"float32"));let inputs={x:$x};return ENGINE.runKernel(Erf,inputs)}var erf=op({erf_});function exp_(x){let inputs={x:convertToTensor(x,"x","exp")};return ENGINE.runKernel(Exp,inputs)}var exp=op({exp_});function expandDims_(x,axis=0){let $x=convertToTensor(x,"x","expandDims","string_or_numeric");assert(axis<=$x.rank,()=>"Axis must be <= rank of the tensor");let inputs={input:$x},attrs={dim:axis};return ENGINE.runKernel(ExpandDims,inputs,attrs)}var expandDims=op({expandDims_});function expm1_(x){let inputs={x:convertToTensor(x,"x","expm1")};return ENGINE.runKernel(Expm1,inputs)}var expm1=op({expm1_});function tile_(x,reps){let $x=convertToTensor(x,"x","tile","string_or_numeric");assert($x.rank===reps.length,()=>`Error in transpose: rank of input ${$x.rank} must match length of reps ${reps}.`);let inputs={x:$x},attrs={reps};return ENGINE.runKernel(Tile,inputs,attrs)}var tile=op({tile_});function eye_(numRows,numColumns,batchShape,dtype="float32"){numColumns==null&&(numColumns=numRows);let buff=buffer([numRows,numColumns],dtype),n=numRows<=numColumns?numRows:numColumns;for(let i=0;i`Error in localResponseNormalization: x must be rank 3 or 4 but got - rank ${$x.rank}.`),assert(isInt(depthRadius),()=>`Error in localResponseNormalization: depthRadius must be an integer but got depthRadius ${depthRadius}.`);let x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]]));let inputs={x:x4D},attrs={depthRadius,bias,alpha,beta},res=ENGINE.runKernel(LRN,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var localResponseNormalization=op({localResponseNormalization_});function log_(x){let inputs={x:convertToTensor(x,"x","log")};return ENGINE.runKernel(Log,inputs)}var log=op({log_});function log1p_(x){let inputs={x:convertToTensor(x,"x","log1p")};return ENGINE.runKernel(Log1p,inputs)}var log1p=op({log1p_});function grad(f){return assert(isFunction(f),()=>"The f passed in grad(f) must be a function"),(x,dy)=>{let $x=convertToTensor(x,"x","tf.grad","string_or_numeric"),$dy=dy!=null?convertToTensor(dy,"dy","tf.grad"):null;return ENGINE.tidy(()=>{let{value,grads:grads2}=ENGINE.gradients(()=>f($x),[$x],$dy);return $dy!=null&&assertShapesMatch(value.shape,$dy.shape,"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)"),checkGrads(grads2),grads2[0]})}}function grads(f){return assert(isFunction(f),()=>"The f passed in grads(f) must be a function"),(args,dy)=>{assert(Array.isArray(args),()=>"The args passed in grads(f)(args) must be an array of `Tensor`s or `TensorLike`s");let $args=convertToTensorArray(args,"args","tf.grads","string_or_numeric"),$dy=dy!=null?convertToTensor(dy,"dy","tf.grads"):null;return ENGINE.tidy(()=>{let{value,grads:grads2}=ENGINE.gradients(()=>f(...$args),$args,$dy);return $dy!=null&&assertShapesMatch(value.shape,$dy.shape,"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),checkGrads(grads2),grads2})}}function valueAndGrad(f){return assert(isFunction(f),()=>"The f passed in valueAndGrad(f) must be a function"),(x,dy)=>{assert(x instanceof Tensor,()=>"The x passed in valueAndGrad(f)(x) must be a tensor"),assert(dy==null||dy instanceof Tensor,()=>"The dy passed in valueAndGrad(f)(x, dy) must be a tensor");let{grads:grads2,value}=ENGINE.gradients(()=>f(x),[x],dy);return checkGrads(grads2),{grad:grads2[0],value}}}function valueAndGrads(f){return assert(isFunction(f),()=>"The f passed in valueAndGrads(f) must be a function"),(args,dy)=>{assert(Array.isArray(args)&&args.every(arg=>arg instanceof Tensor),()=>"The args passed in valueAndGrads(f)(args) must be array of tensors"),assert(dy==null||dy instanceof Tensor,()=>"The dy passed in valueAndGrads(f)(args, dy) must be a tensor");let res=ENGINE.gradients(()=>f(...args),args,dy);return dy!=null&&assertShapesMatch(res.value.shape,dy.shape,"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),checkGrads(res.grads),res}}function variableGrads(f,varList){assert(isFunction(f),()=>"The f passed in variableGrads(f) must be a function"),assert(varList==null||Array.isArray(varList)&&varList.every(v=>v instanceof Variable),()=>"The varList passed in variableGrads(f, varList) must be an array of variables");let specifiedVarList=varList!=null;if(!specifiedVarList){varList=[];for(let varName in ENGINE.registeredVariables)varList.push(ENGINE.registeredVariables[varName])}let specifiedNonTrainable=specifiedVarList?varList.filter(variable2=>!variable2.trainable):null,originalVarCount=varList.length;varList=varList.filter(variable2=>variable2.trainable),assert(varList.length>0,()=>`variableGrads() expects at least one of the input variables to be trainable, but none of the ${originalVarCount} variables is trainable.`);let allowNoGradients=!0,{value,grads:grads2}=ENGINE.gradients(f,varList,null,allowNoGradients);assert(grads2.some(g=>g!=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()."),assert(value.rank===0,()=>`The f passed in variableGrads(f) must return a scalar, but it returned a rank-${value.rank} tensor`);let namedGrads={};return varList.forEach((v,i)=>{grads2[i]!=null&&(namedGrads[v.name]=grads2[i])}),specifiedNonTrainable!=null&&specifiedNonTrainable.forEach(v=>namedGrads[v.name]=null),{value,grads:namedGrads}}function customGrad(f){return ENGINE.customGrad(f)}function checkGrads(grads2){if(grads2.filter(g=>g==null).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.`)}function neg_(x){let inputs={x:convertToTensor(x,"x","neg")};return ENGINE.runKernel(Neg,inputs)}var neg=op({neg_});function softplus_(x){let inputs={x:convertToTensor(x,"x","softplus")};return ENGINE.runKernel(Softplus,inputs)}var softplus=op({softplus_});function logSigmoid_(x){let $x=convertToTensor(x,"x","logSigmoid");return customGrad(x2=>({value:neg(softplus(neg(x2))),gradFunc:dy=>mul(dy,sigmoid(neg(x2)))}))($x)}var logSigmoid=op({logSigmoid_});function max_(x,axis=null,keepDims=!1){let inputs={x:convertToTensor(x,"x","max")},attrs={reductionIndices:axis,keepDims};return ENGINE.runKernel(Max,inputs,attrs)}var max=op({max_});function sub_(a,b){let $a=convertToTensor(a,"a","sub"),$b=convertToTensor(b,"b","sub");[$a,$b]=makeTypesMatch($a,$b);let inputs={a:$a,b:$b};return ENGINE.runKernel(Sub,inputs)}var sub=op({sub_});function sum_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","sum");$x.dtype==="bool"&&($x=cast($x,"int32"));let inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernel(Sum,inputs,attrs)}var sum2=op({sum_});function logSoftmax_(logits,axis=-1){let $logits=convertToTensor(logits,"logits","logSoftmax");if(axis===-1&&(axis=$logits.rank-1),axis!==$logits.rank-1)throw Error(`Log Softmax along a non-last dimension is not yet supported. Logits was rank ${$logits.rank} and axis was ${axis}`);return customGrad((logits2,save)=>{let keepDims=!0,xMax=max(logits2,axis,!0),shifted=sub(logits2,xMax),value=sub(cast(shifted,"float32"),log(sum2(exp(shifted),axis,keepDims)));return save([value]),{value,gradFunc:(dy,saved)=>{let[value2]=saved,keepDims2=!0,softmax6=exp(value2);return sub(dy,mul(sum2(dy,axis,keepDims2),softmax6))}}})($logits)}var logSoftmax=op({logSoftmax_});function axesAreInnerMostDims(axes,rank){for(let i=0;iaShape[dim]);return[outShape,reduceShape]}function expandShapeToKeepDim(shape,axes){let reduceSubShape=axes.map(x=>1);return combineLocations(shape,reduceSubShape,axes)}function assertAxesAreInnerMostDims(msg,axes,rank){assert(axesAreInnerMostDims(axes,rank),()=>`${msg} supports only inner-most axes for now. Got axes ${axes} and rank-${rank} input.`)}function getAxesPermutation(axes,rank){if(axesAreInnerMostDims(axes,rank))return null;let result=[];for(let i=0;iresult.push(axis)),result}function getUndoAxesPermutation(axes){return axes.map((axis,i)=>[i,axis]).sort((a,b)=>a[1]-b[1]).map(x=>x[0])}function getInnerMostAxes(numAxes,rank){let res=[];for(let i=rank-numAxes;i`Error in maxPool: input must be rank 4 but got rank ${x4D.rank}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in maxPool: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let inputs={x:x4D},attrs={filterSize,strides,pad:pad3,dimRoundingMode},res=ENGINE.runKernel(MaxPool,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var maxPool=op({maxPool_});function maxPool3d_(x,filterSize=[1,1,1],strides,pad3,dimRoundingMode,dataFormat="NDHWC",dilations){dilations==null?dilations=[1,1,1]:deprecationWarn("dilations is deprecated, this field will be gone in v3.0.0.");let $x=convertToTensor(x,"x","maxPool3d"),x5D=$x,reshapedTo5D=!1;$x.rank===4&&(reshapedTo5D=!0,x5D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2],$x.shape[3]])),assert(x5D.rank===5,()=>`Error in maxPool3d: x must be rank 5 but got rank ${x5D.rank}.`),assert(dataFormat==="NDHWC",()=>`Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of ${dataFormat}`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool3d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in maxPool3d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let inputs={x:x5D},attrs={filterSize,strides,pad:pad3,dimRoundingMode,dataFormat,dilations},res=ENGINE.runKernel(MaxPool3D,inputs,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var maxPool3d=op({maxPool3d_});function maxPoolWithArgmax_(x,filterSize,strides,pad3,includeBatchInIndex=!1){let inputs={x:convertToTensor(x,"x","maxPoolWithArgmax")},attrs={filterSize,strides,pad:pad3,includeBatchInIndex},result=ENGINE.runKernel(MaxPoolWithArgmax,inputs,attrs);return{result:result[0],indexes:result[1]}}var maxPoolWithArgmax=op({maxPoolWithArgmax_});function maximum_(a,b){let $a=convertToTensor(a,"a","maximum"),$b=convertToTensor(b,"b","maximum");[$a,$b]=makeTypesMatch($a,$b),$a.dtype==="bool"&&($a=cast($a,"int32"),$b=cast($b,"int32")),assertAndGetBroadcastShape($a.shape,$b.shape);let inputs={a:$a,b:$b};return ENGINE.runKernel(Maximum,inputs)}var maximum=op({maximum_});function mean_(x,axis=null,keepDims=!1){let inputs={x:convertToTensor(x,"x","mean")},attrs={axis,keepDims};return ENGINE.runKernel(Mean,inputs,attrs)}var mean=op({mean_});function min_(x,axis=null,keepDims=!1){let inputs={x:convertToTensor(x,"x","min")},attrs={axis,keepDims};return ENGINE.runKernel(Min,inputs,attrs)}var min=op({min_});function minimum_(a,b){let $a=convertToTensor(a,"a","minimum"),$b=convertToTensor(b,"b","minimum");[$a,$b]=makeTypesMatch($a,$b),$a.dtype==="bool"&&($a=cast($a,"int32"),$b=cast($b,"int32")),assertAndGetBroadcastShape($a.shape,$b.shape);let inputs={a:$a,b:$b};return ENGINE.runKernel(Minimum,inputs)}var minimum=op({minimum_});function mirrorPad_(x,paddings,mode){assert(mode==="reflect"||mode==="symmetric",()=>`Invalid mode. Mode must be either reflect or symmetric. Got ${mode}.`);let $x=convertToTensor(x,"x","mirrorPad");if($x.rank===0)throw new Error("mirrorPad(scalar) is not defined. Pass non-scalar to mirrorPad");assert(paddings.length===$x.rank,()=>`Padding doesn't match input. Must be ${$x.rank}. Got ${paddings.length}.`);let shapeOffset=mode==="reflect"?1:0;for(let i=0;i<$x.rank;i++)assert(paddings[i].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),assert(paddings[i][0]>=0&&paddings[i][0]<=$x.shape[i]-shapeOffset&&paddings[i][1]>=0&&paddings[i][1]<=$x.shape[i]-shapeOffset,()=>`Padding in dimension ${i} cannot be greater than or equal to ${$x.shape[i]-shapeOffset} or less than 0 for input of shape ${$x.shape}`);let attrs={paddings,mode},inputs={x:$x};return ENGINE.runKernel(MirrorPad,inputs,attrs)}var mirrorPad=op({mirrorPad_});function mod_(a,b){let $a=convertToTensor(a,"a","mod"),$b=convertToTensor(b,"b","mod");[$a,$b]=makeTypesMatch($a,$b);let inputs={a:$a,b:$b};return ENGINE.runKernel(Mod,inputs)}var mod=op({mod_});function square_(x){let $x=convertToTensor(x,"x","square"),attrs={};return ENGINE.runKernel("Square",{x:$x},attrs)}var square=op({square_});function moments_(x,axis=null,keepDims=!1){x=convertToTensor(x,"x","moments");let axes=parseAxisParam(axis,x.shape),xMean=mean(x,axes,keepDims),keepDimsShape=xMean.shape;keepDims||(keepDimsShape=expandShapeToKeepDim(xMean.shape,axes));let devSquared=square(sub(cast(x,"float32"),reshape(xMean,keepDimsShape))),variance=mean(devSquared,axes,keepDims);return{mean:xMean,variance}}var moments=op({moments_});function multiRNNCell_(lstmCells,data,c,h){let $data=convertToTensor(data,"data","multiRNNCell"),$c=convertToTensorArray(c,"c","multiRNNCell"),$h=convertToTensorArray(h,"h","multiRNNCell"),input2=$data,newStates=[];for(let i=0;i2)throw new Error(`Rank of probabilities must be 1 or 2, but is ${origRank}`);seed=seed||Math.random();let inputs={logits:origRank===1?reshape($logits,[1,-1]):$logits},attrs={numSamples,seed,normalized},res=ENGINE.runKernel(Multinomial,inputs,attrs);return origRank===1?reshape(res,[res.size]):res}var multinomial=op({multinomial_});function notEqual_(a,b){let $a=convertToTensor(a,"a","notEqual"),$b=convertToTensor(b,"b","notEqual");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let inputs={a:$a,b:$b};return ENGINE.runKernel(NotEqual,inputs)}var notEqual=op({notEqual_});function zeros(shape,dtype="float32"){if(dtype==="complex64"){let real4=zeros(shape,"float32"),imag4=zeros(shape,"float32");return complex(real4,imag4)}let values=makeZerosTypedArray(sizeFromShape(shape),dtype);return ENGINE.makeTensor(values,shape,dtype)}function ones2(shape,dtype="float32"){if(dtype==="complex64"){let real4=ones2(shape,"float32"),imag4=zeros(shape,"float32");return complex(real4,imag4)}let values=makeOnesTypedArray(sizeFromShape(shape),dtype);return ENGINE.makeTensor(values,shape,dtype)}function onesLike_(x){let inputs={x:convertToTensor(x,"x","onesLike")};return ENGINE.runKernel(OnesLike,inputs)}var onesLike=op({onesLike_});function outerProduct_(v1,v2){let $v1=convertToTensor(v1,"v1","outerProduct"),$v2=convertToTensor(v2,"v2","outerProduct");assert($v1.rank===1&&$v2.rank===1,()=>`Error in outerProduct: inputs must be rank 1, but got ranks ${$v1.rank} and ${$v2.rank}.`);let v12D=reshape($v1,[-1,1]),v22D=reshape($v2,[1,-1]);return matMul(v12D,v22D)}var outerProduct=op({outerProduct_});function pad_(x,paddings,constantValue=0){let $x=convertToTensor(x,"x","pad");if($x.rank===0)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");let attrs={paddings,constantValue},inputs={x:$x};return ENGINE.runKernel(PadV2,inputs,attrs)}var pad=op({pad_});function pad1d_(x,paddings,constantValue=0){return assert(paddings.length===2,()=>"Invalid number of paddings. Must be length of 2."),pad(x,[paddings],constantValue)}var pad1d=op({pad1d_});function pad2d_(x,paddings,constantValue=0){return assert(paddings.length===2&&paddings[0].length===2&&paddings[1].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),pad(x,paddings,constantValue)}var pad2d=op({pad2d_});function pad3d_(x,paddings,constantValue=0){return assert(paddings.length===3&&paddings[0].length===2&&paddings[1].length===2&&paddings[2].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),pad(x,paddings,constantValue)}var pad3d=op({pad3d_});function pad4d_(x,paddings,constantValue=0){return assert(paddings.length===4&&paddings[0].length===2&&paddings[1].length===2&&paddings[2].length===2&&paddings[3].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),pad(x,paddings,constantValue)}var pad4d=op({pad4d_});function spaceToBatchND_(x,blockShape,paddings){let $x=convertToTensor(x,"x","spaceToBatchND");assert($x.rank>=1+blockShape.length,()=>`input rank ${$x.rank} should be > than [blockShape] ${blockShape.length}`),assert(paddings.length===blockShape.length,()=>`paddings.shape[0] ${paddings.length} must be equal to [blockShape] ${blockShape.length}`),assert($x.shape.reduce((a,b,i)=>i>0&&i<=blockShape.length?a&&(b+paddings[i-1][0]+paddings[i-1][1])%blockShape[i-1]==0:a,!0),()=>`input spatial dimensions ${$x.shape.slice(1)} with paddings ${paddings.toString()} must be divisible by blockShapes ${blockShape.toString()}`);let inputs={x:$x},attrs={blockShape,paddings};return ENGINE.runKernel(SpaceToBatchND,inputs,attrs)}var spaceToBatchND=op({spaceToBatchND_});function pool_(input2,windowShape,poolingType,pad3,dilations,strides){dilations==null&&(dilations=[1,1]),strides==null&&(strides=1),pad3===0&&(pad3="valid");let $x=convertToTensor(input2,"x","maxPool"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in pool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=computePool2DInfo(x4D.shape,windowShape,strides,dilations,pad3),dilation=[convInfo.dilationHeight,convInfo.dilationWidth],basePadding;pad3==="same"?basePadding=withSpaceToBatchBasePaddings([convInfo.filterHeight,convInfo.filterWidth],dilation):basePadding=[[0,0],[0,0]];let isDilationOne=dilation[0]===1&&dilation[1]===1,[adjustedPadding,adjustedCrops]=requiredSpaceToBatchPaddings([convInfo.inHeight,convInfo.inWidth],dilation,basePadding),convertedPad=isDilationOne?pad3:"valid",convertedX=isDilationOne?x4D:spaceToBatchND(x4D,dilation,adjustedPadding),y=(poolingType==="avg"?()=>avgPool(convertedX,windowShape,strides,convertedPad):()=>maxPool(convertedX,windowShape,strides,convertedPad))(),res=isDilationOne?y:batchToSpaceND(y,dilation,adjustedCrops);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}function requiredSpaceToBatchPaddings(inputShape,blockShape,basePadding){let padStart=basePadding.map(b=>b[0]),origPadEnd=basePadding.map(b=>b[1]),fullInputShape=inputShape.concat(padStart,origPadEnd),padEndExtra=blockShape.map((b,i)=>(b-fullInputShape[i]%b)%b),padEnd=origPadEnd.map((s,i)=>s+padEndExtra[i]),paddings=blockShape.map((_,i)=>[padStart[i],padEnd[i]]),crops=blockShape.map((_,i)=>[0,padEndExtra[i]]);return[paddings,crops]}function withSpaceToBatchBasePaddings(filterShape,dilation){let padExtraShape=filterShape.map((s,i)=>s+(s-1)*(dilation[i]-1)).map(s=>s-1),padExtraStart=padExtraShape.map(s=>Math.floor(s/2)),padExtraEnd=padExtraShape.map((s,i)=>s-padExtraStart[i]);return padExtraShape.map((_,i)=>[padExtraStart[i],padExtraEnd[i]])}var pool=op({pool_});function pow_(base2,exp4){let $base=convertToTensor(base2,"base","pow"),$exp=convertToTensor(exp4,"exp","pow");[$base,$exp]=makeTypesMatch($base,$exp);let inputs={a:$base,b:$exp};return ENGINE.runKernel(Pow,inputs)}var pow=op({pow_});function prelu_(x,alpha){let $x=convertToTensor(x,"x","prelu"),$alpha=convertToTensor(alpha,"alpha","prelu"),inputs={x:$x,alpha:$alpha};return ENGINE.runKernel(Prelu,inputs)}var prelu=op({prelu_});function prod_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","prod");$x.dtype==="bool"&&($x=cast($x,"int32"));let inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernel(Prod,inputs,attrs)}var prod=op({prod_});function rand_(shape,randFunction,dtype){let size=sizeFromShape(shape),values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else throw new Error(`Unknown data type ${dtype}`);for(let i=0;i=1||s===0);let mul2=Math.sqrt(-2*Math.log(s)/s);resultX=this.mean+this.stdDev*v1*mul2,resultY=this.mean+this.stdDev*v2*mul2,(!this.truncated||this.isValidTruncated(resultX))&&(isValid=!0)}return(!this.truncated||this.isValidTruncated(resultY))&&(this.nextVal=this.convertValue(resultY)),this.convertValue(resultX)}convertValue(value){return this.dtype==null||this.dtype==="float32"?value:Math.round(value)}isValidTruncated(value){return value<=this.upper&&value>=this.lower}},RandGamma=class{constructor(alpha,beta,dtype,seed){this.alpha=alpha,this.beta=1/beta,this.dtype=dtype;let seedValue=seed||Math.random();this.randu=seedrandom.alea(seedValue.toString()),this.randn=new MPRandGauss(0,1,dtype,!1,this.randu()),alpha<1?this.d=alpha+2/3:this.d=alpha-1/3,this.c=1/Math.sqrt(9*this.d)}nextValue(){let x2,v0,v1,x,u,v;for(;;){do x=this.randn.nextValue(),v=1+this.c*x;while(v<=0);if(v*=v*v,x2=x*x,v0=1-.331*x2*x2,v1=.5*x2+this.d*(1-v+Math.log(v)),u=this.randu(),uthis.dtype==null||this.dtype==="float32",this.min=min6,this.range=max6-min6,this.dtype=dtype,seed==null&&(seed=Math.random()),typeof seed=="number"&&(seed=seed.toString()),!this.canReturnFloat()&&this.range<=1)throw new Error(`The difference between ${min6} - ${max6} <= 1 and dtype is not float`);this.random=seedrandom.alea(seed)}convertValue(value){return this.canReturnFloat()?value:Math.round(value)}nextValue(){return this.convertValue(this.min+this.range*this.random())}};function randomGamma_(shape,alpha,beta=1,dtype="float32",seed){if(beta==null&&(beta=1),dtype==null&&(dtype="float32"),dtype!=="float32"&&dtype!=="int32")throw new Error(`Unsupported data type ${dtype}`);let rgamma=new RandGamma(alpha,beta,dtype,seed),res=buffer(shape,dtype);for(let i=0;i`Error in reverse1D: x must be rank 1 but got rank ${$x.rank}.`),reverse($x,0)}var reverse1d=op({reverse1d_});function reverse2d_(x,axis){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===2,()=>`Error in reverse2D: x must be rank 2 but got rank ${$x.rank}.`),reverse($x,axis)}var reverse2d=op({reverse2d_});function reverse3d_(x,axis){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===3,()=>`Error in reverse3D: x must be rank 3 but got rank ${$x.rank}.`),reverse($x,axis)}var reverse3d=op({reverse3d_});function reverse4d_(x,axis){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===4,()=>`Error in reverse4D: x must be rank 4 but got rank ${$x.rank}.`),reverse($x,axis)}var reverse4d=op({reverse4d_});function round_(x){let inputs={x:convertToTensor(x,"x","round")};return ENGINE.runKernel(Round,inputs)}var round2=op({round_});function rsqrt_(x){let inputs={x:convertToTensor(x,"x","rsqrt")};return ENGINE.runKernel(Rsqrt,inputs)}var rsqrt=op({rsqrt_});function scalar(value,dtype){if((isTypedArray(value)&&dtype!=="string"||Array.isArray(value))&&dtype!=="complex64")throw new Error("Error creating a new Scalar: value must be a primitive (number|boolean|string)");if(dtype==="string"&&isTypedArray(value)&&!(value instanceof Uint8Array))throw new Error("When making a scalar from encoded string, the value must be `Uint8Array`.");return makeTensor(value,[],[],dtype)}function selu_(x){let inputs={x:convertToTensor(x,"x","selu")};return ENGINE.runKernel(Selu,inputs)}var selu=op({selu_});function separableConv2d_(x,depthwiseFilter,pointwiseFilter,strides,pad3,dilation=[1,1],dataFormat="NHWC"){let $x=convertToTensor(x,"x","separableConv2d"),$depthwiseFilter=convertToTensor(depthwiseFilter,"depthwiseFilter","separableConv2d"),$pointwiseFilter=convertToTensor(pointwiseFilter,"pointwiseFilter","separableConv2d"),x4D=$x,reshapedTo4D=!1;if($x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),dataFormat==="NCHW")throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");assert(x4D.rank===4,()=>`Error in separableConv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($depthwiseFilter.rank===4,()=>`Error in separableConv2d: depthwise filter must be rank 4, but got rank ${$depthwiseFilter.rank}.`),assert($pointwiseFilter.rank===4,()=>`Error in separableConv2d: pointwise filter must be rank 4, but got rank ${$depthwiseFilter.rank}.`),assert($pointwiseFilter.shape[0]===1,()=>`Error in separableConv2d: the first dimension of pointwise filter must be 1, but got ${$pointwiseFilter.shape[0]}.`),assert($pointwiseFilter.shape[1]===1,()=>`Error in separableConv2d: the second dimension of pointwise filter must be 1, but got ${$pointwiseFilter.shape[1]}.`);let inChannels=$depthwiseFilter.shape[2],channelMultiplier=$depthwiseFilter.shape[3];assert($pointwiseFilter.shape[2]===inChannels*channelMultiplier,()=>`Error in separableConv2d: the third dimension of pointwise filter must be ${inChannels*channelMultiplier}, but got ${$pointwiseFilter.shape[2]}.`);let depthwise=depthwiseConv2d(x4D,$depthwiseFilter,strides,pad3,dataFormat,dilation),res=conv2d(depthwise,$pointwiseFilter,1,"valid",dataFormat);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var separableConv2d=op({separableConv2d_});async function setdiff1dAsync_(x,y){let $x=convertToTensor(x,"x","setdiff1d"),$y=convertToTensor(y,"y","setdiff1d");assert($x.dtype===$y.dtype,()=>`x and y should have the same dtype, but got x (${$x.dtype}) and y (${$y.dtype}).`),assert($x.rank===1,()=>`x should be 1D tensor, but got x (${$x.shape}).`),assert($y.rank===1,()=>`y should be 1D tensor, but got y (${$y.shape}).`);let xVals=await $x.data(),yVals=await $y.data(),ySet=new Set(yVals),outputSize=0;for(let i=0;i`slice1d expects a rank-1 tensor, but got a rank-${$x.rank} tensor`),slice($x,[begin],[size])}var slice1d=op({slice1d_});function slice2d_(x,begin,size){let $x=convertToTensor(x,"x","slice2d");return assert($x.rank===2,()=>`slice2d expects a rank-2 tensor, but got a rank-${$x.rank} tensor`),slice($x,begin,size)}var slice2d=op({slice2d_});function slice3d_(x,begin,size){let $x=convertToTensor(x,"x","slice3d");return assert($x.rank===3,()=>`slice3d expects a rank-3 tensor, but got a rank-${$x.rank} tensor`),slice($x,begin,size)}var slice3d=op({slice3d_});function slice4d_(x,begin,size){let $x=convertToTensor(x,"x","slice4d");return assert($x.rank===4,()=>`slice4d expects a rank-4 tensor, but got a rank-${$x.rank} tensor`),slice($x,begin,size)}var slice4d=op({slice4d_});function softmax_(logits,dim=-1){let $logits=convertToTensor(logits,"logits","softmax","float32");if(dim===-1&&(dim=$logits.rank-1),dim!==$logits.rank-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${$logits.rank} and dim was ${dim}`);let inputs={logits:$logits},attrs={dim};return ENGINE.runKernel(Softmax,inputs,attrs)}var softmax=op({softmax_});function fft_(input2){assert(input2.dtype==="complex64",()=>`The dtype for tf.spectral.fft() must be complex64 but got ${input2.dtype}.`);let inputs={input:input2};return ENGINE.runKernel(FFT,inputs)}var fft=op({fft_});function ifft_(input2){assert(input2.dtype==="complex64",()=>`The dtype for tf.spectral.ifft() must be complex64 but got ${input2.dtype}.`);let inputs={input:input2};return ENGINE.runKernel(IFFT,inputs)}var ifft=op({ifft_});function irfft_(input2){let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,ret;if(innerDimensionSize<=2){let complexInput=reshape(input2,[batch,innerDimensionSize]);ret=ifft(complexInput)}else{let outputShape=[batch,2*(innerDimensionSize-1)],realInput=reshape(real(input2),[batch,innerDimensionSize]),imagInput=reshape(imag(input2),[batch,innerDimensionSize]),realConjugate=reverse(slice(realInput,[0,1],[batch,innerDimensionSize-2]),1),imagConjugate=mul(reverse(slice(imagInput,[0,1],[batch,innerDimensionSize-2]),1),scalar(-1)),r=concat([realInput,realConjugate],1),i=concat([imagInput,imagConjugate],1),complexInput=reshape(complex(r,i),[outputShape[0],outputShape[1]]);ret=ifft(complexInput)}if(ret=real(ret),input2.rank===3&&input2.shape[0]!==0){let temp=ret,batch2=input2.shape[0];ret=reshape(ret,[batch2,ret.shape[0]/batch2,ret.shape[1]]),temp.dispose()}return ret}var irfft=op({irfft_});function split_(x,numOrSizeSplits,axis=0){let inputs={x:convertToTensor(x,"x","split")},attr={numOrSizeSplits,axis};return ENGINE.runKernel(SplitV,inputs,attr)}var split=op({split_});function rfft_(input2,fftLength){assert(input2.dtype==="float32",()=>`The dtype for rfft() must be real value but got ${input2.dtype}`);let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,adjustedInput;if(fftLength!=null&&fftLength0),size=input2.shape.map(v=>v);size[input2.shape.length-1]=fftLength,adjustedInput=slice(input2,begin,size),innerDimensionSize=fftLength}else if(fftLength!=null&&fftLength>innerDimensionSize){let zerosShape=input2.shape.map(v=>v);zerosShape[input2.shape.length-1]=fftLength-innerDimensionSize,adjustedInput=concat([input2,zeros(zerosShape)],input2.shape.length-1),innerDimensionSize=fftLength}else adjustedInput=input2;let zerosInput=zerosLike(adjustedInput),complexInput=reshape(complex(adjustedInput,zerosInput),[batch,innerDimensionSize]),ret=fft(complexInput),half=Math.floor(innerDimensionSize/2)+1,realValues=real(ret),imagValues=imag(ret),realComplexConjugate=split(realValues,[half,innerDimensionSize-half],realValues.shape.length-1),imagComplexConjugate=split(imagValues,[half,innerDimensionSize-half],imagValues.shape.length-1),outputShape=adjustedInput.shape.slice();return outputShape[adjustedInput.shape.length-1]=half,reshape(complex(realComplexConjugate[0],imagComplexConjugate[0]),outputShape)}var rfft=op({rfft_});function sqrt_(x){let inputs={x:convertToTensor(x,"x","sqrt")};return ENGINE.runKernel(Sqrt,inputs)}var sqrt=op({sqrt_});function squaredDifference_(a,b){let $a=convertToTensor(a,"a","squaredDifference"),$b=convertToTensor(b,"b","squaredDifference");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let inputs={a:$a,b:$b},attrs={};return ENGINE.runKernel(SquaredDifference,inputs,attrs)}var squaredDifference=op({squaredDifference_});function squeeze_(x,axis){let $x=convertToTensor(x,"x","squeeze");return reshape($x,squeezeShape($x.shape,axis).newShape)}var squeeze=op({squeeze_});function stack_(tensors,axis=0){let $tensors=convertToTensorArray(tensors,"tensors","stack","string_or_numeric");assert($tensors.length>=1,()=>"Pass at least one tensor to tf.stack"),$tensors.length>0&&assert(axis<=$tensors[0].rank,()=>"Axis must be <= rank of the tensor");let inputs=$tensors,attrs={axis};return ENGINE.runKernel(Pack,inputs,attrs)}var stack=op({stack_});function step_(x,alpha=0){let inputs={x:convertToTensor(x,"x","step")},attrs={alpha};return ENGINE.runKernel(Step,inputs,attrs)}var step=op({step_});function stridedSlice_(x,begin,end,strides,beginMask=0,endMask=0,ellipsisMask=0,newAxisMask=0,shrinkAxisMask=0){let inputs={x:convertToTensor(x,"x","stridedSlice")},attrs={begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask};return ENGINE.runKernel(StridedSlice,inputs,attrs)}var stridedSlice=op({stridedSlice_});function tan_(x){let inputs={x:convertToTensor(x,"x","tan")};return ENGINE.runKernel(Tan,inputs)}var tan=op({tan_});function tensor1d(values,dtype){assertNonNull(values);let inferredShape=inferShape(values,dtype);if(inferredShape.length!==1)throw new Error("tensor1d() requires values to be a flat/TypedArray");return makeTensor(values,null,inferredShape,dtype)}function tensor2d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==2)throw new Error("tensor2d() requires shape to have two numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==2&&inferredShape.length!==1)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return makeTensor(values,shape,inferredShape,dtype)}function tensor4d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==4)throw new Error("tensor4d() requires shape to have four numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==4&&inferredShape.length!==1)throw new Error("tensor4d() requires values to be number[][][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor4d() requires shape to be provided when `values` are a flat array");return makeTensor(values,shape,inferredShape,dtype)}function tensor5d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==5)throw new Error("tensor5d() requires shape to have five numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==5&&inferredShape.length!==1)throw new Error("tensor5d() requires values to be number[][][][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor5d() requires shape to be provided when `values` are a flat array");return makeTensor(values,shape,inferredShape,dtype)}function tensor6d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==6)throw new Error("tensor6d() requires shape to have six numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==6&&inferredShape.length!==1)throw new Error("tensor6d() requires values to be number[][][][][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor6d() requires shape to be provided when `values` are a flat array");return shape=shape||inferredShape,makeTensor(values,shape,inferredShape,dtype)}function topk_(x,k=1,sorted=!0){let $x=convertToTensor(x,"x","topk");if($x.rank===0)throw new Error("topk() expects the input to be of rank 1 or higher");let lastDim=$x.shape[$x.shape.length-1];if(k>lastDim)throw new Error(`'k' passed to topk() must be <= the last dimension (${lastDim}) but got ${k}`);let inputs={x:$x},attrs={k,sorted},[values,indices]=ENGINE.runKernel(TopK,inputs,attrs);return{values,indices}}var topk=op({topk_});function truncatedNormal_(shape,mean4=0,stdDev=1,dtype,seed){if(dtype!=null&&dtype==="bool")throw new Error("Unsupported data type $ { dtype }");let randGauss=new MPRandGauss(mean4,stdDev,dtype,!0,seed),res=buffer(shape,dtype);for(let i=0;i0,()=>"The input tensor must be at least 1D");let inputs={x:$x},attrs={axis},[values,indices]=ENGINE.runKernel(Unique,inputs,attrs);return{values,indices}}var unique=op({unique_});function unsortedSegmentSum_(x,segmentIds,numSegments){let $x=convertToTensor(x,"x","unsortedSegmentSum"),$segmentIds=convertToTensor(segmentIds,"segmentIds","unsortedSegmentSum","int32");assert(isInt(numSegments),()=>"numSegments must be of dtype int");let inputs={x:$x,segmentIds:$segmentIds},attrs={numSegments};return ENGINE.runKernel(UnsortedSegmentSum,inputs,attrs)}var unsortedSegmentSum=op({unsortedSegmentSum_});function unstack_(x,axis=0){let $x=convertToTensor(x,"x","unstack","string_or_numeric");assert(axis>=-$x.shape.length&&axis<$x.shape.length,()=>`Axis = ${axis} is not in [-${$x.shape.length}, ${$x.shape.length})`);let inputs={value:$x},attrs={axis};return ENGINE.runKernel(Unpack,inputs,attrs)}var unstack=op({unstack_});function variable(initialValue,trainable=!0,name,dtype){return ENGINE.makeVariable(initialValue,trainable,name,dtype)}function whereImpl(condShape,condVals){let indices=[];for(let i=0;i0,()=>"mask cannot be scalar"),assertShapesMatch(tensorShape.slice(axisFrom,axisFrom+maskDim),$mask.shape,"mask's shape must match the first K dimensions of tensor's shape,");let leadingSize=1;for(let i=axisFrom;i"Shape mismatch in v and x");let one=scalar(1),oneMinusDecay=sub(one,$decay),update=mul(sub($x,$v),oneMinusDecay);if(zeroDebias){assert(step4!=null,()=>"When using zeroDebias: true, step is required.");let $step=convertToTensor(step4,"step","movingAverage");update=div(update,sub(one,pow($decay,$step)))}return add2($v,update)}var movingAverage=op({movingAverage_});function scatterND_(indices,updates,shape){let $indices=convertToTensor(indices,"indices","scatterND","int32"),$updates=convertToTensor(updates,"updates","scatterND");validateInput($updates,$indices,shape);let inputs={indices:$indices,updates:$updates},attrs={shape};return ENGINE.runKernel(ScatterNd,inputs,attrs)}var scatterND=op({scatterND_});function validateInput2(sparseIndices,sparseValues,outputShape,defaultValues){if(sparseIndices.dtype!=="int32")throw new Error(`tf.sparseToDense() expects the indices to be int32 type, but the dtype was ${sparseIndices.dtype}.`);if(sparseIndices.rank>2)throw new Error(`sparseIndices should be a scalar, vector, or matrix, but got shape ${sparseIndices.shape}.`);let numElems=sparseIndices.rank>0?sparseIndices.shape[0]:1,numDims=sparseIndices.rank>1?sparseIndices.shape[1]:1;if(outputShape.length!==numDims)throw new Error(`outputShape has incorrect number of elements:, ${outputShape.length}, should be: ${numDims}.`);let numValues=sparseValues.size;if(!(sparseValues.rank===0||sparseValues.rank===1&&numValues===numElems))throw new Error(`sparseValues has incorrect shape ${sparseValues.shape}, should be [] or [${numElems}]`);if(sparseValues.dtype!==defaultValues.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}function sparseToDense_(sparseIndices,sparseValues,outputShape,defaultValue=0){let $sparseIndices=convertToTensor(sparseIndices,"sparseIndices","sparseToDense","int32"),$sparseValues=convertToTensor(sparseValues,"sparseValues","sparseToDense"),$defaultValue=convertToTensor(defaultValue,"defaultValue","sparseToDense",$sparseValues.dtype);validateInput2($sparseIndices,$sparseValues,outputShape,$defaultValue);let inputs={sparseIndices:$sparseIndices,sparseValues:$sparseValues,defaultValue:$defaultValue},attrs={outputShape};return ENGINE.runKernel(SparseToDense,inputs,attrs)}var sparseToDense=op({sparseToDense_});function gatherND_(x,indices){let $indices=convertToTensor(indices,"indices","gatherND","int32"),inputs={params:convertToTensor(x,"x","gatherND"),indices:$indices};return ENGINE.runKernel(GatherNd,inputs)}var gatherND=op({gatherND_});function getNoiseShape(x,noiseShape){if(noiseShape==null)return x.shape.slice();if(arraysEqual(x.shape,noiseShape))return noiseShape;if(x.shape.length===noiseShape.length){let newDimension=[];for(let i=0;i`x has to be a floating point tensor since it's going to be scaled, but got a ${$x.dtype} tensor instead.`),assert(rate>=0&&rate<1,()=>`rate must be a float in the range [0, 1), but got ${rate}.`),rate===0)return x instanceof Tensor?$x.clone():$x;let $noiseShape=getNoiseShape($x,noiseShape),keepProb=1-rate,multiplier=div(floor(add2(randomUniform($noiseShape,0,1,"float32",seed),keepProb)),keepProb);return mul($x,multiplier)}var dropout=op({dropout_});function enclosingPowerOfTwo(value){return Math.floor(Math.pow(2,Math.ceil(Math.log(value)/Math.log(2))))}function cosineWindow(windowLength,a,b){let even=1-windowLength%2,newValues=new Float32Array(windowLength);for(let i=0;i1,()=>`inTopK() expects the predictions to be of rank 2 or higher, but got ${$predictions.rank}`),assert($predictions.rank-1===$targets.rank,()=>`predictions rank should be 1 larger than targets rank, but got predictions rank ${$predictions.rank} and targets rank ${$targets.rank}`),assertShapesMatch($predictions.shape.slice(0,$predictions.shape.length-1),$targets.shape,"predictions's shape should be align with the targets' shape, except the last dimension.");let lastDim=$predictions.shape[$predictions.shape.length-1];assert(k>0&&k<=lastDim,()=>`'k' passed to inTopK() must be > 0 && <= the predictions last dimension (${lastDim}), but got ${k}`);let predictionsVals=await $predictions.data(),targetsVals=await $targets.data(),[batch,size]=[predictionsVals.length/lastDim,lastDim],precision3=getTypedArrayFromDType("bool",batch);for(let b=0;bb2.value-a.value),precision3[b]=0;for(let i=0;iconv2d2,depthwiseConv2d:()=>depthwiseConv2d2,matMul:()=>matMul2});function conv2DBackpropFilter_(x,dy,filterShape,strides,pad3,dataFormat="NHWC",dimRoundingMode){let x4D=x;x.rank===3&&(x4D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]));let dy4D=dy;dy4D.rank===3&&(dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]])),assert(x4D.rank===4,()=>`Error in conv2dDerFilter: input must be rank 4, but got shape ${x4D.shape}.`),assert(dy4D.rank===4,()=>`Error in conv2dDerFilter: dy must be rank 4, but got shape ${dy4D.shape}.`),assert(filterShape.length===4,()=>`Error in conv2dDerFilter: filterShape must be length 4, but got ${filterShape}.`);let inDepth=dataFormat==="NHWC"?x4D.shape[3]:x4D.shape[1],outDepth=dataFormat==="NHWC"?dy4D.shape[3]:dy4D.shape[1];assert(inDepth===filterShape[2],()=>`Error in conv2dDerFilter: depth of input ${inDepth}) must match input depth in filter (${filterShape[2]}.`),assert(outDepth===filterShape[3],()=>`Error in conv2dDerFilter: depth of dy (${outDepth}) must match output depth for filter (${filterShape[3]}).`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in conv2dDerFilter: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let inputs={x:x4D,dy:dy4D},attrs={strides,pad:pad3,dataFormat,dimRoundingMode,filterShape};return ENGINE.runKernel(Conv2DBackpropFilter,inputs,attrs)}var conv2DBackpropFilter=op({conv2DBackpropFilter_});function getFusedDyActivation(dy,y,activation2){if(activation2==null||activation2==="linear")return dy;if(activation2==="relu")return mul(dy,step(y));throw new Error(`Cannot compute gradient for fused activation ${activation2}.`)}function getFusedBiasGradient(bias,dyActivation){let res=dyActivation,reduceAxes=getReductionAxes(bias.shape,dyActivation.shape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,bias.shape)}function applyActivation(x,activation2,preluActivationWeights,leakyreluAlpha){if(activation2==="linear")return x;if(activation2==="relu")return relu(x);if(activation2==="elu")return elu(x);if(activation2==="relu6")return relu6(x);if(activation2==="prelu")return prelu(x,preluActivationWeights);if(activation2==="leakyrelu")return leakyRelu(x,leakyreluAlpha);throw new Error(`Unknown fused activation ${activation2}.`)}var shouldFuse=(gradientDepth,activation2)=>!(gradientDepth>0)||activation2==="linear";function fusedConv2d_({x,filter,strides,pad:pad3,dataFormat="NHWC",dilations=[1,1],dimRoundingMode,bias,activation:activation2="linear",preluActivationWeights,leakyreluAlpha}){if(activation2=activation2||"linear",shouldFuse(ENGINE.state.gradientDepth,activation2)===!1){let result=conv2d(x,filter,strides,pad3,dataFormat,dilations,dimRoundingMode);return bias!=null&&(result=add2(result,bias)),applyActivation(result,activation2,preluActivationWeights,leakyreluAlpha)}let $x=convertToTensor(x,"x","conv2d"),$filter=convertToTensor(filter,"filter","conv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in fused conv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in fused conv2d: filter must be rank 4, but got rank ${$filter.rank}.`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in fused conv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`),assert(x4D.shape[3]===$filter.shape[2],()=>`Error in conv2d: depth of input (${x4D.shape[3]}) must match input depth for filter ${$filter.shape[2]}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),assert(dataFormat==="NHWC",()=>`Error in conv2d: got dataFormat of ${dataFormat} but only NHWC is currently supported.`);let convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad3,dimRoundingMode),$bias;bias!=null&&($bias=convertToTensor(bias,"bias","fused conv2d"),[$bias]=makeTypesMatch($bias,$x),assertAndGetBroadcastShape(convInfo.outShape,$bias.shape));let $preluActivationWeights;preluActivationWeights!=null&&($preluActivationWeights=convertToTensor(preluActivationWeights,"prelu weights","fused conv2d"));let grad2=(dy,saved)=>{let[$filter2,x4D2,y,$bias2]=saved,dyActivation=getFusedDyActivation(dy,y,activation2);assert(tupleValuesAreOne(dilations),()=>`Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${dilations}'`);let xDer=conv2DBackpropInput(x4D2.shape,dyActivation,$filter2,strides,pad3),filterDer=conv2DBackpropFilter(x4D2,dyActivation,$filter2.shape,strides,pad3),der=[xDer,filterDer];if($bias2!=null){let biasDer=getFusedBiasGradient($bias2,dyActivation);der.push(biasDer)}return der},inputs={x:x4D,filter:$filter,bias:$bias,preluActivationWeights:$preluActivationWeights},attrs={strides,pad:pad3,dataFormat,dilations,dimRoundingMode,activation:activation2,leakyreluAlpha};return bias==null?customGrad((x4D2,filter2,save)=>{let res=ENGINE.runKernel(FusedConv2D,inputs,attrs);return save([filter2,x4D2,res]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}})(x4D,$filter):customGrad((x4D2,filter2,bias2,save)=>{let res=ENGINE.runKernel(FusedConv2D,inputs,attrs);return save([filter2,x4D2,res,bias2]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}})(x4D,$filter,$bias)}var conv2d2=op({fusedConv2d_});function depthwiseConv2dNativeBackpropFilter_(x,dy,filterShape,strides,pad3,dilations=[1,1],dimRoundingMode){let x4D=x;x.rank===3&&(x4D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]));let dy4D=dy;dy4D.rank===3&&(dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]]));let inputs={x:x4D,dy:dy4D},attrs={strides,pad:pad3,dimRoundingMode,dilations,filterShape};return ENGINE.runKernel(DepthwiseConv2dNativeBackpropFilter,inputs,attrs)}var depthwiseConv2dNativeBackpropFilter=op({depthwiseConv2dNativeBackpropFilter_});function depthwiseConv2dNativeBackpropInput_(xShape,dy,filter,strides,pad3,dilations=[1,1],dimRoundingMode){let dy4D=dy,reshapedTo4D=!1;dy.rank===3&&(reshapedTo4D=!0,dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]]));let inputs={dy:dy4D,filter},attrs={strides,pad:pad3,dimRoundingMode,dilations,inputShape:xShape},res=ENGINE.runKernel(DepthwiseConv2dNativeBackpropInput,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var depthwiseConv2dNativeBackpropInput=op({depthwiseConv2dNativeBackpropInput_});function fusedDepthwiseConv2d_({x,filter,strides,pad:pad3,dataFormat="NHWC",dilations=[1,1],dimRoundingMode,bias,activation:activation2="linear",preluActivationWeights,leakyreluAlpha}){if(shouldFuse(ENGINE.state.gradientDepth,activation2)===!1){let result=depthwiseConv2d(x,filter,strides,pad3,dataFormat,dilations,dimRoundingMode);return bias!=null&&(result=add2(result,bias)),applyActivation(result,activation2,preluActivationWeights,leakyreluAlpha)}let $x=convertToTensor(x,"x","depthwiseConv2d"),$filter=convertToTensor(filter,"filter","depthwiseConv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in fused depthwiseConv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in fused depthwiseConv2d: filter must be rank 4, but got rank ${$filter.rank}.`),assert(x4D.shape[3]===$filter.shape[2],()=>`Error in fused depthwiseConv2d: number of input channels (${x4D.shape[3]}) must match the inChannels dimension in filter ${$filter.shape[2]}.`),dilations==null&&(dilations=[1,1]),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in fused depthwiseConv2d: pad must be an integer when using dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad3,dimRoundingMode,!0),$bias;bias!=null&&($bias=convertToTensor(bias,"bias","fused conv2d"),[$bias]=makeTypesMatch($bias,$x),assertAndGetBroadcastShape(convInfo.outShape,$bias.shape));let $preluActivationWeights;preluActivationWeights!=null&&($preluActivationWeights=convertToTensor(preluActivationWeights,"prelu weights","fused depthwiseConv2d"));let grad2=(dy,saved)=>{assert(tupleValuesAreOne(dilations),()=>`Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '${dilations}'`);let[$filter2,x4D2,y,bias2]=saved,dyActivation=getFusedDyActivation(dy,y,activation2),xDer=depthwiseConv2dNativeBackpropInput(x4D2.shape,dyActivation,$filter2,strides,pad3,dilations,dimRoundingMode),filterDer=depthwiseConv2dNativeBackpropFilter(x4D2,dyActivation,$filter2.shape,strides,pad3,dilations,dimRoundingMode);if(bias2!=null){let biasDer=getFusedBiasGradient($bias,dyActivation);return[xDer,filterDer,biasDer]}return[xDer,filterDer]},inputs={x:x4D,filter:$filter,bias:$bias,preluActivationWeights:$preluActivationWeights},attrs={strides,pad:pad3,dataFormat,dilations,dimRoundingMode,activation:activation2,leakyreluAlpha};return bias==null?customGrad((x4D2,filter2,save)=>{let res=ENGINE.runKernel(FusedDepthwiseConv2D,inputs,attrs);return save([filter2,x4D2,res]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}})(x4D,$filter):customGrad((x4D2,filter2,bias2,save)=>{let res=ENGINE.runKernel(FusedDepthwiseConv2D,inputs,attrs);return save([filter2,x4D2,res,bias2]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}})(x4D,$filter,$bias)}var depthwiseConv2d2=op({fusedDepthwiseConv2d_});function fusedMatMul_({a,b,transposeA=!1,transposeB=!1,bias,activation:activation2="linear",preluActivationWeights,leakyreluAlpha}){if(shouldFuse(ENGINE.state.gradientDepth,activation2)===!1){let result=matMul(a,b,transposeA,transposeB);return bias!=null&&(result=add2(result,bias)),applyActivation(result,activation2,preluActivationWeights,leakyreluAlpha)}let $a=convertToTensor(a,"a","fused matMul"),$b=convertToTensor(b,"b","fused matMul");[$a,$b]=makeTypesMatch($a,$b);let innerShapeA=transposeA?$a.shape[$a.rank-2]:$a.shape[$a.rank-1],innerShapeB=transposeB?$b.shape[$b.rank-1]:$b.shape[$b.rank-2],outerShapeA=transposeA?$a.shape[$a.rank-1]:$a.shape[$a.rank-2],outerShapeB=transposeB?$b.shape[$b.rank-2]:$b.shape[$b.rank-1],outerDimsA=$a.shape.slice(0,-2),outerDimsB=$b.shape.slice(0,-2),batchDimA=sizeFromShape(outerDimsA),batchDimB=sizeFromShape(outerDimsB);assert($a.rank>=2&&$b.rank>=2&&$a.rank===$b.rank,()=>`Error in fused matMul: inputs must have the same rank of at least 2, got ranks ${$a.rank} and ${$b.rank}.`),assert(arraysEqual(outerDimsA,outerDimsB),()=>`Error in fused matMul: outer dimensions (${outerDimsA}) and (${outerDimsB}) of Tensors with shapes ${$a.shape} and ${$b.shape} must match.`),assert(innerShapeA===innerShapeB,()=>`Error in fused matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${$a.shape} and ${$b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let outShape=$a.shape.slice(0,-2).concat([outerShapeA,outerShapeB]),a3D=transposeA?reshape($a,[batchDimA,innerShapeA,outerShapeA]):reshape($a,[batchDimA,outerShapeA,innerShapeA]),b3D=transposeB?reshape($b,[batchDimB,outerShapeB,innerShapeB]):reshape($b,[batchDimB,innerShapeB,outerShapeB]),$bias;bias!=null&&($bias=convertToTensor(bias,"bias","fused matMul"),[$bias]=makeTypesMatch($bias,$a),assertAndGetBroadcastShape(outShape,$bias.shape));let $preluActivationWeights;preluActivationWeights!=null&&($preluActivationWeights=convertToTensor(preluActivationWeights,"prelu weights","fused matMul"));let grad2=(dy,saved)=>{let[a3D2,b3D2,y,$bias2]=saved,dyActivation=getFusedDyActivation(reshape(dy,y.shape),y,activation2),aDer,bDer;if(!transposeA&&!transposeB?(aDer=matMul(dyActivation,b3D2,!1,!0),bDer=matMul(a3D2,dyActivation,!0,!1)):!transposeA&&transposeB?(aDer=matMul(dyActivation,b3D2,!1,!1),bDer=matMul(dyActivation,a3D2,!0,!1)):transposeA&&!transposeB?(aDer=matMul(b3D2,dyActivation,!1,!0),bDer=matMul(a3D2,dyActivation,!1,!1)):(aDer=matMul(b3D2,dyActivation,!0,!0),bDer=matMul(dyActivation,a3D2,!0,!0)),bias!=null){let biasDer=getFusedBiasGradient($bias2,dyActivation);return[aDer,bDer,biasDer]}else return[aDer,bDer]},inputs={a:a3D,b:b3D,bias:$bias,preluActivationWeights:$preluActivationWeights},attrs={transposeA,transposeB,activation:activation2,leakyreluAlpha};return bias==null?customGrad((a3D2,b3D2,save)=>{let res=ENGINE.runKernel(_FusedMatMul,inputs,attrs);return save([a3D2,b3D2,res]),{value:reshape(res,outShape),gradFunc:grad2}})(a3D,b3D):customGrad((a3D2,b3D2,$bias2,save)=>{let res=ENGINE.runKernel(_FusedMatMul,inputs,attrs);return save([a3D2,b3D2,res,$bias2]),{value:reshape(res,outShape),gradFunc:grad2}})(a3D,b3D,$bias)}var matMul2=op({fusedMatMul_});function hammingWindow_(windowLength){return cosineWindow(windowLength,.54,.46)}var hammingWindow=op({hammingWindow_});function hannWindow_(windowLength){return cosineWindow(windowLength,.5,.5)}var hannWindow=op({hannWindow_});function frame_(signal2,frameLength,frameStep,padEnd=!1,padValue=0){let start=0,output=[];for(;start+frameLength<=signal2.size;)output.push(slice(signal2,start,frameLength)),start+=frameStep;if(padEnd)for(;start`Error in cropAndResize: image must be rank 4,but got rank ${$image.rank}.`),assert($boxes.rank===2&&$boxes.shape[1]===4,()=>`Error in cropAndResize: boxes must be have size [${numBoxes},4] but had shape ${$boxes.shape}.`),assert($boxInd.rank===1&&$boxInd.shape[0]===numBoxes,()=>`Error in cropAndResize: boxInd must be have size [${numBoxes}] but had shape ${$boxes.shape}.`),assert(cropSize.length===2,()=>`Error in cropAndResize: cropSize must be of length 2, but got length ${cropSize.length}.`),assert(cropSize[0]>=1&&cropSize[1]>=1,()=>`cropSize must be atleast [1,1], but was ${cropSize}`),assert(method==="bilinear"||method==="nearest",()=>`method must be bilinear or nearest, but was ${method}`);let inputs={image:$image,boxes:$boxes,boxInd:$boxInd},attrs={method,extrapolationValue,cropSize};return ENGINE.runKernel(CropAndResize,inputs,attrs)}var cropAndResize=op({cropAndResize_});function flipLeftRight_(image3){let $image=convertToTensor(image3,"image","flipLeftRight","float32");assert($image.rank===4,()=>`Error in flipLeftRight: image must be rank 4,but got rank ${$image.rank}.`);let inputs={image:$image};return ENGINE.runKernel(FlipLeftRight,inputs,{})}var flipLeftRight=op({flipLeftRight_});function rotateWithOffset_(image3,radians,fillValue=0,center=.5){let $image=convertToTensor(image3,"image","rotateWithOffset","float32");assert($image.rank===4,()=>`Error in rotateWithOffset: image must be rank 4,but got rank ${$image.rank}.`);let inputs={image:$image},attrs={radians,fillValue,center};return ENGINE.runKernel(RotateWithOffset,inputs,attrs)}var rotateWithOffset=op({rotateWithOffset_});function nonMaxSuppSanityCheck(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma){iouThreshold==null&&(iouThreshold=.5),scoreThreshold==null&&(scoreThreshold=Number.NEGATIVE_INFINITY),softNmsSigma==null&&(softNmsSigma=0);let numBoxes=boxes.shape[0];return maxOutputSize=Math.min(maxOutputSize,numBoxes),assert(0<=iouThreshold&&iouThreshold<=1,()=>`iouThreshold must be in [0, 1], but was '${iouThreshold}'`),assert(boxes.rank===2,()=>`boxes must be a 2D tensor, but was of rank '${boxes.rank}'`),assert(boxes.shape[1]===4,()=>`boxes must have 4 columns, but 2nd dimension was ${boxes.shape[1]}`),assert(scores.rank===1,()=>"scores must be a 1D tensor"),assert(scores.shape[0]===numBoxes,()=>`scores has incompatible shape with boxes. Expected ${numBoxes}, but was ${scores.shape[0]}`),assert(0<=softNmsSigma&&softNmsSigma<=1,()=>`softNmsSigma must be in [0, 1], but was '${softNmsSigma}'`),{maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}}function nonMaxSuppression_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppression"),$scores=convertToTensor(scores,"scores","nonMaxSuppression"),inputs=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold);maxOutputSize=inputs.maxOutputSize,iouThreshold=inputs.iouThreshold,scoreThreshold=inputs.scoreThreshold;let attrs={maxOutputSize,iouThreshold,scoreThreshold};return ENGINE.runKernel(NonMaxSuppressionV3,{boxes:$boxes,scores:$scores},attrs)}var nonMaxSuppression=op({nonMaxSuppression_});function binaryInsert(arr,element,comparator){let index=binarySearch(arr,element,comparator),insertionPoint=index<0?-(index+1):index;arr.splice(insertionPoint,0,element)}function binarySearch(arr,target,comparator){return binarySearch_(arr,target,comparator||defaultComparator)}function defaultComparator(a,b){return a>b?1:a>>1);let compareResult=comparator(target,arr[middle]);compareResult>0?left=middle+1:(right=middle,found=!compareResult)}return found?left:-left-1}function nonMaxSuppressionV3Impl(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){return nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,0)}function nonMaxSuppressionV4Impl(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize){return nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,0,!1,padToMaxOutputSize,!0)}function nonMaxSuppressionV5Impl(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma){return nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma,!0)}function nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma,returnScoresTensor=!1,padToMaxOutputSize=!1,returnValidOutputs=!1){let candidates=[];for(let i=0;iscoreThreshold&&candidates.push({score:scores[i],boxIndex:i,suppressBeginIndex:0});candidates.sort(ascendingComparator);let scale22=softNmsSigma>0?-.5/softNmsSigma:0,selectedIndices=[],selectedScores=[];for(;selectedIndices.length0;){let candidate=candidates.pop(),{score:originalScore,boxIndex,suppressBeginIndex}=candidate;if(originalScore=suppressBeginIndex;--j){let iou2=intersectionOverUnion(boxes,boxIndex,selectedIndices[j]);if(iou2>=iouThreshold){ignoreCandidate=!0;break}if(candidate.score=candidate.score*suppressWeight(iouThreshold,scale22,iou2),candidate.score<=scoreThreshold)break}candidate.suppressBeginIndex=selectedIndices.length,ignoreCandidate||(candidate.score===originalScore?(selectedIndices.push(boxIndex),selectedScores.push(candidate.score)):candidate.score>scoreThreshold&&binaryInsert(candidates,candidate,ascendingComparator))}let validOutputs=selectedIndices.length,elemsToPad=maxOutputSize-validOutputs;padToMaxOutputSize&&elemsToPad>0&&(selectedIndices.push(...new Array(elemsToPad).fill(0)),selectedScores.push(...new Array(elemsToPad).fill(0)));let result={selectedIndices};return returnScoresTensor&&(result.selectedScores=selectedScores),returnValidOutputs&&(result.validOutputs=validOutputs),result}function intersectionOverUnion(boxes,i,j){let iCoord=boxes.subarray(i*4,i*4+4),jCoord=boxes.subarray(j*4,j*4+4),yminI=Math.min(iCoord[0],iCoord[2]),xminI=Math.min(iCoord[1],iCoord[3]),ymaxI=Math.max(iCoord[0],iCoord[2]),xmaxI=Math.max(iCoord[1],iCoord[3]),yminJ=Math.min(jCoord[0],jCoord[2]),xminJ=Math.min(jCoord[1],jCoord[3]),ymaxJ=Math.max(jCoord[0],jCoord[2]),xmaxJ=Math.max(jCoord[1],jCoord[3]),areaI=(ymaxI-yminI)*(xmaxI-xminI),areaJ=(ymaxJ-yminJ)*(xmaxJ-xminJ);if(areaI<=0||areaJ<=0)return 0;let intersectionYmin=Math.max(yminI,yminJ),intersectionXmin=Math.max(xminI,xminJ),intersectionYmax=Math.min(ymaxI,ymaxJ),intersectionXmax=Math.min(xmaxI,xmaxJ),intersectionArea=Math.max(intersectionYmax-intersectionYmin,0)*Math.max(intersectionXmax-intersectionXmin,0);return intersectionArea/(areaI+areaJ-intersectionArea)}function suppressWeight(iouThreshold,scale22,iou2){let weight=Math.exp(scale22*iou2*iou2);return iou2<=iouThreshold?weight:0}function ascendingComparator(c1,c2){return c1.score-c2.score||c1.score===c2.score&&c2.boxIndex-c1.boxIndex}async function nonMaxSuppressionAsync_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppressionAsync"),$scores=convertToTensor(scores,"scores","nonMaxSuppressionAsync"),inputs=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold);maxOutputSize=inputs.maxOutputSize,iouThreshold=inputs.iouThreshold,scoreThreshold=inputs.scoreThreshold;let boxesAndScores=await Promise.all([$boxes.data(),$scores.data()]),boxesVals=boxesAndScores[0],scoresVals=boxesAndScores[1],{selectedIndices}=nonMaxSuppressionV3Impl(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold);return $boxes!==boxes&&$boxes.dispose(),$scores!==scores&&$scores.dispose(),tensor1d(selectedIndices,"int32")}var nonMaxSuppressionAsync=nonMaxSuppressionAsync_;function nonMaxSuppressionWithScore_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,softNmsSigma=0){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppression"),$scores=convertToTensor(scores,"scores","nonMaxSuppression"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);maxOutputSize=params.maxOutputSize,iouThreshold=params.iouThreshold,scoreThreshold=params.scoreThreshold,softNmsSigma=params.softNmsSigma;let inputs={boxes:$boxes,scores:$scores},attrs={maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma},result=ENGINE.runKernel(NonMaxSuppressionV5,inputs,attrs);return{selectedIndices:result[0],selectedScores:result[1]}}var nonMaxSuppressionWithScore=op({nonMaxSuppressionWithScore_});async function nonMaxSuppressionWithScoreAsync_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,softNmsSigma=0){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppressionAsync"),$scores=convertToTensor(scores,"scores","nonMaxSuppressionAsync"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);maxOutputSize=params.maxOutputSize,iouThreshold=params.iouThreshold,scoreThreshold=params.scoreThreshold,softNmsSigma=params.softNmsSigma;let boxesAndScores=await Promise.all([$boxes.data(),$scores.data()]),boxesVals=boxesAndScores[0],scoresVals=boxesAndScores[1],{selectedIndices,selectedScores}=nonMaxSuppressionV5Impl(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);return $boxes!==boxes&&$boxes.dispose(),$scores!==scores&&$scores.dispose(),{selectedIndices:tensor1d(selectedIndices,"int32"),selectedScores:tensor1d(selectedScores)}}var nonMaxSuppressionWithScoreAsync=nonMaxSuppressionWithScoreAsync_;function nonMaxSuppressionPadded_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,padToMaxOutputSize=!1){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppression"),$scores=convertToTensor(scores,"scores","nonMaxSuppression"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,null),$maxOutputSize=params.maxOutputSize,$iouThreshold=params.iouThreshold,$scoreThreshold=params.scoreThreshold,inputs={boxes:$boxes,scores:$scores},attrs={maxOutputSize:$maxOutputSize,iouThreshold:$iouThreshold,scoreThreshold:$scoreThreshold,padToMaxOutputSize},result=ENGINE.runKernel(NonMaxSuppressionV4,inputs,attrs);return{selectedIndices:result[0],validOutputs:result[1]}}var nonMaxSuppressionPadded=op({nonMaxSuppressionPadded_});async function nonMaxSuppressionPaddedAsync_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,padToMaxOutputSize=!1){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppressionAsync"),$scores=convertToTensor(scores,"scores","nonMaxSuppressionAsync"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,null),$maxOutputSize=params.maxOutputSize,$iouThreshold=params.iouThreshold,$scoreThreshold=params.scoreThreshold,[boxesVals,scoresVals]=await Promise.all([$boxes.data(),$scores.data()]),{selectedIndices,validOutputs}=nonMaxSuppressionV4Impl(boxesVals,scoresVals,$maxOutputSize,$iouThreshold,$scoreThreshold,padToMaxOutputSize);return $boxes!==boxes&&$boxes.dispose(),$scores!==scores&&$scores.dispose(),{selectedIndices:tensor1d(selectedIndices,"int32"),validOutputs:scalar(validOutputs,"int32")}}var nonMaxSuppressionPaddedAsync=nonMaxSuppressionPaddedAsync_;function resizeBilinear_(images,size,alignCorners=!1,halfPixelCenters=!1){let $images=convertToTensor(images,"images","resizeBilinear");assert($images.rank===3||$images.rank===4,()=>`Error in resizeBilinear: x must be rank 3 or 4, but got rank ${$images.rank}.`),assert(size.length===2,()=>`Error in resizeBilinear: new shape must 2D, but got shape ${size}.`),assert(halfPixelCenters===!1||alignCorners===!1,()=>"Error in resizeBilinear: If halfPixelCenters is true, alignCorners must be false.");let batchImages=$images,reshapedTo4D=!1;$images.rank===3&&(reshapedTo4D=!0,batchImages=reshape($images,[1,$images.shape[0],$images.shape[1],$images.shape[2]]));let[]=size,inputs={images:batchImages},attrs={alignCorners,halfPixelCenters,size},res=ENGINE.runKernel(ResizeBilinear,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var resizeBilinear=op({resizeBilinear_});function resizeNearestNeighbor_(images,size,alignCorners=!1,halfPixelCenters=!1){let $images=convertToTensor(images,"images","resizeNearestNeighbor");assert($images.rank===3||$images.rank===4,()=>`Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank ${$images.rank}.`),assert(size.length===2,()=>`Error in resizeNearestNeighbor: new shape must 2D, but got shape ${size}.`),assert($images.dtype==="float32"||$images.dtype==="int32",()=>"`images` must have `int32` or `float32` as dtype"),assert(halfPixelCenters===!1||alignCorners===!1,()=>"Error in resizeNearestNeighbor: If halfPixelCenters is true, alignCorners must be false.");let batchImages=$images,reshapedTo4D=!1;$images.rank===3&&(reshapedTo4D=!0,batchImages=reshape($images,[1,$images.shape[0],$images.shape[1],$images.shape[2]]));let[]=size,inputs={images:batchImages},attrs={alignCorners,halfPixelCenters,size},res=ENGINE.runKernel(ResizeNearestNeighbor,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var resizeNearestNeighbor=op({resizeNearestNeighbor_});function bandPart_(a,numLower,numUpper){assert(numLower%1==0,()=>`bandPart(): numLower must be an integer, got ${numLower}.`),assert(numUpper%1==0,()=>`bandPart(): numUpper must be an integer, got ${numUpper}.`);let $a=convertToTensor(a,"a","bandPart");assert($a.rank>=2,()=>`bandPart(): Rank must be at least 2, got ${$a.rank}.`);let shape=$a.shape,[M,N]=$a.shape.slice(-2);if(!(numLower<=M))throw new Error(`bandPart(): numLower (${numLower}) must not be greater than the number of rows (${M}).`);if(!(numUpper<=N))throw new Error(`bandPart(): numUpper (${numUpper}) must not be greater than the number of columns (${N}).`);numLower<0&&(numLower=M),numUpper<0&&(numUpper=N);let i=reshape(range(0,M,1,"int32"),[-1,1]),j=range(0,N,1,"int32"),ij=sub(i,j),inBand=logicalAnd(lessEqual(ij,scalar(+numLower,"int32")),greaterEqual(ij,scalar(-numUpper,"int32"))),zero=zeros([M,N],$a.dtype);return reshape(stack(unstack(reshape($a,[-1,M,N])).map(mat=>where(inBand,mat,zero))),shape)}var bandPart=op({bandPart_});function gramSchmidt_(xs){let inputIsTensor2D;if(Array.isArray(xs)){inputIsTensor2D=!1,assert(xs!=null&&xs.length>0,()=>"Gram-Schmidt process: input must not be null, undefined, or empty");let dim=xs[0].shape[0];for(let i=1;i`Gram-Schmidt: Non-unique lengths found in the input vectors: (${xs[i].shape[0]} vs. ${dim})`)}else inputIsTensor2D=!0,xs=split(xs,xs.shape[0],0).map(x=>squeeze(x,[0]));assert(xs.length<=xs[0].shape[0],()=>`Gram-Schmidt: Number of vectors (${xs.length}) exceeds number of dimensions (${xs[0].shape[0]}).`);let ys=[],xs1d=xs;for(let i=0;i{let x=xs1d[i];if(i>0)for(let j=0;j=2,()=>`qr() requires input tensor to have a rank >= 2, but got rank ${x.rank}`),x.rank===2)return qr2d(x,fullMatrices);{let outerDimsProd=x.shape.slice(0,x.shape.length-2).reduce((value,prev)=>value*prev),x2ds=unstack(reshape(x,[outerDimsProd,x.shape[x.shape.length-2],x.shape[x.shape.length-1]]),0),q2ds=[],r2ds=[];x2ds.forEach(x2d=>{let[q2d,r2d]=qr2d(x2d,fullMatrices);q2ds.push(q2d),r2ds.push(r2d)});let q=reshape(stack(q2ds,0),x.shape),r=reshape(stack(r2ds,0),x.shape);return[q,r]}}function qr2d(x,fullMatrices=!1){return ENGINE.tidy(()=>{assert(x.shape.length===2,()=>`qr2d() requires a 2D Tensor, but got a ${x.shape.length}D Tensor.`);let m=x.shape[0],n=x.shape[1],q=eye(m),r=clone(x),one2D=tensor2d([[1]],[1,1]),w=clone(one2D),iters=m>=n?n:m;for(let j=0;j{let rjEnd1=slice(r,[j,j],[m-j,1]),normX=norm(rjEnd1),rjj=slice(r,[j,j],[1,1]),s=where(greater(rjj,0),tensor2d([[-1]]),tensor2d([[1]])),u1=sub(rjj,mul(s,normX)),wPre=div(rjEnd1,u1);wPre.shape[0]===1?w=clone(one2D):w=concat([one2D,slice(wPre,[1,0],[wPre.shape[0]-1,wPre.shape[1]])],0);let tau=neg(div(matMul(s,u1),normX)),rjEndAll=slice(r,[j,0],[m-j,n]),tauTimesW=mul(tau,w),wT=transpose(w);if(j===0)r=sub(rjEndAll,matMul(tauTimesW,matMul(wT,rjEndAll)));else{let rTimesTau=sub(rjEndAll,matMul(tauTimesW,matMul(wT,rjEndAll)));r=concat([slice(r,[0,0],[j,n]),rTimesTau],0)}let tawTimesWT=transpose(tauTimesW),qAllJEnd=slice(q,[0,j],[m,q.shape[1]-j]);if(j===0)q=sub(qAllJEnd,matMul(matMul(qAllJEnd,w),tawTimesWT));else{let qTimesTau=sub(qAllJEnd,matMul(matMul(qAllJEnd,w),tawTimesWT));q=concat([slice(q,[0,0],[m,j]),qTimesTau],1)}return[w,r,q]}),dispose([rTemp,wTemp,qTemp])}return!fullMatrices&&m>n&&(q=slice(q,[0,0],[m,n]),r=slice(r,[0,0],[n,n])),[q,r]})}var qr=op({qr_}),Reduction;(function(Reduction2){Reduction2[Reduction2.NONE=0]="NONE",Reduction2[Reduction2.MEAN=1]="MEAN",Reduction2[Reduction2.SUM=2]="SUM",Reduction2[Reduction2.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"})(Reduction||(Reduction={}));function computeWeightedLoss_(losses4,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $losses=convertToTensor(losses4,"losses","computeWeightedLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","computeWeightedLoss"));let weightedLoss=$weights==null?$losses:mul($losses,$weights);if(reduction2===Reduction.NONE)return weightedLoss;if(reduction2===Reduction.SUM)return sum2(weightedLoss);if(reduction2===Reduction.MEAN){if($weights==null)return mean(weightedLoss);{let broadcastFactor=$losses.size/$weights.size,result=div(sum2(weightedLoss),sum2($weights));return broadcastFactor>1?div(result,scalar(broadcastFactor)):result}}if(reduction2===Reduction.SUM_BY_NONZERO_WEIGHTS){if($weights==null)return div(sum2(weightedLoss),scalar($losses.size));{let broadcastedWeights=mul($weights,ones2($losses.shape)),numNonZeros=cast(sum2(notEqual(broadcastedWeights,scalar(0))),"float32");return div(sum2(weightedLoss),numNonZeros)}}throw Error(`Unknown reduction: ${reduction2}`)}var computeWeightedLoss=op({computeWeightedLoss_});function absoluteDifference_(labels,predictions,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","absoluteDifference"),$predictions=convertToTensor(predictions,"predictions","absoluteDifference"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","absoluteDifference")),assertShapesMatch($labels.shape,$predictions.shape,"Error in absoluteDifference: ");let losses4=abs(sub($labels,$predictions));return computeWeightedLoss(losses4,$weights,reduction2)}var absoluteDifference=op({absoluteDifference_});function cosineDistance_(labels,predictions,axis,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","cosineDistance"),$predictions=convertToTensor(predictions,"predictions","cosineDistance"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","cosineDistance")),assertShapesMatch($labels.shape,$predictions.shape,"Error in cosineDistance: ");let one=scalar(1),losses4=sub(one,sum2(mul($labels,$predictions),axis,!0));return computeWeightedLoss(losses4,$weights,reduction2)}var cosineDistance=op({cosineDistance_});function hingeLoss_(labels,predictions,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","hingeLoss"),$predictions=convertToTensor(predictions,"predictions","hingeLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","hingeLoss")),assertShapesMatch($labels.shape,$predictions.shape,"Error in hingeLoss: ");let one=scalar(1);$labels=sub(mul(scalar(2),$labels),one);let losses4=relu(sub(one,mul($labels,$predictions)));return computeWeightedLoss(losses4,$weights,reduction2)}var hingeLoss=op({hingeLoss_});function huberLoss_(labels,predictions,weights,delta=1,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","huberLoss"),$predictions=convertToTensor(predictions,"predictions","huberLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","huberLoss")),assertShapesMatch($labels.shape,$predictions.shape,"Error in huberLoss: ");let deltaScalar=scalar(delta),error=abs(sub($predictions,$labels)),quadratic=minimum(error,deltaScalar),linear=sub(error,quadratic),losses4=add2(mul(scalar(.5),square(quadratic)),mul(deltaScalar,linear));return computeWeightedLoss(losses4,$weights,reduction2)}var huberLoss=op({huberLoss_});function logLoss_(labels,predictions,weights,epsilon32=1e-7,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","logLoss"),$predictions=convertToTensor(predictions,"predictions","logLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","logLoss")),assertShapesMatch($labels.shape,$predictions.shape,"Error in logLoss: ");let one=scalar(1),epsilonScalar=scalar(epsilon32),l13=neg(mul($labels,log(add2($predictions,epsilonScalar)))),l23=mul(sub(one,$labels),log(add2(sub(one,$predictions),epsilonScalar))),losses4=sub(l13,l23);return computeWeightedLoss(losses4,$weights,reduction2)}var logLoss=op({logLoss_});function meanSquaredError_(labels,predictions,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","meanSquaredError"),$predictions=convertToTensor(predictions,"predictions","meanSquaredError"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","meanSquaredError")),assertShapesMatch($labels.shape,$predictions.shape,"Error in meanSquaredError: ");let losses4=squaredDifference($labels,$predictions);return computeWeightedLoss(losses4,$weights,reduction2)}var meanSquaredError=op({meanSquaredError_});function sigmoidCrossEntropyWithLogits_(labels,logits){let $labels=convertToTensor(labels,"labels","sigmoidCrossEntropyWithLogits"),$logits=convertToTensor(logits,"logits","sigmoidCrossEntropyWithLogits");assertShapesMatch($labels.shape,$logits.shape,"Error in sigmoidCrossEntropyWithLogits: ");let maxOutput=relu($logits),outputXTarget=mul($logits,$labels),sigmoidOutput=log1p(exp(neg(abs($logits))));return add2(sub(maxOutput,outputXTarget),sigmoidOutput)}function sigmoidCrossEntropy_(multiClassLabels,logits,weights,labelSmoothing=0,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $multiClassLabels=convertToTensor(multiClassLabels,"multiClassLabels","sigmoidCrossEntropy"),$logits=convertToTensor(logits,"logits","sigmoidCrossEntropy"),$weights=null;if(weights!=null&&($weights=convertToTensor(weights,"weights","sigmoidCrossEntropy")),assertShapesMatch($multiClassLabels.shape,$logits.shape,"Error in sigmoidCrossEntropy: "),labelSmoothing>0){let labelSmoothingScalar=scalar(labelSmoothing),one=scalar(1),half=scalar(.5);$multiClassLabels=add2(mul($multiClassLabels,sub(one,labelSmoothingScalar)),mul(half,labelSmoothingScalar))}let losses4=sigmoidCrossEntropyWithLogits_($multiClassLabels,$logits);return computeWeightedLoss(losses4,$weights,reduction2)}var sigmoidCrossEntropy=op({sigmoidCrossEntropy_});function softmaxCrossEntropyWithLogits_(labels,logits,dim=-1){if(dim===-1&&(dim=logits.rank-1),dim!==logits.rank-1)throw Error(`Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank ${logits.rank} and dim was ${dim}`);return customGrad((labels2,logits2,save)=>{let lse=logSumExp(logits2,[dim],!0),logResult=sub(cast(logits2,"float32"),lse);save([labels2,logResult]);let costVector=neg(mul(logResult,labels2));return{value:sum2(costVector,[dim]),gradFunc:(dy,saved)=>{let[labels3,logResult2]=saved,dyShape=expandShapeToKeepDim(dy.shape,[dim]);return[mul(reshape(dy,dyShape),sub(cast(labels3,"float32"),exp(logResult2))),mul(reshape(dy,dyShape),sub(exp(logResult2),cast(labels3,"float32")))]}}})(labels,logits)}function softmaxCrossEntropy_(onehotLabels,logits,weights,labelSmoothing=0,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $onehotLabels=convertToTensor(onehotLabels,"onehotLabels","softmaxCrossEntropy"),$logits=convertToTensor(logits,"logits","softmaxCrossEntropy"),$weights=null;if(weights!=null&&($weights=convertToTensor(weights,"weights","softmaxCrossEntropy")),assertShapesMatch($onehotLabels.shape,$logits.shape,"Error in softmaxCrossEntropy: "),labelSmoothing>0){let labelSmoothingScalar=scalar(labelSmoothing),one=scalar(1),numClasses=scalar($onehotLabels.shape[1]);$onehotLabels=add2(mul($onehotLabels,sub(one,labelSmoothingScalar)),div(labelSmoothingScalar,numClasses))}let losses4=softmaxCrossEntropyWithLogits_($onehotLabels,$logits);return computeWeightedLoss(losses4,$weights,reduction2)}var softmaxCrossEntropy=op({softmaxCrossEntropy_}),spectral={fft,ifft,rfft,irfft},signal={hammingWindow,hannWindow,frame,stft},image={flipLeftRight,resizeNearestNeighbor,resizeBilinear,rotateWithOffset,cropAndResize,nonMaxSuppression,nonMaxSuppressionAsync,nonMaxSuppressionWithScore,nonMaxSuppressionWithScoreAsync,nonMaxSuppressionPadded,nonMaxSuppressionPaddedAsync},linalg={bandPart,gramSchmidt,qr},losses={absoluteDifference,computeWeightedLoss,cosineDistance,hingeLoss,huberLoss,logLoss,meanSquaredError,sigmoidCrossEntropy,softmaxCrossEntropy},Optimizer=class extends Serializable{minimize(f,returnCost=!1,varList){let{value,grads:grads2}=this.computeGradients(f,varList);if(varList!=null){let gradArray=varList.map(v=>({name:v.name,tensor:grads2[v.name]}));this.applyGradients(gradArray)}else this.applyGradients(grads2);return dispose(grads2),returnCost?value:(value.dispose(),null)}get iterations(){return this.iterations_==null&&(this.iterations_=0),this.iterations_}incrementIterations(){this.iterations_=this.iterations+1}computeGradients(f,varList){return variableGrads(f,varList)}dispose(){this.iterations_!=null&&dispose(this.iterations_)}async saveIterations(){return this.iterations_==null&&(this.iterations_=0),{name:"iter",tensor:scalar(this.iterations_,"int32")}}async getWeights(){throw new Error("getWeights() is not implemented for this optimizer yet.")}async setWeights(weightValues){throw new Error(`setWeights() is not implemented for this optimizer class ${this.getClassName()}`)}async extractIterations(weightValues){return this.iterations_=(await weightValues[0].tensor.data())[0],weightValues.slice(1)}};Object.defineProperty(Optimizer,Symbol.hasInstance,{value:instance=>instance.minimize!=null&&instance.computeGradients!=null&&instance.applyGradients!=null});var AdadeltaOptimizer=class extends Optimizer{constructor(learningRate,rho,epsilon32=null){super();this.learningRate=learningRate,this.rho=rho,this.epsilon=epsilon32,this.accumulatedGrads=[],this.accumulatedUpdates=[],epsilon32==null&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(variableGradients){(Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients)).forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedGrads[i]==null&&(this.accumulatedGrads[i]={originalName:`${name}/accum_grad`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedUpdates[i]==null&&(this.accumulatedUpdates[i]={originalName:`${name}/accum_var`,variable:tidy(()=>zerosLike(value).variable(trainable))});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let accumulatedGrad=this.accumulatedGrads[i].variable,accumulatedUpdate=this.accumulatedUpdates[i].variable;tidy(()=>{let newAccumulatedGrad=add2(mul(accumulatedGrad,this.rho),mul(square(gradient),1-this.rho)),updates=mul(div(sqrt(add2(accumulatedUpdate,this.epsilon)),sqrt(add2(accumulatedGrad,this.epsilon))),gradient),newAccumulatedUpdate=add2(mul(accumulatedUpdate,this.rho),mul(square(updates),1-this.rho));accumulatedGrad.assign(newAccumulatedGrad),accumulatedUpdate.assign(newAccumulatedUpdate);let newValue=add2(mul(updates,-this.learningRate),value);value.assign(newValue)})}),this.incrementIterations()}dispose(){this.accumulatedUpdates!=null&&(dispose(this.accumulatedGrads.map(v=>v.variable)),dispose(this.accumulatedUpdates.map(v=>v.variable)))}async getWeights(){let variables=[...this.accumulatedGrads,...this.accumulatedUpdates];return[await this.saveIterations()].concat(variables.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let variableCount=weightValues.length/2,trainable=!1;this.accumulatedGrads=weightValues.slice(0,variableCount).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.accumulatedUpdates=weightValues.slice(variableCount,variableCount*2).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}}static fromConfig(cls,config){return new cls(config.learningRate,config.rho,config.epsilon)}};AdadeltaOptimizer.className="Adadelta";registerClass(AdadeltaOptimizer);var AdagradOptimizer=class extends Optimizer{constructor(learningRate,initialAccumulatorValue=.1){super();this.learningRate=learningRate,this.initialAccumulatorValue=initialAccumulatorValue,this.accumulatedGrads=[]}applyGradients(variableGradients){(Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients)).forEach((name,i)=>{let value=ENGINE.registeredVariables[name];if(this.accumulatedGrads[i]==null){let trainable=!1;this.accumulatedGrads[i]={originalName:`${name}/accumulator`,variable:tidy(()=>fill(value.shape,this.initialAccumulatorValue).variable(trainable))}}let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let accumulatedGrad=this.accumulatedGrads[i].variable;tidy(()=>{let newAccumulatedGrad=add2(accumulatedGrad,square(gradient));accumulatedGrad.assign(newAccumulatedGrad);let newValue=add2(mul(div(gradient,sqrt(add2(newAccumulatedGrad,ENGINE.backend.epsilon()))),-this.learningRate),value);value.assign(newValue)})}),this.incrementIterations()}dispose(){this.accumulatedGrads!=null&&dispose(this.accumulatedGrads.map(v=>v.variable))}async getWeights(){return[await this.saveIterations()].concat(this.accumulatedGrads.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let trainable=!1;this.accumulatedGrads=weightValues.map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}}static fromConfig(cls,config){return new cls(config.learningRate,config.initialAccumulatorValue)}};AdagradOptimizer.className="Adagrad";registerClass(AdagradOptimizer);var AdamOptimizer=class extends Optimizer{constructor(learningRate,beta1,beta2,epsilon32=null){super();this.learningRate=learningRate,this.beta1=beta1,this.beta2=beta2,this.epsilon=epsilon32,this.accumulatedFirstMoment=[],this.accumulatedSecondMoment=[],tidy(()=>{this.accBeta1=scalar(beta1).variable(),this.accBeta2=scalar(beta2).variable()}),epsilon32==null&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(variableGradients){let varNames=Array.isArray(variableGradients)?variableGradients.map(v=>v.name):Object.keys(variableGradients);tidy(()=>{let oneMinusAccBeta1=sub(1,this.accBeta1),oneMinusAccBeta2=sub(1,this.accBeta2);varNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedFirstMoment[i]==null&&(this.accumulatedFirstMoment[i]={originalName:`${name}/m`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedSecondMoment[i]==null&&(this.accumulatedSecondMoment[i]={originalName:`${name}/v`,variable:tidy(()=>zerosLike(value).variable(trainable))});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let firstMoment=this.accumulatedFirstMoment[i].variable,secondMoment=this.accumulatedSecondMoment[i].variable,newFirstMoment=add2(mul(firstMoment,this.beta1),mul(gradient,1-this.beta1)),newSecondMoment=add2(mul(secondMoment,this.beta2),mul(square(gradient),1-this.beta2)),biasCorrectedFirstMoment=div(newFirstMoment,oneMinusAccBeta1),biasCorrectedSecondMoment=div(newSecondMoment,oneMinusAccBeta2);firstMoment.assign(newFirstMoment),secondMoment.assign(newSecondMoment);let newValue=add2(mul(div(biasCorrectedFirstMoment,add2(sqrt(biasCorrectedSecondMoment),this.epsilon)),-this.learningRate),value);value.assign(newValue)}),this.accBeta1.assign(mul(this.accBeta1,this.beta1)),this.accBeta2.assign(mul(this.accBeta2,this.beta2))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.accBeta2.dispose(),this.accumulatedFirstMoment!=null&&dispose(this.accumulatedFirstMoment.map(v=>v.variable)),this.accumulatedSecondMoment!=null&&dispose(this.accumulatedSecondMoment.map(v=>v.variable))}async getWeights(){let variables=[...this.accumulatedFirstMoment,...this.accumulatedSecondMoment];return[await this.saveIterations()].concat(variables.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues),tidy(()=>{this.accBeta1.assign(pow(this.beta1,this.iterations_+1)),this.accBeta2.assign(pow(this.beta2,this.iterations_+1))});let variableCount=weightValues.length/2,trainable=!1;this.accumulatedFirstMoment=weightValues.slice(0,variableCount).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.accumulatedSecondMoment=weightValues.slice(variableCount,variableCount*2).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}}static fromConfig(cls,config){return new cls(config.learningRate,config.beta1,config.beta2,config.epsilon)}};AdamOptimizer.className="Adam";registerClass(AdamOptimizer);var AdamaxOptimizer=class extends Optimizer{constructor(learningRate,beta1,beta2,epsilon32=null,decay=0){super();this.learningRate=learningRate,this.beta1=beta1,this.beta2=beta2,this.epsilon=epsilon32,this.decay=decay,this.accumulatedFirstMoment=[],this.accumulatedWeightedInfNorm=[],tidy(()=>{this.iteration=scalar(0).variable(),this.accBeta1=scalar(beta1).variable()}),epsilon32==null&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);tidy(()=>{let oneMinusAccBeta1=sub(1,this.accBeta1),lr=div(-this.learningRate,add2(mul(this.iteration,this.decay),1));variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedFirstMoment[i]==null&&(this.accumulatedFirstMoment[i]={originalName:`${name}/m`,variable:zerosLike(value).variable(trainable)}),this.accumulatedWeightedInfNorm[i]==null&&(this.accumulatedWeightedInfNorm[i]={originalName:`${name}/v`,variable:zerosLike(value).variable(trainable)});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let firstMoment=this.accumulatedFirstMoment[i].variable,weightedInfNorm=this.accumulatedWeightedInfNorm[i].variable,newFirstMoment=add2(mul(firstMoment,this.beta1),mul(gradient,1-this.beta1)),ut0=mul(weightedInfNorm,this.beta2),ut1=abs(gradient),newWeightedInfNorm=maximum(ut0,ut1);firstMoment.assign(newFirstMoment),weightedInfNorm.assign(newWeightedInfNorm);let newValue=add2(mul(div(lr,oneMinusAccBeta1),div(newFirstMoment,add2(newWeightedInfNorm,this.epsilon))),value);value.assign(newValue)}),this.iteration.assign(add2(this.iteration,1)),this.accBeta1.assign(mul(this.accBeta1,this.beta1))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.iteration.dispose(),this.accumulatedFirstMoment!=null&&dispose(this.accumulatedFirstMoment.map(v=>v.variable)),this.accumulatedWeightedInfNorm!=null&&dispose(this.accumulatedWeightedInfNorm.map(v=>v.variable))}async getWeights(){throw new Error("getWeights() is not implemented for Adamax yet.")}async setWeights(weightValues){throw new Error("setWeights() is not implemented for Adamax yet.")}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}}static fromConfig(cls,config){return new cls(config.learningRate,config.beta1,config.beta2,config.epsilon,config.decay)}};AdamaxOptimizer.className="Adamax";registerClass(AdamaxOptimizer);var SGDOptimizer=class extends Optimizer{constructor(learningRate){super();this.learningRate=learningRate,this.setLearningRate(learningRate)}applyGradients(variableGradients){(Array.isArray(variableGradients)?variableGradients.map(v=>v.name):Object.keys(variableGradients)).forEach((name,i)=>{let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let value=ENGINE.registeredVariables[name];tidy(()=>{let newValue=add2(mul(this.c,gradient),value);value.assign(newValue)})}),this.incrementIterations()}setLearningRate(learningRate){this.learningRate=learningRate,this.c!=null&&this.c.dispose(),this.c=keep(scalar(-learningRate))}dispose(){this.c.dispose()}async getWeights(){return[await this.saveIterations()]}async setWeights(weightValues){if(weightValues=await this.extractIterations(weightValues),weightValues.length!==0)throw new Error("SGD optimizer does not have settable weights.")}getConfig(){return{learningRate:this.learningRate}}static fromConfig(cls,config){return new cls(config.learningRate)}};SGDOptimizer.className="SGD";registerClass(SGDOptimizer);var MomentumOptimizer=class extends SGDOptimizer{constructor(learningRate,momentum,useNesterov=!1){super(learningRate);this.learningRate=learningRate,this.momentum=momentum,this.useNesterov=useNesterov,this.accumulations=[],this.m=scalar(this.momentum)}applyGradients(variableGradients){(Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients)).forEach((name,i)=>{let value=ENGINE.registeredVariables[name];if(this.accumulations[i]==null){let trainable=!1;this.accumulations[i]={originalName:`${name}/momentum`,variable:tidy(()=>zerosLike(value).variable(trainable))}}let accumulation=this.accumulations[i].variable,gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];gradient!=null&&tidy(()=>{let newValue,newAccumulation=add2(mul(this.m,accumulation),gradient);this.useNesterov?newValue=add2(mul(this.c,add2(gradient,mul(newAccumulation,this.m))),value):newValue=add2(mul(this.c,newAccumulation),value),accumulation.assign(newAccumulation),value.assign(newValue)})}),this.incrementIterations()}dispose(){this.m.dispose(),this.accumulations!=null&&dispose(this.accumulations.map(v=>v.variable))}setMomentum(momentum){this.momentum=momentum}async getWeights(){return[await this.saveIterations()].concat(this.accumulations.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let trainable=!1;this.accumulations=weightValues.map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}}static fromConfig(cls,config){return new cls(config.learningRate,config.momentum,config.useNesterov)}};MomentumOptimizer.className="Momentum";registerClass(MomentumOptimizer);var RMSPropOptimizer=class extends Optimizer{constructor(learningRate,decay=.9,momentum=0,epsilon32=null,centered=!1){super();if(this.learningRate=learningRate,this.decay=decay,this.momentum=momentum,this.epsilon=epsilon32,this.accumulatedMeanSquares=[],this.accumulatedMoments=[],this.accumulatedMeanGrads=[],this.centered=centered,epsilon32==null&&(this.epsilon=ENGINE.backend.epsilon()),learningRate==null)throw new Error("learningRate for RMSPropOptimizer must be defined.")}applyGradients(variableGradients){(Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients)).forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedMeanSquares[i]==null&&(this.accumulatedMeanSquares[i]={originalName:`${name}/rms`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedMoments[i]==null&&(this.accumulatedMoments[i]={originalName:`${name}/momentum`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedMeanGrads[i]==null&&this.centered&&(this.accumulatedMeanGrads[i]={originalName:`${name}/mg`,variable:tidy(()=>zerosLike(value).variable(trainable))});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let accumulatedMeanSquare=this.accumulatedMeanSquares[i].variable,accumulatedMoments=this.accumulatedMoments[i].variable;tidy(()=>{let newAccumulatedMeanSquare=add2(mul(accumulatedMeanSquare,this.decay),mul(square(gradient),1-this.decay));if(this.centered){let accumulatedMeanGrad=this.accumulatedMeanGrads[i].variable,newAccumulatedMeanGrad=add2(mul(accumulatedMeanGrad,this.decay),mul(gradient,1-this.decay)),gradContribution=div(mul(gradient,this.learningRate),sqrt(sub(newAccumulatedMeanSquare,add2(square(newAccumulatedMeanGrad),this.epsilon)))),newAccumulatedMoments=add2(mul(accumulatedMoments,this.momentum),gradContribution);accumulatedMeanSquare.assign(newAccumulatedMeanSquare),accumulatedMeanGrad.assign(newAccumulatedMeanGrad),accumulatedMoments.assign(newAccumulatedMoments);let newValue=sub(value,newAccumulatedMoments);value.assign(newValue)}else{let newAccumulatedMeanSquare2=add2(mul(accumulatedMeanSquare,this.decay),mul(square(gradient),1-this.decay)),newAccumulatedMoments=add2(mul(accumulatedMoments,this.momentum),div(mul(gradient,this.learningRate),sqrt(add2(newAccumulatedMeanSquare2,this.epsilon))));accumulatedMeanSquare.assign(newAccumulatedMeanSquare2),accumulatedMoments.assign(newAccumulatedMoments);let newValue=sub(value,newAccumulatedMoments);value.assign(newValue)}})}),this.incrementIterations()}dispose(){this.accumulatedMeanSquares!=null&&dispose(this.accumulatedMeanSquares.map(v=>v.variable)),this.accumulatedMeanGrads!=null&&this.centered&&dispose(this.accumulatedMeanGrads.map(v=>v.variable)),this.accumulatedMoments!=null&&dispose(this.accumulatedMoments.map(v=>v.variable))}async getWeights(){let variables=[...this.accumulatedMeanSquares,...this.accumulatedMoments];return this.centered&&variables.push(...this.accumulatedMeanGrads),[await this.saveIterations()].concat(variables.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let variableCount=this.centered?weightValues.length/3:weightValues.length/2,trainable=!1;this.accumulatedMeanSquares=weightValues.slice(0,variableCount).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.accumulatedMoments=weightValues.slice(variableCount,variableCount*2).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.centered&&(this.accumulatedMeanGrads=weightValues.slice(variableCount*2,variableCount*3).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})))}getConfig(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}}static fromConfig(cls,config){return new cls(config.learningRate,config.decay,config.momentum,config.epsilon,config.centered)}};RMSPropOptimizer.className="RMSProp";registerClass(RMSPropOptimizer);var OptimizerConstructors=class{static sgd(learningRate){return new SGDOptimizer(learningRate)}static momentum(learningRate,momentum,useNesterov=!1){return new MomentumOptimizer(learningRate,momentum,useNesterov)}static rmsprop(learningRate,decay=.9,momentum=0,epsilon32=null,centered=!1){return new RMSPropOptimizer(learningRate,decay,momentum,epsilon32,centered)}static adam(learningRate=.001,beta1=.9,beta2=.999,epsilon32=null){return new AdamOptimizer(learningRate,beta1,beta2,epsilon32)}static adadelta(learningRate=.001,rho=.95,epsilon32=null){return new AdadeltaOptimizer(learningRate,rho,epsilon32)}static adamax(learningRate=.002,beta1=.9,beta2=.999,epsilon32=null,decay=0){return new AdamaxOptimizer(learningRate,beta1,beta2,epsilon32,decay)}static adagrad(learningRate,initialAccumulatorValue=.1){return new AdagradOptimizer(learningRate,initialAccumulatorValue)}},train={sgd:OptimizerConstructors.sgd,momentum:OptimizerConstructors.momentum,adadelta:OptimizerConstructors.adadelta,adagrad:OptimizerConstructors.adagrad,rmsprop:OptimizerConstructors.rmsprop,adamax:OptimizerConstructors.adamax,adam:OptimizerConstructors.adam},delayCallback=(()=>typeof requestAnimationFrame!="undefined"?requestAnimationFrame:typeof setImmediate!="undefined"?setImmediate:f=>f())();function nextFrame(){return new Promise(resolve=>delayCallback(()=>resolve()))}var backend_util_exports={};__export2(backend_util_exports,{ERF_A1:()=>ERF_A1,ERF_A2:()=>ERF_A2,ERF_A3:()=>ERF_A3,ERF_A4:()=>ERF_A4,ERF_A5:()=>ERF_A5,ERF_P:()=>ERF_P,PARALLELIZE_THRESHOLD:()=>PARALLELIZE_THRESHOLD,SELU_SCALE:()=>SELU_SCALE,SELU_SCALEALPHA:()=>SELU_SCALEALPHA,applyActivation:()=>applyActivation,assertAndGetBroadcastShape:()=>assertAndGetBroadcastShape,assertAxesAreInnerMostDims:()=>assertAxesAreInnerMostDims,assertParamsConsistent:()=>assertParamsConsistent,assignToTypedArray:()=>assignToTypedArray,axesAreInnerMostDims:()=>axesAreInnerMostDims,calculateShapes:()=>calculateShapes,castTensor:()=>castTensor,combineLocations:()=>combineLocations,complexWithEvenIndex:()=>complexWithEvenIndex,complexWithOddIndex:()=>complexWithOddIndex,computeConv2DInfo:()=>computeConv2DInfo,computeConv3DInfo:()=>computeConv3DInfo,computeDefaultPad:()=>computeDefaultPad,computeDilation2DInfo:()=>computeDilation2DInfo,computeOptimalWindowSize:()=>computeOptimalWindowSize,computeOutAndReduceShapes:()=>computeOutAndReduceShapes,computeOutShape:()=>computeOutShape2,computePool2DInfo:()=>computePool2DInfo,computePool3DInfo:()=>computePool3DInfo,convertConv2DDataFormat:()=>convertConv2DDataFormat,eitherStridesOrDilationsAreOne:()=>eitherStridesOrDilationsAreOne,expandShapeToKeepDim:()=>expandShapeToKeepDim,exponent:()=>exponent,exponents:()=>exponents,fromStringArrayToUint8:()=>fromStringArrayToUint8,fromUint8ToStringArray:()=>fromUint8ToStringArray,getAxesPermutation:()=>getAxesPermutation,getBroadcastDims:()=>getBroadcastDims,getComplexWithIndex:()=>getComplexWithIndex,getFusedBiasGradient:()=>getFusedBiasGradient,getFusedDyActivation:()=>getFusedDyActivation,getImageCenter:()=>getImageCenter,getInnerMostAxes:()=>getInnerMostAxes,getPermuted:()=>getPermuted,getReductionAxes:()=>getReductionAxes,getReshaped:()=>getReshaped,getReshapedPermuted:()=>getReshapedPermuted,getSliceBeginCoords:()=>getSliceBeginCoords,getSliceSize:()=>getSliceSize,getUndoAxesPermutation:()=>getUndoAxesPermutation,log:()=>log2,mergeRealAndImagArrays:()=>mergeRealAndImagArrays,prepareAndValidate:()=>prepareAndValidate,prepareSplitSize:()=>prepareSplitSize,reshapeTensor:()=>reshapeTensor,segment_util:()=>segment_util_exports,shouldFuse:()=>shouldFuse,slice_util:()=>slice_util_exports,splitRealAndImagArrays:()=>splitRealAndImagArrays,tupleValuesAreOne:()=>tupleValuesAreOne,upcastType:()=>upcastType,validateInput:()=>validateInput,validateUpdateShape:()=>validateUpdateShape,warn:()=>warn});function assertParamsConsistent(shapes,axis){let rank=shapes[0].length;shapes.forEach((shape,i)=>{assert(shape.length===rank,()=>`Error in concat${rank}D: rank of tensors[${i}] must be the same as the rank of the rest (${rank})`)}),assert(axis>=0&&axis`Error in concat${rank}D: axis must be between 0 and ${rank-1}.`);let firstShape=shapes[0];shapes.forEach((shape,i)=>{for(let r=0;r`Error in concat${rank}D: Shape of tensors[${i}] (${shape}) does not match the shape of the rest (${firstShape}) along the non-concatenated axis ${i}.`)})}function computeOutShape2(shapes,axis){let outputShape=shapes[0].slice();for(let i=1;i=blockShapeRank*2+1||i%2==1?permutedAfterBatch.push(i):permutedBeforeBatch.push(i);permuted.push(...permutedBeforeBatch),permuted.push(0),permuted.push(...permutedAfterBatch)}return permuted}function getReshapedPermuted(inputShape,blockShape,prod5,batchToSpace=!0){let reshapedPermuted=[];batchToSpace?reshapedPermuted.push(inputShape[0]/prod5):reshapedPermuted.push(inputShape[0]*prod5);for(let i=1;i"Number of splits must evenly divide the axis."),splitSizes=new Array(numOrSizeSplits).fill(x.shape[axis]/numOrSizeSplits);else{let numOfNegs=numOrSizeSplits.reduce((count2,value)=>(value===-1&&(count2+=1),count2),0);assert(numOfNegs<=1,()=>"There should be only one negative value in split array.");let negIndex=numOrSizeSplits.indexOf(-1);if(negIndex!==-1){let total=numOrSizeSplits.reduce((a,b)=>b>0?a+b:a);numOrSizeSplits[negIndex]=x.shape[axis]-total}assert(x.shape[axis]===numOrSizeSplits.reduce((a,b)=>a+b),()=>"The sum of sizes must match the size of the axis dimension."),splitSizes=numOrSizeSplits}return splitSizes}var segment_util_exports={};__export2(segment_util_exports,{collectGatherOpShapeInfo:()=>collectGatherOpShapeInfo,computeOutShape:()=>computeOutShape3,segOpComputeOptimalWindowSize:()=>segOpComputeOptimalWindowSize});function segOpComputeOptimalWindowSize(inSize,numSegments){let done=!1,res;for(inSize<=PARALLELIZE_THRESHOLD?(res=inSize,done=!0):res=nearestDivisor(inSize,Math.floor(Math.sqrt(inSize)));!done;)res>numSegments||res===inSize?done=!0:res=nearestDivisor(inSize,res+1);return res}function computeOutShape3(aShape,axis,numSegments){let outShape=[],rank=aShape.length;for(let dim=0;dimindicesRank))throw new Error(`Expect batchDims in the range of [-${indicesRank}, ${indicesRank}], but got ${batchDims}`);if(batchDims<0&&(batchDims+=indicesRank),batchDims>xRank)throw new Error(`batchDims (${batchDims}) must be less than rank(x) ( - ${xRank}).`);if(axisdecodeString(val))}catch(err){throw new Error(`Failed to decode encoded string bytes into utf-8, error: ${err}`)}}function fromStringArrayToUint8(strings){return strings.map(s=>encodeString(s))}var kernel_impls_exports={};__export2(kernel_impls_exports,{nonMaxSuppressionV3Impl:()=>nonMaxSuppressionV3Impl,nonMaxSuppressionV4Impl:()=>nonMaxSuppressionV4Impl,nonMaxSuppressionV5Impl:()=>nonMaxSuppressionV5Impl,whereImpl:()=>whereImpl});var absGradConfig={kernelName:Abs,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,step(cast(x,"float32"),-1))}}},acosGradConfig={kernelName:Acos,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let a=square(cast(x,"float32")),b=sqrt(sub(scalar(1),a));return neg(div(dy,b))}}}},acoshGradConfig={kernelName:Acosh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let a=sqrt(sub(square(cast(x,"float32")),1));return div(dy,a)}}}},addGradConfig={kernelName:Add,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape);return{a:()=>{let res=dy,reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,a.shape)},b:()=>{let res=dy,reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,b.shape)}}}},addNGradConfig={kernelName:AddN,saveAllInputs:!0,gradFunc:(dy,saved)=>{let ders={};return saved.forEach((_,i)=>{ders[i]=()=>dy.clone()}),ders}},argMaxGradConfig={kernelName:ArgMax,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>zerosLike(x)}}},argMinGradConfig={kernelName:ArgMin,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>zerosLike(x)}}},asinGradConfig={kernelName:Asin,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,sqrt(sub(scalar(1),square(cast(x,"float32")))))}}},asinhGradConfig={kernelName:Asinh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let a=sqrt(add2(scalar(1),square(cast(x,"float32"))));return div(dy,a)}}}},atan2GradConfig={kernelName:Atan2,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape);return{a:()=>{let d=add2(square(a),square(b)),res=mul(dy,div(b,d)),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,a.shape)},b:()=>{let d=add2(square(a),square(b)),res=neg(mul(dy,div(a,d))),reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,b.shape)}}}},atanGradConfig={kernelName:Atan,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,add2(square(cast(x,"float32")),1))}}},atanhGradConfig={kernelName:Atanh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,sub(scalar(1),square(cast(x,"float32"))))}}};function avgPool3dGrad_(dy,input2,filterSize,strides,dilations=[1,1,1],pad3,dimRoundingMode){let $dy=convertToTensor(dy,"dy","avgPool3dGrad"),$input=convertToTensor(input2,"input","avgPool3dGrad"),dy5D=$dy,input5D=$input,reshapedTo5D=!1;$input.rank===4&&(reshapedTo5D=!0,dy5D=reshape($dy,[1,$dy.shape[0],$dy.shape[1],$dy.shape[2],$dy.shape[3]]),input5D=reshape($input,[1,$input.shape[0],$input.shape[1],$input.shape[2],$input.shape[3]])),assert(dy5D.rank===5,()=>`Error in avgPool3dGrad: dy must be rank 5 but got rank ${dy5D.rank}.`),assert(input5D.rank===5,()=>`Error in avgPool3dGrad: input must be rank 5 but got rank ${input5D.rank}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool3dGrad: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in avgPool3dGrad: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let inputs={dy:dy5D,input:input5D},attrs={filterSize,strides,dilations,pad:pad3,dimRoundingMode},res=ENGINE.runKernel(AvgPool3DGrad,inputs,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var avgPool3dGrad=op({avgPool3dGrad_}),avgPool3DGradConfig={kernelName:AvgPool3D,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{filterSize,strides,dilations,pad:pad3,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1,1]:dilations;return{x:()=>avgPool3dGrad(dy,x,filterSize,strides,$dilations,pad3,dimRoundingMode)}}};function avgPoolGrad_(dy,input2,filterSize,strides,pad3){let $dy=convertToTensor(dy,"dy","avgPoolGrad"),$input=convertToTensor(input2,"input","avgPoolGrad");assert($input.rank===$dy.rank,()=>`Rank of input (${$input.rank}) does not match rank of dy (${$dy.rank})`);let input4D=$input,dy4D=$dy,reshapedTo4D=!1;$input.rank===3&&(reshapedTo4D=!0,input4D=reshape($input,[1,$input.shape[0],$input.shape[1],$input.shape[2]]),dy4D=reshape($dy,[1,$dy.shape[0],$dy.shape[1],$dy.shape[2]])),assert(dy4D.rank===4,()=>`Error in avgPoolGrad: dy must be rank 4 but got rank ${dy4D.rank}.`),assert(input4D.rank===4,()=>`Error in avgPoolGrad: input must be rank 4 but got rank ${input4D.rank}.`);let inputs={dy:dy4D,input:input4D},attrs={filterSize,strides,pad:pad3},res=ENGINE.runKernel(AvgPoolGrad,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var avgPoolGrad=op({avgPoolGrad_}),avgPoolGradConfig={kernelName:AvgPool,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{filterSize,strides,pad:pad3}=attrs;return{x:()=>avgPoolGrad(dy,x,filterSize,strides,pad3)}}},batchMatMulGradConfig={kernelName:BatchMatMul,inputsToSave:["a","b"],gradFunc:(dy,saved,attrs)=>{let[a,b]=saved,{transposeA,transposeB}=attrs;return!transposeA&&!transposeB?{a:()=>matMul(dy,b,!1,!0),b:()=>matMul(a,dy,!0,!1)}:!transposeA&&transposeB?{a:()=>matMul(dy,b,!1,!1),b:()=>matMul(dy,a,!0,!1)}:transposeA&&!transposeB?{a:()=>matMul(b,dy,!1,!0),b:()=>matMul(a,dy,!1,!1)}:{a:()=>matMul(b,dy,!0,!0),b:()=>matMul(dy,a,!0,!0)}}},batchToSpaceNDGradConfig={kernelName:BatchToSpaceND,gradFunc:(dy,saved,attrs)=>{let{blockShape,crops}=attrs;return{x:()=>spaceToBatchND(dy,blockShape,crops)}}},broadcastToGradConfig={kernelName:BroadcastTo,gradFunc:(dy,saved,attrs)=>{let broadCastToAttrs=attrs,inputShape=broadCastToAttrs.inputShape,outputShape=broadCastToAttrs.shape,reps=Array.from(outputShape);for(let i=inputShape.length-1;i>=0;i--)if(inputShape[i]===outputShape[i])reps[i]=1;else if(inputShape[i]!==1)throw new Error(`broadcastTo(): [${inputShape}] cannot be broadcast to [${outputShape}].`);let axes=[];for(let i=0;i1&&axes.push(i);return{x:()=>sum2(dy,axes,!0)}}},castGradConfig={kernelName:Cast,gradFunc:dy=>({x:()=>dy.clone()})},ceilGradConfig={kernelName:Ceil,gradFunc:dy=>({x:()=>zerosLike(dy)})},clipByValueGradConfig={kernelName:ClipByValue,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{clipValueMin,clipValueMax}=attrs;return{x:()=>where(logicalAnd(greaterEqual(x,clipValueMin),lessEqual(x,clipValueMax)),dy,zerosLike(dy))}}},complexAbsGradConfig={kernelName:ComplexAbs,inputsToSave:["x"],gradFunc:absGradConfig.gradFunc},concatGradConfig={kernelName:Concat,saveAllInputs:!0,gradFunc:(dy,saved,attrs)=>{let shapes=saved.map(t=>t.shape),{axis}=attrs,$axis=parseAxisParam(axis,saved[0].shape)[0],sizeSplits=shapes.map(s=>s[$axis]);return split(dy,sizeSplits,$axis).map(t=>()=>t)}},conv2DGradConfig={kernelName:Conv2D,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let[x4D,$filter]=saved,{dilations,strides,pad:pad3,dataFormat}=attrs;return assert(tupleValuesAreOne(dilations),()=>`Error in gradient of conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${dilations}'`),{x:()=>conv2DBackpropInput(x4D.shape,dy,$filter,strides,pad3,dataFormat),filter:()=>conv2DBackpropFilter(x4D,dy,$filter.shape,strides,pad3,dataFormat)}}},conv2DBackpropInputGradConfig={kernelName:Conv2DBackpropInput,inputsToSave:["dy","filter"],gradFunc:(ddx,saved,attrs)=>{let[dy,filter]=saved,{strides,pad:pad3,dataFormat,dimRoundingMode}=attrs;return{dy:()=>conv2d(ddx,filter,strides,pad3,dataFormat,1,dimRoundingMode),filter:()=>conv2DBackpropFilter(ddx,dy,filter.shape,strides,pad3,dataFormat,dimRoundingMode)}}};function conv3DBackpropFilter_(x,dy,filterShape,strides,pad3){let x5D=x;x.rank===4&&(x5D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2],x.shape[3]]));let dy5D=dy;dy5D.rank===4&&(dy5D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2],dy.shape[3]])),assert(x5D.rank===5,()=>`Error in conv3dDerFilter: input must be rank 5, but got shape ${x5D.shape}.`),assert(dy5D.rank===5,()=>`Error in conv3dDerFilter: dy must be rank 5, but got shape ${dy5D.shape}.`),assert(filterShape.length===5,()=>`Error in conv3dDerFilter: filterShape must be length 5, but got ${filterShape}.`),assert(x5D.shape[4]===filterShape[3],()=>`Error in conv3dDerFilter: depth of input ${x5D.shape[4]}) must match input depth in filter (${filterShape[3]}.`),assert(dy5D.shape[4]===filterShape[4],()=>`Error in conv3dDerFilter: depth of dy (${dy5D.shape[4]}) must match output depth for filter (${filterShape[4]}).`);let inputs={x:x5D,dy:dy5D},attrs={strides,pad:pad3,filterShape};return ENGINE.runKernel(Conv3DBackpropFilterV2,inputs,attrs)}var conv3DBackpropFilter=op({conv3DBackpropFilter_}),conv3DGradConfig={kernelName:Conv3D,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let{dilations,strides,pad:pad3}=attrs;assert(tupleValuesAreOne(dilations),()=>`Error in gradient of conv3D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${dilations}'`);let[x5D,$filter]=saved;return{x:()=>conv3DBackpropInput(x5D.shape,dy,$filter,strides,pad3),filter:()=>conv3DBackpropFilter(x5D,dy,$filter.shape,strides,pad3)}}},cosGradConfig={kernelName:Cos,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(neg(sin(cast(x,"float32"))),dy)}}},coshGradConfig={kernelName:Cosh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(sinh(cast(x,"float32")),dy)}}},cumsumGradConfig={kernelName:Cumsum,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{axis,exclusive,reverse:reverse5}=attrs;return{x:()=>{let permutation=getAxesPermutation([axis],x.rank),out=cumsum(dy,axis,exclusive,!reverse5);return permutation!=null&&(out=transpose(out,permutation)),out}}}},depthwiseConv2dNativeGradConfig={kernelName:DepthwiseConv2dNative,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let{dilations,strides,pad:pad3,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1]:dilations;assert(tupleValuesAreOne($dilations),()=>`Error in gradient of depthwiseConv2dNative: dilation rates greater than 1 are not yet supported. Got dilations '${$dilations}'`);let[x,filter]=saved;return assert(x.rank===4,()=>`Error in gradient of depthwiseConv2dNative: input must be rank 4, but got rank ${x.rank}.`),assert(filter.rank===4,()=>`Error in gradient of depthwiseConv2dNative: filter must be rank 4, but got rank ${filter.rank}.`),assert(x.shape[3]===filter.shape[2],()=>`Error in gradient of depthwiseConv2d: number of input channels (${x.shape[3]}) must match the inChannels dimension in filter ${filter.shape[2]}.`),assert(eitherStridesOrDilationsAreOne(strides,$dilations),()=>`Error in gradient of depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${$dilations}'.`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`),{x:()=>depthwiseConv2dNativeBackpropInput(x.shape,dy,filter,strides,pad3,dilations,dimRoundingMode),filter:()=>depthwiseConv2dNativeBackpropFilter(x,dy,filter.shape,strides,pad3,dilations,dimRoundingMode)}}},dilation2dGradConfig={kernelName:Dilation2D,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let[x,filter]=saved,inputInputs={x,filter,dy},filterInputs={x,filter,dy};return{x:()=>ENGINE.runKernel(Dilation2DBackpropInput,inputInputs,attrs),filter:()=>ENGINE.runKernel(Dilation2DBackpropFilter,filterInputs,attrs)}}},eluGradConfig={kernelName:Elu,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved,inputs={dy,y};return{x:()=>ENGINE.runKernel(EluGrad,inputs)}}},erfGradConfig={kernelName:Erf,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved,a=mul(exp(neg(square(x))),2/Math.sqrt(Math.PI));return{x:()=>mul(dy,a)}}},expGradConfig={kernelName:Exp,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved;return{x:()=>mul(dy,y)}}},expandDimsGradConfig={kernelName:ExpandDims,inputsToSave:["input"],gradFunc:(dy,saved)=>{let[input2]=saved;return{input:()=>reshape(dy,input2.shape)}}},expm1GradConfig={kernelName:Expm1,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,exp(x))}}},floorGradConfig={kernelName:Floor,gradFunc:dy=>({x:()=>zerosLike(dy)})},floorDivGradConfig={kernelName:FloorDiv,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape);return{a:()=>{let res=div(dy,cast(b,"float32")),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),a.shape):res},b:()=>{let res=mul(dy,cast(a,"float32")),reduceAxes=getReductionAxes(b.shape,outShape);reduceAxes.length>0&&(res=reshape(sum2(res,reduceAxes),b.shape));let tmp=square(b);return neg(div(res,cast(tmp,"float32")))}}}},fusedBatchNormGradConfig={kernelName:FusedBatchNorm,inputsToSave:["x","mean","variance","scale"],gradFunc:(dy,saved,attrs)=>{let{varianceEpsilon}=attrs,[x,mean4,variance,scale22]=saved,scaleValue=scale22==null?scalar(1):scale22,reductionAxes=getReductionAxes(mean4.shape,x.shape),tileShape=[];if(mean4.rank===1){for(let i=0;imean4.rank===1?reshape(mul(mul(dy,tile(reshape(oneOverSqrtVariance,[1,1,1,mean4.shape[0]]),tileShape)),scaleValue),x.shape):reshape(mul(mul(dy,oneOverSqrtVariance),scaleValue),x.shape),mean:()=>{let meanDer=mul(mul(oneOverSqrtVariance,scalar(-1)),dyTimesScaleValue);return mean4.rank===1&&(meanDer=sum2(meanDer,reductionAxes)),reshape(meanDer,mean4.shape)},variance:()=>{let varianceDer=mul(mul(minusHalfRCube,xMinusMean),dyTimesScaleValue);return mean4.rank===1&&(varianceDer=sum2(varianceDer,reductionAxes)),reshape(varianceDer,mean4.shape)},scale:()=>{let xMinusMean2TimesRsqrt=mul(xMinusMean,oneOverSqrtVariance),scaleDer=mul(dy,xMinusMean2TimesRsqrt);return mean4.rank===1&&(scaleDer=sum2(scaleDer,reductionAxes)),reshape(scaleDer,mean4.shape)},offset:()=>{let offsetDer=dy;return mean4.rank===1&&(offsetDer=sum2(offsetDer,reductionAxes)),reshape(offsetDer,mean4.shape)}}}},gatherGradConfig={kernelName:GatherV2,inputsToSave:["x","indices"],gradFunc:(dy,saved,attrs)=>{let[x,indices]=saved,{axis}=attrs,parsedAxis=parseAxisParam(axis,x.shape)[0];return{x:()=>{let paramsShape=x.shape,indicesSize=indices.size,outerShape=paramsShape.slice(0,parsedAxis),outerDims=outerShape.length,innerShape=paramsShape.slice(axis,paramsShape.length).slice(1),innerDims=innerShape.length,outerAxesIndices=arrayRange(0,outerDims),innerAxesIndices=arrayRange(outerDims+1,outerDims+1+innerDims),valuesShape=arrayConcat([outerShape,[indicesSize],innerShape]),values=reshape(dy,valuesShape),reshapedIndices=reshape(indices,[indicesSize]),transposeDims=arrayConcat([[outerDims],outerAxesIndices,innerAxesIndices]),valuesTranspose=transpose(values,transposeDims),paramsGrad=unsortedSegmentSum(valuesTranspose,reshapedIndices,x.shape[parsedAxis]),invertTransposeDims=getUndoAxesPermutation(transposeDims);return paramsGrad=transpose(paramsGrad,invertTransposeDims),paramsGrad},indices:()=>indices}}};function arrayRange(start,stop){let result=[];for(let i=start;i{let[a,b]=saved;return{a:()=>zerosLike(a),b:()=>zerosLike(b)}}},identityGradConfig={kernelName:Identity,gradFunc:dy=>({x:()=>cast(dy,"float32")})},isFiniteGradConfig={kernelName:IsFinite,gradFunc:dy=>({x:()=>zerosLike(dy)})},isInfGradConfig={kernelName:IsInf,gradFunc:dy=>({x:()=>zerosLike(dy)})},isNanGradConfig={kernelName:IsNan,gradFunc:dy=>({x:()=>zerosLike(dy)})},leakyReluGradConfig={kernelName:LeakyRelu,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{alpha}=attrs,mask=greater(x,0);return{x:()=>where(mask,dy,mul(dy,alpha))}}},log1pGradConfig={kernelName:Log1p,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,add2(x,1))}}},logGradConfig={kernelName:Log,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,cast(x,"float32"))}}},logSoftmaxGradConfig={kernelName:LogSoftmax,inputsToSave:[],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[value]=saved,{axis}=attrs;return{logits:()=>{let keepDims=!0,softmax6=exp(value);return sub(dy,mul(sum2(dy,axis,keepDims),softmax6))}}}};function localResponseNormalizationBackprop_(x,y,dy,depthRadius=5,bias=1,alpha=1,beta=.5){let inputs={x,y,dy},attrs={depthRadius,bias,alpha,beta};return ENGINE.runKernel(LRNGrad,inputs,attrs)}var localResponseNormalizationBackprop=op({localResponseNormalizationBackprop_}),lrnGradConfig={kernelName:LRN,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[x,y]=saved,{depthRadius,bias,alpha,beta}=attrs;return{x:()=>localResponseNormalizationBackprop(x,y,dy,depthRadius,bias,alpha,beta)}}};function gradForMinAndMax(dy,y,xOrig,origAxes){return y.rankmul(dy,cast(equal(xOrig,y),dy.dtype))}}var maxGradConfig={kernelName:Max,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let maxAttrs=attrs,{reductionIndices}=maxAttrs,x=saved[0],y=saved[1],origAxes=parseAxisParam(reductionIndices,x.shape),maxGrad=gradForMinAndMax(dy,y,x,origAxes);return{x:()=>maxGrad.x()}}},maximumGradConfig={kernelName:Maximum,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved;return{a:()=>mul(dy,cast(greaterEqual(a,b),"float32")),b:()=>mul(dy,cast(less(a,b),"float32"))}}};function maxPool3dGrad_(dy,input2,output,filterSize,strides,dilations=[1,1,1],pad3,dimRoundingMode){let $dy=convertToTensor(dy,"dy","maxPool3dGrad"),$input=convertToTensor(input2,"input","maxPool3dGrad"),$output=convertToTensor(output,"output","maxPool3dGrad"),dy5D=$dy,input5D=$input,output5D=$output,reshapedTo5D=!1;$input.rank===4&&(reshapedTo5D=!0,dy5D=reshape($dy,[1,$dy.shape[0],$dy.shape[1],$dy.shape[2],$dy.shape[3]]),input5D=reshape($input,[1,$input.shape[0],$input.shape[1],$input.shape[2],$input.shape[3]]),output5D=reshape($output,[1,$output.shape[0],$output.shape[1],$output.shape[2],$output.shape[3]])),assert(dy5D.rank===5,()=>`Error in maxPool3dGrad: dy must be rank 5 but got rank ${dy5D.rank}.`),assert(input5D.rank===5,()=>`Error in maxPool3dGrad: input must be rank 5 but got rank ${input5D.rank}.`),assert(output5D.rank===5,()=>`Error in maxPool3dGrad: output must be rank 5 but got rank ${output5D.rank}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool3dGrad: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in maxPool3dGrad: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let inputs={dy:dy5D,input:input5D,output:output5D},attrs={filterSize,strides,dilations,pad:pad3,dimRoundingMode},res=ENGINE.runKernel(MaxPool3DGrad,inputs,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var maxPool3dGrad=op({maxPool3dGrad_}),maxPool3DGradConfig={kernelName:MaxPool3D,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[x,y]=saved,{filterSize,strides,dilations,pad:pad3,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1,1]:dilations;return{x:()=>maxPool3dGrad(dy,x,y,filterSize,strides,$dilations,pad3,dimRoundingMode)}}};function maxPoolGrad_(dy,input2,output,filterSize,strides,pad3,dimRoundingMode){let $dy=convertToTensor(dy,"dy","maxPoolGrad"),$input=convertToTensor(input2,"input","maxPoolGrad"),$output=convertToTensor(output,"output","maxPoolGrad");assert($input.rank===$dy.rank,()=>`Rank of input (${$input.rank}) does not match rank of dy (${$dy.rank})`),assert($dy.rank===4,()=>`Error in maxPoolGrad: dy must be rank 4 but got rank ${$dy.rank}.`),assert($input.rank===4,()=>`Error in maxPoolGrad: input must be rank 4 but got rank ${$input.rank}.`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in maxPoolGrad: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let inputs={dy:$dy,input:$input,output:$output},attrs={filterSize,strides,pad:pad3,dimRoundingMode};return ENGINE.runKernel(MaxPoolGrad,inputs,attrs)}var maxPoolGrad=op({maxPoolGrad_}),maxPoolGradConfig={kernelName:MaxPool,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[x,y]=saved,{filterSize,strides,pad:pad3}=attrs;return{x:()=>maxPoolGrad(dy,x,y,filterSize,strides,pad3)}}},meanGradConfig={kernelName:Mean,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{axis}=attrs,axes=parseAxisParam(axis,x.shape),reduceShape=computeOutAndReduceShapes(x.shape,axes)[1],reduceSize=sizeFromShape(reduceShape);return{x:()=>{let expandedDyShape=x.shape.slice();axes.forEach(axis2=>{expandedDyShape[axis2]=1});let expandedDy=reshape(dy,expandedDyShape);return div(mul(expandedDy,ones2(x.shape,"float32")),reduceSize)}}}},minGradConfig={kernelName:Min,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let minAttrs=attrs,{axis}=minAttrs,[x,y]=saved,origAxes=parseAxisParam(axis,x.shape),minGrad=gradForMinAndMax(dy,y,x,origAxes);return{x:()=>minGrad.x()}}},minimumGradConfig={kernelName:Minimum,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved;return{a:()=>mul(dy,cast(lessEqual(a,b),"float32")),b:()=>mul(dy,cast(greater(a,b),"float32"))}}},mirrorPadGradConfig={kernelName:MirrorPad,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let x=saved[0],{paddings}=attrs,begin=paddings.map(p2=>p2[0]);return{x:()=>slice(dy,begin,x.shape)}}},modGradConfig={kernelName:Mod,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape);return{a:()=>{let reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(dy,reduceAxes),a.shape):dy},b:()=>{let res=mul(dy,neg(floor(div(a,b)))),reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),b.shape):res}}}},multiplyGradConfig={kernelName:Multiply,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape);return{a:()=>{let res=mul(dy,cast(b,"float32")),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),a.shape):res},b:()=>{let res=mul(dy,cast(a,"float32")),reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),b.shape):res}}}},negGradConfig={kernelName:Neg,gradFunc:dy=>({x:()=>neg(dy)})},oneHotGradConfig={kernelName:OneHot,inputsToSave:["indices"],gradFunc:(dy,saved)=>{let indices=saved[0];return{indices:()=>zeros(indices.shape,"float32")}}},onesLikeGradConfig={kernelName:OnesLike,gradFunc:dy=>({x:()=>zerosLike(dy)})},packGradConfig={kernelName:Pack,saveAllInputs:!0,gradFunc:(dy,saved,attrs)=>{let{axis}=attrs;return unstack(dy,axis).map(t=>()=>t)}},padV2GradConfig={kernelName:PadV2,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let x=saved[0],{paddings}=attrs,begin=paddings.map(p2=>p2[0]);return{x:()=>slice(dy,begin,x.shape)}}},powGradConfig={kernelName:Pow,inputsToSave:["a","b"],outputsToSave:[!0],gradFunc:(dy,saved)=>{let[a,b,y]=saved,base2=a,exp4=b,outShape=assertAndGetBroadcastShape(base2.shape,exp4.shape);return{a:()=>{let expFloat=cast(exp4,"float32"),res=mul(dy,mul(expFloat,pow(base2,sub(expFloat,scalar(1))))),reduceAxes=getReductionAxes(base2.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,base2.shape)},b:()=>{let condition=greater(base2,0),logBase=where(condition,log(base2),zerosLike(base2)),res=mul(dy,mul(y,logBase)),reduceAxes=getReductionAxes(exp4.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,exp4.shape)}}}},preluGradConfig={kernelName:Prelu,inputsToSave:["x","alpha"],gradFunc:(dy,saved)=>{let[x,alpha]=saved,mask=greater(x,0);return{x:()=>where(mask,dy,mul(dy,alpha)),alpha:()=>{let res=where(mask,zerosLike(dy),mul(dy,x)),reduceAxes=getReductionAxes(alpha.shape,dy.shape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,alpha.shape)}}}},divGradConfig={kernelName:RealDiv,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape);return{a:()=>{let res=div(dy,cast(b,"float32")),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),a.shape):res},b:()=>{let res=mul(dy,cast(a,"float32")),reduceAxes=getReductionAxes(b.shape,outShape);reduceAxes.length>0&&(res=reshape(sum2(res,reduceAxes),b.shape));let tmp=square(b);return neg(div(res,cast(tmp,"float32")))}}}},reciprocalGradConfig={kernelName:Reciprocal,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,neg(square(x)))}}},relu6GradConfig={kernelName:Relu6,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved,mask=mul(lessEqual(x,6),step(x));return{x:()=>mul(dy,cast(mask,"float32"))}}},reluGradConfig={kernelName:Relu,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,cast(step(x),"float32"))}}},reshapeGradConfig={kernelName:Reshape,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>reshape(dy,x.shape)}}},resizeBilinearGradConfig={kernelName:ResizeBilinear,inputsToSave:["images"],gradFunc:(dy,saved,attrs)=>{let[images]=saved,inputs={dy,images};return{images:()=>ENGINE.runKernel(ResizeBilinearGrad,inputs,attrs)}}},resizeNearestNeighborGradConfig={kernelName:ResizeNearestNeighbor,inputsToSave:["images"],gradFunc:(dy,saved,attrs)=>{let[images]=saved,inputs={dy,images};return{images:()=>ENGINE.runKernel(ResizeNearestNeighborGrad,inputs,attrs)}}},reverseGradConfig={kernelName:Reverse,gradFunc:(dy,saved,attrs)=>{let{dims}=attrs,axes=parseAxisParam(dims,dy.shape);return{x:()=>reverse(dy,axes)}}},roundGradConfig={kernelName:Round,gradFunc:dy=>({x:()=>zerosLike(dy)})},rsqrtGradConfig={kernelName:Rsqrt,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>neg(div(dy,mul(pow(x,1.5),2)))}}},selectGradConfig={kernelName:Select,inputsToSave:["condition"],gradFunc:(dy,saved)=>{let[condition]=saved;return{condition:()=>cast(zerosLike(condition),"float32"),t:()=>mul(dy,cast(condition,dy.dtype)),e:()=>mul(dy,cast(logicalNot(condition),dy.dtype))}}},seluGradConfig={kernelName:Selu,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let mask=greater(x,scalar(0)),scaleAlpha2=scalar(SELU_SCALEALPHA),scale22=scalar(SELU_SCALE),greaterThanZeroDer=mul(dy,scale22),lessEqualZeroDer=mul(mul(dy,scaleAlpha2),exp(cast(x,"float32")));return where(mask,greaterThanZeroDer,lessEqualZeroDer)}}}},sigmoidGradConfig={kernelName:Sigmoid,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved;return{x:()=>mul(dy,mul(y,sub(scalar(1),y)))}}},signGradConfig={kernelName:Sign,gradFunc:dy=>({x:()=>zerosLike(dy)})},sinGradConfig={kernelName:Sin,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(cos(cast(x,"float32")),dy)}}},sinhGradConfig={kernelName:Sinh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(cosh(cast(x,"float32")),dy)}}},sliceGradConfig={kernelName:Slice,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{begin,size}=attrs,inputShape=x.shape,[begin_,size_]=parseSliceParams(x,begin,size),paddings=[];for(let i=0;ipad(dy,paddings)}}},softmaxGradConfig={kernelName:Softmax,outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[y]=saved,{dim}=attrs,keepDims=!0,dyTimesY=mul(dy,y);return{logits:()=>sub(dyTimesY,mul(sum2(dyTimesY,[dim],keepDims),y))}}},softplusGradConfig={kernelName:Softplus,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,sigmoid(x))}}},spaceToBatchNDGradConfig={kernelName:SpaceToBatchND,gradFunc:(dy,saved,attrs)=>{let{blockShape,paddings}=attrs;return{x:()=>batchToSpaceND(dy,blockShape,paddings)}}},splitVGradConfig={kernelName:SplitV,gradFunc:(dy,saved,attrs)=>{let{axis}=attrs;return{x:()=>concat(dy,axis)}}},sqrtGradConfig={kernelName:Sqrt,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,mul(sqrt(cast(x,"float32")),2))}}},squareGradConfig={kernelName:Square,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,mul(cast(x,"float32"),2))}}},squaredDifferenceGradConfig={kernelName:SquaredDifference,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,two=scalar(2);return{a:()=>mul(dy,mul(two,sub(a,b))),b:()=>mul(dy,mul(two,sub(b,a)))}}},stepGradConfig={kernelName:Step,gradFunc:dy=>({x:()=>zerosLike(dy)})},subGradConfig={kernelName:Sub,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape);return{a:()=>{let res=dy,reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,a.shape)},b:()=>{let res=dy,reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(neg(res),b.shape)}}}},sumGradConfig={kernelName:Sum,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,expandedDyShape=x.shape.slice(),{axis}=attrs;parseAxisParam(axis,x.shape).forEach(axis2=>{expandedDyShape[axis2]=1});let expandedDy=reshape(dy,expandedDyShape),derX=mul(expandedDy,ones2(x.shape,"float32"));return{x:()=>derX}}},tanGradConfig={kernelName:Tan,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,square(cos(x)))}}},tanhGradConfig={kernelName:Tanh,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved;return{x:()=>mul(sub(scalar(1),square(y)),dy)}}},tileGradConfig={kernelName:Tile,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{reps}=attrs;return{x:()=>{let xGrad=zerosLike(x);if(x.rank===1)for(let i=0;i{let transposeAttrs=attrs,{perm}=transposeAttrs,undoPerm=getUndoAxesPermutation(perm);return{x:()=>transpose(dy,undoPerm)}}},unpackGradConfig={kernelName:Unpack,gradFunc:(dy,saved,attrs)=>{let unpackAttrs=attrs,{axis}=unpackAttrs;return{value:()=>stack(dy,axis)}}},unsortedSegmentSumGradConfig={kernelName:UnsortedSegmentSum,inputsToSave:["segmentIds"],gradFunc:(dy,saved)=>{let[segmentIds]=saved;return{x:()=>gatherDropNegatives(dy,segmentIds)}}};function gatherDropNegatives(x,indices){let zeroClippedIndices=maximum(indices,zerosLike(indices)),gathered=gather(x,zeroClippedIndices),isPositive=greaterEqual(indices,scalar(0,"int32")),numIters=gathered.rank-isPositive.rank;for(let i=0;i({x:()=>zerosLike(dy)})},gradConfigs=[absGradConfig,acosGradConfig,acoshGradConfig,addGradConfig,addNGradConfig,argMaxGradConfig,argMinGradConfig,asinGradConfig,asinhGradConfig,atan2GradConfig,atanGradConfig,atanhGradConfig,avgPool3DGradConfig,avgPoolGradConfig,batchMatMulGradConfig,batchToSpaceNDGradConfig,broadcastToGradConfig,castGradConfig,ceilGradConfig,clipByValueGradConfig,complexAbsGradConfig,concatGradConfig,conv2DBackpropInputGradConfig,conv2DGradConfig,conv3DGradConfig,cosGradConfig,coshGradConfig,cumsumGradConfig,depthwiseConv2dNativeGradConfig,dilation2dGradConfig,divGradConfig,eluGradConfig,erfGradConfig,expGradConfig,expandDimsGradConfig,expm1GradConfig,floorDivGradConfig,floorGradConfig,fusedBatchNormGradConfig,gatherGradConfig,greaterEqualGradConfig,identityGradConfig,isFiniteGradConfig,isInfGradConfig,isNanGradConfig,leakyReluGradConfig,log1pGradConfig,logGradConfig,logSoftmaxGradConfig,lrnGradConfig,maxGradConfig,maxGradConfig,maximumGradConfig,maxPool3DGradConfig,maxPoolGradConfig,meanGradConfig,minGradConfig,minimumGradConfig,mirrorPadGradConfig,modGradConfig,multiplyGradConfig,negGradConfig,oneHotGradConfig,onesLikeGradConfig,packGradConfig,padV2GradConfig,padV2GradConfig,powGradConfig,preluGradConfig,reciprocalGradConfig,relu6GradConfig,reluGradConfig,reshapeGradConfig,resizeBilinearGradConfig,resizeNearestNeighborGradConfig,reverseGradConfig,roundGradConfig,rsqrtGradConfig,selectGradConfig,seluGradConfig,sigmoidGradConfig,signGradConfig,sinGradConfig,sinhGradConfig,sliceGradConfig,softmaxGradConfig,softplusGradConfig,spaceToBatchNDGradConfig,spaceToBatchNDGradConfig,splitVGradConfig,splitVGradConfig,sqrtGradConfig,squaredDifferenceGradConfig,squareGradConfig,stepGradConfig,subGradConfig,sumGradConfig,tanGradConfig,tanhGradConfig,tileGradConfig,transposeGradConfig,unpackGradConfig,unsortedSegmentSumGradConfig,zerosLikeGradConfig];for(let gradientConfig of gradConfigs)registerGradient(gradientConfig);Tensor.prototype.abs=function(){return this.throwIfDisposed(),abs(this)};Tensor.prototype.acos=function(){return this.throwIfDisposed(),acos(this)};Tensor.prototype.acosh=function(){return this.throwIfDisposed(),acosh(this)};Tensor.prototype.addStrict=function(x){return this.throwIfDisposed(),addStrict(this,x)};Tensor.prototype.add=function(b){return this.throwIfDisposed(),add2(this,b)};Tensor.prototype.all=function(axis,keepDims){return this.throwIfDisposed(),all(this,axis,keepDims)};Tensor.prototype.any=function(axis,keepDims){return this.throwIfDisposed(),any(this,axis,keepDims)};Tensor.prototype.argMax=function(axis){return this.throwIfDisposed(),argMax(this,axis)};Tensor.prototype.argMin=function(axis){return this.throwIfDisposed(),argMin(this,axis)};Tensor.prototype.asScalar=function(){return this.throwIfDisposed(),assert(this.size===1,()=>"The array must have only 1 element."),reshape(this,[])};Tensor.prototype.asType=function(dtype){return this.throwIfDisposed(),cast(this,dtype)};Tensor.prototype.as1D=function(){return this.throwIfDisposed(),reshape(this,[this.size])};Tensor.prototype.as2D=function(rows,columns){return this.throwIfDisposed(),reshape(this,[rows,columns])};Tensor.prototype.as3D=function(rows,columns,depth){return this.throwIfDisposed(),reshape(this,[rows,columns,depth])};Tensor.prototype.as4D=function(rows,columns,depth,depth2){return this.throwIfDisposed(),reshape(this,[rows,columns,depth,depth2])};Tensor.prototype.as5D=function(rows,columns,depth,depth2,depth3){return this.throwIfDisposed(),reshape(this,[rows,columns,depth,depth2,depth3])};Tensor.prototype.asin=function(){return this.throwIfDisposed(),asin(this)};Tensor.prototype.asinh=function(){return this.throwIfDisposed(),asinh(this)};Tensor.prototype.atan=function(){return this.throwIfDisposed(),atan(this)};Tensor.prototype.atan2=function(b){return this.throwIfDisposed(),atan2(this,b)};Tensor.prototype.atanh=function(){return this.throwIfDisposed(),atanh(this)};Tensor.prototype.avgPool=function(filterSize,strides,pad3,dimRoundingMode){return this.throwIfDisposed(),avgPool(this,filterSize,strides,pad3,dimRoundingMode)};Tensor.prototype.batchToSpaceND=function(blockShape,crops){return this.throwIfDisposed(),batchToSpaceND(this,blockShape,crops)};Tensor.prototype.batchNorm=function(mean4,variance,offset,scale22,varianceEpsilon){return this.throwIfDisposed(),batchNorm(this,mean4,variance,offset,scale22,varianceEpsilon)};Tensor.prototype.broadcastTo=function(shape){return this.throwIfDisposed(),broadcastTo(this,shape)};Tensor.prototype.cast=function(dtype){return this.throwIfDisposed(),cast(this,dtype)};Tensor.prototype.ceil=function(){return this.throwIfDisposed(),ceil(this)};Tensor.prototype.clipByValue=function(min6,max6){return this.throwIfDisposed(),clipByValue(this,min6,max6)};Tensor.prototype.concat=function(x,axis){return this.throwIfDisposed(),x instanceof Tensor&&(x=[x]),concat([this,...x],axis)};Tensor.prototype.conv1d=function(filter,stride,pad3,dataFormat,dilation,dimRoundingMode){return this.throwIfDisposed(),conv1d(this,filter,stride,pad3,dataFormat,dilation,dimRoundingMode)};Tensor.prototype.conv2dTranspose=function(filter,outputShape,strides,pad3,dimRoundingMode){return this.throwIfDisposed(),conv2dTranspose(this,filter,outputShape,strides,pad3,dimRoundingMode)};Tensor.prototype.conv2d=function(filter,strides,pad3,dataFormat,dilations,dimRoundingMode){return this.throwIfDisposed(),conv2d(this,filter,strides,pad3,dataFormat,dilations,dimRoundingMode)};Tensor.prototype.cos=function(){return this.throwIfDisposed(),cos(this)};Tensor.prototype.cosh=function(){return this.throwIfDisposed(),cosh(this)};Tensor.prototype.cumsum=function(axis,exclusive,reverse5){return this.throwIfDisposed(),cumsum(this,axis,exclusive,reverse5)};Tensor.prototype.depthToSpace=function(blockSize,dataFormat){return this.throwIfDisposed(),depthToSpace(this,blockSize,dataFormat)};Tensor.prototype.depthwiseConv2D=function(filter,strides,pad3,dataFormat,dilations,dimRoundingMode){return deprecationWarn("depthwiseConv2D is deprecated, use depthwiseConv2d instead"),this.throwIfDisposed(),depthwiseConv2d(this,filter,strides,pad3,dataFormat,dilations,dimRoundingMode)};Tensor.prototype.depthwiseConv2d=function(filter,strides,pad3,dataFormat,dilations,dimRoundingMode){return this.throwIfDisposed(),depthwiseConv2d(this,filter,strides,pad3,dataFormat,dilations,dimRoundingMode)};Tensor.prototype.dilation2d=function(filter,strides,pad3,dilations,dataFormat){return this.throwIfDisposed(),dilation2d(this,filter,strides,pad3,dilations,dataFormat)};Tensor.prototype.divNoNan=function(b){return this.throwIfDisposed(),divNoNan(this,b)};Tensor.prototype.divStrict=function(x){return this.throwIfDisposed(),divStrict(this,x)};Tensor.prototype.div=function(b){return this.throwIfDisposed(),div(this,b)};Tensor.prototype.dot=function(b){return this.throwIfDisposed(),dot(this,b)};Tensor.prototype.elu=function(){return this.throwIfDisposed(),elu(this)};Tensor.prototype.equalStrict=function(x){return this.throwIfDisposed(),equalStrict(this,x)};Tensor.prototype.equal=function(b){return this.throwIfDisposed(),equal(this,b)};Tensor.prototype.erf=function(){return this.throwIfDisposed(),erf(this)};Tensor.prototype.exp=function(){return this.throwIfDisposed(),exp(this)};Tensor.prototype.expandDims=function(axis){return this.throwIfDisposed(),expandDims(this,axis)};Tensor.prototype.expm1=function(){return this.throwIfDisposed(),expm1(this)};Tensor.prototype.fft=function(){return this.throwIfDisposed(),fft(this)};Tensor.prototype.flatten=function(){return this.throwIfDisposed(),reshape(this,[this.size])};Tensor.prototype.floor=function(){return this.throwIfDisposed(),floor(this)};Tensor.prototype.floorDiv=function(b){return this.throwIfDisposed(),floorDiv(this,b)};Tensor.prototype.gather=function(indices,axis){return this.throwIfDisposed(),gather(this,indices,axis)};Tensor.prototype.greaterEqualStrict=function(x){return this.throwIfDisposed(),greaterEqualStrict(this,x)};Tensor.prototype.greaterEqual=function(b){return this.throwIfDisposed(),greaterEqual(this,b)};Tensor.prototype.greaterStrict=function(x){return this.throwIfDisposed(),greaterStrict(this,x)};Tensor.prototype.greater=function(b){return this.throwIfDisposed(),greater(this,b)};Tensor.prototype.ifft=function(){return this.throwIfDisposed(),ifft(this)};Tensor.prototype.irfft=function(){return this.throwIfDisposed(),irfft(this)};Tensor.prototype.isFinite=function(){return this.throwIfDisposed(),isFinite2(this)};Tensor.prototype.isInf=function(){return this.throwIfDisposed(),isInf(this)};Tensor.prototype.isNaN=function(){return this.throwIfDisposed(),isNaN2(this)};Tensor.prototype.leakyRelu=function(alpha){return this.throwIfDisposed(),leakyRelu(this,alpha)};Tensor.prototype.lessEqualStrict=function(x){return this.throwIfDisposed(),lessEqualStrict(this,x)};Tensor.prototype.lessEqual=function(b){return this.throwIfDisposed(),lessEqual(this,b)};Tensor.prototype.lessStrict=function(x){return this.throwIfDisposed(),lessStrict(this,x)};Tensor.prototype.less=function(b){return this.throwIfDisposed(),less(this,b)};Tensor.prototype.localResponseNormalization=function(depthRadius,bias,alpha,beta){return this.throwIfDisposed(),localResponseNormalization(this,depthRadius,bias,alpha,beta)};Tensor.prototype.logSigmoid=function(){return this.throwIfDisposed(),logSigmoid(this)};Tensor.prototype.logSoftmax=function(axis){return this.throwIfDisposed(),logSoftmax(this,axis)};Tensor.prototype.logSumExp=function(axis,keepDims){return this.throwIfDisposed(),logSumExp(this,axis,keepDims)};Tensor.prototype.log=function(){return this.throwIfDisposed(),log(this)};Tensor.prototype.log1p=function(){return this.throwIfDisposed(),log1p(this)};Tensor.prototype.logicalAnd=function(b){return this.throwIfDisposed(),logicalAnd(this,b)};Tensor.prototype.logicalNot=function(){return this.throwIfDisposed(),logicalNot(this)};Tensor.prototype.logicalOr=function(b){return this.throwIfDisposed(),logicalOr(this,b)};Tensor.prototype.logicalXor=function(b){return this.throwIfDisposed(),logicalXor(this,b)};Tensor.prototype.matMul=function(b,transposeA,transposeB){return this.throwIfDisposed(),matMul(this,b,transposeA,transposeB)};Tensor.prototype.maxPool=function(filterSize,strides,pad3,dimRoundingMode){return this.throwIfDisposed(),maxPool(this,filterSize,strides,pad3,dimRoundingMode)};Tensor.prototype.max=function(axis,keepDims){return this.throwIfDisposed(),max(this,axis,keepDims)};Tensor.prototype.maximumStrict=function(x){return this.throwIfDisposed(),maximumStrict(this,x)};Tensor.prototype.maximum=function(b){return this.throwIfDisposed(),maximum(this,b)};Tensor.prototype.mean=function(axis,keepDims){return this.throwIfDisposed(),mean(this,axis,keepDims)};Tensor.prototype.min=function(axis,keepDims){return this.throwIfDisposed(),min(this,axis,keepDims)};Tensor.prototype.minimumStrict=function(x){return this.throwIfDisposed(),minimumStrict(this,x)};Tensor.prototype.minimum=function(b){return this.throwIfDisposed(),minimum(this,b)};Tensor.prototype.mirrorPad=function(paddings,mode){return this.throwIfDisposed(),mirrorPad(this,paddings,mode)};Tensor.prototype.modStrict=function(x){return this.throwIfDisposed(),modStrict(this,x)};Tensor.prototype.mod=function(b){return this.throwIfDisposed(),mod(this,b)};Tensor.prototype.mulStrict=function(x){return this.throwIfDisposed(),mulStrict(this,x)};Tensor.prototype.mul=function(b){return this.throwIfDisposed(),mul(this,b)};Tensor.prototype.neg=function(){return this.throwIfDisposed(),neg(this)};Tensor.prototype.norm=function(ord,axis,keepDims){return this.throwIfDisposed(),norm(this,ord,axis,keepDims)};Tensor.prototype.notEqualStrict=function(x){return this.throwIfDisposed(),notEqualStrict(this,x)};Tensor.prototype.notEqual=function(b){return this.throwIfDisposed(),notEqual(this,b)};Tensor.prototype.oneHot=function(depth,onValue=1,offValue=0){return this.throwIfDisposed(),oneHot(this,depth,onValue,offValue)};Tensor.prototype.onesLike=function(){return this.throwIfDisposed(),onesLike(this)};Tensor.prototype.pad=function(paddings,constantValue){return this.throwIfDisposed(),pad(this,paddings,constantValue)};Tensor.prototype.pool=function(windowShape,poolingType,padding,dilationRate,strides){return this.throwIfDisposed(),pool(this,windowShape,poolingType,padding,dilationRate,strides)};Tensor.prototype.powStrict=function(exp4){return this.throwIfDisposed(),powStrict(this,exp4)};Tensor.prototype.pow=function(exp4){return this.throwIfDisposed(),pow(this,exp4)};Tensor.prototype.prelu=function(alpha){return this.throwIfDisposed(),prelu(this,alpha)};Tensor.prototype.prod=function(axis,keepDims){return this.throwIfDisposed(),prod(this,axis,keepDims)};Tensor.prototype.reciprocal=function(){return this.throwIfDisposed(),reciprocal(this)};Tensor.prototype.relu=function(){return this.throwIfDisposed(),relu(this)};Tensor.prototype.relu6=function(){return this.throwIfDisposed(),relu6(this)};Tensor.prototype.reshapeAs=function(x){return this.throwIfDisposed(),reshape(this,x.shape)};Tensor.prototype.reshape=function(shape){return this.throwIfDisposed(),reshape(this,shape)};Tensor.prototype.resizeBilinear=function(newShape2D,alignCorners,halfPixelCenters){return this.throwIfDisposed(),resizeBilinear(this,newShape2D,alignCorners,halfPixelCenters)};Tensor.prototype.resizeNearestNeighbor=function(newShape2D,alignCorners,halfFloatCenters){return this.throwIfDisposed(),resizeNearestNeighbor(this,newShape2D,alignCorners,halfFloatCenters)};Tensor.prototype.reverse=function(axis){return this.throwIfDisposed(),reverse(this,axis)};Tensor.prototype.rfft=function(){return this.throwIfDisposed(),rfft(this)};Tensor.prototype.round=function(){return this.throwIfDisposed(),round2(this)};Tensor.prototype.rsqrt=function(){return this.throwIfDisposed(),rsqrt(this)};Tensor.prototype.selu=function(){return this.throwIfDisposed(),selu(this)};Tensor.prototype.separableConv2d=function(depthwiseFilter,pointwiseFilter,strides,pad3,dilation,dataFormat){return this.throwIfDisposed(),separableConv2d(this,depthwiseFilter,pointwiseFilter,strides,pad3,dilation,dataFormat)};Tensor.prototype.sigmoid=function(){return this.throwIfDisposed(),sigmoid(this)};Tensor.prototype.sign=function(){return this.throwIfDisposed(),sign(this)};Tensor.prototype.sin=function(){return this.throwIfDisposed(),sin(this)};Tensor.prototype.sinh=function(){return this.throwIfDisposed(),sinh(this)};Tensor.prototype.slice=function(begin,size){return this.throwIfDisposed(),slice(this,begin,size)};Tensor.prototype.softmax=function(dim){return this.throwIfDisposed(),softmax(this,dim)};Tensor.prototype.softplus=function(){return this.throwIfDisposed(),softplus(this)};Tensor.prototype.spaceToBatchND=function(blockShape,paddings){return this.throwIfDisposed(),spaceToBatchND(this,blockShape,paddings)};Tensor.prototype.split=function(numOrSizeSplits,axis){return this.throwIfDisposed(),split(this,numOrSizeSplits,axis)};Tensor.prototype.sqrt=function(){return this.throwIfDisposed(),sqrt(this)};Tensor.prototype.square=function(){return this.throwIfDisposed(),square(this)};Tensor.prototype.squaredDifference=function(b){return this.throwIfDisposed(),squaredDifference(this,b)};Tensor.prototype.squaredDifferenceStrict=function(x){return this.throwIfDisposed(),squaredDifferenceStrict(this,x)};Tensor.prototype.squeeze=function(axis){return this.throwIfDisposed(),squeeze(this,axis)};Tensor.prototype.stack=function(x,axis){this.throwIfDisposed();let tensorsToBeStacked=x instanceof Tensor?[this,x]:[this,...x];return stack(tensorsToBeStacked,axis)};Tensor.prototype.step=function(alpha){return this.throwIfDisposed(),step(this,alpha)};Tensor.prototype.stridedSlice=function(begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask){return this.throwIfDisposed(),stridedSlice(this,begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask)};Tensor.prototype.subStrict=function(x){return this.throwIfDisposed(),subStrict(this,x)};Tensor.prototype.sub=function(b){return this.throwIfDisposed(),sub(this,b)};Tensor.prototype.sum=function(axis,keepDims){return this.throwIfDisposed(),sum2(this,axis,keepDims)};Tensor.prototype.tan=function(){return this.throwIfDisposed(),tan(this)};Tensor.prototype.tanh=function(){return this.throwIfDisposed(),tanh2(this)};Tensor.prototype.tile=function(reps){return this.throwIfDisposed(),tile(this,reps)};Tensor.prototype.toBool=function(){return this.throwIfDisposed(),cast(this,"bool")};Tensor.prototype.toFloat=function(){return this.throwIfDisposed(),cast(this,"float32")};Tensor.prototype.toInt=function(){return this.throwIfDisposed(),cast(this,"int32")};Tensor.prototype.topk=function(k,sorted){return this.throwIfDisposed(),topk(this,k,sorted)};Tensor.prototype.transpose=function(perm){return this.throwIfDisposed(),transpose(this,perm)};Tensor.prototype.unique=function(axis){return this.throwIfDisposed(),unique(this,axis)};Tensor.prototype.unsortedSegmentSum=function(segmentIds,numSegments){return this.throwIfDisposed(),unsortedSegmentSum(this,segmentIds,numSegments)};Tensor.prototype.unstack=function(axis){return this.throwIfDisposed(),unstack(this,axis)};Tensor.prototype.where=function(condition,x){return this.throwIfDisposed(),where(condition,this,x)};Tensor.prototype.zerosLike=function(){return this.throwIfDisposed(),zerosLike(this)};var exports_constraints_exports={};__export2(exports_constraints_exports,{maxNorm:()=>maxNorm,minMaxNorm:()=>minMaxNorm,nonNeg:()=>nonNeg,unitNorm:()=>unitNorm});var _epsilon;function epsilon(){return _epsilon==null&&(_epsilon=backend().epsilon()),_epsilon}function imageDataFormat(){return"channelsLast"}var AttributeError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,AttributeError.prototype)}},RuntimeError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,RuntimeError.prototype)}},ValueError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,ValueError.prototype)}},NotImplementedError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,NotImplementedError.prototype)}},AssertionError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,AssertionError.prototype)}},IndexError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,IndexError.prototype)}};function pyListRepeat(value,numValues){if(Array.isArray(value)){let newArray=[];for(let i=0;ip1.toUpperCase())}var _GLOBAL_CUSTOM_OBJECTS={};function serializeKerasObject(instance){if(instance==null)return null;let dict={};return dict.className=instance.getClassName(),dict.config=instance.getConfig(),dict}function convertNDArrayScalarsInConfig(config){if(!(config==null||typeof config!="object"))if(Array.isArray(config))config.forEach(configItem=>convertNDArrayScalarsInConfig(configItem));else{let fields=Object.keys(config);for(let field of fields){let value=config[field];value!=null&&typeof value=="object"&&(!Array.isArray(value)&&value.type==="ndarray"&&typeof value.value=="number"?config[field]=value.value:convertNDArrayScalarsInConfig(value))}}}function deserializeKerasObject(identifier,moduleObjects={},customObjects={},printableModuleName="object",fastWeightInit=!1){if(typeof identifier=="string"){let functionName=identifier,fn;if(functionName in customObjects)fn=customObjects[functionName];else if(functionName in _GLOBAL_CUSTOM_OBJECTS)fn=_GLOBAL_CUSTOM_OBJECTS[functionName];else if(fn=moduleObjects[functionName],fn==null)throw new ValueError(`Unknown ${printableModuleName}: ${identifier}. This may be due to one of the following reasons: -1. The ${printableModuleName} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code. -2. The custom ${printableModuleName} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);return fn}else{let config=identifier;if(config.className==null||config.config==null)throw new ValueError(`${printableModuleName}: Improper config format: ${JSON.stringify(config)}. -'className' and 'config' must set.`);let className=config.className,cls,fromConfig;if(className in customObjects?[cls,fromConfig]=customObjects[className]:className in _GLOBAL_CUSTOM_OBJECTS?[cls,fromConfig]=_GLOBAL_CUSTOM_OBJECTS.className:className in moduleObjects&&([cls,fromConfig]=moduleObjects[className]),cls==null)throw new ValueError(`Unknown ${printableModuleName}: ${className}. This may be due to one of the following reasons: -1. The ${printableModuleName} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code. -2. The custom ${printableModuleName} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);if(fromConfig!=null){let customObjectsCombined={};for(let key of Object.keys(_GLOBAL_CUSTOM_OBJECTS))customObjectsCombined[key]=_GLOBAL_CUSTOM_OBJECTS[key];for(let key of Object.keys(customObjects))customObjectsCombined[key]=customObjects[key];let nestedConfig=config.config;nestedConfig.customObjects=customObjectsCombined;let backupCustomObjects=Object.assign({},_GLOBAL_CUSTOM_OBJECTS);for(let key of Object.keys(customObjects))_GLOBAL_CUSTOM_OBJECTS[key]=customObjects[key];convertNDArrayScalarsInConfig(config.config);let returnObj=fromConfig(cls,config.config,customObjects,fastWeightInit);return _GLOBAL_CUSTOM_OBJECTS=Object.assign({},backupCustomObjects),returnObj}else{let backupCustomObjects=Object.assign({},_GLOBAL_CUSTOM_OBJECTS);for(let key of Object.keys(customObjects))_GLOBAL_CUSTOM_OBJECTS[key]=customObjects[key];let returnObj=new cls(config.config);return _GLOBAL_CUSTOM_OBJECTS=Object.assign({},backupCustomObjects),returnObj}}}function numberCompare(a,b){return ab?1:0}function reverseNumberCompare(a,b){return-1*numberCompare(a,b)}function unique2(xs){if(xs==null)return xs;let out=[];for(let x of xs)out.indexOf(x)===-1&&out.push(x);return out}function isObjectEmpty(obj){if(obj==null)throw new ValueError(`Invalid value in obj: ${JSON.stringify(obj)}`);for(let key in obj)if(obj.hasOwnProperty(key))return!1;return!0}function checkStringTypeUnionValue(values,label,value){if(value!=null&&values.indexOf(value)<0)throw new ValueError(`${value} is not a valid ${label}. Valid values are ${values} or null/undefined.`)}function checkArrayTypeAndLength(x,expectedType,minLength=0,maxLength=Infinity){return assert2(minLength>=0),assert2(maxLength>=minLength),Array.isArray(x)&&x.length>=minLength&&x.length<=maxLength&&x.every(e=>typeof e===expectedType)}function assertPositiveInteger(value,name){Array.isArray(value)?(util_exports.assert(value.length>0,()=>`${name} is unexpectedly an empty array.`),value.forEach((v,i)=>assertPositiveInteger(v,`element ${i+1} of ${name}`))):util_exports.assert(Number.isInteger(value)&&value>0,()=>`Expected ${name} to be a positive integer, but got ${formatAsFriendlyString(value)}.`)}function formatAsFriendlyString(value){return value===null?"null":Array.isArray(value)?"["+value.map(v=>formatAsFriendlyString(v)).join(",")+"]":typeof value=="string"?`"${value}"`:`${value}`}function debounce(f,waitMs){let lastTime=util_exports.now(),lastResult;return(...args)=>{let now2=util_exports.now();return now2-lastTimesqrt(sum2(mul(w,w),axis,!0)))}var Constraint=class extends serialization_exports.Serializable{getConfig(){return{}}},MaxNorm=class extends Constraint{constructor(args){super();this.defaultMaxValue=2,this.defaultAxis=0,this.maxValue=args.maxValue!=null?args.maxValue:this.defaultMaxValue,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>{let norms=calcL2Norms(w,this.axis),desired=clipByValue(norms,0,this.maxValue);return mul(w,div(desired,add2(epsilon(),norms)))})}getConfig(){return{maxValue:this.maxValue,axis:this.axis}}};MaxNorm.className="MaxNorm";serialization_exports.registerClass(MaxNorm);var UnitNorm=class extends Constraint{constructor(args){super();this.defaultAxis=0,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>div(w,add2(epsilon(),calcL2Norms(w,this.axis))))}getConfig(){return{axis:this.axis}}};UnitNorm.className="UnitNorm";serialization_exports.registerClass(UnitNorm);var NonNeg=class extends Constraint{apply(w){return relu(w)}};NonNeg.className="NonNeg";serialization_exports.registerClass(NonNeg);var MinMaxNorm=class extends Constraint{constructor(args){super();this.defaultMinValue=0,this.defaultMaxValue=1,this.defaultRate=1,this.defaultAxis=0,this.minValue=args.minValue!=null?args.minValue:this.defaultMinValue,this.maxValue=args.maxValue!=null?args.maxValue:this.defaultMaxValue,this.rate=args.rate!=null?args.rate:this.defaultRate,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>{let norms=calcL2Norms(w,this.axis),desired=add2(mul(this.rate,clipByValue(norms,this.minValue,this.maxValue)),mul(1-this.rate,norms));return mul(w,div(desired,add2(epsilon(),norms)))})}getConfig(){return{minValue:this.minValue,maxValue:this.maxValue,rate:this.rate,axis:this.axis}}};MinMaxNorm.className="MinMaxNorm";serialization_exports.registerClass(MinMaxNorm);var CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP={maxNorm:"MaxNorm",minMaxNorm:"MinMaxNorm",nonNeg:"NonNeg",unitNorm:"UnitNorm"};function serializeConstraint(constraint){return serializeKerasObject(constraint)}function deserializeConstraint(config,customObjects={}){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"constraint")}function getConstraint(identifier){if(identifier==null)return null;if(typeof identifier=="string"){let config={className:identifier in CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP?CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier,config:{}};return deserializeConstraint(config)}else return identifier instanceof Constraint?identifier:deserializeConstraint(identifier)}function maxNorm(args){return new MaxNorm(args)}function unitNorm(args){return new UnitNorm(args)}function nonNeg(){return new NonNeg}function minMaxNorm(config){return new MinMaxNorm(config)}var exports_initializers_exports={};__export2(exports_initializers_exports,{constant:()=>constant,glorotNormal:()=>glorotNormal,glorotUniform:()=>glorotUniform,heNormal:()=>heNormal,heUniform:()=>heUniform,identity:()=>identity,leCunNormal:()=>leCunNormal,leCunUniform:()=>leCunUniform,ones:()=>ones3,orthogonal:()=>orthogonal,randomNormal:()=>randomNormal3,randomUniform:()=>randomUniform2,truncatedNormal:()=>truncatedNormal2,varianceScaling:()=>varianceScaling,zeros:()=>zeros2});var VALID_DATA_FORMAT_VALUES=["channelsFirst","channelsLast"],VALID_INTERPOLATION_FORMAT_VALUES=["nearest","bilinear"],VALID_PADDING_MODE_VALUES=["valid","same","causal"],VALID_POOL_MODE_VALUES=["max","avg"],VALID_BIDIRECTIONAL_MERGE_MODES=["sum","mul","concat","ave"],nameMap=new Map;function checkDataFormat(value){checkStringTypeUnionValue(VALID_DATA_FORMAT_VALUES,"DataFormat",value)}function checkInterpolationFormat(value){checkStringTypeUnionValue(VALID_INTERPOLATION_FORMAT_VALUES,"InterpolationFormat",value)}function checkPaddingMode(value){checkStringTypeUnionValue(VALID_PADDING_MODE_VALUES,"PaddingMode",value)}function checkPoolMode(value){checkStringTypeUnionValue(VALID_POOL_MODE_VALUES,"PoolMode",value)}var _nameScopeStack=[],_nameScopeDivider="/";function nameScope(name,fn){_nameScopeStack.push(name);try{let val=fn();return _nameScopeStack.pop(),val}catch(e){throw _nameScopeStack.pop(),e}}function currentNameScopePrefix(){return _nameScopeStack.length===0?"":_nameScopeStack.join(_nameScopeDivider)+_nameScopeDivider}function getScopedTensorName(tensorName){if(!isValidTensorName(tensorName))throw new Error("Not a valid tensor name: '"+tensorName+"'");return currentNameScopePrefix()+tensorName}function getUniqueTensorName(scopedName){if(!isValidTensorName(scopedName))throw new Error("Not a valid tensor name: '"+scopedName+"'");nameMap.has(scopedName)||nameMap.set(scopedName,0);let index=nameMap.get(scopedName);if(nameMap.set(scopedName,nameMap.get(scopedName)+1),index>0){let result=`${scopedName}_${index}`;return nameMap.set(result,1),result}else return scopedName}var tensorNameRegex=new RegExp(/^[A-Za-z0-9][-A-Za-z0-9\._\/]*$/);function isValidTensorName(name){return!!name.match(tensorNameRegex)}function isInteger(x){return x===parseInt(x.toString(),10)}function arrayProd(array2,begin,end){begin==null&&(begin=0),end==null&&(end=array2.length);let prod5=1;for(let i=begin;i{if(x.shape.length!==2)throw new ValueError(`repeat() expects a rank-2 tensor, but received a rank-${x.shape.length} tensor.`);let y=expandDims2(x,1);return tile2(y,[1,n,1])})}function flatten2(x){let newShape=[arrayProd(x.shape)];return x.reshape(newShape)}function batchFlatten(x){if(x.rank<=1)throw new ValueError(`batchFlatten requires a minimum rank of 2. Got rank: ${x.rank}.`);let newShape=[x.shape[0],arrayProd(x.shape,1)];return x.reshape(newShape)}function sliceAlongFirstAxis(array2,start,size){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:return slice2d(array2,[start,0],[size,array2.shape[1]]);case 3:return slice3d(array2,[start,0,0],[size,array2.shape[1],array2.shape[2]]);case 4:return slice4d(array2,[start,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3]]);case 5:return slice(array2,[start,0,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3],array2.shape[4]]);case 6:return slice(array2,[start,0,0,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3],array2.shape[4],array2.shape[5]]);default:throw new ValueError(`sliceAlongFirstAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function sliceAlongLastAxis(array2,start,size){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:return slice2d(array2,[0,start],[array2.shape[0],size]);case 3:return slice3d(array2,[0,0,start],[array2.shape[0],array2.shape[1],size]);case 4:return slice4d(array2,[0,0,0,start],[array2.shape[0],array2.shape[1],array2.shape[2],size]);default:throw new ValueError(`sliceAlongLastAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function sliceAlongAxis(array2,start,size,axis){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}case 3:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return slice3d(array2,[0,start,0],[array2.shape[0],size,array2.shape[2]]);case 3:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}case 4:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return slice4d(array2,[0,start,0,0],[array2.shape[0],size,array2.shape[2],array2.shape[3]]);case 3:return slice4d(array2,[0,0,start,0],[array2.shape[0],array2.shape[1],size,array2.shape[3]]);case 4:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}default:throw new ValueError(`sliceAlongLastAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function concatenate(tensors,axis=-1){let rank;return axis<0&&(rank=tensors[0].rank,rank!==0?axis=rank:axis=0),axis===tensors[0].rank&&(axis=-1),concat(tensors,axis)}function concatAlongFirstAxis(a,b){switch(a.rank){case 1:return concat1d([a,b]);case 2:return concat2d([a,b],0);case 3:return concat3d([a,b],0);case 4:return concat4d([a,b],0);default:throw new ValueError(`concatAlongFirstAxis() received an unsupported tensor rank: ${a.rank}`)}}function tile2(x,n){if(Array.isArray(n)||(n=[n]),x.rank!==n.length)throw new ValueError(`The length of input n (${n.length}) does not match the number of dimensions in input x (${x.rank})`);return tile(x,n)}function randomNormal2(shape,mean4=0,stddev=1,dtype,seed){return randomNormal(shape,mean4,stddev,dtype,seed)}function dot2(a,b,activation2,bias){if(a.rank<2||b.rank<2)throw new NotImplementedError(`dot requires both inputs to be rank >= 2 but got x shape = ${a.shape} and y shape = ${b.shape}`);if(b.rank>=3){let xLastDim=a.shape.slice(-1)[0],ySecondLastDim=b.shape.slice(-2)[0];if(xLastDim!==ySecondLastDim)throw new NotImplementedError(`If rank y >= 3, then the second last dim of y must equal the last dim of x but got x shape = ${a.shape} and y shape = ${b.shape}`)}if(a.rank===2&&b.rank===2){let transposeA=!1,transposeB=!1;return fused_ops_exports.matMul({a,b,transposeA,transposeB,bias:bias?reshapeBias(a.rank,bias,imageDataFormat()):null,activation:activation2})}else{let aFirstDims=a.shape.slice(),aLastDim=aFirstDims.pop();a=a.reshape([-1,aLastDim]);let bShape=b.shape.slice(),bLastDim=bShape.pop(),ySecondLastDim=bShape.pop(),yOtherDims=[...bShape,bLastDim],perm=Array.from({length:b.rank},(_,i)=>i===0?b.rank-2:i<=b.rank-2?i-1:i);b=b.transpose(perm).reshape([ySecondLastDim,-1]);let outputShape=[...aFirstDims,...yOtherDims],transposeA=!1,transposeB=!1;return fused_ops_exports.matMul({a,b,transposeA,transposeB,bias:bias?reshapeBias(a.rank,bias,imageDataFormat()):null,activation:activation2}).reshape(outputShape)}}function gather2(reference,indices,axis){return tidy(()=>(Array.isArray(indices)?indices=tensor1d(indices,"int32"):indices=indices.toInt(),gather(reference,indices,axis)))}function square2(x){return mul(x,x)}function reshapeBias(xRank,bias,dataFormat){let biasShape=bias.shape;if(bias.rank!==1&&bias.rank!==xRank)throw new ValueError(`Unexpected bias dimensions: ${bias.rank}; expected it to be 1 or ${xRank}`);if(xRank===5){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1,1,1]):bias.reshape([1,biasShape[3],biasShape[0],biasShape[1],biasShape[2]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank===4){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1,1]):bias.reshape([1,biasShape[2],biasShape[0],biasShape[1]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank===3){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1]):bias.reshape([1,biasShape[1],biasShape[0]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank<3)return bias;throw new ValueError(`Unsupported input rank by biasAdd: ${bias.rank}`)}function biasAdd(x,bias,dataFormat){return tidy(()=>(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.add(reshapeBias(x.rank,bias,dataFormat))))}function elu2(x,alpha=1){if(alpha!==1)throw new NotImplementedError(`Support for alpha values other than 1 (${alpha}) is not implemented yet.`);return elu(x)}function softsign(x){return tidy(()=>div(x,abs(x).add(1)))}function dropout2(x,level,noiseShape,seed){return tidy(()=>dropout(x,level,noiseShape,seed))}function hardSigmoid(x){return tidy(()=>{let y=add2(.5,mul(.2,x));return clipByValue(y,0,1)})}function inTrainPhase(x,alt,training=!1){return training?x():alt()}var VALID_FAN_MODE_VALUES=["fanIn","fanOut","fanAvg"],VALID_DISTRIBUTION_VALUES=["normal","uniform","truncatedNormal"];function checkFanMode(value){checkStringTypeUnionValue(VALID_FAN_MODE_VALUES,"FanMode",value)}function checkDistribution(value){checkStringTypeUnionValue(VALID_DISTRIBUTION_VALUES,"Distribution",value)}var Initializer=class extends serialization_exports.Serializable{fromConfigUsesCustomObjects(){return!1}getConfig(){return{}}},Zeros=class extends Initializer{apply(shape,dtype){return zeros(shape,dtype)}};Zeros.className="Zeros";serialization_exports.registerClass(Zeros);var Ones=class extends Initializer{apply(shape,dtype){return ones2(shape,dtype)}};Ones.className="Ones";serialization_exports.registerClass(Ones);var Constant=class extends Initializer{constructor(args){super();if(typeof args!="object")throw new ValueError(`Expected argument of type ConstantConfig but got ${args}`);if(args.value===void 0)throw new ValueError(`config must have value set but got ${args}`);this.value=args.value}apply(shape,dtype){return tidy(()=>mul(scalar(this.value),ones2(shape,dtype)))}getConfig(){return{value:this.value}}};Constant.className="Constant";serialization_exports.registerClass(Constant);var RandomUniform=class extends Initializer{constructor(args){super();this.DEFAULT_MINVAL=-.05,this.DEFAULT_MAXVAL=.05,this.minval=args.minval||this.DEFAULT_MINVAL,this.maxval=args.maxval||this.DEFAULT_MAXVAL,this.seed=args.seed}apply(shape,dtype){return randomUniform(shape,this.minval,this.maxval,dtype)}getConfig(){return{minval:this.minval,maxval:this.maxval,seed:this.seed}}};RandomUniform.className="RandomUniform";serialization_exports.registerClass(RandomUniform);var RandomNormal=class extends Initializer{constructor(args){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=args.mean||this.DEFAULT_MEAN,this.stddev=args.stddev||this.DEFAULT_STDDEV,this.seed=args.seed}apply(shape,dtype){if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`randomNormal does not support dType ${dtype}.`);return randomNormal2(shape,this.mean,this.stddev,dtype,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};RandomNormal.className="RandomNormal";serialization_exports.registerClass(RandomNormal);var TruncatedNormal=class extends Initializer{constructor(args){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=args.mean||this.DEFAULT_MEAN,this.stddev=args.stddev||this.DEFAULT_STDDEV,this.seed=args.seed}apply(shape,dtype){if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`truncatedNormal does not support dType ${dtype}.`);return truncatedNormal(shape,this.mean,this.stddev,dtype,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};TruncatedNormal.className="TruncatedNormal";serialization_exports.registerClass(TruncatedNormal);var Identity2=class extends Initializer{constructor(args){super();this.gain=args.gain!=null?args.gain:1}apply(shape,dtype){return tidy(()=>{if(shape.length!==2||shape[0]!==shape[1])throw new ValueError("Identity matrix initializer can only be used for 2D square matrices.");return mul(this.gain,eye(shape[0]))})}getConfig(){return{gain:this.gain}}};Identity2.className="Identity";serialization_exports.registerClass(Identity2);function computeFans(shape,dataFormat="channelsLast"){let fanIn,fanOut;if(checkDataFormat(dataFormat),shape.length===2)fanIn=shape[0],fanOut=shape[1];else if([3,4,5].indexOf(shape.length)!==-1){if(dataFormat==="channelsFirst"){let receptiveFieldSize=arrayProd(shape,2);fanIn=shape[1]*receptiveFieldSize,fanOut=shape[0]*receptiveFieldSize}else if(dataFormat==="channelsLast"){let receptiveFieldSize=arrayProd(shape,0,shape.length-2);fanIn=shape[shape.length-2]*receptiveFieldSize,fanOut=shape[shape.length-1]*receptiveFieldSize}}else{let shapeProd=arrayProd(shape);fanIn=Math.sqrt(shapeProd),fanOut=Math.sqrt(shapeProd)}return[fanIn,fanOut]}var VarianceScaling=class extends Initializer{constructor(args){super();if(args.scale<0)throw new ValueError(`scale must be a positive float. Got: ${args.scale}`);this.scale=args.scale==null?1:args.scale,this.mode=args.mode==null?"fanIn":args.mode,checkFanMode(this.mode),this.distribution=args.distribution==null?"normal":args.distribution,checkDistribution(this.distribution),this.seed=args.seed}apply(shape,dtype){let fans=computeFans(shape),fanIn=fans[0],fanOut=fans[1],scale22=this.scale;if(this.mode==="fanIn"?scale22/=Math.max(1,fanIn):this.mode==="fanOut"?scale22/=Math.max(1,fanOut):scale22/=Math.max(1,(fanIn+fanOut)/2),this.distribution==="normal"){let stddev=Math.sqrt(scale22);if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`${this.getClassName()} does not support dType ${dtype}.`);return truncatedNormal(shape,0,stddev,dtype,this.seed)}else{let limit=Math.sqrt(3*scale22);return randomUniform(shape,-limit,limit,dtype)}}getConfig(){return{scale:this.scale,mode:this.mode,distribution:this.distribution,seed:this.seed}}};VarianceScaling.className="VarianceScaling";serialization_exports.registerClass(VarianceScaling);var GlorotUniform=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanAvg",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};GlorotUniform.className="GlorotUniform";serialization_exports.registerClass(GlorotUniform);var GlorotNormal=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanAvg",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};GlorotNormal.className="GlorotNormal";serialization_exports.registerClass(GlorotNormal);var HeNormal=class extends VarianceScaling{constructor(args){super({scale:2,mode:"fanIn",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};HeNormal.className="HeNormal";serialization_exports.registerClass(HeNormal);var HeUniform=class extends VarianceScaling{constructor(args){super({scale:2,mode:"fanIn",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};HeUniform.className="HeUniform";serialization_exports.registerClass(HeUniform);var LeCunNormal=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanIn",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};LeCunNormal.className="LeCunNormal";serialization_exports.registerClass(LeCunNormal);var LeCunUniform=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanIn",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};LeCunUniform.className="LeCunNormal";serialization_exports.registerClass(LeCunUniform);var Orthogonal=class extends Initializer{constructor(args){super();if(this.DEFAULT_GAIN=1,this.gain=args.gain==null?this.DEFAULT_GAIN:args.gain,this.seed=args.seed,this.seed!=null)throw new NotImplementedError("Random seed is not implemented for Orthogonal Initializer yet.")}apply(shape,dtype){return tidy(()=>{if(shape.length<2)throw new NotImplementedError("Shape must be at least 2D.");shape[0]*shape[1]>2e3&&console.warn(`Orthogonal initializer is being called on a matrix with more than 2000 (${shape[0]*shape[1]}) elements: Slowness may result.`);let normalizedShape=shape[0]>shape[1]?[shape[1],shape[0]]:shape,a=randomNormal2(normalizedShape,0,1,"float32"),q=linalg.gramSchmidt(a);return shape[0]>shape[1]&&(q=q.transpose()),mul(this.gain,q)})}getConfig(){return{gain:this.gain,seed:this.seed}}};Orthogonal.className="Orthogonal";serialization_exports.registerClass(Orthogonal);var INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP={constant:"Constant",glorotNormal:"GlorotNormal",glorotUniform:"GlorotUniform",heNormal:"HeNormal",heUniform:"HeUniform",identity:"Identity",leCunNormal:"LeCunNormal",leCunUniform:"LeCunUniform",ones:"Ones",orthogonal:"Orthogonal",randomNormal:"RandomNormal",randomUniform:"RandomUniform",truncatedNormal:"TruncatedNormal",varianceScaling:"VarianceScaling",zeros:"Zeros"};function deserializeInitializer(config,customObjects={}){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"initializer")}function serializeInitializer(initializer){return serializeKerasObject(initializer)}function getInitializer(identifier){if(typeof identifier=="string"){let className=identifier in INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP?INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier;if(className==="GlorotNormal")return new GlorotNormal;if(className==="GlorotUniform")return new GlorotUniform;if(className==="HeNormal")return new HeNormal;if(className==="HeUniform")return new HeUniform;if(className==="LeCunNormal")return new LeCunNormal;if(className==="LeCunUniform")return new LeCunUniform;{let config={};return config.className=className,config.config={},deserializeInitializer(config)}}else return identifier instanceof Initializer?identifier:deserializeInitializer(identifier)}function zeros2(){return new Zeros}function ones3(){return new Ones}function constant(args){return new Constant(args)}function randomUniform2(args){return new RandomUniform(args)}function randomNormal3(args){return new RandomNormal(args)}function truncatedNormal2(args){return new TruncatedNormal(args)}function identity(args){return new Identity2(args)}function varianceScaling(config){return new VarianceScaling(config)}function glorotUniform(args){return new GlorotUniform(args)}function glorotNormal(args){return new GlorotNormal(args)}function heNormal(args){return new HeNormal(args)}function heUniform(args){return new HeUniform(args)}function leCunNormal(args){return new LeCunNormal(args)}function leCunUniform(args){return new LeCunUniform(args)}function orthogonal(args){return new Orthogonal(args)}var exports_layers_exports={};__export2(exports_layers_exports,{Layer:()=>Layer,RNN:()=>RNN,RNNCell:()=>RNNCell,activation:()=>activation,add:()=>add3,alphaDropout:()=>alphaDropout,average:()=>average,averagePooling1d:()=>averagePooling1d,averagePooling2d:()=>averagePooling2d,averagePooling3d:()=>averagePooling3d,avgPool1d:()=>avgPool1d,avgPool2d:()=>avgPool2d,avgPool3d:()=>avgPool3d2,avgPooling1d:()=>avgPooling1d,avgPooling2d:()=>avgPooling2d,avgPooling3d:()=>avgPooling3d,batchNormalization:()=>batchNormalization2,bidirectional:()=>bidirectional,concatenate:()=>concatenate2,conv1d:()=>conv1d2,conv2d:()=>conv2d3,conv2dTranspose:()=>conv2dTranspose2,conv3d:()=>conv3d2,convLstm2d:()=>convLstm2d,convLstm2dCell:()=>convLstm2dCell,cropping2D:()=>cropping2D,dense:()=>dense,depthwiseConv2d:()=>depthwiseConv2d4,dot:()=>dot3,dropout:()=>dropout3,elu:()=>elu3,embedding:()=>embedding,flatten:()=>flatten3,gaussianDropout:()=>gaussianDropout,gaussianNoise:()=>gaussianNoise,globalAveragePooling1d:()=>globalAveragePooling1d,globalAveragePooling2d:()=>globalAveragePooling2d,globalMaxPool1d:()=>globalMaxPool1d,globalMaxPool2d:()=>globalMaxPool2d,globalMaxPooling1d:()=>globalMaxPooling1d,globalMaxPooling2d:()=>globalMaxPooling2d,gru:()=>gru,gruCell:()=>gruCell,input:()=>input,inputLayer:()=>inputLayer,layerNormalization:()=>layerNormalization,leakyReLU:()=>leakyReLU,lstm:()=>lstm,lstmCell:()=>lstmCell,masking:()=>masking,maxPool1d:()=>maxPool1d,maxPool2d:()=>maxPool2d,maxPooling1d:()=>maxPooling1d,maxPooling2d:()=>maxPooling2d,maxPooling3d:()=>maxPooling3d,maximum:()=>maximum2,minimum:()=>minimum2,multiply:()=>multiply,permute:()=>permute,prelu:()=>prelu2,reLU:()=>reLU,repeatVector:()=>repeatVector,reshape:()=>reshape2,rnn:()=>rnn2,separableConv2d:()=>separableConv2d2,simpleRNN:()=>simpleRNN,simpleRNNCell:()=>simpleRNNCell,softmax:()=>softmax2,spatialDropout1d:()=>spatialDropout1d,stackedRNNCells:()=>stackedRNNCells,thresholdedReLU:()=>thresholdedReLU,timeDistributed:()=>timeDistributed,upSampling2d:()=>upSampling2d,zeroPadding2d:()=>zeroPadding2d});var _nextUniqueTensorId=0;function getNextUniqueTensorId(){return _nextUniqueTensorId++}var _uidPrefixes={};function getUid(prefix=""){return prefix in _uidPrefixes||(_uidPrefixes[prefix]=0),_uidPrefixes[prefix]+=1,prefix+_uidPrefixes[prefix].toString()}function isArrayOfShapes(x){return Array.isArray(x)&&Array.isArray(x[0])}function normalizeShapeList(x){return x.length===0?[]:Array.isArray(x[0])?x:[x]}function getExactlyOneTensor(xs){let x;if(Array.isArray(xs)){if(xs.length!==1)throw new ValueError(`Expected Tensor length to be 1; got ${xs.length}`);x=xs[0]}else x=xs;return x}function getExactlyOneShape(shapes){if(Array.isArray(shapes)&&Array.isArray(shapes[0])){if(shapes.length===1)return shapes=shapes,shapes[0];throw new ValueError(`Expected exactly 1 Shape; got ${shapes.length}`)}else return shapes}function countParamsInWeights(weights){let count2=0;for(let weight of weights)weight.shape.length===0?count2+=1:count2+=weight.shape.reduce((a,b)=>a*b);return count2}var DEFAULT_VARIABLE_NAME_PREFIX="Variable",LayerVariable=class{constructor(val,dtype="float32",name=DEFAULT_VARIABLE_NAME_PREFIX,trainable=!0,constraint=null){this.dtype=dtype==null?"float32":dtype,this.shape=val.shape,this.id=getNextUniqueTensorId(),name=name==null?DEFAULT_VARIABLE_NAME_PREFIX:name,this.originalName=getScopedTensorName(name),this.name=getUniqueTensorName(this.originalName),this.trainable_=trainable,this.constraint=constraint,this.val=variable(val,this.trainable_,this.name,this.dtype)}read(){return this.assertNotDisposed(),this.val}write(newVal){return this.assertNotDisposed(),checkShapesMatch(this.val,newVal),this.val.id!==newVal.id&&(this.val.assign(newVal),this.constraint!=null&&this.val.assign(this.constraint.apply(this.val))),this}dispose(){this.assertNotDisposed(),this.val.dispose()}assertNotDisposed(){if(this.val.isDisposed)throw new Error(`LayersVariable ${this.name} is already disposed.`)}get trainable(){return this.trainable_}set trainable(trainable){this.trainable_=trainable,this.val.trainable=trainable}};function checkShapesMatch(x,y){if(x.shape.toString()!==y.shape.toString())throw new Error("Shape mismatch: "+JSON.stringify(x.shape)+" vs. "+JSON.stringify(y.shape))}function batchGetValue(xs){return xs.map(x=>x.read())}function batchSetValue(variablesAndValues){variablesAndValues.forEach(variableAndValue=>{variableAndValue[0].write(variableAndValue[1])})}var InputSpec=class{constructor(args){this.dtype=args.dtype,this.shape=args.shape,args.shape!=null?this.ndim=args.shape.length:this.ndim=args.ndim,this.maxNDim=args.maxNDim,this.minNDim=args.minNDim,this.axes=args.axes||{}}},SymbolicTensor=class{constructor(dtype,shape,sourceLayer,inputs,callArgs,name,outputTensorIndex){this.dtype=dtype,this.shape=shape,this.sourceLayer=sourceLayer,this.inputs=inputs,this.callArgs=callArgs,this.outputTensorIndex=outputTensorIndex,this.id=getNextUniqueTensorId(),name!=null&&(this.originalName=getScopedTensorName(name),this.name=getUniqueTensorName(this.originalName)),this.rank=shape.length}},_nextNodeID=0,Node=class{constructor(args,callArgs){this.callArgs=callArgs,this.id=_nextNodeID++,this.outboundLayer=args.outboundLayer,this.inboundLayers=args.inboundLayers,this.nodeIndices=args.nodeIndices,this.tensorIndices=args.tensorIndices,this.inputTensors=args.inputTensors,this.outputTensors=args.outputTensors,this.inputMasks=args.inputMasks,this.outputMasks=args.outputMasks,this.inputShapes=args.inputShapes,this.outputShapes=args.outputShapes;for(let layer of args.inboundLayers)layer!=null&&layer.outboundNodes.push(this);args.outboundLayer.inboundNodes.push(this)}getConfig(){let inboundNames=[];for(let layer of this.inboundLayers)layer!=null?inboundNames.push(layer.name):inboundNames.push(null);return{outboundLayer:this.outboundLayer?this.outboundLayer.name:null,inboundLayers:inboundNames,nodeIndices:this.nodeIndices,tensorIndices:this.tensorIndices}}},_nextLayerID=0,Layer=class extends serialization_exports.Serializable{constructor(args={}){super();this._callHook=null,this._addedWeightNames=[],this._stateful=!1,this.id=_nextLayerID++,this.activityRegularizer=null,this.inputSpec=null,this.supportsMasking=!1,this._trainableWeights=[],this._nonTrainableWeights=[],this._losses=[],this._updates=[],this._built=!1,this.inboundNodes=[],this.outboundNodes=[];let name=args.name;if(!name){let prefix=this.getClassName();name=toSnakeCase(prefix)+"_"+getUid(prefix)}if(this.name=name,this.trainable_=args.trainable==null?!0:args.trainable,args.inputShape!=null||args.batchInputShape!=null){let batchInputShape;if(args.batchInputShape!=null)batchInputShape=args.batchInputShape;else if(args.inputShape!=null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),batchInputShape=[batchSize].concat(args.inputShape)}this.batchInputShape=batchInputShape;let dtype=args.dtype;dtype==null&&(dtype=args.inputDType),dtype==null&&(dtype="float32"),this.dtype=dtype}args.weights!=null?this.initialWeights=args.weights:this.initialWeights=null,this._refCount=null,this.fastWeightInitDuringBuild=!1}static nodeKey(layer,nodeIndex){return layer.name+"_ib-"+nodeIndex.toString()}getNodeAtIndex(nodeIndex,attrName){if(this.inboundNodes.length===0)throw new RuntimeError(`The layer has never been called and thus has no defined ${attrName}.`);if(this.inboundNodes.length<=nodeIndex)throw new ValueError(`Asked to get ${attrName} at node ${nodeIndex}, but the layer has only ${this.inboundNodes.length} inbound nodes.`);return this.inboundNodes[nodeIndex]}getInputAt(nodeIndex){return singletonOrArray(this.getNodeAtIndex(nodeIndex,"input").inputTensors)}getOutputAt(nodeIndex){return singletonOrArray(this.getNodeAtIndex(nodeIndex,"output").outputTensors)}get input(){if(this.inboundNodes.length>1)throw new AttributeError(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer input" is ill-defined. Use \`getInputAt(nodeIndex)\` instead.`);if(this.inboundNodes.length===0)throw new AttributeError(`Layer ${this.name} is not connected, no input to return.`);return singletonOrArray(this.getNodeAtIndex(0,"input").inputTensors)}get output(){if(this.inboundNodes.length===0)throw new AttributeError(`Layer ${this.name} has no inbound nodes.`);if(this.inboundNodes.length>1)throw new AttributeError(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer output" is ill-defined. Use \`getOutputAt(nodeIndex)\` instead.`);return singletonOrArray(this.getNodeAtIndex(0,"output").outputTensors)}get losses(){return this._losses}calculateLosses(){return this.losses.map(lossFn=>lossFn())}get updates(){return this._updates}get built(){return this._built}set built(built){this._built=built}get trainable(){return this.trainable_}set trainable(trainable){this._trainableWeights.forEach(w=>w.trainable=trainable),this.trainable_=trainable}get trainableWeights(){return this.trainable_?this._trainableWeights.filter(w=>w.trainable):[]}set trainableWeights(weights){this._trainableWeights=weights}get nonTrainableWeights(){return this.trainable?this._trainableWeights.filter(w=>!w.trainable).concat(this._nonTrainableWeights):this._trainableWeights.concat(this._nonTrainableWeights)}set nonTrainableWeights(weights){this._nonTrainableWeights=weights}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}get stateful(){return this._stateful}resetStates(){if(!this.stateful)throw new Error("Cannot call the resetStates() method of a non-stateful Layer object.")}assertInputCompatibility(inputs){if(inputs=toList(inputs),this.inputSpec==null||this.inputSpec.length===0)return;let inputSpec=toList(this.inputSpec);if(inputs.length!==inputSpec.length)throw new ValueError(`Layer ${this.name} expects ${inputSpec.length} inputs, but it received ${inputs.length} input tensors. Input received: ${inputs}`);for(let inputIndex=0;inputIndexspec.maxNDim)throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name}: expected max_ndim=${spec.maxNDim}, found ndim=${ndim}`);if(spec.minNDim!=null&&ndim=0?xShape[axis]:xShape[xShape.length+axis];if(value!=null&&[value,null].indexOf(xShapeAtAxis)===-1)throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name}: expected axis ${axis} of input shape to have value ${value} but got shape ${xShape}.`)}}if(spec.shape!=null)for(let i=0;i{if(!this.built){this.assertInputCompatibility(inputs);let inputShapes=[];for(let xElem of toList(inputs))inputShapes.push(xElem.shape);this.build(singletonOrArray(inputShapes)),this.built=!0,this.initialWeights&&this.setWeights(this.initialWeights),this._refCount===null&&noneAreSymbolic&&(this._refCount=1)}if(this.assertInputCompatibility(inputs),noneAreSymbolic){let output=this.call(inputs,kwargs),outputList=toList(output),outputListCopy=[];for(let x of outputList)inputsList.indexOf(x)!==-1&&(x=x.clone()),outputListCopy.push(x);if(output=singletonOrArray(outputListCopy),this.activityRegularizer!=null)throw new NotImplementedError("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return output}else{let inputShape=collectInputShape(inputs),outputShape=this.computeOutputShape(inputShape),output,outputDType=guessOutputDType(inputs);if(this.warnOnIncompatibleInputShape(Array.isArray(inputs)?inputShape[0]:inputShape),outputShape!=null&&outputShape.length>0&&Array.isArray(outputShape[0])?output=outputShape.map((shape,index)=>new SymbolicTensor(outputDType,shape,this,toList(inputs),kwargs,this.name,index)):output=new SymbolicTensor(outputDType,outputShape,this,toList(inputs),kwargs,this.name),this.addInboundNode(inputs,output,null,null,inputShape,outputShape,kwargs),this._refCount++,this.activityRegularizer!=null)throw new NotImplementedError("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return output}})}warnOnIncompatibleInputShape(inputShape){if(this.batchInputShape!=null)if(inputShape.length!==this.batchInputShape.length)console.warn(`The rank of the input tensor provided (shape: ${JSON.stringify(inputShape)}) does not match that of the batchInputShape (${JSON.stringify(this.batchInputShape)}) of the layer ${this.name}`);else{let dimMismatch=!1;this.batchInputShape.forEach((dimension,i)=>{dimension!=null&&inputShape[i]!=null&&inputShape[i]!==dimension&&(dimMismatch=!0)}),dimMismatch&&console.warn(`The shape of the input tensor (${JSON.stringify(inputShape)}) does not match the expectation of layer ${this.name}: ${JSON.stringify(this.batchInputShape)}`)}}get outputShape(){if(this.inboundNodes==null||this.inboundNodes.length===0)throw new AttributeError(`The layer ${this.name} has never been called and thus has no defined output shape.`);let allOutputShapes=[];for(let node2 of this.inboundNodes){let shapeString=JSON.stringify(node2.outputShapes);allOutputShapes.indexOf(shapeString)===-1&&allOutputShapes.push(shapeString)}if(allOutputShapes.length===1){let outputShapes=this.inboundNodes[0].outputShapes;return Array.isArray(outputShapes)&&Array.isArray(outputShapes[0])&&outputShapes.length===1?outputShapes[0]:outputShapes}else throw new AttributeError(`The layer ${this.name} has multiple inbound nodes with different output shapes. Hence the notion of "output shape" is ill-defined for the layer.`)}countParams(){if(!this.built)throw new RuntimeError(`You tried to call countParams() on ${this.name}, but the layer is not built yet. Build it first by calling build(batchInputShape).`);return countParamsInWeights(this.weights)}build(inputShape){this.built=!0}getWeights(trainableOnly=!1){return batchGetValue(trainableOnly?this.trainableWeights:this.weights)}setWeights(weights){tidy(()=>{let params=this.weights;if(params.length!==weights.length)throw new ValueError(`You called setWeights(weights) on layer "${this.name}" with a weight list of length ${weights.length}, but the layer was expecting ${params.length} weights. Provided weights: ${weights}...`);if(params.length===0)return;let weightValueTuples=[],paramValues=batchGetValue(params);for(let i=0;iregularizer.apply(weight.read())),trainable==null&&(trainable=!0),trainable?this._trainableWeights.push(weight):this._nonTrainableWeights.push(weight),weight}setFastWeightInitDuringBuild(value){this.fastWeightInitDuringBuild=value}addLoss(losses4){losses4==null||Array.isArray(losses4)&&losses4.length===0||(losses4=toList(losses4),this._losses!==void 0&&this._losses!==null&&this.losses.push(...losses4))}computeOutputShape(inputShape){return inputShape}computeMask(inputs,mask){if(!this.supportsMasking){if(mask!=null)if(Array.isArray(mask))mask.forEach(maskElement=>{if(maskElement!=null)throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`)});else throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`);return null}return mask}addInboundNode(inputTensors,outputTensors,inputMasks,outputMasks,inputShapes,outputShapes,kwargs=null){let inputTensorList=toList(inputTensors);outputTensors=toList(outputTensors),inputMasks=toList(inputMasks),outputMasks=toList(outputMasks),inputShapes=normalizeShapeList(inputShapes),outputShapes=normalizeShapeList(outputShapes);let inboundLayers=[],nodeIndices=[],tensorIndices=[];for(let x of inputTensorList)inboundLayers.push(x.sourceLayer),nodeIndices.push(x.nodeIndex),tensorIndices.push(x.tensorIndex);new Node({outboundLayer:this,inboundLayers,nodeIndices,tensorIndices,inputTensors:inputTensorList,outputTensors,inputMasks,outputMasks,inputShapes,outputShapes},kwargs);for(let i=0;iweight.dispose()),this.weights.length}assertNotDisposed(){if(this._refCount===0)throw new Error(`Layer '${this.name}' is already disposed.`)}dispose(){if(!this.built)throw new Error(`Cannot dispose Layer ${this.name} because it has not been built yet.`);if(this._refCount===null)throw new Error(`Cannot dispose Layer ${this.name} because it has not been used yet.`);this.assertNotDisposed();let numDisposedVariables=0;return--this._refCount==0&&(numDisposedVariables=this.disposeWeights()),{refCountAfterDispose:this._refCount,numDisposedVariables}}};function collectInputShape(inputTensors){inputTensors=toList(inputTensors);let shapes=[];for(let x of inputTensors)shapes.push(x.shape);return singletonOrArray(shapes)}function guessOutputDType(inputTensors){return"float32"}function getSourceInputs(tensor2,layer,nodeIndex){if((layer==null||nodeIndex!=null&&nodeIndex>0)&&(layer=tensor2.sourceLayer,nodeIndex=tensor2.nodeIndex),layer.inboundNodes.length===0)return[tensor2];{let node2=layer.inboundNodes[nodeIndex];if(node2.inboundLayers.length===0)return node2.inputTensors;{let sourceTensors=[];for(let i=0;i0){let values=await Promise.all(promises);for(let i=0;iadd2(this.totals[key],mul(value,batchSize)));this.totals[key]=total,oldTotalsToDispose!=null&&oldTotalsToDispose.dispose()}}}async onEpochEnd(epoch,logs){if(logs!=null)for(let key of this.params.metrics)this.totals[key]!=null&&(typeof this.totals[key]=="number"?logs[key]=this.totals[key]/this.seen:tidy(()=>{let log5=mul(div(1,this.seen),this.totals[key]);logs[key]=log5,this.totals[key].dispose(),keep(logs[key])}))}},History=class extends BaseCallback{async onTrainBegin(logs){this.epoch=[],this.history={}}async onEpochEnd(epoch,logs){logs==null&&(logs={}),this.epoch.push(epoch);for(let key in logs)this.history[key]==null&&(this.history[key]=[]),this.history[key].push(logs[key])}async syncData(){let promises=[],keys=[],indices=[];for(let key in this.history){let valueArray=this.history[key];for(let i=0;inew CustomCallback(callbackConfig,yieldEvery))}var CallbackConstructorRegistry=class{constructor(){}static registerCallbackConstructor(verbosityLevel,callbackConstructor){util_exports.assert(verbosityLevel>=0&&Number.isInteger(verbosityLevel),()=>`Verbosity level is expected to be an integer >= 0, but got ${verbosityLevel}`),CallbackConstructorRegistry.checkForDuplicate(callbackConstructor),CallbackConstructorRegistry.constructors[verbosityLevel]==null&&(CallbackConstructorRegistry.constructors[verbosityLevel]=[]),CallbackConstructorRegistry.constructors[verbosityLevel].push(callbackConstructor)}static checkForDuplicate(callbackConstructor){for(let levelName in CallbackConstructorRegistry.constructors)CallbackConstructorRegistry.constructors[+levelName].forEach(ctor=>{if(ctor===callbackConstructor)throw new ValueError("Duplicate callback constructor.")})}static clear(){CallbackConstructorRegistry.constructors={}}static createCallbacks(verbosityLevel){let constructors=[];for(let levelName in CallbackConstructorRegistry.constructors){let level=+levelName;verbosityLevel>=level&&constructors.push(...CallbackConstructorRegistry.constructors[level])}return constructors.map(ctor=>new ctor)}};CallbackConstructorRegistry.constructors={};function configureCallbacks(callbacks2,verbose,epochs,initialEpoch,numTrainSamples,stepsPerEpoch,batchSize,doValidation,callbackMetrics){let history=new History,actualCallbacks=[new BaseLogger,...CallbackConstructorRegistry.createCallbacks(verbose)];callbacks2!=null&&actualCallbacks.push(...callbacks2),actualCallbacks.push(history);let callbackList=new CallbackList(actualCallbacks);return callbackList.setParams({epochs,initialEpoch,samples:numTrainSamples,steps:stepsPerEpoch,batchSize,verbose,doValidation,metrics:callbackMetrics}),{callbackList,history}}function deserialize(config,customObjects={},fastWeightInit=!1){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"layer",fastWeightInit)}function l2Normalize(x,axis){return tidy(()=>{x.dtype!=="float32"&&(x=x.asType("float32"));let squareSum=sum2(square2(x),axis,!0),epsilonTensor=fill(squareSum.shape,epsilon()),norm2=sqrt(maximum(squareSum,epsilonTensor));return div(x,norm2)})}function meanSquaredError2(yTrue,yPred){return tidy(()=>mean(square2(sub(yPred,yTrue)),-1))}function meanAbsoluteError(yTrue,yPred){return tidy(()=>mean(abs(sub(yPred,yTrue)),-1))}function meanAbsolutePercentageError(yTrue,yPred){return tidy(()=>{let diff=sub(yTrue,yPred),clippedTrue=clipByValue(abs(yTrue),epsilon(),Number.MAX_VALUE),absResult=abs(div(diff,clippedTrue));return mul(100,mean(absResult,-1))})}function meanSquaredLogarithmicError(yTrue,yPred){return tidy(()=>{let clippedPred=clipByValue(yPred,epsilon(),Number.MAX_VALUE),firstLog=log(add2(1,clippedPred)),clippedTrue=clipByValue(yTrue,epsilon(),Number.MAX_VALUE),secondLog=log(add2(1,clippedTrue));return mean(square2(sub(firstLog,secondLog)),-1)})}function squaredHinge(yTrue,yPred){return tidy(()=>{let maxResult=maximum(0,sub(1,mul(yTrue,yPred)));return mean(square2(maxResult),-1)})}function hinge(yTrue,yPred){return tidy(()=>{let maxResult=maximum(0,sub(1,mul(yTrue,yPred)));return mean(maxResult,-1)})}function categoricalHinge(yTrue,yPred){return tidy(()=>{let pos=sum2(mul(yTrue,yPred),-1),neg4=max(mul(sub(1,yTrue),yPred),-1);return maximum(0,add2(1,sub(neg4,pos)))})}function logcosh(yTrue,yPred){return tidy(()=>{let log22=Math.log(2),predictionDiff=sub(yPred,yTrue),logcoshResult=sub(add2(predictionDiff,softplus(mul(-2,predictionDiff))),log22);return mean(logcoshResult,-1)})}function categoricalCrossentropy(target,output,fromLogits=!1){return tidy(()=>{if(fromLogits)output=softmax(output);else{let outputSum=sum2(output,output.shape.length-1,!0);output=div(output,outputSum)}return output=clipByValue(output,epsilon(),1-epsilon()),neg(sum2(mul(target.toFloat(),log(output)),output.shape.length-1))})}function sparseCategoricalCrossentropy(target,output,fromLogits=!1){return tidy(()=>{let flatTarget=floor(flatten2(target)).toInt();output=clipByValue(output,epsilon(),1-epsilon());let outputShape=output.shape,oneHotTarget=oneHot(flatTarget,outputShape[outputShape.length-1]).reshape(outputShape);return categoricalCrossentropy(oneHotTarget,output,fromLogits)})}function sigmoidCrossEntropyWithLogits(labels,logits){if(!util_exports.arraysEqual(labels.shape,logits.shape))throw new ValueError(`logits and labels must have the same shape, but got shapes ${JSON.stringify(labels.shape)} and ${JSON.stringify(logits.shape)}`);return tidy(()=>{let reluLogits=logits.relu(),negAbsLogits=logits.abs().neg();return reluLogits.sub(logits.mul(labels)).add(negAbsLogits.exp().log1p())})}function binaryCrossentropy(yTrue,yPred){return tidy(()=>{let y;return y=clipByValue(yPred,epsilon(),1-epsilon()),y=log(div(y,sub(1,y))),mean(sigmoidCrossEntropyWithLogits(yTrue,y),-1)})}function kullbackLeiblerDivergence(yTrue,yPred){return tidy(()=>{let clippedTrue=clipByValue(yTrue,epsilon(),1),clippedPred=clipByValue(yPred,epsilon(),1);return sum2(mul(yTrue,log(div(clippedTrue,clippedPred))),-1)})}function poisson(yTrue,yPred){return tidy(()=>{let logPred=log(add2(epsilon(),yPred));return mean(sub(yPred,mul(yTrue,logPred)),-1)})}function cosineProximity(yTrue,yPred){return tidy(()=>{let trueNormalized=l2Normalize(yTrue,-1),predNormalized=l2Normalize(yPred,-1),trueXPred=mul(trueNormalized,predNormalized);return neg(sum2(trueXPred,-1))})}var lossesMap={meanSquaredError:meanSquaredError2,meanAbsoluteError,meanAbsolutePercentageError,meanSquaredLogarithmicError,squaredHinge,hinge,categoricalHinge,logcosh,categoricalCrossentropy,sparseCategoricalCrossentropy,binaryCrossentropy,kullbackLeiblerDivergence,poisson,cosineProximity};function get(identifierOrFn){if(typeof identifierOrFn=="string"){if(identifierOrFn in lossesMap)return lossesMap[identifierOrFn];let errMsg=`Unknown loss ${identifierOrFn}`;throw identifierOrFn.toLowerCase().includes("softmaxcrossentropy")&&(errMsg=`Unknown loss ${identifierOrFn}. Use "categoricalCrossentropy" as the string name for tf.losses.softmaxCrossEntropy`),new ValueError(errMsg)}else return identifierOrFn}function binaryAccuracy(yTrue,yPred){return tidy(()=>{let threshold2=mul(.5,onesLike(yPred)),yPredThresholded=cast2(greater(yPred,threshold2),yTrue.dtype);return mean(equal(yTrue,yPredThresholded),-1)})}function categoricalAccuracy(yTrue,yPred){return tidy(()=>cast2(equal(argMax(yTrue,-1),argMax(yPred,-1)),"float32"))}function truePositives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(1),yPred.equal(1)).sum().cast("float32"))}function falseNegatives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(1),yPred.equal(0)).sum().cast("float32"))}function falsePositives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(0),yPred.equal(1)).sum().cast("float32"))}function precision(yTrue,yPred){return tidy(()=>{let tp=truePositives(yTrue,yPred),fp=falsePositives(yTrue,yPred),denominator=tp.add(fp);return where(greater(denominator,0),tp.div(denominator),0).cast("float32")})}function recall(yTrue,yPred){return tidy(()=>{let tp=truePositives(yTrue,yPred),fn=falseNegatives(yTrue,yPred),denominator=tp.add(fn);return where(greater(denominator,0),tp.div(denominator),0).cast("float32")})}function binaryCrossentropy2(yTrue,yPred){return binaryCrossentropy(yTrue,yPred)}function sparseCategoricalAccuracy(yTrue,yPred){return yTrue.rank===yPred.rank&&(yTrue=yTrue.squeeze([yTrue.rank-1])),yPred=yPred.argMax(-1),yPred.dtype!==yTrue.dtype&&(yPred=yPred.asType(yTrue.dtype)),equal(yTrue,yPred).asType("float32")}var mse=meanSquaredError2,MSE=meanSquaredError2,mae=meanAbsoluteError,MAE=meanAbsoluteError,mape=meanAbsolutePercentageError,MAPE=meanAbsolutePercentageError,categoricalCrossentropy2=categoricalCrossentropy,cosine=cosineProximity,sparseCategoricalCrossentropy2=sparseCategoricalCrossentropy,metricsMap={binaryAccuracy,categoricalAccuracy,precision,categoricalCrossentropy:categoricalCrossentropy2,sparseCategoricalCrossentropy:sparseCategoricalCrossentropy2,mse,MSE,mae,MAE,mape,MAPE,cosine};function get2(identifier){if(typeof identifier=="string"&&identifier in metricsMap)return metricsMap[identifier];if(typeof identifier!="string"&&identifier!=null)return identifier;throw new ValueError(`Unknown metric ${identifier}`)}function getLossOrMetricName(fn){if(assert2(fn!==null,`Unknown LossOrMetricFn ${fn}`),typeof fn=="string")return fn;{let fnName;for(let key of Object.keys(lossesMap))if(lossesMap[key]===fn){fnName=key;break}if(fnName!==void 0)return fnName;for(let key of Object.keys(metricsMap))if(metricsMap[key]===fn){fnName=key;break}return fnName!==void 0?fnName:fn.name}}function getOptimizer(identifier){let optimizerMap={Adagrad:()=>train.adagrad(.01),Adadelta:()=>train.adadelta(1,.95,epsilon()),Adam:()=>train.adam(.001,.9,.999,epsilon()),Adamax:()=>train.adamax(.002,.9,.999,epsilon(),0),RMSProp:()=>train.rmsprop(.001,.9,0,epsilon()),SGD:()=>train.sgd(.01)};if(optimizerMap.adagrad=optimizerMap.Adagrad,optimizerMap.adadelta=optimizerMap.Adadelta,optimizerMap.adam=optimizerMap.Adam,optimizerMap.adamax=optimizerMap.Adamax,optimizerMap.rmsprop=optimizerMap.RMSProp,optimizerMap.sgd=optimizerMap.SGD,identifier in optimizerMap)return optimizerMap[identifier]();throw new ValueError(`Unknown Optimizer ${identifier}`)}var MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH=1*1024*1024;function checkUserDefinedMetadata(userDefinedMetadata,modelName,checkSize=!1){if(userDefinedMetadata==null||typeof userDefinedMetadata!="object"||Object.getPrototypeOf(userDefinedMetadata)!==Object.prototype||!plainObjectCheck(userDefinedMetadata))throw new Error("User-defined metadata is expected to be a JSON object, but is not.");if(checkSize){let out=JSON.stringify(userDefinedMetadata);out.length>MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH&&console.warn(`User-defined metadata of model "${modelName}" is too large in size (length=${out.length} when serialized). It is not recommended to store such large objects in user-defined metadata. Please make sure its serialized length is <= ${MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH}.`)}}function plainObjectCheck(x){if(x===null)return!0;if(typeof x=="object")if(Object.getPrototypeOf(x)===Object.prototype){let keys=Object.keys(x);for(let key of keys)if(typeof key!="string"||!plainObjectCheck(x[key]))return!1;return!0}else if(Array.isArray(x)){for(let item of x)if(!plainObjectCheck(item))return!1;return!0}else return!1;else{let xType=typeof x;return xType==="string"||xType==="number"||xType==="boolean"}}function printSummary(model2,lineLength,positions,printFn=console.log){let sequentialLike=isModelSequentialLike(model2),toDisplay=["Layer (type)","Output shape","Param #"];sequentialLike?(lineLength=lineLength||65,positions=positions||[.45,.85,1]):(lineLength=lineLength||98,positions=positions||[.33,.55,.67,1]),positions[positions.length-1]<=1&&(positions=positions.map(p2=>Math.floor(lineLength*p2)));let relevantNodes;if(!sequentialLike){toDisplay.push("Receives inputs"),relevantNodes=[];for(let depth in model2.nodesByDepth)relevantNodes.push(...model2.nodesByDepth[depth])}printFn("_".repeat(lineLength)),printRow(toDisplay,positions,printFn),printFn("=".repeat(lineLength));let layers=model2.layers;for(let i=0;i1||depthNodes.length===1&&depthNodes[0].inboundLayers.length>1){sequentialLike=!1;break}nodes.push(...depthNodes)}if(sequentialLike)for(let layer of model2.layers){let flag=!1;for(let node2 of layer.inboundNodes)if(nodes.indexOf(node2)!==-1)if(flag){sequentialLike=!1;break}else flag=!0;if(!sequentialLike)break}return sequentialLike}function printRow(fields,positions,printFn=console.log){let line="";for(let i=0;i0&&(line=line.slice(0,line.length-1)+" "),line+=fields[i],line=line.slice(0,positions[i]),line+=" ".repeat(positions[i]-line.length);printFn(line)}function printLayerSummary(layer,positions,printFn){let outputShape;try{outputShape=JSON.stringify(layer.outputShape)}catch(err){outputShape="multiple"}let name=layer.name,className=layer.getClassName(),fields=[`${name} (${className})`,outputShape,layer.countParams().toString()];printRow(fields,positions,printFn)}function printLayerSummaryWithConnections(layer,positions,relevantNodes,printFn){let outputShape;try{outputShape=JSON.stringify(layer.outputShape)}catch(err){outputShape="multiple"}let connections=[];for(let node2 of layer.inboundNodes)if(!(relevantNodes!=null&&relevantNodes.length>0&&relevantNodes.indexOf(node2)===-1))for(let i=0;it.name),finalOutputs=[],feedNames=feedDict.names();for(let outputName of outputNames)feedNames.indexOf(outputName)!==-1?finalOutputs.push(feedDict.getValue(outputName)):finalOutputs.push(null);probe!=null&&(probe.maxNumTensors=-Infinity,probe.minNumTensors=Infinity);let fetchAndFeedKey=outputNames.join(",")+"|"+feedDict.names().join(","),sorted,recipientCounts;if(cachedSorted[fetchAndFeedKey]==null){let out=getTopologicalSortAndRecipientCounts(fetchArray,feedDict);sorted=out.sorted,recipientCounts=out.recipientCounts,cachedSorted[fetchAndFeedKey]=sorted,cachedRecipientCounts[fetchAndFeedKey]=recipientCounts}sorted=cachedSorted[fetchAndFeedKey],recipientCounts={},training||Object.assign(recipientCounts,cachedRecipientCounts[fetchAndFeedKey]);let internalFeedDict=new FeedDict(feedDict);for(let i=0;iprobe.maxNumTensors&&(probe.maxNumTensors=numTensors),numTensors0,()=>"Expected at least one fetch, got none");let finalSorted=[],finalRecipientMap={};if(fetches.length===1){let out=getTopologicalSortAndRecipientCountsForOneFetch(fetches[0],feedDict);finalSorted=out.sorted,finalRecipientMap=out.recipientMap}else{let visited=new Set;for(let fetch3 of fetches){let{sorted,recipientMap}=getTopologicalSortAndRecipientCountsForOneFetch(fetch3,feedDict);for(let symbolicTensor of sorted)visited.has(symbolicTensor.name)||(finalSorted.push(symbolicTensor),visited.add(symbolicTensor.name));for(let name in recipientMap)finalRecipientMap[name]==null&&(finalRecipientMap[name]=new Set),recipientMap[name].forEach(recipient=>finalRecipientMap[name].add(recipient))}}return{sorted:finalSorted,recipientCounts:recipientMap2Counts(finalRecipientMap)}}function recipientMap2Counts(recipientMap){let recipientCounts={};for(let name in recipientMap)recipientCounts[name]=recipientMap[name].size;return recipientCounts}function getTopologicalSortAndRecipientCountsForOneFetch(fetch3,feedDict){let visited=new Set,sorted=[],recipientMap={};for(let key of feedDict.names())visited.add(key);let stack2=[],marks=[];for(stack2.push(fetch3);stack2.length>0;){let top=stack2[stack2.length-1];if(visited.has(top.name)){stack2.pop();continue}let topIsMarked=marks[marks.length-1]===stack2.length-1;if(top.inputs.length===0||topIsMarked)stack2.pop(),sorted.push(top),visited.add(top.name),topIsMarked&&marks.pop();else{marks.push(stack2.length-1);for(let input2 of top.inputs)recipientMap[input2.name]==null&&(recipientMap[input2.name]=new Set),recipientMap[input2.name].add(top.name),!visited.has(input2.name)&&stack2.push(input2)}}return{sorted,recipientMap}}function getNodeOutputs(fetch3){let layerOutputs;if(fetch3.sourceLayer.inboundNodes.length===1)layerOutputs=fetch3.sourceLayer.output;else{let nodeIndex=null;for(let i=0;ix.name)}`);unique2(this.outputs).length!==this.outputs.length&&console.warn(`The list of outputs passed to the model is redundant. All outputs should only appear once. Found: ${this.outputs.map(x=>x.name)}`),this.inputLayers=[],this.inputLayersNodeIndices=[],this.inputLayersTensorIndices=[],this.outputLayers=[],this.outputLayersNodeIndices=[],this.outputLayersTensorIndices=[],this.layers=[],this.internalContainerRefs=[];for(let x of this.outputs){let layer=x.sourceLayer,nodeIndex=x.nodeIndex,tensorIndex=x.tensorIndex;this.outputLayers.push(layer),this.outputLayersNodeIndices.push(nodeIndex),this.outputLayersTensorIndices.push(tensorIndex)}for(let x of this.inputs){let layer=x.sourceLayer,nodeIndex=x.nodeIndex,tensorIndex=x.tensorIndex;assert2(nodeIndex===0,"input layer has >1 nodes"),assert2(tensorIndex===0,"input layer has >1 tensors"),this.inputLayers.push(layer),this.inputLayersNodeIndices.push(nodeIndex),this.inputLayersTensorIndices.push(tensorIndex)}this.inputNames=[],this.outputNames=[],this.feedInputShapes=[],this.feedInputNames=[],this.feedOutputNames=[];for(let i=0;ix.shape),this.internalOutputShapes=this.outputs.map(x=>x.shape);let nodesDepths={},nodeIDToNode={},layersDepths={},layerIDToLayer={},layerIndices={},nodesInDecreasingDepth=[],buildMapOfGraph=(tensor2,finishedNodes2,nodesInProgress2,layer,nodeIndex,tensorIndex)=>{(layer==null||nodeIndex==null||tensorIndex==null)&&(layer=tensor2.sourceLayer,nodeIndex=tensor2.nodeIndex,tensorIndex=tensor2.tensorIndex);let node2=layer.inboundNodes[nodeIndex];if(nodesInProgress2.indexOf(node2)!==-1)throw new RuntimeError(`The tensor ${tensor2.name} at layer "${layer.name}" is part of a cycle.`);if(finishedNodes2.indexOf(node2)!==-1)return;this.containerNodes.add(Container.nodeKey(layer,nodeIndex)),layer.id in layerIndices||(layerIndices[layer.id]=Object.keys(layerIndices).length),nodesInProgress2.indexOf(node2)===-1&&nodesInProgress2.push(node2);let numInboundLayers=node2.inboundLayers.length;for(let i=0;i=0;)nodesInProgress2.splice(nodesInProgress2.indexOf(node2),1);nodesInDecreasingDepth.push(node2)},finishedNodes=[],nodesInProgress=[];for(let x of this.outputs)buildMapOfGraph(x,finishedNodes,nodesInProgress);let reversedNodesInDecreasingDepth=nodesInDecreasingDepth.slice().reverse();for(let node2 of reversedNodesInDecreasingDepth){nodeIDToNode[node2.id]=node2,node2.id in nodesDepths||(nodesDepths[node2.id]=0);let depth=nodesDepths[node2.id],previousDepth=layersDepths[node2.outboundLayer.id]==null?0:layersDepths[node2.outboundLayer.id];depth=Math.max(depth,previousDepth),layersDepths[node2.outboundLayer.id]=depth,layerIDToLayer[node2.outboundLayer.id]=node2.outboundLayer,nodesDepths[node2.id]=depth;for(let i=0;iparseInt(x,10)).sort(reverseNumberCompare);this.layers=[];for(let depth of depthKeys){let layersForDepth=layersByDepth[depth];layersForDepth.sort((a,b)=>{let aIndex=layerIndices[a.id],bIndex=layerIndices[b.id];return aIndexbIndex?1:0});for(let layer of layersForDepth)layer instanceof Container&&this.internalContainerRefs.push(layer),this.layers.push(layer)}this.layersByDepth=layersByDepth,depthKeys=Object.keys(nodesByDepth).map(x=>parseInt(x,10)).sort(reverseNumberCompare);let computableTensors=this.inputs.slice(),layersWithCompleteInput=[];for(let depth of depthKeys)for(let node2 of nodesByDepth[depth]){let layer=node2.outboundLayer;if(layer!=null){for(let x of node2.inputTensors)if(computableTensors.indexOf(x)===-1)throw new RuntimeError(`Graph disconnected: cannot obtain value for tensor ${x} at layer "${layer.name}". The following previous layers were accessed without issue: ${layersWithCompleteInput}`);for(let x of node2.outputTensors)computableTensors.push(x);layersWithCompleteInput.push(layer.name)}}this.nodesByDepth=nodesByDepth;let allNames=this.layers.map(x=>x.name);for(let name of allNames){let numOccurrences=allNames.filter(x=>x===name).length;if(numOccurrences!==1)throw new RuntimeError(`The name "${name}" is used ${numOccurrences} times in the model. All layer names should be unique. Layer names: `+JSON.stringify(allNames))}this.outboundNodes=[],this.inboundNodes=[],new Node({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:this.inputs.map(x=>null),outputMasks:this.outputs.map(x=>null),inputShapes:this.inputs.map(x=>x.shape),outputShapes:this.outputs.map(x=>x.shape)}),this.built=!0,this._refCount=1}assertNotDisposed(){if(this._refCount===0)throw new Error(`Container '${this.name}' is already disposed.`)}dispose(){this.assertNotDisposed();let result={refCountAfterDispose:null,numDisposedVariables:0};if(--this._refCount==0){for(let layer of this.layers)result.numDisposedVariables+=layer.dispose().numDisposedVariables;for(let container of this.internalContainerRefs)result.numDisposedVariables+=container.dispose().numDisposedVariables}return result.refCountAfterDispose=this._refCount,result}get trainable(){return this.trainable_}set trainable(trainable){this.layers.forEach(layer=>{layer._trainableWeights.forEach(w=>w.trainable=trainable)}),this.trainable_=trainable}get trainableWeights(){if(this._trainableWeights.length>0)throw new ValueError("Container instance unexpectedly contains _trainableWeights.The trainable weights of a Container are a union of the trainable weights of its consituent Layers. Its own _trainableWeights must remain an empty Array.");if(!this.trainable)return[];let weights=[];for(let layer of this.layers)weights=weights.concat(layer.trainableWeights);return weights}get nonTrainableWeights(){let weights=[];for(let layer of this.layers)weights.push(...layer.nonTrainableWeights);if(!this.trainable){let trainableWeights=[];for(let layer of this.layers)trainableWeights.push(...layer.trainableWeights);return trainableWeights.concat(weights)}return weights}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}loadWeights(weights,strict=!0){let nameToWeight={},totalWeightsCount=0;for(let layer of this.layers)for(let weight of layer.weights){if(nameToWeight[weight.originalName]!=null)throw new ValueError(`Duplicate weight name: ${weight.originalName}`);nameToWeight[weight.originalName]=weight,totalWeightsCount++}let weightValueTuples=[];for(let name in weights){let validatedName=name;if(nameToWeight[name]==null){let tokens=name.split("/");validatedName=tokens.slice(0,-2).concat([tokens[tokens.length-1]]).join("/")}if(nameToWeight[validatedName]!=null)weightValueTuples.push([nameToWeight[validatedName],weights[name]]);else if(strict)throw new ValueError(`Provided weight data has no target variable: ${name}`);delete nameToWeight[validatedName]}if(strict){let unsetNames=[];for(let name in nameToWeight)unsetNames.push(name);if(unsetNames.length>0)throw new ValueError(`${unsetNames.length} of ${totalWeightsCount} weights are not set: ${unsetNames}`)}batchSetValue(weightValueTuples)}updatedConfig(){let theConfig=this.getConfig(),modelConfig={};return modelConfig.className=this.getClassName(),modelConfig.config=theConfig,modelConfig.kerasVersion=`tfjs-layers ${version2}`,modelConfig.backend="TensorFlow.js",modelConfig}toJSON(unused,returnString=!0){let modelConfig=convertTsToPythonic(this.updatedConfig());return returnString?JSON.stringify(modelConfig):modelConfig}call(inputs,kwargs){return tidy(()=>{inputs=toList(inputs);let feedDict=new FeedDict;for(let i=0;i{inputs=toList(inputs);let masks;return mask==null?masks=pyListRepeat(null,inputs.length):masks=toList(mask),this.runInternalGraph(inputs,masks)[1]})}computeOutputShape(inputShape){let inputShapes=normalizeShapeList(inputShape);if(inputShapes.length!==this.inputLayers.length)throw new ValueError(`Invalid inputShape argument ${inputShape}: model has ${this.inputLayers.length} tensor inputs.`);let layersToOutputShapes={};for(let i=0;iparseInt(x,10)).sort(reverseNumberCompare);if(depthKeys.length>1)for(let depth of depthKeys){let nodes=this.nodesByDepth[depth];for(let node2 of nodes){let layer=node2.outboundLayer;if(this.inputLayers.map(x=>x.id).indexOf(layer.id)!==-1)continue;let inputShapes2=[];for(let j=0;jparseInt(x,10)).sort(reverseNumberCompare);for(let depth of depthKeys){let nodes=this.nodesByDepth[depth];for(let node2 of nodes){let layer=node2.outboundLayer,referenceInputTensors=node2.inputTensors,referenceOutputTensors=node2.outputTensors,computedData=new Array;for(let x of referenceInputTensors)x.id in tensorMap&&computedData.push(tensorMap[x.id]);if(computedData.length===referenceInputTensors.length){let kwargs={},computedTensors,computedMasks,outputTensors2,outputMasks2;if(node2.callArgs!=null&&(kwargs=node2.callArgs),computedData.length===1){let[computedTensor,computedMask]=computedData[0];kwargs.mask==null&&(kwargs.mask=computedMask),outputTensors2=toList(layer.call(computedTensor,kwargs)),outputMasks2=toList(layer.computeMask(computedTensor,computedMask)),computedTensors=[computedTensor],computedMasks=[computedMask]}else computedTensors=computedData.map(x=>x[0]),computedMasks=computedData.map(x=>x[1]),kwargs.mask==null&&(kwargs.mask=computedMasks),outputTensors2=toList(layer.call(computedTensors,kwargs)),outputMasks2=toList(layer.computeMask(computedTensors,computedMasks));if(layer.activityRegularizer)throw new NotImplementedError("LayersModel invocation with concrete Tensor value(s) in the presence of activity regularizer(s) is not supported yet.");for(let i=0;i{let losses4=[];for(let layer of this.layers)for(let nodeIndex=0;nodeIndex0){let nodeData=[];for(let i=0;i0&&layer.apply(singletonOrArray(inputTensors2),kwargs)}function processLayer(layerData){let layerName=layerData.name,layer=deserialize(layerData,config.customObjects!=null?config.customObjects:{});layer.setFastWeightInitDuringBuild(fastWeightInit),createdLayers[layerName]=layer,layerData.inboundNodes.forEach(nodeData=>{if(!(nodeData instanceof Array))throw new ValueError(`Corrupted configuration, expected array for nodeData: ${nodeData}`);addUnprocessedNode(layer,nodeData)})}let name=config.name,layersFromConfig=config.layers;for(let layerData of layersFromConfig)processLayer(layerData);for(;!isObjectEmpty(unprocessedNodes);)for(let layerData of layersFromConfig){let layer=createdLayers[layerData.name];if(layer.name in unprocessedNodes){let currentUnprocessedNodesForLayer=unprocessedNodes[layer.name];delete unprocessedNodes[layer.name];for(let nodeData of currentUnprocessedNodesForLayer)processNode(layer,nodeData)}}let inputTensors=[],outputTensors=[],inputLayersFromConfig=config.inputLayers;for(let layerData of inputLayersFromConfig){let layerName=layerData[0],nodeIndex=layerData[1],tensorIndex=layerData[2];assert2(layerName in createdLayers);let layerOutputTensors=createdLayers[layerName].inboundNodes[nodeIndex].outputTensors;inputTensors.push(layerOutputTensors[tensorIndex])}let outputLayersFromConfig=config.outputLayers;for(let layerData of outputLayersFromConfig){let layerName=layerData[0],nodeIndex=layerData[1],tensorIndex=layerData[2];assert2(layerName in createdLayers);let layerOutputTensors=createdLayers[layerName].inboundNodes[nodeIndex].outputTensors;outputTensors.push(layerOutputTensors[tensorIndex])}return new cls({inputs:inputTensors,outputs:outputTensors,name})}get stateful(){if(this._stateful)throw new ValueError("Container instance unexpectedly has _stateful = true. The statefulness of a Container is determined by the Layers it contains. Its _stateful property must remain the default false.");for(let layer of this.layers)if(layer.stateful)return!0;return!1}resetStates(){tidy(()=>{this.layers.forEach(layer=>{layer.stateful&&layer.resetStates()})})}};function standardizeSampleOrClassWeights(xWeight,outputNames,weightType){let numOutputs=outputNames.length;if(xWeight==null||Array.isArray(xWeight)&&xWeight.length===0)return outputNames.map(name=>null);if(numOutputs===1)return Array.isArray(xWeight)&&xWeight.length===1?xWeight:typeof xWeight=="object"&&outputNames[0]in xWeight?[xWeight[outputNames[0]]]:[xWeight];if(Array.isArray(xWeight)){if(xWeight.length!==numOutputs)throw new Error(`Provided ${weightType} is an array of ${xWeight.length} element(s), but the model has ${numOutputs} outputs. Make sure a set of weights is provided for each model output.`);return xWeight}else if(typeof xWeight=="object"&&Object.keys(xWeight).length>0&&typeof xWeight[Object.keys(xWeight)[0]]=="object"){let output=[];return outputNames.forEach(outputName=>{outputName in xWeight?output.push(xWeight[outputName]):output.push(null)}),output}else throw new Error(`The model has multiple (${numOutputs}) outputs, so ${weightType} must be either an array with ${numOutputs} elements or an object with ${outputNames} keys. Provided ${weightType} not understood: ${JSON.stringify(xWeight)}`)}function standardizeClassWeights(classWeight,outputNames){return standardizeSampleOrClassWeights(classWeight,outputNames,"classWeight")}async function standardizeWeights(y,sampleWeight,classWeight,sampleWeightMode){if(sampleWeight!=null||sampleWeightMode!=null)throw new Error("Support sampleWeight is not implemented yet");if(classWeight!=null){let yClasses=tidy(()=>{if(y.shape.length===1)return y.clone();if(y.shape.length===2)if(y.shape[1]>1){let axis=1;return y.argMax(axis)}else{if(y.shape[1]===1)return y.reshape([y.shape[0]]);throw new Error(`Encountered unexpected last-dimension size (${y.shape[1]}) during handling of class weights. The size is expected to be >= 1.`)}else throw new Error(`Unexpected rank of target (y) tensor (${y.rank}) during handling of class weights. The rank is expected to be 1 or 2.`)}),yClassIndices=Array.from(await yClasses.data());dispose(yClasses);let classSampleWeight=[];return yClassIndices.forEach(classIndex=>{if(classWeight[classIndex]==null)throw new Error(`classWeight must contain all classes in the training data. The class ${classIndex} exists in the data but not in classWeight`);classSampleWeight.push(classWeight[classIndex])}),tensor1d(classSampleWeight,"float32")}else return null}function computeWeightedLoss2(losses4,sampleWeights){return mul(losses4,sampleWeights)}var DEFAULT_VALIDATION_BATCH_SIZE=32;function standardizeDataIteratorOutput(model2,iteratorOut){let xs,ys,iteratorOutObj=iteratorOut;xs=iteratorOutObj.xs,ys=iteratorOutObj.ys,util_exports.assert(xs!=null&&ys!=null,()=>`A Dataset iterator for fitDataset() is expected to generate objects of the form \`{xs: xVal, ys: yVal}\`, where the two values may be \`tf.Tensor\`, an array of Tensors, or a map of string to Tensor. The provided Dataset instead generates ${iteratorOut}`);let flattenedXs=flattenTensorOrArrayOrMap("input",model2.inputNames,xs),flattenedYs=flattenTensorOrArrayOrMap("output",model2.outputNames,ys),batchSize=flattenedXs[0].shape[0];util_exports.assert(flattenedXs.length===model2.inputs.length,()=>`LayersModel has ${model2.inputs.length} inputs, but the dataset provides ${flattenedXs.length} inputs. (Expected input keys: ${JSON.stringify(model2.inputNames)})`),util_exports.assert(flattenedYs.length===model2.outputs.length,()=>`LayersModel has ${model2.outputs.length} outputs, but the dataset provides ${flattenedYs.length} outputs. (Expected output keys: ${JSON.stringify(model2.outputNames)})`);for(let xIndex=0;xIndex`Batch size mismatch: input ${model2.inputNames[xIndex]} has ${flattenedXs[xIndex].shape[0]}; expected ${batchSize} based on input ${model2.inputNames[0]}.`);for(let yIndex=0;yIndex`Batch size mismatch: output ${model2.outputNames[yIndex]} has ${flattenedYs[yIndex].shape[0]}; expected ${batchSize} based on input ${model2.inputNames[0]}.`);return{xs:flattenedXs,ys:flattenedYs}}function flattenTensorOrArrayOrMap(inputOrOutput,names,values){if(values instanceof Tensor)return[values];if(Array.isArray(values))return util_exports.assert(values.length===names.length,()=>`Received an array of ${values.length} Tensors, but expected ${names.length} to match the ${inputOrOutput} keys ${names}.`),values;{let result=[];for(let name of names){if(values[name]==null)throw new ValueError(`The feature data generated by the dataset lacks the required ${inputOrOutput} key '${name}'.`);result.push(values[name])}return result}}function standardizeTensorValidationData(data){if(data.length===3)throw new NotImplementedError("Validation with sample weights is not implemented yet.");return{xs:data[0],ys:data[1]}}async function fitDataset(model2,dataset,args){let hasBatchesPerEpoch=args.batchesPerEpoch!=null;if(util_exports.assert(model2.optimizer!=null,()=>"You must compile a model before training/testing. Use LayersModel.compile(modelCompileConfig)."),util_exports.assert(args!=null,()=>"For fitDataset(), the 2nd argument (config) is required, but it is not provided in this call."),util_exports.assert(args.epochs!=null&&args.epochs>0&&Number.isInteger(args.epochs),()=>`For fitDataset(), config.epochs is expected to be a positive integer, but got ${args.epochs}`),util_exports.assert(!hasBatchesPerEpoch||args.batchesPerEpoch>0&&Number.isInteger(args.batchesPerEpoch),()=>`For fitDataset(), config.batchesPerEpoch is expected to be a positive integer if specified, but got ${args.batchesPerEpoch}`),util_exports.assert(args.validationSplit==null,()=>"`validationSplit` is not supported by `fitDataset()`. Use validationData instead."),model2.isTraining)throw new Error("Cannot start training because another fit() call is ongoing.");model2.isTraining=!0;try{let doValidation=args.validationData!=null,valXs,valYs;if(doValidation)if(isDatasetObject(args.validationData))util_exports.assert(args.validationBatches==null||args.validationBatches>0&&Number.isInteger(args.validationBatches),()=>`For fitDataset() with dataset-based validation, config.validationBatches is expected not to be provided, or to be a positive integer, but got ${args.validationBatches}`);else{let validationData=standardizeTensorValidationData(args.validationData);valXs=validationData.xs,valYs=validationData.ys}let trainFunction=model2.makeTrainFunction(),outLabels=model2.getDedupedMetricsNames(),callbackMetrics;doValidation?callbackMetrics=outLabels.slice().concat(outLabels.map(n=>"val_"+n)):callbackMetrics=outLabels.slice();let callbacks2=standardizeCallbacks(args.callbacks,args.yieldEvery),verbose=args.verbose==null?1:args.verbose,{callbackList,history}=configureCallbacks(callbacks2,verbose,args.epochs,null,null,getStepsPerEpoch(dataset,args),null,doValidation,callbackMetrics);callbackList.setModel(model2),model2.history=history,await callbackList.onTrainBegin(),model2.stopTraining_=!1;let epoch=args.initialEpoch==null?0:args.initialEpoch,dataIterator=await dataset.iterator();for(;epoch=args.batchesPerEpoch:iteratorOut.done){if(doValidation){let valOuts;isDatasetObject(args.validationData)?valOuts=toList(await model2.evaluateDataset(args.validationData,{batches:args.validationBatches})):valOuts=toList(model2.evaluate(valXs,valYs,{batchSize:args.validationBatchSize==null?DEFAULT_VALIDATION_BATCH_SIZE:args.validationBatchSize,verbose:0}));for(let i=0;i0)throw new NotImplementedError("Verbose mode is not implemented yet.");util_exports.assert(!hasBatches||args.batches>0&&Number.isInteger(args.batches),()=>`Test loop expects \`batches\` to be a positive integer, but received ${JSON.stringify(args.batches)}`);let dataIterator=isLazyIteratorObject(dataset)?dataset:await dataset.iterator(),numExamples=0,batch=0;for(;hasBatches?batch{if(iteratorOut.value){let{xs,ys}=standardizeDataIteratorOutput(model2,iteratorOut.value),xsAndYs=xs.concat(ys),batchOuts=tidy(()=>f(xsAndYs));if(dispose(xsAndYs),batch===0)for(let i=0;iadd2(outs[i],mul(batchSize,batchOut))),batch>0&&dispose(oldScalar)}dispose(batchOuts),numExamples+=batchSize,++batch}return outs}),iteratorOut.done){hasBatches&&console.warn(`Your dataset iterator ran out of data during evaluateDataset(). Interrupting evalution. Make sure that your dataset can generate at least \`batches\` batches (in this case, ${args.batches} batches). You may need to use the repeat() function when building your dataset.`);break}}for(let i=0;i0&&Number.isInteger(batchSize),()=>`batchSize is required to be a positive integer, but got ${batchSize}`)}function sliceArrays(arrays,start,stop){return arrays==null?[null]:Array.isArray(arrays)?arrays.map(array2=>sliceAlongFirstAxis(array2,start,stop-start)):sliceAlongFirstAxis(arrays,start,stop-start)}function sliceArraysByIndices(arrays,indices){return tidy(()=>arrays==null?null:Array.isArray(arrays)?arrays.map(array2=>sliceArraysByIndices(array2,indices)):gather2(arrays,indices.dtype==="int32"?indices:indices.toInt()))}function makeBatches(size,batchSize){let output=[],batchStart=0,batchEnd=null;for(;batchStart=size&&(batchEnd=size),output.push([batchStart,batchEnd]),batchStart=batchEnd;return output}async function fitLoop(model2,f,ins,outLabels,batchSize,epochs,verbose,callbacks2,valF,valIns,shuffle2,callbackMetrics,initialEpoch,stepsPerEpoch,validationSteps){batchSize==null&&(batchSize=32),epochs==null&&(epochs=1),shuffle2==null&&(shuffle2=!0),initialEpoch==null&&(initialEpoch=0);let doValidation=!1;if(valF!=null&&valIns!=null&&(doValidation=!0),validationSteps!=null&&(doValidation=!0,stepsPerEpoch==null))throw new ValueError("Can only use `validationSteps` when doing step-wise training, i.e., `stepsPerEpoch` must be set.");let numTrainSamples=model2.checkNumSamples(ins,batchSize,stepsPerEpoch,"steps_per_epoch"),indexArray;numTrainSamples!=null&&(indexArray=range2(0,numTrainSamples)),verbose==null&&(verbose=1);let{callbackList,history}=configureCallbacks(callbacks2,verbose,epochs,initialEpoch,numTrainSamples,stepsPerEpoch,batchSize,doValidation,callbackMetrics);callbackList.setModel(model2),model2.history=history,await callbackList.onTrainBegin(),model2.stopTraining_=!1;for(let epoch=initialEpoch;epoch{let batchStart=batches[batchIndex][0],batchEnd=batches[batchIndex][1],batchIds=sliceAlongFirstAxis(epochIndexArray1D,batchStart,batchEnd-batchStart);batchLogs.batch=batchIndex,batchLogs.size=batchEnd-batchStart;let insBatch=sliceArraysByIndices(ins,batchIds),outs=f(insBatch);for(let i=0;i0){if(doValidation=!0,args.validationData.length===2)inputValX=args.validationData[0],inputValY=args.validationData[1];else throw args.validationData.length===3?new NotImplementedError("validationData including sample weights is not supported yet."):new ValueError(`When passing validation data, it must contain 2 (valX, valY) or 3 (valX, valY, valSampleWeight) items; ${args.validationData} is invalid.`);let checkBatchAxis2=!0,valStandardized=await model2.standardizeUserData(inputValX,inputValY,null,null,checkBatchAxis2,batchSize);valX=valStandardized[0],valY=valStandardized[1],valIns=valX.concat(valY)}else if(args.validationSplit!=null&&args.validationSplit>0&&args.validationSplit<1){doValidation=!0;let splitAt=Math.floor(inputs[0].shape[0]*(1-args.validationSplit)),originalBatchSize=inputs[0].shape[0];valX=sliceArrays(inputs,splitAt,originalBatchSize),inputs=sliceArrays(inputs,0,splitAt),valY=sliceArrays(targets,splitAt,originalBatchSize),targets=sliceArrays(targets,0,splitAt),valIns=valX.concat(valY)}else args.validationSteps!=null&&(doValidation=!0);let ins=inputs.concat(targets).concat(sampleWeights);model2.checkTrainableWeightsConsistency();let trainFunction=model2.makeTrainFunction(),outLabels=model2.getDedupedMetricsNames(),valFunction,callbackMetrics;doValidation?(model2.makeTestFunction(),valFunction=model2.testFunction,callbackMetrics=outLabels.slice().concat(outLabels.map(n=>"val_"+n))):(valFunction=null,valIns=[],callbackMetrics=outLabels.slice());let callbacks2=standardizeCallbacks(args.callbacks,args.yieldEvery);return await fitLoop(model2,trainFunction,ins,outLabels,batchSize,args.epochs,args.verbose,callbacks2,valFunction,valIns,args.shuffle,callbackMetrics,args.initialEpoch,null,null)}finally{model2.isTraining=!1,disposeNewTensors(inputs,x),disposeNewTensors(targets,y),disposeNewTensors(valX,inputValX),disposeNewTensors(valY,inputValY),sampleWeights!=null&&dispose(sampleWeights)}}function ensureTensorsRank2OrHigher(tensors){let outs=[];tensors instanceof Tensor&&(tensors=[tensors]);for(let i=0;ioldTensorIds.push(t.id));else if(refTensors!=null)for(let name in refTensors){let oldTensor=refTensors[name];oldTensorIds.push(oldTensor.id)}let tensorsToDispose=[];if(tensors instanceof Tensor)oldTensorIds.indexOf(tensors.id)===-1&&tensorsToDispose.push(tensors);else if(Array.isArray(tensors))tensors.forEach(t=>{oldTensorIds.indexOf(t.id)===-1&&tensorsToDispose.push(t)});else if(tensors!=null)for(let name in tensors){let tensor2=tensors[name];oldTensorIds.indexOf(tensor2.id)===-1&&tensorsToDispose.push(tensor2)}tensorsToDispose.forEach(t=>{t.isDisposed||t.dispose()})}function isDataTensor(x){return x instanceof Tensor}function isDataArray(x){return Array.isArray(x)}function isDataDict(x){return!isDataTensor(x)&&!isDataArray(x)}function standardizeInputData(data,names,shapes,checkBatchAxis=!0,exceptionPrefix=""){if(names==null||names.length===0){if(data!=null){let gotUnexpectedData=!1;if(isDataArray(data)&&data.length>0)gotUnexpectedData=!0;else if(isDataDict(data)){for(let key in data)if(data.hasOwnProperty(key)){gotUnexpectedData=!0;break}}else gotUnexpectedData=!0;if(gotUnexpectedData)throw new ValueError(`Error when checking model ${exceptionPrefix} expected no data, but got ${data}`)}return[]}if(data==null)return names.map(name=>null);let arrays;if(isDataDict(data)){data=data,arrays=[];for(let name of names){if(data[name]==null)throw new ValueError(`No data provided for "${name}". Need data for each key in: ${names}`);arrays.push(data[name])}}else if(isDataArray(data)){if(data=data,data.length!==names.length)throw new ValueError(`Error when checking model ${exceptionPrefix}: the Array of Tensors that you are passing to your model is not the size the model expected. Expected to see ${names.length} Tensor(s), but instead got the following list of Tensor(s): ${data}`);arrays=data}else{if(data=data,names.length>1)throw new ValueError(`The model ${exceptionPrefix} expects ${names.length} Tensor(s), but only received one Tensor. Found: Tensor with shape ${data.shape}`);arrays=[data]}if(arrays=ensureTensorsRank2OrHigher(arrays),shapes!=null)for(let i=0;i=0&&dim!==refDim)throw new ValueError(`Error when checking ${exceptionPrefix}: expected ${names[i]} to have shape [${shapes[i]}], but got array with shape [${array2.shape}].`)}}return arrays}function checkArrayLengths(inputs,targets,weights){let setX=unique2(inputs.map(input2=>input2.shape[0]));setX.sort();let setY=unique2(targets.map(target=>target.shape[0]));if(setY.sort(),setX.length>1)throw new ValueError(`All input Tensors (x) should have the same number of samples. Got array shapes: ${JSON.stringify(inputs.map(input2=>input2.shape))}`);if(setY.length>1)throw new ValueError(`All target Tensors (y) should have the same number of samples. Got array shapes: ${JSON.stringify(targets.map(target=>target.shape))}`);if(setX.length>0&&setY.length>0&&!util_exports.arraysEqual(setX,setY))throw new ValueError(`Input Tensors should have the same number of samples as target Tensors. Found ${setX[0]} input sample(s) and ${setY[0]} target sample(s).`)}function checkLossAndTargetCompatibility(targets,lossFns,outputShapes){let keyLosses=[meanSquaredError2,binaryCrossentropy,categoricalCrossentropy];for(let i=0;i1)throw new ValueError(`The model expects ${names.length} ${exceptionPrefix} Tensors, but only received one Tensor. Found: array with shape ${JSON.stringify(data.shape)}.`);arrays=[data]}if(shapes!=null)for(let i=0;i[]);let wrappedMetrics;if(typeof metrics2=="string"||typeof metrics2=="function")wrappedMetrics=[metrics2];else if(Array.isArray(metrics2)||typeof metrics2=="object")wrappedMetrics=metrics2;else throw new TypeError(`Type of metrics argument not understood. Expected an string,function, Array, or Object, found: ${metrics2}`);if(Array.isArray(wrappedMetrics))return outputNames.map(name=>wrappedMetrics);{let nestedMetrics=[];for(let name of outputNames){let outputMetrics=wrappedMetrics.hasOwnProperty(name)?wrappedMetrics[name]:[];Array.isArray(outputMetrics)||(outputMetrics=[outputMetrics]),nestedMetrics.push(outputMetrics)}return nestedMetrics}}var LAYERS_MODEL_FORMAT_NAME="layers-model",LayersModel=class extends Container{constructor(args){super(args);this.isTraining=!1}summary(lineLength,positions,printFn=console.log){if(!this.built)throw new ValueError("This model has never been called, thus its weights have not been created yet. So no summary can be displayed. Build the model first (e.g., by calling it on some test data).");printSummary(this,lineLength,positions,printFn)}compile(args){if(args.loss==null&&(args.loss=[]),this.loss=args.loss,typeof args.optimizer=="string")this.optimizer_=getOptimizer(args.optimizer),this.isOptimizerOwned=!0;else{if(!(args.optimizer instanceof Optimizer))throw new ValueError("User-defined optimizer must be an instance of tf.Optimizer.");this.optimizer_=args.optimizer,this.isOptimizerOwned=!1}let lossFunctions=[];if(!Array.isArray(args.loss)&&typeof args.loss!="string"&&typeof args.loss!="function"){args.loss=args.loss;for(let name in args.loss)if(this.outputNames.indexOf(name)===-1)throw new ValueError(`Unknown entry in loss dictionary: "${name}". Only expected the following keys: ${this.outputNames}`);for(let name of this.outputNames)args.loss[name]==null&&console.warn(`Output "${name}" is missing from loss dictionary. We assume this was done on purpose, and we will not be expecting data to be passed to ${name} during training`),lossFunctions.push(get(args.loss[name]))}else if(Array.isArray(args.loss)){if(args.loss.length!==this.outputs.length)throw new ValueError(`When passing an Array as loss, it should have one entry per model output. The model has ${this.outputs.length} output(s), but you passed loss=${args.loss}.`);lossFunctions=args.loss.map(l=>get(l))}else{let lossFunction=get(args.loss);this.outputs.forEach(_=>{lossFunctions.push(lossFunction)})}this.lossFunctions=lossFunctions,this.feedOutputNames=[],this.feedOutputShapes=[],this.feedLossFns=[];for(let i=0;i{for(let i=0;i1&&(this.metricsTensors.push([weightedLoss,i]),this.metricsNames.push(this.outputNames[i]+"_loss"))}});let nestedMetrics=collectMetrics(args.metrics,this.outputNames),appendMetric=(outputIndex,metricName,metricTensor)=>{this.outputNames.length>1&&(metricName=this.outputNames[outputIndex]+"_"+metricName),this.metricsNames.push(metricName),this.metricsTensors.push([metricTensor,outputIndex])};nameScope("metric",()=>{for(let i=0;i{let metricNamePrefix="",metricName,accFn,weightedMetricFn;for(let metric of metrics2){if(typeof metric=="string"&&["accuracy","acc","crossentropy","ce"].indexOf(metric)!==-1){let outputShape=this.internalOutputShapes[i];outputShape[outputShape.length-1]===1||this.lossFunctions[i]===binaryCrossentropy?["accuracy","acc"].indexOf(metric)!==-1?accFn=binaryAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=binaryCrossentropy2):this.lossFunctions[i]===sparseCategoricalCrossentropy?["accuracy","acc"].indexOf(metric)!==-1?accFn=sparseCategoricalAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=sparseCategoricalCrossentropy2):["accuracy","acc"].indexOf(metric)!==-1?accFn=categoricalAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=categoricalCrossentropy2);let suffix;["accuracy","acc"].indexOf(metric)!==-1?suffix="acc":["crossentropy","ce"].indexOf(metric)!==-1&&(suffix="ce"),weightedMetricFn=accFn,metricName=metricNamePrefix+suffix}else weightedMetricFn=get2(metric),metricName=metricNamePrefix+getLossOrMetricName(metric);let metricResult;nameScope(metricName,()=>{metricResult=weightedMetricFn}),appendMetric(i,metricName,metricResult)}})(outputMetrics)}}),this.collectedTrainableWeights=this.trainableWeights}checkTrainableWeightsConsistency(){this.collectedTrainableWeights!=null&&this.trainableWeights.length!==this.collectedTrainableWeights.length&&console.warn("Discrepancy between trainableweights and collected trainable weights. Did you set `model.trainable` without calling `model.compile()` afterwards?")}evaluate(x,y,args={}){let batchSize=args.batchSize==null?32:args.batchSize;checkBatchSize(batchSize);let checkBatchAxis=!0,standardizedOuts=this.standardizeUserDataXY(x,y,checkBatchAxis,batchSize);try{let ins=standardizedOuts[0].concat(standardizedOuts[1]);this.makeTestFunction();let f=this.testFunction,testOuts=this.testLoop(f,ins,batchSize,args.verbose,args.steps);return singletonOrArray(testOuts)}finally{disposeNewTensors(standardizedOuts[0],x),disposeNewTensors(standardizedOuts[1],y)}}async evaluateDataset(dataset,args){return this.makeTestFunction(),evaluateDataset(this,dataset,args)}checkNumSamples(ins,batchSize,steps,stepsName="steps"){let numSamples;if(steps!=null){if(numSamples=null,batchSize!=null)throw new ValueError(`If ${stepsName} is set, batchSize must be null or undefined.Got batchSize = ${batchSize}`)}else if(ins!=null)Array.isArray(ins)?numSamples=ins[0].shape[0]:numSamples=ins.shape[0];else throw new ValueError(`Either the input data should have a defined shape, or ${stepsName} shoud be specified.`);return numSamples}execute(inputs,outputs){if(Array.isArray(outputs)&&outputs.length===0)throw new ValueError("`outputs` is an empty Array, which is not allowed.");let outputsIsArray=Array.isArray(outputs),outputNames=outputsIsArray?outputs:[outputs],outputSymbolicTensors=this.retrieveSymbolicTensors(outputNames),feedDict=new FeedDict;if(inputs instanceof Tensor&&(inputs=[inputs]),Array.isArray(inputs)){if(inputs.length!==this.inputs.length)throw new ValueError(`The number of inputs provided (${inputs.length}) does not match the number of inputs of this model (${this.inputs.length}).`);for(let i=0;ioutput.name);for(let i=0;i0){let remainingNames=[];throw outputSymbolicTensors.forEach((tensor2,i)=>{tensor2==null&&remainingNames.push(symbolicTensorNames[i])}),new ValueError(`Cannot find SymbolicTensors for output name(s): ${JSON.stringify(remainingNames)}`)}return outputSymbolicTensors}predictLoop(ins,batchSize=32,verbose=!1){return tidy(()=>{let numSamples=this.checkNumSamples(ins);if(verbose)throw new NotImplementedError("Verbose predictLoop() is not implemented yet.");let batches=makeBatches(numSamples,batchSize),outsBatches=this.outputs.map(output=>[]);for(let batchIndex=0;batchIndex{let batchStart=batches[batchIndex][0],batchEnd=batches[batchIndex][1],insBatch=sliceArrays(ins,batchStart,batchEnd),feeds=[];if(Array.isArray(insBatch))for(let i=0;ioutsBatches[i].push(batchOut));return singletonOrArray(outsBatches.map(batches2=>concat(batches2,0)))})}predict(x,args={}){let xsRank2OrHigher=ensureTensorsRank2OrHigher(x);checkInputData(xsRank2OrHigher,this.inputNames,this.feedInputShapes,!1);try{let batchSize=args.batchSize==null?32:args.batchSize;return checkBatchSize(batchSize),this.predictLoop(xsRank2OrHigher,batchSize)}finally{disposeNewTensors(xsRank2OrHigher,x)}}predictOnBatch(x){checkInputData(x,this.inputNames,this.feedInputShapes,!0);let batchSize=(Array.isArray(x)?x[0]:x).shape[0];return this.predictLoop(x,batchSize)}standardizeUserDataXY(x,y,checkBatchAxis=!0,batchSize){if(this.optimizer_==null)throw new RuntimeError("You must compile a model before training/testing. Use LayersModel.compile(modelCompileArgs).");let outputShapes=[];for(let i=0;i0&&x[0].shape[0]%batchSize!=0)throw new ValueError(`In a stateful network, you should only pass inputs with a number of samples that is divisible by the batch size ${batchSize}. Found: ${x[0].shape[0]} sample(s).`);return[x,y]}async standardizeUserData(x,y,sampleWeight,classWeight,checkBatchAxis=!0,batchSize){let[standardXs,standardYs]=this.standardizeUserDataXY(x,y,checkBatchAxis,batchSize);if(sampleWeight!=null)throw new Error("sample weight is not supported yet.");let standardSampleWeights=null;if(classWeight!=null){let classWeights=standardizeClassWeights(classWeight,this.outputNames);standardSampleWeights=[];for(let i=0;i{let numSamples=this.checkNumSamples(ins,batchSize,steps,"steps"),outs=[];if(verbose>0)throw new NotImplementedError("Verbose mode is not implemented yet.");if(steps!=null)throw new NotImplementedError("steps mode in testLoop() is not implemented yet");{let batches=makeBatches(numSamples,batchSize),indexArray=tensor1d(range2(0,numSamples));for(let batchIndex=0;batchIndex1&&(newLabel+=`_${count(outLabels.slice(0,i),label)}`),dedupedOutLabels.push(newLabel)}return dedupedOutLabels}makeTrainFunction(){return data=>{let lossValues=[],inputs=data.slice(0,this.inputs.length),targets=data.slice(this.inputs.length,this.inputs.length+this.outputs.length),sampleWeights=data.slice(this.inputs.length+this.outputs.length,this.inputs.length+this.outputs.length*2),metricsValues=[],totalLossFunction=()=>{let feeds=[];for(let i=0;i1&&i{totalLoss=add2(totalLoss,regularizerLoss)}),totalLoss},variables=this.collectedTrainableWeights.map(param=>param.read()),returnCost=!0;return[this.optimizer_.minimize(totalLossFunction,returnCost,variables)].concat(metricsValues)}}makeTestFunction(){this.testFunction=data=>tidy(()=>{let valOutputs=[],totalLoss,inputs=data.slice(0,this.inputs.length),targets=data.slice(this.inputs.length,this.inputs.length+this.outputs.length),feeds=[];for(let i=0;itoSnakeCase(name))}else{let outputNames=Object.keys(this.loss);lossNames={};let losses4=this.loss;for(let outputName of outputNames)if(typeof losses4[outputName]=="string")lossNames[outputName]=toSnakeCase(losses4[outputName]);else throw new Error("Serialization of non-string loss is not supported.")}return lossNames}getMetricIdentifiers(){if(typeof this.metrics=="string"||typeof this.metrics=="function")return[toSnakeCase(getLossOrMetricName(this.metrics))];if(Array.isArray(this.metrics))return this.metrics.map(metric=>toSnakeCase(getLossOrMetricName(metric)));{let metricsIdentifiers={};for(let key in this.metrics)metricsIdentifiers[key]=toSnakeCase(getLossOrMetricName(this.metrics[key]));return metricsIdentifiers}}getTrainingConfig(){return{loss:this.getLossIdentifiers(),metrics:this.getMetricIdentifiers(),optimizer_config:{class_name:this.optimizer.getClassName(),config:this.optimizer.getConfig()}}}loadTrainingConfig(trainingConfig){if(trainingConfig.weighted_metrics!=null)throw new Error("Loading weight_metrics is not supported yet.");if(trainingConfig.loss_weights!=null)throw new Error("Loading loss_weights is not supported yet.");if(trainingConfig.sample_weight_mode!=null)throw new Error("Loading sample_weight_mode is not supported yet.");let tsConfig=convertPythonicToTs(trainingConfig.optimizer_config),optimizer=deserialize(tsConfig),loss;if(typeof trainingConfig.loss=="string")loss=toCamelCase(trainingConfig.loss);else if(Array.isArray(trainingConfig.loss))loss=trainingConfig.loss.map(lossEntry=>toCamelCase(lossEntry));else if(trainingConfig.loss!=null){loss={};for(let key in trainingConfig.loss)loss[key]=toCamelCase(trainingConfig.loss[key])}let metrics2;if(Array.isArray(trainingConfig.metrics))metrics2=trainingConfig.metrics.map(metric=>toCamelCase(metric));else if(trainingConfig.metrics!=null){metrics2={};for(let key in trainingConfig.metrics)metrics2[key]=toCamelCase(trainingConfig.metrics[key])}this.compile({loss,metrics:metrics2,optimizer})}async save(handlerOrURL,config){if(typeof handlerOrURL=="string"){let handlers=io_exports.getSaveHandlers(handlerOrURL);if(handlers.length===0)throw new ValueError(`Cannot find any save handlers for URL '${handlerOrURL}'`);if(handlers.length>1)throw new ValueError(`Found more than one (${handlers.length}) save handlers for URL '${handlerOrURL}'`);handlerOrURL=handlers[0]}if(handlerOrURL.save==null)throw new ValueError("LayersModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");let weightDataAndSpecs=await io_exports.encodeWeights(this.getNamedWeights(config)),returnString=!1,unusedArg=null,modelArtifacts={modelTopology:this.toJSON(unusedArg,returnString),format:LAYERS_MODEL_FORMAT_NAME,generatedBy:`TensorFlow.js tfjs-layers v${version2}`,convertedBy:null};if((config==null?!1:config.includeOptimizer)&&this.optimizer!=null){modelArtifacts.trainingConfig=this.getTrainingConfig();let weightType="optimizer",{data:optimizerWeightData,specs:optimizerWeightSpecs}=await io_exports.encodeWeights(await this.optimizer.getWeights(),weightType);weightDataAndSpecs.specs.push(...optimizerWeightSpecs),weightDataAndSpecs.data=io_exports.concatenateArrayBuffers([weightDataAndSpecs.data,optimizerWeightData])}if(this.userDefinedMetadata!=null){let checkSize=!0;checkUserDefinedMetadata(this.userDefinedMetadata,this.name,checkSize),modelArtifacts.userDefinedMetadata=this.userDefinedMetadata}return modelArtifacts.weightData=weightDataAndSpecs.data,modelArtifacts.weightSpecs=weightDataAndSpecs.specs,handlerOrURL.save(modelArtifacts)}setUserDefinedMetadata(userDefinedMetadata){checkUserDefinedMetadata(userDefinedMetadata,this.name),this.userDefinedMetadata=userDefinedMetadata}getUserDefinedMetadata(){return this.userDefinedMetadata}};LayersModel.className="Model";serialization_exports.registerClass(LayersModel);var Functional=class extends LayersModel{};Functional.className="Functional";serialization_exports.registerClass(Functional);async function modelFromJSON(modelAndWeightsConfig,customObjects){"modelTopology"in modelAndWeightsConfig||(modelAndWeightsConfig={modelTopology:modelAndWeightsConfig}),modelAndWeightsConfig=modelAndWeightsConfig;let modelTopology=modelAndWeightsConfig.modelTopology;modelTopology.model_config!=null&&(modelTopology=modelTopology.model_config);let tsConfig=convertPythonicToTs(modelTopology),model2=deserialize(tsConfig,customObjects);if(modelAndWeightsConfig.weightsManifest!=null){let weightValues=await io_exports.loadWeights(modelAndWeightsConfig.weightsManifest,modelAndWeightsConfig.pathPrefix,model2.weights.map(weight=>weight.originalName)),uniqueWeightValues={};for(let weight of model2.weights)uniqueWeightValues[weight.originalName]=weightValues[weight.originalName];model2.loadWeights(uniqueWeightValues),dispose(weightValues)}return model2}async function loadLayersModelInternal(pathOrIOHandler,options){if(options==null&&(options={}),typeof pathOrIOHandler=="string"){let handlers=io_exports.getLoadHandlers(pathOrIOHandler,options);if(handlers.length===0)handlers.push(io_exports.browserHTTPRequest(pathOrIOHandler,options));else if(handlers.length>1)throw new ValueError(`Found more than one (${handlers.length}) load handlers for URL '${pathOrIOHandler}'`);pathOrIOHandler=handlers[0]}return loadLayersModelFromIOHandler(pathOrIOHandler,void 0,options)}async function loadLayersModelFromIOHandler(handler,customObjects,options){if(options==null&&(options={}),handler.load==null)throw new ValueError("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let artifacts=await handler.load(),modelTopology=artifacts.modelTopology;modelTopology.model_config!=null&&(modelTopology=modelTopology.model_config);let strict=options.strict==null?!0:options.strict,fastWeightInit=artifacts.weightData!=null&&artifacts.weightSpecs!=null&&strict,model2=deserialize(convertPythonicToTs(modelTopology),customObjects,fastWeightInit),trainingConfig=artifacts.trainingConfig;if(trainingConfig!=null&&model2.loadTrainingConfig(trainingConfig),artifacts.userDefinedMetadata!=null&&model2.setUserDefinedMetadata(artifacts.userDefinedMetadata),artifacts.weightData!=null){if(artifacts.weightSpecs==null)throw new ValueError("LayersModel artifacts contains weight data, but not weight specs. Therefore loading of weights cannot proceed.");let{modelWeights,optimizerWeights}=decodeModelAndOptimizerWeights(artifacts.weightData,artifacts.weightSpecs);model2.loadWeights(modelWeights,strict),model2.optimizer!=null&&optimizerWeights.length>0&&await model2.optimizer.setWeights(optimizerWeights),dispose(modelWeights),dispose(optimizerWeights.map(w=>w.tensor))}return model2}function decodeModelAndOptimizerWeights(buffer2,specs){let name2Tensor=io_exports.decodeWeights(buffer2,specs),modelWeights={},optimizerWeights=[];return specs.forEach(spec=>{spec.group==="optimizer"?optimizerWeights.push({name:spec.name,tensor:name2Tensor[spec.name]}):modelWeights[spec.name]=name2Tensor[spec.name]}),{modelWeights,optimizerWeights}}var Sequential=class extends LayersModel{constructor(args){super({inputs:[],outputs:[]});if(args=args||{},this.trainable=!0,this.built=!1,this.name=args.name!=null?args.name:getUid("sequential_"),args.layers!=null)for(let layer of args.layers)this.add(layer)}checkShape(layer){if(layer.inboundNodes[0].outputTensors[0].shape.some(x=>x<0))throw new ValueError(`Negative dimension size caused by adding layer ${layer.name} with input shape [${layer.inboundNodes[0].inputTensors[0].shape}]`)}add(layer){let isLayerModelInstance=layer instanceof Sequential||layer instanceof LayersModel,modelLayer;if(isLayerModelInstance){if(modelLayer=layer,modelLayer.outputs.length!==1)throw new ValueError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");if(modelLayer.inputs.length!==1)throw new ValueError("All layers in a Sequential model should have a single input tensor. For multi-input layers, use the functional API.")}if(this.outputs.length===0){if(layer.inboundNodes.length===0){if(layer.batchInputShape==null)throw new ValueError("The first layer in a Sequential model must get an `inputShape` or `batchInputShape` argument.");let x=Input({batchShape:layer.batchInputShape,dtype:layer.dtype,name:layer.name+"_input"});layer.apply(x)}if(isLayerModelInstance)this.outputs=modelLayer.outputs,this.inputs=modelLayer.inputs;else{if(layer.inboundNodes.length!==1)throw new ValueError(`A layer added to a Sequential model must not already be connected somewhere else. LayersModel received layer ${layer.name} which has ${layer.inboundNodes.length} pre-existing inbound connections.`);if(layer.inboundNodes[0].outputTensors.length!==1)throw new ValueError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(layer),this.outputs=[layer.inboundNodes[0].outputTensors[0]],this.inputs=getSourceInputs(this.outputs[0])}this.inboundNodes=[],new Node({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:pyListRepeat(null,this.inputs.length),outputMasks:[null],inputShapes:this.inputs.map(x=>x.shape),outputShapes:this.outputs[0].shape})}else{let outputTensor=layer.apply(this.outputs[0]);if(Array.isArray(outputTensor))throw new TypeError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(layer),this.outputs=[outputTensor],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}this.layers.push(layer),this.built=!1}pop(){if(this.layers.length===0)throw new TypeError("There are no layers in the model.");if(this.layers.pop(),this.layers.length===0)this.outputs=[],this.inboundNodes=[],this.outboundNodes=[];else{let lastLayerIndex=this.layers.length-1;this.layers[lastLayerIndex].outboundNodes=[],this.outputs=[this.layers[lastLayerIndex].output],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}}call(inputs,kwargs){return this.model==null&&this.build(),this.model.call(inputs,kwargs)}build(inputShape){if(getExactlyOneShape(inputShape),this.inputs.length===0||this.outputs.length===0)throw new TypeError("Sequential model cannot be built: model is empty. Add some layers first.");this.model=new LayersModel({inputs:this.inputs,outputs:this.outputs[0],name:this.name+"_model"}),this.model.trainable=this.trainable,this.supportsMasking=this.model.supportsMasking,this.inputLayers=this.model.inputLayers,this.inputLayersNodeIndices=this.model.inputLayersNodeIndices,this.inputLayersTensorIndices=this.model.inputLayersTensorIndices,this.outputLayers=this.model.outputLayers,this.outputLayersNodeIndices=this.model.outputLayersNodeIndices,this.outputLayersTensorIndices=this.model.outputLayersTensorIndices,this.nodesByDepth=this.model.nodesByDepth,this.containerNodes=this.model.containerNodes,this.outputNames=this.model.outputNames,this.inputNames=this.model.inputNames,this.built=!0}countParams(){return this.built||this.build(),super.countParams()}summary(lineLength,positions,printFn=console.log){this.built||this.build(),super.summary(lineLength,positions,printFn)}setWeights(weights){this.model==null&&this.build(),this.model.setWeights(weights)}evaluate(x,y,args={}){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.evaluate(x,y,args)}async evaluateDataset(dataset,args){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.evaluateDataset(dataset,args)}predict(x,args={}){return this.model==null&&this.build(),this.model.predict(x,args)}predictOnBatch(x){return this.model==null&&this.build(),this.model.predictOnBatch(x)}compile(args){this.build(),this.model.compile(args),this.optimizer_=this.model.optimizer,this.isOptimizerOwned=this.model.isOptimizerOwned,this.loss=this.model.loss,this.metrics=this.model.metrics,this.metricsTensors=this.model.metricsTensors,this.metricsNames=this.model.metricsNames}get optimizer(){return this.model==null?void 0:this.model.optimizer}set optimizer(optimizer){this.model.optimizer=optimizer}async fit(x,y,args={}){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.fit(x,y,args)}async fitDataset(dataset,args){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.fitDataset(dataset,args)}async trainOnBatch(x,y){return this.model.trainOnBatch(x,y)}static fromConfig(cls,config,customObjects={},fastWeightInit=!1){let configArray,extraModelConfig={};if(config instanceof Array){if(config[0].className==null||config[0].className==="Merge")throw new ValueError("Legacy serialization format not supported yet.");configArray=config}else util_exports.assert(config.layers!=null,()=>"When the config data for a Sequential model is not an Array, it must be an Object that contains the 'layers' field."),configArray=config.layers,delete config.layers,extraModelConfig=config;let model2=new cls(extraModelConfig);if(!(model2 instanceof Sequential))throw new NotImplementedError(`Sequential.fromConfig called on non-Sequential input: ${model2}`);for(let conf of configArray){let layer=deserialize(conf,void 0,fastWeightInit);fastWeightInit&&layer.setFastWeightInitDuringBuild(!0),model2.add(layer)}return model2}set stopTraining(stop){if(this.model==null)throw new ValueError("Cannot set the stopTraining property of a sequential model before it is compiled.");this.model.stopTraining=stop}get stopTraining(){if(this.model==null)throw new ValueError("Cannot get the stopTraining property of a sequential model before it is compiled.");return this.model.stopTraining}getConfig(){let layers=[];for(let layer of this.layers){let dict={};dict.className=layer.getClassName(),dict.config=layer.getConfig(),layers.push(dict)}return{name:this.name,layers}}};Sequential.className="Sequential";serialization_exports.registerClass(Sequential);function model(args){return new LayersModel(args)}function sequential(config){return new Sequential(config)}function loadLayersModel(pathOrIOHandler,options){return options==null&&(options={}),loadLayersModelInternal(pathOrIOHandler,options)}function input(config){return Input(config)}function registerCallbackConstructor(verbosityLevel,callbackConstructor){CallbackConstructorRegistry.registerCallbackConstructor(verbosityLevel,callbackConstructor)}var Activation=class extends serialization_exports.Serializable{getConfig(){return{}}},Elu2=class extends Activation{apply(x,alpha=1){return elu2(x,alpha)}};Elu2.className="elu";serialization_exports.registerClass(Elu2);var Selu2=class extends Activation{apply(x){return selu(x)}};Selu2.className="selu";serialization_exports.registerClass(Selu2);var Relu2=class extends Activation{apply(x){return relu(x)}};Relu2.className="relu";serialization_exports.registerClass(Relu2);var Relu62=class extends Activation{apply(x){return tidy(()=>minimum(6,relu(x)))}};Relu62.className="relu6";serialization_exports.registerClass(Relu62);var Linear=class extends Activation{apply(x){return x}};Linear.className="linear";serialization_exports.registerClass(Linear);var Sigmoid2=class extends Activation{apply(x){return sigmoid(x)}};Sigmoid2.className="sigmoid";serialization_exports.registerClass(Sigmoid2);var HardSigmoid=class extends Activation{apply(x){return hardSigmoid(x)}};HardSigmoid.className="hardSigmoid";serialization_exports.registerClass(HardSigmoid);var Softplus2=class extends Activation{apply(x){return softplus(x)}};Softplus2.className="softplus";serialization_exports.registerClass(Softplus2);var Softsign=class extends Activation{apply(x){return softsign(x)}};Softsign.className="softsign";serialization_exports.registerClass(Softsign);var Tanh2=class extends Activation{apply(x){return tanh2(x)}};Tanh2.className="tanh";serialization_exports.registerClass(Tanh2);var Softmax2=class extends Activation{apply(x,axis=-1){return softmax(x,axis)}};Softmax2.className="softmax";serialization_exports.registerClass(Softmax2);var LogSoftmax2=class extends Activation{apply(x,axis=-1){return logSoftmax(x,axis)}};LogSoftmax2.className="logSoftmax";serialization_exports.registerClass(LogSoftmax2);var Swish=class extends Activation{apply(x,alpha=1){return tidy(()=>sigmoid(x.mul(alpha)).mul(x))}};Swish.className="swish";serialization_exports.registerClass(Swish);function serializeActivation(activation2){return activation2.getClassName()}function deserializeActivation(config,customObjects={}){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"activation")}function getActivation(identifier){if(identifier==null){let config={};return config.className="linear",config.config={},deserializeActivation(config)}if(typeof identifier=="string"){let config={};return config.className=identifier,config.config={},deserializeActivation(config)}else return identifier instanceof Activation?identifier:deserializeActivation(identifier)}function assertObjectArgs(args){if(args!=null&&typeof args!="object")throw new Error(`Argument to L1L2 regularizer's constructor is expected to be an object, but received: ${args}`)}var Regularizer=class extends serialization_exports.Serializable{},L1L2=class extends Regularizer{constructor(args){super();assertObjectArgs(args),this.l1=args==null||args.l1==null?.01:args.l1,this.l2=args==null||args.l2==null?.01:args.l2,this.hasL1=this.l1!==0,this.hasL2=this.l2!==0}apply(x){return tidy(()=>{let regularization=zeros([1]);return this.hasL1&&(regularization=add2(regularization,sum2(mul(this.l1,abs(x))))),this.hasL2&&(regularization=add2(regularization,sum2(mul(this.l2,square2(x))))),regularization.asScalar()})}getConfig(){return{l1:this.l1,l2:this.l2}}static fromConfig(cls,config){return new cls({l1:config.l1,l2:config.l2})}};L1L2.className="L1L2";serialization_exports.registerClass(L1L2);function l1(args){return assertObjectArgs(args),new L1L2({l1:args!=null?args.l1:null,l2:0})}function l2(args){return assertObjectArgs(args),new L1L2({l2:args!=null?args.l2:null,l1:0})}var REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP={l1l2:"L1L2"};function serializeRegularizer(constraint){return serializeKerasObject(constraint)}function deserializeRegularizer(config,customObjects={}){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"regularizer")}function getRegularizer(identifier){if(identifier==null)return null;if(typeof identifier=="string"){let config={className:identifier in REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP?REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier,config:{}};return deserializeRegularizer(config)}else return identifier instanceof Regularizer?identifier:deserializeRegularizer(identifier)}var ReLU=class extends Layer{constructor(args){super(args==null?{}:args);this.supportsMasking=!0,args!=null&&(this.maxValue=args.maxValue)}call(inputs,kwargs){inputs=getExactlyOneTensor(inputs);let output=relu(inputs);return this.maxValue!=null&&(output=clipByValue(output,0,this.maxValue)),output}computeOutputShape(inputShape){return inputShape}getConfig(){let config={maxValue:this.maxValue},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};ReLU.className="ReLU";serialization_exports.registerClass(ReLU);var LeakyReLU=class extends Layer{constructor(args){super(args==null?{}:args);this.DEFAULT_ALPHA=.3,args==null&&(args={}),this.alpha=args.alpha==null?this.DEFAULT_ALPHA:args.alpha}call(inputs,kwargs){let x=getExactlyOneTensor(inputs);return leakyRelu(x,this.alpha)}computeOutputShape(inputShape){return inputShape}getConfig(){let config={alpha:this.alpha},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};LeakyReLU.className="LeakyReLU";serialization_exports.registerClass(LeakyReLU);var PReLU=class extends Layer{constructor(args){super(args==null?{}:args);if(this.DEFAULT_ALPHA_INITIALIZER="zeros",args==null&&(args={}),this.supportsMasking=!0,this.alphaInitializer=getInitializer(args.alphaInitializer||this.DEFAULT_ALPHA_INITIALIZER),this.alphaRegularizer=getRegularizer(args.alphaRegularizer),this.alphaConstraint=getConstraint(args.alphaConstraint),args.sharedAxes==null)this.sharedAxes=null;else if(Array.isArray(args.sharedAxes))this.sharedAxes=args.sharedAxes;else if(typeof args.sharedAxes=="number")this.sharedAxes=[args.sharedAxes];else throw new ValueError(`Expected sharedAxes to be a number or an array of numbers, but got ${args.sharedAxes}`)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let paramShape=inputShape.slice(1);if(this.sharedAxes!=null)for(let i of this.sharedAxes)paramShape[i-1]=1;this.alpha=this.addWeight("alpha",paramShape,"float32",this.alphaInitializer,this.alphaRegularizer,!0,this.alphaConstraint);let axes={};if(this.sharedAxes!=null)for(let i=1;i(checkDataFormat(dataFormat),dataFormat==="channelsFirst"?transpose(x,[0,2,3,1]):x))}function preprocessConv3DInput(x,dataFormat){return tidy(()=>(checkDataFormat(dataFormat),dataFormat==="channelsFirst"?transpose(x,[0,2,3,4,1]):x))}function conv1dWithBias(x,kernel,bias,strides=1,padding="valid",dataFormat,dilationRate=1){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.shape.length!==3)throw new ValueError(`The input of a conv1dWithBias operation should be 3, but is ${x.shape.length} instead.`);if(kernel.shape.length!==3)throw new ValueError(`The kernel for a conv1dWithBias operation should be 3, but is ${kernel.shape.length} instead`);if(bias!=null&&bias.shape.length!==1)throw new ValueError(`The bias for a conv1dWithBias operation should be 1, but is ${kernel.shape.length} instead`);if(dataFormat==="channelsFirst"&&(x=transpose(x,[0,2,1])),padding==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");let y=conv1d(x,kernel,strides,padding==="same"?"same":"valid","NWC",dilationRate);return bias!=null&&(y=biasAdd(y,bias)),y})}function conv2dWithBiasActivation(x,kernel,bias,strides=[1,1],padding="valid",dataFormat,dilationRate,activation2=null){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.rank!==3&&x.rank!==4)throw new ValueError(`conv2dWithBiasActivation expects input to be of rank 3 or 4, but received ${x.rank}.`);if(kernel.rank!==3&&kernel.rank!==4)throw new ValueError(`conv2dWithBiasActivation expects kernel to be of rank 3 or 4, but received ${x.rank}.`);let y=preprocessConv2DInput(x,dataFormat);if(padding==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");return y=fused_ops_exports.conv2d({x:y,filter:kernel,strides,pad:padding==="same"?"same":"valid",dilations:dilationRate,dataFormat:"NHWC",bias,activation:activation2}),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}function conv3dWithBias(x,kernel,bias,strides=[1,1,1],padding="valid",dataFormat,dilationRate){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.rank!==4&&x.rank!==5)throw new ValueError(`conv3dWithBias expects input to be of rank 4 or 5, but received ${x.rank}.`);if(kernel.rank!==4&&kernel.rank!==5)throw new ValueError(`conv3dWithBias expects kernel to be of rank 4 or 5, but received ${x.rank}.`);let y=preprocessConv3DInput(x,dataFormat);if(padding==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv3dWithBias is not implemented yet.");return y=conv3d(y,kernel,strides,padding==="same"?"same":"valid","NDHWC",dilationRate),bias!=null&&(y=biasAdd(y,bias)),dataFormat==="channelsFirst"&&(y=transpose(y,[0,4,1,2,3])),y})}var BaseConv=class extends Layer{constructor(rank,args){super(args);if(this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",BaseConv.verifyArgs(args),this.rank=rank,assertPositiveInteger(this.rank,"rank"),this.rank!==1&&this.rank!==2&&this.rank!==3)throw new NotImplementedError(`Convolution layer for rank other than 1, 2, or 3 (${this.rank}) is not implemented yet.`);if(this.kernelSize=normalizeArray(args.kernelSize,rank,"kernelSize"),this.strides=normalizeArray(args.strides==null?1:args.strides,rank,"strides"),this.padding=args.padding==null?"valid":args.padding,checkPaddingMode(this.padding),this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),this.activation=getActivation(args.activation),this.useBias=args.useBias==null?!0:args.useBias,this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.biasConstraint=getConstraint(args.biasConstraint),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.dilationRate=normalizeArray(args.dilationRate==null?1:args.dilationRate,rank,"dilationRate"),this.rank===1&&Array.isArray(this.dilationRate)&&this.dilationRate.length!==1)throw new ValueError(`dilationRate must be a number or an array of a single number for 1D convolution, but received ${JSON.stringify(this.dilationRate)}`);if(this.rank===2){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==2)throw new ValueError(`dilationRate must be a number or array of two numbers for 2D convolution, but received ${JSON.stringify(this.dilationRate)}`)}else if(this.rank===3){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==3)throw new ValueError(`dilationRate must be a number or array of three numbers for 3D convolution, but received ${JSON.stringify(this.dilationRate)}`)}}static verifyArgs(args){if(assert2("kernelSize"in args,"required key 'kernelSize' not in config"),typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,3))throw new ValueError(`BaseConv expects config.kernelSize to be number or number[] with length 1, 2, or 3, but received ${JSON.stringify(args.kernelSize)}.`)}getConfig(){let config={kernelSize:this.kernelSize,strides:this.strides,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,activation:serializeActivation(this.activation),useBias:this.useBias,biasInitializer:serializeInitializer(this.biasInitializer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),biasConstraint:serializeConstraint(this.biasConstraint)},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},Conv=class extends BaseConv{constructor(rank,args){super(rank,args);this.kernel=null,Conv.verifyArgs(args),this.filters=args.filters,assertPositiveInteger(this.filters,"filters"),this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.kernelConstraint=getConstraint(args.kernelConstraint),this.kernelRegularizer=getRegularizer(args.kernelRegularizer)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError(`The channel dimension of the input should be defined. Found ${inputShape[channelAxis]}`);let inputDim=inputShape[channelAxis],kernelShape=this.kernelSize.concat([inputDim,this.filters]);this.kernel=this.addWeight("kernel",kernelShape,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[{ndim:this.rank+2,axes:{[channelAxis]:inputDim}}],this.built=!0}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let outputs,biasValue=this.bias==null?null:this.bias.read(),fusedActivationName=mapActivationToFusedKernel(this.activation.getClassName());if(fusedActivationName!=null&&this.rank===2)outputs=conv2dWithBiasActivation(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate,fusedActivationName);else{if(this.rank===1)outputs=conv1dWithBias(inputs,this.kernel.read(),biasValue,this.strides[0],this.padding,this.dataFormat,this.dilationRate[0]);else if(this.rank===2)outputs=conv2dWithBiasActivation(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate);else if(this.rank===3)outputs=conv3dWithBias(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate);else throw new NotImplementedError("convolutions greater than 3D are not implemented yet.");this.activation!=null&&(outputs=this.activation.apply(outputs))}return outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let newSpace=[],space=this.dataFormat==="channelsLast"?inputShape.slice(1,inputShape.length-1):inputShape.slice(2);for(let i=0;i 0 but got ${JSON.stringify(args.filters)}`)}},Conv2D2=class extends Conv{constructor(args){super(2,args);Conv2D2.verifyArgs(args)}getConfig(){let config=super.getConfig();return delete config.rank,config}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,2))throw new ValueError(`Conv2D expects config.kernelSize to be number or number[] with length 1 or 2, but received ${JSON.stringify(args.kernelSize)}.`)}};Conv2D2.className="Conv2D";serialization_exports.registerClass(Conv2D2);var Conv3D2=class extends Conv{constructor(args){super(3,args);Conv3D2.verifyArgs(args)}getConfig(){let config=super.getConfig();return delete config.rank,config}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!(Array.isArray(args.kernelSize)&&(args.kernelSize.length===1||args.kernelSize.length===3)))throw new ValueError(`Conv3D expects config.kernelSize to be number or [number, number, number], but received ${JSON.stringify(args.kernelSize)}.`)}};Conv3D2.className="Conv3D";serialization_exports.registerClass(Conv3D2);var Conv2DTranspose=class extends Conv2D2{constructor(args){super(args);if(this.inputSpec=[new InputSpec({ndim:4})],this.padding!=="same"&&this.padding!=="valid")throw new ValueError(`Conv2DTranspose currently supports only padding modes 'same' and 'valid', but received padding mode ${this.padding}`)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length!==4)throw new ValueError("Input should have rank 4; Received input shape: "+JSON.stringify(inputShape));let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError("The channel dimension of the inputs should be defined. Found `None`.");let inputDim=inputShape[channelAxis],kernelShape=this.kernelSize.concat([this.filters,inputDim]);this.kernel=this.addWeight("kernel",kernelShape,"float32",this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],"float32",this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[new InputSpec({ndim:4,axes:{[channelAxis]:inputDim}})],this.built=!0}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);if(input2.shape.length!==4)throw new ValueError(`Conv2DTranspose.call() expects input tensor to be rank-4, but received a tensor of rank-${input2.shape.length}`);let inputShape=input2.shape,batchSize=inputShape[0],hAxis,wAxis;this.dataFormat==="channelsFirst"?(hAxis=2,wAxis=3):(hAxis=1,wAxis=2);let height=inputShape[hAxis],width=inputShape[wAxis],kernelH=this.kernelSize[0],kernelW=this.kernelSize[1],strideH=this.strides[0],strideW=this.strides[1],outHeight=deconvLength(height,strideH,kernelH,this.padding),outWidth=deconvLength(width,strideW,kernelW,this.padding),outputShape=[batchSize,outHeight,outWidth,this.filters];this.dataFormat!=="channelsLast"&&(input2=transpose(input2,[0,2,3,1]));let outputs=conv2dTranspose(input2,this.kernel.read(),outputShape,this.strides,this.padding);return this.dataFormat!=="channelsLast"&&(outputs=transpose(outputs,[0,3,1,2])),this.bias!=null&&(outputs=biasAdd(outputs,this.bias.read(),this.dataFormat)),this.activation!=null&&(outputs=this.activation.apply(outputs)),outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice(),channelAxis,heightAxis,widthAxis;this.dataFormat==="channelsFirst"?(channelAxis=1,heightAxis=2,widthAxis=3):(channelAxis=3,heightAxis=1,widthAxis=2);let kernelH=this.kernelSize[0],kernelW=this.kernelSize[1],strideH=this.strides[0],strideW=this.strides[1];return outputShape[channelAxis]=this.filters,outputShape[heightAxis]=deconvLength(outputShape[heightAxis],strideH,kernelH,this.padding),outputShape[widthAxis]=deconvLength(outputShape[widthAxis],strideW,kernelW,this.padding),outputShape}getConfig(){let config=super.getConfig();return delete config.dilationRate,config}};Conv2DTranspose.className="Conv2DTranspose";serialization_exports.registerClass(Conv2DTranspose);var SeparableConv=class extends Conv{constructor(rank,config){super(rank,config);if(this.DEFAULT_DEPTHWISE_INITIALIZER="glorotUniform",this.DEFAULT_POINTWISE_INITIALIZER="glorotUniform",this.depthwiseKernel=null,this.pointwiseKernel=null,config.filters==null)throw new ValueError("The `filters` configuration field is required by SeparableConv, but is unspecified.");if(config.kernelInitializer!=null||config.kernelRegularizer!=null||config.kernelConstraint!=null)throw new ValueError("Fields kernelInitializer, kernelRegularizer and kernelConstraint are invalid for SeparableConv2D. Use depthwiseInitializer, depthwiseRegularizer, depthwiseConstraint, pointwiseInitializer, pointwiseRegularizer and pointwiseConstraint instead.");if(config.padding!=null&&config.padding!=="same"&&config.padding!=="valid")throw new ValueError(`SeparableConv${this.rank}D supports only padding modes: 'same' and 'valid', but received ${JSON.stringify(config.padding)}`);this.depthMultiplier=config.depthMultiplier==null?1:config.depthMultiplier,this.depthwiseInitializer=getInitializer(config.depthwiseInitializer||this.DEFAULT_DEPTHWISE_INITIALIZER),this.depthwiseRegularizer=getRegularizer(config.depthwiseRegularizer),this.depthwiseConstraint=getConstraint(config.depthwiseConstraint),this.pointwiseInitializer=getInitializer(config.depthwiseInitializer||this.DEFAULT_POINTWISE_INITIALIZER),this.pointwiseRegularizer=getRegularizer(config.pointwiseRegularizer),this.pointwiseConstraint=getConstraint(config.pointwiseConstraint)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length{inputs=getExactlyOneTensor(inputs);let output;if(this.rank===1)throw new NotImplementedError("1D separable convolution is not implemented yet.");return this.rank===2&&(this.dataFormat==="channelsFirst"&&(inputs=transpose(inputs,[0,2,3,1])),output=separableConv2d(inputs,this.depthwiseKernel.read(),this.pointwiseKernel.read(),this.strides,this.padding,this.dilationRate,"NHWC")),this.useBias&&(output=biasAdd(output,this.bias.read(),this.dataFormat)),this.activation!=null&&(output=this.activation.apply(output)),this.dataFormat==="channelsFirst"&&(output=transpose(output,[0,3,1,2])),output})}getConfig(){let config=super.getConfig();return delete config.rank,delete config.kernelInitializer,delete config.kernelRegularizer,delete config.kernelConstraint,config.depthwiseInitializer=serializeInitializer(this.depthwiseInitializer),config.pointwiseInitializer=serializeInitializer(this.pointwiseInitializer),config.depthwiseRegularizer=serializeRegularizer(this.depthwiseRegularizer),config.pointwiseRegularizer=serializeRegularizer(this.pointwiseRegularizer),config.depthwiseConstraint=serializeConstraint(this.depthwiseConstraint),config.pointwiseConstraint=serializeConstraint(this.pointwiseConstraint),config}};SeparableConv.className="SeparableConv";var SeparableConv2D=class extends SeparableConv{constructor(args){super(2,args)}};SeparableConv2D.className="SeparableConv2D";serialization_exports.registerClass(SeparableConv2D);var Conv1D=class extends Conv{constructor(args){super(1,args);Conv1D.verifyArgs(args),this.inputSpec=[{ndim:3}]}getConfig(){let config=super.getConfig();return delete config.rank,delete config.dataFormat,config}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,1))throw new ValueError(`Conv1D expects config.kernelSize to be number or number[] with length 1, but received ${JSON.stringify(args.kernelSize)}.`)}};Conv1D.className="Conv1D";serialization_exports.registerClass(Conv1D);var Cropping2D=class extends Layer{constructor(args){super(args);typeof args.cropping=="number"?this.cropping=[[args.cropping,args.cropping],[args.cropping,args.cropping]]:typeof args.cropping[0]=="number"?this.cropping=[[args.cropping[0],args.cropping[0]],[args.cropping[1],args.cropping[1]]]:this.cropping=args.cropping,this.dataFormat=args.dataFormat===void 0?"channelsLast":args.dataFormat,this.inputSpec=[{ndim:4}]}computeOutputShape(inputShape){return this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],inputShape[2]-this.cropping[0][0]-this.cropping[0][1],inputShape[3]-this.cropping[1][0]-this.cropping[1][1]]:[inputShape[0],inputShape[1]-this.cropping[0][0]-this.cropping[0][1],inputShape[2]-this.cropping[1][0]-this.cropping[1][1],inputShape[3]]}call(inputs,kwargs){return tidy(()=>{if(inputs=getExactlyOneTensor(inputs),this.dataFormat==="channelsLast"){let hSliced=sliceAlongAxis(inputs,this.cropping[0][0],inputs.shape[1]-this.cropping[0][0]-this.cropping[0][1],2);return sliceAlongAxis(hSliced,this.cropping[1][0],inputs.shape[2]-this.cropping[1][1]-this.cropping[1][0],3)}else{let hSliced=sliceAlongAxis(inputs,this.cropping[0][0],inputs.shape[2]-this.cropping[0][0]-this.cropping[0][1],3);return sliceAlongAxis(hSliced,this.cropping[1][0],inputs.shape[3]-this.cropping[1][1]-this.cropping[1][0],4)}})}getConfig(){let config={cropping:this.cropping,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Cropping2D.className="Cropping2D";serialization_exports.registerClass(Cropping2D);var UpSampling2D=class extends Layer{constructor(args){super(args);this.DEFAULT_SIZE=[2,2],this.inputSpec=[{ndim:4}],this.size=args.size==null?this.DEFAULT_SIZE:args.size,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),this.interpolation=args.interpolation==null?"nearest":args.interpolation,checkInterpolationFormat(this.interpolation)}computeOutputShape(inputShape){if(this.dataFormat==="channelsFirst"){let height=inputShape[2]==null?null:this.size[0]*inputShape[2],width=inputShape[3]==null?null:this.size[1]*inputShape[3];return[inputShape[0],inputShape[1],height,width]}else{let height=inputShape[1]==null?null:this.size[0]*inputShape[1],width=inputShape[2]==null?null:this.size[1]*inputShape[2];return[inputShape[0],height,width,inputShape[3]]}}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs),inputShape=input2.shape;if(this.dataFormat==="channelsFirst"){input2=transpose(input2,[0,2,3,1]);let height=this.size[0]*inputShape[2],width=this.size[1]*inputShape[3],resized=this.interpolation==="nearest"?input2.resizeNearestNeighbor([height,width]):input2.resizeBilinear([height,width]);return transpose(resized,[0,3,1,2])}else{let height=this.size[0]*inputShape[1],width=this.size[1]*inputShape[2];return this.interpolation==="nearest"?input2.resizeNearestNeighbor([height,width]):input2.resizeBilinear([height,width])}})}getConfig(){let config={size:this.size,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};UpSampling2D.className="UpSampling2D";serialization_exports.registerClass(UpSampling2D);function depthwiseConv2d3(x,depthwiseKernel,strides=[1,1],padding="valid",dataFormat,dilationRate){return tidy(()=>{dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat);let y=preprocessConv2DInput(x,dataFormat);if(x.rank!==4)throw new ValueError(`Input for depthwiseConv2d is required to be 4-D, but is instead ${x.rank}-D`);if(depthwiseKernel.rank!==4)throw new ValueError(`depthwiseKernel is required to be 4-D, but is instead ${depthwiseKernel.rank}-D`);return y=depthwiseConv2d(y,depthwiseKernel,strides,padding==="same"?"same":"valid","NHWC",dilationRate),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}var DepthwiseConv2D=class extends BaseConv{constructor(args){super(2,args);this.depthwiseKernel=null,this.depthMultiplier=args.depthMultiplier==null?1:args.depthMultiplier,this.depthwiseInitializer=getInitializer(args.depthwiseInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.depthwiseConstraint=getConstraint(args.depthwiseConstraint),this.depthwiseRegularizer=getRegularizer(args.depthwiseRegularizer)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length<4)throw new ValueError(`Inputs to DepthwiseConv2D should have rank 4. Received input shape: ${JSON.stringify(inputShape)}.`);let channelAxis=this.dataFormat==="channelsFirst"?1:3;if(inputShape[channelAxis]==null||inputShape[channelAxis]<0)throw new ValueError(`The channel dimension of the inputs to DepthwiseConv2D should be defined, but is not (${inputShape[channelAxis]}).`);let inputDim=inputShape[channelAxis],depthwiseKernelShape=[this.kernelSize[0],this.kernelSize[1],inputDim,this.depthMultiplier];this.depthwiseKernel=this.addWeight("depthwise_kernel",depthwiseKernelShape,null,this.depthwiseInitializer,this.depthwiseRegularizer,!0,this.depthwiseConstraint),this.useBias?this.bias=this.addWeight("bias",[inputDim*this.depthMultiplier],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let outputs=depthwiseConv2d3(inputs,this.depthwiseKernel.read(),this.strides,this.padding,this.dataFormat,null);return this.useBias&&(outputs=biasAdd(outputs,this.bias.read(),this.dataFormat)),this.activation!=null&&(outputs=this.activation.apply(outputs)),outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],cols=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2],outFilters=this.dataFormat==="channelsFirst"?inputShape[1]*this.depthMultiplier:inputShape[3]*this.depthMultiplier,outRows=convOutputLength(rows,this.kernelSize[0],this.padding,this.strides[0]),outCols=convOutputLength(cols,this.kernelSize[1],this.padding,this.strides[1]);return this.dataFormat==="channelsFirst"?[inputShape[0],outFilters,outRows,outCols]:[inputShape[0],outRows,outCols,outFilters]}getConfig(){let config=super.getConfig();return config.depthMultiplier=this.depthMultiplier,config.depthwiseInitializer=serializeInitializer(this.depthwiseInitializer),config.depthwiseRegularizer=serializeRegularizer(this.depthwiseRegularizer),config.depthwiseConstraint=serializeConstraint(this.depthwiseRegularizer),config}};DepthwiseConv2D.className="DepthwiseConv2D";serialization_exports.registerClass(DepthwiseConv2D);function standardizeArgs(inputs,initialState,constants,numConstants){if(Array.isArray(inputs)){if(initialState!=null||constants!=null)throw new ValueError("When inputs is an array, neither initialState or constants should be provided");numConstants!=null&&(constants=inputs.slice(inputs.length-numConstants,inputs.length),inputs=inputs.slice(0,inputs.length-numConstants)),inputs.length>1&&(initialState=inputs.slice(1,inputs.length)),inputs=inputs[0]}function toListOrNull(x){return x==null||Array.isArray(x)?x:[x]}return initialState=toListOrNull(initialState),constants=toListOrNull(constants),{inputs,initialState,constants}}function rnn(stepFunction,inputs,initialStates,goBackwards=!1,mask,constants,unroll=!1,needPerStepOutputs=!1){return tidy(()=>{let ndim=inputs.shape.length;if(ndim<3)throw new ValueError(`Input should be at least 3D, but is ${ndim}D.`);let axes=[1,0].concat(range2(2,ndim));if(inputs=transpose(inputs,axes),constants!=null)throw new NotImplementedError("The rnn() functoin of the deeplearn.js backend does not support constants yet.");unroll&&console.warn("Backend rnn(): the unroll = true option is not applicable to the imperative deeplearn.js backend."),mask!=null&&(mask=mask.asType("bool").asType("float32"),mask.rank===ndim-1&&(mask=expandDims(mask,-1)),mask=transpose(mask,axes)),goBackwards&&(inputs=reverse(inputs,0),mask!=null&&(mask=reverse(mask,0)));let perStepOutputs=[],lastOutput,states=initialStates,timeSteps=inputs.shape[0],perStepInputs=unstack(inputs),perStepMasks;mask!=null&&(perStepMasks=unstack(mask));for(let t=0;tstepFunction(currentInput,states));if(mask==null)lastOutput=stepOutputs[0],states=stepOutputs[1];else{let maskedOutputs=tidy(()=>{let stepMask=perStepMasks[t],negStepMask=onesLike(stepMask).sub(stepMask),output=stepOutputs[0].mul(stepMask).add(states[0].mul(negStepMask)),newStates=states.map((state,i)=>stepOutputs[1][i].mul(stepMask).add(state.mul(negStepMask)));return{output,newStates}});lastOutput=maskedOutputs.output,states=maskedOutputs.newStates}needPerStepOutputs&&perStepOutputs.push(lastOutput)}let outputs;return needPerStepOutputs&&(outputs=stack(perStepOutputs,1)),[lastOutput,outputs,states]})}var RNN=class extends Layer{constructor(args){super(args);let cell;if(args.cell==null)throw new ValueError("cell property is missing for the constructor of RNN.");if(Array.isArray(args.cell)?cell=new StackedRNNCells({cells:args.cell}):cell=args.cell,cell.stateSize==null)throw new ValueError("The RNN cell should have an attribute `stateSize` (tuple of integers, one integer per RNN state).");this.cell=cell,this.returnSequences=args.returnSequences==null?!1:args.returnSequences,this.returnState=args.returnState==null?!1:args.returnState,this.goBackwards=args.goBackwards==null?!1:args.goBackwards,this._stateful=args.stateful==null?!1:args.stateful,this.unroll=args.unroll==null?!1:args.unroll,this.supportsMasking=!0,this.inputSpec=[new InputSpec({ndim:3})],this.stateSpec=null,this.states_=null,this.numConstants=null,this.keptStates=[]}getStates(){if(this.states_==null){let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;return range2(0,numStates).map(x=>null)}else return this.states_}setStates(states){this.states_=states}computeOutputShape(inputShape){isArrayOfShapes(inputShape)&&(inputShape=inputShape[0]),inputShape=inputShape;let stateSize=this.cell.stateSize;Array.isArray(stateSize)||(stateSize=[stateSize]);let outputDim=stateSize[0],outputShape;if(this.returnSequences?outputShape=[inputShape[0],inputShape[1],outputDim]:outputShape=[inputShape[0],outputDim],this.returnState){let stateShape=[];for(let dim of stateSize)stateShape.push([inputShape[0],dim]);return[outputShape].concat(stateShape)}else return outputShape}computeMask(inputs,mask){return tidy(()=>{Array.isArray(mask)&&(mask=mask[0]);let outputMask=this.returnSequences?mask:null;if(this.returnState){let stateMask=this.states.map(s=>null);return[outputMask].concat(stateMask)}else return outputMask})}get states(){if(this.states_==null){let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1,output=[];for(let i=0;ispec.shape[spec.shape.length-1]),stateSize))throw new ValueError(`An initialState was passed that is not compatible with cell.stateSize. Received stateSpec=${this.stateSpec}; However cell.stateSize is ${this.cell.stateSize}`)}else this.stateSpec=stateSize.map(dim=>new InputSpec({shape:[null,dim]}));this.stateful&&this.resetStates()}resetStates(states,training=!1){tidy(()=>{if(!this.stateful)throw new AttributeError("Cannot call resetStates() on an RNN Layer that is not stateful.");let batchSize=this.inputSpec[0].shape[0];if(batchSize==null)throw new ValueError("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.states_==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(dim=>zeros([batchSize,dim])):this.states_=[zeros([batchSize,this.cell.stateSize])];else if(states==null)dispose(this.states_),this.keptStates!=null&&(dispose(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(dim=>zeros([batchSize,dim])):this.states_[0]=zeros([batchSize,this.cell.stateSize]);else{if(Array.isArray(states)||(states=[states]),states.length!==this.states_.length)throw new ValueError(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${states.length} state value(s). Input received: ${states}`);training===!0?this.keptStates.push(this.states_.slice()):dispose(this.states_);for(let index=0;indexkeep(state.clone()))})}apply(inputs,kwargs){let initialState=kwargs==null?null:kwargs.initialState,constants=kwargs==null?null:kwargs.constants;kwargs==null&&(kwargs={});let standardized=standardizeArgs(inputs,initialState,constants,this.numConstants);inputs=standardized.inputs,initialState=standardized.initialState,constants=standardized.constants;let additionalInputs=[],additionalSpecs=[];if(initialState!=null){kwargs.initialState=initialState,additionalInputs=additionalInputs.concat(initialState),this.stateSpec=[];for(let state of initialState)this.stateSpec.push(new InputSpec({shape:state.shape}));additionalSpecs=additionalSpecs.concat(this.stateSpec)}if(constants!=null&&(kwargs.constants=constants,additionalInputs=additionalInputs.concat(constants),this.numConstants=constants.length),additionalInputs[0]instanceof SymbolicTensor){let fullInput=[inputs].concat(additionalInputs),fullInputSpec=this.inputSpec.concat(additionalSpecs),originalInputSpec=this.inputSpec;this.inputSpec=fullInputSpec;let output=super.apply(fullInput,kwargs);return this.inputSpec=originalInputSpec,output}else return super.apply(inputs,kwargs)}call(inputs,kwargs){return tidy(()=>{let mask=kwargs==null?null:kwargs.mask,training=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;inputs=getExactlyOneTensor(inputs),initialState==null&&(this.stateful?initialState=this.states_:initialState=this.getInitialState(inputs));let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;if(initialState.length!==numStates)throw new ValueError(`RNN Layer has ${numStates} state(s) but was passed ${initialState.length} initial state(s).`);this.unroll&&console.warn("Ignoring unroll = true for RNN layer, due to imperative backend.");let cellCallKwargs={training},rnnOutputs=rnn((inputs2,states2)=>{let outputs2=this.cell.call([inputs2].concat(states2),cellCallKwargs);return[outputs2[0],outputs2.slice(1)]},inputs,initialState,this.goBackwards,mask,null,this.unroll,this.returnSequences),lastOutput=rnnOutputs[0],outputs=rnnOutputs[1],states=rnnOutputs[2];this.stateful&&this.resetStates(states,training);let output=this.returnSequences?outputs:lastOutput;return this.returnState?[output].concat(states):output})}getInitialState(inputs){return tidy(()=>{let initialState=zeros(inputs.shape);return initialState=sum2(initialState,[1,2]),initialState=expandDims2(initialState),Array.isArray(this.cell.stateSize)?this.cell.stateSize.map(dim=>dim>1?tile2(initialState,[1,dim]):initialState):this.cell.stateSize>1?[tile2(initialState,[1,this.cell.stateSize])]:[initialState]})}get trainableWeights(){return this.trainable?this.cell.trainableWeights:[]}get nonTrainableWeights(){return this.trainable?this.cell.nonTrainableWeights:this.cell.weights}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.cell!=null&&this.cell.setFastWeightInitDuringBuild(value)}getConfig(){let baseConfig=super.getConfig(),config={returnSequences:this.returnSequences,returnState:this.returnState,goBackwards:this.goBackwards,stateful:this.stateful,unroll:this.unroll};this.numConstants!=null&&(config.numConstants=this.numConstants);let cellConfig=this.cell.getConfig();return this.getClassName()===RNN.className&&(config.cell={className:this.cell.getClassName(),config:cellConfig}),Object.assign({},cellConfig,baseConfig,config)}static fromConfig(cls,config,customObjects={}){let cellConfig=config.cell,cell=deserialize(cellConfig,customObjects);return new cls(Object.assign(config,{cell}))}};RNN.className="RNN";serialization_exports.registerClass(RNN);var RNNCell=class extends Layer{},SimpleRNNCell=class extends RNNCell{constructor(args){super(args);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation==null?this.DEFAULT_ACTIVATION:args.activation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min2([1,max2([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min2([1,max2([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){inputShape=getExactlyOneShape(inputShape),this.kernel=this.addWeight("kernel",[inputShape[inputShape.length-1],this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,inputs.length!==2)throw new ValueError(`SimpleRNNCell expects 2 input Tensors, got ${inputs.length}.`);let prevOutput=inputs[1];inputs=inputs[0];let training=kwargs.training==null?!1:kwargs.training;0onesLike(inputs),rate:this.dropout,training})),0onesLike(prevOutput),rate:this.recurrentDropout,training}));let h,dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask;dpMask!=null?h=dot2(mul(inputs,dpMask),this.kernel.read()):h=dot2(inputs,this.kernel.read()),this.bias!=null&&(h=biasAdd(h,this.bias.read())),recDpMask!=null&&(prevOutput=mul(prevOutput,recDpMask));let output=add2(h,dot2(prevOutput,this.recurrentKernel.read()));return this.activation!=null&&(output=this.activation.apply(output)),[output,output]})}getConfig(){let baseConfig=super.getConfig(),config={units:this.units,activation:serializeActivation(this.activation),useBias:this.useBias,kernelInitializer:serializeInitializer(this.kernelInitializer),recurrentInitializer:serializeInitializer(this.recurrentInitializer),biasInitializer:serializeInitializer(this.biasInitializer),kernelRegularizer:serializeRegularizer(this.kernelRegularizer),recurrentRegularizer:serializeRegularizer(this.recurrentRegularizer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),kernelConstraint:serializeConstraint(this.kernelConstraint),recurrentConstraint:serializeConstraint(this.recurrentConstraint),biasConstraint:serializeConstraint(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout};return Object.assign({},baseConfig,config)}};SimpleRNNCell.className="SimpleRNNCell";serialization_exports.registerClass(SimpleRNNCell);var SimpleRNN=class extends RNN{constructor(args){args.cell=new SimpleRNNCell(args),super(args)}call(inputs,kwargs){return tidy(()=>{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training,initialState})})}static fromConfig(cls,config){return new cls(config)}};SimpleRNN.className="SimpleRNN";serialization_exports.registerClass(SimpleRNN);var GRUCell=class extends RNNCell{constructor(args){super(args);if(this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",args.resetAfter)throw new ValueError("GRUCell does not support reset_after parameter set to true.");this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation===void 0?this.DEFAULT_ACTIVATION:args.activation),this.recurrentActivation=getActivation(args.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:args.recurrentActivation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min2([1,max2([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min2([1,max2([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.implementation=args.implementation,this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){inputShape=getExactlyOneShape(inputShape);let inputDim=inputShape[inputShape.length-1];this.kernel=this.addWeight("kernel",[inputDim,this.units*3],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*3],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units*3],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,inputs.length!==2)throw new ValueError(`GRUCell expects 2 input Tensors (inputs, h, c), got ${inputs.length}.`);let training=kwargs.training==null?!1:kwargs.training,hTMinus1=inputs[1];inputs=inputs[0],0onesLike(inputs),rate:this.dropout,training,count:3})),0onesLike(hTMinus1),rate:this.recurrentDropout,training,count:3}));let dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask,z,r,hh;0{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training,initialState})})}static fromConfig(cls,config){return config.implmentation===0&&(config.implementation=1),new cls(config)}};GRU.className="GRU";serialization_exports.registerClass(GRU);var LSTMCell=class extends RNNCell{constructor(args){super(args);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation===void 0?this.DEFAULT_ACTIVATION:args.activation),this.recurrentActivation=getActivation(args.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:args.recurrentActivation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.unitForgetBias=args.unitForgetBias,this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min2([1,max2([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min2([1,max2([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.implementation=args.implementation,this.stateSize=[this.units,this.units],this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){var _a;inputShape=getExactlyOneShape(inputShape);let inputDim=inputShape[inputShape.length-1];this.kernel=this.addWeight("kernel",[inputDim,this.units*4],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*4],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint);let biasInitializer;if(this.useBias){if(this.unitForgetBias){let capturedBiasInit=this.biasInitializer,capturedUnits=this.units;biasInitializer=new(_a=class extends Initializer{apply(shape,dtype){let bI=capturedBiasInit.apply([capturedUnits]),bF=new Ones().apply([capturedUnits]),bCAndH=capturedBiasInit.apply([capturedUnits*2]);return concatAlongFirstAxis(concatAlongFirstAxis(bI,bF),bCAndH)}},_a.className="CustomInit",_a)}else biasInitializer=this.biasInitializer;this.bias=this.addWeight("bias",[this.units*4],null,biasInitializer,this.biasRegularizer,!0,this.biasConstraint)}else this.bias=null;this.built=!0}call(inputs,kwargs){return tidy(()=>{let training=kwargs.training==null?!1:kwargs.training;if(inputs=inputs,inputs.length!==3)throw new ValueError(`LSTMCell expects 3 input Tensors (inputs, h, c), got ${inputs.length}.`);let hTMinus1=inputs[1],cTMinus1=inputs[2];inputs=inputs[0],0onesLike(inputs),rate:this.dropout,training,count:4})),0onesLike(hTMinus1),rate:this.recurrentDropout,training,count:4}));let dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask,i,f,c,o;0{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training,initialState})})}static fromConfig(cls,config){return config.implmentation===0&&(config.implementation=1),new cls(config)}};LSTM.className="LSTM";serialization_exports.registerClass(LSTM);var StackedRNNCells=class extends RNNCell{constructor(args){super(args);this.cells=args.cells}get stateSize(){let stateSize=[];for(let cell of this.cells.slice().reverse())Array.isArray(cell.stateSize)?stateSize.push(...cell.stateSize):stateSize.push(cell.stateSize);return stateSize}call(inputs,kwargs){return tidy(()=>{inputs=inputs;let states=inputs.slice(1),nestedStates=[];for(let cell of this.cells.slice().reverse())Array.isArray(cell.stateSize)?nestedStates.push(states.splice(0,cell.stateSize.length)):nestedStates.push(states.splice(0,1));nestedStates.reverse();let newNestedStates=[],callInputs;for(let i=0;i{nameScope(`RNNCell_${i}`,()=>{cell.build(inputShape),Array.isArray(cell.stateSize)?outputDim=cell.stateSize[0]:outputDim=cell.stateSize,inputShape=[inputShape[0],outputDim]})}),this.built=!0}getConfig(){let baseConfig=super.getConfig(),getCellConfig=cell=>({className:cell.getClassName(),config:cell.getConfig()}),config={cells:this.cells.map(getCellConfig)};return Object.assign({},baseConfig,config)}static fromConfig(cls,config,customObjects={}){let cells=[];for(let cellConfig of config.cells)cells.push(deserialize(cellConfig,customObjects));return new cls({cells})}get trainableWeights(){if(!this.trainable)return[];let weights=[];for(let cell of this.cells)weights.push(...cell.trainableWeights);return weights}get nonTrainableWeights(){let weights=[];for(let cell of this.cells)weights.push(...cell.nonTrainableWeights);if(!this.trainable){let trainableWeights=[];for(let cell of this.cells)trainableWeights.push(...cell.trainableWeights);return trainableWeights.concat(weights)}return weights}getWeights(){let weights=[];for(let cell of this.cells)weights.push(...cell.weights);return batchGetValue(weights)}setWeights(weights){let tuples=[];for(let cell of this.cells){let numParams=cell.weights.length,inputWeights=weights.splice(numParams);for(let i=0;idropout2(ones4(),rate),createMask=()=>inTrainPhase(droppedInputs,ones4,training);return!count2||count2<=1?keep(createMask().clone()):Array(count2).fill(void 0).map(createMask).map(m=>keep(m.clone()))}var __rest=function(s,e){var t={};for(var p2 in s)Object.prototype.hasOwnProperty.call(s,p2)&&e.indexOf(p2)<0&&(t[p2]=s[p2]);if(s!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,p2=Object.getOwnPropertySymbols(s);i{if(this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null),kwargs&&kwargs.constants)throw new ValueError("ConvRNN2D cell does not support constants");let mask=kwargs==null?null:kwargs.mask,training=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training,initialState})})}computeOutputShape(inputShape){let outShape=this.computeSingleOutputShape(inputShape);return this.returnSequences||(outShape=[outShape[0],...outShape.slice(2)]),this.returnState&&(outShape=[outShape,...Array(2).fill([inputShape[0],...outShape.slice(-3)])]),outShape}getInitialState(inputs){return tidy(()=>{let{stateSize}=this.cell,inputShape=inputs.shape,outputShape=this.computeSingleOutputShape(inputShape),stateShape=[outputShape[0],...outputShape.slice(2)],initialState=zeros(stateShape);return Array.isArray(stateSize)?Array(stateSize.length).fill(initialState):[initialState]})}resetStates(states,training=!1){tidy(()=>{if(!this.stateful)throw new AttributeError("Cannot call resetStates() on an RNN Layer that is not stateful.");let inputShape=this.inputSpec[0].shape,outputShape=this.computeSingleOutputShape(inputShape),stateShape=[outputShape[0],...outputShape.slice(2)];if(inputShape[0]==null)throw new ValueError("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.getStates()==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>zeros(stateShape)):this.states_=[zeros(stateShape)];else if(states==null)dispose(this.states_),this.keptStates!=null&&(dispose(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>zeros(stateShape)):this.states_[0]=zeros(stateShape);else{if(Array.isArray(states)||(states=[states]),states.length!==this.states_.length)throw new ValueError(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${states.length} state value(s). Input received: ${states}`);training?this.keptStates.push(this.states_.slice()):dispose(this.states_);for(let index=0;indexkeep(state.clone()))})}computeSingleOutputShape(inputShape){let{dataFormat,filters,kernelSize,padding,strides,dilationRate}=this.cell,isChannelsFirst=dataFormat==="channelsFirst",h=inputShape[isChannelsFirst?3:2],w=inputShape[isChannelsFirst?4:3],hOut=convOutputLength(h,kernelSize[0],padding,strides[0],dilationRate[0]),wOut=convOutputLength(w,kernelSize[1],padding,strides[1],dilationRate[1]);return[...inputShape.slice(0,2),...isChannelsFirst?[filters,hOut,wOut]:[hOut,wOut,filters]]}};ConvRNN2D.className="ConvRNN2D";var ConvLSTM2DCell=class extends LSTMCell{constructor(args){let{filters,kernelSize,strides,padding,dataFormat,dilationRate}=args;super(Object.assign({},args,{units:filters}));this.filters=filters,assertPositiveInteger(this.filters,"filters"),this.kernelSize=normalizeArray(kernelSize,2,"kernelSize"),this.kernelSize.forEach(size=>assertPositiveInteger(size,"kernelSize")),this.strides=normalizeArray(strides||1,2,"strides"),this.strides.forEach(stride=>assertPositiveInteger(stride,"strides")),this.padding=padding||"valid",checkPaddingMode(this.padding),this.dataFormat=dataFormat||"channelsLast",checkDataFormat(this.dataFormat),this.dilationRate=normalizeArray(dilationRate||1,2,"dilationRate"),this.dilationRate.forEach(rate=>assertPositiveInteger(rate,"dilationRate"))}build(inputShape){var _a;inputShape=getExactlyOneShape(inputShape);let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError(`The channel dimension of the input should be defined. Found ${inputShape[channelAxis]}`);let inputDim=inputShape[channelAxis],numOfKernels=4,kernelShape=this.kernelSize.concat([inputDim,this.filters*numOfKernels]);this.kernel=this.addWeight("kernel",kernelShape,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint);let recurrentKernelShape=this.kernelSize.concat([this.filters,this.filters*numOfKernels]);if(this.recurrentKernel=this.addWeight("recurrent_kernel",recurrentKernelShape,null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias){let biasInitializer;if(this.unitForgetBias){let init2=this.biasInitializer,filters=this.filters;biasInitializer=new(_a=class extends Initializer{apply(shape,dtype){let biasI=init2.apply([filters]),biasF=ones2([filters]),biasCAndO=init2.apply([filters*2]);return concatenate([biasI,biasF,biasCAndO])}},_a.className="CustomInit",_a)}else biasInitializer=this.biasInitializer;this.bias=this.addWeight("bias",[this.filters*numOfKernels],null,biasInitializer,this.biasRegularizer,!0,this.biasConstraint)}this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs.length!==3)throw new ValueError(`ConvLSTM2DCell expects 3 input Tensors (inputs, h, c), got ${inputs.length}.`);let training=kwargs.training||!1,x=inputs[0],hTMinus1=inputs[1],cTMinus1=inputs[2],numOfKernels=4;0onesLike(x),rate:this.dropout,training,count:numOfKernels}));let dropoutMask=this.dropoutMask,applyDropout=(x2,mask,index)=>!mask||!mask[index]?x2:mul(mask[index],x2),xI=applyDropout(x,dropoutMask,0),xF=applyDropout(x,dropoutMask,1),xC=applyDropout(x,dropoutMask,2),xO=applyDropout(x,dropoutMask,3);0onesLike(hTMinus1),rate:this.recurrentDropout,training,count:numOfKernels}));let recDropoutMask=this.recurrentDropoutMask,hI=applyDropout(hTMinus1,recDropoutMask,0),hF=applyDropout(hTMinus1,recDropoutMask,1),hC=applyDropout(hTMinus1,recDropoutMask,2),hO=applyDropout(hTMinus1,recDropoutMask,3),kernelChannelAxis=3,[kernelI,kernelF,kernelC,kernelO]=split(this.kernel.read(),numOfKernels,kernelChannelAxis),[biasI,biasF,biasC,biasO]=this.useBias?split(this.bias.read(),numOfKernels):[null,null,null,null];xI=this.inputConv(xI,kernelI,biasI,this.padding),xF=this.inputConv(xF,kernelF,biasF,this.padding),xC=this.inputConv(xC,kernelC,biasC,this.padding),xO=this.inputConv(xO,kernelO,biasO,this.padding);let[recKernelI,recKernelF,recKernelC,recKernelO]=split(this.recurrentKernel.read(),numOfKernels,kernelChannelAxis);hI=this.recurrentConv(hI,recKernelI),hF=this.recurrentConv(hF,recKernelF),hC=this.recurrentConv(hC,recKernelC),hO=this.recurrentConv(hO,recKernelO);let i=this.recurrentActivation.apply(add2(xI,hI)),f=this.recurrentActivation.apply(add2(xF,hF)),c=add2(mul(f,cTMinus1),mul(i,this.activation.apply(add2(xC,hC)))),h=mul(this.recurrentActivation.apply(add2(xO,hO)),this.activation.apply(c));return[h,h,c]})}getConfig(){let _a=super.getConfig(),{units:_}=_a,baseConfig=__rest(_a,["units"]),config={filters:this.filters,kernelSize:this.kernelSize,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,strides:this.strides};return Object.assign({},baseConfig,config)}inputConv(x,w,b,padding){let out=conv2d(x,w,this.strides,padding||"valid",this.dataFormat==="channelsFirst"?"NCHW":"NHWC",this.dilationRate);return b?biasAdd(out,b,this.dataFormat):out}recurrentConv(x,w){return conv2d(x,w,1,"same",this.dataFormat==="channelsFirst"?"NCHW":"NHWC")}};ConvLSTM2DCell.className="ConvLSTM2DCell";serialization_exports.registerClass(ConvLSTM2DCell);var ConvLSTM2D=class extends ConvRNN2D{constructor(args){let cell=new ConvLSTM2DCell(args);super(Object.assign({},args,{cell}))}static fromConfig(cls,config){return new cls(config)}};ConvLSTM2D.className="ConvLSTM2D";serialization_exports.registerClass(ConvLSTM2D);var Dropout=class extends Layer{constructor(args){super(args);this.rate=Math.max(Math.min(args.rate,1),0),this.noiseShape=args.noiseShape,this.seed=args.seed,this.supportsMasking=!0}getNoiseShape(input2){if(this.noiseShape==null)return this.noiseShape;let inputShape=input2.shape,noiseShape=[];for(let i=0;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(0dropout2(input2,this.rate,noiseShape,this.seed),()=>input2,training)}return inputs})}getConfig(){let config={rate:this.rate,noiseShape:this.noiseShape,seed:this.seed},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}dispose(){return super.dispose()}};Dropout.className="Dropout";serialization_exports.registerClass(Dropout);var SpatialDropout1D=class extends Dropout{constructor(args){super(args);this.inputSpec=[{ndim:3}]}getNoiseShape(input2){let inputShape=input2.shape;return[inputShape[0],1,inputShape[2]]}};SpatialDropout1D.className="SpatialDropout1D";serialization_exports.registerClass(SpatialDropout1D);var Dense=class extends Layer{constructor(args){super(args);if(this.activation=null,this.useBias=!0,this.kernel=null,this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",args.batchInputShape==null&&args.inputShape==null&&args.inputDim!=null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),this.batchInputShape=[batchSize,args.inputDim]}this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation),args.useBias!=null&&(this.useBias=args.useBias),this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelConstraint=getConstraint(args.kernelConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.supportsMasking=!0,this.inputSpec=[{minNDim:2}]}build(inputShape){inputShape=getExactlyOneShape(inputShape);let inputLastDim=inputShape[inputShape.length-1];this.kernel==null&&(this.kernel=this.addWeight("kernel",[inputLastDim,this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint))),this.inputSpec=[{minNDim:2,axes:{[-1]:inputLastDim}}],this.built=!0}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice();return outputShape[outputShape.length-1]=this.units,outputShape}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),fusedActivationName=mapActivationToFusedKernel(this.activation.getClassName()),output;return fusedActivationName!=null?output=dot2(input2,this.kernel.read(),fusedActivationName,this.bias?this.bias.read():null):(output=dot2(input2,this.kernel.read()),this.bias!=null&&(output=biasAdd(output,this.bias.read())),this.activation!=null&&(output=this.activation.apply(output))),output})}getConfig(){let config={units:this.units,activation:serializeActivation(this.activation),useBias:this.useBias,kernelInitializer:serializeInitializer(this.kernelInitializer),biasInitializer:serializeInitializer(this.biasInitializer),kernelRegularizer:serializeRegularizer(this.kernelRegularizer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),kernelConstraint:serializeConstraint(this.kernelConstraint),biasConstraint:serializeConstraint(this.biasConstraint)},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Dense.className="Dense";serialization_exports.registerClass(Dense);var Flatten=class extends Layer{constructor(args){args=args||{},super(args),this.inputSpec=[{minNDim:3}],this.dataFormat=args.dataFormat}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);for(let dim of inputShape.slice(1))if(dim==null)throw new ValueError(`The shape of the input to "Flatten" is not fully defined (got ${inputShape.slice(1)}). Make sure to pass a complete "input_shape" or "batch_input_shape" argument to the first layer in your model.`);return[inputShape[0],arrayProd(inputShape,1)]}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(this.dataFormat==="channelsFirst"&&input2.rank>1){let permutation=[0];for(let i=2;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);return this.activation.apply(input2)})}getConfig(){let config={activation:serializeActivation(this.activation)},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Activation2.className="Activation";serialization_exports.registerClass(Activation2);var RepeatVector=class extends Layer{constructor(args){super(args);this.n=args.n,this.inputSpec=[{ndim:2}]}computeOutputShape(inputShape){return[inputShape[0],this.n,inputShape[1]]}call(inputs,kwargs){return tidy(()=>(inputs=getExactlyOneTensor(inputs),repeat(inputs,this.n)))}getConfig(){let config={n:this.n},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};RepeatVector.className="RepeatVector";serialization_exports.registerClass(RepeatVector);var Reshape2=class extends Layer{constructor(args){super(args);this.targetShape=args.targetShape;for(let i=0;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),inputShape=input2.shape,outputShape=inputShape.slice(0,1).concat(this.fixUnknownDimension(inputShape.slice(1),this.targetShape));return input2.reshape(outputShape)})}getConfig(){let config={targetShape:this.targetShape},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Reshape2.className="Reshape";serialization_exports.registerClass(Reshape2);var Permute=class extends Layer{constructor(args){super(args);if(args.dims==null)throw new Error("Required configuration field `dims` is missing during Permute constructor call.");if(!Array.isArray(args.dims))throw new Error(`Permute constructor requires \`dims\` to be an Array, but received ${args.dims} instead.`);let expectedSortedIndices=range2(1,args.dims.length+1);if(!util_exports.arraysEqual(args.dims.slice().sort(),expectedSortedIndices))throw new Error("Invalid permutation `dims`: "+JSON.stringify(args.dims)+" `dims` must contain consecutive integers starting from 1.");this.dims=args.dims,this.dimsIncludingBatch=[0].concat(this.dims),this.inputSpec=[new InputSpec({ndim:this.dims.length+1})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice();return this.dims.forEach((dim,i)=>{outputShape[i+1]=inputShape[dim]}),outputShape}call(inputs,kwargs){return transpose(getExactlyOneTensor(inputs),this.dimsIncludingBatch)}getConfig(){let config={dims:this.dims},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Permute.className="Permute";serialization_exports.registerClass(Permute);var Masking=class extends Layer{constructor(args){super(args==null?{}:args);this.supportsMasking=!0,args!=null?this.maskValue=args.maskValue==null?0:args.maskValue:this.maskValue=0}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config={maskValue:this.maskValue};return Object.assign(config,baseConfig),config}computeMask(inputs,mask){let input2=getExactlyOneTensor(inputs),axis=-1;return any(notEqual(input2,this.maskValue),axis)}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),axis=-1,keepDims=!0,booleanMask=any(notEqual(input2,this.maskValue),axis,keepDims);return input2.mul(booleanMask.asType(input2.dtype))})}};Masking.className="Masking";serialization_exports.registerClass(Masking);var Embedding=class extends Layer{constructor(args){super(args);if(this.embeddings=null,this.DEFAULT_EMBEDDINGS_INITIALIZER="randomUniform",args.batchInputShape==null&&args.inputShape==null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),args.inputLength==null?this.batchInputShape=[batchSize,null]:this.batchInputShape=[batchSize].concat(toList(args.inputLength))}this.inputDim=args.inputDim,assertPositiveInteger(this.inputDim,"inputDim"),this.outputDim=args.outputDim,assertPositiveInteger(this.outputDim,"outputDim"),this.embeddingsInitializer=getInitializer(args.embeddingsInitializer||this.DEFAULT_EMBEDDINGS_INITIALIZER),this.embeddingsRegularizer=getRegularizer(args.embeddingsRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.embeddingsConstraint=getConstraint(args.embeddingsConstraint),this.maskZero=args.maskZero,this.supportsMasking=args.maskZero,this.inputLength=args.inputLength}build(inputShape){this.embeddings=this.addWeight("embeddings",[this.inputDim,this.outputDim],this.dtype,this.embeddingsInitializer,this.embeddingsRegularizer,!0,this.embeddingsConstraint),this.built=!0}warnOnIncompatibleInputShape(inputShape){}computeMask(inputs,mask){return tidy(()=>this.maskZero?(inputs=getExactlyOneTensor(inputs),notEqual(inputs,zerosLike(inputs))):null)}computeOutputShape(inputShape){if(inputShape=getExactlyOneShape(inputShape),this.inputLength==null)return[...inputShape,this.outputDim];let inLens=toList(this.inputLength);if(inLens.length!==inputShape.length-1)throw new ValueError(`"inputLength" is ${this.inputLength}, but received input shape has shape ${inputShape}`);{let i=0;for(let k=0;k{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);return input2.dtype!=="int32"&&(input2=cast2(input2,"int32")),gather2(this.embeddings.read(),input2.as1D()).reshape(getExactlyOneShape(this.computeOutputShape(input2.shape)))})}getConfig(){let config={inputDim:this.inputDim,outputDim:this.outputDim,embeddingsInitializer:serializeInitializer(this.embeddingsInitializer),embeddingsRegularizer:serializeRegularizer(this.embeddingsRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),embeddingsConstraint:serializeConstraint(this.embeddingsConstraint),maskZero:this.maskZero,inputLength:this.inputLength},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Embedding.className="Embedding";serialization_exports.registerClass(Embedding);var Merge=class extends Layer{constructor(args){super(args||{});this.supportsMasking=!0}mergeFunction(inputs){throw new NotImplementedError}computeElementwiseOpOutputShape(shape1,shape2){if(shape1==null||shape2==null)return null;if(shape1.length1)throw new ValueError(`Can not merge tensors with different batch sizes. Got tensors with shapes: ${JSON.stringify(inputShape)}.`);let outputShape=inputShape[0]==null?null:inputShape[0].slice(1);for(let i=1;ishape.length);inputShape.indexOf(null)===-1&&unique2(allRanks).length===1?this.reshapeRequired=!1:this.reshapeRequired=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,this.reshapeRequired){let reshapedInputs=[],inputDims=inputs.map(input2=>input2.rank);if(inputDims.indexOf(null)===-1){let maxNDim=max2(inputDims);for(let x of inputs){let xNDim=x.rank;for(let k=0;k1){let dims=range2(1,xNDim).concat([0]);reshapedInputs.push(transpose(x,dims)),transposed=!0}else reshapedInputs.push(x)}let y=this.mergeFunction(reshapedInputs),yNDim=y.rank;if(transposed){if(yNDim==null){let yShape=y.shape,yNDim2=yShape.length,batchSize=yShape[yNDim2-1],newShape=[batchSize].concat(yShape.slice(0,yShape.length-1));y=transpose(y.reshape([-1,batchSize]),[1,0]).reshape(newShape)}else if(yNDim>1){let dims=[yNDim-1].concat(range2(0,yNDim-1));y=transpose(y,dims)}}return y}}else return this.mergeFunction(inputs)})}computeOutputShape(inputShape){inputShape=inputShape;let outputShape;inputShape[0]==null?outputShape=null:outputShape=inputShape[0].slice(1);for(let i=1;i{if(mask==null)return null;if(!Array.isArray(mask))throw new ValueError("`mask` should be an Array");if(!Array.isArray(inputs))throw new ValueError("`inputs` should be an Array");if(mask.length!==inputs.length)throw new ValueError(`The Array 'inputs' and 'mask' are expected to have the same length, but have different lengths (${inputs.length} vs ${mask.length})`);if(mask.every(m=>m==null))return null;mask=mask.map(m=>m==null?m:expandDims(m,0));let output=mask[0];for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0];for(let i=1;i{let output=inputs[0];for(let i=1;i1)throw new ValueError("A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got input shapes: "+JSON.stringify(inputShape))}mergeFunction(inputs){return tidy(()=>concatenate(inputs,this.axis))}computeOutputShape(inputShape){if(!(Array.isArray(inputShape)&&Array.isArray(inputShape[0])))throw new ValueError("A `Concatenate` layer should be called on a list of inputs.");let inputShapes=inputShape,outputShape=inputShapes[0].slice(),axis=this.axis<0?outputShape.length+this.axis:this.axis;for(let shape of inputShapes.slice(1)){if(outputShape[axis]==null||shape[axis]==null){outputShape[axis]=null;break}outputShape[axis]+=shape[axis]}return outputShape}computeMask(inputs,mask){if(mask==null)return null;if(!Array.isArray(mask))throw new ValueError("`mask` should be an array for Concatenate");if(!Array.isArray(inputs))throw new ValueError("`inputs` should be an array for Concatenate");if(mask.length!==inputs.length)throw new ValueError(`Mismatch in the length of mask (${mask.length}) and the legnth of inputs (${inputs.length})`);return tidy(()=>{let allNullMasks=!0;if(mask.forEach(m=>{if(m!=null){allNullMasks=!1;return}}),allNullMasks)return null;let outputMasks=[];for(let i=0;i3||y.shape.length>3)throw new NotImplementedError("batchDot is not implemented for tensors of 4D or higher rank yet");if(util_exports.assert(x.shape.length>=2,()=>`batchDot requires the rank of x to be >= 2, but got ${x.shape.length}`),util_exports.assert(x.shape.length>=2,()=>`batchDot requires the rank of y to be >= 2, but got ${y.shape.length}`),typeof axes=="number"&&(axes=[axes,axes]),x.dtype==="complex64"||y.dtype==="complex64")throw new NotImplementedError("batchDot is not implemented for complex64-type Tensors yet.");let xNDim=x.shape.length,yNDim=y.shape.length;axes==null&&(axes=[xNDim-1,yNDim-2]);let axesArray=axes;return tidy(()=>{let diff;if(xNDim>yNDim){diff=xNDim-yNDim;let diffShape=[];for(let i=0;ixNDim){diff=yNDim-xNDim;let diffShape=[];for(let i=0;i0){let idx;xNDim>yNDim?idx=xNDim+yNDim-3:idx=xNDim-1;let squeezeAxes=[];for(let i=idx;i"A `Dot` layer should be called on a list of exactly 2 inputs.");let shape1=inputShape[0],shape2=inputShape[1];if(shape1.length>3||shape2.length>3)throw new NotImplementedError("Dot layer does not support tensors of 4D or higher rank yet.");let axes=this.interpretAxes(shape1,shape2);if(shape1[axes[0]]!==shape2[axes[1]])throw new ValueError(`Dimension incompatibility: ${shape1[axes[0]]} !== ${shape2[axes[1]]}`)}mergeFunction(inputs){if(inputs.length!==2)throw new ValueError(`A \`Dot\` layer must be called on exactly 2 inputs, but received ${inputs.length} input(s).`);let x1=inputs[0],x2=inputs[1],axes;return Array.isArray(this.axes)?axes=this.axes.map((axis,i)=>interpretAxis(axis,inputs[i].shape.length)):axes=[interpretAxis(this.axes,x1.shape.length),interpretAxis(this.axes,x2.shape.length)],this.normalize&&(x1=l2Normalize(x1,axes[0]),x2=l2Normalize(x2,axes[1])),batchDot(x1,x2,axes)}interpretAxes(shape1,shape2){let axes;return Array.isArray(this.axes)?axes=this.axes:axes=[interpretAxis(this.axes,shape1.length),interpretAxis(this.axes,shape2.length)],axes}computeOutputShape(inputShape){util_exports.assert(Array.isArray(inputShape)&&inputShape.length===2&&Array.isArray(inputShape[0])&&Array.isArray(inputShape[1]),()=>"A `Dot` layer should be called on a list of exactly 2 inputs.");let shape1=inputShape[0].slice(),shape2=inputShape[1].slice();if(shape1.length>3||shape2.length>3)throw new NotImplementedError("Dot layer does not support tensors of 4D or higher rank yet.");let axes=this.interpretAxes(shape1,shape2);shape1.splice(axes[0],1),shape2.splice(axes[1],1),shape2.splice(0,1);let outputShape=shape1.concat(shape2);return outputShape.length===1&&outputShape.push(1),outputShape}computeMask(inputs,mask){return null}getConfig(){let config={axes:this.axes,normalize:this.normalize},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Dot.className="Dot";serialization_exports.registerClass(Dot);var GaussianNoise=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.stddev=args.stddev}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config={stddev:this.stddev};return Object.assign(config,baseConfig),config}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);return inTrainPhase(()=>randomNormal2(input2.shape,0,this.stddev).add(input2),()=>input2,kwargs.training||!1)})}};GaussianNoise.className="GaussianNoise";serialization_exports.registerClass(GaussianNoise);var GaussianDropout=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.rate=args.rate}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config={rate:this.rate};return Object.assign(config,baseConfig),config}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);return this.rate>0&&this.rate<1?inTrainPhase(()=>{let stddev=Math.sqrt(this.rate/(1-this.rate));return input2.mul(randomNormal2(input2.shape,1,stddev))},()=>input2,kwargs.training||!1):input2})}};GaussianDropout.className="GaussianDropout";serialization_exports.registerClass(GaussianDropout);var AlphaDropout=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.rate=args.rate,this.noiseShape=args.noiseShape}_getNoiseShape(inputs){return this.noiseShape||getExactlyOneTensor(inputs).shape}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config={rate:this.rate};return Object.assign(config,baseConfig),config}call(inputs,kwargs){return tidy(()=>{if(this.rate<1&&this.rate>0){let noiseShape=this._getNoiseShape(inputs);return inTrainPhase(()=>{let input2=getExactlyOneTensor(inputs),alpha=1.6732632423543772,scale22=1.0507009873554805,alphaP=-alpha*scale22,keptIdx=greaterEqual(randomUniform(noiseShape),this.rate);keptIdx=cast2(keptIdx,"float32");let a=((1-this.rate)*(1+this.rate*alphaP**2))**-.5,b=-a*alphaP*this.rate;return input2.mul(keptIdx).add(keptIdx.add(-1).mul(alphaP)).mul(a).add(b)},()=>getExactlyOneTensor(inputs),kwargs.training||!1)}return inputs})}};AlphaDropout.className="AlphaDropout";serialization_exports.registerClass(AlphaDropout);function batchNormalization(x,mean4,variance,beta,gamma,epsilon32=.001){let out;if(x.rank===2)out=batchNorm2d(x,mean4,variance,beta,gamma,epsilon32);else if(x.rank===3)out=batchNorm3d(x,mean4,variance,beta,gamma,epsilon32);else if(x.rank===4)out=batchNorm4d(x,mean4,variance,beta,gamma,epsilon32);else throw new NotImplementedError(`batchNormalization is not implemented for array of rank ${x.rank} yet`);return out}function regularNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon32=.001){return tidy(()=>{let meanAndVariance=moments(x,reductionAxes),mean4=meanAndVariance.mean,variance=meanAndVariance.variance;return[batchNormalization(x,mean4,variance,beta,gamma,epsilon32),mean4,variance]})}function broadcastNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon32=.001){return tidy(()=>{let meanAndVariance=moments(x,reductionAxes),mean4=meanAndVariance.mean,variance=meanAndVariance.variance,targetShape=[];for(let axis of range2(0,x.rank))reductionAxes.indexOf(axis)!==-1?targetShape.push(1):targetShape.push(x.shape[axis]);let broadcastMean=mean4.reshape(targetShape),broadcastVariance=variance.reshape(targetShape),broadcastGamma=gamma==null?null:gamma.reshape(targetShape),broadcastBeta=beta==null?null:beta.reshape(targetShape);return[batchNormalization(x,broadcastMean,broadcastVariance,broadcastBeta,broadcastGamma,epsilon32),mean4,variance]})}function normalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon32=.001){return util_exports.arraysEqual(reductionAxes.slice().sort(),range2(0,x.rank-1))?regularNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon32):broadcastNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon32)}var BatchNormalization=class extends Layer{constructor(args){args==null&&(args={}),super(args),this.supportsMasking=!0,this.axis=args.axis==null?-1:args.axis,this.momentum=args.momentum==null?.99:args.momentum,this.epsilon=args.epsilon==null?.001:args.epsilon,this.center=args.center==null?!0:args.center,this.scale=args.scale==null?!0:args.scale,this.betaInitializer=getInitializer(args.betaInitializer||"zeros"),this.gammaInitializer=getInitializer(args.gammaInitializer||"ones"),this.movingMeanInitializer=getInitializer(args.movingMeanInitializer||"zeros"),this.movingVarianceInitializer=getInitializer(args.movingVarianceInitializer||"ones"),this.betaConstraint=getConstraint(args.betaConstraint),this.gammaConstraint=getConstraint(args.gammaConstraint),this.betaRegularizer=getRegularizer(args.betaRegularizer),this.gammaRegularizer=getRegularizer(args.gammaRegularizer)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let axis=this.axis>=0?this.axis:this.axis+inputShape.length,dim=inputShape[axis];if(dim==null)throw new ValueError(`Axis ${axis} of input tensor should have a defined dimension but the layer received an input with shape ${JSON.stringify(inputShape)}.`);this.inputSpec=[new InputSpec({ndim:inputShape.length,axes:{[axis]:dim}})];let shape=[dim];this.scale&&(this.gamma=this.addWeight("gamma",shape,null,this.gammaInitializer,this.gammaRegularizer,!0,this.gammaConstraint)),this.center&&(this.beta=this.addWeight("beta",shape,null,this.betaInitializer,this.betaRegularizer,!0,this.betaConstraint)),this.movingMean=this.addWeight("moving_mean",shape,null,this.movingMeanInitializer,null,!1),this.movingVariance=this.addWeight("moving_variance",shape,null,this.movingVarianceInitializer,null,!1),this.built=!0}call(inputs,kwargs){return tidy(()=>{let training=kwargs.training==null?!1:kwargs.training,input2=getExactlyOneTensor(inputs),inputShape=input2.shape,ndim=inputShape.length,reductionAxes=range2(0,ndim),axis=this.axis>=0?this.axis:this.axis+ndim;reductionAxes.splice(axis,1);let broadcastShape=pyListRepeat(1,ndim);broadcastShape[axis]=inputShape[axis];let sortedReductionAxes=reductionAxes.slice();sortedReductionAxes.sort();let needsBroadcasting=!util_exports.arraysEqual(sortedReductionAxes,range2(0,ndim).slice(0,ndim-1)),normalizeInference=()=>{if(needsBroadcasting){let broadcastMovingMean=this.movingMean.read().reshape(broadcastShape),broadcastMovingVariance=this.movingVariance.read().reshape(broadcastShape),broadcastBeta=this.center?this.beta.read().reshape(broadcastShape):null,broadcastGamma=this.scale?this.gamma.read().reshape(broadcastShape):null;return batchNormalization(input2,broadcastMovingMean,broadcastMovingVariance,broadcastBeta,broadcastGamma,this.epsilon)}else return batchNormalization(input2,this.movingMean.read(),this.movingVariance.read(),this.beta==null?null:this.beta.read(),this.gamma==null?null:this.gamma.read(),this.epsilon)};if(!training)return normalizeInference();let[normedTraining,mean4,variance]=normalizeBatchInTraining(input2,this.gamma.read(),this.beta.read(),reductionAxes,this.epsilon),doMovingAverage=(variable2,value,momentum)=>{tidy(()=>{let decay=1-momentum,origValue=variable2.read(),updateDelta=origValue.sub(value).mul(decay);variable2.write(origValue.sub(updateDelta))})};return(()=>{doMovingAverage(this.movingMean,mean4,this.momentum),doMovingAverage(this.movingVariance,variance,this.momentum)})(),normedTraining})}getConfig(){let config={axis:this.axis,momentum:this.momentum,epsilon:this.epsilon,center:this.center,scale:this.scale,betaInitializer:serializeInitializer(this.betaInitializer),gammaInitializer:serializeInitializer(this.gammaInitializer),movingMeanInitializer:serializeInitializer(this.movingMeanInitializer),movingVarianceInitializer:serializeInitializer(this.movingVarianceInitializer),betaRegularizer:serializeRegularizer(this.betaRegularizer),gammaRegularizer:serializeRegularizer(this.gammaRegularizer),betaConstraint:serializeConstraint(this.betaConstraint),gammaConstraint:serializeConstraint(this.gammaConstraint)},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};BatchNormalization.className="BatchNormalization";serialization_exports.registerClass(BatchNormalization);var LayerNormalization=class extends Layer{constructor(args){if(args==null&&(args={}),super(args),this.axis=args.axis==null?-1:args.axis,typeof this.axis=="number"){if(!Number.isInteger(this.axis))throw new Error(`Expected axis to be an integer, but received ${this.axis}`)}else if(Array.isArray(this.axis)){for(let axis of this.axis)if(!Number.isInteger(axis))throw new Error(`Expected axis to be an array of integers, but received ${JSON.stringify(this.axis)}`)}else throw new Error(`Expected axis to be an integer or an array of integers, but received ${JSON.stringify(this.axis)}`);this.epsilon=args.epsilon==null?.001:args.epsilon,this.center=args.center==null?!0:args.center,this.scale=args.scale==null?!0:args.scale,this.betaInitializer=getInitializer(args.betaInitializer||"zeros"),this.gammaInitializer=getInitializer(args.gammaInitializer||"ones"),this.betaRegularizer=getRegularizer(args.betaRegularizer),this.gammaRegularizer=getRegularizer(args.gammaRegularizer),this.supportsMasking=!0}build(inputShape){inputShape=getExactlyOneShape(inputShape);let nDims=inputShape.length;typeof this.axis=="number"&&(this.axis=[this.axis]);for(let i=0;i=nDims)throw new Error(`Invalid axis: ${axis}`);if(this.axis.length!==unique2(this.axis).length)throw new Error(`Found duplicate axes in: ${this.axis}`);let paramShape=this.axis.map(axis=>inputShape[axis]),trainable=!0;this.scale?this.gamma=this.addWeight("gamma",paramShape,"float32",this.gammaInitializer,this.gammaRegularizer,trainable):this.gamma=null,this.center?this.beta=this.addWeight("beta",paramShape,"float32",this.betaInitializer,this.betaRegularizer,trainable):this.beta=null,this.built=!0}call(inputs,kwargs){let input2=getExactlyOneTensor(inputs),inputShape=input2.shape,nDims=inputShape.length;return tidy(()=>{let keepDims=!0,{mean:mean4,variance}=moments(input2,this.axis,keepDims),broadcastShape=pyListRepeat(1,nDims);for(let dim of this.axis)broadcastShape[dim]=inputShape[dim];let broadcast=v=>v!=null&&v.shape.length!==nDims&&this.axis!==[nDims-1]?v.reshape(broadcastShape):v,scale22=broadcast(this.gamma.read()),offset=broadcast(this.beta.read()),momentsTiling=[],scaleOffsetTiling=[];for(let i=0;i{if(x.rank!==4)throw new ValueError(`temporalPadding expects input tensor to be 4-D, but received a ${x.rank}-D tensor.`);if(padding==null&&(padding=[[1,1],[1,1]]),padding.length!==2||padding[0].length!==2||padding[1].length!==2)throw new ValueError("spatial2dPadding expects `padding` to be an Array of two Arrays, each of which is an Array of two integers.");if(dataFormat==null&&(dataFormat=imageDataFormat()),dataFormat!=="channelsLast"&&dataFormat!=="channelsFirst")throw new ValueError(`Unknown data format: ${dataFormat}. Supported data formats are 'channelsLast' and 'channelsFirst.`);let pattern;return dataFormat==="channelsFirst"?pattern=[[0,0],[0,0],padding[0],padding[1]]:pattern=[[0,0],padding[0],padding[1],[0,0]],pad(x,pattern)})}var ZeroPadding2D=class extends Layer{constructor(args){if(args==null&&(args={}),super(args),this.dataFormat=args.dataFormat==null?imageDataFormat():args.dataFormat,args.padding==null)this.padding=[[1,1],[1,1]];else if(typeof args.padding=="number")this.padding=[[args.padding,args.padding],[args.padding,args.padding]];else{if(args.padding=args.padding,args.padding.length!==2)throw new ValueError(`ZeroPadding2D expects padding to be a length-2 array, but received a length-${args.padding.length} array.`);let heightPadding,widthPadding;if(typeof args.padding[0]=="number")heightPadding=[args.padding[0],args.padding[0]],widthPadding=[args.padding[1],args.padding[1]];else{if(args.padding=args.padding,args.padding[0].length!==2)throw new ValueError(`ZeroPadding2D expects height padding to be a length-2 array, but received a length-${args.padding[0].length} array.`);if(heightPadding=args.padding[0],args.padding[1].length!==2)throw new ValueError(`ZeroPadding2D expects width padding to be a length-2 array, but received a length-${args.padding[1].length} array.`);widthPadding=args.padding[1]}this.padding=[heightPadding,widthPadding]}this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows,cols;return this.dataFormat==="channelsFirst"?(inputShape[2]!=null&&inputShape[2]>=0?rows=inputShape[2]+this.padding[0][0]+this.padding[0][1]:rows=null,inputShape[3]!=null&&inputShape[3]>=0?cols=inputShape[3]+this.padding[1][0]+this.padding[1][1]:cols=null,[inputShape[0],inputShape[1],rows,cols]):(inputShape[1]!=null&&inputShape[1]>=0?rows=inputShape[1]+this.padding[0][0]+this.padding[0][1]:rows=null,inputShape[2]!=null&&inputShape[2]>=0?cols=inputShape[2]+this.padding[1][0]+this.padding[1][1]:cols=null,[inputShape[0],rows,cols,inputShape[3]])}call(inputs,kwargs){return tidy(()=>spatial2dPadding(getExactlyOneTensor(inputs),this.padding,this.dataFormat))}getConfig(){let config={padding:this.padding,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};ZeroPadding2D.className="ZeroPadding2D";serialization_exports.registerClass(ZeroPadding2D);function pool2d(x,poolSize,strides,padding,dataFormat,poolMode){return tidy(()=>{checkDataFormat(dataFormat),checkPoolMode(poolMode),checkPaddingMode(padding),strides==null&&(strides=[1,1]),padding==null&&(padding="valid"),dataFormat==null&&(dataFormat=imageDataFormat()),poolMode==null&&(poolMode="max"),x=preprocessConv2DInput(x,dataFormat);let y,paddingString=padding==="same"?"same":"valid";return poolMode==="max"?y=maxPool(x,poolSize,strides,paddingString):y=avgPool(x,poolSize,strides,paddingString),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}function pool3d(x,poolSize,strides,padding,dataFormat,poolMode){return tidy(()=>{checkDataFormat(dataFormat),checkPoolMode(poolMode),checkPaddingMode(padding),strides==null&&(strides=[1,1,1]),padding==null&&(padding="valid"),dataFormat==null&&(dataFormat=imageDataFormat()),poolMode==null&&(poolMode="max"),x=preprocessConv3DInput(x,dataFormat);let y,paddingString=padding==="same"?"same":"valid";return poolMode==="max"?y=maxPool3d(x,poolSize,strides,paddingString):y=avgPool3d(x,poolSize,strides,paddingString),dataFormat==="channelsFirst"&&(y=transpose(y,[0,4,1,2,3])),y})}var Pooling1D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=2),super(args),typeof args.poolSize=="number")this.poolSize=[args.poolSize];else if(Array.isArray(args.poolSize)&&args.poolSize.length===1&&typeof args.poolSize[0]=="number")this.poolSize=args.poolSize;else throw new ValueError(`poolSize for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(args.poolSize)}`);if(assertPositiveInteger(this.poolSize,"poolSize"),args.strides==null)this.strides=this.poolSize;else if(typeof args.strides=="number")this.strides=[args.strides];else if(Array.isArray(args.strides)&&args.strides.length===1&&typeof args.strides[0]=="number")this.strides=args.strides;else throw new ValueError(`strides for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(args.strides)}`);assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:3})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let length=convOutputLength(inputShape[1],this.poolSize[0],this.padding,this.strides[0]);return[inputShape[0],length,inputShape[2]]}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs),inputs=expandDims2(getExactlyOneTensor(inputs),2);let output=this.poolingFunction(getExactlyOneTensor(inputs),[this.poolSize[0],1],[this.strides[0],1],this.padding,"channelsLast");return squeeze(output,[2])})}getConfig(){let config={poolSize:this.poolSize,padding:this.padding,strides:this.strides},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},MaxPooling1D=class extends Pooling1D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding),pool2d(inputs,poolSize,strides,padding,dataFormat,"max")}};MaxPooling1D.className="MaxPooling1D";serialization_exports.registerClass(MaxPooling1D);var AveragePooling1D=class extends Pooling1D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding),pool2d(inputs,poolSize,strides,padding,dataFormat,"avg")}};AveragePooling1D.className="AveragePooling1D";serialization_exports.registerClass(AveragePooling1D);var Pooling2D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=[2,2]),super(args),this.poolSize=Array.isArray(args.poolSize)?args.poolSize:[args.poolSize,args.poolSize],args.strides==null)this.strides=this.poolSize;else if(Array.isArray(args.strides)){if(args.strides.length!==2)throw new ValueError(`If the strides property of a 2D pooling layer is an Array, it is expected to have a length of 2, but received length ${args.strides.length}.`);this.strides=args.strides}else this.strides=[args.strides,args.strides];assertPositiveInteger(this.poolSize,"poolSize"),assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],cols=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2];return rows=convOutputLength(rows,this.poolSize[0],this.padding,this.strides[0]),cols=convOutputLength(cols,this.poolSize[1],this.padding,this.strides[1]),this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],rows,cols]:[inputShape[0],rows,cols,inputShape[3]]}call(inputs,kwargs){return tidy(()=>(this.invokeCallHook(inputs,kwargs),this.poolingFunction(getExactlyOneTensor(inputs),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let config={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},MaxPooling2D=class extends Pooling2D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding),pool2d(inputs,poolSize,strides,padding,dataFormat,"max")}};MaxPooling2D.className="MaxPooling2D";serialization_exports.registerClass(MaxPooling2D);var AveragePooling2D=class extends Pooling2D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding),pool2d(inputs,poolSize,strides,padding,dataFormat,"avg")}};AveragePooling2D.className="AveragePooling2D";serialization_exports.registerClass(AveragePooling2D);var Pooling3D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=[2,2,2]),super(args),this.poolSize=Array.isArray(args.poolSize)?args.poolSize:[args.poolSize,args.poolSize,args.poolSize],args.strides==null)this.strides=this.poolSize;else if(Array.isArray(args.strides)){if(args.strides.length!==3)throw new ValueError(`If the strides property of a 3D pooling layer is an Array, it is expected to have a length of 3, but received length ${args.strides.length}.`);this.strides=args.strides}else this.strides=[args.strides,args.strides,args.strides];assertPositiveInteger(this.poolSize,"poolSize"),assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:5})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let depths=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],rows=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2],cols=this.dataFormat==="channelsFirst"?inputShape[4]:inputShape[3];return depths=convOutputLength(depths,this.poolSize[0],this.padding,this.strides[0]),rows=convOutputLength(rows,this.poolSize[1],this.padding,this.strides[1]),cols=convOutputLength(cols,this.poolSize[2],this.padding,this.strides[2]),this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],depths,rows,cols]:[inputShape[0],depths,rows,cols,inputShape[4]]}call(inputs,kwargs){return tidy(()=>(this.invokeCallHook(inputs,kwargs),this.poolingFunction(getExactlyOneTensor(inputs),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let config={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},MaxPooling3D=class extends Pooling3D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding),pool3d(inputs,poolSize,strides,padding,dataFormat,"max")}};MaxPooling3D.className="MaxPooling3D";serialization_exports.registerClass(MaxPooling3D);var AveragePooling3D=class extends Pooling3D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding),pool3d(inputs,poolSize,strides,padding,dataFormat,"avg")}};AveragePooling3D.className="AveragePooling3D";serialization_exports.registerClass(AveragePooling3D);var GlobalPooling1D=class extends Layer{constructor(args){super(args);this.inputSpec=[new InputSpec({ndim:3})]}computeOutputShape(inputShape){return[inputShape[0],inputShape[2]]}call(inputs,kwargs){throw new NotImplementedError}},GlobalAveragePooling1D=class extends GlobalPooling1D{constructor(args){super(args||{})}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return mean(input2,1)})}};GlobalAveragePooling1D.className="GlobalAveragePooling1D";serialization_exports.registerClass(GlobalAveragePooling1D);var GlobalMaxPooling1D=class extends GlobalPooling1D{constructor(args){super(args||{})}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return max(input2,1)})}};GlobalMaxPooling1D.className="GlobalMaxPooling1D";serialization_exports.registerClass(GlobalMaxPooling1D);var GlobalPooling2D=class extends Layer{constructor(args){super(args);this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){return inputShape=inputShape,this.dataFormat==="channelsLast"?[inputShape[0],inputShape[3]]:[inputShape[0],inputShape[1]]}call(inputs,kwargs){throw new NotImplementedError}getConfig(){let config={dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},GlobalAveragePooling2D=class extends GlobalPooling2D{call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return this.dataFormat==="channelsLast"?mean(input2,[1,2]):mean(input2,[2,3])})}};GlobalAveragePooling2D.className="GlobalAveragePooling2D";serialization_exports.registerClass(GlobalAveragePooling2D);var GlobalMaxPooling2D=class extends GlobalPooling2D{call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return this.dataFormat==="channelsLast"?max(input2,[1,2]):max(input2,[2,3])})}};GlobalMaxPooling2D.className="GlobalMaxPooling2D";serialization_exports.registerClass(GlobalMaxPooling2D);var Wrapper=class extends Layer{constructor(args){super(args);this.layer=args.layer}build(inputShape){this.built=!0}get trainable(){return this.layer!=null?this.layer.trainable:!1}set trainable(value){this.layer!=null&&(this.layer.trainable=value)}get trainableWeights(){return this.layer.trainableWeights}get nonTrainableWeights(){return this.layer.nonTrainableWeights}get updates(){return this.layer._updates}get losses(){return this.layer.losses}getWeights(){return this.layer.getWeights()}setWeights(weights){this.layer.setWeights(weights)}getConfig(){let config={layer:{className:this.layer.getClassName(),config:this.layer.getConfig()}},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.layer!=null&&this.layer.setFastWeightInitDuringBuild(value)}static fromConfig(cls,config,customObjects={}){let layerConfig=config.layer,layer=deserialize(layerConfig,customObjects);delete config.layer;let newConfig={layer};return Object.assign(newConfig,config),new cls(newConfig)}},TimeDistributed=class extends Wrapper{constructor(args){super(args);this.supportsMasking=!0}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length<3)throw new ValueError(`TimeDistributed layer expects an input shape >= 3D, but received input shape ${JSON.stringify(inputShape)}`);this.inputSpec=[{shape:inputShape}];let childInputShape=[inputShape[0]].concat(inputShape.slice(2));this.layer.built||(this.layer.build(childInputShape),this.layer.built=!0),super.build(inputShape)}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let childInputShape=[inputShape[0]].concat(inputShape.slice(2)),childOutputShape=this.layer.computeOutputShape(childInputShape),timesteps=inputShape[1];return[childOutputShape[0],timesteps].concat(childOutputShape.slice(1))}call(inputs,kwargs){return tidy(()=>(inputs=getExactlyOneTensor(inputs),rnn((inputs2,states)=>[getExactlyOneTensor(this.layer.call(inputs2,kwargs)),[]],inputs,[],!1,null,null,!1,!0)[1]))}};TimeDistributed.className="TimeDistributed";serialization_exports.registerClass(TimeDistributed);function checkBidirectionalMergeMode(value){checkStringTypeUnionValue(VALID_BIDIRECTIONAL_MERGE_MODES,"BidirectionalMergeMode",value)}var DEFAULT_BIDIRECTIONAL_MERGE_MODE="concat",Bidirectional=class extends Wrapper{constructor(args){super(args);let layerConfig=args.layer.getConfig(),forwDict={};forwDict.className=args.layer.getClassName(),forwDict.config=layerConfig,this.forwardLayer=deserialize(forwDict),layerConfig.goBackwards=layerConfig.goBackwards!==!0;let backDict={};if(backDict.className=args.layer.getClassName(),backDict.config=layerConfig,this.backwardLayer=deserialize(backDict),this.forwardLayer.name="forward_"+this.forwardLayer.name,this.backwardLayer.name="backward_"+this.backwardLayer.name,this.mergeMode=args.mergeMode===void 0?DEFAULT_BIDIRECTIONAL_MERGE_MODE:args.mergeMode,checkBidirectionalMergeMode(this.mergeMode),args.weights)throw new NotImplementedError("weights support is not implemented for Bidirectional layer yet.");this._stateful=args.layer.stateful,this.returnSequences=args.layer.returnSequences,this.returnState=args.layer.returnState,this.supportsMasking=!0,this._trainable=!0,this.inputSpec=args.layer.inputSpec,this.numConstants=null}get trainable(){return this._trainable}set trainable(value){this._trainable=value,this.forwardLayer!=null&&(this.forwardLayer.trainable=value),this.backwardLayer!=null&&(this.backwardLayer.trainable=value)}getWeights(){return this.forwardLayer.getWeights().concat(this.backwardLayer.getWeights())}setWeights(weights){let numWeights=weights.length,numeightsOver2=Math.floor(numWeights/2);this.forwardLayer.setWeights(weights.slice(0,numeightsOver2)),this.backwardLayer.setWeights(weights.slice(numeightsOver2))}computeOutputShape(inputShape){let layerShapes=this.forwardLayer.computeOutputShape(inputShape);Array.isArray(layerShapes)&&Array.isArray(layerShapes[0])||(layerShapes=[layerShapes]),layerShapes=layerShapes;let outputShape,outputShapes,stateShape;return this.returnState&&(stateShape=layerShapes.slice(1)),outputShape=layerShapes[0],outputShape=outputShape,this.mergeMode==="concat"?(outputShape[outputShape.length-1]*=2,outputShapes=[outputShape]):this.mergeMode==null?outputShapes=[outputShape,outputShape.slice()]:outputShapes=[outputShape],this.returnState?this.mergeMode==null?outputShapes.concat(stateShape).concat(stateShape.slice()):[outputShape].concat(stateShape).concat(stateShape.slice()):singletonOrArray(outputShapes)}apply(inputs,kwargs){let initialState=kwargs==null?null:kwargs.initialState,constants=kwargs==null?null:kwargs.constants;kwargs==null&&(kwargs={});let standardized=standardizeArgs(inputs,initialState,constants,this.numConstants);if(inputs=standardized.inputs,initialState=standardized.initialState,constants=standardized.constants,Array.isArray(inputs)&&(initialState=inputs.slice(1),inputs=inputs[0]),(initialState==null||initialState.length===0)&&constants==null)return super.apply(inputs,kwargs);let additionalInputs=[],additionalSpecs=[];if(initialState!=null){let numStates=initialState.length;if(numStates%2>0)throw new ValueError("When passing `initialState` to a Bidrectional RNN, the state should be an Array containing the states of the underlying RNNs.");kwargs.initialState=initialState,additionalInputs.push(...initialState);let stateSpecs=initialState.map(state=>new InputSpec({shape:state.shape}));this.forwardLayer.stateSpec=stateSpecs.slice(0,numStates/2),this.backwardLayer.stateSpec=stateSpecs.slice(numStates/2),additionalSpecs.push(...stateSpecs)}if(constants!=null)throw new NotImplementedError("Support for constants in Bidirectional layers is not implemented yet.");let isSymbolicTensor=additionalInputs[0]instanceof SymbolicTensor;for(let tensor2 of additionalInputs)if(tensor2 instanceof SymbolicTensor!==isSymbolicTensor)throw new ValueError("The initial state of a Bidirectional layer cannot be specified as a mix of symbolic and non-symbolic tensors");if(isSymbolicTensor){let fullInput=[inputs].concat(additionalInputs),fullInputSpec=this.inputSpec.concat(additionalSpecs),originalInputSpec=this.inputSpec;this.inputSpec=fullInputSpec;let output=super.apply(fullInput,kwargs);return this.inputSpec=originalInputSpec,output}else return super.apply(inputs,kwargs)}call(inputs,kwargs){return tidy(()=>{let initialState=kwargs.initialState,y,yRev;if(initialState==null)y=this.forwardLayer.call(inputs,kwargs),yRev=this.backwardLayer.call(inputs,kwargs);else{let forwardState=initialState.slice(0,initialState.length/2),backwardState=initialState.slice(initialState.length/2);y=this.forwardLayer.call(inputs,Object.assign(kwargs,{initialState:forwardState})),yRev=this.backwardLayer.call(inputs,Object.assign(kwargs,{initialState:backwardState}))}let states;this.returnState&&(Array.isArray(y)&&(states=y.slice(1).concat(yRev.slice(1))),y=y[0],yRev=yRev[0]),this.returnSequences&&(yRev=reverse(yRev,1));let output;return this.mergeMode==="concat"?output=concatenate([y,yRev]):this.mergeMode==="sum"?output=add2(y,yRev):this.mergeMode==="ave"?output=mul(.5,add2(y,yRev)):this.mergeMode==="mul"?output=mul(y,yRev):this.mergeMode==null&&(output=[y,yRev]),this.returnState?this.mergeMode==null?output.concat(states):[output].concat(states):output})}resetStates(states){this.forwardLayer.resetStates(),this.backwardLayer.resetStates()}build(inputShape){nameScope(this.forwardLayer.name,()=>{this.forwardLayer.build(inputShape)}),nameScope(this.backwardLayer.name,()=>{this.backwardLayer.build(inputShape)}),this.built=!0}computeMask(inputs,mask){Array.isArray(mask)&&(mask=mask[0]);let outputMask;if(this.returnSequences?this.mergeMode==null?outputMask=[mask,mask]:outputMask=mask:this.mergeMode==null?outputMask=[null,null]:outputMask=null,this.returnState){let stateMask=this.forwardLayer.states.map(state=>null);return Array.isArray(outputMask)?outputMask.concat(stateMask).concat(stateMask):[outputMask].concat(stateMask).concat(stateMask)}else return outputMask}get trainableWeights(){return this.forwardLayer.trainableWeights.concat(this.backwardLayer.trainableWeights)}get nonTrainableWeights(){return this.forwardLayer.nonTrainableWeights.concat(this.backwardLayer.nonTrainableWeights)}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.forwardLayer!=null&&this.forwardLayer.setFastWeightInitDuringBuild(value),this.backwardLayer!=null&&this.backwardLayer.setFastWeightInitDuringBuild(value)}getConfig(){let config={mergeMode:this.mergeMode},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}static fromConfig(cls,config){let rnnLayer=deserialize(config.layer);if(delete config.layer,config.numConstants!=null)throw new NotImplementedError("Deserialization of a Bidirectional layer with numConstants present is not supported yet.");let newConfig=config;return newConfig.layer=rnnLayer,new cls(newConfig)}};Bidirectional.className="Bidirectional";serialization_exports.registerClass(Bidirectional);function inputLayer(args){return new InputLayer(args)}function elu3(args){return new ELU(args)}function reLU(args){return new ReLU(args)}function leakyReLU(args){return new LeakyReLU(args)}function prelu2(args){return new PReLU(args)}function softmax2(args){return new Softmax3(args)}function thresholdedReLU(args){return new ThresholdedReLU(args)}function conv1d2(args){return new Conv1D(args)}function conv2d3(args){return new Conv2D2(args)}function conv2dTranspose2(args){return new Conv2DTranspose(args)}function conv3d2(args){return new Conv3D2(args)}function separableConv2d2(args){return new SeparableConv2D(args)}function cropping2D(args){return new Cropping2D(args)}function upSampling2d(args){return new UpSampling2D(args)}function depthwiseConv2d4(args){return new DepthwiseConv2D(args)}function activation(args){return new Activation2(args)}function dense(args){return new Dense(args)}function dropout3(args){return new Dropout(args)}function spatialDropout1d(args){return new SpatialDropout1D(args)}function flatten3(args){return new Flatten(args)}function repeatVector(args){return new RepeatVector(args)}function reshape2(args){return new Reshape2(args)}function permute(args){return new Permute(args)}function embedding(args){return new Embedding(args)}function add3(args){return new Add2(args)}function average(args){return new Average(args)}function concatenate2(args){return new Concatenate(args)}function maximum2(args){return new Maximum2(args)}function minimum2(args){return new Minimum2(args)}function multiply(args){return new Multiply2(args)}function dot3(args){return new Dot(args)}function batchNormalization2(args){return new BatchNormalization(args)}function layerNormalization(args){return new LayerNormalization(args)}function zeroPadding2d(args){return new ZeroPadding2D(args)}function averagePooling1d(args){return new AveragePooling1D(args)}function avgPool1d(args){return averagePooling1d(args)}function avgPooling1d(args){return averagePooling1d(args)}function averagePooling2d(args){return new AveragePooling2D(args)}function avgPool2d(args){return averagePooling2d(args)}function avgPooling2d(args){return averagePooling2d(args)}function averagePooling3d(args){return new AveragePooling3D(args)}function avgPool3d2(args){return averagePooling3d(args)}function avgPooling3d(args){return averagePooling3d(args)}function globalAveragePooling1d(args){return new GlobalAveragePooling1D(args)}function globalAveragePooling2d(args){return new GlobalAveragePooling2D(args)}function globalMaxPooling1d(args){return new GlobalMaxPooling1D(args)}function globalMaxPooling2d(args){return new GlobalMaxPooling2D(args)}function maxPooling1d(args){return new MaxPooling1D(args)}function maxPooling2d(args){return new MaxPooling2D(args)}function maxPooling3d(args){return new MaxPooling3D(args)}function gru(args){return new GRU(args)}function gruCell(args){return new GRUCell(args)}function lstm(args){return new LSTM(args)}function lstmCell(args){return new LSTMCell(args)}function simpleRNN(args){return new SimpleRNN(args)}function simpleRNNCell(args){return new SimpleRNNCell(args)}function convLstm2d(args){return new ConvLSTM2D(args)}function convLstm2dCell(args){return new ConvLSTM2DCell(args)}function rnn2(args){return new RNN(args)}function stackedRNNCells(args){return new StackedRNNCells(args)}function bidirectional(args){return new Bidirectional(args)}function timeDistributed(args){return new TimeDistributed(args)}var globalMaxPool1d=globalMaxPooling1d,globalMaxPool2d=globalMaxPooling2d,maxPool1d=maxPooling1d,maxPool2d=maxPooling2d;function gaussianNoise(args){return new GaussianNoise(args)}function gaussianDropout(args){return new GaussianDropout(args)}function alphaDropout(args){return new AlphaDropout(args)}function masking(args){return new Masking(args)}var exports_metrics_exports={};__export2(exports_metrics_exports,{MAPE:()=>MAPE2,MSE:()=>MSE2,binaryAccuracy:()=>binaryAccuracy2,binaryCrossentropy:()=>binaryCrossentropy3,categoricalAccuracy:()=>categoricalAccuracy2,categoricalCrossentropy:()=>categoricalCrossentropy3,cosineProximity:()=>cosineProximity2,mape:()=>mape2,meanAbsoluteError:()=>meanAbsoluteError2,meanAbsolutePercentageError:()=>meanAbsolutePercentageError2,meanSquaredError:()=>meanSquaredError3,mse:()=>mse2,precision:()=>precision2,recall:()=>recall2,sparseCategoricalAccuracy:()=>sparseCategoricalAccuracy2});function binaryAccuracy2(yTrue,yPred){return binaryAccuracy(yTrue,yPred)}function binaryCrossentropy3(yTrue,yPred){return binaryCrossentropy2(yTrue,yPred)}function sparseCategoricalAccuracy2(yTrue,yPred){return sparseCategoricalAccuracy(yTrue,yPred)}function categoricalAccuracy2(yTrue,yPred){return categoricalAccuracy(yTrue,yPred)}function categoricalCrossentropy3(yTrue,yPred){return categoricalCrossentropy2(yTrue,yPred)}function precision2(yTrue,yPred){return precision(yTrue,yPred)}function recall2(yTrue,yPred){return recall(yTrue,yPred)}function cosineProximity2(yTrue,yPred){return cosineProximity(yTrue,yPred)}function meanAbsoluteError2(yTrue,yPred){return meanAbsoluteError(yTrue,yPred)}function meanAbsolutePercentageError2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function MAPE2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function mape2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function meanSquaredError3(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}function MSE2(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}function mse2(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}var exports_models_exports={};__export2(exports_models_exports,{modelFromJSON:()=>modelFromJSON});var exports_regularizers_exports={};__export2(exports_regularizers_exports,{l1:()=>l12,l1l2:()=>l1l2,l2:()=>l22});function l1l2(config){return new L1L2(config)}function l12(config){return l1(config)}function l22(config){return l2(config)}var Callback=class extends BaseCallback{constructor(){super(...arguments);this.model=null}setModel(model2){if(!(model2 instanceof LayersModel))throw new Error("model must be a LayersModel, not some other Container");this.model=model2}};function less2(currVal,prevVal){return currValprevVal}var EarlyStopping=class extends Callback{constructor(args){super();if(args==null&&(args={}),args.restoreBestWeights)throw new NotImplementedError("restoreBestWeights = True is not implemented in EarlyStopping yet.");this.monitor=args.monitor||"val_loss",this.minDelta=Math.abs(args.minDelta||0),this.patience=args.patience||0,this.verbose=args.verbose||0,this.mode=args.mode||"auto",this.baseline=args.baseline,["auto","min","max"].indexOf(this.mode)===-1&&(console.warn(`EarlyStopping mode '${this.mode}' is invalid. Falling back to mode 'auto'.`),this.mode="auto"),this.mode==="min"?this.monitorFunc=less2:this.mode==="max"?this.monitorFunc=greater2:this.monitor.indexOf("acc")!==-1?this.monitorFunc=greater2:this.monitorFunc=less2,this.monitorFunc===less2&&(this.minDelta*=-1)}async onTrainBegin(logs){this.wait=0,this.stoppedEpoch=0,this.baseline!=null?this.best=this.baseline:this.best=this.monitorFunc===less2?Infinity:-Infinity}async onEpochEnd(epoch,logs){await resolveScalarsInLogs(logs);let current=this.getMonitorValue(logs);current!=null&&(this.monitorFunc(current-this.minDelta,this.best)?(this.best=current,this.wait=0):(this.wait++,this.wait>=this.patience&&(this.stoppedEpoch=epoch,this.model.stopTraining=!0)))}async onTrainEnd(logs){this.stoppedEpoch>0&&this.verbose&&console.log(`Epoch ${this.stoppedEpoch}: early stopping.`)}getMonitorValue(logs){logs==null&&(logs={});let monitorValue=logs[this.monitor];return monitorValue==null&&console.warn(`Metric for EarlyStopping ${this.monitor} is not available. Available metrics are: ${Object.keys(logs)}`),monitorValue}};function earlyStopping(args){return new EarlyStopping(args)}var callbacks={earlyStopping},DataType;(function(DataType2){DataType2[DataType2.DT_INVALID=0]="DT_INVALID",DataType2[DataType2.DT_FLOAT=1]="DT_FLOAT",DataType2[DataType2.DT_DOUBLE=2]="DT_DOUBLE",DataType2[DataType2.DT_INT32=3]="DT_INT32",DataType2[DataType2.DT_UINT8=4]="DT_UINT8",DataType2[DataType2.DT_INT16=5]="DT_INT16",DataType2[DataType2.DT_INT8=6]="DT_INT8",DataType2[DataType2.DT_STRING=7]="DT_STRING",DataType2[DataType2.DT_COMPLEX64=8]="DT_COMPLEX64",DataType2[DataType2.DT_INT64=9]="DT_INT64",DataType2[DataType2.DT_BOOL=10]="DT_BOOL",DataType2[DataType2.DT_QINT8=11]="DT_QINT8",DataType2[DataType2.DT_QUINT8=12]="DT_QUINT8",DataType2[DataType2.DT_QINT32=13]="DT_QINT32",DataType2[DataType2.DT_BFLOAT16=14]="DT_BFLOAT16",DataType2[DataType2.DT_FLOAT_REF=101]="DT_FLOAT_REF",DataType2[DataType2.DT_DOUBLE_REF=102]="DT_DOUBLE_REF",DataType2[DataType2.DT_INT32_REF=103]="DT_INT32_REF",DataType2[DataType2.DT_UINT8_REF=104]="DT_UINT8_REF",DataType2[DataType2.DT_INT16_REF=105]="DT_INT16_REF",DataType2[DataType2.DT_INT8_REF=106]="DT_INT8_REF",DataType2[DataType2.DT_STRING_REF=107]="DT_STRING_REF",DataType2[DataType2.DT_COMPLEX64_REF=108]="DT_COMPLEX64_REF",DataType2[DataType2.DT_INT64_REF=109]="DT_INT64_REF",DataType2[DataType2.DT_BOOL_REF=110]="DT_BOOL_REF",DataType2[DataType2.DT_QINT8_REF=111]="DT_QINT8_REF",DataType2[DataType2.DT_QUINT8_REF=112]="DT_QUINT8_REF",DataType2[DataType2.DT_QINT32_REF=113]="DT_QINT32_REF",DataType2[DataType2.DT_BFLOAT16_REF=114]="DT_BFLOAT16_REF"})(DataType||(DataType={}));var SaverDef;(function(SaverDef2){let CheckpointFormatVersion;(function(CheckpointFormatVersion2){CheckpointFormatVersion2[CheckpointFormatVersion2.LEGACY=0]="LEGACY",CheckpointFormatVersion2[CheckpointFormatVersion2.V1=1]="V1",CheckpointFormatVersion2[CheckpointFormatVersion2.V2=2]="V2"})(CheckpointFormatVersion=SaverDef2.CheckpointFormatVersion||(SaverDef2.CheckpointFormatVersion={}))})(SaverDef||(SaverDef={}));var CUSTOM_OPS={};function registerOp(name,opFunc){let opMapper={tfOpName:name,category:"custom",inputs:[],attrs:[],customExecutor:opFunc};CUSTOM_OPS[name]=opMapper}function getRegisteredOp(name){return CUSTOM_OPS[name]}function deregisterOp(name){delete CUSTOM_OPS[name]}function getParamValue(paramName,node2,tensorMap,context,resourceManager){let inputParam=node2.inputParams[paramName];if(inputParam&&inputParam.inputIndexStart!==void 0){let start=inputParam.inputIndexStart,end=inputParam.inputIndexEnd===0?void 0:inputParam.inputIndexEnd===void 0?start+1:inputParam.inputIndexEnd;if(inputParam.type==="tensor")return getTensor(node2.inputNames[inputParam.inputIndexStart],tensorMap,context,resourceManager);if(inputParam.type==="tensors")return node2.inputNames.slice(start,end).map(name=>getTensor(name,tensorMap,context,resourceManager));let tensor2=getTensor(node2.inputNames.slice(start)[0],tensorMap,context,resourceManager),data=tensor2.dataSync();return inputParam.type==="number"?data[0]:util_exports.toNestedArray(tensor2.shape,data)}let attrParam=node2.attrParams[paramName];return attrParam&&attrParam.value}function getTensor(name,tensorsMap,context,resourceManager){let[nodeName,index]=parseNodeName(name);if(resourceManager!=null){let tensor2=resourceManager.getHashTableHandleByName(nodeName);if(tensor2!=null)return tensor2}let contextId=context.currentContextIds.find(contextId2=>!!tensorsMap[getNodeNameWithContextId(nodeName,contextId2)]);return contextId!==void 0?tensorsMap[getNodeNameWithContextId(nodeName,contextId)][index]:void 0}function getTensorsForCurrentContenxt(name,tensorsMap,context){return tensorsMap[getNodeNameWithContextId(name,context.currentContextId)]}function getNodeNameAndIndex(inputName,context){let[nodeName,index]=parseNodeName(inputName);return[getNodeNameWithContextId(nodeName,context&&context.currentContextId),index]}function getNodeNameWithContextId(name,contextId){return contextId?`${name}-${contextId}`:name}function parseNodeName(name){let parts=name.split(":");return parts.length===1?[name,0]:[parts[0],Number(parts[parts.length-1])]}function getPadding(node2,tensorMap,context){let pad3=getParamValue("pad",node2,tensorMap,context);if(pad3==="explicit"){pad3=getParamValue("explicitPaddings",node2,tensorMap,context);let explicitPadding=[[0,0],[0,0],[0,0],[0,0]];for(let i=0;i<4;i++)explicitPadding[i][0]=pad3[i*2],explicitPadding[i][1]=pad3[i*2+1];return explicitPadding}return pad3}function cloneTensor(tensor2){return tensor2.kept?tensor2:clone(tensor2)}var arithmetic_exports={};__export2(arithmetic_exports,{json:()=>json});var json=[{tfOpName:"Add",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddV2",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddN",category:"arithmetic",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"BiasAdd",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"Sub",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"RealDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Div",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"DivNoNan",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mul",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Maximum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Minimum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Pow",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SquaredDifference",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorMod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],basic_math_exports={};__export2(basic_math_exports,{json:()=>json2});var json2=[{tfOpName:"Abs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan2",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ceil",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ClipByValue",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"clipValueMin",type:"number"},{start:2,name:"clipValueMax",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Complex",category:"basic_math",inputs:[{start:0,name:"real",type:"tensor"},{start:1,name:"imag",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ComplexAbs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Elu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Exp",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Floor",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Imag",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Neg",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Real",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Prelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"alpha",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu6",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Selu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sigmoid",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Rsqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Square",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sign",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Round",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Expm1",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log1p",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Reciprocal",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Softplus",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Erf",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Prod",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axes",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LeakyRelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"alpha",name:"alpha",type:"number",defaultValue:.2},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],control_exports={};__export2(control_exports,{json:()=>json3});var json3=[{tfOpName:"EmptyTensorList",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"maxNumElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"LoopCond",category:"control",inputs:[{start:0,name:"pred",type:"tensor"}]},{tfOpName:"Switch",category:"control",inputs:[{start:0,name:"data",type:"tensor"},{start:1,name:"pred",type:"tensor"}]},{tfOpName:"Merge",category:"control",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"Enter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"frame_name",name:"frameName",type:"string"},{tfName:"is_constant",name:"isConstant",type:"bool"}]},{tfOpName:"Exit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NextIteration",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayV3",category:"control",inputs:[{start:0,name:"size",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"dynamic_size",name:"dynamicSize",type:"bool"},{tfName:"clear_after_read",name:"clearAfterRead",type:"bool"},{tfName:"identical_element_shapes",name:"identicalElementShapes",type:"bool"},{tfName:"tensor_array_name",name:"name",type:"string"}]},{tfOpName:"TensorArrayWriteV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayReadV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayGatherV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"}]},{tfOpName:"TensorArrayScatterV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArrayConcatV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape_except0",name:"elementShapeExcept0",type:"shape",notSupported:!0}]},{tfOpName:"TensorArraySplitV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"tensor",type:"tensor"},{start:2,name:"lengths",type:"number[]"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArraySizeV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}]},{tfOpName:"TensorArrayCloseV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"}]},{tfOpName:"StatelessIf",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"If",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"StatelessWhile",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"While",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"TensorListScatter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListScatterV2",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"},{start:3,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGather",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListSetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListReserve",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListFromTensor",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListStack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"},{tfName:"num_elements",name:"numElements",type:"dtype"}]},{tfOpName:"TensorListSplit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"},{start:2,name:"lengths",type:"number[]"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListConcat",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"}],attrs:[{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPopBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPushBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]}],convolution_exports={};__export2(convolution_exports,{json:()=>json4});var json4=[{tfOpName:"AvgPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[],notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPoolWithArgmax",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"include_batch_in_index",name:"includeBatchInIndex",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AvgPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Conv1D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"stride",name:"stride",type:"number"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NWC"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"dilation",name:"dilation",type:"number",defaultValue:1}]},{tfOpName:"Conv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"useCudnnOnGpu",name:"useCudnnOnGpu",type:"bool"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"_FusedConv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"use_cudnn_on_gpu",name:"useCudnnOnGpu",type:"bool",defaultValue:!0},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"leakyrelu_alpha",name:"leakyreluAlpha",type:"number"}]},{tfOpName:"Conv2DBackpropInput",category:"convolution",inputs:[{start:2,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:0,name:"outputShape",type:"number[]"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]",notSupported:!0}]},{tfOpName:"DepthwiseConv2d",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"DepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"FusedDepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]}]},{tfOpName:"Conv3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"Dilation2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"rates",name:"dilations",type:"number[]"},{tfName:"padding",name:"pad",type:"string"}]}],creation_exports={};__export2(creation_exports,{json:()=>json5});var json5=[{tfOpName:"Fill",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"},{start:1,name:"value",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"LinSpace",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"num",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"OneHot",category:"creation",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"depth",type:"number"},{start:2,name:"onValue",type:"number",defaultValue:1},{start:3,name:"offValue",type:"number",defaultValue:0}],attrs:[{tfName:"axis",name:"axis",type:"number",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ones",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"OnesLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"RandomUniform",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"minval",name:"minval",type:"number",defaultValue:0},{tfName:"maxval",name:"maxval",type:"number",defaultValue:1},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"seed",name:"seed",type:"number",defaultValue:0},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Range",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"step",type:"number",defaultValue:0}],attrs:[{tfName:"Tidx",name:"dtype",type:"dtype"}]},{tfOpName:"TruncatedNormal",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"means",name:"mean",type:"number",defaultValue:0},{tfName:"stddev",name:"stdDev",type:"number",defaultValue:1},{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Zeros",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"ZerosLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"Multinomial",category:"creation",inputs:[{start:0,name:"logits",type:"tensor"},{start:1,name:"numSamples",type:"number"}],attrs:[{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number"},{tfName:"T",name:"dtype",type:"dtype"},{tfName:"output_dtype",name:"output_dtype",type:"dtype"}]}],dynamic_exports={};__export2(dynamic_exports,{json:()=>json6});var json6=[{tfOpName:"NonMaxSuppressionV2",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV3",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV4",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"T_threshold",name:"threshold",type:"dtype",notSupported:!0},{tfName:"pad_to_max_output_size",name:"padToMaxOutputSize",type:"bool"}]},{tfOpName:"NonMaxSuppressionV5",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"},{start:5,name:"softNmsSigma",type:"number"}]},{tfOpName:"Where",category:"dynamic",inputs:[{start:0,name:"condition",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ListDiff",category:"dynamic",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],evaluation_exports={};__export2(evaluation_exports,{json:()=>json7});var json7=[{tfOpName:"TopKV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"k",type:"number"}],attrs:[{tfName:"sorted",name:"sorted",type:"bool"}]},{tfOpName:"Unique",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"UniqueV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]}],graph_exports={};__export2(graph_exports,{json:()=>json8});var json8=[{tfOpName:"PlaceholderWithDefault",category:"graph",inputs:[{start:0,name:"default",type:"tensor"}],attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Placeholder",category:"graph",attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Const",category:"graph"},{tfOpName:"Identity",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IdentityN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Snapshot",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Rank",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Size",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Shape",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"ShapeN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Print",category:"graph",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"data",type:"tensors"}],attrs:[{tfName:"message",name:"message",type:"string"},{tfName:"first_n",name:"firstN",type:"number",notSupported:!0},{tfName:"summarize",name:"summarize",type:"number",defaultValue:3}]},{tfOpName:"NoOp",category:"graph",inputs:[]},{tfOpName:"StopGradient",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"FakeQuantWithMinMaxVars",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"min",name:"min",type:"number"},{tfName:"max",name:"max",type:"number"}]}],hash_table_exports={};__export2(hash_table_exports,{json:()=>json9});var json9=[{tfOpName:"HashTable",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"HashTableV2",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"LookupTableImport",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableImportV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFind",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFindV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]}],image_exports={};__export2(image_exports,{json:()=>json10});var json10=[{tfOpName:"ResizeBilinear",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"half_pixel_centers",name:"halfPixelCenters",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ResizeNearestNeighbor",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"half_pixel_centers",name:"halfPixelCenters",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"CropAndResize",category:"image",inputs:[{start:0,name:"image",type:"tensor"},{start:1,name:"boxes",type:"tensor"},{start:2,name:"boxInd",type:"tensor"},{start:3,name:"cropSize",type:"number[]"}],attrs:[{tfName:"method",name:"method",type:"string"},{tfName:"extrapolation_value",name:"extrapolationValue",type:"number"}]}],logical_exports={};__export2(logical_exports,{json:()=>json11});var json11=[{tfOpName:"Equal",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NotEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Greater",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"GreaterEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Less",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LessEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalAnd",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalNot",category:"logical",inputs:[{start:0,name:"a",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalOr",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Select",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SelectV2",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],matrices_exports={};__export2(matrices_exports,{json:()=>json12});var json12=[{tfOpName:"_FusedMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMulV2",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Transpose",category:"matrices",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"perm",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],normalization_exports={};__export2(normalization_exports,{json:()=>json13});var json13=[{tfOpName:"FusedBatchNorm",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV2",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV3",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"LRN",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"depth_radius",name:"radius",type:"number",defaultValue:5},{tfName:"bias",name:"bias",type:"number",defaultValue:1},{tfName:"alpha",name:"alpha",type:"number",defaultValue:1},{tfName:"beta",name:"beta",type:"number",defaultValue:.5}]},{tfOpName:"Softmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"LogSoftmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"SparseToDense",category:"normalization",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!0,notSupported:!0}]}],reduction_exports={};__export2(reduction_exports,{json:()=>json14});var json14=[{tfOpName:"Bincount",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"size",type:"number"},{start:2,name:"weights",type:"tensor"}]},{tfOpName:"DenseBincount",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"size",type:"number"},{start:2,name:"weights",type:"tensor"}],attrs:[{tfName:"binary_output",name:"binaryOutput",type:"bool"}]},{tfOpName:"Max",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Mean",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Min",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Sum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"All",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Any",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"ArgMax",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"ArgMin",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"Prod",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Cumsum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}],attrs:[{tfName:"exclusive",name:"exclusive",type:"bool"},{tfName:"reverse",name:"reverse",type:"bool"}]}],slice_join_exports={};__export2(slice_join_exports,{json:()=>json15});var json15=[{tfOpName:"ConcatV2",category:"slice_join",inputs:[{start:0,end:-1,name:"tensors",type:"tensors"},{start:-1,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"Concat",category:"slice_join",inputs:[{start:1,end:0,name:"tensors",type:"tensors"},{start:0,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"GatherV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"},{start:2,name:"axis",type:"number",defaultValue:0}],attrs:[{tfName:"batch_dims",name:"batchDims",type:"number",defaultValue:0}]},{tfOpName:"Gather",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",notSupported:!0}]},{tfOpName:"Reverse",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"dims",type:"bool[]"}]},{tfOpName:"ReverseV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}]},{tfOpName:"Slice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"size",type:"number[]"}]},{tfOpName:"StridedSlice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"end",type:"number[]"},{start:3,name:"strides",type:"number[]"}],attrs:[{tfName:"begin_mask",name:"beginMask",type:"number",defaultValue:0},{tfName:"end_mask",name:"endMask",type:"number",defaultValue:0},{tfName:"new_axis_mask",name:"newAxisMask",type:"number",defaultValue:0},{tfName:"ellipsis_mask",name:"ellipsisMask",type:"number",defaultValue:0},{tfName:"shrink_axis_mask",name:"shrinkAxisMask",type:"number",defaultValue:0}]},{tfOpName:"Pack",category:"slice_join",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0}]},{tfOpName:"Unpack",category:"slice_join",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0},{tfName:"num",name:"num",type:"number",defaultValue:0,notSupported:!0}]},{tfOpName:"Tile",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"reps",type:"number[]"}]},{tfOpName:"Split",category:"slice_join",inputs:[{start:0,name:"axis",type:"number",defaultValue:0},{start:1,name:"x",type:"tensor"}],attrs:[{tfName:"num_split",name:"numOrSizeSplits",type:"number",defaultValue:1}]},{tfOpName:"SplitV",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"numOrSizeSplits",type:"number[]"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"ScatterNd",category:"slice_join",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"values",type:"tensor"},{start:2,name:"shape",type:"number[]"}]},{tfOpName:"GatherNd",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}]},{tfOpName:"SparseToDense",category:"slice_join",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!1,notSupported:!0}]}],spectral_exports={};__export2(spectral_exports,{json:()=>json16});var json16=[{tfOpName:"FFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"RFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]},{tfOpName:"IRFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]}],transformation_exports={};__export2(transformation_exports,{json:()=>json17});var json17=[{tfOpName:"Cast",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"SrcT",name:"sdtype",type:"dtype",notSupported:!0},{tfName:"DstT",name:"dtype",type:"dtype"}]},{tfOpName:"ExpandDims",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"MirrorPad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"mode",name:"mode",type:"string"}]},{tfOpName:"Pad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"constant_value",name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"PadV2",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"},{start:2,name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"Reshape",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}]},{tfOpName:"Squeeze",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"axis",tfDeprecatedName:"squeeze_dims",name:"axis",type:"number[]"}]},{tfOpName:"SpaceToBatchND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"paddings",type:"number[]"}]},{tfOpName:"BatchToSpaceND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"crops",type:"number[]"}]},{tfOpName:"DepthToSpace",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"block_size",name:"blockSize",type:"number"},{tfName:"data_format",name:"dataFormat",type:"string"}]},{tfOpName:"BroadcastTo",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}],attrs:[]}],OperationMapper=class{static get Instance(){return this._instance||(this._instance=new this)}constructor(){let ops=[arithmetic_exports,basic_math_exports,control_exports,convolution_exports,creation_exports,dynamic_exports,evaluation_exports,logical_exports,image_exports,graph_exports,matrices_exports,normalization_exports,reduction_exports,slice_join_exports,spectral_exports,transformation_exports,hash_table_exports],mappersJson=[].concat(...ops.map(op2=>op2.json));this.opMappers=mappersJson.reduce((map,mapper)=>(map[mapper.tfOpName]=mapper,map),{})}transformGraph(graph2,signature={}){let tfNodes=graph2.node,placeholders=[],weights=[],initNodes=[],nodes=tfNodes.reduce((map,node2)=>(map[node2.name]=this.mapNode(node2),node2.op.startsWith("Placeholder")?placeholders.push(map[node2.name]):node2.op==="Const"?weights.push(map[node2.name]):(node2.input==null||node2.input.length===0)&&initNodes.push(map[node2.name]),map),{}),inputs=[],outputs=[],inputNodeNameToKey={},outputNodeNameToKey={};signature!=null&&(inputNodeNameToKey=this.mapSignatureEntries(signature.inputs),outputNodeNameToKey=this.mapSignatureEntries(signature.outputs));let allNodes=Object.keys(nodes);allNodes.forEach(key=>{let node2=nodes[key];node2.inputNames.forEach(name=>{let[nodeName]=getNodeNameAndIndex(name);node2.inputs.push(nodes[nodeName]),nodes[nodeName].children.push(node2)})}),Object.keys(outputNodeNameToKey).length===0?allNodes.forEach(key=>{let node2=nodes[key];node2.children.length===0&&outputs.push(node2)}):Object.keys(outputNodeNameToKey).forEach(name=>{let[nodeName]=getNodeNameAndIndex(name),node2=nodes[nodeName];node2!=null&&(node2.signatureKey=outputNodeNameToKey[name],outputs.push(node2))}),Object.keys(inputNodeNameToKey).length>0?Object.keys(inputNodeNameToKey).forEach(name=>{let[nodeName]=getNodeNameAndIndex(name),node2=nodes[nodeName];node2&&(node2.signatureKey=inputNodeNameToKey[name],inputs.push(node2))}):inputs=placeholders;let functions={};graph2.library!=null&&graph2.library.function!=null&&(functions=graph2.library.function.reduce((functions2,func2)=>(functions2[func2.signature.name]=this.mapFunction(func2),functions2),{}));let result={nodes,inputs,outputs,weights,placeholders,signature,functions};return initNodes.length>0&&(result.initNodes=initNodes),result}mapSignatureEntries(entries){return Object.keys(entries||{}).reduce((prev,curr)=>(prev[entries[curr].name]=curr,prev),{})}mapNode(node2){let mapper=getRegisteredOp(node2.op)||this.opMappers[node2.op]||{};node2.attr==null&&(node2.attr={});let newNode={name:node2.name,op:node2.op,category:mapper.category,inputNames:(node2.input||[]).map(input2=>input2.startsWith("^")?input2.substr(1):input2),inputs:[],children:[],inputParams:{},attrParams:{},rawAttrs:node2.attr};return mapper.inputs!=null&&(newNode.inputParams=mapper.inputs.reduce((map,param)=>(map[param.name]={type:param.type,inputIndexStart:param.start,inputIndexEnd:param.end},map),{})),mapper.attrs!=null&&(newNode.attrParams=mapper.attrs.reduce((map,param)=>{let type=param.type,value;switch(param.type){case"string":value=getStringParam(node2.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getStringParam(node2.attr,param.tfDeprecatedName,param.defaultValue));break;case"string[]":value=getStringArrayParam(node2.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getStringArrayParam(node2.attr,param.tfDeprecatedName,param.defaultValue));break;case"number":value=getNumberParam(node2.attr,param.tfName,param.defaultValue||0),value===void 0&&!!param.tfDeprecatedName&&(value=getNumberParam(node2.attr,param.tfDeprecatedName,param.defaultValue));break;case"number[]":value=getNumericArrayParam(node2.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getNumericArrayParam(node2.attr,param.tfDeprecatedName,param.defaultValue));break;case"bool":value=getBoolParam(node2.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getBoolParam(node2.attr,param.tfDeprecatedName,param.defaultValue));break;case"bool[]":value=getBoolArrayParam(node2.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getBoolArrayParam(node2.attr,param.tfDeprecatedName,param.defaultValue));break;case"shape":value=getTensorShapeParam(node2.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getTensorShapeParam(node2.attr,param.tfDeprecatedName,param.defaultValue));break;case"shape[]":value=getTensorShapeArrayParam(node2.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getTensorShapeArrayParam(node2.attr,param.tfDeprecatedName,param.defaultValue));break;case"dtype":value=getDtypeParam(node2.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getDtypeParam(node2.attr,param.tfDeprecatedName,param.defaultValue));break;case"dtype[]":value=getDtypeArrayParam(node2.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getDtypeArrayParam(node2.attr,param.tfDeprecatedName,param.defaultValue));break;case"func":value=getFuncParam(node2.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getFuncParam(node2.attr,param.tfDeprecatedName,param.defaultValue));break;case"tensor":case"tensors":break;default:throw new Error(`Unsupported param type: ${param.type} for op: ${node2.op}`)}return map[param.name]={value,type},map},{})),newNode}mapFunction(functionDef){let tfNodes=functionDef.nodeDef,placeholders=[],weights=[],nodes={};tfNodes!=null&&(nodes=tfNodes.reduce((map,node2)=>(map[node2.name]=this.mapNode(node2),node2.op==="Const"&&weights.push(map[node2.name]),map),{}));let inputs=[],outputs=[];functionDef.signature.inputArg.forEach(arg=>{let[nodeName]=getNodeNameAndIndex(arg.name),node2={name:nodeName,op:"Placeholder",inputs:[],inputNames:[],category:"graph",inputParams:{},attrParams:{dtype:{value:parseDtypeParam(arg.type),type:"dtype"}},children:[]};node2.signatureKey=arg.name,inputs.push(node2),nodes[nodeName]=node2}),Object.keys(nodes).forEach(key=>{let node2=nodes[key];node2.inputNames.forEach(name=>{let[nodeName]=getNodeNameAndIndex(name);node2.inputs.push(nodes[nodeName]),nodes[nodeName].children.push(node2)})});let returnNodeMap=functionDef.ret;functionDef.signature.outputArg.forEach(output=>{let[nodeName,index]=getNodeNameAndIndex(returnNodeMap[output.name]),node2=nodes[nodeName];node2!=null&&(node2.defaultOutput=index,outputs.push(node2))});let signature=this.mapArgsToSignature(functionDef);return{nodes,inputs,outputs,weights,placeholders,signature}}mapArgsToSignature(functionDef){return{methodName:functionDef.signature.name,inputs:functionDef.signature.inputArg.reduce((map,arg)=>(map[arg.name]=this.mapArgToTensorInfo(arg),map),{}),outputs:functionDef.signature.outputArg.reduce((map,arg)=>(map[arg.name]=this.mapArgToTensorInfo(arg,functionDef.ret),map),{})}}mapArgToTensorInfo(arg,nameMap2){let name=arg.name;return nameMap2!=null&&(name=nameMap2[name]),{name,dtype:arg.type}}};function decodeBase64(text){let global2=env().global;if(typeof global2.atob!="undefined")return global2.atob(text);if(typeof Buffer!="undefined")return new Buffer(text,"base64").toString();throw new Error("Unable to decode base64 in this environment. Missing built-in atob() or Buffer()")}function parseStringParam(s,keepCase){let value=Array.isArray(s)?String.fromCharCode.apply(null,s):decodeBase64(s);return keepCase?value:value.toLowerCase()}function getStringParam(attrs,name,def,keepCase=!1){let param=attrs[name];return param!=null?parseStringParam(param.s,keepCase):def}function getBoolParam(attrs,name,def){let param=attrs[name];return param?param.b:def}function getNumberParam(attrs,name,def){let param=attrs[name]||{},value=param.i!=null?param.i:param.f!=null?param.f:def;return typeof value=="number"?value:parseInt(value,10)}function parseDtypeParam(value){switch(typeof value=="string"&&(value=DataType[value]),value){case DataType.DT_FLOAT:return"float32";case DataType.DT_INT32:case DataType.DT_INT64:case DataType.DT_INT8:case DataType.DT_UINT8:return"int32";case DataType.DT_BOOL:return"bool";case DataType.DT_DOUBLE:return"float32";case DataType.DT_STRING:return"string";default:return null}}function getFuncParam(attrs,name,def){let param=attrs[name];return param&¶m.func?param.func.name:def}function getDtypeParam(attrs,name,def){let param=attrs[name];return param&¶m.type?parseDtypeParam(param.type):def}function getDtypeArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.type?param.list.type.map(v=>parseDtypeParam(v)):def}function parseTensorShapeParam(shape){if(!shape.unknownRank)return shape.dim!=null?shape.dim.map(dim=>typeof dim.size=="number"?dim.size:parseInt(dim.size,10)):[]}function getTensorShapeParam(attrs,name,def){let param=attrs[name];return param&¶m.shape?parseTensorShapeParam(param.shape):def}function getNumericArrayParam(attrs,name,def){let param=attrs[name];return param?((param.list.f&¶m.list.f.length?param.list.f:param.list.i)||[]).map(v=>typeof v=="number"?v:parseInt(v,10)):def}function getStringArrayParam(attrs,name,def,keepCase=!1){let param=attrs[name];return param&¶m.list&¶m.list.s?param.list.s.map(v=>parseStringParam(v,keepCase)):def}function getTensorShapeArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.shape?param.list.shape.map(v=>parseTensorShapeParam(v)):def}function getBoolArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.b?param.list.b:def}var NodeValueImpl=class{constructor(node2,tensorMap,context){this.node=node2,this.tensorMap=tensorMap,this.context=context,this.inputs=[],this.attrs={},this.inputs=node2.inputNames.map(name=>this.getInput(name)),node2.rawAttrs!=null&&(this.attrs=Object.keys(node2.rawAttrs).reduce((attrs,key)=>(attrs[key]=this.getAttr(key),attrs),{}))}getInput(name){return getTensor(name,this.tensorMap,this.context)}getAttr(name,defaultValue){let value=this.node.rawAttrs[name];if(value.tensor!=null)return getTensor(name,this.tensorMap,this.context);if(value.i!=null||value.f!=null)return getNumberParam(this.node.rawAttrs,name,defaultValue);if(value.s!=null)return getStringParam(this.node.rawAttrs,name,defaultValue);if(value.b!=null)return getBoolParam(this.node.rawAttrs,name,defaultValue);if(value.shape!=null)return getTensorShapeParam(this.node.rawAttrs,name,defaultValue);if(value.type!=null)return getDtypeParam(this.node.rawAttrs,name,defaultValue);if(value.list!=null){if(value.list.i!=null||value.list.f!=null)return getNumericArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.s!=null)return getStringArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.shape!=null)return getTensorShapeArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.b!=null)return getBoolArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.type!=null)return getDtypeArrayParam(this.node.rawAttrs,name,defaultValue)}return defaultValue}},executeOp=(node2,tensorMap,context)=>{switch(node2.op){case"BiasAdd":case"AddV2":case"Add":return[add2(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"AddN":return[addN(getParamValue("tensors",node2,tensorMap,context))];case"FloorMod":case"Mod":return[mod(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"Mul":return[mul(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"RealDiv":case"Div":return[div(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"DivNoNan":return[divNoNan(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"FloorDiv":return[floorDiv(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"Sub":return[sub(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"Minimum":return[minimum(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"Maximum":return[maximum(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"Pow":return[pow(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"SquaredDifference":return[squaredDifference(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];default:throw TypeError(`Node type ${node2.op} is not implemented`)}},executeOp2=(node2,tensorMap,context)=>{switch(node2.op){case"Abs":case"ComplexAbs":return[abs(getParamValue("x",node2,tensorMap,context))];case"Acos":return[acos(getParamValue("x",node2,tensorMap,context))];case"Acosh":return[acosh(getParamValue("x",node2,tensorMap,context))];case"Asin":return[asin(getParamValue("x",node2,tensorMap,context))];case"Asinh":return[asinh(getParamValue("x",node2,tensorMap,context))];case"Atan":return[atan(getParamValue("x",node2,tensorMap,context))];case"Atan2":return[atan2(getParamValue("x",node2,tensorMap,context),getParamValue("y",node2,tensorMap,context))];case"Atanh":return[atanh(getParamValue("x",node2,tensorMap,context))];case"Ceil":return[ceil(getParamValue("x",node2,tensorMap,context))];case"Complex":return[complex(getParamValue("real",node2,tensorMap,context),getParamValue("imag",node2,tensorMap,context))];case"Cos":return[cos(getParamValue("x",node2,tensorMap,context))];case"Cosh":return[cosh(getParamValue("x",node2,tensorMap,context))];case"Elu":return[elu(getParamValue("x",node2,tensorMap,context))];case"Erf":return[erf(getParamValue("x",node2,tensorMap,context))];case"Exp":return[exp(getParamValue("x",node2,tensorMap,context))];case"Expm1":return[expm1(getParamValue("x",node2,tensorMap,context))];case"Floor":return[floor(getParamValue("x",node2,tensorMap,context))];case"Log":return[log(getParamValue("x",node2,tensorMap,context))];case"Log1p":return[log1p(getParamValue("x",node2,tensorMap,context))];case"Imag":return[imag(getParamValue("x",node2,tensorMap,context))];case"Neg":return[neg(getParamValue("x",node2,tensorMap,context))];case"Reciprocal":return[reciprocal(getParamValue("x",node2,tensorMap,context))];case"Real":return[real(getParamValue("x",node2,tensorMap,context))];case"Relu":return[relu(getParamValue("x",node2,tensorMap,context))];case"Round":return[round2(getParamValue("x",node2,tensorMap,context))];case"Selu":return[selu(getParamValue("x",node2,tensorMap,context))];case"Sigmoid":return[sigmoid(getParamValue("x",node2,tensorMap,context))];case"Sin":return[sin(getParamValue("x",node2,tensorMap,context))];case"Sign":return[sign(getParamValue("x",node2,tensorMap,context))];case"Sinh":return[sinh(getParamValue("x",node2,tensorMap,context))];case"Softplus":return[softplus(getParamValue("x",node2,tensorMap,context))];case"Sqrt":return[sqrt(getParamValue("x",node2,tensorMap,context))];case"Square":return[square(getParamValue("x",node2,tensorMap,context))];case"Tanh":return[tanh2(getParamValue("x",node2,tensorMap,context))];case"Tan":return[tan(getParamValue("x",node2,tensorMap,context))];case"ClipByValue":return[clipByValue(getParamValue("x",node2,tensorMap,context),getParamValue("clipValueMin",node2,tensorMap,context),getParamValue("clipValueMax",node2,tensorMap,context))];case"Relu6":return[relu6(getParamValue("x",node2,tensorMap,context))];case"Rsqrt":return[rsqrt(getTensor(node2.inputNames[0],tensorMap,context))];case"Prod":return[prod(getParamValue("x",node2,tensorMap,context),getParamValue("axes",node2,tensorMap,context))];case"LeakyRelu":return[leakyRelu(getParamValue("x",node2,tensorMap,context),getParamValue("alpha",node2,tensorMap,context))];case"Prelu":return[prelu(getParamValue("x",node2,tensorMap,context),getParamValue("alpha",node2,tensorMap,context))];default:throw TypeError(`Node type ${node2.op} is not implemented`)}};function assertShapesMatchAllowUndefinedSize(shapeA,shapeB,errorMessagePrefix=""){util_exports.assert(shapesEqualAllowUndefinedSize(shapeA,shapeB),()=>errorMessagePrefix+` Shapes ${shapeA} and ${shapeB} must match`)}function shapesEqualAllowUndefinedSize(n1,n2){if(n1.length!==n2.length)return!1;for(let i=0;i{(keepIds==null||!keepIds.has(tensor2.tensor.id))&&tensor2.tensor.dispose()}),this.tensors=[],this.closed_=!0,this.idTensor.dispose()}size(){return this.tensors.length}read(index){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(index<0||index>=this.size())throw new Error(`Tried to read from index ${index}, but array size is: ${this.size()}`);let tensorWithState=this.tensors[index];if(tensorWithState.cleared)throw new Error(`TensorArray ${this.name}: Could not read index ${index} twice because it was cleared after a previous read (perhaps try setting clear_after_read = false?).`);return this.clearAfterRead&&(tensorWithState.cleared=!0),tensorWithState.read=!0,tensorWithState.tensor}readMany(indices){return indices.map(index=>this.read(index))}write(index,tensor2){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(index<0||!this.dynamicSize&&index>=this.maxSize)throw new Error(`Tried to write to index ${index}, but array is not resizeable and size is: ${this.maxSize}`);let t=this.tensors[index]||{};if(tensor2.dtype!==this.dtype)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, - because the value dtype is ${tensor2.dtype}, but TensorArray dtype is ${this.dtype}.`);if(this.size()===0&&(this.elementShape==null||this.elementShape.length===0)&&(this.elementShape=tensor2.shape),assertShapesMatchAllowUndefinedSize(this.elementShape,tensor2.shape,`TensorArray ${this.name}: Could not write to TensorArray index ${index}.`),t.read)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, because it has already been read.`);if(t.written)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, because it has already been written.`);t.tensor=tensor2,keep(tensor2),t.written=!0,this.tensors[index]=t}writeMany(indices,tensors){if(indices.length!==tensors.length)throw new Error(`TensorArray ${this.name}: could not write multiple tensors,because the index size: ${indices.length} is not the same as tensors size: ${tensors.length}.`);indices.forEach((i,index)=>this.write(i,tensors[index]))}gather(indices,dtype){if(!!dtype&&dtype!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but gather requested dtype ${dtype}`);if(indices)indices=indices.slice(0,this.size());else{indices=[];for(let i=0;i=this.maxSize)throw new Error(`Max index must be < array size (${maxIndex} vs. ${this.maxSize})`);this.writeMany(indices,unstack(tensor2,0))}split(length,tensor2){if(tensor2.dtype!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but tensor has dtype ${tensor2.dtype}`);let totalLength=0,cumulativeLengths=length.map(len=>(totalLength+=len,totalLength));if(totalLength!==tensor2.shape[0])throw new Error(`Expected sum of lengths to be equal to +var r_=Object.create,dd=Object.defineProperty,s_=Object.getPrototypeOf,i_=Object.prototype.hasOwnProperty,o_=Object.getOwnPropertyNames,l_=Object.getOwnPropertyDescriptor;var Lw=e=>dd(e,"__esModule",{value:!0});var u_=(e,t)=>()=>(t||(t={exports:{}},e(t.exports,t)),t.exports),hd=(e,t)=>{Lw(e);for(var n in t)dd(e,n,{get:t[n],enumerable:!0})},c_=(e,t,n)=>{if(Lw(e),t&&typeof t=="object"||typeof t=="function")for(let a of o_(t))!i_.call(e,a)&&a!=="default"&&dd(e,a,{get:()=>t[a],enumerable:!(n=l_(t,a))||n.enumerable});return e},p_=e=>e&&e.__esModule?e:c_(dd(e!=null?r_(s_(e)):{},"default",{value:e,enumerable:!0}),e);var tC=u_((Mre,eC)=>{hd(Mre,{isNodejs:()=>Rre});function Rre(){return typeof global=="object"&&!0&&typeof eC!="undefined"&&typeof process!="undefined"&&!!process.version}});var zg={};hd(zg,{Abs:()=>Co,Acos:()=>Eo,Acosh:()=>_o,AdadeltaOptimizer:()=>zh,AdagradOptimizer:()=>Bh,AdamOptimizer:()=>Wh,AdamaxOptimizer:()=>Vh,Add:()=>Ur,AddN:()=>_s,All:()=>vd,Any:()=>wd,ArgMax:()=>Fs,ArgMin:()=>sc,Asin:()=>Fo,Asinh:()=>Ao,Atan:()=>$o,Atan2:()=>Mo,Atanh:()=>Do,AvgPool:()=>As,AvgPool3D:()=>ic,AvgPool3DGrad:()=>Id,AvgPoolGrad:()=>kd,BackendWasm:()=>Y2,BatchMatMul:()=>$s,BatchToSpaceND:()=>oc,Bincount:()=>Nd,BroadcastTo:()=>n0,Callback:()=>JI,CallbackList:()=>X1,Cast:()=>Ds,Ceil:()=>Ro,ClipByValue:()=>Gr,Complex:()=>Td,ComplexAbs:()=>lc,Concat:()=>Po,Conv2D:()=>Ms,Conv2DBackpropFilter:()=>Sd,Conv2DBackpropInput:()=>Rs,Conv3D:()=>uc,Conv3DBackpropFilterV2:()=>Cd,Conv3DBackpropInputV2:()=>Ed,Cos:()=>Ps,Cosh:()=>Oo,CropAndResize:()=>Lo,Cumsum:()=>Os,CustomCallback:()=>J1,DataStorage:()=>gd,DenseBincount:()=>_d,DepthToSpace:()=>zo,DepthwiseConv2dNative:()=>Ls,DepthwiseConv2dNativeBackpropFilter:()=>Fd,DepthwiseConv2dNativeBackpropInput:()=>Ad,Diag:()=>$d,Dilation2D:()=>cc,Dilation2DBackpropFilter:()=>Md,Dilation2DBackpropInput:()=>Dd,ENV:()=>Ug,EarlyStopping:()=>QI,Elu:()=>Bo,EluGrad:()=>Rd,Environment:()=>Qw,Equal:()=>Vo,Erf:()=>Wo,Exp:()=>Bs,ExpandDims:()=>Uo,Expm1:()=>Go,FFT:()=>Pd,Fill:()=>pc,FlipLeftRight:()=>Ho,Floor:()=>Ws,FloorDiv:()=>Vs,FromPixels:()=>Yd,FusedBatchNorm:()=>Us,FusedConv2D:()=>vi,FusedDepthwiseConv2D:()=>wi,GatherNd:()=>qo,GatherV2:()=>jo,GraphModel:()=>EN,Greater:()=>Ko,GreaterEqual:()=>Gs,History:()=>Y1,IFFT:()=>Od,Identity:()=>Xo,Imag:()=>Ld,InputSpec:()=>Zt,IsFinite:()=>Yo,IsInf:()=>Jo,IsNan:()=>Zo,KernelBackend:()=>nc,LRN:()=>mc,LRNGrad:()=>Bd,LayerVariable:()=>G1,LayersModel:()=>Sr,LeakyRelu:()=>Hs,Less:()=>Qo,LessEqual:()=>el,LinSpace:()=>zd,Log:()=>js,Log1p:()=>tl,LogSoftmax:()=>a0,LogicalAnd:()=>nl,LogicalNot:()=>dc,LogicalOr:()=>hc,Max:()=>qs,MaxPool:()=>Xs,MaxPool3D:()=>fc,MaxPool3DGrad:()=>Vd,MaxPoolGrad:()=>Wd,MaxPoolWithArgmax:()=>Ud,Maximum:()=>Ks,Mean:()=>Ys,Min:()=>Js,Minimum:()=>Zs,MirrorPad:()=>gc,Mod:()=>al,MomentumOptimizer:()=>Uh,Multinomial:()=>Gd,Multiply:()=>Qs,Neg:()=>rl,NonMaxSuppressionV3:()=>il,NonMaxSuppressionV4:()=>ol,NonMaxSuppressionV5:()=>ll,NotEqual:()=>sl,OP_SCOPE_SUFFIX:()=>m0,OneHot:()=>ei,OnesLike:()=>ul,Optimizer:()=>Ir,Pack:()=>cl,PadV2:()=>ti,Pool:()=>Z_,Pow:()=>ni,Prelu:()=>ai,Prod:()=>pl,RMSPropOptimizer:()=>Gh,RNN:()=>tr,Range:()=>yc,Rank:()=>Jg,Real:()=>Hd,RealDiv:()=>zs,Reciprocal:()=>dl,Reduction:()=>mn,Relu:()=>ri,Relu6:()=>ii,Reshape:()=>hl,ResizeBilinear:()=>si,ResizeBilinearGrad:()=>qd,ResizeNearestNeighbor:()=>bc,ResizeNearestNeighborGrad:()=>jd,Reverse:()=>oi,RotateWithOffset:()=>El,Round:()=>li,Rsqrt:()=>ui,SGDOptimizer:()=>qc,ScatterNd:()=>ml,Select:()=>fl,Selu:()=>gl,Sequential:()=>Zl,Sigmoid:()=>pi,Sign:()=>xl,Sin:()=>ci,Sinh:()=>bl,Slice:()=>yl,Softmax:()=>mi,Softplus:()=>vl,SpaceToBatchND:()=>xc,SparseToDense:()=>Kd,SplitV:()=>wl,Sqrt:()=>di,Square:()=>vc,SquaredDifference:()=>fi,Step:()=>Cl,StridedSlice:()=>kl,Sub:()=>gi,Sum:()=>hi,SymbolicTensor:()=>$a,Tan:()=>Il,Tanh:()=>yi,Tensor:()=>z,TensorBuffer:()=>Bt,Tile:()=>Hr,TopK:()=>Nl,Transpose:()=>bi,Unique:()=>Xd,Unpack:()=>Tl,UnsortedSegmentSum:()=>wc,Variable:()=>jr,ZerosLike:()=>Sl,_FusedMatMul:()=>xi,abs:()=>Wt,acos:()=>vy,acosh:()=>wy,add:()=>Z,addN:()=>Y0,addStrict:()=>Mk,all:()=>ch,any:()=>Ac,argMax:()=>$c,argMin:()=>ky,asin:()=>Iy,asinh:()=>Ny,atan:()=>Ty,atan2:()=>Sy,atanh:()=>Cy,avgPool:()=>Jn,avgPool3d:()=>Fy,backend:()=>X0,backend_util:()=>_,basicLSTMCell:()=>C$,batchNorm:()=>br,batchNorm2d:()=>ek,batchNorm3d:()=>tk,batchNorm4d:()=>nk,batchToSpaceND:()=>Mc,bincount:()=>ak,booleanMaskAsync:()=>AR,broadcastTo:()=>Rc,browser:()=>Ti,buffer:()=>Le,callbacks:()=>P4,cast:()=>pe,ceil:()=>Ay,clipByValue:()=>Yt,clone:()=>Yr,complex:()=>qr,concat:()=>Ze,concat1d:()=>rk,concat2d:()=>sk,concat3d:()=>ik,concat4d:()=>ok,constraints:()=>y1,conv1d:()=>dh,conv2d:()=>$t,conv2dTranspose:()=>hh,conv3d:()=>Dy,conv3dTranspose:()=>X$,copyRegisteredKernels:()=>tF,cos:()=>Pc,cosh:()=>mh,cosineWindow:()=>rb,cumsum:()=>fh,customGrad:()=>qa,data:()=>FN,denseBincount:()=>uk,deprecationWarn:()=>Pt,depthToSpace:()=>My,depthwiseConv2d:()=>xr,deregisterOp:()=>L4,device_util:()=>nh,diag:()=>aD,dilation2d:()=>Ry,disableDeprecationWarnings:()=>zA,dispose:()=>Ae,disposeVariables:()=>BA,div:()=>ve,divNoNan:()=>Py,divStrict:()=>Rk,dot:()=>ck,dropout:()=>jk,elu:()=>Ll,enableDebugMode:()=>LA,enableProdMode:()=>OA,enclosingPowerOfTwo:()=>qk,engine:()=>Zr,env:()=>ee,equal:()=>vr,equalStrict:()=>Ek,erf:()=>Oy,exp:()=>hn,expandDims:()=>Zn,expm1:()=>Ly,eye:()=>zy,fft:()=>Gc,fill:()=>In,findBackend:()=>qA,findBackendFactory:()=>KA,floor:()=>zl,floorDiv:()=>uh,fused:()=>as,gather:()=>Ei,gatherND:()=>Hk,gather_util:()=>hy,getBackend:()=>HA,getGradient:()=>qg,getKernel:()=>jg,getKernelsForBackend:()=>Jd,grad:()=>$D,grads:()=>DD,greater:()=>Qn,greaterEqual:()=>wr,greaterEqualStrict:()=>_k,greaterStrict:()=>Fk,ifft:()=>Gl,imag:()=>gh,image:()=>Ya,inTopKAsync:()=>aP,initializers:()=>N1,input:()=>O1,io:()=>Kt,irfft:()=>Ah,isFinite:()=>pk,isInf:()=>dk,isNaN:()=>hk,keep:()=>Xt,kernel_impls:()=>Ja,layers:()=>P1,leakyRelu:()=>Oc,less:()=>Lc,lessEqual:()=>es,lessEqualStrict:()=>Ak,lessStrict:()=>$k,linalg:()=>s1,linspace:()=>mk,loadGraphModel:()=>LV,loadLayersModel:()=>n4,localResponseNormalization:()=>By,log:()=>Dn,log1p:()=>yh,logSigmoid:()=>gk,logSoftmax:()=>xh,logSumExp:()=>Uy,logicalAnd:()=>pa,logicalNot:()=>zc,logicalOr:()=>vh,logicalXor:()=>vk,losses:()=>bO,matMul:()=>ze,math:()=>F0,max:()=>ea,maxPool:()=>Dt,maxPool3d:()=>Gy,maxPoolWithArgmax:()=>wk,maximum:()=>Ta,maximumStrict:()=>Pk,mean:()=>Ct,memory:()=>oh,metrics:()=>KI,min:()=>Wl,minimum:()=>Fi,minimumStrict:()=>Ok,mirrorPad:()=>Hy,mod:()=>wh,modStrict:()=>Lk,model:()=>e4,models:()=>XI,moments:()=>kh,movingAverage:()=>XR,mul:()=>L,mulStrict:()=>zk,multiRNNCell:()=>lM,multinomial:()=>kk,neg:()=>St,nextFrame:()=>Hh,norm:()=>Mh,notEqual:()=>ts,notEqualStrict:()=>Dk,oneHot:()=>Ml,ones:()=>Ka,onesLike:()=>Mn,op:()=>R,outerProduct:()=>hM,pad:()=>ta,pad1d:()=>gM,pad2d:()=>bM,pad3d:()=>vM,pad4d:()=>kM,pool:()=>Ik,pow:()=>Xa,powStrict:()=>Bk,prelu:()=>Wc,print:()=>N0,prod:()=>Ih,profile:()=>WA,rand:()=>AM,randomGamma:()=>RM,randomNormal:()=>Nk,randomUniform:()=>Vl,range:()=>Nh,ready:()=>GA,real:()=>Vc,reciprocal:()=>Ky,registerBackend:()=>lh,registerCallbackConstructor:()=>a4,registerGradient:()=>r0,registerKernel:()=>Ic,registerOp:()=>O4,regularizers:()=>YI,relu:()=>Xe,relu6:()=>Th,removeBackend:()=>jA,reshape:()=>j,reverse:()=>Rn,reverse1d:()=>GM,reverse2d:()=>jM,reverse3d:()=>KM,reverse4d:()=>YM,rfft:()=>Hc,round:()=>Xy,rsqrt:()=>Sh,scalar:()=>de,scatterND:()=>Gk,scatter_util:()=>my,selu:()=>Ch,separableConv2d:()=>Ai,sequential:()=>t4,serialization:()=>se,setBackend:()=>UA,setPlatform:()=>XA,setWasmPath:()=>Nre,setWasmPaths:()=>Tre,setdiff1dAsync:()=>Tk,sigmoid:()=>ca,sign:()=>Yy,signal:()=>yO,sin:()=>Eh,sinh:()=>_h,slice:()=>We,slice1d:()=>Fh,slice2d:()=>Jy,slice3d:()=>Ul,slice4d:()=>Uc,slice_util:()=>dn,softmax:()=>Sa,softplus:()=>Bl,spaceToBatchND:()=>Bc,sparseToDense:()=>ab,spectral:()=>gO,split:()=>Pn,sqrt:()=>an,square:()=>ot,squaredDifference:()=>jc,squaredDifferenceStrict:()=>Wk,squeeze:()=>ns,stack:()=>Mt,step:()=>Hl,stridedSlice:()=>Zy,sub:()=>fe,subStrict:()=>Vk,sum:()=>Ce,sumOutType:()=>th,tan:()=>Qy,tanh:()=>Ol,tensor:()=>Xn,tensor1d:()=>et,tensor2d:()=>Ca,tensor3d:()=>sh,tensor4d:()=>Ea,tensor5d:()=>kR,tensor6d:()=>IR,tensor_util:()=>Na,test_util:()=>H0,tidy:()=>D,tile:()=>ja,time:()=>VA,topk:()=>eb,train:()=>Di,transpose:()=>Ue,truncatedNormal:()=>$h,unique:()=>Dh,unregisterGradient:()=>eF,unregisterKernel:()=>Q_,unsortedSegmentSum:()=>tb,unstack:()=>pt,upcastType:()=>ua,util:()=>k,valueAndGrad:()=>MD,valueAndGrads:()=>RD,variable:()=>Sk,variableGrads:()=>fk,version:()=>Pee,version_converter:()=>_N,version_core:()=>K0,version_layers:()=>fm,version_wasm:()=>Sre,where:()=>kn,whereAsync:()=>nb,zeros:()=>yt,zerosLike:()=>He});var d_=Object.create,md=Object.defineProperty,h_=Object.getPrototypeOf,m_=Object.prototype.hasOwnProperty,f_=Object.getOwnPropertyNames,g_=Object.getOwnPropertyDescriptor,zw=e=>md(e,"__esModule",{value:!0}),pn=(e,t)=>()=>(t||(t={exports:{}},e(t.exports,t)),t.exports),Oe=(e,t)=>{zw(e);for(var n in t)md(e,n,{get:t[n],enumerable:!0})},y_=(e,t,n)=>{if(zw(e),t&&typeof t=="object"||typeof t=="function")for(let a of f_(t))!m_.call(e,a)&&a!=="default"&&md(e,a,{get:()=>t[a],enumerable:!(n=g_(t,a))||n.enumerable});return e},No=e=>e&&e.__esModule?e:y_(md(e!=null?d_(h_(e)):{},"default",{value:e,enumerable:!0}),e),b_=pn(()=>{}),x_=pn((e,t)=>{(function(n,a,r){function s(c){var u=this,p=l();u.next=function(){var d=2091639*u.s0+u.c*23283064365386963e-26;return u.s0=u.s1,u.s1=u.s2,u.s2=d-(u.c=d|0)},u.c=1,u.s0=p(" "),u.s1=p(" "),u.s2=p(" "),u.s0-=p(c),u.s0<0&&(u.s0+=1),u.s1-=p(c),u.s1<0&&(u.s1+=1),u.s2-=p(c),u.s2<0&&(u.s2+=1),p=null}function i(c,u){return u.c=c.c,u.s0=c.s0,u.s1=c.s1,u.s2=c.s2,u}function o(c,u){var p=new s(c),d=u&&u.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"&&i(d,p),h.state=function(){return i(p,{})}),h}function l(){var c=4022871197,u=function(p){p=p.toString();for(var d=0;d>>0,h-=c,h*=c,c=h>>>0,h-=c,c+=h*4294967296}return(c>>>0)*23283064365386963e-26};return u}a&&a.exports?a.exports=o:r&&r.amd?r(function(){return o}):this.alea=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),v_=pn((e,t)=>{(function(n,a,r){function s(l){var c=this,u="";c.x=0,c.y=0,c.z=0,c.w=0,c.next=function(){var d=c.x^c.x<<11;return c.x=c.y,c.y=c.z,c.z=c.w,c.w^=c.w>>>19^d^d>>>8},l===(l|0)?c.x=l:u+=l;for(var p=0;p>>0)/4294967296};return d.double=function(){do var h=u.next()>>>11,m=(u.next()>>>0)/4294967296,f=(h+m)/(1<<21);while(f===0);return f},d.int32=u.next,d.quick=d,p&&(typeof p=="object"&&i(p,u),d.state=function(){return i(u,{})}),d}a&&a.exports?a.exports=o:r&&r.amd?r(function(){return o}):this.xor128=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),w_=pn((e,t)=>{(function(n,a,r){function s(l){var c=this,u="";c.next=function(){var d=c.x^c.x>>>2;return c.x=c.y,c.y=c.z,c.z=c.w,c.w=c.v,(c.d=c.d+362437|0)+(c.v=c.v^c.v<<4^(d^d<<1))|0},c.x=0,c.y=0,c.z=0,c.w=0,c.v=0,l===(l|0)?c.x=l:u+=l;for(var p=0;p>>4),c.next()}function i(l,c){return c.x=l.x,c.y=l.y,c.z=l.z,c.w=l.w,c.v=l.v,c.d=l.d,c}function o(l,c){var u=new s(l),p=c&&c.state,d=function(){return(u.next()>>>0)/4294967296};return d.double=function(){do var h=u.next()>>>11,m=(u.next()>>>0)/4294967296,f=(h+m)/(1<<21);while(f===0);return f},d.int32=u.next,d.quick=d,p&&(typeof p=="object"&&i(p,u),d.state=function(){return i(u,{})}),d}a&&a.exports?a.exports=o:r&&r.amd?r(function(){return o}):this.xorwow=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),k_=pn((e,t)=>{(function(n,a,r){function s(l){var c=this;c.next=function(){var p=c.x,d=c.i,h,m,f;return h=p[d],h^=h>>>7,m=h^h<<24,h=p[d+1&7],m^=h^h>>>10,h=p[d+3&7],m^=h^h>>>3,h=p[d+4&7],m^=h^h<<7,h=p[d+7&7],h=h^h<<13,m^=h^h<<9,p[d]=m,c.i=d+1&7,m};function u(p,d){var h,m,f=[];if(d===(d|0))m=f[0]=d;else for(d=""+d,h=0;h0;--h)p.next()}u(c,l)}function i(l,c){return c.x=l.x.slice(),c.i=l.i,c}function o(l,c){l==null&&(l=+new Date);var u=new s(l),p=c&&c.state,d=function(){return(u.next()>>>0)/4294967296};return d.double=function(){do var h=u.next()>>>11,m=(u.next()>>>0)/4294967296,f=(h+m)/(1<<21);while(f===0);return f},d.int32=u.next,d.quick=d,p&&(p.x&&i(p,u),d.state=function(){return i(u,{})}),d}a&&a.exports?a.exports=o:r&&r.amd?r(function(){return o}):this.xorshift7=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),I_=pn((e,t)=>{(function(n,a,r){function s(l){var c=this;c.next=function(){var p=c.w,d=c.X,h=c.i,m,f;return c.w=p=p+1640531527|0,f=d[h+34&127],m=d[h=h+1&127],f^=f<<13,m^=m<<17,f^=f>>>15,m^=m>>>12,f=d[h]=f^m,c.i=h,f+(p^p>>>16)|0};function u(p,d){var h,m,f,g,y,b=[],x=128;for(d===(d|0)?(m=d,d=null):(d=d+"\0",m=0,x=Math.max(x,d.length)),f=0,g=-32;g>>15,m^=m<<4,m^=m>>>13,g>=0&&(y=y+1640531527|0,h=b[g&127]^=m+y,f=h==0?f+1:0);for(f>=128&&(b[(d&&d.length||0)&127]=-1),f=127,g=4*128;g>0;--g)m=b[f+34&127],h=b[f=f+1&127],m^=m<<13,h^=h<<17,m^=m>>>15,h^=h>>>12,b[f]=m^h;p.w=y,p.X=b,p.i=f}u(c,l)}function i(l,c){return c.i=l.i,c.w=l.w,c.X=l.X.slice(),c}function o(l,c){l==null&&(l=+new Date);var u=new s(l),p=c&&c.state,d=function(){return(u.next()>>>0)/4294967296};return d.double=function(){do var h=u.next()>>>11,m=(u.next()>>>0)/4294967296,f=(h+m)/(1<<21);while(f===0);return f},d.int32=u.next,d.quick=d,p&&(p.X&&i(p,u),d.state=function(){return i(u,{})}),d}a&&a.exports?a.exports=o:r&&r.amd?r(function(){return o}):this.xor4096=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),N_=pn((e,t)=>{(function(n,a,r){function s(l){var c=this,u="";c.next=function(){var d=c.b,h=c.c,m=c.d,f=c.a;return d=d<<25^d>>>7^h,h=h-m|0,m=m<<24^m>>>8^f,f=f-d|0,c.b=d=d<<20^d>>>12^h,c.c=h=h-m|0,c.d=m<<16^h>>>16^f,c.a=f-d|0},c.a=0,c.b=0,c.c=2654435769|0,c.d=1367130551,l===Math.floor(l)?(c.a=l/4294967296|0,c.b=l|0):u+=l;for(var p=0;p>>0)/4294967296};return d.double=function(){do var h=u.next()>>>11,m=(u.next()>>>0)/4294967296,f=(h+m)/(1<<21);while(f===0);return f},d.int32=u.next,d.quick=d,p&&(typeof p=="object"&&i(p,u),d.state=function(){return i(u,{})}),d}a&&a.exports?a.exports=o:r&&r.amd?r(function(){return o}):this.tychei=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),T_=pn(()=>{}),S_=pn((e,t)=>{(function(n,a){var r=this,s=256,i=6,o=52,l="random",c=a.pow(s,i),u=a.pow(2,o),p=u*2,d=s-1,h;function m(N,T,E){var A=[];T=T==!0?{entropy:!0}:T||{};var $=b(y(T.entropy?[N,v(n)]:N==null?x():N,3),A),O=new f(A),V=function(){for(var W=O.g(i),H=c,X=0;W=p;)W/=2,H/=2,X>>>=1;return(W+X)/H};return V.int32=function(){return O.g(4)|0},V.quick=function(){return O.g(4)/4294967296},V.double=V,b(v(O.S),n),(T.pass||E||function(W,H,X,q){return q&&(q.S&&g(q,O),W.state=function(){return g(O,{})}),X?(a[l]=W,H):W})(V,$,"global"in T?T.global:this==a,T.state)}a["seed"+l]=m;function f(N){var T,E=N.length,A=this,$=0,O=A.i=A.j=0,V=A.S=[];for(E||(N=[E++]);${var n=x_(),a=v_(),r=w_(),s=k_(),i=I_(),o=N_(),l=S_();l.alea=n,l.xor128=a,l.xorwow=r,l.xorshift7=s,l.xor4096=i,l.tychei=o,t.exports=l}),C_=pn(()=>{}),tc=pn(()=>{}),E_=pn(()=>{}),__=pn(()=>{}),F_=pn((e,t)=>{var n=function(){var a=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(a=a||__filename),function(r){r=r||{};function s(){return ae.buffer!=Nt&&wa(ae.buffer),nn}function i(){return ae.buffer!=Nt&&wa(ae.buffer),wn}function o(){return ae.buffer!=Nt&&wa(ae.buffer),cn}function l(){return ae.buffer!=Nt&&wa(ae.buffer),Hn}function c(){return ae.buffer!=Nt&&wa(ae.buffer),cr}var u=typeof r!="undefined"?r:{},p=void 0,d={},h;for(h in u)u.hasOwnProperty(h)&&(d[h]=u[h]);var m=[],f="./this.program",g=function(w,S){throw S},y=!1,b=!1,x=!1,v=!1;y=typeof window=="object",b=typeof importScripts=="function",x=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",v=!y&&!x&&!b;var N=u.ENVIRONMENT_IS_PTHREAD||!1;N&&(Nt=u.buffer,Ia=u.DYNAMIC_BASE,vs=u.DYNAMICTOP_PTR);var T="";function E(w){return u.locateFile?u.locateFile(w,T):T+w}var A,$,O,V,W,H;if(x){b?T=tc().dirname(T)+"/":T=__dirname+"/",A=function(w,S){return W||(W=require("fs")),H||(H=tc()),w=H.normalize(w),W.readFileSync(w,S?null:"utf8")},O=function(w){var S=A(w,!0);return S.buffer||(S=new Uint8Array(S)),Te(S.buffer),S},process.argv.length>1&&(f=process.argv[1].replace(/\\/g,"/")),m=process.argv.slice(2),process.on("uncaughtException",function(w){if(!(w instanceof Pw))throw w}),process.on("unhandledRejection",hr),g=function(w){process.exit(w)},u.inspect=function(){return"[Emscripten Module object]"};var X;try{X=E_()}catch(w){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),w}Worker=X.Worker}else v?(typeof read!="undefined"&&(A=function(w){return read(w)}),O=function(w){var S;return typeof readbuffer=="function"?new Uint8Array(readbuffer(w)):(S=read(w,"binary"),Te(typeof S=="object"),S)},typeof scriptArgs!="undefined"?m=scriptArgs:typeof arguments!="undefined"&&(m=arguments),typeof quit=="function"&&(g=function(w){quit(w)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(y||b)&&(b?T=self.location.href:document.currentScript&&(T=document.currentScript.src),p&&(T=p),T.indexOf("blob:")!==0?T=T.substr(0,T.lastIndexOf("/")+1):T="",x?(A=function(w,S){return W||(W=require("fs")),H||(H=tc()),w=H.normalize(w),W.readFileSync(w,S?null:"utf8")},O=function(w){var S=A(w,!0);return S.buffer||(S=new Uint8Array(S)),Te(S.buffer),S}):(A=function(w){var S=new XMLHttpRequest;return S.open("GET",w,!1),S.send(null),S.responseText},b&&(O=function(w){var S=new XMLHttpRequest;return S.open("GET",w,!1),S.responseType="arraybuffer",S.send(null),new Uint8Array(S.response)}),$=function(w,S,M){var G=new XMLHttpRequest;G.open("GET",w,!0),G.responseType="arraybuffer",G.onload=function(){if(G.status==200||G.status==0&&G.response){S(G.response);return}M()},G.onerror=M,G.send(null)}),V=function(w){document.title=w});x&&typeof performance=="undefined"&&(performance=__().performance);var q=u.print||console.log.bind(console),K=u.printErr||console.warn.bind(console);for(h in d)d.hasOwnProperty(h)&&(u[h]=d[h]);d=null,u.arguments&&(m=u.arguments),u.thisProgram&&(f=u.thisProgram),u.quit&&(g=u.quit);var J=Atomics.load,te=Atomics.store,Q=Atomics.compareExchange,ie;u.wasmBinary&&(ie=u.wasmBinary);var re;u.noExitRuntime&&(re=u.noExitRuntime),typeof WebAssembly!="object"&&K("no native wasm support detected");var ae,oe=new WebAssembly.Table({initial:169,maximum:169+0,element:"anyfunc"}),he,ce=0,ge=0,be=!1,Ie=0;function Te(w,S){w||hr("Assertion failed: "+S)}function Ee(w){var S=u["_"+w];return Te(S,"Cannot call unknown function "+w+", make sure it is exported"),S}function Me(w,S,M,G,me){var ue={string:function(Kn){var Br=0;if(Kn!=null&&Kn!==0){var ec=(Kn.length<<2)+1;Br=vo(ec),Ge(Kn,Br,ec)}return Br},array:function(Kn){var Br=vo(Kn.length);return ft(Kn,Br),Br}};function le(Kn){return S==="string"?Ve(Kn):S==="boolean"?Boolean(Kn):Kn}var we=Ee(w),Qe=[],Lt=0;if(G)for(var ln=0;ln=G);){var ue=w[S++];if(!ue)return me;if(!(ue&128)){me+=String.fromCharCode(ue);continue}var le=w[S++]&63;if((ue&224)==192){me+=String.fromCharCode((ue&31)<<6|le);continue}var we=w[S++]&63;if((ue&240)==224?ue=(ue&15)<<12|le<<6|we:ue=(ue&7)<<18|le<<12|we<<6|w[S++]&63,ue<65536)me+=String.fromCharCode(ue);else{var Qe=ue-65536;me+=String.fromCharCode(55296|Qe>>10,56320|Qe&1023)}}return me}function Ve(w,S){return w?nt(i(),w,S):""}function ut(w,S,M,G){if(!(G>0))return 0;for(var me=M,ue=M+G-1,le=0;le=55296&&we<=57343){var Qe=w.charCodeAt(++le);we=65536+((we&1023)<<10)|Qe&1023}if(we<=127){if(M>=ue)break;S[M++]=we}else if(we<=2047){if(M+1>=ue)break;S[M++]=192|we>>6,S[M++]=128|we&63}else if(we<=65535){if(M+2>=ue)break;S[M++]=224|we>>12,S[M++]=128|we>>6&63,S[M++]=128|we&63}else{if(M+3>=ue)break;S[M++]=240|we>>18,S[M++]=128|we>>12&63,S[M++]=128|we>>6&63,S[M++]=128|we&63}}return S[M]=0,M-me}function Ge(w,S,M){return ut(w,i(),S,M)}function ct(w){for(var S=0,M=0;M=55296&&G<=57343&&(G=65536+((G&1023)<<10)|w.charCodeAt(++M)&1023),G<=127?++S:G<=2047?S+=2:G<=65535?S+=3:S+=4}return S}function ft(w,S){s().set(w,S)}var Fn=65536;function _t(w,S){return w%S>0&&(w+=S-w%S),w}var Nt,nn,wn,ia,An,cn,Hn,ur,cr;function wa(w){Nt=w,u.HEAP8=nn=new Int8Array(w),u.HEAP16=ia=new Int16Array(w),u.HEAP32=cn=new Int32Array(w),u.HEAPU8=wn=new Uint8Array(w),u.HEAPU16=An=new Uint16Array(w),u.HEAPU32=Hn=new Uint32Array(w),u.HEAPF32=ur=new Float32Array(w),u.HEAPF64=cr=new Float64Array(w)}var po=5256464,ka=po,Wa=13584,Ia=5256464,vs=12656,Wp=u.INITIAL_MEMORY||16777216;if(N)ae=u.wasmMemory,Nt=u.buffer;else if(u.wasmMemory)ae=u.wasmMemory;else if(ae=new WebAssembly.Memory({initial:Wp/Fn,maximum:2147483648/Fn,shared:!0}),!(ae.buffer instanceof SharedArrayBuffer))throw K("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"),x&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"),Error("bad memory");ae&&(Nt=ae.buffer),Wp=Nt.byteLength,wa(Nt),N||(o()[vs>>2]=Ia);function pr(w){for(;w.length>0;){var S=w.shift();if(typeof S=="function"){S(u);continue}var M=S.func;typeof M=="number"?S.arg===void 0?u.dynCall_v(M):u.dynCall_vi(M,S.arg):M(S.arg===void 0?null:S.arg)}}var Bu=[],Vp=[],Up=[],Gp=[],Wu=[],jn=!1;N&&(jn=!0);function Hp(){if(!N){if(u.preRun)for(typeof u.preRun=="function"&&(u.preRun=[u.preRun]);u.preRun.length;)ws(u.preRun.shift());pr(Bu)}}function $f(){jn=!0,pr(Vp)}function Df(){N||pr(Up)}function Mf(){if(!N){if(u.postRun)for(typeof u.postRun=="function"&&(u.postRun=[u.postRun]);u.postRun.length;)ho(u.postRun.shift());pr(Wu)}}function ws(w){Bu.unshift(w)}function ho(w){Wu.unshift(w)}var Rf=Math.ceil,Pf=Math.floor,dr=0,Vu=null,ks=null;function Of(w){Te(!N,"addRunDependency cannot be used in a pthread worker"),dr++,u.monitorRunDependencies&&u.monitorRunDependencies(dr)}function jp(w){if(dr--,u.monitorRunDependencies&&u.monitorRunDependencies(dr),dr==0&&(Vu!==null&&(clearInterval(Vu),Vu=null),ks)){var S=ks;ks=null,S()}}u.preloadedImages={},u.preloadedAudios={};function hr(w){throw u.onAbort&&u.onAbort(w),N&&console.error("Pthread aborting at "+new Error().stack),w+="",q(w),K(w),be=!0,Ie=1,w="abort("+w+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(w)}function qp(w,S){return String.prototype.startsWith?w.startsWith(S):w.indexOf(S)===0}var Lf="data:application/octet-stream;base64,";function Kp(w){return qp(w,Lf)}var zf="file://";function Xp(w){return qp(w,zf)}var oa="tfjs-backend-wasm-threaded-simd.wasm";Kp(oa)||(oa=E(oa));function Yp(){try{if(ie)return new Uint8Array(ie);if(O)return O(oa);throw"both async and sync fetching of the wasm failed"}catch(w){hr(w)}}function Bf(){return!ie&&(y||b)&&typeof fetch=="function"&&!Xp(oa)?fetch(oa,{credentials:"same-origin"}).then(function(w){if(!w.ok)throw"failed to load wasm binary file at '"+oa+"'";return w.arrayBuffer()}).catch(function(){return Yp()}):new Promise(function(w,S){w(Yp())})}function Wf(){var w={a:od};function S(le,we){var Qe=le.exports;if(u.asm=Qe,he=we,!N){var Lt=ye.unusedWorkers.length;ye.unusedWorkers.forEach(function(ln){ye.loadWasmModuleToWorker(ln,function(){--Lt||jp("wasm-instantiate")})})}}N||Of("wasm-instantiate");function M(le){S(le.instance,le.module)}function G(le){return Bf().then(function(we){return WebAssembly.instantiate(we,w)}).then(le,function(we){K("failed to asynchronously prepare wasm: "+we),hr(we)})}function me(){if(!ie&&typeof WebAssembly.instantiateStreaming=="function"&&!Kp(oa)&&!Xp(oa)&&typeof fetch=="function")fetch(oa,{credentials:"same-origin"}).then(function(le){var we=WebAssembly.instantiateStreaming(le,w);return we.then(M,function(Qe){K("wasm streaming compile failed: "+Qe),K("falling back to ArrayBuffer instantiation"),G(M)})});else return G(M)}if(u.instantiateWasm)try{var ue=u.instantiateWasm(w,S);return ue}catch(le){return K("Module.instantiateWasm callback failed with error: "+le),!1}return me(),{}}var Vf={};function Uf(){ye.initRuntime()}N||Vp.push({func:function(){Hu()}});var Jp=0,Zp=0,Qp=0;function mo(w,S,M){w=w|0,S=S|0,M=M|0,Jp=w,Qp=S,Zp=M}u.__register_pthread_ptr=mo;var Uu={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},fo=13568;function go(w,S){if(w<=0||w>s().length||w&!0||S<0)return-28;if(S==0)return 0;S>=2147483647&&(S=Infinity);var M=Atomics.load(o(),fo>>2),G=0;if(M==w){var me=Atomics.compareExchange(o(),fo>>2,M,0);if(me==M&&(--S,G=1,S<=0))return 1}var ue=Atomics.notify(o(),w>>2,S);if(ue>=0)return ue+G;throw"Atomics.notify returned an unexpected value "+ue}u._emscripten_futex_wake=go;function Gf(w){if(N)throw"Internal Error! _kill_thread() can only ever be called from main application thread!";if(!w)throw"Internal Error! Null pthread_ptr in _kill_thread!";o()[w+12>>2]=0;var S=ye.pthreads[w];S.worker.terminate(),ye.freeThreadData(S),ye.runningWorkers.splice(ye.runningWorkers.indexOf(S.worker),1),S.worker.pthread=void 0}function Hf(w){if(N)throw"Internal Error! _cancel_thread() can only ever be called from main application thread!";if(!w)throw"Internal Error! Null pthread_ptr in _cancel_thread!";var S=ye.pthreads[w];S.worker.postMessage({cmd:"cancel"})}function jf(w){if(N)throw"Internal Error! _cleanup_thread() can only ever be called from main application thread!";if(!w)throw"Internal Error! Null pthread_ptr in _cleanup_thread!";o()[w+12>>2]=0;var S=ye.pthreads[w];if(S){var M=S.worker;ye.returnWorkerToPool(M)}}var ye={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){mo(ye.mainThreadBlock,!b,1),$w(ye.mainThreadBlock)},initMainThreadBlock:function(){for(var w=8,S=0;S>2]=ye.mainThreadBlock;var M=ye.mainThreadBlock+156;o()[M>>2]=M;for(var G=13056,S=0;S<128;++S)l()[G/4+S]=0;Atomics.store(l(),ye.mainThreadBlock+104>>2,G),Atomics.store(l(),ye.mainThreadBlock+40>>2,ye.mainThreadBlock),Atomics.store(l(),ye.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(ye.exitHandlers!==null){for(;ye.exitHandlers.length>0;)ye.exitHandlers.pop()();ye.exitHandlers=null}N&&ce&&Aw()},threadExit:function(w){var S=Va();S&&(Atomics.store(l(),S+4>>2,w),Atomics.store(l(),S+0>>2,1),Atomics.store(l(),S+60>>2,1),Atomics.store(l(),S+64>>2,0),ye.runExitHandlers(),go(S+0,2147483647),mo(0,0,0),ce=0,N&&postMessage({cmd:"exit"}))},threadCancel:function(){ye.runExitHandlers(),Atomics.store(l(),ce+4>>2,-1),Atomics.store(l(),ce+0>>2,1),go(ce+0,2147483647),ce=ge=0,mo(0,0,0),postMessage({cmd:"cancelDone"})},terminateAllThreads:function(){for(var w in ye.pthreads){var S=ye.pthreads[w];S&&S.worker&&ye.returnWorkerToPool(S.worker)}ye.pthreads={};for(var M=0;M>2];o()[w.threadInfoStruct+104>>2]=0,Yu(S),Yu(w.threadInfoStruct)}w.threadInfoStruct=0,w.allocatedOwnStack&&w.stackBase&&Yu(w.stackBase),w.stackBase=0,w.worker&&(w.worker.pthread=null)}},returnWorkerToPool:function(w){delete ye.pthreads[w.pthread.thread],ye.unusedWorkers.push(w),ye.runningWorkers.splice(ye.runningWorkers.indexOf(w),1),ye.freeThreadData(w.pthread),w.pthread=void 0},receiveObjectTransfer:function(w){},loadWasmModuleToWorker:function(w,S){w.onmessage=function(M){var G=M.data,me=G.cmd;if(w.pthread&&(ye.currentProxiedOperationCallerThread=w.pthread.threadInfoStruct),G.targetThread&&G.targetThread!=Va()){var ue=ye.pthreads[G.targetThread];ue?ue.worker.postMessage(M.data,G.transferList):console.error('Internal error! Worker sent a message "'+me+'" to target pthread '+G.targetThread+", but that thread no longer exists!"),ye.currentProxiedOperationCallerThread=void 0;return}if(me==="processQueuedMainThreadWork")Mg();else if(me==="spawnThread")sd(M.data);else if(me==="cleanupThread")jf(G.thread);else if(me==="killThread")Gf(G.thread);else if(me==="cancelThread")Hf(G.thread);else if(me==="loaded")w.loaded=!0,S&&S(w),w.runPthread&&(w.runPthread(),delete w.runPthread);else if(me==="print")q("Thread "+G.threadId+": "+G.text);else if(me==="printErr")K("Thread "+G.threadId+": "+G.text);else if(me==="alert")alert("Thread "+G.threadId+": "+G.text);else if(me==="exit"){var le=w.pthread&&Atomics.load(l(),w.pthread.thread+68>>2);le&&ye.returnWorkerToPool(w)}else me==="cancelDone"?ye.returnWorkerToPool(w):me==="objectTransfer"?ye.receiveObjectTransfer(M.data):M.data.target==="setimmediate"?w.postMessage(M.data):K("worker sent an unknown command "+me);ye.currentProxiedOperationCallerThread=void 0},w.onerror=function(M){K("pthread sent an error! "+M.filename+":"+M.lineno+": "+M.message)},x&&(w.on("message",function(M){w.onmessage({data:M})}),w.on("error",function(M){w.onerror(M)}),w.on("exit",function(M){console.log("worker exited - TODO: update the worker queue?")})),w.postMessage({cmd:"load",urlOrBlob:u.mainScriptUrlOrBlob||p,wasmMemory:ae,wasmModule:he,DYNAMIC_BASE:Ia,DYNAMICTOP_PTR:vs})},allocateUnusedWorker:function(){var w=E("tfjs-backend-wasm-threaded-simd.worker.js");ye.unusedWorkers.push(new Worker(w))},getNewWorker:function(){return ye.unusedWorkers.length==0&&(ye.allocateUnusedWorker(),ye.loadWasmModuleToWorker(ye.unusedWorkers[0])),ye.unusedWorkers.length>0?ye.unusedWorkers.pop():null},busySpinWait:function(w){for(var S=performance.now()+w;performance.now()>2]=w,w}function Zf(w,S){if(N)return Or(1,1,w,S);Gp.unshift({func:w,arg:S})}function Qf(w,S){if(w==S)postMessage({cmd:"processQueuedMainThreadWork"});else if(N)postMessage({targetThread:w,cmd:"processThreadQueue"});else{var M=ye.pthreads[w],G=M&&M.worker;if(!G)return;G.postMessage({cmd:"processThreadQueue"})}return 1}function eg(){hr()}function tg(w,S){w=w|0,S=S|0}function ng(w,S,M){if(w<=0||w>s().length||w&!0)return-28;if(b){var G=Atomics.wait(o(),w>>2,S,M);if(G==="timed-out")return-73;if(G==="not-equal")return-6;if(G==="ok")return 0;throw"Atomics.wait returned an unexpected value "+G}else{var me=Atomics.load(o(),w>>2);if(S!=me)return-6;var ue=performance.now(),le=ue+M;Atomics.store(o(),fo>>2,w);for(var we=w;w==we;){if(ue=performance.now(),ue>le)return-73;Mg(),w=Atomics.load(o(),fo>>2)}return 0}}function ag(){return Qp|0}function rg(){return Zp|0}function sg(w,S,M){i().copyWithin(w,S,S+M)}function ig(){return navigator.hardwareConcurrency}function Or(w,S){for(var M=arguments.length-2,G=Ju(),me=vo(M*8),ue=me>>3,le=0;le>3]),S+=8):(S=S+3&~3,M.push(o()[S>>2]),S+=4);return M}function og(w,S,M){Ns.length=S;for(var G=M>>3,me=0;me>>16),wa(ae.buffer),1}catch(S){}}function cg(w){w=w>>>0;var S=lg();if(w<=S)return!1;var M=65536,G=2147483648;if(w>G)return!1;for(var me=16777216,ue=1;ue<=4;ue*=2){var le=S*(1+.2/ue);le=Math.min(le,w+100663296);var we=Math.min(G,_t(Math.max(me,w,le),M)),Qe=ug(we);if(Qe)return!0}return!1}var Pe={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:!1,removeAllEventListeners:function(){for(var w=Pe.eventHandlers.length-1;w>=0;--w)Pe._removeHandler(w);Pe.eventHandlers=[],Pe.deferredCalls=[]},registerRemoveEventListeners:function(){Pe.removeEventListenersRegistered||(Gp.push(Pe.removeAllEventListeners),Pe.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(w,S,M){function G(le,we){if(le.length!=we.length)return!1;for(var Qe in le)if(le[Qe]!=we[Qe])return!1;return!0}for(var me in Pe.deferredCalls){var ue=Pe.deferredCalls[me];if(ue.targetFunction==w&&G(ue.argsList,M))return}Pe.deferredCalls.push({targetFunction:w,precedence:S,argsList:M}),Pe.deferredCalls.sort(function(le,we){return le.precedence>2]=M,o()[le+4>>2]=G,o()[le+8>>2]=me,Rg(w,637534208,S,G,le),wo(ue)},getTargetThreadForEventCallback:function(w){switch(w){case 1:return 0;case 2:return ye.currentProxiedOperationCallerThread;default:return w}},getNodeNameForTarget:function(w){return w?w==window?"#window":w==screen?"#screen":w&&w.nodeName?w.nodeName:"":""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function pg(w){var S=ct(w)+1,M=Xu(S);return Ge(w,M,S),M}function dg(w,S,M,G){var me=Ju(),ue=vo(12),le=0;S&&(le=pg(S)),o()[ue>>2]=le,o()[ue+4>>2]=M,o()[ue+8>>2]=G,Rg(w,657457152,0,le,ue),wo(me)}function hg(w,S,M,G){S=S?Ve(S):"",dg(w,S,M,G)}function mg(w){return w>2?Ve(w):w}var fg=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function gg(w){w=mg(w);var S=fg[w]||(typeof document!="undefined"?document.querySelector(w):void 0);return S}function Gu(w){return gg(w)}function ed(w,S,M){var G=Gu(w);if(!G)return-4;if(G.canvasSharedPtr&&(o()[G.canvasSharedPtr>>2]=S,o()[G.canvasSharedPtr+4>>2]=M),G.offscreenCanvas||!G.controlTransferredOffscreen){G.offscreenCanvas&&(G=G.offscreenCanvas);var me=!1;if(G.GLctxObject&&G.GLctxObject.GLctx){var ue=G.GLctxObject.GLctx.getParameter(2978);me=ue[0]===0&&ue[1]===0&&ue[2]===G.width&&ue[3]===G.height}G.width=S,G.height=M,me&&G.GLctxObject.GLctx.viewport(0,0,S,M)}else if(G.canvasSharedPtr){var le=o()[G.canvasSharedPtr+8>>2];return hg(le,w,S,M),1}else return-4;return 0}function td(w,S,M){return N?Or(2,1,w,S,M):ed(w,S,M)}function yg(w,S,M){var G=Gu(w);return G?ed(w,S,M):td(w,S,M)}function bg(w){w=w|0}function xg(w,S){w=w|0,S=S|0}function vg(w){var S=w.getExtension("ANGLE_instanced_arrays");if(S)return w.vertexAttribDivisor=function(M,G){S.vertexAttribDivisorANGLE(M,G)},w.drawArraysInstanced=function(M,G,me,ue){S.drawArraysInstancedANGLE(M,G,me,ue)},w.drawElementsInstanced=function(M,G,me,ue,le){S.drawElementsInstancedANGLE(M,G,me,ue,le)},1}function wg(w){var S=w.getExtension("OES_vertex_array_object");if(S)return w.createVertexArray=function(){return S.createVertexArrayOES()},w.deleteVertexArray=function(M){S.deleteVertexArrayOES(M)},w.bindVertexArray=function(M){S.bindVertexArrayOES(M)},w.isVertexArray=function(M){return S.isVertexArrayOES(M)},1}function kg(w){var S=w.getExtension("WEBGL_draw_buffers");if(S)return w.drawBuffers=function(M,G){S.drawBuffersWEBGL(M,G)},1}var Be={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){for(var w=new Float32Array(Be.MINI_TEMP_BUFFER_SIZE),S=0;S>2]:-1;me+=Ve(o()[M+ue*4>>2],le<0?void 0:le)}return me},createContext:function(w,S){var M=w.getContext("webgl",S);if(!M)return 0;var G=Be.registerContext(M,S);return G},registerContext:function(w,S){var M=Xu(8);o()[M+4>>2]=Va();var G={handle:M,attributes:S,version:S.majorVersion,GLctx:w};return w.canvas&&(w.canvas.GLctxObject=G),Be.contexts[M]=G,(typeof S.enableExtensionsByDefault=="undefined"||S.enableExtensionsByDefault)&&Be.initExtensions(G),M},makeContextCurrent:function(w){return Be.currentContext=Be.contexts[w],u.ctx=Lr=Be.currentContext&&Be.currentContext.GLctx,!(w&&!Lr)},getContext:function(w){return Be.contexts[w]},deleteContext:function(w){Be.currentContext===Be.contexts[w]&&(Be.currentContext=null),typeof Pe=="object"&&Pe.removeAllHandlersOnTarget(Be.contexts[w].GLctx.canvas),Be.contexts[w]&&Be.contexts[w].GLctx.canvas&&(Be.contexts[w].GLctx.canvas.GLctxObject=void 0),Yu(Be.contexts[w].handle),Be.contexts[w]=null},initExtensions:function(w){if(w||(w=Be.currentContext),!w.initExtensionsDone){w.initExtensionsDone=!0;var S=w.GLctx;vg(S),wg(S),kg(S),S.disjointTimerQueryExt=S.getExtension("EXT_disjoint_timer_query");var M=["OES_texture_float","OES_texture_half_float","OES_standard_derivatives","OES_vertex_array_object","WEBGL_compressed_texture_s3tc","WEBGL_depth_texture","OES_element_index_uint","EXT_texture_filter_anisotropic","EXT_frag_depth","WEBGL_draw_buffers","ANGLE_instanced_arrays","OES_texture_float_linear","OES_texture_half_float_linear","EXT_blend_minmax","EXT_shader_texture_lod","EXT_texture_norm16","WEBGL_compressed_texture_pvrtc","EXT_color_buffer_half_float","WEBGL_color_buffer_float","EXT_sRGB","WEBGL_compressed_texture_etc1","EXT_disjoint_timer_query","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_astc","EXT_color_buffer_float","WEBGL_compressed_texture_s3tc_srgb","EXT_disjoint_timer_query_webgl2","WEBKIT_WEBGL_compressed_texture_pvrtc"],G=S.getSupportedExtensions()||[];G.forEach(function(me){M.indexOf(me)!=-1&&S.getExtension(me)})}},populateUniformTable:function(w){for(var S=Be.programs[w],M=Be.programInfos[w]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1},G=M.uniforms,me=Lr.getProgramParameter(S,35718),ue=0;ue>2;M.alpha=!!o()[G+(0>>2)],M.depth=!!o()[G+(4>>2)],M.stencil=!!o()[G+(8>>2)],M.antialias=!!o()[G+(12>>2)],M.premultipliedAlpha=!!o()[G+(16>>2)],M.preserveDrawingBuffer=!!o()[G+(20>>2)];var me=o()[G+(24>>2)];M.powerPreference=Ig[me],M.failIfMajorPerformanceCaveat=!!o()[G+(28>>2)],M.majorVersion=o()[G+(32>>2)],M.minorVersion=o()[G+(36>>2)],M.enableExtensionsByDefault=o()[G+(40>>2)],M.explicitSwapControl=o()[G+(44>>2)],M.proxyContextToMainThread=o()[G+(48>>2)],M.renderViaOffscreenBackBuffer=o()[G+(52>>2)];var ue=Gu(w);if(!ue)return-4;if(M.explicitSwapControl)return-1;var le=Be.createContext(ue,M);return le}function Tg(w,S){return Ng(w,S)}var Ts={splitPath:function(w){var S=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return S.exec(w).slice(1)},normalizeArray:function(w,S){for(var M=0,G=w.length-1;G>=0;G--){var me=w[G];me==="."?w.splice(G,1):me===".."?(w.splice(G,1),M++):M&&(w.splice(G,1),M--)}if(S)for(;M;M--)w.unshift("..");return w},normalize:function(w){var S=w.charAt(0)==="/",M=w.substr(-1)==="/";return w=Ts.normalizeArray(w.split("/").filter(function(G){return!!G}),!S).join("/"),!w&&!S&&(w="."),w&&M&&(w+="/"),(S?"/":"")+w},dirname:function(w){var S=Ts.splitPath(w),M=S[0],G=S[1];return!M&&!G?".":(G&&(G=G.substr(0,G.length-1)),M+G)},basename:function(w){if(w==="/")return"/";var S=w.lastIndexOf("/");return S===-1?w:w.substr(S+1)},extname:function(w){return Ts.splitPath(w)[3]},join:function(){var w=Array.prototype.slice.call(arguments,0);return Ts.normalize(w.join("/"))},join2:function(w,S){return Ts.normalize(w+"/"+S)}},bo={mappings:{},buffers:[null,[],[]],printChar:function(w,S){var M=bo.buffers[w];S===0||S===10?((w===1?q:K)(nt(M,0)),M.length=0):M.push(S)},varargs:void 0,get:function(){bo.varargs+=4;var w=o()[bo.varargs-4>>2];return w},getStr:function(w){var S=Ve(w);return S},get64:function(w,S){return w}};function nd(w){return N?Or(3,1,w):0}function ad(w,S,M,G,me){if(N)return Or(4,1,w,S,M,G,me)}function rd(w,S,M,G){if(N)return Or(5,1,w,S,M,G);for(var me=0,ue=0;ue>2],we=o()[S+(ue*8+4)>>2],Qe=0;Qe>2]=me,0}function Sg(w){var S=ye.exitHandlers.pop();w&&S()}function Cg(w,S){ye.exitHandlers===null&&(ye.exitHandlers=[]),ye.exitHandlers.push(function(){Rw(w,S)})}function sd(w){if(N)throw"Internal Error! _spawn_thread() can only ever be called from main application thread!";var S=ye.getNewWorker();if(S.pthread!==void 0)throw"Internal error!";if(!w.pthread_ptr)throw"Internal error, no pthread ptr!";ye.runningWorkers.push(S);for(var M=Xu(128*4),G=0;G<128;++G)o()[M+G*4>>2]=0;var me=w.stackBase+w.stackSize,ue=ye.pthreads[w.pthread_ptr]={worker:S,stackBase:w.stackBase,stackSize:w.stackSize,allocatedOwnStack:w.allocatedOwnStack,thread:w.pthread_ptr,threadInfoStruct:w.pthread_ptr},le=ue.threadInfoStruct>>2;Atomics.store(l(),le+(0>>2),0),Atomics.store(l(),le+(4>>2),0),Atomics.store(l(),le+(8>>2),0),Atomics.store(l(),le+(68>>2),w.detached),Atomics.store(l(),le+(104>>2),M),Atomics.store(l(),le+(48>>2),0),Atomics.store(l(),le+(40>>2),ue.threadInfoStruct),Atomics.store(l(),le+(44>>2),42),Atomics.store(l(),le+(108>>2),w.stackSize),Atomics.store(l(),le+(84>>2),w.stackSize),Atomics.store(l(),le+(80>>2),me),Atomics.store(l(),le+(108+8>>2),me),Atomics.store(l(),le+(108+12>>2),w.detached),Atomics.store(l(),le+(108+20>>2),w.schedPolicy),Atomics.store(l(),le+(108+24>>2),w.schedPrio);var we=Ew(),Qe=we+40;Atomics.store(l(),le+(176>>2),Qe),S.pthread=ue;var Lt={cmd:"run",start_routine:w.startRoutine,arg:w.arg,threadInfoStruct:w.pthread_ptr,selfThreadId:w.pthread_ptr,parentThreadId:w.parent_pthread_ptr,stackBase:w.stackBase,stackSize:w.stackSize};S.runPthread=function(){Lt.time=performance.now(),S.postMessage(Lt,w.transferList)},S.loaded&&(S.runPthread(),delete S.runPthread)}function Eg(w,S,M){if(!S&&!M)return Uu.EINVAL;if(!w)return K("pthread_getschedparam called with a null thread pointer!"),Uu.ESRCH;var G=o()[w+12>>2];if(G!==w)return K("pthread_getschedparam attempted on thread "+w+", which does not point to a valid thread, or does not exist anymore!"),Uu.ESRCH;var me=Atomics.load(l(),w+108+20>>2),ue=Atomics.load(l(),w+108+24>>2);return S&&(o()[S>>2]=me),M&&(o()[M>>2]=ue),0}function Va(){return Jp|0}u._pthread_self=Va;function _g(w,S,M,G){if(typeof SharedArrayBuffer=="undefined")return K("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;if(!w)return K("pthread_create called with a null thread pointer!"),28;var me=[],ue=0;if(N&&(me.length===0||ue))return Dw(687865856,w,S,M,G);if(ue)return ue;var le=0,we=0,Qe=0,Lt=0,ln=0;if(S){le=o()[S>>2],le+=81920,we=o()[S+8>>2],Qe=o()[S+12>>2]!==0;var ko=o()[S+16>>2]===0;if(ko){var Qu=o()[S+20>>2],Kn=o()[S+24>>2],Br=ye.currentProxiedOperationCallerThread?ye.currentProxiedOperationCallerThread:Va();Eg(Br,S+20,S+24),Lt=o()[S+20>>2],ln=o()[S+24>>2],o()[S+20>>2]=Qu,o()[S+24>>2]=Kn}else Lt=o()[S+20>>2],ln=o()[S+24>>2]}else le=2097152;var ec=we==0;ec?we=Fw(16,le):(we-=le,Te(we>0));for(var Io=Xu(232),Og=0;Og<232>>2;++Og)l()[(Io>>2)+Og]=0;o()[w>>2]=Io,o()[Io+12>>2]=Io;var Ow=Io+156;o()[Ow>>2]=Ow;var Lg={stackBase:we,stackSize:le,allocatedOwnStack:ec,schedPolicy:Lt,schedPrio:ln,detached:Qe,startRoutine:M,pthread_ptr:Io,parent_pthread_ptr:Va(),arg:G,transferList:me};return N?(Lg.cmd="spawnThread",postMessage(Lg,me)):sd(Lg),0}function Fg(w){return w=+w,w>=0?+Pf(w+.5):+Rf(w-.5)}function id(w){if(N)return Or(6,1,w);switch(w){case 30:return 16384;case 85:var S=2147483648;return S/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return typeof navigator=="object"&&navigator.hardwareConcurrency||1}return Jf(28),-1}N?ye.initWorker():ye.initMainThreadBlock();var Lr;Be.init();var Ag=[null,Zf,td,nd,ad,rd,id],od={e:Xf,r:Yf,w:Qf,a:eg,l:tg,d:ng,c:go,h:Is,g:ag,x:rg,q:sg,B:ig,t:og,A:cg,u:yg,k:bg,s:xg,v:Tg,m:nd,o:ad,i:rd,p:Uf,memory:ae||u.wasmMemory,y:Sg,z:Cg,j:_g,b:Va,f:Fg,n:id,table:oe},xo=Wf();u.asm=xo;var Hu=u.___wasm_call_ctors=function(){return(Hu=u.___wasm_call_ctors=u.asm.C).apply(null,arguments)},Ss=u._init=function(){return(Ss=u._init=u.asm.D).apply(null,arguments)},ju=u._register_tensor=function(){return(ju=u._register_tensor=u.asm.E).apply(null,arguments)},$g=u._dispose_data=function(){return($g=u._dispose_data=u.asm.F).apply(null,arguments)},Dg=u._dispose=function(){return(Dg=u._dispose=u.asm.G).apply(null,arguments)},qu=u._Abs=function(){return(qu=u._Abs=u.asm.H).apply(null,arguments)},ld=u._Add=function(){return(ld=u._Add=u.asm.I).apply(null,arguments)},ud=u._AddN=function(){return(ud=u._AddN=u.asm.J).apply(null,arguments)},U=u._ArgMax=function(){return(U=u._ArgMax=u.asm.K).apply(null,arguments)},ne=u._AvgPool=function(){return(ne=u._AvgPool=u.asm.L).apply(null,arguments)},Ne=u._BatchMatMul=function(){return(Ne=u._BatchMatMul=u.asm.M).apply(null,arguments)},_e=u._ClipByValue=function(){return(_e=u._ClipByValue=u.asm.N).apply(null,arguments)},at=u._Conv2D=function(){return(at=u._Conv2D=u.asm.O).apply(null,arguments)},Ft=u._Conv2DBackpropInput=function(){return(Ft=u._Conv2DBackpropInput=u.asm.P).apply(null,arguments)},Ke=u._Cos=function(){return(Ke=u._Cos=u.asm.Q).apply(null,arguments)},je=u._CropAndResize=function(){return(je=u._CropAndResize=u.asm.R).apply(null,arguments)},jt=u._Cumsum=function(){return(jt=u._Cumsum=u.asm.S).apply(null,arguments)},mr=u._DepthToSpace=function(){return(mr=u._DepthToSpace=u.asm.T).apply(null,arguments)},fr=u._DepthwiseConv2dNative=function(){return(fr=u._DepthwiseConv2dNative=u.asm.U).apply(null,arguments)},cd=u._Equal=function(){return(cd=u._Equal=u.asm.V).apply(null,arguments)},Ku=u._Exp=function(){return(Ku=u._Exp=u.asm.W).apply(null,arguments)},qn=u._FlipLeftRight=function(){return(qn=u._FlipLeftRight=u.asm.X).apply(null,arguments)},zr=u._Floor=function(){return(zr=u._Floor=u.asm.Y).apply(null,arguments)},pd=u._FloorDiv=function(){return(pd=u._FloorDiv=u.asm.Z).apply(null,arguments)},UC=u._FusedBatchNorm=function(){return(UC=u._FusedBatchNorm=u.asm._).apply(null,arguments)},GC=u._FusedConv2D=function(){return(GC=u._FusedConv2D=u.asm.$).apply(null,arguments)},HC=u._FusedDepthwiseConv2D=function(){return(HC=u._FusedDepthwiseConv2D=u.asm.aa).apply(null,arguments)},jC=u._Gather=function(){return(jC=u._Gather=u.asm.ba).apply(null,arguments)},qC=u._GatherNd=function(){return(qC=u._GatherNd=u.asm.ca).apply(null,arguments)},KC=u._Greater=function(){return(KC=u._Greater=u.asm.da).apply(null,arguments)},XC=u._GreaterEqual=function(){return(XC=u._GreaterEqual=u.asm.ea).apply(null,arguments)},YC=u._LeakyRelu=function(){return(YC=u._LeakyRelu=u.asm.fa).apply(null,arguments)},JC=u._Less=function(){return(JC=u._Less=u.asm.ga).apply(null,arguments)},ZC=u._LessEqual=function(){return(ZC=u._LessEqual=u.asm.ha).apply(null,arguments)},QC=u._Log=function(){return(QC=u._Log=u.asm.ia).apply(null,arguments)},eE=u._LogicalAnd=function(){return(eE=u._LogicalAnd=u.asm.ja).apply(null,arguments)},tE=u._Max=function(){return(tE=u._Max=u.asm.ka).apply(null,arguments)},nE=u._MaxPool=function(){return(nE=u._MaxPool=u.asm.la).apply(null,arguments)},aE=u._Maximum=function(){return(aE=u._Maximum=u.asm.ma).apply(null,arguments)},rE=u._Mean=function(){return(rE=u._Mean=u.asm.na).apply(null,arguments)},sE=u._Min=function(){return(sE=u._Min=u.asm.oa).apply(null,arguments)},iE=u._Minimum=function(){return(iE=u._Minimum=u.asm.pa).apply(null,arguments)},oE=u._Multiply=function(){return(oE=u._Multiply=u.asm.qa).apply(null,arguments)},lE=u._Neg=function(){return(lE=u._Neg=u.asm.ra).apply(null,arguments)},uE=u._NonMaxSuppressionV3=function(){return(uE=u._NonMaxSuppressionV3=u.asm.sa).apply(null,arguments)},cE=u._NonMaxSuppressionV4=function(){return(cE=u._NonMaxSuppressionV4=u.asm.ta).apply(null,arguments)},pE=u._NonMaxSuppressionV5=function(){return(pE=u._NonMaxSuppressionV5=u.asm.ua).apply(null,arguments)},dE=u._NotEqual=function(){return(dE=u._NotEqual=u.asm.va).apply(null,arguments)},hE=u._OneHot=function(){return(hE=u._OneHot=u.asm.wa).apply(null,arguments)},mE=u._PadV2=function(){return(mE=u._PadV2=u.asm.xa).apply(null,arguments)},fE=u._Pow=function(){return(fE=u._Pow=u.asm.ya).apply(null,arguments)},gE=u._Prelu=function(){return(gE=u._Prelu=u.asm.za).apply(null,arguments)},yE=u._Prod=function(){return(yE=u._Prod=u.asm.Aa).apply(null,arguments)},bE=u._RealDiv=function(){return(bE=u._RealDiv=u.asm.Ba).apply(null,arguments)},xE=u._Relu=function(){return(xE=u._Relu=u.asm.Ca).apply(null,arguments)},vE=u._Relu6=function(){return(vE=u._Relu6=u.asm.Da).apply(null,arguments)},wE=u._ResizeBilinear=function(){return(wE=u._ResizeBilinear=u.asm.Ea).apply(null,arguments)},kE=u._Reverse=function(){return(kE=u._Reverse=u.asm.Fa).apply(null,arguments)},IE=u._RotateWithOffset=function(){return(IE=u._RotateWithOffset=u.asm.Ga).apply(null,arguments)},NE=u._Round=function(){return(NE=u._Round=u.asm.Ha).apply(null,arguments)},TE=u._Rsqrt=function(){return(TE=u._Rsqrt=u.asm.Ia).apply(null,arguments)},SE=u._ScatterNd=function(){return(SE=u._ScatterNd=u.asm.Ja).apply(null,arguments)},CE=u._SelectV2=function(){return(CE=u._SelectV2=u.asm.Ka).apply(null,arguments)},EE=u._Sigmoid=function(){return(EE=u._Sigmoid=u.asm.La).apply(null,arguments)},_E=u._Sin=function(){return(_E=u._Sin=u.asm.Ma).apply(null,arguments)},FE=u._Softmax=function(){return(FE=u._Softmax=u.asm.Na).apply(null,arguments)},AE=u._Sqrt=function(){return(AE=u._Sqrt=u.asm.Oa).apply(null,arguments)},$E=u._Square=function(){return($E=u._Square=u.asm.Pa).apply(null,arguments)},DE=u._SquaredDifference=function(){return(DE=u._SquaredDifference=u.asm.Qa).apply(null,arguments)},ME=u._StridedSlice=function(){return(ME=u._StridedSlice=u.asm.Ra).apply(null,arguments)},RE=u._Sub=function(){return(RE=u._Sub=u.asm.Sa).apply(null,arguments)},PE=u._Sum=function(){return(PE=u._Sum=u.asm.Ta).apply(null,arguments)},OE=u._Tanh=function(){return(OE=u._Tanh=u.asm.Ua).apply(null,arguments)},LE=u._Tile=function(){return(LE=u._Tile=u.asm.Va).apply(null,arguments)},zE=u._TopK=function(){return(zE=u._TopK=u.asm.Wa).apply(null,arguments)},BE=u._Transpose=function(){return(BE=u._Transpose=u.asm.Xa).apply(null,arguments)},WE=u.__FusedMatMul=function(){return(WE=u.__FusedMatMul=u.asm.Ya).apply(null,arguments)},Xu=u._malloc=function(){return(Xu=u._malloc=u.asm.Za).apply(null,arguments)},Yu=u._free=function(){return(Yu=u._free=u.asm._a).apply(null,arguments)},Ew=u._emscripten_get_global_libc=function(){return(Ew=u._emscripten_get_global_libc=u.asm.$a).apply(null,arguments)},_w=u.___errno_location=function(){return(_w=u.___errno_location=u.asm.ab).apply(null,arguments)},VE=u.___em_js__initPthreadsJS=function(){return(VE=u.___em_js__initPthreadsJS=u.asm.bb).apply(null,arguments)},Fw=u._memalign=function(){return(Fw=u._memalign=u.asm.cb).apply(null,arguments)},Aw=u.___pthread_tsd_run_dtors=function(){return(Aw=u.___pthread_tsd_run_dtors=u.asm.db).apply(null,arguments)},Mg=u._emscripten_main_thread_process_queued_calls=function(){return(Mg=u._emscripten_main_thread_process_queued_calls=u.asm.eb).apply(null,arguments)},UE=u._emscripten_current_thread_process_queued_calls=function(){return(UE=u._emscripten_current_thread_process_queued_calls=u.asm.fb).apply(null,arguments)},$w=u._emscripten_register_main_browser_thread_id=function(){return($w=u._emscripten_register_main_browser_thread_id=u.asm.gb).apply(null,arguments)},GE=u._emscripten_main_browser_thread_id=function(){return(GE=u._emscripten_main_browser_thread_id=u.asm.hb).apply(null,arguments)},HE=u._emscripten_async_run_in_main_thread=function(){return(HE=u._emscripten_async_run_in_main_thread=u.asm.ib).apply(null,arguments)},jE=u._emscripten_sync_run_in_main_thread=function(){return(jE=u._emscripten_sync_run_in_main_thread=u.asm.jb).apply(null,arguments)},qE=u._emscripten_sync_run_in_main_thread_0=function(){return(qE=u._emscripten_sync_run_in_main_thread_0=u.asm.kb).apply(null,arguments)},KE=u._emscripten_sync_run_in_main_thread_1=function(){return(KE=u._emscripten_sync_run_in_main_thread_1=u.asm.lb).apply(null,arguments)},XE=u._emscripten_sync_run_in_main_thread_2=function(){return(XE=u._emscripten_sync_run_in_main_thread_2=u.asm.mb).apply(null,arguments)},YE=u._emscripten_sync_run_in_main_thread_xprintf_varargs=function(){return(YE=u._emscripten_sync_run_in_main_thread_xprintf_varargs=u.asm.nb).apply(null,arguments)},JE=u._emscripten_sync_run_in_main_thread_3=function(){return(JE=u._emscripten_sync_run_in_main_thread_3=u.asm.ob).apply(null,arguments)},Dw=u._emscripten_sync_run_in_main_thread_4=function(){return(Dw=u._emscripten_sync_run_in_main_thread_4=u.asm.pb).apply(null,arguments)},ZE=u._emscripten_sync_run_in_main_thread_5=function(){return(ZE=u._emscripten_sync_run_in_main_thread_5=u.asm.qb).apply(null,arguments)},QE=u._emscripten_sync_run_in_main_thread_6=function(){return(QE=u._emscripten_sync_run_in_main_thread_6=u.asm.rb).apply(null,arguments)},e_=u._emscripten_sync_run_in_main_thread_7=function(){return(e_=u._emscripten_sync_run_in_main_thread_7=u.asm.sb).apply(null,arguments)},Mw=u._emscripten_run_in_main_runtime_thread_js=function(){return(Mw=u._emscripten_run_in_main_runtime_thread_js=u.asm.tb).apply(null,arguments)},Rg=u._emscripten_async_queue_on_thread_=function(){return(Rg=u._emscripten_async_queue_on_thread_=u.asm.ub).apply(null,arguments)},t_=u._emscripten_tls_init=function(){return(t_=u._emscripten_tls_init=u.asm.vb).apply(null,arguments)},Ju=u.stackSave=function(){return(Ju=u.stackSave=u.asm.wb).apply(null,arguments)},vo=u.stackAlloc=function(){return(vo=u.stackAlloc=u.asm.xb).apply(null,arguments)},wo=u.stackRestore=function(){return(wo=u.stackRestore=u.asm.yb).apply(null,arguments)},Rw=u.dynCall_vi=function(){return(Rw=u.dynCall_vi=u.asm.zb).apply(null,arguments)},n_=u.dynCall_v=function(){return(n_=u.dynCall_v=u.asm.Ab).apply(null,arguments)},a_=u.dynCall_ii=function(){return(a_=u.dynCall_ii=u.asm.Bb).apply(null,arguments)};u.asm=xo,u.cwrap=Je,u.PThread=ye,u.PThread=ye,u._pthread_self=Va,u.wasmMemory=ae,u.ExitStatus=Pw;var Zu;u.then=function(w){if(Zu)w(u);else{var S=u.onRuntimeInitialized;u.onRuntimeInitialized=function(){S&&S(),w(u)}}return u};function Pw(w){this.name="ExitStatus",this.message="Program terminated with exit("+w+")",this.status=w}ks=function w(){Zu||Pg(),Zu||(ks=w)};function Pg(w){if(w=w||m,dr>0||(Hp(),dr>0))return;function S(){Zu||(Zu=!0,u.calledRun=!0,!be&&($f(),Df(),u.onRuntimeInitialized&&u.onRuntimeInitialized(),Mf()))}u.setStatus?(u.setStatus("Running..."),setTimeout(function(){setTimeout(function(){u.setStatus("")},1),S()},1)):S()}if(u.run=Pg,u.preInit)for(typeof u.preInit=="function"&&(u.preInit=[u.preInit]);u.preInit.length>0;)u.preInit.pop()();return N||(re=!0),N||Pg(),r}}();typeof e=="object"&&typeof t=="object"?t.exports=n:typeof define=="function"&&define.amd?define([],function(){return n}):typeof e=="object"&&(e.WasmBackendModuleThreadedSimd=n)}),A_=pn((e,t)=>{var n=function(){var a=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(a=a||__filename),function(r){r=r||{};var s=typeof r!="undefined"?r:{},i={},o;for(o in s)s.hasOwnProperty(o)&&(i[o]=s[o]);var l=[],c="./this.program",u=function(U,ne){throw ne},p=!1,d=!1,h=!1,m=!1;p=typeof window=="object",d=typeof importScripts=="function",h=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",m=!p&&!h&&!d;var f="";function g(U){return s.locateFile?s.locateFile(U,f):f+U}var y,b,x,v,N,T;h?(d?f=tc().dirname(f)+"/":f=__dirname+"/",y=function(U,ne){return N||(N=require("fs")),T||(T=tc()),U=T.normalize(U),N.readFileSync(U,ne?null:"utf8")},x=function(U){var ne=y(U,!0);return ne.buffer||(ne=new Uint8Array(ne)),q(ne.buffer),ne},process.argv.length>1&&(c=process.argv[1].replace(/\\/g,"/")),l=process.argv.slice(2),process.on("uncaughtException",function(U){if(!(U instanceof ju))throw U}),process.on("unhandledRejection",pr),u=function(U){process.exit(U)},s.inspect=function(){return"[Emscripten Module object]"}):m?(typeof read!="undefined"&&(y=function(U){return read(U)}),x=function(U){var ne;return typeof readbuffer=="function"?new Uint8Array(readbuffer(U)):(ne=read(U,"binary"),q(typeof ne=="object"),ne)},typeof scriptArgs!="undefined"?l=scriptArgs:typeof arguments!="undefined"&&(l=arguments),typeof quit=="function"&&(u=function(U){quit(U)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(p||d)&&(d?f=self.location.href:document.currentScript&&(f=document.currentScript.src),a&&(f=a),f.indexOf("blob:")!==0?f=f.substr(0,f.lastIndexOf("/")+1):f="",y=function(U){var ne=new XMLHttpRequest;return ne.open("GET",U,!1),ne.send(null),ne.responseText},d&&(x=function(U){var ne=new XMLHttpRequest;return ne.open("GET",U,!1),ne.responseType="arraybuffer",ne.send(null),new Uint8Array(ne.response)}),b=function(U,ne,Ne){var _e=new XMLHttpRequest;_e.open("GET",U,!0),_e.responseType="arraybuffer",_e.onload=function(){if(_e.status==200||_e.status==0&&_e.response){ne(_e.response);return}Ne()},_e.onerror=Ne,_e.send(null)},v=function(U){document.title=U});var E=s.print||console.log.bind(console),A=s.printErr||console.warn.bind(console);for(o in i)i.hasOwnProperty(o)&&(s[o]=i[o]);i=null,s.arguments&&(l=s.arguments),s.thisProgram&&(c=s.thisProgram),s.quit&&(u=s.quit);var $;s.wasmBinary&&($=s.wasmBinary);var O;s.noExitRuntime&&(O=s.noExitRuntime),typeof WebAssembly!="object"&&A("no native wasm support detected");var V,W=new WebAssembly.Table({initial:151,maximum:151+0,element:"anyfunc"}),H=!1,X=0;function q(U,ne){U||pr("Assertion failed: "+ne)}function K(U){var ne=s["_"+U];return q(ne,"Cannot call unknown function "+U+", make sure it is exported"),ne}function J(U,ne,Ne,_e,at){var Ft={string:function(qn){var zr=0;if(qn!=null&&qn!==0){var pd=(qn.length<<2)+1;zr=xo(pd),oe(qn,zr,pd)}return zr},array:function(qn){var zr=xo(qn.length);return he(qn,zr),zr}};function Ke(qn){return ne==="string"?re(qn):ne==="boolean"?Boolean(qn):qn}var je=K(U),jt=[],mr=0;if(_e)for(var fr=0;fr<_e.length;fr++){var cd=Ft[Ne[fr]];cd?(mr===0&&(mr=od()),jt[fr]=cd(_e[fr])):jt[fr]=_e[fr]}var Ku=je.apply(null,jt);return Ku=Ke(Ku),mr!==0&&Hu(mr),Ku}function te(U,ne,Ne,_e){Ne=Ne||[];var at=Ne.every(function(Ke){return Ke==="number"}),Ft=ne!=="string";return Ft&&at&&!_e?K(U):function(){return J(U,ne,Ne,arguments,_e)}}var Q=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):void 0;function ie(U,ne,Ne){for(var _e=ne+Ne,at=ne;U[at]&&!(at>=_e);)++at;if(at-ne>16&&U.subarray&&Q)return Q.decode(U.subarray(ne,at));for(var Ft="";ne>10,56320|mr&1023)}}return Ft}function re(U,ne){return U?ie(be,U,ne):""}function ae(U,ne,Ne,_e){if(!(_e>0))return 0;for(var at=Ne,Ft=Ne+_e-1,Ke=0;Ke=55296&&je<=57343){var jt=U.charCodeAt(++Ke);je=65536+((je&1023)<<10)|jt&1023}if(je<=127){if(Ne>=Ft)break;ne[Ne++]=je}else if(je<=2047){if(Ne+1>=Ft)break;ne[Ne++]=192|je>>6,ne[Ne++]=128|je&63}else if(je<=65535){if(Ne+2>=Ft)break;ne[Ne++]=224|je>>12,ne[Ne++]=128|je>>6&63,ne[Ne++]=128|je&63}else{if(Ne+3>=Ft)break;ne[Ne++]=240|je>>18,ne[Ne++]=128|je>>12&63,ne[Ne++]=128|je>>6&63,ne[Ne++]=128|je&63}}return ne[Ne]=0,Ne-at}function oe(U,ne,Ne){return ae(U,be,ne,Ne)}function he(U,ne){ge.set(U,ne)}var ce,ge,be,Ie,Te,Ee,Me,Je,nt;function Ve(U){ce=U,s.HEAP8=ge=new Int8Array(U),s.HEAP16=Ie=new Int16Array(U),s.HEAP32=Ee=new Int32Array(U),s.HEAPU8=be=new Uint8Array(U),s.HEAPU16=Te=new Uint16Array(U),s.HEAPU32=Me=new Uint32Array(U),s.HEAPF32=Je=new Float32Array(U),s.HEAPF64=nt=new Float64Array(U)}var ut=s.INITIAL_MEMORY||16777216;function Ge(U){for(;U.length>0;){var ne=U.shift();if(typeof ne=="function"){ne(s);continue}var Ne=ne.func;typeof Ne=="number"?ne.arg===void 0?s.dynCall_v(Ne):s.dynCall_vi(Ne,ne.arg):Ne(ne.arg===void 0?null:ne.arg)}}var ct=[],ft=[],Fn=[],_t=[],Nt=!1,nn=!1;function wn(){if(s.preRun)for(typeof s.preRun=="function"&&(s.preRun=[s.preRun]);s.preRun.length;)ur(s.preRun.shift());Ge(ct)}function ia(){Nt=!0,Ge(ft)}function An(){Ge(Fn)}function cn(){nn=!0}function Hn(){if(s.postRun)for(typeof s.postRun=="function"&&(s.postRun=[s.postRun]);s.postRun.length;)cr(s.postRun.shift());Ge(_t)}function ur(U){ct.unshift(U)}function cr(U){_t.unshift(U)}var wa=Math.ceil,po=Math.floor,ka=0,Wa=null,Ia=null;function vs(U){ka++,s.monitorRunDependencies&&s.monitorRunDependencies(ka)}function Wp(U){if(ka--,s.monitorRunDependencies&&s.monitorRunDependencies(ka),ka==0&&(Wa!==null&&(clearInterval(Wa),Wa=null),Ia)){var ne=Ia;Ia=null,ne()}}s.preloadedImages={},s.preloadedAudios={};function pr(U){throw s.onAbort&&s.onAbort(U),U+="",E(U),A(U),H=!0,X=1,U="abort("+U+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(U)}function Bu(U,ne){return String.prototype.startsWith?U.startsWith(ne):U.indexOf(ne)===0}var Vp="data:application/octet-stream;base64,";function Up(U){return Bu(U,Vp)}var Gp="file://";function Wu(U){return Bu(U,Gp)}var jn="tfjs-backend-wasm.wasm";Up(jn)||(jn=g(jn));function Hp(){try{if($)return new Uint8Array($);if(x)return x(jn);throw"both async and sync fetching of the wasm failed"}catch(U){pr(U)}}function $f(){return!$&&(p||d)&&typeof fetch=="function"&&!Wu(jn)?fetch(jn,{credentials:"same-origin"}).then(function(U){if(!U.ok)throw"failed to load wasm binary file at '"+jn+"'";return U.arrayBuffer()}).catch(function(){return Hp()}):new Promise(function(U,ne){U(Hp())})}function Df(){var U={env:jp,wasi_snapshot_preview1:jp};function ne(Ke,je){var jt=Ke.exports;s.asm=jt,V=jt.memory,Ve(V.buffer),Wp("wasm-instantiate")}vs("wasm-instantiate");function Ne(Ke){ne(Ke.instance)}function _e(Ke){return $f().then(function(je){return WebAssembly.instantiate(je,U)}).then(Ke,function(je){A("failed to asynchronously prepare wasm: "+je),pr(je)})}function at(){if(!$&&typeof WebAssembly.instantiateStreaming=="function"&&!Up(jn)&&!Wu(jn)&&typeof fetch=="function")fetch(jn,{credentials:"same-origin"}).then(function(Ke){var je=WebAssembly.instantiateStreaming(Ke,U);return je.then(Ne,function(jt){A("wasm streaming compile failed: "+jt),A("falling back to ArrayBuffer instantiation"),_e(Ne)})});else return _e(Ne)}if(s.instantiateWasm)try{var Ft=s.instantiateWasm(U,ne);return Ft}catch(Ke){return A("Module.instantiateWasm callback failed with error: "+Ke),!1}return at(),{}}ft.push();function Mf(U){Ve(V.buffer)}var ws={splitPath:function(U){var ne=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return ne.exec(U).slice(1)},normalizeArray:function(U,ne){for(var Ne=0,_e=U.length-1;_e>=0;_e--){var at=U[_e];at==="."?U.splice(_e,1):at===".."?(U.splice(_e,1),Ne++):Ne&&(U.splice(_e,1),Ne--)}if(ne)for(;Ne;Ne--)U.unshift("..");return U},normalize:function(U){var ne=U.charAt(0)==="/",Ne=U.substr(-1)==="/";return U=ws.normalizeArray(U.split("/").filter(function(_e){return!!_e}),!ne).join("/"),!U&&!ne&&(U="."),U&&Ne&&(U+="/"),(ne?"/":"")+U},dirname:function(U){var ne=ws.splitPath(U),Ne=ne[0],_e=ne[1];return!Ne&&!_e?".":(_e&&(_e=_e.substr(0,_e.length-1)),Ne+_e)},basename:function(U){if(U==="/")return"/";var ne=U.lastIndexOf("/");return ne===-1?U:U.substr(ne+1)},extname:function(U){return ws.splitPath(U)[3]},join:function(){var U=Array.prototype.slice.call(arguments,0);return ws.normalize(U.join("/"))},join2:function(U,ne){return ws.normalize(U+"/"+ne)}},ho={mappings:{},buffers:[null,[],[]],printChar:function(U,ne){var Ne=ho.buffers[U];ne===0||ne===10?((U===1?E:A)(ie(Ne,0)),Ne.length=0):Ne.push(ne)},varargs:void 0,get:function(){ho.varargs+=4;var U=Ee[ho.varargs-4>>2];return U},getStr:function(U){var ne=re(U);return ne},get64:function(U,ne){return U}};function Rf(U){return 0}function Pf(U,ne,Ne,_e,at){}function dr(U,ne,Ne,_e){for(var at=0,Ft=0;Ft>2],je=Ee[ne+(Ft*8+4)>>2],jt=0;jt>2]=at,0}function Vu(U){ld(U)}function ks(U){Vu(U)}function Of(U){return U=+U,U>=0?+po(U+.5):+wa(U-.5)}var jp={emscripten_notify_memory_growth:Mf,fd_close:Rf,fd_seek:Pf,fd_write:dr,proc_exit:ks,roundf:Of},hr=Df();s.asm=hr;var qp=s._init=function(){return(qp=s._init=s.asm.init).apply(null,arguments)},Lf=s._register_tensor=function(){return(Lf=s._register_tensor=s.asm.register_tensor).apply(null,arguments)},Kp=s._dispose_data=function(){return(Kp=s._dispose_data=s.asm.dispose_data).apply(null,arguments)},zf=s._dispose=function(){return(zf=s._dispose=s.asm.dispose).apply(null,arguments)},Xp=s._Abs=function(){return(Xp=s._Abs=s.asm.Abs).apply(null,arguments)},oa=s._Add=function(){return(oa=s._Add=s.asm.Add).apply(null,arguments)},Yp=s._AddN=function(){return(Yp=s._AddN=s.asm.AddN).apply(null,arguments)},Bf=s._ArgMax=function(){return(Bf=s._ArgMax=s.asm.ArgMax).apply(null,arguments)},Wf=s._AvgPool=function(){return(Wf=s._AvgPool=s.asm.AvgPool).apply(null,arguments)},Vf=s._BatchMatMul=function(){return(Vf=s._BatchMatMul=s.asm.BatchMatMul).apply(null,arguments)},Uf=s._ClipByValue=function(){return(Uf=s._ClipByValue=s.asm.ClipByValue).apply(null,arguments)},Jp=s._Conv2D=function(){return(Jp=s._Conv2D=s.asm.Conv2D).apply(null,arguments)},Zp=s._Conv2DBackpropInput=function(){return(Zp=s._Conv2DBackpropInput=s.asm.Conv2DBackpropInput).apply(null,arguments)},Qp=s._Cos=function(){return(Qp=s._Cos=s.asm.Cos).apply(null,arguments)},mo=s._CropAndResize=function(){return(mo=s._CropAndResize=s.asm.CropAndResize).apply(null,arguments)},Uu=s._Cumsum=function(){return(Uu=s._Cumsum=s.asm.Cumsum).apply(null,arguments)},fo=s._DepthToSpace=function(){return(fo=s._DepthToSpace=s.asm.DepthToSpace).apply(null,arguments)},go=s._DepthwiseConv2dNative=function(){return(go=s._DepthwiseConv2dNative=s.asm.DepthwiseConv2dNative).apply(null,arguments)},Gf=s._Equal=function(){return(Gf=s._Equal=s.asm.Equal).apply(null,arguments)},Hf=s._Exp=function(){return(Hf=s._Exp=s.asm.Exp).apply(null,arguments)},jf=s._FlipLeftRight=function(){return(jf=s._FlipLeftRight=s.asm.FlipLeftRight).apply(null,arguments)},ye=s._Floor=function(){return(ye=s._Floor=s.asm.Floor).apply(null,arguments)},qf=s._FloorDiv=function(){return(qf=s._FloorDiv=s.asm.FloorDiv).apply(null,arguments)},Kf=s._FusedBatchNorm=function(){return(Kf=s._FusedBatchNorm=s.asm.FusedBatchNorm).apply(null,arguments)},Xf=s._FusedConv2D=function(){return(Xf=s._FusedConv2D=s.asm.FusedConv2D).apply(null,arguments)},Yf=s._FusedDepthwiseConv2D=function(){return(Yf=s._FusedDepthwiseConv2D=s.asm.FusedDepthwiseConv2D).apply(null,arguments)},Is=s._Gather=function(){return(Is=s._Gather=s.asm.Gather).apply(null,arguments)},Jf=s._GatherNd=function(){return(Jf=s._GatherNd=s.asm.GatherNd).apply(null,arguments)},Zf=s._Greater=function(){return(Zf=s._Greater=s.asm.Greater).apply(null,arguments)},Qf=s._GreaterEqual=function(){return(Qf=s._GreaterEqual=s.asm.GreaterEqual).apply(null,arguments)},eg=s._LeakyRelu=function(){return(eg=s._LeakyRelu=s.asm.LeakyRelu).apply(null,arguments)},tg=s._Less=function(){return(tg=s._Less=s.asm.Less).apply(null,arguments)},ng=s._LessEqual=function(){return(ng=s._LessEqual=s.asm.LessEqual).apply(null,arguments)},ag=s._Log=function(){return(ag=s._Log=s.asm.Log).apply(null,arguments)},rg=s._LogicalAnd=function(){return(rg=s._LogicalAnd=s.asm.LogicalAnd).apply(null,arguments)},sg=s._Max=function(){return(sg=s._Max=s.asm.Max).apply(null,arguments)},ig=s._MaxPool=function(){return(ig=s._MaxPool=s.asm.MaxPool).apply(null,arguments)},Or=s._Maximum=function(){return(Or=s._Maximum=s.asm.Maximum).apply(null,arguments)},Ns=s._Mean=function(){return(Ns=s._Mean=s.asm.Mean).apply(null,arguments)},yo=s._Min=function(){return(yo=s._Min=s.asm.Min).apply(null,arguments)},og=s._Minimum=function(){return(og=s._Minimum=s.asm.Minimum).apply(null,arguments)},lg=s._Multiply=function(){return(lg=s._Multiply=s.asm.Multiply).apply(null,arguments)},ug=s._Neg=function(){return(ug=s._Neg=s.asm.Neg).apply(null,arguments)},cg=s._NonMaxSuppressionV3=function(){return(cg=s._NonMaxSuppressionV3=s.asm.NonMaxSuppressionV3).apply(null,arguments)},Pe=s._NonMaxSuppressionV4=function(){return(Pe=s._NonMaxSuppressionV4=s.asm.NonMaxSuppressionV4).apply(null,arguments)},pg=s._NonMaxSuppressionV5=function(){return(pg=s._NonMaxSuppressionV5=s.asm.NonMaxSuppressionV5).apply(null,arguments)},dg=s._NotEqual=function(){return(dg=s._NotEqual=s.asm.NotEqual).apply(null,arguments)},hg=s._OneHot=function(){return(hg=s._OneHot=s.asm.OneHot).apply(null,arguments)},mg=s._PadV2=function(){return(mg=s._PadV2=s.asm.PadV2).apply(null,arguments)},fg=s._Pow=function(){return(fg=s._Pow=s.asm.Pow).apply(null,arguments)},gg=s._Prelu=function(){return(gg=s._Prelu=s.asm.Prelu).apply(null,arguments)},Gu=s._Prod=function(){return(Gu=s._Prod=s.asm.Prod).apply(null,arguments)},ed=s._RealDiv=function(){return(ed=s._RealDiv=s.asm.RealDiv).apply(null,arguments)},td=s._Relu=function(){return(td=s._Relu=s.asm.Relu).apply(null,arguments)},yg=s._Relu6=function(){return(yg=s._Relu6=s.asm.Relu6).apply(null,arguments)},bg=s._ResizeBilinear=function(){return(bg=s._ResizeBilinear=s.asm.ResizeBilinear).apply(null,arguments)},xg=s._Reverse=function(){return(xg=s._Reverse=s.asm.Reverse).apply(null,arguments)},vg=s._RotateWithOffset=function(){return(vg=s._RotateWithOffset=s.asm.RotateWithOffset).apply(null,arguments)},wg=s._Round=function(){return(wg=s._Round=s.asm.Round).apply(null,arguments)},kg=s._Rsqrt=function(){return(kg=s._Rsqrt=s.asm.Rsqrt).apply(null,arguments)},Be=s._ScatterNd=function(){return(Be=s._ScatterNd=s.asm.ScatterNd).apply(null,arguments)},Ig=s._SelectV2=function(){return(Ig=s._SelectV2=s.asm.SelectV2).apply(null,arguments)},Ng=s._Sigmoid=function(){return(Ng=s._Sigmoid=s.asm.Sigmoid).apply(null,arguments)},Tg=s._Sin=function(){return(Tg=s._Sin=s.asm.Sin).apply(null,arguments)},Ts=s._Softmax=function(){return(Ts=s._Softmax=s.asm.Softmax).apply(null,arguments)},bo=s._Sqrt=function(){return(bo=s._Sqrt=s.asm.Sqrt).apply(null,arguments)},nd=s._Square=function(){return(nd=s._Square=s.asm.Square).apply(null,arguments)},ad=s._SquaredDifference=function(){return(ad=s._SquaredDifference=s.asm.SquaredDifference).apply(null,arguments)},rd=s._StridedSlice=function(){return(rd=s._StridedSlice=s.asm.StridedSlice).apply(null,arguments)},Sg=s._Sub=function(){return(Sg=s._Sub=s.asm.Sub).apply(null,arguments)},Cg=s._Sum=function(){return(Cg=s._Sum=s.asm.Sum).apply(null,arguments)},sd=s._Tanh=function(){return(sd=s._Tanh=s.asm.Tanh).apply(null,arguments)},Eg=s._Tile=function(){return(Eg=s._Tile=s.asm.Tile).apply(null,arguments)},Va=s._TopK=function(){return(Va=s._TopK=s.asm.TopK).apply(null,arguments)},_g=s._Transpose=function(){return(_g=s._Transpose=s.asm.Transpose).apply(null,arguments)},Fg=s.__FusedMatMul=function(){return(Fg=s.__FusedMatMul=s.asm._FusedMatMul).apply(null,arguments)},id=s._malloc=function(){return(id=s._malloc=s.asm.malloc).apply(null,arguments)},Lr=s._free=function(){return(Lr=s._free=s.asm.free).apply(null,arguments)},Ag=s.__start=function(){return(Ag=s.__start=s.asm._start).apply(null,arguments)},od=s.stackSave=function(){return(od=s.stackSave=s.asm.stackSave).apply(null,arguments)},xo=s.stackAlloc=function(){return(xo=s.stackAlloc=s.asm.stackAlloc).apply(null,arguments)},Hu=s.stackRestore=function(){return(Hu=s.stackRestore=s.asm.stackRestore).apply(null,arguments)};s.asm=hr,s.cwrap=te;var Ss;s.then=function(U){if(Ss)U(s);else{var ne=s.onRuntimeInitialized;s.onRuntimeInitialized=function(){ne&&ne(),U(s)}}return s};function ju(U){this.name="ExitStatus",this.message="Program terminated with exit("+U+")",this.status=U}var $g=!1;Ia=function U(){Ss||qu(),Ss||(Ia=U)};function Dg(U){var ne=s.__start;try{ne();var Ne=0;ld(Ne,!0)}catch(at){if(at instanceof ju)return;if(at=="unwind"){O=!0;return}else{var _e=at;at&&typeof at=="object"&&at.stack&&(_e=[at,at.stack]),A("exception thrown: "+_e),u(1,at)}}finally{$g=!0}}function qu(U){if(U=U||l,ka>0||(wn(),ka>0))return;function ne(){Ss||(Ss=!0,s.calledRun=!0,!H&&(ia(),An(),s.onRuntimeInitialized&&s.onRuntimeInitialized(),ud&&Dg(U),Hn()))}s.setStatus?(s.setStatus("Running..."),setTimeout(function(){setTimeout(function(){s.setStatus("")},1),ne()},1)):ne()}s.run=qu;function ld(U,ne){ne&&O&&U===0||(O||(H=!0,X=U,cn(),s.onExit&&s.onExit(U)),u(U,new ju(U)))}if(s.preInit)for(typeof s.preInit=="function"&&(s.preInit=[s.preInit]);s.preInit.length>0;)s.preInit.pop()();var ud=!0;return s.noInitialRun&&(ud=!1),O=!0,qu(),r}}();typeof e=="object"&&typeof t=="object"?t.exports=n:typeof define=="function"&&define.amd?define([],function(){return n}):typeof e=="object"&&(e.WasmBackendModule=n)}),$_=1e-7,D_=1e-4,gd=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}},nc=class{time(e){return Y("time")}read(e){return Y("read")}readSync(e){return Y("readSync")}numDataIds(){return Y("numDataIds")}disposeData(e){return Y("disposeData")}write(e,t,n){return Y("write")}move(e,t,n,a){return Y("move")}memory(){return Y("memory")}floatPrecision(){return Y("floatPrecision")}epsilon(){return this.floatPrecision()===32?$_:D_}batchMatMul(e,t,n,a){return Y("batchMatMul")}fusedBatchMatMul({a:e,b:t,transposeA:n,transposeB:a,bias:r,activation:s,preluActivationWeights:i}){return Y("fusedBatchMatMul")}slice(e,t,n){return Y("slice")}stridedSlice(e,t,n,a){return Y("stridedSlice")}unstack(e,t){return Y("unstack")}reverse(e,t){return Y("reverse")}concat(e,t){return Y("concat")}neg(e){return Y("neg")}add(e,t){return Y("add")}addN(e){return Y("addN")}subtract(e,t){return Y("subtract")}multiply(e,t){return Y("multiply")}realDivide(e,t){return Y("realDivide")}floorDiv(e,t){return Y("floorDiv")}sum(e,t){return Y("sum")}prod(e,t){return Y("prod")}unsortedSegmentSum(e,t,n){return Y("unsortedSegmentSum")}argMin(e,t){return Y("argMin")}argMax(e,t){return Y("argMax")}equal(e,t){return Y("equal")}notEqual(e,t){return Y("notEqual")}less(e,t){return Y("less")}lessEqual(e,t){return Y("lessEqual")}greater(e,t){return Y("greater")}greaterEqual(e,t){return Y("greaterEqual")}logicalNot(e){return Y("logicalNot")}logicalAnd(e,t){return Y("logicalAnd")}logicalOr(e,t){return Y("logicalOr")}where(e){return Y("where")}select(e,t,n){return Y("select")}topk(e,t,n){return Y("topk")}min(e,t){return Y("min")}minimum(e,t){return Y("minimum")}mod(e,t){return Y("mod")}max(e,t){return Y("max")}maximum(e,t){return Y("maximum")}all(e,t){return Y("all")}any(e,t){return Y("any")}squaredDifference(e,t){return Y("squaredDifference")}ceil(e){return Y("ceil")}floor(e){return Y("floor")}round(e){return Y("round")}sign(e){return Y("sign")}isNaN(e){return Y("isNaN")}isInf(e){return Y("isInf")}isFinite(e){return Y("isFinite")}pow(e,t){return Y("pow")}exp(e){return Y("exp")}expm1(e){return Y("expm1")}softmax(e,t){return Y("softmax")}log(e){return Y("log")}log1p(e){return Y("log1p")}sqrt(e){return Y("sqrt")}rsqrt(e){return Y("rsqrt")}square(e){return Y("square")}reciprocal(e){return Y("reciprocal")}relu(e){return Y("relu")}relu6(e){return Y("relu6")}prelu(e,t){return Y("prelu")}elu(e){return Y("elu")}eluDer(e,t){return Y("eluDer")}selu(e){return Y("selu")}int(e){return Y("int")}clip(e,t,n){return Y("clip")}abs(e){return Y("abs")}complexAbs(e){return Y("complexAbs")}sigmoid(e){return Y("sigmoid")}softplus(e){return Y("softplus")}sin(e){return Y("sin")}cos(e){return Y("cos")}tan(e){return Y("tan")}asin(e){return Y("asin")}acos(e){return Y("acos")}atan(e){return Y("atan")}atan2(e,t){return Y("atan2")}sinh(e){return Y("sinh")}cosh(e){return Y("cosh")}tanh(e){return Y("tanh")}asinh(e){return Y("asinh")}acosh(e){return Y("acosh")}atanh(e){return Y("atanh")}erf(e){return Y("erf")}step(e,t){return Y("step")}fusedConv2d({input:e,filter:t,convInfo:n,bias:a,activation:r,preluActivationWeights:s}){return Y("fusedConv2d")}conv2d(e,t,n){return Y("conv2d")}conv2dDerInput(e,t,n){return Y("conv2dDerInput")}conv2dDerFilter(e,t,n){return Y("conv2dDerFilter")}fusedDepthwiseConv2D({input:e,filter:t,convInfo:n,bias:a,activation:r,preluActivationWeights:s}){return Y("fusedDepthwiseConv2D")}depthwiseConv2D(e,t,n){return Y("depthwiseConv2D")}depthwiseConv2DDerInput(e,t,n){return Y("depthwiseConv2DDerInput")}depthwiseConv2DDerFilter(e,t,n){return Y("depthwiseConv2DDerFilter")}conv3d(e,t,n){return Y("conv3d")}conv3dDerInput(e,t,n){return Y("conv3dDerInput")}conv3dDerFilter(e,t,n){return Y("conv3dDerFilter")}maxPool(e,t){return Y("maxPool")}maxPoolBackprop(e,t,n,a){return Y("maxPoolBackprop")}avgPool(e,t){return Y("avgPool")}avgPoolBackprop(e,t,n){return Y("avgPoolBackprop")}avgPool3d(e,t){return Y("avgPool3d")}avgPool3dBackprop(e,t,n){return Y("avgPool3dBackprop")}maxPool3d(e,t){return Y("maxPool3d")}maxPool3dBackprop(e,t,n,a){return Y("maxPool3dBackprop")}reshape(e,t){return Y("reshape")}cast(e,t){return Y("cast")}tile(e,t){return Y("tile")}pad(e,t,n){return Y("pad")}transpose(e,t){return Y("transpose")}gather(e,t,n,a=0){return Y("gather")}gatherND(e,t){return Y("gatherND")}scatterND(e,t,n){return Y("scatterND")}batchToSpaceND(e,t,n){return Y("batchToSpaceND")}spaceToBatchND(e,t,n){return Y("spaceToBatchND")}resizeBilinear(e,t,n,a,r){return Y("resizeBilinear")}resizeBilinearBackprop(e,t,n){return Y("resizeBilinearBackprop")}resizeNearestNeighbor(e,t,n,a,r){return Y("resizeNearestNeighbor")}resizeNearestNeighborBackprop(e,t,n){return Y("resizeNearestNeighborBackprop")}batchNorm(e,t,n,a,r,s){return Y("batchNorm")}localResponseNormalization4D(e,t,n,a,r){return Y("localResponseNormalization4D")}LRNGrad(e,t,n,a,r,s,i){return Y("LRNGrad")}multinomial(e,t,n,a){return Y("multinomial")}oneHot(e,t,n,a){return Y("oneHot")}cumsum(e,t,n,a){return Y("cumsum")}nonMaxSuppression(e,t,n,a,r){return Y("nonMaxSuppression")}fft(e){return Y("fft")}ifft(e){return Y("ifft")}complex(e,t){return Y("complex")}real(e){return Y("real")}imag(e){return Y("imag")}cropAndResize(e,t,n,a,r,s){return Y("cropAndResize")}depthToSpace(e,t,n){return Y("depthToSpace")}split(e,t,n){return Y("split")}sparseToDense(e,t,n,a){return Y("sparseToDense")}diag(e){return Y("diag")}fill(e,t,n){return Y("fill")}onesLike(e){return Y("onesLike")}zerosLike(e){return Y("zerosLike")}linspace(e,t,n){return Y("linspace")}dispose(){return Y("dispose")}};function Y(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 Bw(e){let t=e.length,n=0,a=0;for(;t>0;)a=Math.random()*t|0,t--,n=e[t],e[t]=e[a],e[a]=n}function ac(e,t,n){return Math.max(e,Math.min(t,n))}function M_(e){return e%2==0?e:e+1}function R_(e){let t=0;for(let n=0;nn+` Shapes ${e} and ${t} must match`)}function Cs(e){F(e!=null,()=>"The input to the tensor constructor must be a non-null value.")}function Es(e,t=[],n=!1){if(t==null&&(t=[]),Array.isArray(e)||un(e)&&!n)for(let a=0;a0,n){return new Promise((a,r)=>{let s=0,i=()=>{if(e()){a();return}s++;let o=t(s);if(n!=null&&s>=n){r();return}setTimeout(i,o)};i()})}function U_(e,t){let n=1,a=-1;for(let s=0;s=0)n*=e[s];else if(e[s]===-1){if(a!==-1)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${a} and dim ${s}`);a=s}else if(e[s]<0)throw Error(`Shapes can not be < 0. Found ${e[s]} at dim ${s}`);if(a===-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[a]=t/n,r}function la(e,t){let n=t.length;return e=e==null?t.map((a,r)=>r):[].concat(e),F(e.every(a=>a>=-n&&a`All values in axis param must be in range [-${n}, ${n}) but got axis ${e}`),F(e.every(a=>qt(a)),()=>`All values in axis param must be integers but got axis ${e}`),e.map(a=>a<0?n+a:a)}function Ww(e,t){let n=[],a=[],r=t!=null&&Array.isArray(t)&&t.length===0,s=t==null||r?null:la(t,e).sort(),i=0;for(let o=0;oo)&&e[o]===1&&(n.push(e[o]),a.push(o)),s[i]<=o&&i++}e[o]!==1&&(n.push(e[o]),a.push(o))}return{newShape:n,keptDims:a}}function Vw(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 Uw(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 Gw(e,t){for(let n=0;nt+=n.length),t}function Wr(e){return typeof e=="string"||e instanceof String}function Xw(e){return typeof e=="boolean"}function Yw(e){return typeof e=="number"}function yd(e){return Array.isArray(e)?yd(e[0]):e instanceof Float32Array?"float32":e instanceof Int32Array||e instanceof Uint8Array?"int32":Yw(e)?"float32":Wr(e)?"string":Xw(e)?"bool":"float32"}function Vr(e){return!!(e&&e.constructor&&e.call&&e.apply)}function bd(e,t){for(let n=t;n=0;--a)n[a]=n[a+1]*e[a+1];return n}function Jw(e,t,n){let a=new Array;if(t.length===1){let r=t[0];for(let s=0;so*l);for(let o=0;oa*r);if(n===0)return[];if(n!==t.length)throw new Error(`[${e}] does not match the input size ${t.length}.`);return Jw(0,e,t)}function Bg(e,t){let n=xd(e,t);for(let a=0;aa*r,1);if(t==null||t==="float32")return So(e,new Float32Array(n));if(t==="int32")return So(e,new Int32Array(n));if(t==="bool")return So(e,new Uint8Array(n));throw new Error(`Unknown data type ${t}`)}function Wg(e){e.forEach(t=>{F(Number.isInteger(t)&&t>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${e}].`)})}function H_(e,t,n){if(t===0)return 0;if(t===1)return e[0];let a=e[e.length-1];for(let r=0;r{let[n,a]=t.split(":");this.urlFlags[n]=K_(n,a)})}};function q_(e){let t={};return e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(n,...a)=>(X_(t,a[0],a[1]),a.join("="))),t}function X_(e,t,n){e[decodeURIComponent(t)]=decodeURIComponent(n||"")}function K_(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 ee(){return Ug}var Ug=null;function Y_(e){Ug=e}var Gg;function e0(){if(Gg==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");Gg=e}return Gg}function J_(){let e=e0();return e._tfGlobals==null&&(e._tfGlobals=new Map),e._tfGlobals}function t0(e,t){let n=J_();if(n.has(e))return n.get(e);{let a=t();return n.set(e,a),n.get(e)}}var Co="Abs",Eo="Acos",_o="Acosh",Ur="Add",_s="AddN",vd="All",wd="Any",Fs="ArgMax",sc="ArgMin",Fo="Asin",Ao="Asinh",$o="Atan",Do="Atanh",Mo="Atan2",As="AvgPool",kd="AvgPoolGrad",ic="AvgPool3D",Id="AvgPool3DGrad",$s="BatchMatMul",oc="BatchToSpaceND",Nd="Bincount",n0="BroadcastTo",Ds="Cast",Ro="Ceil",Gr="ClipByValue",Td="Complex",lc="ComplexAbs",Po="Concat",Ms="Conv2D",Sd="Conv2DBackpropFilter",Rs="Conv2DBackpropInput",uc="Conv3D",Cd="Conv3DBackpropFilterV2",Ed="Conv3DBackpropInputV2",Ps="Cos",Oo="Cosh",Os="Cumsum",Lo="CropAndResize",_d="DenseBincount",zo="DepthToSpace",Ls="DepthwiseConv2dNative",Fd="DepthwiseConv2dNativeBackpropFilter",Ad="DepthwiseConv2dNativeBackpropInput",$d="Diag",cc="Dilation2D",Dd="Dilation2DBackpropInput",Md="Dilation2DBackpropFilter",zs="RealDiv",Bo="Elu",Rd="EluGrad",Wo="Erf",Vo="Equal",Bs="Exp",Uo="ExpandDims",Go="Expm1",Pd="FFT",pc="Fill",Ho="FlipLeftRight",Ws="Floor",Vs="FloorDiv",Us="FusedBatchNorm",jo="GatherV2",qo="GatherNd",Ko="Greater",Gs="GreaterEqual",Xo="Identity",Od="IFFT",Ld="Imag",Yo="IsFinite",Jo="IsInf",Zo="IsNan",Hs="LeakyRelu",Qo="Less",el="LessEqual",zd="LinSpace",js="Log",tl="Log1p",nl="LogicalAnd",dc="LogicalNot",hc="LogicalOr",a0="LogSoftmax",mc="LRN",Bd="LRNGrad",qs="Max",Ks="Maximum",Xs="MaxPool",Wd="MaxPoolGrad",fc="MaxPool3D",Vd="MaxPool3DGrad",Ud="MaxPoolWithArgmax",Ys="Mean",Js="Min",Zs="Minimum",gc="MirrorPad",al="Mod",Gd="Multinomial",Qs="Multiply",rl="Neg",sl="NotEqual",il="NonMaxSuppressionV3",ol="NonMaxSuppressionV4",ll="NonMaxSuppressionV5",ul="OnesLike",ei="OneHot",cl="Pack",ti="PadV2",Z_="Pool",ni="Pow",ai="Prelu",pl="Prod",yc="Range",Hd="Real",dl="Reciprocal",ri="Relu",hl="Reshape",bc="ResizeNearestNeighbor",jd="ResizeNearestNeighborGrad",si="ResizeBilinear",qd="ResizeBilinearGrad",ii="Relu6",oi="Reverse",li="Round",ui="Rsqrt",ml="ScatterNd",fl="Select",gl="Selu",yl="Slice",ci="Sin",bl="Sinh",xl="Sign",pi="Sigmoid",vl="Softplus",di="Sqrt",hi="Sum",xc="SpaceToBatchND",wl="SplitV",mi="Softmax",fi="SquaredDifference",vc="Square",gi="Sub",Kd="SparseToDense",kl="StridedSlice",Il="Tan",yi="Tanh",Hr="Tile",Nl="TopK",bi="Transpose",Xd="Unique",Tl="Unpack",wc="UnsortedSegmentSum",Sl="ZerosLike",Cl="Step",Yd="FromPixels",El="RotateWithOffset",xi="_FusedMatMul",vi="FusedConv2D",wi="FusedDepthwiseConv2D",_l=t0("kernelRegistry",()=>new Map),kc=t0("gradRegistry",()=>new Map);function jg(e,t){let n=Hg(e,t);return _l.get(n)}function qg(e){return kc.get(e)}function Jd(e){let t=_l.entries(),n=[];for(;;){let{done:a,value:r}=t.next();if(a)break;let[s,i]=r,[o]=s.split("_");o===e&&n.push(i)}return n}function Ic(e){let{kernelName:t,backendName:n}=e,a=Hg(t,n);_l.has(a)&&console.warn(`The kernel '${t}' for backend '${n}' is already registered`),_l.set(a,e)}function r0(e){let{kernelName:t}=e;kc.has(t)&&ee().getBool("DEBUG")&&console.warn(`Overriding the gradient for '${t}'`),kc.set(t,e)}function Q_(e,t){let n=Hg(e,t);if(!_l.has(n))throw new Error(`The kernel '${e}' for backend '${t}' is not registered`);_l.delete(n)}function eF(e){if(!kc.has(e))throw new Error(`The gradient '${e}' for backend is not registered`);kc.delete(e)}function tF(e,t){Jd(e).forEach(n=>{let a=Object.assign({},n,{backendName:t});Ic(a)})}function Hg(e,t){return`${t}_${e}`}var k={};Oe(k,{arraysEqual:()=>gr,assert:()=>F,assertNonNegativeIntegerDimensions:()=>Wg,assertNonNull:()=>Cs,assertShapesMatch:()=>rt,bytesFromStringArray:()=>Kw,bytesPerElement:()=>qw,checkConversionForErrors:()=>Gw,clamp:()=>ac,computeStrides:()=>To,createScalarValue:()=>nF,createShuffledIndices:()=>W_,decodeString:()=>Qd,distSquared:()=>O_,encodeString:()=>Nc,fetch:()=>aF,flatten:()=>Es,getArrayFromDType:()=>Uw,getTypedArrayFromDType:()=>Vw,hasEncodingLoss:()=>jw,indexToLoc:()=>j_,inferDtype:()=>yd,inferFromImplicitShape:()=>U_,isBoolean:()=>Xw,isFunction:()=>Vr,isInt:()=>qt,isNumber:()=>Yw,isPromise:()=>Vg,isScalarShape:()=>L_,isString:()=>Wr,isTypedArray:()=>un,isValidDtype:()=>Hw,locToIndex:()=>H_,makeOnesTypedArray:()=>Bg,makeZerosNestedTypedArray:()=>G_,makeZerosTypedArray:()=>xd,nearestDivisor:()=>bd,nearestLargerEven:()=>M_,now:()=>Kg,parseAxisParam:()=>la,randUniform:()=>P_,repeatedTry:()=>V_,rightPad:()=>rc,shuffle:()=>Bw,sizeFromShape:()=>zt,sizeToSquarishShape:()=>B_,squeezeShape:()=>Ww,sum:()=>R_,tanh:()=>z_,toNestedArray:()=>So,toTypedArray:()=>Zd});function nF(e,t){return t==="string"?Nc(e):Zd([e],t)}function rF(e,t){return e instanceof Float32Array&&t==="float32"||e instanceof Int32Array&&t==="int32"||e instanceof Uint8Array&&t==="bool"}function Zd(e,t){if(t==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(e)&&(e=Es(e)),ee().getBool("DEBUG")&&Gw(e,t),rF(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 a=0;a{a=n()},s=this.backendTimer.time(r);if(ee().getBool("CHECK_COMPUTATION_FOR_ERRORS"))for(let i=0;i{sF(l,o.dtype,e)})}return{kernelName:e,outputs:a,inputs:t,timeMs:s.then(i=>i.kernelMs),extraInfo:s.then(i=>i.getExtraProfileInfo!=null?i.getExtraProfileInfo():"")}}logKernelProfile(e){let{kernelName:t,outputs:n,timeMs:a,inputs:r,extraInfo:s}=e;n.forEach(i=>{Promise.all([i.data(),a,s]).then(o=>{this.logger.logKernelProfile(t,i,o[0],o[1],r,o[2])})})}};function sF(e,t,n){if(t!=="float32")return!1;for(let a=0;a0?m:""} `}}console.log(`%c${o} %c${i} %c${l}D ${u} %c${c} %c${p} %c${s}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}};function lF(e,t,n){let a={},r={};for(let l=0;la[f.id]=!0),h=!0,r[c.id]=!0;break}if(h)break}}let s={};s[n.id]=!0;let i={};for(let l=e.length-1;l>=0;l--){let c=e[l],u=c.inputs;for(let p=0;p=0;r--){let s=t[r],i=[];if(s.outputs.forEach(l=>{let c=e[l.id];c!=null?i.push(c):i.push(null)}),s.gradient==null)throw new Error(`Cannot compute gradient: gradient function not found for ${s.kernelName}.`);let o=s.gradient(i);for(let l in s.inputs){if(!(l in o))throw new Error(`Cannot backprop through input ${l}. Available gradients found: ${Object.keys(o)}.`);let c=n(()=>o[l]());if(c.dtype!=="float32")throw new Error(`Error in gradient for op ${s.kernelName}. The gradient of input ${l} must have 'float32' dtype, but has '${c.dtype}'`);let u=s.inputs[l];if(!gr(c.shape,u.shape))throw new Error(`Error in gradient for op ${s.kernelName}. The gradient of input '${l}' has shape '${c.shape}', which does not match the shape of the input '${u.shape}'`);if(e[u.id]==null)e[u.id]=c;else{let p=e[u.id];e[u.id]=a(p,c),p.dispose()}}}}var s0=20,Tc=3,Xg=7;function pF(e,t,n,a){let r=To(t),s=cF(e,t,n,r),i=t.length,o=eh(e,t,n,r,s),l=["Tensor"];return a&&(l.push(` dtype: ${n}`),l.push(` rank: ${i}`),l.push(` shape: [${t}]`),l.push(" values:")),l.push(o.map(c=>" "+c).join(` +`)),l.join(` +`)}function cF(e,t,n,a){let r=zt(t),s=a[a.length-1],i=new Array(s).fill(0),o=t.length,l=n==="complex64"?Cc(e):e;if(o>1)for(let c=0;cs0){let g=Tc*i,y=Array.from(e.slice(0,g)),b=Array.from(e.slice((o-Tc)*i,o*i));return n==="complex64"&&(y=Cc(y),b=Cc(b)),["["+y.map((x,v)=>Sc(x,r[v],n)).join(", ")+", ..., "+b.map((x,v)=>Sc(x,r[o-Tc+v],n)).join(", ")+"]"]}let f=n==="complex64"?Cc(e):Array.from(e);return["["+f.map((g,y)=>Sc(g,r[y],n)).join(", ")+"]"]}let c=t.slice(1),u=a.slice(1),p=a[0]*i,d=[];if(o>s0){for(let f=0;f`Length of values '${a}' 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||Uw(t,this.size),this.strides=To(e)}set(e,...t){t.length===0&&(t=[0]),F(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 a of e){if(a<0||a>=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 a=0;aQd(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=Ua().readSync(this.dataId);if(this.dtype==="string")try{return e.map(t=>Qd(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 Ua().read(this.dataId);return this.dtype==="string"?e:new Uint8Array(e.buffer)}dispose(){this.isDisposed||(Ua().disposeTensor(this),this.isDisposedInternal=!0)}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(e=!1){return Fl.print(this,e)}clone(){return this.throwIfDisposed(),Fl.clone(this)}toString(e=!1){let t=this.dataSync();return pF(t,this.shape,this.dtype,e)}cast(e){return this.throwIfDisposed(),Fl.cast(this,e)}variable(e=!0,t,n){return this.throwIfDisposed(),Ua().makeVariable(this,e,t,n)}};Object.defineProperty(z,Symbol.hasInstance,{value:e=>!!e&&e.data!=null&&e.dataSync!=null&&e.throwIfDisposed!=null});var jr=class extends z{constructor(e,t,n,a){super(e.shape,e.dtype,e.dataId,a);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(!gr(e.shape,this.shape))throw new Error(`shape of the new value (${e.shape}) and previous value (${this.shape}) must match`);Ua().disposeTensor(this),this.dataId=e.dataId,Ua().incRef(this,null)}dispose(){Ua().disposeVariable(this),this.isDisposedInternal=!0}};Object.defineProperty(jr,Symbol.hasInstance,{value:e=>e instanceof z&&e.assign!=null&&e.assign instanceof Function});var Na={};Oe(Na,{assertTypesMatch:()=>o0,getTensorsInContainer:()=>Yg,isTensorInList:()=>gF,makeTypesMatch:()=>Tt});var Jg;(function(e){e.R0="R0",e.R1="R1",e.R2="R2",e.R3="R3",e.R4="R4",e.R5="R5",e.R6="R6"})(Jg||(Jg={}));var Zg;(function(e){e.float32="float32",e.int32="int32",e.bool="int32",e.complex64="complex64"})(Zg||(Zg={}));var Qg;(function(e){e.float32="float32",e.int32="int32",e.bool="bool",e.complex64="complex64"})(Qg||(Qg={}));var ey;(function(e){e.float32="float32",e.int32="float32",e.bool="float32",e.complex64="complex64"})(ey||(ey={}));var ty;(function(e){e.float32="complex64",e.int32="complex64",e.bool="complex64",e.complex64="complex64"})(ty||(ty={}));var yF={float32:ey,int32:Zg,bool:Qg,complex64:ty};function ua(e,t){if(e==="string"||t==="string"){if(e==="string"&&t==="string")return"string";throw new Error(`Can not upcast ${e} with ${t}`)}return yF[e][t]}function th(e){return ua(e,"int32")}function Tt(e,t){if(e.dtype===t.dtype)return[e,t];let n=ua(e.dtype,t.dtype);return[e.cast(n),t.cast(n)]}function o0(e,t){F(e.dtype===t.dtype,()=>`The dtypes of the first(${e.dtype}) and second(${t.dtype}) input must match`)}function gF(e,t){return t.some(n=>n.id===e.id)}function Yg(e){let t=[],n=new Set;return l0(e,t,n),t}function l0(e,t,n){if(e==null)return;if(e instanceof z){t.push(e);return}if(!bF(e))return;let a=e;for(let r in a){let s=a[r];n.has(s)||(n.add(s),l0(s,t,n))}}function bF(e){return Array.isArray(e)||typeof e=="object"}var u0=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()}},Ec=class{constructor(e){this.ENV=e,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new u0}async ready(){if(this.pendingBackendInit!=null)return this.pendingBackendInit.then(()=>{});if(this.backendInstance!=null)return;let e=this.getSortedBackends();for(let t=0;t{e.setupFunc!=null&&e.setupFunc(this.backendInstance)})}disposeRegisteredKernels(e){Jd(e).forEach(t=>{t.disposeFunc!=null&&t.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 nc)&&typeof n.then=="function"){let a=++this.pendingBackendInitId,r=n.then(s=>a(athis.registryFactory[t].priority-this.registryFactory[e].priority)}initializeBackendsAndReturnBest(){let e=this.getSortedBackends();for(let t=0;tthis.startScope(n),()=>this.endScope(a),()=>(a=t(),a instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),a))}scopedRun(e,t,n){e();try{let a=n();return t(),a}catch(a){throw t(),a}}nextTensorId(){return Ec.nextTensorId++}nextVariableId(){return Ec.nextVariableId++}clone(e){let t=this.makeTensorFromDataId(e.dataId,e.shape,e.dtype),n={x:e},a=s=>({x:()=>{let i="float32",o={x:s},l={dtype:i};return P.runKernelFunc(c=>c.cast(s,i),o,null,Ds,l)}}),r=[];return this.addTapeNode(this.state.activeScope.name,n,[t],a,r,{}),t}runKernel(e,t,n,a,r){let s=null,i=null;return this.runKernelFunc(s,t,i,e,n,a,r)}shouldCheckForMemLeaks(){return this.ENV.getBool("IS_TEST")}checkKernelForMemLeak(e,t,n){let a=this.backend.numDataIds(),r=0;n.forEach(o=>{r+=o.dtype==="complex64"?3:1});let s=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],i=a-t-r-s;if(i>0)throw new Error(`Backend '${this.backendName}' has an internal memory leak (${i} data ids) after running '${e}'`)}runKernelFunc(e,t,n,a,r,s,i){let o,l=[],c=this.isTapeOn();a==null&&(a=this.state.activeScope!=null?this.state.activeScope.name:"");let u=this.state.numBytes,p=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);let d;this.backendName==null&&this.backend;let h=jg(a,this.backendName),m;if(h!=null)d=()=>{let g=this.backend.numDataIds();m=h.kernelFunc({inputs:t,attrs:r,backend:this.backend});let y=Array.isArray(m)?m:[m];this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(a,g,y);let b=y.map(x=>{if(x.rank!=null)return x;let{dataId:v,shape:N,dtype:T}=x;return this.makeTensorFromDataId(v,N,T)});if(c){let x=this.getTensorsForGradient(a,t,b);if(x==null){i==null&&(i=[]);let v=b.filter((N,T)=>i[T]);x=(s||[]).slice().concat(v)}l=this.saveTensorsForBackwardMode(x)}return b};else{if(e==null)throw new Error(`Error running ${a}: Neither modular kernel nor forward func passed`);let g=y=>{!c||(l=y.map(b=>this.keep(this.clone(b))))};d=()=>{let y=this.backend.numDataIds();m=this.tidy(()=>e(this.backend,g));let b=Array.isArray(m)?m:[m];return this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(a,y,b),b}}let f;return this.scopedRun(()=>this.state.kernelDepth++,()=>this.state.kernelDepth--,()=>{!this.ENV.getBool("DEBUG")&&!this.state.profiling?o=d():(f=this.profiler.profileKernel(a,t,()=>d()),this.ENV.getBool("DEBUG")&&this.profiler.logKernelProfile(f),o=f.outputs)}),c&&this.addTapeNode(a,t,o,n,l,r),this.state.profiling&&this.state.activeProfile.kernels.push({name:a,bytesAdded:this.state.numBytes-u,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-p,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(t).map(g=>t[g]!=null?t[g].shape:null),outputShapes:o.map(g=>g.shape),kernelTimeMs:f.timeMs,extraInfo:f.extraInfo}),Array.isArray(m)?o:o[0]}saveTensorsForBackwardMode(e){return e.map(t=>this.keep(this.clone(t)))}getTensorsForGradient(e,t,n){let a=qg(e);if(a!=null){let r=a.inputsToSave||[],s=a.outputsToSave||[],i;a.saveAllInputs?(F(Array.isArray(t),()=>"saveAllInputs is true, expected inputs to be an array."),i=Object.keys(t).map(l=>t[l])):i=r.map(l=>t[l]);let o=n.filter((l,c)=>s[c]);return i.concat(o)}return null}makeTensor(e,t,n,a){if(e==null)throw new Error("Values passed to engine.makeTensor() are null");n=n||"float32",a=a||this.backend;let r=e;n==="string"&&Wr(e[0])&&(r=e.map(o=>Nc(o)));let s=a.write(r,t,n),i=new z(t,n,s,this.nextTensorId());if(this.incRef(i,a),n==="string"){let o=this.state.tensorInfo.get(s),l=Kw(r);this.state.numBytes+=l-o.bytes,o.bytes=l}return i}makeTensorFromDataId(e,t,n,a){n=n||"float32";let r=new z(t,n,e,this.nextTensorId());return this.incRef(r,a),r}makeVariable(e,t=!0,n,a){n=n||this.nextVariableId().toString(),a!=null&&a!==e.dtype&&(e=e.cast(a));let r=new jr(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}incRef(e,t){let n=this.state.tensorInfo.has(e.dataId)?this.state.tensorInfo.get(e.dataId).refCount:0;if(this.state.numTensors++,e.dtype==="string"&&this.state.numStringTensors++,n===0){this.state.numDataBuffers++;let a=0;e.dtype!=="complex64"&&e.dtype!=="string"&&(a=e.size*qw(e.dtype)),this.state.tensorInfo.set(e.dataId,{backend:t||this.backend,dtype:e.dtype,shape:e.shape,bytes:a,refCount:0}),this.state.numBytes+=a}this.state.tensorInfo.get(e.dataId).refCount++,e instanceof jr||this.track(e)}disposeTensor(e){if(!this.state.tensorInfo.has(e.dataId))return;this.state.numTensors--,e.dtype==="string"&&this.state.numStringTensors--;let t=this.state.tensorInfo.get(e.dataId);t.refCount<=1?(e.dtype!=="complex64"&&(this.state.numBytes-=t.bytes),this.state.numDataBuffers--,t.backend.disposeData(e.dataId),this.state.tensorInfo.delete(e.dataId)):this.state.tensorInfo.get(e.dataId).refCount--}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(a=>a.totalBytesSnapshot)),this.state.activeProfile.newBytes=this.state.numBytes-t,this.state.activeProfile.newTensors=this.state.numTensors-n;for(let a of this.state.activeProfile.kernels)a.kernelTimeMs=await a.kernelTimeMs,a.extraInfo=await a.extraInfo;return this.state.activeProfile}isTapeOn(){return this.state.gradientDepth>0&&this.state.kernelDepth===0}addTapeNode(e,t,n,a,r,s){let i={id:this.state.nextTapeNodeId++,kernelName:e,inputs:t,outputs:n,saved:r},o=qg(e);o!=null&&(a=o.gradFunc),a!=null&&(i.gradient=l=>(l=l.map((c,u)=>{if(c==null){let p=n[u],d=xd(p.size,p.dtype);return this.makeTensor(d,p.shape,p.dtype)}return c}),a(l.length>1?l:l[0],r,s))),this.state.activeTape.push(i)}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=Yg(e),n=new Set(t.map(r=>r.id));for(let r=0;r{!r.kept&&r.scopeId===a.id&&this.track(r)})}gradients(e,t,n,a=!1){if(F(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));F(r instanceof z,()=>"The result y returned by f() must be a tensor.");let s=lF(this.state.activeTape,t,r);if(!a&&s.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 i={};i[r.id]=n==null?xF(r.shape):n,uF(i,s,l=>this.tidy(l),vF);let o=t.map(l=>i[l.id]);return this.state.gradientDepth===0&&(this.state.activeTape.forEach(l=>{for(let c of l.saved)c.dispose()}),this.state.activeTape=null),{value:r,grads:o}})}customGrad(e){return F(Vr(e),()=>"The f passed in customGrad(f) must be a function."),(...t)=>{F(t.every(r=>r instanceof z),()=>"The args passed in customGrad(f)(x1, x2,...) must all be tensors");let n,a={};return t.forEach((r,s)=>{a[s]=r}),this.runKernelFunc((r,s)=>(n=e(...t,s),F(n.value instanceof z,()=>"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"),F(Vr(n.gradFunc),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."),n.value),a,(r,s)=>{let i=n.gradFunc(r,s),o=Array.isArray(i)?i:[i];F(o.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(...)."),F(o.every(c=>c instanceof z),()=>"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 l={};return o.forEach((c,u)=>{l[u]=()=>c}),l})}}readSync(e){return this.state.tensorInfo.get(e).backend.readSync(e)}read(e){return this.state.tensorInfo.get(e).backend.read(e)}async time(e){let t=Kg(),n=await this.backend.time(e);return n.wallMs=Kg()-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 u0;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}};Ec.nextTensorId=0;Ec.nextVariableId=0;function xF(e){let t=Bg(zt(e),"float32");return P.makeTensor(t,e,"float32")}function c0(){let e=e0();if(e._tfengine==null){let t=new Qw(e);e._tfengine=new Ec(t)}return Y_(e._tfengine.ENV),hF(()=>e._tfengine),e._tfengine}var P=c0();function vF(e,t){let n={a:e,b:t};return P.runKernel(Ur,n)}var nh={};Oe(nh,{isBrowser:()=>p0,isMobile:()=>wF});function kF(){return typeof navigator!="undefined"&&navigator!=null}function wF(){if(kF()){let e=navigator.userAgent||navigator.vendor||window.opera;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(e)||/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(e.substr(0,4))}return!1}function p0(){return typeof window!="undefined"&&window.document!=null||typeof WorkerGlobalScope!="undefined"}var Ga=ee();Ga.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.")});Ga.registerFlag("IS_BROWSER",()=>p0());Ga.registerFlag("IS_NODE",()=>typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined");Ga.registerFlag("IS_CHROME",()=>typeof navigator!="undefined"&&navigator!=null&&navigator.userAgent!=null&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor));Ga.registerFlag("PROD",()=>!1);Ga.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",()=>Ga.getBool("DEBUG"));Ga.registerFlag("DEPRECATION_WARNINGS_ENABLED",()=>!0);Ga.registerFlag("IS_TEST",()=>!1);Ga.registerFlag("CHECK_COMPUTATION_FOR_ERRORS",()=>!0);function Ha(e,t){let n=e;if(un(e))return t==="string"?[]:[e.length];if(!Array.isArray(e))return[];let a=[];for(;Array.isArray(n)||un(n)&&t!=="string";)a.push(n.length),n=n[0];return Array.isArray(e)&&ee().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&d0(e,a,[]),a}function d0(e,t,n){if(n=n||[],!Array.isArray(e)&&!un(e)){F(t.length===0,()=>`Element arr[${n.join("][")}] is a primitive, but should be an array/TypedArray of ${t[0]} elements`);return}F(t.length>0,()=>`Element arr[${n.join("][")}] should be a primitive, but is an array of ${e.length} elements`),F(e.length===t[0],()=>`Element arr[${n.join("][")}] should have ${t[0]} elements, but has ${e.length} elements`);let a=t.slice(1);for(let r=0;r=0&&(r=a),h0(a,r,t,n),e==null||!un(e)&&!Array.isArray(e)&&typeof e!="number"&&typeof e!="boolean"&&typeof e!="string"){let o=e==null?"null":e.constructor.name;throw new Error(`Argument '${t}' passed to '${n}' must be a Tensor or TensorLike, but got '${o}'`)}let s=Ha(e,r);!un(e)&&!Array.isArray(e)&&(e=[e]);let i=r!=="string"?Zd(e,r):Es(e,[],!0);return P.makeTensor(i,s,r)}function _c(e,t,n,a="numeric"){if(!Array.isArray(e))throw new Error(`Argument ${t} passed to ${n} must be a \`Tensor[]\` or \`TensorLike[]\``);return e.map((r,s)=>C(r,`${t}[${s}]`,n,a))}var m0="__op";function R(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],a=e[n];n.endsWith("_")&&(n=n.substring(0,n.length-1)),n=n+m0;let r=(...s)=>{P.startScope(n);try{let i=a(...s);return Vg(i)&&console.error("Cannot return a Promise inside of tidy."),P.endScope(i),i}catch(i){throw P.endScope(null),i}};return Object.defineProperty(r,"name",{value:n,configurable:!0}),r}function IF(e,t){let n=C(e,"real","complex"),a=C(t,"imag","complex");rt(n.shape,a.shape,`real and imag shapes, ${n.shape} and ${a.shape}, must match in call to tf.complex().`);let r={real:n,imag:a};return P.runKernel(Td,r)}var qr=R({complex_:IF});function Kr(e,t,n,a){if(a==null&&(a=yd(e)),a==="complex64")throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(!un(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){Wg(t);let r=zt(t),s=zt(n);F(r===s,()=>`Based on the provided shape, [${t}], the tensor should have ${r} values but has ${s}`);for(let i=0;i`Error creating a new Tensor. Inferred shape (${n}) does not match the provided shape (${t}). `)}}return!un(e)&&!Array.isArray(e)&&(e=[e]),t=t||n,e=a!=="string"?Zd(e,a):Es(e,[],!0),P.makeTensor(e,t,a)}function Xn(e,t,n){let a=Ha(e,n);return Kr(e,t,a,n)}var ny={float32:4,float16:2,int32:4,uint16:2,uint8:1,bool:1,complex64:8},ah=4;async function TF(e,t){let n=[],a=[],r=Array.isArray(e)?e.map(i=>i.name):Object.keys(e);for(let i=0;i{let d=await l.bytes(),h=d.reduce((g,y)=>g+y.length,0)+ah*d.length,m=new Uint8Array(h),f=0;for(let g=0;g{if(t+=s.byteLength,n.push(s.byteLength===s.buffer.byteLength?s:new s.constructor(s)),!(s instanceof Float32Array||s instanceof Int32Array||s instanceof Uint8Array))throw new Error(`Unsupported TypedArray subtype: ${s.constructor.name}`)});let a=new Uint8Array(t),r=0;return n.forEach(s=>{a.set(new Uint8Array(s.buffer),r),r+=s.byteLength}),a.buffer}var ay=typeof Buffer!="undefined"&&(typeof Blob=="undefined"||typeof atob=="undefined"||typeof btoa=="undefined");function g0(e){return ay?Buffer.byteLength(e):new Blob([e]).size}function CF(e){if(ay)return Buffer.from(e).toString("base64");let t=new Uint8Array(e),n="";for(let a=0,r=t.length;a{t+=r.byteLength});let n=new Uint8Array(t),a=0;return e.forEach(r=>{n.set(new Uint8Array(r),a),a+=r.byteLength}),n.buffer}function y0(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 Fc(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:g0(JSON.stringify(e.modelTopology)),weightSpecsBytes:e.weightSpecs==null?0:g0(JSON.stringify(e.weightSpecs)),weightDataBytes:e.weightData==null?0:e.weightData.byteLength}}function _F(){let e=n=>{let a=n<<13,r=0;for(;(a&8388608)==0;)r-=8388608,a<<=1;return a&=~8388608,r+=947912704,a|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 FF(){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 AF(){let e=new Uint32Array(64);for(let t=0;t<64;t++)e[t]=1024;return e[0]=e[32]=0,e}function SF(){let e=_F(),t=FF(),n=AF();return a=>{let r=new ArrayBuffer(4*a.length),s=new Uint32Array(r);for(let i=0;i>10]+(o&1023)]+t[o>>10];s[i]=l}return new Float32Array(r)}}var At=class{constructor(){this.saveRouters=[],this.loadRouters=[]}static getInstance(){return At.instance==null&&(At.instance=new At),At.instance}static registerSaveRouter(e){At.getInstance().saveRouters.push(e)}static registerLoadRouter(e){At.getInstance().loadRouters.push(e)}static getSaveHandlers(e){return At.getHandlers(e,"save")}static getLoadHandlers(e,t){return At.getHandlers(e,"load",t)}static getHandlers(e,t,n){let a=[];return(t==="load"?At.getInstance().loadRouters:At.getInstance().saveRouters).forEach(r=>{let s=r(e,n);s!==null&&a.push(s)}),a}},$F=e=>At.registerSaveRouter(e),DF=e=>At.registerLoadRouter(e),MF=e=>At.getSaveHandlers(e),RF=(e,t)=>At.getLoadHandlers(e,t),sy="tensorflowjs",iy=1,ki="models_store",Xr="model_info_store";function b0(){if(!ee().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 oy(e){let t=e.result;t.createObjectStore(ki,{keyPath:"modelPath"}),t.createObjectStore(Xr,{keyPath:"modelPath"})}var Ii=class{constructor(e){if(this.indexedDB=b0(),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,a)=>{let r=this.indexedDB.open(sy,iy);r.onupgradeneeded=()=>oy(r),r.onsuccess=()=>{let s=r.result;if(t==null){let i=s.transaction(ki,"readonly"),o=i.objectStore(ki).get(this.modelPath);o.onsuccess=()=>{if(o.result==null)return s.close(),a(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`));n(o.result.modelArtifacts)},o.onerror=l=>(s.close(),a(o.error)),i.oncomplete=()=>s.close()}else{let i=Fc(t),o=s.transaction(Xr,"readwrite"),l=o.objectStore(Xr),c=l.put({modelPath:this.modelPath,modelArtifactsInfo:i}),u;c.onsuccess=()=>{u=s.transaction(ki,"readwrite");let p=u.objectStore(ki).put({modelPath:this.modelPath,modelArtifacts:t,modelArtifactsInfo:i});p.onsuccess=()=>n({modelArtifactsInfo:i}),p.onerror=d=>{l=o.objectStore(Xr);let h=l.delete(this.modelPath);h.onsuccess=()=>(s.close(),a(p.error)),h.onerror=m=>(s.close(),a(p.error))}},c.onerror=p=>(s.close(),a(c.error)),o.oncomplete=()=>{u==null?s.close():u.oncomplete=()=>s.close()}}},r.onerror=s=>a(r.error)})}};Ii.URL_SCHEME="indexeddb://";var x0=e=>ee().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(Ii.URL_SCHEME)?PF(e.slice(Ii.URL_SCHEME.length)):null;At.registerSaveRouter(x0);At.registerLoadRouter(x0);function PF(e){return new Ii(e)}function OF(e){return e.startsWith(Ii.URL_SCHEME)?e.slice(Ii.URL_SCHEME.length):e}var LF=class{constructor(){this.indexedDB=b0()}async listModels(){return new Promise((e,t)=>{let n=this.indexedDB.open(sy,iy);n.onupgradeneeded=()=>oy(n),n.onsuccess=()=>{let a=n.result,r=a.transaction(Xr,"readonly"),s=r.objectStore(Xr).getAll();s.onsuccess=()=>{let i={};for(let o of s.result)i[o.modelPath]=o.modelArtifactsInfo;e(i)},s.onerror=i=>(a.close(),t(s.error)),r.oncomplete=()=>a.close()},n.onerror=a=>t(n.error)})}async removeModel(e){return e=OF(e),new Promise((t,n)=>{let a=this.indexedDB.open(sy,iy);a.onupgradeneeded=()=>oy(a),a.onsuccess=()=>{let r=a.result,s=r.transaction(Xr,"readwrite"),i=s.objectStore(Xr),o=i.get(e),l;o.onsuccess=()=>{if(o.result==null)return r.close(),n(new Error(`Cannot find model with path '${e}' in IndexedDB.`));{let c=i.delete(e),u=()=>{l=r.transaction(ki,"readwrite");let p=l.objectStore(ki).delete(e);p.onsuccess=()=>t(o.result.modelArtifactsInfo),p.onerror=d=>n(o.error)};c.onsuccess=u,c.onerror=p=>(u(),r.close(),n(o.error))}},o.onerror=c=>(r.close(),n(o.error)),s.oncomplete=()=>{l==null?r.close():l.oncomplete=()=>r.close()}},a.onerror=r=>n(a.error)})}},yr="/",Al="tensorflowjs_models",v0="info",zF="model_topology",BF="weight_specs",WF="weight_data",VF="model_metadata";function w0(e){return{info:[Al,e,v0].join(yr),topology:[Al,e,zF].join(yr),weightSpecs:[Al,e,BF].join(yr),weightData:[Al,e,WF].join(yr),modelMetadata:[Al,e,VF].join(yr)}}function UF(e){let t=e.split(yr);if(t.length<3)throw new Error(`Invalid key format: ${e}`);return t.slice(1,t.length-1).join(yr)}function GF(e){return e.startsWith(Ni.URL_SCHEME)?e.slice(Ni.URL_SCHEME.length):e}var Ni=class{constructor(e){if(!ee().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=w0(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),a=Fc(e);try{this.LS.setItem(this.keys.info,JSON.stringify(a)),this.LS.setItem(this.keys.topology,t),this.LS.setItem(this.keys.weightSpecs,n),this.LS.setItem(this.keys.weightData,CF(e.weightData));let r={format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy};return e.signature!=null&&(r.signature=e.signature),e.userDefinedMetadata!=null&&(r.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(r.modelInitializer=e.modelInitializer),this.LS.setItem(this.keys.modelMetadata,JSON.stringify(r)),{modelArtifactsInfo:a}}catch(r){throw this.LS.removeItem(this.keys.info),this.LS.removeItem(this.keys.topology),this.LS.removeItem(this.keys.weightSpecs),this.LS.removeItem(this.keys.weightData),this.LS.removeItem(this.keys.modelMetadata),new Error(`Failed to save model '${this.modelPath}' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes=${a.modelTopologyBytes}, weightSpecsBytes=${a.weightSpecsBytes}, weightDataBytes=${a.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 a=JSON.parse(this.LS.getItem(this.keys.weightSpecs));if(a==null)throw new Error(`In local storage, the weight specs of model '${this.modelPath}' are missing.`);t.weightSpecs=a;let r=this.LS.getItem(this.keys.modelMetadata);if(r!=null){let i=JSON.parse(r);t.format=i.format,t.generatedBy=i.generatedBy,t.convertedBy=i.convertedBy,i.signature!=null&&(t.signature=i.signature),i.userDefinedMetadata!=null&&(t.userDefinedMetadata=i.userDefinedMetadata),i.modelInitializer!=null&&(t.modelInitializer=i.modelInitializer)}let s=this.LS.getItem(this.keys.weightData);if(s==null)throw new Error(`In local storage, the binary weight values of model '${this.modelPath}' are missing.`);return t.weightData=EF(s),t}};Ni.URL_SCHEME="localstorage://";var k0=e=>ee().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(Ni.URL_SCHEME)?HF(e.slice(Ni.URL_SCHEME.length)):null;At.registerSaveRouter(k0);At.registerLoadRouter(k0);function HF(e){return new Ni(e)}var jF=class{constructor(){F(ee().getBool("IS_BROWSER"),()=>"Current environment is not a web browser"),F(typeof window=="undefined"||typeof window.localStorage!="undefined",()=>"Current browser does not appear to support localStorage"),this.LS=window.localStorage}async listModels(){let e={},t=Al+yr,n=yr+v0;for(let a=0;a"scheme must not be undefined or null."),e.endsWith($l)&&(e=e.slice(0,e.indexOf($l))),F(e.length>0,()=>"scheme must not be an empty string.");let n=Yn.getInstance();F(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 rh(e){if(e.indexOf($l)===-1)throw new Error(`The url string provided does not contain a scheme. Supported schemes are: ${Yn.getSchemes().join(",")}`);return{scheme:e.split($l)[0],path:e.split($l)[1]}}async function I0(e,t,n=!1){F(e!==t,()=>`Old path and new path are the same: '${e}'`);let a=At.getLoadHandlers(e);F(a.length>0,()=>`Copying failed because no load handler is found for source URL ${e}.`),F(a.length<2,()=>`Copying failed because more than one (${a.length}) load handlers for source URL ${e}.`);let r=a[0],s=At.getSaveHandlers(t);F(s.length>0,()=>`Copying failed because no save handler is found for destination URL ${t}.`),F(s.length<2,()=>`Copying failed because more than one (${a.length}) save handlers for destination URL ${t}.`);let i=s[0],o=rh(e).scheme,l=rh(e).path,c=o===rh(e).scheme,u=await r.load();n&&c&&await Yn.getManager(o).removeModel(l);let p=await i.save(u);return n&&!c&&await Yn.getManager(o).removeModel(l),p.modelArtifactsInfo}async function qF(){let e=Yn.getSchemes(),t={};for(let n of e){let a=await Yn.getManager(n).listModels();for(let r in a){let s=n+$l+r;t[s]=a[r]}}return t}async function KF(e){let t=rh(e);return Yn.getManager(t.scheme).removeModel(t.path)}async function XF(e,t){return I0(e,t,!1)}async function YF(e,t){return I0(e,t,!0)}var JF=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(ee().get("IS_BROWSER")){ee().setPlatform("browser",new JF);try{Yn.registerManager(Ni.URL_SCHEME,new jF)}catch(e){}try{Yn.registerManager(Ii.URL_SCHEME,new LF)}catch(e){}}var ZF={importFetch:()=>b_()},ly,QF=class{constructor(){this.util=require("util"),this.textEncoder=new this.util.TextEncoder}fetch(e,t){return ee().global.fetch!=null?ee().global.fetch(e,t):(ly==null&&(ly=ZF.importFetch()),ly(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)}};ee().get("IS_NODE")&&ee().setPlatform("node",new QF);function Le(e,t="float32",n){return t=t||"float32",Wg(e),new Bt(e,t,n)}function eA(e,t){let n=C(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 a={x:n},r={dtype:t};return P.runKernel(Ds,a,r)}var pe=R({cast_:eA});function tA(e){let t={x:C(e,"x","clone","string_or_numeric")};return P.runKernel(Xo,t)}var Yr=R({clone_:tA});function N0(e,t=!1){console.log(e.toString(t))}c0();var nA={buffer:Le,cast:pe,clone:Yr,print:N0};mF(nA);var Kt={};Oe(Kt,{browserFiles:()=>aA,browserHTTPRequest:()=>sA,concatenateArrayBuffers:()=>ry,copyModel:()=>XF,decodeWeights:()=>f0,encodeWeights:()=>TF,fromMemory:()=>iA,getLoadHandlers:()=>RF,getModelArtifactsInfoForJSON:()=>Fc,getSaveHandlers:()=>MF,http:()=>cy,isHTTPScheme:()=>uy,listModels:()=>qF,loadWeights:()=>rA,moveModel:()=>YF,registerLoadRouter:()=>DF,registerSaveRouter:()=>$F,removeModel:()=>KF,weightsLoaderFactory:()=>T0,withSaveHandler:()=>oA});var lA="model",uA=".json",cA=".weights.bin";function S0(e){return new Promise(t=>setTimeout(t)).then(e)}var Dl=class{constructor(e){if(!ee().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");e.startsWith(Dl.URL_SCHEME)&&(e=e.slice(Dl.URL_SCHEME.length)),(e==null||e.length===0)&&(e=lA),this.modelTopologyFileName=e+uA,this.weightDataFileName=e+cA}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}],a={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,weightsManifest:n};e.signature!=null&&(a.signature=e.signature),e.userDefinedMetadata!=null&&(a.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(a.modelInitializer=e.modelInitializer);let r=window.URL.createObjectURL(new Blob([JSON.stringify(a)],{type:"application/json"})),s=this.jsonAnchor==null?document.createElement("a"):this.jsonAnchor;if(s.download=this.modelTopologyFileName,s.href=r,await S0(()=>s.dispatchEvent(new MouseEvent("click"))),e.weightData!=null){let i=this.weightDataAnchor==null?document.createElement("a"):this.weightDataAnchor;i.download=this.weightDataFileName,i.href=t,await S0(()=>i.dispatchEvent(new MouseEvent("click")))}return{modelArtifactsInfo:Fc(e)}}}};Dl.URL_SCHEME="downloads://";var pA=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.files=e}async load(){let e=this.files[0],t=this.files.slice(1);return new Promise((n,a)=>{let r=new FileReader;r.onload=s=>{let i=JSON.parse(s.target.result),o=i.modelTopology;if(o==null){a(new Error(`modelTopology field is missing from file ${e.name}`));return}t.length===0&&n({modelTopology:o});let l=i.weightsManifest;if(l==null){a(new Error(`weightManifest field is missing from file ${e.name}`));return}let c;try{c=this.checkManifestAndWeightFiles(l,t)}catch(h){a(h);return}let u=[],p=[],d=[];l.forEach(h=>{h.paths.forEach(m=>{p.push(m),d.push(null)}),u.push(...h.weights)}),l.forEach(h=>{h.paths.forEach(m=>{let f=new FileReader;f.onload=g=>{let y=g.target.result,b=p.indexOf(m);if(d[b]=y,d.indexOf(null)===-1){let x={modelTopology:o,weightSpecs:u,weightData:ry(d),format:i.format,generatedBy:i.generatedBy,convertedBy:i.convertedBy};i.signature!=null&&(x.signature=i.signature),i.userDefinedMetadata!=null&&(x.userDefinedMetadata=i.userDefinedMetadata),i.modelInitializer!=null&&(x.modelInitializer=i.modelInitializer),n(x)}},f.onerror=g=>a(`Failed to weights data from file of path '${m}'.`),f.readAsArrayBuffer(c[m])})})},r.onerror=s=>a(`Failed to read model topology and weights manifest JSON from file '${e.name}'. BrowserFiles supports loading Keras-style tf.Model artifacts only.`),r.readAsText(e)})}checkManifestAndWeightFiles(e,t){let n=[],a=t.map(s=>y0(s.name)),r={};for(let s of e)s.paths.forEach(i=>{let o=y0(i);if(n.indexOf(o)!==-1)throw new Error(`Duplicate file basename found in weights manifest: '${o}'`);if(n.push(o),a.indexOf(o)===-1)throw new Error(`Weight file with basename '${o}' is not provided.`);r[i]=t[a.indexOf(o)]});if(n.length!==t.length)throw new Error(`Mismatch in the number of files in weights manifest (${n.length}) and the number of weight files provided (${t.length}).`);return r}},hA=e=>ee().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(Dl.URL_SCHEME)?dA(e.slice(Dl.URL_SCHEME.length)):null;At.registerSaveRouter(hA);function dA(e="model"){return new Dl(e)}function aA(e){return new pA(e)}function C0(e,t,n,a){i(e),n=n==null?0:n,a=a==null?1:a,o(n,a);let r=0,s=l=>(l.then(c=>{let u=n+ ++r/e.length*(a-n);return t(u),c}),l);function i(l){F(l!=null&&Array.isArray(l)&&l.length>0,()=>"promises must be a none empty array")}function o(l,c){F(l>=0&&l<=1,()=>`Progress fraction must be in range [0, 1], but got startFraction ${l}`),F(c>=0&&c<=1,()=>`Progress fraction must be in range [0, 1], but got endFraction ${c}`),F(c>=l,()=>`startFraction must be no more than endFraction, but got startFraction ${l} and endFraction ${c}`)}return Promise.all(e.map(s))}async function E0(e,t){t==null&&(t={});let n=t.fetchFunc==null?ee().platform.fetch:t.fetchFunc,a=e.map(c=>n(c,t.requestInit,{isBinary:!0})),r=0,s=.5,i=(t.onProgress==null?await Promise.all(a):await C0(a,t.onProgress,r,s)).map(c=>c.arrayBuffer()),o=.5,l=1;return t.onProgress==null?await Promise.all(i):await C0(i,t.onProgress,o,l)}async function rA(e,t="",n,a){return T0(r=>E0(r,{requestInit:a}))(e,t,n)}function T0(e){return async(t,n="",a)=>{let r=t.map(()=>!1),s={},i=a!=null?a.map(()=>!1):[],o=[];if(t.forEach((h,m)=>{let f=0;h.weights.forEach(g=>{let y="quantization"in g?g.quantization.dtype:g.dtype,b=ny[y]*zt(g.shape),x=()=>{r[m]=!0,s[m]==null&&(s[m]=[]),s[m].push({manifestEntry:g,groupOffset:f,sizeBytes:b})};a!=null?a.forEach((v,N)=>{v===g.name&&(x(),i[N]=!0)}):x(),o.push(g.name),f+=b})}),!i.every(h=>h)){let h=a.filter((m,f)=>!i[f]);throw new Error(`Could not find weights in manifest with names: ${h.join(", ")}. +Manifest JSON has weights with names: ${o.join(", ")}.`)}let l=r.reduce((h,m,f)=>(m&&h.push(f),h),[]),c=[];l.forEach(h=>{t[h].paths.forEach(m=>{let f=n+(n.endsWith("/")?"":"/")+m;c.push(f)})});let u=await e(c),p={},d=0;return l.forEach(h=>{let m=t[h].paths.length,f=0;for(let x=0;x{let v=g.slice(x.groupOffset,x.groupOffset+x.sizeBytes),N=f0(v,[x.manifestEntry]);for(let T in N)p[T]=N[T]}),d+=m}),p}}var mA="application/octet-stream",fA="application/json",py=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?(F(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=ee().platform.fetch,F(e!=null&&e.length>0,()=>"URL path for http must not be null, undefined or empty."),Array.isArray(e)&&F(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}],a={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,weightsManifest:n};e.signature!=null&&(a.signature=e.signature),e.userDefinedMetadata!=null&&(a.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(a.modelInitializer=e.modelInitializer),t.body.append("model.json",new Blob([JSON.stringify(a)],{type:fA}),"model.json"),e.weightData!=null&&t.body.append("model.weights.bin",new Blob([e.weightData],{type:mA}),"model.weights.bin");let r=await this.fetch(this.path,t);if(r.ok)return{modelArtifactsInfo:Fc(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(h){let m=`Failed to parse model JSON of response from ${this.path}.`;throw this.path.endsWith(".pb")?m+=" 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.":m+=" Please make sure the server is serving valid JSON for this request.",new Error(m)}let n=t.modelTopology,a=t.weightsManifest,r=t.generatedBy,s=t.convertedBy,i=t.format,o=t.signature,l=t.userDefinedMetadata;if(n==null&&a==null)throw new Error(`The JSON from HTTP path ${this.path} contains neither model topology or manifest for weights.`);let c,u;a!=null&&([c,u]=await this.loadWeights(a));let p={modelTopology:n,weightSpecs:c,weightData:u,generatedBy:r,convertedBy:s,format:i};o!=null&&(p.signature=o),l!=null&&(p.userDefinedMetadata=l);let d=t.modelInitializer;return d&&(p.modelInitializer=d),p}async loadWeights(e){let t=Array.isArray(this.path)?this.path[1]:this.path,[n,a]=gA(t),r=this.weightPathPrefix||n,s=[];for(let c of e)s.push(...c.weights);let i=[],o=[];for(let c of e)for(let u of c.paths)this.weightUrlConverter!=null?o.push(this.weightUrlConverter(u)):i.push(r+u+a);this.weightUrlConverter&&i.push(...await Promise.all(o));let l=await E0(i,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress});return[s,ry(l)]}};py.URL_SCHEME_REGEX=/^https?:\/\//;function gA(e){let t=e.lastIndexOf("/"),n=e.lastIndexOf("?"),a=e.substring(0,t),r=n>t?e.substring(n):"";return[a+"/",r]}function uy(e){return e.match(py.URL_SCHEME_REGEX)!=null}var _0=(e,t)=>{if(typeof fetch=="undefined"&&(t==null||t.fetchFunc==null))return null;{let n=!0;if(Array.isArray(e)?n=e.every(a=>uy(a)):n=uy(e),n)return cy(e,t)}return null};At.registerSaveRouter(_0);At.registerLoadRouter(_0);function cy(e,t){return new py(e,t)}function sA(e,t){return cy(e,t)}var dy=class{constructor(e){this.modelArtifacts=e}async load(){return this.modelArtifacts}},yA=class{constructor(e){this.saveHandler=e}async save(e){return this.saveHandler(e)}};function iA(e,t,n,a){return arguments.length===1?e.modelTopology!=null||e.weightSpecs!=null?new dy(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 dy({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 dy({modelTopology:e,weightSpecs:t,weightData:n,trainingConfig:a}))}function oA(e){return new yA(e)}var F0={};Oe(F0,{confusionMatrix:()=>bA});function xA(e,t,n=!1,a=!1){let r=C(e,"a","matMul"),s=C(t,"b","matMul");[r,s]=Tt(r,s);let i={a:r,b:s},o={transposeA:n,transposeB:a};return P.runKernel($s,i,o)}var ze=R({matMul_:xA});function vA(e,t,n=1,a=0){if(t<2)throw new Error(`Error in oneHot: depth must be >=2, but it is ${t}`);let r={indices:C(e,"indices","oneHot","int32")},s={depth:t,onValue:n,offValue:a};return P.runKernel(ei,r,s)}var Ml=R({oneHot_:vA});function wA(e,t){let n=C(e,"x","transpose");if(t==null&&(t=n.shape.map((s,i)=>i).reverse()),F(n.rank===t.length,()=>`Error in transpose: rank of input ${n.rank} must match length of perm ${t}.`),t.forEach(s=>{F(s>=0&&s`All entries in 'perm' must be between 0 and ${n.rank-1} but got ${t}`)}),n.rank<=1)return n.clone();let a={x:n},r={perm:t};return P.runKernel(bi,a,r)}var Ue=R({transpose_:wA});function kA(e,t,n){let a=C(e,"labels","confusionMatrix"),r=C(t,"predictions","confusionMatrix");F(n==null||n>0&&Number.isInteger(n),()=>`If provided, numClasses must be a positive integer, but got ${n}`),F(a.rank===1,()=>`Expected the rank of labels to be 1, but got ${a.rank}`),F(r.rank===1,()=>`Expected the rank of predictions to be 1, but got ${r.rank}`),F(a.shape[0]===r.shape[0],()=>`Mismatch in the number of examples: ${a.shape[0]} vs. ${r.shape[0]}. Labels and predictions should have the same number of elements.`),F(n>0&&Number.isInteger(n),()=>`numClasses is required to be a positive integer, but got ${n}`);let s=Ml(pe(a,"int32"),n),i=Ml(pe(r,"int32"),n),o=Ue(s),l=ze(o,i);return pe(l,"int32")}var bA=R({confusionMatrix_:kA}),Ti={};Oe(Ti,{fromPixels:()=>NA,toPixels:()=>IA});function sh(e,t,n){if(Cs(e),t!=null&&t.length!==3)throw new Error("tensor3d() requires shape to have three numbers");let a=Ha(e,n);if(a.length!==3&&a.length!==1)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(a.length===1&&t==null)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return Kr(e,t,a,n)}var Rl;function TA(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,a=!1,r=!1,s=!1,i=!1,o=!1;if(e.data instanceof Uint8Array)n=!0;else if(typeof ImageData!="undefined"&&e instanceof ImageData)a=!0;else if(typeof HTMLVideoElement!="undefined"&&e instanceof HTMLVideoElement)r=!0;else if(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement)s=!0;else if(e.getContext!=null)i=!0;else if(typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap)o=!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){let d=2;if(r&&e.readyState element.")}if(jg(Yd,P.backendName)!=null){let d={pixels:e},h={numChannels:t};return P.runKernel(Yd,d,h)}let[l,c]=r?[e.videoWidth,e.videoHeight]:[e.width,e.height],u;i?u=e.getContext("2d").getImageData(0,0,l,c).data:a||n?u=e.data:(s||r||o)&&(Rl==null&&(Rl=document.createElement("canvas").getContext("2d")),Rl.canvas.width=l,Rl.canvas.height=c,Rl.drawImage(e,0,0,l,c),u=Rl.getImageData(0,0,l,c).data);let p;if(t===4)p=new Int32Array(u);else{let d=l*c;p=new Int32Array(d*t);for(let h=0;h4||s===2)throw new Error(`toPixels only supports depth of size 1, 3 or 4 but got ${s}`);if(n.dtype!=="float32"&&n.dtype!=="int32")throw new Error(`Unsupported type for toPixels: ${n.dtype}. Please use float32 or int32 tensors.`);let i=await n.data(),o=n.dtype==="float32"?255:1,l=new Uint8ClampedArray(r*a*4);for(let c=0;c1)throw new Error(`Tensor values for a float32 Tensor must be in the range [0 - 1] but encountered ${h}.`)}else if(n.dtype==="int32"&&(h<0||h>255))throw new Error(`Tensor values for a int32 Tensor must be in the range [0 - 255] but encountered ${h}.`);s===1?(u[0]=h*o,u[1]=h*o,u[2]=h*o):u[d]=h*o}let p=c*4;l[p+0]=Math.round(u[0]),l[p+1]=Math.round(u[1]),l[p+2]=Math.round(u[2]),l[p+3]=Math.round(u[3])}if(t!=null){t.width=r,t.height=a;let c=t.getContext("2d"),u=new ImageData(l,r,a);c.putImageData(u,0,0)}return n!==e&&n.dispose(),l}var NA=R({fromPixels_:TA}),hy={};Oe(hy,{prepareAndValidate:()=>A0});function A0(e,t){let n=e.shape.length,a=t.shape.length;if(n<1)throw new Error(`tf.gatherND() expects the input to be rank 1 or higher, but the rank was ${n}.`);if(a<1)throw new Error(`tf.gatherND() expects the indices to be rank 1 or higher, but the rank was ${a}.`);if(t.dtype!=="int32")throw new Error(`tf.gatherND() expects the indices to be int32 type, but the dtype was ${t.dtype}.`);if(t.shape[a-1]>n)throw new Error(`index innermost dimension length must be <= tensor rank; saw: ${t.shape[a-1]} vs. ${n}`);if(zt(e.shape)===0)throw new Error(`Requested more than 0 entries, but input is empty. Input shape: ${e.shape}.`);let r=t.shape,s=r[r.length-1],i=1;for(let p=0;pp/c),1].slice(0,s);return[l,i,c,u]}var my={};Oe(my,{calculateShapes:()=>$0,validateInput:()=>gy,validateUpdateShape:()=>fy});function fy(e,t,n){let a=t.rank>1?t.shape[t.rank-1]:1,r=t.rank>1?t.rank-1:1,s=`Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: ${n.shape}, indices.shape: ${t.shape}, shape: ${e}, sliceDim: ${a}, and batchDim: ${r}.`;if(n.rank1?t.shape[a-1]:1,s=n.length,i=1;for(let p=r;pSA,computeFlatOffset:()=>EA,computeOutShape:()=>D0,getNormalizedAxes:()=>R0,isSliceContinous:()=>CA,maskToAxes:()=>ih,parseSliceParams:()=>W0,sliceInfo:()=>_A,startForAxis:()=>z0,startIndicesWithElidedDims:()=>P0,stopForAxis:()=>B0,stopIndicesWithElidedDims:()=>O0,stridesForAxis:()=>L0,stridesWithElidedDims:()=>M0});function SA(e,t,n){let a=e.shape.length;F(a===t.length,()=>`Error in slice${a}D: Length of begin ${t} must match the rank of the array (${a}).`),F(a===n.length,()=>`Error in slice${a}D: Length of size ${n} must match the rank of the array (${a}).`);for(let r=0;r`Error in slice${a}D: begin[${r}] + size[${r}] (${t[r]+n[r]}) would overflow input.shape[${r}] (${e.shape[r]})`)}function ih(e){let t=[],n=0;for(;e>0;)e&1&&t.push(n),e/=2,n++;return t}function D0(e,t,n){let a=[];for(let r=0;r0){let h=t[0],m=n+1;u=P0(i,h,m,a,e),p=O0(o,h,m,r,e),d=M0(s,h,m,e)}else for(let h=0;h-1)s[o]=0;else{let l=V0(t,n,o),c=a[l];e&1<-1)s[o]=Number.MAX_SAFE_INTEGER;else{let l=V0(t,n,o),c=a[l];e&1<0?i=Number.MIN_SAFE_INTEGER:i=Number.MAX_SAFE_INTEGER);let l=a[r];return i<0&&(i+=l),i=ac(0,i,l-1),i}function B0(e,t,n,a,r,s){let i=t[r],o=n[r]||1;(e&1<0?i=Number.MAX_SAFE_INTEGER:i=Number.MIN_SAFE_INTEGER);let l=a[r];return i<0&&(i+=l),o>0?i=ac(0,i,l):i=ac(-1,i,l-1),i}function CA(e,t,n){let a=n.length;for(let r=0;r1){a=r;break}for(let r=a+1;r0||n[r]!==e[r])return!1;return!0}function EA(e,t){let n=e.length>0?e[e.length-1]:1;for(let a=0;a{F(i!==-1,()=>"slice() does not support negative begin indexing.")});let s;return n==null?s=new Array(r).fill(-1):typeof n=="number"?s=[n,...new Array(r-1).fill(-1)]:n.lengthi>=0?i:(F(i===-1,()=>`Negative size values should be exactly -1 but got ${i} for the slice() size at index ${o}.`),e.shape[o]-a[o])),[a,s]}function _A(e,t,n,a,r,s,i,o,l){let c=t.slice(),u=n.slice(),p=a;a==null&&(p=new Array(c.length));let d=ih(i);if(d.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(i!==0&&o!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(i!==0&&l!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let h=e.length-c.length,m=ih(o),f=e.slice();m.forEach(T=>{c[T]=0,u[T]=1,f.splice(T,0,1)});let{begin:g,end:y,strides:b}=R0(f,d,h,c,u,p,r,s,i);c=g,u=y,p=b;let x=ih(l);x.forEach(T=>{u[T]=c[T]+1,p[T]=1});let v=D0(c,u,p),N=v.filter((T,E)=>x.indexOf(E)===-1);return{nonStrided:p.every(T=>T===1),$begin:c,$end:u,$strides:p,size:v,newShape:f,outShape:N}}var se={};Oe(se,{Serializable:()=>G0,SerializationMap:()=>Si,registerClass:()=>Jr});var G0=class{getClassName(){return this.constructor.className}static fromConfig(e,t){return new e(t)}},Si=class{constructor(){this.classNameMap={}}static getMap(){return Si.instance==null&&(Si.instance=new Si),Si.instance}static register(e){Si.getMap().classNameMap[e.className]=[e,e.fromConfig]}};function Jr(e){F(e.className!=null,()=>"Class being registered does not have the static className property defined."),F(typeof e.className=="string",()=>"className is required to be a string, but got type "+typeof e.className),F(e.className.length>0,()=>"Class being registered has an empty-string as its className, which is disallowed."),Si.register(e)}var H0={};Oe(H0,{TEST_EPSILON_FLOAT16:()=>j0,encodeStrings:()=>q0,expectArrayBuffersEqual:()=>RA,expectArraysClose:()=>FA,expectArraysEqual:()=>$A,expectNumbersClose:()=>DA,expectPromiseToFail:()=>AA,expectValuesInRange:()=>MA,testEpsilon:()=>yy});var PA=.001,j0=.1;function FA(e,t,n){return n==null&&(n=yy()),by(e,t,(a,r)=>xy(a,r,n))}function yy(){return P.backend.floatPrecision()===32?PA:j0}function by(e,t,n){let a=!0;if((un(e)||un(t))&&(a=!1),un(e)&&un(t)&&(a=!0),a){let i=e.constructor.name,o=t.constructor.name;if(i!==o)throw new Error(`Arrays are of different type. Actual: ${i}. Expected: ${o}`)}if(Array.isArray(e)&&Array.isArray(t)){let i=Ha(e),o=Ha(t);if(!gr(i,o))throw new Error(`Arrays have different shapes. Actual: [${i}]. Expected: [${o}]`)}let r=un(e)?e:Es(e),s=un(t)?t:Es(t);if(r.length!==s.length)throw new Error(`Arrays have different lengths actual: ${r.length} vs expected: ${s.length}. +Actual: ${r}. +Expected: ${s}.`);for(let i=0;it.fail(),()=>t())}function $A(e,t){let n=typeof t=="string"||typeof t=="number"||typeof t=="boolean"?[t]:t;return Wr(e)||Wr(e[0])||Wr(t)||Wr(t[0])?by(e,n,(a,r)=>a==r):by(e,t,(a,r)=>xy(a,r,0))}function DA(e,t,n){if(n==null&&(n=yy()),!xy(e,t,n))throw new Error(`Numbers differ: actual === ${e}, expected === ${t}`)}function xy(e,t,n){return!isFinite(e)&&!isFinite(t)?!0:!(isNaN(e)||isNaN(t)||Math.abs(e-t)>n)}function MA(e,t,n){for(let a=0;an)throw new Error(`Value out of range:${e[a]} low: ${t}, high: ${n}`)}function RA(e,t){expect(new Float32Array(e)).toEqual(new Float32Array(t))}function q0(e){for(let t=0;tt.dispose())}function Xt(e){return P.keep(e)}function VA(e){return P.time(e)}function UA(e){return P.setBackend(e)}function GA(){return P.ready()}function HA(){return P.backendName}function jA(e){P.removeBackend(e)}function qA(e){return P.findBackend(e)}function KA(e){return P.findBackendFactory(e)}function lh(e,t,n=1){return P.registerBackend(e,t,n)}function X0(){return P.backend}function XA(e,t){ee().setPlatform(e,t)}function YA(e,t){let n=C(e,"a","add"),a=C(t,"b","add");[n,a]=Tt(n,a);let r={a:n,b:a};return P.runKernel(Ur,r)}var Z=R({add_:YA});function JA(e,t){let n=C(e,"a","floorDiv"),a=C(t,"b","floorDiv");[n,a]=Tt(n,a);let r={a:n,b:a};return P.runKernel(Vs,r)}var uh=R({floorDiv_:JA});function ZA(e,t){let n=C(e,"a","div"),a=C(t,"b","div");if([n,a]=Tt(n,a),n.dtype==="int32"&&a.dtype==="int32")return uh(n,a);let r={a:n,b:a},s={};return P.runKernel(zs,r,s)}var ve=R({div_:ZA});function QA(e,t){let n=C(e,"a","mul"),a=C(t,"b","mul");[n,a]=Tt(n,a);let r={a:n,b:a};return P.runKernel(Qs,r)}var L=R({mul_:QA});function e$(e){let t=C(e,"x","abs");if(t.dtype==="complex64"){let n={x:t};return P.runKernel(lc,n)}else{let n={x:t};return P.runKernel(Co,n)}}var Wt=R({abs_:e$});function t$(e){let t={x:C(e,"x","acos")};return P.runKernel(Eo,t)}var vy=R({acos_:t$});function n$(e){let t={x:C(e,"x","acosh")};return P.runKernel(_o,t)}var wy=R({acosh_:n$});function a$(e){F(Array.isArray(e),()=>"The argument passed to tf.addN() must be a list of tensors"),F(e.length>=1,()=>`Must pass at least one tensor to tf.addN(), but got ${e.length}`);let t=e.map((r,s)=>C(r,`tensors${s}`,"addN")),n=t[0];t.forEach(r=>{if(r.dtype!==n.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),t.forEach(r=>{if(!gr(r.shape,n.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});let a=t;return P.runKernel(_s,a)}var Y0=R({addN_:a$});function r$(e,t=null,n=!1){let a={x:C(e,"x","all","bool")},r={axis:t,keepDims:n};return P.runKernel(vd,a,r)}var ch=R({all_:r$});function s$(e,t=null,n=!1){let a={x:C(e,"x","any","bool")},r={axis:t,keepDims:n};return P.runKernel(wd,a,r)}var Ac=R({any_:s$});function i$(e,t=0){let n={x:C(e,"x","argMax")},a={axis:t};return P.runKernel(Fs,n,a)}var $c=R({argMax_:i$});function o$(e,t=0){let n={x:C(e,"x","argMin")},a={axis:t};return P.runKernel(sc,n,a)}var ky=R({argMin_:o$});function l$(e){let t={x:C(e,"x","asin")};return P.runKernel(Fo,t)}var Iy=R({asin_:l$});function u$(e){let t={x:C(e,"x","asinh")};return P.runKernel(Ao,t)}var Ny=R({asinh_:u$});function c$(e){let t={x:C(e,"x","atan")};return P.runKernel($o,t)}var Ty=R({atan_:c$});function p$(e,t){let n=C(e,"a","atan2"),a=C(t,"b","atan2");[n,a]=Tt(n,a);let r={a:n,b:a};return P.runKernel(Mo,r)}var Sy=R({atan2_:p$});function d$(e){let t={x:C(e,"x","atanh")};return P.runKernel(Do,t)}var Cy=R({atanh_:d$});function h$(e,t,n,a,r="NHWC",s){let i=e[3],o=[...t,i],l=J0(r);return Dc(e,o,n,s,a,null,null,l)}function Z0(e,t,n,a,r,s,i="channelsLast"){let[o,l]=ph(t),c;if(i==="channelsLast")c=[o,l,e[3],e[3]];else if(i==="channelsFirst")c=[o,l,e[1],e[1]];else throw new Error(`Unknown dataFormat ${i}`);return Dc(e,c,n,a,r,s,!1,i)}function m$(e,t,n,a,r,s,i="NDHWC"){let[o,l,c]=Ey(t),u,p;if(i==="NDHWC")p="channelsLast",u=[o,l,c,e[4],e[4]];else if(i==="NCDHW")p="channelsFirst",u=[o,l,c,e[1],e[1]];else throw new Error(`Unknown dataFormat ${i}`);return Q0(e,u,n,a,r,!1,p,s)}function Dc(e,t,n,a,r,s,i=!1,o="channelsLast"){let[l,c,u,p]=[-1,-1,-1,-1];if(o==="channelsLast")[l,c,u,p]=e;else if(o==="channelsFirst")[l,p,c,u]=e;else throw new Error(`Unknown dataFormat ${o}`);let[d,h,,m]=t,[f,g]=ph(n),[y,b]=ph(a),x=Pl(d,y),v=Pl(h,b),{padInfo:N,outHeight:T,outWidth:E}=f$(r,c,u,f,g,x,v,s,o),A=i?m*p:m,$;return o==="channelsFirst"?$=[l,A,T,E]:o==="channelsLast"&&($=[l,T,E,A]),{batchSize:l,dataFormat:o,inHeight:c,inWidth:u,inChannels:p,outHeight:T,outWidth:E,outChannels:A,padInfo:N,strideHeight:f,strideWidth:g,filterHeight:d,filterWidth:h,effectiveFilterHeight:x,effectiveFilterWidth:v,dilationHeight:y,dilationWidth:b,inShape:e,outShape:$,filterShape:t}}function Q0(e,t,n,a,r,s=!1,i="channelsLast",o){let[l,c,u,p,d]=[-1,-1,-1,-1,-1];if(i==="channelsLast")[l,c,u,p,d]=e;else if(i==="channelsFirst")[l,d,c,u,p]=e;else throw new Error(`Unknown dataFormat ${i}`);let[h,m,f,,g]=t,[y,b,x]=Ey(n),[v,N,T]=Ey(a),E=Pl(h,v),A=Pl(m,N),$=Pl(f,T),{padInfo:O,outDepth:V,outHeight:W,outWidth:H}=g$(r,c,u,p,y,b,x,E,A,$,o),X=s?g*d:g,q;return i==="channelsFirst"?q=[l,X,V,W,H]:i==="channelsLast"&&(q=[l,V,W,H,X]),{batchSize:l,dataFormat:i,inDepth:c,inHeight:u,inWidth:p,inChannels:d,outDepth:V,outHeight:W,outWidth:H,outChannels:X,padInfo:O,strideDepth:y,strideHeight:b,strideWidth:x,filterDepth:h,filterHeight:m,filterWidth:f,effectiveFilterDepth:E,effectiveFilterHeight:A,effectiveFilterWidth:$,dilationDepth:v,dilationHeight:N,dilationWidth:T,inShape:e,outShape:q,filterShape:t}}function y$(e,t,n,a,r){a==null&&(a=_y(e,t,n));let s=e[0],i=e[1],o=Ci((s-t+2*a)/n+1,r),l=Ci((i-t+2*a)/n+1,r);return[o,l]}function b$(e,t,n,a,r,s){r==null&&(r=_y(e,t,a));let i=e[0],o=e[1],l=e[2],c=Ci((i-t+2*r)/a+1,s),u=Ci((o-t+2*r)/a+1,s),p=Ci((l-t+2*r)/a+1,s);return[c,u,p,n]}function _y(e,t,n,a=1){let r=Pl(t,a);return Math.floor((e[0]*(n-1)-n+r)/2)}function ph(e){return typeof e=="number"?[e,e,e]:e.length===2?[e[0],e[1],1]:e}function Ey(e){return typeof e=="number"?[e,e,e]:e}function Pl(e,t){return t<=1?e:e+(e-1)*(t-1)}function f$(e,t,n,a,r,s,i,o,l){let c,u,p;if(typeof e=="number"){c={top:e,bottom:e,left:e,right:e,type:e===0?"VALID":"NUMBER"};let d=y$([t,n],s,a,e,o);u=d[0],p=d[1]}else if(e==="same"){u=Math.ceil(t/a),p=Math.ceil(n/r);let d=Math.max(0,(u-1)*a+s-t),h=Math.max(0,(p-1)*r+i-n),m=Math.floor(d/2),f=d-m,g=Math.floor(h/2),y=h-g;c={top:m,bottom:f,left:g,right:y,type:"SAME"}}else if(e==="valid")c={top:0,bottom:0,left:0,right:0,type:"VALID"},u=Math.ceil((t-s+1)/a),p=Math.ceil((n-i+1)/r);else if(typeof e=="object"){let d=l==="channelsLast"?e[1][0]:e[2][0],h=l==="channelsLast"?e[1][1]:e[2][1],m=l==="channelsLast"?e[2][0]:e[3][0],f=l==="channelsLast"?e[2][1]:e[3][1];c={top:d,bottom:h,left:m,right:f,type:d===0&&h===0&&m===0&&f===0?"VALID":"EXPLICIT"},u=Ci((t-s+d+h)/a+1,o),p=Ci((n-i+m+f)/r+1,o)}else throw Error(`Unknown padding parameter: ${e}`);return{padInfo:c,outHeight:u,outWidth:p}}function g$(e,t,n,a,r,s,i,o,l,c,u){let p,d,h,m;if(typeof e=="number"){p={top:e,bottom:e,left:e,right:e,front:e,back:e,type:e===0?"VALID":"NUMBER"};let f=b$([t,n,a,1],o,1,r,e,u);d=f[0],h=f[1],m=f[2]}else if(e==="same"){d=Math.ceil(t/r),h=Math.ceil(n/s),m=Math.ceil(a/i);let f=(d-1)*r+o-t,g=(h-1)*s+l-n,y=(m-1)*i+c-a,b=Math.floor(f/2),x=f-b,v=Math.floor(g/2),N=g-v,T=Math.floor(y/2),E=y-T;p={top:v,bottom:N,left:T,right:E,front:b,back:x,type:"SAME"}}else if(e==="valid")p={top:0,bottom:0,left:0,right:0,front:0,back:0,type:"VALID"},d=Math.ceil((t-o+1)/r),h=Math.ceil((n-l+1)/s),m=Math.ceil((a-c+1)/i);else throw Error(`Unknown padding parameter: ${e}`);return{padInfo:p,outDepth:d,outHeight:h,outWidth:m}}function Ci(e,t){if(!t)return Math.trunc(e);switch(t){case"round":return Math.round(e);case"ceil":return Math.ceil(e);case"floor":return Math.floor(e);default:throw new Error(`Unknown roundingMode ${t}`)}}function Qr(e){let[t,n,a]=ph(e);return t===1&&n===1&&a===1}function $n(e,t){return Qr(e)||Qr(t)}function J0(e){if(e==="NHWC")return"channelsLast";if(e==="NCHW")return"channelsFirst";throw new Error(`Unknown dataFormat ${e}`)}function x$(e,t){let n={x:C(e,"x","reshape","string_or_numeric")},a={shape:t};return P.runKernel(hl,n,a)}var j=R({reshape_:x$});function v$(e,t,n,a,r){let s=C(e,"x","avgPool","float32"),i=1;F($n(n,i),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${n} and dilations '${i}'`);let o=s,l=!1;s.rank===3&&(l=!0,o=j(s,[1,s.shape[0],s.shape[1],s.shape[2]])),F(o.rank===4,()=>`Error in avgPool: x must be rank 4 but got rank ${o.rank}.`),r!=null&&F(qt(a),()=>`Error in avgPool: pad must be an integer when using, dimRoundingMode ${r} but got pad ${a}.`);let c={x:o},u={filterSize:t,strides:n,pad:a,dimRoundingMode:r},p=P.runKernel(As,c,u);return p=pe(p,s.dtype),l?j(p,[p.shape[1],p.shape[2],p.shape[3]]):p}var Jn=R({avgPool_:v$});function w$(e,t,n,a,r,s="NDHWC",i){i==null?i=[1,1,1]:Pt("dilations is deprecated, this field will be gone in v3.0.0.");let o=C(e,"x","avgPool3d","float32"),l=o,c=!1;o.rank===4&&(c=!0,l=j(o,[1,o.shape[0],o.shape[1],o.shape[2],o.shape[3]])),F(l.rank===5,()=>`Error in avgPool3d: x must be rank 5 but got rank ${l.rank}.`),F(s==="NDHWC",()=>`Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of ${s}`),F($n(n,i),()=>`Error in avgPool3d: Either strides or dilations must be 1. Got strides ${n} and dilations '${i}'`),r!=null&&F(qt(a),()=>`Error in avgPool3d: pad must be an integer when using, dimRoundingMode ${r} but got pad ${a}.`);let u={x:l},p={filterSize:t,strides:n,pad:a,dimRoundingMode:r,dataFormat:s,dilations:i},d=P.runKernel(ic,u,p);return d=pe(d,l.dtype),c?j(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}var Fy=R({avgPool3d_:w$});function k$(e,t=0){F(e.length>=1,()=>"Pass at least one tensor to concat");let n=_c(e,"tensors","concat","string_or_numeric");if(n[0].dtype==="complex64"&&n.forEach(s=>{if(s.dtype!=="complex64")throw new Error(`Cannot concatenate complex64 tensors with a tensor + with dtype ${s.dtype}. `)}),n.length===1)return Yr(n[0]);let a=n,r={axis:t};return P.runKernel(Po,a,r)}var Ze=R({concat_:k$});function I$(e){let t={x:C(e,"x","sigmoid")};return P.runKernel(pi,t)}var ca=R({sigmoid_:I$});function N$(e,t,n){let a=C(e,"x","slice","string_or_numeric");if(a.rank===0)throw new Error("Slicing scalar is not possible");let r={x:a},s={begin:t,size:n};return P.runKernel(yl,r,s)}var We=R({slice_:N$});function T$(e){let t={x:C(e,"x","tanh")};return P.runKernel(yi,t)}var Ol=R({tanh_:T$});function S$(e,t,n,a,r,s){let i=C(e,"forgetBias","basicLSTMCell"),o=C(t,"lstmKernel","basicLSTMCell"),l=C(n,"lstmBias","basicLSTMCell"),c=C(a,"data","basicLSTMCell"),u=C(r,"c","basicLSTMCell"),p=C(s,"h","basicLSTMCell"),d=Ze([c,p],1),h=ze(d,o),m=Z(h,l),f=m.shape[0],g=m.shape[1]/4,y=[f,g],b=We(m,[0,0],y),x=We(m,[0,g],y),v=We(m,[0,g*2],y),N=We(m,[0,g*3],y),T=Z(L(ca(b),Ol(x)),L(u,ca(Z(i,v)))),E=L(Ol(T),ca(N));return[T,E]}var C$=R({basicLSTMCell_:S$});function E$(e,t,n){let a=C(e,"x","batchToSpaceND"),r=t.reduce((o,l)=>o*l);F(a.rank>=1+t.length,()=>`input rank is ${a.rank} but should be > than blockShape.length ${t.length}`),F(n.length===t.length,()=>`crops.length is ${n.length} but should be equal to blockShape.length ${t.length}`),F(a.shape[0]%r==0,()=>`input tensor batch is ${a.shape[0]} but is not divisible by the product of the elements of blockShape ${t.join(" * ")} === ${r}`);let s={x:a},i={blockShape:t,crops:n};return P.runKernel(oc,s,i)}var Mc=R({batchToSpaceND_:E$});function _$(e){let t;return e.rank===0||e.rank===1?t=j(e,[1,1,1,e.size]):e.rank===2?t=j(e,[1,1,e.shape[0],e.shape[1]]):e.rank===3?t=j(e,[1,e.shape[0],e.shape[1],e.shape[2]]):t=e,t}function F$(e,t,n,a,r,s){s==null&&(s=.001);let i=C(e,"x","batchNorm"),o=C(t,"mean","batchNorm"),l=C(n,"variance","batchNorm"),c;r!=null&&(c=C(r,"scale","batchNorm"));let u;a!=null&&(u=C(a,"offset","batchNorm")),F(o.rank===l.rank,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),F(u==null||o.rank===u.rank,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),F(c==null||o.rank===c.rank,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let p={x:_$(i),scale:c,offset:u,mean:o,variance:l},d={varianceEpsilon:s},h=P.runKernel(Us,p,d);return j(h,i.shape)}var br=R({batchNorm_:F$});function A$(e,t,n,a,r,s){let i=C(e,"x","batchNorm"),o=C(t,"mean","batchNorm"),l=C(n,"variance","batchNorm"),c;r!=null&&(c=C(r,"scale","batchNorm"));let u;return a!=null&&(u=C(a,"offset","batchNorm")),F(i.rank===2,()=>`Error in batchNorm2D: x must be rank 2 but got rank ${i.rank}.`),F(o.rank===2||o.rank===1,()=>`Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank ${o.rank}.`),F(l.rank===2||l.rank===1,()=>`Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank ${l.rank}.`),c!=null&&F(c.rank===2||c.rank===1,()=>`Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank ${c.rank}.`),u!=null&&F(u.rank===2||u.rank===1,()=>`Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank ${u.rank}.`),br(i,o,l,u,c,s)}var ek=R({batchNorm2d_:A$});function $$(e,t,n,a,r,s){let i=C(e,"x","batchNorm"),o=C(t,"mean","batchNorm"),l=C(n,"variance","batchNorm"),c;r!=null&&(c=C(r,"scale","batchNorm"));let u;return a!=null&&(u=C(a,"offset","batchNorm")),F(i.rank===3,()=>`Error in batchNorm3D: x must be rank 3 but got rank ${i.rank}.`),F(o.rank===3||o.rank===1,()=>`Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank ${o.rank}.`),F(l.rank===3||l.rank===1,()=>`Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank ${l.rank}.`),c!=null&&F(c.rank===3||c.rank===1,()=>`Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank ${c.rank}.`),u!=null&&F(u.rank===3||u.rank===1,()=>`Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank ${u.rank}.`),br(i,o,l,u,c,s)}var tk=R({batchNorm3d_:$$});function D$(e,t,n,a,r,s){let i=C(e,"x","batchNorm"),o=C(t,"mean","batchNorm"),l=C(n,"variance","batchNorm"),c;r!=null&&(c=C(r,"scale","batchNorm"));let u;return a!=null&&(u=C(a,"offset","batchNorm")),F(i.rank===4,()=>`Error in batchNorm4D: x must be rank 4 but got rank ${i.rank}.`),F(o.rank===4||o.rank===1,()=>`Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank ${o.rank}.`),F(l.rank===4||l.rank===1,()=>`Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank ${l.rank}.`),c!=null&&F(c.rank===4||c.rank===1,()=>`Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank ${c.rank}.`),u!=null&&F(u.rank===4||u.rank===1,()=>`Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank ${u.rank}.`),br(i,o,l,u,c,s)}var nk=R({batchNorm4d_:D$});function M$(e,t,n){let a=C(e,"x","bincount"),r=C(t,"weights","bincount");F(a.dtype==="int32",()=>`Error in bincount: input dtype must be int32, but got ${a.dtype}`),F(n>=0,()=>`size must be non-negative, but got ${n}.`),F(r.size===a.size||r.size===0,()=>`Error in bincount: weights must have the same size as input or0-length, but got input shape: ${a.shape}, weights shape: ${r.shape}.`);let s={x:a,weights:r},i={size:n};return P.runKernel(Nd,s,i)}var ak=R({bincount_:M$});function R$(e,t){let n=C(e,"broadcastTo","x"),a=n.shape;if(t.some(l=>!(l>0)||l%1!=0))throw new Error(`broadcastTo(): Invalid broadcast shape [${t}].`);if(t.lengthn.rank){let l=n.shape.slice();for(;l.length=0;l--)if(r[l]===t[l])s[l]=1;else if(n.shape[l]!==1)throw new Error(`broadcastTo(): [${a}] cannot be broadcast to [${t}].`);if(s.map((l,c)=>l>1?c:-1).filter(l=>l>=0).length===0)return Yr(n);let i={x:n},o={reps:s};return P.runKernel(Hr,i,o)}var Rc=R({broadcastTo_:R$});function P$(e){let t={x:C(e,"x","ceil")};return P.runKernel(Ro,t)}var Ay=R({ceil_:P$});function O$(e,t,n){let a=C(e,"x","clipByValue");F(t<=n,()=>`Error in clip: min (${t}) must be less than or equal to max (${n}).`);let r={x:a},s={clipValueMin:t,clipValueMax:n};return P.runKernel(Gr,r,s)}var Yt=R({clipByValue_:O$});function L$(e){return Ze(e,0)}var rk=R({concat1d_:L$});function z$(e,t){return Ze(e,t)}var sk=R({concat2d_:z$});function B$(e,t){return Ze(e,t)}var ik=R({concat3d_:B$});function W$(e,t){return Ze(e,t)}var ok=R({concat4d_:W$});function V$(e,t,n,a,r="NHWC",s=[1,1],i){let o=C(e,"x","conv2d"),l=C(t,"filter","conv2d"),c=o,u=!1;o.rank===3&&(u=!0,c=j(o,[1,o.shape[0],o.shape[1],o.shape[2]])),F(c.rank===4,()=>`Error in conv2d: input must be rank 4, but got rank ${c.rank}.`),F(l.rank===4,()=>`Error in conv2d: filter must be rank 4, but got rank ${l.rank}.`),i!=null&&F(qt(a),()=>`Error in conv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${a}.`);let p=r==="NHWC"?c.shape[3]:c.shape[1];F(p===l.shape[2],()=>`Error in conv2d: depth of input (${p}) must match input depth for filter ${l.shape[2]}.`),F($n(n,s),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`);let d={x:c,filter:l},h={strides:n,pad:a,dataFormat:r,dilations:s,dimRoundingMode:i},m=P.runKernel(Ms,d,h);return u?j(m,[m.shape[1],m.shape[2],m.shape[3]]):m}var $t=R({conv2d_:V$});function U$(e,t,n,a,r="NWC",s=1,i){let o=C(e,"x","conv1d"),l=C(t,"filter","conv1d"),c=o,u=!1;o.rank===2&&(u=!0,c=j(o,[1,o.shape[0],o.shape[1]])),F(c.rank===3,()=>`Error in conv1d: input must be rank 3, but got rank ${c.rank}.`),F(l.rank===3,()=>`Error in conv1d: filter must be rank 3, but got rank ${l.rank}.`),i!=null&&F(qt(a),()=>`Error in conv1d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${a}.`),F(c.shape[2]===l.shape[1],()=>`Error in conv1d: depth of input (${c.shape[2]}) must match input depth for filter ${l.shape[1]}.`),F($n(n,s),()=>`Error in conv1D: Either stride or dilation must be 1. Got stride ${n} and dilation '${s}'`),F(r==="NWC",()=>`Error in conv1d: got dataFormat of ${r} but only NWC is currently supported.`);let p=j(l,[1,l.shape[0],l.shape[1],l.shape[2]]),d=j(c,[c.shape[0],1,c.shape[1],c.shape[2]]),h=$t(d,p,[1,n],a,"NHWC",[1,s],i);return u?j(h,[h.shape[2],h.shape[3]]):j(h,[h.shape[0],h.shape[2],h.shape[3]])}var dh=R({conv1d_:U$});function G$(e,t,n,a,r,s="NHWC",i){F(e.length===t.rank,()=>`Length of inShape (${e.length}) and rank of dy (${t.rank}) must match`);let o=e,l=t,c=!1;t.rank===3&&(c=!0,l=j(t,[1,t.shape[0],t.shape[1],t.shape[2]]),o=[1,e[0],e[1],e[2]]),F(o.length===4,()=>`Error in conv2dDerInput: inShape must be length 4, but got length ${o.length}.`),F(l.rank===4,()=>`Error in conv2dDerInput: dy must be rank 4, but got rank ${l.rank}`),F(n.rank===4,()=>`Error in conv2dDerInput: filter must be rank 4, but got rank ${n.rank}`);let u=s==="NHWC"?o[3]:o[1],p=s==="NHWC"?l.shape[3]:l.shape[1];F(u===n.shape[2],()=>`Error in conv2dDerInput: depth of input (${u}) must match input depth for filter ${n.shape[2]}.`),F(p===n.shape[3],()=>`Error in conv2dDerInput: depth of output (${p}) must match output depth for filter ${n.shape[3]}.`),i!=null&&F(qt(r),()=>`Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`);let d={dy:l,filter:n},h={strides:a,pad:r,dataFormat:s,dimRoundingMode:i,inputShape:o},m=P.runKernel(Rs,d,h);return c?j(m,[m.shape[1],m.shape[2],m.shape[3]]):m}var $y=R({conv2DBackpropInput_:G$});function H$(e,t,n,a,r,s){let i=C(e,"x","conv2dTranspose"),o=C(t,"filter","conv2dTranspose");return $y(n,i,o,a,r,"NHWC",s)}var hh=R({conv2dTranspose_:H$});function j$(e,t,n,a,r="NDHWC",s=[1,1,1]){let i=C(e,"x","conv3d"),o=C(t,"filter","conv3d"),l=i,c=!1;i.rank===4&&(c=!0,l=j(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]])),F(l.rank===5,()=>`Error in conv3d: input must be rank 5, but got rank ${l.rank}.`),F(o.rank===5,()=>`Error in conv3d: filter must be rank 5, but got rank ${o.rank}.`),F(l.shape[4]===o.shape[3],()=>`Error in conv3d: depth of input (${l.shape[4]}) must match input depth for filter ${o.shape[3]}.`),F($n(n,s),()=>`Error in conv3D: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`),F(r==="NDHWC",()=>`Error in conv3d: got dataFormat of ${r} but only NDHWC is currently supported.`);let u={x:l,filter:o},p={strides:n,pad:a,dataFormat:r,dilations:s},d=P.runKernel(uc,u,p);return c?j(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}var Dy=R({conv3d_:j$});function q$(e,t,n,a,r){F(e.length===t.rank,()=>`Length of inShape (${e.length}) and rank of dy (${t.rank}) must match`);let s=e,i=t,o=!1;t.rank===4&&(o=!0,i=j(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]]),s=[1,e[0],e[1],e[2],e[3]]);let l=s[4],c=i.shape[4];F(s.length===5,()=>`Error in conv3dDerInput: inShape must be length 5, but got length ${s.length}.`),F(i.rank===5,()=>`Error in conv3dDerInput: dy must be rank 5, but got rank ${i.rank}`),F(n.rank===5,()=>`Error in conv3dDerInput: filter must be rank 5, but got rank ${n.rank}`),F(l===n.shape[3],()=>`Error in conv3dDerInput: depth of input (${l}) must match input depth for filter ${n.shape[3]}.`),F(c===n.shape[4],()=>`Error in conv3dDerInput: depth of output (${c}) must match output depth for filter ${n.shape[4]}.`);let u={dy:i,filter:n},p={pad:r,strides:a,inputShape:s},d=P.runKernel(Ed,u,p);return o?j(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}var lk=R({conv3DBackpropInput_:q$});function K$(e,t,n,a,r){let s=C(e,"x","conv3dTranspose"),i=C(t,"filter","conv3dTranspose");return lk(n,s,i,a,r)}var X$=R({conv3dTranspose_:K$});function Y$(e){let t={x:C(e,"x","cos")};return P.runKernel(Ps,t)}var Pc=R({cos_:Y$});function J$(e){let t={x:C(e,"x","cosh")};return P.runKernel(Oo,t)}var mh=R({cosh_:J$});function Z$(e,t=0,n=!1,a=!1){let r={x:C(e,"x","cumsum")},s={axis:t,exclusive:n,reverse:a};return P.runKernel(Os,r,s)}var fh=R({cumsum_:Z$});function Q$(e,t,n,a=!1){let r=C(e,"x","denseBincount"),s=C(t,"weights","denseBincount");F(r.dtype==="int32",()=>`Error in denseBincount: input dtype must be int32, but got ${r.dtype}`),F(r.rank<=2,()=>`Error in denseBincount: input must be at most rank 2, but got rank ${r.rank}.`),F(n>=0,()=>`size must be non-negative, but got ${n}.`),F(s.size===r.size||s.size===0,()=>`Error in denseBincount: weights must have the same shape as x or 0-length, but got x shape: ${r.shape}, weights shape: ${s.shape}.`);let i={x:r,weights:s},o={size:n,binaryOutput:a};return P.runKernel(_d,i,o)}var uk=R({denseBincount_:Q$});function eD(e,t,n="NHWC"){let a=C(e,"x","depthToSpace"),r=n==="NHWC"?a.shape[1]:a.shape[2],s=n==="NHWC"?a.shape[2]:a.shape[3],i=n==="NHWC"?a.shape[3]:a.shape[1];F(r*t>=0,()=>`Negative dimension size caused by overflow when multiplying + ${r} and ${t} for depthToSpace with input shape + ${a.shape}`),F(s*t>=0,()=>`Negative dimension size caused by overflow when multiplying + ${s} and ${t} for depthToSpace with input shape + ${a.shape}`),F(i%(t*t)==0,()=>`Dimension size must be evenly divisible by ${t*t} but is ${i} for depthToSpace with input shape ${a.shape}`);let o={x:a},l={blockSize:t,dataFormat:n};return P.runKernel(zo,o,l)}var My=R({depthToSpace_:eD});function tD(e,t,n,a,r="NHWC",s=[1,1],i){let o=C(e,"x","depthwiseConv2d"),l=C(t,"filter","depthwiseConv2d"),c=o,u=!1;o.rank===3&&(u=!0,c=j(o,[1,o.shape[0],o.shape[1],o.shape[2]])),F(c.rank===4,()=>`Error in depthwiseConv2d: input must be rank 4, but got rank ${c.rank}.`),F(l.rank===4,()=>`Error in depthwiseConv2d: filter must be rank 4, but got rank ${l.rank}.`),F(c.shape[3]===l.shape[2],()=>`Error in depthwiseConv2d: number of input channels (${c.shape[3]}) must match the inChannels dimension in filter ${l.shape[2]}.`),i!=null&&F(qt(a),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${a}.`);let p={x:c,filter:l},d={strides:n,pad:a,dataFormat:r,dilations:s,dimRoundingMode:i},h=P.runKernel(Ls,p,d);return u?j(h,[h.shape[1],h.shape[2],h.shape[3]]):h}var xr=R({depthwiseConv2d_:tD});function nD(e){let t={x:C(e,"x","diag")};return P.runKernel($d,t)}var aD=R({diag_:nD});function rD(e,t,n,a,r=[1,1],s="NHWC"){let i=C(e,"x","dilation2d"),o=C(t,"filter","dilation2d");F(i.rank===3||i.rank===4,()=>`Error in dilation2d: input must be rank 3 or 4, but got rank ${i.rank}.`),F(o.rank===3,()=>`Error in dilation2d: filter must be rank 3, but got rank ${o.rank}.`),F(s==="NHWC",()=>`Error in dilation2d: Only NHWC is currently supported, but got dataFormat of ${s}`);let l=i,c=!1;i.rank===3&&(l=j(i,[1,i.shape[0],i.shape[1],i.shape[2]]),c=!0);let u={x:l,filter:o},p={strides:n,pad:a,dilations:r},d=P.runKernel(cc,u,p);return c?j(d,[d.shape[1],d.shape[2],d.shape[3]]):d}var Ry=R({dilation2d_:rD});function sD(e,t){let n=e.length,a=[];for(let r=0;r1&&i===1&&a.unshift(s)}return a}function Vt(e,t){let n=[];for(let a=0;a1)&&n.unshift(s)}return n}function vt(e,t){let n=[],a=Math.max(e.length,t.length);for(let r=0;r"The first dimension of `a` must match the size of `condition`."),s.rank!==1&&rt(s.shape,l.shape,"Error in where: ");let c={condition:s,t:o,e:l};return P.runKernel(fl,c)}var kn=R({where_:oD});function lD(e){let t={x:C(e,"x","zerosLike")};return P.runKernel(Sl,t)}var He=R({zerosLike_:lD});function uD(e,t){let n=C(e,"a","div"),a=C(t,"b","div");[n,a]=Tt(n,a);let r=ve(n,a),s=He(r),i=vr(a,s);return kn(i,s,r)}var Py=R({divNoNan_:uD});function cD(e,t){let n=C(e,"t1","dot"),a=C(t,"t2","dot");F((n.rank===1||n.rank===2)&&(a.rank===1||a.rank===2),()=>`Error in dot: inputs must all be rank 1 or 2, but got ranks ${n.rank} and ${a.rank}.`);let r=n.rank===1?n.size:n.shape[1],s=a.rank===1?a.size:a.shape[0];if(F(r===s,()=>`Error in dot: inner dimensions of inputs must match, but got ${r} and ${s}.`),n.rank===1&&a.rank===1){let i=j(n,[1,-1]),o=j(a,[-1,1]),l=ze(i,o);return j(l,[])}else if(n.rank===1&&a.rank===2){let i=j(n,[1,-1]),o=j(a,[a.shape[0],a.shape[1]]),l=ze(i,o);return j(l,[l.size])}else if(n.rank===2&&a.rank===1){let i=j(a,[-1,1]),o=ze(n,i);return j(o,[o.size])}else{let i=j(a,[a.shape[0],a.shape[1]]);return ze(n,i)}}var ck=R({dot_:cD});function pD(e){let t={x:C(e,"x","elu")};return P.runKernel(Bo,t)}var Ll=R({elu_:pD});function dD(e){let t=C(e,"x","erf");F(t.dtype==="int32"||t.dtype==="float32",()=>"Input dtype must be `int32` or `float32`."),t.dtype==="int32"&&(t=pe(t,"float32"));let n={x:t};return P.runKernel(Wo,n)}var Oy=R({erf_:dD});function hD(e){let t={x:C(e,"x","exp")};return P.runKernel(Bs,t)}var hn=R({exp_:hD});function mD(e,t=0){let n=C(e,"x","expandDims","string_or_numeric");F(t<=n.rank,()=>"Axis must be <= rank of the tensor");let a={input:n},r={dim:t};return P.runKernel(Uo,a,r)}var Zn=R({expandDims_:mD});function fD(e){let t={x:C(e,"x","expm1")};return P.runKernel(Go,t)}var Ly=R({expm1_:fD});function gD(e,t){let n=C(e,"x","tile","string_or_numeric");F(n.rank===t.length,()=>`Error in transpose: rank of input ${n.rank} must match length of reps ${t}.`);let a={x:n},r={reps:t};return P.runKernel(Hr,a,r)}var ja=R({tile_:gD});function yD(e,t,n,a="float32"){t==null&&(t=e);let r=Le([e,t],a),s=e<=t?e:t;for(let o=0;o`Error in localResponseNormalization: x must be rank 3 or 4 but got + rank ${s.rank}.`),F(qt(t),()=>`Error in localResponseNormalization: depthRadius must be an integer but got depthRadius ${t}.`);let i=s,o=!1;s.rank===3&&(o=!0,i=j(s,[1,s.shape[0],s.shape[1],s.shape[2]]));let l={x:i},c={depthRadius:t,bias:n,alpha:a,beta:r},u=P.runKernel(mc,l,c);return o?j(u,[u.shape[1],u.shape[2],u.shape[3]]):u}var By=R({localResponseNormalization_:_D});function FD(e){let t={x:C(e,"x","log")};return P.runKernel(js,t)}var Dn=R({log_:FD});function AD(e){let t={x:C(e,"x","log1p")};return P.runKernel(tl,t)}var yh=R({log1p_:AD});function $D(e){return F(Vr(e),()=>"The f passed in grad(f) must be a function"),(t,n)=>{let a=C(t,"x","tf.grad","string_or_numeric"),r=n!=null?C(n,"dy","tf.grad"):null;return P.tidy(()=>{let{value:s,grads:i}=P.gradients(()=>e(a),[a],r);return r!=null&&rt(s.shape,r.shape,"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)"),bh(i),i[0]})}}function DD(e){return F(Vr(e),()=>"The f passed in grads(f) must be a function"),(t,n)=>{F(Array.isArray(t),()=>"The args passed in grads(f)(args) must be an array of `Tensor`s or `TensorLike`s");let a=_c(t,"args","tf.grads","string_or_numeric"),r=n!=null?C(n,"dy","tf.grads"):null;return P.tidy(()=>{let{value:s,grads:i}=P.gradients(()=>e(...a),a,r);return r!=null&&rt(s.shape,r.shape,"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),bh(i),i})}}function MD(e){return F(Vr(e),()=>"The f passed in valueAndGrad(f) must be a function"),(t,n)=>{F(t instanceof z,()=>"The x passed in valueAndGrad(f)(x) must be a tensor"),F(n==null||n instanceof z,()=>"The dy passed in valueAndGrad(f)(x, dy) must be a tensor");let{grads:a,value:r}=P.gradients(()=>e(t),[t],n);return bh(a),{grad:a[0],value:r}}}function RD(e){return F(Vr(e),()=>"The f passed in valueAndGrads(f) must be a function"),(t,n)=>{F(Array.isArray(t)&&t.every(r=>r instanceof z),()=>"The args passed in valueAndGrads(f)(args) must be array of tensors"),F(n==null||n instanceof z,()=>"The dy passed in valueAndGrads(f)(args, dy) must be a tensor");let a=P.gradients(()=>e(...t),t,n);return n!=null&&rt(a.value.shape,n.shape,"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),bh(a.grads),a}}function fk(e,t){F(Vr(e),()=>"The f passed in variableGrads(f) must be a function"),F(t==null||Array.isArray(t)&&t.every(c=>c instanceof jr),()=>"The varList passed in variableGrads(f, varList) must be an array of variables");let n=t!=null;if(!n){t=[];for(let c in P.registeredVariables)t.push(P.registeredVariables[c])}let a=n?t.filter(c=>!c.trainable):null,r=t.length;t=t.filter(c=>c.trainable),F(t.length>0,()=>`variableGrads() expects at least one of the input variables to be trainable, but none of the ${r} variables is trainable.`);let s=!0,{value:i,grads:o}=P.gradients(e,t,null,s);F(o.some(c=>c!=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()."),F(i.rank===0,()=>`The f passed in variableGrads(f) must return a scalar, but it returned a rank-${i.rank} tensor`);let l={};return t.forEach((c,u)=>{o[u]!=null&&(l[c.name]=o[u])}),a!=null&&a.forEach(c=>l[c.name]=null),{value:i,grads:l}}function qa(e){return P.customGrad(e)}function bh(e){if(e.filter(t=>t==null).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.`)}function PD(e){let t={x:C(e,"x","neg")};return P.runKernel(rl,t)}var St=R({neg_:PD});function OD(e){let t={x:C(e,"x","softplus")};return P.runKernel(vl,t)}var Bl=R({softplus_:OD});function LD(e){let t=C(e,"x","logSigmoid");return qa(n=>({value:St(Bl(St(n))),gradFunc:a=>L(a,ca(St(n)))}))(t)}var gk=R({logSigmoid_:LD});function zD(e,t=null,n=!1){let a={x:C(e,"x","max")},r={reductionIndices:t,keepDims:n};return P.runKernel(qs,a,r)}var ea=R({max_:zD});function BD(e,t){let n=C(e,"a","sub"),a=C(t,"b","sub");[n,a]=Tt(n,a);let r={a:n,b:a};return P.runKernel(gi,r)}var fe=R({sub_:BD});function WD(e,t=null,n=!1){let a=C(e,"x","sum");a.dtype==="bool"&&(a=pe(a,"int32"));let r={x:a},s={axis:t,keepDims:n};return P.runKernel(hi,r,s)}var Ce=R({sum_:WD});function VD(e,t=-1){let n=C(e,"logits","logSoftmax");if(t===-1&&(t=n.rank-1),t!==n.rank-1)throw Error(`Log Softmax along a non-last dimension is not yet supported. Logits was rank ${n.rank} and axis was ${t}`);return qa((a,r)=>{let s=!0,i=ea(a,t,!0),o=fe(a,i),l=fe(pe(o,"float32"),Dn(Ce(hn(o),t,s)));return r([l]),{value:l,gradFunc:(c,u)=>{let[p]=u,d=!0,h=hn(p);return fe(c,L(Ce(c,t,d),h))}}})(n)}var xh=R({logSoftmax_:VD});function Wy(e,t){for(let n=0;ne[s]);return[n,r]}function _i(e,t){let n=t.map(a=>1);return yk(e,n,t)}function UD(e,t,n){F(Wy(t,n),()=>`${e} supports only inner-most axes for now. Got axes ${t} and rank-${n} input.`)}function xk(e,t){if(Wy(e,t))return null;let n=[];for(let a=0;an.push(a)),n}function Vy(e){return e.map((t,n)=>[n,t]).sort((t,n)=>t[1]-n[1]).map(t=>t[0])}function GD(e,t){let n=[];for(let a=t-e;a`Error in maxPool: input must be rank 4 but got rank ${o.rank}.`),F($n(n,i),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${n} and dilations '${i}'`),r!=null&&F(qt(a),()=>`Error in maxPool: pad must be an integer when using, dimRoundingMode ${r} but got pad ${a}.`);let c={x:o},u={filterSize:t,strides:n,pad:a,dimRoundingMode:r},p=P.runKernel(Xs,c,u);return l?j(p,[p.shape[1],p.shape[2],p.shape[3]]):p}var Dt=R({maxPool_:YD});function JD(e,t=[1,1,1],n,a,r,s="NDHWC",i){i==null?i=[1,1,1]:Pt("dilations is deprecated, this field will be gone in v3.0.0.");let o=C(e,"x","maxPool3d"),l=o,c=!1;o.rank===4&&(c=!0,l=j(o,[1,o.shape[0],o.shape[1],o.shape[2],o.shape[3]])),F(l.rank===5,()=>`Error in maxPool3d: x must be rank 5 but got rank ${l.rank}.`),F(s==="NDHWC",()=>`Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of ${s}`),F($n(n,i),()=>`Error in maxPool3d: Either strides or dilations must be 1. Got strides ${n} and dilations '${i}'`),r!=null&&F(qt(a),()=>`Error in maxPool3d: pad must be an integer when using, dimRoundingMode ${r} but got pad ${a}.`);let u={x:l},p={filterSize:t,strides:n,pad:a,dimRoundingMode:r,dataFormat:s,dilations:i},d=P.runKernel(fc,u,p);return c?j(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}var Gy=R({maxPool3d_:JD});function ZD(e,t,n,a,r=!1){let s={x:C(e,"x","maxPoolWithArgmax")},i={filterSize:t,strides:n,pad:a,includeBatchInIndex:r},o=P.runKernel(Ud,s,i);return{result:o[0],indexes:o[1]}}var wk=R({maxPoolWithArgmax_:ZD});function QD(e,t){let n=C(e,"a","maximum"),a=C(t,"b","maximum");[n,a]=Tt(n,a),n.dtype==="bool"&&(n=pe(n,"int32"),a=pe(a,"int32")),vt(n.shape,a.shape);let r={a:n,b:a};return P.runKernel(Ks,r)}var Ta=R({maximum_:QD});function eM(e,t=null,n=!1){let a={x:C(e,"x","mean")},r={axis:t,keepDims:n};return P.runKernel(Ys,a,r)}var Ct=R({mean_:eM});function tM(e,t=null,n=!1){let a={x:C(e,"x","min")},r={axis:t,keepDims:n};return P.runKernel(Js,a,r)}var Wl=R({min_:tM});function nM(e,t){let n=C(e,"a","minimum"),a=C(t,"b","minimum");[n,a]=Tt(n,a),n.dtype==="bool"&&(n=pe(n,"int32"),a=pe(a,"int32")),vt(n.shape,a.shape);let r={a:n,b:a};return P.runKernel(Zs,r)}var Fi=R({minimum_:nM});function aM(e,t,n){F(n==="reflect"||n==="symmetric",()=>`Invalid mode. Mode must be either reflect or symmetric. Got ${n}.`);let a=C(e,"x","mirrorPad");if(a.rank===0)throw new Error("mirrorPad(scalar) is not defined. Pass non-scalar to mirrorPad");F(t.length===a.rank,()=>`Padding doesn't match input. Must be ${a.rank}. Got ${t.length}.`);let r=n==="reflect"?1:0;for(let o=0;o"Invalid number of paddings. Must be length of 2 each."),F(t[o][0]>=0&&t[o][0]<=a.shape[o]-r&&t[o][1]>=0&&t[o][1]<=a.shape[o]-r,()=>`Padding in dimension ${o} cannot be greater than or equal to ${a.shape[o]-r} or less than 0 for input of shape ${a.shape}`);let s={paddings:t,mode:n},i={x:a};return P.runKernel(gc,i,s)}var Hy=R({mirrorPad_:aM});function rM(e,t){let n=C(e,"a","mod"),a=C(t,"b","mod");[n,a]=Tt(n,a);let r={a:n,b:a};return P.runKernel(al,r)}var wh=R({mod_:rM});function sM(e){let t=C(e,"x","square"),n={};return P.runKernel("Square",{x:t},n)}var ot=R({square_:sM});function iM(e,t=null,n=!1){e=C(e,"x","moments");let a=la(t,e.shape),r=Ct(e,a,n),s=r.shape;n||(s=_i(r.shape,a));let i=ot(fe(pe(e,"float32"),j(r,s))),o=Ct(i,a,n);return{mean:r,variance:o}}var kh=R({moments_:iM});function oM(e,t,n,a){let r=C(t,"data","multiRNNCell"),s=_c(n,"c","multiRNNCell"),i=_c(a,"h","multiRNNCell"),o=r,l=[];for(let p=0;p2)throw new Error(`Rank of probabilities must be 1 or 2, but is ${i}`);n=n||Math.random();let o={logits:i===1?j(r,[1,-1]):r},l={numSamples:t,seed:n,normalized:a},c=P.runKernel(Gd,o,l);return i===1?j(c,[c.size]):c}var kk=R({multinomial_:uM});function cM(e,t){let n=C(e,"a","notEqual"),a=C(t,"b","notEqual");[n,a]=Tt(n,a),vt(n.shape,a.shape);let r={a:n,b:a};return P.runKernel(sl,r)}var ts=R({notEqual_:cM});function yt(e,t="float32"){if(t==="complex64"){let a=yt(e,"float32"),r=yt(e,"float32");return qr(a,r)}let n=xd(zt(e),t);return P.makeTensor(n,e,t)}function Ka(e,t="float32"){if(t==="complex64"){let a=Ka(e,"float32"),r=yt(e,"float32");return qr(a,r)}let n=Bg(zt(e),t);return P.makeTensor(n,e,t)}function pM(e){let t={x:C(e,"x","onesLike")};return P.runKernel(ul,t)}var Mn=R({onesLike_:pM});function dM(e,t){let n=C(e,"v1","outerProduct"),a=C(t,"v2","outerProduct");F(n.rank===1&&a.rank===1,()=>`Error in outerProduct: inputs must be rank 1, but got ranks ${n.rank} and ${a.rank}.`);let r=j(n,[-1,1]),s=j(a,[1,-1]);return ze(r,s)}var hM=R({outerProduct_:dM});function mM(e,t,n=0){let a=C(e,"x","pad");if(a.rank===0)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");let r={paddings:t,constantValue:n},s={x:a};return P.runKernel(ti,s,r)}var ta=R({pad_:mM});function fM(e,t,n=0){return F(t.length===2,()=>"Invalid number of paddings. Must be length of 2."),ta(e,[t],n)}var gM=R({pad1d_:fM});function yM(e,t,n=0){return F(t.length===2&&t[0].length===2&&t[1].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),ta(e,t,n)}var bM=R({pad2d_:yM});function xM(e,t,n=0){return F(t.length===3&&t[0].length===2&&t[1].length===2&&t[2].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),ta(e,t,n)}var vM=R({pad3d_:xM});function wM(e,t,n=0){return F(t.length===4&&t[0].length===2&&t[1].length===2&&t[2].length===2&&t[3].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),ta(e,t,n)}var kM=R({pad4d_:wM});function IM(e,t,n){let a=C(e,"x","spaceToBatchND");F(a.rank>=1+t.length,()=>`input rank ${a.rank} should be > than [blockShape] ${t.length}`),F(n.length===t.length,()=>`paddings.shape[0] ${n.length} must be equal to [blockShape] ${t.length}`),F(a.shape.reduce((i,o,l)=>l>0&&l<=t.length?i&&(o+n[l-1][0]+n[l-1][1])%t[l-1]==0:i,!0),()=>`input spatial dimensions ${a.shape.slice(1)} with paddings ${n.toString()} must be divisible by blockShapes ${t.toString()}`);let r={x:a},s={blockShape:t,paddings:n};return P.runKernel(xc,r,s)}var Bc=R({spaceToBatchND_:IM});function SM(e,t,n,a,r,s){r==null&&(r=[1,1]),s==null&&(s=1),a===0&&(a="valid");let i=C(e,"x","maxPool"),o=i,l=!1;i.rank===3&&(l=!0,o=j(i,[1,i.shape[0],i.shape[1],i.shape[2]])),F($n(s,r),()=>`Error in pool: Either strides or dilations must be 1. Got strides ${s} and dilations '${r}'`);let c=Z0(o.shape,t,s,r,a),u=[c.dilationHeight,c.dilationWidth],p;a==="same"?p=TM([c.filterHeight,c.filterWidth],u):p=[[0,0],[0,0]];let d=u[0]===1&&u[1]===1,[h,m]=NM([c.inHeight,c.inWidth],u,p),f=d?a:"valid",g=d?o:Bc(o,u,h),y=(n==="avg"?()=>Jn(g,t,s,f):()=>Dt(g,t,s,f))(),b=d?y:Mc(y,u,m);return l?j(b,[b.shape[1],b.shape[2],b.shape[3]]):b}function NM(e,t,n){let a=n.map(u=>u[0]),r=n.map(u=>u[1]),s=e.concat(a,r),i=t.map((u,p)=>(u-s[p]%u)%u),o=r.map((u,p)=>u+i[p]),l=t.map((u,p)=>[a[p],o[p]]),c=t.map((u,p)=>[0,i[p]]);return[l,c]}function TM(e,t){let n=e.map((s,i)=>s+(s-1)*(t[i]-1)).map(s=>s-1),a=n.map(s=>Math.floor(s/2)),r=n.map((s,i)=>s-a[i]);return n.map((s,i)=>[a[i],r[i]])}var Ik=R({pool_:SM});function CM(e,t){let n=C(e,"base","pow"),a=C(t,"exp","pow");[n,a]=Tt(n,a);let r={a:n,b:a};return P.runKernel(ni,r)}var Xa=R({pow_:CM});function EM(e,t){let n=C(e,"x","prelu"),a=C(t,"alpha","prelu"),r={x:n,alpha:a};return P.runKernel(ai,r)}var Wc=R({prelu_:EM});function _M(e,t=null,n=!1){let a=C(e,"x","prod");a.dtype==="bool"&&(a=pe(a,"int32"));let r={x:a},s={axis:t,keepDims:n};return P.runKernel(pl,r,s)}var Ih=R({prod_:_M});function FM(e,t,n){let a=zt(e),r=null;if(n==null||n==="float32")r=new Float32Array(a);else if(n==="int32")r=new Int32Array(a);else if(n==="bool")r=new Uint8Array(a);else throw new Error(`Unknown data type ${n}`);for(let s=0;s=1||s===0);let i=Math.sqrt(-2*Math.log(s)/s);e=this.mean+this.stdDev*a*i,t=this.mean+this.stdDev*r*i,(!this.truncated||this.isValidTruncated(e))&&(n=!0)}return(!this.truncated||this.isValidTruncated(t))&&(this.nextVal=this.convertValue(t)),this.convertValue(e)}convertValue(e){return this.dtype==null||this.dtype==="float32"?e:Math.round(e)}isValidTruncated(e){return e<=this.upper&&e>=this.lower}},$M=class{constructor(e,t,n,a){this.alpha=e,this.beta=1/t,this.dtype=n;let r=a||Math.random();this.randu=jy.alea(r.toString()),this.randn=new qy(0,1,n,!1,this.randu()),e<1?this.d=e+2/3:this.d=e-1/3,this.c=1/Math.sqrt(9*this.d)}nextValue(){let e,t,n,a,r,s;for(;;){do a=this.randn.nextValue(),s=1+this.c*a;while(s<=0);if(s*=s*s,e=a*a,t=1-.331*e*e,n=.5*e+this.d*(1-s+Math.log(s)),r=this.randu(),rthis.dtype==null||this.dtype==="float32",this.min=e,this.range=t-e,this.dtype=n,a==null&&(a=Math.random()),typeof a=="number"&&(a=a.toString()),!this.canReturnFloat()&&this.range<=1)throw new Error(`The difference between ${e} - ${t} <= 1 and dtype is not float`);this.random=jy.alea(a)}convertValue(e){return this.canReturnFloat()?e:Math.round(e)}nextValue(){return this.convertValue(this.min+this.range*this.random())}};function MM(e,t,n=1,a="float32",r){if(n==null&&(n=1),a==null&&(a="float32"),a!=="float32"&&a!=="int32")throw new Error(`Unsupported data type ${a}`);let s=new $M(t,n,a,r),i=Le(e,a);for(let o=0;o`Error in reverse1D: x must be rank 1 but got rank ${t.rank}.`),Rn(t,0)}var GM=R({reverse1d_:UM});function HM(e,t){let n=C(e,"x","reverse");return F(n.rank===2,()=>`Error in reverse2D: x must be rank 2 but got rank ${n.rank}.`),Rn(n,t)}var jM=R({reverse2d_:HM});function qM(e,t){let n=C(e,"x","reverse");return F(n.rank===3,()=>`Error in reverse3D: x must be rank 3 but got rank ${n.rank}.`),Rn(n,t)}var KM=R({reverse3d_:qM});function XM(e,t){let n=C(e,"x","reverse");return F(n.rank===4,()=>`Error in reverse4D: x must be rank 4 but got rank ${n.rank}.`),Rn(n,t)}var YM=R({reverse4d_:XM});function JM(e){let t={x:C(e,"x","round")};return P.runKernel(li,t)}var Xy=R({round_:JM});function ZM(e){let t={x:C(e,"x","rsqrt")};return P.runKernel(ui,t)}var Sh=R({rsqrt_:ZM});function de(e,t){if((un(e)&&t!=="string"||Array.isArray(e))&&t!=="complex64")throw new Error("Error creating a new Scalar: value must be a primitive (number|boolean|string)");if(t==="string"&&un(e)&&!(e instanceof Uint8Array))throw new Error("When making a scalar from encoded string, the value must be `Uint8Array`.");return Kr(e,[],[],t)}function QM(e){let t={x:C(e,"x","selu")};return P.runKernel(gl,t)}var Ch=R({selu_:QM});function eR(e,t,n,a,r,s=[1,1],i="NHWC"){let o=C(e,"x","separableConv2d"),l=C(t,"depthwiseFilter","separableConv2d"),c=C(n,"pointwiseFilter","separableConv2d"),u=o,p=!1;if(o.rank===3&&(p=!0,u=j(o,[1,o.shape[0],o.shape[1],o.shape[2]])),i==="NCHW")throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");F(u.rank===4,()=>`Error in separableConv2d: input must be rank 4, but got rank ${u.rank}.`),F(l.rank===4,()=>`Error in separableConv2d: depthwise filter must be rank 4, but got rank ${l.rank}.`),F(c.rank===4,()=>`Error in separableConv2d: pointwise filter must be rank 4, but got rank ${l.rank}.`),F(c.shape[0]===1,()=>`Error in separableConv2d: the first dimension of pointwise filter must be 1, but got ${c.shape[0]}.`),F(c.shape[1]===1,()=>`Error in separableConv2d: the second dimension of pointwise filter must be 1, but got ${c.shape[1]}.`);let d=l.shape[2],h=l.shape[3];F(c.shape[2]===d*h,()=>`Error in separableConv2d: the third dimension of pointwise filter must be ${d*h}, but got ${c.shape[2]}.`);let m=xr(u,l,a,r,i,s),f=$t(m,c,1,"valid",i);return p?j(f,[f.shape[1],f.shape[2],f.shape[3]]):f}var Ai=R({separableConv2d_:eR});async function tR(e,t){let n=C(e,"x","setdiff1d"),a=C(t,"y","setdiff1d");F(n.dtype===a.dtype,()=>`x and y should have the same dtype, but got x (${n.dtype}) and y (${a.dtype}).`),F(n.rank===1,()=>`x should be 1D tensor, but got x (${n.shape}).`),F(a.rank===1,()=>`y should be 1D tensor, but got y (${a.shape}).`);let r=await n.data(),s=await a.data(),i=new Set(s),o=0;for(let u=0;u`slice1d expects a rank-1 tensor, but got a rank-${a.rank} tensor`),We(a,[t],[n])}var Fh=R({slice1d_:sR});function iR(e,t,n){let a=C(e,"x","slice2d");return F(a.rank===2,()=>`slice2d expects a rank-2 tensor, but got a rank-${a.rank} tensor`),We(a,t,n)}var Jy=R({slice2d_:iR});function oR(e,t,n){let a=C(e,"x","slice3d");return F(a.rank===3,()=>`slice3d expects a rank-3 tensor, but got a rank-${a.rank} tensor`),We(a,t,n)}var Ul=R({slice3d_:oR});function lR(e,t,n){let a=C(e,"x","slice4d");return F(a.rank===4,()=>`slice4d expects a rank-4 tensor, but got a rank-${a.rank} tensor`),We(a,t,n)}var Uc=R({slice4d_:lR});function uR(e,t=-1){let n=C(e,"logits","softmax","float32");if(t===-1&&(t=n.rank-1),t!==n.rank-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${n.rank} and dim was ${t}`);let a={logits:n},r={dim:t};return P.runKernel(mi,a,r)}var Sa=R({softmax_:uR});function cR(e){F(e.dtype==="complex64",()=>`The dtype for tf.spectral.fft() must be complex64 but got ${e.dtype}.`);let t={input:e};return P.runKernel(Pd,t)}var Gc=R({fft_:cR});function pR(e){F(e.dtype==="complex64",()=>`The dtype for tf.spectral.ifft() must be complex64 but got ${e.dtype}.`);let t={input:e};return P.runKernel(Od,t)}var Gl=R({ifft_:pR});function dR(e){let t=e.shape[e.shape.length-1],n=e.size/t,a;if(t<=2){let r=j(e,[n,t]);a=Gl(r)}else{let r=[n,2*(t-1)],s=j(Vc(e),[n,t]),i=j(gh(e),[n,t]),o=Rn(We(s,[0,1],[n,t-2]),1),l=L(Rn(We(i,[0,1],[n,t-2]),1),de(-1)),c=Ze([s,o],1),u=Ze([i,l],1),p=j(qr(c,u),[r[0],r[1]]);a=Gl(p)}if(a=Vc(a),e.rank===3&&e.shape[0]!==0){let r=a,s=e.shape[0];a=j(a,[s,a.shape[0]/s,a.shape[1]]),r.dispose()}return a}var Ah=R({irfft_:dR});function hR(e,t,n=0){let a={x:C(e,"x","split")},r={numOrSizeSplits:t,axis:n};return P.runKernel(wl,a,r)}var Pn=R({split_:hR});function mR(e,t){F(e.dtype==="float32",()=>`The dtype for rfft() must be real value but got ${e.dtype}`);let n=e.shape[e.shape.length-1],a=e.size/n,r;if(t!=null&&t0),f=e.shape.map(g=>g);f[e.shape.length-1]=t,r=We(e,m,f),n=t}else if(t!=null&&t>n){let m=e.shape.map(f=>f);m[e.shape.length-1]=t-n,r=Ze([e,yt(m)],e.shape.length-1),n=t}else r=e;let s=He(r),i=j(qr(r,s),[a,n]),o=Gc(i),l=Math.floor(n/2)+1,c=Vc(o),u=gh(o),p=Pn(c,[l,n-l],c.shape.length-1),d=Pn(u,[l,n-l],u.shape.length-1),h=r.shape.slice();return h[r.shape.length-1]=l,j(qr(p[0],d[0]),h)}var Hc=R({rfft_:mR});function fR(e){let t={x:C(e,"x","sqrt")};return P.runKernel(di,t)}var an=R({sqrt_:fR});function gR(e,t){let n=C(e,"a","squaredDifference"),a=C(t,"b","squaredDifference");[n,a]=Tt(n,a),vt(n.shape,a.shape);let r={a:n,b:a},s={};return P.runKernel(fi,r,s)}var jc=R({squaredDifference_:gR});function yR(e,t){let n=C(e,"x","squeeze");return j(n,Ww(n.shape,t).newShape)}var ns=R({squeeze_:yR});function bR(e,t=0){let n=_c(e,"tensors","stack","string_or_numeric");F(n.length>=1,()=>"Pass at least one tensor to tf.stack"),n.length>0&&F(t<=n[0].rank,()=>"Axis must be <= rank of the tensor");let a=n,r={axis:t};return P.runKernel(cl,a,r)}var Mt=R({stack_:bR});function xR(e,t=0){let n={x:C(e,"x","step")},a={alpha:t};return P.runKernel(Cl,n,a)}var Hl=R({step_:xR});function vR(e,t,n,a,r=0,s=0,i=0,o=0,l=0){let c={x:C(e,"x","stridedSlice")},u={begin:t,end:n,strides:a,beginMask:r,endMask:s,ellipsisMask:i,newAxisMask:o,shrinkAxisMask:l};return P.runKernel(kl,c,u)}var Zy=R({stridedSlice_:vR});function wR(e){let t={x:C(e,"x","tan")};return P.runKernel(Il,t)}var Qy=R({tan_:wR});function et(e,t){Cs(e);let n=Ha(e,t);if(n.length!==1)throw new Error("tensor1d() requires values to be a flat/TypedArray");return Kr(e,null,n,t)}function Ca(e,t,n){if(Cs(e),t!=null&&t.length!==2)throw new Error("tensor2d() requires shape to have two numbers");let a=Ha(e,n);if(a.length!==2&&a.length!==1)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(a.length===1&&t==null)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return Kr(e,t,a,n)}function Ea(e,t,n){if(Cs(e),t!=null&&t.length!==4)throw new Error("tensor4d() requires shape to have four numbers");let a=Ha(e,n);if(a.length!==4&&a.length!==1)throw new Error("tensor4d() requires values to be number[][][][] or flat/TypedArray");if(a.length===1&&t==null)throw new Error("tensor4d() requires shape to be provided when `values` are a flat array");return Kr(e,t,a,n)}function kR(e,t,n){if(Cs(e),t!=null&&t.length!==5)throw new Error("tensor5d() requires shape to have five numbers");let a=Ha(e,n);if(a.length!==5&&a.length!==1)throw new Error("tensor5d() requires values to be number[][][][][] or flat/TypedArray");if(a.length===1&&t==null)throw new Error("tensor5d() requires shape to be provided when `values` are a flat array");return Kr(e,t,a,n)}function IR(e,t,n){if(Cs(e),t!=null&&t.length!==6)throw new Error("tensor6d() requires shape to have six numbers");let a=Ha(e,n);if(a.length!==6&&a.length!==1)throw new Error("tensor6d() requires values to be number[][][][][][] or flat/TypedArray");if(a.length===1&&t==null)throw new Error("tensor6d() requires shape to be provided when `values` are a flat array");return t=t||a,Kr(e,t,a,n)}function NR(e,t=1,n=!0){let a=C(e,"x","topk");if(a.rank===0)throw new Error("topk() expects the input to be of rank 1 or higher");let r=a.shape[a.shape.length-1];if(t>r)throw new Error(`'k' passed to topk() must be <= the last dimension (${r}) but got ${t}`);let s={x:a},i={k:t,sorted:n},[o,l]=P.runKernel(Nl,s,i);return{values:o,indices:l}}var eb=R({topk_:NR});function TR(e,t=0,n=1,a,r){if(a!=null&&a==="bool")throw new Error("Unsupported data type $ { dtype }");let s=new qy(t,n,a,!0,r),i=Le(e,a);for(let o=0;o0,()=>"The input tensor must be at least 1D");let a={x:n},r={axis:t},[s,i]=P.runKernel(Xd,a,r);return{values:s,indices:i}}var Dh=R({unique_:SR});function CR(e,t,n){let a=C(e,"x","unsortedSegmentSum"),r=C(t,"segmentIds","unsortedSegmentSum","int32");F(qt(n),()=>"numSegments must be of dtype int");let s={x:a,segmentIds:r},i={numSegments:n};return P.runKernel(wc,s,i)}var tb=R({unsortedSegmentSum_:CR});function ER(e,t=0){let n=C(e,"x","unstack","string_or_numeric");F(t>=-n.shape.length&&t`Axis = ${t} is not in [-${n.shape.length}, ${n.shape.length})`);let a={value:n},r={axis:t};return P.runKernel(Tl,a,r)}var pt=R({unstack_:ER});function Sk(e,t=!0,n,a){return P.makeVariable(e,t,n,a)}function Ck(e,t){let n=[];for(let s=0;s0,()=>"mask cannot be scalar"),rt(o.slice(s,s+i),r.shape,"mask's shape must match the first K dimensions of tensor's shape,");let l=1;for(let f=s;f"Shape mismatch in v and x");let l=de(1),c=fe(l,o),u=L(fe(i,s),c);if(r){F(a!=null,()=>"When using zeroDebias: true, step is required.");let p=C(a,"step","movingAverage");u=ve(u,fe(l,Xa(o,p)))}return Z(s,u)}var XR=R({movingAverage_:KR});function YR(e,t,n){let a=C(e,"indices","scatterND","int32"),r=C(t,"updates","scatterND");gy(r,a,n);let s={indices:a,updates:r},i={shape:n};return P.runKernel(ml,s,i)}var Gk=R({scatterND_:YR});function JR(e,t,n,a){if(e.dtype!=="int32")throw new Error(`tf.sparseToDense() expects the indices to be int32 type, but the dtype was ${e.dtype}.`);if(e.rank>2)throw new Error(`sparseIndices should be a scalar, vector, or matrix, but got shape ${e.shape}.`);let r=e.rank>0?e.shape[0]:1,s=e.rank>1?e.shape[1]:1;if(n.length!==s)throw new Error(`outputShape has incorrect number of elements:, ${n.length}, should be: ${s}.`);let i=t.size;if(!(t.rank===0||t.rank===1&&i===r))throw new Error(`sparseValues has incorrect shape ${t.shape}, should be [] or [${r}]`);if(t.dtype!==a.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}function ZR(e,t,n,a=0){let r=C(e,"sparseIndices","sparseToDense","int32"),s=C(t,"sparseValues","sparseToDense"),i=C(a,"defaultValue","sparseToDense",s.dtype);JR(r,s,n,i);let o={sparseIndices:r,sparseValues:s,defaultValue:i},l={outputShape:n};return P.runKernel(Kd,o,l)}var ab=R({sparseToDense_:ZR});function QR(e,t){let n=C(t,"indices","gatherND","int32"),a={params:C(e,"x","gatherND"),indices:n};return P.runKernel(qo,a)}var Hk=R({gatherND_:QR});function eP(e,t){if(t==null)return e.shape.slice();if(gr(e.shape,t))return t;if(e.shape.length===t.length){let n=[];for(let a=0;a`x has to be a floating point tensor since it's going to be scaled, but got a ${r.dtype} tensor instead.`),F(t>=0&&t<1,()=>`rate must be a float in the range [0, 1), but got ${t}.`),t===0)return e instanceof z?r.clone():r;let s=eP(r,n),i=1-t,o=ve(zl(Z(Vl(s,0,1,"float32",a),i)),i);return L(r,o)}var jk=R({dropout_:tP});function qk(e){return Math.floor(Math.pow(2,Math.ceil(Math.log(e)/Math.log(2))))}function rb(e,t,n){let a=1-e%2,r=new Float32Array(e);for(let s=0;s1,()=>`inTopK() expects the predictions to be of rank 2 or higher, but got ${a.rank}`),F(a.rank-1===r.rank,()=>`predictions rank should be 1 larger than targets rank, but got predictions rank ${a.rank} and targets rank ${r.rank}`),rt(a.shape.slice(0,a.shape.length-1),r.shape,"predictions's shape should be align with the targets' shape, except the last dimension.");let s=a.shape[a.shape.length-1];F(n>0&&n<=s,()=>`'k' passed to inTopK() must be > 0 && <= the predictions last dimension (${s}), but got ${n}`);let i=await a.data(),o=await r.data(),[l,c]=[i.length/s,s],u=Vw("bool",l);for(let p=0;pg.value-f.value),u[p]=0;for(let f=0;frP,depthwiseConv2d:()=>sP,matMul:()=>iP});function oP(e,t,n,a,r,s="NHWC",i){let o=e;e.rank===3&&(o=j(e,[1,e.shape[0],e.shape[1],e.shape[2]]));let l=t;l.rank===3&&(l=j(t,[1,t.shape[0],t.shape[1],t.shape[2]])),F(o.rank===4,()=>`Error in conv2dDerFilter: input must be rank 4, but got shape ${o.shape}.`),F(l.rank===4,()=>`Error in conv2dDerFilter: dy must be rank 4, but got shape ${l.shape}.`),F(n.length===4,()=>`Error in conv2dDerFilter: filterShape must be length 4, but got ${n}.`);let c=s==="NHWC"?o.shape[3]:o.shape[1],u=s==="NHWC"?l.shape[3]:l.shape[1];F(c===n[2],()=>`Error in conv2dDerFilter: depth of input ${c}) must match input depth in filter (${n[2]}.`),F(u===n[3],()=>`Error in conv2dDerFilter: depth of dy (${u}) must match output depth for filter (${n[3]}).`),i!=null&&F(qt(r),()=>`Error in conv2dDerFilter: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`);let p={x:o,dy:l},d={strides:a,pad:r,dataFormat:s,dimRoundingMode:i,filterShape:n};return P.runKernel(Sd,p,d)}var sb=R({conv2DBackpropFilter_:oP});function Rh(e,t,n){if(n==null||n==="linear")return e;if(n==="relu")return L(e,Hl(t));throw new Error(`Cannot compute gradient for fused activation ${n}.`)}function Ph(e,t){let n=t,a=Vt(e.shape,t.shape);return a.length>0&&(n=Ce(n,a)),j(n,e.shape)}function Oh(e,t,n,a){if(t==="linear")return e;if(t==="relu")return Xe(e);if(t==="elu")return Ll(e);if(t==="relu6")return Th(e);if(t==="prelu")return Wc(e,n);if(t==="leakyrelu")return Oc(e,a);throw new Error(`Unknown fused activation ${t}.`)}var Lh=(e,t)=>!(e>0)||t==="linear";function lP({x:e,filter:t,strides:n,pad:a,dataFormat:r="NHWC",dilations:s=[1,1],dimRoundingMode:i,bias:o,activation:l="linear",preluActivationWeights:c,leakyreluAlpha:u}){if(l=l||"linear",Lh(P.state.gradientDepth,l)===!1){let N=$t(e,t,n,a,r,s,i);return o!=null&&(N=Z(N,o)),Oh(N,l,c,u)}let p=C(e,"x","conv2d"),d=C(t,"filter","conv2d"),h=p,m=!1;p.rank===3&&(m=!0,h=j(p,[1,p.shape[0],p.shape[1],p.shape[2]])),F(h.rank===4,()=>`Error in fused conv2d: input must be rank 4, but got rank ${h.rank}.`),F(d.rank===4,()=>`Error in fused conv2d: filter must be rank 4, but got rank ${d.rank}.`),i!=null&&F(qt(a),()=>`Error in fused conv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${a}.`),F(h.shape[3]===d.shape[2],()=>`Error in conv2d: depth of input (${h.shape[3]}) must match input depth for filter ${d.shape[2]}.`),F($n(n,s),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`),F(r==="NHWC",()=>`Error in conv2d: got dataFormat of ${r} but only NHWC is currently supported.`);let f=Dc(h.shape,d.shape,n,s,a,i),g;o!=null&&(g=C(o,"bias","fused conv2d"),[g]=Tt(g,p),vt(f.outShape,g.shape));let y;c!=null&&(y=C(c,"prelu weights","fused conv2d"));let b=(N,T)=>{let[E,A,$,O]=T,V=Rh(N,$,l);F(Qr(s),()=>`Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${s}'`);let W=$y(A.shape,V,E,n,a),H=sb(A,V,E.shape,n,a),X=[W,H];if(O!=null){let q=Ph(O,V);X.push(q)}return X},x={x:h,filter:d,bias:g,preluActivationWeights:y},v={strides:n,pad:a,dataFormat:r,dilations:s,dimRoundingMode:i,activation:l,leakyreluAlpha:u};return o==null?qa((N,T,E)=>{let A=P.runKernel(vi,x,v);return E([T,N,A]),m&&(A=j(A,[A.shape[1],A.shape[2],A.shape[3]])),{value:A,gradFunc:b}})(h,d):qa((N,T,E,A)=>{let $=P.runKernel(vi,x,v);return A([T,N,$,E]),m&&($=j($,[$.shape[1],$.shape[2],$.shape[3]])),{value:$,gradFunc:b}})(h,d,g)}var rP=R({fusedConv2d_:lP});function uP(e,t,n,a,r,s=[1,1],i){let o=e;e.rank===3&&(o=j(e,[1,e.shape[0],e.shape[1],e.shape[2]]));let l=t;l.rank===3&&(l=j(t,[1,t.shape[0],t.shape[1],t.shape[2]]));let c={x:o,dy:l},u={strides:a,pad:r,dimRoundingMode:i,dilations:s,filterShape:n};return P.runKernel(Fd,c,u)}var Kk=R({depthwiseConv2dNativeBackpropFilter_:uP});function cP(e,t,n,a,r,s=[1,1],i){let o=t,l=!1;t.rank===3&&(l=!0,o=j(t,[1,t.shape[0],t.shape[1],t.shape[2]]));let c={dy:o,filter:n},u={strides:a,pad:r,dimRoundingMode:i,dilations:s,inputShape:e},p=P.runKernel(Ad,c,u);return l?j(p,[p.shape[1],p.shape[2],p.shape[3]]):p}var Xk=R({depthwiseConv2dNativeBackpropInput_:cP});function pP({x:e,filter:t,strides:n,pad:a,dataFormat:r="NHWC",dilations:s=[1,1],dimRoundingMode:i,bias:o,activation:l="linear",preluActivationWeights:c,leakyreluAlpha:u}){if(Lh(P.state.gradientDepth,l)===!1){let N=xr(e,t,n,a,r,s,i);return o!=null&&(N=Z(N,o)),Oh(N,l,c,u)}let p=C(e,"x","depthwiseConv2d"),d=C(t,"filter","depthwiseConv2d"),h=p,m=!1;p.rank===3&&(m=!0,h=j(p,[1,p.shape[0],p.shape[1],p.shape[2]])),F(h.rank===4,()=>`Error in fused depthwiseConv2d: input must be rank 4, but got rank ${h.rank}.`),F(d.rank===4,()=>`Error in fused depthwiseConv2d: filter must be rank 4, but got rank ${d.rank}.`),F(h.shape[3]===d.shape[2],()=>`Error in fused depthwiseConv2d: number of input channels (${h.shape[3]}) must match the inChannels dimension in filter ${d.shape[2]}.`),s==null&&(s=[1,1]),F($n(n,s),()=>`Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`),i!=null&&F(qt(a),()=>`Error in fused depthwiseConv2d: pad must be an integer when using dimRoundingMode ${i} but got pad ${a}.`);let f=Dc(h.shape,d.shape,n,s,a,i,!0),g;o!=null&&(g=C(o,"bias","fused conv2d"),[g]=Tt(g,p),vt(f.outShape,g.shape));let y;c!=null&&(y=C(c,"prelu weights","fused depthwiseConv2d"));let b=(N,T)=>{F(Qr(s),()=>`Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '${s}'`);let[E,A,$,O]=T,V=Rh(N,$,l),W=Xk(A.shape,V,E,n,a,s,i),H=Kk(A,V,E.shape,n,a,s,i);if(O!=null){let X=Ph(g,V);return[W,H,X]}return[W,H]},x={x:h,filter:d,bias:g,preluActivationWeights:y},v={strides:n,pad:a,dataFormat:r,dilations:s,dimRoundingMode:i,activation:l,leakyreluAlpha:u};return o==null?qa((N,T,E)=>{let A=P.runKernel(wi,x,v);return E([T,N,A]),m&&(A=j(A,[A.shape[1],A.shape[2],A.shape[3]])),{value:A,gradFunc:b}})(h,d):qa((N,T,E,A)=>{let $=P.runKernel(wi,x,v);return A([T,N,$,E]),m&&($=j($,[$.shape[1],$.shape[2],$.shape[3]])),{value:$,gradFunc:b}})(h,d,g)}var sP=R({fusedDepthwiseConv2d_:pP});function dP({a:e,b:t,transposeA:n=!1,transposeB:a=!1,bias:r,activation:s="linear",preluActivationWeights:i,leakyreluAlpha:o}){if(Lh(P.state.gradientDepth,s)===!1){let O=ze(e,t,n,a);return r!=null&&(O=Z(O,r)),Oh(O,s,i,o)}let l=C(e,"a","fused matMul"),c=C(t,"b","fused matMul");[l,c]=Tt(l,c);let u=n?l.shape[l.rank-2]:l.shape[l.rank-1],p=a?c.shape[c.rank-1]:c.shape[c.rank-2],d=n?l.shape[l.rank-1]:l.shape[l.rank-2],h=a?c.shape[c.rank-2]:c.shape[c.rank-1],m=l.shape.slice(0,-2),f=c.shape.slice(0,-2),g=zt(m),y=zt(f);F(l.rank>=2&&c.rank>=2&&l.rank===c.rank,()=>`Error in fused matMul: inputs must have the same rank of at least 2, got ranks ${l.rank} and ${c.rank}.`),F(gr(m,f),()=>`Error in fused matMul: outer dimensions (${m}) and (${f}) of Tensors with shapes ${l.shape} and ${c.shape} must match.`),F(u===p,()=>`Error in fused matMul: inner shapes (${u}) and (${p}) of Tensors with shapes ${l.shape} and ${c.shape} and transposeA=${n} and transposeB=${a} must match.`);let b=l.shape.slice(0,-2).concat([d,h]),x=n?j(l,[g,u,d]):j(l,[g,d,u]),v=a?j(c,[y,h,p]):j(c,[y,p,h]),N;r!=null&&(N=C(r,"bias","fused matMul"),[N]=Tt(N,l),vt(b,N.shape));let T;i!=null&&(T=C(i,"prelu weights","fused matMul"));let E=(O,V)=>{let[W,H,X,q]=V,K=Rh(j(O,X.shape),X,s),J,te;if(!n&&!a?(J=ze(K,H,!1,!0),te=ze(W,K,!0,!1)):!n&&a?(J=ze(K,H,!1,!1),te=ze(K,W,!0,!1)):n&&!a?(J=ze(H,K,!1,!0),te=ze(W,K,!1,!1)):(J=ze(H,K,!0,!0),te=ze(K,W,!0,!0)),r!=null){let Q=Ph(q,K);return[J,te,Q]}else return[J,te]},A={a:x,b:v,bias:N,preluActivationWeights:T},$={transposeA:n,transposeB:a,activation:s,leakyreluAlpha:o};return r==null?qa((O,V,W)=>{let H=P.runKernel(xi,A,$);return W([O,V,H]),{value:j(H,b),gradFunc:E}})(x,v):qa((O,V,W,H)=>{let X=P.runKernel(xi,A,$);return H([O,V,X,W]),{value:j(X,b),gradFunc:E}})(x,v,N)}var iP=R({fusedMatMul_:dP});function hP(e){return rb(e,.54,.46)}var mP=R({hammingWindow_:hP});function fP(e){return rb(e,.5,.5)}var Yk=R({hannWindow_:fP});function gP(e,t,n,a=!1,r=0){let s=0,i=[];for(;s+t<=e.size;)i.push(We(e,s,t)),s+=n;if(a)for(;s`Error in cropAndResize: image must be rank 4,but got rank ${i.rank}.`),F(o.rank===2&&o.shape[1]===4,()=>`Error in cropAndResize: boxes must be have size [${c},4] but had shape ${o.shape}.`),F(l.rank===1&&l.shape[0]===c,()=>`Error in cropAndResize: boxInd must be have size [${c}] but had shape ${o.shape}.`),F(a.length===2,()=>`Error in cropAndResize: cropSize must be of length 2, but got length ${a.length}.`),F(a[0]>=1&&a[1]>=1,()=>`cropSize must be atleast [1,1], but was ${a}`),F(r==="bilinear"||r==="nearest",()=>`method must be bilinear or nearest, but was ${r}`);let u={image:i,boxes:o,boxInd:l},p={method:r,extrapolationValue:s,cropSize:a};return P.runKernel(Lo,u,p)}var vP=R({cropAndResize_:xP});function wP(e){let t=C(e,"image","flipLeftRight","float32");F(t.rank===4,()=>`Error in flipLeftRight: image must be rank 4,but got rank ${t.rank}.`);let n={image:t};return P.runKernel(Ho,n,{})}var kP=R({flipLeftRight_:wP});function IP(e,t,n=0,a=.5){let r=C(e,"image","rotateWithOffset","float32");F(r.rank===4,()=>`Error in rotateWithOffset: image must be rank 4,but got rank ${r.rank}.`);let s={image:r},i={radians:t,fillValue:n,center:a};return P.runKernel(El,s,i)}var NP=R({rotateWithOffset_:IP});function jl(e,t,n,a,r,s){a==null&&(a=.5),r==null&&(r=Number.NEGATIVE_INFINITY),s==null&&(s=0);let i=e.shape[0];return n=Math.min(n,i),F(0<=a&&a<=1,()=>`iouThreshold must be in [0, 1], but was '${a}'`),F(e.rank===2,()=>`boxes must be a 2D tensor, but was of rank '${e.rank}'`),F(e.shape[1]===4,()=>`boxes must have 4 columns, but 2nd dimension was ${e.shape[1]}`),F(t.rank===1,()=>"scores must be a 1D tensor"),F(t.shape[0]===i,()=>`scores has incompatible shape with boxes. Expected ${i}, but was ${t.shape[0]}`),F(0<=s&&s<=1,()=>`softNmsSigma must be in [0, 1], but was '${s}'`),{maxOutputSize:n,iouThreshold:a,scoreThreshold:r,softNmsSigma:s}}function TP(e,t,n,a=.5,r=Number.NEGATIVE_INFINITY){let s=C(e,"boxes","nonMaxSuppression"),i=C(t,"scores","nonMaxSuppression"),o=jl(s,i,n,a,r);n=o.maxOutputSize,a=o.iouThreshold,r=o.scoreThreshold;let l={maxOutputSize:n,iouThreshold:a,scoreThreshold:r};return P.runKernel(il,{boxes:s,scores:i},l)}var SP=R({nonMaxSuppression_:TP});function EP(e,t,n){let a=CP(e,t,n),r=a<0?-(a+1):a;e.splice(r,0,t)}function CP(e,t,n){return FP(e,t,n||_P)}function _P(e,t){return e>t?1:e>>1);let o=n(t,e[s]);o>0?a=s+1:(r=s,i=!o)}return i?a:-a-1}function Zk(e,t,n,a,r){return ib(e,t,n,a,r,0)}function Qk(e,t,n,a,r,s){return ib(e,t,n,a,r,0,!1,s,!0)}function e1(e,t,n,a,r,s){return ib(e,t,n,a,r,s,!0)}function ib(e,t,n,a,r,s,i=!1,o=!1,l=!1){let c=[];for(let g=0;gr&&c.push({score:t[g],boxIndex:g,suppressBeginIndex:0});c.sort(t1);let u=s>0?-.5/s:0,p=[],d=[];for(;p.length0;){let g=c.pop(),{score:y,boxIndex:b,suppressBeginIndex:x}=g;if(y=x;--N){let T=AP(e,b,p[N]);if(T>=a){v=!0;break}if(g.score=g.score*$P(a,u,T),g.score<=r)break}g.suppressBeginIndex=p.length,v||(g.score===y?(p.push(b),d.push(g.score)):g.score>r&&EP(c,g,t1))}let h=p.length,m=n-h;o&&m>0&&(p.push(...new Array(m).fill(0)),d.push(...new Array(m).fill(0)));let f={selectedIndices:p};return i&&(f.selectedScores=d),l&&(f.validOutputs=h),f}function AP(e,t,n){let a=e.subarray(t*4,t*4+4),r=e.subarray(n*4,n*4+4),s=Math.min(a[0],a[2]),i=Math.min(a[1],a[3]),o=Math.max(a[0],a[2]),l=Math.max(a[1],a[3]),c=Math.min(r[0],r[2]),u=Math.min(r[1],r[3]),p=Math.max(r[0],r[2]),d=Math.max(r[1],r[3]),h=(o-s)*(l-i),m=(p-c)*(d-u);if(h<=0||m<=0)return 0;let f=Math.max(s,c),g=Math.max(i,u),y=Math.min(o,p),b=Math.min(l,d),x=Math.max(y-f,0)*Math.max(b-g,0);return x/(h+m-x)}function $P(e,t,n){let a=Math.exp(t*n*n);return n<=e?a:0}function t1(e,t){return e.score-t.score||e.score===t.score&&t.boxIndex-e.boxIndex}async function DP(e,t,n,a=.5,r=Number.NEGATIVE_INFINITY){let s=C(e,"boxes","nonMaxSuppressionAsync"),i=C(t,"scores","nonMaxSuppressionAsync"),o=jl(s,i,n,a,r);n=o.maxOutputSize,a=o.iouThreshold,r=o.scoreThreshold;let l=await Promise.all([s.data(),i.data()]),c=l[0],u=l[1],{selectedIndices:p}=Zk(c,u,n,a,r);return s!==e&&s.dispose(),i!==t&&i.dispose(),et(p,"int32")}var MP=DP;function RP(e,t,n,a=.5,r=Number.NEGATIVE_INFINITY,s=0){let i=C(e,"boxes","nonMaxSuppression"),o=C(t,"scores","nonMaxSuppression"),l=jl(i,o,n,a,r,s);n=l.maxOutputSize,a=l.iouThreshold,r=l.scoreThreshold,s=l.softNmsSigma;let c={boxes:i,scores:o},u={maxOutputSize:n,iouThreshold:a,scoreThreshold:r,softNmsSigma:s},p=P.runKernel(ll,c,u);return{selectedIndices:p[0],selectedScores:p[1]}}var PP=R({nonMaxSuppressionWithScore_:RP});async function OP(e,t,n,a=.5,r=Number.NEGATIVE_INFINITY,s=0){let i=C(e,"boxes","nonMaxSuppressionAsync"),o=C(t,"scores","nonMaxSuppressionAsync"),l=jl(i,o,n,a,r,s);n=l.maxOutputSize,a=l.iouThreshold,r=l.scoreThreshold,s=l.softNmsSigma;let c=await Promise.all([i.data(),o.data()]),u=c[0],p=c[1],{selectedIndices:d,selectedScores:h}=e1(u,p,n,a,r,s);return i!==e&&i.dispose(),o!==t&&o.dispose(),{selectedIndices:et(d,"int32"),selectedScores:et(h)}}var LP=OP;function zP(e,t,n,a=.5,r=Number.NEGATIVE_INFINITY,s=!1){let i=C(e,"boxes","nonMaxSuppression"),o=C(t,"scores","nonMaxSuppression"),l=jl(i,o,n,a,r,null),c=l.maxOutputSize,u=l.iouThreshold,p=l.scoreThreshold,d={boxes:i,scores:o},h={maxOutputSize:c,iouThreshold:u,scoreThreshold:p,padToMaxOutputSize:s},m=P.runKernel(ol,d,h);return{selectedIndices:m[0],validOutputs:m[1]}}var BP=R({nonMaxSuppressionPadded_:zP});async function WP(e,t,n,a=.5,r=Number.NEGATIVE_INFINITY,s=!1){let i=C(e,"boxes","nonMaxSuppressionAsync"),o=C(t,"scores","nonMaxSuppressionAsync"),l=jl(i,o,n,a,r,null),c=l.maxOutputSize,u=l.iouThreshold,p=l.scoreThreshold,[d,h]=await Promise.all([i.data(),o.data()]),{selectedIndices:m,validOutputs:f}=Qk(d,h,c,u,p,s);return i!==e&&i.dispose(),o!==t&&o.dispose(),{selectedIndices:et(m,"int32"),validOutputs:de(f,"int32")}}var VP=WP;function UP(e,t,n=!1,a=!1){let r=C(e,"images","resizeBilinear");F(r.rank===3||r.rank===4,()=>`Error in resizeBilinear: x must be rank 3 or 4, but got rank ${r.rank}.`),F(t.length===2,()=>`Error in resizeBilinear: new shape must 2D, but got shape ${t}.`),F(a===!1||n===!1,()=>"Error in resizeBilinear: If halfPixelCenters is true, alignCorners must be false.");let s=r,i=!1;r.rank===3&&(i=!0,s=j(r,[1,r.shape[0],r.shape[1],r.shape[2]]));let[]=t,o={images:s},l={alignCorners:n,halfPixelCenters:a,size:t},c=P.runKernel(si,o,l);return i?j(c,[c.shape[1],c.shape[2],c.shape[3]]):c}var n1=R({resizeBilinear_:UP});function GP(e,t,n=!1,a=!1){let r=C(e,"images","resizeNearestNeighbor");F(r.rank===3||r.rank===4,()=>`Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank ${r.rank}.`),F(t.length===2,()=>`Error in resizeNearestNeighbor: new shape must 2D, but got shape ${t}.`),F(r.dtype==="float32"||r.dtype==="int32",()=>"`images` must have `int32` or `float32` as dtype"),F(a===!1||n===!1,()=>"Error in resizeNearestNeighbor: If halfPixelCenters is true, alignCorners must be false.");let s=r,i=!1;r.rank===3&&(i=!0,s=j(r,[1,r.shape[0],r.shape[1],r.shape[2]]));let[]=t,o={images:s},l={alignCorners:n,halfPixelCenters:a,size:t},c=P.runKernel(bc,o,l);return i?j(c,[c.shape[1],c.shape[2],c.shape[3]]):c}var a1=R({resizeNearestNeighbor_:GP});function HP(e,t,n){F(t%1==0,()=>`bandPart(): numLower must be an integer, got ${t}.`),F(n%1==0,()=>`bandPart(): numUpper must be an integer, got ${n}.`);let a=C(e,"a","bandPart");F(a.rank>=2,()=>`bandPart(): Rank must be at least 2, got ${a.rank}.`);let r=a.shape,[s,i]=a.shape.slice(-2);if(!(t<=s))throw new Error(`bandPart(): numLower (${t}) must not be greater than the number of rows (${s}).`);if(!(n<=i))throw new Error(`bandPart(): numUpper (${n}) must not be greater than the number of columns (${i}).`);t<0&&(t=s),n<0&&(n=i);let o=j(Nh(0,s,1,"int32"),[-1,1]),l=Nh(0,i,1,"int32"),c=fe(o,l),u=pa(es(c,de(+t,"int32")),wr(c,de(-n,"int32"))),p=yt([s,i],a.dtype);return j(Mt(pt(j(a,[-1,s,i])).map(d=>kn(u,d,p))),r)}var jP=R({bandPart_:HP});function qP(e){let t;if(Array.isArray(e)){t=!1,F(e!=null&&e.length>0,()=>"Gram-Schmidt process: input must not be null, undefined, or empty");let r=e[0].shape[0];for(let s=1;s`Gram-Schmidt: Non-unique lengths found in the input vectors: (${e[s].shape[0]} vs. ${r})`)}else t=!0,e=Pn(e,e.shape[0],0).map(r=>ns(r,[0]));F(e.length<=e[0].shape[0],()=>`Gram-Schmidt: Number of vectors (${e.length}) exceeds number of dimensions (${e[0].shape[0]}).`);let n=[],a=e;for(let r=0;r{let s=a[r];if(r>0)for(let i=0;i=2,()=>`qr() requires input tensor to have a rank >= 2, but got rank ${e.rank}`),e.rank===2)return r1(e,t);{let n=e.shape.slice(0,e.shape.length-2).reduce((l,c)=>l*c),a=pt(j(e,[n,e.shape[e.shape.length-2],e.shape[e.shape.length-1]]),0),r=[],s=[];a.forEach(l=>{let[c,u]=r1(l,t);r.push(c),s.push(u)});let i=j(Mt(r,0),e.shape),o=j(Mt(s,0),e.shape);return[i,o]}}function r1(e,t=!1){return P.tidy(()=>{F(e.shape.length===2,()=>`qr2d() requires a 2D Tensor, but got a ${e.shape.length}D Tensor.`);let n=e.shape[0],a=e.shape[1],r=zy(n),s=Yr(e),i=Ca([[1]],[1,1]),o=Yr(i),l=n>=a?a:n;for(let c=0;c{let h=We(s,[c,c],[n-c,1]),m=Mh(h),f=We(s,[c,c],[1,1]),g=kn(Qn(f,0),Ca([[-1]]),Ca([[1]])),y=fe(f,L(g,m)),b=ve(h,y);b.shape[0]===1?o=Yr(i):o=Ze([i,We(b,[1,0],[b.shape[0]-1,b.shape[1]])],0);let x=St(ve(ze(g,y),m)),v=We(s,[c,0],[n-c,a]),N=L(x,o),T=Ue(o);if(c===0)s=fe(v,ze(N,ze(T,v)));else{let $=fe(v,ze(N,ze(T,v)));s=Ze([We(s,[0,0],[c,a]),$],0)}let E=Ue(N),A=We(r,[0,c],[n,r.shape[1]-c]);if(c===0)r=fe(A,ze(ze(A,o),E));else{let $=fe(A,ze(ze(A,o),E));r=Ze([We(r,[0,0],[n,c]),$],1)}return[o,s,r]}),Ae([u,p,d])}return!t&&n>a&&(r=We(r,[0,0],[n,a]),s=We(s,[0,0],[a,a])),[r,s]})}var YP=R({qr_:XP}),mn;(function(e){e[e.NONE=0]="NONE",e[e.MEAN=1]="MEAN",e[e.SUM=2]="SUM",e[e.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"})(mn||(mn={}));function JP(e,t,n=mn.SUM_BY_NONZERO_WEIGHTS){let a=C(e,"losses","computeWeightedLoss"),r=null;t!=null&&(r=C(t,"weights","computeWeightedLoss"));let s=r==null?a:L(a,r);if(n===mn.NONE)return s;if(n===mn.SUM)return Ce(s);if(n===mn.MEAN){if(r==null)return Ct(s);{let i=a.size/r.size,o=ve(Ce(s),Ce(r));return i>1?ve(o,de(i)):o}}if(n===mn.SUM_BY_NONZERO_WEIGHTS){if(r==null)return ve(Ce(s),de(a.size));{let i=L(r,Ka(a.shape)),o=pe(Ce(ts(i,de(0))),"float32");return ve(Ce(s),o)}}throw Error(`Unknown reduction: ${n}`)}var kr=R({computeWeightedLoss_:JP});function ZP(e,t,n,a=mn.SUM_BY_NONZERO_WEIGHTS){let r=C(e,"labels","absoluteDifference"),s=C(t,"predictions","absoluteDifference"),i=null;n!=null&&(i=C(n,"weights","absoluteDifference")),rt(r.shape,s.shape,"Error in absoluteDifference: ");let o=Wt(fe(r,s));return kr(o,i,a)}var QP=R({absoluteDifference_:ZP});function eO(e,t,n,a,r=mn.SUM_BY_NONZERO_WEIGHTS){let s=C(e,"labels","cosineDistance"),i=C(t,"predictions","cosineDistance"),o=null;a!=null&&(o=C(a,"weights","cosineDistance")),rt(s.shape,i.shape,"Error in cosineDistance: ");let l=de(1),c=fe(l,Ce(L(s,i),n,!0));return kr(c,o,r)}var tO=R({cosineDistance_:eO});function nO(e,t,n,a=mn.SUM_BY_NONZERO_WEIGHTS){let r=C(e,"labels","hingeLoss"),s=C(t,"predictions","hingeLoss"),i=null;n!=null&&(i=C(n,"weights","hingeLoss")),rt(r.shape,s.shape,"Error in hingeLoss: ");let o=de(1);r=fe(L(de(2),r),o);let l=Xe(fe(o,L(r,s)));return kr(l,i,a)}var aO=R({hingeLoss_:nO});function rO(e,t,n,a=1,r=mn.SUM_BY_NONZERO_WEIGHTS){let s=C(e,"labels","huberLoss"),i=C(t,"predictions","huberLoss"),o=null;n!=null&&(o=C(n,"weights","huberLoss")),rt(s.shape,i.shape,"Error in huberLoss: ");let l=de(a),c=Wt(fe(i,s)),u=Fi(c,l),p=fe(c,u),d=Z(L(de(.5),ot(u)),L(l,p));return kr(d,o,r)}var sO=R({huberLoss_:rO});function iO(e,t,n,a=1e-7,r=mn.SUM_BY_NONZERO_WEIGHTS){let s=C(e,"labels","logLoss"),i=C(t,"predictions","logLoss"),o=null;n!=null&&(o=C(n,"weights","logLoss")),rt(s.shape,i.shape,"Error in logLoss: ");let l=de(1),c=de(a),u=St(L(s,Dn(Z(i,c)))),p=L(fe(l,s),Dn(Z(fe(l,i),c))),d=fe(u,p);return kr(d,o,r)}var oO=R({logLoss_:iO});function lO(e,t,n,a=mn.SUM_BY_NONZERO_WEIGHTS){let r=C(e,"labels","meanSquaredError"),s=C(t,"predictions","meanSquaredError"),i=null;n!=null&&(i=C(n,"weights","meanSquaredError")),rt(r.shape,s.shape,"Error in meanSquaredError: ");let o=jc(r,s);return kr(o,i,a)}var uO=R({meanSquaredError_:lO});function cO(e,t){let n=C(e,"labels","sigmoidCrossEntropyWithLogits"),a=C(t,"logits","sigmoidCrossEntropyWithLogits");rt(n.shape,a.shape,"Error in sigmoidCrossEntropyWithLogits: ");let r=Xe(a),s=L(a,n),i=yh(hn(St(Wt(a))));return Z(fe(r,s),i)}function pO(e,t,n,a=0,r=mn.SUM_BY_NONZERO_WEIGHTS){let s=C(e,"multiClassLabels","sigmoidCrossEntropy"),i=C(t,"logits","sigmoidCrossEntropy"),o=null;if(n!=null&&(o=C(n,"weights","sigmoidCrossEntropy")),rt(s.shape,i.shape,"Error in sigmoidCrossEntropy: "),a>0){let c=de(a),u=de(1),p=de(.5);s=Z(L(s,fe(u,c)),L(p,c))}let l=cO(s,i);return kr(l,o,r)}var dO=R({sigmoidCrossEntropy_:pO});function hO(e,t,n=-1){if(n===-1&&(n=t.rank-1),n!==t.rank-1)throw Error(`Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank ${t.rank} and dim was ${n}`);return qa((a,r,s)=>{let i=Uy(r,[n],!0),o=fe(pe(r,"float32"),i);s([a,o]);let l=St(L(o,a));return{value:Ce(l,[n]),gradFunc:(c,u)=>{let[p,d]=u,h=_i(c.shape,[n]);return[L(j(c,h),fe(pe(p,"float32"),hn(d))),L(j(c,h),fe(hn(d),pe(p,"float32")))]}}})(e,t)}function mO(e,t,n,a=0,r=mn.SUM_BY_NONZERO_WEIGHTS){let s=C(e,"onehotLabels","softmaxCrossEntropy"),i=C(t,"logits","softmaxCrossEntropy"),o=null;if(n!=null&&(o=C(n,"weights","softmaxCrossEntropy")),rt(s.shape,i.shape,"Error in softmaxCrossEntropy: "),a>0){let c=de(a),u=de(1),p=de(s.shape[1]);s=Z(L(s,fe(u,c)),ve(c,p))}let l=hO(s,i);return kr(l,o,r)}var fO=R({softmaxCrossEntropy_:mO}),gO={fft:Gc,ifft:Gl,rfft:Hc,irfft:Ah},yO={hammingWindow:mP,hannWindow:Yk,frame:Jk,stft:bP},Ya={flipLeftRight:kP,resizeNearestNeighbor:a1,resizeBilinear:n1,rotateWithOffset:NP,cropAndResize:vP,nonMaxSuppression:SP,nonMaxSuppressionAsync:MP,nonMaxSuppressionWithScore:PP,nonMaxSuppressionWithScoreAsync:LP,nonMaxSuppressionPadded:BP,nonMaxSuppressionPaddedAsync:VP},s1={bandPart:jP,gramSchmidt:KP,qr:YP},bO={absoluteDifference:QP,computeWeightedLoss:kr,cosineDistance:tO,hingeLoss:aO,huberLoss:sO,logLoss:oO,meanSquaredError:uO,sigmoidCrossEntropy:dO,softmaxCrossEntropy:fO},Ir=class extends G0{minimize(e,t=!1,n){let{value:a,grads:r}=this.computeGradients(e,n);if(n!=null){let s=n.map(i=>({name:i.name,tensor:r[i.name]}));this.applyGradients(s)}else this.applyGradients(r);return Ae(r),t?a:(a.dispose(),null)}get iterations(){return this.iterations_==null&&(this.iterations_=0),this.iterations_}incrementIterations(){this.iterations_=this.iterations+1}computeGradients(e,t){return fk(e,t)}dispose(){this.iterations_!=null&&Ae(this.iterations_)}async saveIterations(){return this.iterations_==null&&(this.iterations_=0),{name:"iter",tensor:de(this.iterations_,"int32")}}async getWeights(){throw new Error("getWeights() is not implemented for this optimizer yet.")}async setWeights(e){throw new Error(`setWeights() is not implemented for this optimizer class ${this.getClassName()}`)}async extractIterations(e){return this.iterations_=(await e[0].tensor.data())[0],e.slice(1)}};Object.defineProperty(Ir,Symbol.hasInstance,{value:e=>e.minimize!=null&&e.computeGradients!=null&&e.applyGradients!=null});var zh=class extends Ir{constructor(e,t,n=null){super();this.learningRate=e,this.rho=t,this.epsilon=n,this.accumulatedGrads=[],this.accumulatedUpdates=[],n==null&&(this.epsilon=P.backend.epsilon())}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let a=P.registeredVariables[t],r=!1;this.accumulatedGrads[n]==null&&(this.accumulatedGrads[n]={originalName:`${t}/accum_grad`,variable:D(()=>He(a).variable(r))}),this.accumulatedUpdates[n]==null&&(this.accumulatedUpdates[n]={originalName:`${t}/accum_var`,variable:D(()=>He(a).variable(r))});let s=Array.isArray(e)?e[n].tensor:e[t];if(s==null)return;let i=this.accumulatedGrads[n].variable,o=this.accumulatedUpdates[n].variable;D(()=>{let l=Z(L(i,this.rho),L(ot(s),1-this.rho)),c=L(ve(an(Z(o,this.epsilon)),an(Z(i,this.epsilon))),s),u=Z(L(o,this.rho),L(ot(c),1-this.rho));i.assign(l),o.assign(u);let p=Z(L(c,-this.learningRate),a);a.assign(p)})}),this.incrementIterations()}dispose(){this.accumulatedUpdates!=null&&(Ae(this.accumulatedGrads.map(e=>e.variable)),Ae(this.accumulatedUpdates.map(e=>e.variable)))}async getWeights(){let e=[...this.accumulatedGrads,...this.accumulatedUpdates];return[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=e.length/2,n=!1;this.accumulatedGrads=e.slice(0,t).map(a=>({originalName:a.name,variable:a.tensor.variable(n)})),this.accumulatedUpdates=e.slice(t,t*2).map(a=>({originalName:a.name,variable:a.tensor.variable(n)}))}getConfig(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.rho,t.epsilon)}};zh.className="Adadelta";Jr(zh);var Bh=class extends Ir{constructor(e,t=.1){super();this.learningRate=e,this.initialAccumulatorValue=t,this.accumulatedGrads=[]}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let a=P.registeredVariables[t];if(this.accumulatedGrads[n]==null){let i=!1;this.accumulatedGrads[n]={originalName:`${t}/accumulator`,variable:D(()=>In(a.shape,this.initialAccumulatorValue).variable(i))}}let r=Array.isArray(e)?e[n].tensor:e[t];if(r==null)return;let s=this.accumulatedGrads[n].variable;D(()=>{let i=Z(s,ot(r));s.assign(i);let o=Z(L(ve(r,an(Z(i,P.backend.epsilon()))),-this.learningRate),a);a.assign(o)})}),this.incrementIterations()}dispose(){this.accumulatedGrads!=null&&Ae(this.accumulatedGrads.map(e=>e.variable))}async getWeights(){return[await this.saveIterations()].concat(this.accumulatedGrads.map(e=>({name:e.originalName,tensor:e.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=!1;this.accumulatedGrads=e.map(n=>({originalName:n.name,variable:n.tensor.variable(t)}))}getConfig(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}}static fromConfig(e,t){return new e(t.learningRate,t.initialAccumulatorValue)}};Bh.className="Adagrad";Jr(Bh);var Wh=class extends Ir{constructor(e,t,n,a=null){super();this.learningRate=e,this.beta1=t,this.beta2=n,this.epsilon=a,this.accumulatedFirstMoment=[],this.accumulatedSecondMoment=[],D(()=>{this.accBeta1=de(t).variable(),this.accBeta2=de(n).variable()}),a==null&&(this.epsilon=P.backend.epsilon())}applyGradients(e){let t=Array.isArray(e)?e.map(n=>n.name):Object.keys(e);D(()=>{let n=fe(1,this.accBeta1),a=fe(1,this.accBeta2);t.forEach((r,s)=>{let i=P.registeredVariables[r],o=!1;this.accumulatedFirstMoment[s]==null&&(this.accumulatedFirstMoment[s]={originalName:`${r}/m`,variable:D(()=>He(i).variable(o))}),this.accumulatedSecondMoment[s]==null&&(this.accumulatedSecondMoment[s]={originalName:`${r}/v`,variable:D(()=>He(i).variable(o))});let l=Array.isArray(e)?e[s].tensor:e[r];if(l==null)return;let c=this.accumulatedFirstMoment[s].variable,u=this.accumulatedSecondMoment[s].variable,p=Z(L(c,this.beta1),L(l,1-this.beta1)),d=Z(L(u,this.beta2),L(ot(l),1-this.beta2)),h=ve(p,n),m=ve(d,a);c.assign(p),u.assign(d);let f=Z(L(ve(h,Z(an(m),this.epsilon)),-this.learningRate),i);i.assign(f)}),this.accBeta1.assign(L(this.accBeta1,this.beta1)),this.accBeta2.assign(L(this.accBeta2,this.beta2))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.accBeta2.dispose(),this.accumulatedFirstMoment!=null&&Ae(this.accumulatedFirstMoment.map(e=>e.variable)),this.accumulatedSecondMoment!=null&&Ae(this.accumulatedSecondMoment.map(e=>e.variable))}async getWeights(){let e=[...this.accumulatedFirstMoment,...this.accumulatedSecondMoment];return[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e),D(()=>{this.accBeta1.assign(Xa(this.beta1,this.iterations_+1)),this.accBeta2.assign(Xa(this.beta2,this.iterations_+1))});let t=e.length/2,n=!1;this.accumulatedFirstMoment=e.slice(0,t).map(a=>({originalName:a.name,variable:a.tensor.variable(n)})),this.accumulatedSecondMoment=e.slice(t,t*2).map(a=>({originalName:a.name,variable:a.tensor.variable(n)}))}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon)}};Wh.className="Adam";Jr(Wh);var Vh=class extends Ir{constructor(e,t,n,a=null,r=0){super();this.learningRate=e,this.beta1=t,this.beta2=n,this.epsilon=a,this.decay=r,this.accumulatedFirstMoment=[],this.accumulatedWeightedInfNorm=[],D(()=>{this.iteration=de(0).variable(),this.accBeta1=de(t).variable()}),a==null&&(this.epsilon=P.backend.epsilon())}applyGradients(e){let t=Array.isArray(e)?e.map(n=>n.name):Object.keys(e);D(()=>{let n=fe(1,this.accBeta1),a=ve(-this.learningRate,Z(L(this.iteration,this.decay),1));t.forEach((r,s)=>{let i=P.registeredVariables[r],o=!1;this.accumulatedFirstMoment[s]==null&&(this.accumulatedFirstMoment[s]={originalName:`${r}/m`,variable:He(i).variable(o)}),this.accumulatedWeightedInfNorm[s]==null&&(this.accumulatedWeightedInfNorm[s]={originalName:`${r}/v`,variable:He(i).variable(o)});let l=Array.isArray(e)?e[s].tensor:e[r];if(l==null)return;let c=this.accumulatedFirstMoment[s].variable,u=this.accumulatedWeightedInfNorm[s].variable,p=Z(L(c,this.beta1),L(l,1-this.beta1)),d=L(u,this.beta2),h=Wt(l),m=Ta(d,h);c.assign(p),u.assign(m);let f=Z(L(ve(a,n),ve(p,Z(m,this.epsilon))),i);i.assign(f)}),this.iteration.assign(Z(this.iteration,1)),this.accBeta1.assign(L(this.accBeta1,this.beta1))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.iteration.dispose(),this.accumulatedFirstMoment!=null&&Ae(this.accumulatedFirstMoment.map(e=>e.variable)),this.accumulatedWeightedInfNorm!=null&&Ae(this.accumulatedWeightedInfNorm.map(e=>e.variable))}async getWeights(){throw new Error("getWeights() is not implemented for Adamax yet.")}async setWeights(e){throw new Error("setWeights() is not implemented for Adamax yet.")}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}}static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon,t.decay)}};Vh.className="Adamax";Jr(Vh);var qc=class extends Ir{constructor(e){super();this.learningRate=e,this.setLearningRate(e)}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let a=Array.isArray(e)?e[n].tensor:e[t];if(a==null)return;let r=P.registeredVariables[t];D(()=>{let s=Z(L(this.c,a),r);r.assign(s)})}),this.incrementIterations()}setLearningRate(e){this.learningRate=e,this.c!=null&&this.c.dispose(),this.c=Xt(de(-e))}dispose(){this.c.dispose()}async getWeights(){return[await this.saveIterations()]}async setWeights(e){if(e=await this.extractIterations(e),e.length!==0)throw new Error("SGD optimizer does not have settable weights.")}getConfig(){return{learningRate:this.learningRate}}static fromConfig(e,t){return new e(t.learningRate)}};qc.className="SGD";Jr(qc);var Uh=class extends qc{constructor(e,t,n=!1){super(e);this.learningRate=e,this.momentum=t,this.useNesterov=n,this.accumulations=[],this.m=de(this.momentum)}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let a=P.registeredVariables[t];if(this.accumulations[n]==null){let i=!1;this.accumulations[n]={originalName:`${t}/momentum`,variable:D(()=>He(a).variable(i))}}let r=this.accumulations[n].variable,s=Array.isArray(e)?e[n].tensor:e[t];s!=null&&D(()=>{let i,o=Z(L(this.m,r),s);this.useNesterov?i=Z(L(this.c,Z(s,L(o,this.m))),a):i=Z(L(this.c,o),a),r.assign(o),a.assign(i)})}),this.incrementIterations()}dispose(){this.m.dispose(),this.accumulations!=null&&Ae(this.accumulations.map(e=>e.variable))}setMomentum(e){this.momentum=e}async getWeights(){return[await this.saveIterations()].concat(this.accumulations.map(e=>({name:e.originalName,tensor:e.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=!1;this.accumulations=e.map(n=>({originalName:n.name,variable:n.tensor.variable(t)}))}getConfig(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}}static fromConfig(e,t){return new e(t.learningRate,t.momentum,t.useNesterov)}};Uh.className="Momentum";Jr(Uh);var Gh=class extends Ir{constructor(e,t=.9,n=0,a=null,r=!1){super();if(this.learningRate=e,this.decay=t,this.momentum=n,this.epsilon=a,this.accumulatedMeanSquares=[],this.accumulatedMoments=[],this.accumulatedMeanGrads=[],this.centered=r,a==null&&(this.epsilon=P.backend.epsilon()),e==null)throw new Error("learningRate for RMSPropOptimizer must be defined.")}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let a=P.registeredVariables[t],r=!1;this.accumulatedMeanSquares[n]==null&&(this.accumulatedMeanSquares[n]={originalName:`${t}/rms`,variable:D(()=>He(a).variable(r))}),this.accumulatedMoments[n]==null&&(this.accumulatedMoments[n]={originalName:`${t}/momentum`,variable:D(()=>He(a).variable(r))}),this.accumulatedMeanGrads[n]==null&&this.centered&&(this.accumulatedMeanGrads[n]={originalName:`${t}/mg`,variable:D(()=>He(a).variable(r))});let s=Array.isArray(e)?e[n].tensor:e[t];if(s==null)return;let i=this.accumulatedMeanSquares[n].variable,o=this.accumulatedMoments[n].variable;D(()=>{let l=Z(L(i,this.decay),L(ot(s),1-this.decay));if(this.centered){let c=this.accumulatedMeanGrads[n].variable,u=Z(L(c,this.decay),L(s,1-this.decay)),p=ve(L(s,this.learningRate),an(fe(l,Z(ot(u),this.epsilon)))),d=Z(L(o,this.momentum),p);i.assign(l),c.assign(u),o.assign(d);let h=fe(a,d);a.assign(h)}else{let c=Z(L(i,this.decay),L(ot(s),1-this.decay)),u=Z(L(o,this.momentum),ve(L(s,this.learningRate),an(Z(c,this.epsilon))));i.assign(c),o.assign(u);let p=fe(a,u);a.assign(p)}})}),this.incrementIterations()}dispose(){this.accumulatedMeanSquares!=null&&Ae(this.accumulatedMeanSquares.map(e=>e.variable)),this.accumulatedMeanGrads!=null&&this.centered&&Ae(this.accumulatedMeanGrads.map(e=>e.variable)),this.accumulatedMoments!=null&&Ae(this.accumulatedMoments.map(e=>e.variable))}async getWeights(){let e=[...this.accumulatedMeanSquares,...this.accumulatedMoments];return this.centered&&e.push(...this.accumulatedMeanGrads),[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=this.centered?e.length/3:e.length/2,n=!1;this.accumulatedMeanSquares=e.slice(0,t).map(a=>({originalName:a.name,variable:a.tensor.variable(n)})),this.accumulatedMoments=e.slice(t,t*2).map(a=>({originalName:a.name,variable:a.tensor.variable(n)})),this.centered&&(this.accumulatedMeanGrads=e.slice(t*2,t*3).map(a=>({originalName:a.name,variable:a.tensor.variable(n)})))}getConfig(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}}static fromConfig(e,t){return new e(t.learningRate,t.decay,t.momentum,t.epsilon,t.centered)}};Gh.className="RMSProp";Jr(Gh);var $i=class{static sgd(e){return new qc(e)}static momentum(e,t,n=!1){return new Uh(e,t,n)}static rmsprop(e,t=.9,n=0,a=null,r=!1){return new Gh(e,t,n,a,r)}static adam(e=.001,t=.9,n=.999,a=null){return new Wh(e,t,n,a)}static adadelta(e=.001,t=.95,n=null){return new zh(e,t,n)}static adamax(e=.002,t=.9,n=.999,a=null,r=0){return new Vh(e,t,n,a,r)}static adagrad(e,t=.1){return new Bh(e,t)}},Di={sgd:$i.sgd,momentum:$i.momentum,adadelta:$i.adadelta,adagrad:$i.adagrad,rmsprop:$i.rmsprop,adamax:$i.adamax,adam:$i.adam},xO=(()=>typeof requestAnimationFrame!="undefined"?requestAnimationFrame:typeof setImmediate!="undefined"?setImmediate:e=>e())();function Hh(){return new Promise(e=>xO(()=>e()))}var _={};Oe(_,{ERF_A1:()=>FO,ERF_A2:()=>AO,ERF_A3:()=>$O,ERF_A4:()=>DO,ERF_A5:()=>MO,ERF_P:()=>_O,PARALLELIZE_THRESHOLD:()=>ob,SELU_SCALE:()=>o1,SELU_SCALEALPHA:()=>i1,applyActivation:()=>Oh,assertAndGetBroadcastShape:()=>vt,assertAxesAreInnerMostDims:()=>UD,assertParamsConsistent:()=>vO,assignToTypedArray:()=>VO,axesAreInnerMostDims:()=>Wy,calculateShapes:()=>$0,castTensor:()=>jO,combineLocations:()=>yk,complexWithEvenIndex:()=>zO,complexWithOddIndex:()=>BO,computeConv2DInfo:()=>Dc,computeConv3DInfo:()=>Q0,computeDefaultPad:()=>_y,computeDilation2DInfo:()=>h$,computeOptimalWindowSize:()=>kO,computeOutAndReduceShapes:()=>bk,computeOutShape:()=>wO,computePool2DInfo:()=>Z0,computePool3DInfo:()=>m$,convertConv2DDataFormat:()=>J0,eitherStridesOrDilationsAreOne:()=>$n,expandShapeToKeepDim:()=>_i,exponent:()=>GO,exponents:()=>UO,fromStringArrayToUint8:()=>XO,fromUint8ToStringArray:()=>KO,getAxesPermutation:()=>xk,getBroadcastDims:()=>sD,getComplexWithIndex:()=>WO,getFusedBiasGradient:()=>Ph,getFusedDyActivation:()=>Rh,getImageCenter:()=>IO,getInnerMostAxes:()=>GD,getPermuted:()=>TO,getReductionAxes:()=>Vt,getReshaped:()=>NO,getReshapedPermuted:()=>SO,getSliceBeginCoords:()=>CO,getSliceSize:()=>EO,getUndoAxesPermutation:()=>Vy,log:()=>PO,mergeRealAndImagArrays:()=>OO,prepareAndValidate:()=>A0,prepareSplitSize:()=>HO,reshapeTensor:()=>qO,segment_util:()=>l1,shouldFuse:()=>Lh,slice_util:()=>dn,splitRealAndImagArrays:()=>LO,tupleValuesAreOne:()=>Qr,upcastType:()=>ua,validateInput:()=>gy,validateUpdateShape:()=>fy,warn:()=>RO});function vO(e,t){let n=e[0].length;e.forEach((r,s)=>{F(r.length===n,()=>`Error in concat${n}D: rank of tensors[${s}] must be the same as the rank of the rest (${n})`)}),F(t>=0&&t`Error in concat${n}D: axis must be between 0 and ${n-1}.`);let a=e[0];e.forEach((r,s)=>{for(let i=0;i`Error in concat${n}D: Shape of tensors[${s}] (${r}) does not match the shape of the rest (${a}) along the non-concatenated axis ${s}.`)})}function wO(e,t){let n=e[0].slice();for(let a=1;a=t*2+1||i%2==1?s.push(i):r.push(i);a.push(...r),a.push(0),a.push(...s)}return a}function SO(e,t,n,a=!0){let r=[];a?r.push(e[0]/n):r.push(e[0]*n);for(let s=1;s"Number of splits must evenly divide the axis."),a=new Array(t).fill(e.shape[n]/t);else{let r=t.reduce((i,o)=>(o===-1&&(i+=1),i),0);F(r<=1,()=>"There should be only one negative value in split array.");let s=t.indexOf(-1);if(s!==-1){let i=t.reduce((o,l)=>l>0?o+l:o);t[s]=e.shape[n]-i}F(e.shape[n]===t.reduce((i,o)=>i+o),()=>"The sum of sizes must match the size of the axis dimension."),a=t}return a}var l1={};Oe(l1,{collectGatherOpShapeInfo:()=>ZO,computeOutShape:()=>JO,segOpComputeOptimalWindowSize:()=>YO});function YO(e,t){let n=!1,a;for(e<=ob?(a=e,n=!0):a=bd(e,Math.floor(Math.sqrt(e)));!n;)a>t||a===e?n=!0:a=bd(e,a+1);return a}function JO(e,t,n){let a=[],r=e.length;for(let s=0;sr))throw new Error(`Expect batchDims in the range of [-${r}, ${r}], but got ${a}`);if(a<0&&(a+=r),a>s)throw new Error(`batchDims (${a}) must be less than rank(x) ( + ${s}).`);if(nQd(t))}catch(t){throw new Error(`Failed to decode encoded string bytes into utf-8, error: ${t}`)}}function XO(e){return e.map(t=>Nc(t))}var Ja={};Oe(Ja,{nonMaxSuppressionV3Impl:()=>Zk,nonMaxSuppressionV4Impl:()=>Qk,nonMaxSuppressionV5Impl:()=>e1,whereImpl:()=>Ck});var u1={kernelName:Co,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>L(e,Hl(pe(n,"float32"),-1))}}},QO={kernelName:Eo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>{let a=ot(pe(n,"float32")),r=an(fe(de(1),a));return St(ve(e,r))}}}},eL={kernelName:_o,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>{let a=an(fe(ot(pe(n,"float32")),1));return ve(e,a)}}}},tL={kernelName:Ur,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,a]=t,r=vt(n.shape,a.shape);return{a:()=>{let s=e,i=Vt(n.shape,r);return i.length>0&&(s=Ce(s,i)),j(s,n.shape)},b:()=>{let s=e,i=Vt(a.shape,r);return i.length>0&&(s=Ce(s,i)),j(s,a.shape)}}}},nL={kernelName:_s,saveAllInputs:!0,gradFunc:(e,t)=>{let n={};return t.forEach((a,r)=>{n[r]=()=>e.clone()}),n}},aL={kernelName:Fs,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>He(n)}}},rL={kernelName:sc,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>He(n)}}},sL={kernelName:Fo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ve(e,an(fe(de(1),ot(pe(n,"float32")))))}}},iL={kernelName:Ao,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>{let a=an(Z(de(1),ot(pe(n,"float32"))));return ve(e,a)}}}},oL={kernelName:Mo,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,a]=t,r=vt(n.shape,a.shape);return{a:()=>{let s=Z(ot(n),ot(a)),i=L(e,ve(a,s)),o=Vt(n.shape,r);return o.length>0&&(i=Ce(i,o)),j(i,n.shape)},b:()=>{let s=Z(ot(n),ot(a)),i=St(L(e,ve(n,s))),o=Vt(a.shape,r);return o.length>0&&(i=Ce(i,o)),j(i,a.shape)}}}},lL={kernelName:$o,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ve(e,Z(ot(pe(n,"float32")),1))}}},uL={kernelName:Do,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ve(e,fe(de(1),ot(pe(n,"float32"))))}}};function cL(e,t,n,a,r=[1,1,1],s,i){let o=C(e,"dy","avgPool3dGrad"),l=C(t,"input","avgPool3dGrad"),c=o,u=l,p=!1;l.rank===4&&(p=!0,c=j(o,[1,o.shape[0],o.shape[1],o.shape[2],o.shape[3]]),u=j(l,[1,l.shape[0],l.shape[1],l.shape[2],l.shape[3]])),F(c.rank===5,()=>`Error in avgPool3dGrad: dy must be rank 5 but got rank ${c.rank}.`),F(u.rank===5,()=>`Error in avgPool3dGrad: input must be rank 5 but got rank ${u.rank}.`),F($n(a,r),()=>`Error in avgPool3dGrad: Either strides or dilations must be 1. Got strides ${a} and dilations '${r}'`),i!=null&&F(qt(s),()=>`Error in avgPool3dGrad: pad must be an integer when using, dimRoundingMode ${i} but got pad ${s}.`);let d={dy:c,input:u},h={filterSize:n,strides:a,dilations:r,pad:s,dimRoundingMode:i},m=P.runKernel(Id,d,h);return p?j(m,[m.shape[1],m.shape[2],m.shape[3],m.shape[4]]):m}var pL=R({avgPool3dGrad_:cL}),dL={kernelName:ic,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[a]=t,{filterSize:r,strides:s,dilations:i,pad:o,dimRoundingMode:l}=n,c=i==null?[1,1,1]:i;return{x:()=>pL(e,a,r,s,c,o,l)}}};function hL(e,t,n,a,r){let s=C(e,"dy","avgPoolGrad"),i=C(t,"input","avgPoolGrad");F(i.rank===s.rank,()=>`Rank of input (${i.rank}) does not match rank of dy (${s.rank})`);let o=i,l=s,c=!1;i.rank===3&&(c=!0,o=j(i,[1,i.shape[0],i.shape[1],i.shape[2]]),l=j(s,[1,s.shape[0],s.shape[1],s.shape[2]])),F(l.rank===4,()=>`Error in avgPoolGrad: dy must be rank 4 but got rank ${l.rank}.`),F(o.rank===4,()=>`Error in avgPoolGrad: input must be rank 4 but got rank ${o.rank}.`);let u={dy:l,input:o},p={filterSize:n,strides:a,pad:r},d=P.runKernel(kd,u,p);return c?j(d,[d.shape[1],d.shape[2],d.shape[3]]):d}var mL=R({avgPoolGrad_:hL}),fL={kernelName:As,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[a]=t,{filterSize:r,strides:s,pad:i}=n;return{x:()=>mL(e,a,r,s,i)}}},gL={kernelName:$s,inputsToSave:["a","b"],gradFunc:(e,t,n)=>{let[a,r]=t,{transposeA:s,transposeB:i}=n;return!s&&!i?{a:()=>ze(e,r,!1,!0),b:()=>ze(a,e,!0,!1)}:!s&&i?{a:()=>ze(e,r,!1,!1),b:()=>ze(e,a,!0,!1)}:s&&!i?{a:()=>ze(r,e,!1,!0),b:()=>ze(a,e,!1,!1)}:{a:()=>ze(r,e,!0,!0),b:()=>ze(e,a,!0,!0)}}},yL={kernelName:oc,gradFunc:(e,t,n)=>{let{blockShape:a,crops:r}=n;return{x:()=>Bc(e,a,r)}}},bL={kernelName:n0,gradFunc:(e,t,n)=>{let a=n,r=a.inputShape,s=a.shape,i=Array.from(s);for(let l=r.length-1;l>=0;l--)if(r[l]===s[l])i[l]=1;else if(r[l]!==1)throw new Error(`broadcastTo(): [${r}] cannot be broadcast to [${s}].`);let o=[];for(let l=0;l1&&o.push(l);return{x:()=>Ce(e,o,!0)}}},xL={kernelName:Ds,gradFunc:e=>({x:()=>e.clone()})},vL={kernelName:Ro,gradFunc:e=>({x:()=>He(e)})},wL={kernelName:Gr,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[a]=t,{clipValueMin:r,clipValueMax:s}=n;return{x:()=>kn(pa(wr(a,r),es(a,s)),e,He(e))}}},kL={kernelName:lc,inputsToSave:["x"],gradFunc:u1.gradFunc},IL={kernelName:Po,saveAllInputs:!0,gradFunc:(e,t,n)=>{let a=t.map(o=>o.shape),{axis:r}=n,s=la(r,t[0].shape)[0],i=a.map(o=>o[s]);return Pn(e,i,s).map(o=>()=>o)}},NL={kernelName:Ms,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{let[a,r]=t,{dilations:s,strides:i,pad:o,dataFormat:l}=n;return F(Qr(s),()=>`Error in gradient of conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${s}'`),{x:()=>$y(a.shape,e,r,i,o,l),filter:()=>sb(a,e,r.shape,i,o,l)}}},TL={kernelName:Rs,inputsToSave:["dy","filter"],gradFunc:(e,t,n)=>{let[a,r]=t,{strides:s,pad:i,dataFormat:o,dimRoundingMode:l}=n;return{dy:()=>$t(e,r,s,i,o,1,l),filter:()=>sb(e,a,r.shape,s,i,o,l)}}};function SL(e,t,n,a,r){let s=e;e.rank===4&&(s=j(e,[1,e.shape[0],e.shape[1],e.shape[2],e.shape[3]]));let i=t;i.rank===4&&(i=j(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]])),F(s.rank===5,()=>`Error in conv3dDerFilter: input must be rank 5, but got shape ${s.shape}.`),F(i.rank===5,()=>`Error in conv3dDerFilter: dy must be rank 5, but got shape ${i.shape}.`),F(n.length===5,()=>`Error in conv3dDerFilter: filterShape must be length 5, but got ${n}.`),F(s.shape[4]===n[3],()=>`Error in conv3dDerFilter: depth of input ${s.shape[4]}) must match input depth in filter (${n[3]}.`),F(i.shape[4]===n[4],()=>`Error in conv3dDerFilter: depth of dy (${i.shape[4]}) must match output depth for filter (${n[4]}).`);let o={x:s,dy:i},l={strides:a,pad:r,filterShape:n};return P.runKernel(Cd,o,l)}var CL=R({conv3DBackpropFilter_:SL}),EL={kernelName:uc,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{let{dilations:a,strides:r,pad:s}=n;F(Qr(a),()=>`Error in gradient of conv3D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${a}'`);let[i,o]=t;return{x:()=>lk(i.shape,e,o,r,s),filter:()=>CL(i,e,o.shape,r,s)}}},_L={kernelName:Ps,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>L(St(Eh(pe(n,"float32"))),e)}}},FL={kernelName:Oo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>L(_h(pe(n,"float32")),e)}}},AL={kernelName:Os,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[a]=t,{axis:r,exclusive:s,reverse:i}=n;return{x:()=>{let o=xk([r],a.rank),l=fh(e,r,s,!i);return o!=null&&(l=Ue(l,o)),l}}}},$L={kernelName:Ls,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{let{dilations:a,strides:r,pad:s,dimRoundingMode:i}=n,o=a==null?[1,1]:a;F(Qr(o),()=>`Error in gradient of depthwiseConv2dNative: dilation rates greater than 1 are not yet supported. Got dilations '${o}'`);let[l,c]=t;return F(l.rank===4,()=>`Error in gradient of depthwiseConv2dNative: input must be rank 4, but got rank ${l.rank}.`),F(c.rank===4,()=>`Error in gradient of depthwiseConv2dNative: filter must be rank 4, but got rank ${c.rank}.`),F(l.shape[3]===c.shape[2],()=>`Error in gradient of depthwiseConv2d: number of input channels (${l.shape[3]}) must match the inChannels dimension in filter ${c.shape[2]}.`),F($n(r,o),()=>`Error in gradient of depthwiseConv2d: Either strides or dilations must be 1. Got strides ${r} and dilations '${o}'.`),i!=null&&F(qt(s),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${s}.`),{x:()=>Xk(l.shape,e,c,r,s,a,i),filter:()=>Kk(l,e,c.shape,r,s,a,i)}}},DL={kernelName:cc,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{let[a,r]=t,s={x:a,filter:r,dy:e},i={x:a,filter:r,dy:e};return{x:()=>P.runKernel(Dd,s,n),filter:()=>P.runKernel(Md,i,n)}}},ML={kernelName:Bo,outputsToSave:[!0],gradFunc:(e,t)=>{let[n]=t,a={dy:e,y:n};return{x:()=>P.runKernel(Rd,a)}}},RL={kernelName:Wo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t,a=L(hn(St(ot(n))),2/Math.sqrt(Math.PI));return{x:()=>L(e,a)}}},PL={kernelName:Bs,outputsToSave:[!0],gradFunc:(e,t)=>{let[n]=t;return{x:()=>L(e,n)}}},OL={kernelName:Uo,inputsToSave:["input"],gradFunc:(e,t)=>{let[n]=t;return{input:()=>j(e,n.shape)}}},LL={kernelName:Go,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>L(e,hn(n))}}},zL={kernelName:Ws,gradFunc:e=>({x:()=>He(e)})},BL={kernelName:Vs,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,a]=t,r=vt(n.shape,a.shape);return{a:()=>{let s=ve(e,pe(a,"float32")),i=Vt(n.shape,r);return i.length>0?j(Ce(s,i),n.shape):s},b:()=>{let s=L(e,pe(n,"float32")),i=Vt(a.shape,r);i.length>0&&(s=j(Ce(s,i),a.shape));let o=ot(a);return St(ve(s,pe(o,"float32")))}}}},WL={kernelName:Us,inputsToSave:["x","mean","variance","scale"],gradFunc:(e,t,n)=>{let{varianceEpsilon:a}=n,[r,s,i,o]=t,l=o==null?de(1):o,c=Vt(s.shape,r.shape),u=[];if(s.rank===1){for(let f=0;fs.rank===1?j(L(L(e,ja(j(h,[1,1,1,s.shape[0]]),u)),l),r.shape):j(L(L(e,h),l),r.shape),mean:()=>{let f=L(L(h,de(-1)),d);return s.rank===1&&(f=Ce(f,c)),j(f,s.shape)},variance:()=>{let f=L(L(m,p),d);return s.rank===1&&(f=Ce(f,c)),j(f,s.shape)},scale:()=>{let f=L(p,h),g=L(e,f);return s.rank===1&&(g=Ce(g,c)),j(g,s.shape)},offset:()=>{let f=e;return s.rank===1&&(f=Ce(f,c)),j(f,s.shape)}}}},VL={kernelName:jo,inputsToSave:["x","indices"],gradFunc:(e,t,n)=>{let[a,r]=t,{axis:s}=n,i=la(s,a.shape)[0];return{x:()=>{let o=a.shape,l=r.size,c=o.slice(0,i),u=c.length,p=o.slice(s,o.length).slice(1),d=p.length,h=c1(0,u),m=c1(u+1,u+1+d),f=p1([c,[l],p]),g=j(e,f),y=j(r,[l]),b=p1([[u],h,m]),x=Ue(g,b),v=tb(x,y,a.shape[i]),N=Vy(b);return v=Ue(v,N),v},indices:()=>r}}};function c1(e,t){let n=[];for(let a=e;a{let[n,a]=t;return{a:()=>He(n),b:()=>He(a)}}},GL={kernelName:Xo,gradFunc:e=>({x:()=>pe(e,"float32")})},HL={kernelName:Yo,gradFunc:e=>({x:()=>He(e)})},jL={kernelName:Jo,gradFunc:e=>({x:()=>He(e)})},qL={kernelName:Zo,gradFunc:e=>({x:()=>He(e)})},KL={kernelName:Hs,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[a]=t,{alpha:r}=n,s=Qn(a,0);return{x:()=>kn(s,e,L(e,r))}}},XL={kernelName:tl,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ve(e,Z(n,1))}}},YL={kernelName:js,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ve(e,pe(n,"float32"))}}},JL={kernelName:a0,inputsToSave:[],outputsToSave:[!0],gradFunc:(e,t,n)=>{let[a]=t,{axis:r}=n;return{logits:()=>{let s=!0,i=hn(a);return fe(e,L(Ce(e,r,s),i))}}}};function ZL(e,t,n,a=5,r=1,s=1,i=.5){let o={x:e,y:t,dy:n},l={depthRadius:a,bias:r,alpha:s,beta:i};return P.runKernel(Bd,o,l)}var QL=R({localResponseNormalizationBackprop_:ZL}),e3={kernelName:mc,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let[a,r]=t,{depthRadius:s,bias:i,alpha:o,beta:l}=n;return{x:()=>QL(a,r,e,s,i,o,l)}}};function d1(e,t,n,a){return t.rankL(e,pe(vr(n,t),e.dtype))}}var h1={kernelName:qs,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let a=n,{reductionIndices:r}=a,s=t[0],i=t[1],o=la(r,s.shape),l=d1(e,i,s,o);return{x:()=>l.x()}}},t3={kernelName:Ks,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,a]=t;return{a:()=>L(e,pe(wr(n,a),"float32")),b:()=>L(e,pe(Lc(n,a),"float32"))}}};function n3(e,t,n,a,r,s=[1,1,1],i,o){let l=C(e,"dy","maxPool3dGrad"),c=C(t,"input","maxPool3dGrad"),u=C(n,"output","maxPool3dGrad"),p=l,d=c,h=u,m=!1;c.rank===4&&(m=!0,p=j(l,[1,l.shape[0],l.shape[1],l.shape[2],l.shape[3]]),d=j(c,[1,c.shape[0],c.shape[1],c.shape[2],c.shape[3]]),h=j(u,[1,u.shape[0],u.shape[1],u.shape[2],u.shape[3]])),F(p.rank===5,()=>`Error in maxPool3dGrad: dy must be rank 5 but got rank ${p.rank}.`),F(d.rank===5,()=>`Error in maxPool3dGrad: input must be rank 5 but got rank ${d.rank}.`),F(h.rank===5,()=>`Error in maxPool3dGrad: output must be rank 5 but got rank ${h.rank}.`),F($n(r,s),()=>`Error in maxPool3dGrad: Either strides or dilations must be 1. Got strides ${r} and dilations '${s}'`),o!=null&&F(qt(i),()=>`Error in maxPool3dGrad: pad must be an integer when using, dimRoundingMode ${o} but got pad ${i}.`);let f={dy:p,input:d,output:h},g={filterSize:a,strides:r,dilations:s,pad:i,dimRoundingMode:o},y=P.runKernel(Vd,f,g);return m?j(y,[y.shape[1],y.shape[2],y.shape[3],y.shape[4]]):y}var a3=R({maxPool3dGrad_:n3}),r3={kernelName:fc,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let[a,r]=t,{filterSize:s,strides:i,dilations:o,pad:l,dimRoundingMode:c}=n,u=o==null?[1,1,1]:o;return{x:()=>a3(e,a,r,s,i,u,l,c)}}};function s3(e,t,n,a,r,s,i){let o=C(e,"dy","maxPoolGrad"),l=C(t,"input","maxPoolGrad"),c=C(n,"output","maxPoolGrad");F(l.rank===o.rank,()=>`Rank of input (${l.rank}) does not match rank of dy (${o.rank})`),F(o.rank===4,()=>`Error in maxPoolGrad: dy must be rank 4 but got rank ${o.rank}.`),F(l.rank===4,()=>`Error in maxPoolGrad: input must be rank 4 but got rank ${l.rank}.`),i!=null&&F(qt(s),()=>`Error in maxPoolGrad: pad must be an integer when using, dimRoundingMode ${i} but got pad ${s}.`);let u={dy:o,input:l,output:c},p={filterSize:a,strides:r,pad:s,dimRoundingMode:i};return P.runKernel(Wd,u,p)}var i3=R({maxPoolGrad_:s3}),o3={kernelName:Xs,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let[a,r]=t,{filterSize:s,strides:i,pad:o}=n;return{x:()=>i3(e,a,r,s,i,o)}}},l3={kernelName:Ys,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[a]=t,{axis:r}=n,s=la(r,a.shape),i=bk(a.shape,s)[1],o=zt(i);return{x:()=>{let l=a.shape.slice();s.forEach(u=>{l[u]=1});let c=j(e,l);return ve(L(c,Ka(a.shape,"float32")),o)}}}},u3={kernelName:Js,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let a=n,{axis:r}=a,[s,i]=t,o=la(r,s.shape),l=d1(e,i,s,o);return{x:()=>l.x()}}},c3={kernelName:Zs,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,a]=t;return{a:()=>L(e,pe(es(n,a),"float32")),b:()=>L(e,pe(Qn(n,a),"float32"))}}},p3={kernelName:gc,inputsToSave:["x"],gradFunc:(e,t,n)=>{let a=t[0],{paddings:r}=n,s=r.map(i=>i[0]);return{x:()=>We(e,s,a.shape)}}},d3={kernelName:al,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,a]=t,r=vt(n.shape,a.shape);return{a:()=>{let s=Vt(n.shape,r);return s.length>0?j(Ce(e,s),n.shape):e},b:()=>{let s=L(e,St(zl(ve(n,a)))),i=Vt(a.shape,r);return i.length>0?j(Ce(s,i),a.shape):s}}}},h3={kernelName:Qs,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,a]=t,r=vt(n.shape,a.shape);return{a:()=>{let s=L(e,pe(a,"float32")),i=Vt(n.shape,r);return i.length>0?j(Ce(s,i),n.shape):s},b:()=>{let s=L(e,pe(n,"float32")),i=Vt(a.shape,r);return i.length>0?j(Ce(s,i),a.shape):s}}}},m3={kernelName:rl,gradFunc:e=>({x:()=>St(e)})},f3={kernelName:ei,inputsToSave:["indices"],gradFunc:(e,t)=>{let n=t[0];return{indices:()=>yt(n.shape,"float32")}}},g3={kernelName:ul,gradFunc:e=>({x:()=>He(e)})},y3={kernelName:cl,saveAllInputs:!0,gradFunc:(e,t,n)=>{let{axis:a}=n;return pt(e,a).map(r=>()=>r)}},m1={kernelName:ti,inputsToSave:["x"],gradFunc:(e,t,n)=>{let a=t[0],{paddings:r}=n,s=r.map(i=>i[0]);return{x:()=>We(e,s,a.shape)}}},b3={kernelName:ni,inputsToSave:["a","b"],outputsToSave:[!0],gradFunc:(e,t)=>{let[n,a,r]=t,s=n,i=a,o=vt(s.shape,i.shape);return{a:()=>{let l=pe(i,"float32"),c=L(e,L(l,Xa(s,fe(l,de(1))))),u=Vt(s.shape,o);return u.length>0&&(c=Ce(c,u)),j(c,s.shape)},b:()=>{let l=Qn(s,0),c=kn(l,Dn(s),He(s)),u=L(e,L(r,c)),p=Vt(i.shape,o);return p.length>0&&(u=Ce(u,p)),j(u,i.shape)}}}},x3={kernelName:ai,inputsToSave:["x","alpha"],gradFunc:(e,t)=>{let[n,a]=t,r=Qn(n,0);return{x:()=>kn(r,e,L(e,a)),alpha:()=>{let s=kn(r,He(e),L(e,n)),i=Vt(a.shape,e.shape);return i.length>0&&(s=Ce(s,i)),j(s,a.shape)}}}},v3={kernelName:zs,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,a]=t,r=vt(n.shape,a.shape);return{a:()=>{let s=ve(e,pe(a,"float32")),i=Vt(n.shape,r);return i.length>0?j(Ce(s,i),n.shape):s},b:()=>{let s=L(e,pe(n,"float32")),i=Vt(a.shape,r);i.length>0&&(s=j(Ce(s,i),a.shape));let o=ot(a);return St(ve(s,pe(o,"float32")))}}}},w3={kernelName:dl,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ve(e,St(ot(n)))}}},k3={kernelName:ii,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t,a=L(es(n,6),Hl(n));return{x:()=>L(e,pe(a,"float32"))}}},I3={kernelName:ri,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>L(e,pe(Hl(n),"float32"))}}},N3={kernelName:hl,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>j(e,n.shape)}}},T3={kernelName:si,inputsToSave:["images"],gradFunc:(e,t,n)=>{let[a]=t,r={dy:e,images:a};return{images:()=>P.runKernel(qd,r,n)}}},S3={kernelName:bc,inputsToSave:["images"],gradFunc:(e,t,n)=>{let[a]=t,r={dy:e,images:a};return{images:()=>P.runKernel(jd,r,n)}}},C3={kernelName:oi,gradFunc:(e,t,n)=>{let{dims:a}=n,r=la(a,e.shape);return{x:()=>Rn(e,r)}}},E3={kernelName:li,gradFunc:e=>({x:()=>He(e)})},_3={kernelName:ui,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>St(ve(e,L(Xa(n,1.5),2)))}}},F3={kernelName:fl,inputsToSave:["condition"],gradFunc:(e,t)=>{let[n]=t;return{condition:()=>pe(He(n),"float32"),t:()=>L(e,pe(n,e.dtype)),e:()=>L(e,pe(zc(n),e.dtype))}}},A3={kernelName:gl,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>{let a=Qn(n,de(0)),r=de(i1),s=de(o1),i=L(e,s),o=L(L(e,r),hn(pe(n,"float32")));return kn(a,i,o)}}}},$3={kernelName:pi,outputsToSave:[!0],gradFunc:(e,t)=>{let[n]=t;return{x:()=>L(e,L(n,fe(de(1),n)))}}},D3={kernelName:xl,gradFunc:e=>({x:()=>He(e)})},M3={kernelName:ci,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>L(Pc(pe(n,"float32")),e)}}},R3={kernelName:bl,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>L(mh(pe(n,"float32")),e)}}},P3={kernelName:yl,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[a]=t,{begin:r,size:s}=n,i=a.shape,[o,l]=W0(a,r,s),c=[];for(let u=0;uta(e,c)}}},O3={kernelName:mi,outputsToSave:[!0],gradFunc:(e,t,n)=>{let[a]=t,{dim:r}=n,s=!0,i=L(e,a);return{logits:()=>fe(i,L(Ce(i,[r],s),a))}}},L3={kernelName:vl,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>L(e,ca(n))}}},f1={kernelName:xc,gradFunc:(e,t,n)=>{let{blockShape:a,paddings:r}=n;return{x:()=>Mc(e,a,r)}}},g1={kernelName:wl,gradFunc:(e,t,n)=>{let{axis:a}=n;return{x:()=>Ze(e,a)}}},z3={kernelName:di,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ve(e,L(an(pe(n,"float32")),2))}}},B3={kernelName:vc,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>L(e,L(pe(n,"float32"),2))}}},W3={kernelName:fi,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,a]=t,r=de(2);return{a:()=>L(e,L(r,fe(n,a))),b:()=>L(e,L(r,fe(a,n)))}}},V3={kernelName:Cl,gradFunc:e=>({x:()=>He(e)})},U3={kernelName:gi,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,a]=t,r=vt(n.shape,a.shape);return{a:()=>{let s=e,i=Vt(n.shape,r);return i.length>0&&(s=Ce(s,i)),j(s,n.shape)},b:()=>{let s=e,i=Vt(a.shape,r);return i.length>0&&(s=Ce(s,i)),j(St(s),a.shape)}}}},G3={kernelName:hi,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[a]=t,r=a.shape.slice(),{axis:s}=n;la(s,a.shape).forEach(l=>{r[l]=1});let i=j(e,r),o=L(i,Ka(a.shape,"float32"));return{x:()=>o}}},H3={kernelName:Il,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ve(e,ot(Pc(n)))}}},j3={kernelName:yi,outputsToSave:[!0],gradFunc:(e,t)=>{let[n]=t;return{x:()=>L(fe(de(1),ot(n)),e)}}},q3={kernelName:Hr,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[a]=t,{reps:r}=n;return{x:()=>{let s=He(a);if(a.rank===1)for(let i=0;i{let a=n,{perm:r}=a,s=Vy(r);return{x:()=>Ue(e,s)}}},X3={kernelName:Tl,gradFunc:(e,t,n)=>{let a=n,{axis:r}=a;return{value:()=>Mt(e,r)}}},J3={kernelName:wc,inputsToSave:["segmentIds"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>Y3(e,n)}}};function Y3(e,t){let n=Ta(t,He(t)),a=Ei(e,n),r=wr(t,de(0,"int32")),s=a.rank-r.rank;for(let o=0;o({x:()=>He(e)})},Q3=[u1,QO,eL,tL,nL,aL,rL,sL,iL,oL,lL,uL,dL,fL,gL,yL,bL,xL,vL,wL,kL,IL,TL,NL,EL,_L,FL,AL,$L,DL,v3,ML,RL,PL,OL,LL,BL,zL,WL,VL,UL,GL,HL,jL,qL,KL,XL,YL,JL,e3,h1,h1,t3,r3,o3,l3,u3,c3,p3,d3,h3,m3,f3,g3,y3,m1,m1,b3,x3,w3,k3,I3,N3,T3,S3,C3,E3,_3,F3,A3,$3,D3,M3,R3,P3,O3,L3,f1,f1,g1,g1,z3,W3,B3,V3,U3,G3,H3,j3,q3,K3,X3,J3,Z3];for(let e of Q3)r0(e);z.prototype.abs=function(){return this.throwIfDisposed(),Wt(this)};z.prototype.acos=function(){return this.throwIfDisposed(),vy(this)};z.prototype.acosh=function(){return this.throwIfDisposed(),wy(this)};z.prototype.addStrict=function(e){return this.throwIfDisposed(),Mk(this,e)};z.prototype.add=function(e){return this.throwIfDisposed(),Z(this,e)};z.prototype.all=function(e,t){return this.throwIfDisposed(),ch(this,e,t)};z.prototype.any=function(e,t){return this.throwIfDisposed(),Ac(this,e,t)};z.prototype.argMax=function(e){return this.throwIfDisposed(),$c(this,e)};z.prototype.argMin=function(e){return this.throwIfDisposed(),ky(this,e)};z.prototype.asScalar=function(){return this.throwIfDisposed(),F(this.size===1,()=>"The array must have only 1 element."),j(this,[])};z.prototype.asType=function(e){return this.throwIfDisposed(),pe(this,e)};z.prototype.as1D=function(){return this.throwIfDisposed(),j(this,[this.size])};z.prototype.as2D=function(e,t){return this.throwIfDisposed(),j(this,[e,t])};z.prototype.as3D=function(e,t,n){return this.throwIfDisposed(),j(this,[e,t,n])};z.prototype.as4D=function(e,t,n,a){return this.throwIfDisposed(),j(this,[e,t,n,a])};z.prototype.as5D=function(e,t,n,a,r){return this.throwIfDisposed(),j(this,[e,t,n,a,r])};z.prototype.asin=function(){return this.throwIfDisposed(),Iy(this)};z.prototype.asinh=function(){return this.throwIfDisposed(),Ny(this)};z.prototype.atan=function(){return this.throwIfDisposed(),Ty(this)};z.prototype.atan2=function(e){return this.throwIfDisposed(),Sy(this,e)};z.prototype.atanh=function(){return this.throwIfDisposed(),Cy(this)};z.prototype.avgPool=function(e,t,n,a){return this.throwIfDisposed(),Jn(this,e,t,n,a)};z.prototype.batchToSpaceND=function(e,t){return this.throwIfDisposed(),Mc(this,e,t)};z.prototype.batchNorm=function(e,t,n,a,r){return this.throwIfDisposed(),br(this,e,t,n,a,r)};z.prototype.broadcastTo=function(e){return this.throwIfDisposed(),Rc(this,e)};z.prototype.cast=function(e){return this.throwIfDisposed(),pe(this,e)};z.prototype.ceil=function(){return this.throwIfDisposed(),Ay(this)};z.prototype.clipByValue=function(e,t){return this.throwIfDisposed(),Yt(this,e,t)};z.prototype.concat=function(e,t){return this.throwIfDisposed(),e instanceof z&&(e=[e]),Ze([this,...e],t)};z.prototype.conv1d=function(e,t,n,a,r,s){return this.throwIfDisposed(),dh(this,e,t,n,a,r,s)};z.prototype.conv2dTranspose=function(e,t,n,a,r){return this.throwIfDisposed(),hh(this,e,t,n,a,r)};z.prototype.conv2d=function(e,t,n,a,r,s){return this.throwIfDisposed(),$t(this,e,t,n,a,r,s)};z.prototype.cos=function(){return this.throwIfDisposed(),Pc(this)};z.prototype.cosh=function(){return this.throwIfDisposed(),mh(this)};z.prototype.cumsum=function(e,t,n){return this.throwIfDisposed(),fh(this,e,t,n)};z.prototype.depthToSpace=function(e,t){return this.throwIfDisposed(),My(this,e,t)};z.prototype.depthwiseConv2D=function(e,t,n,a,r,s){return Pt("depthwiseConv2D is deprecated, use depthwiseConv2d instead"),this.throwIfDisposed(),xr(this,e,t,n,a,r,s)};z.prototype.depthwiseConv2d=function(e,t,n,a,r,s){return this.throwIfDisposed(),xr(this,e,t,n,a,r,s)};z.prototype.dilation2d=function(e,t,n,a,r){return this.throwIfDisposed(),Ry(this,e,t,n,a,r)};z.prototype.divNoNan=function(e){return this.throwIfDisposed(),Py(this,e)};z.prototype.divStrict=function(e){return this.throwIfDisposed(),Rk(this,e)};z.prototype.div=function(e){return this.throwIfDisposed(),ve(this,e)};z.prototype.dot=function(e){return this.throwIfDisposed(),ck(this,e)};z.prototype.elu=function(){return this.throwIfDisposed(),Ll(this)};z.prototype.equalStrict=function(e){return this.throwIfDisposed(),Ek(this,e)};z.prototype.equal=function(e){return this.throwIfDisposed(),vr(this,e)};z.prototype.erf=function(){return this.throwIfDisposed(),Oy(this)};z.prototype.exp=function(){return this.throwIfDisposed(),hn(this)};z.prototype.expandDims=function(e){return this.throwIfDisposed(),Zn(this,e)};z.prototype.expm1=function(){return this.throwIfDisposed(),Ly(this)};z.prototype.fft=function(){return this.throwIfDisposed(),Gc(this)};z.prototype.flatten=function(){return this.throwIfDisposed(),j(this,[this.size])};z.prototype.floor=function(){return this.throwIfDisposed(),zl(this)};z.prototype.floorDiv=function(e){return this.throwIfDisposed(),uh(this,e)};z.prototype.gather=function(e,t){return this.throwIfDisposed(),Ei(this,e,t)};z.prototype.greaterEqualStrict=function(e){return this.throwIfDisposed(),_k(this,e)};z.prototype.greaterEqual=function(e){return this.throwIfDisposed(),wr(this,e)};z.prototype.greaterStrict=function(e){return this.throwIfDisposed(),Fk(this,e)};z.prototype.greater=function(e){return this.throwIfDisposed(),Qn(this,e)};z.prototype.ifft=function(){return this.throwIfDisposed(),Gl(this)};z.prototype.irfft=function(){return this.throwIfDisposed(),Ah(this)};z.prototype.isFinite=function(){return this.throwIfDisposed(),pk(this)};z.prototype.isInf=function(){return this.throwIfDisposed(),dk(this)};z.prototype.isNaN=function(){return this.throwIfDisposed(),hk(this)};z.prototype.leakyRelu=function(e){return this.throwIfDisposed(),Oc(this,e)};z.prototype.lessEqualStrict=function(e){return this.throwIfDisposed(),Ak(this,e)};z.prototype.lessEqual=function(e){return this.throwIfDisposed(),es(this,e)};z.prototype.lessStrict=function(e){return this.throwIfDisposed(),$k(this,e)};z.prototype.less=function(e){return this.throwIfDisposed(),Lc(this,e)};z.prototype.localResponseNormalization=function(e,t,n,a){return this.throwIfDisposed(),By(this,e,t,n,a)};z.prototype.logSigmoid=function(){return this.throwIfDisposed(),gk(this)};z.prototype.logSoftmax=function(e){return this.throwIfDisposed(),xh(this,e)};z.prototype.logSumExp=function(e,t){return this.throwIfDisposed(),Uy(this,e,t)};z.prototype.log=function(){return this.throwIfDisposed(),Dn(this)};z.prototype.log1p=function(){return this.throwIfDisposed(),yh(this)};z.prototype.logicalAnd=function(e){return this.throwIfDisposed(),pa(this,e)};z.prototype.logicalNot=function(){return this.throwIfDisposed(),zc(this)};z.prototype.logicalOr=function(e){return this.throwIfDisposed(),vh(this,e)};z.prototype.logicalXor=function(e){return this.throwIfDisposed(),vk(this,e)};z.prototype.matMul=function(e,t,n){return this.throwIfDisposed(),ze(this,e,t,n)};z.prototype.maxPool=function(e,t,n,a){return this.throwIfDisposed(),Dt(this,e,t,n,a)};z.prototype.max=function(e,t){return this.throwIfDisposed(),ea(this,e,t)};z.prototype.maximumStrict=function(e){return this.throwIfDisposed(),Pk(this,e)};z.prototype.maximum=function(e){return this.throwIfDisposed(),Ta(this,e)};z.prototype.mean=function(e,t){return this.throwIfDisposed(),Ct(this,e,t)};z.prototype.min=function(e,t){return this.throwIfDisposed(),Wl(this,e,t)};z.prototype.minimumStrict=function(e){return this.throwIfDisposed(),Ok(this,e)};z.prototype.minimum=function(e){return this.throwIfDisposed(),Fi(this,e)};z.prototype.mirrorPad=function(e,t){return this.throwIfDisposed(),Hy(this,e,t)};z.prototype.modStrict=function(e){return this.throwIfDisposed(),Lk(this,e)};z.prototype.mod=function(e){return this.throwIfDisposed(),wh(this,e)};z.prototype.mulStrict=function(e){return this.throwIfDisposed(),zk(this,e)};z.prototype.mul=function(e){return this.throwIfDisposed(),L(this,e)};z.prototype.neg=function(){return this.throwIfDisposed(),St(this)};z.prototype.norm=function(e,t,n){return this.throwIfDisposed(),Mh(this,e,t,n)};z.prototype.notEqualStrict=function(e){return this.throwIfDisposed(),Dk(this,e)};z.prototype.notEqual=function(e){return this.throwIfDisposed(),ts(this,e)};z.prototype.oneHot=function(e,t=1,n=0){return this.throwIfDisposed(),Ml(this,e,t,n)};z.prototype.onesLike=function(){return this.throwIfDisposed(),Mn(this)};z.prototype.pad=function(e,t){return this.throwIfDisposed(),ta(this,e,t)};z.prototype.pool=function(e,t,n,a,r){return this.throwIfDisposed(),Ik(this,e,t,n,a,r)};z.prototype.powStrict=function(e){return this.throwIfDisposed(),Bk(this,e)};z.prototype.pow=function(e){return this.throwIfDisposed(),Xa(this,e)};z.prototype.prelu=function(e){return this.throwIfDisposed(),Wc(this,e)};z.prototype.prod=function(e,t){return this.throwIfDisposed(),Ih(this,e,t)};z.prototype.reciprocal=function(){return this.throwIfDisposed(),Ky(this)};z.prototype.relu=function(){return this.throwIfDisposed(),Xe(this)};z.prototype.relu6=function(){return this.throwIfDisposed(),Th(this)};z.prototype.reshapeAs=function(e){return this.throwIfDisposed(),j(this,e.shape)};z.prototype.reshape=function(e){return this.throwIfDisposed(),j(this,e)};z.prototype.resizeBilinear=function(e,t,n){return this.throwIfDisposed(),n1(this,e,t,n)};z.prototype.resizeNearestNeighbor=function(e,t,n){return this.throwIfDisposed(),a1(this,e,t,n)};z.prototype.reverse=function(e){return this.throwIfDisposed(),Rn(this,e)};z.prototype.rfft=function(){return this.throwIfDisposed(),Hc(this)};z.prototype.round=function(){return this.throwIfDisposed(),Xy(this)};z.prototype.rsqrt=function(){return this.throwIfDisposed(),Sh(this)};z.prototype.selu=function(){return this.throwIfDisposed(),Ch(this)};z.prototype.separableConv2d=function(e,t,n,a,r,s){return this.throwIfDisposed(),Ai(this,e,t,n,a,r,s)};z.prototype.sigmoid=function(){return this.throwIfDisposed(),ca(this)};z.prototype.sign=function(){return this.throwIfDisposed(),Yy(this)};z.prototype.sin=function(){return this.throwIfDisposed(),Eh(this)};z.prototype.sinh=function(){return this.throwIfDisposed(),_h(this)};z.prototype.slice=function(e,t){return this.throwIfDisposed(),We(this,e,t)};z.prototype.softmax=function(e){return this.throwIfDisposed(),Sa(this,e)};z.prototype.softplus=function(){return this.throwIfDisposed(),Bl(this)};z.prototype.spaceToBatchND=function(e,t){return this.throwIfDisposed(),Bc(this,e,t)};z.prototype.split=function(e,t){return this.throwIfDisposed(),Pn(this,e,t)};z.prototype.sqrt=function(){return this.throwIfDisposed(),an(this)};z.prototype.square=function(){return this.throwIfDisposed(),ot(this)};z.prototype.squaredDifference=function(e){return this.throwIfDisposed(),jc(this,e)};z.prototype.squaredDifferenceStrict=function(e){return this.throwIfDisposed(),Wk(this,e)};z.prototype.squeeze=function(e){return this.throwIfDisposed(),ns(this,e)};z.prototype.stack=function(e,t){this.throwIfDisposed();let n=e instanceof z?[this,e]:[this,...e];return Mt(n,t)};z.prototype.step=function(e){return this.throwIfDisposed(),Hl(this,e)};z.prototype.stridedSlice=function(e,t,n,a,r,s,i,o){return this.throwIfDisposed(),Zy(this,e,t,n,a,r,s,i,o)};z.prototype.subStrict=function(e){return this.throwIfDisposed(),Vk(this,e)};z.prototype.sub=function(e){return this.throwIfDisposed(),fe(this,e)};z.prototype.sum=function(e,t){return this.throwIfDisposed(),Ce(this,e,t)};z.prototype.tan=function(){return this.throwIfDisposed(),Qy(this)};z.prototype.tanh=function(){return this.throwIfDisposed(),Ol(this)};z.prototype.tile=function(e){return this.throwIfDisposed(),ja(this,e)};z.prototype.toBool=function(){return this.throwIfDisposed(),pe(this,"bool")};z.prototype.toFloat=function(){return this.throwIfDisposed(),pe(this,"float32")};z.prototype.toInt=function(){return this.throwIfDisposed(),pe(this,"int32")};z.prototype.topk=function(e,t){return this.throwIfDisposed(),eb(this,e,t)};z.prototype.transpose=function(e){return this.throwIfDisposed(),Ue(this,e)};z.prototype.unique=function(e){return this.throwIfDisposed(),Dh(this,e)};z.prototype.unsortedSegmentSum=function(e,t){return this.throwIfDisposed(),tb(this,e,t)};z.prototype.unstack=function(e){return this.throwIfDisposed(),pt(this,e)};z.prototype.where=function(e,t){return this.throwIfDisposed(),kn(e,this,t)};z.prototype.zerosLike=function(){return this.throwIfDisposed(),He(this)};var y1={};Oe(y1,{maxNorm:()=>ez,minMaxNorm:()=>az,nonNeg:()=>nz,unitNorm:()=>tz});var lb;function Ut(){return lb==null&&(lb=X0().epsilon()),lb}function _a(){return"channelsLast"}var Nr=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,Nr.prototype)}},Fa=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,Fa.prototype)}},B=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,B.prototype)}},$e=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,$e.prototype)}},b1=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,b1.prototype)}},rz=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,rz.prototype)}};function Mi(e,t){if(Array.isArray(e)){let n=[];for(let a=0;an.toUpperCase())}var da={};function ub(e){if(e==null)return null;let t={};return t.className=e.getClassName(),t.config=e.getConfig(),t}function cb(e){if(!(e==null||typeof e!="object"))if(Array.isArray(e))e.forEach(t=>cb(t));else{let t=Object.keys(e);for(let n of t){let a=e[n];a!=null&&typeof a=="object"&&(!Array.isArray(a)&&a.type==="ndarray"&&typeof a.value=="number"?e[n]=a.value:cb(a))}}}function Kc(e,t={},n={},a="object",r=!1){if(typeof e=="string"){let s=e,i;if(s in n)i=n[s];else if(s in da)i=da[s];else if(i=t[s],i==null)throw new B(`Unknown ${a}: ${e}. This may be due to one of the following reasons: +1. The ${a} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code. +2. The custom ${a} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);return i}else{let s=e;if(s.className==null||s.config==null)throw new B(`${a}: Improper config format: ${JSON.stringify(s)}. +'className' and 'config' must set.`);let i=s.className,o,l;if(i in n?[o,l]=n[i]:i in da?[o,l]=da.className:i in t&&([o,l]=t[i]),o==null)throw new B(`Unknown ${a}: ${i}. This may be due to one of the following reasons: +1. The ${a} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code. +2. The custom ${a} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);if(l!=null){let c={};for(let h of Object.keys(da))c[h]=da[h];for(let h of Object.keys(n))c[h]=n[h];let u=s.config;u.customObjects=c;let p=Object.assign({},da);for(let h of Object.keys(n))da[h]=n[h];cb(s.config);let d=l(o,s.config,n,r);return da=Object.assign({},p),d}else{let c=Object.assign({},da);for(let p of Object.keys(n))da[p]=n[p];let u=new o(s.config);return da=Object.assign({},c),u}}}function sz(e,t){return et?1:0}function jh(e,t){return-1*sz(e,t)}function rs(e){if(e==null)return e;let t=[];for(let n of e)t.indexOf(n)===-1&&t.push(n);return t}function iz(e){if(e==null)throw new B(`Invalid value in obj: ${JSON.stringify(e)}`);for(let t in e)if(e.hasOwnProperty(t))return!1;return!0}function Pi(e,t,n){if(n!=null&&e.indexOf(n)<0)throw new B(`${n} is not a valid ${t}. Valid values are ${e} or null/undefined.`)}function pb(e,t,n=0,a=Infinity){return Za(n>=0),Za(a>=n),Array.isArray(e)&&e.length>=n&&e.length<=a&&e.every(r=>typeof r===t)}function Jt(e,t){Array.isArray(e)?(k.assert(e.length>0,()=>`${t} is unexpectedly an empty array.`),e.forEach((n,a)=>Jt(n,`element ${a+1} of ${t}`))):k.assert(Number.isInteger(e)&&e>0,()=>`Expected ${t} to be a positive integer, but got ${v1(e)}.`)}function v1(e){return e===null?"null":Array.isArray(e)?"["+e.map(t=>v1(t)).join(",")+"]":typeof e=="string"?`"${e}"`:`${e}`}function oz(e,t){let n=k.now(),a;return(...r)=>{let s=k.now();return s-nan(Ce(L(e,e),t,!0)))}var Xc=class extends se.Serializable{getConfig(){return{}}},hb=class extends Xc{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 D(()=>{let t=db(e,this.axis),n=Yt(t,0,this.maxValue);return L(e,ve(n,Z(Ut(),t)))})}getConfig(){return{maxValue:this.maxValue,axis:this.axis}}};hb.className="MaxNorm";se.registerClass(hb);var mb=class extends Xc{constructor(e){super();this.defaultAxis=0,this.axis=e.axis!=null?e.axis:this.defaultAxis}apply(e){return D(()=>ve(e,Z(Ut(),db(e,this.axis))))}getConfig(){return{axis:this.axis}}};mb.className="UnitNorm";se.registerClass(mb);var fb=class extends Xc{apply(e){return Xe(e)}};fb.className="NonNeg";se.registerClass(fb);var gb=class extends Xc{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 D(()=>{let t=db(e,this.axis),n=Z(L(this.rate,Yt(t,this.minValue,this.maxValue)),L(1-this.rate,t));return L(e,ve(n,Z(Ut(),t)))})}getConfig(){return{minValue:this.minValue,maxValue:this.maxValue,rate:this.rate,axis:this.axis}}};gb.className="MinMaxNorm";se.registerClass(gb);var k1={maxNorm:"MaxNorm",minMaxNorm:"MinMaxNorm",nonNeg:"NonNeg",unitNorm:"UnitNorm"};function Gt(e){return ub(e)}function I1(e,t={}){return Kc(e,se.SerializationMap.getMap().classNameMap,t,"constraint")}function Ht(e){if(e==null)return null;if(typeof e=="string"){let t={className:e in k1?k1[e]:e,config:{}};return I1(t)}else return e instanceof Xc?e:I1(e)}function ez(e){return new hb(e)}function tz(e){return new mb(e)}function nz(){return new fb}function az(e){return new gb(e)}var N1={};Oe(N1,{constant:()=>cz,glorotNormal:()=>yz,glorotUniform:()=>gz,heNormal:()=>bz,heUniform:()=>xz,identity:()=>mz,leCunNormal:()=>vz,leCunUniform:()=>wz,ones:()=>uz,orthogonal:()=>kz,randomNormal:()=>dz,randomUniform:()=>pz,truncatedNormal:()=>hz,varianceScaling:()=>fz,zeros:()=>lz});var Iz=["channelsFirst","channelsLast"],Nz=["nearest","bilinear"],Tz=["valid","same","causal"],Sz=["max","avg"],Cz=["sum","mul","concat","ave"],ql=new Map;function Rt(e){Pi(Iz,"DataFormat",e)}function Ez(e){Pi(Nz,"InterpolationFormat",e)}function na(e){Pi(Tz,"PaddingMode",e)}function T1(e){Pi(Sz,"PoolMode",e)}var Yc=[],S1="/";function Oi(e,t){Yc.push(e);try{let n=t();return Yc.pop(),n}catch(n){throw Yc.pop(),n}}function _z(){return Yc.length===0?"":Yc.join(S1)+S1}function E1(e){if(!C1(e))throw new Error("Not a valid tensor name: '"+e+"'");return _z()+e}function _1(e){if(!C1(e))throw new Error("Not a valid tensor name: '"+e+"'");ql.has(e)||ql.set(e,0);let t=ql.get(e);if(ql.set(e,ql.get(e)+1),t>0){let n=`${e}_${t}`;return ql.set(n,1),n}else return e}var Fz=new RegExp(/^[A-Za-z0-9][-A-Za-z0-9\._\/]*$/);function C1(e){return!!e.match(Fz)}function Az(e){return e===parseInt(e.toString(),10)}function ss(e,t,n){t==null&&(t=0),n==null&&(n=e.length);let a=1;for(let r=t;r{if(e.shape.length!==2)throw new B(`repeat() expects a rank-2 tensor, but received a rank-${e.shape.length} tensor.`);let n=Zc(e,1);return yb(n,[1,t,1])})}function Dz(e){let t=[ss(e.shape)];return e.reshape(t)}function Mz(e){if(e.rank<=1)throw new B(`batchFlatten requires a minimum rank of 2. Got rank: ${e.rank}.`);let t=[e.shape[0],ss(e.shape,1)];return e.reshape(t)}function Li(e,t,n){return D(()=>{switch(e.rank){case 1:return Fh(e,t,n);case 2:return Jy(e,[t,0],[n,e.shape[1]]);case 3:return Ul(e,[t,0,0],[n,e.shape[1],e.shape[2]]);case 4:return Uc(e,[t,0,0,0],[n,e.shape[1],e.shape[2],e.shape[3]]);case 5:return We(e,[t,0,0,0,0],[n,e.shape[1],e.shape[2],e.shape[3],e.shape[4]]);case 6:return We(e,[t,0,0,0,0,0],[n,e.shape[1],e.shape[2],e.shape[3],e.shape[4],e.shape[5]]);default:throw new B(`sliceAlongFirstAxis() received an unsupported tensor rank: ${e.rank}`)}})}function bb(e,t,n){return D(()=>{switch(e.rank){case 1:return Fh(e,t,n);case 2:return Jy(e,[0,t],[e.shape[0],n]);case 3:return Ul(e,[0,0,t],[e.shape[0],e.shape[1],n]);case 4:return Uc(e,[0,0,0,t],[e.shape[0],e.shape[1],e.shape[2],n]);default:throw new B(`sliceAlongLastAxis() received an unsupported tensor rank: ${e.rank}`)}})}function qh(e,t,n,a){return D(()=>{switch(e.rank){case 1:return Fh(e,t,n);case 2:switch(a){case 1:return Li(e,t,n);case 2:return bb(e,t,n);default:throw new B(`The axis is not within the rank of the tensor ${a}`)}case 3:switch(a){case 1:return Li(e,t,n);case 2:return Ul(e,[0,t,0],[e.shape[0],n,e.shape[2]]);case 3:return bb(e,t,n);default:throw new B(`The axis is not within the rank of the tensor ${a}`)}case 4:switch(a){case 1:return Li(e,t,n);case 2:return Uc(e,[0,t,0,0],[e.shape[0],n,e.shape[2],e.shape[3]]);case 3:return Uc(e,[0,0,t,0],[e.shape[0],e.shape[1],n,e.shape[3]]);case 4:return bb(e,t,n);default:throw new B(`The axis is not within the rank of the tensor ${a}`)}default:throw new B(`sliceAlongLastAxis() received an unsupported tensor rank: ${e.rank}`)}})}function xb(e,t=-1){let n;return t<0&&(n=e[0].rank,n!==0?t=n:t=0),t===e[0].rank&&(t=-1),Ze(e,t)}function A1(e,t){switch(e.rank){case 1:return rk([e,t]);case 2:return sk([e,t],0);case 3:return ik([e,t],0);case 4:return ok([e,t],0);default:throw new B(`concatAlongFirstAxis() received an unsupported tensor rank: ${e.rank}`)}}function yb(e,t){if(Array.isArray(t)||(t=[t]),e.rank!==t.length)throw new B(`The length of input n (${t.length}) does not match the number of dimensions in input x (${e.rank})`);return ja(e,t)}function Kh(e,t=0,n=1,a,r){return Nk(e,t,n,a,r)}function Qa(e,t,n,a){if(e.rank<2||t.rank<2)throw new $e(`dot requires both inputs to be rank >= 2 but got x shape = ${e.shape} and y shape = ${t.shape}`);if(t.rank>=3){let r=e.shape.slice(-1)[0],s=t.shape.slice(-2)[0];if(r!==s)throw new $e(`If rank y >= 3, then the second last dim of y must equal the last dim of x but got x shape = ${e.shape} and y shape = ${t.shape}`)}if(e.rank===2&&t.rank===2){let r=!1,s=!1;return as.matMul({a:e,b:t,transposeA:r,transposeB:s,bias:a?vb(e.rank,a,_a()):null,activation:n})}else{let r=e.shape.slice(),s=r.pop();e=e.reshape([-1,s]);let i=t.shape.slice(),o=i.pop(),l=i.pop(),c=[...i,o],u=Array.from({length:t.rank},(m,f)=>f===0?t.rank-2:f<=t.rank-2?f-1:f);t=t.transpose(u).reshape([l,-1]);let p=[...r,...c],d=!1,h=!1;return as.matMul({a:e,b:t,transposeA:d,transposeB:h,bias:a?vb(e.rank,a,_a()):null,activation:n}).reshape(p)}}function $1(e,t,n){return D(()=>(Array.isArray(t)?t=et(t,"int32"):t=t.toInt(),Ei(e,t,n)))}function Qc(e){return L(e,e)}function vb(e,t,n){let a=t.shape;if(t.rank!==1&&t.rank!==e)throw new B(`Unexpected bias dimensions: ${t.rank}; expected it to be 1 or ${e}`);if(e===5){if(n==="channelsFirst")return a.length===1?t.reshape([1,a[0],1,1,1]):t.reshape([1,a[3],a[0],a[1],a[2]]);if(n==="channelsLast")return a.length===1?t.reshape([1,1,1,1,a[0]]):t.reshape([1].concat(a))}else if(e===4){if(n==="channelsFirst")return a.length===1?t.reshape([1,a[0],1,1]):t.reshape([1,a[2],a[0],a[1]]);if(n==="channelsLast")return a.length===1?t.reshape([1,1,1,a[0]]):t.reshape([1].concat(a))}else if(e===3){if(n==="channelsFirst")return a.length===1?t.reshape([1,a[0],1]):t.reshape([1,a[1],a[0]]);if(n==="channelsLast")return a.length===1?t.reshape([1,1,a[0]]):t.reshape([1].concat(a))}else if(e<3)return t;throw new B(`Unsupported input rank by biasAdd: ${t.rank}`)}function er(e,t,n){return D(()=>(n==null&&(n=_a()),Rt(n),e.add(vb(e.rank,t,n))))}function Rz(e,t=1){if(t!==1)throw new $e(`Support for alpha values other than 1 (${t}) is not implemented yet.`);return Ll(e)}function Pz(e){return D(()=>ve(e,Wt(e).add(1)))}function D1(e,t,n,a){return D(()=>jk(e,t,n,a))}function Oz(e){return D(()=>{let t=Z(.5,L(.2,e));return Yt(t,0,1)})}function ep(e,t,n=!1){return n?e():t()}var Lz=["fanIn","fanOut","fanAvg"],zz=["normal","uniform","truncatedNormal"];function Bz(e){Pi(Lz,"FanMode",e)}function Wz(e){Pi(zz,"Distribution",e)}var ha=class extends se.Serializable{fromConfigUsesCustomObjects(){return!1}getConfig(){return{}}},wb=class extends ha{apply(e,t){return yt(e,t)}};wb.className="Zeros";se.registerClass(wb);var Xh=class extends ha{apply(e,t){return Ka(e,t)}};Xh.className="Ones";se.registerClass(Xh);var kb=class extends ha{constructor(e){super();if(typeof e!="object")throw new B(`Expected argument of type ConstantConfig but got ${e}`);if(e.value===void 0)throw new B(`config must have value set but got ${e}`);this.value=e.value}apply(e,t){return D(()=>L(de(this.value),Ka(e,t)))}getConfig(){return{value:this.value}}};kb.className="Constant";se.registerClass(kb);var Ib=class extends ha{constructor(e){super();this.DEFAULT_MINVAL=-.05,this.DEFAULT_MAXVAL=.05,this.minval=e.minval||this.DEFAULT_MINVAL,this.maxval=e.maxval||this.DEFAULT_MAXVAL,this.seed=e.seed}apply(e,t){return Vl(e,this.minval,this.maxval,t)}getConfig(){return{minval:this.minval,maxval:this.maxval,seed:this.seed}}};Ib.className="RandomUniform";se.registerClass(Ib);var Nb=class extends ha{constructor(e){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=e.mean||this.DEFAULT_MEAN,this.stddev=e.stddev||this.DEFAULT_STDDEV,this.seed=e.seed}apply(e,t){if(t=t||"float32",t!=="float32"&&t!=="int32")throw new $e(`randomNormal does not support dType ${t}.`);return Kh(e,this.mean,this.stddev,t,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};Nb.className="RandomNormal";se.registerClass(Nb);var Tb=class extends ha{constructor(e){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=e.mean||this.DEFAULT_MEAN,this.stddev=e.stddev||this.DEFAULT_STDDEV,this.seed=e.seed}apply(e,t){if(t=t||"float32",t!=="float32"&&t!=="int32")throw new $e(`truncatedNormal does not support dType ${t}.`);return $h(e,this.mean,this.stddev,t,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};Tb.className="TruncatedNormal";se.registerClass(Tb);var Sb=class extends ha{constructor(e){super();this.gain=e.gain!=null?e.gain:1}apply(e,t){return D(()=>{if(e.length!==2||e[0]!==e[1])throw new B("Identity matrix initializer can only be used for 2D square matrices.");return L(this.gain,zy(e[0]))})}getConfig(){return{gain:this.gain}}};Sb.className="Identity";se.registerClass(Sb);function Vz(e,t="channelsLast"){let n,a;if(Rt(t),e.length===2)n=e[0],a=e[1];else if([3,4,5].indexOf(e.length)!==-1){if(t==="channelsFirst"){let r=ss(e,2);n=e[1]*r,a=e[0]*r}else if(t==="channelsLast"){let r=ss(e,0,e.length-2);n=e[e.length-2]*r,a=e[e.length-1]*r}}else{let r=ss(e);n=Math.sqrt(r),a=Math.sqrt(r)}return[n,a]}var Tn=class extends ha{constructor(e){super();if(e.scale<0)throw new B(`scale must be a positive float. Got: ${e.scale}`);this.scale=e.scale==null?1:e.scale,this.mode=e.mode==null?"fanIn":e.mode,Bz(this.mode),this.distribution=e.distribution==null?"normal":e.distribution,Wz(this.distribution),this.seed=e.seed}apply(e,t){let n=Vz(e),a=n[0],r=n[1],s=this.scale;if(this.mode==="fanIn"?s/=Math.max(1,a):this.mode==="fanOut"?s/=Math.max(1,r):s/=Math.max(1,(a+r)/2),this.distribution==="normal"){let i=Math.sqrt(s);if(t=t||"float32",t!=="float32"&&t!=="int32")throw new $e(`${this.getClassName()} does not support dType ${t}.`);return $h(e,0,i,t,this.seed)}else{let i=Math.sqrt(3*s);return Vl(e,-i,i,t)}}getConfig(){return{scale:this.scale,mode:this.mode,distribution:this.distribution,seed:this.seed}}};Tn.className="VarianceScaling";se.registerClass(Tn);var Yh=class extends Tn{constructor(e){super({scale:1,mode:"fanAvg",distribution:"uniform",seed:e==null?null:e.seed})}getClassName(){return Tn.className}};Yh.className="GlorotUniform";se.registerClass(Yh);var Jh=class extends Tn{constructor(e){super({scale:1,mode:"fanAvg",distribution:"normal",seed:e==null?null:e.seed})}getClassName(){return Tn.className}};Jh.className="GlorotNormal";se.registerClass(Jh);var Zh=class extends Tn{constructor(e){super({scale:2,mode:"fanIn",distribution:"normal",seed:e==null?null:e.seed})}getClassName(){return Tn.className}};Zh.className="HeNormal";se.registerClass(Zh);var Qh=class extends Tn{constructor(e){super({scale:2,mode:"fanIn",distribution:"uniform",seed:e==null?null:e.seed})}getClassName(){return Tn.className}};Qh.className="HeUniform";se.registerClass(Qh);var em=class extends Tn{constructor(e){super({scale:1,mode:"fanIn",distribution:"normal",seed:e==null?null:e.seed})}getClassName(){return Tn.className}};em.className="LeCunNormal";se.registerClass(em);var tm=class extends Tn{constructor(e){super({scale:1,mode:"fanIn",distribution:"uniform",seed:e==null?null:e.seed})}getClassName(){return Tn.className}};tm.className="LeCunNormal";se.registerClass(tm);var Cb=class extends ha{constructor(e){super();if(this.DEFAULT_GAIN=1,this.gain=e.gain==null?this.DEFAULT_GAIN:e.gain,this.seed=e.seed,this.seed!=null)throw new $e("Random seed is not implemented for Orthogonal Initializer yet.")}apply(e,t){return D(()=>{if(e.length<2)throw new $e("Shape must be at least 2D.");e[0]*e[1]>2e3&&console.warn(`Orthogonal initializer is being called on a matrix with more than 2000 (${e[0]*e[1]}) elements: Slowness may result.`);let n=e[0]>e[1]?[e[1],e[0]]:e,a=Kh(n,0,1,"float32"),r=s1.gramSchmidt(a);return e[0]>e[1]&&(r=r.transpose()),L(this.gain,r)})}getConfig(){return{gain:this.gain,seed:this.seed}}};Cb.className="Orthogonal";se.registerClass(Cb);var M1={constant:"Constant",glorotNormal:"GlorotNormal",glorotUniform:"GlorotUniform",heNormal:"HeNormal",heUniform:"HeUniform",identity:"Identity",leCunNormal:"LeCunNormal",leCunUniform:"LeCunUniform",ones:"Ones",orthogonal:"Orthogonal",randomNormal:"RandomNormal",randomUniform:"RandomUniform",truncatedNormal:"TruncatedNormal",varianceScaling:"VarianceScaling",zeros:"Zeros"};function R1(e,t={}){return Kc(e,se.SerializationMap.getMap().classNameMap,t,"initializer")}function Et(e){return ub(e)}function wt(e){if(typeof e=="string"){let t=e in M1?M1[e]:e;if(t==="GlorotNormal")return new Jh;if(t==="GlorotUniform")return new Yh;if(t==="HeNormal")return new Zh;if(t==="HeUniform")return new Qh;if(t==="LeCunNormal")return new em;if(t==="LeCunUniform")return new tm;{let n={};return n.className=t,n.config={},R1(n)}}else return e instanceof ha?e:R1(e)}function lz(){return new wb}function uz(){return new Xh}function cz(e){return new kb(e)}function pz(e){return new Ib(e)}function dz(e){return new Nb(e)}function hz(e){return new Tb(e)}function mz(e){return new Sb(e)}function fz(e){return new Tn(e)}function gz(e){return new Yh(e)}function yz(e){return new Jh(e)}function bz(e){return new Zh(e)}function xz(e){return new Qh(e)}function vz(e){return new em(e)}function wz(e){return new tm(e)}function kz(e){return new Cb(e)}var P1={};Oe(P1,{Layer:()=>qe,RNN:()=>tr,RNNCell:()=>tp,activation:()=>rB,add:()=>hB,alphaDropout:()=>YB,average:()=>mB,averagePooling1d:()=>Eb,averagePooling2d:()=>_b,averagePooling3d:()=>Fb,avgPool1d:()=>IB,avgPool2d:()=>TB,avgPool3d:()=>CB,avgPooling1d:()=>NB,avgPooling2d:()=>SB,avgPooling3d:()=>EB,batchNormalization:()=>vB,bidirectional:()=>VB,concatenate:()=>fB,conv1d:()=>Yz,conv2d:()=>Jz,conv2dTranspose:()=>Zz,conv3d:()=>Qz,convLstm2d:()=>LB,convLstm2dCell:()=>zB,cropping2D:()=>tB,dense:()=>sB,depthwiseConv2d:()=>aB,dot:()=>xB,dropout:()=>iB,elu:()=>Gz,embedding:()=>dB,flatten:()=>lB,gaussianDropout:()=>XB,gaussianNoise:()=>KB,globalAveragePooling1d:()=>_B,globalAveragePooling2d:()=>FB,globalMaxPool1d:()=>GB,globalMaxPool2d:()=>HB,globalMaxPooling1d:()=>L1,globalMaxPooling2d:()=>z1,gru:()=>$B,gruCell:()=>DB,input:()=>O1,inputLayer:()=>Uz,layerNormalization:()=>wB,leakyReLU:()=>jz,lstm:()=>MB,lstmCell:()=>RB,masking:()=>JB,maxPool1d:()=>jB,maxPool2d:()=>qB,maxPooling1d:()=>B1,maxPooling2d:()=>W1,maxPooling3d:()=>AB,maximum:()=>gB,minimum:()=>yB,multiply:()=>bB,permute:()=>pB,prelu:()=>qz,reLU:()=>Hz,repeatVector:()=>uB,reshape:()=>cB,rnn:()=>BB,separableConv2d:()=>eB,simpleRNN:()=>PB,simpleRNNCell:()=>OB,softmax:()=>Kz,spatialDropout1d:()=>oB,stackedRNNCells:()=>WB,thresholdedReLU:()=>Xz,timeDistributed:()=>UB,upSampling2d:()=>nB,zeroPadding2d:()=>kB});var ZB=0;function V1(){return ZB++}var nm={};function am(e=""){return e in nm||(nm[e]=0),nm[e]+=1,e+nm[e].toString()}function Ab(e){return Array.isArray(e)&&Array.isArray(e[0])}function rm(e){return e.length===0?[]:Array.isArray(e[0])?e:[e]}function Re(e){let t;if(Array.isArray(e)){if(e.length!==1)throw new B(`Expected Tensor length to be 1; got ${e.length}`);t=e[0]}else t=e;return t}function dt(e){if(Array.isArray(e)&&Array.isArray(e[0])){if(e.length===1)return e=e,e[0];throw new B(`Expected exactly 1 Shape; got ${e.length}`)}else return e}function sm(e){let t=0;for(let n of e)n.shape.length===0?t+=1:t+=n.shape.reduce((a,r)=>a*r);return t}var U1="Variable",G1=class{constructor(e,t="float32",n=U1,a=!0,r=null){this.dtype=t==null?"float32":t,this.shape=e.shape,this.id=V1(),n=n==null?U1:n,this.originalName=E1(n),this.name=_1(this.originalName),this.trainable_=a,this.constraint=r,this.val=Sk(e,this.trainable_,this.name,this.dtype)}read(){return this.assertNotDisposed(),this.val}write(e){return this.assertNotDisposed(),QB(this.val,e),this.val.id!==e.id&&(this.val.assign(e),this.constraint!=null&&this.val.assign(this.constraint.apply(this.val))),this}dispose(){this.assertNotDisposed(),this.val.dispose()}assertNotDisposed(){if(this.val.isDisposed)throw new Error(`LayersVariable ${this.name} is already disposed.`)}get trainable(){return this.trainable_}set trainable(e){this.trainable_=e,this.val.trainable=e}};function QB(e,t){if(e.shape.toString()!==t.shape.toString())throw new Error("Shape mismatch: "+JSON.stringify(e.shape)+" vs. "+JSON.stringify(t.shape))}function $b(e){return e.map(t=>t.read())}function Db(e){e.forEach(t=>{t[0].write(t[1])})}var Zt=class{constructor(e){this.dtype=e.dtype,this.shape=e.shape,e.shape!=null?this.ndim=e.shape.length:this.ndim=e.ndim,this.maxNDim=e.maxNDim,this.minNDim=e.minNDim,this.axes=e.axes||{}}},$a=class{constructor(e,t,n,a,r,s,i){this.dtype=e,this.shape=t,this.sourceLayer=n,this.inputs=a,this.callArgs=r,this.outputTensorIndex=i,this.id=V1(),s!=null&&(this.originalName=E1(s),this.name=_1(this.originalName)),this.rank=t.length}},eW=0,im=class{constructor(e,t){this.callArgs=t,this.id=eW++,this.outboundLayer=e.outboundLayer,this.inboundLayers=e.inboundLayers,this.nodeIndices=e.nodeIndices,this.tensorIndices=e.tensorIndices,this.inputTensors=e.inputTensors,this.outputTensors=e.outputTensors,this.inputMasks=e.inputMasks,this.outputMasks=e.outputMasks,this.inputShapes=e.inputShapes,this.outputShapes=e.outputShapes;for(let n of e.inboundLayers)n!=null&&n.outboundNodes.push(this);e.outboundLayer.inboundNodes.push(this)}getConfig(){let e=[];for(let t of this.inboundLayers)t!=null?e.push(t.name):e.push(null);return{outboundLayer:this.outboundLayer?this.outboundLayer.name:null,inboundLayers:e,nodeIndices:this.nodeIndices,tensorIndices:this.tensorIndices}}},tW=0,qe=class extends se.Serializable{constructor(e={}){super();this._callHook=null,this._addedWeightNames=[],this._stateful=!1,this.id=tW++,this.activityRegularizer=null,this.inputSpec=null,this.supportsMasking=!1,this._trainableWeights=[],this._nonTrainableWeights=[],this._losses=[],this._updates=[],this._built=!1,this.inboundNodes=[],this.outboundNodes=[];let t=e.name;if(!t){let n=this.getClassName();t=Tr(n)+"_"+am(n)}if(this.name=t,this.trainable_=e.trainable==null?!0:e.trainable,e.inputShape!=null||e.batchInputShape!=null){let n;if(e.batchInputShape!=null)n=e.batchInputShape;else if(e.inputShape!=null){let r=null;e.batchSize!=null&&(r=e.batchSize),n=[r].concat(e.inputShape)}this.batchInputShape=n;let a=e.dtype;a==null&&(a=e.inputDType),a==null&&(a="float32"),this.dtype=a}e.weights!=null?this.initialWeights=e.weights:this.initialWeights=null,this._refCount=null,this.fastWeightInitDuringBuild=!1}static nodeKey(e,t){return e.name+"_ib-"+t.toString()}getNodeAtIndex(e,t){if(this.inboundNodes.length===0)throw new Fa(`The layer has never been called and thus has no defined ${t}.`);if(this.inboundNodes.length<=e)throw new B(`Asked to get ${t} at node ${e}, but the layer has only ${this.inboundNodes.length} inbound nodes.`);return this.inboundNodes[e]}getInputAt(e){return Nn(this.getNodeAtIndex(e,"input").inputTensors)}getOutputAt(e){return Nn(this.getNodeAtIndex(e,"output").outputTensors)}get input(){if(this.inboundNodes.length>1)throw new Nr(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer input" is ill-defined. Use \`getInputAt(nodeIndex)\` instead.`);if(this.inboundNodes.length===0)throw new Nr(`Layer ${this.name} is not connected, no input to return.`);return Nn(this.getNodeAtIndex(0,"input").inputTensors)}get output(){if(this.inboundNodes.length===0)throw new Nr(`Layer ${this.name} has no inbound nodes.`);if(this.inboundNodes.length>1)throw new Nr(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer output" is ill-defined. Use \`getOutputAt(nodeIndex)\` instead.`);return Nn(this.getNodeAtIndex(0,"output").outputTensors)}get losses(){return this._losses}calculateLosses(){return this.losses.map(e=>e())}get updates(){return this._updates}get built(){return this._built}set built(e){this._built=e}get trainable(){return this.trainable_}set trainable(e){this._trainableWeights.forEach(t=>t.trainable=e),this.trainable_=e}get trainableWeights(){return this.trainable_?this._trainableWeights.filter(e=>e.trainable):[]}set trainableWeights(e){this._trainableWeights=e}get nonTrainableWeights(){return this.trainable?this._trainableWeights.filter(e=>!e.trainable).concat(this._nonTrainableWeights):this._trainableWeights.concat(this._nonTrainableWeights)}set nonTrainableWeights(e){this._nonTrainableWeights=e}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}get stateful(){return this._stateful}resetStates(){if(!this.stateful)throw new Error("Cannot call the resetStates() method of a non-stateful Layer object.")}assertInputCompatibility(e){if(e=bt(e),this.inputSpec==null||this.inputSpec.length===0)return;let t=bt(this.inputSpec);if(e.length!==t.length)throw new B(`Layer ${this.name} expects ${t.length} inputs, but it received ${e.length} input tensors. Input received: ${e}`);for(let n=0;nr.maxNDim)throw new B(`Input ${n} is incompatible with layer ${this.name}: expected max_ndim=${r.maxNDim}, found ndim=${s}`);if(r.minNDim!=null&&s=0?i[l]:i[i.length+l];if(c!=null&&[c,null].indexOf(u)===-1)throw new B(`Input ${n} is incompatible with layer ${this.name}: expected axis ${l} of input shape to have value ${c} but got shape ${i}.`)}}if(r.shape!=null)for(let i=0;i{if(!this.built){this.assertInputCompatibility(e);let s=[];for(let i of bt(e))s.push(i.shape);this.build(Nn(s)),this.built=!0,this.initialWeights&&this.setWeights(this.initialWeights),this._refCount===null&&r&&(this._refCount=1)}if(this.assertInputCompatibility(e),r){let s=this.call(e,t),i=bt(s),o=[];for(let l of i)n.indexOf(l)!==-1&&(l=l.clone()),o.push(l);if(s=Nn(o),this.activityRegularizer!=null)throw new $e("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return s}else{let s=nW(e),i=this.computeOutputShape(s),o,l=aW(e);if(this.warnOnIncompatibleInputShape(Array.isArray(e)?s[0]:s),i!=null&&i.length>0&&Array.isArray(i[0])?o=i.map((c,u)=>new $a(l,c,this,bt(e),t,this.name,u)):o=new $a(l,i,this,bt(e),t,this.name),this.addInboundNode(e,o,null,null,s,i,t),this._refCount++,this.activityRegularizer!=null)throw new $e("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return o}})}warnOnIncompatibleInputShape(e){if(this.batchInputShape!=null)if(e.length!==this.batchInputShape.length)console.warn(`The rank of the input tensor provided (shape: ${JSON.stringify(e)}) does not match that of the batchInputShape (${JSON.stringify(this.batchInputShape)}) of the layer ${this.name}`);else{let t=!1;this.batchInputShape.forEach((n,a)=>{n!=null&&e[a]!=null&&e[a]!==n&&(t=!0)}),t&&console.warn(`The shape of the input tensor (${JSON.stringify(e)}) does not match the expectation of layer ${this.name}: ${JSON.stringify(this.batchInputShape)}`)}}get outputShape(){if(this.inboundNodes==null||this.inboundNodes.length===0)throw new Nr(`The layer ${this.name} has never been called and thus has no defined output shape.`);let e=[];for(let t of this.inboundNodes){let n=JSON.stringify(t.outputShapes);e.indexOf(n)===-1&&e.push(n)}if(e.length===1){let t=this.inboundNodes[0].outputShapes;return Array.isArray(t)&&Array.isArray(t[0])&&t.length===1?t[0]:t}else throw new Nr(`The layer ${this.name} has multiple inbound nodes with different output shapes. Hence the notion of "output shape" is ill-defined for the layer.`)}countParams(){if(!this.built)throw new Fa(`You tried to call countParams() on ${this.name}, but the layer is not built yet. Build it first by calling build(batchInputShape).`);return sm(this.weights)}build(e){this.built=!0}getWeights(e=!1){return $b(e?this.trainableWeights:this.weights)}setWeights(e){D(()=>{let t=this.weights;if(t.length!==e.length)throw new B(`You called setWeights(weights) on layer "${this.name}" with a weight list of length ${e.length}, but the layer was expecting ${t.length} weights. Provided weights: ${e}...`);if(t.length===0)return;let n=[],a=$b(t);for(let r=0;rr.apply(l.read())),s==null&&(s=!0),s?this._trainableWeights.push(l):this._nonTrainableWeights.push(l),l}setFastWeightInitDuringBuild(e){this.fastWeightInitDuringBuild=e}addLoss(e){e==null||Array.isArray(e)&&e.length===0||(e=bt(e),this._losses!==void 0&&this._losses!==null&&this.losses.push(...e))}computeOutputShape(e){return e}computeMask(e,t){if(!this.supportsMasking){if(t!=null)if(Array.isArray(t))t.forEach(n=>{if(n!=null)throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`)});else throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`);return null}return t}addInboundNode(e,t,n,a,r,s,i=null){let o=bt(e);t=bt(t),n=bt(n),a=bt(a),r=rm(r),s=rm(s);let l=[],c=[],u=[];for(let p of o)l.push(p.sourceLayer),c.push(p.nodeIndex),u.push(p.tensorIndex);new im({outboundLayer:this,inboundLayers:l,nodeIndices:c,tensorIndices:u,inputTensors:o,outputTensors:t,inputMasks:n,outputMasks:a,inputShapes:r,outputShapes:s},i);for(let p=0;pe.dispose()),this.weights.length}assertNotDisposed(){if(this._refCount===0)throw new Error(`Layer '${this.name}' is already disposed.`)}dispose(){if(!this.built)throw new Error(`Cannot dispose Layer ${this.name} because it has not been built yet.`);if(this._refCount===null)throw new Error(`Cannot dispose Layer ${this.name} because it has not been used yet.`);this.assertNotDisposed();let e=0;return--this._refCount==0&&(e=this.disposeWeights()),{refCountAfterDispose:this._refCount,numDisposedVariables:e}}};function nW(e){e=bt(e);let t=[];for(let n of e)t.push(n.shape);return Nn(t)}function aW(e){return"float32"}function H1(e,t,n){if((t==null||n!=null&&n>0)&&(t=e.sourceLayer,n=e.nodeIndex),t.inboundNodes.length===0)return[e];{let a=t.inboundNodes[n];if(a.inboundLayers.length===0)return a.inputTensors;{let r=[];for(let s=0;s0){let r=await Promise.all(t);for(let s=0;sZ(this.totals[a],L(r,n)));this.totals[a]=i,s!=null&&s.dispose()}}}async onEpochEnd(e,t){if(t!=null)for(let n of this.params.metrics)this.totals[n]!=null&&(typeof this.totals[n]=="number"?t[n]=this.totals[n]/this.seen:D(()=>{let a=L(ve(1,this.seen),this.totals[n]);t[n]=a,this.totals[n].dispose(),Xt(t[n])}))}},Y1=class extends Yl{async onTrainBegin(e){this.epoch=[],this.history={}}async onEpochEnd(e,t){t==null&&(t={}),this.epoch.push(e);for(let n in t)this.history[n]==null&&(this.history[n]=[]),this.history[n].push(t[n])}async syncData(){let e=[],t=[],n=[];for(let r in this.history){let s=this.history[r];for(let i=0;inew J1(n,t))}var ma=class{constructor(){}static registerCallbackConstructor(e,t){k.assert(e>=0&&Number.isInteger(e),()=>`Verbosity level is expected to be an integer >= 0, but got ${e}`),ma.checkForDuplicate(t),ma.constructors[e]==null&&(ma.constructors[e]=[]),ma.constructors[e].push(t)}static checkForDuplicate(e){for(let t in ma.constructors)ma.constructors[+t].forEach(n=>{if(n===e)throw new B("Duplicate callback constructor.")})}static clear(){ma.constructors={}}static createCallbacks(e){let t=[];for(let n in ma.constructors){let a=+n;e>=a&&t.push(...ma.constructors[a])}return t.map(n=>new n)}};ma.constructors={};function Q1(e,t,n,a,r,s,i,o,l){let c=new Y1,u=[new sW,...ma.createCallbacks(t)];e!=null&&u.push(...e),u.push(c);let p=new X1(u);return p.setParams({epochs:n,initialEpoch:a,samples:r,steps:s,batchSize:i,verbose:t,doValidation:o,metrics:l}),{callbackList:p,history:c}}function Da(e,t={},n=!1){return Kc(e,se.SerializationMap.getMap().classNameMap,t,"layer",n)}function om(e,t){return D(()=>{e.dtype!=="float32"&&(e=e.asType("float32"));let n=Ce(Qc(e),t,!0),a=In(n.shape,Ut()),r=an(Ta(n,a));return ve(e,r)})}function zi(e,t){return D(()=>Ct(Qc(fe(t,e)),-1))}function lm(e,t){return D(()=>Ct(Wt(fe(t,e)),-1))}function Jl(e,t){return D(()=>{let n=fe(e,t),a=Yt(Wt(e),Ut(),Number.MAX_VALUE),r=Wt(ve(n,a));return L(100,Ct(r,-1))})}function iW(e,t){return D(()=>{let n=Yt(t,Ut(),Number.MAX_VALUE),a=Dn(Z(1,n)),r=Yt(e,Ut(),Number.MAX_VALUE),s=Dn(Z(1,r));return Ct(Qc(fe(a,s)),-1)})}function oW(e,t){return D(()=>{let n=Ta(0,fe(1,L(e,t)));return Ct(Qc(n),-1)})}function lW(e,t){return D(()=>{let n=Ta(0,fe(1,L(e,t)));return Ct(n,-1)})}function uW(e,t){return D(()=>{let n=Ce(L(e,t),-1),a=ea(L(fe(1,e),t),-1);return Ta(0,Z(1,fe(a,n)))})}function cW(e,t){return D(()=>{let n=Math.log(2),a=fe(t,e),r=fe(Z(a,Bl(L(-2,a))),n);return Ct(r,-1)})}function np(e,t,n=!1){return D(()=>{if(n)t=Sa(t);else{let a=Ce(t,t.shape.length-1,!0);t=ve(t,a)}return t=Yt(t,Ut(),1-Ut()),St(Ce(L(e.toFloat(),Dn(t)),t.shape.length-1))})}function um(e,t,n=!1){return D(()=>{let a=zl(Dz(e)).toInt();t=Yt(t,Ut(),1-Ut());let r=t.shape,s=Ml(a,r[r.length-1]).reshape(r);return np(s,t,n)})}function pW(e,t){if(!k.arraysEqual(e.shape,t.shape))throw new B(`logits and labels must have the same shape, but got shapes ${JSON.stringify(e.shape)} and ${JSON.stringify(t.shape)}`);return D(()=>{let n=t.relu(),a=t.abs().neg();return n.sub(t.mul(e)).add(a.exp().log1p())})}function cm(e,t){return D(()=>{let n;return n=Yt(t,Ut(),1-Ut()),n=Dn(ve(n,fe(1,n))),Ct(pW(e,n),-1)})}function dW(e,t){return D(()=>{let n=Yt(e,Ut(),1),a=Yt(t,Ut(),1);return Ce(L(e,Dn(ve(n,a))),-1)})}function hW(e,t){return D(()=>{let n=Dn(Z(Ut(),t));return Ct(fe(t,L(e,n)),-1)})}function Mb(e,t){return D(()=>{let n=om(e,-1),a=om(t,-1),r=L(n,a);return St(Ce(r,-1))})}var pm={meanSquaredError:zi,meanAbsoluteError:lm,meanAbsolutePercentageError:Jl,meanSquaredLogarithmicError:iW,squaredHinge:oW,hinge:lW,categoricalHinge:uW,logcosh:cW,categoricalCrossentropy:np,sparseCategoricalCrossentropy:um,binaryCrossentropy:cm,kullbackLeiblerDivergence:dW,poisson:hW,cosineProximity:Mb};function Rb(e){if(typeof e=="string"){if(e in pm)return pm[e];let t=`Unknown loss ${e}`;throw e.toLowerCase().includes("softmaxcrossentropy")&&(t=`Unknown loss ${e}. Use "categoricalCrossentropy" as the string name for tf.losses.softmaxCrossEntropy`),new B(t)}else return e}function Pb(e,t){return D(()=>{let n=L(.5,Mn(t)),a=Jc(Qn(t,n),e.dtype);return Ct(vr(e,a),-1)})}function Ob(e,t){return D(()=>Jc(vr($c(e,-1),$c(t,-1)),"float32"))}function eI(e,t){return D(()=>pa(e.equal(1),t.equal(1)).sum().cast("float32"))}function mW(e,t){return D(()=>pa(e.equal(1),t.equal(0)).sum().cast("float32"))}function fW(e,t){return D(()=>pa(e.equal(0),t.equal(1)).sum().cast("float32"))}function tI(e,t){return D(()=>{let n=eI(e,t),a=fW(e,t),r=n.add(a);return kn(Qn(r,0),n.div(r),0).cast("float32")})}function gW(e,t){return D(()=>{let n=eI(e,t),a=mW(e,t),r=n.add(a);return kn(Qn(r,0),n.div(r),0).cast("float32")})}function nI(e,t){return cm(e,t)}function aI(e,t){return e.rank===t.rank&&(e=e.squeeze([e.rank-1])),t=t.argMax(-1),t.dtype!==e.dtype&&(t=t.asType(e.dtype)),vr(e,t).asType("float32")}var yW=zi,bW=zi,xW=lm,vW=lm,wW=Jl,kW=Jl,Lb=np,IW=Mb,rI=um,dm={binaryAccuracy:Pb,categoricalAccuracy:Ob,precision:tI,categoricalCrossentropy:Lb,sparseCategoricalCrossentropy:rI,mse:yW,MSE:bW,mae:xW,MAE:vW,mape:wW,MAPE:kW,cosine:IW};function NW(e){if(typeof e=="string"&&e in dm)return dm[e];if(typeof e!="string"&&e!=null)return e;throw new B(`Unknown metric ${e}`)}function hm(e){if(Za(e!==null,`Unknown LossOrMetricFn ${e}`),typeof e=="string")return e;{let t;for(let n of Object.keys(pm))if(pm[n]===e){t=n;break}if(t!==void 0)return t;for(let n of Object.keys(dm))if(dm[n]===e){t=n;break}return t!==void 0?t:e.name}}function TW(e){let t={Adagrad:()=>Di.adagrad(.01),Adadelta:()=>Di.adadelta(1,.95,Ut()),Adam:()=>Di.adam(.001,.9,.999,Ut()),Adamax:()=>Di.adamax(.002,.9,.999,Ut(),0),RMSProp:()=>Di.rmsprop(.001,.9,0,Ut()),SGD:()=>Di.sgd(.01)};if(t.adagrad=t.Adagrad,t.adadelta=t.Adadelta,t.adam=t.Adam,t.adamax=t.Adamax,t.rmsprop=t.RMSProp,t.sgd=t.SGD,e in t)return t[e]();throw new B(`Unknown Optimizer ${e}`)}var sI=1*1024*1024;function iI(e,t,n=!1){if(e==null||typeof e!="object"||Object.getPrototypeOf(e)!==Object.prototype||!zb(e))throw new Error("User-defined metadata is expected to be a JSON object, but is not.");if(n){let a=JSON.stringify(e);a.length>sI&&console.warn(`User-defined metadata of model "${t}" is too large in size (length=${a.length} when serialized). It is not recommended to store such large objects in user-defined metadata. Please make sure its serialized length is <= ${sI}.`)}}function zb(e){if(e===null)return!0;if(typeof e=="object")if(Object.getPrototypeOf(e)===Object.prototype){let t=Object.keys(e);for(let n of t)if(typeof n!="string"||!zb(e[n]))return!1;return!0}else if(Array.isArray(e)){for(let t of e)if(!zb(t))return!1;return!0}else return!1;else{let t=typeof e;return t==="string"||t==="number"||t==="boolean"}}function FW(e,t,n,a=console.log){let r=CW(e),s=["Layer (type)","Output shape","Param #"];r?(t=t||65,n=n||[.45,.85,1]):(t=t||98,n=n||[.33,.55,.67,1]),n[n.length-1]<=1&&(n=n.map(u=>Math.floor(t*u)));let i;if(!r){s.push("Receives inputs"),i=[];for(let u in e.nodesByDepth)i.push(...e.nodesByDepth[u])}a("_".repeat(t)),mm(s,n,a),a("=".repeat(t));let o=e.layers;for(let u=0;u1||r.length===1&&r[0].inboundLayers.length>1){t=!1;break}a.push(...r)}if(t)for(let r of e.layers){let s=!1;for(let i of r.inboundNodes)if(a.indexOf(i)!==-1)if(s){t=!1;break}else s=!0;if(!t)break}return t}function mm(e,t,n=console.log){let a="";for(let r=0;r0&&(a=a.slice(0,a.length-1)+" "),a+=e[r],a=a.slice(0,t[r]),a+=" ".repeat(t[r]-a.length);n(a)}function EW(e,t,n){let a;try{a=JSON.stringify(e.outputShape)}catch(o){a="multiple"}let r=e.name,s=e.getClassName(),i=[`${r} (${s})`,a,e.countParams().toString()];mm(i,t,n)}function _W(e,t,n,a){let r;try{r=JSON.stringify(e.outputShape)}catch(u){r="multiple"}let s=[];for(let u of e.inboundNodes)if(!(n!=null&&n.length>0&&n.indexOf(u)===-1))for(let p=0;pm.name),l=[],c=t.names();for(let m of o)c.indexOf(m)!==-1?l.push(t.getValue(m)):l.push(null);a!=null&&(a.maxNumTensors=-Infinity,a.minNumTensors=Infinity);let u=o.join(",")+"|"+t.names().join(","),p,d;if(Wb[u]==null){let m=$W(i,t);p=m.sorted,d=m.recipientCounts,Wb[u]=p,lI[u]=d}p=Wb[u],d={},r||Object.assign(d,lI[u]);let h=new Bi(t);for(let m=0;ma.maxNumTensors&&(a.maxNumTensors=$),$0,()=>"Expected at least one fetch, got none");let n=[],a={};if(e.length===1){let r=uI(e[0],t);n=r.sorted,a=r.recipientMap}else{let r=new Set;for(let s of e){let{sorted:i,recipientMap:o}=uI(s,t);for(let l of i)r.has(l.name)||(n.push(l),r.add(l.name));for(let l in o)a[l]==null&&(a[l]=new Set),o[l].forEach(c=>a[l].add(c))}}return{sorted:n,recipientCounts:MW(a)}}function MW(e){let t={};for(let n in e)t[n]=e[n].size;return t}function uI(e,t){let n=new Set,a=[],r={};for(let o of t.names())n.add(o);let s=[],i=[];for(s.push(e);s.length>0;){let o=s[s.length-1];if(n.has(o.name)){s.pop();continue}let l=i[i.length-1]===s.length-1;if(o.inputs.length===0||l)s.pop(),a.push(o),n.add(o.name),l&&i.pop();else{i.push(s.length-1);for(let c of o.inputs)r[c.name]==null&&(r[c.name]=new Set),r[c.name].add(o.name),!n.has(c.name)&&s.push(c)}}return{sorted:a,recipientMap:r}}function DW(e){let t;if(e.sourceLayer.inboundNodes.length===1)t=e.sourceLayer.output;else{let n=null;for(let a=0;ay.name)}`);rs(this.outputs).length!==this.outputs.length&&console.warn(`The list of outputs passed to the model is redundant. All outputs should only appear once. Found: ${this.outputs.map(y=>y.name)}`),this.inputLayers=[],this.inputLayersNodeIndices=[],this.inputLayersTensorIndices=[],this.outputLayers=[],this.outputLayersNodeIndices=[],this.outputLayersTensorIndices=[],this.layers=[],this.internalContainerRefs=[];for(let y of this.outputs){let b=y.sourceLayer,x=y.nodeIndex,v=y.tensorIndex;this.outputLayers.push(b),this.outputLayersNodeIndices.push(x),this.outputLayersTensorIndices.push(v)}for(let y of this.inputs){let b=y.sourceLayer,x=y.nodeIndex,v=y.tensorIndex;Za(x===0,"input layer has >1 nodes"),Za(v===0,"input layer has >1 tensors"),this.inputLayers.push(b),this.inputLayersNodeIndices.push(x),this.inputLayersTensorIndices.push(v)}this.inputNames=[],this.outputNames=[],this.feedInputShapes=[],this.feedInputNames=[],this.feedOutputNames=[];for(let y=0;yy.shape),this.internalOutputShapes=this.outputs.map(y=>y.shape);let t={},n={},a={},r={},s={},i=[],o=(y,b,x,v,N,T)=>{(v==null||N==null||T==null)&&(v=y.sourceLayer,N=y.nodeIndex,T=y.tensorIndex);let E=v.inboundNodes[N];if(x.indexOf(E)!==-1)throw new Fa(`The tensor ${y.name} at layer "${v.name}" is part of a cycle.`);if(b.indexOf(E)!==-1)return;this.containerNodes.add(nr.nodeKey(v,N)),v.id in s||(s[v.id]=Object.keys(s).length),x.indexOf(E)===-1&&x.push(E);let A=E.inboundLayers.length;for(let $=0;$=0;)x.splice(x.indexOf(E),1);i.push(E)},l=[],c=[];for(let y of this.outputs)o(y,l,c);let u=i.slice().reverse();for(let y of u){n[y.id]=y,y.id in t||(t[y.id]=0);let b=t[y.id],x=a[y.outboundLayer.id]==null?0:a[y.outboundLayer.id];b=Math.max(b,x),a[y.outboundLayer.id]=b,r[y.outboundLayer.id]=y.outboundLayer,t[y.id]=b;for(let v=0;vparseInt(y,10)).sort(jh);this.layers=[];for(let y of h){let b=d[y];b.sort((x,v)=>{let N=s[x.id],T=s[v.id];return NT?1:0});for(let x of b)x instanceof nr&&this.internalContainerRefs.push(x),this.layers.push(x)}this.layersByDepth=d,h=Object.keys(p).map(y=>parseInt(y,10)).sort(jh);let m=this.inputs.slice(),f=[];for(let y of h)for(let b of p[y]){let x=b.outboundLayer;if(x!=null){for(let v of b.inputTensors)if(m.indexOf(v)===-1)throw new Fa(`Graph disconnected: cannot obtain value for tensor ${v} at layer "${x.name}". The following previous layers were accessed without issue: ${f}`);for(let v of b.outputTensors)m.push(v);f.push(x.name)}}this.nodesByDepth=p;let g=this.layers.map(y=>y.name);for(let y of g){let b=g.filter(x=>x===y).length;if(b!==1)throw new Fa(`The name "${y}" is used ${b} times in the model. All layer names should be unique. Layer names: `+JSON.stringify(g))}this.outboundNodes=[],this.inboundNodes=[],new im({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:this.inputs.map(y=>null),outputMasks:this.outputs.map(y=>null),inputShapes:this.inputs.map(y=>y.shape),outputShapes:this.outputs.map(y=>y.shape)}),this.built=!0,this._refCount=1}assertNotDisposed(){if(this._refCount===0)throw new Error(`Container '${this.name}' is already disposed.`)}dispose(){this.assertNotDisposed();let e={refCountAfterDispose:null,numDisposedVariables:0};if(--this._refCount==0){for(let t of this.layers)e.numDisposedVariables+=t.dispose().numDisposedVariables;for(let t of this.internalContainerRefs)e.numDisposedVariables+=t.dispose().numDisposedVariables}return e.refCountAfterDispose=this._refCount,e}get trainable(){return this.trainable_}set trainable(e){this.layers.forEach(t=>{t._trainableWeights.forEach(n=>n.trainable=e)}),this.trainable_=e}get trainableWeights(){if(this._trainableWeights.length>0)throw new B("Container instance unexpectedly contains _trainableWeights.The trainable weights of a Container are a union of the trainable weights of its consituent Layers. Its own _trainableWeights must remain an empty Array.");if(!this.trainable)return[];let e=[];for(let t of this.layers)e=e.concat(t.trainableWeights);return e}get nonTrainableWeights(){let e=[];for(let t of this.layers)e.push(...t.nonTrainableWeights);if(!this.trainable){let t=[];for(let n of this.layers)t.push(...n.trainableWeights);return t.concat(e)}return e}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}loadWeights(e,t=!0){let n={},a=0;for(let s of this.layers)for(let i of s.weights){if(n[i.originalName]!=null)throw new B(`Duplicate weight name: ${i.originalName}`);n[i.originalName]=i,a++}let r=[];for(let s in e){let i=s;if(n[s]==null){let o=s.split("/");i=o.slice(0,-2).concat([o[o.length-1]]).join("/")}if(n[i]!=null)r.push([n[i],e[s]]);else if(t)throw new B(`Provided weight data has no target variable: ${s}`);delete n[i]}if(t){let s=[];for(let i in n)s.push(i);if(s.length>0)throw new B(`${s.length} of ${a} weights are not set: ${s}`)}Db(r)}updatedConfig(){let e=this.getConfig(),t={};return t.className=this.getClassName(),t.config=e,t.kerasVersion=`tfjs-layers ${fm}`,t.backend="TensorFlow.js",t}toJSON(e,t=!0){let n=Bb(this.updatedConfig());return t?JSON.stringify(n):n}call(e,t){return D(()=>{e=bt(e);let n=new Bi;for(let a=0;a{e=bt(e);let n;return t==null?n=Mi(null,e.length):n=bt(t),this.runInternalGraph(e,n)[1]})}computeOutputShape(e){let t=rm(e);if(t.length!==this.inputLayers.length)throw new B(`Invalid inputShape argument ${e}: model has ${this.inputLayers.length} tensor inputs.`);let n={};for(let i=0;iparseInt(i,10)).sort(jh);if(a.length>1)for(let i of a){let o=this.nodesByDepth[i];for(let l of o){let c=l.outboundLayer;if(this.inputLayers.map(m=>m.id).indexOf(c.id)!==-1)continue;let u=[];for(let m=0;mparseInt(o,10)).sort(jh);for(let o of a){let l=this.nodesByDepth[o];for(let c of l){let u=c.outboundLayer,p=c.inputTensors,d=c.outputTensors,h=new Array;for(let m of p)m.id in n&&h.push(n[m.id]);if(h.length===p.length){let m={},f,g,y,b;if(c.callArgs!=null&&(m=c.callArgs),h.length===1){let[x,v]=h[0];m.mask==null&&(m.mask=v),y=bt(u.call(x,m)),b=bt(u.computeMask(x,v)),f=[x],g=[v]}else f=h.map(x=>x[0]),g=h.map(x=>x[1]),m.mask==null&&(m.mask=g),y=bt(u.call(f,m)),b=bt(u.computeMask(f,g));if(u.activityRegularizer)throw new $e("LayersModel invocation with concrete Tensor value(s) in the presence of activity regularizer(s) is not supported yet.");for(let x=0;x{let e=[];for(let t of this.layers)for(let n=0;n0){let m=[];for(let f=0;f0&&f.apply(Nn(y),b)}function l(f){let g=f.name,y=Da(f,t.customObjects!=null?t.customObjects:{});y.setFastWeightInitDuringBuild(a),r[g]=y,f.inboundNodes.forEach(b=>{if(!(b instanceof Array))throw new B(`Corrupted configuration, expected array for nodeData: ${b}`);i(y,b)})}let c=t.name,u=t.layers;for(let f of u)l(f);for(;!iz(s);)for(let f of u){let g=r[f.name];if(g.name in s){let y=s[g.name];delete s[g.name];for(let b of y)o(g,b)}}let p=[],d=[],h=t.inputLayers;for(let f of h){let g=f[0],y=f[1],b=f[2];Za(g in r);let x=r[g].inboundNodes[y].outputTensors;p.push(x[b])}let m=t.outputLayers;for(let f of m){let g=f[0],y=f[1],b=f[2];Za(g in r);let x=r[g].inboundNodes[y].outputTensors;d.push(x[b])}return new e({inputs:p,outputs:d,name:c})}get stateful(){if(this._stateful)throw new B("Container instance unexpectedly has _stateful = true. The statefulness of a Container is determined by the Layers it contains. Its _stateful property must remain the default false.");for(let e of this.layers)if(e.stateful)return!0;return!1}resetStates(){D(()=>{this.layers.forEach(e=>{e.stateful&&e.resetStates()})})}};function RW(e,t,n){let a=t.length;if(e==null||Array.isArray(e)&&e.length===0)return t.map(r=>null);if(a===1)return Array.isArray(e)&&e.length===1?e:typeof e=="object"&&t[0]in e?[e[t[0]]]:[e];if(Array.isArray(e)){if(e.length!==a)throw new Error(`Provided ${n} is an array of ${e.length} element(s), but the model has ${a} outputs. Make sure a set of weights is provided for each model output.`);return e}else if(typeof e=="object"&&Object.keys(e).length>0&&typeof e[Object.keys(e)[0]]=="object"){let r=[];return t.forEach(s=>{s in e?r.push(e[s]):r.push(null)}),r}else throw new Error(`The model has multiple (${a}) outputs, so ${n} must be either an array with ${a} elements or an object with ${t} keys. Provided ${n} not understood: ${JSON.stringify(e)}`)}function cI(e,t){return RW(e,t,"classWeight")}async function pI(e,t,n,a){if(t!=null||a!=null)throw new Error("Support sampleWeight is not implemented yet");if(n!=null){let r=D(()=>{if(e.shape.length===1)return e.clone();if(e.shape.length===2)if(e.shape[1]>1){let o=1;return e.argMax(o)}else{if(e.shape[1]===1)return e.reshape([e.shape[0]]);throw new Error(`Encountered unexpected last-dimension size (${e.shape[1]}) during handling of class weights. The size is expected to be >= 1.`)}else throw new Error(`Unexpected rank of target (y) tensor (${e.rank}) during handling of class weights. The rank is expected to be 1 or 2.`)}),s=Array.from(await r.data());Ae(r);let i=[];return s.forEach(o=>{if(n[o]==null)throw new Error(`classWeight must contain all classes in the training data. The class ${o} exists in the data but not in classWeight`);i.push(n[o])}),et(i,"float32")}else return null}function PW(e,t){return L(e,t)}var OW=32;function hI(e,t){let n,a,r=t;n=r.xs,a=r.ys,k.assert(n!=null&&a!=null,()=>`A Dataset iterator for fitDataset() is expected to generate objects of the form \`{xs: xVal, ys: yVal}\`, where the two values may be \`tf.Tensor\`, an array of Tensors, or a map of string to Tensor. The provided Dataset instead generates ${t}`);let s=dI("input",e.inputNames,n),i=dI("output",e.outputNames,a),o=s[0].shape[0];k.assert(s.length===e.inputs.length,()=>`LayersModel has ${e.inputs.length} inputs, but the dataset provides ${s.length} inputs. (Expected input keys: ${JSON.stringify(e.inputNames)})`),k.assert(i.length===e.outputs.length,()=>`LayersModel has ${e.outputs.length} outputs, but the dataset provides ${i.length} outputs. (Expected output keys: ${JSON.stringify(e.outputNames)})`);for(let l=0;l`Batch size mismatch: input ${e.inputNames[l]} has ${s[l].shape[0]}; expected ${o} based on input ${e.inputNames[0]}.`);for(let l=0;l`Batch size mismatch: output ${e.outputNames[l]} has ${i[l].shape[0]}; expected ${o} based on input ${e.inputNames[0]}.`);return{xs:s,ys:i}}function dI(e,t,n){if(n instanceof z)return[n];if(Array.isArray(n))return k.assert(n.length===t.length,()=>`Received an array of ${n.length} Tensors, but expected ${t.length} to match the ${e} keys ${t}.`),n;{let a=[];for(let r of t){if(n[r]==null)throw new B(`The feature data generated by the dataset lacks the required ${e} key '${r}'.`);a.push(n[r])}return a}}function LW(e){if(e.length===3)throw new $e("Validation with sample weights is not implemented yet.");return{xs:e[0],ys:e[1]}}async function BW(e,t,n){let a=n.batchesPerEpoch!=null;if(k.assert(e.optimizer!=null,()=>"You must compile a model before training/testing. Use LayersModel.compile(modelCompileConfig)."),k.assert(n!=null,()=>"For fitDataset(), the 2nd argument (config) is required, but it is not provided in this call."),k.assert(n.epochs!=null&&n.epochs>0&&Number.isInteger(n.epochs),()=>`For fitDataset(), config.epochs is expected to be a positive integer, but got ${n.epochs}`),k.assert(!a||n.batchesPerEpoch>0&&Number.isInteger(n.batchesPerEpoch),()=>`For fitDataset(), config.batchesPerEpoch is expected to be a positive integer if specified, but got ${n.batchesPerEpoch}`),k.assert(n.validationSplit==null,()=>"`validationSplit` is not supported by `fitDataset()`. Use validationData instead."),e.isTraining)throw new Error("Cannot start training because another fit() call is ongoing.");e.isTraining=!0;try{let r=n.validationData!=null,s,i;if(r)if(mI(n.validationData))k.assert(n.validationBatches==null||n.validationBatches>0&&Number.isInteger(n.validationBatches),()=>`For fitDataset() with dataset-based validation, config.validationBatches is expected not to be provided, or to be a positive integer, but got ${n.validationBatches}`);else{let g=LW(n.validationData);s=g.xs,i=g.ys}let o=e.makeTrainFunction(),l=e.getDedupedMetricsNames(),c;r?c=l.slice().concat(l.map(g=>"val_"+g)):c=l.slice();let u=Z1(n.callbacks,n.yieldEvery),p=n.verbose==null?1:n.verbose,{callbackList:d,history:h}=Q1(u,p,n.epochs,null,null,zW(t,n),null,r,c);d.setModel(e),e.history=h,await d.onTrainBegin(),e.stopTraining_=!1;let m=n.initialEpoch==null?0:n.initialEpoch,f=await t.iterator();for(;m=n.batchesPerEpoch:x.done){if(r){let v;mI(n.validationData)?v=bt(await e.evaluateDataset(n.validationData,{batches:n.validationBatches})):v=bt(e.evaluate(s,i,{batchSize:n.validationBatchSize==null?OW:n.validationBatchSize,verbose:0}));for(let N=0;N0)throw new $e("Verbose mode is not implemented yet.");k.assert(!a||n.batches>0&&Number.isInteger(n.batches),()=>`Test loop expects \`batches\` to be a positive integer, but received ${JSON.stringify(n.batches)}`);let i=WW(t)?t:await t.iterator(),o=0,l=0;for(;a?l{if(c.value){let{xs:u,ys:p}=hI(e,c.value),d=u.concat(p),h=D(()=>r(d));if(Ae(d),l===0)for(let f=0;fZ(s[f],L(m,g))),l>0&&Ae(y)}Ae(h),o+=m,++l}return s}),c.done){a&&console.warn(`Your dataset iterator ran out of data during evaluateDataset(). Interrupting evalution. Make sure that your dataset can generate at least \`batches\` batches (in this case, ${n.batches} batches). You may need to use the repeat() function when building your dataset.`);break}}for(let c=0;c0&&Number.isInteger(e),()=>`batchSize is required to be a positive integer, but got ${e}`)}function sp(e,t,n){return e==null?[null]:Array.isArray(e)?e.map(a=>Li(a,t,n-t)):Li(e,t,n-t)}function Ub(e,t){return D(()=>e==null?null:Array.isArray(e)?e.map(n=>Ub(n,t)):$1(e,t.dtype==="int32"?t:t.toInt()))}function Gb(e,t){let n=[],a=0,r=null;for(;a=e&&(r=e),n.push([a,r]),a=r;return n}async function UW(e,t,n,a,r,s,i,o,l,c,u,p,d,h,m){r==null&&(r=32),s==null&&(s=1),u==null&&(u=!0),d==null&&(d=0);let f=!1;if(l!=null&&c!=null&&(f=!0),m!=null&&(f=!0,h==null))throw new B("Can only use `validationSteps` when doing step-wise training, i.e., `stepsPerEpoch` must be set.");let g=e.checkNumSamples(n,r,h,"steps_per_epoch"),y;g!=null&&(y=Aa(0,g)),i==null&&(i=1);let{callbackList:b,history:x}=Q1(o,i,s,d,g,h,r,f,p);b.setModel(e),e.history=x,await b.onTrainBegin(),e.stopTraining_=!1;for(let v=d;v{let O=E[A][0],V=E[A][1],W=Li(T,O,V-O);$.batch=A,$.size=V-O;let H=Ub(n,W),X=t(H);for(let q=0;q0){if(m=!0,a.validationData.length===2)i=a.validationData[0],o=a.validationData[1];else throw a.validationData.length===3?new $e("validationData including sample weights is not supported yet."):new B(`When passing validation data, it must contain 2 (valX, valY) or 3 (valX, valY, valSampleWeight) items; ${a.validationData} is invalid.`);let T=!0,E=await e.standardizeUserData(i,o,null,null,T,p);l=E[0],c=E[1],f=l.concat(c)}else if(a.validationSplit!=null&&a.validationSplit>0&&a.validationSplit<1){m=!0;let T=Math.floor(r[0].shape[0]*(1-a.validationSplit)),E=r[0].shape[0];l=sp(r,T,E),r=sp(r,0,T),c=sp(s,T,E),s=sp(s,0,T),f=l.concat(c)}else a.validationSteps!=null&&(m=!0);let g=r.concat(s).concat(u);e.checkTrainableWeightsConsistency();let y=e.makeTrainFunction(),b=e.getDedupedMetricsNames(),x,v;m?(e.makeTestFunction(),x=e.testFunction,v=b.slice().concat(b.map(T=>"val_"+T))):(x=null,f=[],v=b.slice());let N=Z1(a.callbacks,a.yieldEvery);return await UW(e,y,g,b,p,a.epochs,a.verbose,N,x,f,a.shuffle,v,a.initialEpoch,null,null)}finally{e.isTraining=!1,Wi(r,t),Wi(s,n),Wi(l,i),Wi(c,o),u!=null&&Ae(u)}}function fI(e){let t=[];e instanceof z&&(e=[e]);for(let n=0;nn.push(r.id));else if(t!=null)for(let r in t){let s=t[r];n.push(s.id)}let a=[];if(e instanceof z)n.indexOf(e.id)===-1&&a.push(e);else if(Array.isArray(e))e.forEach(r=>{n.indexOf(r.id)===-1&&a.push(r)});else if(e!=null)for(let r in e){let s=e[r];n.indexOf(s.id)===-1&&a.push(s)}a.forEach(r=>{r.isDisposed||r.dispose()})}function HW(e){return e instanceof z}function Hb(e){return Array.isArray(e)}function gI(e){return!HW(e)&&!Hb(e)}function yI(e,t,n,a=!0,r=""){if(t==null||t.length===0){if(e!=null){let i=!1;if(Hb(e)&&e.length>0)i=!0;else if(gI(e)){for(let o in e)if(e.hasOwnProperty(o)){i=!0;break}}else i=!0;if(i)throw new B(`Error when checking model ${r} expected no data, but got ${e}`)}return[]}if(e==null)return t.map(i=>null);let s;if(gI(e)){e=e,s=[];for(let i of t){if(e[i]==null)throw new B(`No data provided for "${i}". Need data for each key in: ${t}`);s.push(e[i])}}else if(Hb(e)){if(e=e,e.length!==t.length)throw new B(`Error when checking model ${r}: the Array of Tensors that you are passing to your model is not the size the model expected. Expected to see ${t.length} Tensor(s), but instead got the following list of Tensor(s): ${e}`);s=e}else{if(e=e,t.length>1)throw new B(`The model ${r} expects ${t.length} Tensor(s), but only received one Tensor. Found: Tensor with shape ${e.shape}`);s=[e]}if(s=fI(s),n!=null)for(let i=0;i=0&&c!==u)throw new B(`Error when checking ${r}: expected ${t[i]} to have shape [${n[i]}], but got array with shape [${o.shape}].`)}}return s}function jW(e,t,n){let a=rs(e.map(s=>s.shape[0]));a.sort();let r=rs(t.map(s=>s.shape[0]));if(r.sort(),a.length>1)throw new B(`All input Tensors (x) should have the same number of samples. Got array shapes: ${JSON.stringify(e.map(s=>s.shape))}`);if(r.length>1)throw new B(`All target Tensors (y) should have the same number of samples. Got array shapes: ${JSON.stringify(t.map(s=>s.shape))}`);if(a.length>0&&r.length>0&&!k.arraysEqual(a,r))throw new B(`Input Tensors should have the same number of samples as target Tensors. Found ${a[0]} input sample(s) and ${r[0]} target sample(s).`)}function qW(e,t,n){let a=[zi,cm,np];for(let r=0;r1)throw new B(`The model expects ${t.length} ${r} Tensors, but only received one Tensor. Found: array with shape ${JSON.stringify(e.shape)}.`);s=[e]}if(n!=null)for(let i=0;i[]);let n;if(typeof e=="string"||typeof e=="function")n=[e];else if(Array.isArray(e)||typeof e=="object")n=e;else throw new TypeError(`Type of metrics argument not understood. Expected an string,function, Array, or Object, found: ${e}`);if(Array.isArray(n))return t.map(a=>n);{let a=[];for(let r of t){let s=n.hasOwnProperty(r)?n[r]:[];Array.isArray(s)||(s=[s]),a.push(s)}return a}}var XW="layers-model",Sr=class extends nr{constructor(e){super(e);this.isTraining=!1}summary(e,t,n=console.log){if(!this.built)throw new B("This model has never been called, thus its weights have not been created yet. So no summary can be displayed. Build the model first (e.g., by calling it on some test data).");FW(this,e,t,n)}compile(e){if(e.loss==null&&(e.loss=[]),this.loss=e.loss,typeof e.optimizer=="string")this.optimizer_=TW(e.optimizer),this.isOptimizerOwned=!0;else{if(!(e.optimizer instanceof Ir))throw new B("User-defined optimizer must be an instance of tf.Optimizer.");this.optimizer_=e.optimizer,this.isOptimizerOwned=!1}let t=[];if(!Array.isArray(e.loss)&&typeof e.loss!="string"&&typeof e.loss!="function"){e.loss=e.loss;for(let s in e.loss)if(this.outputNames.indexOf(s)===-1)throw new B(`Unknown entry in loss dictionary: "${s}". Only expected the following keys: ${this.outputNames}`);for(let s of this.outputNames)e.loss[s]==null&&console.warn(`Output "${s}" is missing from loss dictionary. We assume this was done on purpose, and we will not be expecting data to be passed to ${s} during training`),t.push(Rb(e.loss[s]))}else if(Array.isArray(e.loss)){if(e.loss.length!==this.outputs.length)throw new B(`When passing an Array as loss, it should have one entry per model output. The model has ${this.outputs.length} output(s), but you passed loss=${e.loss}.`);t=e.loss.map(s=>Rb(s))}else{let s=Rb(e.loss);this.outputs.forEach(i=>{t.push(s)})}this.lossFunctions=t,this.feedOutputNames=[],this.feedOutputShapes=[],this.feedLossFns=[];for(let s=0;s{for(let s=0;s1&&(this.metricsTensors.push([i,s]),this.metricsNames.push(this.outputNames[s]+"_loss"))}});let a=KW(e.metrics,this.outputNames),r=(s,i,o)=>{this.outputNames.length>1&&(i=this.outputNames[s]+"_"+i),this.metricsNames.push(i),this.metricsTensors.push([o,s])};Oi("metric",()=>{for(let s=0;s{let l="",c,u,p;for(let d of o){if(typeof d=="string"&&["accuracy","acc","crossentropy","ce"].indexOf(d)!==-1){let m=this.internalOutputShapes[s];m[m.length-1]===1||this.lossFunctions[s]===cm?["accuracy","acc"].indexOf(d)!==-1?u=Pb:["crossentropy","ce"].indexOf(d)!==-1&&(u=nI):this.lossFunctions[s]===um?["accuracy","acc"].indexOf(d)!==-1?u=aI:["crossentropy","ce"].indexOf(d)!==-1&&(u=rI):["accuracy","acc"].indexOf(d)!==-1?u=Ob:["crossentropy","ce"].indexOf(d)!==-1&&(u=Lb);let f;["accuracy","acc"].indexOf(d)!==-1?f="acc":["crossentropy","ce"].indexOf(d)!==-1&&(f="ce"),p=u,c=l+f}else p=NW(d),c=l+hm(d);let h;Oi(c,()=>{h=p}),r(s,c,h)}})(i)}}),this.collectedTrainableWeights=this.trainableWeights}checkTrainableWeightsConsistency(){this.collectedTrainableWeights!=null&&this.trainableWeights.length!==this.collectedTrainableWeights.length&&console.warn("Discrepancy between trainableweights and collected trainable weights. Did you set `model.trainable` without calling `model.compile()` afterwards?")}evaluate(e,t,n={}){let a=n.batchSize==null?32:n.batchSize;Vb(a);let r=!0,s=this.standardizeUserDataXY(e,t,r,a);try{let i=s[0].concat(s[1]);this.makeTestFunction();let o=this.testFunction,l=this.testLoop(o,i,a,n.verbose,n.steps);return Nn(l)}finally{Wi(s[0],e),Wi(s[1],t)}}async evaluateDataset(e,t){return this.makeTestFunction(),VW(this,e,t)}checkNumSamples(e,t,n,a="steps"){let r;if(n!=null){if(r=null,t!=null)throw new B(`If ${a} is set, batchSize must be null or undefined.Got batchSize = ${t}`)}else if(e!=null)Array.isArray(e)?r=e[0].shape[0]:r=e.shape[0];else throw new B(`Either the input data should have a defined shape, or ${a} shoud be specified.`);return r}execute(e,t){if(Array.isArray(t)&&t.length===0)throw new B("`outputs` is an empty Array, which is not allowed.");let n=Array.isArray(t),a=n?t:[t],r=this.retrieveSymbolicTensors(a),s=new Bi;if(e instanceof z&&(e=[e]),Array.isArray(e)){if(e.length!==this.inputs.length)throw new B(`The number of inputs provided (${e.length}) does not match the number of inputs of this model (${this.inputs.length}).`);for(let o=0;oi.name);for(let i=0;i0){let a=[];throw t.forEach((r,s)=>{r==null&&a.push(e[s])}),new B(`Cannot find SymbolicTensors for output name(s): ${JSON.stringify(a)}`)}return t}predictLoop(e,t=32,n=!1){return D(()=>{let a=this.checkNumSamples(e);if(n)throw new $e("Verbose predictLoop() is not implemented yet.");let r=Gb(a,t),s=this.outputs.map(i=>[]);for(let i=0;i{let o=r[i][0],l=r[i][1],c=sp(e,o,l),u=[];if(Array.isArray(c))for(let d=0;ds[l].push(o));return Nn(s.map(i=>Ze(i,0)))})}predict(e,t={}){let n=fI(e);bI(n,this.inputNames,this.feedInputShapes,!1);try{let a=t.batchSize==null?32:t.batchSize;return Vb(a),this.predictLoop(n,a)}finally{Wi(n,e)}}predictOnBatch(e){bI(e,this.inputNames,this.feedInputShapes,!0);let t=(Array.isArray(e)?e[0]:e).shape[0];return this.predictLoop(e,t)}standardizeUserDataXY(e,t,n=!0,a){if(this.optimizer_==null)throw new Fa("You must compile a model before training/testing. Use LayersModel.compile(modelCompileArgs).");let r=[];for(let s=0;s0&&e[0].shape[0]%a!=0)throw new B(`In a stateful network, you should only pass inputs with a number of samples that is divisible by the batch size ${a}. Found: ${e[0].shape[0]} sample(s).`);return[e,t]}async standardizeUserData(e,t,n,a,r=!0,s){let[i,o]=this.standardizeUserDataXY(e,t,r,s);if(n!=null)throw new Error("sample weight is not supported yet.");let l=null;if(a!=null){let c=cI(a,this.outputNames);l=[];for(let u=0;u{let s=this.checkNumSamples(t,n,r,"steps"),i=[];if(a>0)throw new $e("Verbose mode is not implemented yet.");if(r!=null)throw new $e("steps mode in testLoop() is not implemented yet");{let o=Gb(s,n),l=et(Aa(0,s));for(let c=0;c1&&(r+=`_${x1(e.slice(0,n),a)}`),t.push(r)}return t}makeTrainFunction(){return e=>{let t=[],n=e.slice(0,this.inputs.length),a=e.slice(this.inputs.length,this.inputs.length+this.outputs.length),r=e.slice(this.inputs.length+this.outputs.length,this.inputs.length+this.outputs.length*2),s=[],i=()=>{let c=[];for(let h=0;h1&&h{d=Z(d,h)}),d},o=this.collectedTrainableWeights.map(c=>c.read()),l=!0;return[this.optimizer_.minimize(i,l,o)].concat(s)}}makeTestFunction(){this.testFunction=e=>D(()=>{let t=[],n,a=e.slice(0,this.inputs.length),r=e.slice(this.inputs.length,this.inputs.length+this.outputs.length),s=[];for(let l=0;lTr(t))}else{let t=Object.keys(this.loss);e={};let n=this.loss;for(let a of t)if(typeof n[a]=="string")e[a]=Tr(n[a]);else throw new Error("Serialization of non-string loss is not supported.")}return e}getMetricIdentifiers(){if(typeof this.metrics=="string"||typeof this.metrics=="function")return[Tr(hm(this.metrics))];if(Array.isArray(this.metrics))return this.metrics.map(e=>Tr(hm(e)));{let e={};for(let t in this.metrics)e[t]=Tr(hm(this.metrics[t]));return e}}getTrainingConfig(){return{loss:this.getLossIdentifiers(),metrics:this.getMetricIdentifiers(),optimizer_config:{class_name:this.optimizer.getClassName(),config:this.optimizer.getConfig()}}}loadTrainingConfig(e){if(e.weighted_metrics!=null)throw new Error("Loading weight_metrics is not supported yet.");if(e.loss_weights!=null)throw new Error("Loading loss_weights is not supported yet.");if(e.sample_weight_mode!=null)throw new Error("Loading sample_weight_mode is not supported yet.");let t=ap(e.optimizer_config),n=Da(t),a;if(typeof e.loss=="string")a=Ri(e.loss);else if(Array.isArray(e.loss))a=e.loss.map(s=>Ri(s));else if(e.loss!=null){a={};for(let s in e.loss)a[s]=Ri(e.loss[s])}let r;if(Array.isArray(e.metrics))r=e.metrics.map(s=>Ri(s));else if(e.metrics!=null){r={};for(let s in e.metrics)r[s]=Ri(e.metrics[s])}this.compile({loss:a,metrics:r,optimizer:n})}async save(e,t){if(typeof e=="string"){let i=Kt.getSaveHandlers(e);if(i.length===0)throw new B(`Cannot find any save handlers for URL '${e}'`);if(i.length>1)throw new B(`Found more than one (${i.length}) save handlers for URL '${e}'`);e=i[0]}if(e.save==null)throw new B("LayersModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");let n=await Kt.encodeWeights(this.getNamedWeights(t)),a=!1,r=null,s={modelTopology:this.toJSON(r,a),format:XW,generatedBy:`TensorFlow.js tfjs-layers v${fm}`,convertedBy:null};if((t==null?!1:t.includeOptimizer)&&this.optimizer!=null){s.trainingConfig=this.getTrainingConfig();let i="optimizer",{data:o,specs:l}=await Kt.encodeWeights(await this.optimizer.getWeights(),i);n.specs.push(...l),n.data=Kt.concatenateArrayBuffers([n.data,o])}if(this.userDefinedMetadata!=null){let i=!0;iI(this.userDefinedMetadata,this.name,i),s.userDefinedMetadata=this.userDefinedMetadata}return s.weightData=n.data,s.weightSpecs=n.specs,e.save(s)}setUserDefinedMetadata(e){iI(e,this.name),this.userDefinedMetadata=e}getUserDefinedMetadata(){return this.userDefinedMetadata}};Sr.className="Model";se.registerClass(Sr);var xI=class extends Sr{};xI.className="Functional";se.registerClass(xI);async function YW(e,t){"modelTopology"in e||(e={modelTopology:e}),e=e;let n=e.modelTopology;n.model_config!=null&&(n=n.model_config);let a=ap(n),r=Da(a,t);if(e.weightsManifest!=null){let s=await Kt.loadWeights(e.weightsManifest,e.pathPrefix,r.weights.map(o=>o.originalName)),i={};for(let o of r.weights)i[o.originalName]=s[o.originalName];r.loadWeights(i),Ae(s)}return r}async function ZW(e,t){if(t==null&&(t={}),typeof e=="string"){let n=Kt.getLoadHandlers(e,t);if(n.length===0)n.push(Kt.browserHTTPRequest(e,t));else if(n.length>1)throw new B(`Found more than one (${n.length}) load handlers for URL '${e}'`);e=n[0]}return JW(e,void 0,t)}async function JW(e,t,n){if(n==null&&(n={}),e.load==null)throw new B("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let a=await e.load(),r=a.modelTopology;r.model_config!=null&&(r=r.model_config);let s=n.strict==null?!0:n.strict,i=a.weightData!=null&&a.weightSpecs!=null&&s,o=Da(ap(r),t,i),l=a.trainingConfig;if(l!=null&&o.loadTrainingConfig(l),a.userDefinedMetadata!=null&&o.setUserDefinedMetadata(a.userDefinedMetadata),a.weightData!=null){if(a.weightSpecs==null)throw new B("LayersModel artifacts contains weight data, but not weight specs. Therefore loading of weights cannot proceed.");let{modelWeights:c,optimizerWeights:u}=QW(a.weightData,a.weightSpecs);o.loadWeights(c,s),o.optimizer!=null&&u.length>0&&await o.optimizer.setWeights(u),Ae(c),Ae(u.map(p=>p.tensor))}return o}function QW(e,t){let n=Kt.decodeWeights(e,t),a={},r=[];return t.forEach(s=>{s.group==="optimizer"?r.push({name:s.name,tensor:n[s.name]}):a[s.name]=n[s.name]}),{modelWeights:a,optimizerWeights:r}}var Zl=class extends Sr{constructor(e){super({inputs:[],outputs:[]});if(e=e||{},this.trainable=!0,this.built=!1,this.name=e.name!=null?e.name:am("sequential_"),e.layers!=null)for(let t of e.layers)this.add(t)}checkShape(e){if(e.inboundNodes[0].outputTensors[0].shape.some(t=>t<0))throw new B(`Negative dimension size caused by adding layer ${e.name} with input shape [${e.inboundNodes[0].inputTensors[0].shape}]`)}add(e){let t=e instanceof Zl||e instanceof Sr,n;if(t){if(n=e,n.outputs.length!==1)throw new B("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");if(n.inputs.length!==1)throw new B("All layers in a Sequential model should have a single input tensor. For multi-input layers, use the functional API.")}if(this.outputs.length===0){if(e.inboundNodes.length===0){if(e.batchInputShape==null)throw new B("The first layer in a Sequential model must get an `inputShape` or `batchInputShape` argument.");let a=j1({batchShape:e.batchInputShape,dtype:e.dtype,name:e.name+"_input"});e.apply(a)}if(t)this.outputs=n.outputs,this.inputs=n.inputs;else{if(e.inboundNodes.length!==1)throw new B(`A layer added to a Sequential model must not already be connected somewhere else. LayersModel received layer ${e.name} which has ${e.inboundNodes.length} pre-existing inbound connections.`);if(e.inboundNodes[0].outputTensors.length!==1)throw new B("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(e),this.outputs=[e.inboundNodes[0].outputTensors[0]],this.inputs=H1(this.outputs[0])}this.inboundNodes=[],new im({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:Mi(null,this.inputs.length),outputMasks:[null],inputShapes:this.inputs.map(a=>a.shape),outputShapes:this.outputs[0].shape})}else{let a=e.apply(this.outputs[0]);if(Array.isArray(a))throw new TypeError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(e),this.outputs=[a],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}this.layers.push(e),this.built=!1}pop(){if(this.layers.length===0)throw new TypeError("There are no layers in the model.");if(this.layers.pop(),this.layers.length===0)this.outputs=[],this.inboundNodes=[],this.outboundNodes=[];else{let e=this.layers.length-1;this.layers[e].outboundNodes=[],this.outputs=[this.layers[e].output],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}}call(e,t){return this.model==null&&this.build(),this.model.call(e,t)}build(e){if(dt(e),this.inputs.length===0||this.outputs.length===0)throw new TypeError("Sequential model cannot be built: model is empty. Add some layers first.");this.model=new Sr({inputs:this.inputs,outputs:this.outputs[0],name:this.name+"_model"}),this.model.trainable=this.trainable,this.supportsMasking=this.model.supportsMasking,this.inputLayers=this.model.inputLayers,this.inputLayersNodeIndices=this.model.inputLayersNodeIndices,this.inputLayersTensorIndices=this.model.inputLayersTensorIndices,this.outputLayers=this.model.outputLayers,this.outputLayersNodeIndices=this.model.outputLayersNodeIndices,this.outputLayersTensorIndices=this.model.outputLayersTensorIndices,this.nodesByDepth=this.model.nodesByDepth,this.containerNodes=this.model.containerNodes,this.outputNames=this.model.outputNames,this.inputNames=this.model.inputNames,this.built=!0}countParams(){return this.built||this.build(),super.countParams()}summary(e,t,n=console.log){this.built||this.build(),super.summary(e,t,n)}setWeights(e){this.model==null&&this.build(),this.model.setWeights(e)}evaluate(e,t,n={}){if(!this.built)throw new Fa("The model needs to be compiled before being used.");return this.model.evaluate(e,t,n)}async evaluateDataset(e,t){if(!this.built)throw new Fa("The model needs to be compiled before being used.");return this.model.evaluateDataset(e,t)}predict(e,t={}){return this.model==null&&this.build(),this.model.predict(e,t)}predictOnBatch(e){return this.model==null&&this.build(),this.model.predictOnBatch(e)}compile(e){this.build(),this.model.compile(e),this.optimizer_=this.model.optimizer,this.isOptimizerOwned=this.model.isOptimizerOwned,this.loss=this.model.loss,this.metrics=this.model.metrics,this.metricsTensors=this.model.metricsTensors,this.metricsNames=this.model.metricsNames}get optimizer(){return this.model==null?void 0:this.model.optimizer}set optimizer(e){this.model.optimizer=e}async fit(e,t,n={}){if(!this.built)throw new Fa("The model needs to be compiled before being used.");return this.model.fit(e,t,n)}async fitDataset(e,t){if(!this.built)throw new Fa("The model needs to be compiled before being used.");return this.model.fitDataset(e,t)}async trainOnBatch(e,t){return this.model.trainOnBatch(e,t)}static fromConfig(e,t,n={},a=!1){let r,s={};if(t instanceof Array){if(t[0].className==null||t[0].className==="Merge")throw new B("Legacy serialization format not supported yet.");r=t}else k.assert(t.layers!=null,()=>"When the config data for a Sequential model is not an Array, it must be an Object that contains the 'layers' field."),r=t.layers,delete t.layers,s=t;let i=new e(s);if(!(i instanceof Zl))throw new $e(`Sequential.fromConfig called on non-Sequential input: ${i}`);for(let o of r){let l=Da(o,void 0,a);a&&l.setFastWeightInitDuringBuild(!0),i.add(l)}return i}set stopTraining(e){if(this.model==null)throw new B("Cannot set the stopTraining property of a sequential model before it is compiled.");this.model.stopTraining=e}get stopTraining(){if(this.model==null)throw new B("Cannot get the stopTraining property of a sequential model before it is compiled.");return this.model.stopTraining}getConfig(){let e=[];for(let t of this.layers){let n={};n.className=t.getClassName(),n.config=t.getConfig(),e.push(n)}return{name:this.name,layers:e}}};Zl.className="Sequential";se.registerClass(Zl);function e4(e){return new Sr(e)}function t4(e){return new Zl(e)}function n4(e,t){return t==null&&(t={}),ZW(e,t)}function O1(e){return j1(e)}function a4(e,t){ma.registerCallbackConstructor(e,t)}var On=class extends se.Serializable{getConfig(){return{}}},vI=class extends On{apply(e,t=1){return Rz(e,t)}};vI.className="elu";se.registerClass(vI);var wI=class extends On{apply(e){return Ch(e)}};wI.className="selu";se.registerClass(wI);var kI=class extends On{apply(e){return Xe(e)}};kI.className="relu";se.registerClass(kI);var II=class extends On{apply(e){return D(()=>Fi(6,Xe(e)))}};II.className="relu6";se.registerClass(II);var NI=class extends On{apply(e){return e}};NI.className="linear";se.registerClass(NI);var TI=class extends On{apply(e){return ca(e)}};TI.className="sigmoid";se.registerClass(TI);var SI=class extends On{apply(e){return Oz(e)}};SI.className="hardSigmoid";se.registerClass(SI);var CI=class extends On{apply(e){return Bl(e)}};CI.className="softplus";se.registerClass(CI);var EI=class extends On{apply(e){return Pz(e)}};EI.className="softsign";se.registerClass(EI);var _I=class extends On{apply(e){return Ol(e)}};_I.className="tanh";se.registerClass(_I);var jb=class extends On{apply(e,t=-1){return Sa(e,t)}};jb.className="softmax";se.registerClass(jb);var FI=class extends On{apply(e,t=-1){return xh(e,t)}};FI.className="logSoftmax";se.registerClass(FI);var AI=class extends On{apply(e,t=1){return D(()=>ca(e.mul(t)).mul(e))}};AI.className="swish";se.registerClass(AI);function ls(e){return e.getClassName()}function qb(e,t={}){return Kc(e,se.SerializationMap.getMap().classNameMap,t,"activation")}function us(e){if(e==null){let t={};return t.className="linear",t.config={},qb(t)}if(typeof e=="string"){let t={};return t.className=e,t.config={},qb(t)}else return e instanceof On?e:qb(e)}function Kb(e){if(e!=null&&typeof e!="object")throw new Error(`Argument to L1L2 regularizer's constructor is expected to be an object, but received: ${e}`)}var $I=class extends se.Serializable{},ip=class extends $I{constructor(e){super();Kb(e),this.l1=e==null||e.l1==null?.01:e.l1,this.l2=e==null||e.l2==null?.01:e.l2,this.hasL1=this.l1!==0,this.hasL2=this.l2!==0}apply(e){return D(()=>{let t=yt([1]);return this.hasL1&&(t=Z(t,Ce(L(this.l1,Wt(e))))),this.hasL2&&(t=Z(t,Ce(L(this.l2,Qc(e))))),t.asScalar()})}getConfig(){return{l1:this.l1,l2:this.l2}}static fromConfig(e,t){return new e({l1:t.l1,l2:t.l2})}};ip.className="L1L2";se.registerClass(ip);function r4(e){return Kb(e),new ip({l1:e!=null?e.l1:null,l2:0})}function s4(e){return Kb(e),new ip({l2:e!=null?e.l2:null,l1:0})}var DI={l1l2:"L1L2"};function ht(e){return ub(e)}function MI(e,t={}){return Kc(e,se.SerializationMap.getMap().classNameMap,t,"regularizer")}function kt(e){if(e==null)return null;if(typeof e=="string"){let t={className:e in DI?DI[e]:e,config:{}};return MI(t)}else return e instanceof $I?e:MI(e)}var Xb=class extends qe{constructor(e){super(e==null?{}:e);this.supportsMasking=!0,e!=null&&(this.maxValue=e.maxValue)}call(e,t){e=Re(e);let n=Xe(e);return this.maxValue!=null&&(n=Yt(n,0,this.maxValue)),n}computeOutputShape(e){return e}getConfig(){let e={maxValue:this.maxValue},t=super.getConfig();return Object.assign(e,t),e}};Xb.className="ReLU";se.registerClass(Xb);var Yb=class extends qe{constructor(e){super(e==null?{}:e);this.DEFAULT_ALPHA=.3,e==null&&(e={}),this.alpha=e.alpha==null?this.DEFAULT_ALPHA:e.alpha}call(e,t){let n=Re(e);return Oc(n,this.alpha)}computeOutputShape(e){return e}getConfig(){let e={alpha:this.alpha},t=super.getConfig();return Object.assign(e,t),e}};Yb.className="LeakyReLU";se.registerClass(Yb);var Jb=class extends qe{constructor(e){super(e==null?{}:e);if(this.DEFAULT_ALPHA_INITIALIZER="zeros",e==null&&(e={}),this.supportsMasking=!0,this.alphaInitializer=wt(e.alphaInitializer||this.DEFAULT_ALPHA_INITIALIZER),this.alphaRegularizer=kt(e.alphaRegularizer),this.alphaConstraint=Ht(e.alphaConstraint),e.sharedAxes==null)this.sharedAxes=null;else if(Array.isArray(e.sharedAxes))this.sharedAxes=e.sharedAxes;else if(typeof e.sharedAxes=="number")this.sharedAxes=[e.sharedAxes];else throw new B(`Expected sharedAxes to be a number or an array of numbers, but got ${e.sharedAxes}`)}build(e){e=dt(e);let t=e.slice(1);if(this.sharedAxes!=null)for(let a of this.sharedAxes)t[a-1]=1;this.alpha=this.addWeight("alpha",t,"float32",this.alphaInitializer,this.alphaRegularizer,!0,this.alphaConstraint);let n={};if(this.sharedAxes!=null)for(let a=1;a(Rt(t),t==="channelsFirst"?Ue(e,[0,2,3,1]):e))}function RI(e,t){return D(()=>(Rt(t),t==="channelsFirst"?Ue(e,[0,2,3,4,1]):e))}function i4(e,t,n,a=1,r="valid",s,i=1){return D(()=>{if(s==null&&(s=_a()),Rt(s),e.shape.length!==3)throw new B(`The input of a conv1dWithBias operation should be 3, but is ${e.shape.length} instead.`);if(t.shape.length!==3)throw new B(`The kernel for a conv1dWithBias operation should be 3, but is ${t.shape.length} instead`);if(n!=null&&n.shape.length!==1)throw new B(`The bias for a conv1dWithBias operation should be 1, but is ${t.shape.length} instead`);if(s==="channelsFirst"&&(e=Ue(e,[0,2,1])),r==="causal")throw new $e("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");let o=dh(e,t,a,r==="same"?"same":"valid","NWC",i);return n!=null&&(o=er(o,n)),o})}function PI(e,t,n,a=[1,1],r="valid",s,i,o=null){return D(()=>{if(s==null&&(s=_a()),Rt(s),e.rank!==3&&e.rank!==4)throw new B(`conv2dWithBiasActivation expects input to be of rank 3 or 4, but received ${e.rank}.`);if(t.rank!==3&&t.rank!==4)throw new B(`conv2dWithBiasActivation expects kernel to be of rank 3 or 4, but received ${e.rank}.`);let l=tx(e,s);if(r==="causal")throw new $e("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");return l=as.conv2d({x:l,filter:t,strides:a,pad:r==="same"?"same":"valid",dilations:i,dataFormat:"NHWC",bias:n,activation:o}),s==="channelsFirst"&&(l=Ue(l,[0,3,1,2])),l})}function o4(e,t,n,a=[1,1,1],r="valid",s,i){return D(()=>{if(s==null&&(s=_a()),Rt(s),e.rank!==4&&e.rank!==5)throw new B(`conv3dWithBias expects input to be of rank 4 or 5, but received ${e.rank}.`);if(t.rank!==4&&t.rank!==5)throw new B(`conv3dWithBias expects kernel to be of rank 4 or 5, but received ${e.rank}.`);let o=RI(e,s);if(r==="causal")throw new $e("The support for CAUSAL padding mode in conv3dWithBias is not implemented yet.");return o=Dy(o,t,a,r==="same"?"same":"valid","NDHWC",i),n!=null&&(o=er(o,n)),s==="channelsFirst"&&(o=Ue(o,[0,4,1,2,3])),o})}var nx=class extends qe{constructor(e,t){super(t);if(this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",nx.verifyArgs(t),this.rank=e,Jt(this.rank,"rank"),this.rank!==1&&this.rank!==2&&this.rank!==3)throw new $e(`Convolution layer for rank other than 1, 2, or 3 (${this.rank}) is not implemented yet.`);if(this.kernelSize=Ql(t.kernelSize,e,"kernelSize"),this.strides=Ql(t.strides==null?1:t.strides,e,"strides"),this.padding=t.padding==null?"valid":t.padding,na(this.padding),this.dataFormat=t.dataFormat==null?"channelsLast":t.dataFormat,Rt(this.dataFormat),this.activation=us(t.activation),this.useBias=t.useBias==null?!0:t.useBias,this.biasInitializer=wt(t.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.biasConstraint=Ht(t.biasConstraint),this.biasRegularizer=kt(t.biasRegularizer),this.activityRegularizer=kt(t.activityRegularizer),this.dilationRate=Ql(t.dilationRate==null?1:t.dilationRate,e,"dilationRate"),this.rank===1&&Array.isArray(this.dilationRate)&&this.dilationRate.length!==1)throw new B(`dilationRate must be a number or an array of a single number for 1D convolution, but received ${JSON.stringify(this.dilationRate)}`);if(this.rank===2){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==2)throw new B(`dilationRate must be a number or array of two numbers for 2D convolution, but received ${JSON.stringify(this.dilationRate)}`)}else if(this.rank===3){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==3)throw new B(`dilationRate must be a number or array of three numbers for 3D convolution, but received ${JSON.stringify(this.dilationRate)}`)}}static verifyArgs(e){if(Za("kernelSize"in e,"required key 'kernelSize' not in config"),typeof e.kernelSize!="number"&&!pb(e.kernelSize,"number",1,3))throw new B(`BaseConv expects config.kernelSize to be number or number[] with length 1, 2, or 3, but received ${JSON.stringify(e.kernelSize)}.`)}getConfig(){let e={kernelSize:this.kernelSize,strides:this.strides,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,activation:ls(this.activation),useBias:this.useBias,biasInitializer:Et(this.biasInitializer),biasRegularizer:ht(this.biasRegularizer),activityRegularizer:ht(this.activityRegularizer),biasConstraint:Gt(this.biasConstraint)},t=super.getConfig();return Object.assign(e,t),e}},op=class extends nx{constructor(e,t){super(e,t);this.kernel=null,op.verifyArgs(t),this.filters=t.filters,Jt(this.filters,"filters"),this.kernelInitializer=wt(t.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.kernelConstraint=Ht(t.kernelConstraint),this.kernelRegularizer=kt(t.kernelRegularizer)}build(e){e=dt(e);let t=this.dataFormat==="channelsFirst"?1:e.length-1;if(e[t]==null)throw new B(`The channel dimension of the input should be defined. Found ${e[t]}`);let n=e[t],a=this.kernelSize.concat([n,this.filters]);this.kernel=this.addWeight("kernel",a,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[{ndim:this.rank+2,axes:{[t]:n}}],this.built=!0}call(e,t){return D(()=>{e=Re(e);let n,a=this.bias==null?null:this.bias.read(),r=w1(this.activation.getClassName());if(r!=null&&this.rank===2)n=PI(e,this.kernel.read(),a,this.strides,this.padding,this.dataFormat,this.dilationRate,r);else{if(this.rank===1)n=i4(e,this.kernel.read(),a,this.strides[0],this.padding,this.dataFormat,this.dilationRate[0]);else if(this.rank===2)n=PI(e,this.kernel.read(),a,this.strides,this.padding,this.dataFormat,this.dilationRate);else if(this.rank===3)n=o4(e,this.kernel.read(),a,this.strides,this.padding,this.dataFormat,this.dilationRate);else throw new $e("convolutions greater than 3D are not implemented yet.");this.activation!=null&&(n=this.activation.apply(n))}return n})}computeOutputShape(e){e=dt(e);let t=[],n=this.dataFormat==="channelsLast"?e.slice(1,e.length-1):e.slice(2);for(let r=0;r 0 but got ${JSON.stringify(e.filters)}`)}},lp=class extends op{constructor(e){super(2,e);lp.verifyArgs(e)}getConfig(){let e=super.getConfig();return delete e.rank,e}static verifyArgs(e){if(typeof e.kernelSize!="number"&&!pb(e.kernelSize,"number",1,2))throw new B(`Conv2D expects config.kernelSize to be number or number[] with length 1 or 2, but received ${JSON.stringify(e.kernelSize)}.`)}};lp.className="Conv2D";se.registerClass(lp);var ym=class extends op{constructor(e){super(3,e);ym.verifyArgs(e)}getConfig(){let e=super.getConfig();return delete e.rank,e}static verifyArgs(e){if(typeof e.kernelSize!="number"&&!(Array.isArray(e.kernelSize)&&(e.kernelSize.length===1||e.kernelSize.length===3)))throw new B(`Conv3D expects config.kernelSize to be number or [number, number, number], but received ${JSON.stringify(e.kernelSize)}.`)}};ym.className="Conv3D";se.registerClass(ym);var ax=class extends lp{constructor(e){super(e);if(this.inputSpec=[new Zt({ndim:4})],this.padding!=="same"&&this.padding!=="valid")throw new B(`Conv2DTranspose currently supports only padding modes 'same' and 'valid', but received padding mode ${this.padding}`)}build(e){if(e=dt(e),e.length!==4)throw new B("Input should have rank 4; Received input shape: "+JSON.stringify(e));let t=this.dataFormat==="channelsFirst"?1:e.length-1;if(e[t]==null)throw new B("The channel dimension of the inputs should be defined. Found `None`.");let n=e[t],a=this.kernelSize.concat([this.filters,n]);this.kernel=this.addWeight("kernel",a,"float32",this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],"float32",this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[new Zt({ndim:4,axes:{[t]:n}})],this.built=!0}call(e,t){return D(()=>{let n=Re(e);if(n.shape.length!==4)throw new B(`Conv2DTranspose.call() expects input tensor to be rank-4, but received a tensor of rank-${n.shape.length}`);let a=n.shape,r=a[0],s,i;this.dataFormat==="channelsFirst"?(s=2,i=3):(s=1,i=2);let o=a[s],l=a[i],c=this.kernelSize[0],u=this.kernelSize[1],p=this.strides[0],d=this.strides[1],h=gm(o,p,c,this.padding),m=gm(l,d,u,this.padding),f=[r,h,m,this.filters];this.dataFormat!=="channelsLast"&&(n=Ue(n,[0,2,3,1]));let g=hh(n,this.kernel.read(),f,this.strides,this.padding);return this.dataFormat!=="channelsLast"&&(g=Ue(g,[0,3,1,2])),this.bias!=null&&(g=er(g,this.bias.read(),this.dataFormat)),this.activation!=null&&(g=this.activation.apply(g)),g})}computeOutputShape(e){e=dt(e);let t=e.slice(),n,a,r;this.dataFormat==="channelsFirst"?(n=1,a=2,r=3):(n=3,a=1,r=2);let s=this.kernelSize[0],i=this.kernelSize[1],o=this.strides[0],l=this.strides[1];return t[n]=this.filters,t[a]=gm(t[a],o,s,this.padding),t[r]=gm(t[r],l,i,this.padding),t}getConfig(){let e=super.getConfig();return delete e.dilationRate,e}};ax.className="Conv2DTranspose";se.registerClass(ax);var OI=class extends op{constructor(e,t){super(e,t);if(this.DEFAULT_DEPTHWISE_INITIALIZER="glorotUniform",this.DEFAULT_POINTWISE_INITIALIZER="glorotUniform",this.depthwiseKernel=null,this.pointwiseKernel=null,t.filters==null)throw new B("The `filters` configuration field is required by SeparableConv, but is unspecified.");if(t.kernelInitializer!=null||t.kernelRegularizer!=null||t.kernelConstraint!=null)throw new B("Fields kernelInitializer, kernelRegularizer and kernelConstraint are invalid for SeparableConv2D. Use depthwiseInitializer, depthwiseRegularizer, depthwiseConstraint, pointwiseInitializer, pointwiseRegularizer and pointwiseConstraint instead.");if(t.padding!=null&&t.padding!=="same"&&t.padding!=="valid")throw new B(`SeparableConv${this.rank}D supports only padding modes: 'same' and 'valid', but received ${JSON.stringify(t.padding)}`);this.depthMultiplier=t.depthMultiplier==null?1:t.depthMultiplier,this.depthwiseInitializer=wt(t.depthwiseInitializer||this.DEFAULT_DEPTHWISE_INITIALIZER),this.depthwiseRegularizer=kt(t.depthwiseRegularizer),this.depthwiseConstraint=Ht(t.depthwiseConstraint),this.pointwiseInitializer=wt(t.depthwiseInitializer||this.DEFAULT_POINTWISE_INITIALIZER),this.pointwiseRegularizer=kt(t.pointwiseRegularizer),this.pointwiseConstraint=Ht(t.pointwiseConstraint)}build(e){if(e=dt(e),e.length{e=Re(e);let n;if(this.rank===1)throw new $e("1D separable convolution is not implemented yet.");return this.rank===2&&(this.dataFormat==="channelsFirst"&&(e=Ue(e,[0,2,3,1])),n=Ai(e,this.depthwiseKernel.read(),this.pointwiseKernel.read(),this.strides,this.padding,this.dilationRate,"NHWC")),this.useBias&&(n=er(n,this.bias.read(),this.dataFormat)),this.activation!=null&&(n=this.activation.apply(n)),this.dataFormat==="channelsFirst"&&(n=Ue(n,[0,3,1,2])),n})}getConfig(){let e=super.getConfig();return delete e.rank,delete e.kernelInitializer,delete e.kernelRegularizer,delete e.kernelConstraint,e.depthwiseInitializer=Et(this.depthwiseInitializer),e.pointwiseInitializer=Et(this.pointwiseInitializer),e.depthwiseRegularizer=ht(this.depthwiseRegularizer),e.pointwiseRegularizer=ht(this.pointwiseRegularizer),e.depthwiseConstraint=Gt(this.depthwiseConstraint),e.pointwiseConstraint=Gt(this.pointwiseConstraint),e}};OI.className="SeparableConv";var rx=class extends OI{constructor(e){super(2,e)}};rx.className="SeparableConv2D";se.registerClass(rx);var bm=class extends op{constructor(e){super(1,e);bm.verifyArgs(e),this.inputSpec=[{ndim:3}]}getConfig(){let e=super.getConfig();return delete e.rank,delete e.dataFormat,e}static verifyArgs(e){if(typeof e.kernelSize!="number"&&!pb(e.kernelSize,"number",1,1))throw new B(`Conv1D expects config.kernelSize to be number or number[] with length 1, but received ${JSON.stringify(e.kernelSize)}.`)}};bm.className="Conv1D";se.registerClass(bm);var sx=class extends qe{constructor(e){super(e);typeof e.cropping=="number"?this.cropping=[[e.cropping,e.cropping],[e.cropping,e.cropping]]:typeof e.cropping[0]=="number"?this.cropping=[[e.cropping[0],e.cropping[0]],[e.cropping[1],e.cropping[1]]]:this.cropping=e.cropping,this.dataFormat=e.dataFormat===void 0?"channelsLast":e.dataFormat,this.inputSpec=[{ndim:4}]}computeOutputShape(e){return this.dataFormat==="channelsFirst"?[e[0],e[1],e[2]-this.cropping[0][0]-this.cropping[0][1],e[3]-this.cropping[1][0]-this.cropping[1][1]]:[e[0],e[1]-this.cropping[0][0]-this.cropping[0][1],e[2]-this.cropping[1][0]-this.cropping[1][1],e[3]]}call(e,t){return D(()=>{if(e=Re(e),this.dataFormat==="channelsLast"){let n=qh(e,this.cropping[0][0],e.shape[1]-this.cropping[0][0]-this.cropping[0][1],2);return qh(n,this.cropping[1][0],e.shape[2]-this.cropping[1][1]-this.cropping[1][0],3)}else{let n=qh(e,this.cropping[0][0],e.shape[2]-this.cropping[0][0]-this.cropping[0][1],3);return qh(n,this.cropping[1][0],e.shape[3]-this.cropping[1][1]-this.cropping[1][0],4)}})}getConfig(){let e={cropping:this.cropping,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}};sx.className="Cropping2D";se.registerClass(sx);var ix=class extends qe{constructor(e){super(e);this.DEFAULT_SIZE=[2,2],this.inputSpec=[{ndim:4}],this.size=e.size==null?this.DEFAULT_SIZE:e.size,this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Rt(this.dataFormat),this.interpolation=e.interpolation==null?"nearest":e.interpolation,Ez(this.interpolation)}computeOutputShape(e){if(this.dataFormat==="channelsFirst"){let t=e[2]==null?null:this.size[0]*e[2],n=e[3]==null?null:this.size[1]*e[3];return[e[0],e[1],t,n]}else{let t=e[1]==null?null:this.size[0]*e[1],n=e[2]==null?null:this.size[1]*e[2];return[e[0],t,n,e[3]]}}call(e,t){return D(()=>{let n=Re(e),a=n.shape;if(this.dataFormat==="channelsFirst"){n=Ue(n,[0,2,3,1]);let r=this.size[0]*a[2],s=this.size[1]*a[3],i=this.interpolation==="nearest"?n.resizeNearestNeighbor([r,s]):n.resizeBilinear([r,s]);return Ue(i,[0,3,1,2])}else{let r=this.size[0]*a[1],s=this.size[1]*a[2];return this.interpolation==="nearest"?n.resizeNearestNeighbor([r,s]):n.resizeBilinear([r,s])}})}getConfig(){let e={size:this.size,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}};ix.className="UpSampling2D";se.registerClass(ix);function l4(e,t,n=[1,1],a="valid",r,s){return D(()=>{r==null&&(r=_a()),Rt(r);let i=tx(e,r);if(e.rank!==4)throw new B(`Input for depthwiseConv2d is required to be 4-D, but is instead ${e.rank}-D`);if(t.rank!==4)throw new B(`depthwiseKernel is required to be 4-D, but is instead ${t.rank}-D`);return i=xr(i,t,n,a==="same"?"same":"valid","NHWC",s),r==="channelsFirst"&&(i=Ue(i,[0,3,1,2])),i})}var ox=class extends nx{constructor(e){super(2,e);this.depthwiseKernel=null,this.depthMultiplier=e.depthMultiplier==null?1:e.depthMultiplier,this.depthwiseInitializer=wt(e.depthwiseInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.depthwiseConstraint=Ht(e.depthwiseConstraint),this.depthwiseRegularizer=kt(e.depthwiseRegularizer)}build(e){if(e=dt(e),e.length<4)throw new B(`Inputs to DepthwiseConv2D should have rank 4. Received input shape: ${JSON.stringify(e)}.`);let t=this.dataFormat==="channelsFirst"?1:3;if(e[t]==null||e[t]<0)throw new B(`The channel dimension of the inputs to DepthwiseConv2D should be defined, but is not (${e[t]}).`);let n=e[t],a=[this.kernelSize[0],this.kernelSize[1],n,this.depthMultiplier];this.depthwiseKernel=this.addWeight("depthwise_kernel",a,null,this.depthwiseInitializer,this.depthwiseRegularizer,!0,this.depthwiseConstraint),this.useBias?this.bias=this.addWeight("bias",[n*this.depthMultiplier],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(e,t){return D(()=>{e=Re(e);let n=l4(e,this.depthwiseKernel.read(),this.strides,this.padding,this.dataFormat,null);return this.useBias&&(n=er(n,this.bias.read(),this.dataFormat)),this.activation!=null&&(n=this.activation.apply(n)),n})}computeOutputShape(e){e=dt(e);let t=this.dataFormat==="channelsFirst"?e[2]:e[1],n=this.dataFormat==="channelsFirst"?e[3]:e[2],a=this.dataFormat==="channelsFirst"?e[1]*this.depthMultiplier:e[3]*this.depthMultiplier,r=Ma(t,this.kernelSize[0],this.padding,this.strides[0]),s=Ma(n,this.kernelSize[1],this.padding,this.strides[1]);return this.dataFormat==="channelsFirst"?[e[0],a,r,s]:[e[0],r,s,a]}getConfig(){let e=super.getConfig();return e.depthMultiplier=this.depthMultiplier,e.depthwiseInitializer=Et(this.depthwiseInitializer),e.depthwiseRegularizer=ht(this.depthwiseRegularizer),e.depthwiseConstraint=Gt(this.depthwiseRegularizer),e}};ox.className="DepthwiseConv2D";se.registerClass(ox);function LI(e,t,n,a){if(Array.isArray(e)){if(t!=null||n!=null)throw new B("When inputs is an array, neither initialState or constants should be provided");a!=null&&(n=e.slice(e.length-a,e.length),e=e.slice(0,e.length-a)),e.length>1&&(t=e.slice(1,e.length)),e=e[0]}function r(s){return s==null||Array.isArray(s)?s:[s]}return t=r(t),n=r(n),{inputs:e,initialState:t,constants:n}}function zI(e,t,n,a=!1,r,s,i=!1,o=!1){return D(()=>{let l=t.shape.length;if(l<3)throw new B(`Input should be at least 3D, but is ${l}D.`);let c=[1,0].concat(Aa(2,l));if(t=Ue(t,c),s!=null)throw new $e("The rnn() functoin of the deeplearn.js backend does not support constants yet.");i&&console.warn("Backend rnn(): the unroll = true option is not applicable to the imperative deeplearn.js backend."),r!=null&&(r=r.asType("bool").asType("float32"),r.rank===l-1&&(r=Zn(r,-1)),r=Ue(r,c)),a&&(t=Rn(t,0),r!=null&&(r=Rn(r,0)));let u=[],p,d=n,h=t.shape[0],m=pt(t),f;r!=null&&(f=pt(r));for(let y=0;ye(b,d));if(r==null)p=x[0],d=x[1];else{let v=D(()=>{let N=f[y],T=Mn(N).sub(N),E=x[0].mul(N).add(d[0].mul(T)),A=d.map(($,O)=>x[1][O].mul(N).add($.mul(T)));return{output:E,newStates:A}});p=v.output,d=v.newStates}o&&u.push(p)}let g;return o&&(g=Mt(u,1)),[p,g,d]})}var tr=class extends qe{constructor(e){super(e);let t;if(e.cell==null)throw new B("cell property is missing for the constructor of RNN.");if(Array.isArray(e.cell)?t=new xm({cells:e.cell}):t=e.cell,t.stateSize==null)throw new B("The RNN cell should have an attribute `stateSize` (tuple of integers, one integer per RNN state).");this.cell=t,this.returnSequences=e.returnSequences==null?!1:e.returnSequences,this.returnState=e.returnState==null?!1:e.returnState,this.goBackwards=e.goBackwards==null?!1:e.goBackwards,this._stateful=e.stateful==null?!1:e.stateful,this.unroll=e.unroll==null?!1:e.unroll,this.supportsMasking=!0,this.inputSpec=[new Zt({ndim:3})],this.stateSpec=null,this.states_=null,this.numConstants=null,this.keptStates=[]}getStates(){if(this.states_==null){let e=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;return Aa(0,e).map(t=>null)}else return this.states_}setStates(e){this.states_=e}computeOutputShape(e){Ab(e)&&(e=e[0]),e=e;let t=this.cell.stateSize;Array.isArray(t)||(t=[t]);let n=t[0],a;if(this.returnSequences?a=[e[0],e[1],n]:a=[e[0],n],this.returnState){let r=[];for(let s of t)r.push([e[0],s]);return[a].concat(r)}else return a}computeMask(e,t){return D(()=>{Array.isArray(t)&&(t=t[0]);let n=this.returnSequences?t:null;if(this.returnState){let a=this.states.map(r=>null);return[n].concat(a)}else return n})}get states(){if(this.states_==null){let e=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1,t=[];for(let n=0;ni.shape[i.shape.length-1]),s))throw new B(`An initialState was passed that is not compatible with cell.stateSize. Received stateSpec=${this.stateSpec}; However cell.stateSize is ${this.cell.stateSize}`)}else this.stateSpec=s.map(i=>new Zt({shape:[null,i]}));this.stateful&&this.resetStates()}resetStates(e,t=!1){D(()=>{if(!this.stateful)throw new Nr("Cannot call resetStates() on an RNN Layer that is not stateful.");let n=this.inputSpec[0].shape[0];if(n==null)throw new B("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.states_==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(a=>yt([n,a])):this.states_=[yt([n,this.cell.stateSize])];else if(e==null)Ae(this.states_),this.keptStates!=null&&(Ae(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(a=>yt([n,a])):this.states_[0]=yt([n,this.cell.stateSize]);else{if(Array.isArray(e)||(e=[e]),e.length!==this.states_.length)throw new B(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${e.length} state value(s). Input received: ${e}`);t===!0?this.keptStates.push(this.states_.slice()):Ae(this.states_);for(let a=0;aXt(a.clone()))})}apply(e,t){let n=t==null?null:t.initialState,a=t==null?null:t.constants;t==null&&(t={});let r=LI(e,n,a,this.numConstants);e=r.inputs,n=r.initialState,a=r.constants;let s=[],i=[];if(n!=null){t.initialState=n,s=s.concat(n),this.stateSpec=[];for(let o of n)this.stateSpec.push(new Zt({shape:o.shape}));i=i.concat(this.stateSpec)}if(a!=null&&(t.constants=a,s=s.concat(a),this.numConstants=a.length),s[0]instanceof $a){let o=[e].concat(s),l=this.inputSpec.concat(i),c=this.inputSpec;this.inputSpec=l;let u=super.apply(o,t);return this.inputSpec=c,u}else return super.apply(e,t)}call(e,t){return D(()=>{let n=t==null?null:t.mask,a=t==null?null:t.training,r=t==null?null:t.initialState;e=Re(e),r==null&&(this.stateful?r=this.states_:r=this.getInitialState(e));let s=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;if(r.length!==s)throw new B(`RNN Layer has ${s} state(s) but was passed ${r.length} initial state(s).`);this.unroll&&console.warn("Ignoring unroll = true for RNN layer, due to imperative backend.");let i={training:a},o=zI((d,h)=>{let m=this.cell.call([d].concat(h),i);return[m[0],m.slice(1)]},e,r,this.goBackwards,n,null,this.unroll,this.returnSequences),l=o[0],c=o[1],u=o[2];this.stateful&&this.resetStates(u,a);let p=this.returnSequences?c:l;return this.returnState?[p].concat(u):p})}getInitialState(e){return D(()=>{let t=yt(e.shape);return t=Ce(t,[1,2]),t=Zc(t),Array.isArray(this.cell.stateSize)?this.cell.stateSize.map(n=>n>1?yb(t,[1,n]):t):this.cell.stateSize>1?[yb(t,[1,this.cell.stateSize])]:[t]})}get trainableWeights(){return this.trainable?this.cell.trainableWeights:[]}get nonTrainableWeights(){return this.trainable?this.cell.nonTrainableWeights:this.cell.weights}setFastWeightInitDuringBuild(e){super.setFastWeightInitDuringBuild(e),this.cell!=null&&this.cell.setFastWeightInitDuringBuild(e)}getConfig(){let e=super.getConfig(),t={returnSequences:this.returnSequences,returnState:this.returnState,goBackwards:this.goBackwards,stateful:this.stateful,unroll:this.unroll};this.numConstants!=null&&(t.numConstants=this.numConstants);let n=this.cell.getConfig();return this.getClassName()===tr.className&&(t.cell={className:this.cell.getClassName(),config:n}),Object.assign({},n,e,t)}static fromConfig(e,t,n={}){let a=t.cell,r=Da(a,n);return new e(Object.assign(t,{cell:r}))}};tr.className="RNN";se.registerClass(tr);var tp=class extends qe{},vm=class extends tp{constructor(e){super(e);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=e.units,Jt(this.units,"units"),this.activation=us(e.activation==null?this.DEFAULT_ACTIVATION:e.activation),this.useBias=e.useBias==null?!0:e.useBias,this.kernelInitializer=wt(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=wt(e.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=wt(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=kt(e.kernelRegularizer),this.recurrentRegularizer=kt(e.recurrentRegularizer),this.biasRegularizer=kt(e.biasRegularizer),this.kernelConstraint=Ht(e.kernelConstraint),this.recurrentConstraint=Ht(e.recurrentConstraint),this.biasConstraint=Ht(e.biasConstraint),this.dropout=Kl([1,is([0,e.dropout==null?0:e.dropout])]),this.recurrentDropout=Kl([1,is([0,e.recurrentDropout==null?0:e.recurrentDropout])]),this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(e){e=dt(e),this.kernel=this.addWeight("kernel",[e[e.length-1],this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(e,t){return D(()=>{if(e=e,e.length!==2)throw new B(`SimpleRNNCell expects 2 input Tensors, got ${e.length}.`);let n=e[1];e=e[0];let a=t.training==null?!1:t.training;0Mn(e),rate:this.dropout,training:a})),0Mn(n),rate:this.recurrentDropout,training:a}));let r,s=this.dropoutMask,i=this.recurrentDropoutMask;s!=null?r=Qa(L(e,s),this.kernel.read()):r=Qa(e,this.kernel.read()),this.bias!=null&&(r=er(r,this.bias.read())),i!=null&&(n=L(n,i));let o=Z(r,Qa(n,this.recurrentKernel.read()));return this.activation!=null&&(o=this.activation.apply(o)),[o,o]})}getConfig(){let e=super.getConfig(),t={units:this.units,activation:ls(this.activation),useBias:this.useBias,kernelInitializer:Et(this.kernelInitializer),recurrentInitializer:Et(this.recurrentInitializer),biasInitializer:Et(this.biasInitializer),kernelRegularizer:ht(this.kernelRegularizer),recurrentRegularizer:ht(this.recurrentRegularizer),biasRegularizer:ht(this.biasRegularizer),activityRegularizer:ht(this.activityRegularizer),kernelConstraint:Gt(this.kernelConstraint),recurrentConstraint:Gt(this.recurrentConstraint),biasConstraint:Gt(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout};return Object.assign({},e,t)}};vm.className="SimpleRNNCell";se.registerClass(vm);var lx=class extends tr{constructor(e){e.cell=new vm(e),super(e)}call(e,t){return D(()=>{this.cell.dropoutMask!=null&&(Ae(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Ae(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let n=t==null?null:t.mask,a=t==null?null:t.training,r=t==null?null:t.initialState;return super.call(e,{mask:n,training:a,initialState:r})})}static fromConfig(e,t){return new e(t)}};lx.className="SimpleRNN";se.registerClass(lx);var wm=class extends tp{constructor(e){super(e);if(this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",e.resetAfter)throw new B("GRUCell does not support reset_after parameter set to true.");this.units=e.units,Jt(this.units,"units"),this.activation=us(e.activation===void 0?this.DEFAULT_ACTIVATION:e.activation),this.recurrentActivation=us(e.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:e.recurrentActivation),this.useBias=e.useBias==null?!0:e.useBias,this.kernelInitializer=wt(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=wt(e.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=wt(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=kt(e.kernelRegularizer),this.recurrentRegularizer=kt(e.recurrentRegularizer),this.biasRegularizer=kt(e.biasRegularizer),this.kernelConstraint=Ht(e.kernelConstraint),this.recurrentConstraint=Ht(e.recurrentConstraint),this.biasConstraint=Ht(e.biasConstraint),this.dropout=Kl([1,is([0,e.dropout==null?0:e.dropout])]),this.recurrentDropout=Kl([1,is([0,e.recurrentDropout==null?0:e.recurrentDropout])]),this.implementation=e.implementation,this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(e){e=dt(e);let t=e[e.length-1];this.kernel=this.addWeight("kernel",[t,this.units*3],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*3],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units*3],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(e,t){return D(()=>{if(e=e,e.length!==2)throw new B(`GRUCell expects 2 input Tensors (inputs, h, c), got ${e.length}.`);let n=t.training==null?!1:t.training,a=e[1];e=e[0],0Mn(e),rate:this.dropout,training:n,count:3})),0Mn(a),rate:this.recurrentDropout,training:n,count:3}));let r=this.dropoutMask,s=this.recurrentDropoutMask,i,o,l;0{this.cell.dropoutMask!=null&&(Ae(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Ae(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let n=t==null?null:t.mask,a=t==null?null:t.training,r=t==null?null:t.initialState;return super.call(e,{mask:n,training:a,initialState:r})})}static fromConfig(e,t){return t.implmentation===0&&(t.implementation=1),new e(t)}};ux.className="GRU";se.registerClass(ux);var up=class extends tp{constructor(e){super(e);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=e.units,Jt(this.units,"units"),this.activation=us(e.activation===void 0?this.DEFAULT_ACTIVATION:e.activation),this.recurrentActivation=us(e.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:e.recurrentActivation),this.useBias=e.useBias==null?!0:e.useBias,this.kernelInitializer=wt(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=wt(e.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=wt(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.unitForgetBias=e.unitForgetBias,this.kernelRegularizer=kt(e.kernelRegularizer),this.recurrentRegularizer=kt(e.recurrentRegularizer),this.biasRegularizer=kt(e.biasRegularizer),this.kernelConstraint=Ht(e.kernelConstraint),this.recurrentConstraint=Ht(e.recurrentConstraint),this.biasConstraint=Ht(e.biasConstraint),this.dropout=Kl([1,is([0,e.dropout==null?0:e.dropout])]),this.recurrentDropout=Kl([1,is([0,e.recurrentDropout==null?0:e.recurrentDropout])]),this.implementation=e.implementation,this.stateSize=[this.units,this.units],this.dropoutMask=null,this.recurrentDropoutMask=null}build(e){var t;e=dt(e);let n=e[e.length-1];this.kernel=this.addWeight("kernel",[n,this.units*4],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*4],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint);let a;if(this.useBias){if(this.unitForgetBias){let r=this.biasInitializer,s=this.units;a=new(t=class extends ha{apply(i,o){let l=r.apply([s]),c=new Xh().apply([s]),u=r.apply([s*2]);return A1(A1(l,c),u)}},t.className="CustomInit",t)}else a=this.biasInitializer;this.bias=this.addWeight("bias",[this.units*4],null,a,this.biasRegularizer,!0,this.biasConstraint)}else this.bias=null;this.built=!0}call(e,t){return D(()=>{let n=t.training==null?!1:t.training;if(e=e,e.length!==3)throw new B(`LSTMCell expects 3 input Tensors (inputs, h, c), got ${e.length}.`);let a=e[1],r=e[2];e=e[0],0Mn(e),rate:this.dropout,training:n,count:4})),0Mn(a),rate:this.recurrentDropout,training:n,count:4}));let s=this.dropoutMask,i=this.recurrentDropoutMask,o,l,c,u;0{this.cell.dropoutMask!=null&&(Ae(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Ae(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let n=t==null?null:t.mask,a=t==null?null:t.training,r=t==null?null:t.initialState;return super.call(e,{mask:n,training:a,initialState:r})})}static fromConfig(e,t){return t.implmentation===0&&(t.implementation=1),new e(t)}};cx.className="LSTM";se.registerClass(cx);var xm=class extends tp{constructor(e){super(e);this.cells=e.cells}get stateSize(){let e=[];for(let t of this.cells.slice().reverse())Array.isArray(t.stateSize)?e.push(...t.stateSize):e.push(t.stateSize);return e}call(e,t){return D(()=>{e=e;let n=e.slice(1),a=[];for(let i of this.cells.slice().reverse())Array.isArray(i.stateSize)?a.push(n.splice(0,i.stateSize.length)):a.push(n.splice(0,1));a.reverse();let r=[],s;for(let i=0;i{Oi(`RNNCell_${a}`,()=>{n.build(e),Array.isArray(n.stateSize)?t=n.stateSize[0]:t=n.stateSize,e=[e[0],t]})}),this.built=!0}getConfig(){let e=super.getConfig(),t=a=>({className:a.getClassName(),config:a.getConfig()}),n={cells:this.cells.map(t)};return Object.assign({},e,n)}static fromConfig(e,t,n={}){let a=[];for(let r of t.cells)a.push(Da(r,n));return new e({cells:a})}get trainableWeights(){if(!this.trainable)return[];let e=[];for(let t of this.cells)e.push(...t.trainableWeights);return e}get nonTrainableWeights(){let e=[];for(let t of this.cells)e.push(...t.nonTrainableWeights);if(!this.trainable){let t=[];for(let n of this.cells)t.push(...n.trainableWeights);return t.concat(e)}return e}getWeights(){let e=[];for(let t of this.cells)e.push(...t.weights);return $b(e)}setWeights(e){let t=[];for(let n of this.cells){let a=n.weights.length,r=e.splice(a);for(let s=0;sD1(t(),n),i=()=>ep(s,t,a);return!r||r<=1?Xt(i().clone()):Array(r).fill(void 0).map(i).map(o=>Xt(o.clone()))}var u4=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,a=Object.getOwnPropertySymbols(e);r{if(this.cell.dropoutMask!=null&&(Ae(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Ae(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null),t&&t.constants)throw new B("ConvRNN2D cell does not support constants");let n=t==null?null:t.mask,a=t==null?null:t.training,r=t==null?null:t.initialState;return super.call(e,{mask:n,training:a,initialState:r})})}computeOutputShape(e){let t=this.computeSingleOutputShape(e);return this.returnSequences||(t=[t[0],...t.slice(2)]),this.returnState&&(t=[t,...Array(2).fill([e[0],...t.slice(-3)])]),t}getInitialState(e){return D(()=>{let{stateSize:t}=this.cell,n=e.shape,a=this.computeSingleOutputShape(n),r=[a[0],...a.slice(2)],s=yt(r);return Array.isArray(t)?Array(t.length).fill(s):[s]})}resetStates(e,t=!1){D(()=>{if(!this.stateful)throw new Nr("Cannot call resetStates() on an RNN Layer that is not stateful.");let n=this.inputSpec[0].shape,a=this.computeSingleOutputShape(n),r=[a[0],...a.slice(2)];if(n[0]==null)throw new B("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.getStates()==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>yt(r)):this.states_=[yt(r)];else if(e==null)Ae(this.states_),this.keptStates!=null&&(Ae(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>yt(r)):this.states_[0]=yt(r);else{if(Array.isArray(e)||(e=[e]),e.length!==this.states_.length)throw new B(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${e.length} state value(s). Input received: ${e}`);t?this.keptStates.push(this.states_.slice()):Ae(this.states_);for(let s=0;sXt(s.clone()))})}computeSingleOutputShape(e){let{dataFormat:t,filters:n,kernelSize:a,padding:r,strides:s,dilationRate:i}=this.cell,o=t==="channelsFirst",l=e[o?3:2],c=e[o?4:3],u=Ma(l,a[0],r,s[0],i[0]),p=Ma(c,a[1],r,s[1],i[1]);return[...e.slice(0,2),...o?[n,u,p]:[u,p,n]]}};BI.className="ConvRNN2D";var km=class extends up{constructor(e){let{filters:t,kernelSize:n,strides:a,padding:r,dataFormat:s,dilationRate:i}=e;super(Object.assign({},e,{units:t}));this.filters=t,Jt(this.filters,"filters"),this.kernelSize=Ql(n,2,"kernelSize"),this.kernelSize.forEach(o=>Jt(o,"kernelSize")),this.strides=Ql(a||1,2,"strides"),this.strides.forEach(o=>Jt(o,"strides")),this.padding=r||"valid",na(this.padding),this.dataFormat=s||"channelsLast",Rt(this.dataFormat),this.dilationRate=Ql(i||1,2,"dilationRate"),this.dilationRate.forEach(o=>Jt(o,"dilationRate"))}build(e){var t;e=dt(e);let n=this.dataFormat==="channelsFirst"?1:e.length-1;if(e[n]==null)throw new B(`The channel dimension of the input should be defined. Found ${e[n]}`);let a=e[n],r=4,s=this.kernelSize.concat([a,this.filters*r]);this.kernel=this.addWeight("kernel",s,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint);let i=this.kernelSize.concat([this.filters,this.filters*r]);if(this.recurrentKernel=this.addWeight("recurrent_kernel",i,null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias){let o;if(this.unitForgetBias){let l=this.biasInitializer,c=this.filters;o=new(t=class extends ha{apply(u,p){let d=l.apply([c]),h=Ka([c]),m=l.apply([c*2]);return xb([d,h,m])}},t.className="CustomInit",t)}else o=this.biasInitializer;this.bias=this.addWeight("bias",[this.filters*r],null,o,this.biasRegularizer,!0,this.biasConstraint)}this.built=!0}call(e,t){return D(()=>{if(e.length!==3)throw new B(`ConvLSTM2DCell expects 3 input Tensors (inputs, h, c), got ${e.length}.`);let n=t.training||!1,a=e[0],r=e[1],s=e[2],i=4;0Mn(a),rate:this.dropout,training:n,count:i}));let o=this.dropoutMask,l=(Q,ie,re)=>!ie||!ie[re]?Q:L(ie[re],Q),c=l(a,o,0),u=l(a,o,1),p=l(a,o,2),d=l(a,o,3);0Mn(r),rate:this.recurrentDropout,training:n,count:i}));let h=this.recurrentDropoutMask,m=l(r,h,0),f=l(r,h,1),g=l(r,h,2),y=l(r,h,3),b=3,[x,v,N,T]=Pn(this.kernel.read(),i,b),[E,A,$,O]=this.useBias?Pn(this.bias.read(),i):[null,null,null,null];c=this.inputConv(c,x,E,this.padding),u=this.inputConv(u,v,A,this.padding),p=this.inputConv(p,N,$,this.padding),d=this.inputConv(d,T,O,this.padding);let[V,W,H,X]=Pn(this.recurrentKernel.read(),i,b);m=this.recurrentConv(m,V),f=this.recurrentConv(f,W),g=this.recurrentConv(g,H),y=this.recurrentConv(y,X);let q=this.recurrentActivation.apply(Z(c,m)),K=this.recurrentActivation.apply(Z(u,f)),J=Z(L(K,s),L(q,this.activation.apply(Z(p,g)))),te=L(this.recurrentActivation.apply(Z(d,y)),this.activation.apply(J));return[te,te,J]})}getConfig(){let e=super.getConfig(),{units:t}=e,n=u4(e,["units"]),a={filters:this.filters,kernelSize:this.kernelSize,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,strides:this.strides};return Object.assign({},n,a)}inputConv(e,t,n,a){let r=$t(e,t,this.strides,a||"valid",this.dataFormat==="channelsFirst"?"NCHW":"NHWC",this.dilationRate);return n?er(r,n,this.dataFormat):r}recurrentConv(e,t){return $t(e,t,1,"same",this.dataFormat==="channelsFirst"?"NCHW":"NHWC")}};km.className="ConvLSTM2DCell";se.registerClass(km);var px=class extends BI{constructor(e){let t=new km(e);super(Object.assign({},e,{cell:t}))}static fromConfig(e,t){return new e(t)}};px.className="ConvLSTM2D";se.registerClass(px);var Im=class extends qe{constructor(e){super(e);this.rate=Math.max(Math.min(e.rate,1),0),this.noiseShape=e.noiseShape,this.seed=e.seed,this.supportsMasking=!0}getNoiseShape(e){if(this.noiseShape==null)return this.noiseShape;let t=e.shape,n=[];for(let a=0;a{this.invokeCallHook(e,t);let n=Re(e);if(0D1(n,this.rate,r,this.seed),()=>n,a)}return e})}getConfig(){let e={rate:this.rate,noiseShape:this.noiseShape,seed:this.seed},t=super.getConfig();return Object.assign(e,t),e}dispose(){return super.dispose()}};Im.className="Dropout";se.registerClass(Im);var dx=class extends Im{constructor(e){super(e);this.inputSpec=[{ndim:3}]}getNoiseShape(e){let t=e.shape;return[t[0],1,t[2]]}};dx.className="SpatialDropout1D";se.registerClass(dx);var hx=class extends qe{constructor(e){super(e);if(this.activation=null,this.useBias=!0,this.kernel=null,this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",e.batchInputShape==null&&e.inputShape==null&&e.inputDim!=null){let t=null;e.batchSize!=null&&(t=e.batchSize),this.batchInputShape=[t,e.inputDim]}this.units=e.units,Jt(this.units,"units"),this.activation=us(e.activation),e.useBias!=null&&(this.useBias=e.useBias),this.kernelInitializer=wt(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.biasInitializer=wt(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelConstraint=Ht(e.kernelConstraint),this.biasConstraint=Ht(e.biasConstraint),this.kernelRegularizer=kt(e.kernelRegularizer),this.biasRegularizer=kt(e.biasRegularizer),this.activityRegularizer=kt(e.activityRegularizer),this.supportsMasking=!0,this.inputSpec=[{minNDim:2}]}build(e){e=dt(e);let t=e[e.length-1];this.kernel==null&&(this.kernel=this.addWeight("kernel",[t,this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint))),this.inputSpec=[{minNDim:2,axes:{[-1]:t}}],this.built=!0}computeOutputShape(e){e=dt(e);let t=e.slice();return t[t.length-1]=this.units,t}call(e,t){return D(()=>{this.invokeCallHook(e,t);let n=Re(e),a=w1(this.activation.getClassName()),r;return a!=null?r=Qa(n,this.kernel.read(),a,this.bias?this.bias.read():null):(r=Qa(n,this.kernel.read()),this.bias!=null&&(r=er(r,this.bias.read())),this.activation!=null&&(r=this.activation.apply(r))),r})}getConfig(){let e={units:this.units,activation:ls(this.activation),useBias:this.useBias,kernelInitializer:Et(this.kernelInitializer),biasInitializer:Et(this.biasInitializer),kernelRegularizer:ht(this.kernelRegularizer),biasRegularizer:ht(this.biasRegularizer),activityRegularizer:ht(this.activityRegularizer),kernelConstraint:Gt(this.kernelConstraint),biasConstraint:Gt(this.biasConstraint)},t=super.getConfig();return Object.assign(e,t),e}};hx.className="Dense";se.registerClass(hx);var mx=class extends qe{constructor(e){e=e||{},super(e),this.inputSpec=[{minNDim:3}],this.dataFormat=e.dataFormat}computeOutputShape(e){e=dt(e);for(let t of e.slice(1))if(t==null)throw new B(`The shape of the input to "Flatten" is not fully defined (got ${e.slice(1)}). Make sure to pass a complete "input_shape" or "batch_input_shape" argument to the first layer in your model.`);return[e[0],ss(e,1)]}call(e,t){return D(()=>{this.invokeCallHook(e,t);let n=Re(e);if(this.dataFormat==="channelsFirst"&&n.rank>1){let a=[0];for(let r=2;r{this.invokeCallHook(e,t);let n=Re(e);return this.activation.apply(n)})}getConfig(){let e={activation:ls(this.activation)},t=super.getConfig();return Object.assign(e,t),e}};fx.className="Activation";se.registerClass(fx);var gx=class extends qe{constructor(e){super(e);this.n=e.n,this.inputSpec=[{ndim:2}]}computeOutputShape(e){return[e[0],this.n,e[1]]}call(e,t){return D(()=>(e=Re(e),$z(e,this.n)))}getConfig(){let e={n:this.n},t=super.getConfig();return Object.assign(e,t),e}};gx.className="RepeatVector";se.registerClass(gx);var yx=class extends qe{constructor(e){super(e);this.targetShape=e.targetShape;for(let t=0;t{this.invokeCallHook(e,t);let n=Re(e),a=n.shape,r=a.slice(0,1).concat(this.fixUnknownDimension(a.slice(1),this.targetShape));return n.reshape(r)})}getConfig(){let e={targetShape:this.targetShape},t=super.getConfig();return Object.assign(e,t),e}};yx.className="Reshape";se.registerClass(yx);var bx=class extends qe{constructor(e){super(e);if(e.dims==null)throw new Error("Required configuration field `dims` is missing during Permute constructor call.");if(!Array.isArray(e.dims))throw new Error(`Permute constructor requires \`dims\` to be an Array, but received ${e.dims} instead.`);let t=Aa(1,e.dims.length+1);if(!k.arraysEqual(e.dims.slice().sort(),t))throw new Error("Invalid permutation `dims`: "+JSON.stringify(e.dims)+" `dims` must contain consecutive integers starting from 1.");this.dims=e.dims,this.dimsIncludingBatch=[0].concat(this.dims),this.inputSpec=[new Zt({ndim:this.dims.length+1})]}computeOutputShape(e){e=dt(e);let t=e.slice();return this.dims.forEach((n,a)=>{t[a+1]=e[n]}),t}call(e,t){return Ue(Re(e),this.dimsIncludingBatch)}getConfig(){let e={dims:this.dims},t=super.getConfig();return Object.assign(e,t),e}};bx.className="Permute";se.registerClass(bx);var xx=class extends qe{constructor(e){super(e==null?{}:e);this.supportsMasking=!0,e!=null?this.maskValue=e.maskValue==null?0:e.maskValue:this.maskValue=0}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={maskValue:this.maskValue};return Object.assign(t,e),t}computeMask(e,t){let n=Re(e),a=-1;return Ac(ts(n,this.maskValue),a)}call(e,t){return D(()=>{this.invokeCallHook(e,t);let n=Re(e),a=-1,r=!0,s=Ac(ts(n,this.maskValue),a,r);return n.mul(s.asType(n.dtype))})}};xx.className="Masking";se.registerClass(xx);var vx=class extends qe{constructor(e){super(e);if(this.embeddings=null,this.DEFAULT_EMBEDDINGS_INITIALIZER="randomUniform",e.batchInputShape==null&&e.inputShape==null){let t=null;e.batchSize!=null&&(t=e.batchSize),e.inputLength==null?this.batchInputShape=[t,null]:this.batchInputShape=[t].concat(bt(e.inputLength))}this.inputDim=e.inputDim,Jt(this.inputDim,"inputDim"),this.outputDim=e.outputDim,Jt(this.outputDim,"outputDim"),this.embeddingsInitializer=wt(e.embeddingsInitializer||this.DEFAULT_EMBEDDINGS_INITIALIZER),this.embeddingsRegularizer=kt(e.embeddingsRegularizer),this.activityRegularizer=kt(e.activityRegularizer),this.embeddingsConstraint=Ht(e.embeddingsConstraint),this.maskZero=e.maskZero,this.supportsMasking=e.maskZero,this.inputLength=e.inputLength}build(e){this.embeddings=this.addWeight("embeddings",[this.inputDim,this.outputDim],this.dtype,this.embeddingsInitializer,this.embeddingsRegularizer,!0,this.embeddingsConstraint),this.built=!0}warnOnIncompatibleInputShape(e){}computeMask(e,t){return D(()=>this.maskZero?(e=Re(e),ts(e,He(e))):null)}computeOutputShape(e){if(e=dt(e),this.inputLength==null)return[...e,this.outputDim];let t=bt(this.inputLength);if(t.length!==e.length-1)throw new B(`"inputLength" is ${this.inputLength}, but received input shape has shape ${e}`);{let n=0;for(let a=0;a{this.invokeCallHook(e,t);let n=Re(e);return n.dtype!=="int32"&&(n=Jc(n,"int32")),$1(this.embeddings.read(),n.as1D()).reshape(dt(this.computeOutputShape(n.shape)))})}getConfig(){let e={inputDim:this.inputDim,outputDim:this.outputDim,embeddingsInitializer:Et(this.embeddingsInitializer),embeddingsRegularizer:ht(this.embeddingsRegularizer),activityRegularizer:ht(this.activityRegularizer),embeddingsConstraint:Gt(this.embeddingsConstraint),maskZero:this.maskZero,inputLength:this.inputLength},t=super.getConfig();return Object.assign(e,t),e}};vx.className="Embedding";se.registerClass(vx);var Vi=class extends qe{constructor(e){super(e||{});this.supportsMasking=!0}mergeFunction(e){throw new $e}computeElementwiseOpOutputShape(e,t){if(e==null||t==null)return null;if(e.length1)throw new B(`Can not merge tensors with different batch sizes. Got tensors with shapes: ${JSON.stringify(e)}.`);let n=e[0]==null?null:e[0].slice(1);for(let r=1;rr.length);e.indexOf(null)===-1&&rs(a).length===1?this.reshapeRequired=!1:this.reshapeRequired=!0}call(e,t){return D(()=>{if(e=e,this.reshapeRequired){let n=[],a=e.map(r=>r.rank);if(a.indexOf(null)===-1){let r=is(a);for(let s of e){let i=s.rank;for(let o=0;o1){let c=Aa(1,l).concat([0]);n.push(Ue(o,c)),r=!0}else n.push(o)}let s=this.mergeFunction(n),i=s.rank;if(r){if(i==null){let o=s.shape,l=o.length,c=o[l-1],u=[c].concat(o.slice(0,o.length-1));s=Ue(s.reshape([-1,c]),[1,0]).reshape(u)}else if(i>1){let o=[i-1].concat(Aa(0,i-1));s=Ue(s,o)}}return s}}else return this.mergeFunction(e)})}computeOutputShape(e){e=e;let t;e[0]==null?t=null:t=e[0].slice(1);for(let a=1;a{if(t==null)return null;if(!Array.isArray(t))throw new B("`mask` should be an Array");if(!Array.isArray(e))throw new B("`inputs` should be an Array");if(t.length!==e.length)throw new B(`The Array 'inputs' and 'mask' are expected to have the same length, but have different lengths (${e.length} vs ${t.length})`);if(t.every(a=>a==null))return null;t=t.map(a=>a==null?a:Zn(a,0));let n=t[0];for(let a=1;a{let t=e[0].clone();for(let n=1;n{let t=e[0].clone();for(let n=1;n{let t=e[0].clone();for(let n=1;n{let t=e[0];for(let n=1;n{let t=e[0];for(let n=1;n1)throw new B("A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got input shapes: "+JSON.stringify(e))}mergeFunction(e){return D(()=>xb(e,this.axis))}computeOutputShape(e){if(!(Array.isArray(e)&&Array.isArray(e[0])))throw new B("A `Concatenate` layer should be called on a list of inputs.");let t=e,n=t[0].slice(),a=this.axis<0?n.length+this.axis:this.axis;for(let r of t.slice(1)){if(n[a]==null||r[a]==null){n[a]=null;break}n[a]+=r[a]}return n}computeMask(e,t){if(t==null)return null;if(!Array.isArray(t))throw new B("`mask` should be an array for Concatenate");if(!Array.isArray(e))throw new B("`inputs` should be an array for Concatenate");if(t.length!==e.length)throw new B(`Mismatch in the length of mask (${t.length}) and the legnth of inputs (${e.length})`);return D(()=>{let n=!0;if(t.forEach(s=>{if(s!=null){n=!1;return}}),n)return null;let a=[];for(let s=0;s3||t.shape.length>3)throw new $e("batchDot is not implemented for tensors of 4D or higher rank yet");if(k.assert(e.shape.length>=2,()=>`batchDot requires the rank of x to be >= 2, but got ${e.shape.length}`),k.assert(e.shape.length>=2,()=>`batchDot requires the rank of y to be >= 2, but got ${t.shape.length}`),typeof n=="number"&&(n=[n,n]),e.dtype==="complex64"||t.dtype==="complex64")throw new $e("batchDot is not implemented for complex64-type Tensors yet.");let a=e.shape.length,r=t.shape.length;n==null&&(n=[a-1,r-2]);let s=n;return D(()=>{let i;if(a>r){i=a-r;let l=[];for(let c=0;ca){i=r-a;let l=[];for(let c=0;c0){let l;a>r?l=a+r-3:l=a-1;let c=[];for(let u=l;u"A `Dot` layer should be called on a list of exactly 2 inputs.");let t=e[0],n=e[1];if(t.length>3||n.length>3)throw new $e("Dot layer does not support tensors of 4D or higher rank yet.");let a=this.interpretAxes(t,n);if(t[a[0]]!==n[a[1]])throw new B(`Dimension incompatibility: ${t[a[0]]} !== ${n[a[1]]}`)}mergeFunction(e){if(e.length!==2)throw new B(`A \`Dot\` layer must be called on exactly 2 inputs, but received ${e.length} input(s).`);let t=e[0],n=e[1],a;return Array.isArray(this.axes)?a=this.axes.map((r,s)=>cp(r,e[s].shape.length)):a=[cp(this.axes,t.shape.length),cp(this.axes,n.shape.length)],this.normalize&&(t=om(t,a[0]),n=om(n,a[1])),c4(t,n,a)}interpretAxes(e,t){let n;return Array.isArray(this.axes)?n=this.axes:n=[cp(this.axes,e.length),cp(this.axes,t.length)],n}computeOutputShape(e){k.assert(Array.isArray(e)&&e.length===2&&Array.isArray(e[0])&&Array.isArray(e[1]),()=>"A `Dot` layer should be called on a list of exactly 2 inputs.");let t=e[0].slice(),n=e[1].slice();if(t.length>3||n.length>3)throw new $e("Dot layer does not support tensors of 4D or higher rank yet.");let a=this.interpretAxes(t,n);t.splice(a[0],1),n.splice(a[1],1),n.splice(0,1);let r=t.concat(n);return r.length===1&&r.push(1),r}computeMask(e,t){return null}getConfig(){let e={axes:this.axes,normalize:this.normalize},t=super.getConfig();return Object.assign(e,t),e}};Cx.className="Dot";se.registerClass(Cx);var Ex=class extends qe{constructor(e){super(e);this.supportsMasking=!0,this.stddev=e.stddev}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={stddev:this.stddev};return Object.assign(t,e),t}call(e,t){return D(()=>{this.invokeCallHook(e,t);let n=Re(e);return ep(()=>Kh(n.shape,0,this.stddev).add(n),()=>n,t.training||!1)})}};Ex.className="GaussianNoise";se.registerClass(Ex);var _x=class extends qe{constructor(e){super(e);this.supportsMasking=!0,this.rate=e.rate}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={rate:this.rate};return Object.assign(t,e),t}call(e,t){return D(()=>{this.invokeCallHook(e,t);let n=Re(e);return this.rate>0&&this.rate<1?ep(()=>{let a=Math.sqrt(this.rate/(1-this.rate));return n.mul(Kh(n.shape,1,a))},()=>n,t.training||!1):n})}};_x.className="GaussianDropout";se.registerClass(_x);var Fx=class extends qe{constructor(e){super(e);this.supportsMasking=!0,this.rate=e.rate,this.noiseShape=e.noiseShape}_getNoiseShape(e){return this.noiseShape||Re(e).shape}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={rate:this.rate};return Object.assign(t,e),t}call(e,t){return D(()=>{if(this.rate<1&&this.rate>0){let n=this._getNoiseShape(e);return ep(()=>{let a=Re(e),r=1.6732632423543772,s=1.0507009873554805,i=-r*s,o=wr(Vl(n),this.rate);o=Jc(o,"float32");let l=((1-this.rate)*(1+this.rate*i**2))**-.5,c=-l*i*this.rate;return a.mul(o).add(o.add(-1).mul(i)).mul(l).add(c)},()=>Re(e),t.training||!1)}return e})}};Fx.className="AlphaDropout";se.registerClass(Fx);function pp(e,t,n,a,r,s=.001){let i;if(e.rank===2)i=ek(e,t,n,a,r,s);else if(e.rank===3)i=tk(e,t,n,a,r,s);else if(e.rank===4)i=nk(e,t,n,a,r,s);else throw new $e(`batchNormalization is not implemented for array of rank ${e.rank} yet`);return i}function p4(e,t,n,a,r=.001){return D(()=>{let s=kh(e,a),i=s.mean,o=s.variance;return[pp(e,i,o,n,t,r),i,o]})}function d4(e,t,n,a,r=.001){return D(()=>{let s=kh(e,a),i=s.mean,o=s.variance,l=[];for(let h of Aa(0,e.rank))a.indexOf(h)!==-1?l.push(1):l.push(e.shape[h]);let c=i.reshape(l),u=o.reshape(l),p=t==null?null:t.reshape(l),d=n==null?null:n.reshape(l);return[pp(e,c,u,d,p,r),i,o]})}function h4(e,t,n,a,r=.001){return k.arraysEqual(a.slice().sort(),Aa(0,e.rank-1))?p4(e,t,n,a,r):d4(e,t,n,a,r)}var Ax=class extends qe{constructor(e){e==null&&(e={}),super(e),this.supportsMasking=!0,this.axis=e.axis==null?-1:e.axis,this.momentum=e.momentum==null?.99:e.momentum,this.epsilon=e.epsilon==null?.001:e.epsilon,this.center=e.center==null?!0:e.center,this.scale=e.scale==null?!0:e.scale,this.betaInitializer=wt(e.betaInitializer||"zeros"),this.gammaInitializer=wt(e.gammaInitializer||"ones"),this.movingMeanInitializer=wt(e.movingMeanInitializer||"zeros"),this.movingVarianceInitializer=wt(e.movingVarianceInitializer||"ones"),this.betaConstraint=Ht(e.betaConstraint),this.gammaConstraint=Ht(e.gammaConstraint),this.betaRegularizer=kt(e.betaRegularizer),this.gammaRegularizer=kt(e.gammaRegularizer)}build(e){e=dt(e);let t=this.axis>=0?this.axis:this.axis+e.length,n=e[t];if(n==null)throw new B(`Axis ${t} of input tensor should have a defined dimension but the layer received an input with shape ${JSON.stringify(e)}.`);this.inputSpec=[new Zt({ndim:e.length,axes:{[t]:n}})];let a=[n];this.scale&&(this.gamma=this.addWeight("gamma",a,null,this.gammaInitializer,this.gammaRegularizer,!0,this.gammaConstraint)),this.center&&(this.beta=this.addWeight("beta",a,null,this.betaInitializer,this.betaRegularizer,!0,this.betaConstraint)),this.movingMean=this.addWeight("moving_mean",a,null,this.movingMeanInitializer,null,!1),this.movingVariance=this.addWeight("moving_variance",a,null,this.movingVarianceInitializer,null,!1),this.built=!0}call(e,t){return D(()=>{let n=t.training==null?!1:t.training,a=Re(e),r=a.shape,s=r.length,i=Aa(0,s),o=this.axis>=0?this.axis:this.axis+s;i.splice(o,1);let l=Mi(1,s);l[o]=r[o];let c=i.slice();c.sort();let u=!k.arraysEqual(c,Aa(0,s).slice(0,s-1)),p=()=>{if(u){let g=this.movingMean.read().reshape(l),y=this.movingVariance.read().reshape(l),b=this.center?this.beta.read().reshape(l):null,x=this.scale?this.gamma.read().reshape(l):null;return pp(a,g,y,b,x,this.epsilon)}else return pp(a,this.movingMean.read(),this.movingVariance.read(),this.beta==null?null:this.beta.read(),this.gamma==null?null:this.gamma.read(),this.epsilon)};if(!n)return p();let[d,h,m]=h4(a,this.gamma.read(),this.beta.read(),i,this.epsilon),f=(g,y,b)=>{D(()=>{let x=1-b,v=g.read(),N=v.sub(y).mul(x);g.write(v.sub(N))})};return(()=>{f(this.movingMean,h,this.momentum),f(this.movingVariance,m,this.momentum)})(),d})}getConfig(){let e={axis:this.axis,momentum:this.momentum,epsilon:this.epsilon,center:this.center,scale:this.scale,betaInitializer:Et(this.betaInitializer),gammaInitializer:Et(this.gammaInitializer),movingMeanInitializer:Et(this.movingMeanInitializer),movingVarianceInitializer:Et(this.movingVarianceInitializer),betaRegularizer:ht(this.betaRegularizer),gammaRegularizer:ht(this.gammaRegularizer),betaConstraint:Gt(this.betaConstraint),gammaConstraint:Gt(this.gammaConstraint)},t=super.getConfig();return Object.assign(e,t),e}};Ax.className="BatchNormalization";se.registerClass(Ax);var $x=class extends qe{constructor(e){if(e==null&&(e={}),super(e),this.axis=e.axis==null?-1:e.axis,typeof this.axis=="number"){if(!Number.isInteger(this.axis))throw new Error(`Expected axis to be an integer, but received ${this.axis}`)}else if(Array.isArray(this.axis)){for(let t of this.axis)if(!Number.isInteger(t))throw new Error(`Expected axis to be an array of integers, but received ${JSON.stringify(this.axis)}`)}else throw new Error(`Expected axis to be an integer or an array of integers, but received ${JSON.stringify(this.axis)}`);this.epsilon=e.epsilon==null?.001:e.epsilon,this.center=e.center==null?!0:e.center,this.scale=e.scale==null?!0:e.scale,this.betaInitializer=wt(e.betaInitializer||"zeros"),this.gammaInitializer=wt(e.gammaInitializer||"ones"),this.betaRegularizer=kt(e.betaRegularizer),this.gammaRegularizer=kt(e.gammaRegularizer),this.supportsMasking=!0}build(e){e=dt(e);let t=e.length;typeof this.axis=="number"&&(this.axis=[this.axis]);for(let r=0;r=t)throw new Error(`Invalid axis: ${r}`);if(this.axis.length!==rs(this.axis).length)throw new Error(`Found duplicate axes in: ${this.axis}`);let n=this.axis.map(r=>e[r]),a=!0;this.scale?this.gamma=this.addWeight("gamma",n,"float32",this.gammaInitializer,this.gammaRegularizer,a):this.gamma=null,this.center?this.beta=this.addWeight("beta",n,"float32",this.betaInitializer,this.betaRegularizer,a):this.beta=null,this.built=!0}call(e,t){let n=Re(e),a=n.shape,r=a.length;return D(()=>{let s=!0,{mean:i,variance:o}=kh(n,this.axis,s),l=Mi(1,r);for(let m of this.axis)l[m]=a[m];let c=m=>m!=null&&m.shape.length!==r&&this.axis!==[r-1]?m.reshape(l):m,u=c(this.gamma.read()),p=c(this.beta.read()),d=[],h=[];for(let m=0;m{if(e.rank!==4)throw new B(`temporalPadding expects input tensor to be 4-D, but received a ${e.rank}-D tensor.`);if(t==null&&(t=[[1,1],[1,1]]),t.length!==2||t[0].length!==2||t[1].length!==2)throw new B("spatial2dPadding expects `padding` to be an Array of two Arrays, each of which is an Array of two integers.");if(n==null&&(n=_a()),n!=="channelsLast"&&n!=="channelsFirst")throw new B(`Unknown data format: ${n}. Supported data formats are 'channelsLast' and 'channelsFirst.`);let a;return n==="channelsFirst"?a=[[0,0],[0,0],t[0],t[1]]:a=[[0,0],t[0],t[1],[0,0]],ta(e,a)})}var Dx=class extends qe{constructor(e){if(e==null&&(e={}),super(e),this.dataFormat=e.dataFormat==null?_a():e.dataFormat,e.padding==null)this.padding=[[1,1],[1,1]];else if(typeof e.padding=="number")this.padding=[[e.padding,e.padding],[e.padding,e.padding]];else{if(e.padding=e.padding,e.padding.length!==2)throw new B(`ZeroPadding2D expects padding to be a length-2 array, but received a length-${e.padding.length} array.`);let t,n;if(typeof e.padding[0]=="number")t=[e.padding[0],e.padding[0]],n=[e.padding[1],e.padding[1]];else{if(e.padding=e.padding,e.padding[0].length!==2)throw new B(`ZeroPadding2D expects height padding to be a length-2 array, but received a length-${e.padding[0].length} array.`);if(t=e.padding[0],e.padding[1].length!==2)throw new B(`ZeroPadding2D expects width padding to be a length-2 array, but received a length-${e.padding[1].length} array.`);n=e.padding[1]}this.padding=[t,n]}this.inputSpec=[new Zt({ndim:4})]}computeOutputShape(e){e=dt(e);let t,n;return this.dataFormat==="channelsFirst"?(e[2]!=null&&e[2]>=0?t=e[2]+this.padding[0][0]+this.padding[0][1]:t=null,e[3]!=null&&e[3]>=0?n=e[3]+this.padding[1][0]+this.padding[1][1]:n=null,[e[0],e[1],t,n]):(e[1]!=null&&e[1]>=0?t=e[1]+this.padding[0][0]+this.padding[0][1]:t=null,e[2]!=null&&e[2]>=0?n=e[2]+this.padding[1][0]+this.padding[1][1]:n=null,[e[0],t,n,e[3]])}call(e,t){return D(()=>m4(Re(e),this.padding,this.dataFormat))}getConfig(){let e={padding:this.padding,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}};Dx.className="ZeroPadding2D";se.registerClass(Dx);function Nm(e,t,n,a,r,s){return D(()=>{Rt(r),T1(s),na(a),n==null&&(n=[1,1]),a==null&&(a="valid"),r==null&&(r=_a()),s==null&&(s="max"),e=tx(e,r);let i,o=a==="same"?"same":"valid";return s==="max"?i=Dt(e,t,n,o):i=Jn(e,t,n,o),r==="channelsFirst"&&(i=Ue(i,[0,3,1,2])),i})}function WI(e,t,n,a,r,s){return D(()=>{Rt(r),T1(s),na(a),n==null&&(n=[1,1,1]),a==null&&(a="valid"),r==null&&(r=_a()),s==null&&(s="max"),e=RI(e,r);let i,o=a==="same"?"same":"valid";return s==="max"?i=Gy(e,t,n,o):i=Fy(e,t,n,o),r==="channelsFirst"&&(i=Ue(i,[0,4,1,2,3])),i})}var VI=class extends qe{constructor(e){if(e.poolSize==null&&(e.poolSize=2),super(e),typeof e.poolSize=="number")this.poolSize=[e.poolSize];else if(Array.isArray(e.poolSize)&&e.poolSize.length===1&&typeof e.poolSize[0]=="number")this.poolSize=e.poolSize;else throw new B(`poolSize for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(e.poolSize)}`);if(Jt(this.poolSize,"poolSize"),e.strides==null)this.strides=this.poolSize;else if(typeof e.strides=="number")this.strides=[e.strides];else if(Array.isArray(e.strides)&&e.strides.length===1&&typeof e.strides[0]=="number")this.strides=e.strides;else throw new B(`strides for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(e.strides)}`);Jt(this.strides,"strides"),this.padding=e.padding==null?"valid":e.padding,na(this.padding),this.inputSpec=[new Zt({ndim:3})]}computeOutputShape(e){e=dt(e);let t=Ma(e[1],this.poolSize[0],this.padding,this.strides[0]);return[e[0],t,e[2]]}call(e,t){return D(()=>{this.invokeCallHook(e,t),e=Zc(Re(e),2);let n=this.poolingFunction(Re(e),[this.poolSize[0],1],[this.strides[0],1],this.padding,"channelsLast");return ns(n,[2])})}getConfig(){let e={poolSize:this.poolSize,padding:this.padding,strides:this.strides},t=super.getConfig();return Object.assign(e,t),e}},Mx=class extends VI{constructor(e){super(e)}poolingFunction(e,t,n,a,r){return Rt(r),na(a),Nm(e,t,n,a,r,"max")}};Mx.className="MaxPooling1D";se.registerClass(Mx);var Rx=class extends VI{constructor(e){super(e)}poolingFunction(e,t,n,a,r){return Rt(r),na(a),Nm(e,t,n,a,r,"avg")}};Rx.className="AveragePooling1D";se.registerClass(Rx);var UI=class extends qe{constructor(e){if(e.poolSize==null&&(e.poolSize=[2,2]),super(e),this.poolSize=Array.isArray(e.poolSize)?e.poolSize:[e.poolSize,e.poolSize],e.strides==null)this.strides=this.poolSize;else if(Array.isArray(e.strides)){if(e.strides.length!==2)throw new B(`If the strides property of a 2D pooling layer is an Array, it is expected to have a length of 2, but received length ${e.strides.length}.`);this.strides=e.strides}else this.strides=[e.strides,e.strides];Jt(this.poolSize,"poolSize"),Jt(this.strides,"strides"),this.padding=e.padding==null?"valid":e.padding,this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Rt(this.dataFormat),na(this.padding),this.inputSpec=[new Zt({ndim:4})]}computeOutputShape(e){e=dt(e);let t=this.dataFormat==="channelsFirst"?e[2]:e[1],n=this.dataFormat==="channelsFirst"?e[3]:e[2];return t=Ma(t,this.poolSize[0],this.padding,this.strides[0]),n=Ma(n,this.poolSize[1],this.padding,this.strides[1]),this.dataFormat==="channelsFirst"?[e[0],e[1],t,n]:[e[0],t,n,e[3]]}call(e,t){return D(()=>(this.invokeCallHook(e,t),this.poolingFunction(Re(e),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let e={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}},Px=class extends UI{constructor(e){super(e)}poolingFunction(e,t,n,a,r){return Rt(r),na(a),Nm(e,t,n,a,r,"max")}};Px.className="MaxPooling2D";se.registerClass(Px);var Ox=class extends UI{constructor(e){super(e)}poolingFunction(e,t,n,a,r){return Rt(r),na(a),Nm(e,t,n,a,r,"avg")}};Ox.className="AveragePooling2D";se.registerClass(Ox);var GI=class extends qe{constructor(e){if(e.poolSize==null&&(e.poolSize=[2,2,2]),super(e),this.poolSize=Array.isArray(e.poolSize)?e.poolSize:[e.poolSize,e.poolSize,e.poolSize],e.strides==null)this.strides=this.poolSize;else if(Array.isArray(e.strides)){if(e.strides.length!==3)throw new B(`If the strides property of a 3D pooling layer is an Array, it is expected to have a length of 3, but received length ${e.strides.length}.`);this.strides=e.strides}else this.strides=[e.strides,e.strides,e.strides];Jt(this.poolSize,"poolSize"),Jt(this.strides,"strides"),this.padding=e.padding==null?"valid":e.padding,this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Rt(this.dataFormat),na(this.padding),this.inputSpec=[new Zt({ndim:5})]}computeOutputShape(e){e=dt(e);let t=this.dataFormat==="channelsFirst"?e[2]:e[1],n=this.dataFormat==="channelsFirst"?e[3]:e[2],a=this.dataFormat==="channelsFirst"?e[4]:e[3];return t=Ma(t,this.poolSize[0],this.padding,this.strides[0]),n=Ma(n,this.poolSize[1],this.padding,this.strides[1]),a=Ma(a,this.poolSize[2],this.padding,this.strides[2]),this.dataFormat==="channelsFirst"?[e[0],e[1],t,n,a]:[e[0],t,n,a,e[4]]}call(e,t){return D(()=>(this.invokeCallHook(e,t),this.poolingFunction(Re(e),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let e={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}},Lx=class extends GI{constructor(e){super(e)}poolingFunction(e,t,n,a,r){return Rt(r),na(a),WI(e,t,n,a,r,"max")}};Lx.className="MaxPooling3D";se.registerClass(Lx);var zx=class extends GI{constructor(e){super(e)}poolingFunction(e,t,n,a,r){return Rt(r),na(a),WI(e,t,n,a,r,"avg")}};zx.className="AveragePooling3D";se.registerClass(zx);var HI=class extends qe{constructor(e){super(e);this.inputSpec=[new Zt({ndim:3})]}computeOutputShape(e){return[e[0],e[2]]}call(e,t){throw new $e}},Bx=class extends HI{constructor(e){super(e||{})}call(e,t){return D(()=>{let n=Re(e);return Ct(n,1)})}};Bx.className="GlobalAveragePooling1D";se.registerClass(Bx);var Wx=class extends HI{constructor(e){super(e||{})}call(e,t){return D(()=>{let n=Re(e);return ea(n,1)})}};Wx.className="GlobalMaxPooling1D";se.registerClass(Wx);var jI=class extends qe{constructor(e){super(e);this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Rt(this.dataFormat),this.inputSpec=[new Zt({ndim:4})]}computeOutputShape(e){return e=e,this.dataFormat==="channelsLast"?[e[0],e[3]]:[e[0],e[1]]}call(e,t){throw new $e}getConfig(){let e={dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}},Vx=class extends jI{call(e,t){return D(()=>{let n=Re(e);return this.dataFormat==="channelsLast"?Ct(n,[1,2]):Ct(n,[2,3])})}};Vx.className="GlobalAveragePooling2D";se.registerClass(Vx);var Ux=class extends jI{call(e,t){return D(()=>{let n=Re(e);return this.dataFormat==="channelsLast"?ea(n,[1,2]):ea(n,[2,3])})}};Ux.className="GlobalMaxPooling2D";se.registerClass(Ux);var qI=class extends qe{constructor(e){super(e);this.layer=e.layer}build(e){this.built=!0}get trainable(){return this.layer!=null?this.layer.trainable:!1}set trainable(e){this.layer!=null&&(this.layer.trainable=e)}get trainableWeights(){return this.layer.trainableWeights}get nonTrainableWeights(){return this.layer.nonTrainableWeights}get updates(){return this.layer._updates}get losses(){return this.layer.losses}getWeights(){return this.layer.getWeights()}setWeights(e){this.layer.setWeights(e)}getConfig(){let e={layer:{className:this.layer.getClassName(),config:this.layer.getConfig()}},t=super.getConfig();return Object.assign(e,t),e}setFastWeightInitDuringBuild(e){super.setFastWeightInitDuringBuild(e),this.layer!=null&&this.layer.setFastWeightInitDuringBuild(e)}static fromConfig(e,t,n={}){let a=t.layer,r=Da(a,n);delete t.layer;let s={layer:r};return Object.assign(s,t),new e(s)}},Gx=class extends qI{constructor(e){super(e);this.supportsMasking=!0}build(e){if(e=dt(e),e.length<3)throw new B(`TimeDistributed layer expects an input shape >= 3D, but received input shape ${JSON.stringify(e)}`);this.inputSpec=[{shape:e}];let t=[e[0]].concat(e.slice(2));this.layer.built||(this.layer.build(t),this.layer.built=!0),super.build(e)}computeOutputShape(e){e=dt(e);let t=[e[0]].concat(e.slice(2)),n=this.layer.computeOutputShape(t),a=e[1];return[n[0],a].concat(n.slice(1))}call(e,t){return D(()=>(e=Re(e),zI((n,a)=>[Re(this.layer.call(n,t)),[]],e,[],!1,null,null,!1,!0)[1]))}};Gx.className="TimeDistributed";se.registerClass(Gx);function f4(e){Pi(Cz,"BidirectionalMergeMode",e)}var g4="concat",Hx=class extends qI{constructor(e){super(e);let t=e.layer.getConfig(),n={};n.className=e.layer.getClassName(),n.config=t,this.forwardLayer=Da(n),t.goBackwards=t.goBackwards!==!0;let a={};if(a.className=e.layer.getClassName(),a.config=t,this.backwardLayer=Da(a),this.forwardLayer.name="forward_"+this.forwardLayer.name,this.backwardLayer.name="backward_"+this.backwardLayer.name,this.mergeMode=e.mergeMode===void 0?g4:e.mergeMode,f4(this.mergeMode),e.weights)throw new $e("weights support is not implemented for Bidirectional layer yet.");this._stateful=e.layer.stateful,this.returnSequences=e.layer.returnSequences,this.returnState=e.layer.returnState,this.supportsMasking=!0,this._trainable=!0,this.inputSpec=e.layer.inputSpec,this.numConstants=null}get trainable(){return this._trainable}set trainable(e){this._trainable=e,this.forwardLayer!=null&&(this.forwardLayer.trainable=e),this.backwardLayer!=null&&(this.backwardLayer.trainable=e)}getWeights(){return this.forwardLayer.getWeights().concat(this.backwardLayer.getWeights())}setWeights(e){let t=e.length,n=Math.floor(t/2);this.forwardLayer.setWeights(e.slice(0,n)),this.backwardLayer.setWeights(e.slice(n))}computeOutputShape(e){let t=this.forwardLayer.computeOutputShape(e);Array.isArray(t)&&Array.isArray(t[0])||(t=[t]),t=t;let n,a,r;return this.returnState&&(r=t.slice(1)),n=t[0],n=n,this.mergeMode==="concat"?(n[n.length-1]*=2,a=[n]):this.mergeMode==null?a=[n,n.slice()]:a=[n],this.returnState?this.mergeMode==null?a.concat(r).concat(r.slice()):[n].concat(r).concat(r.slice()):Nn(a)}apply(e,t){let n=t==null?null:t.initialState,a=t==null?null:t.constants;t==null&&(t={});let r=LI(e,n,a,this.numConstants);if(e=r.inputs,n=r.initialState,a=r.constants,Array.isArray(e)&&(n=e.slice(1),e=e[0]),(n==null||n.length===0)&&a==null)return super.apply(e,t);let s=[],i=[];if(n!=null){let l=n.length;if(l%2>0)throw new B("When passing `initialState` to a Bidrectional RNN, the state should be an Array containing the states of the underlying RNNs.");t.initialState=n,s.push(...n);let c=n.map(u=>new Zt({shape:u.shape}));this.forwardLayer.stateSpec=c.slice(0,l/2),this.backwardLayer.stateSpec=c.slice(l/2),i.push(...c)}if(a!=null)throw new $e("Support for constants in Bidirectional layers is not implemented yet.");let o=s[0]instanceof $a;for(let l of s)if(l instanceof $a!==o)throw new B("The initial state of a Bidirectional layer cannot be specified as a mix of symbolic and non-symbolic tensors");if(o){let l=[e].concat(s),c=this.inputSpec.concat(i),u=this.inputSpec;this.inputSpec=c;let p=super.apply(l,t);return this.inputSpec=u,p}else return super.apply(e,t)}call(e,t){return D(()=>{let n=t.initialState,a,r;if(n==null)a=this.forwardLayer.call(e,t),r=this.backwardLayer.call(e,t);else{let o=n.slice(0,n.length/2),l=n.slice(n.length/2);a=this.forwardLayer.call(e,Object.assign(t,{initialState:o})),r=this.backwardLayer.call(e,Object.assign(t,{initialState:l}))}let s;this.returnState&&(Array.isArray(a)&&(s=a.slice(1).concat(r.slice(1))),a=a[0],r=r[0]),this.returnSequences&&(r=Rn(r,1));let i;return this.mergeMode==="concat"?i=xb([a,r]):this.mergeMode==="sum"?i=Z(a,r):this.mergeMode==="ave"?i=L(.5,Z(a,r)):this.mergeMode==="mul"?i=L(a,r):this.mergeMode==null&&(i=[a,r]),this.returnState?this.mergeMode==null?i.concat(s):[i].concat(s):i})}resetStates(e){this.forwardLayer.resetStates(),this.backwardLayer.resetStates()}build(e){Oi(this.forwardLayer.name,()=>{this.forwardLayer.build(e)}),Oi(this.backwardLayer.name,()=>{this.backwardLayer.build(e)}),this.built=!0}computeMask(e,t){Array.isArray(t)&&(t=t[0]);let n;if(this.returnSequences?this.mergeMode==null?n=[t,t]:n=t:this.mergeMode==null?n=[null,null]:n=null,this.returnState){let a=this.forwardLayer.states.map(r=>null);return Array.isArray(n)?n.concat(a).concat(a):[n].concat(a).concat(a)}else return n}get trainableWeights(){return this.forwardLayer.trainableWeights.concat(this.backwardLayer.trainableWeights)}get nonTrainableWeights(){return this.forwardLayer.nonTrainableWeights.concat(this.backwardLayer.nonTrainableWeights)}setFastWeightInitDuringBuild(e){super.setFastWeightInitDuringBuild(e),this.forwardLayer!=null&&this.forwardLayer.setFastWeightInitDuringBuild(e),this.backwardLayer!=null&&this.backwardLayer.setFastWeightInitDuringBuild(e)}getConfig(){let e={mergeMode:this.mergeMode},t=super.getConfig();return Object.assign(e,t),e}static fromConfig(e,t){let n=Da(t.layer);if(delete t.layer,t.numConstants!=null)throw new $e("Deserialization of a Bidirectional layer with numConstants present is not supported yet.");let a=t;return a.layer=n,new e(a)}};Hx.className="Bidirectional";se.registerClass(Hx);function Uz(e){return new Xl(e)}function Gz(e){return new Zb(e)}function Hz(e){return new Xb(e)}function jz(e){return new Yb(e)}function qz(e){return new Jb(e)}function Kz(e){return new ex(e)}function Xz(e){return new Qb(e)}function Yz(e){return new bm(e)}function Jz(e){return new lp(e)}function Zz(e){return new ax(e)}function Qz(e){return new ym(e)}function eB(e){return new rx(e)}function tB(e){return new sx(e)}function nB(e){return new ix(e)}function aB(e){return new ox(e)}function rB(e){return new fx(e)}function sB(e){return new hx(e)}function iB(e){return new Im(e)}function oB(e){return new dx(e)}function lB(e){return new mx(e)}function uB(e){return new gx(e)}function cB(e){return new yx(e)}function pB(e){return new bx(e)}function dB(e){return new vx(e)}function hB(e){return new wx(e)}function mB(e){return new Ix(e)}function fB(e){return new Sx(e)}function gB(e){return new Nx(e)}function yB(e){return new Tx(e)}function bB(e){return new kx(e)}function xB(e){return new Cx(e)}function vB(e){return new Ax(e)}function wB(e){return new $x(e)}function kB(e){return new Dx(e)}function Eb(e){return new Rx(e)}function IB(e){return Eb(e)}function NB(e){return Eb(e)}function _b(e){return new Ox(e)}function TB(e){return _b(e)}function SB(e){return _b(e)}function Fb(e){return new zx(e)}function CB(e){return Fb(e)}function EB(e){return Fb(e)}function _B(e){return new Bx(e)}function FB(e){return new Vx(e)}function L1(e){return new Wx(e)}function z1(e){return new Ux(e)}function B1(e){return new Mx(e)}function W1(e){return new Px(e)}function AB(e){return new Lx(e)}function $B(e){return new ux(e)}function DB(e){return new wm(e)}function MB(e){return new cx(e)}function RB(e){return new up(e)}function PB(e){return new lx(e)}function OB(e){return new vm(e)}function LB(e){return new px(e)}function zB(e){return new km(e)}function BB(e){return new tr(e)}function WB(e){return new xm(e)}function VB(e){return new Hx(e)}function UB(e){return new Gx(e)}var GB=L1,HB=z1,jB=B1,qB=W1;function KB(e){return new Ex(e)}function XB(e){return new _x(e)}function YB(e){return new Fx(e)}function JB(e){return new xx(e)}var KI={};Oe(KI,{MAPE:()=>C4,MSE:()=>F4,binaryAccuracy:()=>y4,binaryCrossentropy:()=>b4,categoricalAccuracy:()=>v4,categoricalCrossentropy:()=>w4,cosineProximity:()=>N4,mape:()=>E4,meanAbsoluteError:()=>T4,meanAbsolutePercentageError:()=>S4,meanSquaredError:()=>_4,mse:()=>A4,precision:()=>k4,recall:()=>I4,sparseCategoricalAccuracy:()=>x4});function y4(e,t){return Pb(e,t)}function b4(e,t){return nI(e,t)}function x4(e,t){return aI(e,t)}function v4(e,t){return Ob(e,t)}function w4(e,t){return Lb(e,t)}function k4(e,t){return tI(e,t)}function I4(e,t){return gW(e,t)}function N4(e,t){return Mb(e,t)}function T4(e,t){return lm(e,t)}function S4(e,t){return Jl(e,t)}function C4(e,t){return Jl(e,t)}function E4(e,t){return Jl(e,t)}function _4(e,t){return zi(e,t)}function F4(e,t){return zi(e,t)}function A4(e,t){return zi(e,t)}var XI={};Oe(XI,{modelFromJSON:()=>YW});var YI={};Oe(YI,{l1:()=>D4,l1l2:()=>$4,l2:()=>M4});function $4(e){return new ip(e)}function D4(e){return r4(e)}function M4(e){return s4(e)}var JI=class extends Yl{constructor(){super(...arguments);this.model=null}setModel(e){if(!(e instanceof Sr))throw new Error("model must be a LayersModel, not some other Container");this.model=e}};function Tm(e,t){return et}var QI=class extends JI{constructor(e){super();if(e==null&&(e={}),e.restoreBestWeights)throw new $e("restoreBestWeights = True is not implemented in EarlyStopping yet.");this.monitor=e.monitor||"val_loss",this.minDelta=Math.abs(e.minDelta||0),this.patience=e.patience||0,this.verbose=e.verbose||0,this.mode=e.mode||"auto",this.baseline=e.baseline,["auto","min","max"].indexOf(this.mode)===-1&&(console.warn(`EarlyStopping mode '${this.mode}' is invalid. Falling back to mode 'auto'.`),this.mode="auto"),this.mode==="min"?this.monitorFunc=Tm:this.mode==="max"?this.monitorFunc=ZI:this.monitor.indexOf("acc")!==-1?this.monitorFunc=ZI:this.monitorFunc=Tm,this.monitorFunc===Tm&&(this.minDelta*=-1)}async onTrainBegin(e){this.wait=0,this.stoppedEpoch=0,this.baseline!=null?this.best=this.baseline:this.best=this.monitorFunc===Tm?Infinity:-Infinity}async onEpochEnd(e,t){await os(t);let n=this.getMonitorValue(t);n!=null&&(this.monitorFunc(n-this.minDelta,this.best)?(this.best=n,this.wait=0):(this.wait++,this.wait>=this.patience&&(this.stoppedEpoch=e,this.model.stopTraining=!0)))}async onTrainEnd(e){this.stoppedEpoch>0&&this.verbose&&console.log(`Epoch ${this.stoppedEpoch}: early stopping.`)}getMonitorValue(e){e==null&&(e={});let t=e[this.monitor];return t==null&&console.warn(`Metric for EarlyStopping ${this.monitor} is not available. Available metrics are: ${Object.keys(e)}`),t}};function R4(e){return new QI(e)}var P4={earlyStopping:R4},Ra;(function(e){e[e.DT_INVALID=0]="DT_INVALID",e[e.DT_FLOAT=1]="DT_FLOAT",e[e.DT_DOUBLE=2]="DT_DOUBLE",e[e.DT_INT32=3]="DT_INT32",e[e.DT_UINT8=4]="DT_UINT8",e[e.DT_INT16=5]="DT_INT16",e[e.DT_INT8=6]="DT_INT8",e[e.DT_STRING=7]="DT_STRING",e[e.DT_COMPLEX64=8]="DT_COMPLEX64",e[e.DT_INT64=9]="DT_INT64",e[e.DT_BOOL=10]="DT_BOOL",e[e.DT_QINT8=11]="DT_QINT8",e[e.DT_QUINT8=12]="DT_QUINT8",e[e.DT_QINT32=13]="DT_QINT32",e[e.DT_BFLOAT16=14]="DT_BFLOAT16",e[e.DT_FLOAT_REF=101]="DT_FLOAT_REF",e[e.DT_DOUBLE_REF=102]="DT_DOUBLE_REF",e[e.DT_INT32_REF=103]="DT_INT32_REF",e[e.DT_UINT8_REF=104]="DT_UINT8_REF",e[e.DT_INT16_REF=105]="DT_INT16_REF",e[e.DT_INT8_REF=106]="DT_INT8_REF",e[e.DT_STRING_REF=107]="DT_STRING_REF",e[e.DT_COMPLEX64_REF=108]="DT_COMPLEX64_REF",e[e.DT_INT64_REF=109]="DT_INT64_REF",e[e.DT_BOOL_REF=110]="DT_BOOL_REF",e[e.DT_QINT8_REF=111]="DT_QINT8_REF",e[e.DT_QUINT8_REF=112]="DT_QUINT8_REF",e[e.DT_QINT32_REF=113]="DT_QINT32_REF",e[e.DT_BFLOAT16_REF=114]="DT_BFLOAT16_REF"})(Ra||(Ra={}));var eN;(function(e){let t;(function(n){n[n.LEGACY=0]="LEGACY",n[n.V1=1]="V1",n[n.V2=2]="V2"})(t=e.CheckpointFormatVersion||(e.CheckpointFormatVersion={}))})(eN||(eN={}));var jx={};function O4(e,t){let n={tfOpName:e,category:"custom",inputs:[],attrs:[],customExecutor:t};jx[e]=n}function tN(e){return jx[e]}function L4(e){delete jx[e]}function I(e,t,n,a,r){let s=t.inputParams[e];if(s&&s.inputIndexStart!==void 0){let o=s.inputIndexStart,l=s.inputIndexEnd===0?void 0:s.inputIndexEnd===void 0?o+1:s.inputIndexEnd;if(s.type==="tensor")return Sn(t.inputNames[s.inputIndexStart],n,a,r);if(s.type==="tensors")return t.inputNames.slice(o,l).map(p=>Sn(p,n,a,r));let c=Sn(t.inputNames.slice(o)[0],n,a,r),u=c.dataSync();return s.type==="number"?u[0]:k.toNestedArray(c.shape,u)}let i=t.attrParams[e];return i&&i.value}function Sn(e,t,n,a){let[r,s]=Ln(e);if(a!=null){let o=a.getHashTableHandleByName(r);if(o!=null)return o}let i=n.currentContextIds.find(o=>!!t[Sm(r,o)]);return i!==void 0?t[Sm(r,i)][s]:void 0}function z4(e,t,n){return t[Sm(e,n.currentContextId)]}function Cr(e,t){let[n,a]=Ln(e);return[Sm(n,t&&t.currentContextId),a]}function Sm(e,t){return t?`${e}-${t}`:e}function Ln(e){let t=e.split(":");return t.length===1?[e,0]:[t[0],Number(t[t.length-1])]}function Cm(e,t,n){let a=I("pad",e,t,n);if(a==="explicit"){a=I("explicitPaddings",e,t,n);let r=[[0,0],[0,0],[0,0],[0,0]];for(let s=0;s<4;s++)r[s][0]=a[s*2],r[s][1]=a[s*2+1];return r}return a}function Er(e){return e.kept?e:Yr(e)}var nN={};Oe(nN,{json:()=>B4});var B4=[{tfOpName:"Add",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddV2",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddN",category:"arithmetic",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"BiasAdd",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"Sub",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"RealDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Div",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"DivNoNan",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mul",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Maximum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Minimum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Pow",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SquaredDifference",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorMod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],aN={};Oe(aN,{json:()=>W4});var W4=[{tfOpName:"Abs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan2",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ceil",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ClipByValue",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"clipValueMin",type:"number"},{start:2,name:"clipValueMax",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Complex",category:"basic_math",inputs:[{start:0,name:"real",type:"tensor"},{start:1,name:"imag",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ComplexAbs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Elu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Exp",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Floor",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Imag",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Neg",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Real",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Prelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"alpha",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu6",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Selu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sigmoid",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Rsqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Square",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sign",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Round",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Expm1",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log1p",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Reciprocal",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Softplus",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Erf",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Prod",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axes",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LeakyRelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"alpha",name:"alpha",type:"number",defaultValue:.2},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],rN={};Oe(rN,{json:()=>V4});var V4=[{tfOpName:"EmptyTensorList",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"maxNumElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"LoopCond",category:"control",inputs:[{start:0,name:"pred",type:"tensor"}]},{tfOpName:"Switch",category:"control",inputs:[{start:0,name:"data",type:"tensor"},{start:1,name:"pred",type:"tensor"}]},{tfOpName:"Merge",category:"control",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"Enter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"frame_name",name:"frameName",type:"string"},{tfName:"is_constant",name:"isConstant",type:"bool"}]},{tfOpName:"Exit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NextIteration",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayV3",category:"control",inputs:[{start:0,name:"size",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"dynamic_size",name:"dynamicSize",type:"bool"},{tfName:"clear_after_read",name:"clearAfterRead",type:"bool"},{tfName:"identical_element_shapes",name:"identicalElementShapes",type:"bool"},{tfName:"tensor_array_name",name:"name",type:"string"}]},{tfOpName:"TensorArrayWriteV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayReadV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayGatherV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"}]},{tfOpName:"TensorArrayScatterV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArrayConcatV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape_except0",name:"elementShapeExcept0",type:"shape",notSupported:!0}]},{tfOpName:"TensorArraySplitV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"tensor",type:"tensor"},{start:2,name:"lengths",type:"number[]"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArraySizeV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}]},{tfOpName:"TensorArrayCloseV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"}]},{tfOpName:"StatelessIf",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"If",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"StatelessWhile",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"While",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"TensorListScatter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListScatterV2",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"},{start:3,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGather",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListSetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListReserve",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListFromTensor",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListStack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"},{tfName:"num_elements",name:"numElements",type:"dtype"}]},{tfOpName:"TensorListSplit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"},{start:2,name:"lengths",type:"number[]"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListConcat",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"}],attrs:[{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPopBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPushBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]}],sN={};Oe(sN,{json:()=>U4});var U4=[{tfOpName:"AvgPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[],notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPoolWithArgmax",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"include_batch_in_index",name:"includeBatchInIndex",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AvgPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Conv1D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"stride",name:"stride",type:"number"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NWC"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"dilation",name:"dilation",type:"number",defaultValue:1}]},{tfOpName:"Conv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"useCudnnOnGpu",name:"useCudnnOnGpu",type:"bool"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"_FusedConv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"use_cudnn_on_gpu",name:"useCudnnOnGpu",type:"bool",defaultValue:!0},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"leakyrelu_alpha",name:"leakyreluAlpha",type:"number"}]},{tfOpName:"Conv2DBackpropInput",category:"convolution",inputs:[{start:2,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:0,name:"outputShape",type:"number[]"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]",notSupported:!0}]},{tfOpName:"DepthwiseConv2d",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"DepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"FusedDepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]}]},{tfOpName:"Conv3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"Dilation2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"rates",name:"dilations",type:"number[]"},{tfName:"padding",name:"pad",type:"string"}]}],iN={};Oe(iN,{json:()=>G4});var G4=[{tfOpName:"Fill",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"},{start:1,name:"value",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"LinSpace",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"num",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"OneHot",category:"creation",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"depth",type:"number"},{start:2,name:"onValue",type:"number",defaultValue:1},{start:3,name:"offValue",type:"number",defaultValue:0}],attrs:[{tfName:"axis",name:"axis",type:"number",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ones",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"OnesLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"RandomUniform",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"minval",name:"minval",type:"number",defaultValue:0},{tfName:"maxval",name:"maxval",type:"number",defaultValue:1},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"seed",name:"seed",type:"number",defaultValue:0},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Range",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"step",type:"number",defaultValue:0}],attrs:[{tfName:"Tidx",name:"dtype",type:"dtype"}]},{tfOpName:"TruncatedNormal",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"means",name:"mean",type:"number",defaultValue:0},{tfName:"stddev",name:"stdDev",type:"number",defaultValue:1},{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Zeros",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"ZerosLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"Multinomial",category:"creation",inputs:[{start:0,name:"logits",type:"tensor"},{start:1,name:"numSamples",type:"number"}],attrs:[{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number"},{tfName:"T",name:"dtype",type:"dtype"},{tfName:"output_dtype",name:"output_dtype",type:"dtype"}]}],oN={};Oe(oN,{json:()=>H4});var H4=[{tfOpName:"NonMaxSuppressionV2",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV3",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV4",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"T_threshold",name:"threshold",type:"dtype",notSupported:!0},{tfName:"pad_to_max_output_size",name:"padToMaxOutputSize",type:"bool"}]},{tfOpName:"NonMaxSuppressionV5",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"},{start:5,name:"softNmsSigma",type:"number"}]},{tfOpName:"Where",category:"dynamic",inputs:[{start:0,name:"condition",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ListDiff",category:"dynamic",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],lN={};Oe(lN,{json:()=>j4});var j4=[{tfOpName:"TopKV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"k",type:"number"}],attrs:[{tfName:"sorted",name:"sorted",type:"bool"}]},{tfOpName:"Unique",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"UniqueV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]}],uN={};Oe(uN,{json:()=>q4});var q4=[{tfOpName:"PlaceholderWithDefault",category:"graph",inputs:[{start:0,name:"default",type:"tensor"}],attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Placeholder",category:"graph",attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Const",category:"graph"},{tfOpName:"Identity",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IdentityN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Snapshot",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Rank",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Size",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Shape",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"ShapeN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Print",category:"graph",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"data",type:"tensors"}],attrs:[{tfName:"message",name:"message",type:"string"},{tfName:"first_n",name:"firstN",type:"number",notSupported:!0},{tfName:"summarize",name:"summarize",type:"number",defaultValue:3}]},{tfOpName:"NoOp",category:"graph",inputs:[]},{tfOpName:"StopGradient",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"FakeQuantWithMinMaxVars",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"min",name:"min",type:"number"},{tfName:"max",name:"max",type:"number"}]}],cN={};Oe(cN,{json:()=>K4});var K4=[{tfOpName:"HashTable",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"HashTableV2",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"LookupTableImport",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableImportV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFind",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFindV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]}],pN={};Oe(pN,{json:()=>X4});var X4=[{tfOpName:"ResizeBilinear",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"half_pixel_centers",name:"halfPixelCenters",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ResizeNearestNeighbor",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"half_pixel_centers",name:"halfPixelCenters",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"CropAndResize",category:"image",inputs:[{start:0,name:"image",type:"tensor"},{start:1,name:"boxes",type:"tensor"},{start:2,name:"boxInd",type:"tensor"},{start:3,name:"cropSize",type:"number[]"}],attrs:[{tfName:"method",name:"method",type:"string"},{tfName:"extrapolation_value",name:"extrapolationValue",type:"number"}]}],dN={};Oe(dN,{json:()=>Y4});var Y4=[{tfOpName:"Equal",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NotEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Greater",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"GreaterEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Less",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LessEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalAnd",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalNot",category:"logical",inputs:[{start:0,name:"a",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalOr",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Select",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SelectV2",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],hN={};Oe(hN,{json:()=>J4});var J4=[{tfOpName:"_FusedMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMulV2",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Transpose",category:"matrices",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"perm",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],mN={};Oe(mN,{json:()=>Z4});var Z4=[{tfOpName:"FusedBatchNorm",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV2",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV3",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"LRN",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"depth_radius",name:"radius",type:"number",defaultValue:5},{tfName:"bias",name:"bias",type:"number",defaultValue:1},{tfName:"alpha",name:"alpha",type:"number",defaultValue:1},{tfName:"beta",name:"beta",type:"number",defaultValue:.5}]},{tfOpName:"Softmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"LogSoftmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"SparseToDense",category:"normalization",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!0,notSupported:!0}]}],fN={};Oe(fN,{json:()=>Q4});var Q4=[{tfOpName:"Bincount",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"size",type:"number"},{start:2,name:"weights",type:"tensor"}]},{tfOpName:"DenseBincount",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"size",type:"number"},{start:2,name:"weights",type:"tensor"}],attrs:[{tfName:"binary_output",name:"binaryOutput",type:"bool"}]},{tfOpName:"Max",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Mean",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Min",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Sum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"All",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Any",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"ArgMax",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"ArgMin",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"Prod",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Cumsum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}],attrs:[{tfName:"exclusive",name:"exclusive",type:"bool"},{tfName:"reverse",name:"reverse",type:"bool"}]}],gN={};Oe(gN,{json:()=>eV});var eV=[{tfOpName:"ConcatV2",category:"slice_join",inputs:[{start:0,end:-1,name:"tensors",type:"tensors"},{start:-1,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"Concat",category:"slice_join",inputs:[{start:1,end:0,name:"tensors",type:"tensors"},{start:0,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"GatherV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"},{start:2,name:"axis",type:"number",defaultValue:0}],attrs:[{tfName:"batch_dims",name:"batchDims",type:"number",defaultValue:0}]},{tfOpName:"Gather",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",notSupported:!0}]},{tfOpName:"Reverse",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"dims",type:"bool[]"}]},{tfOpName:"ReverseV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}]},{tfOpName:"Slice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"size",type:"number[]"}]},{tfOpName:"StridedSlice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"end",type:"number[]"},{start:3,name:"strides",type:"number[]"}],attrs:[{tfName:"begin_mask",name:"beginMask",type:"number",defaultValue:0},{tfName:"end_mask",name:"endMask",type:"number",defaultValue:0},{tfName:"new_axis_mask",name:"newAxisMask",type:"number",defaultValue:0},{tfName:"ellipsis_mask",name:"ellipsisMask",type:"number",defaultValue:0},{tfName:"shrink_axis_mask",name:"shrinkAxisMask",type:"number",defaultValue:0}]},{tfOpName:"Pack",category:"slice_join",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0}]},{tfOpName:"Unpack",category:"slice_join",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0},{tfName:"num",name:"num",type:"number",defaultValue:0,notSupported:!0}]},{tfOpName:"Tile",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"reps",type:"number[]"}]},{tfOpName:"Split",category:"slice_join",inputs:[{start:0,name:"axis",type:"number",defaultValue:0},{start:1,name:"x",type:"tensor"}],attrs:[{tfName:"num_split",name:"numOrSizeSplits",type:"number",defaultValue:1}]},{tfOpName:"SplitV",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"numOrSizeSplits",type:"number[]"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"ScatterNd",category:"slice_join",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"values",type:"tensor"},{start:2,name:"shape",type:"number[]"}]},{tfOpName:"GatherNd",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}]},{tfOpName:"SparseToDense",category:"slice_join",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!1,notSupported:!0}]}],yN={};Oe(yN,{json:()=>tV});var tV=[{tfOpName:"FFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"RFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]},{tfOpName:"IRFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]}],bN={};Oe(bN,{json:()=>nV});var nV=[{tfOpName:"Cast",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"SrcT",name:"sdtype",type:"dtype",notSupported:!0},{tfName:"DstT",name:"dtype",type:"dtype"}]},{tfOpName:"ExpandDims",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"MirrorPad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"mode",name:"mode",type:"string"}]},{tfOpName:"Pad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"constant_value",name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"PadV2",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"},{start:2,name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"Reshape",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}]},{tfOpName:"Squeeze",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"axis",tfDeprecatedName:"squeeze_dims",name:"axis",type:"number[]"}]},{tfOpName:"SpaceToBatchND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"paddings",type:"number[]"}]},{tfOpName:"BatchToSpaceND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"crops",type:"number[]"}]},{tfOpName:"DepthToSpace",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"block_size",name:"blockSize",type:"number"},{tfName:"data_format",name:"dataFormat",type:"string"}]},{tfOpName:"BroadcastTo",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}],attrs:[]}],vN=class{static get Instance(){return this._instance||(this._instance=new this)}constructor(){let e=[nN,aN,rN,sN,iN,oN,lN,dN,pN,uN,hN,mN,fN,gN,yN,bN,cN],t=[].concat(...e.map(n=>n.json));this.opMappers=t.reduce((n,a)=>(n[a.tfOpName]=a,n),{})}transformGraph(e,t={}){let n=e.node,a=[],r=[],s=[],i=n.reduce((m,f)=>(m[f.name]=this.mapNode(f),f.op.startsWith("Placeholder")?a.push(m[f.name]):f.op==="Const"?r.push(m[f.name]):(f.input==null||f.input.length===0)&&s.push(m[f.name]),m),{}),o=[],l=[],c={},u={};t!=null&&(c=this.mapSignatureEntries(t.inputs),u=this.mapSignatureEntries(t.outputs));let p=Object.keys(i);p.forEach(m=>{let f=i[m];f.inputNames.forEach(g=>{let[y]=Cr(g);f.inputs.push(i[y]),i[y].children.push(f)})}),Object.keys(u).length===0?p.forEach(m=>{let f=i[m];f.children.length===0&&l.push(f)}):Object.keys(u).forEach(m=>{let[f]=Cr(m),g=i[f];g!=null&&(g.signatureKey=u[m],l.push(g))}),Object.keys(c).length>0?Object.keys(c).forEach(m=>{let[f]=Cr(m),g=i[f];g&&(g.signatureKey=c[m],o.push(g))}):o=a;let d={};e.library!=null&&e.library.function!=null&&(d=e.library.function.reduce((m,f)=>(m[f.signature.name]=this.mapFunction(f),m),{}));let h={nodes:i,inputs:o,outputs:l,weights:r,placeholders:a,signature:t,functions:d};return s.length>0&&(h.initNodes=s),h}mapSignatureEntries(e){return Object.keys(e||{}).reduce((t,n)=>(t[e[n].name]=n,t),{})}mapNode(e){let t=tN(e.op)||this.opMappers[e.op]||{};e.attr==null&&(e.attr={});let n={name:e.name,op:e.op,category:t.category,inputNames:(e.input||[]).map(a=>a.startsWith("^")?a.substr(1):a),inputs:[],children:[],inputParams:{},attrParams:{},rawAttrs:e.attr};return t.inputs!=null&&(n.inputParams=t.inputs.reduce((a,r)=>(a[r.name]={type:r.type,inputIndexStart:r.start,inputIndexEnd:r.end},a),{})),t.attrs!=null&&(n.attrParams=t.attrs.reduce((a,r)=>{let s=r.type,i;switch(r.type){case"string":i=qx(e.attr,r.tfName,r.defaultValue),i===void 0&&!!r.tfDeprecatedName&&(i=qx(e.attr,r.tfDeprecatedName,r.defaultValue));break;case"string[]":i=tv(e.attr,r.tfName,r.defaultValue),i===void 0&&!!r.tfDeprecatedName&&(i=tv(e.attr,r.tfDeprecatedName,r.defaultValue));break;case"number":i=Xx(e.attr,r.tfName,r.defaultValue||0),i===void 0&&!!r.tfDeprecatedName&&(i=Xx(e.attr,r.tfDeprecatedName,r.defaultValue));break;case"number[]":i=ev(e.attr,r.tfName,r.defaultValue),i===void 0&&!!r.tfDeprecatedName&&(i=ev(e.attr,r.tfDeprecatedName,r.defaultValue));break;case"bool":i=Kx(e.attr,r.tfName,r.defaultValue),i===void 0&&!!r.tfDeprecatedName&&(i=Kx(e.attr,r.tfDeprecatedName,r.defaultValue));break;case"bool[]":i=av(e.attr,r.tfName,r.defaultValue),i===void 0&&!!r.tfDeprecatedName&&(i=av(e.attr,r.tfDeprecatedName,r.defaultValue));break;case"shape":i=Qx(e.attr,r.tfName,r.defaultValue),i===void 0&&!!r.tfDeprecatedName&&(i=Qx(e.attr,r.tfDeprecatedName,r.defaultValue));break;case"shape[]":i=nv(e.attr,r.tfName,r.defaultValue),i===void 0&&!!r.tfDeprecatedName&&(i=nv(e.attr,r.tfDeprecatedName,r.defaultValue));break;case"dtype":i=Jx(e.attr,r.tfName,r.defaultValue),i===void 0&&!!r.tfDeprecatedName&&(i=Jx(e.attr,r.tfDeprecatedName,r.defaultValue));break;case"dtype[]":i=Zx(e.attr,r.tfName,r.defaultValue),i===void 0&&!!r.tfDeprecatedName&&(i=Zx(e.attr,r.tfDeprecatedName,r.defaultValue));break;case"func":i=xN(e.attr,r.tfName,r.defaultValue),i===void 0&&!!r.tfDeprecatedName&&(i=xN(e.attr,r.tfDeprecatedName,r.defaultValue));break;case"tensor":case"tensors":break;default:throw new Error(`Unsupported param type: ${r.type} for op: ${e.op}`)}return a[r.name]={value:i,type:s},a},{})),n}mapFunction(e){let t=e.nodeDef,n=[],a=[],r={};t!=null&&(r=t.reduce((c,u)=>(c[u.name]=this.mapNode(u),u.op==="Const"&&a.push(c[u.name]),c),{}));let s=[],i=[];e.signature.inputArg.forEach(c=>{let[u]=Cr(c.name),p={name:u,op:"Placeholder",inputs:[],inputNames:[],category:"graph",inputParams:{},attrParams:{dtype:{value:Yx(c.type),type:"dtype"}},children:[]};p.signatureKey=c.name,s.push(p),r[u]=p}),Object.keys(r).forEach(c=>{let u=r[c];u.inputNames.forEach(p=>{let[d]=Cr(p);u.inputs.push(r[d]),r[d].children.push(u)})});let o=e.ret;e.signature.outputArg.forEach(c=>{let[u,p]=Cr(o[c.name]),d=r[u];d!=null&&(d.defaultOutput=p,i.push(d))});let l=this.mapArgsToSignature(e);return{nodes:r,inputs:s,outputs:i,weights:a,placeholders:n,signature:l}}mapArgsToSignature(e){return{methodName:e.signature.name,inputs:e.signature.inputArg.reduce((t,n)=>(t[n.name]=this.mapArgToTensorInfo(n),t),{}),outputs:e.signature.outputArg.reduce((t,n)=>(t[n.name]=this.mapArgToTensorInfo(n,e.ret),t),{})}}mapArgToTensorInfo(e,t){let n=e.name;return t!=null&&(n=t[n]),{name:n,dtype:e.type}}};function aV(e){let t=ee().global;if(typeof t.atob!="undefined")return t.atob(e);if(typeof Buffer!="undefined")return new Buffer(e,"base64").toString();throw new Error("Unable to decode base64 in this environment. Missing built-in atob() or Buffer()")}function wN(e,t){let n=Array.isArray(e)?String.fromCharCode.apply(null,e):aV(e);return t?n:n.toLowerCase()}function qx(e,t,n,a=!1){let r=e[t];return r!=null?wN(r.s,a):n}function Kx(e,t,n){let a=e[t];return a?a.b:n}function Xx(e,t,n){let a=e[t]||{},r=a.i!=null?a.i:a.f!=null?a.f:n;return typeof r=="number"?r:parseInt(r,10)}function Yx(e){switch(typeof e=="string"&&(e=Ra[e]),e){case Ra.DT_FLOAT:return"float32";case Ra.DT_INT32:case Ra.DT_INT64:case Ra.DT_INT8:case Ra.DT_UINT8:return"int32";case Ra.DT_BOOL:return"bool";case Ra.DT_DOUBLE:return"float32";case Ra.DT_STRING:return"string";default:return null}}function xN(e,t,n){let a=e[t];return a&&a.func?a.func.name:n}function Jx(e,t,n){let a=e[t];return a&&a.type?Yx(a.type):n}function Zx(e,t,n){let a=e[t];return a&&a.list&&a.list.type?a.list.type.map(r=>Yx(r)):n}function kN(e){if(!e.unknownRank)return e.dim!=null?e.dim.map(t=>typeof t.size=="number"?t.size:parseInt(t.size,10)):[]}function Qx(e,t,n){let a=e[t];return a&&a.shape?kN(a.shape):n}function ev(e,t,n){let a=e[t];return a?((a.list.f&&a.list.f.length?a.list.f:a.list.i)||[]).map(r=>typeof r=="number"?r:parseInt(r,10)):n}function tv(e,t,n,a=!1){let r=e[t];return r&&r.list&&r.list.s?r.list.s.map(s=>wN(s,a)):n}function nv(e,t,n){let a=e[t];return a&&a.list&&a.list.shape?a.list.shape.map(r=>kN(r)):n}function av(e,t,n){let a=e[t];return a&&a.list&&a.list.b?a.list.b:n}var rV=class{constructor(e,t,n){this.node=e,this.tensorMap=t,this.context=n,this.inputs=[],this.attrs={},this.inputs=e.inputNames.map(a=>this.getInput(a)),e.rawAttrs!=null&&(this.attrs=Object.keys(e.rawAttrs).reduce((a,r)=>(a[r]=this.getAttr(r),a),{}))}getInput(e){return Sn(e,this.tensorMap,this.context)}getAttr(e,t){let n=this.node.rawAttrs[e];if(n.tensor!=null)return Sn(e,this.tensorMap,this.context);if(n.i!=null||n.f!=null)return Xx(this.node.rawAttrs,e,t);if(n.s!=null)return qx(this.node.rawAttrs,e,t);if(n.b!=null)return Kx(this.node.rawAttrs,e,t);if(n.shape!=null)return Qx(this.node.rawAttrs,e,t);if(n.type!=null)return Jx(this.node.rawAttrs,e,t);if(n.list!=null){if(n.list.i!=null||n.list.f!=null)return ev(this.node.rawAttrs,e,t);if(n.list.s!=null)return tv(this.node.rawAttrs,e,t);if(n.list.shape!=null)return nv(this.node.rawAttrs,e,t);if(n.list.b!=null)return av(this.node.rawAttrs,e,t);if(n.list.type!=null)return Zx(this.node.rawAttrs,e,t)}return t}},sV=(e,t,n)=>{switch(e.op){case"BiasAdd":case"AddV2":case"Add":return[Z(I("a",e,t,n),I("b",e,t,n))];case"AddN":return[Y0(I("tensors",e,t,n))];case"FloorMod":case"Mod":return[wh(I("a",e,t,n),I("b",e,t,n))];case"Mul":return[L(I("a",e,t,n),I("b",e,t,n))];case"RealDiv":case"Div":return[ve(I("a",e,t,n),I("b",e,t,n))];case"DivNoNan":return[Py(I("a",e,t,n),I("b",e,t,n))];case"FloorDiv":return[uh(I("a",e,t,n),I("b",e,t,n))];case"Sub":return[fe(I("a",e,t,n),I("b",e,t,n))];case"Minimum":return[Fi(I("a",e,t,n),I("b",e,t,n))];case"Maximum":return[Ta(I("a",e,t,n),I("b",e,t,n))];case"Pow":return[Xa(I("a",e,t,n),I("b",e,t,n))];case"SquaredDifference":return[jc(I("a",e,t,n),I("b",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},iV=(e,t,n)=>{switch(e.op){case"Abs":case"ComplexAbs":return[Wt(I("x",e,t,n))];case"Acos":return[vy(I("x",e,t,n))];case"Acosh":return[wy(I("x",e,t,n))];case"Asin":return[Iy(I("x",e,t,n))];case"Asinh":return[Ny(I("x",e,t,n))];case"Atan":return[Ty(I("x",e,t,n))];case"Atan2":return[Sy(I("x",e,t,n),I("y",e,t,n))];case"Atanh":return[Cy(I("x",e,t,n))];case"Ceil":return[Ay(I("x",e,t,n))];case"Complex":return[qr(I("real",e,t,n),I("imag",e,t,n))];case"Cos":return[Pc(I("x",e,t,n))];case"Cosh":return[mh(I("x",e,t,n))];case"Elu":return[Ll(I("x",e,t,n))];case"Erf":return[Oy(I("x",e,t,n))];case"Exp":return[hn(I("x",e,t,n))];case"Expm1":return[Ly(I("x",e,t,n))];case"Floor":return[zl(I("x",e,t,n))];case"Log":return[Dn(I("x",e,t,n))];case"Log1p":return[yh(I("x",e,t,n))];case"Imag":return[gh(I("x",e,t,n))];case"Neg":return[St(I("x",e,t,n))];case"Reciprocal":return[Ky(I("x",e,t,n))];case"Real":return[Vc(I("x",e,t,n))];case"Relu":return[Xe(I("x",e,t,n))];case"Round":return[Xy(I("x",e,t,n))];case"Selu":return[Ch(I("x",e,t,n))];case"Sigmoid":return[ca(I("x",e,t,n))];case"Sin":return[Eh(I("x",e,t,n))];case"Sign":return[Yy(I("x",e,t,n))];case"Sinh":return[_h(I("x",e,t,n))];case"Softplus":return[Bl(I("x",e,t,n))];case"Sqrt":return[an(I("x",e,t,n))];case"Square":return[ot(I("x",e,t,n))];case"Tanh":return[Ol(I("x",e,t,n))];case"Tan":return[Qy(I("x",e,t,n))];case"ClipByValue":return[Yt(I("x",e,t,n),I("clipValueMin",e,t,n),I("clipValueMax",e,t,n))];case"Relu6":return[Th(I("x",e,t,n))];case"Rsqrt":return[Sh(Sn(e.inputNames[0],t,n))];case"Prod":return[Ih(I("x",e,t,n),I("axes",e,t,n))];case"LeakyRelu":return[Oc(I("x",e,t,n),I("alpha",e,t,n))];case"Prelu":return[Wc(I("x",e,t,n),I("alpha",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};function fa(e,t,n=""){k.assert(oV(e,t),()=>n+` Shapes ${e} and ${t} must match`)}function oV(e,t){if(e.length!==t.length)return!1;for(let n=0;n{(e==null||!e.has(t.tensor.id))&&t.tensor.dispose()}),this.tensors=[],this.closed_=!0,this.idTensor.dispose()}size(){return this.tensors.length}read(e){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(e<0||e>=this.size())throw new Error(`Tried to read from index ${e}, but array size is: ${this.size()}`);let t=this.tensors[e];if(t.cleared)throw new Error(`TensorArray ${this.name}: Could not read index ${e} twice because it was cleared after a previous read (perhaps try setting clear_after_read = false?).`);return this.clearAfterRead&&(t.cleared=!0),t.read=!0,t.tensor}readMany(e){return e.map(t=>this.read(t))}write(e,t){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(e<0||!this.dynamicSize&&e>=this.maxSize)throw new Error(`Tried to write to index ${e}, but array is not resizeable and size is: ${this.maxSize}`);let n=this.tensors[e]||{};if(t.dtype!==this.dtype)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e}, + because the value dtype is ${t.dtype}, but TensorArray dtype is ${this.dtype}.`);if(this.size()===0&&(this.elementShape==null||this.elementShape.length===0)&&(this.elementShape=t.shape),fa(this.elementShape,t.shape,`TensorArray ${this.name}: Could not write to TensorArray index ${e}.`),n.read)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e}, because it has already been read.`);if(n.written)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e}, because it has already been written.`);n.tensor=t,Xt(t),n.written=!0,this.tensors[e]=n}writeMany(e,t){if(e.length!==t.length)throw new Error(`TensorArray ${this.name}: could not write multiple tensors,because the index size: ${e.length} is not the same as tensors size: ${t.length}.`);e.forEach((n,a)=>this.write(n,t[a]))}gather(e,t){if(!!t&&t!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but gather requested dtype ${t}`);if(e)e=e.slice(0,this.size());else{e=[];for(let a=0;a=this.maxSize)throw new Error(`Max index must be < array size (${n} vs. ${this.maxSize})`);this.writeMany(e,pt(t,0))}split(e,t){if(t.dtype!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but tensor has dtype ${t.dtype}`);let n=0,a=e.map(o=>(n+=o,n));if(n!==t.shape[0])throw new Error(`Expected sum of lengths to be equal to tensor.shape[0], but sum of lengths is - ${totalLength}, and tensor's shape is: ${tensor2.shape}`);if(!this.dynamicSize&&length.length!==this.maxSize)throw new Error(`TensorArray's size is not equal to the size of lengths (${this.maxSize} vs. ${length.length}), and the TensorArray is not marked as dynamically resizeable`);let elementPerRow=totalLength===0?0:tensor2.size/totalLength,tensors=[];tidy(()=>{tensor2=reshape(tensor2,[1,totalLength,elementPerRow]);for(let i=0;i{if(elementDtype!==tensor2.dtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${tensor2.dtype}`);assertShapesMatchAllowUndefinedSize(elementShape,tensor2.shape,"TensorList shape mismatch: "),keep(tensor2)}),this.idTensor=scalar(0),this.maxNumElements=maxNumElements,keep(this.idTensor)}get id(){return this.idTensor.id}copy(){return new TensorList([...this.tensors],this.elementShape,this.elementDtype)}clearAndClose(keepIds){this.tensors.forEach(tensor2=>{(keepIds==null||!keepIds.has(tensor2.id))&&tensor2.dispose()}),this.tensors.length=0,this.idTensor.dispose()}size(){return this.tensors.length}stack(elementShape,elementDtype,numElements=-1){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(numElements!==-1&&this.tensors.length!==numElements)throw new Error(`Operation expected a list with ${numElements} elements but got a list with ${this.tensors.length} elements.`);return assertShapesMatchAllowUndefinedSize(elementShape,this.elementShape,"TensorList shape mismatch: "),tidy(()=>{let reshapedTensors=this.tensors.map(tensor2=>reshape(tensor2,elementShape));return stack(reshapedTensors,0)})}popBack(elementShape,elementDtype){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(this.size()===0)throw new Error("Trying to pop from an empty list.");let tensor2=this.tensors.pop();return assertShapesMatchAllowUndefinedSize(tensor2.shape,elementShape,"TensorList shape mismatch: "),reshape(tensor2,elementShape)}pushBack(tensor2){if(tensor2.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${tensor2.dtype}, but list elements ${this.elementDtype}`);if(assertShapesMatchAllowUndefinedSize(tensor2.shape,this.elementShape,"TensorList shape mismatch: "),this.maxNumElements===this.size())throw new Error("Trying to push element into a full list.");keep(tensor2),this.tensors.push(tensor2)}resize(size){if(size<0)throw new Error(`TensorListResize expects size to be non-negative. Got: ${size}`);if(this.maxNumElements!==-1&&size>this.maxNumElements)throw new Error(`TensorListResize input size ${size} is greater maxNumElement ${this.maxNumElements}.`);this.tensors.length=size}getItem(elementIndex,elementShape,elementDtype){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(elementIndex<0||elementIndex>this.tensors.length)throw new Error(`Trying to access element ${elementIndex} in a list with ${this.tensors.length} elements.`);if(this.tensors[elementIndex]==null)throw new Error(`element at index ${elementIndex} is null.`);return assertShapesMatchAllowUndefinedSize(this.tensors[elementIndex].shape,elementShape,"TensorList shape mismatch: "),this.tensors[elementIndex]}setItem(elementIndex,tensor2){if(tensor2.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${tensor2.dtype}, but list elements ${this.elementDtype}`);if(elementIndex<0||this.maxNumElements!==-1&&elementIndex>=this.maxNumElements)throw new Error(`Trying to set element ${elementIndex} in a list with max ${this.maxNumElements} elements.`);assertShapesMatchAllowUndefinedSize(this.elementShape,tensor2.shape,"TensorList shape mismatch: "),keep(tensor2),this.tensors[elementIndex]=tensor2}gather(indices,elementDtype,elementShape){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);return assertShapesMatchAllowUndefinedSize(this.elementShape,elementShape,"TensorList shape mismatch: "),indices=indices.slice(0,this.size()),indices.length===0?tensor([],[0].concat(this.elementShape)):tidy(()=>{let tensors=indices.map(i=>reshape(this.tensors[i],elementShape));return stack(tensors,0)})}concat(elementDtype,elementShape){if(!!elementDtype&&elementDtype!==this.elementDtype)throw new Error(`TensorList dtype is ${this.elementDtype} but concat requested dtype ${elementDtype}`);return assertShapesMatchAllowUndefinedSize(this.elementShape,elementShape,"TensorList shape mismatch: "),this.size()===0?tensor([],[0].concat(this.elementShape)):tidy(()=>{let tensors=this.tensors.map(t=>reshape(t,elementShape));return concat(tensors,0)})}};function fromTensor(tensor2,elementShape,elementDtype){let dtype=tensor2.dtype;if(tensor2.shape.length<1)throw new Error(`Tensor must be at least a vector, but saw shape: ${tensor2.shape}`);if(tensor2.dtype!==elementDtype)throw new Error(`Invalid data types; op elements ${tensor2.dtype}, but list elements ${elementDtype}`);let outputShape=tensor2.shape.slice(1);assertShapesMatchAllowUndefinedSize(outputShape,elementShape,"TensorList shape mismatch: ");let tensorList=unstack(tensor2);return new TensorList(tensorList,elementShape,dtype)}function reserve(elementShape,elementDtype,numElements){return new TensorList([],elementShape,elementDtype,numElements)}function scatter(tensor2,indices,elementShape,numElements){if(indices.length!==tensor2.shape[0])throw new Error(`Expected len(indices) == tensor.shape[0], but saw: ${indices.length} vs. ${tensor2.shape[0]}`);let maxIndex=Math.max(...indices);if(numElements!=null&&numElements!==-1&&maxIndex>=numElements)throw new Error(`Max index must be < array size (${maxIndex} vs. ${numElements})`);let list=new TensorList([],elementShape,tensor2.dtype,numElements),tensors=unstack(tensor2,0);return indices.forEach((value,index)=>{list.setItem(value,tensors[index])}),list}function split2(tensor2,length,elementShape){let totalLength=0,cumulativeLengths=length.map(len=>(totalLength+=len,totalLength));if(totalLength!==tensor2.shape[0])throw new Error(`Expected sum of lengths to be equal to + ${n}, and tensor's shape is: ${t.shape}`);if(!this.dynamicSize&&e.length!==this.maxSize)throw new Error(`TensorArray's size is not equal to the size of lengths (${this.maxSize} vs. ${e.length}), and the TensorArray is not marked as dynamically resizeable`);let r=n===0?0:t.size/n,s=[];D(()=>{t=j(t,[1,n,r]);for(let o=0;o{if(n!==r.dtype)throw new Error(`Invalid data types; op elements ${n}, but list elements ${r.dtype}`);fa(t,r.shape,"TensorList shape mismatch: "),Xt(r)}),this.idTensor=de(0),this.maxNumElements=a,Xt(this.idTensor)}get id(){return this.idTensor.id}copy(){return new dp([...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(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);if(n!==-1&&this.tensors.length!==n)throw new Error(`Operation expected a list with ${n} elements but got a list with ${this.tensors.length} elements.`);return fa(e,this.elementShape,"TensorList shape mismatch: "),D(()=>{let a=this.tensors.map(r=>j(r,e));return Mt(a,0)})}popBack(e,t){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);if(this.size()===0)throw new Error("Trying to pop from an empty list.");let n=this.tensors.pop();return fa(n.shape,e,"TensorList shape mismatch: "),j(n,e)}pushBack(e){if(e.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${e.dtype}, but list elements ${this.elementDtype}`);if(fa(e.shape,this.elementShape,"TensorList shape mismatch: "),this.maxNumElements===this.size())throw new Error("Trying to push element into a full list.");Xt(e),this.tensors.push(e)}resize(e){if(e<0)throw new Error(`TensorListResize expects size to be non-negative. Got: ${e}`);if(this.maxNumElements!==-1&&e>this.maxNumElements)throw new Error(`TensorListResize input size ${e} is greater maxNumElement ${this.maxNumElements}.`);this.tensors.length=e}getItem(e,t,n){if(n!==this.elementDtype)throw new Error(`Invalid data types; op elements ${n}, but list elements ${this.elementDtype}`);if(e<0||e>this.tensors.length)throw new Error(`Trying to access element ${e} in a list with ${this.tensors.length} elements.`);if(this.tensors[e]==null)throw new Error(`element at index ${e} is null.`);return fa(this.tensors[e].shape,t,"TensorList shape mismatch: "),this.tensors[e]}setItem(e,t){if(t.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t.dtype}, but list elements ${this.elementDtype}`);if(e<0||this.maxNumElements!==-1&&e>=this.maxNumElements)throw new Error(`Trying to set element ${e} in a list with max ${this.maxNumElements} elements.`);fa(this.elementShape,t.shape,"TensorList shape mismatch: "),Xt(t),this.tensors[e]=t}gather(e,t,n){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);return fa(this.elementShape,n,"TensorList shape mismatch: "),e=e.slice(0,this.size()),e.length===0?Xn([],[0].concat(this.elementShape)):D(()=>{let a=e.map(r=>j(this.tensors[r],n));return Mt(a,0)})}concat(e,t){if(!!e&&e!==this.elementDtype)throw new Error(`TensorList dtype is ${this.elementDtype} but concat requested dtype ${e}`);return fa(this.elementShape,t,"TensorList shape mismatch: "),this.size()===0?Xn([],[0].concat(this.elementShape)):D(()=>{let n=this.tensors.map(a=>j(a,t));return Ze(n,0)})}};function uV(e,t,n){let a=e.dtype;if(e.shape.length<1)throw new Error(`Tensor must be at least a vector, but saw shape: ${e.shape}`);if(e.dtype!==n)throw new Error(`Invalid data types; op elements ${e.dtype}, but list elements ${n}`);let r=e.shape.slice(1);fa(r,t,"TensorList shape mismatch: ");let s=pt(e);return new dp(s,t,a)}function cV(e,t,n){return new dp([],e,t,n)}function pV(e,t,n,a){if(t.length!==e.shape[0])throw new Error(`Expected len(indices) == tensor.shape[0], but saw: ${t.length} vs. ${e.shape[0]}`);let r=Math.max(...t);if(a!=null&&a!==-1&&r>=a)throw new Error(`Max index must be < array size (${r} vs. ${a})`);let s=new dp([],n,e.dtype,a),i=pt(e,0);return t.forEach((o,l)=>{s.setItem(o,i[l])}),s}function dV(e,t,n){let a=0,r=t.map(l=>(a+=l,a));if(a!==e.shape[0])throw new Error(`Expected sum of lengths to be equal to tensor.shape[0], but sum of lengths is - ${totalLength}, and tensor's shape is: ${tensor2.shape}`);let elementPerRow=totalLength===0?0:tensor2.size/totalLength,tensors=tidy(()=>{let tensors2=[];tensor2=reshape(tensor2,[1,totalLength,elementPerRow]);for(let i=0;i{switch(node2.op){case"If":case"StatelessIf":{let thenFunc=getParamValue("thenBranch",node2,tensorMap,context),elseFunc=getParamValue("elseBranch",node2,tensorMap,context),cond=getParamValue("cond",node2,tensorMap,context),args=getParamValue("args",node2,tensorMap,context);return(await cond.data())[0]?context.functionMap[thenFunc].executeFunctionAsync(args,context.tensorArrayMap,context.tensorListMap):context.functionMap[elseFunc].executeFunctionAsync(args,context.tensorArrayMap,context.tensorListMap)}case"While":case"StatelessWhile":{let bodyFunc=getParamValue("body",node2,tensorMap,context),condFunc=getParamValue("cond",node2,tensorMap,context),args=getParamValue("args",node2,tensorMap,context),condResult=await context.functionMap[condFunc].executeFunctionAsync(args,context.tensorArrayMap,context.tensorListMap),argIds=args.map(tensor2=>tensor2.id),condValue=await condResult[0].data();condResult.forEach(tensor2=>{!tensor2.kept&&argIds.indexOf(tensor2.id)===-1&&tensor2.dispose()});let result=args;for(;condValue[0];){let origResult=result;result=await context.functionMap[bodyFunc].executeFunctionAsync(result,context.tensorArrayMap,context.tensorListMap);let resultIds=result.map(tensor2=>tensor2.id);origResult.forEach(tensor2=>{!tensor2.kept&&argIds.indexOf(tensor2.id)===-1&&resultIds.indexOf(tensor2.id)===-1&&tensor2.dispose()});let condResult2=await context.functionMap[condFunc].executeFunctionAsync(result,context.tensorArrayMap,context.tensorListMap);condValue=await condResult2[0].data(),condResult2.forEach(tensor2=>{!tensor2.kept&&argIds.indexOf(tensor2.id)===-1&&resultIds.indexOf(tensor2.id)===-1&&tensor2.dispose()})}return result}case"LoopCond":{let pred=getParamValue("pred",node2,tensorMap,context);return[cloneTensor(pred)]}case"Switch":{let pred=getParamValue("pred",node2,tensorMap,context),data=getParamValue("data",node2,tensorMap,context);return data.kept||(data=cloneTensor(data)),(await pred.data())[0]?[void 0,data]:[data,void 0]}case"Merge":{let inputName=node2.inputNames.find(name=>getTensor(name,tensorMap,context)!==void 0);if(inputName){let data=getTensor(inputName,tensorMap,context);return[cloneTensor(data)]}return}case"Enter":{let frameId=getParamValue("frameName",node2,tensorMap,context),data=getParamValue("tensor",node2,tensorMap,context);return context.enterFrame(frameId),[cloneTensor(data)]}case"Exit":{let data=getParamValue("tensor",node2,tensorMap,context);return context.exitFrame(),[cloneTensor(data)]}case"NextIteration":{let data=getParamValue("tensor",node2,tensorMap,context);return context.nextIteration(),[cloneTensor(data)]}case"TensorArrayV3":{let size=getParamValue("size",node2,tensorMap,context),dtype=getParamValue("dtype",node2,tensorMap,context),elementShape=getParamValue("elementShape",node2,tensorMap,context),dynamicSize=getParamValue("dynamicSize",node2,tensorMap,context),clearAfterRead=getParamValue("clearAfterRead",node2,tensorMap,context),identicalElementShapes=getParamValue("identicalElementShapes",node2,tensorMap,context),name=getParamValue("name",node2,tensorMap,context),tensorArray=new TensorArray(name,dtype,size,elementShape,identicalElementShapes,dynamicSize,clearAfterRead);return context.addTensorArray(tensorArray),[tensorArray.idTensor,scalar(1)]}case"TensorArrayWriteV3":{let id=getParamValue("tensorArrayId",node2,tensorMap,context),index=getParamValue("index",node2,tensorMap,context),writeTensor=getParamValue("tensor",node2,tensorMap,context),writeTensorArray=context.getTensorArray(id.id);return writeTensorArray.write(index,writeTensor),[writeTensorArray.idTensor]}case"TensorArrayReadV3":{let readId=getParamValue("tensorArrayId",node2,tensorMap,context),readIndex=getParamValue("index",node2,tensorMap,context);return[context.getTensorArray(readId.id).read(readIndex)]}case"TensorArrayGatherV3":{let gatherId=getParamValue("tensorArrayId",node2,tensorMap,context),gatherIndices=getParamValue("indices",node2,tensorMap,context),gatherDtype=getParamValue("dtype",node2,tensorMap,context);return[context.getTensorArray(gatherId.id).gather(gatherIndices,gatherDtype)]}case"TensorArrayScatterV3":{let scatterId=getParamValue("tensorArrayId",node2,tensorMap,context),scatterIndices=getParamValue("indices",node2,tensorMap,context),scatterTensor=getParamValue("tensor",node2,tensorMap,context),scatterTensorArray=context.getTensorArray(scatterId.id);return scatterTensorArray.scatter(scatterIndices,scatterTensor),[scatterTensorArray.idTensor]}case"TensorArrayConcatV3":{let concatId=getParamValue("tensorArrayId",node2,tensorMap,context),concatTensorArray=context.getTensorArray(concatId.id),concatDtype=getParamValue("dtype",node2,tensorMap,context);return[concatTensorArray.concat(concatDtype)]}case"TensorArraySplitV3":{let splitId=getParamValue("tensorArrayId",node2,tensorMap,context),splitTensor=getParamValue("tensor",node2,tensorMap,context),lengths=getParamValue("lengths",node2,tensorMap,context),splitTensorArray=context.getTensorArray(splitId.id);return splitTensorArray.split(lengths,splitTensor),[splitTensorArray.idTensor]}case"TensorArraySizeV3":{let sizeId=getParamValue("tensorArrayId",node2,tensorMap,context),sizeTensorArray=context.getTensorArray(sizeId.id);return[scalar(sizeTensorArray.size(),"int32")]}case"TensorArrayCloseV3":{let closeId=getParamValue("tensorArrayId",node2,tensorMap,context),closeTensorArray=context.getTensorArray(closeId.id);return closeTensorArray.clearAndClose(),[closeTensorArray.idTensor]}case"TensorListSetItem":{let idTensor=getParamValue("tensorListId",node2,tensorMap,context),index=getParamValue("index",node2,tensorMap,context),writeTensor=getParamValue("tensor",node2,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return tensorList.setItem(index,writeTensor),[tensorList.idTensor]}case"TensorListGetItem":{let idTensor=getParamValue("tensorListId",node2,tensorMap,context),readIndex=getParamValue("index",node2,tensorMap,context),elementShape=getParamValue("elementShape",node2,tensorMap,context),elementDType=getParamValue("elementDType",node2,tensorMap,context);return[context.getTensorList(idTensor.id).getItem(readIndex,elementShape,elementDType)]}case"TensorListScatterV2":case"TensorListScatter":{let scatterIndices=getParamValue("indices",node2,tensorMap,context),scatterTensor=getParamValue("tensor",node2,tensorMap,context),elementShape=getParamValue("elementShape",node2,tensorMap,context),numElements=getParamValue("numElements",node2,tensorMap,context),tensorList=scatter(scatterTensor,scatterIndices,elementShape,numElements);return context.addTensorList(tensorList),[tensorList.idTensor]}case"TensorListReserve":case"EmptyTensorList":{let elementShape=getParamValue("elementShape",node2,tensorMap,context),elementDtype=getParamValue("elementDType",node2,tensorMap,context),numElementsParam;node2.op==="TensorListReserve"?numElementsParam="numElements":numElementsParam="maxNumElements";let numElements=getParamValue(numElementsParam,node2,tensorMap,context),tensorList=reserve(elementShape,elementDtype,numElements);return context.addTensorList(tensorList),[tensorList.idTensor]}case"TensorListGather":{let gatherId=getParamValue("tensorListId",node2,tensorMap,context),gatherIndices=getParamValue("indices",node2,tensorMap,context),elementShape=getParamValue("elementShape",node2,tensorMap,context),elementDtype=getParamValue("elementDType",node2,tensorMap,context);return[context.getTensorList(gatherId.id).gather(gatherIndices,elementDtype,elementShape)]}case"TensorListStack":{let idTensor=getParamValue("tensorListId",node2,tensorMap,context),elementShape=getParamValue("elementShape",node2,tensorMap,context),elementDtype=getParamValue("elementDType",node2,tensorMap,context),numElements=getParamValue("numElements",node2,tensorMap,context);return[context.getTensorList(idTensor.id).stack(elementShape,elementDtype,numElements)]}case"TensorListFromTensor":{let tensor2=getParamValue("tensor",node2,tensorMap,context),elementShape=getParamValue("elementShape",node2,tensorMap,context),elementDtype=getParamValue("elementDType",node2,tensorMap,context),tensorList=fromTensor(tensor2,elementShape,elementDtype);return context.addTensorList(tensorList),[tensorList.idTensor]}case"TensorListConcat":{let concatId=getParamValue("tensorListId",node2,tensorMap,context),tensorList=context.getTensorList(concatId.id),concatDtype=getParamValue("dtype",node2,tensorMap,context),elementShape=getParamValue("elementShape",node2,tensorMap,context);return[tensorList.concat(concatDtype,elementShape)]}case"TensorListPushBack":{let idTensor=getParamValue("tensorListId",node2,tensorMap,context),writeTensor=getParamValue("tensor",node2,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return tensorList.pushBack(writeTensor),[tensorList.idTensor]}case"TensorListPopBack":{let idTensor=getParamValue("tensorListId",node2,tensorMap,context),elementShape=getParamValue("elementShape",node2,tensorMap,context),elementDType=getParamValue("elementDType",node2,tensorMap,context);return[context.getTensorList(idTensor.id).popBack(elementShape,elementDType)]}case"TensorListSplit":{let splitTensor=getParamValue("tensor",node2,tensorMap,context),elementShape=getParamValue("elementShape",node2,tensorMap,context),lengths=getParamValue("lengths",node2,tensorMap,context),tensorList=split2(splitTensor,lengths,elementShape);return context.addTensorList(tensorList),[tensorList.idTensor]}default:throw TypeError(`Node type ${node2.op} is not implemented`)}};function fusedConvAndDepthWiseParams(node2,tensorMap,context){let[extraOp,activationFunc]=getParamValue("fusedOps",node2,tensorMap,context),isBiasAdd=extraOp==="biasadd",isPrelu=activationFunc==="prelu",isBatchNorm=extraOp==="fusedbatchnorm",numArgs=getParamValue("numArgs",node2,tensorMap,context);if(isBiasAdd){if(isPrelu&&numArgs!==2)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!isPrelu&&numArgs!==1)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd must have one extra argument: bias.")}if(isBatchNorm)throw new Error("FusedConv2d and DepthwiseConv2d with FusedBatchNorm is not supported.");let stride=getParamValue("strides",node2,tensorMap,context),pad3=getPadding(node2,tensorMap,context),dataFormat=getParamValue("dataFormat",node2,tensorMap,context).toUpperCase(),dilations=getParamValue("dilations",node2,tensorMap,context),[biasArg,preluArg]=getParamValue("args",node2,tensorMap,context),leakyreluAlpha=getParamValue("leakyreluAlpha",node2,tensorMap,context);return{stride,pad:pad3,dataFormat,dilations,biasArg,preluArg,activationFunc,leakyreluAlpha}}var executeOp4=(node2,tensorMap,context)=>{switch(node2.op){case"Conv1D":{let stride=getParamValue("stride",node2,tensorMap,context),pad3=getParamValue("pad",node2,tensorMap,context),dataFormat=getParamValue("dataFormat",node2,tensorMap,context).toUpperCase(),dilation=getParamValue("dilation",node2,tensorMap,context);return[conv1d(getParamValue("x",node2,tensorMap,context),getParamValue("filter",node2,tensorMap,context),stride,pad3,dataFormat,dilation)]}case"Conv2D":{let stride=getParamValue("strides",node2,tensorMap,context),pad3=getPadding(node2,tensorMap,context),dataFormat=getParamValue("dataFormat",node2,tensorMap,context).toUpperCase(),dilations=getParamValue("dilations",node2,tensorMap,context);return[conv2d(getParamValue("x",node2,tensorMap,context),getParamValue("filter",node2,tensorMap,context),[stride[1],stride[2]],pad3,dataFormat,[dilations[1],dilations[2]])]}case"_FusedConv2D":{let{stride,pad:pad3,dataFormat,dilations,biasArg,preluArg,activationFunc,leakyreluAlpha}=fusedConvAndDepthWiseParams(node2,tensorMap,context);return[fused_ops_exports.conv2d({x:getParamValue("x",node2,tensorMap,context),filter:getParamValue("filter",node2,tensorMap,context),strides:[stride[1],stride[2]],pad:pad3,dataFormat,dilations:[dilations[1],dilations[2]],bias:biasArg,activation:activationFunc,preluActivationWeights:preluArg,leakyreluAlpha})]}case"FusedDepthwiseConv2dNative":{let{stride,pad:pad3,dataFormat,dilations,biasArg,preluArg,activationFunc,leakyreluAlpha}=fusedConvAndDepthWiseParams(node2,tensorMap,context);return[fused_ops_exports.depthwiseConv2d({x:getParamValue("x",node2,tensorMap,context),filter:getParamValue("filter",node2,tensorMap,context),strides:[stride[1],stride[2]],pad:pad3,dataFormat,dilations:[dilations[1],dilations[2]],bias:biasArg,activation:activationFunc,preluActivationWeights:preluArg,leakyreluAlpha})]}case"Conv2DBackpropInput":case"Conv2dTranspose":{let shape=getParamValue("outputShape",node2,tensorMap,context),stride=getParamValue("strides",node2,tensorMap,context),pad3=getPadding(node2,tensorMap,context);return[conv2dTranspose(getParamValue("x",node2,tensorMap,context),getParamValue("filter",node2,tensorMap,context),shape,[stride[1],stride[2]],pad3)]}case"DepthwiseConv2dNative":case"DepthwiseConv2d":{let stride=getParamValue("strides",node2,tensorMap,context),pad3=getPadding(node2,tensorMap,context),dilations=getParamValue("dilations",node2,tensorMap,context),dataFormat=getParamValue("dataFormat",node2,tensorMap,context).toUpperCase();return[depthwiseConv2d(getParamValue("input",node2,tensorMap,context),getParamValue("filter",node2,tensorMap,context),[stride[1],stride[2]],pad3,dataFormat,[dilations[1],dilations[2]])]}case"Conv3D":{let stride=getParamValue("strides",node2,tensorMap,context),pad3=getParamValue("pad",node2,tensorMap,context),dataFormat=getParamValue("dataFormat",node2,tensorMap,context).toUpperCase(),dilations=getParamValue("dilations",node2,tensorMap,context);return[conv3d(getParamValue("x",node2,tensorMap,context),getParamValue("filter",node2,tensorMap,context),[stride[1],stride[2],stride[3]],pad3,dataFormat,[dilations[1],dilations[2],dilations[3]])]}case"AvgPool":{let stride=getParamValue("strides",node2,tensorMap,context),pad3=getParamValue("pad",node2,tensorMap,context),kernelSize=getParamValue("kernelSize",node2,tensorMap,context);return[avgPool(getParamValue("x",node2,tensorMap,context),[kernelSize[1],kernelSize[2]],[stride[1],stride[2]],pad3)]}case"MaxPool":{let stride=getParamValue("strides",node2,tensorMap,context),pad3=getParamValue("pad",node2,tensorMap,context),kernelSize=getParamValue("kernelSize",node2,tensorMap,context);return[maxPool(getParamValue("x",node2,tensorMap,context),[kernelSize[1],kernelSize[2]],[stride[1],stride[2]],pad3)]}case"MaxPoolWithArgmax":{let stride=getParamValue("strides",node2,tensorMap,context),pad3=getParamValue("pad",node2,tensorMap,context),kernelSize=getParamValue("kernelSize",node2,tensorMap,context),includeBatchInIndex=getParamValue("includeBatchInIndex",node2,tensorMap,context),{result,indexes}=maxPoolWithArgmax(getParamValue("x",node2,tensorMap,context),[kernelSize[1],kernelSize[2]],[stride[1],stride[2]],pad3,includeBatchInIndex);return[result,indexes]}case"AvgPool3D":{let stride=getParamValue("strides",node2,tensorMap,context),pad3=getParamValue("pad",node2,tensorMap,context),kernelSize=getParamValue("kernelSize",node2,tensorMap,context);return[avgPool3d(getParamValue("x",node2,tensorMap,context),[kernelSize[1],kernelSize[2],kernelSize[3]],[stride[1],stride[2],stride[3]],pad3)]}case"MaxPool3D":{let stride=getParamValue("strides",node2,tensorMap,context),pad3=getParamValue("pad",node2,tensorMap,context),kernelSize=getParamValue("kernelSize",node2,tensorMap,context);return[maxPool3d(getParamValue("x",node2,tensorMap,context),[kernelSize[1],kernelSize[2],kernelSize[3]],[stride[1],stride[2],stride[3]],pad3)]}case"Dilation2D":{let strides=getParamValue("strides",node2,tensorMap,context),pad3=getParamValue("pad",node2,tensorMap,context),dilations=getParamValue("dilations",node2,tensorMap,context),strideHeight=strides[1],strideWidth=strides[2],dilationHeight=dilations[1],dilationWidth=dilations[2];return[dilation2d(getParamValue("x",node2,tensorMap,context),getParamValue("filter",node2,tensorMap,context),[strideHeight,strideWidth],pad3,[dilationHeight,dilationWidth],"NHWC")]}default:throw TypeError(`Node type ${node2.op} is not implemented`)}},executeOp5=(node2,tensorMap,context)=>{switch(node2.op){case"Fill":{let shape=getParamValue("shape",node2,tensorMap,context),dtype=getParamValue("dtype",node2,tensorMap,context),value=getParamValue("value",node2,tensorMap,context);return[fill(shape,value,dtype)]}case"LinSpace":{let start=getParamValue("start",node2,tensorMap,context),stop=getParamValue("stop",node2,tensorMap,context),num=getParamValue("num",node2,tensorMap,context);return[linspace(start,stop,num)]}case"Multinomial":{let logits=getParamValue("logits",node2,tensorMap,context),numSamples=getParamValue("numSamples",node2,tensorMap,context),seed=getParamValue("seed",node2,tensorMap,context);return[multinomial(logits,numSamples,seed)]}case"OneHot":{let indices=getParamValue("indices",node2,tensorMap,context),depth=getParamValue("depth",node2,tensorMap,context),onValue=getParamValue("onValue",node2,tensorMap,context),offValue=getParamValue("offValue",node2,tensorMap,context);return[oneHot(indices,depth,onValue,offValue)]}case"Ones":return[ones2(getParamValue("shape",node2,tensorMap,context),getParamValue("dtype",node2,tensorMap,context))];case"OnesLike":return[onesLike(getParamValue("x",node2,tensorMap,context))];case"RandomUniform":return[randomUniform(getParamValue("shape",node2,tensorMap,context),getParamValue("minval",node2,tensorMap,context),getParamValue("maxval",node2,tensorMap,context),getParamValue("dtype",node2,tensorMap,context))];case"Range":{let start=getParamValue("start",node2,tensorMap,context),stop=getParamValue("stop",node2,tensorMap,context),step4=getParamValue("step",node2,tensorMap,context);return[range(start,stop,step4,getParamValue("dtype",node2,tensorMap,context))]}case"TruncatedNormal":{let shape=getParamValue("shape",node2,tensorMap,context),mean4=getParamValue("mean",node2,tensorMap,context),stdDev=getParamValue("stdDev",node2,tensorMap,context),seed=getParamValue("seed",node2,tensorMap,context);return[truncatedNormal(shape,mean4,stdDev,getParamValue("dtype",node2,tensorMap,context),seed)]}case"Zeros":return[zeros(getParamValue("shape",node2,tensorMap,context),getParamValue("dtype",node2,tensorMap,context))];case"ZerosLike":return[zerosLike(getParamValue("x",node2,tensorMap,context))];default:throw TypeError(`Node type ${node2.op} is not implemented`)}};function nmsParams(node2,tensorMap,context){let boxes=getParamValue("boxes",node2,tensorMap,context),scores=getParamValue("scores",node2,tensorMap,context),maxOutputSize=getParamValue("maxOutputSize",node2,tensorMap,context),iouThreshold=getParamValue("iouThreshold",node2,tensorMap,context),scoreThreshold=getParamValue("scoreThreshold",node2,tensorMap,context),softNmsSigma=getParamValue("softNmsSigma",node2,tensorMap,context);return{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}}var executeOp6=async(node2,tensorMap,context)=>{switch(node2.op){case"NonMaxSuppressionV5":{let{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}=nmsParams(node2,tensorMap,context),result=await image.nonMaxSuppressionWithScoreAsync(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);return[result.selectedIndices,result.selectedScores]}case"NonMaxSuppressionV4":{let{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold}=nmsParams(node2,tensorMap,context),padToMaxOutputSize=getParamValue("padToMaxOutputSize",node2,tensorMap,context),result=await image.nonMaxSuppressionPaddedAsync(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize);return[result.selectedIndices,result.validOutputs]}case"NonMaxSuppressionV3":case"NonMaxSuppressionV2":{let{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold}=nmsParams(node2,tensorMap,context);return[await image.nonMaxSuppressionAsync(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold)]}case"Where":{let condition=cast(getParamValue("condition",node2,tensorMap,context),"bool"),result=[await whereAsync(condition)];return condition.dispose(),result}case"ListDiff":return setdiff1dAsync(getParamValue("x",node2,tensorMap,context),getParamValue("y",node2,tensorMap,context));default:throw TypeError(`Node type ${node2.op} is not implemented`)}},executeOp7=(node2,tensorMap,context)=>{switch(node2.op){case"TopKV2":{let x=getParamValue("x",node2,tensorMap,context),k=getParamValue("k",node2,tensorMap,context),sorted=getParamValue("sorted",node2,tensorMap,context),result=topk(x,k,sorted);return[result.values,result.indices]}case"Unique":{let x=getParamValue("x",node2,tensorMap,context),result=unique(x);return[result.values,result.indices]}case"UniqueV2":{let x=getParamValue("x",node2,tensorMap,context),axis=getParamValue("axis",node2,tensorMap,context),result=unique(x,axis);return[result.values,result.indices]}default:throw TypeError(`Node type ${node2.op} is not implemented`)}},executeOp8=(node2,tensorMap,context)=>{switch(node2.op){case"Const":return tensorMap[node2.name];case"PlaceholderWithDefault":let def=getParamValue("default",node2,tensorMap,context);return[getTensor(node2.name,tensorMap,context)||def];case"Placeholder":return[getTensor(node2.name,tensorMap,context)];case"Identity":case"StopGradient":case"FakeQuantWithMinMaxVars":{let data2=getParamValue("x",node2,tensorMap,context);return[cloneTensor(data2)]}case"IdentityN":return getParamValue("x",node2,tensorMap,context).map(t=>cloneTensor(t));case"Snapshot":let snapshot=getParamValue("x",node2,tensorMap,context);return[cloneTensor(snapshot)];case"Shape":return[tensor1d(getParamValue("x",node2,tensorMap,context).shape,"int32")];case"ShapeN":return getParamValue("x",node2,tensorMap,context).map(t=>tensor1d(t.shape));case"Size":return[scalar(getParamValue("x",node2,tensorMap,context).size,"int32")];case"Rank":return[scalar(getParamValue("x",node2,tensorMap,context).rank,"int32")];case"NoOp":return[scalar(1)];case"Print":let input2=getParamValue("x",node2,tensorMap,context),data=getParamValue("data",node2,tensorMap,context),message=getParamValue("message",node2,tensorMap,context),summarize=getParamValue("summarize",node2,tensorMap,context);console.warn("The graph has a tf.print() operation,usually used for debugging, which slows down performance."),console.log(message);for(let i=0;ivalue.dispose()),this.tensorMap.clear(),this.handle.dispose()}size(){return this.tensorMap.size}async import(keys,values){this.checkKeyAndValueTensor(keys,values);let $keys=await keys.data();return this.tensorMap.forEach(value=>value.dispose()),this.tensorMap.clear(),tidy(()=>{let $values=unstack(values),keysLength=$keys.length,valuesLength=$values.length;util_exports.assert(keysLength===valuesLength,()=>`The number of elements doesn't match, keys has ${keysLength} elements, the values has ${valuesLength} elements.`);for(let i=0;i{let result=[];for(let i=0;i<$keys.length;i++){let key=$keys[i],value=this.findWithDefault(key,defaultValue);result.push(value)}return stack(result)})}findWithDefault(key,defaultValue){let result=this.tensorMap.get(key);return result!=null?result:defaultValue}checkKeyAndValueTensor(key,value){if(key.dtype!==this.keyDType)throw new Error(`Expect key dtype ${this.keyDType}, but got ${key.dtype}`);if(value.dtype!==this.valueDType)throw new Error(`Expect value dtype ${this.valueDType}, but got ${value.dtype}`)}},executeOp9=async(node2,tensorMap,context,resourceManager)=>{switch(node2.op){case"HashTable":case"HashTableV2":{let keyDType=getParamValue("keyDType",node2,tensorMap,context),valueDType=getParamValue("valueDType",node2,tensorMap,context),hashTable2=new HashTable(keyDType,valueDType);return resourceManager.addHashTable(node2.name,hashTable2),[hashTable2.handle]}case"LookupTableImport":case"LookupTableImportV2":{let handle=getParamValue("tableHandle",node2,tensorMap,context,resourceManager),keys=getParamValue("keys",node2,tensorMap,context),values=getParamValue("values",node2,tensorMap,context);return[await resourceManager.getHashTableById(handle.id).import(keys,values)]}case"LookupTableFind":case"LookupTableFindV2":{let handle=getParamValue("tableHandle",node2,tensorMap,context,resourceManager),keys=getParamValue("keys",node2,tensorMap,context),defaultValue=getParamValue("defaultValue",node2,tensorMap,context);return[await resourceManager.getHashTableById(handle.id).find(keys,defaultValue)]}default:throw TypeError(`Node type ${node2.op} is not implemented`)}},executeOp10=(node2,tensorMap,context)=>{switch(node2.op){case"ResizeBilinear":{let images=getParamValue("images",node2,tensorMap,context),size=getParamValue("size",node2,tensorMap,context),alignCorners=getParamValue("alignCorners",node2,tensorMap,context),halfPixelCenters=getParamValue("halfPixelCenters",node2,tensorMap,context);return[image.resizeBilinear(images,[size[0],size[1]],alignCorners,halfPixelCenters)]}case"ResizeNearestNeighbor":{let images=getParamValue("images",node2,tensorMap,context),size=getParamValue("size",node2,tensorMap,context),alignCorners=getParamValue("alignCorners",node2,tensorMap,context),halfPixelCenters=getParamValue("halfPixelCenters",node2,tensorMap,context);return[image.resizeNearestNeighbor(images,[size[0],size[1]],alignCorners,halfPixelCenters)]}case"CropAndResize":{let image3=getParamValue("image",node2,tensorMap,context),boxes=getParamValue("boxes",node2,tensorMap,context),boxInd=getParamValue("boxInd",node2,tensorMap,context),cropSize=getParamValue("cropSize",node2,tensorMap,context),method=getParamValue("method",node2,tensorMap,context),extrapolationValue=getParamValue("extrapolationValue",node2,tensorMap,context);return[image.cropAndResize(image3,boxes,boxInd,cropSize,method,extrapolationValue)]}default:throw TypeError(`Node type ${node2.op} is not implemented`)}},executeOp11=(node2,tensorMap,context)=>{switch(node2.op){case"Equal":return[equal(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"NotEqual":return[notEqual(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"Greater":return[greater(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"GreaterEqual":return[greaterEqual(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"Less":return[less(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"LessEqual":return[lessEqual(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"LogicalAnd":return[logicalAnd(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"LogicalNot":return[logicalNot(getParamValue("a",node2,tensorMap,context))];case"LogicalOr":return[logicalOr(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"Select":case"SelectV2":return[where(getParamValue("condition",node2,tensorMap,context),getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];default:throw TypeError(`Node type ${node2.op} is not implemented`)}},executeOp12=(node2,tensorMap,context)=>{switch(node2.op){case"BatchMatMul":case"BatchMatMulV2":case"MatMul":return[matMul(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context),getParamValue("transposeA",node2,tensorMap,context),getParamValue("transposeB",node2,tensorMap,context))];case"Transpose":return[transpose(getParamValue("x",node2,tensorMap,context),getParamValue("perm",node2,tensorMap,context))];case"_FusedMatMul":let[extraOp,activationFunc]=getParamValue("fusedOps",node2,tensorMap,context),isBiasAdd=extraOp==="biasadd",isPrelu=activationFunc==="prelu",numArgs=getParamValue("numArgs",node2,tensorMap,context),leakyreluAlpha=getParamValue("leakyreluAlpha",node2,tensorMap,context);if(isBiasAdd){if(isPrelu&&numArgs!==2)throw new Error("Fused MatMul with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!isPrelu&&numArgs!==1)throw new Error("Fused MatMul with BiasAdd must have one extra argument: bias.")}let[biasArg,preluArg]=getParamValue("args",node2,tensorMap,context);return[fused_ops_exports.matMul({a:getParamValue("a",node2,tensorMap,context),b:getParamValue("b",node2,tensorMap,context),transposeA:getParamValue("transposeA",node2,tensorMap,context),transposeB:getParamValue("transposeB",node2,tensorMap,context),bias:biasArg,activation:activationFunc,preluActivationWeights:preluArg,leakyreluAlpha})];default:throw TypeError(`Node type ${node2.op} is not implemented`)}},executeOp13=(node2,tensorMap,context)=>{switch(node2.op){case"FusedBatchNorm":case"FusedBatchNormV2":return[batchNorm(getParamValue("x",node2,tensorMap,context),getParamValue("mean",node2,tensorMap,context),getParamValue("variance",node2,tensorMap,context),getParamValue("offset",node2,tensorMap,context),getParamValue("scale",node2,tensorMap,context),getParamValue("epsilon",node2,tensorMap,context))];case"FusedBatchNormV3":return[batchNorm(getParamValue("x",node2,tensorMap,context),getParamValue("mean",node2,tensorMap,context),getParamValue("variance",node2,tensorMap,context),getParamValue("offset",node2,tensorMap,context),getParamValue("scale",node2,tensorMap,context),getParamValue("epsilon",node2,tensorMap,context))];case"LRN":return[localResponseNormalization(getParamValue("x",node2,tensorMap,context),getParamValue("radius",node2,tensorMap,context),getParamValue("bias",node2,tensorMap,context),getParamValue("alpha",node2,tensorMap,context),getParamValue("beta",node2,tensorMap,context))];case"Softmax":return[softmax(getParamValue("x",node2,tensorMap,context))];case"LogSoftmax":return[logSoftmax(getParamValue("x",node2,tensorMap,context))];case"SparseToDense":return[sparseToDense(getParamValue("sparseIndices",node2,tensorMap,context),getParamValue("outputShape",node2,tensorMap,context),getParamValue("sparseValues",node2,tensorMap,context),getParamValue("defaultValue",node2,tensorMap,context))];default:throw TypeError(`Node type ${node2.op} is not implemented`)}},executeOp14=(node2,tensorMap,context)=>{switch(node2.op){case"Max":{let axis=getParamValue("axis",node2,tensorMap,context),keepDims=getParamValue("keepDims",node2,tensorMap,context);return[max(getParamValue("x",node2,tensorMap,context),axis,keepDims)]}case"Mean":{let axis=getParamValue("axis",node2,tensorMap,context),keepDims=getParamValue("keepDims",node2,tensorMap,context);return[mean(getParamValue("x",node2,tensorMap,context),axis,keepDims)]}case"Min":{let axis=getParamValue("axis",node2,tensorMap,context),keepDims=getParamValue("keepDims",node2,tensorMap,context);return[min(getParamValue("x",node2,tensorMap,context),axis,keepDims)]}case"Sum":{let axis=getParamValue("axis",node2,tensorMap,context),keepDims=getParamValue("keepDims",node2,tensorMap,context);return[sum2(getParamValue("x",node2,tensorMap,context),axis,keepDims)]}case"All":{let axis=getParamValue("axis",node2,tensorMap,context),keepDims=getParamValue("keepDims",node2,tensorMap,context);return[all(getParamValue("x",node2,tensorMap,context),axis,keepDims)]}case"Any":{let axis=getParamValue("axis",node2,tensorMap,context),keepDims=getParamValue("keepDims",node2,tensorMap,context);return[any(getParamValue("x",node2,tensorMap,context),axis,keepDims)]}case"ArgMax":{let axis=getParamValue("axis",node2,tensorMap,context);return[argMax(getParamValue("x",node2,tensorMap,context),axis)]}case"ArgMin":{let axis=getParamValue("axis",node2,tensorMap,context);return[argMin(getParamValue("x",node2,tensorMap,context),axis)]}case"Prod":{let axis=getParamValue("axis",node2,tensorMap,context),keepDims=getParamValue("keepDims",node2,tensorMap,context);return[prod(getParamValue("x",node2,tensorMap,context),axis,keepDims)]}case"Cumsum":{let axis=getParamValue("axis",node2,tensorMap,context),exclusive=getParamValue("exclusive",node2,tensorMap,context),reverse5=getParamValue("reverse",node2,tensorMap,context);return[cumsum(getParamValue("x",node2,tensorMap,context),axis,exclusive,reverse5)]}case"Bincount":let x=getParamValue("x",node2,tensorMap,context),weights=getParamValue("weights",node2,tensorMap,context),size=getParamValue("size",node2,tensorMap,context);return[bincount(x,weights,size)];case"DenseBincount":{let x2=getParamValue("x",node2,tensorMap,context),weights2=getParamValue("weights",node2,tensorMap,context),size2=getParamValue("size",node2,tensorMap,context),binaryOutput=getParamValue("binaryOutput",node2,tensorMap,context);return[denseBincount(x2,weights2,size2,binaryOutput)]}default:throw TypeError(`Node type ${node2.op} is not implemented`)}},executeOp15=(node2,tensorMap,context)=>{switch(node2.op){case"ConcatV2":case"Concat":{let n=getParamValue("n",node2,tensorMap,context),axis=getParamValue("axis",node2,tensorMap,context),inputs=getParamValue("tensors",node2,tensorMap,context);return inputs=inputs.slice(0,n),[concat(inputs,axis)]}case"Gather":{let input2=getParamValue("x",node2,tensorMap,context),indices=getParamValue("indices",node2,tensorMap,context);return[gather(input2,cast(indices,"int32"),0)]}case"GatherV2":{let axis=getParamValue("axis",node2,tensorMap,context),batchDims=getParamValue("batchDims",node2,tensorMap,context),input2=getParamValue("x",node2,tensorMap,context),indices=getParamValue("indices",node2,tensorMap,context);return[gather(input2,cast(indices,"int32"),axis,batchDims)]}case"Reverse":{let dims=getParamValue("dims",node2,tensorMap,context),axis=[];for(let i=0;i{let axis=getParamValue("axis",node2,tensorMap,context),tensors=getParamValue("tensors",node2,tensorMap,context),shape=tensors[0].shape,squeezedShape=squeeze(tensors[0]).shape,mapped=tensors.map(tensor2=>{let sameShape=util_exports.arraysEqual(tensor2.shape,shape);if(!sameShape&&!util_exports.arraysEqual(squeeze(tensor2).shape,squeezedShape))throw new Error("the input tensors shape does not match");return sameShape?tensor2:reshape(tensor2,shape)});return[stack(mapped,axis)]});case"Unpack":{let axis=getParamValue("axis",node2,tensorMap,context),tensor2=getParamValue("tensor",node2,tensorMap,context);return unstack(tensor2,axis)}case"Tile":{let reps=getParamValue("reps",node2,tensorMap,context);return[tile(getParamValue("x",node2,tensorMap,context),reps)]}case"Split":case"SplitV":{let axis=getParamValue("axis",node2,tensorMap,context),numOrSizeSplits=getParamValue("numOrSizeSplits",node2,tensorMap,context),tensor2=getParamValue("x",node2,tensorMap,context);return split(tensor2,numOrSizeSplits,axis)}case"ScatterNd":{let indices=getParamValue("indices",node2,tensorMap,context),values=getParamValue("values",node2,tensorMap,context),shape=getParamValue("shape",node2,tensorMap,context);return[scatterND(indices,values,shape)]}case"GatherNd":{let x=getParamValue("x",node2,tensorMap,context),indices=getParamValue("indices",node2,tensorMap,context);return[gatherND(x,indices)]}case"SparseToDense":{let indices=getParamValue("sparseIndices",node2,tensorMap,context),shape=getParamValue("outputShape",node2,tensorMap,context),sparseValues=getParamValue("sparseValues",node2,tensorMap,context),defaultValue=getParamValue("defaultValue",node2,tensorMap,context);return[sparseToDense(indices,sparseValues,shape,sparseValues.dtype===defaultValue.dtype?defaultValue:cast(defaultValue,sparseValues.dtype))]}default:throw TypeError(`Node type ${node2.op} is not implemented`)}},executeOp16=(node2,tensorMap,context)=>{switch(node2.op){case"FFT":return[fft(getParamValue("x",node2,tensorMap,context))];case"IFFT":return[ifft(getParamValue("x",node2,tensorMap,context))];case"RFFT":return[rfft(getParamValue("x",node2,tensorMap,context))];case"IRFFT":return[irfft(getParamValue("x",node2,tensorMap,context))];default:throw TypeError(`Node type ${node2.op} is not implemented`)}},executeOp17=(node2,tensorMap,context)=>{switch(node2.op){case"Cast":return[cast(getParamValue("x",node2,tensorMap,context),getParamValue("dtype",node2,tensorMap,context))];case"ExpandDims":{let axis=getParamValue("axis",node2,tensorMap,context);return[expandDims(getParamValue("x",node2,tensorMap,context),axis)]}case"Squeeze":{let axis=getParamValue("axis",node2,tensorMap,context);return[squeeze(getParamValue("x",node2,tensorMap,context),axis)]}case"Reshape":return[reshape(getParamValue("x",node2,tensorMap,context),getParamValue("shape",node2,tensorMap,context))];case"MirrorPad":return[mirrorPad(getParamValue("x",node2,tensorMap,context),getParamValue("padding",node2,tensorMap,context),getParamValue("mode",node2,tensorMap,context))];case"PadV2":case"Pad":return[pad(getParamValue("x",node2,tensorMap,context),getParamValue("padding",node2,tensorMap,context),getParamValue("constantValue",node2,tensorMap,context))];case"SpaceToBatchND":{let blockShape=getParamValue("blockShape",node2,tensorMap,context),paddings=getParamValue("paddings",node2,tensorMap,context);return[spaceToBatchND(getParamValue("x",node2,tensorMap,context),blockShape,paddings)]}case"BatchToSpaceND":{let blockShape=getParamValue("blockShape",node2,tensorMap,context),crops=getParamValue("crops",node2,tensorMap,context);return[batchToSpaceND(getParamValue("x",node2,tensorMap,context),blockShape,crops)]}case"DepthToSpace":{let blockSize=getParamValue("blockSize",node2,tensorMap,context),dataFormat=getParamValue("dataFormat",node2,tensorMap,context).toUpperCase();return[depthToSpace(getParamValue("x",node2,tensorMap,context),blockSize,dataFormat)]}case"BroadcastTo":return[broadcastTo(getParamValue("x",node2,tensorMap,context),getParamValue("shape",node2,tensorMap,context))];default:throw TypeError(`Node type ${node2.op} is not implemented`)}};function executeOp18(node2,tensorMap,context,resourceManager){let value=((node22,tensorMap2,context2)=>{switch(node22.category){case"arithmetic":return tidy(()=>executeOp(node22,tensorMap2,context2));case"basic_math":return tidy(()=>executeOp2(node22,tensorMap2,context2));case"control":return executeOp3(node22,tensorMap2,context2);case"convolution":return tidy(()=>executeOp4(node22,tensorMap2,context2));case"creation":return tidy(()=>executeOp5(node22,tensorMap2,context2));case"dynamic":return executeOp6(node22,tensorMap2,context2);case"evaluation":return tidy(()=>executeOp7(node22,tensorMap2,context2));case"image":return tidy(()=>executeOp10(node22,tensorMap2,context2));case"graph":return tidy(()=>executeOp8(node22,tensorMap2,context2));case"logical":return tidy(()=>executeOp11(node22,tensorMap2,context2));case"matrices":return tidy(()=>executeOp12(node22,tensorMap2,context2));case"normalization":return tidy(()=>executeOp13(node22,tensorMap2,context2));case"reduction":return tidy(()=>executeOp14(node22,tensorMap2,context2));case"slice_join":return tidy(()=>executeOp15(node22,tensorMap2,context2));case"spectral":return tidy(()=>executeOp16(node22,tensorMap2,context2));case"transformation":return tidy(()=>executeOp17(node22,tensorMap2,context2));case"hash_table":return executeOp9(node22,tensorMap2,context2,resourceManager);case"custom":let opMapper=getRegisteredOp(node22.op);if(opMapper&&opMapper.customExecutor)return opMapper.customExecutor(new NodeValueImpl(node22,tensorMap2,context2));throw TypeError(`Custom op ${node22.op} is not registered.`);default:throw TypeError(`Unknown op '${node22.op}'. File an issue at https://github.com/tensorflow/tfjs/issues so we can add it, or register a custom execution with tf.registerOp()`)}})(node2,tensorMap,context);return util_exports.isPromise(value)?value.then(data=>[].concat(data)):[].concat(value)}var ExecutionContext=class{constructor(weightMap={},tensorArrayMap={},tensorListMap={},functionMap={}){this.weightMap=weightMap,this.tensorArrayMap=tensorArrayMap,this.tensorListMap=tensorListMap,this.functionMap=functionMap,this.rootContext={id:0,frameName:"",iterationId:0},this.contexts=[this.rootContext],this.lastId=0,this.generateCurrentContextIds()}newFrame(id,frameName){return{id,frameName,iterationId:0}}set currentContext(contexts2){this.contexts!==contexts2&&(this.contexts=contexts2,this.generateCurrentContextIds())}get currentContext(){return this.contexts}get currentContextId(){return this._currentContextIds[0]}get currentContextIds(){return this._currentContextIds}generateCurrentContextIds(){let names=[];for(let i=0;icontext.id===0&&context.iterationId===0?"":`${context.frameName}-${context.iterationId}`).join("/"):""}enterFrame(frameId){this.contexts&&(this.lastId++,this.contexts=this.contexts.slice(),this.contexts.push(this.newFrame(this.lastId,frameId)),this._currentContextIds.unshift(this.contextIdforContexts(this.contexts)))}exitFrame(){if(this.contexts&&this.contexts.length>1)this.contexts=this.contexts.slice(),this.contexts.splice(-1),this.currentContextIds.shift();else throw new Error("Cannot exit frame, the context is empty")}nextIteration(){if(this.contexts&&this.contexts.length>0){this.contexts=this.contexts.slice(),this.lastId++;let context=Object.assign({},this.contexts[this.contexts.length-1]);context.iterationId+=1,context.id=this.lastId,this.contexts.splice(-1,1,context),this._currentContextIds.splice(0,1,this.contextIdforContexts(this.contexts))}else throw new Error("Cannot increase frame iteration, the context is empty")}getWeight(name){return this.weightMap[name]}addTensorArray(tensorArray){this.tensorArrayMap[tensorArray.id]=tensorArray}getTensorArray(id){return this.tensorArrayMap[id]}addTensorList(tensorList){this.tensorListMap[tensorList.id]=tensorList}getTensorList(id){return this.tensorListMap[id]}dispose(keepIds){for(let key in this.tensorArrayMap)this.tensorArrayMap[key].clearAndClose(keepIds);for(let key in this.tensorListMap)this.tensorListMap[key].clearAndClose(keepIds)}};function getExecutionSubgraph(inputs,outputs,weightMap,initNodes){let usedNodes=new Set,missingInputs=[],dynamicNode=null,syncInputs=null,seen=new Set,inputNodeNames=Object.keys(inputs).map(name=>parseNodeName(name)[0]),initNodeNames=[];initNodes!=null&&(initNodeNames=initNodes.map(node2=>parseNodeName(node2.name)[0]));let frontier=[...outputs];for(;frontier.length>0;){let node2=frontier.pop();if((isControlFlow(node2)||isDynamicShape(node2)||isHashTable(node2))&&dynamicNode==null&&(dynamicNode=node2,syncInputs=dynamicNode.children.map(child=>child.name).filter(name=>usedNodes.has(name))),usedNodes.add(node2.name),weightMap[node2.name]==null&&inputNodeNames.indexOf(node2.name)===-1&&initNodeNames.indexOf(node2.name)===-1){if(node2.inputs.length===0){missingInputs.push(node2.name);continue}node2.inputs.forEach(input2=>{seen.has(input2.name)||(seen.add(input2.name),frontier.push(input2))})}}return{inputs,outputs,usedNodes,missingInputs,dynamicNode,syncInputs}}function getNodesInTopologicalOrder(graph2,weightMap,executionInfo){let{usedNodes,inputs}=executionInfo,frontier=[],inputNodes=Object.keys(inputs).map(name=>parseNodeName(name)[0]).map(name=>graph2.nodes[name]),initNodes=graph2.initNodes;inputNodes.forEach(input2=>{usedNodes.has(input2.name)&&frontier.push(input2)}),graph2.weights.forEach(weight=>{usedNodes.has(weight.name)&&frontier.push(weight)}),initNodes!=null&&initNodes.forEach(node2=>{usedNodes.has(node2.name)&&frontier.push(node2)});let seen=new Set,orderedNodes=[];for(;frontier.length>0;){let node2=frontier.pop();seen.add(node2.name),weightMap[node2.name]||orderedNodes.push(node2),node2.children.forEach(child=>{!seen.has(child.name)&&usedNodes.has(child.name)&&child.inputs.every(input2=>seen.has(input2.name))&&frontier.push(child)})}return orderedNodes}var CONTROL_FLOW_OPS=["Switch","Merge","Enter","Exit","NextIteration","StatelessIf","StatelessWhile","if","While"],DYNAMIC_SHAPE_OPS=["NonMaxSuppressionV2","NonMaxSuppressionV3","NonMaxSuppressionV5","Where"],HASH_TABLE_OPS=["HashTable","HashTableV2","LookupTableImport","LookupTableImportV2","LookupTableFind","LookupTableFindV2"];function isControlFlow(node2){return CONTROL_FLOW_OPS.indexOf(node2.op)>=0}function isDynamicShape(node2){return DYNAMIC_SHAPE_OPS.indexOf(node2.op)>=0}function isHashTable(node2){return HASH_TABLE_OPS.indexOf(node2.op)>=0}var GraphExecutor=class{constructor(graph2,parent){this.graph=graph2,this.parent=parent,this.compiledMap=new Map,this._weightMap={},this.SEPERATOR=",",this._functions={},this._functionExecutorMap={},this._outputs=graph2.outputs,this._inputs=graph2.inputs,this._initNodes=graph2.initNodes,this._signature=graph2.signature,this._functions=graph2.functions,graph2.functions!=null&&Object.keys(graph2.functions).forEach(name=>{this._functionExecutorMap[name]=new GraphExecutor(graph2.functions[name],this)})}get weightIds(){return this.parent?this.parent.weightIds:this._weightIds}get functionExecutorMap(){return this.parent?this.parent.functionExecutorMap:this._functionExecutorMap}get weightMap(){return this.parent?this.parent.weightMap:this._weightMap}set weightMap(weightMap){let weightIds=Object.keys(weightMap).map(key=>weightMap[key].map(tensor2=>tensor2.id));this._weightIds=[].concat(...weightIds),this._weightMap=weightMap}set resourceManager(resourceManager){this._resourceManager=resourceManager}get inputs(){return this._inputs.map(node2=>({name:node2.name,shape:node2.attrParams.shape?node2.attrParams.shape.value:void 0,dtype:node2.attrParams.dtype?node2.attrParams.dtype.value:void 0}))}get outputs(){return this._outputs.map(node2=>({name:node2.name,shape:node2.attrParams.shape?node2.attrParams.shape.value:void 0,dtype:node2.attrParams.dtype?node2.attrParams.dtype.value:void 0}))}get inputNodes(){return this._inputs.map(node2=>node2.signatureKey||node2.name)}get outputNodes(){return this._outputs.map(node2=>{let name=node2.signatureKey||node2.name;return node2.defaultOutput?`${name}:${node2.defaultOutput}`:name})}get functions(){return Object.keys(this._functions).reduce((map,key)=>(map[key]=this._functions[key].signature,map),{})}getCompilationKey(inputs,outputs){let sortedInputs=inputs.map(node2=>node2.name).sort(),sortedOutputs=outputs.map(node2=>node2.name).sort();return sortedInputs.join(this.SEPERATOR)+"--"+sortedOutputs.join(this.SEPERATOR)}compile(inputs,outputs){let executionInfo=getExecutionSubgraph(inputs,outputs,this.weightMap,this._initNodes),{missingInputs,dynamicNode,syncInputs}=executionInfo;if(dynamicNode!=null)throw new Error(`This execution contains the node '${dynamicNode.name}', which has the dynamic op '${dynamicNode.op}'. Please use model.executeAsync() instead. Alternatively, to avoid the dynamic ops, specify the inputs [${syncInputs}]`);if(missingInputs.length>0){let outNames=outputs.map(n=>n.name),inNames=Object.keys(inputs);throw new Error(`Cannot compute the outputs [${outNames}] from the provided inputs [${inNames}]. Missing the following inputs: [${missingInputs}]`)}return getNodesInTopologicalOrder(this.graph,this.weightMap,executionInfo)}execute(inputs,outputs){inputs=this.mapInputs(inputs);let names=Object.keys(inputs).sort();this.checkInputs(inputs),this.checkInputShapeAndType(inputs),outputs=this.mapOutputs(outputs),this.checkOutputs(outputs);let inputNodes=names.map(name=>this.graph.nodes[parseNodeName(name)[0]]),outputNodeNames=outputs.map(name=>parseNodeName(name)[0]),outputNodes=outputNodeNames.map(name=>this.graph.nodes[name]);outputNodes.length===0&&(outputNodes=this._outputs);let compilationKey=this.getCompilationKey(inputNodes,outputNodes),orderedNodes=this.compiledMap.get(compilationKey);orderedNodes==null&&(orderedNodes=this.compile(inputs,outputNodes),this.compiledMap.set(compilationKey,orderedNodes));let tensorArrayMap={},tensorListMap={};return tidy(()=>{let context=new ExecutionContext(this.weightMap,tensorArrayMap,tensorListMap,this.functionExecutorMap),tensorsMap=Object.assign({},this.weightMap);Object.keys(inputs).forEach(name=>{let[nodeName,index]=parseNodeName(name),tensors=[];tensors[index]=inputs[name],tensorsMap[nodeName]=tensors});let tensorsToKeep=this.getFrozenTensorIds(tensorsMap),intermediateTensorConsumerCount={};for(let i=0;igetTensor(name,tensorsMap,context))})}getFrozenTensorIds(tensorMap){let ids=[].concat.apply([],Object.keys(tensorMap).map(key=>tensorMap[key]).map(tensors=>tensors.map(tensor2=>tensor2.id)));return new Set(ids)}checkTensorForDisposal(nodeName,node2,tensorMap,context,tensorsToKeep,outputNames,intermediateTensorConsumerCount){node2.category==="control"||outputNames.indexOf(nodeName)!==-1||(tensorMap[nodeName].forEach(tensor2=>{tensor2!=null&&(intermediateTensorConsumerCount[tensor2.id]=(intermediateTensorConsumerCount[tensor2.id]||0)+node2.children.length)}),node2.inputs.forEach(input2=>{if(input2.category!=="control"){let tensors=getTensorsForCurrentContenxt(input2.name,tensorMap,context);tensors!=null&&tensors.forEach(tensor2=>{if(tensor2&&!tensorsToKeep.has(tensor2.id)){let count2=intermediateTensorConsumerCount[tensor2.id];count2===1?(tensor2.dispose(),delete intermediateTensorConsumerCount[tensor2.id]):count2!=null&&intermediateTensorConsumerCount[tensor2.id]--}})}}))}async executeAsync(inputs,outputs){return this._executeAsync(inputs,outputs)}async _executeAsync(inputs,outputs,isFunctionExecution=!1,tensorArrayMap={},tensorListMap={}){isFunctionExecution||(inputs=this.mapInputs(inputs),this.checkInputs(inputs),this.checkInputShapeAndType(inputs),outputs=this.mapOutputs(outputs),this.checkOutputs(outputs));let context=new ExecutionContext(this.weightMap,tensorArrayMap,tensorListMap,this.functionExecutorMap),tensorMap=await this.executeWithControlFlow(inputs,context,outputs,isFunctionExecution),results=outputs.map(name=>getTensor(name,tensorMap,context)),outputIds=results.map(t=>t.id),inputIds=Object.keys(inputs).map(name=>inputs[name].id),keepIds=new Set([...outputIds,...inputIds,...this.weightIds]);return Object.keys(tensorMap).forEach(key=>{tensorMap[key].forEach(tensor2=>{tensor2&&!tensor2.isDisposed&&!keepIds.has(tensor2.id)&&tensor2.dispose()})}),this.parent==null&&context.dispose(keepIds),results}async executeFunctionAsync(inputs,tensorArrayMap,tensorListMap){let mappedInputs=inputs.reduce((map,tensor2,index)=>(map[this.inputs[index].name]=tensor2,map),{});return this._executeAsync(mappedInputs,this.outputNodes,!0,tensorArrayMap,tensorListMap)}async executeWithControlFlow(inputs,context,outputNames,isFunctionExecution){let names=Object.keys(inputs),inputNodes=names.map(name=>this.graph.nodes[parseNodeName(name)[0]]),outputNodeNames=outputNames.map(name=>parseNodeName(name)[0]),outputNodes=outputNodeNames.map(name=>this.graph.nodes[name]);outputNodes.length===0&&(outputNodes=this._outputs);let{usedNodes,missingInputs,dynamicNode,syncInputs}=getExecutionSubgraph(inputs,outputNodes,this.weightMap,this._initNodes),stack2=[...inputNodes,...this.graph.weights,...this._initNodes||[]].map(node2=>({node:node2,contexts:context.currentContext})),tensorsMap=Object.assign({},this.weightMap);Object.keys(inputs).forEach(name=>{let[nodeName,index]=parseNodeName(name),tensors=[];tensors[index]=inputs[name],tensorsMap[nodeName]=tensors});let intermediateTensorConsumerCount={},tensorsToKeep=this.getFrozenTensorIds(tensorsMap),added={};for(;stack2.length>0;){let promises=this.processStack(inputNodes,stack2,context,tensorsMap,added,tensorsToKeep,outputNodeNames,intermediateTensorConsumerCount,usedNodes);await Promise.all(promises)}dynamicNode==null&&!isFunctionExecution&&console.warn("This model execution did not contain any nodes with control flow or dynamic output shapes. You can use model.execute() instead.");let missingOutputs=outputNodes.filter(node2=>!isControlFlow(node2)&&!getTensor(node2.name,tensorsMap,context)).map(node2=>node2.name);if(missingOutputs.length>0){let alternativeMsg="";throw dynamicNode!=null&&(alternativeMsg=`Alternatively, to avoid the dynamic ops, use model.execute() and specify the inputs [${syncInputs}]`),new Error(`Cannot compute the outputs [${missingOutputs}] from the provided inputs [${names}]. Consider providing the following inputs: [${missingInputs}]. ${alternativeMsg}`)}return tensorsMap}processStack(inputNodes,stack2,context,tensorMap,added,tensorsToKeep,outputNames,intermediateTensorConsumerCount,usedNodes){let promises=[];for(;stack2.length>0;){let item=stack2.pop();context.currentContext=item.contexts;let nodeName="";if(item.node.op==="Enter"&&getParamValue("isConstant",item.node,tensorMap,context)&&([nodeName]=getNodeNameAndIndex(item.node.name,context)),tensorMap[item.node.name]==null){let tensors=executeOp18(item.node,tensorMap,context,this._resourceManager);nodeName||([nodeName]=getNodeNameAndIndex(item.node.name,context));let currentContext=context.currentContext;util_exports.isPromise(tensors)?promises.push(tensors.then(t=>(tensorMap[nodeName]=t,context.currentContext=currentContext,this.checkTensorForDisposal(nodeName,item.node,tensorMap,context,tensorsToKeep,outputNames,intermediateTensorConsumerCount),this.processChildNodes(item.node,stack2,context,tensorMap,added,usedNodes),t))):(tensorMap[nodeName]=tensors,this.checkTensorForDisposal(nodeName,item.node,tensorMap,context,tensorsToKeep,outputNames,intermediateTensorConsumerCount),this.processChildNodes(item.node,stack2,context,tensorMap,added,usedNodes))}else this.processChildNodes(item.node,stack2,context,tensorMap,added,usedNodes)}return promises}processChildNodes(node2,stack2,context,tensorMap,added,usedNodes){node2.children.forEach(childNode=>{let[nodeName]=getNodeNameAndIndex(childNode.name,context);added[nodeName]||!usedNodes.has(childNode.name)||(childNode.op==="Merge"?childNode.inputNames.some(name=>!!getTensor(name,tensorMap,context))&&(added[nodeName]=!0,stack2.push({contexts:context.currentContext,node:childNode})):childNode.inputNames.every(name=>!!getTensor(name,tensorMap,context))&&(added[nodeName]=!0,stack2.push({contexts:context.currentContext,node:childNode})))})}dispose(){Object.keys(this.weightMap).forEach(key=>this.weightMap[key].forEach(tensor2=>tensor2.dispose()))}checkInputShapeAndType(inputs){Object.keys(inputs).forEach(name=>{let input2=inputs[name],[nodeName]=parseNodeName(name),node2=this.graph.nodes[nodeName];if(node2.attrParams.shape&&node2.attrParams.shape.value){let shape=node2.attrParams.shape.value,match=shape.length===input2.shape.length&&input2.shape.every((dim,index)=>shape[index]===-1||shape[index]===dim);util_exports.assert(match,()=>`The shape of dict['${node2.name}'] provided in model.execute(dict) must be [${shape}], but was [${input2.shape}]`)}node2.attrParams.dtype&&node2.attrParams.dtype.value&&util_exports.assert(input2.dtype===node2.attrParams.dtype.value,()=>`The dtype of dict['${node2.name}'] provided in model.execute(dict) must be ${node2.attrParams.dtype.value}, but was ${input2.dtype}`)})}mapInputs(inputs){let result={};for(let inputName in inputs)if(this._signature!=null&&this._signature.inputs!=null&&this._signature.inputs[inputName]!=null){let tensor2=this._signature.inputs[inputName];result[tensor2.name]=inputs[inputName]}else result[inputName]=inputs[inputName];return result}checkInputs(inputs){let notInGraph=Object.keys(inputs).filter(name=>{let[nodeName]=parseNodeName(name);return this.graph.nodes[nodeName]==null});if(notInGraph.length>0)throw new Error(`The dict provided in model.execute(dict) has keys: [${notInGraph}] that are not part of graph`)}mapOutputs(outputs){return outputs.map(name=>this._signature!=null&&this._signature.outputs!=null&&this._signature.outputs[name]!=null?this._signature.outputs[name].name:name,{})}checkOutputs(outputs){outputs.forEach(name=>{let[normalizedName]=parseNodeName(name);if(!this.graph.nodes[normalizedName])throw new Error(`The output '${name}' is not found in the graph`)})}},ResourceManager=class{constructor(hashTableNameToHandle={},hashTableMap={}){this.hashTableNameToHandle=hashTableNameToHandle,this.hashTableMap=hashTableMap}addHashTable(name,hashTable2){this.hashTableNameToHandle[name]=hashTable2.handle,this.hashTableMap[hashTable2.id]=hashTable2}getHashTableHandleByName(name){return this.hashTableNameToHandle[name]}getHashTableById(id){return this.hashTableMap[id]}dispose(){for(let key in this.hashTableMap)this.hashTableMap[key].clearAndClose(),delete this.hashTableMap[key];for(let name in this.hashTableNameToHandle)this.hashTableNameToHandle[name].dispose(),delete this.hashTableNameToHandle[name]}},TFHUB_SEARCH_PARAM="?tfjs-format=file",DEFAULT_MODEL_NAME="model.json",GraphModel=class{constructor(modelUrl,loadOptions={}){this.modelUrl=modelUrl,this.loadOptions=loadOptions,this.version="n/a",loadOptions==null&&(this.loadOptions={}),this.resourceManager=new ResourceManager}get modelVersion(){return this.version}get inputNodes(){return this.executor.inputNodes}get outputNodes(){return this.executor.outputNodes}get inputs(){return this.executor.inputs}get outputs(){return this.executor.outputs}get weights(){return this.executor.weightMap}get metadata(){return this.artifacts.userDefinedMetadata}get modelSignature(){return this.signature}findIOHandler(){let path=this.modelUrl;if(path.load!=null)this.handler=path;else if(this.loadOptions.requestInit!=null)this.handler=io_exports.browserHTTPRequest(path,this.loadOptions);else{let handlers=io_exports.getLoadHandlers(path,this.loadOptions);if(handlers.length===0)handlers.push(io_exports.browserHTTPRequest(path,this.loadOptions));else if(handlers.length>1)throw new Error(`Found more than one (${handlers.length}) load handlers for URL '${[path]}'`);this.handler=handlers[0]}}async load(){if(this.findIOHandler(),this.handler.load==null)throw new Error("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let artifacts=await this.handler.load();return this.loadSync(artifacts)}loadSync(artifacts){this.artifacts=artifacts;let graph2=this.artifacts.modelTopology,signature;this.artifacts.userDefinedMetadata!=null&&this.artifacts.userDefinedMetadata.signature!=null?signature=this.artifacts.userDefinedMetadata.signature:signature=this.artifacts.signature,this.signature=signature,this.version=`${graph2.versions.producer}.${graph2.versions.minConsumer}`;let weightMap=io_exports.decodeWeights(this.artifacts.weightData,this.artifacts.weightSpecs);if(this.executor=new GraphExecutor(OperationMapper.Instance.transformGraph(graph2,this.signature)),this.executor.weightMap=this.convertTensorMapToTensorsMap(weightMap),this.executor.resourceManager=this.resourceManager,artifacts.modelInitializer!=null&&artifacts.modelInitializer.node!=null){let initializer=OperationMapper.Instance.transformGraph(artifacts.modelInitializer);this.initializer=new GraphExecutor(initializer),this.initializer.weightMap=this.executor.weightMap,this.initializer.resourceManager=this.resourceManager,this.initializer.executeAsync({},[])}return!0}async save(handlerOrURL,config){if(typeof handlerOrURL=="string"){let handlers=io_exports.getSaveHandlers(handlerOrURL);if(handlers.length===0)throw new Error(`Cannot find any save handlers for URL '${handlerOrURL}'`);if(handlers.length>1)throw new Error(`Found more than one (${handlers.length}) save handlers for URL '${handlerOrURL}'`);handlerOrURL=handlers[0]}if(handlerOrURL.save==null)throw new Error("GraphModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");return handlerOrURL.save(this.artifacts)}predict(inputs,config){return this.execute(inputs,this.outputNodes)}normalizeInputs(inputs){if(!(inputs instanceof Tensor)&&!Array.isArray(inputs))return inputs;if(inputs=Array.isArray(inputs)?inputs:[inputs],inputs.length!==this.inputNodes.length)throw new Error(`Input tensor count mismatch,the graph model has ${this.inputNodes.length} placeholders, while there are ${inputs.length} input tensors.`);return this.inputNodes.reduce((map,inputName,i)=>(map[inputName]=inputs[i],map),{})}normalizeOutputs(outputs){return outputs=outputs||this.outputNodes,Array.isArray(outputs)?outputs:[outputs]}execute(inputs,outputs){inputs=this.normalizeInputs(inputs),outputs=this.normalizeOutputs(outputs);let result=this.executor.execute(inputs,outputs);return result.length>1?result:result[0]}async executeAsync(inputs,outputs){inputs=this.normalizeInputs(inputs),outputs=this.normalizeOutputs(outputs);let result=await this.executor.executeAsync(inputs,outputs);return result.length>1?result:result[0]}convertTensorMapToTensorsMap(map){return Object.keys(map).reduce((newMap,key)=>(newMap[key]=[map[key]],newMap),{})}dispose(){this.executor.dispose(),this.initializer&&this.initializer.dispose(),this.resourceManager.dispose()}};async function loadGraphModel(modelUrl,options={}){if(modelUrl==null)throw new Error("modelUrl in loadGraphModel() cannot be null. Please provide a url or an IOHandler that loads the model");options==null&&(options={}),options.fromTFHub&&modelUrl.load==null&&(modelUrl.endsWith("/")||(modelUrl=modelUrl+"/"),modelUrl=`${modelUrl}${DEFAULT_MODEL_NAME}${TFHUB_SEARCH_PARAM}`);let model2=new GraphModel(modelUrl,options);return await model2.load(),model2}var version3="2.8.3",dist_exports={};__export2(dist_exports,{CSVDataset:()=>CSVDataset,Dataset:()=>Dataset,FileDataSource:()=>FileDataSource,TextLineDataset:()=>TextLineDataset,URLDataSource:()=>URLDataSource,array:()=>array,csv:()=>csv,func:()=>func,generator:()=>generator,microphone:()=>microphone,version_data:()=>version4,webcam:()=>webcam,zip:()=>zip});var seedrandom3=__toModule2(require_seedrandom2()),seedrandom2=__toModule2(require_seedrandom2());function deepMap(input2,mapFn){return deepMapInternal(input2,mapFn)}function deepMapInternal(input2,mapFn,seen=new Map,containedIn=new Set){if(input2==null)return null;if(containedIn.has(input2))throw new Error("Circular references are not supported.");if(seen.has(input2))return seen.get(input2);let result=mapFn(input2);if(result.recurse&&result.value!==null)throw new Error("A deep map function may not return both a value and recurse=true.");if(result.recurse)if(isIterable2(input2)){let mappedIterable=Array.isArray(input2)?[]:{};containedIn.add(input2);for(let k in input2){let child=input2[k],childResult=deepMapInternal(child,mapFn,seen,containedIn);mappedIterable[k]=childResult}return containedIn.delete(input2),mappedIterable}else throw new Error(`Can't recurse into non-iterable type: ${input2}`);else return seen.set(input2,result.value),result.value}function deepZip(inputs,zipFn=zipToList){return deepZipInternal(inputs,zipFn)}function deepZipInternal(inputs,zipFn,containedIn=new Set){let input2=inputs[0];if(containedIn.has(input2))throw new Error("Circular references are not supported.");let result=zipFn(inputs);if(result.recurse&&result.value!==null)throw new Error("A deep zip function may not return both a value and recurse=true.");if(result.recurse)if(isIterable2(input2)){let mappedIterable=Array.isArray(input2)?[]:{};containedIn.add(input2);for(let k in input2){let children=inputs.map(x=>x[k]),childResult=deepZipInternal(children,zipFn,containedIn);mappedIterable[k]=childResult}return containedIn.delete(input2),mappedIterable}else throw new Error(`Can't recurse into non-iterable type: ${input2}`);else return result.value}function zipToList(x){return x===null?null:isIterable2(x[0])?{value:null,recurse:!0}:{value:x,recurse:!1}}async function deepMapAndAwaitAll(input2,mapFn){let seen=new Map;deepMapInternal(input2,mapFn,seen);for(let key of Array.from(seen.keys())){let value=seen.get(key);if(util_exports.isPromise(value)){let mappedValue=await value;seen.set(key,mappedValue)}}return deepMapInternal(input2,mapFn,seen)}function isIterable2(obj){return obj!=null&&!ArrayBuffer.isView(obj)&&(Array.isArray(obj)||typeof obj=="object"&&!(obj instanceof Tensor))}function canTensorify(obj){return obj==null||isPrimitive(obj)||Array.isArray(obj)||typeof obj=="object"&&obj instanceof Tensor||util_exports.isTypedArray(obj)}function isPrimitive(value){return value===null||typeof value!="object"&&typeof value!="function"}function deepClone(container){return deepMap(container,cloneIfTensor)}function cloneIfTensor(item){return item instanceof Tensor?{value:item.clone(),recurse:!1}:isIterable2(item)?{value:null,recurse:!0}:{value:item,recurse:!1}}var RingBuffer=class{constructor(capacity){if(this.capacity=capacity,this.begin=0,this.end=0,capacity==null)throw new RangeError("Can't create a ring buffer of unknown capacity.");if(capacity<1)throw new RangeError("Can't create ring buffer of capacity < 1.");this.data=new Array(capacity),this.doubledCapacity=2*capacity}wrap(index){for(;index<0;)index+=this.doubledCapacity;return index%this.doubledCapacity}get(index){if(index<0)throw new RangeError("Can't get item at a negative index.");return this.data[index%this.capacity]}set(index,value){if(index<0)throw new RangeError("Can't set item at a negative index.");this.data[index%this.capacity]=value}length(){let length=this.end-this.begin;return length<0&&(length=this.doubledCapacity+length),length}isFull(){return this.length()===this.capacity}isEmpty(){return this.length()===0}push(value){if(this.isFull())throw new RangeError("Ring buffer is full.");this.set(this.end,value),this.end=this.wrap(this.end+1)}pushAll(values){for(let value of values)this.push(value)}pop(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");this.end=this.wrap(this.end-1);let result=this.get(this.end);return this.set(this.end,void 0),result}unshift(value){if(this.isFull())throw new RangeError("Ring buffer is full.");this.begin=this.wrap(this.begin-1),this.set(this.begin,value)}shift(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let result=this.get(this.begin);return this.set(this.begin,void 0),this.begin=this.wrap(this.begin+1),result}shuffleExcise(relativeIndex){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let index=this.wrap(this.begin+relativeIndex),result=this.get(index);return this.set(index,this.pop()),result}},GrowingRingBuffer=class extends RingBuffer{constructor(){super(GrowingRingBuffer.INITIAL_CAPACITY)}isFull(){return!1}push(value){super.isFull()&&this.expand(),super.push(value)}unshift(value){super.isFull()&&this.expand(),super.unshift(value)}expand(){let newCapacity=this.capacity*2,newData=new Array(newCapacity),len=this.length();for(let i=0;ix===!0)}rowMajorBatch(batchSize,smallLastBatch=!0){return new RowMajorBatchIterator(this,batchSize,smallLastBatch)}columnMajorBatch(batchSize,smallLastBatch=!0,zipFn=zipToList){return this.rowMajorBatch(batchSize,smallLastBatch).map(x=>deepZip(x,zipFn))}concatenate(iterator,baseErrorHandler){return new ChainedIterator(iteratorFromItems([this,iterator]),baseErrorHandler)}take(count2){return count2<0||count2==null?this:new TakeIterator(this,count2)}skip(count2){return count2<0||count2==null?this:new SkipIterator(this,count2)}prefetch(bufferSize){return new PrefetchIterator(this,bufferSize)}shuffle(windowSize,seed){return new ShuffleIterator(this,windowSize,seed)}serial(){return new SerialIterator(this)}},ArrayIterator=class extends LazyIterator{constructor(items){super();this.items=items,this.trav=0}summary(){return`Array of ${this.items.length} items`}async next(){if(this.trav>=this.items.length)return{value:null,done:!0};let item=this.items[this.trav];return this.trav++,{value:deepClone(item),done:!1}}},FunctionCallIterator=class extends LazyIterator{constructor(nextFn){super();this.nextFn=nextFn}summary(){return"Function call"}async next(){try{return this.nextFn()}catch(e){throw e.message=`Error thrown while iterating through a dataset: ${e.message}`,e}}},SerialIterator=class extends LazyIterator{constructor(upstream){super();this.upstream=upstream,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Serial`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){return this.upstream.next()}},SkipIterator=class extends LazyIterator{constructor(upstream,maxCount){super();this.upstream=upstream,this.maxCount=maxCount,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Skip`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.count++ Take`}async next(){return this.count++>=this.maxCount?{value:null,done:!0}:this.upstream.next()}},RowMajorBatchIterator=class extends LazyIterator{constructor(upstream,batchSize,enableSmallLastBatch=!0){super();this.upstream=upstream,this.batchSize=batchSize,this.enableSmallLastBatch=enableSmallLastBatch,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> RowMajorBatch`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){let batch=[];for(;batch.length0?{value:batch,done:!1}:{value:null,done:!0};batch.push(item.value)}return{value:batch,done:!1}}},FilterIterator=class extends LazyIterator{constructor(upstream,predicate){super();this.upstream=upstream,this.predicate=predicate,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Filter`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;){let item=await this.upstream.next();if(item.done||this.predicate(item.value))return item;dispose(item.value)}}},MapIterator=class extends LazyIterator{constructor(upstream,transform){super();this.upstream=upstream,this.transform=transform}summary(){return`${this.upstream.summary()} -> Map`}async next(){let item=await this.upstream.next();if(item.done)return{value:null,done:!0};let inputTensors=tensor_util_exports.getTensorsInContainer(item.value),mapped=this.transform(item.value),outputTensors=tensor_util_exports.getTensorsInContainer(mapped);for(let t of inputTensors)tensor_util_exports.isTensorInList(t,outputTensors)||t.dispose();return{value:mapped,done:!1}}},ErrorHandlingLazyIterator=class extends LazyIterator{constructor(upstream,handler){super();this.upstream=upstream,this.handler=handler,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> handleErrors`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;)try{return await this.upstream.next()}catch(e){if(!this.handler(e))return{value:null,done:!0}}}},AsyncMapIterator=class extends LazyIterator{constructor(upstream,transform){super();this.upstream=upstream,this.transform=transform}summary(){return`${this.upstream.summary()} -> AsyncMap`}async next(){let item=await this.upstream.next();if(item.done)return{value:null,done:!0};let inputTensors=tensor_util_exports.getTensorsInContainer(item.value),mapped=await this.transform(item.value),outputTensors=tensor_util_exports.getTensorsInContainer(mapped);for(let t of inputTensors)tensor_util_exports.isTensorInList(t,outputTensors)||t.dispose();return{value:mapped,done:!1}}},OneToManyIterator=class extends LazyIterator{constructor(){super();this.outputQueue=new GrowingRingBuffer,this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.outputQueue.length()===0;)if(!await this.pump())return{value:null,done:!0};return{value:this.outputQueue.shift(),done:!1}}},FlatmapIterator=class extends OneToManyIterator{constructor(upstream,transform){super();this.upstream=upstream,this.transform=transform}summary(){return`${this.upstream.summary()} -> Flatmap`}async pump(){let item=await this.upstream.next();if(item.done)return!1;let inputTensors=tensor_util_exports.getTensorsInContainer(item.value),mappedArray=this.transform(item.value),outputTensors=tensor_util_exports.getTensorsInContainer(mappedArray);this.outputQueue.pushAll(mappedArray);for(let t of inputTensors)tensor_util_exports.isTensorInList(t,outputTensors)||t.dispose();return!0}},ChainedIterator=class extends LazyIterator{constructor(iterators,baseErrorHandler){super();this.baseErrorHandler=baseErrorHandler,this.lastRead=null,this.iterator=null,this.moreIterators=iterators}summary(){return"TODO: fill in upstream of chained summaries -> Chained"}async next(){return this.lastRead=this.readFromChain(this.lastRead),this.lastRead}async readFromChain(lastRead){if(await lastRead,this.iterator==null){let iteratorResult=await this.moreIterators.next();if(iteratorResult.done)return{value:null,done:!0};this.iterator=iteratorResult.value,this.baseErrorHandler!=null&&(this.iterator=this.iterator.handleErrors(this.baseErrorHandler))}let itemResult=await this.iterator.next();return itemResult.done?(this.iterator=null,this.readFromChain(lastRead)):itemResult}},ZipMismatchMode;(function(ZipMismatchMode2){ZipMismatchMode2[ZipMismatchMode2.FAIL=0]="FAIL",ZipMismatchMode2[ZipMismatchMode2.SHORTEST=1]="SHORTEST",ZipMismatchMode2[ZipMismatchMode2.LONGEST=2]="LONGEST"})(ZipMismatchMode||(ZipMismatchMode={}));var ZipIterator=class extends LazyIterator{constructor(iterators,mismatchMode=ZipMismatchMode.FAIL){super();this.iterators=iterators,this.mismatchMode=mismatchMode,this.count=0,this.currentPromise=null}summary(){return"{TODO: fill in upstream of zip summaries} -> Zip"}async nextState(afterState){await afterState;let numIterators=0,iteratorsDone=0;function getNext(container){return container instanceof LazyIterator?{value:container.next().then(x=>(numIterators++,x.done&&iteratorsDone++,x.value)),recurse:!1}:{value:null,recurse:!0}}let mapped=await deepMapAndAwaitAll(this.iterators,getNext);if(numIterators===iteratorsDone)return{value:null,done:!0};if(iteratorsDone>0)switch(this.mismatchMode){case ZipMismatchMode.FAIL:throw new Error(`Zipped streams should have the same length. Mismatched at element ${this.count}.`);case ZipMismatchMode.SHORTEST:return{value:null,done:!0};case ZipMismatchMode.LONGEST:default:}return this.count++,{value:mapped,done:!1}}async next(){return this.currentPromise=this.nextState(this.currentPromise),this.currentPromise}},PrefetchIterator=class extends LazyIterator{constructor(upstream,bufferSize){super();this.upstream=upstream,this.bufferSize=bufferSize,this.buffer=new RingBuffer(bufferSize)}summary(){return`${this.upstream.summary()} -> Prefetch`}refill(){for(;!this.buffer.isFull();){let v=this.upstream.next();this.buffer.push(v)}}next(){return this.refill(),this.buffer.shift()}},ShuffleIterator=class extends PrefetchIterator{constructor(upstream,windowSize,seed){super(upstream,windowSize);this.upstream=upstream,this.windowSize=windowSize,this.upstreamExhausted=!1,this.random=seedrandom2.alea(seed||util_exports.now().toString()),this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}randomInt(max6){return Math.floor(this.random()*max6)}chooseIndex(){return this.randomInt(this.buffer.length())}async serialNext(){for(this.upstreamExhausted||this.refill();!this.buffer.isEmpty();){let chosenIndex=this.chooseIndex(),result=await this.buffer.shuffleExcise(chosenIndex);if(result.done)this.upstreamExhausted=!0;else return this.refill(),result}return{value:null,done:!0}}},Dataset=class{constructor(){this.size=null}batch(batchSize,smallLastBatch=!0){let base2=this;util_exports.assert(batchSize>0,()=>`batchSize needs to be positive, but it is - ${batchSize}`);let size;return this.size===Infinity||this.size==null?size=this.size:smallLastBatch?size=Math.ceil(this.size/batchSize):size=Math.floor(this.size/batchSize),datasetFromIteratorFn(async()=>(await base2.iterator()).columnMajorBatch(batchSize,smallLastBatch,deepBatchConcat),size)}concatenate(dataset){let base2=this,size;return this.size===Infinity||dataset.size===Infinity?size=Infinity:this.size!=null&&dataset.size!=null?size=this.size+dataset.size:size=null,datasetFromIteratorFn(async()=>(await base2.iterator()).concatenate(await dataset.iterator()),size)}filter(predicate){let base2=this,size;return this.size===Infinity?size=Infinity:size=null,datasetFromIteratorFn(async()=>(await base2.iterator()).filter(x=>tidy(()=>predicate(x))),size)}async forEachAsync(f){return(await this.iterator()).forEachAsync(f)}map(transform){let base2=this;return datasetFromIteratorFn(async()=>(await base2.iterator()).map(x=>tidy(()=>transform(x))),this.size)}mapAsync(transform){let base2=this;return datasetFromIteratorFn(async()=>(await base2.iterator()).mapAsync(transform),this.size)}prefetch(bufferSize){if(bufferSize==null)throw new RangeError("`Dataset.prefetch()` requires bufferSize to be specified.");let base2=this;return datasetFromIteratorFn(async()=>(await base2.iterator()).prefetch(bufferSize),this.size)}repeat(count2){let base2=this,size;return this.size!=null&&count2>0?size=this.size*count2:count2===0?size=0:this.size!=null&&(count2===void 0||count2<0)?size=Infinity:size=null,datasetFromIteratorFn(async()=>{let iteratorIterator=iteratorFromFunction(async()=>({value:await base2.iterator(),done:!1}));return iteratorFromConcatenated(iteratorIterator.take(count2))},size)}skip(count2){let base2=this,size;return this.size!=null&&count2>=0&&this.size>=count2?size=this.size-count2:this.size!=null&&(this.size(await base2.iterator()).skip(count2),size)}shuffle(bufferSize,seed,reshuffleEachIteration=!0){if(bufferSize==null||bufferSize<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)`);let base2=this,random=seedrandom3.alea(seed||util_exports.now().toString());return datasetFromIteratorFn(async()=>{let seed2=random.int32();return reshuffleEachIteration&&(seed2+=random.int32()),(await base2.iterator()).shuffle(bufferSize,seed2.toString())},this.size)}take(count2){let base2=this,size;return this.size!=null&&this.size>count2?size=count2:this.size!=null&&this.size<=count2?size=this.size:size=null,datasetFromIteratorFn(async()=>(await base2.iterator()).take(count2),size)}async toArray(){if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArray()}async toArrayForTest(){if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArrayForTest()}};Dataset.MAX_BUFFER_SIZE=1e4;function datasetFromIteratorFn(iteratorFn,size=null){return new class extends Dataset{constructor(){super(...arguments);this.size=size}async iterator(){return iteratorFn()}}}function array(items){return datasetFromIteratorFn(async()=>iteratorFromItems(items),items.length)}function zip(datasets){if(!isIterable2(datasets))throw new Error("The argument to zip() must be an object or array.");let size;if(Array.isArray(datasets))for(let i=0;i{let streams=await deepMapAndAwaitAll(datasets,d=>{if(d instanceof Dataset)return{value:d.iterator(),recurse:!1};if(isIterable2(d))return{value:null,recurse:!0};throw new Error("Leaves of the structure passed to zip() must be Datasets, not primitives.")});return iteratorFromZipped(streams,ZipMismatchMode.SHORTEST)},size)}function deepBatchConcat(rows){if(rows===null)return null;let exampleRow=rows[0];return canTensorify(exampleRow)?{value:batchConcat(rows),recurse:!1}:{value:null,recurse:!0}}function batchConcat(arrays){if(arrays.length===0)throw new Error("Can't make a batch of zero elements.");return arrays[0]instanceof Tensor?stack(arrays):tensor(arrays)}var TextLineDataset=class extends Dataset{constructor(input2){super();this.input=input2}async iterator(){return(await this.input.iterator()).decodeUTF8().split(` -`).map(line=>(line.endsWith("\r")&&(line=line.slice(0,-1)),line))}},CODE_QUOTE='"',STATE_OUT=Symbol("out"),STATE_FIELD=Symbol("field"),STATE_QUOTE=Symbol("quote"),STATE_QUOTE_AFTER_QUOTE=Symbol("quoteafterquote"),STATE_WITHIN_QUOTE_IN_QUOTE=Symbol("quoteinquote"),CSVDataset=class extends Dataset{constructor(input2,csvConfig){super();this.input=input2,this.hasHeader=!0,this.fullColumnNames=null,this.columnNamesValidated=!1,this.columnConfigs=null,this.configuredColumnsOnly=!1,this.delimiter=",",this.delimWhitespace=!1,this.base=new TextLineDataset(input2),csvConfig||(csvConfig={}),this.hasHeader=csvConfig.hasHeader!==!1,this.fullColumnNames=csvConfig.columnNames,this.columnConfigs=csvConfig.columnConfigs,this.configuredColumnsOnly=csvConfig.configuredColumnsOnly,csvConfig.delimWhitespace?(util_exports.assert(csvConfig.delimiter==null,()=>"Delimiter should not be provided when delimWhitespace is true."),this.delimWhitespace=!0,this.delimiter=" "):this.delimiter=csvConfig.delimiter?csvConfig.delimiter:","}async columnNames(){return this.columnNamesValidated||await this.setColumnNames(),this.configuredColumnsOnly?Object.keys(this.columnConfigs):this.fullColumnNames}async setColumnNames(){let columnNamesFromFile=await this.maybeReadHeaderLine();if(!this.fullColumnNames&&!columnNamesFromFile)throw new Error("Column names must be provided if there is no header line.");this.fullColumnNames&&columnNamesFromFile&&util_exports.assert(columnNamesFromFile.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 ("+columnNamesFromFile.length.toString()+")."),this.fullColumnNames||(this.fullColumnNames=columnNamesFromFile);let counts=this.fullColumnNames.reduce((countAcc,name)=>(countAcc[name]=countAcc[name]+1||1,countAcc),{}),duplicateNames=Object.keys(counts).filter(name=>counts[name]>1);if(util_exports.assert(duplicateNames.length===0,()=>"Duplicate column names found: "+duplicateNames.toString()),this.columnConfigs){for(let key of Object.keys(this.columnConfigs))if(this.fullColumnNames.indexOf(key)===-1)throw new Error('The key "'+key+'" provided in columnConfigs does not match any of the column names ('+this.fullColumnNames.toString()+").")}this.columnNamesValidated=!0}async maybeReadHeaderLine(){if(this.hasHeader){let firstElement=await(await this.base.iterator()).next();if(firstElement.done)throw new Error("No data was found for CSV parsing.");let firstLine=firstElement.value;return this.parseRow(firstLine,!1)}else return null}async iterator(){this.columnNamesValidated||await this.setColumnNames();let lines=await this.base.iterator();return this.hasHeader&&(lines=lines.skip(1)),lines.map(x=>this.makeDataElement(x))}makeDataElement(line){let values=this.parseRow(line),features={},labels={};for(let i=0;i14||!Number.isInteger(fftSizeLog2))throw new Error(`Invalid fftSize: it must be a power of 2 between 2 to 4 and 2 to 14, but got ${this.fftSize}`);if(this.numFrames=microphoneConfig.numFramesPerSpectrogram||43,this.sampleRateHz=microphoneConfig.sampleRateHz,this.columnTruncateLength=microphoneConfig.columnTruncateLength||this.fftSize,this.audioTrackConstraints=microphoneConfig.audioTrackConstraints,this.smoothingTimeConstant=microphoneConfig.smoothingTimeConstant||0,this.includeSpectrogram=microphoneConfig.includeSpectrogram!==!1,this.includeWaveform=microphoneConfig.includeWaveform===!0,!this.includeSpectrogram&&!this.includeWaveform)throw new Error("Both includeSpectrogram and includeWaveform are false. At least one type of data should be returned.")}summary(){return"microphone"}static async create(microphoneConfig={}){if(env().get("IS_NODE"))throw new Error("microphone API is only supported in browser environment.");let microphoneIterator=new MicrophoneIterator(microphoneConfig);return await microphoneIterator.start(),microphoneIterator}async start(){try{this.stream=await navigator.mediaDevices.getUserMedia({audio:this.audioTrackConstraints==null?!0:this.audioTrackConstraints,video:!1})}catch(e){throw new Error(`Error thrown while initializing video stream: ${e.message}`)}if(!this.stream)throw new Error("Could not obtain audio from microphone.");let ctxConstructor=window.AudioContext||window.webkitAudioContext;if(this.audioContext=new ctxConstructor,!this.sampleRateHz)this.sampleRateHz=this.audioContext.sampleRate;else if(this.audioContext.sampleRate!==this.sampleRateHz)throw new Error(`Mismatch in sampling rate: Expected: ${this.sampleRateHz}; Actual: ${this.audioContext.sampleRate}`);let streamSource=this.audioContext.createMediaStreamSource(this.stream);this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=this.fftSize*2,this.analyser.smoothingTimeConstant=this.smoothingTimeConstant,streamSource.connect(this.analyser),this.freqData=new Float32Array(this.fftSize),this.timeData=new Float32Array(this.fftSize)}async next(){if(this.isClosed)return{value:null,done:!0};let spectrogramTensor,waveformTensor,audioDataQueue=await this.getAudioData();if(this.includeSpectrogram){let freqData=this.flattenQueue(audioDataQueue.freqDataQueue);spectrogramTensor=this.getTensorFromAudioDataArray(freqData,[this.numFrames,this.columnTruncateLength,1])}if(this.includeWaveform){let timeData=this.flattenQueue(audioDataQueue.timeDataQueue);waveformTensor=this.getTensorFromAudioDataArray(timeData,[this.numFrames*this.fftSize,1])}return{value:{spectrogram:spectrogramTensor,waveform:waveformTensor},done:!1}}async capture(){return(await this.next()).value}async getAudioData(){let freqDataQueue=[],timeDataQueue=[],currentFrames=0;return new Promise(resolve=>{let intervalID=setInterval(()=>{this.includeSpectrogram&&(this.analyser.getFloatFrequencyData(this.freqData),this.freqData[0]===-Infinity&&resolve({freqDataQueue,timeDataQueue}),freqDataQueue.push(this.freqData.slice(0,this.columnTruncateLength))),this.includeWaveform&&(this.analyser.getFloatTimeDomainData(this.timeData),timeDataQueue.push(this.timeData.slice())),++currentFrames===this.numFrames&&(clearInterval(intervalID),resolve({freqDataQueue,timeDataQueue}))},this.fftSize/this.sampleRateHz*1e3)})}stop(){this.isClosed||(this.isClosed=!0,this.analyser.disconnect(),this.audioContext.close(),this.stream!=null&&this.stream.getTracks().length>0&&this.stream.getTracks()[0].stop())}toArray(){throw new Error("Can not convert infinite audio stream to array.")}getSampleRate(){return this.sampleRateHz}flattenQueue(queue){let frameSize=queue[0].length,freqData=new Float32Array(queue.length*frameSize);return queue.forEach((data,i)=>freqData.set(data,i*frameSize)),freqData}getTensorFromAudioDataArray(freqData,shape){let vals=new Float32Array(util_exports.sizeFromShape(shape));return vals.set(freqData,vals.length-freqData.length),tensor(vals,shape)}},WebcamIterator=class extends LazyIterator{constructor(webcamVideoElement,webcamConfig){super();if(this.webcamVideoElement=webcamVideoElement,this.webcamConfig=webcamConfig,this.isClosed=!0,this.resize=!1,this.needToResize())if(this.resize=!0,this.cropSize=[this.webcamConfig.resizeHeight,this.webcamConfig.resizeWidth],this.cropBoxInd=tensor1d([0],"int32"),this.webcamConfig.centerCrop){let widthCroppingRatio=this.webcamConfig.resizeWidth*1/this.webcamVideoElement.width,heightCroppingRatio=this.webcamConfig.resizeHeight*1/this.webcamVideoElement.height,widthCropStart=(1-widthCroppingRatio)/2,heightCropStart=(1-heightCroppingRatio)/2,widthCropEnd=widthCropStart+widthCroppingRatio,heightCropEnd=heightCroppingRatio+heightCropStart;this.cropBox=tensor2d([heightCropStart,widthCropStart,heightCropEnd,widthCropEnd],[1,4])}else this.cropBox=tensor2d([0,0,1,1],[1,4])}summary(){return"webcam"}static async create(webcamVideoElement,webcamConfig={}){if(env().get("IS_NODE"))throw new Error("tf.data.webcam is only supported in browser environment.");if(!webcamVideoElement){if(webcamVideoElement=document.createElement("video"),!webcamConfig.resizeWidth||!webcamConfig.resizeHeight)throw new Error("Please provide webcam video element, or resizeWidth and resizeHeight to create a hidden video element.");webcamVideoElement.width=webcamConfig.resizeWidth,webcamVideoElement.height=webcamConfig.resizeHeight}let webcamIterator=new WebcamIterator(webcamVideoElement,webcamConfig);return await webcamIterator.start(),webcamIterator}async start(){this.webcamConfig.facingMode&&util_exports.assert(this.webcamConfig.facingMode==="user"||this.webcamConfig.facingMode==="environment",()=>`Invalid webcam facing mode: ${this.webcamConfig.facingMode}. Please provide 'user' or 'environment'`);try{this.stream=await navigator.mediaDevices.getUserMedia({video:{deviceId:this.webcamConfig.deviceId,facingMode:this.webcamConfig.facingMode?this.webcamConfig.facingMode:"user",width:this.webcamVideoElement.width,height:this.webcamVideoElement.height}})}catch(e){throw e.message=`Error thrown while initializing video stream: ${e.message}`,e}if(!this.stream)throw new Error("Could not obtain video from webcam.");try{this.webcamVideoElement.srcObject=this.stream}catch(error){console.log(error),this.webcamVideoElement.src=window.URL.createObjectURL(this.stream)}return this.webcamVideoElement.play(),this.isClosed=!1,new Promise(resolve=>{this.webcamVideoElement.onloadedmetadata=()=>{resolve()}})}async next(){if(this.isClosed)return{value:null,done:!0};let img;try{img=browser_exports.fromPixels(this.webcamVideoElement)}catch(e){throw new Error(`Error thrown converting video to pixels: ${JSON.stringify(e)}`)}if(this.resize)try{return{value:this.cropAndResizeFrame(img),done:!1}}catch(e){throw new Error(`Error thrown cropping the video: ${e.message}`)}finally{img.dispose()}else return{value:img,done:!1}}needToResize(){return!!(this.webcamConfig.resizeWidth&&this.webcamConfig.resizeHeight&&(this.webcamVideoElement.width!==this.webcamConfig.resizeWidth||this.webcamVideoElement.height!==this.webcamConfig.resizeHeight))}cropAndResizeFrame(img){return tidy(()=>{let expandedImage=img.toFloat().expandDims(0),resizedImage;resizedImage=image.cropAndResize(expandedImage,this.cropBox,this.cropBoxInd,this.cropSize,"bilinear");let shape=resizedImage.shape;return resizedImage.reshape(shape.slice(1))})}async capture(){return(await this.next()).value}stop(){this.stream.getTracks().forEach(track=>track.stop());try{this.webcamVideoElement.srcObject=null}catch(error){console.log(error),this.webcamVideoElement.src=null}this.isClosed=!0}toArray(){throw new Error("Can not convert infinite video stream to array.")}},DataSource=class{},StringIterator=class extends LazyIterator{split(separator){return new SplitIterator(this,separator)}},SplitIterator=class extends StringIterator{constructor(upstream,separator){super();this.upstream=upstream,this.impl=new SplitIteratorImpl(upstream,separator)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},SplitIteratorImpl=class extends OneToManyIterator{constructor(upstream,separator){super();this.upstream=upstream,this.separator=separator,this.carryover=""}summary(){return`${this.upstream.summary()} -> Split('${this.separator}')`}async pump(){let chunkResult=await this.upstream.next();if(chunkResult.done)return this.carryover===""?!1:(this.outputQueue.push(this.carryover),this.carryover="",!0);let lines=chunkResult.value.split(this.separator);lines[0]=this.carryover+lines[0];for(let line of lines.slice(0,-1))this.outputQueue.push(line);return this.carryover=lines[lines.length-1],!0}},ByteChunkIterator=class extends LazyIterator{decodeUTF8(){return new Utf8Iterator(this)}},Utf8Iterator=class extends StringIterator{constructor(upstream){super();this.upstream=upstream,this.impl=new Utf8IteratorImpl(upstream)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},Utf8IteratorImpl=class extends OneToManyIterator{constructor(upstream){super();if(this.upstream=upstream,env().get("IS_BROWSER"))this.decoder=new TextDecoder("utf-8");else{let{StringDecoder}=require_string_decoder();this.decoder=new StringDecoder("utf8")}}summary(){return`${this.upstream.summary()} -> Utf8`}async pump(){let chunkResult=await this.upstream.next(),chunk;if(chunkResult.done)return!1;chunk=chunkResult.value;let text;return env().get("IS_BROWSER")?text=this.decoder.decode(chunk,{stream:!0}):text=this.decoder.write(Buffer.from(chunk.buffer)),this.outputQueue.push(text),!0}},FileChunkIterator=class extends ByteChunkIterator{constructor(file,options={}){super();this.file=file,this.options=options,util_exports.assert(file instanceof Uint8Array||(env().get("IS_BROWSER")?file instanceof File||file instanceof Blob:!1),()=>"FileChunkIterator only supports File, Blob and Uint8Array right now."),this.offset=options.offset||0,this.chunkSize=options.chunkSize||1024*1024}summary(){return`FileChunks ${this.file}`}async next(){return this.offset>=(this.file instanceof Uint8Array?this.file.byteLength:this.file.size)?{value:null,done:!0}:{value:await new Promise((resolve,reject)=>{let end=this.offset+this.chunkSize;if(this.file instanceof Uint8Array)resolve(new Uint8Array(this.file.slice(this.offset,end)));else{let fileReader=new FileReader;fileReader.onload=event=>{let data=fileReader.result;if(data instanceof ArrayBuffer&&(data=new Uint8Array(data)),!(data instanceof Uint8Array))return reject(new TypeError("FileReader returned unknown type."));resolve(data)},fileReader.onabort=event=>reject(new Error("Aborted")),fileReader.onerror=event=>reject(new Error(event.type));let slice5=this.file.slice(this.offset,end);fileReader.readAsArrayBuffer(slice5)}this.offset=end}),done:!1}}};async function urlChunkIterator(url,options={}){let urlString,requestInit;typeof url=="string"?urlString=url:(urlString=url.url,requestInit=getRequestInitFromRequest(url));let response=await util_exports.fetch(urlString,requestInit);if(response.ok){let uint8Array=new Uint8Array(await response.arrayBuffer());return new FileChunkIterator(uint8Array,options)}else throw new Error(response.statusText)}var getRequestInitFromRequest=request=>({method:request.method,headers:request.headers,body:request.body,mode:request.mode,credentials:request.credentials,cache:request.cache,redirect:request.redirect,referrer:request.referrer,integrity:request.integrity});function isLocalPath(source){return typeof source=="string"&&source.substr(0,7)==="file://"}var FileDataSource=class extends DataSource{constructor(input2,options={}){super();this.input=input2,this.options=options}async iterator(){if(isLocalPath(this.input)&&env().get("IS_NODE")){let fs=require("fs");this.input=fs.readFileSync(this.input.substr(7))}return new FileChunkIterator(this.input,this.options)}},URLDataSource=class extends DataSource{constructor(url,fileOptions={}){super();this.url=url,this.fileOptions=fileOptions}async iterator(){return isLocalPath(this.url)?new FileDataSource(this.url,this.fileOptions).iterator():urlChunkIterator(this.url,this.fileOptions)}};function csv(source,csvConfig={}){return new CSVDataset(new URLDataSource(source),csvConfig)}function func(f){let iter=iteratorFromFunction(f);return datasetFromIteratorFn(async()=>iter)}function generator(generator2){return datasetFromIteratorFn(async()=>{let gen=await generator2();return iteratorFromFunction(()=>gen.next())})}async function webcam(webcamVideoElement,webcamConfig){return WebcamIterator.create(webcamVideoElement,webcamConfig)}async function microphone(microphoneConfig){return MicrophoneIterator.create(microphoneConfig)}var version4="2.8.3";function assertNotComplex(tensor2,opName){Array.isArray(tensor2)||(tensor2=[tensor2]),tensor2.forEach(t=>{t!=null&&util_exports.assert(t.dtype!=="complex64",()=>`${opName} does not support complex64 tensors in the CPU backend.`)})}var whereImpl2=kernel_impls_exports.whereImpl,MathBackendCPU=class extends KernelBackend{constructor(){super();this.blockSize=48,this.firstUse=!0,this.data=new DataStorage(this,engine())}write(values,shape,dtype){this.firstUse&&(this.firstUse=!1,env().get("IS_NODE")&&backend_util_exports.warn(` + ${a}, and tensor's shape is: ${e.shape}`);let s=a===0?0:e.size/a,i=D(()=>{let l=[];e=j(e,[1,a,s]);for(let c=0;c{switch(e.op){case"If":case"StatelessIf":{let a=I("thenBranch",e,t,n),r=I("elseBranch",e,t,n),s=I("cond",e,t,n),i=I("args",e,t,n);return(await s.data())[0]?n.functionMap[a].executeFunctionAsync(i,n.tensorArrayMap,n.tensorListMap):n.functionMap[r].executeFunctionAsync(i,n.tensorArrayMap,n.tensorListMap)}case"While":case"StatelessWhile":{let a=I("body",e,t,n),r=I("cond",e,t,n),s=I("args",e,t,n),i=await n.functionMap[r].executeFunctionAsync(s,n.tensorArrayMap,n.tensorListMap),o=s.map(u=>u.id),l=await i[0].data();i.forEach(u=>{!u.kept&&o.indexOf(u.id)===-1&&u.dispose()});let c=s;for(;l[0];){let u=c;c=await n.functionMap[a].executeFunctionAsync(c,n.tensorArrayMap,n.tensorListMap);let p=c.map(h=>h.id);u.forEach(h=>{!h.kept&&o.indexOf(h.id)===-1&&p.indexOf(h.id)===-1&&h.dispose()});let d=await n.functionMap[r].executeFunctionAsync(c,n.tensorArrayMap,n.tensorListMap);l=await d[0].data(),d.forEach(h=>{!h.kept&&o.indexOf(h.id)===-1&&p.indexOf(h.id)===-1&&h.dispose()})}return c}case"LoopCond":{let a=I("pred",e,t,n);return[Er(a)]}case"Switch":{let a=I("pred",e,t,n),r=I("data",e,t,n);return r.kept||(r=Er(r)),(await a.data())[0]?[void 0,r]:[r,void 0]}case"Merge":{let a=e.inputNames.find(r=>Sn(r,t,n)!==void 0);if(a){let r=Sn(a,t,n);return[Er(r)]}return}case"Enter":{let a=I("frameName",e,t,n),r=I("tensor",e,t,n);return n.enterFrame(a),[Er(r)]}case"Exit":{let a=I("tensor",e,t,n);return n.exitFrame(),[Er(a)]}case"NextIteration":{let a=I("tensor",e,t,n);return n.nextIteration(),[Er(a)]}case"TensorArrayV3":{let a=I("size",e,t,n),r=I("dtype",e,t,n),s=I("elementShape",e,t,n),i=I("dynamicSize",e,t,n),o=I("clearAfterRead",e,t,n),l=I("identicalElementShapes",e,t,n),c=I("name",e,t,n),u=new lV(c,r,a,s,l,i,o);return n.addTensorArray(u),[u.idTensor,de(1)]}case"TensorArrayWriteV3":{let a=I("tensorArrayId",e,t,n),r=I("index",e,t,n),s=I("tensor",e,t,n),i=n.getTensorArray(a.id);return i.write(r,s),[i.idTensor]}case"TensorArrayReadV3":{let a=I("tensorArrayId",e,t,n),r=I("index",e,t,n);return[n.getTensorArray(a.id).read(r)]}case"TensorArrayGatherV3":{let a=I("tensorArrayId",e,t,n),r=I("indices",e,t,n),s=I("dtype",e,t,n);return[n.getTensorArray(a.id).gather(r,s)]}case"TensorArrayScatterV3":{let a=I("tensorArrayId",e,t,n),r=I("indices",e,t,n),s=I("tensor",e,t,n),i=n.getTensorArray(a.id);return i.scatter(r,s),[i.idTensor]}case"TensorArrayConcatV3":{let a=I("tensorArrayId",e,t,n),r=n.getTensorArray(a.id),s=I("dtype",e,t,n);return[r.concat(s)]}case"TensorArraySplitV3":{let a=I("tensorArrayId",e,t,n),r=I("tensor",e,t,n),s=I("lengths",e,t,n),i=n.getTensorArray(a.id);return i.split(s,r),[i.idTensor]}case"TensorArraySizeV3":{let a=I("tensorArrayId",e,t,n),r=n.getTensorArray(a.id);return[de(r.size(),"int32")]}case"TensorArrayCloseV3":{let a=I("tensorArrayId",e,t,n),r=n.getTensorArray(a.id);return r.clearAndClose(),[r.idTensor]}case"TensorListSetItem":{let a=I("tensorListId",e,t,n),r=I("index",e,t,n),s=I("tensor",e,t,n),i=n.getTensorList(a.id);return i.setItem(r,s),[i.idTensor]}case"TensorListGetItem":{let a=I("tensorListId",e,t,n),r=I("index",e,t,n),s=I("elementShape",e,t,n),i=I("elementDType",e,t,n);return[n.getTensorList(a.id).getItem(r,s,i)]}case"TensorListScatterV2":case"TensorListScatter":{let a=I("indices",e,t,n),r=I("tensor",e,t,n),s=I("elementShape",e,t,n),i=I("numElements",e,t,n),o=pV(r,a,s,i);return n.addTensorList(o),[o.idTensor]}case"TensorListReserve":case"EmptyTensorList":{let a=I("elementShape",e,t,n),r=I("elementDType",e,t,n),s;e.op==="TensorListReserve"?s="numElements":s="maxNumElements";let i=I(s,e,t,n),o=cV(a,r,i);return n.addTensorList(o),[o.idTensor]}case"TensorListGather":{let a=I("tensorListId",e,t,n),r=I("indices",e,t,n),s=I("elementShape",e,t,n),i=I("elementDType",e,t,n);return[n.getTensorList(a.id).gather(r,i,s)]}case"TensorListStack":{let a=I("tensorListId",e,t,n),r=I("elementShape",e,t,n),s=I("elementDType",e,t,n),i=I("numElements",e,t,n);return[n.getTensorList(a.id).stack(r,s,i)]}case"TensorListFromTensor":{let a=I("tensor",e,t,n),r=I("elementShape",e,t,n),s=I("elementDType",e,t,n),i=uV(a,r,s);return n.addTensorList(i),[i.idTensor]}case"TensorListConcat":{let a=I("tensorListId",e,t,n),r=n.getTensorList(a.id),s=I("dtype",e,t,n),i=I("elementShape",e,t,n);return[r.concat(s,i)]}case"TensorListPushBack":{let a=I("tensorListId",e,t,n),r=I("tensor",e,t,n),s=n.getTensorList(a.id);return s.pushBack(r),[s.idTensor]}case"TensorListPopBack":{let a=I("tensorListId",e,t,n),r=I("elementShape",e,t,n),s=I("elementDType",e,t,n);return[n.getTensorList(a.id).popBack(r,s)]}case"TensorListSplit":{let a=I("tensor",e,t,n),r=I("elementShape",e,t,n),s=I("lengths",e,t,n),i=dV(a,s,r);return n.addTensorList(i),[i.idTensor]}default:throw TypeError(`Node type ${e.op} is not implemented`)}};function IN(e,t,n){let[a,r]=I("fusedOps",e,t,n),s=a==="biasadd",i=r==="prelu",o=a==="fusedbatchnorm",l=I("numArgs",e,t,n);if(s){if(i&&l!==2)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!i&&l!==1)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd must have one extra argument: bias.")}if(o)throw new Error("FusedConv2d and DepthwiseConv2d with FusedBatchNorm is not supported.");let c=I("strides",e,t,n),u=Cm(e,t,n),p=I("dataFormat",e,t,n).toUpperCase(),d=I("dilations",e,t,n),[h,m]=I("args",e,t,n),f=I("leakyreluAlpha",e,t,n);return{stride:c,pad:u,dataFormat:p,dilations:d,biasArg:h,preluArg:m,activationFunc:r,leakyreluAlpha:f}}var mV=(e,t,n)=>{switch(e.op){case"Conv1D":{let a=I("stride",e,t,n),r=I("pad",e,t,n),s=I("dataFormat",e,t,n).toUpperCase(),i=I("dilation",e,t,n);return[dh(I("x",e,t,n),I("filter",e,t,n),a,r,s,i)]}case"Conv2D":{let a=I("strides",e,t,n),r=Cm(e,t,n),s=I("dataFormat",e,t,n).toUpperCase(),i=I("dilations",e,t,n);return[$t(I("x",e,t,n),I("filter",e,t,n),[a[1],a[2]],r,s,[i[1],i[2]])]}case"_FusedConv2D":{let{stride:a,pad:r,dataFormat:s,dilations:i,biasArg:o,preluArg:l,activationFunc:c,leakyreluAlpha:u}=IN(e,t,n);return[as.conv2d({x:I("x",e,t,n),filter:I("filter",e,t,n),strides:[a[1],a[2]],pad:r,dataFormat:s,dilations:[i[1],i[2]],bias:o,activation:c,preluActivationWeights:l,leakyreluAlpha:u})]}case"FusedDepthwiseConv2dNative":{let{stride:a,pad:r,dataFormat:s,dilations:i,biasArg:o,preluArg:l,activationFunc:c,leakyreluAlpha:u}=IN(e,t,n);return[as.depthwiseConv2d({x:I("x",e,t,n),filter:I("filter",e,t,n),strides:[a[1],a[2]],pad:r,dataFormat:s,dilations:[i[1],i[2]],bias:o,activation:c,preluActivationWeights:l,leakyreluAlpha:u})]}case"Conv2DBackpropInput":case"Conv2dTranspose":{let a=I("outputShape",e,t,n),r=I("strides",e,t,n),s=Cm(e,t,n);return[hh(I("x",e,t,n),I("filter",e,t,n),a,[r[1],r[2]],s)]}case"DepthwiseConv2dNative":case"DepthwiseConv2d":{let a=I("strides",e,t,n),r=Cm(e,t,n),s=I("dilations",e,t,n),i=I("dataFormat",e,t,n).toUpperCase();return[xr(I("input",e,t,n),I("filter",e,t,n),[a[1],a[2]],r,i,[s[1],s[2]])]}case"Conv3D":{let a=I("strides",e,t,n),r=I("pad",e,t,n),s=I("dataFormat",e,t,n).toUpperCase(),i=I("dilations",e,t,n);return[Dy(I("x",e,t,n),I("filter",e,t,n),[a[1],a[2],a[3]],r,s,[i[1],i[2],i[3]])]}case"AvgPool":{let a=I("strides",e,t,n),r=I("pad",e,t,n),s=I("kernelSize",e,t,n);return[Jn(I("x",e,t,n),[s[1],s[2]],[a[1],a[2]],r)]}case"MaxPool":{let a=I("strides",e,t,n),r=I("pad",e,t,n),s=I("kernelSize",e,t,n);return[Dt(I("x",e,t,n),[s[1],s[2]],[a[1],a[2]],r)]}case"MaxPoolWithArgmax":{let a=I("strides",e,t,n),r=I("pad",e,t,n),s=I("kernelSize",e,t,n),i=I("includeBatchInIndex",e,t,n),{result:o,indexes:l}=wk(I("x",e,t,n),[s[1],s[2]],[a[1],a[2]],r,i);return[o,l]}case"AvgPool3D":{let a=I("strides",e,t,n),r=I("pad",e,t,n),s=I("kernelSize",e,t,n);return[Fy(I("x",e,t,n),[s[1],s[2],s[3]],[a[1],a[2],a[3]],r)]}case"MaxPool3D":{let a=I("strides",e,t,n),r=I("pad",e,t,n),s=I("kernelSize",e,t,n);return[Gy(I("x",e,t,n),[s[1],s[2],s[3]],[a[1],a[2],a[3]],r)]}case"Dilation2D":{let a=I("strides",e,t,n),r=I("pad",e,t,n),s=I("dilations",e,t,n),i=a[1],o=a[2],l=s[1],c=s[2];return[Ry(I("x",e,t,n),I("filter",e,t,n),[i,o],r,[l,c],"NHWC")]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},fV=(e,t,n)=>{switch(e.op){case"Fill":{let a=I("shape",e,t,n),r=I("dtype",e,t,n),s=I("value",e,t,n);return[In(a,s,r)]}case"LinSpace":{let a=I("start",e,t,n),r=I("stop",e,t,n),s=I("num",e,t,n);return[mk(a,r,s)]}case"Multinomial":{let a=I("logits",e,t,n),r=I("numSamples",e,t,n),s=I("seed",e,t,n);return[kk(a,r,s)]}case"OneHot":{let a=I("indices",e,t,n),r=I("depth",e,t,n),s=I("onValue",e,t,n),i=I("offValue",e,t,n);return[Ml(a,r,s,i)]}case"Ones":return[Ka(I("shape",e,t,n),I("dtype",e,t,n))];case"OnesLike":return[Mn(I("x",e,t,n))];case"RandomUniform":return[Vl(I("shape",e,t,n),I("minval",e,t,n),I("maxval",e,t,n),I("dtype",e,t,n))];case"Range":{let a=I("start",e,t,n),r=I("stop",e,t,n),s=I("step",e,t,n);return[Nh(a,r,s,I("dtype",e,t,n))]}case"TruncatedNormal":{let a=I("shape",e,t,n),r=I("mean",e,t,n),s=I("stdDev",e,t,n),i=I("seed",e,t,n);return[$h(a,r,s,I("dtype",e,t,n),i)]}case"Zeros":return[yt(I("shape",e,t,n),I("dtype",e,t,n))];case"ZerosLike":return[He(I("x",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};function rv(e,t,n){let a=I("boxes",e,t,n),r=I("scores",e,t,n),s=I("maxOutputSize",e,t,n),i=I("iouThreshold",e,t,n),o=I("scoreThreshold",e,t,n),l=I("softNmsSigma",e,t,n);return{boxes:a,scores:r,maxOutputSize:s,iouThreshold:i,scoreThreshold:o,softNmsSigma:l}}var gV=async(e,t,n)=>{switch(e.op){case"NonMaxSuppressionV5":{let{boxes:a,scores:r,maxOutputSize:s,iouThreshold:i,scoreThreshold:o,softNmsSigma:l}=rv(e,t,n),c=await Ya.nonMaxSuppressionWithScoreAsync(a,r,s,i,o,l);return[c.selectedIndices,c.selectedScores]}case"NonMaxSuppressionV4":{let{boxes:a,scores:r,maxOutputSize:s,iouThreshold:i,scoreThreshold:o}=rv(e,t,n),l=I("padToMaxOutputSize",e,t,n),c=await Ya.nonMaxSuppressionPaddedAsync(a,r,s,i,o,l);return[c.selectedIndices,c.validOutputs]}case"NonMaxSuppressionV3":case"NonMaxSuppressionV2":{let{boxes:a,scores:r,maxOutputSize:s,iouThreshold:i,scoreThreshold:o}=rv(e,t,n);return[await Ya.nonMaxSuppressionAsync(a,r,s,i,o)]}case"Where":{let a=pe(I("condition",e,t,n),"bool"),r=[await nb(a)];return a.dispose(),r}case"ListDiff":return Tk(I("x",e,t,n),I("y",e,t,n));default:throw TypeError(`Node type ${e.op} is not implemented`)}},yV=(e,t,n)=>{switch(e.op){case"TopKV2":{let a=I("x",e,t,n),r=I("k",e,t,n),s=I("sorted",e,t,n),i=eb(a,r,s);return[i.values,i.indices]}case"Unique":{let a=I("x",e,t,n),r=Dh(a);return[r.values,r.indices]}case"UniqueV2":{let a=I("x",e,t,n),r=I("axis",e,t,n),s=Dh(a,r);return[s.values,s.indices]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},bV=(e,t,n)=>{switch(e.op){case"Const":return t[e.name];case"PlaceholderWithDefault":let a=I("default",e,t,n);return[Sn(e.name,t,n)||a];case"Placeholder":return[Sn(e.name,t,n)];case"Identity":case"StopGradient":case"FakeQuantWithMinMaxVars":{let c=I("x",e,t,n);return[Er(c)]}case"IdentityN":return I("x",e,t,n).map(c=>Er(c));case"Snapshot":let r=I("x",e,t,n);return[Er(r)];case"Shape":return[et(I("x",e,t,n).shape,"int32")];case"ShapeN":return I("x",e,t,n).map(c=>et(c.shape));case"Size":return[de(I("x",e,t,n).size,"int32")];case"Rank":return[de(I("x",e,t,n).rank,"int32")];case"NoOp":return[de(1)];case"Print":let s=I("x",e,t,n),i=I("data",e,t,n),o=I("message",e,t,n),l=I("summarize",e,t,n);console.warn("The graph has a tf.print() operation,usually used for debugging, which slows down performance."),console.log(o);for(let c=0;ce.dispose()),this.tensorMap.clear(),this.handle.dispose()}size(){return this.tensorMap.size}async import(e,t){this.checkKeyAndValueTensor(e,t);let n=await e.data();return this.tensorMap.forEach(a=>a.dispose()),this.tensorMap.clear(),D(()=>{let a=pt(t),r=n.length,s=a.length;k.assert(r===s,()=>`The number of elements doesn't match, keys has ${r} elements, the values has ${s} elements.`);for(let i=0;i{let a=[];for(let r=0;r{switch(e.op){case"HashTable":case"HashTableV2":{let r=I("keyDType",e,t,n),s=I("valueDType",e,t,n),i=new xV(r,s);return a.addHashTable(e.name,i),[i.handle]}case"LookupTableImport":case"LookupTableImportV2":{let r=I("tableHandle",e,t,n,a),s=I("keys",e,t,n),i=I("values",e,t,n);return[await a.getHashTableById(r.id).import(s,i)]}case"LookupTableFind":case"LookupTableFindV2":{let r=I("tableHandle",e,t,n,a),s=I("keys",e,t,n),i=I("defaultValue",e,t,n);return[await a.getHashTableById(r.id).find(s,i)]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},wV=(e,t,n)=>{switch(e.op){case"ResizeBilinear":{let a=I("images",e,t,n),r=I("size",e,t,n),s=I("alignCorners",e,t,n),i=I("halfPixelCenters",e,t,n);return[Ya.resizeBilinear(a,[r[0],r[1]],s,i)]}case"ResizeNearestNeighbor":{let a=I("images",e,t,n),r=I("size",e,t,n),s=I("alignCorners",e,t,n),i=I("halfPixelCenters",e,t,n);return[Ya.resizeNearestNeighbor(a,[r[0],r[1]],s,i)]}case"CropAndResize":{let a=I("image",e,t,n),r=I("boxes",e,t,n),s=I("boxInd",e,t,n),i=I("cropSize",e,t,n),o=I("method",e,t,n),l=I("extrapolationValue",e,t,n);return[Ya.cropAndResize(a,r,s,i,o,l)]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},kV=(e,t,n)=>{switch(e.op){case"Equal":return[vr(I("a",e,t,n),I("b",e,t,n))];case"NotEqual":return[ts(I("a",e,t,n),I("b",e,t,n))];case"Greater":return[Qn(I("a",e,t,n),I("b",e,t,n))];case"GreaterEqual":return[wr(I("a",e,t,n),I("b",e,t,n))];case"Less":return[Lc(I("a",e,t,n),I("b",e,t,n))];case"LessEqual":return[es(I("a",e,t,n),I("b",e,t,n))];case"LogicalAnd":return[pa(I("a",e,t,n),I("b",e,t,n))];case"LogicalNot":return[zc(I("a",e,t,n))];case"LogicalOr":return[vh(I("a",e,t,n),I("b",e,t,n))];case"Select":case"SelectV2":return[kn(I("condition",e,t,n),I("a",e,t,n),I("b",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},IV=(e,t,n)=>{switch(e.op){case"BatchMatMul":case"BatchMatMulV2":case"MatMul":return[ze(I("a",e,t,n),I("b",e,t,n),I("transposeA",e,t,n),I("transposeB",e,t,n))];case"Transpose":return[Ue(I("x",e,t,n),I("perm",e,t,n))];case"_FusedMatMul":let[a,r]=I("fusedOps",e,t,n),s=a==="biasadd",i=r==="prelu",o=I("numArgs",e,t,n),l=I("leakyreluAlpha",e,t,n);if(s){if(i&&o!==2)throw new Error("Fused MatMul with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!i&&o!==1)throw new Error("Fused MatMul with BiasAdd must have one extra argument: bias.")}let[c,u]=I("args",e,t,n);return[as.matMul({a:I("a",e,t,n),b:I("b",e,t,n),transposeA:I("transposeA",e,t,n),transposeB:I("transposeB",e,t,n),bias:c,activation:r,preluActivationWeights:u,leakyreluAlpha:l})];default:throw TypeError(`Node type ${e.op} is not implemented`)}},NV=(e,t,n)=>{switch(e.op){case"FusedBatchNorm":case"FusedBatchNormV2":return[br(I("x",e,t,n),I("mean",e,t,n),I("variance",e,t,n),I("offset",e,t,n),I("scale",e,t,n),I("epsilon",e,t,n))];case"FusedBatchNormV3":return[br(I("x",e,t,n),I("mean",e,t,n),I("variance",e,t,n),I("offset",e,t,n),I("scale",e,t,n),I("epsilon",e,t,n))];case"LRN":return[By(I("x",e,t,n),I("radius",e,t,n),I("bias",e,t,n),I("alpha",e,t,n),I("beta",e,t,n))];case"Softmax":return[Sa(I("x",e,t,n))];case"LogSoftmax":return[xh(I("x",e,t,n))];case"SparseToDense":return[ab(I("sparseIndices",e,t,n),I("outputShape",e,t,n),I("sparseValues",e,t,n),I("defaultValue",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},TV=(e,t,n)=>{switch(e.op){case"Max":{let i=I("axis",e,t,n),o=I("keepDims",e,t,n);return[ea(I("x",e,t,n),i,o)]}case"Mean":{let i=I("axis",e,t,n),o=I("keepDims",e,t,n);return[Ct(I("x",e,t,n),i,o)]}case"Min":{let i=I("axis",e,t,n),o=I("keepDims",e,t,n);return[Wl(I("x",e,t,n),i,o)]}case"Sum":{let i=I("axis",e,t,n),o=I("keepDims",e,t,n);return[Ce(I("x",e,t,n),i,o)]}case"All":{let i=I("axis",e,t,n),o=I("keepDims",e,t,n);return[ch(I("x",e,t,n),i,o)]}case"Any":{let i=I("axis",e,t,n),o=I("keepDims",e,t,n);return[Ac(I("x",e,t,n),i,o)]}case"ArgMax":{let i=I("axis",e,t,n);return[$c(I("x",e,t,n),i)]}case"ArgMin":{let i=I("axis",e,t,n);return[ky(I("x",e,t,n),i)]}case"Prod":{let i=I("axis",e,t,n),o=I("keepDims",e,t,n);return[Ih(I("x",e,t,n),i,o)]}case"Cumsum":{let i=I("axis",e,t,n),o=I("exclusive",e,t,n),l=I("reverse",e,t,n);return[fh(I("x",e,t,n),i,o,l)]}case"Bincount":let a=I("x",e,t,n),r=I("weights",e,t,n),s=I("size",e,t,n);return[ak(a,r,s)];case"DenseBincount":{let i=I("x",e,t,n),o=I("weights",e,t,n),l=I("size",e,t,n),c=I("binaryOutput",e,t,n);return[uk(i,o,l,c)]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},SV=(e,t,n)=>{switch(e.op){case"ConcatV2":case"Concat":{let a=I("n",e,t,n),r=I("axis",e,t,n),s=I("tensors",e,t,n);return s=s.slice(0,a),[Ze(s,r)]}case"Gather":{let a=I("x",e,t,n),r=I("indices",e,t,n);return[Ei(a,pe(r,"int32"),0)]}case"GatherV2":{let a=I("axis",e,t,n),r=I("batchDims",e,t,n),s=I("x",e,t,n),i=I("indices",e,t,n);return[Ei(s,pe(i,"int32"),a,r)]}case"Reverse":{let a=I("dims",e,t,n),r=[];for(let i=0;i{let a=I("axis",e,t,n),r=I("tensors",e,t,n),s=r[0].shape,i=ns(r[0]).shape,o=r.map(l=>{let c=k.arraysEqual(l.shape,s);if(!c&&!k.arraysEqual(ns(l).shape,i))throw new Error("the input tensors shape does not match");return c?l:j(l,s)});return[Mt(o,a)]});case"Unpack":{let a=I("axis",e,t,n),r=I("tensor",e,t,n);return pt(r,a)}case"Tile":{let a=I("reps",e,t,n);return[ja(I("x",e,t,n),a)]}case"Split":case"SplitV":{let a=I("axis",e,t,n),r=I("numOrSizeSplits",e,t,n),s=I("x",e,t,n);return Pn(s,r,a)}case"ScatterNd":{let a=I("indices",e,t,n),r=I("values",e,t,n),s=I("shape",e,t,n);return[Gk(a,r,s)]}case"GatherNd":{let a=I("x",e,t,n),r=I("indices",e,t,n);return[Hk(a,r)]}case"SparseToDense":{let a=I("sparseIndices",e,t,n),r=I("outputShape",e,t,n),s=I("sparseValues",e,t,n),i=I("defaultValue",e,t,n);return[ab(a,s,r,s.dtype===i.dtype?i:pe(i,s.dtype))]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},CV=(e,t,n)=>{switch(e.op){case"FFT":return[Gc(I("x",e,t,n))];case"IFFT":return[Gl(I("x",e,t,n))];case"RFFT":return[Hc(I("x",e,t,n))];case"IRFFT":return[Ah(I("x",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},EV=(e,t,n)=>{switch(e.op){case"Cast":return[pe(I("x",e,t,n),I("dtype",e,t,n))];case"ExpandDims":{let a=I("axis",e,t,n);return[Zn(I("x",e,t,n),a)]}case"Squeeze":{let a=I("axis",e,t,n);return[ns(I("x",e,t,n),a)]}case"Reshape":return[j(I("x",e,t,n),I("shape",e,t,n))];case"MirrorPad":return[Hy(I("x",e,t,n),I("padding",e,t,n),I("mode",e,t,n))];case"PadV2":case"Pad":return[ta(I("x",e,t,n),I("padding",e,t,n),I("constantValue",e,t,n))];case"SpaceToBatchND":{let a=I("blockShape",e,t,n),r=I("paddings",e,t,n);return[Bc(I("x",e,t,n),a,r)]}case"BatchToSpaceND":{let a=I("blockShape",e,t,n),r=I("crops",e,t,n);return[Mc(I("x",e,t,n),a,r)]}case"DepthToSpace":{let a=I("blockSize",e,t,n),r=I("dataFormat",e,t,n).toUpperCase();return[My(I("x",e,t,n),a,r)]}case"BroadcastTo":return[Rc(I("x",e,t,n),I("shape",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};function NN(e,t,n,a){let r=((s,i,o)=>{switch(s.category){case"arithmetic":return D(()=>sV(s,i,o));case"basic_math":return D(()=>iV(s,i,o));case"control":return hV(s,i,o);case"convolution":return D(()=>mV(s,i,o));case"creation":return D(()=>fV(s,i,o));case"dynamic":return gV(s,i,o);case"evaluation":return D(()=>yV(s,i,o));case"image":return D(()=>wV(s,i,o));case"graph":return D(()=>bV(s,i,o));case"logical":return D(()=>kV(s,i,o));case"matrices":return D(()=>IV(s,i,o));case"normalization":return D(()=>NV(s,i,o));case"reduction":return D(()=>TV(s,i,o));case"slice_join":return D(()=>SV(s,i,o));case"spectral":return D(()=>CV(s,i,o));case"transformation":return D(()=>EV(s,i,o));case"hash_table":return vV(s,i,o,a);case"custom":let l=tN(s.op);if(l&&l.customExecutor)return l.customExecutor(new rV(s,i,o));throw TypeError(`Custom op ${s.op} is not registered.`);default:throw TypeError(`Unknown op '${s.op}'. File an issue at https://github.com/tensorflow/tfjs/issues so we can add it, or register a custom execution with tf.registerOp()`)}})(e,t,n);return k.isPromise(r)?r.then(s=>[].concat(s)):[].concat(r)}var TN=class{constructor(e={},t={},n={},a={}){this.weightMap=e,this.tensorArrayMap=t,this.tensorListMap=n,this.functionMap=a,this.rootContext={id:0,frameName:"",iterationId:0},this.contexts=[this.rootContext],this.lastId=0,this.generateCurrentContextIds()}newFrame(e,t){return{id:e,frameName:t,iterationId:0}}set currentContext(e){this.contexts!==e&&(this.contexts=e,this.generateCurrentContextIds())}get currentContext(){return this.contexts}get currentContextId(){return this._currentContextIds[0]}get currentContextIds(){return this._currentContextIds}generateCurrentContextIds(){let e=[];for(let t=0;tt.id===0&&t.iterationId===0?"":`${t.frameName}-${t.iterationId}`).join("/"):""}enterFrame(e){this.contexts&&(this.lastId++,this.contexts=this.contexts.slice(),this.contexts.push(this.newFrame(this.lastId,e)),this._currentContextIds.unshift(this.contextIdforContexts(this.contexts)))}exitFrame(){if(this.contexts&&this.contexts.length>1)this.contexts=this.contexts.slice(),this.contexts.splice(-1),this.currentContextIds.shift();else throw new Error("Cannot exit frame, the context is empty")}nextIteration(){if(this.contexts&&this.contexts.length>0){this.contexts=this.contexts.slice(),this.lastId++;let e=Object.assign({},this.contexts[this.contexts.length-1]);e.iterationId+=1,e.id=this.lastId,this.contexts.splice(-1,1,e),this._currentContextIds.splice(0,1,this.contextIdforContexts(this.contexts))}else throw new Error("Cannot increase frame iteration, the context is empty")}getWeight(e){return this.weightMap[e]}addTensorArray(e){this.tensorArrayMap[e.id]=e}getTensorArray(e){return this.tensorArrayMap[e]}addTensorList(e){this.tensorListMap[e.id]=e}getTensorList(e){return this.tensorListMap[e]}dispose(e){for(let t in this.tensorArrayMap)this.tensorArrayMap[t].clearAndClose(e);for(let t in this.tensorListMap)this.tensorListMap[t].clearAndClose(e)}};function CN(e,t,n,a){let r=new Set,s=[],i=null,o=null,l=new Set,c=Object.keys(e).map(d=>Ln(d)[0]),u=[];a!=null&&(u=a.map(d=>Ln(d.name)[0]));let p=[...t];for(;p.length>0;){let d=p.pop();if((SN(d)||_V(d)||FV(d))&&i==null&&(i=d,o=i.children.map(h=>h.name).filter(h=>r.has(h))),r.add(d.name),n[d.name]==null&&c.indexOf(d.name)===-1&&u.indexOf(d.name)===-1){if(d.inputs.length===0){s.push(d.name);continue}d.inputs.forEach(h=>{l.has(h.name)||(l.add(h.name),p.push(h))})}}return{inputs:e,outputs:t,usedNodes:r,missingInputs:s,dynamicNode:i,syncInputs:o}}function AV(e,t,n){let{usedNodes:a,inputs:r}=n,s=[],i=Object.keys(r).map(u=>Ln(u)[0]).map(u=>e.nodes[u]),o=e.initNodes;i.forEach(u=>{a.has(u.name)&&s.push(u)}),e.weights.forEach(u=>{a.has(u.name)&&s.push(u)}),o!=null&&o.forEach(u=>{a.has(u.name)&&s.push(u)});let l=new Set,c=[];for(;s.length>0;){let u=s.pop();l.add(u.name),t[u.name]||c.push(u),u.children.forEach(p=>{!l.has(p.name)&&a.has(p.name)&&p.inputs.every(d=>l.has(d.name))&&s.push(p)})}return c}var $V=["Switch","Merge","Enter","Exit","NextIteration","StatelessIf","StatelessWhile","if","While"],DV=["NonMaxSuppressionV2","NonMaxSuppressionV3","NonMaxSuppressionV5","Where"],MV=["HashTable","HashTableV2","LookupTableImport","LookupTableImportV2","LookupTableFind","LookupTableFindV2"];function SN(e){return $V.indexOf(e.op)>=0}function _V(e){return DV.indexOf(e.op)>=0}function FV(e){return MV.indexOf(e.op)>=0}var sv=class{constructor(e,t){this.graph=e,this.parent=t,this.compiledMap=new Map,this._weightMap={},this.SEPERATOR=",",this._functions={},this._functionExecutorMap={},this._outputs=e.outputs,this._inputs=e.inputs,this._initNodes=e.initNodes,this._signature=e.signature,this._functions=e.functions,e.functions!=null&&Object.keys(e.functions).forEach(n=>{this._functionExecutorMap[n]=new sv(e.functions[n],this)})}get weightIds(){return this.parent?this.parent.weightIds:this._weightIds}get functionExecutorMap(){return this.parent?this.parent.functionExecutorMap:this._functionExecutorMap}get weightMap(){return this.parent?this.parent.weightMap:this._weightMap}set weightMap(e){let t=Object.keys(e).map(n=>e[n].map(a=>a.id));this._weightIds=[].concat(...t),this._weightMap=e}set resourceManager(e){this._resourceManager=e}get inputs(){return this._inputs.map(e=>({name:e.name,shape:e.attrParams.shape?e.attrParams.shape.value:void 0,dtype:e.attrParams.dtype?e.attrParams.dtype.value:void 0}))}get outputs(){return this._outputs.map(e=>({name:e.name,shape:e.attrParams.shape?e.attrParams.shape.value:void 0,dtype:e.attrParams.dtype?e.attrParams.dtype.value:void 0}))}get inputNodes(){return this._inputs.map(e=>e.signatureKey||e.name)}get outputNodes(){return this._outputs.map(e=>{let t=e.signatureKey||e.name;return e.defaultOutput?`${t}:${e.defaultOutput}`:t})}get functions(){return Object.keys(this._functions).reduce((e,t)=>(e[t]=this._functions[t].signature,e),{})}getCompilationKey(e,t){let n=e.map(r=>r.name).sort(),a=t.map(r=>r.name).sort();return n.join(this.SEPERATOR)+"--"+a.join(this.SEPERATOR)}compile(e,t){let n=CN(e,t,this.weightMap,this._initNodes),{missingInputs:a,dynamicNode:r,syncInputs:s}=n;if(r!=null)throw new Error(`This execution contains the node '${r.name}', which has the dynamic op '${r.op}'. Please use model.executeAsync() instead. Alternatively, to avoid the dynamic ops, specify the inputs [${s}]`);if(a.length>0){let i=t.map(l=>l.name),o=Object.keys(e);throw new Error(`Cannot compute the outputs [${i}] from the provided inputs [${o}]. Missing the following inputs: [${a}]`)}return AV(this.graph,this.weightMap,n)}execute(e,t){e=this.mapInputs(e);let n=Object.keys(e).sort();this.checkInputs(e),this.checkInputShapeAndType(e),t=this.mapOutputs(t),this.checkOutputs(t);let a=n.map(u=>this.graph.nodes[Ln(u)[0]]),r=t.map(u=>Ln(u)[0]),s=r.map(u=>this.graph.nodes[u]);s.length===0&&(s=this._outputs);let i=this.getCompilationKey(a,s),o=this.compiledMap.get(i);o==null&&(o=this.compile(e,s),this.compiledMap.set(i,o));let l={},c={};return D(()=>{let u=new TN(this.weightMap,l,c,this.functionExecutorMap),p=Object.assign({},this.weightMap);Object.keys(e).forEach(m=>{let[f,g]=Ln(m),y=[];y[g]=e[m],p[f]=y});let d=this.getFrozenTensorIds(p),h={};for(let m=0;mSn(m,p,u))})}getFrozenTensorIds(e){let t=[].concat.apply([],Object.keys(e).map(n=>e[n]).map(n=>n.map(a=>a.id)));return new Set(t)}checkTensorForDisposal(e,t,n,a,r,s,i){t.category==="control"||s.indexOf(e)!==-1||(n[e].forEach(o=>{o!=null&&(i[o.id]=(i[o.id]||0)+t.children.length)}),t.inputs.forEach(o=>{if(o.category!=="control"){let l=z4(o.name,n,a);l!=null&&l.forEach(c=>{if(c&&!r.has(c.id)){let u=i[c.id];u===1?(c.dispose(),delete i[c.id]):u!=null&&i[c.id]--}})}}))}async executeAsync(e,t){return this._executeAsync(e,t)}async _executeAsync(e,t,n=!1,a={},r={}){n||(e=this.mapInputs(e),this.checkInputs(e),this.checkInputShapeAndType(e),t=this.mapOutputs(t),this.checkOutputs(t));let s=new TN(this.weightMap,a,r,this.functionExecutorMap),i=await this.executeWithControlFlow(e,s,t,n),o=t.map(p=>Sn(p,i,s)),l=o.map(p=>p.id),c=Object.keys(e).map(p=>e[p].id),u=new Set([...l,...c,...this.weightIds]);return Object.keys(i).forEach(p=>{i[p].forEach(d=>{d&&!d.isDisposed&&!u.has(d.id)&&d.dispose()})}),this.parent==null&&s.dispose(u),o}async executeFunctionAsync(e,t,n){let a=e.reduce((r,s,i)=>(r[this.inputs[i].name]=s,r),{});return this._executeAsync(a,this.outputNodes,!0,t,n)}async executeWithControlFlow(e,t,n,a){let r=Object.keys(e),s=r.map(b=>this.graph.nodes[Ln(b)[0]]),i=n.map(b=>Ln(b)[0]),o=i.map(b=>this.graph.nodes[b]);o.length===0&&(o=this._outputs);let{usedNodes:l,missingInputs:c,dynamicNode:u,syncInputs:p}=CN(e,o,this.weightMap,this._initNodes),d=[...s,...this.graph.weights,...this._initNodes||[]].map(b=>({node:b,contexts:t.currentContext})),h=Object.assign({},this.weightMap);Object.keys(e).forEach(b=>{let[x,v]=Ln(b),N=[];N[v]=e[b],h[x]=N});let m={},f=this.getFrozenTensorIds(h),g={};for(;d.length>0;){let b=this.processStack(s,d,t,h,g,f,i,m,l);await Promise.all(b)}u==null&&!a&&console.warn("This model execution did not contain any nodes with control flow or dynamic output shapes. You can use model.execute() instead.");let y=o.filter(b=>!SN(b)&&!Sn(b.name,h,t)).map(b=>b.name);if(y.length>0){let b="";throw u!=null&&(b=`Alternatively, to avoid the dynamic ops, use model.execute() and specify the inputs [${p}]`),new Error(`Cannot compute the outputs [${y}] from the provided inputs [${r}]. Consider providing the following inputs: [${c}]. ${b}`)}return h}processStack(e,t,n,a,r,s,i,o,l){let c=[];for(;t.length>0;){let u=t.pop();n.currentContext=u.contexts;let p="";if(u.node.op==="Enter"&&I("isConstant",u.node,a,n)&&([p]=Cr(u.node.name,n)),a[u.node.name]==null){let d=NN(u.node,a,n,this._resourceManager);p||([p]=Cr(u.node.name,n));let h=n.currentContext;k.isPromise(d)?c.push(d.then(m=>(a[p]=m,n.currentContext=h,this.checkTensorForDisposal(p,u.node,a,n,s,i,o),this.processChildNodes(u.node,t,n,a,r,l),m))):(a[p]=d,this.checkTensorForDisposal(p,u.node,a,n,s,i,o),this.processChildNodes(u.node,t,n,a,r,l))}else this.processChildNodes(u.node,t,n,a,r,l)}return c}processChildNodes(e,t,n,a,r,s){e.children.forEach(i=>{let[o]=Cr(i.name,n);r[o]||!s.has(i.name)||(i.op==="Merge"?i.inputNames.some(l=>!!Sn(l,a,n))&&(r[o]=!0,t.push({contexts:n.currentContext,node:i})):i.inputNames.every(l=>!!Sn(l,a,n))&&(r[o]=!0,t.push({contexts:n.currentContext,node:i})))})}dispose(){Object.keys(this.weightMap).forEach(e=>this.weightMap[e].forEach(t=>t.dispose()))}checkInputShapeAndType(e){Object.keys(e).forEach(t=>{let n=e[t],[a]=Ln(t),r=this.graph.nodes[a];if(r.attrParams.shape&&r.attrParams.shape.value){let s=r.attrParams.shape.value,i=s.length===n.shape.length&&n.shape.every((o,l)=>s[l]===-1||s[l]===o);k.assert(i,()=>`The shape of dict['${r.name}'] provided in model.execute(dict) must be [${s}], but was [${n.shape}]`)}r.attrParams.dtype&&r.attrParams.dtype.value&&k.assert(n.dtype===r.attrParams.dtype.value,()=>`The dtype of dict['${r.name}'] provided in model.execute(dict) must be ${r.attrParams.dtype.value}, but was ${n.dtype}`)})}mapInputs(e){let t={};for(let n in e)if(this._signature!=null&&this._signature.inputs!=null&&this._signature.inputs[n]!=null){let a=this._signature.inputs[n];t[a.name]=e[n]}else t[n]=e[n];return t}checkInputs(e){let t=Object.keys(e).filter(n=>{let[a]=Ln(n);return this.graph.nodes[a]==null});if(t.length>0)throw new Error(`The dict provided in model.execute(dict) has keys: [${t}] that are not part of graph`)}mapOutputs(e){return e.map(t=>this._signature!=null&&this._signature.outputs!=null&&this._signature.outputs[t]!=null?this._signature.outputs[t].name:t,{})}checkOutputs(e){e.forEach(t=>{let[n]=Ln(t);if(!this.graph.nodes[n])throw new Error(`The output '${t}' is not found in the graph`)})}},RV=class{constructor(e={},t={}){this.hashTableNameToHandle=e,this.hashTableMap=t}addHashTable(e,t){this.hashTableNameToHandle[e]=t.handle,this.hashTableMap[t.id]=t}getHashTableHandleByName(e){return this.hashTableNameToHandle[e]}getHashTableById(e){return this.hashTableMap[e]}dispose(){for(let e in this.hashTableMap)this.hashTableMap[e].clearAndClose(),delete this.hashTableMap[e];for(let e in this.hashTableNameToHandle)this.hashTableNameToHandle[e].dispose(),delete this.hashTableNameToHandle[e]}},PV="?tfjs-format=file",OV="model.json",EN=class{constructor(e,t={}){this.modelUrl=e,this.loadOptions=t,this.version="n/a",t==null&&(this.loadOptions={}),this.resourceManager=new RV}get modelVersion(){return this.version}get inputNodes(){return this.executor.inputNodes}get outputNodes(){return this.executor.outputNodes}get inputs(){return this.executor.inputs}get outputs(){return this.executor.outputs}get weights(){return this.executor.weightMap}get metadata(){return this.artifacts.userDefinedMetadata}get modelSignature(){return this.signature}findIOHandler(){let e=this.modelUrl;if(e.load!=null)this.handler=e;else if(this.loadOptions.requestInit!=null)this.handler=Kt.browserHTTPRequest(e,this.loadOptions);else{let t=Kt.getLoadHandlers(e,this.loadOptions);if(t.length===0)t.push(Kt.browserHTTPRequest(e,this.loadOptions));else if(t.length>1)throw new Error(`Found more than one (${t.length}) load handlers for URL '${[e]}'`);this.handler=t[0]}}async load(){if(this.findIOHandler(),this.handler.load==null)throw new Error("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let e=await this.handler.load();return this.loadSync(e)}loadSync(e){this.artifacts=e;let t=this.artifacts.modelTopology,n;this.artifacts.userDefinedMetadata!=null&&this.artifacts.userDefinedMetadata.signature!=null?n=this.artifacts.userDefinedMetadata.signature:n=this.artifacts.signature,this.signature=n,this.version=`${t.versions.producer}.${t.versions.minConsumer}`;let a=Kt.decodeWeights(this.artifacts.weightData,this.artifacts.weightSpecs);if(this.executor=new sv(vN.Instance.transformGraph(t,this.signature)),this.executor.weightMap=this.convertTensorMapToTensorsMap(a),this.executor.resourceManager=this.resourceManager,e.modelInitializer!=null&&e.modelInitializer.node!=null){let r=vN.Instance.transformGraph(e.modelInitializer);this.initializer=new sv(r),this.initializer.weightMap=this.executor.weightMap,this.initializer.resourceManager=this.resourceManager,this.initializer.executeAsync({},[])}return!0}async save(e,t){if(typeof e=="string"){let n=Kt.getSaveHandlers(e);if(n.length===0)throw new Error(`Cannot find any save handlers for URL '${e}'`);if(n.length>1)throw new Error(`Found more than one (${n.length}) save handlers for URL '${e}'`);e=n[0]}if(e.save==null)throw new Error("GraphModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");return e.save(this.artifacts)}predict(e,t){return this.execute(e,this.outputNodes)}normalizeInputs(e){if(!(e instanceof z)&&!Array.isArray(e))return e;if(e=Array.isArray(e)?e:[e],e.length!==this.inputNodes.length)throw new Error(`Input tensor count mismatch,the graph model has ${this.inputNodes.length} placeholders, while there are ${e.length} input tensors.`);return this.inputNodes.reduce((t,n,a)=>(t[n]=e[a],t),{})}normalizeOutputs(e){return e=e||this.outputNodes,Array.isArray(e)?e:[e]}execute(e,t){e=this.normalizeInputs(e),t=this.normalizeOutputs(t);let n=this.executor.execute(e,t);return n.length>1?n:n[0]}async executeAsync(e,t){e=this.normalizeInputs(e),t=this.normalizeOutputs(t);let n=await this.executor.executeAsync(e,t);return n.length>1?n:n[0]}convertTensorMapToTensorsMap(e){return Object.keys(e).reduce((t,n)=>(t[n]=[e[n]],t),{})}dispose(){this.executor.dispose(),this.initializer&&this.initializer.dispose(),this.resourceManager.dispose()}};async function LV(e,t={}){if(e==null)throw new Error("modelUrl in loadGraphModel() cannot be null. Please provide a url or an IOHandler that loads the model");t==null&&(t={}),t.fromTFHub&&e.load==null&&(e.endsWith("/")||(e=e+"/"),e=`${e}${OV}${PV}`);let n=new EN(e,t);return await n.load(),n}var _N="2.8.3",FN={};Oe(FN,{CSVDataset:()=>$N,Dataset:()=>eu,FileDataSource:()=>DN,TextLineDataset:()=>AN,URLDataSource:()=>MN,array:()=>zV,csv:()=>WV,func:()=>VV,generator:()=>UV,microphone:()=>HV,version_data:()=>RN,webcam:()=>GV,zip:()=>BV});var jV=No(fd()),qV=No(fd());function KV(e,t){return Em(e,t)}function Em(e,t,n=new Map,a=new Set){if(e==null)return null;if(a.has(e))throw new Error("Circular references are not supported.");if(n.has(e))return n.get(e);let r=t(e);if(r.recurse&&r.value!==null)throw new Error("A deep map function may not return both a value and recurse=true.");if(r.recurse)if(tu(e)){let s=Array.isArray(e)?[]:{};a.add(e);for(let i in e){let o=e[i],l=Em(o,t,n,a);s[i]=l}return a.delete(e),s}else throw new Error(`Can't recurse into non-iterable type: ${e}`);else return n.set(e,r.value),r.value}function XV(e,t=ON){return PN(e,t)}function PN(e,t,n=new Set){let a=e[0];if(n.has(a))throw new Error("Circular references are not supported.");let r=t(e);if(r.recurse&&r.value!==null)throw new Error("A deep zip function may not return both a value and recurse=true.");if(r.recurse)if(tu(a)){let s=Array.isArray(a)?[]:{};n.add(a);for(let i in a){let o=e.map(c=>c[i]),l=PN(o,t,n);s[i]=l}return n.delete(a),s}else throw new Error(`Can't recurse into non-iterable type: ${a}`);else return r.value}function ON(e){return e===null?null:tu(e[0])?{value:null,recurse:!0}:{value:e,recurse:!1}}async function LN(e,t){let n=new Map;Em(e,t,n);for(let a of Array.from(n.keys())){let r=n.get(a);if(k.isPromise(r)){let s=await r;n.set(a,s)}}return Em(e,t,n)}function tu(e){return e!=null&&!ArrayBuffer.isView(e)&&(Array.isArray(e)||typeof e=="object"&&!(e instanceof z))}function JV(e){return e==null||YV(e)||Array.isArray(e)||typeof e=="object"&&e instanceof z||k.isTypedArray(e)}function YV(e){return e===null||typeof e!="object"&&typeof e!="function"}function QV(e){return KV(e,ZV)}function ZV(e){return e instanceof z?{value:e.clone(),recurse:!1}:tu(e)?{value:null,recurse:!0}:{value:e,recurse:!1}}var zN=class{constructor(e){if(this.capacity=e,this.begin=0,this.end=0,e==null)throw new RangeError("Can't create a ring buffer of unknown capacity.");if(e<1)throw new RangeError("Can't create ring buffer of capacity < 1.");this.data=new Array(e),this.doubledCapacity=2*e}wrap(e){for(;e<0;)e+=this.doubledCapacity;return e%this.doubledCapacity}get(e){if(e<0)throw new RangeError("Can't get item at a negative index.");return this.data[e%this.capacity]}set(e,t){if(e<0)throw new RangeError("Can't set item at a negative index.");this.data[e%this.capacity]=t}length(){let e=this.end-this.begin;return e<0&&(e=this.doubledCapacity+e),e}isFull(){return this.length()===this.capacity}isEmpty(){return this.length()===0}push(e){if(this.isFull())throw new RangeError("Ring buffer is full.");this.set(this.end,e),this.end=this.wrap(this.end+1)}pushAll(e){for(let t of e)this.push(t)}pop(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");this.end=this.wrap(this.end-1);let e=this.get(this.end);return this.set(this.end,void 0),e}unshift(e){if(this.isFull())throw new RangeError("Ring buffer is full.");this.begin=this.wrap(this.begin-1),this.set(this.begin,e)}shift(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let e=this.get(this.begin);return this.set(this.begin,void 0),this.begin=this.wrap(this.begin+1),e}shuffleExcise(e){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let t=this.wrap(this.begin+e),n=this.get(t);return this.set(t,this.pop()),n}},iv=class extends zN{constructor(){super(iv.INITIAL_CAPACITY)}isFull(){return!1}push(e){super.isFull()&&this.expand(),super.push(e)}unshift(e){super.isFull()&&this.expand(),super.unshift(e)}expand(){let e=this.capacity*2,t=new Array(e),n=this.length();for(let a=0;at===!0)}rowMajorBatch(e,t=!0){return new lU(this,e,t)}columnMajorBatch(e,t=!0,n=ON){return this.rowMajorBatch(e,t).map(a=>XV(a,n))}concatenate(e,t){return new WN(BN([this,e]),t)}take(e){return e<0||e==null?this:new oU(this,e)}skip(e){return e<0||e==null?this:new iU(this,e)}prefetch(e){return new UN(this,e)}shuffle(e,t){return new hU(this,e,t)}serial(){return new sU(this)}},eU=class extends Qt{constructor(e){super();this.items=e,this.trav=0}summary(){return`Array of ${this.items.length} items`}async next(){if(this.trav>=this.items.length)return{value:null,done:!0};let e=this.items[this.trav];return this.trav++,{value:QV(e),done:!1}}},tU=class extends Qt{constructor(e){super();this.nextFn=e}summary(){return"Function call"}async next(){try{return this.nextFn()}catch(e){throw e.message=`Error thrown while iterating through a dataset: ${e.message}`,e}}},sU=class extends Qt{constructor(e){super();this.upstream=e,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Serial`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){return this.upstream.next()}},iU=class extends Qt{constructor(e,t){super();this.upstream=e,this.maxCount=t,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Skip`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.count++ Take`}async next(){return this.count++>=this.maxCount?{value:null,done:!0}:this.upstream.next()}},lU=class extends Qt{constructor(e,t,n=!0){super();this.upstream=e,this.batchSize=t,this.enableSmallLastBatch=n,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> RowMajorBatch`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){let e=[];for(;e.length0?{value:e,done:!1}:{value:null,done:!0};e.push(t.value)}return{value:e,done:!1}}},uU=class extends Qt{constructor(e,t){super();this.upstream=e,this.predicate=t,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Filter`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;){let e=await this.upstream.next();if(e.done||this.predicate(e.value))return e;Ae(e.value)}}},cU=class extends Qt{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> Map`}async next(){let e=await this.upstream.next();if(e.done)return{value:null,done:!0};let t=Na.getTensorsInContainer(e.value),n=this.transform(e.value),a=Na.getTensorsInContainer(n);for(let r of t)Na.isTensorInList(r,a)||r.dispose();return{value:n,done:!1}}},pU=class extends Qt{constructor(e,t){super();this.upstream=e,this.handler=t,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> handleErrors`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;)try{return await this.upstream.next()}catch(e){if(!this.handler(e))return{value:null,done:!0}}}},VN=class extends Qt{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> AsyncMap`}async next(){let e=await this.upstream.next();if(e.done)return{value:null,done:!0};let t=Na.getTensorsInContainer(e.value),n=await this.transform(e.value),a=Na.getTensorsInContainer(n);for(let r of t)Na.isTensorInList(r,a)||r.dispose();return{value:n,done:!1}}},lv=class extends Qt{constructor(){super();this.outputQueue=new iv,this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.outputQueue.length()===0;)if(!await this.pump())return{value:null,done:!0};return{value:this.outputQueue.shift(),done:!1}}},dU=class extends lv{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> Flatmap`}async pump(){let e=await this.upstream.next();if(e.done)return!1;let t=Na.getTensorsInContainer(e.value),n=this.transform(e.value),a=Na.getTensorsInContainer(n);this.outputQueue.pushAll(n);for(let r of t)Na.isTensorInList(r,a)||r.dispose();return!0}},WN=class extends Qt{constructor(e,t){super();this.baseErrorHandler=t,this.lastRead=null,this.iterator=null,this.moreIterators=e}summary(){return"TODO: fill in upstream of chained summaries -> Chained"}async next(){return this.lastRead=this.readFromChain(this.lastRead),this.lastRead}async readFromChain(e){if(await e,this.iterator==null){let n=await this.moreIterators.next();if(n.done)return{value:null,done:!0};this.iterator=n.value,this.baseErrorHandler!=null&&(this.iterator=this.iterator.handleErrors(this.baseErrorHandler))}let t=await this.iterator.next();return t.done?(this.iterator=null,this.readFromChain(e)):t}},ps;(function(e){e[e.FAIL=0]="FAIL",e[e.SHORTEST=1]="SHORTEST",e[e.LONGEST=2]="LONGEST"})(ps||(ps={}));var aU=class extends Qt{constructor(e,t=ps.FAIL){super();this.iterators=e,this.mismatchMode=t,this.count=0,this.currentPromise=null}summary(){return"{TODO: fill in upstream of zip summaries} -> Zip"}async nextState(e){await e;let t=0,n=0;function a(s){return s instanceof Qt?{value:s.next().then(i=>(t++,i.done&&n++,i.value)),recurse:!1}:{value:null,recurse:!0}}let r=await LN(this.iterators,a);if(t===n)return{value:null,done:!0};if(n>0)switch(this.mismatchMode){case ps.FAIL:throw new Error(`Zipped streams should have the same length. Mismatched at element ${this.count}.`);case ps.SHORTEST:return{value:null,done:!0};case ps.LONGEST:default:}return this.count++,{value:r,done:!1}}async next(){return this.currentPromise=this.nextState(this.currentPromise),this.currentPromise}},UN=class extends Qt{constructor(e,t){super();this.upstream=e,this.bufferSize=t,this.buffer=new zN(t)}summary(){return`${this.upstream.summary()} -> Prefetch`}refill(){for(;!this.buffer.isFull();){let e=this.upstream.next();this.buffer.push(e)}}next(){return this.refill(),this.buffer.shift()}},hU=class extends UN{constructor(e,t,n){super(e,t);this.upstream=e,this.windowSize=t,this.upstreamExhausted=!1,this.random=qV.alea(n||k.now().toString()),this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}randomInt(e){return Math.floor(this.random()*e)}chooseIndex(){return this.randomInt(this.buffer.length())}async serialNext(){for(this.upstreamExhausted||this.refill();!this.buffer.isEmpty();){let e=this.chooseIndex(),t=await this.buffer.shuffleExcise(e);if(t.done)this.upstreamExhausted=!0;else return this.refill(),t}return{value:null,done:!0}}},eu=class{constructor(){this.size=null}batch(e,t=!0){let n=this;k.assert(e>0,()=>`batchSize needs to be positive, but it is + ${e}`);let a;return this.size===Infinity||this.size==null?a=this.size:t?a=Math.ceil(this.size/e):a=Math.floor(this.size/e),zn(async()=>(await n.iterator()).columnMajorBatch(e,t,mU),a)}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,zn(async()=>(await t.iterator()).concatenate(await e.iterator()),n)}filter(e){let t=this,n;return this.size===Infinity?n=Infinity:n=null,zn(async()=>(await t.iterator()).filter(a=>D(()=>e(a))),n)}async forEachAsync(e){return(await this.iterator()).forEachAsync(e)}map(e){let t=this;return zn(async()=>(await t.iterator()).map(n=>D(()=>e(n))),this.size)}mapAsync(e){let t=this;return zn(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 zn(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,zn(async()=>{let a=ov(async()=>({value:await t.iterator(),done:!1}));return nU(a.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(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)`);let a=this,r=jV.alea(t||k.now().toString());return zn(async()=>{let s=r.int32();return n&&(s+=r.int32()),(await a.iterator()).shuffle(e,s.toString())},this.size)}take(e){let t=this,n;return this.size!=null&&this.size>e?n=e:this.size!=null&&this.size<=e?n=this.size:n=null,zn(async()=>(await t.iterator()).take(e),n)}async toArray(){if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArray()}async toArrayForTest(){if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArrayForTest()}};eu.MAX_BUFFER_SIZE=1e4;function zn(e,t=null){return new class extends eu{constructor(){super(...arguments);this.size=t}async iterator(){return e()}}}function zV(e){return zn(async()=>BN(e),e.length)}function BV(e){if(!tu(e))throw new Error("The argument to zip() must be an object or array.");let t;if(Array.isArray(e))for(let n=0;n{let n=await LN(e,a=>{if(a instanceof eu)return{value:a.iterator(),recurse:!1};if(tu(a))return{value:null,recurse:!0};throw new Error("Leaves of the structure passed to zip() must be Datasets, not primitives.")});return rU(n,ps.SHORTEST)},t)}function mU(e){if(e===null)return null;let t=e[0];return JV(t)?{value:fU(e),recurse:!1}:{value:null,recurse:!0}}function fU(e){if(e.length===0)throw new Error("Can't make a batch of zero elements.");return e[0]instanceof z?Mt(e):Xn(e)}var AN=class extends eu{constructor(e){super();this.input=e}async iterator(){return(await this.input.iterator()).decodeUTF8().split(` +`).map(e=>(e.endsWith("\r")&&(e=e.slice(0,-1)),e))}},_m='"',hp=Symbol("out"),GN=Symbol("field"),Fm=Symbol("quote"),uv=Symbol("quoteafterquote"),HN=Symbol("quoteinquote"),$N=class extends eu{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 AN(e),t||(t={}),this.hasHeader=t.hasHeader!==!1,this.fullColumnNames=t.columnNames,this.columnConfigs=t.columnConfigs,this.configuredColumnsOnly=t.configuredColumnsOnly,t.delimWhitespace?(k.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&&k.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((a,r)=>(a[r]=a[r]+1||1,a),{}),n=Object.keys(t).filter(a=>t[a]>1);if(k.assert(n.length===0,()=>"Duplicate column names found: "+n.toString()),this.columnConfigs){for(let a of Object.keys(this.columnConfigs))if(this.fullColumnNames.indexOf(a)===-1)throw new Error('The key "'+a+'" provided in columnConfigs does not match any of the column names ('+this.fullColumnNames.toString()+").")}this.columnNamesValidated=!0}async maybeReadHeaderLine(){if(this.hasHeader){let e=await(await this.base.iterator()).next();if(e.done)throw new Error("No data was found for CSV parsing.");let t=e.value;return this.parseRow(t,!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={},a={};for(let r=0;r14||!Number.isInteger(t))throw new Error(`Invalid fftSize: it must be a power of 2 between 2 to 4 and 2 to 14, but got ${this.fftSize}`);if(this.numFrames=e.numFramesPerSpectrogram||43,this.sampleRateHz=e.sampleRateHz,this.columnTruncateLength=e.columnTruncateLength||this.fftSize,this.audioTrackConstraints=e.audioTrackConstraints,this.smoothingTimeConstant=e.smoothingTimeConstant||0,this.includeSpectrogram=e.includeSpectrogram!==!1,this.includeWaveform=e.includeWaveform===!0,!this.includeSpectrogram&&!this.includeWaveform)throw new Error("Both includeSpectrogram and includeWaveform are false. At least one type of data should be returned.")}summary(){return"microphone"}static async create(e={}){if(ee().get("IS_NODE"))throw new Error("microphone API is only supported in browser environment.");let t=new jN(e);return await t.start(),t}async start(){try{this.stream=await navigator.mediaDevices.getUserMedia({audio:this.audioTrackConstraints==null?!0:this.audioTrackConstraints,video:!1})}catch(n){throw new Error(`Error thrown while initializing video stream: ${n.message}`)}if(!this.stream)throw new Error("Could not obtain audio from microphone.");let e=window.AudioContext||window.webkitAudioContext;if(this.audioContext=new e,!this.sampleRateHz)this.sampleRateHz=this.audioContext.sampleRate;else if(this.audioContext.sampleRate!==this.sampleRateHz)throw new Error(`Mismatch in sampling rate: Expected: ${this.sampleRateHz}; Actual: ${this.audioContext.sampleRate}`);let t=this.audioContext.createMediaStreamSource(this.stream);this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=this.fftSize*2,this.analyser.smoothingTimeConstant=this.smoothingTimeConstant,t.connect(this.analyser),this.freqData=new Float32Array(this.fftSize),this.timeData=new Float32Array(this.fftSize)}async next(){if(this.isClosed)return{value:null,done:!0};let e,t,n=await this.getAudioData();if(this.includeSpectrogram){let a=this.flattenQueue(n.freqDataQueue);e=this.getTensorFromAudioDataArray(a,[this.numFrames,this.columnTruncateLength,1])}if(this.includeWaveform){let a=this.flattenQueue(n.timeDataQueue);t=this.getTensorFromAudioDataArray(a,[this.numFrames*this.fftSize,1])}return{value:{spectrogram:e,waveform:t},done:!1}}async capture(){return(await this.next()).value}async getAudioData(){let e=[],t=[],n=0;return new Promise(a=>{let r=setInterval(()=>{this.includeSpectrogram&&(this.analyser.getFloatFrequencyData(this.freqData),this.freqData[0]===-Infinity&&a({freqDataQueue:e,timeDataQueue:t}),e.push(this.freqData.slice(0,this.columnTruncateLength))),this.includeWaveform&&(this.analyser.getFloatTimeDomainData(this.timeData),t.push(this.timeData.slice())),++n===this.numFrames&&(clearInterval(r),a({freqDataQueue:e,timeDataQueue:t}))},this.fftSize/this.sampleRateHz*1e3)})}stop(){this.isClosed||(this.isClosed=!0,this.analyser.disconnect(),this.audioContext.close(),this.stream!=null&&this.stream.getTracks().length>0&&this.stream.getTracks()[0].stop())}toArray(){throw new Error("Can not convert infinite audio stream to array.")}getSampleRate(){return this.sampleRateHz}flattenQueue(e){let t=e[0].length,n=new Float32Array(e.length*t);return e.forEach((a,r)=>n.set(a,r*t)),n}getTensorFromAudioDataArray(e,t){let n=new Float32Array(k.sizeFromShape(t));return n.set(e,n.length-e.length),Xn(n,t)}},qN=class extends Qt{constructor(e,t){super();if(this.webcamVideoElement=e,this.webcamConfig=t,this.isClosed=!0,this.resize=!1,this.needToResize())if(this.resize=!0,this.cropSize=[this.webcamConfig.resizeHeight,this.webcamConfig.resizeWidth],this.cropBoxInd=et([0],"int32"),this.webcamConfig.centerCrop){let n=this.webcamConfig.resizeWidth*1/this.webcamVideoElement.width,a=this.webcamConfig.resizeHeight*1/this.webcamVideoElement.height,r=(1-n)/2,s=(1-a)/2,i=r+n,o=a+s;this.cropBox=Ca([s,r,o,i],[1,4])}else this.cropBox=Ca([0,0,1,1],[1,4])}summary(){return"webcam"}static async create(e,t={}){if(ee().get("IS_NODE"))throw new Error("tf.data.webcam is only supported in browser environment.");if(!e){if(e=document.createElement("video"),!t.resizeWidth||!t.resizeHeight)throw new Error("Please provide webcam video element, or resizeWidth and resizeHeight to create a hidden video element.");e.width=t.resizeWidth,e.height=t.resizeHeight}let n=new qN(e,t);return await n.start(),n}async start(){this.webcamConfig.facingMode&&k.assert(this.webcamConfig.facingMode==="user"||this.webcamConfig.facingMode==="environment",()=>`Invalid webcam facing mode: ${this.webcamConfig.facingMode}. Please provide 'user' or 'environment'`);try{this.stream=await navigator.mediaDevices.getUserMedia({video:{deviceId:this.webcamConfig.deviceId,facingMode:this.webcamConfig.facingMode?this.webcamConfig.facingMode:"user",width:this.webcamVideoElement.width,height:this.webcamVideoElement.height}})}catch(e){throw e.message=`Error thrown while initializing video stream: ${e.message}`,e}if(!this.stream)throw new Error("Could not obtain video from webcam.");try{this.webcamVideoElement.srcObject=this.stream}catch(e){console.log(e),this.webcamVideoElement.src=window.URL.createObjectURL(this.stream)}return this.webcamVideoElement.play(),this.isClosed=!1,new Promise(e=>{this.webcamVideoElement.onloadedmetadata=()=>{e()}})}async next(){if(this.isClosed)return{value:null,done:!0};let e;try{e=Ti.fromPixels(this.webcamVideoElement)}catch(t){throw new Error(`Error thrown converting video to pixels: ${JSON.stringify(t)}`)}if(this.resize)try{return{value:this.cropAndResizeFrame(e),done:!1}}catch(t){throw new Error(`Error thrown cropping the video: ${t.message}`)}finally{e.dispose()}else return{value:e,done:!1}}needToResize(){return!!(this.webcamConfig.resizeWidth&&this.webcamConfig.resizeHeight&&(this.webcamVideoElement.width!==this.webcamConfig.resizeWidth||this.webcamVideoElement.height!==this.webcamConfig.resizeHeight))}cropAndResizeFrame(e){return D(()=>{let t=e.toFloat().expandDims(0),n;n=Ya.cropAndResize(t,this.cropBox,this.cropBoxInd,this.cropSize,"bilinear");let a=n.shape;return n.reshape(a.slice(1))})}async capture(){return(await this.next()).value}stop(){this.stream.getTracks().forEach(e=>e.stop());try{this.webcamVideoElement.srcObject=null}catch(e){console.log(e),this.webcamVideoElement.src=null}this.isClosed=!0}toArray(){throw new Error("Can not convert infinite video stream to array.")}},KN=class{},XN=class extends Qt{split(e){return new gU(this,e)}},gU=class extends XN{constructor(e,t){super();this.upstream=e,this.impl=new yU(e,t)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},yU=class extends lv{constructor(e,t){super();this.upstream=e,this.separator=t,this.carryover=""}summary(){return`${this.upstream.summary()} -> Split('${this.separator}')`}async pump(){let e=await this.upstream.next();if(e.done)return this.carryover===""?!1:(this.outputQueue.push(this.carryover),this.carryover="",!0);let t=e.value.split(this.separator);t[0]=this.carryover+t[0];for(let n of t.slice(0,-1))this.outputQueue.push(n);return this.carryover=t[t.length-1],!0}},xU=class extends Qt{decodeUTF8(){return new bU(this)}},bU=class extends XN{constructor(e){super();this.upstream=e,this.impl=new vU(e)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},vU=class extends lv{constructor(e){super();if(this.upstream=e,ee().get("IS_BROWSER"))this.decoder=new TextDecoder("utf-8");else{let{StringDecoder:t}=C_();this.decoder=new t("utf8")}}summary(){return`${this.upstream.summary()} -> Utf8`}async pump(){let e=await this.upstream.next(),t;if(e.done)return!1;t=e.value;let n;return ee().get("IS_BROWSER")?n=this.decoder.decode(t,{stream:!0}):n=this.decoder.write(Buffer.from(t.buffer)),this.outputQueue.push(n),!0}},YN=class extends xU{constructor(e,t={}){super();this.file=e,this.options=t,k.assert(e instanceof Uint8Array||(ee().get("IS_BROWSER")?e instanceof File||e instanceof Blob:!1),()=>"FileChunkIterator only supports File, Blob and Uint8Array right now."),this.offset=t.offset||0,this.chunkSize=t.chunkSize||1024*1024}summary(){return`FileChunks ${this.file}`}async next(){return this.offset>=(this.file instanceof Uint8Array?this.file.byteLength:this.file.size)?{value:null,done:!0}:{value:await new Promise((e,t)=>{let n=this.offset+this.chunkSize;if(this.file instanceof Uint8Array)e(new Uint8Array(this.file.slice(this.offset,n)));else{let a=new FileReader;a.onload=s=>{let i=a.result;if(i instanceof ArrayBuffer&&(i=new Uint8Array(i)),!(i instanceof Uint8Array))return t(new TypeError("FileReader returned unknown type."));e(i)},a.onabort=s=>t(new Error("Aborted")),a.onerror=s=>t(new Error(s.type));let r=this.file.slice(this.offset,n);a.readAsArrayBuffer(r)}this.offset=n}),done:!1}}};async function kU(e,t={}){let n,a;typeof e=="string"?n=e:(n=e.url,a=wU(e));let r=await k.fetch(n,a);if(r.ok){let s=new Uint8Array(await r.arrayBuffer());return new YN(s,t)}else throw new Error(r.statusText)}var wU=e=>({method:e.method,headers:e.headers,body:e.body,mode:e.mode,credentials:e.credentials,cache:e.cache,redirect:e.redirect,referrer:e.referrer,integrity:e.integrity});function JN(e){return typeof e=="string"&&e.substr(0,7)==="file://"}var DN=class extends KN{constructor(e,t={}){super();this.input=e,this.options=t}async iterator(){if(JN(this.input)&&ee().get("IS_NODE")){let e=require("fs");this.input=e.readFileSync(this.input.substr(7))}return new YN(this.input,this.options)}},MN=class extends KN{constructor(e,t={}){super();this.url=e,this.fileOptions=t}async iterator(){return JN(this.url)?new DN(this.url,this.fileOptions).iterator():kU(this.url,this.fileOptions)}};function WV(e,t={}){return new $N(new MN(e),t)}function VV(e){let t=ov(e);return zn(async()=>t)}function UV(e){return zn(async()=>{let t=await e();return ov(()=>t.next())})}async function GV(e,t){return qN.create(e,t)}async function HV(e){return jN.create(e)}var RN="2.8.3";function ke(e,t){Array.isArray(e)||(e=[e]),e.forEach(n=>{n!=null&&k.assert(n.dtype!=="complex64",()=>`${t} does not support complex64 tensors in the CPU backend.`)})}var IU=Ja.whereImpl,NU=class extends nc{constructor(){super();this.blockSize=48,this.firstUse=!0,this.data=new gd(this,Zr())}write(e,t,n){this.firstUse&&(this.firstUse=!1,ee().get("IS_NODE")&&_.warn(` ============================ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To speed things up dramatically, install our node backend, which binds to TensorFlow C++, by running npm i @tensorflow/tfjs-node, or npm i @tensorflow/tfjs-node-gpu if you have CUDA. Then call require('@tensorflow/tfjs-node'); (-gpu suffix for CUDA) at the start of your program. Visit https://github.com/tensorflow/tfjs-node for more details. -============================`));let dataId={};return this.data.set(dataId,{values,dtype,refCount:1}),dataId}makeTensorInfo(shape,dtype,values){let outId;if(dtype==="string"&&values!=null&&values.length>0&&util_exports.isString(values[0])){let encodedValues=values.map(d=>util_exports.encodeString(d));outId=this.write(encodedValues,shape,dtype)}else outId=this.write(values,shape,dtype);return{dataId:outId,shape,dtype}}incRef(dataId){let tensorData=this.data.get(dataId);tensorData.refCount++}decRef(dataId){if(this.data.has(dataId)){let tensorData=this.data.get(dataId);tensorData.refCount--}}move(dataId,values,shape,dtype){this.data.set(dataId,{values,dtype,refCount:1})}numDataIds(){return this.data.numDataIds()}async read(dataId){return this.readSync(dataId)}readSync(dataId){let{dtype,complexTensorInfos}=this.data.get(dataId);if(dtype==="complex64"){let realValues=this.readSync(complexTensorInfos.real.dataId),imagValues=this.readSync(complexTensorInfos.imag.dataId);return backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}return this.data.get(dataId).values}bufferSync(t){let data=this.readSync(t.dataId),decodedData=data;if(t.dtype==="string")try{decodedData=data.map(d=>util_exports.decodeString(d))}catch(_a){throw new Error("Failed to decode encoded string bytes into utf-8")}return buffer(t.shape,t.dtype,decodedData)}makeOutput(values,shape,dtype){let dataId=this.write(values,shape,dtype);return engine().makeTensorFromDataId(dataId,shape,dtype,this)}disposeData(dataId){if(this.data.has(dataId)){let{complexTensorInfos}=this.data.get(dataId);complexTensorInfos!=null&&(this.disposeData(complexTensorInfos.real.dataId),this.disposeData(complexTensorInfos.imag.dataId)),this.data.delete(dataId)}}disposeIntermediateTensorInfo(tensorInfo){let dataId=tensorInfo.dataId;if(this.data.has(dataId)){let tensorData=this.data.get(dataId);tensorData.refCount--,tensorData.refCount<1&&this.disposeData(dataId)}}async time(f){let start=util_exports.now();return f(),{kernelMs:util_exports.now()-start}}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(condition){assertNotComplex([condition],"where");let condVals=this.readSync(condition.dataId);return whereImpl2(condition.shape,condVals)}dispose(){}floatPrecision(){return 32}epsilon(){return super.epsilon()}},shared_exports={};__export2(shared_exports,{addImpl:()=>addImpl,bincountImpl:()=>bincountImpl,bincountReduceImpl:()=>bincountReduceImpl,ceilImpl:()=>ceilImpl,concatImpl:()=>concatImpl,expImpl:()=>expImpl,expm1Impl:()=>expm1Impl,floorImpl:()=>floorImpl,gatherV2Impl:()=>gatherV2Impl,greaterImpl:()=>greaterImpl,lessImpl:()=>lessImpl,linSpaceImpl:()=>linSpaceImpl,logImpl:()=>logImpl,maxImpl:()=>maxImpl,maximumImpl:()=>maximumImpl,minimumImpl:()=>minimumImpl,multiplyImpl:()=>multiplyImpl,negImpl:()=>negImpl,notEqualImpl:()=>notEqualImpl,prodImpl:()=>prodImpl,rangeImpl:()=>rangeImpl,rsqrtImpl:()=>rsqrtImpl,simpleAbsImpl:()=>simpleAbsImpl,sliceImpl:()=>sliceImpl,squaredDifferenceImpl:()=>squaredDifferenceImpl,stridedSliceImpl:()=>stridedSliceImpl,subImpl:()=>subImpl,tileImpl:()=>tileImpl,topKImpl:()=>topKImpl,transposeImpl:()=>transposeImpl,uniqueImpl:()=>uniqueImpl});function simpleAbsImpl(vals){let resultValues=new Float32Array(vals.length);for(let i=0;i{let{x}=args.inputs,cpuBackend=args.backend;assertNotComplex(x,"abs");let resultValues=new Float32Array(util_exports.sizeFromShape(x.shape)),values=cpuBackend.data.get(x.dataId).values;return resultValues=simpleAbsImpl(values),cpuBackend.makeOutput(resultValues,x.shape,"float32")},absConfig={kernelName:Abs,backendName:"cpu",kernelFunc:abs2};function createSimpleBinaryKernelImpl(op2){return(aShape,bShape,aVals,bVals,dtype)=>{let newShape=backend_util_exports.assertAndGetBroadcastShape(aShape,bShape),resultRank=newShape.length,resultStrides=util_exports.computeStrides(newShape),resultSize=util_exports.sizeFromShape(newShape),result=util_exports.getTypedArrayFromDType(dtype,resultSize),aRank=aShape.length,bRank=bShape.length,aStrides=util_exports.computeStrides(aShape),bStrides=util_exports.computeStrides(bShape),aBroadcastDims=backend_util_exports.getBroadcastDims(aShape,newShape),bBroadcastDims=backend_util_exports.getBroadcastDims(bShape,newShape);if(aBroadcastDims.length+bBroadcastDims.length===0)for(let i=0;iaLoc[d]=0);let aIndex=util_exports.locToIndex(aLoc,aRank,aStrides),bLoc=loc.slice(-bRank);bBroadcastDims.forEach(d=>bLoc[d]=0);let bIndex=util_exports.locToIndex(bLoc,bRank,bStrides);result[i]=op2(aVals[aIndex],bVals[bIndex])}return[result,newShape]}}function complex2(args){let{inputs,backend:backend2}=args,{real:real4,imag:imag4}=inputs,realVals=backend2.data.get(real4.dataId).values,imagVals=backend2.data.get(imag4.dataId).values,complexInfo=backend2.makeTensorInfo(real4.shape,"complex64"),complex4=backend2.data.get(complexInfo.dataId);return complex4.complexTensorInfos={real:backend2.makeTensorInfo(real4.shape,"float32",realVals),imag:backend2.makeTensorInfo(imag4.shape,"float32",imagVals)},complexInfo}var complexConfig={kernelName:Complex,backendName:"cpu",kernelFunc:complex2};function zeros3(backend2,shape,dtype="float32"){if(dtype==="complex64"){let real4=zeros3(backend2,shape,"float32"),imag4=zeros3(backend2,shape,"float32");return complex2({inputs:{real:real4,imag:imag4},backend:backend2})}let values=util_exports.makeZerosTypedArray(util_exports.sizeFromShape(shape),dtype);return backend2.makeTensorInfo(shape,dtype,values)}function identity2(args){let{inputs,backend:backend2}=args,{x}=inputs;return backend2.incRef(x.dataId),{dataId:x.dataId,shape:x.shape,dtype:x.dtype}}var identityConfig={kernelName:Identity,backendName:"cpu",kernelFunc:identity2};function real2(args){let{inputs,backend:backend2}=args,{input:input2}=inputs,real4=backend2.data.get(input2.dataId).complexTensorInfos.real,realVal=backend2.data.get(real4.dataId).values;return backend2.makeTensorInfo(real4.shape,real4.dtype,realVal)}var realConfig={kernelName:Real,backendName:"cpu",kernelFunc:real2};function cast3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{dtype}=attrs;if(dtype==="complex64"){if(x.dtype==="complex64")return identity2({inputs:{x},backend:backend2});let zerosTensorInfo=zeros3(backend2,x.shape,x.dtype),floatX=cast3({inputs:{x},backend:backend2,attrs:{dtype:"float32"}}),result=complex2({inputs:{real:floatX,imag:zerosTensorInfo},backend:backend2});return backend2.disposeIntermediateTensorInfo(zerosTensorInfo),backend2.disposeIntermediateTensorInfo(floatX),result}if(x.dtype==="complex64"){let realPart=real2({inputs:{input:x},backend:backend2}),result=cast3({inputs:{x:realPart},backend:backend2,attrs:{dtype}});return backend2.disposeIntermediateTensorInfo(realPart),result}if(!util_exports.hasEncodingLoss(x.dtype,dtype)){let result=identity2({inputs:{x},backend:backend2});return{dataId:result.dataId,shape:result.shape,dtype}}if(dtype==="int32"){let values=backend2.data.get(x.dataId).values,resultValues=Int32Array.from(values);return backend2.makeTensorInfo(x.shape,"int32",resultValues)}if(dtype==="bool"){let xVals=backend2.data.get(x.dataId).values,zero=util_exports.toTypedArray([0],x.dtype),[resultData,resultShape]=createSimpleBinaryKernelImpl((a,b)=>a!==b?1:0)(x.shape,[],xVals,zero,"bool");return backend2.makeTensorInfo(resultShape,"bool",resultData)}throw new Error(`Error in Cast: failed to cast ${x.dtype} to ${dtype}`)}var castConfig={kernelName:Cast,backendName:"cpu",kernelFunc:cast3};function binaryKernelFunc(name,simpleImpl,complexImpl,dtype){return complexImpl==null?({inputs,backend:backend2})=>{let{a,b}=inputs,cpuBackend=backend2;assertNotComplex([a,b],name);let aVals=cpuBackend.data.get(a.dataId).values,bVals=cpuBackend.data.get(b.dataId).values,$dtype=dtype||a.dtype,[resultData,resultShape]=simpleImpl(a.shape,b.shape,aVals,bVals,$dtype);return cpuBackend.makeTensorInfo(resultShape,$dtype,resultData)}:({inputs,backend:backend2})=>{let{a,b}=inputs,cpuBackend=backend2;if(a.dtype==="complex64"||b.dtype==="complex64"){let $aComplex=cast3({inputs:{x:a},backend:cpuBackend,attrs:{dtype:"complex64"}}),$aComplexVals=cpuBackend.data.get($aComplex.dataId),aReal=$aComplexVals.complexTensorInfos.real,aImag=$aComplexVals.complexTensorInfos.imag,aRealVals=cpuBackend.data.get(aReal.dataId).values,aImagVals=cpuBackend.data.get(aImag.dataId).values,$bComplex=cast3({inputs:{x:b},backend:cpuBackend,attrs:{dtype:"complex64"}}),$bComplexVals=cpuBackend.data.get($bComplex.dataId),bReal=$bComplexVals.complexTensorInfos.real,bImag=$bComplexVals.complexTensorInfos.imag,bRealVals=cpuBackend.data.get(bReal.dataId).values,bImagVals=cpuBackend.data.get(bImag.dataId).values,[resultRealData,resultImagData,resultShape]=complexImpl(a.shape,b.shape,aRealVals,aImagVals,bRealVals,bImagVals),resultReal=cpuBackend.makeTensorInfo(resultShape,"float32",resultRealData),resultImag=cpuBackend.makeTensorInfo(resultShape,"float32",resultImagData),result=complex2({inputs:{real:resultReal,imag:resultImag},backend:cpuBackend});return cpuBackend.disposeIntermediateTensorInfo($aComplex),cpuBackend.disposeIntermediateTensorInfo($bComplex),cpuBackend.disposeIntermediateTensorInfo(resultReal),cpuBackend.disposeIntermediateTensorInfo(resultImag),result}else{let aVals=cpuBackend.data.get(a.dataId).values,bVals=cpuBackend.data.get(b.dataId).values,$dtype=dtype||a.dtype,[resultData,resultShape]=simpleImpl(a.shape,b.shape,aVals,bVals,$dtype);return cpuBackend.makeTensorInfo(resultShape,$dtype,resultData)}}}function createComplexBinaryKernelImpl(op2){return(aShape,bShape,aRealVals,aImagVals,bRealVals,bImagVals)=>{let resultShape=backend_util_exports.assertAndGetBroadcastShape(aShape,bShape),resultSize=util_exports.sizeFromShape(resultShape),resultRank=resultShape.length,resultStrides=util_exports.computeStrides(resultShape),resultRealVals=util_exports.getTypedArrayFromDType("float32",resultSize),resultImagVals=util_exports.getTypedArrayFromDType("float32",resultSize),aBroadcastDims=backend_util_exports.getBroadcastDims(aShape,resultShape),bBroadcastDims=backend_util_exports.getBroadcastDims(bShape,resultShape),aVals=backend_util_exports.mergeRealAndImagArrays(aRealVals,aImagVals),bVals=backend_util_exports.mergeRealAndImagArrays(bRealVals,bImagVals),aRank=aShape.length,aStrides=util_exports.computeStrides(aShape),bRank=bShape.length,bStrides=util_exports.computeStrides(bShape);if(aBroadcastDims.length+bBroadcastDims.length===0)for(let i=0;iaLoc[d]=0);let aIndex=util_exports.locToIndex(aLoc,aRank,aStrides),bLoc=loc.slice(-bRank);bBroadcastDims.forEach(d=>bLoc[d]=0);let bIndex=util_exports.locToIndex(bLoc,bRank,bStrides),opResult=op2(aVals[aIndex*2],aVals[aIndex*2+1],bVals[bIndex*2],bVals[bIndex*2+1]);resultRealVals[i]=opResult.real,resultImagVals[i]=opResult.imag}return[resultRealVals,resultImagVals,resultShape]}}var addImpl=createSimpleBinaryKernelImpl((a,b)=>a+b),addComplexImpl=createComplexBinaryKernelImpl((aReal,aImag,bReal,bImag)=>({real:aReal+bReal,imag:aImag+bImag})),add4=binaryKernelFunc(Add,addImpl,addComplexImpl),addConfig={kernelName:Add,backendName:"cpu",kernelFunc:add4};function bincountImpl(xVals,weightsVals,weightsDtype,weightsShape,size){let weightsSize=util_exports.sizeFromShape(weightsShape),outVals=util_exports.makeZerosTypedArray(size,weightsDtype);for(let i=0;i=size||(weightsSize>0?outVals[value]+=weightsVals[i]:outVals[value]+=1)}return outVals}function bincountReduceImpl(xBuf,weightsBuf,size,binaryOutput=!1){let numRows=xBuf.shape[0],numCols=xBuf.shape[1],outBuf=buffer([numRows,size],weightsBuf.dtype);for(let i=0;i=size||(binaryOutput?outBuf.set(1,i,value):weightsBuf.size>0?outBuf.set(outBuf.get(i,value)+weightsBuf.get(i,j),i,value):outBuf.set(outBuf.get(i,value)+1,i,value))}return outBuf}function createSimpleUnaryImpl(op2){return(values,dtype,attrs)=>{let newValues=util_exports.getTypedArrayFromDType(dtype,values.length);for(let i=0;i{let{x}=inputs;if(assertNotComplex(x,name),x.dtype==="string"||dtype==="string")throw new Error("unaryKernelFunc does not support string input/output");let cpuBackend=backend2,values=cpuBackend.data.get(x.dataId).values,xSize=util_exports.sizeFromShape(x.shape),$dtype=dtype||x.dtype,newValues=util_exports.getArrayFromDType($dtype,xSize);for(let i=0;i{let{x}=inputs;if(assertNotComplex(x,name),x.dtype==="string"||dtype==="string")throw new Error("unaryKernelFunc does not support string input/output");let cpuBackend=backend2,values=cpuBackend.data.get(x.dataId).values,$dtype=dtype||x.dtype,newValues=unaryImpl(values,$dtype,attrs);return cpuBackend.makeTensorInfo(x.shape,$dtype,newValues)}}var ceilImpl=createSimpleUnaryImpl(xi=>Math.ceil(xi)),ceil2=unaryKernelFuncFromImpl(Ceil,ceilImpl),ceilConfig={kernelName:Ceil,backendName:"cpu",kernelFunc:ceil2};function concatImpl(inputs,outShape,dtype,simplyConcat){let outVals=util_exports.getArrayFromDType(dtype,util_exports.sizeFromShape(outShape));if(simplyConcat&&dtype!=="string"){let offset=0;inputs.forEach(input2=>{let size=util_exports.sizeFromShape(input2.shape);outVals.set(input2.vals,offset),offset+=size})}else{let colOffset=0;inputs.forEach(input2=>{let decodedData=dtype==="string"?backend_util_exports.fromUint8ToStringArray(input2.vals):input2.vals,tIdx=0;for(let row=0;rowMath.exp(xi)),exp2=unaryKernelFuncFromImpl(Exp,expImpl),expConfig={kernelName:Exp,backendName:"cpu",kernelFunc:exp2},expm1Impl=createSimpleUnaryImpl(xi=>Math.expm1(xi)),expm12=unaryKernelFuncFromImpl(Expm1,expm1Impl),expm1Config={kernelName:Expm1,backendName:"cpu",kernelFunc:expm12},floorImpl=createSimpleUnaryImpl(xi=>Math.floor(xi)),floor2=unaryKernelFuncFromImpl(Floor,floorImpl),floorConfig={kernelName:Floor,backendName:"cpu",kernelFunc:floor2};function gatherV2Impl(xBuf,indicesBuf,flattenOutputShape){let outBuf=buffer(flattenOutputShape,xBuf.dtype);for(let i=0;ia>b?1:0),greater3=binaryKernelFunc(Greater,greaterImpl,null,"bool"),greaterConfig={kernelName:Greater,backendName:"cpu",kernelFunc:greater3},lessImpl=createSimpleBinaryKernelImpl((a,b)=>aMath.log(xi)),log3=unaryKernelFuncFromImpl(Log,logImpl),logConfig={kernelName:Log,backendName:"cpu",kernelFunc:log3};function maxImpl(aVals,reduceSize,outShape,dtype){let vals=util_exports.getTypedArrayFromDType(dtype,util_exports.sizeFromShape(outShape));for(let i=0;imax6&&(max6=value)}vals[i]=max6}return vals}var maximumImpl=createSimpleBinaryKernelImpl((aValue,bValue)=>Math.max(aValue,bValue)),maximum3=binaryKernelFunc(Maximum,maximumImpl),maximumConfig={kernelName:Maximum,backendName:"cpu",kernelFunc:maximum3},minimumImpl=createSimpleBinaryKernelImpl((aValue,bValue)=>Math.min(aValue,bValue)),minimum3=binaryKernelFunc(Minimum,minimumImpl),minimumConfig={kernelName:Minimum,backendName:"cpu",kernelFunc:minimum3},multiplyImpl=createSimpleBinaryKernelImpl((aValue,bValue)=>aValue*bValue),multiplyComplexImpl=createComplexBinaryKernelImpl((aReal,aImag,bReal,bImag)=>({real:aReal*bReal-aImag*bImag,imag:aReal*bImag+aImag*bReal})),multiply2=binaryKernelFunc(Multiply,multiplyImpl,multiplyComplexImpl),multiplyConfig={kernelName:Multiply,backendName:"cpu",kernelFunc:multiply2};function negImpl(xVals,xShape,xDtype){let minusOne=util_exports.createScalarValue(-1,xDtype);return multiplyImpl([],xShape,minusOne,xVals,xDtype)}function neg2(args){let{inputs,backend:backend2}=args,{x}=inputs;assertNotComplex(x,"neg");let xVals=backend2.data.get(x.dataId).values,[res,newShape]=negImpl(xVals,x.shape,x.dtype);return backend2.makeTensorInfo(newShape,x.dtype,res)}var negConfig={kernelName:Neg,backendName:"cpu",kernelFunc:neg2},notEqualImpl=createSimpleBinaryKernelImpl((a,b)=>a!==b?1:0),notEqual2=binaryKernelFunc(NotEqual,notEqualImpl,null,"bool"),notEqualConfig={kernelName:NotEqual,backendName:"cpu",kernelFunc:notEqual2};function transposeImpl(xVals,xShape,dtype,perm,newShape){let xRank=xShape.length,xSize=util_exports.sizeFromShape(xShape),xStrides=util_exports.computeStrides(xShape),newStrides=util_exports.computeStrides(newShape),result=util_exports.getTypedArrayFromDType(dtype,util_exports.sizeFromShape(newShape));for(let i=0;ibackend2.disposeIntermediateTensorInfo(t)),backend2.makeTensorInfo(resultShape,outDtype,outVals)}var prodConfig={kernelName:Prod,backendName:"cpu",kernelFunc:prod2};function rangeImpl(start,stop,step4,dtype){let sameStartStop=start===stop,increasingRangeNegativeStep=start1;if(sameStartStop||increasingRangeNegativeStep||decreasingRangePositiveStep)return util_exports.makeZerosTypedArray(0,dtype);let numElements=Math.abs(Math.ceil((stop-start)/step4)),values=util_exports.makeZerosTypedArray(numElements,dtype);stop1/Math.sqrt(xi)),rsqrt2=unaryKernelFuncFromImpl(Rsqrt,rsqrtImpl),rsqrtConfig={kernelName:Rsqrt,backendName:"cpu",kernelFunc:rsqrt2};function sliceImpl(vals,begin,size,shape,dtype){let isContinous=slice_util_exports.isSliceContinous(shape,begin,size),length=util_exports.sizeFromShape(size),xStrides=util_exports.computeStrides(shape);if(isContinous){let flatOffset=slice_util_exports.computeFlatOffset(begin,xStrides);return dtype==="string"?vals.slice(flatOffset,flatOffset+length):vals.subarray(flatOffset,flatOffset+length)}let decodedData=dtype==="string"?backend_util_exports.fromUint8ToStringArray(vals):vals,inBuf=buffer(shape,dtype,decodedData),outBuf=buffer(size,dtype);for(let i=0;iidx+begin[j]);outBuf.set(inBuf.get(...inLoc),...outLoc)}return dtype==="string"?backend_util_exports.fromStringArrayToUint8(outBuf.values):outBuf.values}function slice2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{begin,size}=attrs;assertNotComplex(x,"slice");let[$begin,$size]=slice_util_exports.parseSliceParams(x,begin,size);slice_util_exports.assertParamsValid(x,$begin,$size);let vals=backend2.data.get(x.dataId).values,outVals=sliceImpl(vals,$begin,$size,x.shape,x.dtype);return backend2.makeTensorInfo($size,x.dtype,outVals)}var sliceConfig={kernelName:Slice,backendName:"cpu",kernelFunc:slice2},squaredDifferenceImpl=createSimpleBinaryKernelImpl((a,b)=>{let diff=a-b;return diff*diff}),squaredDifference2=binaryKernelFunc(SquaredDifference,squaredDifferenceImpl),squaredDifferenceConfig={kernelName:SquaredDifference,backendName:"cpu",kernelFunc:squaredDifference2};function stridedSliceImpl(outShape,xBuf,strides,begin){let outBuf=buffer(outShape,xBuf.dtype);for(let i=0;iaValue-bValue),subComplexImpl=createComplexBinaryKernelImpl((aReal,aImag,bReal,bImag)=>({real:aReal-bReal,imag:aImag-bImag})),sub2=binaryKernelFunc(Sub,subImpl,subComplexImpl),subConfig={kernelName:Sub,backendName:"cpu",kernelFunc:sub2};function tileImpl(xBuf,reps){let newShape=new Array(xBuf.rank);for(let i=0;ib2.value-a.value);let outOffset=b*k,topKVals=allTopKVals.subarray(outOffset,outOffset+k),topKIndices=allTopKIndices.subarray(outOffset,outOffset+k);for(let i=0;i{for(let m=0;mnew MathBackendCPU,1);var elu4=unaryKernelFunc(Elu,xi=>xi>=0?xi:Math.exp(xi)-1),eluConfig={kernelName:Elu,backendName:"cpu",kernelFunc:elu4};function leakyRelu2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{alpha}=attrs;assertNotComplex([x],"leakyRelu");let xSize=util_exports.sizeFromShape(x.shape),xVals=backend2.data.get(x.dataId).values,outVals=util_exports.getTypedArrayFromDType("float32",xSize);for(let i=0;ixValue<0?aValue*xValue:xValue);function prelu3(args){let{inputs,backend:backend2}=args,{x,alpha}=inputs;assertNotComplex([x,alpha],"prelu");let aVals=backend2.data.get(x.dataId).values,bVals=backend2.data.get(alpha.dataId).values,[resultData,resultShape]=preluImpl(x.shape,alpha.shape,aVals,bVals,x.dtype);return backend2.makeTensorInfo(resultShape,x.dtype,resultData)}var preluConfig={kernelName:Prelu,backendName:"cpu",kernelFunc:prelu3},relu2=unaryKernelFunc(Relu,xi=>Math.max(0,xi)),reluConfig={kernelName:Relu,backendName:"cpu",kernelFunc:relu2},relu62=unaryKernelFunc(Relu6,xi=>Math.min(Math.max(0,xi),6)),relu6Config={kernelName:Relu6,backendName:"cpu",kernelFunc:relu62};function applyActivation2(backend2,x,activation2,preluActivationWeights,leakyreluAlpha){if(activation2==="linear")return identity2({inputs:{x},backend:backend2});if(activation2==="relu")return relu2({inputs:{x},backend:backend2});if(activation2==="elu")return elu4({inputs:{x},backend:backend2});if(activation2==="relu6")return relu62({inputs:{x},backend:backend2});if(activation2==="prelu")return prelu3({inputs:{x,alpha:preluActivationWeights},backend:backend2});if(activation2==="leakyrelu")return leakyRelu2({inputs:{x},backend:backend2,attrs:{alpha:leakyreluAlpha}});throw new Error(`Activation ${activation2} has not been implemented for the CPU backend.`)}function reshape3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{shape}=attrs,xSize=util_exports.sizeFromShape(x.shape),$shape=util_exports.inferFromImplicitShape(shape,xSize),$xSize=util_exports.sizeFromShape($shape);util_exports.assert(xSize===$xSize,()=>`The new shape (${$shape}) has ${$xSize} elements and the old shape (${x.shape}) has ${xSize} elements. The new shape and old shape must have the same number of elements.`),backend2.incRef(x.dataId);let xData=backend2.data.get(x.dataId);if(xData.complexTensorInfos!=null){let real4=xData.complexTensorInfos.real,imag4=xData.complexTensorInfos.imag;real4.shape=$shape,imag4.shape=$shape}return{dataId:x.dataId,shape:$shape,dtype:x.dtype}}var reshapeConfig={kernelName:Reshape,backendName:"cpu",kernelFunc:reshape3};function batchMatMul(args){let{inputs,backend:backend2,attrs}=args,{a,b}=inputs,{transposeA,transposeB}=attrs;assertNotComplex([a,b],"matMul");let aRank=a.shape.length,bRank=b.shape.length,innerShapeA=transposeA?a.shape[aRank-2]:a.shape[aRank-1],innerShapeB=transposeB?b.shape[bRank-1]:b.shape[bRank-2],outerShapeA=transposeA?a.shape[aRank-1]:a.shape[aRank-2],outerShapeB=transposeB?b.shape[bRank-2]:b.shape[bRank-1],outerDimsA=a.shape.slice(0,-2),outerDimsB=b.shape.slice(0,-2),batchDimA=util_exports.sizeFromShape(outerDimsA),batchDimB=util_exports.sizeFromShape(outerDimsB),batchDimsCompatible=batchDimA===batchDimB||batchDimA===1||batchDimB===1;util_exports.assert(aRank>=2&&bRank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`);let outShape=(batchDimA>batchDimB?a.shape.slice(0,-2):b.shape.slice(0,-2)).concat([outerShapeA,outerShapeB]);util_exports.assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${a.shape} and ${b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let a3dShape=transposeA?[batchDimA,innerShapeA,outerShapeA]:[batchDimA,outerShapeA,innerShapeA],b3dShape=transposeB?[batchDimB,outerShapeB,innerShapeB]:[batchDimB,innerShapeB,outerShapeB],a3d=reshape3({inputs:{x:a},backend:backend2,attrs:{shape:a3dShape}}),b3d=reshape3({inputs:{x:b},backend:backend2,attrs:{shape:b3dShape}}),sharedDim=transposeA?a3d.shape[1]:a3d.shape[2],leftDim=transposeA?a3d.shape[2]:a3d.shape[1],rightDim=transposeB?b3d.shape[1]:b3d.shape[2],batchDim=Math.max(batchDimA,batchDimB),a3dValues=backend2.data.get(a3d.dataId).values,b3dValues=backend2.data.get(b3d.dataId).values,a3dStrides=util_exports.computeStrides(a3d.shape),b3dStrides=util_exports.computeStrides(b3d.shape),[aBatch,aOuterStep,aInnerStep]=transposeA?[a3dStrides[0],1,a3dStrides[1]]:[a3dStrides[0],a3dStrides[1],1],[bInnerStep,bOuterStep,bBatch]=transposeB?[1,b3dStrides[1],b3dStrides[0]]:[b3dStrides[1],1,b3dStrides[0]],size=leftDim*rightDim,result=buffer([batchDim,leftDim,rightDim],a3d.dtype),resVals=result.values,blockSize=backend2.blockSize;for(let bi=0;biMath.acos(xi)),acosConfig={kernelName:Acos,backendName:"cpu",kernelFunc:acos2},acosh2=unaryKernelFunc(Acosh,xi=>Math.acosh(xi)),acoshConfig={kernelName:Acosh,backendName:"cpu",kernelFunc:acosh2};function addN2(args){let{inputs,backend:backend2}=args,tensors=inputs;assertNotComplex(inputs,"addN");let vals=tensors.map(t=>backend2.data.get(t.dataId).values),outBuf=buffer(tensors[0].shape,tensors[0].dtype),outVals=outBuf.values;for(let i=0;imax6&&(max6=value,maxIndex=j)}vals[i]=maxIndex}return intermediateTensorInfos.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),backend2.makeTensorInfo(outShape,"int32",vals)}var argMaxConfig={kernelName:ArgMax,backendName:"cpu",kernelFunc:argMax2};function argMin2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{axis}=attrs;assertNotComplex(x,"argMin");let axes=util_exports.parseAxisParam(axis,x.shape),permutedAxes=backend_util_exports.getAxesPermutation(axes,x.shape.length),$x=x,intermediateTensorInfos=[];permutedAxes!=null&&($x=transpose2({inputs:{x},backend:backend2,attrs:{perm:permutedAxes}}),intermediateTensorInfos.push($x),axes=backend_util_exports.getInnerMostAxes(axes.length,$x.shape.length)),axes=[axes[0]],backend_util_exports.assertAxesAreInnerMostDims("argMin",axes,$x.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes($x.shape,axes),outSize=util_exports.sizeFromShape(outShape),vals=util_exports.makeZerosTypedArray(outSize,"int32"),reduceSize=util_exports.sizeFromShape(reduceShape),aVals=backend2.data.get($x.dataId).values;for(let i=0;ibackend2.disposeIntermediateTensorInfo(t)),backend2.makeTensorInfo(outShape,"int32",vals)}var argMinConfig={kernelName:ArgMin,backendName:"cpu",kernelFunc:argMin2},asin2=unaryKernelFunc(Asin,xi=>Math.asin(xi)),asinConfig={kernelName:Asin,backendName:"cpu",kernelFunc:asin2},asinh2=unaryKernelFunc(Asinh,xi=>Math.asinh(xi)),asinhConfig={kernelName:Asinh,backendName:"cpu",kernelFunc:asinh2},atan3=unaryKernelFunc(Atan,xi=>Math.atan(xi)),atanConfig={kernelName:Atan,backendName:"cpu",kernelFunc:atan3},atan2Impl=createSimpleBinaryKernelImpl((aValue,bValue)=>Math.atan2(aValue,bValue)),atan22=binaryKernelFunc(Atan2,atan2Impl),atan2Config={kernelName:Atan2,backendName:"cpu",kernelFunc:atan22},atanh2=unaryKernelFunc(Atanh,xi=>Math.atanh(xi)),atanhConfig={kernelName:Atanh,backendName:"cpu",kernelFunc:atanh2};function pool2(xValues,xShape,dtype,strides,convInfo,poolType){let strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,initialValue=poolType==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,output=buffer(convInfo.outShape,dtype),outputVals=output.values,outputBatchStrides=convInfo.outShape[1]*convInfo.outShape[2]*convInfo.outShape[3],outputRowStrides=convInfo.outShape[2]*convInfo.outShape[3],outputColStrides=convInfo.outShape[3];for(let b=0;bminMaxValue?minMaxValue=pixel:poolType==="avg"&&(avgValue+=pixel,count2++)}if(isNaN(minMaxValue))break}let outputOffset=outputRowOffset+yC*outputColStrides+d;outputVals[outputOffset]=poolType==="avg"?avgValue/count2:minMaxValue}}}return output}function maxPoolPositions(xValues,xShape,dtype,convInfo,flattenPositions=!1,includeBatchInIndex=!1){let maxPositions=buffer(convInfo.outShape,"int32"),strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,xBuf=buffer(xShape,dtype,xValues);for(let b=0;bmaxValue&&(maxValue=pixel,flattenPositions?maxPosition=includeBatchInIndex?((b*convInfo.inHeight+xR)*convInfo.inWidth+xC)*convInfo.inChannels+d:(xR*convInfo.inWidth+xC)*convInfo.inChannels+d:maxPosition=wR*effectiveFilterWidth+wC)}}maxPositions.set(maxPosition,b,yR,yC,d)}}return maxPositions}function pool3d2(xValues,xShape,dtype,strides,convInfo,poolType){let strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=convInfo.padInfo.front,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,initialValue=poolType==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,output=buffer(convInfo.outShape,dtype),outputVals=output.values,outputBatchStrides=convInfo.outShape[1]*convInfo.outShape[2]*convInfo.outShape[3]*convInfo.outShape[4],outputDepthStrides=convInfo.outShape[2]*convInfo.outShape[3]*convInfo.outShape[4],outputRowStrides=convInfo.outShape[3]*convInfo.outShape[4],outputColStrides=convInfo.outShape[4];for(let batch=0;batchminMaxValue?minMaxValue=pixel:poolType==="avg"&&(avgValue+=pixel,count2++),isNaN(minMaxValue))break}if(isNaN(minMaxValue))break}if(isNaN(minMaxValue))break}let outputOffset=outputColOffset+channel;outputVals[outputOffset]=poolType==="avg"?avgValue/count2:minMaxValue}}}}return output}function maxPool3dPositions(xBuf,convInfo){let maxPositions=buffer(convInfo.outShape,"int32"),strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=convInfo.padInfo.front,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left;for(let batch=0;batch=maxValue&&(maxValue=pixel,maxPosition=wDepth*effectiveFilterHeight*effectiveFilterWidth+wRow*effectiveFilterHeight+wCol)}}}maxPositions.set(maxPosition,batch,yDepth,yRow,yCol,channel)}}}return maxPositions}function avgPool2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs;assertNotComplex(x,"avgPool");let{filterSize,strides,pad:pad3,dimRoundingMode}=attrs,dilations=1;util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad3,dimRoundingMode),res;if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))res=identity2({inputs:{x},backend:backend2});else{let xValues=backend2.data.get(x.dataId).values,strides2=util_exports.computeStrides(x.shape),buffer2=pool2(xValues,x.shape,x.dtype,strides2,convInfo,"avg");res=backend2.makeTensorInfo(convInfo.outShape,x.dtype,buffer2.values)}return res}var avgPoolConfig={kernelName:AvgPool,backendName:"cpu",kernelFunc:avgPool2};function avgPool3D(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{filterSize,strides,pad:pad3,dimRoundingMode,dataFormat,dilations}=attrs;assertNotComplex(x,"avgPool3d");let $dilations=dilations;$dilations==null&&($dilations=[1,1,1]);let convInfo=backend_util_exports.computePool3DInfo(x.shape,filterSize,strides,$dilations,pad3,dimRoundingMode,dataFormat),xValues=backend2.data.get(x.dataId).values,outBuf=pool3d2(xValues,x.shape,x.dtype,util_exports.computeStrides(x.shape),convInfo,"avg");return backend2.makeTensorInfo(outBuf.shape,"float32",outBuf.values)}var avgPool3DConfig={kernelName:AvgPool3D,backendName:"cpu",kernelFunc:avgPool3D};function avgPool3DGrad(args){let{inputs,backend:backend2,attrs}=args,{dy,input:input2}=inputs,{filterSize,strides,pad:pad3,dilations,dimRoundingMode}=attrs;assertNotComplex([dy,input2],"avgPool3DGrad");let convInfo=backend_util_exports.computePool3DInfo(input2.shape,filterSize,strides,dilations,pad3,dimRoundingMode),strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,filterDepth=convInfo.filterDepth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=effectiveFilterDepth-1-convInfo.padInfo.front,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(input2.shape,"float32"),avgMultiplier=1/(filterDepth*filterHeight*filterWidth),dyBuf=backend2.bufferSync(dy);for(let batch=0;batch=convInfo.outDepth||Math.floor(dyDepth)!==dyDepth))for(let wRow=0;wRow=convInfo.outHeight||Math.floor(dyRow)!==dyRow))for(let wCol=0;wCol=convInfo.outWidth||Math.floor(dyCol)!==dyCol||(dotProd+=dyBuf.get(batch,dyDepth,dyRow,dyCol,channel))}}}dx.set(dotProd*avgMultiplier,batch,dxDepth,dxRow,dxCol,channel)}return backend2.makeTensorInfo(dx.shape,dx.dtype,dx.values)}var avgPool3DGradConfig2={kernelName:AvgPool3DGrad,backendName:"cpu",kernelFunc:avgPool3DGrad};function avgPoolGrad2(args){let{inputs,backend:backend2,attrs}=args,{dy,input:input2}=inputs,x=input2;assertNotComplex([dy,input2],"avgPoolGrad");let{filterSize,strides,pad:pad3}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad3),strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),avgMultiplier=1/(filterHeight*filterWidth),dyData=backend2.data.get(dy.dataId).values,dyBuf=buffer(dy.shape,"float32",dyData);for(let b=0;b=convInfo.outHeight||Math.floor(dyR)!==dyR))for(let wC=0;wC=convInfo.outWidth||Math.floor(dyC)!==dyC||(dotProd+=dyBuf.get(b,dyR,dyC,d))}}dx.set(dotProd*avgMultiplier,b,dxR,dxC,d)}return backend2.makeTensorInfo(dx.shape,dx.dtype,dx.values)}var avgPoolGradConfig2={kernelName:AvgPoolGrad,backendName:"cpu",kernelFunc:avgPoolGrad2};function batchNorm2(args){let{inputs,backend:backend2,attrs}=args,{x,scale:scale22,offset,mean:mean4,variance}=inputs;util_exports.assert(mean4.shape.length===variance.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),util_exports.assert(offset==null||mean4.shape.length===offset.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),util_exports.assert(scale22==null||mean4.shape.length===scale22.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks."),assertNotComplex([x,mean4,variance,scale22,offset],"batchNorm");let{varianceEpsilon}=attrs;varianceEpsilon==null&&(varianceEpsilon=.001);let xVals=backend2.data.get(x.dataId).values,mVals=backend2.data.get(mean4.dataId).values,varVals=backend2.data.get(variance.dataId).values,sVals=scale22?backend2.data.get(scale22.dataId).values:new Float32Array([1]),offVals=offset?backend2.data.get(offset.dataId).values:new Float32Array([0]),outVals=new Float32Array(xVals.length),offValsLength=offVals.length,sValsLength=sVals.length,varValsLength=varVals.length,mValsLength=mVals.length,offi=0,mi=0,si=0,vi=0;for(let i=0;i=offValsLength&&(offi=0),mi>=mValsLength&&(mi=0),si>=sValsLength&&(si=0),vi>=varValsLength&&(vi=0);return backend2.makeTensorInfo(x.shape,x.dtype,outVals)}var batchNormConfig={kernelName:FusedBatchNorm,backendName:"cpu",kernelFunc:batchNorm2};function batchToSpaceND2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{blockShape,crops}=attrs;assertNotComplex([x],"batchToSpaceND");let prod5=blockShape.reduce((a,b)=>a*b),reshaped=backend_util_exports.getReshaped(x.shape,blockShape,prod5),permuted=backend_util_exports.getPermuted(reshaped.length,blockShape.length),reshapedPermuted=backend_util_exports.getReshapedPermuted(x.shape,blockShape,prod5),sliceBeginCoords=backend_util_exports.getSliceBeginCoords(crops,blockShape.length),sliceSize=backend_util_exports.getSliceSize(reshapedPermuted,crops,blockShape.length),xReshaped=reshape3({inputs:{x},backend:backend2,attrs:{shape:reshaped}}),xTransposed=transpose2({inputs:{x:xReshaped},backend:backend2,attrs:{perm:permuted}}),xTransposedReshaped=reshape3({inputs:{x:xTransposed},backend:backend2,attrs:{shape:reshapedPermuted}}),result=slice2({inputs:{x:xTransposedReshaped},backend:backend2,attrs:{begin:sliceBeginCoords,size:sliceSize}});return backend2.disposeIntermediateTensorInfo(xReshaped),backend2.disposeIntermediateTensorInfo(xTransposed),backend2.disposeIntermediateTensorInfo(xTransposedReshaped),result}var batchToSpaceNDConfig={kernelName:BatchToSpaceND,backendName:"cpu",kernelFunc:batchToSpaceND2};function bincount2(args){let{inputs,backend:backend2,attrs}=args,{x,weights}=inputs,{size}=attrs,xVals=backend2.data.get(x.dataId).values,weightsVals=backend2.data.get(weights.dataId).values,outVals=bincountImpl(xVals,weightsVals,weights.dtype,weights.shape,size);return backend2.makeTensorInfo([size],weights.dtype,outVals)}var bincountConfig={kernelName:Bincount,backendName:"cpu",kernelFunc:bincount2},clip=unaryKernelFunc(ClipByValue,(xi,attrs)=>{let clipAttrs=attrs;return xi>clipAttrs.clipValueMax?clipAttrs.clipValueMax:xi{let{x}=args.inputs,cpuBackend=args.backend,resultValues=new Float32Array(util_exports.sizeFromShape(x.shape)),complexVals=cpuBackend.data.get(x.dataId),real4=complexVals.complexTensorInfos.real,imag4=complexVals.complexTensorInfos.imag,realVals=cpuBackend.data.get(real4.dataId).values,imagVals=cpuBackend.data.get(imag4.dataId).values;for(let i=0;it.shape),$axis);if(util_exports.sizeFromShape(outShape)===0)return backend2.makeTensorInfo(outShape,inputs[0].dtype,[]);let $inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return identity2({inputs:{x:$inputs[0]},backend:backend2});let shapes=$inputs.map(t=>t.shape);if(backend_util_exports.assertParamsConsistent(shapes,$axis),$inputs[0].dtype==="complex64"){let reals=$inputs.map(t=>real2({inputs:{input:t},backend:backend2})),imags=$inputs.map(t=>imag2({inputs:{input:t},backend:backend2})),realConcated=concat2({inputs:reals,backend:backend2,attrs:{axis:$axis}}),imagConcated=concat2({inputs:imags,backend:backend2,attrs:{axis:$axis}}),result=complex2({inputs:{real:realConcated,imag:imagConcated},backend:backend2});return reals.forEach(r=>backend2.disposeIntermediateTensorInfo(r)),imags.forEach(i=>backend2.disposeIntermediateTensorInfo(i)),backend2.disposeIntermediateTensorInfo(realConcated),backend2.disposeIntermediateTensorInfo(imagConcated),result}let inputs2D=$inputs.map(t=>{let innerSize=util_exports.sizeFromShape(t.shape.slice($axis));return reshape3({inputs:{x:t},backend:backend2,attrs:{shape:[-1,innerSize]}})}),inputsValShapes=inputs2D.map(t=>({vals:backend2.data.get(t.dataId).values,shape:t.shape}));outShape=backend_util_exports.computeOutShape(inputs2D.map(t=>t.shape),1);let simplyConcat=inputs2D[0].shape[0]===1,outVals=concatImpl(inputsValShapes,outShape,inputs[0].dtype,simplyConcat),finalOutShape=backend_util_exports.computeOutShape($inputs.map(t=>t.shape),$axis),outInfo=backend2.makeTensorInfo(finalOutShape,inputs[0].dtype,outVals);return inputs2D.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),outInfo}var concatConfig={kernelName:Concat,backendName:"cpu",kernelFunc:concat2};function conv2D(args){let{inputs,backend:backend2,attrs}=args,{x,filter}=inputs,{strides,pad:pad3,dataFormat,dilations,dimRoundingMode}=attrs;assertNotComplex([x,filter],"conv2d");let $dataFormat=backend_util_exports.convertConv2DDataFormat(dataFormat),convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad3,dimRoundingMode,!1,$dataFormat),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,padLeft=convInfo.padInfo.left,padTop=convInfo.padInfo.top,isChannelsLast=convInfo.dataFormat==="channelsLast",y=new TensorBuffer(convInfo.outShape,x.dtype),xStrides=util_exports.computeStrides(x.shape),filterStrides=util_exports.computeStrides(filter.shape),xBatchStride=xStrides[0],xRowStride=isChannelsLast?xStrides[1]:xStrides[2],xColStride=isChannelsLast?xStrides[2]:1,xChannelStride=isChannelsLast?1:xStrides[1],yBatchStride=y.strides[0],yRowStride=isChannelsLast?y.strides[1]:y.strides[2],yColStride=isChannelsLast?y.strides[2]:1,yChannelStride=isChannelsLast?1:y.strides[1],xVals=backend2.data.get(x.dataId).values,wVals=backend2.data.get(filter.dataId).values,yVals=y.values;for(let b=0;b=convInfo.inHeight)continue;let wOffset1=wR*filterStrides[0],xOffset2=xOffset1+xR*xRowStride;for(let yC=0;yC=convInfo.inWidth)continue;let wOffset2=wOffset1+wC*filterStrides[1],xOffset3=xOffset2+xC*xColStride,wOffset3=wOffset2;for(let d1=0;d1=convInfo.inDepth)continue;let wOffset1=wF*filterStrides[0],xOffset2=xOffset1+xF*xStrides[1];for(let yR=0;yR=convInfo.inHeight)continue;let wOffset2=wOffset1+wR*filterStrides[1],xOffset3=xOffset2+xR*xStrides[2];for(let yC=0;yC=convInfo.inWidth)continue;let wOffset3=wOffset2+wC*filterStrides[2],xOffset4=xOffset3+xC*convInfo.inChannels,wOffset4=wOffset3;for(let d1=0;d1Math.cos(xi)),cosConfig={kernelName:Cos,backendName:"cpu",kernelFunc:cos2},cosh2=unaryKernelFunc(Cosh,xi=>Math.cosh(xi)),coshConfig={kernelName:Cosh,backendName:"cpu",kernelFunc:cosh2};function cropAndResize2(args){let{inputs,backend:backend2,attrs}=args,{image:image3,boxes,boxInd}=inputs,{cropSize,method,extrapolationValue}=attrs,[batch,imageHeight,imageWidth,numChannels]=image3.shape,numBoxes=boxes.shape[0],[cropHeight,cropWidth]=cropSize,output=buffer([numBoxes,cropHeight,cropWidth,numChannels],"float32"),boxVals=backend2.data.get(boxes.dataId).values,boxIndVals=backend2.data.get(boxInd.dataId).values,imageVals=backend2.data.get(image3.dataId).values,inStride=util_exports.computeStrides(image3.shape),outStride=util_exports.computeStrides(output.shape);for(let b=0;b=batch)continue;let heightScale=cropHeight>1?(y2-y1)*(imageHeight-1)/(cropHeight-1):0,widthScale=cropWidth>1?(x2-x1)*(imageWidth-1)/(cropWidth-1):0;for(let y=0;y1?y1*(imageHeight-1)+y*heightScale:.5*(y1+y2)*(imageHeight-1);if(yInd<0||yInd>imageHeight-1){for(let x=0;x1?x1*(imageWidth-1)+x*widthScale:.5*(x1+x2)*(imageWidth-1);if(xInd<0||xInd>imageWidth-1){for(let c=0;c1?x1*(imageWidth-1)+x*widthScale:.5*(x1+x2)*(imageWidth-1);if(xInd<0||xInd>imageWidth-1){for(let c=0;ci+finalDim-j-1:(i,j)=>i+j;for(let i=0;i`Only NHWC dataFormat supported on CPU for depthToSpace. Got ${dataFormat}`),util_exports.assert(blockSize>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=x.shape[1],inputWidth=x.shape[2],inputDepth=x.shape[3],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),xValues=backend2.data.get(x.dataId).values,result=new Float32Array(batchSize*outputHeight*outputWidth*outputDepth),outputIdx=0;for(let b=0;b`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${$dilations}'`);let convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,$dilations,pad3,dimRoundingMode,!0),{filterHeight,filterWidth,dilationHeight,dilationWidth,padInfo}=convInfo,padLeft=padInfo.left,padTop=padInfo.top,chMul=convInfo.outChannels/convInfo.inChannels,y=new TensorBuffer(convInfo.outShape,x.dtype),xVals=backend2.data.get(x.dataId).values,wVals=backend2.data.get(filter.dataId).values,yVals=y.values;for(let b=0;b=convInfo.inHeight)continue;let wOffset1=wR*filterStrides[0],xOffset2=xOffset1+xR*xStrides[1];for(let yC=0;yC=convInfo.inWidth)continue;let wOffset2=wOffset1+wC*filterStrides[1],xOffset3=xOffset2+xC*convInfo.inChannels,yOffset4=yOffset3,wOffset3=wOffset2;for(let d1=0;d1{let{x,filter}=inputs,{strides,pad:pad3,dilations}=attrs,cpuBackend=backend2,xVals=cpuBackend.data.get(x.dataId).values,xRank=x.shape.length,filterVals=cpuBackend.data.get(filter.dataId).values,filterRank=filter.shape.length,{batchSize,inHeight,inWidth,inChannels,outHeight,outWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth,outShape}=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad3,"NHWC",dilations),outSize=util_exports.sizeFromShape(outShape),outRank=outShape.length,outputVals=util_exports.getArrayFromDType(x.dtype,outSize);for(let b=0;b=0&&hIn=0&&wIncurVal&&(curVal=val)}}}let outputIndex=util_exports.locToIndex([b,hOut,wOut,d],outRank,util_exports.computeStrides(outShape));outputVals[outputIndex]=curVal}}}return{dataId:cpuBackend.write(util_exports.toTypedArray(outputVals,x.dtype),outShape,x.dtype),shape:outShape,dtype:x.dtype}}},dilation2dBackpropFilterConfig={kernelName:Dilation2DBackpropFilter,backendName:"cpu",kernelFunc:({inputs,backend:backend2,attrs})=>{let{x,filter,dy}=inputs,{strides,pad:pad3,dilations}=attrs,cpuBackend=backend2,$x=util_exports.toNestedArray(x.shape,cpuBackend.data.get(x.dataId).values),$filter=util_exports.toNestedArray(filter.shape,cpuBackend.data.get(filter.dataId).values),{batchSize,inHeight,inWidth,inChannels,outHeight,outWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth,outShape}=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad3,"NHWC",dilations);util_exports.assert(dy.rank===outShape.length,()=>`Error in ${Dilation2DBackpropFilter}, dy must have the same rank as output ${outShape.length}, but got ${dy.rank}`);let $dy=util_exports.toNestedArray(outShape,cpuBackend.data.get(dy.dataId).values),gradients=util_exports.makeZerosNestedTypedArray(filter.shape,filter.dtype);for(let b=0;b=0&&hIn=0&&wIncurVal&&(curVal=val,hMax=h,wMax=w)}}}gradients[hMax][wMax][d]+=$dy[b][hOut][wOut][d]}}}return{dataId:cpuBackend.write(util_exports.toTypedArray(gradients,x.dtype),filter.shape,filter.dtype),shape:filter.shape,dtype:filter.dtype}}},dilation2dBackpropInputConfig={kernelName:Dilation2DBackpropInput,backendName:"cpu",kernelFunc:({inputs,backend:backend2,attrs})=>{let{x,filter,dy}=inputs,{strides,pad:pad3,dilations}=attrs,cpuBackend=backend2,$x=util_exports.toNestedArray(x.shape,cpuBackend.data.get(x.dataId).values),$filter=util_exports.toNestedArray(filter.shape,cpuBackend.data.get(filter.dataId).values),{batchSize,inHeight,inWidth,inChannels,outHeight,outWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth,outShape}=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad3,"NHWC",dilations);util_exports.assert(dy.rank===outShape.length,()=>`Error in ${Dilation2DBackpropInput}, dy must have the same rank as output ${outShape.length}, but got ${dy.rank}`);let $dy=util_exports.toNestedArray(outShape,cpuBackend.data.get(dy.dataId).values),gradients=util_exports.makeZerosNestedTypedArray(x.shape,x.dtype);for(let b=0;b=0&&hIn=0&&wIncurVal&&(curVal=val,hInMax=hIn,wInMax=wIn)}}}gradients[b][hInMax][wInMax][d]+=$dy[b][hOut][wOut][d]}}}return{dataId:cpuBackend.write(util_exports.toTypedArray(gradients,x.dtype),x.shape,x.dtype),shape:x.shape,dtype:x.dtype}}};function eluGrad(args){let{inputs,backend:backend2}=args,{dy,y}=inputs;assertNotComplex([dy,y],"eluGrad");let resultValues=new Float32Array(util_exports.sizeFromShape(y.shape)),values=backend2.data.get(y.dataId).values,dyValues=backend2.data.get(dy.dataId).values;for(let i=0;i=1?resultValues[i]=dyValues[i]:resultValues[i]=dyValues[i]*(v+1)}return backend2.makeTensorInfo(y.shape,"float32",resultValues)}var eluGradConfig2={kernelName:EluGrad,backendName:"cpu",kernelFunc:eluGrad},equalImpl=createSimpleBinaryKernelImpl((a,b)=>a===b?1:0),equal2=binaryKernelFunc(Equal,equalImpl,null,"bool"),equalConfig={kernelName:Equal,backendName:"cpu",kernelFunc:equal2},p=backend_util_exports.ERF_P,a1=backend_util_exports.ERF_A1,a2=backend_util_exports.ERF_A2,a3=backend_util_exports.ERF_A3,a4=backend_util_exports.ERF_A4,a5=backend_util_exports.ERF_A5,erf2=unaryKernelFunc(Erf,xi=>{let sign4=Math.sign(xi),v=Math.abs(xi),t=1/(1+p*v);return sign4*(1-((((a5*t+a4)*t+a3)*t+a2)*t+a1)*t*Math.exp(-v*v))}),erfConfig={kernelName:Erf,backendName:"cpu",kernelFunc:erf2};function expandDims3(args){let{inputs,backend:backend2,attrs}=args,{input:input2}=inputs,{dim}=attrs,inputRank=input2.shape.length,newShape=input2.shape.slice(),$dim=dim;return dim<0&&(util_exports.assert(-(inputRank+1)<=dim,()=>`Axis must be in the interval [${-(inputRank+1)}, ${inputRank}]`),$dim=inputRank+dim+1),newShape.splice($dim,0,1),reshape3({inputs:{x:input2},backend:backend2,attrs:{shape:newShape}})}var expandDimsConfig={kernelName:ExpandDims,backendName:"cpu",kernelFunc:expandDims3},realDivImpl=createSimpleBinaryKernelImpl((a,b)=>a/b),div2=binaryKernelFunc(RealDiv,realDivImpl),realDivConfig={kernelName:RealDiv,backendName:"cpu",kernelFunc:div2};function fftBatch(input2,inverse,cpuBackend){let inputShape=input2.shape,batch=inputShape[0],innerDim=inputShape[1],inputVals=cpuBackend.data.get(input2.dataId),real2D=inputVals.complexTensorInfos.real,imag2D=inputVals.complexTensorInfos.imag,resultShape=[batch,innerDim],resultSize=util_exports.sizeFromShape(resultShape),resultReal=util_exports.getTypedArrayFromDType("float32",resultSize),resultImag=util_exports.getTypedArrayFromDType("float32",resultSize);for(let b=0;b{let{image:image3}=inputs,cpuBackend=backend2,output=util_exports.getTypedArrayFromDType(image3.dtype,util_exports.sizeFromShape(image3.shape)),[batch,imageHeight,imageWidth,numChannels]=image3.shape,imageVals=cpuBackend.data.get(image3.dataId).values;for(let batchIdx=0;batchIdx=0&&coordXMath.floor(a/b)),floorDiv2=binaryKernelFunc(FloorDiv,floorDivImpl,null,"int32"),floorDivConfig={kernelName:FloorDiv,backendName:"cpu",kernelFunc:floorDiv2};function fusedConv2D(args){let{inputs,backend:backend2,attrs}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad3,dataFormat,dilations,dimRoundingMode,activation:activation2,leakyreluAlpha}=attrs,result=conv2D({inputs:{x,filter},backend:backend2,attrs:{strides,pad:pad3,dataFormat,dilations,dimRoundingMode}});if(bias){let resultOld=result;result=add4({inputs:{a:result,b:bias},backend:backend2}),backend2.disposeIntermediateTensorInfo(resultOld)}if(activation2){let resultOld=result;result=applyActivation2(backend2,result,activation2,preluActivationWeights,leakyreluAlpha),backend2.disposeIntermediateTensorInfo(resultOld)}return result}var fusedConv2DConfig={kernelName:FusedConv2D,backendName:"cpu",kernelFunc:fusedConv2D};function fusedDepthwiseConv2D(args){let{inputs,backend:backend2,attrs}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad3,dataFormat,dilations,dimRoundingMode,activation:activation2,leakyreluAlpha}=attrs,result=depthwiseConv2dNative({inputs:{x,filter},backend:backend2,attrs:{strides,pad:pad3,dataFormat,dilations,dimRoundingMode}});if(bias){let oldResult=result;result=add4({inputs:{a:result,b:bias},backend:backend2}),backend2.disposeIntermediateTensorInfo(oldResult)}if(activation2){let oldResult=result;result=applyActivation2(backend2,result,activation2,preluActivationWeights,leakyreluAlpha),backend2.disposeIntermediateTensorInfo(oldResult)}return result}var fusedDepthwiseConv2DConfig={kernelName:FusedDepthwiseConv2D,backendName:"cpu",kernelFunc:fusedDepthwiseConv2D};function gatherNd(args){let{inputs,backend:backend2}=args,{params,indices}=inputs,paramsSize=util_exports.sizeFromShape(params.shape),indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],[resultShape,numSlices,sliceSize,strides]=backend_util_exports.prepareAndValidate(params,indices);if(numSlices===0)return backend2.makeTensorInfo(resultShape,params.dtype,[]);let outBuf=buffer([numSlices,sliceSize],params.dtype),indicesData=backend2.data.get(indices.dataId).values,paramsData=backend2.data.get(params.dataId).values;for(let i=0;i=paramsSize/sliceSize)throw new Error(`Invalid indices: ${index} does not index into ${params.shape}`);for(let k=0;ka>=b?1:0),greaterEqual2=binaryKernelFunc(GreaterEqual,greaterEqualImpl,null,"bool"),greaterEqualConfig={kernelName:GreaterEqual,backendName:"cpu",kernelFunc:greaterEqual2};function ifft2(args){let{inputs,backend:backend2}=args,{input:input2}=inputs,inputSize=util_exports.sizeFromShape(input2.shape),innerDimensionSize=input2.shape[input2.shape.length-1],batch=inputSize/innerDimensionSize,input2D=reshape3({inputs:{x:input2},backend:backend2,attrs:{shape:[batch,innerDimensionSize]}}),result=fftBatch(input2D,!0,backend2),resultReshaped=reshape3({inputs:{x:result},backend:backend2,attrs:{shape:input2.shape}});return backend2.disposeIntermediateTensorInfo(input2D),backend2.disposeIntermediateTensorInfo(result),resultReshaped}var ifftConfig={kernelName:IFFT,backendName:"cpu",kernelFunc:ifft2},isFinite3=unaryKernelFunc(IsFinite,xi=>Number.isFinite(xi)?1:0,"bool"),isFiniteConfig={kernelName:IsFinite,backendName:"cpu",kernelFunc:isFinite3},isInf2=unaryKernelFunc(IsInf,xi=>Math.abs(xi)===Infinity?1:0,"bool"),isInfConfig={kernelName:IsInf,backendName:"cpu",kernelFunc:isInf2},isNaN3=unaryKernelFunc(IsNan,xi=>Number.isNaN(xi)?1:0,"bool"),isNaNConfig={kernelName:IsNan,backendName:"cpu",kernelFunc:isNaN3},lessEqualImpl=createSimpleBinaryKernelImpl((a,b)=>a<=b?1:0),lessEqual2=binaryKernelFunc(LessEqual,lessEqualImpl,null,"bool"),lessEqualConfig={kernelName:LessEqual,backendName:"cpu",kernelFunc:lessEqual2};function linSpace(args){let{backend:backend2,attrs}=args,{start,stop,num}=attrs,outVals=linSpaceImpl(start,stop,num);return backend2.makeTensorInfo([outVals.length],"float32",outVals)}var linSpaceConfig={kernelName:LinSpace,backendName:"cpu",kernelFunc:linSpace},log1p2=unaryKernelFunc(Log1p,xi=>Math.log1p(xi)),log1pConfig={kernelName:Log1p,backendName:"cpu",kernelFunc:log1p2},logicalAndImpl=createSimpleBinaryKernelImpl((a,b)=>a&&b),logicalAnd2=binaryKernelFunc(LogicalAnd,logicalAndImpl,null,"bool"),logicalAndConfig={kernelName:LogicalAnd,backendName:"cpu",kernelFunc:logicalAnd2},logicalNot2=unaryKernelFunc(LogicalNot,xi=>xi?0:1,"bool"),logicalNotConfig={kernelName:LogicalNot,backendName:"cpu",kernelFunc:logicalNot2},logicalOrImpl=createSimpleBinaryKernelImpl((a,b)=>a||b),logicalOr2=binaryKernelFunc(LogicalOr,logicalOrImpl,null,"bool"),logicalOrConfig={kernelName:LogicalOr,backendName:"cpu",kernelFunc:logicalOr2};function lRN(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{depthRadius,bias,alpha,beta}=attrs;assertNotComplex(x,"LRN");let channels=x.shape[3],maxD=channels-1,xValues=backend2.data.get(x.dataId).values,size=util_exports.sizeFromShape(x.shape),result=new Float32Array(size);function sumAcrossChannels(offset){let currentChannel=offset%channels,beginSumOffset=offset-currentChannel+Math.max(0,currentChannel-depthRadius),endSumOffset=offset-currentChannel+Math.min(currentChannel+depthRadius,maxD),sum6=0;for(;beginSumOffset<=endSumOffset;beginSumOffset++){let z=xValues[beginSumOffset];sum6+=z*z}return sum6}for(let offset=0;offset`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad3,dimRoundingMode),res;if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))res=identity2({inputs:{x},backend:backend2});else{let xValues=backend2.data.get(x.dataId).values,strides2=util_exports.computeStrides(x.shape),buffer2=pool2(xValues,x.shape,x.dtype,strides2,convInfo,"max");res=backend2.makeTensorInfo(convInfo.outShape,x.dtype,buffer2.values)}return res}var maxPoolConfig={kernelName:MaxPool,backendName:"cpu",kernelFunc:maxPool2};function maxPool3D(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{filterSize,strides,pad:pad3,dimRoundingMode,dataFormat,dilations}=attrs;assertNotComplex(x,"maxPool3d");let $dilations=dilations;$dilations==null&&($dilations=[1,1,1]);let convInfo=backend_util_exports.computePool3DInfo(x.shape,filterSize,strides,$dilations,pad3,dimRoundingMode,dataFormat),xValues=backend2.data.get(x.dataId).values,outBuf=pool3d2(xValues,x.shape,x.dtype,util_exports.computeStrides(x.shape),convInfo,"max");return backend2.makeTensorInfo(outBuf.shape,"float32",outBuf.values)}var maxPool3DConfig={kernelName:MaxPool3D,backendName:"cpu",kernelFunc:maxPool3D};function maxPool3DGrad(args){let{inputs,backend:backend2,attrs}=args,{dy,input:input2}=inputs,{filterSize,strides,pad:pad3,dilations,dimRoundingMode}=attrs;assertNotComplex([dy,input2],"maxPool3DGrad");let convInfo=backend_util_exports.computePool3DInfo(input2.shape,filterSize,strides,dilations,pad3,dimRoundingMode),inputBuf=backend2.bufferSync(input2),maxPosBuf=maxPool3dPositions(inputBuf,convInfo),strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=effectiveFilterDepth-1-convInfo.padInfo.front,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(input2.shape,"float32"),dyBuf=backend2.bufferSync(dy);for(let batch=0;batch=convInfo.outDepth||Math.floor(dyDepth)!==dyDepth))for(let wRow=0;wRow=convInfo.outHeight||Math.floor(dyRow)!==dyRow))for(let wCol=0;wCol=convInfo.outWidth||Math.floor(dyCol)!==dyCol)continue;let maxPos=effectiveFilterDepth*effectiveFilterHeight*effectiveFilterWidth-1-maxPosBuf.get(batch,dyDepth,dyRow,dyCol,channel),curPos=wDepth*effectiveFilterHeight*effectiveFilterWidth+wRow*effectiveFilterWidth+wCol,mask=maxPos===curPos?1:0;mask!==0&&(dotProd+=dyBuf.get(batch,dyDepth,dyRow,dyCol,channel)*mask)}}}dx.set(dotProd,batch,dxDepth,dxRow,dxCol,channel)}return backend2.makeTensorInfo(dx.shape,dx.dtype,dx.values)}var maxPool3DGradConfig2={kernelName:MaxPool3DGrad,backendName:"cpu",kernelFunc:maxPool3DGrad};function maxPoolGrad2(args){let{inputs,backend:backend2,attrs}=args,{dy,input:input2,output}=inputs,x=input2;assertNotComplex([input2,output],"maxPoolGrad");let{filterSize,strides,pad:pad3,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad3,dimRoundingMode),xValues=backend2.data.get(x.dataId).values,maxPosBuf=buffer(convInfo.outShape,x.dtype,maxPoolPositions(xValues,x.shape,x.dtype,convInfo).values),strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),dyData=backend2.data.get(dy.dataId).values,dyBuf=buffer(dy.shape,"float32",dyData);for(let b=0;b=convInfo.outHeight||Math.floor(dyR)!==dyR))for(let wC=0;wC=convInfo.outWidth||Math.floor(dyC)!==dyC)continue;let maxPos=effectiveFilterHeight*effectiveFilterWidth-1-maxPosBuf.get(b,dyR,dyC,d),curPos=wR*effectiveFilterWidth+wC,mask=maxPos===curPos?1:0;mask!==0&&(dotProd+=dyBuf.get(b,dyR,dyC,d)*mask)}}dx.set(dotProd,b,dxR,dxC,d)}return backend2.makeTensorInfo(dx.shape,dx.dtype,dx.values)}var maxPoolGradConfig2={kernelName:MaxPoolGrad,backendName:"cpu",kernelFunc:maxPoolGrad2};function maxPoolWithArgmaxImpl(xValues,xShape,dtype,includeBatchInIndex,convInfo){let strides=util_exports.computeStrides(xShape),maxPools=pool2(xValues,xShape,dtype,strides,convInfo,"max"),maxPositions=maxPoolPositions(xValues,xShape,dtype,convInfo,!0,includeBatchInIndex);return[maxPools.values,maxPositions.values]}var maxPoolWithArgmaxConfig={kernelName:MaxPoolWithArgmax,backendName:"cpu",kernelFunc:({inputs,attrs,backend:backend2})=>{let{x}=inputs,{filterSize,strides,pad:pad3,includeBatchInIndex}=attrs,cpuBackend=backend2;assertNotComplex(x,"MaxPoolWithArgmax");let values=cpuBackend.data.get(x.dataId).values,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,[1,1],pad3),[pooled,indexes]=maxPoolWithArgmaxImpl(values,x.shape,x.dtype,includeBatchInIndex,convInfo),pooledDataId=cpuBackend.write(pooled,convInfo.outShape,x.dtype),indexesDataId=cpuBackend.write(indexes,convInfo.outShape,x.dtype);return[{dataId:pooledDataId,shape:convInfo.outShape,dtype:x.dtype},{dataId:indexesDataId,shape:convInfo.outShape,dtype:"int32"}]}};function sum3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{axis,keepDims}=attrs;assertNotComplex(x,"sum");let $x;x.dtype==="bool"?$x=cast3({inputs:{x},backend:backend2,attrs:{dtype:"int32"}}):$x=identity2({inputs:{x},backend:backend2});let xRank=$x.shape.length,axes=util_exports.parseAxisParam(axis,$x.shape),permutation=backend_util_exports.getAxesPermutation(axes,xRank),reductionAxes=axes,permutedX=$x;permutation!=null&&(permutedX=transpose2({inputs:{x:$x},backend:backend2,attrs:{perm:permutation}}),reductionAxes=backend_util_exports.getInnerMostAxes(reductionAxes.length,xRank)),backend_util_exports.assertAxesAreInnerMostDims("sum",reductionAxes,permutedX.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(permutedX.shape,reductionAxes),resultDtype=backend_util_exports.upcastType(permutedX.dtype,"int32"),result=zeros3(backend2,outShape,resultDtype),reduceSize=util_exports.sizeFromShape(reduceShape),vals=backend2.data.get(result.dataId).values,aVals=backend2.data.get(permutedX.dataId).values;for(let i=0;ibackend2.disposeIntermediateTensorInfo(t)),result}var meanConfig={kernelName:Mean,backendName:"cpu",kernelFunc:mean2};function min3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{axis,keepDims}=attrs;assertNotComplex(x,"min");let origAxes=util_exports.parseAxisParam(axis,x.shape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,x.shape.length),$x=x;permutedAxes!=null&&($x=transpose2({inputs:{x},backend:backend2,attrs:{perm:permutedAxes}}),axes=backend_util_exports.getInnerMostAxes(axes.length,x.shape.length)),backend_util_exports.assertAxesAreInnerMostDims("min",axes,$x.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes($x.shape,axes),reduceSize=util_exports.sizeFromShape(reduceShape),vals=util_exports.makeZerosTypedArray(util_exports.sizeFromShape(outShape),$x.dtype),aVals=backend2.data.get($x.dataId).values;for(let i=0;ip2[0]+x.shape[i]+p2[1]),start=paddings.map(p2=>p2[0]),end=paddings.map((p2,i)=>p2[0]+x.shape[i]),offset=mode==="reflect"?0:1,xVals=backend2.data.get(x.dataId).values,xRank=x.shape.length,xStrides=util_exports.computeStrides(x.shape),resultSize=util_exports.sizeFromShape(outShape),resultRank=outShape.length,resultStrides=util_exports.computeStrides(outShape),resVals=util_exports.getTypedArrayFromDType(x.dtype,resultSize);for(let i=0;i=end[i2]&&(coords2[i2]=(end[i2]-1)*2-coords2[i2]+offset);coords2=coords2.map((c,i2)=>c-start[i2]);let inIndex=util_exports.locToIndex(coords2,xRank,xStrides);resVals[i]=xVals[inIndex]}return{dataId:backend2.write(resVals,outShape,x.dtype),shape:outShape,dtype:x.dtype}}var mirrorPadConfig={kernelName:MirrorPad,backendName:"cpu",kernelFunc:mirrorPad2},modImpl=createSimpleBinaryKernelImpl((aValue,bValue)=>{let rem=aValue%bValue;return aValue<0&&bValue<0||aValue>=0&&bValue>=0?rem:(rem+bValue)%bValue}),mod2=binaryKernelFunc(Mod,modImpl),modConfig={kernelName:Mod,backendName:"cpu",kernelFunc:mod2},seedrandom4=__toModule2(require_seedrandom2());function softmax3(args){let{inputs,backend:backend2,attrs}=args,{logits}=inputs,{dim}=attrs,logitsRank=logits.shape.length,$dim=dim;if($dim===-1&&($dim=logitsRank-1),$dim!==logitsRank-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${logitsRank} and dim was ${$dim}`);let axes=util_exports.parseAxisParam([$dim],logits.shape),maxLogit=max3({inputs:{x:logits},backend:backend2,attrs:{reductionIndices:axes,keepDims:!1}}),expandedShape=backend_util_exports.expandShapeToKeepDim(maxLogit.shape,axes),maxLogitReshaped=reshape3({inputs:{x:maxLogit},backend:backend2,attrs:{shape:expandedShape}}),a=sub2({inputs:{a:logits,b:maxLogitReshaped},backend:backend2}),b=exp2({inputs:{x:a},backend:backend2}),sumExp=sum3({inputs:{x:b},backend:backend2,attrs:{axis:axes,keepDims:!1}}),sumReshaped=reshape3({inputs:{x:sumExp},backend:backend2,attrs:{shape:expandedShape}}),result=div2({inputs:{a:b,b:sumReshaped},backend:backend2});return backend2.disposeIntermediateTensorInfo(maxLogit),backend2.disposeIntermediateTensorInfo(maxLogitReshaped),backend2.disposeIntermediateTensorInfo(a),backend2.disposeIntermediateTensorInfo(b),backend2.disposeIntermediateTensorInfo(sumExp),backend2.disposeIntermediateTensorInfo(sumReshaped),result}var softmaxConfig={kernelName:Softmax,backendName:"cpu",kernelFunc:softmax3};function multinomial2(args){let{inputs,backend:backend2,attrs}=args,{logits}=inputs,{numSamples,seed,normalized}=attrs;assertNotComplex(logits,"multinomial");let probabilities=normalized?logits:softmax3({inputs:{logits},backend:backend2,attrs:{dim:-1}}),batchSize=probabilities.shape[0],numEvents=probabilities.shape[1],probVals=backend2.data.get(probabilities.dataId).values,resShape=[batchSize,numSamples],resVals=util_exports.makeZerosTypedArray(util_exports.sizeFromShape(resShape),"int32");for(let b=0;b=0&&indicesVal[event]{util_exports.assertShapesMatch(shape,t.shape,"All tensors passed to stack must have matching shapes"),util_exports.assert(dtype===t.dtype,()=>"All tensors passed to stack must have matching dtypes")});let intermediateTensorInfos=[],expandedTensors=inputs.map(t=>{let expandedT=expandDims3({inputs:{input:t},backend:backend2,attrs:{dim:axis}});return intermediateTensorInfos.push(expandedT),expandedT}),result=concat2({inputs:expandedTensors,backend:backend2,attrs:{axis}});return intermediateTensorInfos.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),result}var packConfig={kernelName:Pack,backendName:"cpu",kernelFunc:pack};function padV2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{paddings,constantValue}=attrs;assertNotComplex(x,"pad");let outShape=paddings.map((p2,i)=>p2[0]+x.shape[i]+p2[1]),start=paddings.map(p2=>p2[0]),xVals=backend2.data.get(x.dataId).values,xSize=util_exports.sizeFromShape(x.shape),xRank=x.shape.length,xStrides=util_exports.computeStrides(x.shape),resultSize=util_exports.sizeFromShape(outShape),resultRank=outShape.length,resultStrides=util_exports.computeStrides(outShape),resVals=util_exports.getTypedArrayFromDType(x.dtype,resultSize);constantValue!==0&&resVals.fill(constantValue);for(let i=0;ic+start[i2]),outIndex=util_exports.locToIndex(outCoords,resultRank,resultStrides);resVals[outIndex]=xVals[i]}return{dataId:backend2.write(resVals,outShape,x.dtype),shape:outShape,dtype:x.dtype}}var padV2Config={kernelName:PadV2,backendName:"cpu",kernelFunc:padV2},powImpl=createSimpleBinaryKernelImpl((a,b)=>Math.pow(a,b)),pow2=binaryKernelFunc(Pow,powImpl),powConfig={kernelName:Pow,backendName:"cpu",kernelFunc:pow2};function range3(args){let{backend:backend2,attrs}=args,{start,stop,dtype,step:step4}=attrs,values=rangeImpl(start,stop,step4,dtype);return backend2.makeTensorInfo([values.length],dtype,values)}var rangeConfig={kernelName:Range,backendName:"cpu",kernelFunc:range3},reciprocal2=unaryKernelFunc(Reciprocal,xi=>1/xi),reciprocalConfig={kernelName:Reciprocal,backendName:"cpu",kernelFunc:reciprocal2};function resizeBilinear2(args){let{inputs,backend:backend2,attrs}=args,{images}=inputs,{alignCorners,halfPixelCenters,size}=attrs;assertNotComplex(images,"resizeBilinear");let imagesStrides=util_exports.computeStrides(images.shape),[newHeight,newWidth]=size,[batch,oldHeight,oldWidth,numChannels]=images.shape,xValues=backend2.data.get(images.dataId).values,result=new Float32Array(util_exports.sizeFromShape([batch,newHeight,newWidth,numChannels])),effectiveInputSize=[alignCorners&&newHeight>1?oldHeight-1:oldHeight,alignCorners&&newWidth>1?oldWidth-1:oldWidth],effectiveOutputSize=[alignCorners&&newHeight>1?newHeight-1:newHeight,alignCorners&&newWidth>1?newWidth-1:newWidth],outputIdx=0,effectiveRowSizeRatio=effectiveInputSize[0]/effectiveOutputSize[0],effectiveColSizeRatio=effectiveInputSize[1]/effectiveOutputSize[1];for(let b=0;b1?xHeight-1:xHeight,alignCorners&&yWidth>1?xWidth-1:xWidth],effectiveYSize=[alignCorners&&yHeight>1?yHeight-1:yHeight,alignCorners&&yWidth>1?yWidth-1:yWidth],heightScale=effectiveXSize[0]/effectiveYSize[0],widthScale=effectiveXSize[1]/effectiveYSize[1],dyValues=backend2.data.get(dy.dataId).values,offset=0;for(let b=0;b1?oldHeight-1:oldHeight,alignCorners&&newWidth>1?oldWidth-1:oldWidth],effectiveOutputSize=[alignCorners&&newHeight>1?newHeight-1:newHeight,alignCorners&&newWidth>1?newWidth-1:newWidth],effectiveRowSizeRatio=effectiveInputSize[0]/effectiveOutputSize[0],effectiveColSizeRatio=effectiveInputSize[1]/effectiveOutputSize[1],outputOffset=0;for(let b=0;b1?xHeight-1:xHeight,alignCorners&&yWidth>1?xWidth-1:xWidth],effectiveYSize=[alignCorners&&yHeight>1?yHeight-1:yHeight,alignCorners&&yWidth>1?yWidth-1:yWidth],heightScale=effectiveXSize[0]/effectiveYSize[0],widthScale=effectiveXSize[1]/effectiveYSize[1],invHeightScale=1/heightScale,invWidthScale=1/widthScale,winHeight=Math.ceil(invHeightScale)*2+2,winWidth=Math.ceil(invWidthScale)*2+2;for(let b=0;b=yHeight)continue;let dyROffset=batchOffset+dyR*dyStrides[1],sourceFracRow=dyR*heightScale,sourceNearestRow=Math.min(xHeight-1,alignCorners?Math.round(sourceFracRow):Math.floor(sourceFracRow));if(r===sourceNearestRow)for(let dyCIndex=0;dyCIndex=yWidth)continue;let dyCOffset=dyROffset+dyC*dyStrides[2],sourceFracCol=dyC*widthScale,sourceNearestCol=Math.min(xWidth-1,alignCorners?Math.round(sourceFracCol):Math.floor(sourceFracCol));c===sourceNearestCol&&(accum+=dyValues[dyCOffset+d])}}output[colOffset+d]=accum}}}}return backend2.makeTensorInfo(images.shape,images.dtype,output)}var resizeNearestNeighborGradConfig2={kernelName:ResizeNearestNeighborGrad,backendName:"cpu",kernelFunc:resizeNearestNeighborGrad};function reverse2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{dims}=attrs;assertNotComplex(x,"reverse");let xRank=x.shape.length,$dims=util_exports.parseAxisParam(dims,x.shape);if(xRank===0)return identity2({inputs:{x},backend:backend2});let outBuf=new TensorBuffer(x.shape,x.dtype),xBuf=backend2.bufferSync(x);for(let i=0;iinLoc[d]=x.shape[d]-1-inLoc[d]),outBuf.set(xBuf.get(...inLoc),...outLoc)}return backend2.makeTensorInfo(outBuf.shape,outBuf.dtype,outBuf.values)}var reverseConfig={kernelName:Reverse,backendName:"cpu",kernelFunc:reverse2},rotateWithOffsetConfig={kernelName:RotateWithOffset,backendName:"cpu",kernelFunc:({inputs,attrs,backend:backend2})=>{let{image:image3}=inputs,{radians,fillValue,center}=attrs,cpuBackend=backend2,output=util_exports.getTypedArrayFromDType(image3.dtype,util_exports.sizeFromShape(image3.shape)),[batch,imageHeight,imageWidth,numChannels]=image3.shape,[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),fullOpacityValue=255,sinFactor=Math.sin(radians),cosFactor=Math.cos(radians),imageVals=cpuBackend.data.get(image3.dataId).values;for(let batchIdx=0;batchIdx=0&&coordX=0&&coordY{let base2=Math.floor(xi);return xi-base2<.5?Math.floor(xi):xi-base2>.5?Math.ceil(xi):base2%2==0?base2:base2+1}),roundConfig={kernelName:Round,backendName:"cpu",kernelFunc:round3};function scatterImpl(indices,updates,shape,outputSize,sliceSize,numUpdates,sliceRank,strides,defaultValue,sumDupeIndices){let flattenShape=[outputSize/sliceSize,sliceSize],indicesData=indices.values,updatesData=updates.values;if(outputSize===0)return buffer(shape,updates.dtype);let outBuf=buffer(flattenShape,updates.dtype);outBuf.values.fill(defaultValue);for(let i=0;i=outputSize/sliceSize)throw new Error(`Invalid indices: ${index} does not index into ${shape}`);for(let k=0;k1||t.shape.length===1?1:util_exports.sizeFromShape(t.shape.slice(1));for(let i=0;ixi>=0?scale*xi:scaleAlpha*(Math.exp(xi)-1)),seluConfig={kernelName:Selu,backendName:"cpu",kernelFunc:selu2},sigmoid2=unaryKernelFunc(Sigmoid,xi=>1/(1+Math.exp(-xi))),sigmoidConfig={kernelName:Sigmoid,backendName:"cpu",kernelFunc:sigmoid2},sign2=unaryKernelFunc(Sign,xi=>xi<0?-1:xi>0?1:0),signConfig={kernelName:Sign,backendName:"cpu",kernelFunc:sign2},sin2=unaryKernelFunc(Sin,xi=>Math.sin(xi)),sinConfig={kernelName:Sin,backendName:"cpu",kernelFunc:sin2},sinh2=unaryKernelFunc(Sinh,xi=>Math.sinh(xi)),sinhConfig={kernelName:Sinh,backendName:"cpu",kernelFunc:sinh2},epsilon2=11920928955078125e-23,threshold=Math.log(epsilon2)+2,softplus2=unaryKernelFunc(Softplus,xi=>{let tooLarge=xi>-threshold,tooSmall=xi{let sliceSize=[...size];sliceSize[$axis]=s;let sliceT=slice2({inputs:{x},backend:backend2,attrs:{begin,size:sliceSize}});return begin[$axis]+=s,sliceT})}var splitVConfig={kernelName:SplitV,backendName:"cpu",kernelFunc:splitV},sqrt2=unaryKernelFunc(Sqrt,xi=>Math.sqrt(xi)),sqrtConfig={kernelName:Sqrt,backendName:"cpu",kernelFunc:sqrt2},squareConfig={kernelName:Square,backendName:"cpu",kernelFunc:({inputs,backend:backend2})=>{let{x}=inputs,cpuBackend=backend2;assertNotComplex(x,"square");let values=cpuBackend.data.get(x.dataId).values,newValues=new Float32Array(values.length);for(let i=0;i{let stepAttrs=attrs;return isNaN(xi)?NaN:xi>0?1:stepAttrs.alpha}),stepConfig={kernelName:Step,backendName:"cpu",kernelFunc:step2};function stridedSlice2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask}=attrs;assertNotComplex(x,"stridedSlice");let{nonStrided,$begin,$strides,size,newShape,outShape}=slice_util_exports.sliceInfo(x.shape,begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask),$x=reshape3({inputs:{x},backend:backend2,attrs:{shape:newShape}}),result;if(nonStrided){let sliced=slice2({inputs:{x:$x},backend:backend2,attrs:{begin:$begin,size}});result=reshape3({inputs:{x:sliced},backend:backend2,attrs:{shape:outShape}}),backend2.disposeIntermediateTensorInfo(sliced)}else if(outShape.some(axis=>axis===0))result=backend2.makeTensorInfo(outShape,x.dtype,[]);else{let xBuf=backend2.bufferSync($x),outBuf=stridedSliceImpl(outShape,xBuf,$strides,$begin);result=backend2.makeTensorInfo(outBuf.shape,outBuf.dtype,outBuf.values)}let resultReshaped=reshape3({inputs:{x:result},backend:backend2,attrs:{shape:outShape}});return backend2.disposeIntermediateTensorInfo($x),backend2.disposeIntermediateTensorInfo(result),resultReshaped}var stridedSliceConfig={kernelName:StridedSlice,backendName:"cpu",kernelFunc:stridedSlice2},tan2=unaryKernelFunc(Tan,xi=>Math.tan(xi)),tanConfig={kernelName:Tan,backendName:"cpu",kernelFunc:tan2},tanh3=unaryKernelFunc(Tanh,xi=>Math.tanh(xi)),tanhConfig={kernelName:Tanh,backendName:"cpu",kernelFunc:tanh3};function tile3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{reps}=attrs;assertNotComplex(x,"tile");let outBuf=tileImpl(backend2.bufferSync(x),reps);return backend2.makeTensorInfo(outBuf.shape,outBuf.dtype,outBuf.values)}var tileConfig={kernelName:Tile,backendName:"cpu",kernelFunc:tile3};function topK(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{k,sorted}=attrs;assertNotComplex(x,"topk");let xVals=backend2.data.get(x.dataId).values,[allTopKVals,allTopKIndices]=topKImpl(xVals,x.shape,x.dtype,k,sorted);return[backend2.makeTensorInfo(allTopKVals.shape,allTopKVals.dtype,allTopKVals.values),backend2.makeTensorInfo(allTopKIndices.shape,allTopKIndices.dtype,allTopKIndices.values)]}var topKConfig={kernelName:TopK,backendName:"cpu",kernelFunc:topK};function unique3(args){let{inputs,attrs,backend:backend2}=args,{axis}=attrs,{x}=inputs;assertNotComplex(x,"unique");let values=backend2.data.get(x.dataId).values,{outputValues,outputShape,indices}=uniqueImpl(values,axis,x.shape,x.dtype);return[backend2.makeTensorInfo(outputShape,x.dtype,outputValues),backend2.makeTensorInfo([indices.length],"int32",indices)]}var uniqueConfig={kernelName:Unique,backendName:"cpu",kernelFunc:unique3};function unpack(args){let{inputs,backend:backend2,attrs}=args,{value}=inputs,{axis}=attrs;axis<0&&(axis+=value.shape.length);let valueRank=value.shape.length,num=value.shape[axis],outShape=new Array(valueRank-1),outIndex=0;for(let i=0;ibackend2.disposeIntermediateTensorInfo(t)),result}var unsortedSegmentSumConfig={kernelName:UnsortedSegmentSum,backendName:"cpu",kernelFunc:unsortedSegmentSum2},kernelConfigs=[_fusedMatMulConfig,absConfig,acosConfig,acoshConfig,addConfig,addNConfig,allConfig,anyConfig,argMaxConfig,argMinConfig,asinConfig,asinhConfig,atanConfig,atan2Config,atanhConfig,avgPoolConfig,avgPool3DConfig,avgPool3DGradConfig2,avgPoolGradConfig2,batchMatMulConfig,batchNormConfig,batchToSpaceNDConfig,bincountConfig,castConfig,ceilConfig,clipConfig,complexConfig,complexAbsConfig,concatConfig,conv2DBackpropFilterConfig,conv2DBackpropInputConfig,conv2DConfig,conv3DBackpropFilterV2Config,conv3DBackpropInputV2Config,conv3DConfig,cosConfig,coshConfig,cropAndResizeConfig,cumsumConfig,denseBincountConfig,depthToSpaceConfig,depthwiseConv2dNativeConfig,depthwiseConv2dNativeBackpropFilterConfig,depthwiseConv2dNativeBackpropInputConfig,diagConfig,dilation2dConfig,dilation2dBackpropInputConfig,dilation2dBackpropFilterConfig,realDivConfig,eluConfig,eluGradConfig2,equalConfig,erfConfig,expConfig,expandDimsConfig,expm1Config,fftConfig,fillConfig,flipLeftRightConfig,floorConfig,floorDivConfig,fusedConv2DConfig,fusedDepthwiseConv2DConfig,gatherNdConfig,gatherV2Config,greaterConfig,greaterEqualConfig,identityConfig,ifftConfig,imagConfig,isFiniteConfig,isInfConfig,isNaNConfig,leakyReluConfig,lessConfig,lessEqualConfig,linSpaceConfig,logConfig,log1pConfig,logicalAndConfig,logicalNotConfig,logicalOrConfig,lRNConfig,lRNGradConfig,maximumConfig,maxPoolConfig,maxPool3DConfig,maxPool3DGradConfig2,maxPoolGradConfig2,maxPoolWithArgmaxConfig,maxConfig,meanConfig,minConfig,minimumConfig,mirrorPadConfig,modConfig,multinomialConfig,multiplyConfig,negConfig,nonMaxSuppressionV3Config,nonMaxSuppressionV4Config,nonMaxSuppressionV5Config,notEqualConfig,oneHotConfig,onesLikeConfig,packConfig,padV2Config,powConfig,preluConfig,prodConfig,rangeConfig,realConfig,reciprocalConfig,reluConfig,relu6Config,reshapeConfig,resizeBilinearConfig,resizeBilinearGradConfig2,resizeNearestNeighborConfig,resizeNearestNeighborGradConfig2,reverseConfig,rotateWithOffsetConfig,roundConfig,rsqrtConfig,scatterNdConfig,selectConfig,seluConfig,sigmoidConfig,signConfig,sinConfig,sinhConfig,sliceConfig,softmaxConfig,softplusConfig,spaceToBatchNDConfig,sparseToDenseConfig,splitVConfig,sqrtConfig,squareConfig,squaredDifferenceConfig,stepConfig,stridedSliceConfig,subConfig,sumConfig,tanConfig,tanhConfig,tileConfig,topKConfig,transposeConfig,uniqueConfig,unpackConfig,unsortedSegmentSumConfig,zerosLikeConfig];for(let kernelConfig of kernelConfigs)registerKernel(kernelConfig);var contexts={},WEBGL_ATTRIBUTES={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function setWebGLContext(webGLVersion,gl){contexts[webGLVersion]=gl}function getWebGLContext(webGLVersion){if(!(webGLVersion in contexts)){let newCtx=getWebGLRenderingContext(webGLVersion);if(newCtx!==null)contexts[webGLVersion]=newCtx;else return console.log("Could not get context for WebGL version",webGLVersion),null}let gl=contexts[webGLVersion];return gl.isContextLost()?(delete contexts[webGLVersion],getWebGLContext(webGLVersion)):(gl.disable(gl.DEPTH_TEST),gl.disable(gl.STENCIL_TEST),gl.disable(gl.BLEND),gl.disable(gl.DITHER),gl.disable(gl.POLYGON_OFFSET_FILL),gl.disable(gl.SAMPLE_COVERAGE),gl.enable(gl.SCISSOR_TEST),gl.enable(gl.CULL_FACE),gl.cullFace(gl.BACK),contexts[webGLVersion])}function createCanvas(webGLVersion){if(typeof OffscreenCanvas!="undefined"&&webGLVersion===2)return new OffscreenCanvas(300,150);if(typeof document!="undefined")return document.createElement("canvas");throw new Error("Cannot create a canvas in this context")}function getWebGLRenderingContext(webGLVersion){if(webGLVersion!==1&&webGLVersion!==2)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");let canvas=createCanvas(webGLVersion);return canvas.addEventListener("webglcontextlost",ev=>{ev.preventDefault(),delete contexts[webGLVersion]},!1),webGLVersion===1?canvas.getContext("webgl",WEBGL_ATTRIBUTES)||canvas.getContext("experimental-webgl",WEBGL_ATTRIBUTES):canvas.getContext("webgl2",WEBGL_ATTRIBUTES)}var PackingScheme;(function(PackingScheme2){PackingScheme2[PackingScheme2.DENSE=0]="DENSE",PackingScheme2[PackingScheme2.SHARED_BATCH=1]="SHARED_BATCH"})(PackingScheme||(PackingScheme={}));var TextureUsage;(function(TextureUsage2){TextureUsage2[TextureUsage2.RENDER=0]="RENDER",TextureUsage2[TextureUsage2.UPLOAD=1]="UPLOAD",TextureUsage2[TextureUsage2.PIXELS=2]="PIXELS",TextureUsage2[TextureUsage2.DOWNLOAD=3]="DOWNLOAD"})(TextureUsage||(TextureUsage={}));var PhysicalTextureType;(function(PhysicalTextureType2){PhysicalTextureType2[PhysicalTextureType2.UNPACKED_FLOAT16=0]="UNPACKED_FLOAT16",PhysicalTextureType2[PhysicalTextureType2.UNPACKED_FLOAT32=1]="UNPACKED_FLOAT32",PhysicalTextureType2[PhysicalTextureType2.PACKED_4X1_UNSIGNED_BYTE=2]="PACKED_4X1_UNSIGNED_BYTE",PhysicalTextureType2[PhysicalTextureType2.PACKED_2X2_FLOAT32=3]="PACKED_2X2_FLOAT32",PhysicalTextureType2[PhysicalTextureType2.PACKED_2X2_FLOAT16=4]="PACKED_2X2_FLOAT16"})(PhysicalTextureType||(PhysicalTextureType={}));function getUnpackedMatrixTextureShapeWidthHeight(rows,columns){return[columns,rows]}function getUnpackedArraySizeFromMatrixSize(matrixSize,channelsPerTexture){return matrixSize*channelsPerTexture}function getDenseTexShape(shape){let size=util_exports.sizeFromShape(shape),texelsNeeded=Math.ceil(size/4);return util_exports.sizeToSquarishShape(texelsNeeded)}function getPackedMatrixTextureShapeWidthHeight(rows,columns){return[Math.max(1,Math.ceil(columns/2)),Math.max(1,Math.ceil(rows/2))]}function getPackedRGBAArraySizeFromMatrixShape(rows,columns){let[w,h]=getPackedMatrixTextureShapeWidthHeight(rows,columns);return w*h*4}function getTextureConfig(gl,textureHalfFloatExtension){let glany=gl,internalFormatFloat,internalFormatHalfFloat,internalFormatPackedHalfFloat,internalFormatPackedFloat,textureFormatFloat,downloadTextureFormat,downloadUnpackNumChannels,defaultNumChannels,textureTypeHalfFloat,textureTypeFloat;return env().getNumber("WEBGL_VERSION")===2?(internalFormatFloat=glany.R32F,internalFormatHalfFloat=glany.R16F,internalFormatPackedHalfFloat=glany.RGBA16F,internalFormatPackedFloat=glany.RGBA32F,textureFormatFloat=glany.RED,downloadUnpackNumChannels=4,defaultNumChannels=1,textureTypeHalfFloat=glany.HALF_FLOAT,textureTypeFloat=glany.FLOAT):(internalFormatFloat=gl.RGBA,internalFormatHalfFloat=gl.RGBA,internalFormatPackedHalfFloat=gl.RGBA,internalFormatPackedFloat=glany.RGBA,textureFormatFloat=gl.RGBA,downloadUnpackNumChannels=4,defaultNumChannels=4,textureTypeHalfFloat=textureHalfFloatExtension!=null?textureHalfFloatExtension.HALF_FLOAT_OES:null,textureTypeFloat=gl.FLOAT),downloadTextureFormat=gl.RGBA,{internalFormatFloat,internalFormatHalfFloat,internalFormatPackedHalfFloat,internalFormatPackedFloat,textureFormatFloat,downloadTextureFormat,downloadUnpackNumChannels,defaultNumChannels,textureTypeHalfFloat,textureTypeFloat}}function callAndCheck(gl,func2){let returnValue=func2();return env().getBool("DEBUG")&&checkWebGLError(gl),returnValue}function checkWebGLError(gl){let error=gl.getError();if(error!==gl.NO_ERROR)throw new Error("WebGL Error: "+getWebGLErrorMessage(gl,error))}var MIN_FLOAT16=596e-10,MAX_FLOAT16=65504;function canBeRepresented(num){return!!(env().getBool("WEBGL_RENDER_FLOAT32_ENABLED")||num===0||MIN_FLOAT16gl.getExtension(extensionName),'Extension "'+extensionName+'" not supported on this browser.')}function createVertexShader(gl,vertexShaderSource){let vertexShader=throwIfNull(gl,()=>gl.createShader(gl.VERTEX_SHADER),"Unable to create vertex WebGLShader.");if(callAndCheck(gl,()=>gl.shaderSource(vertexShader,vertexShaderSource)),callAndCheck(gl,()=>gl.compileShader(vertexShader)),gl.getShaderParameter(vertexShader,gl.COMPILE_STATUS)===!1)throw console.log(gl.getShaderInfoLog(vertexShader)),new Error("Failed to compile vertex shader.");return vertexShader}function createFragmentShader(gl,fragmentShaderSource){let fragmentShader=throwIfNull(gl,()=>gl.createShader(gl.FRAGMENT_SHADER),"Unable to create fragment WebGLShader.");if(callAndCheck(gl,()=>gl.shaderSource(fragmentShader,fragmentShaderSource)),callAndCheck(gl,()=>gl.compileShader(fragmentShader)),gl.getShaderParameter(fragmentShader,gl.COMPILE_STATUS)===!1)throw logShaderSourceAndInfoLog(fragmentShaderSource,gl.getShaderInfoLog(fragmentShader)),new Error("Failed to compile fragment shader.");return fragmentShader}var lineNumberRegex=/ERROR: [0-9]+:([0-9]+):/g;function logShaderSourceAndInfoLog(shaderSource,shaderInfoLog){let lineNumberRegexResult=lineNumberRegex.exec(shaderInfoLog);if(lineNumberRegexResult==null){console.log(`Couldn't parse line number in error: ${shaderInfoLog}`),console.log(shaderSource);return}let lineNumber=+lineNumberRegexResult[1],shaderLines=shaderSource.split(` -`),pad3=shaderLines.length.toString().length+2,linesWithLineNumbers=shaderLines.map((line,lineNumber2)=>util_exports.rightPad((lineNumber2+1).toString(),pad3)+line),maxLineLength=0;for(let i=0;igl.createProgram(),"Unable to create WebGLProgram.")}function linkProgram(gl,program){if(callAndCheck(gl,()=>gl.linkProgram(program)),gl.getProgramParameter(program,gl.LINK_STATUS)===!1)throw console.log(gl.getProgramInfoLog(program)),new Error("Failed to link vertex and fragment shaders.")}function validateProgram(gl,program){if(callAndCheck(gl,()=>gl.validateProgram(program)),gl.getProgramParameter(program,gl.VALIDATE_STATUS)===!1)throw console.log(gl.getProgramInfoLog(program)),new Error("Shader program validation failed.")}function createStaticVertexBuffer(gl,data){let buffer2=throwIfNull(gl,()=>gl.createBuffer(),"Unable to create WebGLBuffer");return callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,buffer2)),callAndCheck(gl,()=>gl.bufferData(gl.ARRAY_BUFFER,data,gl.STATIC_DRAW)),buffer2}function createStaticIndexBuffer(gl,data){let buffer2=throwIfNull(gl,()=>gl.createBuffer(),"Unable to create WebGLBuffer");return callAndCheck(gl,()=>gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,buffer2)),callAndCheck(gl,()=>gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,data,gl.STATIC_DRAW)),buffer2}function createTexture(gl){return throwIfNull(gl,()=>gl.createTexture(),"Unable to create WebGLTexture.")}function validateTextureSize(width,height){let maxTextureSize=env().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(width<=0||height<=0){let requested=`[${width}x${height}]`;throw new Error("Requested texture size "+requested+" is invalid.")}if(width>maxTextureSize||height>maxTextureSize){let requested=`[${width}x${height}]`,max6=`[${maxTextureSize}x${maxTextureSize}]`;throw new Error("Requested texture size "+requested+" greater than WebGL maximum on this browser / GPU "+max6+".")}}function createFramebuffer(gl){return throwIfNull(gl,()=>gl.createFramebuffer(),"Unable to create WebGLFramebuffer.")}function bindVertexBufferToProgramAttribute(gl,program,attribute,buffer2,arrayEntriesPerItem,itemStrideInBytes,itemOffsetInBytes){let loc=gl.getAttribLocation(program,attribute);return loc===-1?!1:(callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,buffer2)),callAndCheck(gl,()=>gl.vertexAttribPointer(loc,arrayEntriesPerItem,gl.FLOAT,!1,itemStrideInBytes,itemOffsetInBytes)),callAndCheck(gl,()=>gl.enableVertexAttribArray(loc)),!0)}function bindTextureUnit(gl,texture,textureUnit){validateTextureUnit(gl,textureUnit),callAndCheck(gl,()=>gl.activeTexture(gl.TEXTURE0+textureUnit)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,texture))}function getProgramUniformLocationOrThrow(gl,program,uniformName){return throwIfNull(gl,()=>gl.getUniformLocation(program,uniformName),'uniform "'+uniformName+'" not present in program.')}function getProgramUniformLocation(gl,program,uniformName){return gl.getUniformLocation(program,uniformName)}function bindTextureToProgramUniformSampler(gl,texture,uniformSamplerLocation,textureUnit){callAndCheck(gl,()=>bindTextureUnit(gl,texture,textureUnit)),callAndCheck(gl,()=>gl.uniform1i(uniformSamplerLocation,textureUnit))}function bindColorTextureToFramebuffer(gl,texture,framebuffer){callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,framebuffer)),callAndCheck(gl,()=>gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0))}function unbindColorTextureFromFramebuffer(gl,framebuffer){callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,framebuffer)),callAndCheck(gl,()=>gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,null,0))}function validateFramebuffer(gl){let status=gl.checkFramebufferStatus(gl.FRAMEBUFFER);if(status!==gl.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+getFramebufferErrorMessage(gl,status))}function getFramebufferErrorMessage(gl,status){switch(status){case gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case gl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case gl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case gl.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return`unknown error ${status}`}}function throwIfNull(gl,returnTOrNull,failureMessage){let tOrNull=callAndCheck(gl,()=>returnTOrNull());if(tOrNull==null)throw new Error(failureMessage);return tOrNull}function validateTextureUnit(gl,textureUnit){let maxTextureUnit=gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,glTextureUnit=textureUnit+gl.TEXTURE0;if(glTextureUnitmaxTextureUnit){let textureUnitRange=`[gl.TEXTURE0, gl.TEXTURE${maxTextureUnit}]`;throw new Error(`textureUnit must be in ${textureUnitRange}.`)}}function getBatchDim(shape,dimsToSkip=2){return util_exports.sizeFromShape(shape.slice(0,shape.length-dimsToSkip))}function getRowsCols(shape){if(shape.length===0)throw Error("Cannot get rows and columns of an empty shape array.");return[shape.length>1?shape[shape.length-2]:1,shape[shape.length-1]]}function getShapeAs3D(shape){let shapeAs3D=[1,1,1];return shape.length===0||shape.length===1&&shape[0]===1||(shapeAs3D=[getBatchDim(shape),...getRowsCols(shape)]),shapeAs3D}function getTextureShapeFromLogicalShape(logShape,isPacked=!1){let maxTexSize=env().getNumber("WEBGL_MAX_TEXTURE_SIZE");isPacked&&(maxTexSize=maxTexSize*2,logShape=logShape.map((d,i)=>i>=logShape.length-2?util_exports.nearestLargerEven(logShape[i]):logShape[i]),logShape.length===1&&(logShape=[2,logShape[0]])),logShape.length!==2&&(logShape=util_exports.squeezeShape(logShape).newShape);let size=util_exports.sizeFromShape(logShape);if(logShape.length<=1&&size<=maxTexSize)return[1,size];if(logShape.length===2&&logShape[0]<=maxTexSize&&logShape[1]<=maxTexSize)return logShape;if(logShape.length===3&&logShape[0]*logShape[1]<=maxTexSize&&logShape[2]<=maxTexSize)return[logShape[0]*logShape[1],logShape[2]];if(logShape.length===3&&logShape[0]<=maxTexSize&&logShape[1]*logShape[2]<=maxTexSize)return[logShape[0],logShape[1]*logShape[2]];if(logShape.length===4&&logShape[0]*logShape[1]*logShape[2]<=maxTexSize&&logShape[3]<=maxTexSize)return[logShape[0]*logShape[1]*logShape[2],logShape[3]];if(logShape.length===4&&logShape[0]<=maxTexSize&&logShape[1]*logShape[2]*logShape[3]<=maxTexSize)return[logShape[0],logShape[1]*logShape[2]*logShape[3]];if(isPacked){let batchDim=getBatchDim(logShape),rows=2,cols=2;return logShape.length&&([rows,cols]=getRowsCols(logShape)),size=batchDim*(rows/2)*(cols/2),util_exports.sizeToSquarishShape(size).map(d=>d*2)}return util_exports.sizeToSquarishShape(size)}function isEven(n){return n%2==0}function isReshapeFree(shape1,shape2){if(shape1=shape1.slice(-2),shape2=shape2.slice(-2),util_exports.arraysEqual(shape1,shape2)||!shape1.length||!shape2.length||shape1[0]===0||shape1[1]===0||shape2[0]===0||shape2[1]===0)return!0;if(shape1.length!==shape2.length){let shape1Cols=shape1.slice(-1)[0],shape2Cols=shape2.slice(-1)[0];if(shape1Cols===shape2Cols||isEven(shape1Cols)&&isEven(shape2Cols)&&(shape1[0]===1||shape2[0]===1))return!0}return shape1[1]===shape2[1]&&isEven(shape1[0])&&isEven(shape2[0])}var MAX_TEXTURE_SIZE,MAX_TEXTURES_IN_SHADER;function getWebGLMaxTextureSize(webGLVersion){if(MAX_TEXTURE_SIZE==null){let gl=getWebGLContext(webGLVersion);MAX_TEXTURE_SIZE=gl.getParameter(gl.MAX_TEXTURE_SIZE)}return MAX_TEXTURE_SIZE}function getMaxTexturesInShader(webGLVersion){if(MAX_TEXTURES_IN_SHADER==null){let gl=getWebGLContext(webGLVersion);MAX_TEXTURES_IN_SHADER=gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,MAX_TEXTURES_IN_SHADER)}function getWebGLDisjointQueryTimerVersion(webGLVersion){if(webGLVersion===0)return 0;let queryTimerVersion,gl=getWebGLContext(webGLVersion);return hasExtension(gl,"EXT_disjoint_timer_query_webgl2")&&webGLVersion===2?queryTimerVersion=2:hasExtension(gl,"EXT_disjoint_timer_query")?queryTimerVersion=1:queryTimerVersion=0,queryTimerVersion}function hasExtension(gl,extensionName){return gl.getExtension(extensionName)!=null}function isWebGLVersionEnabled(webGLVersion){try{if(getWebGLContext(webGLVersion)!=null)return!0}catch(e){return console.log("Error when getting WebGL context: ",e),!1}return!1}function isCapableOfRenderingToFloatTexture(webGLVersion){if(webGLVersion===0)return!1;let gl=getWebGLContext(webGLVersion);if(webGLVersion===1){if(!hasExtension(gl,"OES_texture_float"))return!1}else if(!hasExtension(gl,"EXT_color_buffer_float"))return!1;return createFloatTextureAndBindToFramebuffer(gl)}function isDownloadFloatTextureEnabled(webGLVersion){if(webGLVersion===0)return!1;let gl=getWebGLContext(webGLVersion);if(webGLVersion===1){if(!hasExtension(gl,"OES_texture_float")||!hasExtension(gl,"WEBGL_color_buffer_float"))return!1}else{if(hasExtension(gl,"EXT_color_buffer_float"))return createFloatTextureAndBindToFramebuffer(gl);let COLOR_BUFFER_HALF_FLOAT="EXT_color_buffer_half_float";if(hasExtension(gl,COLOR_BUFFER_HALF_FLOAT)){let textureHalfFloatExtension=gl.getExtension(COLOR_BUFFER_HALF_FLOAT);return createHalfFloatTextureAndBindToFramebuffer(gl,textureHalfFloatExtension)}return!1}return createFloatTextureAndBindToFramebuffer(gl)}function createFloatTextureAndBindToFramebuffer(gl){let texConfig=getTextureConfig(gl),texture=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,texture);let width=1,height=1;gl.texImage2D(gl.TEXTURE_2D,0,texConfig.internalFormatFloat,width,height,0,texConfig.textureFormatFloat,texConfig.textureTypeFloat,null);let frameBuffer=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,frameBuffer),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0);let isFrameBufferComplete=gl.checkFramebufferStatus(gl.FRAMEBUFFER)===gl.FRAMEBUFFER_COMPLETE;return gl.bindTexture(gl.TEXTURE_2D,null),gl.bindFramebuffer(gl.FRAMEBUFFER,null),gl.deleteTexture(texture),gl.deleteFramebuffer(frameBuffer),isFrameBufferComplete}function createHalfFloatTextureAndBindToFramebuffer(gl,textureHalfFloatExtension){let texConfig=getTextureConfig(gl,textureHalfFloatExtension),texture=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,texture);let width=1,height=1;gl.texImage2D(gl.TEXTURE_2D,0,texConfig.internalFormatHalfFloat,width,height,0,texConfig.textureFormatFloat,texConfig.textureTypeHalfFloat,null);let frameBuffer=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,frameBuffer),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0);let isFrameBufferComplete=gl.checkFramebufferStatus(gl.FRAMEBUFFER)===gl.FRAMEBUFFER_COMPLETE;return gl.bindTexture(gl.TEXTURE_2D,null),gl.bindFramebuffer(gl.FRAMEBUFFER,null),gl.deleteTexture(texture),gl.deleteFramebuffer(frameBuffer),isFrameBufferComplete}function isWebGLFenceEnabled(webGLVersion){return webGLVersion!==2?!1:getWebGLContext(webGLVersion).fenceSync!=null}function assertNotComplex2(tensor2,opName){Array.isArray(tensor2)||(tensor2=[tensor2]),tensor2.forEach(t=>{t!=null&&util_exports.assert(t.dtype!=="complex64",()=>`${opName} does not support complex64 tensors in the WebGL backend.`)})}var ENV3=env();ENV3.registerFlag("HAS_WEBGL",()=>ENV3.getNumber("WEBGL_VERSION")>0);ENV3.registerFlag("WEBGL_VERSION",()=>isWebGLVersionEnabled(2)?2:isWebGLVersionEnabled(1)?1:0);ENV3.registerFlag("WEBGL_CHECK_NUMERICAL_PROBLEMS",()=>!1);ENV3.registerFlag("WEBGL_BUFFER_SUPPORTED",()=>ENV3.get("WEBGL_VERSION")===2);ENV3.registerFlag("WEBGL_CPU_FORWARD",()=>!0);ENV3.registerFlag("WEBGL_FORCE_F16_TEXTURES",()=>!1);ENV3.registerFlag("WEBGL_PACK",()=>ENV3.getBool("HAS_WEBGL"));ENV3.registerFlag("WEBGL_PACK_NORMALIZATION",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_CLIP",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_DEPTHWISECONV",()=>!1);ENV3.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_REDUCE",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_LAZILY_UNPACK",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_CONV_IM2COL",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_MAX_TEXTURE_SIZE",()=>getWebGLMaxTextureSize(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",()=>getMaxTexturesInShader(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",()=>{let webGLVersion=ENV3.getNumber("WEBGL_VERSION");return webGLVersion===0?0:getWebGLDisjointQueryTimerVersion(webGLVersion)});ENV3.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",()=>ENV3.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!device_util_exports.isMobile());ENV3.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",()=>isCapableOfRenderingToFloatTexture(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",()=>ENV3.getBool("WEBGL_FORCE_F16_TEXTURES")?!1:ENV3.getBool("WEBGL_RENDER_FLOAT32_CAPABLE"));ENV3.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",()=>isDownloadFloatTextureEnabled(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_FENCE_API_ENABLED",()=>isWebGLFenceEnabled(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",()=>ENV3.getBool("WEBGL_RENDER_FLOAT32_ENABLED")?4:0);ENV3.registerFlag("WEBGL_DELETE_TEXTURE_THRESHOLD",()=>-1,threshold2=>{if(threshold2<0&&threshold2!==-1)throw new Error(`WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never delete) or at least 0, but got ${threshold2}.`)});function getGlslDifferences(){let version102,attribute,varyingVs,varyingFs,texture2D,output,defineOutput,defineSpecialNaN,defineSpecialInf,defineRound;return env().getNumber("WEBGL_VERSION")===2?(version102="#version 300 es",attribute="in",varyingVs="out",varyingFs="in",texture2D="texture",output="outputColor",defineOutput="out vec4 outputColor;",defineSpecialNaN=` +============================`));let a={};return this.data.set(a,{values:e,dtype:n,refCount:1}),a}makeTensorInfo(e,t,n){let a;if(t==="string"&&n!=null&&n.length>0&&k.isString(n[0])){let r=n.map(s=>k.encodeString(s));a=this.write(r,e,t)}else a=this.write(n,e,t);return{dataId:a,shape:e,dtype:t}}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,a){this.data.set(e,{values:t,dtype:a,refCount:1})}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 a=this.readSync(n.real.dataId),r=this.readSync(n.imag.dataId);return _.mergeRealAndImagArrays(a,r)}return this.data.get(e).values}bufferSync(e){let t=this.readSync(e.dataId),n=t;if(e.dtype==="string")try{n=t.map(a=>k.decodeString(a))}catch(a){throw new Error("Failed to decode encoded string bytes into utf-8")}return Le(e.shape,e.dtype,n)}makeOutput(e,t,n){let a=this.write(e,t,n);return Zr().makeTensorFromDataId(a,t,n,this)}disposeData(e){if(this.data.has(e)){let{complexTensorInfos:t}=this.data.get(e);t!=null&&(this.disposeData(t.real.dataId),this.disposeData(t.imag.dataId)),this.data.delete(e)}}disposeIntermediateTensorInfo(e){let t=e.dataId;if(this.data.has(t)){let n=this.data.get(t);n.refCount--,n.refCount<1&&this.disposeData(t)}}async time(e){let t=k.now();return e(),{kernelMs:k.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){ke([e],"where");let t=this.readSync(e.dataId);return IU(e.shape,t)}dispose(){}floatPrecision(){return 32}epsilon(){return super.epsilon()}},ZN={};Oe(ZN,{addImpl:()=>eT,bincountImpl:()=>cv,bincountReduceImpl:()=>tT,ceilImpl:()=>nT,concatImpl:()=>pv,expImpl:()=>aT,expm1Impl:()=>rT,floorImpl:()=>sT,gatherV2Impl:()=>iT,greaterImpl:()=>oT,lessImpl:()=>lT,linSpaceImpl:()=>uT,logImpl:()=>cT,maxImpl:()=>pT,maximumImpl:()=>dT,minimumImpl:()=>hT,multiplyImpl:()=>dv,negImpl:()=>mT,notEqualImpl:()=>fT,prodImpl:()=>gT,rangeImpl:()=>mv,rsqrtImpl:()=>yT,simpleAbsImpl:()=>QN,sliceImpl:()=>Am,squaredDifferenceImpl:()=>bT,stridedSliceImpl:()=>xT,subImpl:()=>vT,tileImpl:()=>wT,topKImpl:()=>kT,transposeImpl:()=>hv,uniqueImpl:()=>IT});function QN(e){let t=new Float32Array(e.length);for(let n=0;n{let{x:t}=e.inputs,n=e.backend;ke(t,"abs");let a=new Float32Array(k.sizeFromShape(t.shape)),r=n.data.get(t.dataId).values;return a=QN(r),n.makeOutput(a,t.shape,"float32")},SU={kernelName:Co,backendName:"cpu",kernelFunc:TU};function Ot(e){return(t,n,a,r,s)=>{let i=_.assertAndGetBroadcastShape(t,n),o=i.length,l=k.computeStrides(i),c=k.sizeFromShape(i),u=k.getTypedArrayFromDType(s,c),p=t.length,d=n.length,h=k.computeStrides(t),m=k.computeStrides(n),f=_.getBroadcastDims(t,i),g=_.getBroadcastDims(n,i);if(f.length+g.length===0)for(let y=0;yx[E]=0);let v=k.locToIndex(x,p,h),N=b.slice(-d);g.forEach(E=>N[E]=0);let T=k.locToIndex(N,d,m);u[y]=e(a[v],r[T])}return[u,i]}}function Bn(e){let{inputs:t,backend:n}=e,{real:a,imag:r}=t,s=n.data.get(a.dataId).values,i=n.data.get(r.dataId).values,o=n.makeTensorInfo(a.shape,"complex64"),l=n.data.get(o.dataId);return l.complexTensorInfos={real:n.makeTensorInfo(a.shape,"float32",s),imag:n.makeTensorInfo(r.shape,"float32",i)},o}var CU={kernelName:Td,backendName:"cpu",kernelFunc:Bn};function $m(e,t,n="float32"){if(n==="complex64"){let r=$m(e,t,"float32"),s=$m(e,t,"float32");return Bn({inputs:{real:r,imag:s},backend:e})}let a=k.makeZerosTypedArray(k.sizeFromShape(t),n);return e.makeTensorInfo(t,n,a)}function ar(e){let{inputs:t,backend:n}=e,{x:a}=t;return n.incRef(a.dataId),{dataId:a.dataId,shape:a.shape,dtype:a.dtype}}var EU={kernelName:Xo,backendName:"cpu",kernelFunc:ar};function Ui(e){let{inputs:t,backend:n}=e,{input:a}=t,r=n.data.get(a.dataId).complexTensorInfos.real,s=n.data.get(r.dataId).values;return n.makeTensorInfo(r.shape,r.dtype,s)}var _U={kernelName:Hd,backendName:"cpu",kernelFunc:Ui};function ds(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{dtype:s}=a;if(s==="complex64"){if(r.dtype==="complex64")return ar({inputs:{x:r},backend:n});let i=$m(n,r.shape,r.dtype),o=ds({inputs:{x:r},backend:n,attrs:{dtype:"float32"}}),l=Bn({inputs:{real:o,imag:i},backend:n});return n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(o),l}if(r.dtype==="complex64"){let i=Ui({inputs:{input:r},backend:n}),o=ds({inputs:{x:i},backend:n,attrs:{dtype:s}});return n.disposeIntermediateTensorInfo(i),o}if(!k.hasEncodingLoss(r.dtype,s)){let i=ar({inputs:{x:r},backend:n});return{dataId:i.dataId,shape:i.shape,dtype:s}}if(s==="int32"){let i=n.data.get(r.dataId).values,o=Int32Array.from(i);return n.makeTensorInfo(r.shape,"int32",o)}if(s==="bool"){let i=n.data.get(r.dataId).values,o=k.toTypedArray([0],r.dtype),[l,c]=Ot((u,p)=>u!==p?1:0)(r.shape,[],i,o,"bool");return n.makeTensorInfo(c,"bool",l)}throw new Error(`Error in Cast: failed to cast ${r.dtype} to ${s}`)}var FU={kernelName:Ds,backendName:"cpu",kernelFunc:ds};function en(e,t,n,a){return n==null?({inputs:r,backend:s})=>{let{a:i,b:o}=r,l=s;ke([i,o],e);let c=l.data.get(i.dataId).values,u=l.data.get(o.dataId).values,p=a||i.dtype,[d,h]=t(i.shape,o.shape,c,u,p);return l.makeTensorInfo(h,p,d)}:({inputs:r,backend:s})=>{let{a:i,b:o}=r,l=s;if(i.dtype==="complex64"||o.dtype==="complex64"){let c=ds({inputs:{x:i},backend:l,attrs:{dtype:"complex64"}}),u=l.data.get(c.dataId),p=u.complexTensorInfos.real,d=u.complexTensorInfos.imag,h=l.data.get(p.dataId).values,m=l.data.get(d.dataId).values,f=ds({inputs:{x:o},backend:l,attrs:{dtype:"complex64"}}),g=l.data.get(f.dataId),y=g.complexTensorInfos.real,b=g.complexTensorInfos.imag,x=l.data.get(y.dataId).values,v=l.data.get(b.dataId).values,[N,T,E]=n(i.shape,o.shape,h,m,x,v),A=l.makeTensorInfo(E,"float32",N),$=l.makeTensorInfo(E,"float32",T),O=Bn({inputs:{real:A,imag:$},backend:l});return l.disposeIntermediateTensorInfo(c),l.disposeIntermediateTensorInfo(f),l.disposeIntermediateTensorInfo(A),l.disposeIntermediateTensorInfo($),O}else{let c=l.data.get(i.dataId).values,u=l.data.get(o.dataId).values,p=a||i.dtype,[d,h]=t(i.shape,o.shape,c,u,p);return l.makeTensorInfo(h,p,d)}}}function fv(e){return(t,n,a,r,s,i)=>{let o=_.assertAndGetBroadcastShape(t,n),l=k.sizeFromShape(o),c=o.length,u=k.computeStrides(o),p=k.getTypedArrayFromDType("float32",l),d=k.getTypedArrayFromDType("float32",l),h=_.getBroadcastDims(t,o),m=_.getBroadcastDims(n,o),f=_.mergeRealAndImagArrays(a,r),g=_.mergeRealAndImagArrays(s,i),y=t.length,b=k.computeStrides(t),x=n.length,v=k.computeStrides(n);if(h.length+m.length===0)for(let N=0;NE[W]=0);let A=k.locToIndex(E,y,b),$=T.slice(-x);m.forEach(W=>$[W]=0);let O=k.locToIndex($,x,v),V=e(f[A*2],f[A*2+1],g[O*2],g[O*2+1]);p[N]=V.real,d[N]=V.imag}return[p,d,o]}}var eT=Ot((e,t)=>e+t),AU=fv((e,t,n,a)=>({real:e+n,imag:t+a})),mp=en(Ur,eT,AU),$U={kernelName:Ur,backendName:"cpu",kernelFunc:mp};function cv(e,t,n,a,r){let s=k.sizeFromShape(a),i=k.makeZerosTypedArray(r,n);for(let o=0;o=r||(s>0?i[l]+=t[o]:i[l]+=1)}return i}function tT(e,t,n,a=!1){let r=e.shape[0],s=e.shape[1],i=Le([r,n],t.dtype);for(let o=0;o=n||(a?i.set(1,o,c):t.size>0?i.set(i.get(o,c)+t.get(o,l),o,c):i.set(i.get(o,c)+1,o,c))}return i}function nu(e){return(t,n,a)=>{let r=k.getTypedArrayFromDType(n,t.length);for(let s=0;s{let{x:i}=a;if(ke(i,e),i.dtype==="string"||n==="string")throw new Error("unaryKernelFunc does not support string input/output");let o=s,l=o.data.get(i.dataId).values,c=k.sizeFromShape(i.shape),u=n||i.dtype,p=k.getArrayFromDType(u,c);for(let d=0;d{let{x:i}=a;if(ke(i,e),i.dtype==="string"||n==="string")throw new Error("unaryKernelFunc does not support string input/output");let o=s,l=o.data.get(i.dataId).values,c=n||i.dtype,u=t(l,c,r);return o.makeTensorInfo(i.shape,c,u)}}var nT=nu(e=>Math.ceil(e)),DU=au(Ro,nT),MU={kernelName:Ro,backendName:"cpu",kernelFunc:DU};function pv(e,t,n,a){let r=k.getArrayFromDType(n,k.sizeFromShape(t));if(a&&n!=="string"){let s=0;e.forEach(i=>{let o=k.sizeFromShape(i.shape);r.set(i.vals,s),s+=o})}else{let s=0;e.forEach(i=>{let o=n==="string"?_.fromUint8ToStringArray(i.vals):i.vals,l=0;for(let c=0;cMath.exp(e)),NT=au(Bs,aT),RU={kernelName:Bs,backendName:"cpu",kernelFunc:NT},rT=nu(e=>Math.expm1(e)),PU=au(Go,rT),OU={kernelName:Go,backendName:"cpu",kernelFunc:PU},sT=nu(e=>Math.floor(e)),LU=au(Ws,sT),zU={kernelName:Ws,backendName:"cpu",kernelFunc:LU};function iT(e,t,n){let a=Le(n,e.dtype);for(let r=0;re>t?1:0),BU=en(Ko,oT,null,"bool"),WU={kernelName:Ko,backendName:"cpu",kernelFunc:BU},lT=Ot((e,t)=>eMath.log(e)),GU=au(js,cT),HU={kernelName:js,backendName:"cpu",kernelFunc:GU};function pT(e,t,n,a){let r=k.getTypedArrayFromDType(a,k.sizeFromShape(n));for(let s=0;so&&(o=c)}r[s]=o}return r}var dT=Ot((e,t)=>Math.max(e,t)),jU=en(Ks,dT),qU={kernelName:Ks,backendName:"cpu",kernelFunc:jU},hT=Ot((e,t)=>Math.min(e,t)),KU=en(Zs,hT),XU={kernelName:Zs,backendName:"cpu",kernelFunc:KU},dv=Ot((e,t)=>e*t),YU=fv((e,t,n,a)=>({real:e*n-t*a,imag:e*a+t*n})),gv=en(Qs,dv,YU),JU={kernelName:Qs,backendName:"cpu",kernelFunc:gv};function mT(e,t,n){let a=k.createScalarValue(-1,n);return dv([],t,a,e,n)}function ZU(e){let{inputs:t,backend:n}=e,{x:a}=t;ke(a,"neg");let r=n.data.get(a.dataId).values,[s,i]=mT(r,a.shape,a.dtype);return n.makeTensorInfo(i,a.dtype,s)}var QU={kernelName:rl,backendName:"cpu",kernelFunc:ZU},fT=Ot((e,t)=>e!==t?1:0),eG=en(sl,fT,null,"bool"),tG={kernelName:sl,backendName:"cpu",kernelFunc:eG};function hv(e,t,n,a,r){let s=t.length,i=k.sizeFromShape(t),o=k.computeStrides(t),l=k.computeStrides(r),c=k.getTypedArrayFromDType(n,k.sizeFromShape(r));for(let u=0;un.disposeIntermediateTensorInfo(b)),n.makeTensorInfo(y,g,m)}var rG={kernelName:pl,backendName:"cpu",kernelFunc:aG};function mv(e,t,n,a){let r=e===t,s=e1;if(r||s||i)return k.makeZerosTypedArray(0,a);let o=Math.abs(Math.ceil((t-e)/n)),l=k.makeZerosTypedArray(o,a);t1/Math.sqrt(e)),sG=au(ui,yT),iG={kernelName:ui,backendName:"cpu",kernelFunc:sG};function Am(e,t,n,a,r){let s=dn.isSliceContinous(a,t,n),i=k.sizeFromShape(n),o=k.computeStrides(a);if(s){let p=dn.computeFlatOffset(t,o);return r==="string"?e.slice(p,p+i):e.subarray(p,p+i)}let l=r==="string"?_.fromUint8ToStringArray(e):e,c=Le(a,r,l),u=Le(n,r);for(let p=0;pm+t[f]);u.set(c.get(...h),...d)}return r==="string"?_.fromStringArrayToUint8(u.values):u.values}function Gi(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{begin:s,size:i}=a;ke(r,"slice");let[o,l]=dn.parseSliceParams(r,s,i);dn.assertParamsValid(r,o,l);let c=n.data.get(r.dataId).values,u=Am(c,o,l,r.shape,r.dtype);return n.makeTensorInfo(l,r.dtype,u)}var oG={kernelName:yl,backendName:"cpu",kernelFunc:Gi},bT=Ot((e,t)=>{let n=e-t;return n*n}),lG=en(fi,bT),uG={kernelName:fi,backendName:"cpu",kernelFunc:lG};function xT(e,t,n,a){let r=Le(e,t.dtype);for(let s=0;se-t),cG=fv((e,t,n,a)=>({real:e-n,imag:t-a})),yv=en(gi,vT,cG),pG={kernelName:gi,backendName:"cpu",kernelFunc:yv};function wT(e,t){let n=new Array(e.rank);for(let r=0;rx.value-b.value);let f=p*a,g=l.subarray(f,f+a),y=c.subarray(f,f+a);for(let b=0;b{for(let g=0;gnew NU,1);var TT=it(Bo,e=>e>=0?e:Math.exp(e)-1),hG={kernelName:Bo,backendName:"cpu",kernelFunc:TT};function ST(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{alpha:s}=a;ke([r],"leakyRelu");let i=k.sizeFromShape(r.shape),o=n.data.get(r.dataId).values,l=k.getTypedArrayFromDType("float32",i);for(let c=0;ce<0?t*e:e);function CT(e){let{inputs:t,backend:n}=e,{x:a,alpha:r}=t;ke([a,r],"prelu");let s=n.data.get(a.dataId).values,i=n.data.get(r.dataId).values,[o,l]=fG(a.shape,r.shape,s,i,a.dtype);return n.makeTensorInfo(l,a.dtype,o)}var gG={kernelName:ai,backendName:"cpu",kernelFunc:CT},ET=it(ri,e=>Math.max(0,e)),yG={kernelName:ri,backendName:"cpu",kernelFunc:ET},_T=it(ii,e=>Math.min(Math.max(0,e),6)),bG={kernelName:ii,backendName:"cpu",kernelFunc:_T};function bv(e,t,n,a,r){if(n==="linear")return ar({inputs:{x:t},backend:e});if(n==="relu")return ET({inputs:{x:t},backend:e});if(n==="elu")return TT({inputs:{x:t},backend:e});if(n==="relu6")return _T({inputs:{x:t},backend:e});if(n==="prelu")return CT({inputs:{x:t,alpha:a},backend:e});if(n==="leakyrelu")return ST({inputs:{x:t},backend:e,attrs:{alpha:r}});throw new Error(`Activation ${n} has not been implemented for the CPU backend.`)}function It(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{shape:s}=a,i=k.sizeFromShape(r.shape),o=k.inferFromImplicitShape(s,i),l=k.sizeFromShape(o);k.assert(i===l,()=>`The new shape (${o}) has ${l} elements and the old shape (${r.shape}) has ${i} elements. The new shape and old shape must have the same number of elements.`),n.incRef(r.dataId);let c=n.data.get(r.dataId);if(c.complexTensorInfos!=null){let u=c.complexTensorInfos.real,p=c.complexTensorInfos.imag;u.shape=o,p.shape=o}return{dataId:r.dataId,shape:o,dtype:r.dtype}}var xG={kernelName:hl,backendName:"cpu",kernelFunc:It};function FT(e){let{inputs:t,backend:n,attrs:a}=e,{a:r,b:s}=t,{transposeA:i,transposeB:o}=a;ke([r,s],"matMul");let l=r.shape.length,c=s.shape.length,u=i?r.shape[l-2]:r.shape[l-1],p=o?s.shape[c-1]:s.shape[c-2],d=i?r.shape[l-1]:r.shape[l-2],h=o?s.shape[c-2]:s.shape[c-1],m=r.shape.slice(0,-2),f=s.shape.slice(0,-2),g=k.sizeFromShape(m),y=k.sizeFromShape(f),b=g===y||g===1||y===1;k.assert(l>=2&&c>=2&&b,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${m}) and (${f}).`);let x=(g>y?r.shape.slice(0,-2):s.shape.slice(0,-2)).concat([d,h]);k.assert(u===p,()=>`Error in matMul: inner shapes (${u}) and (${p}) of Tensors with shapes ${r.shape} and ${s.shape} and transposeA=${i} and transposeB=${o} must match.`);let v=i?[g,u,d]:[g,d,u],N=o?[y,h,p]:[y,p,h],T=It({inputs:{x:r},backend:n,attrs:{shape:v}}),E=It({inputs:{x:s},backend:n,attrs:{shape:N}}),A=i?T.shape[1]:T.shape[2],$=i?T.shape[2]:T.shape[1],O=o?E.shape[1]:E.shape[2],V=Math.max(g,y),W=n.data.get(T.dataId).values,H=n.data.get(E.dataId).values,X=k.computeStrides(T.shape),q=k.computeStrides(E.shape),[K,J,te]=i?[X[0],1,X[1]]:[X[0],X[1],1],[Q,ie,re]=o?[1,q[1],q[0]]:[q[1],1,q[0]],ae=$*O,oe=Le([V,$,O],T.dtype),he=oe.values,ce=n.blockSize;for(let ge=0;geMath.acos(e)),NG={kernelName:Eo,backendName:"cpu",kernelFunc:IG},TG=it(_o,e=>Math.acosh(e)),SG={kernelName:_o,backendName:"cpu",kernelFunc:TG};function CG(e){let{inputs:t,backend:n}=e,a=t;ke(t,"addN");let r=a.map(o=>n.data.get(o.dataId).values),s=Le(a[0].shape,a[0].dtype),i=s.values;for(let o=0;ob&&(b=N,x=v)}h[g]=x}return c.forEach(g=>n.disposeIntermediateTensorInfo(g)),n.makeTensorInfo(u,"int32",h)}var MG={kernelName:Fs,backendName:"cpu",kernelFunc:DG};function RG(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{axis:s}=a;ke(r,"argMin");let i=k.parseAxisParam(s,r.shape),o=_.getAxesPermutation(i,r.shape.length),l=r,c=[];o!=null&&(l=ga({inputs:{x:r},backend:n,attrs:{perm:o}}),c.push(l),i=_.getInnerMostAxes(i.length,l.shape.length)),i=[i[0]],_.assertAxesAreInnerMostDims("argMin",i,l.shape.length);let[u,p]=_.computeOutAndReduceShapes(l.shape,i),d=k.sizeFromShape(u),h=k.makeZerosTypedArray(d,"int32"),m=k.sizeFromShape(p),f=n.data.get(l.dataId).values;for(let g=0;gn.disposeIntermediateTensorInfo(g)),n.makeTensorInfo(u,"int32",h)}var PG={kernelName:sc,backendName:"cpu",kernelFunc:RG},OG=it(Fo,e=>Math.asin(e)),LG={kernelName:Fo,backendName:"cpu",kernelFunc:OG},zG=it(Ao,e=>Math.asinh(e)),BG={kernelName:Ao,backendName:"cpu",kernelFunc:zG},WG=it($o,e=>Math.atan(e)),VG={kernelName:$o,backendName:"cpu",kernelFunc:WG},UG=Ot((e,t)=>Math.atan2(e,t)),GG=en(Mo,UG),HG={kernelName:Mo,backendName:"cpu",kernelFunc:GG},jG=it(Do,e=>Math.atanh(e)),qG={kernelName:Do,backendName:"cpu",kernelFunc:jG};function xv(e,t,n,a,r,s){let i=r.strideHeight,o=r.strideWidth,l=r.dilationHeight,c=r.dilationWidth,u=r.effectiveFilterHeight,p=r.effectiveFilterWidth,d=r.padInfo.top,h=r.padInfo.left,m=s==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,f=Le(r.outShape,n),g=f.values,y=r.outShape[1]*r.outShape[2]*r.outShape[3],b=r.outShape[2]*r.outShape[3],x=r.outShape[3];for(let v=0;vJ?J=ce:s==="avg"&&(te+=ce,Q++)}if(isNaN(J))break}let ie=W+H*x+E;g[ie]=s==="avg"?te/Q:J}}}return f}function AT(e,t,n,a,r=!1,s=!1){let i=Le(a.outShape,"int32"),o=a.strideHeight,l=a.strideWidth,c=a.dilationHeight,u=a.dilationWidth,p=a.effectiveFilterHeight,d=a.effectiveFilterWidth,h=a.padInfo.top,m=a.padInfo.left,f=Le(t,n,e);for(let g=0;gO&&(O=K,r?V=s?((g*a.inHeight+W)*a.inWidth+X)*a.inChannels+y:(W*a.inWidth+X)*a.inChannels+y:V=H*d+q)}}i.set(V,g,b,T,y)}}return i}function $T(e,t,n,a,r,s){let i=r.strideDepth,o=r.strideHeight,l=r.strideWidth,c=r.dilationDepth,u=r.dilationHeight,p=r.dilationWidth,d=r.effectiveFilterDepth,h=r.effectiveFilterHeight,m=r.effectiveFilterWidth,f=r.padInfo.front,g=r.padInfo.top,y=r.padInfo.left,b=s==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,x=Le(r.outShape,n),v=x.values,N=r.outShape[1]*r.outShape[2]*r.outShape[3]*r.outShape[4],T=r.outShape[2]*r.outShape[3]*r.outShape[4],E=r.outShape[3]*r.outShape[4],A=r.outShape[4];for(let $=0;$Ie?Ie=ft:s==="avg"&&(Te+=ft,Ee++),isNaN(Ie))break}if(isNaN(Ie))break}if(isNaN(Ie))break}let Me=be+W;v[Me]=s==="avg"?Te/Ee:Ie}}}}return x}function KG(e,t){let n=Le(t.outShape,"int32"),a=t.strideDepth,r=t.strideHeight,s=t.strideWidth,i=t.dilationDepth,o=t.dilationHeight,l=t.dilationWidth,c=t.effectiveFilterDepth,u=t.effectiveFilterHeight,p=t.effectiveFilterWidth,d=t.padInfo.front,h=t.padInfo.top,m=t.padInfo.left;for(let f=0;f=H&&(H=re,X=K*u*p+te*u+ie)}}}n.set(X,f,y,N,$,g)}}}return n}function XG(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t;ke(r,"avgPool");let{filterSize:s,strides:i,pad:o,dimRoundingMode:l}=a,c=1;k.assert(_.eitherStridesOrDilationsAreOne(i,c),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${c}'`);let u=_.computePool2DInfo(r.shape,s,i,c,o,l),p;if(u.filterWidth===1&&u.filterHeight===1&&k.arraysEqual(u.inShape,u.outShape))p=ar({inputs:{x:r},backend:n});else{let d=n.data.get(r.dataId).values,h=k.computeStrides(r.shape),m=xv(d,r.shape,r.dtype,h,u,"avg");p=n.makeTensorInfo(u.outShape,r.dtype,m.values)}return p}var YG={kernelName:As,backendName:"cpu",kernelFunc:XG};function JG(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{filterSize:s,strides:i,pad:o,dimRoundingMode:l,dataFormat:c,dilations:u}=a;ke(r,"avgPool3d");let p=u;p==null&&(p=[1,1,1]);let d=_.computePool3DInfo(r.shape,s,i,p,o,l,c),h=n.data.get(r.dataId).values,m=$T(h,r.shape,r.dtype,k.computeStrides(r.shape),d,"avg");return n.makeTensorInfo(m.shape,"float32",m.values)}var ZG={kernelName:ic,backendName:"cpu",kernelFunc:JG};function QG(e){let{inputs:t,backend:n,attrs:a}=e,{dy:r,input:s}=t,{filterSize:i,strides:o,pad:l,dilations:c,dimRoundingMode:u}=a;ke([r,s],"avgPool3DGrad");let p=_.computePool3DInfo(s.shape,i,o,c,l,u),d=p.strideDepth,h=p.strideHeight,m=p.strideWidth,f=p.filterDepth,g=p.filterHeight,y=p.filterWidth,b=p.dilationDepth,x=p.dilationHeight,v=p.dilationWidth,N=p.effectiveFilterDepth,T=p.effectiveFilterHeight,E=p.effectiveFilterWidth,A=N-1-p.padInfo.front,$=E-1-p.padInfo.left,O=T-1-p.padInfo.top,V=Le(s.shape,"float32"),W=1/(f*g*y),H=n.bufferSync(r);for(let X=0;X=p.outDepth||Math.floor(he)!==he))for(let ce=0;ce=p.outHeight||Math.floor(ge)!==ge))for(let be=0;be=p.outWidth||Math.floor(Ie)!==Ie||(ae+=H.get(X,he,ge,Ie,q))}}}V.set(ae*W,X,K,J,te,q)}return n.makeTensorInfo(V.shape,V.dtype,V.values)}var eH={kernelName:Id,backendName:"cpu",kernelFunc:QG};function tH(e){let{inputs:t,backend:n,attrs:a}=e,{dy:r,input:s}=t,i=s;ke([r,s],"avgPoolGrad");let{filterSize:o,strides:l,pad:c}=a,u=_.computePool2DInfo(i.shape,o,l,1,c),p=u.strideHeight,d=u.strideWidth,h=u.filterHeight,m=u.filterWidth,f=u.dilationHeight,g=u.dilationWidth,y=u.effectiveFilterHeight,b=u.effectiveFilterWidth,x=b-1-u.padInfo.left,v=y-1-u.padInfo.top,N=Le(i.shape,"float32"),T=1/(h*m),E=n.data.get(r.dataId).values,A=Le(r.shape,"float32",E);for(let $=0;$=u.outHeight||Math.floor(J)!==J))for(let te=0;te=u.outWidth||Math.floor(Q)!==Q||(q+=A.get($,J,Q,O))}}N.set(q*T,$,V,W,O)}return n.makeTensorInfo(N.shape,N.dtype,N.values)}var nH={kernelName:kd,backendName:"cpu",kernelFunc:tH};function aH(e){let{inputs:t,backend:n,attrs:a}=e,{x:r,scale:s,offset:i,mean:o,variance:l}=t;k.assert(o.shape.length===l.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),k.assert(i==null||o.shape.length===i.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),k.assert(s==null||o.shape.length===s.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks."),ke([r,o,l,s,i],"batchNorm");let{varianceEpsilon:c}=a;c==null&&(c=.001);let u=n.data.get(r.dataId).values,p=n.data.get(o.dataId).values,d=n.data.get(l.dataId).values,h=s?n.data.get(s.dataId).values:new Float32Array([1]),m=i?n.data.get(i.dataId).values:new Float32Array([0]),f=new Float32Array(u.length),g=m.length,y=h.length,b=d.length,x=p.length,v=0,N=0,T=0,E=0;for(let A=0;A=g&&(v=0),N>=x&&(N=0),T>=y&&(T=0),E>=b&&(E=0);return n.makeTensorInfo(r.shape,r.dtype,f)}var rH={kernelName:Us,backendName:"cpu",kernelFunc:aH};function sH(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{blockShape:s,crops:i}=a;ke([r],"batchToSpaceND");let o=s.reduce((y,b)=>y*b),l=_.getReshaped(r.shape,s,o),c=_.getPermuted(l.length,s.length),u=_.getReshapedPermuted(r.shape,s,o),p=_.getSliceBeginCoords(i,s.length),d=_.getSliceSize(u,i,s.length),h=It({inputs:{x:r},backend:n,attrs:{shape:l}}),m=ga({inputs:{x:h},backend:n,attrs:{perm:c}}),f=It({inputs:{x:m},backend:n,attrs:{shape:u}}),g=Gi({inputs:{x:f},backend:n,attrs:{begin:p,size:d}});return n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(m),n.disposeIntermediateTensorInfo(f),g}var iH={kernelName:oc,backendName:"cpu",kernelFunc:sH};function oH(e){let{inputs:t,backend:n,attrs:a}=e,{x:r,weights:s}=t,{size:i}=a,o=n.data.get(r.dataId).values,l=n.data.get(s.dataId).values,c=cv(o,l,s.dtype,s.shape,i);return n.makeTensorInfo([i],s.dtype,c)}var lH={kernelName:Nd,backendName:"cpu",kernelFunc:oH},uH=it(Gr,(e,t)=>{let n=t;return e>n.clipValueMax?n.clipValueMax:e{let{x:t}=e.inputs,n=e.backend,a=new Float32Array(k.sizeFromShape(t.shape)),r=n.data.get(t.dataId),s=r.complexTensorInfos.real,i=r.complexTensorInfos.imag,o=n.data.get(s.dataId).values,l=n.data.get(i.dataId).values;for(let c=0;cf.shape),s);if(k.sizeFromShape(i)===0)return n.makeTensorInfo(i,t[0].dtype,[]);let o=t.filter(f=>k.sizeFromShape(f.shape)>0);if(o.length===1)return ar({inputs:{x:o[0]},backend:n});let l=o.map(f=>f.shape);if(_.assertParamsConsistent(l,s),o[0].dtype==="complex64"){let f=o.map(v=>Ui({inputs:{input:v},backend:n})),g=o.map(v=>ru({inputs:{input:v},backend:n})),y=su({inputs:f,backend:n,attrs:{axis:s}}),b=su({inputs:g,backend:n,attrs:{axis:s}}),x=Bn({inputs:{real:y,imag:b},backend:n});return f.forEach(v=>n.disposeIntermediateTensorInfo(v)),g.forEach(v=>n.disposeIntermediateTensorInfo(v)),n.disposeIntermediateTensorInfo(y),n.disposeIntermediateTensorInfo(b),x}let c=o.map(f=>{let g=k.sizeFromShape(f.shape.slice(s));return It({inputs:{x:f},backend:n,attrs:{shape:[-1,g]}})}),u=c.map(f=>({vals:n.data.get(f.dataId).values,shape:f.shape}));i=_.computeOutShape(c.map(f=>f.shape),1);let p=c[0].shape[0]===1,d=pv(u,i,t[0].dtype,p),h=_.computeOutShape(o.map(f=>f.shape),s),m=n.makeTensorInfo(h,t[0].dtype,d);return c.forEach(f=>n.disposeIntermediateTensorInfo(f)),m}var mH={kernelName:Po,backendName:"cpu",kernelFunc:su};function DT(e){let{inputs:t,backend:n,attrs:a}=e,{x:r,filter:s}=t,{strides:i,pad:o,dataFormat:l,dilations:c,dimRoundingMode:u}=a;ke([r,s],"conv2d");let p=_.convertConv2DDataFormat(l),d=_.computeConv2DInfo(r.shape,s.shape,i,c,o,u,!1,p),h=d.filterHeight,m=d.filterWidth,f=d.dilationHeight,g=d.dilationWidth,y=d.padInfo.left,b=d.padInfo.top,x=d.dataFormat==="channelsLast",v=new Bt(d.outShape,r.dtype),N=k.computeStrides(r.shape),T=k.computeStrides(s.shape),E=N[0],A=x?N[1]:N[2],$=x?N[2]:1,O=x?1:N[1],V=v.strides[0],W=x?v.strides[1]:v.strides[2],H=x?v.strides[2]:1,X=x?1:v.strides[1],q=n.data.get(r.dataId).values,K=n.data.get(s.dataId).values,J=v.values;for(let te=0;te=d.inHeight)continue;let ge=he*T[0],be=Q+ce*A;for(let Ie=0;Ie=d.inWidth)continue;let nt=ge+Me*T[1],Ve=be+Je*$,ut=nt;for(let Ge=0;Ge=c.inDepth)continue;let te=K*$[0],Q=V+J*A[1];for(let ie=0;ie=c.inHeight)continue;let ce=te+oe*$[1],ge=Q+he*A[2];for(let be=0;be=c.inWidth)continue;let Je=ce+Ee*$[2],nt=ge+Me*c.inChannels,Ve=Je;for(let ut=0;utMath.cos(e)),CH={kernelName:Ps,backendName:"cpu",kernelFunc:SH},EH=it(Oo,e=>Math.cosh(e)),_H={kernelName:Oo,backendName:"cpu",kernelFunc:EH};function FH(e){let{inputs:t,backend:n,attrs:a}=e,{image:r,boxes:s,boxInd:i}=t,{cropSize:o,method:l,extrapolationValue:c}=a,[u,p,d,h]=r.shape,m=s.shape[0],[f,g]=o,y=Le([m,f,g,h],"float32"),b=n.data.get(s.dataId).values,x=n.data.get(i.dataId).values,v=n.data.get(r.dataId).values,N=k.computeStrides(r.shape),T=k.computeStrides(y.shape);for(let E=0;E=u)continue;let X=f>1?(V-$)*(p-1)/(f-1):0,q=g>1?(W-O)*(d-1)/(g-1):0;for(let K=0;K1?$*(p-1)+K*X:.5*($+V)*(p-1);if(J<0||J>p-1){for(let te=0;te1?O*(d-1)+re*q:.5*(O+W)*(d-1);if(ae<0||ae>d-1){for(let ge=0;ge1?O*(d-1)+te*q:.5*(O+W)*(d-1);if(Q<0||Q>d-1){for(let ae=0;aey+m-b-1:(y,b)=>y+b;for(let y=0;y`Only NHWC dataFormat supported on CPU for depthToSpace. Got ${i}`),k.assert(s>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${s}`);let o=r.shape[0],l=r.shape[1],c=r.shape[2],u=r.shape[3],p=l*s,d=c*s,h=u/(s*s),m=n.data.get(r.dataId).values,f=new Float32Array(o*p*d*h),g=0;for(let y=0;y`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${i} and dilations '${d}'`);let h=_.computeConv2DInfo(r.shape,s.shape,i,d,o,c,!0),{filterHeight:m,filterWidth:f,dilationHeight:g,dilationWidth:y,padInfo:b}=h,x=b.left,v=b.top,N=h.outChannels/h.inChannels,T=new Bt(h.outShape,r.dtype),E=n.data.get(r.dataId).values,A=n.data.get(s.dataId).values,$=T.values;for(let O=0;O=h.inHeight)continue;let te=K*p[0],Q=V+J*u[1];for(let ie=0;ie=h.inWidth)continue;let ce=te+oe*p[1],ge=Q+he*h.inChannels,be=re,Ie=ce;for(let Te=0;Te{let{x:a,filter:r}=e,{strides:s,pad:i,dilations:o}=n,l=t,c=l.data.get(a.dataId).values,u=a.shape.length,p=l.data.get(r.dataId).values,d=r.shape.length,{batchSize:h,inHeight:m,inWidth:f,inChannels:g,outHeight:y,outWidth:b,padInfo:x,strideHeight:v,strideWidth:N,filterHeight:T,filterWidth:E,dilationHeight:A,dilationWidth:$,outShape:O}=_.computeDilation2DInfo(a.shape,r.shape,s,i,"NHWC",o),V=k.sizeFromShape(O),W=O.length,H=k.getArrayFromDType(a.dtype,V);for(let X=0;X=0&&oe=0&&ceie&&(ie=Ie)}}}let re=k.locToIndex([X,q,J,Q],W,k.computeStrides(O));H[re]=ie}}}return{dataId:l.write(k.toTypedArray(H,a.dtype),O,a.dtype),shape:O,dtype:a.dtype}}},jH={kernelName:Md,backendName:"cpu",kernelFunc:({inputs:e,backend:t,attrs:n})=>{let{x:a,filter:r,dy:s}=e,{strides:i,pad:o,dilations:l}=n,c=t,u=k.toNestedArray(a.shape,c.data.get(a.dataId).values),p=k.toNestedArray(r.shape,c.data.get(r.dataId).values),{batchSize:d,inHeight:h,inWidth:m,inChannels:f,outHeight:g,outWidth:y,padInfo:b,strideHeight:x,strideWidth:v,filterHeight:N,filterWidth:T,dilationHeight:E,dilationWidth:A,outShape:$}=_.computeDilation2DInfo(a.shape,r.shape,i,o,"NHWC",l);k.assert(s.rank===$.length,()=>`Error in ${Md}, dy must have the same rank as output ${$.length}, but got ${s.rank}`);let O=k.toNestedArray($,c.data.get(s.dataId).values),V=k.makeZerosNestedTypedArray(r.shape,r.dtype);for(let W=0;W=0&&ae=0&&hete&&(te=ce,Q=re,ie=oe)}}}V[Q][ie][J]+=O[W][H][q][J]}}}return{dataId:c.write(k.toTypedArray(V,a.dtype),r.shape,r.dtype),shape:r.shape,dtype:r.dtype}}},qH={kernelName:Dd,backendName:"cpu",kernelFunc:({inputs:e,backend:t,attrs:n})=>{let{x:a,filter:r,dy:s}=e,{strides:i,pad:o,dilations:l}=n,c=t,u=k.toNestedArray(a.shape,c.data.get(a.dataId).values),p=k.toNestedArray(r.shape,c.data.get(r.dataId).values),{batchSize:d,inHeight:h,inWidth:m,inChannels:f,outHeight:g,outWidth:y,padInfo:b,strideHeight:x,strideWidth:v,filterHeight:N,filterWidth:T,dilationHeight:E,dilationWidth:A,outShape:$}=_.computeDilation2DInfo(a.shape,r.shape,i,o,"NHWC",l);k.assert(s.rank===$.length,()=>`Error in ${Dd}, dy must have the same rank as output ${$.length}, but got ${s.rank}`);let O=k.toNestedArray($,c.data.get(s.dataId).values),V=k.makeZerosNestedTypedArray(a.shape,a.dtype);for(let W=0;W=0&&ae=0&&hete&&(te=ce,Q=ae,ie=he)}}}V[W][Q][ie][J]+=O[W][H][q][J]}}}return{dataId:c.write(k.toTypedArray(V,a.dtype),a.shape,a.dtype),shape:a.shape,dtype:a.dtype}}};function KH(e){let{inputs:t,backend:n}=e,{dy:a,y:r}=t;ke([a,r],"eluGrad");let s=new Float32Array(k.sizeFromShape(r.shape)),i=n.data.get(r.dataId).values,o=n.data.get(a.dataId).values;for(let l=0;l=1?s[l]=o[l]:s[l]=o[l]*(c+1)}return n.makeTensorInfo(r.shape,"float32",s)}var XH={kernelName:Rd,backendName:"cpu",kernelFunc:KH},YH=Ot((e,t)=>e===t?1:0),RT=en(Vo,YH,null,"bool"),JH={kernelName:Vo,backendName:"cpu",kernelFunc:RT},ZH=_.ERF_P,QH=_.ERF_A1,e6=_.ERF_A2,t6=_.ERF_A3,n6=_.ERF_A4,a6=_.ERF_A5,r6=it(Wo,e=>{let t=Math.sign(e),n=Math.abs(e),a=1/(1+ZH*n);return t*(1-((((a6*a+n6)*a+t6)*a+e6)*a+QH)*a*Math.exp(-n*n))}),s6={kernelName:Wo,backendName:"cpu",kernelFunc:r6};function Dm(e){let{inputs:t,backend:n,attrs:a}=e,{input:r}=t,{dim:s}=a,i=r.shape.length,o=r.shape.slice(),l=s;return s<0&&(k.assert(-(i+1)<=s,()=>`Axis must be in the interval [${-(i+1)}, ${i}]`),l=i+s+1),o.splice(l,0,1),It({inputs:{x:r},backend:n,attrs:{shape:o}})}var i6={kernelName:Uo,backendName:"cpu",kernelFunc:Dm},o6=Ot((e,t)=>e/t),vv=en(zs,o6),wv={kernelName:zs,backendName:"cpu",kernelFunc:vv};function PT(e,t,n){let a=e.shape,r=a[0],s=a[1],i=n.data.get(e.dataId),o=i.complexTensorInfos.real,l=i.complexTensorInfos.imag,c=[r,s],u=k.sizeFromShape(c),p=k.getTypedArrayFromDType("float32",u),d=k.getTypedArrayFromDType("float32",u);for(let g=0;g{let{image:a}=e,r=n,s=k.getTypedArrayFromDType(a.dtype,k.sizeFromShape(a.shape)),[i,o,l,c]=a.shape,u=r.data.get(a.dataId).values;for(let p=0;p=0&&xMath.floor(e/t)),y6=en(Vs,g6,null,"int32"),b6={kernelName:Vs,backendName:"cpu",kernelFunc:y6};function x6(e){let{inputs:t,backend:n,attrs:a}=e,{x:r,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:c,dataFormat:u,dilations:p,dimRoundingMode:d,activation:h,leakyreluAlpha:m}=a,f=DT({inputs:{x:r,filter:s},backend:n,attrs:{strides:l,pad:c,dataFormat:u,dilations:p,dimRoundingMode:d}});if(i){let g=f;f=mp({inputs:{a:f,b:i},backend:n}),n.disposeIntermediateTensorInfo(g)}if(h){let g=f;f=bv(n,f,h,o,m),n.disposeIntermediateTensorInfo(g)}return f}var v6={kernelName:vi,backendName:"cpu",kernelFunc:x6};function w6(e){let{inputs:t,backend:n,attrs:a}=e,{x:r,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:c,dataFormat:u,dilations:p,dimRoundingMode:d,activation:h,leakyreluAlpha:m}=a,f=MT({inputs:{x:r,filter:s},backend:n,attrs:{strides:l,pad:c,dataFormat:u,dilations:p,dimRoundingMode:d}});if(i){let g=f;f=mp({inputs:{a:f,b:i},backend:n}),n.disposeIntermediateTensorInfo(g)}if(h){let g=f;f=bv(n,f,h,o,m),n.disposeIntermediateTensorInfo(g)}return f}var k6={kernelName:wi,backendName:"cpu",kernelFunc:w6};function I6(e){let{inputs:t,backend:n}=e,{params:a,indices:r}=t,s=k.sizeFromShape(a.shape),i=r.shape,o=i[i.length-1],[l,c,u,p]=_.prepareAndValidate(a,r);if(c===0)return n.makeTensorInfo(l,a.dtype,[]);let d=Le([c,u],a.dtype),h=n.data.get(r.dataId).values,m=n.data.get(a.dataId).values;for(let f=0;f=s/u)throw new Error(`Invalid indices: ${g} does not index into ${a.shape}`);for(let b=0;be>=t?1:0),E6=en(Gs,C6,null,"bool"),_6={kernelName:Gs,backendName:"cpu",kernelFunc:E6};function F6(e){let{inputs:t,backend:n}=e,{input:a}=t,r=k.sizeFromShape(a.shape),s=a.shape[a.shape.length-1],i=r/s,o=It({inputs:{x:a},backend:n,attrs:{shape:[i,s]}}),l=PT(o,!0,n),c=It({inputs:{x:l},backend:n,attrs:{shape:a.shape}});return n.disposeIntermediateTensorInfo(o),n.disposeIntermediateTensorInfo(l),c}var A6={kernelName:Od,backendName:"cpu",kernelFunc:F6},$6=it(Yo,e=>Number.isFinite(e)?1:0,"bool"),D6={kernelName:Yo,backendName:"cpu",kernelFunc:$6},M6=it(Jo,e=>Math.abs(e)===Infinity?1:0,"bool"),R6={kernelName:Jo,backendName:"cpu",kernelFunc:M6},P6=it(Zo,e=>Number.isNaN(e)?1:0,"bool"),O6={kernelName:Zo,backendName:"cpu",kernelFunc:P6},L6=Ot((e,t)=>e<=t?1:0),z6=en(el,L6,null,"bool"),B6={kernelName:el,backendName:"cpu",kernelFunc:z6};function W6(e){let{backend:t,attrs:n}=e,{start:a,stop:r,num:s}=n,i=uT(a,r,s);return t.makeTensorInfo([i.length],"float32",i)}var V6={kernelName:zd,backendName:"cpu",kernelFunc:W6},U6=it(tl,e=>Math.log1p(e)),G6={kernelName:tl,backendName:"cpu",kernelFunc:U6},H6=Ot((e,t)=>e&&t),j6=en(nl,H6,null,"bool"),q6={kernelName:nl,backendName:"cpu",kernelFunc:j6},K6=it(dc,e=>e?0:1,"bool"),X6={kernelName:dc,backendName:"cpu",kernelFunc:K6},Y6=Ot((e,t)=>e||t),J6=en(hc,Y6,null,"bool"),Z6={kernelName:hc,backendName:"cpu",kernelFunc:J6};function Q6(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{depthRadius:s,bias:i,alpha:o,beta:l}=a;ke(r,"LRN");let c=r.shape[3],u=c-1,p=n.data.get(r.dataId).values,d=k.sizeFromShape(r.shape),h=new Float32Array(d);function m(f){let g=f%c,y=f-g+Math.max(0,g-s),b=f-g+Math.min(g+s,u),x=0;for(;y<=b;y++){let v=p[y];x+=v*v}return x}for(let f=0;f`Error in maxPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${c}'`);let u=_.computePool2DInfo(r.shape,s,i,c,o,l),p;if(u.filterWidth===1&&u.filterHeight===1&&k.arraysEqual(u.inShape,u.outShape))p=ar({inputs:{x:r},backend:n});else{let d=n.data.get(r.dataId).values,h=k.computeStrides(r.shape),m=xv(d,r.shape,r.dtype,h,u,"max");p=n.makeTensorInfo(u.outShape,r.dtype,m.values)}return p}var sj={kernelName:Xs,backendName:"cpu",kernelFunc:rj};function ij(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{filterSize:s,strides:i,pad:o,dimRoundingMode:l,dataFormat:c,dilations:u}=a;ke(r,"maxPool3d");let p=u;p==null&&(p=[1,1,1]);let d=_.computePool3DInfo(r.shape,s,i,p,o,l,c),h=n.data.get(r.dataId).values,m=$T(h,r.shape,r.dtype,k.computeStrides(r.shape),d,"max");return n.makeTensorInfo(m.shape,"float32",m.values)}var oj={kernelName:fc,backendName:"cpu",kernelFunc:ij};function lj(e){let{inputs:t,backend:n,attrs:a}=e,{dy:r,input:s}=t,{filterSize:i,strides:o,pad:l,dilations:c,dimRoundingMode:u}=a;ke([r,s],"maxPool3DGrad");let p=_.computePool3DInfo(s.shape,i,o,c,l,u),d=n.bufferSync(s),h=KG(d,p),m=p.strideDepth,f=p.strideHeight,g=p.strideWidth,y=p.dilationDepth,b=p.dilationHeight,x=p.dilationWidth,v=p.effectiveFilterDepth,N=p.effectiveFilterHeight,T=p.effectiveFilterWidth,E=v-1-p.padInfo.front,A=T-1-p.padInfo.left,$=N-1-p.padInfo.top,O=Le(s.shape,"float32"),V=n.bufferSync(r);for(let W=0;W=p.outDepth||Math.floor(ae)!==ae))for(let oe=0;oe=p.outHeight||Math.floor(he)!==he))for(let ce=0;ce=p.outWidth||Math.floor(ge)!==ge)continue;let be=v*N*T-1-h.get(W,ae,he,ge,H),Ie=re*N*T+oe*T+ce,Te=be===Ie?1:0;Te!==0&&(ie+=V.get(W,ae,he,ge,H)*Te)}}}O.set(ie,W,X,q,K,H)}return n.makeTensorInfo(O.shape,O.dtype,O.values)}var uj={kernelName:Vd,backendName:"cpu",kernelFunc:lj};function cj(e){let{inputs:t,backend:n,attrs:a}=e,{dy:r,input:s,output:i}=t,o=s;ke([s,i],"maxPoolGrad");let{filterSize:l,strides:c,pad:u,dimRoundingMode:p}=a,d=_.computePool2DInfo(o.shape,l,c,1,u,p),h=n.data.get(o.dataId).values,m=Le(d.outShape,o.dtype,AT(h,o.shape,o.dtype,d).values),f=d.strideHeight,g=d.strideWidth,y=d.dilationHeight,b=d.dilationWidth,x=d.effectiveFilterHeight,v=d.effectiveFilterWidth,N=v-1-d.padInfo.left,T=x-1-d.padInfo.top,E=Le(o.shape,"float32"),A=n.data.get(r.dataId).values,$=Le(r.shape,"float32",A);for(let O=0;O=d.outHeight||Math.floor(te)!==te))for(let Q=0;Q=d.outWidth||Math.floor(ie)!==ie)continue;let re=x*v-1-m.get(O,te,ie,V),ae=J*v+Q,oe=re===ae?1:0;oe!==0&&(K+=$.get(O,te,ie,V)*oe)}}E.set(K,O,W,H,V)}return n.makeTensorInfo(E.shape,E.dtype,E.values)}var pj={kernelName:Wd,backendName:"cpu",kernelFunc:cj};function dj(e,t,n,a,r){let s=k.computeStrides(t),i=xv(e,t,n,s,r,"max"),o=AT(e,t,n,r,!0,a);return[i.values,o.values]}var hj={kernelName:Ud,backendName:"cpu",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{x:a}=e,{filterSize:r,strides:s,pad:i,includeBatchInIndex:o}=t,l=n;ke(a,"MaxPoolWithArgmax");let c=l.data.get(a.dataId).values,u=_.computePool2DInfo(a.shape,r,s,[1,1],i),[p,d]=dj(c,a.shape,a.dtype,o,u),h=l.write(p,u.outShape,a.dtype),m=l.write(d,u.outShape,a.dtype);return[{dataId:h,shape:u.outShape,dtype:a.dtype},{dataId:m,shape:u.outShape,dtype:"int32"}]}};function Mm(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{axis:s,keepDims:i}=a;ke(r,"sum");let o;r.dtype==="bool"?o=ds({inputs:{x:r},backend:n,attrs:{dtype:"int32"}}):o=ar({inputs:{x:r},backend:n});let l=o.shape.length,c=k.parseAxisParam(s,o.shape),u=_.getAxesPermutation(c,l),p=c,d=o;u!=null&&(d=ga({inputs:{x:o},backend:n,attrs:{perm:u}}),p=_.getInnerMostAxes(p.length,l)),_.assertAxesAreInnerMostDims("sum",p,d.shape.length);let[h,m]=_.computeOutAndReduceShapes(d.shape,p),f=_.upcastType(d.dtype,"int32"),g=$m(n,h,f),y=k.sizeFromShape(m),b=n.data.get(g.dataId).values,x=n.data.get(d.dataId).values;for(let v=0;vn.disposeIntermediateTensorInfo(f)),m}var gj={kernelName:Ys,backendName:"cpu",kernelFunc:fj};function yj(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{axis:s,keepDims:i}=a;ke(r,"min");let o=k.parseAxisParam(s,r.shape),l=o,c=_.getAxesPermutation(l,r.shape.length),u=r;c!=null&&(u=ga({inputs:{x:r},backend:n,attrs:{perm:c}}),l=_.getInnerMostAxes(l.length,r.shape.length)),_.assertAxesAreInnerMostDims("min",l,u.shape.length);let[p,d]=_.computeOutAndReduceShapes(u.shape,l),h=k.sizeFromShape(d),m=k.makeZerosTypedArray(k.sizeFromShape(p),u.dtype),f=n.data.get(u.dataId).values;for(let y=0;yb[0]+r.shape[x]+b[1]),l=s.map(b=>b[0]),c=s.map((b,x)=>b[0]+r.shape[x]),u=i==="reflect"?0:1,p=n.data.get(r.dataId).values,d=r.shape.length,h=k.computeStrides(r.shape),m=k.sizeFromShape(o),f=o.length,g=k.computeStrides(o),y=k.getTypedArrayFromDType(r.dtype,m);for(let b=0;b=c[N]&&(x[N]=(c[N]-1)*2-x[N]+u);x=x.map((N,T)=>N-l[T]);let v=k.locToIndex(x,d,h);y[b]=p[v]}return{dataId:n.write(y,o,r.dtype),shape:o,dtype:r.dtype}}var vj={kernelName:gc,backendName:"cpu",kernelFunc:xj},wj=Ot((e,t)=>{let n=e%t;return e<0&&t<0||e>=0&&t>=0?n:(n+t)%t}),kj=en(al,wj),Ij={kernelName:al,backendName:"cpu",kernelFunc:kj},Nj=No(fd());function LT(e){let{inputs:t,backend:n,attrs:a}=e,{logits:r}=t,{dim:s}=a,i=r.shape.length,o=s;if(o===-1&&(o=i-1),o!==i-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${i} and dim was ${o}`);let l=k.parseAxisParam([o],r.shape),c=OT({inputs:{x:r},backend:n,attrs:{reductionIndices:l,keepDims:!1}}),u=_.expandShapeToKeepDim(c.shape,l),p=It({inputs:{x:c},backend:n,attrs:{shape:u}}),d=yv({inputs:{a:r,b:p},backend:n}),h=NT({inputs:{x:d},backend:n}),m=Mm({inputs:{x:h},backend:n,attrs:{axis:l,keepDims:!1}}),f=It({inputs:{x:m},backend:n,attrs:{shape:u}}),g=vv({inputs:{a:h,b:f},backend:n});return n.disposeIntermediateTensorInfo(c),n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(m),n.disposeIntermediateTensorInfo(f),g}var Tj={kernelName:mi,backendName:"cpu",kernelFunc:LT};function Sj(e){let{inputs:t,backend:n,attrs:a}=e,{logits:r}=t,{numSamples:s,seed:i,normalized:o}=a;ke(r,"multinomial");let l=o?r:LT({inputs:{logits:r},backend:n,attrs:{dim:-1}}),c=l.shape[0],u=l.shape[1],p=n.data.get(l.dataId).values,d=[c,s],h=k.makeZerosTypedArray(k.sizeFromShape(d),"int32");for(let m=0;m=0&&u[p]{k.assertShapesMatch(s,u.shape,"All tensors passed to stack must have matching shapes"),k.assert(i===u.dtype,()=>"All tensors passed to stack must have matching dtypes")});let o=[],l=t.map(u=>{let p=Dm({inputs:{input:u},backend:n,attrs:{dim:r}});return o.push(p),p}),c=su({inputs:l,backend:n,attrs:{axis:r}});return o.forEach(u=>n.disposeIntermediateTensorInfo(u)),c}var Wj={kernelName:cl,backendName:"cpu",kernelFunc:BT};function Vj(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{paddings:s,constantValue:i}=a;ke(r,"pad");let o=s.map((y,b)=>y[0]+r.shape[b]+y[1]),l=s.map(y=>y[0]),c=n.data.get(r.dataId).values,u=k.sizeFromShape(r.shape),p=r.shape.length,d=k.computeStrides(r.shape),h=k.sizeFromShape(o),m=o.length,f=k.computeStrides(o),g=k.getTypedArrayFromDType(r.dtype,h);i!==0&&g.fill(i);for(let y=0;yv+l[N]),x=k.locToIndex(b,m,f);g[x]=c[y]}return{dataId:n.write(g,o,r.dtype),shape:o,dtype:r.dtype}}var WT={kernelName:ti,backendName:"cpu",kernelFunc:Vj},Uj=Ot((e,t)=>Math.pow(e,t)),Gj=en(ni,Uj),Hj={kernelName:ni,backendName:"cpu",kernelFunc:Gj};function jj(e){let{backend:t,attrs:n}=e,{start:a,stop:r,dtype:s,step:i}=n,o=mv(a,r,i,s);return t.makeTensorInfo([o.length],s,o)}var qj={kernelName:yc,backendName:"cpu",kernelFunc:jj},Kj=it(dl,e=>1/e),Xj={kernelName:dl,backendName:"cpu",kernelFunc:Kj};function Yj(e){let{inputs:t,backend:n,attrs:a}=e,{images:r}=t,{alignCorners:s,halfPixelCenters:i,size:o}=a;ke(r,"resizeBilinear");let l=k.computeStrides(r.shape),[c,u]=o,[p,d,h,m]=r.shape,f=n.data.get(r.dataId).values,g=new Float32Array(k.sizeFromShape([p,c,u,m])),y=[s&&c>1?d-1:d,s&&u>1?h-1:h],b=[s&&c>1?c-1:c,s&&u>1?u-1:u],x=0,v=y[0]/b[0],N=y[1]/b[1];for(let T=0;T1?c-1:c,i&&h>1?u-1:u],g=[i&&d>1?d-1:d,i&&h>1?h-1:h],y=f[0]/g[0],b=f[1]/g[1],x=n.data.get(s.dataId).values,v=0;for(let N=0;N1?d-1:d,s&&u>1?h-1:h],b=[s&&c>1?c-1:c,s&&u>1?u-1:u],x=y[0]/b[0],v=y[1]/b[1],N=0;for(let T=0;T1?u-1:u,i&&m>1?p-1:p],b=[i&&h>1?h-1:h,i&&m>1?m-1:m],x=y[0]/b[0],v=y[1]/b[1],N=1/x,T=1/v,E=Math.ceil(N)*2+2,A=Math.ceil(T)*2+2;for(let $=0;$=h)continue;let oe=O+ae*l[1],he=ae*x,ce=Math.min(u-1,i?Math.round(he):Math.floor(he));if(V===ce)for(let ge=0;ge=m)continue;let Ie=oe+be*l[2],Te=be*v,Ee=Math.min(p-1,i?Math.round(Te):Math.floor(Te));q===Ee&&(ie+=g[Ie+Q])}}f[K+Q]=ie}}}}return n.makeTensorInfo(r.shape,r.dtype,f)}var a5={kernelName:jd,backendName:"cpu",kernelFunc:n5};function r5(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{dims:s}=a;ke(r,"reverse");let i=r.shape.length,o=k.parseAxisParam(s,r.shape);if(i===0)return ar({inputs:{x:r},backend:n});let l=new Bt(r.shape,r.dtype),c=n.bufferSync(r);for(let u=0;ud[h]=r.shape[h]-1-d[h]),l.set(c.get(...d),...p)}return n.makeTensorInfo(l.shape,l.dtype,l.values)}var s5={kernelName:oi,backendName:"cpu",kernelFunc:r5},i5={kernelName:El,backendName:"cpu",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{image:a}=e,{radians:r,fillValue:s,center:i}=t,o=n,l=k.getTypedArrayFromDType(a.dtype,k.sizeFromShape(a.shape)),[c,u,p,d]=a.shape,[h,m]=_.getImageCenter(i,u,p),f=255,g=Math.sin(r),y=Math.cos(r),b=o.data.get(a.dataId).values;for(let x=0;x=0&&H=0&&X{let t=Math.floor(e);return e-t<.5?Math.floor(e):e-t>.5?Math.ceil(e):t%2==0?t:t+1}),l5={kernelName:li,backendName:"cpu",kernelFunc:o5};function VT(e,t,n,a,r,s,i,o,l,c){let u=[a/r,r],p=e.values,d=t.values;if(a===0)return Le(n,t.dtype);let h=Le(u,t.dtype);h.values.fill(l);for(let m=0;m=a/r)throw new Error(`Invalid indices: ${f} does not index into ${n}`);for(let y=0;y1||r.shape.length===1?1:k.sizeFromShape(r.shape.slice(1));for(let m=0;me>=0?m5*e:h5*(Math.exp(e)-1)),g5={kernelName:gl,backendName:"cpu",kernelFunc:f5},y5=it(pi,e=>1/(1+Math.exp(-e))),b5={kernelName:pi,backendName:"cpu",kernelFunc:y5},x5=it(xl,e=>e<0?-1:e>0?1:0),v5={kernelName:xl,backendName:"cpu",kernelFunc:x5},w5=it(ci,e=>Math.sin(e)),k5={kernelName:ci,backendName:"cpu",kernelFunc:w5},I5=it(bl,e=>Math.sinh(e)),N5={kernelName:bl,backendName:"cpu",kernelFunc:I5},T5=11920928955078125e-23,UT=Math.log(T5)+2,S5=it(vl,e=>{let t=e>-UT,n=e{let d=[...u];d[o]=p;let h=Gi({inputs:{x:r},backend:n,attrs:{begin:c,size:d}});return c[o]+=p,h})}var D5={kernelName:wl,backendName:"cpu",kernelFunc:$5},M5=it(di,e=>Math.sqrt(e)),R5={kernelName:di,backendName:"cpu",kernelFunc:M5},P5={kernelName:vc,backendName:"cpu",kernelFunc:({inputs:e,backend:t})=>{let{x:n}=e,a=t;ke(n,"square");let r=a.data.get(n.dataId).values,s=new Float32Array(r.length);for(let i=0;i{let n=t;return isNaN(e)?NaN:e>0?1:n.alpha}),L5={kernelName:Cl,backendName:"cpu",kernelFunc:O5};function z5(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{begin:s,end:i,strides:o,beginMask:l,endMask:c,ellipsisMask:u,newAxisMask:p,shrinkAxisMask:d}=a;ke(r,"stridedSlice");let{nonStrided:h,$begin:m,$strides:f,size:g,newShape:y,outShape:b}=dn.sliceInfo(r.shape,s,i,o,l,c,u,p,d),x=It({inputs:{x:r},backend:n,attrs:{shape:y}}),v;if(h){let T=Gi({inputs:{x},backend:n,attrs:{begin:m,size:g}});v=It({inputs:{x:T},backend:n,attrs:{shape:b}}),n.disposeIntermediateTensorInfo(T)}else if(b.some(T=>T===0))v=n.makeTensorInfo(b,r.dtype,[]);else{let T=n.bufferSync(x),E=xT(b,T,f,m);v=n.makeTensorInfo(E.shape,E.dtype,E.values)}let N=It({inputs:{x:v},backend:n,attrs:{shape:b}});return n.disposeIntermediateTensorInfo(x),n.disposeIntermediateTensorInfo(v),N}var B5={kernelName:kl,backendName:"cpu",kernelFunc:z5},W5=it(Il,e=>Math.tan(e)),V5={kernelName:Il,backendName:"cpu",kernelFunc:W5},U5=it(yi,e=>Math.tanh(e)),G5={kernelName:yi,backendName:"cpu",kernelFunc:U5};function H5(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{reps:s}=a;ke(r,"tile");let i=wT(n.bufferSync(r),s);return n.makeTensorInfo(i.shape,i.dtype,i.values)}var j5={kernelName:Hr,backendName:"cpu",kernelFunc:H5};function q5(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{k:s,sorted:i}=a;ke(r,"topk");let o=n.data.get(r.dataId).values,[l,c]=kT(o,r.shape,r.dtype,s,i);return[n.makeTensorInfo(l.shape,l.dtype,l.values),n.makeTensorInfo(c.shape,c.dtype,c.values)]}var K5={kernelName:Nl,backendName:"cpu",kernelFunc:q5};function X5(e){let{inputs:t,attrs:n,backend:a}=e,{axis:r}=n,{x:s}=t;ke(s,"unique");let i=a.data.get(s.dataId).values,{outputValues:o,outputShape:l,indices:c}=IT(i,r,s.shape,s.dtype);return[a.makeTensorInfo(l,s.dtype,o),a.makeTensorInfo([c.length],"int32",c)]}var Y5={kernelName:Xd,backendName:"cpu",kernelFunc:X5};function J5(e){let{inputs:t,backend:n,attrs:a}=e,{value:r}=t,{axis:s}=a;s<0&&(s+=r.shape.length);let i=r.shape.length,o=r.shape[s],l=new Array(i-1),c=0;for(let h=0;hn.disposeIntermediateTensorInfo(m)),h}var eq={kernelName:wc,backendName:"cpu",kernelFunc:Q5},tq=[kG,SU,NG,SG,$U,EG,FG,$G,MG,PG,LG,BG,VG,HG,qG,YG,ZG,eH,nH,vG,rH,iH,lH,FU,MU,cH,CU,dH,mH,yH,xH,fH,IH,TH,wH,CH,_H,AH,DH,RH,OH,LH,BH,VH,GH,HH,qH,jH,wv,hG,XH,JH,s6,RU,i6,OU,d6,m6,f6,zU,b6,v6,k6,N6,S6,WU,_6,EU,A6,hH,D6,R6,O6,mG,UU,B6,V6,HU,G6,q6,X6,Z6,ej,nj,qU,sj,oj,uj,pj,hj,aj,gj,bj,XU,vj,Ij,Cj,JU,QU,Fj,Dj,Pj,tG,Lj,Bj,Wj,WT,Hj,gG,rG,qj,_U,Xj,yG,bG,xG,Jj,Qj,t5,a5,s5,i5,l5,iG,c5,d5,g5,b5,v5,k5,N5,oG,Tj,C5,_5,A5,D5,R5,P5,uG,L5,B5,pG,mj,V5,G5,j5,K5,nG,Y5,Z5,eq,zj];for(let e of tq)Ic(e);var Hi={},Nv={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function nq(e,t){Hi[e]=t}function rr(e){if(!(e in Hi)){let n=aq(e);if(n!==null)Hi[e]=n;else return console.log("Could not get context for WebGL version",e),null}let t=Hi[e];return t.isContextLost()?(delete Hi[e],rr(e)):(t.disable(t.DEPTH_TEST),t.disable(t.STENCIL_TEST),t.disable(t.BLEND),t.disable(t.DITHER),t.disable(t.POLYGON_OFFSET_FILL),t.disable(t.SAMPLE_COVERAGE),t.enable(t.SCISSOR_TEST),t.enable(t.CULL_FACE),t.cullFace(t.BACK),Hi[e])}function rq(e){if(typeof OffscreenCanvas!="undefined"&&e===2)return new OffscreenCanvas(300,150);if(typeof document!="undefined")return document.createElement("canvas");throw new Error("Cannot create a canvas in this context")}function aq(e){if(e!==1&&e!==2)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");let t=rq(e);return t.addEventListener("webglcontextlost",n=>{n.preventDefault(),delete Hi[e]},!1),e===1?t.getContext("webgl",Nv)||t.getContext("experimental-webgl",Nv):t.getContext("webgl2",Nv)}var fp;(function(e){e[e.DENSE=0]="DENSE",e[e.SHARED_BATCH=1]="SHARED_BATCH"})(fp||(fp={}));var aa;(function(e){e[e.RENDER=0]="RENDER",e[e.UPLOAD=1]="UPLOAD",e[e.PIXELS=2]="PIXELS",e[e.DOWNLOAD=3]="DOWNLOAD"})(aa||(aa={}));var rn;(function(e){e[e.UNPACKED_FLOAT16=0]="UNPACKED_FLOAT16",e[e.UNPACKED_FLOAT32=1]="UNPACKED_FLOAT32",e[e.PACKED_4X1_UNSIGNED_BYTE=2]="PACKED_4X1_UNSIGNED_BYTE",e[e.PACKED_2X2_FLOAT32=3]="PACKED_2X2_FLOAT32",e[e.PACKED_2X2_FLOAT16=4]="PACKED_2X2_FLOAT16"})(rn||(rn={}));function gp(e,t){return[t,e]}function sq(e,t){return e*t}function yp(e){let t=k.sizeFromShape(e),n=Math.ceil(t/4);return k.sizeToSquarishShape(n)}function iu(e,t){return[Math.max(1,Math.ceil(t/2)),Math.max(1,Math.ceil(e/2))]}function iq(e,t){let[n,a]=iu(e,t);return n*a*4}function Tv(e,t){let n=e,a,r,s,i,o,l,c,u,p,d;return ee().getNumber("WEBGL_VERSION")===2?(a=n.R32F,r=n.R16F,s=n.RGBA16F,i=n.RGBA32F,o=n.RED,c=4,u=1,p=n.HALF_FLOAT,d=n.FLOAT):(a=e.RGBA,r=e.RGBA,s=e.RGBA,i=n.RGBA,o=e.RGBA,c=4,u=4,p=t!=null?t.HALF_FLOAT_OES:null,d=e.FLOAT),l=e.RGBA,{internalFormatFloat:a,internalFormatHalfFloat:r,internalFormatPackedHalfFloat:s,internalFormatPackedFloat:i,textureFormatFloat:o,downloadTextureFormat:l,downloadUnpackNumChannels:c,defaultNumChannels:u,textureTypeHalfFloat:p,textureTypeFloat:d}}function Se(e,t){let n=t();return ee().getBool("DEBUG")&&oq(e),n}function oq(e){let t=e.getError();if(t!==e.NO_ERROR)throw new Error("WebGL Error: "+lq(e,t))}var uq=596e-10,cq=65504;function pq(e){return!!(ee().getBool("WEBGL_RENDER_FLOAT32_ENABLED")||e===0||uqe.getExtension(t),'Extension "'+t+'" not supported on this browser.')}function dq(e,t){let n=_r(e,()=>e.createShader(e.VERTEX_SHADER),"Unable to create vertex WebGLShader.");if(Se(e,()=>e.shaderSource(n,t)),Se(e,()=>e.compileShader(n)),e.getShaderParameter(n,e.COMPILE_STATUS)===!1)throw console.log(e.getShaderInfoLog(n)),new Error("Failed to compile vertex shader.");return n}function mq(e,t){let n=_r(e,()=>e.createShader(e.FRAGMENT_SHADER),"Unable to create fragment WebGLShader.");if(Se(e,()=>e.shaderSource(n,t)),Se(e,()=>e.compileShader(n)),e.getShaderParameter(n,e.COMPILE_STATUS)===!1)throw hq(t,e.getShaderInfoLog(n)),new Error("Failed to compile fragment shader.");return n}var fq=/ERROR: [0-9]+:([0-9]+):/g;function hq(e,t){let n=fq.exec(t);if(n==null){console.log(`Couldn't parse line number in error: ${t}`),console.log(e);return}let a=+n[1],r=e.split(` +`),s=r.length.toString().length+2,i=r.map((p,d)=>k.rightPad((d+1).toString(),s)+p),o=0;for(let p=0;pe.createProgram(),"Unable to create WebGLProgram.")}function yq(e,t){if(Se(e,()=>e.linkProgram(t)),e.getProgramParameter(t,e.LINK_STATUS)===!1)throw console.log(e.getProgramInfoLog(t)),new Error("Failed to link vertex and fragment shaders.")}function Sv(e,t){if(Se(e,()=>e.validateProgram(t)),e.getProgramParameter(t,e.VALIDATE_STATUS)===!1)throw console.log(e.getProgramInfoLog(t)),new Error("Shader program validation failed.")}function bq(e,t){let n=_r(e,()=>e.createBuffer(),"Unable to create WebGLBuffer");return Se(e,()=>e.bindBuffer(e.ARRAY_BUFFER,n)),Se(e,()=>e.bufferData(e.ARRAY_BUFFER,t,e.STATIC_DRAW)),n}function xq(e,t){let n=_r(e,()=>e.createBuffer(),"Unable to create WebGLBuffer");return Se(e,()=>e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n)),Se(e,()=>e.bufferData(e.ELEMENT_ARRAY_BUFFER,t,e.STATIC_DRAW)),n}function vq(e){return _r(e,()=>e.createTexture(),"Unable to create WebGLTexture.")}function wq(e,t){let n=ee().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(e<=0||t<=0){let a=`[${e}x${t}]`;throw new Error("Requested texture size "+a+" is invalid.")}if(e>n||t>n){let a=`[${e}x${t}]`,r=`[${n}x${n}]`;throw new Error("Requested texture size "+a+" greater than WebGL maximum on this browser / GPU "+r+".")}}function kq(e){return _r(e,()=>e.createFramebuffer(),"Unable to create WebGLFramebuffer.")}function GT(e,t,n,a,r,s,i){let o=e.getAttribLocation(t,n);return o===-1?!1:(Se(e,()=>e.bindBuffer(e.ARRAY_BUFFER,a)),Se(e,()=>e.vertexAttribPointer(o,r,e.FLOAT,!1,s,i)),Se(e,()=>e.enableVertexAttribArray(o)),!0)}function Nq(e,t,n){Iq(e,n),Se(e,()=>e.activeTexture(e.TEXTURE0+n)),Se(e,()=>e.bindTexture(e.TEXTURE_2D,t))}function Tq(e,t,n){return _r(e,()=>e.getUniformLocation(t,n),'uniform "'+n+'" not present in program.')}function Sq(e,t,n){return e.getUniformLocation(t,n)}function Cq(e,t,n,a){Se(e,()=>Nq(e,t,a)),Se(e,()=>e.uniform1i(n,a))}function Cv(e,t,n){Se(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,n)),Se(e,()=>e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0))}function HT(e,t){Se(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,t)),Se(e,()=>e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,null,0))}function Om(e){let t=e.checkFramebufferStatus(e.FRAMEBUFFER);if(t!==e.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+Eq(e,t))}function Eq(e,t){switch(t){case e.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case e.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return`unknown error ${t}`}}function _r(e,t,n){let a=Se(e,()=>t());if(a==null)throw new Error(n);return a}function Iq(e,t){let n=e.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,a=t+e.TEXTURE0;if(an){let r=`[gl.TEXTURE0, gl.TEXTURE${n}]`;throw new Error(`textureUnit must be in ${r}.`)}}function ou(e,t=2){return k.sizeFromShape(e.slice(0,e.length-t))}function lu(e){if(e.length===0)throw Error("Cannot get rows and columns of an empty shape array.");return[e.length>1?e[e.length-2]:1,e[e.length-1]]}function Ev(e){let t=[1,1,1];return e.length===0||e.length===1&&e[0]===1||(t=[ou(e),...lu(e)]),t}function _q(e,t=!1){let n=ee().getNumber("WEBGL_MAX_TEXTURE_SIZE");t&&(n=n*2,e=e.map((r,s)=>s>=e.length-2?k.nearestLargerEven(e[s]):e[s]),e.length===1&&(e=[2,e[0]])),e.length!==2&&(e=k.squeezeShape(e).newShape);let a=k.sizeFromShape(e);if(e.length<=1&&a<=n)return[1,a];if(e.length===2&&e[0]<=n&&e[1]<=n)return e;if(e.length===3&&e[0]*e[1]<=n&&e[2]<=n)return[e[0]*e[1],e[2]];if(e.length===3&&e[0]<=n&&e[1]*e[2]<=n)return[e[0],e[1]*e[2]];if(e.length===4&&e[0]*e[1]*e[2]<=n&&e[3]<=n)return[e[0]*e[1]*e[2],e[3]];if(e.length===4&&e[0]<=n&&e[1]*e[2]*e[3]<=n)return[e[0],e[1]*e[2]*e[3]];if(t){let r=ou(e),s=2,i=2;return e.length&&([s,i]=lu(e)),a=r*(s/2)*(i/2),k.sizeToSquarishShape(a).map(o=>o*2)}return k.sizeToSquarishShape(a)}function Lm(e){return e%2==0}function zm(e,t){if(e=e.slice(-2),t=t.slice(-2),k.arraysEqual(e,t)||!e.length||!t.length||e[0]===0||e[1]===0||t[0]===0||t[1]===0)return!0;if(e.length!==t.length){let n=e.slice(-1)[0],a=t.slice(-1)[0];if(n===a||Lm(n)&&Lm(a)&&(e[0]===1||t[0]===1))return!0}return e[1]===t[1]&&Lm(e[0])&&Lm(t[0])}var _v,Fv;function Fq(e){if(_v==null){let t=rr(e);_v=t.getParameter(t.MAX_TEXTURE_SIZE)}return _v}function Aq(e){if(Fv==null){let t=rr(e);Fv=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,Fv)}function $q(e){if(e===0)return 0;let t,n=rr(e);return ya(n,"EXT_disjoint_timer_query_webgl2")&&e===2?t=2:ya(n,"EXT_disjoint_timer_query")?t=1:t=0,t}function ya(e,t){return e.getExtension(t)!=null}function jT(e){try{if(rr(e)!=null)return!0}catch(t){return console.log("Error when getting WebGL context: ",t),!1}return!1}function Dq(e){if(e===0)return!1;let t=rr(e);if(e===1){if(!ya(t,"OES_texture_float"))return!1}else if(!ya(t,"EXT_color_buffer_float"))return!1;return Av(t)}function Rq(e){if(e===0)return!1;let t=rr(e);if(e===1){if(!ya(t,"OES_texture_float")||!ya(t,"WEBGL_color_buffer_float"))return!1}else{if(ya(t,"EXT_color_buffer_float"))return Av(t);let n="EXT_color_buffer_half_float";if(ya(t,n)){let a=t.getExtension(n);return Mq(t,a)}return!1}return Av(t)}function Av(e){let t=Tv(e),n=e.createTexture();e.bindTexture(e.TEXTURE_2D,n);let a=1,r=1;e.texImage2D(e.TEXTURE_2D,0,t.internalFormatFloat,a,r,0,t.textureFormatFloat,t.textureTypeFloat,null);let s=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,s),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,n,0);let i=e.checkFramebufferStatus(e.FRAMEBUFFER)===e.FRAMEBUFFER_COMPLETE;return e.bindTexture(e.TEXTURE_2D,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.deleteTexture(n),e.deleteFramebuffer(s),i}function Mq(e,t){let n=Tv(e,t),a=e.createTexture();e.bindTexture(e.TEXTURE_2D,a);let r=1,s=1;e.texImage2D(e.TEXTURE_2D,0,n.internalFormatHalfFloat,r,s,0,n.textureFormatFloat,n.textureTypeHalfFloat,null);let i=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,i),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,a,0);let o=e.checkFramebufferStatus(e.FRAMEBUFFER)===e.FRAMEBUFFER_COMPLETE;return e.bindTexture(e.TEXTURE_2D,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.deleteTexture(a),e.deleteFramebuffer(i),o}function Pq(e){return e!==2?!1:rr(e).fenceSync!=null}function bp(e,t){Array.isArray(e)||(e=[e]),e.forEach(n=>{n!=null&&k.assert(n.dtype!=="complex64",()=>`${t} does not support complex64 tensors in the WebGL backend.`)})}var Fe=ee();Fe.registerFlag("HAS_WEBGL",()=>Fe.getNumber("WEBGL_VERSION")>0);Fe.registerFlag("WEBGL_VERSION",()=>jT(2)?2:jT(1)?1:0);Fe.registerFlag("WEBGL_CHECK_NUMERICAL_PROBLEMS",()=>!1);Fe.registerFlag("WEBGL_BUFFER_SUPPORTED",()=>Fe.get("WEBGL_VERSION")===2);Fe.registerFlag("WEBGL_CPU_FORWARD",()=>!0);Fe.registerFlag("WEBGL_FORCE_F16_TEXTURES",()=>!1);Fe.registerFlag("WEBGL_PACK",()=>Fe.getBool("HAS_WEBGL"));Fe.registerFlag("WEBGL_PACK_NORMALIZATION",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_CLIP",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_DEPTHWISECONV",()=>!1);Fe.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_REDUCE",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_LAZILY_UNPACK",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_CONV_IM2COL",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_MAX_TEXTURE_SIZE",()=>Fq(Fe.getNumber("WEBGL_VERSION")));Fe.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",()=>Aq(Fe.getNumber("WEBGL_VERSION")));Fe.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",()=>{let e=Fe.getNumber("WEBGL_VERSION");return e===0?0:$q(e)});Fe.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",()=>Fe.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!nh.isMobile());Fe.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",()=>Dq(Fe.getNumber("WEBGL_VERSION")));Fe.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",()=>Fe.getBool("WEBGL_FORCE_F16_TEXTURES")?!1:Fe.getBool("WEBGL_RENDER_FLOAT32_CAPABLE"));Fe.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",()=>Rq(Fe.getNumber("WEBGL_VERSION")));Fe.registerFlag("WEBGL_FENCE_API_ENABLED",()=>Pq(Fe.getNumber("WEBGL_VERSION")));Fe.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",()=>Fe.getBool("WEBGL_RENDER_FLOAT32_ENABLED")?4:0);Fe.registerFlag("WEBGL_DELETE_TEXTURE_THRESHOLD",()=>-1,e=>{if(e<0&&e!==-1)throw new Error(`WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never delete) or at least 0, but got ${e}.`)});function fn(){let e,t,n,a,r,s,i,o,l,c;return ee().getNumber("WEBGL_VERSION")===2?(e="#version 300 es",t="in",n="out",a="in",r="texture",s="outputColor",i="out vec4 outputColor;",o=` bool isnan_custom(float val) { return (val > 0.0 || val < 0.0) ? false : val != 0.0; } @@ -52,7 +52,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee } #define isnan(value) isnan_custom(value) - `,defineSpecialInf="",defineRound=` + `,l="",c=` #define round(value) newRound(value) int newRound(float value) { return int(floor(value + 0.5)); @@ -61,7 +61,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee ivec4 newRound(vec4 value) { return ivec4(floor(value + vec4(0.5))); } - `):(version102="",attribute="attribute",varyingVs="varying",varyingFs="varying",texture2D="texture2D",output="gl_FragColor",defineOutput="",defineSpecialNaN=` + `):(e="",t="attribute",n="varying",a="varying",r="texture2D",s="gl_FragColor",i="",o=` #define isnan(value) isnan_custom(value) bool isnan_custom(float val) { return (val > 0. || val < 1. || val == 0.) ? false : true; @@ -69,7 +69,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee bvec4 isnan_custom(vec4 val) { return bvec4(isnan(val.x), isnan(val.y), isnan(val.z), isnan(val.w)); } - `,defineSpecialInf=` + `,l=` uniform float INFINITY; bool isinf(float val) { @@ -78,7 +78,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee bvec4 isinf(vec4 val) { return equal(abs(val), vec4(INFINITY)); } - `,defineRound=` + `,c=` int round(float value) { return int(floor(value + 0.5)); } @@ -86,11 +86,11 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee ivec4 round(vec4 value) { return ivec4(floor(value + vec4(0.5))); } - `),{version:version102,attribute,varyingVs,varyingFs,texture2D,output,defineOutput,defineSpecialNaN,defineSpecialInf,defineRound}}function getLogicalCoordinatesFromFlatIndex(coords2,shape,index="index"){let strides=util_exports.computeStrides(shape);return strides.map((stride,i)=>{let line1=`int ${coords2[i]} = ${index} / ${stride}`,line2=i===strides.length-1?`int ${coords2[i+1]} = ${index} - ${coords2[i]} * ${stride}`:`index -= ${coords2[i]} * ${stride}`;return`${line1}; ${line2};`}).join("")}function getFlatIndexFrom3D(shape){let strides=util_exports.computeStrides(shape).map(d=>d.toString());return` + `),{version:e,attribute:t,varyingVs:n,varyingFs:a,texture2D:r,output:s,defineOutput:i,defineSpecialNaN:o,defineSpecialInf:l,defineRound:c}}function ji(e,t,n="index"){let a=k.computeStrides(t);return a.map((r,s)=>{let i=`int ${e[s]} = ${n} / ${r}`,o=s===a.length-1?`int ${e[s+1]} = ${n} - ${e[s]} * ${r}`:`index -= ${e[s]} * ${r}`;return`${i}; ${o};`}).join("")}function $v(e){let t=k.computeStrides(e).map(n=>n.toString());return` int getFlatIndex(ivec3 coords) { - return coords.x * ${strides[0]} + coords.y * ${strides[1]} + coords.z; + return coords.x * ${t[0]} + coords.y * ${t[1]} + coords.z; } -`}var ENCODE_FLOAT_SNIPPET=` +`}var qT=` const float FLOAT_MAX = 1.70141184e38; const float FLOAT_MIN = 1.17549435e-38; @@ -129,16 +129,16 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee return c / 255.0; } -`,DecodeMatrixProgram=class{constructor(outputShape){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0,this.outPackingScheme=PackingScheme.DENSE;let texShape=getDenseTexShape(outputShape),glsl=getGlslDifferences();this.outputShape=outputShape,this.userCode=` +`,Oq=class{constructor(e){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0,this.outPackingScheme=fp.DENSE;let t=yp(e),n=fn();this.outputShape=e,this.userCode=` ivec3 outCoordsFromFlatIndex(int index) { - ${getLogicalCoordinatesFromFlatIndex(["r","c","d"],outputShape)} + ${ji(["r","c","d"],e)} return ivec3(r, c, d); } void main() { ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${texShape[0]}, ${texShape[1]})); - int index = 4 * (resTexRC.x * ${texShape[1]} + resTexRC.y); + vec2(${t[0]}, ${t[1]})); + int index = 4 * (resTexRC.x * ${t[1]} + resTexRC.y); vec4 result = vec4(0.); @@ -148,18 +148,18 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee result[i] = getA(rc.x, rc.y, rc.z); } - ${glsl.output} = result; + ${n.output} = result; } - `}},DecodeMatrixPackedProgram=class{constructor(outputShape){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outPackingScheme=PackingScheme.DENSE;let texShape=getDenseTexShape(outputShape),glsl=getGlslDifferences();this.outputShape=outputShape,this.userCode=` + `}},Lq=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outPackingScheme=fp.DENSE;let t=yp(e),n=fn();this.outputShape=e,this.userCode=` ivec3 outCoordsFromFlatIndex(int index) { - ${getLogicalCoordinatesFromFlatIndex(["r","c","d"],outputShape)} + ${ji(["r","c","d"],e)} return ivec3(r, c, d); } void main() { ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${texShape[0]}, ${texShape[1]})); - int index = 4 * (resTexRC.x * ${texShape[1]} + resTexRC.y); + vec2(${t[0]}, ${t[1]})); + int index = 4 * (resTexRC.x * ${t[1]} + resTexRC.y); vec4 result = vec4(0.); @@ -169,25 +169,25 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee result[i] = getChannel(getA(rc.x, rc.y, rc.z), vec2(rc.y, rc.z)); } - ${glsl.output} = result; + ${n.output} = result; } - `}},EncodeFloatProgram=class{constructor(outputShape){this.variableNames=["A"],this.outTexUsage=TextureUsage.DOWNLOAD;let glsl=getGlslDifferences();this.outputShape=outputShape,this.userCode=` - ${ENCODE_FLOAT_SNIPPET} + `}},zq=class{constructor(e){this.variableNames=["A"],this.outTexUsage=aa.DOWNLOAD;let t=fn();this.outputShape=e,this.userCode=` + ${qT} void main() { float x = getAAtOutCoords(); - ${glsl.output} = encode_float(x); + ${t.output} = encode_float(x); } - `}},EncodeFloatPackedProgram=class{constructor(outputShape){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outTexUsage=TextureUsage.DOWNLOAD;let glsl=getGlslDifferences();this.outputShape=outputShape,this.userCode=` - ${ENCODE_FLOAT_SNIPPET} + `}},Bq=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outTexUsage=aa.DOWNLOAD;let t=fn();this.outputShape=e,this.userCode=` + ${qT} void main() { ivec3 coords = getOutputCoords(); float x = getChannel(getAAtOutCoords(), vec2(coords.y, coords.z)); - ${glsl.output} = encode_float(x); + ${t.output} = encode_float(x); } - `}},EncodeMatrixProgram=class{constructor(outputShape,texShape,inputIsUnsignedByte=!1){this.variableNames=["A"];let glsl=getGlslDifferences(),[height,width]=texShape;this.outputShape=outputShape;let output="result";inputIsUnsignedByte&&(output="floor(result * 255. + 0.5)"),this.userCode=` - ${getFlatIndexFrom3D(outputShape)} + `}},Wq=class{constructor(e,t,n=!1){this.variableNames=["A"];let a=fn(),[r,s]=t;this.outputShape=e;let i="result";n&&(i="floor(result * 255. + 0.5)"),this.userCode=` + ${$v(e)} void main() { ivec3 coords = getOutputCoords(); @@ -197,10 +197,10 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee flatIndex = idiv(flatIndex, 4, 1.); - int r = flatIndex / ${width}; - int c = imod(flatIndex, ${width}); - vec2 uv = (vec2(c, r) + halfCR) / vec2(${width}.0, ${height}.0); - vec4 values = ${glsl.texture2D}(A, uv); + int r = flatIndex / ${s}; + int c = imod(flatIndex, ${s}); + vec2 uv = (vec2(c, r) + halfCR) / vec2(${s}.0, ${r}.0); + vec4 values = ${a.texture2D}(A, uv); float result; @@ -214,38 +214,38 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee result = values[3]; } - ${glsl.output} = vec4(${output}, 0., 0., 0.); + ${a.output} = vec4(${i}, 0., 0., 0.); } - `}},EncodeMatrixPackedProgram=class{constructor(outputShape,texShape,inputIsUnsignedByte=!1){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;let glsl=getGlslDifferences(),[height,width]=texShape;this.outputShape=outputShape;let mainLoop="",output="result";inputIsUnsignedByte&&(output="floor(result * 255. + 0.5)");for(let row=0;row<=1;row++)for(let col=0;col<=1;col++){let channel=row*2+col;mainLoop+=` + `}},Vq=class{constructor(e,t,n=!1){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;let a=fn(),[r,s]=t;this.outputShape=e;let i="",o="result";n&&(o="floor(result * 255. + 0.5)");for(let l=0;l<=1;l++)for(let c=0;c<=1;c++){let u=l*2+c;i+=` localCoords = coords; - if(localCoords[2] + ${col} < ${outputShape[2]}) { - localCoords[2] += ${col}; - if(localCoords[1] + ${row} < ${outputShape[1]}) { - localCoords[1] += ${row}; + if(localCoords[2] + ${c} < ${e[2]}) { + localCoords[2] += ${c}; + if(localCoords[1] + ${l} < ${e[1]}) { + localCoords[1] += ${l}; flatIndex = getFlatIndex(localCoords); offset = imod(flatIndex, 4); flatIndex = idiv(flatIndex, 4, 1.); - r = flatIndex / ${width}; - c = imod(flatIndex, ${width}); - uv = (vec2(c, r) + halfCR) / vec2(${width}.0, ${height}.0); - values = ${glsl.texture2D}(A, uv); + r = flatIndex / ${s}; + c = imod(flatIndex, ${s}); + uv = (vec2(c, r) + halfCR) / vec2(${s}.0, ${r}.0); + values = ${a.texture2D}(A, uv); if(offset == 0) { - result[${channel}] = values[0]; + result[${u}] = values[0]; } else if(offset == 1) { - result[${channel}] = values[1]; + result[${u}] = values[1]; } else if(offset == 2) { - result[${channel}] = values[2]; + result[${u}] = values[2]; } else { - result[${channel}] = values[3]; + result[${u}] = values[3]; } } } `}this.userCode=` - ${getFlatIndexFrom3D(outputShape)} + ${$v(e)} void main() { ivec3 coords = getOutputCoords(); @@ -256,40 +256,40 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee vec2 uv; vec4 values; - ${mainLoop} + ${i} - ${glsl.output} = ${output}; + ${a.output} = ${o}; } - `}};function createVertexShader2(gl){let glsl=getGlslDifferences(),vertexShaderSource=`${glsl.version} + `}};function Uq(e){let t=fn(),n=`${t.version} precision highp float; - ${glsl.attribute} vec3 clipSpacePos; - ${glsl.attribute} vec2 uv; - ${glsl.varyingVs} vec2 resultUV; + ${t.attribute} vec3 clipSpacePos; + ${t.attribute} vec2 uv; + ${t.varyingVs} vec2 resultUV; void main() { gl_Position = vec4(clipSpacePos, 1); resultUV = uv; - }`;return createVertexShader(gl,vertexShaderSource)}function createVertexBuffer(gl){let vertexArray=new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]);return createStaticVertexBuffer(gl,vertexArray)}function createIndexBuffer(gl){let triangleVertexIndices=new Uint16Array([0,1,2,2,1,3]);return createStaticIndexBuffer(gl,triangleVertexIndices)}function createAndConfigureTexture(gl,width,height,internalFormat,textureFormat,textureType){validateTextureSize(width,height);let texture=createTexture(gl),tex2d=gl.TEXTURE_2D;return callAndCheck(gl,()=>gl.bindTexture(tex2d,texture)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_MIN_FILTER,gl.NEAREST)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_MAG_FILTER,gl.NEAREST)),callAndCheck(gl,()=>gl.texImage2D(tex2d,0,internalFormat,width,height,0,textureFormat,textureType,null)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null)),texture}function getInternalFormatForFloat32MatrixTexture(textureConfig){return textureConfig.internalFormatFloat}function createFloat32MatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForFloat32MatrixTexture(textureConfig),textureConfig.textureFormatFloat,gl.FLOAT)}function getInternalFormatForFloat16MatrixTexture(textureConfig){return textureConfig.internalFormatHalfFloat}function createFloat16MatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForFloat16MatrixTexture(textureConfig),textureConfig.textureFormatFloat,textureConfig.textureTypeHalfFloat)}function getInternalFormatForUnsignedBytesMatrixTexture(textureConfig){return textureConfig.downloadTextureFormat}function createUnsignedBytesMatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForUnsignedBytesMatrixTexture(textureConfig),gl.RGBA,gl.UNSIGNED_BYTE)}function getInternalFormatForPackedMatrixTexture(textureConfig){return textureConfig.internalFormatPackedFloat}function createPackedMatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getPackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForPackedMatrixTexture(textureConfig),gl.RGBA,gl.FLOAT)}function getInternalFormatForFloat16PackedMatrixTexture(textureConfig){return textureConfig.internalFormatPackedHalfFloat}function createFloat16PackedMatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getPackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForFloat16PackedMatrixTexture(textureConfig),gl.RGBA,textureConfig.textureTypeHalfFloat)}function bindVertexProgramAttributeStreams(gl,program,vertexBuffer){let posOffset=0,uvOffset=3*4,stride=3*4+2*4;return callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,vertexBuffer)),bindVertexBufferToProgramAttribute(gl,program,"clipSpacePos",vertexBuffer,3,stride,posOffset)&&bindVertexBufferToProgramAttribute(gl,program,"uv",vertexBuffer,2,stride,uvOffset)}function uploadDenseMatrixToTexture(gl,texture,width,height,data,textureConfig){callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,texture));let dataForUpload,texelDataType,internalFormat;data instanceof Uint8Array?(dataForUpload=new Uint8Array(width*height*4),texelDataType=gl.UNSIGNED_BYTE,internalFormat=gl.RGBA):(dataForUpload=new Float32Array(width*height*4),texelDataType=gl.FLOAT,internalFormat=textureConfig.internalFormatPackedFloat),dataForUpload.set(data),callAndCheck(gl,()=>gl.texImage2D(gl.TEXTURE_2D,0,internalFormat,width,height,0,gl.RGBA,texelDataType,dataForUpload)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null))}function uploadPixelDataToTexture(gl,texture,pixels){callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,texture)),pixels.data instanceof Uint8Array?callAndCheck(gl,()=>gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,pixels.width,pixels.height,0,gl.RGBA,gl.UNSIGNED_BYTE,pixels.data)):callAndCheck(gl,()=>gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,pixels)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null))}function createBufferFromOutputTexture(gl2,rows,columns,textureConfig){let buffer2=gl2.createBuffer();callAndCheck(gl2,()=>gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,buffer2));let bufferSizeBytes=4*4*rows*columns;return callAndCheck(gl2,()=>gl2.bufferData(gl2.PIXEL_PACK_BUFFER,bufferSizeBytes,gl2.STREAM_READ)),callAndCheck(gl2,()=>gl2.readPixels(0,0,columns,rows,gl2.RGBA,gl2.FLOAT,0)),callAndCheck(gl2,()=>gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,null)),buffer2}function downloadFloat32MatrixFromBuffer(gl,buffer2,size){let gl2=gl,downloadTarget=new Float32Array(size);return gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,buffer2),gl2.getBufferSubData(gl2.PIXEL_PACK_BUFFER,0,downloadTarget),gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,null),downloadTarget}function downloadByteEncodedFloatMatrixFromOutputTexture(gl,rows,columns,textureConfig){let[w,h]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns),numChannels=4,downloadTarget=new Uint8Array(getUnpackedArraySizeFromMatrixSize(rows*columns,numChannels));return callAndCheck(gl,()=>gl.readPixels(0,0,w,h,textureConfig.downloadTextureFormat,gl.UNSIGNED_BYTE,downloadTarget)),new Float32Array(downloadTarget.buffer)}function downloadPackedMatrixFromBuffer(gl,buffer2,batch,rows,cols,physicalRows,physicalCols,textureConfig){let gl2=gl,downloadTarget=new Float32Array(getPackedRGBAArraySizeFromMatrixShape(physicalRows,physicalCols));return gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,buffer2),gl2.getBufferSubData(gl2.PIXEL_PACK_BUFFER,0,downloadTarget),gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,null),downloadTarget}function downloadMatrixFromPackedOutputTexture(gl,physicalRows,physicalCols){let packedRGBA=new Float32Array(physicalRows*physicalCols*4);return callAndCheck(gl,()=>gl.readPixels(0,0,physicalCols,physicalRows,gl.RGBA,gl.FLOAT,packedRGBA)),packedRGBA}var GPGPUContext=class{constructor(gl){this.outputTexture=null,this.program=null,this.disposed=!1,this.vertexAttrsAreBound=!1,this.itemsToPoll=[];let glVersion=env().getNumber("WEBGL_VERSION");gl!=null?(this.gl=gl,setWebGLContext(glVersion,gl)):this.gl=getWebGLContext(glVersion);let COLOR_BUFFER_FLOAT="WEBGL_color_buffer_float",COLOR_BUFFER_HALF_FLOAT="EXT_color_buffer_half_float";if(env().getNumber("WEBGL_VERSION")===1){let TEXTURE_FLOAT="OES_texture_float",TEXTURE_HALF_FLOAT="OES_texture_half_float";if(this.textureFloatExtension=getExtensionOrThrow(this.gl,TEXTURE_FLOAT),hasExtension(this.gl,TEXTURE_HALF_FLOAT))this.textureHalfFloatExtension=getExtensionOrThrow(this.gl,TEXTURE_HALF_FLOAT);else if(env().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.");if(this.colorBufferFloatExtension=this.gl.getExtension(COLOR_BUFFER_FLOAT),hasExtension(this.gl,COLOR_BUFFER_HALF_FLOAT))this.colorBufferHalfFloatExtension=getExtensionOrThrow(this.gl,COLOR_BUFFER_HALF_FLOAT);else if(env().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.")}else if(COLOR_BUFFER_FLOAT="EXT_color_buffer_float",hasExtension(this.gl,COLOR_BUFFER_FLOAT))this.colorBufferFloatExtension=this.gl.getExtension(COLOR_BUFFER_FLOAT);else if(hasExtension(this.gl,COLOR_BUFFER_HALF_FLOAT))this.colorBufferHalfFloatExtension=this.gl.getExtension(COLOR_BUFFER_HALF_FLOAT);else throw new Error("GL context does not support color renderable floats");this.vertexBuffer=createVertexBuffer(this.gl),this.indexBuffer=createIndexBuffer(this.gl),this.framebuffer=createFramebuffer(this.gl),this.textureConfig=getTextureConfig(this.gl,this.textureHalfFloatExtension)}get debug(){return env().getBool("DEBUG")}dispose(){if(this.disposed)return;this.program!=null&&console.warn("Disposing a GPGPUContext that still has a bound WebGLProgram. This is probably a resource leak, delete the program with GPGPUContext.deleteProgram before disposing."),this.outputTexture!=null&&console.warn("Disposing a GPGPUContext that still has a bound output matrix texture. This is probably a resource leak, delete the output matrix texture with GPGPUContext.deleteMatrixTexture before disposing.");let gl=this.gl;callAndCheck(gl,()=>gl.finish()),callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,null)),callAndCheck(gl,()=>gl.deleteFramebuffer(this.framebuffer)),callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,null)),callAndCheck(gl,()=>gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,null)),callAndCheck(gl,()=>gl.deleteBuffer(this.indexBuffer)),this.disposed=!0}createFloat32MatrixTexture(rows,columns){return this.throwIfDisposed(),createFloat32MatrixTexture(this.gl,rows,columns,this.textureConfig)}createFloat16MatrixTexture(rows,columns){return this.throwIfDisposed(),createFloat16MatrixTexture(this.gl,rows,columns,this.textureConfig)}createUnsignedBytesMatrixTexture(rows,columns){return this.throwIfDisposed(),createUnsignedBytesMatrixTexture(this.gl,rows,columns,this.textureConfig)}uploadPixelDataToTexture(texture,pixels){this.throwIfDisposed(),uploadPixelDataToTexture(this.gl,texture,pixels)}uploadDenseMatrixToTexture(texture,width,height,data){this.throwIfDisposed(),uploadDenseMatrixToTexture(this.gl,texture,width,height,data,this.textureConfig)}createFloat16PackedMatrixTexture(rows,columns){return this.throwIfDisposed(),createFloat16PackedMatrixTexture(this.gl,rows,columns,this.textureConfig)}createPackedMatrixTexture(rows,columns){return this.throwIfDisposed(),createPackedMatrixTexture(this.gl,rows,columns,this.textureConfig)}deleteMatrixTexture(texture){this.throwIfDisposed(),this.outputTexture===texture&&(unbindColorTextureFromFramebuffer(this.gl,this.framebuffer),this.outputTexture=null),callAndCheck(this.gl,()=>this.gl.deleteTexture(texture))}downloadByteEncodedFloatMatrixFromOutputTexture(texture,rows,columns){return this.downloadMatrixDriver(texture,()=>downloadByteEncodedFloatMatrixFromOutputTexture(this.gl,rows,columns,this.textureConfig))}downloadPackedMatrixFromBuffer(buffer2,batch,rows,columns,physicalRows,physicalCols){return downloadPackedMatrixFromBuffer(this.gl,buffer2,batch,rows,columns,physicalRows,physicalCols,this.textureConfig)}downloadFloat32MatrixFromBuffer(buffer2,size){return downloadFloat32MatrixFromBuffer(this.gl,buffer2,size)}createBufferFromTexture(texture,rows,columns){this.bindTextureToFrameBuffer(texture);let result=createBufferFromOutputTexture(this.gl,rows,columns,this.textureConfig);return this.unbindTextureToFrameBuffer(),result}createAndWaitForFence(){let fenceContext=this.createFence(this.gl);return this.pollFence(fenceContext)}createFence(gl){let query,isFencePassed;if(env().getBool("WEBGL_FENCE_API_ENABLED")){let gl2=gl,sync=gl2.fenceSync(gl2.SYNC_GPU_COMMANDS_COMPLETE,0);gl.flush(),isFencePassed=()=>{let status=gl2.clientWaitSync(sync,0,0);return status===gl2.ALREADY_SIGNALED||status===gl2.CONDITION_SATISFIED},query=sync}else env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(query=this.beginQuery(),this.endQuery(),isFencePassed=()=>this.isQueryAvailable(query,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))):isFencePassed=()=>!0;return{query,isFencePassed}}downloadMatrixFromPackedTexture(texture,physicalRows,physicalCols){return this.downloadMatrixDriver(texture,()=>downloadMatrixFromPackedOutputTexture(this.gl,physicalRows,physicalCols))}createProgram(fragmentShaderSource){this.throwIfDisposed();let gl=this.gl,fragmentShader=createFragmentShader(gl,fragmentShaderSource),vertexShader=createVertexShader2(gl),program=createProgram(gl);return callAndCheck(gl,()=>gl.attachShader(program,vertexShader)),callAndCheck(gl,()=>gl.attachShader(program,fragmentShader)),linkProgram(gl,program),this.debug&&validateProgram(gl,program),this.vertexAttrsAreBound||(this.setProgram(program),this.vertexAttrsAreBound=bindVertexProgramAttributeStreams(gl,this.program,this.vertexBuffer)),program}deleteProgram(program){this.throwIfDisposed(),program===this.program&&(this.program=null),program!=null&&callAndCheck(this.gl,()=>this.gl.deleteProgram(program))}setProgram(program){this.throwIfDisposed(),this.program=program,this.program!=null&&this.debug&&validateProgram(this.gl,this.program),callAndCheck(this.gl,()=>this.gl.useProgram(program))}getUniformLocation(program,uniformName,shouldThrow=!0){return this.throwIfDisposed(),shouldThrow?getProgramUniformLocationOrThrow(this.gl,program,uniformName):getProgramUniformLocation(this.gl,program,uniformName)}getAttributeLocation(program,attribute){return this.throwIfDisposed(),callAndCheck(this.gl,()=>this.gl.getAttribLocation(program,attribute))}getUniformLocationNoThrow(program,uniformName){return this.throwIfDisposed(),this.gl.getUniformLocation(program,uniformName)}setInputMatrixTexture(inputMatrixTexture,uniformLocation,textureUnit){this.throwIfDisposed(),this.throwIfNoProgram(),bindTextureToProgramUniformSampler(this.gl,inputMatrixTexture,uniformLocation,textureUnit)}setOutputMatrixTexture(outputMatrixTexture,rows,columns){this.setOutputMatrixTextureDriver(outputMatrixTexture,columns,rows)}setOutputPackedMatrixTexture(outputPackedMatrixTexture,rows,columns){this.throwIfDisposed();let[width,height]=getPackedMatrixTextureShapeWidthHeight(rows,columns);this.setOutputMatrixTextureDriver(outputPackedMatrixTexture,width,height)}setOutputMatrixWriteRegion(startRow,numRows,startColumn,numColumns){this.setOutputMatrixWriteRegionDriver(startColumn,startRow,numColumns,numRows)}setOutputPackedMatrixWriteRegion(startRow,numRows,startColumn,numColumns){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")}debugValidate(){this.program!=null&&validateProgram(this.gl,this.program),validateFramebuffer(this.gl)}executeProgram(){this.throwIfDisposed(),this.throwIfNoProgram();let gl=this.gl;this.debug&&this.debugValidate(),callAndCheck(gl,()=>gl.drawElements(gl.TRIANGLES,6,gl.UNSIGNED_SHORT,0))}blockUntilAllProgramsCompleted(){this.throwIfDisposed(),callAndCheck(this.gl,()=>this.gl.finish())}getQueryTimerExtension(){return this.disjointQueryTimerExtension==null&&(this.disjointQueryTimerExtension=getExtensionOrThrow(this.gl,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension}getQueryTimerExtensionWebGL2(){return this.getQueryTimerExtension()}getQueryTimerExtensionWebGL1(){return this.getQueryTimerExtension()}beginQuery(){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let gl2=this.gl,ext2=this.getQueryTimerExtensionWebGL2(),query2=gl2.createQuery();return gl2.beginQuery(ext2.TIME_ELAPSED_EXT,query2),query2}let ext=this.getQueryTimerExtensionWebGL1(),query=ext.createQueryEXT();return ext.beginQueryEXT(ext.TIME_ELAPSED_EXT,query),query}endQuery(){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let gl2=this.gl,ext2=this.getQueryTimerExtensionWebGL2();gl2.endQuery(ext2.TIME_ELAPSED_EXT);return}let ext=this.getQueryTimerExtensionWebGL1();ext.endQueryEXT(ext.TIME_ELAPSED_EXT)}async waitForQueryAndGetTime(query){return await util_exports.repeatedTry(()=>this.disposed||this.isQueryAvailable(query,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))),this.getQueryTime(query,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}getQueryTime(query,queryTimerVersion){if(queryTimerVersion===0)return null;if(queryTimerVersion===2){let gl2=this.gl;return gl2.getQueryParameter(query,gl2.QUERY_RESULT)/1e6}else{let ext=this.getQueryTimerExtensionWebGL1();return ext.getQueryObjectEXT(query,ext.QUERY_RESULT_EXT)/1e6}}isQueryAvailable(query,queryTimerVersion){if(queryTimerVersion===0)return!0;if(queryTimerVersion===2){let gl2=this.gl,ext=this.getQueryTimerExtensionWebGL2(),available=gl2.getQueryParameter(query,gl2.QUERY_RESULT_AVAILABLE);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(ext.GPU_DISJOINT_EXT)),available&&!this.disjoint}else{let ext=this.getQueryTimerExtensionWebGL1(),available=ext.getQueryObjectEXT(query,ext.QUERY_RESULT_AVAILABLE_EXT);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(ext.GPU_DISJOINT_EXT)),available&&!this.disjoint}}pollFence(fenceContext){return new Promise(resolve=>{this.addItemToPoll(()=>fenceContext.isFencePassed(),()=>resolve())})}pollItems(){let index=linearSearchLastTrue(this.itemsToPoll.map(x=>x.isDoneFn));for(let i=0;i<=index;++i){let{resolveFn}=this.itemsToPoll[i];resolveFn()}this.itemsToPoll=this.itemsToPoll.slice(index+1)}addItemToPoll(isDoneFn,resolveFn){this.itemsToPoll.push({isDoneFn,resolveFn}),!(this.itemsToPoll.length>1)&&util_exports.repeatedTry(()=>(this.pollItems(),this.itemsToPoll.length===0))}bindTextureToFrameBuffer(texture){this.throwIfDisposed(),bindColorTextureToFramebuffer(this.gl,texture,this.framebuffer),this.debug&&validateFramebuffer(this.gl)}unbindTextureToFrameBuffer(){this.outputTexture!=null?(bindColorTextureToFramebuffer(this.gl,this.outputTexture,this.framebuffer),this.debug&&validateFramebuffer(this.gl)):unbindColorTextureFromFramebuffer(this.gl,this.framebuffer)}downloadMatrixDriver(texture,downloadAndDecode){this.bindTextureToFrameBuffer(texture);let result=downloadAndDecode();return this.unbindTextureToFrameBuffer(),result}setOutputMatrixTextureDriver(outputMatrixTextureMaybePacked,width,height){this.throwIfDisposed();let gl=this.gl;bindColorTextureToFramebuffer(gl,outputMatrixTextureMaybePacked,this.framebuffer),this.debug&&validateFramebuffer(gl),this.outputTexture=outputMatrixTextureMaybePacked,callAndCheck(gl,()=>gl.viewport(0,0,width,height)),callAndCheck(gl,()=>gl.scissor(0,0,width,height))}setOutputMatrixWriteRegionDriver(x,y,width,height){this.throwIfDisposed(),callAndCheck(this.gl,()=>this.gl.scissor(x,y,width,height))}throwIfDisposed(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")}throwIfNoProgram(){if(this.program==null)throw new Error("No GPU program is currently set.")}};function linearSearchLastTrue(arr){let i=0;for(;i{let size=util_exports.sizeFromShape(x.shapeInfo.logicalShape);x.shapeInfo.isUniform?prefixSnippets.push(`uniform float ${x.name}${size>1?`[${size}]`:""};`):(prefixSnippets.push(`uniform sampler2D ${x.name};`),prefixSnippets.push(`uniform int offset${x.name};`))});let inputPrefixSnippet=prefixSnippets.join(` -`),inputSamplingSnippet=inputsInfo.map(x=>getInputSamplingSnippet(x,outputShape,usesPackedTextures)).join(` -`),outTexShape=outputShape.texShape,glsl=getGlslDifferences(),floatTextureSampleSnippet=getFloatTextureSampleSnippet(glsl),outputSamplingSnippet,floatTextureSetOutputSnippet,shaderPrefix=getShaderPrefix(glsl);return outputShape.isPacked?(outputSamplingSnippet=getPackedOutputSamplingSnippet(outputShape.logicalShape,outTexShape),floatTextureSetOutputSnippet=getFloatTextureSetRGBASnippet(glsl)):(outputSamplingSnippet=getOutputSamplingSnippet(outputShape.logicalShape,outTexShape),floatTextureSetOutputSnippet=getFloatTextureSetRSnippet(glsl)),usesPackedTextures&&(shaderPrefix+=SHADER_PACKED_PREFIX),[shaderPrefix,floatTextureSampleSnippet,floatTextureSetOutputSnippet,inputPrefixSnippet,outputSamplingSnippet,inputSamplingSnippet,userCode].join(` -`)}function getSamplerFromInInfo(inInfo){let shape=inInfo.shapeInfo.logicalShape;switch(shape.length){case 0:return getSamplerScalar(inInfo);case 1:return getSampler1D(inInfo);case 2:return getSampler2D(inInfo);case 3:return getSampler3D(inInfo);case 4:return getSampler4D(inInfo);case 5:return getSampler5D(inInfo);case 6:return getSampler6D(inInfo);default:throw new Error(`${shape.length}-D input sampling is not yet supported`)}}function getPackedSamplerFromInInfo(inInfo){switch(inInfo.shapeInfo.logicalShape.length){case 0:return getPackedSamplerScalar(inInfo);case 1:return getPackedSampler1D(inInfo);case 2:return getPackedSampler2D(inInfo);case 3:return getPackedSampler3D(inInfo);default:return getPackedSamplerND(inInfo)}}function getInputSamplingSnippet(inInfo,outShapeInfo,usesPackedTextures=!1){let res="";usesPackedTextures?res+=getPackedSamplerFromInInfo(inInfo):res+=getSamplerFromInInfo(inInfo);let inShape=inInfo.shapeInfo.logicalShape,outShape=outShapeInfo.logicalShape;return inShape.length<=outShape.length&&(usesPackedTextures?res+=getPackedSamplerAtOutputCoords(inInfo,outShapeInfo):res+=getSamplerAtOutputCoords(inInfo,outShapeInfo)),res}function getPackedOutputSamplingSnippet(outShape,outTexShape){switch(outShape.length){case 0:return getOutputScalarCoords();case 1:return getOutputPacked1DCoords(outShape,outTexShape);case 2:return getOutputPacked2DCoords(outShape,outTexShape);case 3:return getOutputPacked3DCoords(outShape,outTexShape);default:return getOutputPackedNDCoords(outShape,outTexShape)}}function getOutputSamplingSnippet(outShape,outTexShape){switch(outShape.length){case 0:return getOutputScalarCoords();case 1:return getOutput1DCoords(outShape,outTexShape);case 2:return getOutput2DCoords(outShape,outTexShape);case 3:return getOutput3DCoords(outShape,outTexShape);case 4:return getOutput4DCoords(outShape,outTexShape);case 5:return getOutput5DCoords(outShape,outTexShape);case 6:return getOutput6DCoords(outShape,outTexShape);default:throw new Error(`${outShape.length}-D output sampling is not yet supported`)}}function getFloatTextureSampleSnippet(glsl){return` + }`;return dq(e,n)}function Gq(e){let t=new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]);return bq(e,t)}function Hq(e){let t=new Uint16Array([0,1,2,2,1,3]);return xq(e,t)}function xp(e,t,n,a,r,s){wq(t,n);let i=vq(e),o=e.TEXTURE_2D;return Se(e,()=>e.bindTexture(o,i)),Se(e,()=>e.texParameteri(o,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE)),Se(e,()=>e.texParameteri(o,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),Se(e,()=>e.texParameteri(o,e.TEXTURE_MIN_FILTER,e.NEAREST)),Se(e,()=>e.texParameteri(o,e.TEXTURE_MAG_FILTER,e.NEAREST)),Se(e,()=>e.texImage2D(o,0,a,t,n,0,r,s,null)),Se(e,()=>e.bindTexture(e.TEXTURE_2D,null)),i}function KT(e){return e.internalFormatFloat}function jq(e,t,n,a){let[r,s]=gp(t,n);return xp(e,r,s,KT(a),a.textureFormatFloat,e.FLOAT)}function XT(e){return e.internalFormatHalfFloat}function qq(e,t,n,a){let[r,s]=gp(t,n);return xp(e,r,s,XT(a),a.textureFormatFloat,a.textureTypeHalfFloat)}function YT(e){return e.downloadTextureFormat}function Kq(e,t,n,a){let[r,s]=gp(t,n);return xp(e,r,s,YT(a),e.RGBA,e.UNSIGNED_BYTE)}function JT(e){return e.internalFormatPackedFloat}function Xq(e,t,n,a){let[r,s]=iu(t,n);return xp(e,r,s,JT(a),e.RGBA,e.FLOAT)}function ZT(e){return e.internalFormatPackedHalfFloat}function Yq(e,t,n,a){let[r,s]=iu(t,n);return xp(e,r,s,ZT(a),e.RGBA,a.textureTypeHalfFloat)}function Jq(e,t,n){let a=0,r=3*4,s=3*4+2*4;return Se(e,()=>e.bindBuffer(e.ARRAY_BUFFER,n)),GT(e,t,"clipSpacePos",n,3,s,a)&>(e,t,"uv",n,2,s,r)}function Zq(e,t,n,a,r,s){Se(e,()=>e.bindTexture(e.TEXTURE_2D,t));let i,o,l;r instanceof Uint8Array?(i=new Uint8Array(n*a*4),o=e.UNSIGNED_BYTE,l=e.RGBA):(i=new Float32Array(n*a*4),o=e.FLOAT,l=s.internalFormatPackedFloat),i.set(r),Se(e,()=>e.texImage2D(e.TEXTURE_2D,0,l,n,a,0,e.RGBA,o,i)),Se(e,()=>e.bindTexture(e.TEXTURE_2D,null))}function Qq(e,t,n){Se(e,()=>e.bindTexture(e.TEXTURE_2D,t)),n.data instanceof Uint8Array?Se(e,()=>e.texImage2D(e.TEXTURE_2D,0,e.RGBA,n.width,n.height,0,e.RGBA,e.UNSIGNED_BYTE,n.data)):Se(e,()=>e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,n)),Se(e,()=>e.bindTexture(e.TEXTURE_2D,null))}function e8(e,t,n,a){let r=e.createBuffer();Se(e,()=>e.bindBuffer(e.PIXEL_PACK_BUFFER,r));let s=4*4*t*n;return Se(e,()=>e.bufferData(e.PIXEL_PACK_BUFFER,s,e.STREAM_READ)),Se(e,()=>e.readPixels(0,0,n,t,e.RGBA,e.FLOAT,0)),Se(e,()=>e.bindBuffer(e.PIXEL_PACK_BUFFER,null)),r}function t8(e,t,n){let a=e,r=new Float32Array(n);return a.bindBuffer(a.PIXEL_PACK_BUFFER,t),a.getBufferSubData(a.PIXEL_PACK_BUFFER,0,r),a.bindBuffer(a.PIXEL_PACK_BUFFER,null),r}function n8(e,t,n,a){let[r,s]=gp(t,n),i=4,o=new Uint8Array(sq(t*n,i));return Se(e,()=>e.readPixels(0,0,r,s,a.downloadTextureFormat,e.UNSIGNED_BYTE,o)),new Float32Array(o.buffer)}function a8(e,t,n,a,r,s,i,o){let l=e,c=new Float32Array(iq(s,i));return l.bindBuffer(l.PIXEL_PACK_BUFFER,t),l.getBufferSubData(l.PIXEL_PACK_BUFFER,0,c),l.bindBuffer(l.PIXEL_PACK_BUFFER,null),c}function r8(e,t,n){let a=new Float32Array(t*n*4);return Se(e,()=>e.readPixels(0,0,n,t,e.RGBA,e.FLOAT,a)),a}var i8=class{constructor(e){this.outputTexture=null,this.program=null,this.disposed=!1,this.vertexAttrsAreBound=!1,this.itemsToPoll=[];let t=ee().getNumber("WEBGL_VERSION");e!=null?(this.gl=e,nq(t,e)):this.gl=rr(t);let n="WEBGL_color_buffer_float",a="EXT_color_buffer_half_float";if(ee().getNumber("WEBGL_VERSION")===1){let r="OES_texture_float",s="OES_texture_half_float";if(this.textureFloatExtension=Pm(this.gl,r),ya(this.gl,s))this.textureHalfFloatExtension=Pm(this.gl,s);else if(ee().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.");if(this.colorBufferFloatExtension=this.gl.getExtension(n),ya(this.gl,a))this.colorBufferHalfFloatExtension=Pm(this.gl,a);else if(ee().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.")}else if(n="EXT_color_buffer_float",ya(this.gl,n))this.colorBufferFloatExtension=this.gl.getExtension(n);else if(ya(this.gl,a))this.colorBufferHalfFloatExtension=this.gl.getExtension(a);else throw new Error("GL context does not support color renderable floats");this.vertexBuffer=Gq(this.gl),this.indexBuffer=Hq(this.gl),this.framebuffer=kq(this.gl),this.textureConfig=Tv(this.gl,this.textureHalfFloatExtension)}get debug(){return ee().getBool("DEBUG")}dispose(){if(this.disposed)return;this.program!=null&&console.warn("Disposing a GPGPUContext that still has a bound WebGLProgram. This is probably a resource leak, delete the program with GPGPUContext.deleteProgram before disposing."),this.outputTexture!=null&&console.warn("Disposing a GPGPUContext that still has a bound output matrix texture. This is probably a resource leak, delete the output matrix texture with GPGPUContext.deleteMatrixTexture before disposing.");let e=this.gl;Se(e,()=>e.finish()),Se(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,null)),Se(e,()=>e.deleteFramebuffer(this.framebuffer)),Se(e,()=>e.bindBuffer(e.ARRAY_BUFFER,null)),Se(e,()=>e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null)),Se(e,()=>e.deleteBuffer(this.indexBuffer)),this.disposed=!0}createFloat32MatrixTexture(e,t){return this.throwIfDisposed(),jq(this.gl,e,t,this.textureConfig)}createFloat16MatrixTexture(e,t){return this.throwIfDisposed(),qq(this.gl,e,t,this.textureConfig)}createUnsignedBytesMatrixTexture(e,t){return this.throwIfDisposed(),Kq(this.gl,e,t,this.textureConfig)}uploadPixelDataToTexture(e,t){this.throwIfDisposed(),Qq(this.gl,e,t)}uploadDenseMatrixToTexture(e,t,n,a){this.throwIfDisposed(),Zq(this.gl,e,t,n,a,this.textureConfig)}createFloat16PackedMatrixTexture(e,t){return this.throwIfDisposed(),Yq(this.gl,e,t,this.textureConfig)}createPackedMatrixTexture(e,t){return this.throwIfDisposed(),Xq(this.gl,e,t,this.textureConfig)}deleteMatrixTexture(e){this.throwIfDisposed(),this.outputTexture===e&&(HT(this.gl,this.framebuffer),this.outputTexture=null),Se(this.gl,()=>this.gl.deleteTexture(e))}downloadByteEncodedFloatMatrixFromOutputTexture(e,t,n){return this.downloadMatrixDriver(e,()=>n8(this.gl,t,n,this.textureConfig))}downloadPackedMatrixFromBuffer(e,t,n,a,r,s){return a8(this.gl,e,t,n,a,r,s,this.textureConfig)}downloadFloat32MatrixFromBuffer(e,t){return t8(this.gl,e,t)}createBufferFromTexture(e,t,n){this.bindTextureToFrameBuffer(e);let a=e8(this.gl,t,n,this.textureConfig);return this.unbindTextureToFrameBuffer(),a}createAndWaitForFence(){let e=this.createFence(this.gl);return this.pollFence(e)}createFence(e){let t,n;if(ee().getBool("WEBGL_FENCE_API_ENABLED")){let a=e,r=a.fenceSync(a.SYNC_GPU_COMMANDS_COMPLETE,0);e.flush(),n=()=>{let s=a.clientWaitSync(r,0,0);return s===a.ALREADY_SIGNALED||s===a.CONDITION_SATISFIED},t=r}else ee().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(t=this.beginQuery(),this.endQuery(),n=()=>this.isQueryAvailable(t,ee().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))):n=()=>!0;return{query:t,isFencePassed:n}}downloadMatrixFromPackedTexture(e,t,n){return this.downloadMatrixDriver(e,()=>r8(this.gl,t,n))}createProgram(e){this.throwIfDisposed();let t=this.gl,n=mq(t,e),a=Uq(t),r=gq(t);return Se(t,()=>t.attachShader(r,a)),Se(t,()=>t.attachShader(r,n)),yq(t,r),this.debug&&Sv(t,r),this.vertexAttrsAreBound||(this.setProgram(r),this.vertexAttrsAreBound=Jq(t,this.program,this.vertexBuffer)),r}deleteProgram(e){this.throwIfDisposed(),e===this.program&&(this.program=null),e!=null&&Se(this.gl,()=>this.gl.deleteProgram(e))}setProgram(e){this.throwIfDisposed(),this.program=e,this.program!=null&&this.debug&&Sv(this.gl,this.program),Se(this.gl,()=>this.gl.useProgram(e))}getUniformLocation(e,t,n=!0){return this.throwIfDisposed(),n?Tq(this.gl,e,t):Sq(this.gl,e,t)}getAttributeLocation(e,t){return this.throwIfDisposed(),Se(this.gl,()=>this.gl.getAttribLocation(e,t))}getUniformLocationNoThrow(e,t){return this.throwIfDisposed(),this.gl.getUniformLocation(e,t)}setInputMatrixTexture(e,t,n){this.throwIfDisposed(),this.throwIfNoProgram(),Cq(this.gl,e,t,n)}setOutputMatrixTexture(e,t,n){this.setOutputMatrixTextureDriver(e,n,t)}setOutputPackedMatrixTexture(e,t,n){this.throwIfDisposed();let[a,r]=iu(t,n);this.setOutputMatrixTextureDriver(e,a,r)}setOutputMatrixWriteRegion(e,t,n,a){this.setOutputMatrixWriteRegionDriver(n,e,a,t)}setOutputPackedMatrixWriteRegion(e,t,n,a){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")}debugValidate(){this.program!=null&&Sv(this.gl,this.program),Om(this.gl)}executeProgram(){this.throwIfDisposed(),this.throwIfNoProgram();let e=this.gl;this.debug&&this.debugValidate(),Se(e,()=>e.drawElements(e.TRIANGLES,6,e.UNSIGNED_SHORT,0))}blockUntilAllProgramsCompleted(){this.throwIfDisposed(),Se(this.gl,()=>this.gl.finish())}getQueryTimerExtension(){return this.disjointQueryTimerExtension==null&&(this.disjointQueryTimerExtension=Pm(this.gl,ee().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension}getQueryTimerExtensionWebGL2(){return this.getQueryTimerExtension()}getQueryTimerExtensionWebGL1(){return this.getQueryTimerExtension()}beginQuery(){if(ee().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let n=this.gl,a=this.getQueryTimerExtensionWebGL2(),r=n.createQuery();return n.beginQuery(a.TIME_ELAPSED_EXT,r),r}let e=this.getQueryTimerExtensionWebGL1(),t=e.createQueryEXT();return e.beginQueryEXT(e.TIME_ELAPSED_EXT,t),t}endQuery(){if(ee().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let t=this.gl,n=this.getQueryTimerExtensionWebGL2();t.endQuery(n.TIME_ELAPSED_EXT);return}let e=this.getQueryTimerExtensionWebGL1();e.endQueryEXT(e.TIME_ELAPSED_EXT)}async waitForQueryAndGetTime(e){return await k.repeatedTry(()=>this.disposed||this.isQueryAvailable(e,ee().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))),this.getQueryTime(e,ee().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}getQueryTime(e,t){if(t===0)return null;if(t===2){let n=this.gl;return n.getQueryParameter(e,n.QUERY_RESULT)/1e6}else{let n=this.getQueryTimerExtensionWebGL1();return n.getQueryObjectEXT(e,n.QUERY_RESULT_EXT)/1e6}}isQueryAvailable(e,t){if(t===0)return!0;if(t===2){let n=this.gl,a=this.getQueryTimerExtensionWebGL2(),r=n.getQueryParameter(e,n.QUERY_RESULT_AVAILABLE);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(a.GPU_DISJOINT_EXT)),r&&!this.disjoint}else{let n=this.getQueryTimerExtensionWebGL1(),a=n.getQueryObjectEXT(e,n.QUERY_RESULT_AVAILABLE_EXT);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(n.GPU_DISJOINT_EXT)),a&&!this.disjoint}}pollFence(e){return new Promise(t=>{this.addItemToPoll(()=>e.isFencePassed(),()=>t())})}pollItems(){let e=s8(this.itemsToPoll.map(t=>t.isDoneFn));for(let t=0;t<=e;++t){let{resolveFn:n}=this.itemsToPoll[t];n()}this.itemsToPoll=this.itemsToPoll.slice(e+1)}addItemToPoll(e,t){this.itemsToPoll.push({isDoneFn:e,resolveFn:t}),!(this.itemsToPoll.length>1)&&k.repeatedTry(()=>(this.pollItems(),this.itemsToPoll.length===0))}bindTextureToFrameBuffer(e){this.throwIfDisposed(),Cv(this.gl,e,this.framebuffer),this.debug&&Om(this.gl)}unbindTextureToFrameBuffer(){this.outputTexture!=null?(Cv(this.gl,this.outputTexture,this.framebuffer),this.debug&&Om(this.gl)):HT(this.gl,this.framebuffer)}downloadMatrixDriver(e,t){this.bindTextureToFrameBuffer(e);let n=t();return this.unbindTextureToFrameBuffer(),n}setOutputMatrixTextureDriver(e,t,n){this.throwIfDisposed();let a=this.gl;Cv(a,e,this.framebuffer),this.debug&&Om(a),this.outputTexture=e,Se(a,()=>a.viewport(0,0,t,n)),Se(a,()=>a.scissor(0,0,t,n))}setOutputMatrixWriteRegionDriver(e,t,n,a){this.throwIfDisposed(),Se(this.gl,()=>this.gl.scissor(e,t,n,a))}throwIfDisposed(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")}throwIfNoProgram(){if(this.program==null)throw new Error("No GPU program is currently set.")}};function s8(e){let t=0;for(;t{let m=k.sizeFromShape(h.shapeInfo.logicalShape);h.shapeInfo.isUniform?r.push(`uniform float ${h.name}${m>1?`[${m}]`:""};`):(r.push(`uniform sampler2D ${h.name};`),r.push(`uniform int offset${h.name};`))});let s=r.join(` +`),i=e.map(h=>o8(h,t,a)).join(` +`),o=t.texShape,l=fn(),c=c8(l),u,p,d=h8(l);return t.isPacked?(u=l8(t.logicalShape,o),p=d8(l)):(u=u8(t.logicalShape,o),p=p8(l)),a&&(d+=m8),[d,c,p,s,u,i,n].join(` +`)}function uu(e){let t=e.shapeInfo.logicalShape;switch(t.length){case 0:return g8(e);case 1:return y8(e);case 2:return b8(e);case 3:return x8(e);case 4:return v8(e);case 5:return w8(e);case 6:return k8(e);default:throw new Error(`${t.length}-D input sampling is not yet supported`)}}function eS(e){switch(e.shapeInfo.logicalShape.length){case 0:return I8(e);case 1:return N8(e);case 2:return T8(e);case 3:return S8(e);default:return C8(e)}}function o8(e,t,n=!1){let a="";n?a+=eS(e):a+=uu(e);let r=e.shapeInfo.logicalShape,s=t.logicalShape;return r.length<=s.length&&(n?a+=E8(e,t):a+=_8(e,t)),a}function l8(e,t){switch(e.length){case 0:return tS();case 1:return F8(e,t);case 2:return D8(e,t);case 3:return A8(e,t);default:return $8(e,t)}}function u8(e,t){switch(e.length){case 0:return tS();case 1:return M8(e,t);case 2:return z8(e,t);case 3:return R8(e,t);case 4:return P8(e,t);case 5:return O8(e,t);case 6:return L8(e,t);default:throw new Error(`${e.length}-D output sampling is not yet supported`)}}function c8(e){return` float sampleTexture(sampler2D textureSampler, vec2 uv) { - return ${glsl.texture2D}(textureSampler, uv).r; + return ${e.texture2D}(textureSampler, uv).r; } - `}function getFloatTextureSetRSnippet(glsl){return` + `}function p8(e){return` void setOutput(float val) { - ${glsl.output} = vec4(val, 0, 0, 0); + ${e.output} = vec4(val, 0, 0, 0); } - `}function getFloatTextureSetRGBASnippet(glsl){return` + `}function d8(e){return` void setOutput(vec4 val) { - ${glsl.output} = val; + ${e.output} = val; } - `}function getShaderPrefix(glsl){return`${glsl.version} + `}function h8(e){return`${e.version} precision highp float; precision highp int; precision highp sampler2D; - ${glsl.varyingFs} vec2 resultUV; - ${glsl.defineOutput} + ${e.varyingFs} vec2 resultUV; + ${e.defineOutput} const vec2 halfCR = vec2(0.5, 0.5); struct ivec5 @@ -312,9 +312,9 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee }; uniform float NAN; - ${glsl.defineSpecialNaN} - ${glsl.defineSpecialInf} - ${glsl.defineRound} + ${e.defineSpecialNaN} + ${e.defineSpecialInf} + ${e.defineRound} int imod(int x, int y) { return x - y * (x / y); @@ -339,10 +339,10 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee return fract((p3.x + p3.y) * p3.z); } - ${SAMPLE_1D_SNIPPET} - ${SAMPLE_2D_SNIPPET} - ${SAMPLE_3D_SNIPPET} - `}var SAMPLE_1D_SNIPPET=` + ${B8} + ${W8} + ${V8} + `}var B8=` vec2 uvFromFlat(int texNumR, int texNumC, int index) { int texR = index / texNumC; int texC = index - texR * texNumC; @@ -354,7 +354,7 @@ vec2 packedUVfrom1D(int texNumR, int texNumC, int index) { int texC = texelIndex - texR * texNumC; return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); } -`,SAMPLE_2D_SNIPPET=` +`,W8=` vec2 packedUVfrom2D(int texelsInLogicalRow, int texNumR, int texNumC, int row, int col) { int texelIndex = (row / 2) * texelsInLogicalRow + (col / 2); @@ -362,7 +362,7 @@ vec2 packedUVfrom2D(int texelsInLogicalRow, int texNumR, int texC = texelIndex - texR * texNumC; return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); } -`,SAMPLE_3D_SNIPPET=` +`,V8=` vec2 packedUVfrom3D(int texNumR, int texNumC, int texelsInBatch, int texelsInLogicalRow, int b, int row, int col) { @@ -371,7 +371,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, int texC = index - texR * texNumC; return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); } -`,SHADER_PACKED_PREFIX=` +`,m8=` float getChannel(vec4 frag, vec2 innerDims) { vec2 modCoord = mod(innerDims, 2.); return modCoord.x == 0. ? @@ -382,494 +382,494 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, float modCoord = mod(float(dim), 2.); return modCoord == 0. ? frag.r : frag.g; } -`;function getOutputScalarCoords(){return` +`;function tS(){return` int getOutputCoords() { return 0; } - `}function getOutputPacked1DCoords(shape,texShape){let packedTexShape=[Math.ceil(texShape[0]/2),Math.ceil(texShape[1]/2)];return packedTexShape[0]===1?` + `}function F8(e,t){let n=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)];return n[0]===1?` int getOutputCoords() { - return 2 * int(resultUV.x * ${packedTexShape[1]}.0); + return 2 * int(resultUV.x * ${n[1]}.0); } - `:packedTexShape[1]===1?` + `:n[1]===1?` int getOutputCoords() { - return 2 * int(resultUV.y * ${packedTexShape[0]}.0); + return 2 * int(resultUV.y * ${n[0]}.0); } `:` int getOutputCoords() { ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${packedTexShape[0]}, ${packedTexShape[1]})); - return 2 * (resTexRC.x * ${packedTexShape[1]} + resTexRC.y); + vec2(${n[0]}, ${n[1]})); + return 2 * (resTexRC.x * ${n[1]} + resTexRC.y); } - `}function getOutput1DCoords(shape,texShape){return texShape[0]===1?` + `}function M8(e,t){return t[0]===1?` int getOutputCoords() { - return int(resultUV.x * ${texShape[1]}.0); + return int(resultUV.x * ${t[1]}.0); } - `:texShape[1]===1?` + `:t[1]===1?` int getOutputCoords() { - return int(resultUV.y * ${texShape[0]}.0); + return int(resultUV.y * ${t[0]}.0); } `:` int getOutputCoords() { ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${texShape[0]}, ${texShape[1]})); - return resTexRC.x * ${texShape[1]} + resTexRC.y; + vec2(${t[0]}, ${t[1]})); + return resTexRC.x * ${t[1]} + resTexRC.y; } - `}function getOutputPacked3DCoords(shape,texShape){let packedTexShape=[Math.ceil(texShape[0]/2),Math.ceil(texShape[1]/2)],texelsInLogicalRow=Math.ceil(shape[2]/2),texelsInBatch=texelsInLogicalRow*Math.ceil(shape[1]/2);return` + `}function A8(e,t){let n=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)],a=Math.ceil(e[2]/2),r=a*Math.ceil(e[1]/2);return` ivec3 getOutputCoords() { ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${packedTexShape[0]}, ${packedTexShape[1]})); - int index = resTexRC.x * ${packedTexShape[1]} + resTexRC.y; + vec2(${n[0]}, ${n[1]})); + int index = resTexRC.x * ${n[1]} + resTexRC.y; - int b = index / ${texelsInBatch}; - index -= b * ${texelsInBatch}; + int b = index / ${r}; + index -= b * ${r}; - int r = 2 * (index / ${texelsInLogicalRow}); - int c = imod(index, ${texelsInLogicalRow}) * 2; + int r = 2 * (index / ${a}); + int c = imod(index, ${a}) * 2; return ivec3(b, r, c); } - `}function getOutput3DCoords(shape,texShape){let coordsFromIndexSnippet=getLogicalCoordinatesFromFlatIndex(["r","c","d"],shape);return` + `}function R8(e,t){let n=ji(["r","c","d"],e);return` ivec3 getOutputCoords() { ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${texShape[0]}, ${texShape[1]})); - int index = resTexRC.x * ${texShape[1]} + resTexRC.y; - ${coordsFromIndexSnippet} + vec2(${t[0]}, ${t[1]})); + int index = resTexRC.x * ${t[1]} + resTexRC.y; + ${n} return ivec3(r, c, d); } - `}function getOutputPackedNDCoords(shape,texShape){let packedTexShape=[Math.ceil(texShape[0]/2),Math.ceil(texShape[1]/2)],texelsInLogicalRow=Math.ceil(shape[shape.length-1]/2),texelsInBatch=texelsInLogicalRow*Math.ceil(shape[shape.length-2]/2),texelsInBatchN=texelsInBatch,batches="",coords2="b, r, c";for(let b=2;b=1?coordsSnippet="coords = 0;":coordsSnippet=broadcastDims.map(d=>`coords.${fields[d+rankDiff]} = 0;`).join(` -`);let unpackedCoordsSnippet="";outRank<2&&inRank>0?unpackedCoordsSnippet="coords":unpackedCoordsSnippet=inputInfo.shapeInfo.logicalShape.map((s,i)=>`coords.${fields[i+rankDiff]}`).join(", ");let output="return outputValue;",isInputScalar=util_exports.sizeFromShape(inputInfo.shapeInfo.logicalShape)===1,isOutputScalar=util_exports.sizeFromShape(outShapeInfo.logicalShape)===1;if(inRank===1&&!isInputScalar&&!isOutputScalar)output=` + `}function E8(e,t){let n=e.name,a=n.charAt(0).toUpperCase()+n.slice(1),r="get"+a+"AtOutCoords",s=e.shapeInfo.logicalShape.length,i=t.logicalShape.length,o=QT(e.shapeInfo.logicalShape,t.logicalShape),l=mt(i),c=i-s,u,p=["x","y","z","w","u","v"];s===0?u="":i<2&&o.length>=1?u="coords = 0;":u=o.map(g=>`coords.${p[g+c]} = 0;`).join(` +`);let d="";i<2&&s>0?d="coords":d=e.shapeInfo.logicalShape.map((g,y)=>`coords.${p[y+c]}`).join(", ");let h="return outputValue;",m=k.sizeFromShape(e.shapeInfo.logicalShape)===1,f=k.sizeFromShape(t.logicalShape)===1;if(s===1&&!m&&!f)h=` return vec4(outputValue.xy, outputValue.xy); - `;else if(isInputScalar&&!isOutputScalar)outRank===1?output=` + `;else if(m&&!f)i===1?h=` return vec4(outputValue.x, outputValue.x, 0., 0.); - `:output=` + `:h=` return vec4(outputValue.x); - `;else if(broadcastDims.length){let rows=inRank-2,cols=inRank-1;broadcastDims.indexOf(rows)>-1&&broadcastDims.indexOf(cols)>-1?output="return vec4(outputValue.x);":broadcastDims.indexOf(rows)>-1?output="return vec4(outputValue.x, outputValue.y, outputValue.x, outputValue.y);":broadcastDims.indexOf(cols)>-1&&(output="return vec4(outputValue.xx, outputValue.zz);")}return` - vec4 ${funcName}() { - ${type} coords = getOutputCoords(); - ${coordsSnippet} - vec4 outputValue = get${texFuncSnippet}(${unpackedCoordsSnippet}); - ${output} + `;else if(o.length){let g=s-2,y=s-1;o.indexOf(g)>-1&&o.indexOf(y)>-1?h="return vec4(outputValue.x);":o.indexOf(g)>-1?h="return vec4(outputValue.x, outputValue.y, outputValue.x, outputValue.y);":o.indexOf(y)>-1&&(h="return vec4(outputValue.xx, outputValue.zz);")}return` + vec4 ${r}() { + ${l} coords = getOutputCoords(); + ${u} + vec4 outputValue = get${a}(${d}); + ${h} } - `}function getSamplerAtOutputCoords(inputInfo,outShapeInfo){let texName=inputInfo.name,texFuncSnippet=texName.charAt(0).toUpperCase()+texName.slice(1),funcName="get"+texFuncSnippet+"AtOutCoords",outTexShape=outShapeInfo.texShape,inTexShape=inputInfo.shapeInfo.texShape,inRank=inputInfo.shapeInfo.logicalShape.length,outRank=outShapeInfo.logicalShape.length;if(!inputInfo.shapeInfo.isUniform&&inRank===outRank&&inputInfo.shapeInfo.flatOffset==null&&util_exports.arraysEqual(inTexShape,outTexShape))return` - float ${funcName}() { - return sampleTexture(${texName}, resultUV); + `}function _8(e,t){let n=e.name,a=n.charAt(0).toUpperCase()+n.slice(1),r="get"+a+"AtOutCoords",s=t.texShape,i=e.shapeInfo.texShape,o=e.shapeInfo.logicalShape.length,l=t.logicalShape.length;if(!e.shapeInfo.isUniform&&o===l&&e.shapeInfo.flatOffset==null&&k.arraysEqual(i,s))return` + float ${r}() { + return sampleTexture(${n}, resultUV); } - `;let type=getCoordsDataType(outRank),broadcastDims=getBroadcastDims2(inputInfo.shapeInfo.logicalShape,outShapeInfo.logicalShape),rankDiff=outRank-inRank,coordsSnippet,fields=["x","y","z","w","u","v"];inRank===0?coordsSnippet="":outRank<2&&broadcastDims.length>=1?coordsSnippet="coords = 0;":coordsSnippet=broadcastDims.map(d=>`coords.${fields[d+rankDiff]} = 0;`).join(` -`);let unpackedCoordsSnippet="";return outRank<2&&inRank>0?unpackedCoordsSnippet="coords":unpackedCoordsSnippet=inputInfo.shapeInfo.logicalShape.map((s,i)=>`coords.${fields[i+rankDiff]}`).join(", "),` - float ${funcName}() { - ${type} coords = getOutputCoords(); - ${coordsSnippet} - return get${texFuncSnippet}(${unpackedCoordsSnippet}); + `;let c=mt(l),u=QT(e.shapeInfo.logicalShape,t.logicalShape),p=l-o,d,h=["x","y","z","w","u","v"];o===0?d="":l<2&&u.length>=1?d="coords = 0;":d=u.map(f=>`coords.${h[f+p]} = 0;`).join(` +`);let m="";return l<2&&o>0?m="coords":m=e.shapeInfo.logicalShape.map((f,g)=>`coords.${h[g+p]}`).join(", "),` + float ${r}() { + ${c} coords = getOutputCoords(); + ${d} + return get${a}(${m}); } - `}function getCoordsDataType(rank){if(rank<=1)return"int";if(rank===2)return"ivec2";if(rank===3)return"ivec3";if(rank===4)return"ivec4";if(rank===5)return"ivec5";if(rank===6)return"ivec6";throw Error(`GPU for rank ${rank} is not yet supported`)}function squeezeInputInfo(inInfo,squeezedShape){let newInputInfo=JSON.parse(JSON.stringify(inInfo));return newInputInfo.shapeInfo.logicalShape=squeezedShape,newInputInfo}function getSqueezedParams(params,keptDims){return keptDims.map(d=>params[d]).join(", ")}function compileProgram(gpgpu,program,inputs,output){let userCode=program.userCode,inputInfos=inputs.map((input2,i)=>{let shapeInfo={logicalShape:input2.shape,texShape:input2.isUniform?null:input2.texData.texShape,isUniform:input2.isUniform,isPacked:input2.isUniform?!1:input2.texData.isPacked,flatOffset:null};return input2.texData!=null&&input2.texData.slice!=null&&input2.texData.slice.flatOffset>0&&(shapeInfo.flatOffset=input2.texData.slice.flatOffset),{name:program.variableNames[i],shapeInfo}}),inShapeInfos=inputInfos.map(x=>x.shapeInfo),outShapeInfo={logicalShape:output.shape,texShape:output.texData.texShape,isUniform:!1,isPacked:output.texData.isPacked,flatOffset:null},source=makeShader(inputInfos,outShapeInfo,userCode,program.packedInputs),webGLProgram=gpgpu.createProgram(source),infLoc=null,nanLoc=gpgpu.getUniformLocation(webGLProgram,"NAN",!1);env().getNumber("WEBGL_VERSION")===1&&(infLoc=gpgpu.getUniformLocation(webGLProgram,"INFINITY",!1));let uniformLocations={};for(let i=0;i{let shapeA=s.logicalShape,input2=inputs[i],shapeB=input2.shape;if(!util_exports.arraysEqual(shapeA,shapeB))throw Error(`Binary was compiled with different shapes than the current args. Shapes ${shapeA} and ${shapeB} must match`);if(s.isUniform&&input2.isUniform)return;let texShapeA=s.texShape,texShapeB=input2.isUniform?null:input2.texData.texShape;if(!util_exports.arraysEqual(texShapeA,texShapeB))throw Error(`Binary was compiled with different texture shapes than the current args. Shape ${texShapeA} and ${texShapeB} must match`)})}function runProgram(gpgpu,binary,inputs,output,customSetup){validateBinaryAndProgram(binary.inShapeInfos,inputs),validateBinaryAndProgram([binary.outShapeInfo],[output]);let outTex=output.texData.texture,outTexShape=output.texData.texShape;output.texData.isPacked?gpgpu.setOutputPackedMatrixTexture(outTex,outTexShape[0],outTexShape[1]):gpgpu.setOutputMatrixTexture(outTex,outTexShape[0],outTexShape[1]),gpgpu.setProgram(binary.webGLProgram),env().getNumber("WEBGL_VERSION")===1&&binary.infLoc!==null&&gpgpu.gl.uniform1f(binary.infLoc,Infinity),binary.nanLoc!==null&&gpgpu.gl.uniform1f(binary.nanLoc,NaN),inputs.forEach((input2,i)=>{let varName=binary.program.variableNames[i],varLoc=binary.uniformLocations[varName],varOffsetLoc=binary.uniformLocations[`offset${varName}`];if(varLoc!=null){if(input2.isUniform){if(util_exports.sizeFromShape(input2.shape)<2)gpgpu.gl.uniform1f(varLoc,input2.uniformValues[0]);else{let vals=input2.uniformValues;vals instanceof Float32Array||(vals=new Float32Array(vals)),gpgpu.gl.uniform1fv(varLoc,vals)}return}input2.texData.slice!=null&&varOffsetLoc!=null&&gpgpu.gl.uniform1i(varOffsetLoc,input2.texData.slice.flatOffset),gpgpu.setInputMatrixTexture(input2.texData.texture,varLoc,i)}}),customSetup!=null&&customSetup(gpgpu,binary.webGLProgram),gpgpu.executeProgram()}function makeShaderKey(program,inputs,output){let keyInputs="";inputs.concat(output).forEach(x=>{let hasOffset=x.texData!=null&&x.texData.slice!=null&&x.texData.slice.flatOffset>0,texShape=x.isUniform?"uniform":x.texData.texShape;keyInputs+=`${x.shape}_${texShape}_${hasOffset}`});let keyUserCode=program.userCode,key=program.constructor.name;return key+="_"+keyInputs+"_"+keyUserCode,key}var{addImpl:addImplCPU,bincountImpl:bincountImplCPU,bincountReduceImpl:bincountReduceImplCPU,ceilImpl:ceilImplCPU,concatImpl:concatImplCPU,expImpl:expImplCPU,expm1Impl:expm1ImplCPU,floorImpl:floorImplCPU,gatherV2Impl:gatherV2ImplCPU,greaterImpl:greaterImplCPU,lessImpl:lessImplCPU,linSpaceImpl:linSpaceImplCPU,logImpl:logImplCPU,maxImpl:maxImplCPU,maximumImpl:maximumImplCPU,minimumImpl:minimumImplCPU,multiplyImpl:multiplyImplCPU,negImpl:negImplCPU,prodImpl:prodImplCPU,rangeImpl:rangeImplCPU,rsqrtImpl:rsqrtImplCPU,simpleAbsImpl:simpleAbsImplCPU,sliceImpl:sliceImplCPU,stridedSliceImpl:stridedSliceImplCPU,subImpl:subImplCPU,tileImpl:tileImplCPU,topKImpl:topKImplCPU,transposeImpl:transposeImplCPU,uniqueImpl:uniqueImplCPU}=shared_exports;function getVecChannels(name,rank){return["x","y","z","w","u","v"].slice(0,rank).map(d=>`${name}.${d}`)}function getChannels(name,rank){return rank===1?[name]:getVecChannels(name,rank)}function getSourceCoords(rank,dims){if(rank===1)return"rc";let coords2="";for(let i=0;ie[n]).join(", ")}function U8(e,t,n,a){let r=t.userCode,s=n.map((h,m)=>{let f={logicalShape:h.shape,texShape:h.isUniform?null:h.texData.texShape,isUniform:h.isUniform,isPacked:h.isUniform?!1:h.texData.isPacked,flatOffset:null};return h.texData!=null&&h.texData.slice!=null&&h.texData.slice.flatOffset>0&&(f.flatOffset=h.texData.slice.flatOffset),{name:t.variableNames[m],shapeInfo:f}}),i=s.map(h=>h.shapeInfo),o={logicalShape:a.shape,texShape:a.texData.texShape,isUniform:!1,isPacked:a.texData.isPacked,flatOffset:null},l=f8(s,o,r,t.packedInputs),c=e.createProgram(l),u=null,p=e.getUniformLocation(c,"NAN",!1);ee().getNumber("WEBGL_VERSION")===1&&(u=e.getUniformLocation(c,"INFINITY",!1));let d={};for(let h=0;h{let r=n.logicalShape,s=t[a],i=s.shape;if(!k.arraysEqual(r,i))throw Error(`Binary was compiled with different shapes than the current args. Shapes ${r} and ${i} must match`);if(n.isUniform&&s.isUniform)return;let o=n.texShape,l=s.isUniform?null:s.texData.texShape;if(!k.arraysEqual(o,l))throw Error(`Binary was compiled with different texture shapes than the current args. Shape ${o} and ${l} must match`)})}function G8(e,t,n,a,r){nS(t.inShapeInfos,n),nS([t.outShapeInfo],[a]);let s=a.texData.texture,i=a.texData.texShape;a.texData.isPacked?e.setOutputPackedMatrixTexture(s,i[0],i[1]):e.setOutputMatrixTexture(s,i[0],i[1]),e.setProgram(t.webGLProgram),ee().getNumber("WEBGL_VERSION")===1&&t.infLoc!==null&&e.gl.uniform1f(t.infLoc,Infinity),t.nanLoc!==null&&e.gl.uniform1f(t.nanLoc,NaN),n.forEach((o,l)=>{let c=t.program.variableNames[l],u=t.uniformLocations[c],p=t.uniformLocations[`offset${c}`];if(u!=null){if(o.isUniform){if(k.sizeFromShape(o.shape)<2)e.gl.uniform1f(u,o.uniformValues[0]);else{let d=o.uniformValues;d instanceof Float32Array||(d=new Float32Array(d)),e.gl.uniform1fv(u,d)}return}o.texData.slice!=null&&p!=null&&e.gl.uniform1i(p,o.texData.slice.flatOffset),e.setInputMatrixTexture(o.texData.texture,u,l)}}),r!=null&&r(e,t.webGLProgram),e.executeProgram()}function H8(e,t,n){let a="";t.concat(n).forEach(i=>{let o=i.texData!=null&&i.texData.slice!=null&&i.texData.slice.flatOffset>0,l=i.isUniform?"uniform":i.texData.texShape;a+=`${i.shape}_${l}_${o}`});let r=e.userCode,s=e.constructor.name;return s+="_"+a+"_"+r,s}var{addImpl:j8,bincountImpl:aS,bincountReduceImpl:q8,ceilImpl:K8,concatImpl:X8,expImpl:Y8,expm1Impl:J8,floorImpl:Z8,gatherV2Impl:Q8,greaterImpl:eK,lessImpl:tK,linSpaceImpl:nK,logImpl:aK,maxImpl:rK,maximumImpl:sK,minimumImpl:iK,multiplyImpl:oK,negImpl:lK,prodImpl:uK,rangeImpl:cK,rsqrtImpl:pK,simpleAbsImpl:rS,sliceImpl:dK,stridedSliceImpl:hK,subImpl:mK,tileImpl:fK,topKImpl:gK,transposeImpl:Dv,uniqueImpl:yK}=ZN;function sS(e,t){return["x","y","z","w","u","v"].slice(0,t).map(n=>`${e}.${n}`)}function gn(e,t){return t===1?[e]:sS(e,t)}function bK(e,t){if(e===1)return"rc";let n="";for(let a=0;a ${shape[0]}`;let cond="";for(let i=rank-2;i= ${shape[i]}`,i ${t[0]}`;let a="";for(let r=e-2;r= ${t[r]}`,r= ${cols}; - bool rEdge = rp1 >= ${rows}; - `}function getOutput(shape,dims){let rank=shape.length,sourceCoords=getSourceCoordsArr(rank,dims);return rank===1?`getA(rc), - rc + 1 >= ${shape[0]} ? 0. : getA(rc + 1), - 0, 0`:`getA(${sourceCoords[0]}), - cEdge ? 0. : getA(${sourceCoords[1]}), - rEdge ? 0. : getA(${sourceCoords[2]}), - rEdge || cEdge ? 0. : getA(${sourceCoords[3]})`}var ReshapePackedProgram=class{constructor(outputShape,inputShape){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=outputShape;let mainLoop="";for(let i=0;i<4;i++){let thisRC="thisRC = rc;";i%2==1&&(thisRC+="thisRC.z += 1;"),i>1&&(thisRC+="thisRC.y += 1;"),mainLoop+=` - ${thisRC} - ${i>0?"if(thisRC.y < rows && thisRC.z < cols){":""} + bool cEdge = cp1 >= ${t}; + bool rEdge = rp1 >= ${n}; + `}function wK(e,t){let n=e.length,a=IK(n,t);return n===1?`getA(rc), + rc + 1 >= ${e[0]} ? 0. : getA(rc + 1), + 0, 0`:`getA(${a[0]}), + cEdge ? 0. : getA(${a[1]}), + rEdge ? 0. : getA(${a[2]}), + rEdge || cEdge ? 0. : getA(${a[3]})`}var iS=class{constructor(e,t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e;let n="";for(let a=0;a<4;a++){let r="thisRC = rc;";a%2==1&&(r+="thisRC.z += 1;"),a>1&&(r+="thisRC.y += 1;"),n+=` + ${r} + ${a>0?"if(thisRC.y < rows && thisRC.z < cols){":""} int flatIndex = getFlatIndex(thisRC); ivec3 inputRC = inputCoordsFromReshapedOutCoords(flatIndex); vec2 inputRCInnerDims = vec2(float(inputRC.y),float(inputRC.z)); - result[${i}] = + result[${a}] = getChannel(getA(inputRC.x, inputRC.y, inputRC.z), inputRCInnerDims); - ${i>0?"}":""} + ${a>0?"}":""} `}this.userCode=` - ${getReshapedInputCoords(inputShape)} - ${getFlatIndexFrom3D(outputShape)} + ${NK(t)} + ${$v(e)} void main() { ivec3 rc = getOutputCoords(); @@ -877,21 +877,21 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, vec4 result = vec4(0.); ivec3 thisRC; - int rows = ${outputShape[1]}; - int cols = ${outputShape[2]}; + int rows = ${e[1]}; + int cols = ${e[2]}; - ${mainLoop} + ${n} setOutput(result); } - `}};function getReshapedInputCoords(shape){return` + `}};function NK(e){return` ivec3 inputCoordsFromReshapedOutCoords(int index) { - ${getLogicalCoordinatesFromFlatIndex(["r","c","d"],shape)} + ${ji(["r","c","d"],e)} return ivec3(r, c, d); } - `}var TextureManager=class{constructor(gpgpu){this.gpgpu=gpgpu,this.numUsedTextures=0,this.numFreeTextures=0,this._numBytesAllocated=0,this._numBytesFree=0,this.freeTextures={},this.logEnabled=!1,this.usedTextures={}}acquireTexture(shapeRC,usage,isPacked){let physicalTexType=getPhysicalFromLogicalTextureType(usage,isPacked),shapeKey=getKeyFromTextureShape(shapeRC,physicalTexType,isPacked);shapeKey in this.freeTextures||(this.freeTextures[shapeKey]=[]),shapeKey in this.usedTextures||(this.usedTextures[shapeKey]=[]);let texBytes=computeBytes(shapeRC,physicalTexType,this.gpgpu.gl,this.gpgpu.textureConfig,isPacked);if(this.freeTextures[shapeKey].length>0){this.numFreeTextures--,this.numUsedTextures++,this._numBytesFree-=texBytes,this.log();let newTexture2=this.freeTextures[shapeKey].shift();return this.usedTextures[shapeKey].push(newTexture2),newTexture2}let newTexture;return physicalTexType===PhysicalTextureType.PACKED_2X2_FLOAT32?newTexture=this.gpgpu.createPackedMatrixTexture(shapeRC[0],shapeRC[1]):physicalTexType===PhysicalTextureType.PACKED_2X2_FLOAT16?newTexture=this.gpgpu.createFloat16PackedMatrixTexture(shapeRC[0],shapeRC[1]):physicalTexType===PhysicalTextureType.UNPACKED_FLOAT32?newTexture=this.gpgpu.createFloat32MatrixTexture(shapeRC[0],shapeRC[1]):physicalTexType===PhysicalTextureType.UNPACKED_FLOAT16?newTexture=this.gpgpu.createFloat16MatrixTexture(shapeRC[0],shapeRC[1]):physicalTexType===PhysicalTextureType.PACKED_4X1_UNSIGNED_BYTE&&(newTexture=this.gpgpu.createUnsignedBytesMatrixTexture(shapeRC[0],shapeRC[1])),this.usedTextures[shapeKey].push(newTexture),this.numUsedTextures++,this._numBytesAllocated+=texBytes,this.log(),newTexture}releaseTexture(texture,shape,logicalTexType,isPacked){if(this.freeTextures==null)return;let physicalTexType=getPhysicalFromLogicalTextureType(logicalTexType,isPacked),shapeKey=getKeyFromTextureShape(shape,physicalTexType,isPacked);shapeKey in this.freeTextures||(this.freeTextures[shapeKey]=[]);let texBytes=computeBytes(shape,physicalTexType,this.gpgpu.gl,this.gpgpu.textureConfig,isPacked),deleteTexThreshold=env().get("WEBGL_DELETE_TEXTURE_THRESHOLD");deleteTexThreshold!==-1&&this._numBytesAllocated>deleteTexThreshold?(this.gpgpu.deleteMatrixTexture(texture),this._numBytesAllocated-=texBytes):(this.freeTextures[shapeKey].push(texture),this.numFreeTextures++,this._numBytesFree+=texBytes),this.numUsedTextures--;let texList=this.usedTextures[shapeKey],texIndex=texList.indexOf(texture);if(texIndex<0)throw new Error("Cannot release a texture that was never provided by this texture manager");texList.splice(texIndex,1),this.log()}log(){if(!this.logEnabled)return;let total=this.numFreeTextures+this.numUsedTextures;console.log("Free/Used",`${this.numFreeTextures} / ${this.numUsedTextures}`,`(${total})`);let freeRatio=this._numBytesFree/this._numBytesAllocated;console.log(`Bytes allocated: ${this._numBytesAllocated}`),console.log(`Bytes unused: ${this._numBytesFree} (${Math.round(100*freeRatio)}%)`)}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 texShape in this.freeTextures)this.freeTextures[texShape].forEach(tex=>{this.gpgpu.deleteMatrixTexture(tex)});for(let texShape in this.usedTextures)this.usedTextures[texShape].forEach(tex=>{this.gpgpu.deleteMatrixTexture(tex)});this.freeTextures=null,this.usedTextures=null,this.numUsedTextures=0,this.numFreeTextures=0,this._numBytesAllocated=0,this._numBytesFree=0}}};function numBytesForInternalFormat(gl,internalFormat){let glany=gl;if(internalFormat===glany.R32F)return 4;if(internalFormat===glany.R16F)return 2;if(internalFormat===glany.RGBA32F||internalFormat===gl.RGBA)return 16;if(internalFormat===glany.RGBA16F)return 8;throw new Error(`Unknown internal format ${internalFormat}`)}function computeBytes(shape,physicalTexType,gl,textureConfig,isPacked){let internalFormat=internalFormatForPhysicalTexType(physicalTexType,textureConfig),numElements;if(isPacked){let[packedWidth,packedHeight]=getPackedMatrixTextureShapeWidthHeight(shape[0],shape[1]);numElements=packedWidth*packedHeight}else{let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(shape[0],shape[1]);numElements=width*height}let bytesPerElement2=numBytesForInternalFormat(gl,internalFormat);return numElements*bytesPerElement2}function internalFormatForPhysicalTexType(physicalTexType,textureConfig){switch(physicalTexType){case PhysicalTextureType.PACKED_2X2_FLOAT32:return getInternalFormatForPackedMatrixTexture(textureConfig);case PhysicalTextureType.PACKED_2X2_FLOAT16:return getInternalFormatForFloat16PackedMatrixTexture(textureConfig);case PhysicalTextureType.UNPACKED_FLOAT32:return getInternalFormatForFloat32MatrixTexture(textureConfig);case PhysicalTextureType.UNPACKED_FLOAT16:return getInternalFormatForFloat16MatrixTexture(textureConfig);case PhysicalTextureType.PACKED_4X1_UNSIGNED_BYTE:return getInternalFormatForUnsignedBytesMatrixTexture(textureConfig);default:throw new Error(`Unknown physical texture type ${physicalTexType}`)}}function getPhysicalTextureForRendering(isPacked){return env().getBool("WEBGL_RENDER_FLOAT32_ENABLED")?isPacked?PhysicalTextureType.PACKED_2X2_FLOAT32:PhysicalTextureType.UNPACKED_FLOAT32:isPacked?PhysicalTextureType.PACKED_2X2_FLOAT16:PhysicalTextureType.UNPACKED_FLOAT16}function getPhysicalFromLogicalTextureType(logicalTexType,isPacked){if(logicalTexType===TextureUsage.UPLOAD)return PhysicalTextureType.PACKED_2X2_FLOAT32;if(logicalTexType===TextureUsage.RENDER||logicalTexType==null)return getPhysicalTextureForRendering(isPacked);if(logicalTexType===TextureUsage.DOWNLOAD||logicalTexType===TextureUsage.PIXELS)return PhysicalTextureType.PACKED_4X1_UNSIGNED_BYTE;throw new Error(`Unknown logical texture type ${logicalTexType}`)}function getKeyFromTextureShape(shapeRowsCol,physicalTexType,isPacked){return`${shapeRowsCol[0]}_${shapeRowsCol[1]}_${physicalTexType}_${isPacked}`}var UnaryOpProgram=class{constructor(aShape,opSnippet){this.variableNames=["A"],this.outputShape=aShape,this.userCode=` + `}var TK=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 a=lS(t,n),r=uS(e,a,n);r in this.freeTextures||(this.freeTextures[r]=[]),r in this.usedTextures||(this.usedTextures[r]=[]);let s=oS(e,a,this.gpgpu.gl,this.gpgpu.textureConfig,n);if(this.freeTextures[r].length>0){this.numFreeTextures--,this.numUsedTextures++,this._numBytesFree-=s,this.log();let o=this.freeTextures[r].shift();return this.usedTextures[r].push(o),o}let i;return a===rn.PACKED_2X2_FLOAT32?i=this.gpgpu.createPackedMatrixTexture(e[0],e[1]):a===rn.PACKED_2X2_FLOAT16?i=this.gpgpu.createFloat16PackedMatrixTexture(e[0],e[1]):a===rn.UNPACKED_FLOAT32?i=this.gpgpu.createFloat32MatrixTexture(e[0],e[1]):a===rn.UNPACKED_FLOAT16?i=this.gpgpu.createFloat16MatrixTexture(e[0],e[1]):a===rn.PACKED_4X1_UNSIGNED_BYTE&&(i=this.gpgpu.createUnsignedBytesMatrixTexture(e[0],e[1])),this.usedTextures[r].push(i),this.numUsedTextures++,this._numBytesAllocated+=s,this.log(),i}releaseTexture(e,t,n,a){if(this.freeTextures==null)return;let r=lS(n,a),s=uS(t,r,a);s in this.freeTextures||(this.freeTextures[s]=[]);let i=oS(t,r,this.gpgpu.gl,this.gpgpu.textureConfig,a),o=ee().get("WEBGL_DELETE_TEXTURE_THRESHOLD");o!==-1&&this._numBytesAllocated>o?(this.gpgpu.deleteMatrixTexture(e),this._numBytesAllocated-=i):(this.freeTextures[s].push(e),this.numFreeTextures++,this._numBytesFree+=i),this.numUsedTextures--;let l=this.usedTextures[s],c=l.indexOf(e);if(c<0)throw new Error("Cannot release a texture that was never provided by this texture manager");l.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(`Bytes allocated: ${this._numBytesAllocated}`),console.log(`Bytes unused: ${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 SK(e,t){let n=e;if(t===n.R32F)return 4;if(t===n.R16F)return 2;if(t===n.RGBA32F||t===e.RGBA)return 16;if(t===n.RGBA16F)return 8;throw new Error(`Unknown internal format ${t}`)}function oS(e,t,n,a,r){let s=CK(t,a),i;if(r){let[l,c]=iu(e[0],e[1]);i=l*c}else{let[l,c]=gp(e[0],e[1]);i=l*c}let o=SK(n,s);return i*o}function CK(e,t){switch(e){case rn.PACKED_2X2_FLOAT32:return JT(t);case rn.PACKED_2X2_FLOAT16:return ZT(t);case rn.UNPACKED_FLOAT32:return KT(t);case rn.UNPACKED_FLOAT16:return XT(t);case rn.PACKED_4X1_UNSIGNED_BYTE:return YT(t);default:throw new Error(`Unknown physical texture type ${e}`)}}function EK(e){return ee().getBool("WEBGL_RENDER_FLOAT32_ENABLED")?e?rn.PACKED_2X2_FLOAT32:rn.UNPACKED_FLOAT32:e?rn.PACKED_2X2_FLOAT16:rn.UNPACKED_FLOAT16}function lS(e,t){if(e===aa.UPLOAD)return rn.PACKED_2X2_FLOAT32;if(e===aa.RENDER||e==null)return EK(t);if(e===aa.DOWNLOAD||e===aa.PIXELS)return rn.PACKED_4X1_UNSIGNED_BYTE;throw new Error(`Unknown logical texture type ${e}`)}function uS(e,t,n){return`${e[0]}_${e[1]}_${t}_${n}`}var hs=class{constructor(e,t){this.variableNames=["A"],this.outputShape=e,this.userCode=` float unaryOperation(float x) { - ${opSnippet} + ${t} } void main() { @@ -900,11 +900,11 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, setOutput(y); } - `}},CHECK_NAN_SNIPPET="if (isnan(x)) return x;",LINEAR="return x;",ABS="return abs(x);",ELU2="return (x >= 0.0) ? x : (exp(x) - 1.0);",RELU=CHECK_NAN_SNIPPET+` + `}},Pa="if (isnan(x)) return x;",_K="return x;",cS="return abs(x);",FK="return (x >= 0.0) ? x : (exp(x) - 1.0);",AK=Pa+` return (x < 0.0) ? 0.0 : x; -`,RELU6=CHECK_NAN_SNIPPET+` +`,$K=Pa+` return (x < 0.0) ? 0.0 : min(6.0, x); -`,CLONE="return x;",LINEAR2="return x;",ELU3=` +`,Bm="return x;",DK="return x;",MK=` vec4 result; result.r = (x.r >= 0.0) ? x.r : (exp(x.r) - 1.0); @@ -913,7 +913,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, result.a = (x.a >= 0.0) ? x.a : (exp(x.a) - 1.0); return result; -`,RELU2=` +`,RK=` vec4 result = x * vec4(greaterThanEqual(x, vec4(0.0))); bvec4 isNaN = isnan(x); @@ -923,7 +923,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, result.a = isNaN.a ? x.a : result.a; return result; -`,RELU62=` +`,PK=` vec4 result = min(x, vec4(6.)) * vec4(greaterThanEqual(x, vec4(0.0))); bvec4 isNaN = isnan(x); @@ -933,9 +933,9 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, result.a = isNaN.a ? x.a : result.a; return result; -`,UnaryOpPackedProgram=class{constructor(aShape,opSnippet){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=aShape,this.userCode=` +`,hu=class{constructor(e,t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.userCode=` vec4 unaryOperation(vec4 x) { - ${opSnippet} + ${t} } void main() { @@ -944,19 +944,19 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, setOutput(y); } - `}},UnpackProgram=class{constructor(outputShape){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outputShape=outputShape;let rank=outputShape.length,channels=getChannels("rc",rank),dtype=getCoordsDataType(rank),sourceCoords=getSourceCoords(rank,channels),innerDims=channels.slice(-2),coords2=rank<=1?"rc":`vec2(${innerDims.join(",")})`;this.userCode=` + `}},OK=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outputShape=e;let t=e.length,n=gn("rc",t),a=mt(t),r=bK(t,n),s=n.slice(-2),i=t<=1?"rc":`vec2(${s.join(",")})`;this.userCode=` void main() { - ${dtype} rc = getOutputCoords(); - vec4 packedInput = getA(${sourceCoords}); + ${a} rc = getOutputCoords(); + vec4 packedInput = getA(${r}); - setOutput(getChannel(packedInput, ${coords2})); + setOutput(getChannel(packedInput, ${i})); } - `}},whereImpl3=kernel_impls_exports.whereImpl,EPSILON_FLOAT322=1e-7,EPSILON_FLOAT162=1e-4,binaryCaches={};function getBinaryCache(webGLVersion){return webGLVersion in binaryCaches||(binaryCaches[webGLVersion]={}),binaryCaches[webGLVersion]}var CPU_HANDOFF_SIZE_THRESHOLD=128,BEFORE_PAGING_CONSTANT=600;function numMBBeforeWarning(){return env().global.screen==null?1024:env().global.screen.height*env().global.screen.width*window.devicePixelRatio*BEFORE_PAGING_CONSTANT/1024/1024}var MathBackendWebGL=class extends KernelBackend{constructor(gpgpu){super();if(this.pendingRead=new WeakMap,this.pendingDisposal=new WeakSet,this.dataRefCount=new WeakMap,this.numBytesInGPU=0,this.uploadWaitMs=0,this.downloadWaitMs=0,this.warnedAboutMemory=!1,this.warnedAboutCPUBackend=!1,this.pendingDeletes=0,this.disposed=!1,!env().getBool("HAS_WEBGL"))throw new Error("WebGL is not supported on this device");if(gpgpu==null){let gl=getWebGLContext(env().getNumber("WEBGL_VERSION"));this.binaryCache=getBinaryCache(env().getNumber("WEBGL_VERSION")),this.gpgpu=new GPGPUContext(gl),this.canvas=gl.canvas,this.gpgpuCreatedLocally=!0}else this.gpgpu=gpgpu,this.binaryCache={},this.gpgpuCreatedLocally=!1,this.canvas=gpgpu.gl.canvas;this.textureManager=new TextureManager(this.gpgpu),this.numMBBeforeWarning=numMBBeforeWarning(),this.texData=new DataStorage(this,engine())}numDataIds(){return this.texData.numDataIds()+(this.cpuBackend?this.cpuBackend.numDataIds():0)-this.pendingDeletes}write(values,shape,dtype){if((env().getBool("WEBGL_CHECK_NUMERICAL_PROBLEMS")||env().getBool("DEBUG"))&&this.checkNumericalProblems(values),dtype==="complex64"&&values!=null)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");let dataId={};return this.texData.set(dataId,{shape,dtype,values,usage:TextureUsage.UPLOAD,refCount:1,complexParentRefCount:0}),dataId}incRef(dataId){let texData=this.texData.get(dataId);texData.refCount++}decRef(dataId){if(this.texData.has(dataId)){let texData=this.texData.get(dataId);texData.refCount--}}move(dataId,values,shape,dtype){if(env().getBool("DEBUG")&&this.checkNumericalProblems(values),dtype==="complex64")throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");this.texData.set(dataId,{shape,dtype,values,usage:TextureUsage.UPLOAD,refCount:1,complexParentRefCount:0})}disposeIntermediateTensorInfo(tensorInfo){let dataId=tensorInfo.dataId;if(this.texData.has(dataId)){let textureData=this.texData.get(dataId);textureData.refCount--,textureData.refCount<1&&this.disposeData(dataId)}}readSync(dataId){let texData=this.texData.get(dataId),{values,dtype,complexTensorInfos,slice:slice5,shape,isPacked}=texData;if(slice5!=null){let program;isPacked?program=new UnaryOpPackedProgram(shape,CLONE):program=new UnaryOpProgram(shape,CLONE);let res=this.runWebGLProgram(program,[{dataId,shape,dtype}],dtype),data=this.readSync(res.dataId);return this.disposeIntermediateTensorInfo(res),data}if(values!=null)return this.convertAndCacheOnCPU(dataId);if(dtype==="string")return values;let shouldTimeProgram=this.activeTimers!=null,start;shouldTimeProgram&&(start=util_exports.now());let result;if(dtype==="complex64"){let realValues=this.readSync(complexTensorInfos.real.dataId),imagValues=this.readSync(complexTensorInfos.imag.dataId);result=backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}else result=this.getValuesFromTexture(dataId);return shouldTimeProgram&&(this.downloadWaitMs+=util_exports.now()-start),this.convertAndCacheOnCPU(dataId,result)}async read(dataId){if(this.pendingRead.has(dataId)){let subscribers2=this.pendingRead.get(dataId);return new Promise(resolve=>subscribers2.push(resolve))}let texData=this.texData.get(dataId),{values,shape,slice:slice5,dtype,complexTensorInfos,isPacked}=texData;if(slice5!=null){let program;isPacked?program=new UnaryOpPackedProgram(shape,CLONE):program=new UnaryOpProgram(shape,CLONE);let res=this.runWebGLProgram(program,[{dataId,shape,dtype}],dtype),data=this.read(res.dataId);return this.disposeIntermediateTensorInfo(res),data}if(values!=null)return this.convertAndCacheOnCPU(dataId);if(!env().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")&&env().getNumber("WEBGL_VERSION")===2)throw new Error("tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.");let buffer2=null,tmpDownloadTarget;if(dtype!=="complex64"&&env().get("WEBGL_BUFFER_SUPPORTED")){tmpDownloadTarget=this.decode(dataId);let tmpData=this.texData.get(tmpDownloadTarget.dataId);buffer2=this.gpgpu.createBufferFromTexture(tmpData.texture,...getDenseTexShape(shape))}this.pendingRead.set(dataId,[]),dtype!=="complex64"&&await this.gpgpu.createAndWaitForFence();let vals;if(dtype==="complex64"){let ps=await Promise.all([this.read(complexTensorInfos.real.dataId),this.read(complexTensorInfos.imag.dataId)]),realValues=ps[0],imagValues=ps[1];vals=backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}else if(buffer2==null)vals=this.getValuesFromTexture(dataId);else{let size=util_exports.sizeFromShape(shape);vals=this.gpgpu.downloadFloat32MatrixFromBuffer(buffer2,size)}tmpDownloadTarget!=null&&this.disposeIntermediateTensorInfo(tmpDownloadTarget);let dTypeVals=this.convertAndCacheOnCPU(dataId,vals),subscribers=this.pendingRead.get(dataId);return this.pendingRead.delete(dataId),subscribers.forEach(resolve=>resolve(dTypeVals)),this.pendingDisposal.has(dataId)&&(this.pendingDisposal.delete(dataId),this.disposeData(dataId),this.pendingDeletes--),dTypeVals}bufferSync(t){let data=this.readSync(t.dataId),decodedData=data;if(t.dtype==="string")try{decodedData=data.map(d=>util_exports.decodeString(d))}catch(_a){throw new Error("Failed to decode encoded string bytes into utf-8")}return buffer(t.shape,t.dtype,decodedData)}checkNumericalProblems(values){if(values!=null)for(let i=0;id.query)).filter(d=>d!=null),flattenedActiveTimerNames=util_exports.flatten(this.activeTimers.map(d=>d.name)).filter(d=>d!=null);this.activeTimers=oldActiveTimers,outerMostTime&&(this.programTimersStack=null);let res={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null};if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0){let kernelMs=await Promise.all(flattenedActiveTimerQueries);res.kernelMs=util_exports.sum(kernelMs),res.getExtraProfileInfo=()=>kernelMs.map((d,i)=>({name:flattenedActiveTimerNames[i],ms:d})).map(d=>`${d.name}: ${d.ms}`).join(", ")}else res.kernelMs={error:"WebGL query timers are not supported in this environment."};return this.uploadWaitMs=0,this.downloadWaitMs=0,res}memory(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU,numBytesInGPUAllocated:this.textureManager.numBytesAllocated,numBytesInGPUFree:this.textureManager.numBytesFree}}startTimer(){return env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?this.gpgpu.beginQuery():{startMs:util_exports.now(),endMs:null}}endTimer(query){return env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?(this.gpgpu.endQuery(),query):(query.endMs=util_exports.now(),query)}async getQueryTime(query){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0)return this.gpgpu.waitForQueryAndGetTime(query);let timerQuery=query;return timerQuery.endMs-timerQuery.startMs}disposeData(dataId){if(this.pendingDisposal.has(dataId))return;if(this.pendingRead.has(dataId)){this.pendingDisposal.add(dataId),this.pendingDeletes++;return}if(!this.texData.has(dataId))return;if(this.texData.get(dataId).complexParentRefCount>0){this.texData.get(dataId).refCount--;return}this.releaseGPUData(dataId);let{complexTensorInfos}=this.texData.get(dataId);complexTensorInfos!=null&&(this.texData.get(complexTensorInfos.real.dataId).complexParentRefCount--,this.disposeIntermediateTensorInfo(complexTensorInfos.real),this.texData.get(complexTensorInfos.imag.dataId).complexParentRefCount--,this.disposeIntermediateTensorInfo(complexTensorInfos.imag)),this.texData.delete(dataId)}releaseGPUData(dataId){let{texture,dtype,texShape,usage,isPacked,slice:slice5}=this.texData.get(dataId),key=slice5&&slice5.origDataId||dataId,refCount=this.dataRefCount.get(key);refCount>1?this.dataRefCount.set(key,refCount-1):(this.dataRefCount.delete(key),texture!=null&&(this.numBytesInGPU-=this.computeBytes(texShape,dtype),this.textureManager.releaseTexture(texture,texShape,usage,isPacked)));let texData=this.texData.get(dataId);texData.texture=null,texData.texShape=null,texData.isPacked=!1,texData.slice=null}getTexture(dataId){return this.uploadToGPU(dataId),this.texData.get(dataId).texture}getDataInfo(dataId){return this.texData.get(dataId)}getCPUBackend(){return env().getBool("WEBGL_CPU_FORWARD")?(this.cpuBackend==null&&(this.cpuBackend=engine().findBackend("cpu")),this.cpuBackend):null}shouldExecuteOnCPU(inputs,sizeThreshold=CPU_HANDOFF_SIZE_THRESHOLD){let cpuBackend=this.getCPUBackend();return!env().getBool("IS_TEST")&&!this.warnedAboutCPUBackend&&cpuBackend==null&&(console.warn("Your application contains ops that are small enough to be executed on the CPU backend, however the CPU backend cannot be found. Consider importing the CPU backend (@tensorflow/tfjs-backend-cpu) for better performance."),this.warnedAboutCPUBackend=!0),cpuBackend!=null&&inputs.every(input2=>this.texData.get(input2.dataId).texture==null&&util_exports.sizeFromShape(input2.shape)0&&util_exports.isString(values[0])){let encodedValues=values.map(d=>util_exports.encodeString(d));dataId=this.write(encodedValues,shape,dtype)}else dataId=this.write(values,shape,dtype);return this.texData.get(dataId).usage=null,{dataId,shape,dtype}}makeOutput(shape,dtype,values){let{dataId}=this.makeTensorInfo(shape,dtype,values);return engine().makeTensorFromDataId(dataId,shape,dtype,this)}unpackTensor(input2){let program=new UnpackProgram(input2.shape);return this.runWebGLProgram(program,[input2],input2.dtype)}packTensor(input2){let program=new PackProgram(input2.shape),preventEagerUnpackingOutput=!0;return this.runWebGLProgram(program,[input2],input2.dtype,null,preventEagerUnpackingOutput)}packedReshape(input2,afterShape){let input3DShape=[getBatchDim(input2.shape),...getRowsCols(input2.shape)],input3D={dtype:input2.dtype,shape:input3DShape,dataId:input2.dataId},afterShapeAs3D=[getBatchDim(afterShape),...getRowsCols(afterShape)],program=new ReshapePackedProgram(afterShapeAs3D,input3DShape),preventEagerUnpackingOfOutput=!0,output=this.runWebGLProgram(program,[input3D],input2.dtype,null,preventEagerUnpackingOfOutput);return{dataId:output.dataId,shape:afterShape,dtype:output.dtype}}decode(dataId){let texData=this.texData.get(dataId),{isPacked,shape,dtype}=texData,shapeAs3D=getShapeAs3D(shape),program;isPacked?program=new DecodeMatrixPackedProgram(shapeAs3D):program=new DecodeMatrixProgram(shapeAs3D);let preventEagerUnpackingOfOutput=!0,out=this.runWebGLProgram(program,[{shape:shapeAs3D,dtype,dataId}],dtype,null,preventEagerUnpackingOfOutput);return{dtype,shape,dataId:out.dataId}}runWebGLProgram(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput=!1){let output=this.makeTensorInfo(program.outputShape,outputDtype),outData=this.texData.get(output.dataId);if(program.packedOutput&&(outData.isPacked=!0),program.outPackingScheme===PackingScheme.DENSE){let texelShape=getDenseTexShape(program.outputShape);outData.texShape=texelShape.map(d=>d*2)}if(program.outTexUsage!=null&&(outData.usage=program.outTexUsage),util_exports.sizeFromShape(output.shape)===0)return outData.values=util_exports.getTypedArrayFromDType(output.dtype,0),output;let dataToDispose=[],inputsData=inputs.map(input2=>{if(input2.dtype==="complex64")throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");let texData=this.texData.get(input2.dataId);if(texData.texture==null){if(!program.packedInputs&&util_exports.sizeFromShape(input2.shape)<=env().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:input2.shape,texData:null,isUniform:!0,uniformValues:texData.values};program.packedInputs&&(texData.isPacked=!0,texData.shape=input2.shape)}else if(!!texData.isPacked!=!!program.packedInputs)input2=texData.isPacked?this.unpackTensor(input2):this.packTensor(input2),dataToDispose.push(input2),texData=this.texData.get(input2.dataId);else if(texData.isPacked&&!isReshapeFree(texData.shape,input2.shape)){let savedInput=input2,targetShape=input2.shape;input2.shape=texData.shape,input2=this.packedReshape(input2,targetShape),dataToDispose.push(input2),texData=this.texData.get(input2.dataId),savedInput.shape=targetShape}return this.uploadToGPU(input2.dataId),{shape:input2.shape,texData,isUniform:!1}});this.uploadToGPU(output.dataId);let outputData={shape:output.shape,texData:outData,isUniform:!1},key=makeShaderKey(program,inputsData,outputData),binary=this.getAndSaveBinary(key,()=>compileProgram(this.gpgpu,program,inputsData,outputData)),shouldTimeProgram=this.activeTimers!=null,query;if(shouldTimeProgram&&(query=this.startTimer()),runProgram(this.gpgpu,binary,inputsData,outputData,customSetup),dataToDispose.forEach(info=>this.disposeIntermediateTensorInfo(info)),shouldTimeProgram&&(query=this.endTimer(query),this.activeTimers.push({name:program.constructor.name,query:this.getQueryTime(query)})),!env().getBool("WEBGL_LAZILY_UNPACK")&&outData.isPacked&&preventEagerUnpackingOfOutput===!1){let unpacked=this.unpackTensor(output);return this.disposeIntermediateTensorInfo(output),unpacked}return output}compileAndRun(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput=!1){outputDtype=outputDtype||inputs[0].dtype;let outInfo=this.runWebGLProgram(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput);return engine().makeTensorFromDataId(outInfo.dataId,outInfo.shape,outInfo.dtype)}getAndSaveBinary(key,getBinary){return key in this.binaryCache||(this.binaryCache[key]=getBinary()),this.binaryCache[key]}getTextureManager(){return this.textureManager}dispose(){this.disposed||(env().getBool("IS_TEST")||Object.keys(this.binaryCache).forEach(key=>{this.gpgpu.deleteProgram(this.binaryCache[key].webGLProgram),delete this.binaryCache[key]}),this.textureManager.dispose(),this.canvas!=null&&typeof HTMLCanvasElement!="undefined"&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0)}floatPrecision(){return this.floatPrecisionValue==null&&(this.floatPrecisionValue=tidy(()=>{if(!env().get("WEBGL_RENDER_FLOAT32_ENABLED")){let debugFlag=env().getBool("DEBUG");env().set("DEBUG",!1);let underflowCheckValue=this.abs(scalar(1e-8)).dataSync()[0];if(env().set("DEBUG",debugFlag),underflowCheckValue>0)return 32}return 16})),this.floatPrecisionValue}epsilon(){return this.floatPrecision()===32?EPSILON_FLOAT322:EPSILON_FLOAT162}uploadToGPU(dataId){let texData=this.texData.get(dataId),{shape,dtype,values,texture,usage,isPacked}=texData;if(texture!=null)return;let shouldTimeProgram=this.activeTimers!=null,start;shouldTimeProgram&&(start=util_exports.now());let texShape=texData.texShape;if(texShape==null&&(texShape=getTextureShapeFromLogicalShape(shape,isPacked),texData.texShape=texShape),values!=null){let shapeAs3D=getShapeAs3D(shape),program,width=texShape[1],height=texShape[0],isByteArray=values instanceof Uint8Array;isPacked?([width,height]=getPackedMatrixTextureShapeWidthHeight(texShape[0],texShape[1]),program=new EncodeMatrixPackedProgram(shapeAs3D,[height,width],isByteArray)):program=new EncodeMatrixProgram(shapeAs3D,[height,width],isByteArray);let tempDenseInputHandle=this.makeTensorInfo([height,width],dtype);isByteArray?this.texData.get(tempDenseInputHandle.dataId).usage=TextureUsage.PIXELS:this.texData.get(tempDenseInputHandle.dataId).usage=TextureUsage.UPLOAD,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(tempDenseInputHandle.dataId),width,height,values);let preventEagerUnpacking=!0,encodedOutputTarget=this.runWebGLProgram(program,[tempDenseInputHandle],dtype,null,preventEagerUnpacking),outputTexData=this.texData.get(encodedOutputTarget.dataId);texData.texture=outputTexData.texture,texData.texShape=outputTexData.texShape,texData.isPacked=outputTexData.isPacked,texData.usage=outputTexData.usage,this.disposeIntermediateTensorInfo(tempDenseInputHandle),this.texData.delete(encodedOutputTarget.dataId),texData.values=null,shouldTimeProgram&&(this.uploadWaitMs+=util_exports.now()-start)}else{let newTexture=this.acquireTexture(texShape,usage,dtype,isPacked);texData.texture=newTexture}}convertAndCacheOnCPU(dataId,float32Values){let texData=this.texData.get(dataId),{dtype}=texData;return this.releaseGPUData(dataId),float32Values!=null&&(texData.values=float32ToTypedArray(float32Values,dtype)),texData.values}acquireTexture(texShape,texType,dtype,isPacked){if(this.numBytesInGPU+=this.computeBytes(texShape,dtype),!this.warnedAboutMemory&&this.numBytesInGPU>this.numMBBeforeWarning*1024*1024){let mb=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn(`High memory usage in GPU: ${mb} MB, most likely due to a memory leak`)}return this.textureManager.acquireTexture(texShape,texType,isPacked)}computeBytes(shape,dtype){return shape[0]*shape[1]*util_exports.bytesPerElement(dtype)}};function float32ToTypedArray(a,dtype){if(dtype==="float32"||dtype==="complex64")return a;if(dtype==="int32"||dtype==="bool"){let result=dtype==="int32"?new Int32Array(a.length):new Uint8Array(a.length);for(let i=0;inew MathBackendWebGL,2);var CHECK_NAN_SNIPPET2=` + `}},LK=Ja.whereImpl,zK=1e-7,BK=1e-4,Mv={};function WK(e){return e in Mv||(Mv[e]={}),Mv[e]}var VK=128,UK=600;function GK(){return ee().global.screen==null?1024:ee().global.screen.height*ee().global.screen.width*window.devicePixelRatio*UK/1024/1024}var jK=class extends nc{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.warnedAboutMemory=!1,this.warnedAboutCPUBackend=!1,this.pendingDeletes=0,this.disposed=!1,!ee().getBool("HAS_WEBGL"))throw new Error("WebGL is not supported on this device");if(e==null){let t=rr(ee().getNumber("WEBGL_VERSION"));this.binaryCache=WK(ee().getNumber("WEBGL_VERSION")),this.gpgpu=new i8(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 TK(this.gpgpu),this.numMBBeforeWarning=GK(),this.texData=new gd(this,Zr())}numDataIds(){return this.texData.numDataIds()+(this.cpuBackend?this.cpuBackend.numDataIds():0)-this.pendingDeletes}write(e,t,n){if((ee().getBool("WEBGL_CHECK_NUMERICAL_PROBLEMS")||ee().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 a={};return this.texData.set(a,{shape:t,dtype:n,values:e,usage:aa.UPLOAD,refCount:1,complexParentRefCount:0}),a}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,a){if(ee().getBool("DEBUG")&&this.checkNumericalProblems(t),a==="complex64")throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");this.texData.set(e,{shape:n,dtype:a,values:t,usage:aa.UPLOAD,refCount:1,complexParentRefCount:0})}disposeIntermediateTensorInfo(e){let t=e.dataId;if(this.texData.has(t)){let n=this.texData.get(t);n.refCount--,n.refCount<1&&this.disposeData(t)}}readSync(e){let t=this.texData.get(e),{values:n,dtype:a,complexTensorInfos:r,slice:s,shape:i,isPacked:o}=t;if(s!=null){let p;o?p=new hu(i,Bm):p=new hs(i,Bm);let d=this.runWebGLProgram(p,[{dataId:e,shape:i,dtype:a}],a),h=this.readSync(d.dataId);return this.disposeIntermediateTensorInfo(d),h}if(n!=null)return this.convertAndCacheOnCPU(e);if(a==="string")return n;let l=this.activeTimers!=null,c;l&&(c=k.now());let u;if(a==="complex64"){let p=this.readSync(r.real.dataId),d=this.readSync(r.imag.dataId);u=_.mergeRealAndImagArrays(p,d)}else u=this.getValuesFromTexture(e);return l&&(this.downloadWaitMs+=k.now()-c),this.convertAndCacheOnCPU(e,u)}async read(e){if(this.pendingRead.has(e)){let h=this.pendingRead.get(e);return new Promise(m=>h.push(m))}let t=this.texData.get(e),{values:n,shape:a,slice:r,dtype:s,complexTensorInfos:i,isPacked:o}=t;if(r!=null){let h;o?h=new hu(a,Bm):h=new hs(a,Bm);let m=this.runWebGLProgram(h,[{dataId:e,shape:a,dtype:s}],s),f=this.read(m.dataId);return this.disposeIntermediateTensorInfo(m),f}if(n!=null)return this.convertAndCacheOnCPU(e);if(!ee().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")&&ee().getNumber("WEBGL_VERSION")===2)throw new Error("tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.");let l=null,c;if(s!=="complex64"&&ee().get("WEBGL_BUFFER_SUPPORTED")){c=this.decode(e);let h=this.texData.get(c.dataId);l=this.gpgpu.createBufferFromTexture(h.texture,...yp(a))}this.pendingRead.set(e,[]),s!=="complex64"&&await this.gpgpu.createAndWaitForFence();let u;if(s==="complex64"){let h=await Promise.all([this.read(i.real.dataId),this.read(i.imag.dataId)]),m=h[0],f=h[1];u=_.mergeRealAndImagArrays(m,f)}else if(l==null)u=this.getValuesFromTexture(e);else{let h=k.sizeFromShape(a);u=this.gpgpu.downloadFloat32MatrixFromBuffer(l,h)}c!=null&&this.disposeIntermediateTensorInfo(c);let p=this.convertAndCacheOnCPU(e,u),d=this.pendingRead.get(e);return this.pendingRead.delete(e),d.forEach(h=>h(p)),this.pendingDisposal.has(e)&&(this.pendingDisposal.delete(e),this.disposeData(e),this.pendingDeletes--),p}bufferSync(e){let t=this.readSync(e.dataId),n=t;if(e.dtype==="string")try{n=t.map(a=>k.decodeString(a))}catch(a){throw new Error("Failed to decode encoded string bytes into utf-8")}return Le(e.shape,e.dtype,n)}checkNumericalProblems(e){if(e!=null)for(let t=0;to.query)).filter(o=>o!=null),s=k.flatten(this.activeTimers.map(o=>o.name)).filter(o=>o!=null);this.activeTimers=t,a&&(this.programTimersStack=null);let i={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null};if(ee().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0){let o=await Promise.all(r);i.kernelMs=k.sum(o),i.getExtraProfileInfo=()=>o.map((l,c)=>({name:s[c],ms:l})).map(l=>`${l.name}: ${l.ms}`).join(", ")}else i.kernelMs={error:"WebGL query timers are not supported in this environment."};return this.uploadWaitMs=0,this.downloadWaitMs=0,i}memory(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU,numBytesInGPUAllocated:this.textureManager.numBytesAllocated,numBytesInGPUFree:this.textureManager.numBytesFree}}startTimer(){return ee().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?this.gpgpu.beginQuery():{startMs:k.now(),endMs:null}}endTimer(e){return ee().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?(this.gpgpu.endQuery(),e):(e.endMs=k.now(),e)}async getQueryTime(e){if(ee().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0)return this.gpgpu.waitForQueryAndGetTime(e);let t=e;return t.endMs-t.startMs}disposeData(e){if(this.pendingDisposal.has(e))return;if(this.pendingRead.has(e)){this.pendingDisposal.add(e),this.pendingDeletes++;return}if(!this.texData.has(e))return;if(this.texData.get(e).complexParentRefCount>0){this.texData.get(e).refCount--;return}this.releaseGPUData(e);let{complexTensorInfos:t}=this.texData.get(e);t!=null&&(this.texData.get(t.real.dataId).complexParentRefCount--,this.disposeIntermediateTensorInfo(t.real),this.texData.get(t.imag.dataId).complexParentRefCount--,this.disposeIntermediateTensorInfo(t.imag)),this.texData.delete(e)}releaseGPUData(e){let{texture:t,dtype:n,texShape:a,usage:r,isPacked:s,slice:i}=this.texData.get(e),o=i&&i.origDataId||e,l=this.dataRefCount.get(o);l>1?this.dataRefCount.set(o,l-1):(this.dataRefCount.delete(o),t!=null&&(this.numBytesInGPU-=this.computeBytes(a,n),this.textureManager.releaseTexture(t,a,r,s)));let c=this.texData.get(e);c.texture=null,c.texShape=null,c.isPacked=!1,c.slice=null}getTexture(e){return this.uploadToGPU(e),this.texData.get(e).texture}getDataInfo(e){return this.texData.get(e)}getCPUBackend(){return ee().getBool("WEBGL_CPU_FORWARD")?(this.cpuBackend==null&&(this.cpuBackend=Zr().findBackend("cpu")),this.cpuBackend):null}shouldExecuteOnCPU(e,t=VK){let n=this.getCPUBackend();return!ee().getBool("IS_TEST")&&!this.warnedAboutCPUBackend&&n==null&&(console.warn("Your application contains ops that are small enough to be executed on the CPU backend, however the CPU backend cannot be found. Consider importing the CPU backend (@tensorflow/tfjs-backend-cpu) for better performance."),this.warnedAboutCPUBackend=!0),n!=null&&e.every(a=>this.texData.get(a.dataId).texture==null&&k.sizeFromShape(a.shape)0&&k.isString(n[0])){let r=n.map(s=>k.encodeString(s));a=this.write(r,e,t)}else a=this.write(n,e,t);return this.texData.get(a).usage=null,{dataId:a,shape:e,dtype:t}}makeOutput(e,t,n){let{dataId:a}=this.makeTensorInfo(e,t,n);return Zr().makeTensorFromDataId(a,e,t,this)}unpackTensor(e){let t=new OK(e.shape);return this.runWebGLProgram(t,[e],e.dtype)}packTensor(e){let t=new kK(e.shape),n=!0;return this.runWebGLProgram(t,[e],e.dtype,null,n)}packedReshape(e,t){let n=[ou(e.shape),...lu(e.shape)],a={dtype:e.dtype,shape:n,dataId:e.dataId},r=[ou(t),...lu(t)],s=new iS(r,n),i=!0,o=this.runWebGLProgram(s,[a],e.dtype,null,i);return{dataId:o.dataId,shape:t,dtype:o.dtype}}decode(e){let t=this.texData.get(e),{isPacked:n,shape:a,dtype:r}=t,s=Ev(a),i;n?i=new Lq(s):i=new Oq(s);let o=!0,l=this.runWebGLProgram(i,[{shape:s,dtype:r,dataId:e}],r,null,o);return{dtype:r,shape:a,dataId:l.dataId}}runWebGLProgram(e,t,n,a,r=!1){let s=this.makeTensorInfo(e.outputShape,n),i=this.texData.get(s.dataId);if(e.packedOutput&&(i.isPacked=!0),e.outPackingScheme===fp.DENSE){let m=yp(e.outputShape);i.texShape=m.map(f=>f*2)}if(e.outTexUsage!=null&&(i.usage=e.outTexUsage),k.sizeFromShape(s.shape)===0)return i.values=k.getTypedArrayFromDType(s.dtype,0),s;let o=[],l=t.map(m=>{if(m.dtype==="complex64")throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");let f=this.texData.get(m.dataId);if(f.texture==null){if(!e.packedInputs&&k.sizeFromShape(m.shape)<=ee().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:m.shape,texData:null,isUniform:!0,uniformValues:f.values};e.packedInputs&&(f.isPacked=!0,f.shape=m.shape)}else if(!!f.isPacked!=!!e.packedInputs)m=f.isPacked?this.unpackTensor(m):this.packTensor(m),o.push(m),f=this.texData.get(m.dataId);else if(f.isPacked&&!zm(f.shape,m.shape)){let g=m,y=m.shape;m.shape=f.shape,m=this.packedReshape(m,y),o.push(m),f=this.texData.get(m.dataId),g.shape=y}return this.uploadToGPU(m.dataId),{shape:m.shape,texData:f,isUniform:!1}});this.uploadToGPU(s.dataId);let c={shape:s.shape,texData:i,isUniform:!1},u=H8(e,l,c),p=this.getAndSaveBinary(u,()=>U8(this.gpgpu,e,l,c)),d=this.activeTimers!=null,h;if(d&&(h=this.startTimer()),G8(this.gpgpu,p,l,c,a),o.forEach(m=>this.disposeIntermediateTensorInfo(m)),d&&(h=this.endTimer(h),this.activeTimers.push({name:e.constructor.name,query:this.getQueryTime(h)})),!ee().getBool("WEBGL_LAZILY_UNPACK")&&i.isPacked&&r===!1){let m=this.unpackTensor(s);return this.disposeIntermediateTensorInfo(s),m}return s}compileAndRun(e,t,n,a,r=!1){n=n||t[0].dtype;let s=this.runWebGLProgram(e,t,n,a,r);return Zr().makeTensorFromDataId(s.dataId,s.shape,s.dtype)}getAndSaveBinary(e,t){return e in this.binaryCache||(this.binaryCache[e]=t()),this.binaryCache[e]}getTextureManager(){return this.textureManager}dispose(){this.disposed||(ee().getBool("IS_TEST")||Object.keys(this.binaryCache).forEach(e=>{this.gpgpu.deleteProgram(this.binaryCache[e].webGLProgram),delete this.binaryCache[e]}),this.textureManager.dispose(),this.canvas!=null&&typeof HTMLCanvasElement!="undefined"&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0)}floatPrecision(){return this.floatPrecisionValue==null&&(this.floatPrecisionValue=D(()=>{if(!ee().get("WEBGL_RENDER_FLOAT32_ENABLED")){let e=ee().getBool("DEBUG");ee().set("DEBUG",!1);let t=this.abs(de(1e-8)).dataSync()[0];if(ee().set("DEBUG",e),t>0)return 32}return 16})),this.floatPrecisionValue}epsilon(){return this.floatPrecision()===32?zK:BK}uploadToGPU(e){let t=this.texData.get(e),{shape:n,dtype:a,values:r,texture:s,usage:i,isPacked:o}=t;if(s!=null)return;let l=this.activeTimers!=null,c;l&&(c=k.now());let u=t.texShape;if(u==null&&(u=_q(n,o),t.texShape=u),r!=null){let p=Ev(n),d,h=u[1],m=u[0],f=r instanceof Uint8Array;o?([h,m]=iu(u[0],u[1]),d=new Vq(p,[m,h],f)):d=new Wq(p,[m,h],f);let g=this.makeTensorInfo([m,h],a);f?this.texData.get(g.dataId).usage=aa.PIXELS:this.texData.get(g.dataId).usage=aa.UPLOAD,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(g.dataId),h,m,r);let y=!0,b=this.runWebGLProgram(d,[g],a,null,y),x=this.texData.get(b.dataId);t.texture=x.texture,t.texShape=x.texShape,t.isPacked=x.isPacked,t.usage=x.usage,this.disposeIntermediateTensorInfo(g),this.texData.delete(b.dataId),t.values=null,l&&(this.uploadWaitMs+=k.now()-c)}else{let p=this.acquireTexture(u,i,a,o);t.texture=p}}convertAndCacheOnCPU(e,t){let n=this.texData.get(e),{dtype:a}=n;return this.releaseGPUData(e),t!=null&&(n.values=HK(t,a)),n.values}acquireTexture(e,t,n,a){if(this.numBytesInGPU+=this.computeBytes(e,n),!this.warnedAboutMemory&&this.numBytesInGPU>this.numMBBeforeWarning*1024*1024){let r=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn(`High memory usage in GPU: ${r} MB, most likely due to a memory leak`)}return this.textureManager.acquireTexture(e,t,a)}computeBytes(e,t){return e[0]*e[1]*k.bytesPerElement(t)}};function HK(e,t){if(t==="float32"||t==="complex64")return e;if(t==="int32"||t==="bool"){let n=t==="int32"?new Int32Array(e.length):new Uint8Array(e.length);for(let a=0;anew jK,2);var pS=` if (isnan(a)) return a; if (isnan(b)) return b; -`,BinaryOpProgram=class{constructor(op2,aShape,bShape){this.variableNames=["A","B"],this.outputShape=backend_util_exports.assertAndGetBroadcastShape(aShape,bShape),this.userCode=` +`,mu=class{constructor(e,t,n){this.variableNames=["A","B"],this.outputShape=_.assertAndGetBroadcastShape(t,n),this.userCode=` float binaryOperation(float a, float b) { - ${op2} + ${e} } void main() { @@ -964,32 +964,32 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, float b = getBAtOutCoords(); setOutput(binaryOperation(a, b)); } - `}},CHECK_NAN_SNIPPET3=` + `}},Wm=` result.r = isNaN.r > 0. ? NAN : result.r; result.g = isNaN.g > 0. ? NAN : result.g; result.b = isNaN.b > 0. ? NAN : result.b; result.a = isNaN.a > 0. ? NAN : result.a; -`,BinaryOpPackedProgram=class{constructor(op2,aShape,bShape,checkOutOfBounds=!1){this.variableNames=["A","B"],this.supportsBroadcasting=!0,this.packedInputs=!0,this.packedOutput=!0,this.outputShape=backend_util_exports.assertAndGetBroadcastShape(aShape,bShape);let rank=this.outputShape.length,checkOutOfBoundsString="";if(checkOutOfBounds)if(rank===0||util_exports.sizeFromShape(this.outputShape)===1)checkOutOfBoundsString=` +`,vp=class{constructor(e,t,n,a=!1){this.variableNames=["A","B"],this.supportsBroadcasting=!0,this.packedInputs=!0,this.packedOutput=!0,this.outputShape=_.assertAndGetBroadcastShape(t,n);let r=this.outputShape.length,s="";if(a)if(r===0||k.sizeFromShape(this.outputShape)===1)s=` result.y = 0.; result.z = 0.; result.w = 0.; - `;else if(checkOutOfBoundsString=` - ${getCoordsDataType(rank)} coords = getOutputCoords(); - `,rank===1)checkOutOfBoundsString+=` + `;else if(s=` + ${mt(r)} coords = getOutputCoords(); + `,r===1)s+=` result.y = (coords + 1) >= ${this.outputShape[0]} ? 0. : result.y; result.z = 0.; result.w = 0.; - `;else{let channels=getChannels("coords",rank);checkOutOfBoundsString+=` + `;else{let i=gn("coords",r);s+=` bool nextRowOutOfBounds = - (${channels[rank-2]} + 1) >= ${this.outputShape[rank-2]}; + (${i[r-2]} + 1) >= ${this.outputShape[r-2]}; bool nextColOutOfBounds = - (${channels[rank-1]} + 1) >= ${this.outputShape[rank-1]}; + (${i[r-1]} + 1) >= ${this.outputShape[r-1]}; result.y = nextColOutOfBounds ? 0. : result.y; result.z = nextRowOutOfBounds ? 0. : result.z; result.w = nextColOutOfBounds || nextRowOutOfBounds ? 0. : result.w; `}this.userCode=` vec4 binaryOperation(vec4 a, vec4 b) { - ${op2} + ${e} } void main() { @@ -997,49 +997,49 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, vec4 b = getBAtOutCoords(); vec4 result = binaryOperation(a, b); - ${checkOutOfBoundsString} + ${s} setOutput(result); } - `}};function identity3(args){let{inputs,backend:backend2}=args,{x}=inputs;return backend2.incRef(x.dataId),{dataId:x.dataId,shape:x.shape,dtype:x.dtype}}var identityConfig2={kernelName:Identity,backendName:"webgl",kernelFunc:identity3};function complex3(args){let{inputs,backend:backend2}=args,{real:real4,imag:imag4}=inputs,complexInfo=backend2.makeTensorInfo(real4.shape,"complex64"),complex4=backend2.texData.get(complexInfo.dataId),realTensorInfo=identity3({inputs:{x:real4},backend:backend2}),realData=backend2.texData.get(realTensorInfo.dataId);realData.complexParentRefCount++;let imagTensorInfo=identity3({inputs:{x:imag4},backend:backend2}),imagData=backend2.texData.get(imagTensorInfo.dataId);return imagData.complexParentRefCount++,complex4.complexTensorInfos={real:realTensorInfo,imag:imagTensorInfo},complexInfo}var complexConfig2={kernelName:Complex,backendName:"webgl",kernelFunc:complex3},LEAKYRELU="return (a < 0.) ? b * a : a;",LEAKYRELU_PACKED=` + `}};function Wn(e){let{inputs:t,backend:n}=e,{x:a}=t;return n.incRef(a.dataId),{dataId:a.dataId,shape:a.shape,dtype:a.dtype}}var KK={kernelName:Xo,backendName:"webgl",kernelFunc:Wn};function ms(e){let{inputs:t,backend:n}=e,{real:a,imag:r}=t,s=n.makeTensorInfo(a.shape,"complex64"),i=n.texData.get(s.dataId),o=Wn({inputs:{x:a},backend:n}),l=n.texData.get(o.dataId);l.complexParentRefCount++;let c=Wn({inputs:{x:r},backend:n}),u=n.texData.get(c.dataId);return u.complexParentRefCount++,i.complexTensorInfos={real:o,imag:c},s}var XK={kernelName:Td,backendName:"webgl",kernelFunc:ms},dS="return (a < 0.) ? b * a : a;",hS=` vec4 aLessThanZero = vec4(lessThan(a, vec4(0.))); return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a); -`;function leakyRelu3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{alpha}=attrs,$alpha=backend2.makeTensorInfo([],"float32",util_exports.createScalarValue(alpha,"float32")),program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(LEAKYRELU_PACKED,x.shape,$alpha.shape):new BinaryOpProgram(LEAKYRELU,x.shape,$alpha.shape),result=backend2.runWebGLProgram(program,[x,$alpha],x.dtype);return backend2.disposeIntermediateTensorInfo($alpha),result}var leakyReluConfig2={kernelName:LeakyRelu,backendName:"webgl",kernelFunc:leakyRelu3},PRELU="return (a < 0.) ? b * a : a;",PRELU_PACKED=` +`;function YK(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{alpha:s}=a,i=n.makeTensorInfo([],"float32",k.createScalarValue(s,"float32")),o=ee().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new vp(hS,r.shape,i.shape):new mu(dS,r.shape,i.shape),l=n.runWebGLProgram(o,[r,i],r.dtype);return n.disposeIntermediateTensorInfo(i),l}var JK={kernelName:Hs,backendName:"webgl",kernelFunc:YK},mS="return (a < 0.) ? b * a : a;",fS=` vec4 aLessThanZero = vec4(lessThan(a, vec4(0.))); return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a); -`;function prelu4(args){let{inputs,backend:backend2}=args,{x,alpha}=inputs,program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(PRELU_PACKED,x.shape,alpha.shape):new BinaryOpProgram(PRELU,x.shape,alpha.shape);return backend2.runWebGLProgram(program,[x,alpha],x.dtype)}var preluConfig2={kernelName:Prelu,backendName:"webgl",kernelFunc:prelu4},CHECK_NAN_SNIPPET_UNARY="if (isnan(x)) return x;",CHECK_NAN_SNIPPET_BINARY=` +`;function ZK(e){let{inputs:t,backend:n}=e,{x:a,alpha:r}=t,s=ee().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new vp(fS,a.shape,r.shape):new mu(mS,a.shape,r.shape);return n.runWebGLProgram(s,[a,r],a.dtype)}var QK={kernelName:ai,backendName:"webgl",kernelFunc:ZK},gS="if (isnan(x)) return x;",eX=` if (isnan(a)) return a; if (isnan(b)) return b; -`,CHECK_NAN_SNIPPET_BINARY_PACKED=` +`,tX=` result.r = isNaN.r > 0. ? NAN : result.r; result.g = isNaN.g > 0. ? NAN : result.g; result.b = isNaN.b > 0. ? NAN : result.b; result.a = isNaN.a > 0. ? NAN : result.a; -`;function unaryKernelFunc2({opSnippet,packedOpSnippet,cpuKernelImpl,dtype}){return({inputs,backend:backend2})=>{let{x}=inputs,webglBackend=backend2,$dtype=dtype||x.dtype;if(webglBackend.shouldExecuteOnCPU([x])&&cpuKernelImpl!=null){let xData=webglBackend.texData.get(x.dataId),outValues=cpuKernelImpl(xData.values,$dtype);return webglBackend.makeTensorInfo(x.shape,$dtype,outValues)}let shouldUsePackedProgram=env().getBool("WEBGL_PACK_UNARY_OPERATIONS")&&packedOpSnippet!=null,program;return shouldUsePackedProgram?program=new UnaryOpPackedProgram(x.shape,packedOpSnippet):program=new UnaryOpProgram(x.shape,opSnippet),webglBackend.runWebGLProgram(program,[x],$dtype)}}function binaryKernelFunc2({opSnippet,packedOpSnippet,checkOutOfBounds=!1,supportsComplex=!1,cpuKernelImpl,dtype}){return({inputs,backend:backend2})=>{let{a,b}=inputs,webglBackend=backend2;if(supportsComplex&&a.dtype==="complex64"){let aData=webglBackend.texData.get(a.dataId),bData=webglBackend.texData.get(b.dataId),[real4,imag4]=[[aData.complexTensorInfos.real,bData.complexTensorInfos.real],[aData.complexTensorInfos.imag,bData.complexTensorInfos.imag]].map(complexParts=>{let[aPart,bPart]=complexParts,aHandle={dataId:aPart.dataId,dtype:aPart.dtype,shape:a.shape},bHandle={dataId:bPart.dataId,dtype:bPart.dtype,shape:b.shape},program2=new BinaryOpProgram(opSnippet,a.shape,b.shape);return webglBackend.runWebGLProgram(program2,[aHandle,bHandle],upcastType(aPart.dtype,bPart.dtype))}),complexOutput=complex3({inputs:{real:real4,imag:imag4},backend:webglBackend});return webglBackend.disposeIntermediateTensorInfo(real4),webglBackend.disposeIntermediateTensorInfo(imag4),complexOutput}let $dtype=dtype||upcastType(a.dtype,b.dtype);if(webglBackend.shouldExecuteOnCPU([a,b])&&cpuKernelImpl!=null){let aData=webglBackend.texData.get(a.dataId),bData=webglBackend.texData.get(b.dataId),[outValues,outShape]=cpuKernelImpl(a.shape,b.shape,aData.values,bData.values,$dtype),out=webglBackend.makeTensorInfo(outShape,$dtype),outData=webglBackend.texData.get(out.dataId);return outData.values=outValues,out}let shouldUsePackedProgram=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")&&packedOpSnippet!=null,program;return shouldUsePackedProgram?program=new BinaryOpPackedProgram(packedOpSnippet,a.shape,b.shape,checkOutOfBounds):program=new BinaryOpProgram(opSnippet,a.shape,b.shape),webglBackend.runWebGLProgram(program,[a,b],$dtype)}}function mapActivationToShaderProgram(activation2,packed=!1){if(activation2==="linear")return packed?LINEAR2:LINEAR;if(activation2==="relu")return packed?RELU2:RELU;if(activation2==="elu")return packed?ELU3:ELU2;if(activation2==="relu6")return packed?RELU62:RELU6;if(activation2==="prelu")return packed?PRELU_PACKED:PRELU;if(activation2==="leakyrelu")return packed?LEAKYRELU_PACKED:LEAKYRELU;throw new Error(`Activation ${activation2} has not been implemented for the WebGL backend.`)}var MatMulPackedProgram=class{constructor(aShape,bShape,outputShape,transposeA=!1,transposeB=!1,addBias=!1,activation2=null,hasPreluActivation=!1,hasLeakyreluActivation=!1){this.variableNames=["matrixA","matrixB"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=outputShape;let sharedDim=transposeA?aShape[1]:aShape[2],sharedDimensionPacked=Math.ceil(sharedDim/2),aSample=transposeA?"i * 2, rc.y":"rc.y, i * 2",bSample=transposeB?"rc.z, i * 2":"i * 2, rc.z",aSwizzle=transposeA?["a.xxyy","a.zzww"]:["a.xxzz","a.yyww"],bSwizzle=transposeB?["b.xzxz","b.ywyw"]:["b.xyxy","b.zwzw"],activationSnippet="",applyActivationSnippet="";activation2&&(hasPreluActivation?activationSnippet=`vec4 activation(vec4 a) { +`;function Ye({opSnippet:e,packedOpSnippet:t,cpuKernelImpl:n,dtype:a}){return({inputs:r,backend:s})=>{let{x:i}=r,o=s,l=a||i.dtype;if(o.shouldExecuteOnCPU([i])&&n!=null){let p=o.texData.get(i.dataId),d=n(p.values,l);return o.makeTensorInfo(i.shape,l,d)}let c=ee().getBool("WEBGL_PACK_UNARY_OPERATIONS")&&t!=null,u;return c?u=new hu(i.shape,t):u=new hs(i.shape,e),o.runWebGLProgram(u,[i],l)}}function sn({opSnippet:e,packedOpSnippet:t,checkOutOfBounds:n=!1,supportsComplex:a=!1,cpuKernelImpl:r,dtype:s}){return({inputs:i,backend:o})=>{let{a:l,b:c}=i,u=o;if(a&&l.dtype==="complex64"){let m=u.texData.get(l.dataId),f=u.texData.get(c.dataId),[g,y]=[[m.complexTensorInfos.real,f.complexTensorInfos.real],[m.complexTensorInfos.imag,f.complexTensorInfos.imag]].map(x=>{let[v,N]=x,T={dataId:v.dataId,dtype:v.dtype,shape:l.shape},E={dataId:N.dataId,dtype:N.dtype,shape:c.shape},A=new mu(e,l.shape,c.shape);return u.runWebGLProgram(A,[T,E],ua(v.dtype,N.dtype))}),b=ms({inputs:{real:g,imag:y},backend:u});return u.disposeIntermediateTensorInfo(g),u.disposeIntermediateTensorInfo(y),b}let p=s||ua(l.dtype,c.dtype);if(u.shouldExecuteOnCPU([l,c])&&r!=null){let m=u.texData.get(l.dataId),f=u.texData.get(c.dataId),[g,y]=r(l.shape,c.shape,m.values,f.values,p),b=u.makeTensorInfo(y,p),x=u.texData.get(b.dataId);return x.values=g,b}let d=ee().getBool("WEBGL_PACK_BINARY_OPERATIONS")&&t!=null,h;return d?h=new vp(t,l.shape,c.shape,n):h=new mu(e,l.shape,c.shape),u.runWebGLProgram(h,[l,c],p)}}function Vm(e,t=!1){if(e==="linear")return t?DK:_K;if(e==="relu")return t?RK:AK;if(e==="elu")return t?MK:FK;if(e==="relu6")return t?PK:$K;if(e==="prelu")return t?fS:mS;if(e==="leakyrelu")return t?hS:dS;throw new Error(`Activation ${e} has not been implemented for the WebGL backend.`)}var yS=class{constructor(e,t,n,a=!1,r=!1,s=!1,i=null,o=!1,l=!1){this.variableNames=["matrixA","matrixB"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=n;let c=a?e[1]:e[2],u=Math.ceil(c/2),p=a?"i * 2, rc.y":"rc.y, i * 2",d=r?"rc.z, i * 2":"i * 2, rc.z",h=a?["a.xxyy","a.zzww"]:["a.xxzz","a.yyww"],m=r?["b.xzxz","b.ywyw"]:["b.xyxy","b.zwzw"],f="",g="";i&&(o?f=`vec4 activation(vec4 a) { vec4 b = getPreluActivationWeightsAtOutCoords(); - ${activation2} - }`:hasLeakyreluActivation?activationSnippet=`vec4 activation(vec4 a) { + ${i} + }`:l?f=`vec4 activation(vec4 a) { vec4 b = getLeakyreluAlphaAtOutCoords(); - ${activation2} - }`:activationSnippet=`vec4 activation(vec4 x) { - ${activation2} - }`,applyActivationSnippet="result = activation(result);");let addBiasSnippet=addBias?"result += getBiasAtOutCoords();":"";addBias&&this.variableNames.push("bias"),hasPreluActivation&&this.variableNames.push("preluActivationWeights"),hasLeakyreluActivation&&this.variableNames.push("leakyreluAlpha");let batchASnippet="rc.x",batchBSnippet="rc.x";aShape[0]`The new shape (${$shape}) has ${$xSize} elements and the old shape (${x.shape}) has ${xSize} elements. The new shape and old shape must have the same number of elements.`);let xTexData=webglBackend.texData.get(x.dataId);return xTexData.isPacked&&!isReshapeFree(x.shape,$shape)&&!(xTexData.texture!==null&&isReshapeFree(xTexData.shape,$shape))?packedReshape(x,$shape,webglBackend):(webglBackend.incRef(x.dataId),{dataId:x.dataId,shape:$shape,dtype:x.dtype})}var reshapeConfig2={kernelName:Reshape,backendName:"webgl",kernelFunc:reshape4},MeanProgram=class{constructor(reduceInfo,divisor){this.variableNames=["x"];let{windowSize,batchSize,inSize,outSize}=reduceInfo;this.outputShape=[batchSize,outSize];let windowSizeNearestVec4=Math.floor(windowSize/4)*4,windowSizeVec4Remainder=windowSize%4,updateSnippet="sumValue += dot(values, ones);";if(divisor!=null){let denominator=1/divisor;updateSnippet=`sumValue += dot(values * ${util_exports.isInt(denominator)?denominator.toPrecision(2):denominator}, ones);`}let checkOutOfBounds="";inSize%windowSize>0&&(checkOutOfBounds=` - if (inIdx < 0 || inIdx >= ${inSize}) { + `}},vS="return a * b;";function wS(e){let{inputs:t,backend:n}=e,{a,b:r}=t,s=_.upcastType(a.dtype,r.dtype);if(a.dtype==="complex64"){let o=n.texData.get(a.dataId),l=n.texData.get(r.dataId),c=new xS(bS.REAL,a.shape,r.shape),u=new xS(bS.IMAG,a.shape,r.shape),p=[{dataId:o.complexTensorInfos.real.dataId,dtype:o.complexTensorInfos.real.dtype,shape:a.shape},{dataId:o.complexTensorInfos.imag.dataId,dtype:o.complexTensorInfos.imag.dtype,shape:a.shape},{dataId:l.complexTensorInfos.real.dataId,dtype:l.complexTensorInfos.real.dtype,shape:r.shape},{dataId:l.complexTensorInfos.imag.dataId,dtype:l.complexTensorInfos.imag.dtype,shape:r.shape}],d=n.runWebGLProgram(c,p,"float32"),h=n.runWebGLProgram(u,p,"float32"),m=ms({inputs:{real:d,imag:h},backend:n});return n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(h),m}if(n.shouldExecuteOnCPU([a,r])){let o=n.texData.get(a.dataId),l=n.texData.get(r.dataId),[c,u]=oK(a.shape,r.shape,o.values,l.values,s),p=n.makeTensorInfo(u,s),d=n.texData.get(p.dataId);return d.values=c,p}let i;return ee().getBool("WEBGL_PACK_BINARY_OPERATIONS")?i=new vp(vS,a.shape,r.shape):i=new mu(vS,a.shape,r.shape),n.runWebGLProgram(i,[a,r],s)}var nX={kernelName:Qs,backendName:"webgl",kernelFunc:wS};function aX(e,t,n){let a=[ou(e.shape),...lu(e.shape)],r={dtype:e.dtype,shape:a,dataId:e.dataId},s=[ou(t),...lu(t)],i=new iS(s,a),o=!0,l=n.runWebGLProgram(i,[r],e.dtype,null,o);return{dataId:l.dataId,shape:t,dtype:l.dtype}}function xe(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{shape:s}=a,i=n,o=k.sizeFromShape(r.shape),l=k.inferFromImplicitShape(s,o),c=k.sizeFromShape(l);k.assert(o===c,()=>`The new shape (${l}) has ${c} elements and the old shape (${r.shape}) has ${o} elements. The new shape and old shape must have the same number of elements.`);let u=i.texData.get(r.dataId);return u.isPacked&&!zm(r.shape,l)&&!(u.texture!==null&&zm(u.shape,l))?aX(r,l,i):(i.incRef(r.dataId),{dataId:r.dataId,shape:l,dtype:r.dtype})}var rX={kernelName:hl,backendName:"webgl",kernelFunc:xe},kS=class{constructor(e,t){this.variableNames=["x"];let{windowSize:n,batchSize:a,inSize:r,outSize:s}=e;this.outputShape=[a,s];let i=Math.floor(n/4)*4,o=n%4,l="sumValue += dot(values, ones);";if(t!=null){let u=1/t;l=`sumValue += dot(values * ${k.isInt(u)?u.toPrecision(2):u}, ones);`}let c="";r%n>0&&(c=` + if (inIdx < 0 || inIdx >= ${r}) { return 0.0; } `),this.userCode=` const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0); float getValue(int batch, int inIdx) { - ${checkOutOfBounds} + ${c} return getX(batch, inIdx); } @@ -1083,11 +1083,11 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, ivec2 coords = getOutputCoords(); int batch = coords[0]; int outIdx = coords[1]; - int inOffset = outIdx * ${windowSize}; + int inOffset = outIdx * ${n}; float sumValue = 0.0; - for (int i = 0; i < ${windowSizeNearestVec4}; i += 4) { + for (int i = 0; i < ${i}; i += 4) { int inIdx = inOffset + i; vec4 values = vec4( getValue(batch, inIdx), @@ -1096,57 +1096,57 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, getValue(batch, inIdx + 3) ); - ${updateSnippet} + ${l} } - int inIdx = inOffset + ${windowSizeNearestVec4}; - if (${windowSizeVec4Remainder===1}) { + int inIdx = inOffset + ${i}; + if (${o===1}) { vec4 values = vec4(getValue(batch, inIdx), 0.0, 0.0, 0.0); - ${updateSnippet} - } else if (${windowSizeVec4Remainder===2}) { + ${l} + } else if (${o===2}) { vec4 values = vec4( getValue(batch, inIdx), getValue(batch, inIdx + 1), 0.0, 0.0); - ${updateSnippet} - } else if (${windowSizeVec4Remainder===3}) { + ${l} + } else if (${o===3}) { vec4 values = vec4( getValue(batch, inIdx), getValue(batch, inIdx + 1), getValue(batch, inIdx + 2), 0.0); - ${updateSnippet} + ${l} } setOutput(sumValue); } - `}},ReduceProgram=class{constructor(reduceInfo,reduceType){this.variableNames=["x"];let{windowSize,batchSize,inSize,outSize}=reduceInfo;this.outputShape=[batchSize,outSize];let initializationValue="0.0",compareOp="";reduceType==="prod"?initializationValue="1.0":reduceType==="min"?(initializationValue="1.0 / 1e-20",compareOp="min"):reduceType==="max"&&(initializationValue="-1.0 / 1e-20",compareOp="max");let returnValue=`${reduceType}(${reduceType}(${reduceType}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;reduceType==="sum"?returnValue="sumValue":reduceType==="prod"?returnValue="prodValue":reduceType==="all"?returnValue="allValue":reduceType==="any"&&(returnValue="anyValue");let windowSizeNearestVec4=Math.floor(windowSize/4)*4,windowSizeVec4Remainder=windowSize%4,updateSnippet=` - if (${reduceType==="sum"}) { + `}},sX=class{constructor(e,t){this.variableNames=["x"];let{windowSize:n,batchSize:a,inSize:r,outSize:s}=e;this.outputShape=[a,s];let i="0.0",o="";t==="prod"?i="1.0":t==="min"?(i="1.0 / 1e-20",o="min"):t==="max"&&(i="-1.0 / 1e-20",o="max");let l=`${t}(${t}(${t}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;t==="sum"?l="sumValue":t==="prod"?l="prodValue":t==="all"?l="allValue":t==="any"&&(l="anyValue");let c=Math.floor(n/4)*4,u=n%4,p=` + if (${t==="sum"}) { sumValue += dot(values, ones); - } else if (${reduceType==="prod"}) { + } else if (${t==="prod"}) { vec2 tmp = vec2(values[0], values[1]) * vec2(values[2], values[3]); prodValue *= tmp[0] * tmp[1]; } else { - minMaxValue = ${compareOp}(values, minMaxValue); + minMaxValue = ${o}(values, minMaxValue); } - `,vecType="vec4";reduceType==="all"?(initializationValue="1.0",updateSnippet=` + `,d="vec4";t==="all"?(i="1.0",p=` bool reducedAllValue = all(values); float floatedReducedAllValue = float(reducedAllValue); allValue = float(allValue >= 1.0 && floatedReducedAllValue >= 1.0); - `,vecType="bvec4"):reduceType==="any"&&(initializationValue="0.0",updateSnippet=` + `,d="bvec4"):t==="any"&&(i="0.0",p=` bool reducedAnyValue = any(values); float floatedReducedAnyValue = float(reducedAnyValue); anyValue = float(anyValue >= 1.0 || floatedReducedAnyValue >= 1.0); - `,vecType="bvec4");let checkOutOfBounds="";inSize%windowSize>0&&(checkOutOfBounds=` - if (inIdx < 0 || inIdx >= ${inSize}) { + `,d="bvec4");let h="";r%n>0&&(h=` + if (inIdx < 0 || inIdx >= ${r}) { return initializationValue; } `),this.userCode=` - const float initializationValue = ${initializationValue}; + const float initializationValue = ${i}; const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0); float getValue(int batch, int inIdx) { - ${checkOutOfBounds} + ${h} return getX(batch, inIdx); } @@ -1154,174 +1154,174 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, ivec2 coords = getOutputCoords(); int batch = coords[0]; int outIdx = coords[1]; - int inOffset = outIdx * ${windowSize}; + int inOffset = outIdx * ${n}; - vec4 minMaxValue = vec4(${initializationValue}); + vec4 minMaxValue = vec4(${i}); float prodValue = 1.0; float sumValue = 0.0; float allValue = 1.0; float anyValue = 0.0; - for (int i = 0; i < ${windowSizeNearestVec4}; i += 4) { + for (int i = 0; i < ${c}; i += 4) { int inIdx = inOffset + i; - ${vecType} values = ${vecType}( + ${d} values = ${d}( getValue(batch, inIdx), getValue(batch, inIdx + 1), getValue(batch, inIdx + 2), getValue(batch, inIdx + 3) ); - ${updateSnippet} + ${p} } - int inIdx = inOffset + ${windowSizeNearestVec4}; - if (${windowSizeVec4Remainder===1}) { - ${vecType} values = ${vecType}( + int inIdx = inOffset + ${c}; + if (${u===1}) { + ${d} values = ${d}( getValue(batch, inIdx), initializationValue, initializationValue, initializationValue ); - ${updateSnippet} - } else if (${windowSizeVec4Remainder===2}) { - ${vecType} values = ${vecType}( + ${p} + } else if (${u===2}) { + ${d} values = ${d}( getValue(batch, inIdx), getValue(batch, inIdx + 1), initializationValue, initializationValue ); - ${updateSnippet} - } else if (${windowSizeVec4Remainder===3}) { - ${vecType} values = ${vecType}( + ${p} + } else if (${u===3}) { + ${d} values = ${d}( getValue(batch, inIdx), getValue(batch, inIdx + 1), getValue(batch, inIdx + 2), initializationValue ); - ${updateSnippet} + ${p} } - setOutput(${returnValue}); + setOutput(${l}); } - `}};function getReductionStages(inShape){let stages=[];for(;stages.length===0||stages[stages.length-1].outSize!==1;){let outSize=stages.length?stages[stages.length-1].outSize:inShape[1],windowSize=backend_util_exports.computeOptimalWindowSize(outSize);stages.push({inSize:outSize,windowSize,outSize:Math.ceil(outSize/windowSize)})}return stages}function reduce(x,dtype,reductionType,backend2){let reductionStages=getReductionStages(x.shape),result=x;for(let i=0;i6)throw Error(`Transpose for rank ${rank} is not yet supported`);let originalOrder=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u","resRC.v"],switchedCoords=new Array(rank);for(let i=0;i6)throw Error(`Packed transpose for rank ${this.rank} is not yet supported.`);let dtype=getCoordsDataType(this.rank),outputOrder=getVecChannels("rc",this.rank),switchedOrder=new Array(this.rank);for(let i=0;i6)throw Error(`Transpose for rank ${t} is not yet supported`);let n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u","resRC.v"],a=new Array(t);for(let r=0;r6)throw Error(`Packed transpose for rank ${this.rank} is not yet supported.`);let a=mt(this.rank),r=sS("rc",this.rank),s=new Array(this.rank);for(let c=0;c=2&&bRank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`);let outShape=(batchDimA>batchDimB?a.shape.slice(0,-2):b.shape.slice(0,-2)).concat([outerShapeA,outerShapeB]);util_exports.assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${a.shape} and ${b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let a3dShape=transposeA?[batchDimA,innerShapeA,outerShapeA]:[batchDimA,outerShapeA,innerShapeA],b3dShape=transposeB?[batchDimB,outerShapeB,innerShapeB]:[batchDimB,innerShapeB,outerShapeB],a3d=reshape4({inputs:{x:a},backend:backend2,attrs:{shape:a3dShape}}),b3d=reshape4({inputs:{x:b},backend:backend2,attrs:{shape:b3dShape}}),intermediates=[a3d,b3d],batchDim=Math.max(batchDimA,batchDimB),sharedDim=transposeA?a3d.shape[1]:a3d.shape[2],hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,hasLeakyreluAlpha=activation2==="leakyrelu",fusedActivation=activation2!=null?mapActivationToShaderProgram(activation2,!0):null,containsFusedOps=hasBias||hasPreluActivationWeights||hasLeakyreluAlpha||fusedActivation!=null,out;if((outerShapeA===1||outerShapeB===1)&&sharedDim>MATMUL_SHARED_DIM_THRESHOLD&&containsFusedOps===!1){let aVec=a3d,bVec=b3d;transposeA&&(aVec=transpose3({inputs:{x:a3d},backend:backend2,attrs:{perm:[0,2,1]}}),intermediates.push(aVec)),transposeB&&(bVec=transpose3({inputs:{x:b3d},backend:backend2,attrs:{perm:[0,2,1]}}),intermediates.push(bVec));let shouldReshapeA=outerShapeB!==1,shouldReshapeB=outerShapeB===1,aVec3d=aVec;shouldReshapeA&&(aVec3d=reshape4({inputs:{x:aVec},backend:backend2,attrs:{shape:[batchDim,sharedDim,1]}}),intermediates.push(aVec3d));let axis=outerShapeB===1?2:1,bVec3d=bVec;shouldReshapeB&&(bVec3d=reshape4({inputs:{x:bVec},backend:backend2,attrs:{shape:[batchDim,1,sharedDim]}}),intermediates.push(bVec3d));let product=multiply3({inputs:{a:aVec3d,b:bVec3d},backend:backend2});out=sum4({inputs:{x:product},backend:backend2,attrs:{axis,keepDims:!0}}),intermediates.push(product)}else{let dtype=upcastType(a.dtype,b.dtype),program=new MatMulPackedProgram(a3dShape,b3dShape,[batchDim,outerShapeA,outerShapeB],transposeA,transposeB,hasBias,fusedActivation,hasPreluActivationWeights,hasLeakyreluAlpha),inputs=[a3d,b3d];if(bias!=null&&inputs.push(bias),hasPreluActivationWeights&&inputs.push(preluActivationWeights),hasLeakyreluAlpha){let $leakyreluAlpha=backend2.makeTensorInfo([],"float32",util_exports.createScalarValue(leakyreluAlpha,"float32"));inputs.push($leakyreluAlpha),intermediates.push($leakyreluAlpha)}out=backend2.runWebGLProgram(program,inputs,dtype)}let outReshaped=reshape4({inputs:{x:out},backend:backend2,attrs:{shape:outShape}});intermediates.push(out);for(let i of intermediates)backend2.disposeIntermediateTensorInfo(i);return outReshaped}function _fusedMatMul2(args){let{inputs,backend:backend2,attrs}=args,{a,b,bias,preluActivationWeights}=inputs,{transposeA,transposeB,activation:activation2,leakyreluAlpha}=attrs;return batchMatMulImpl({a,b,transposeA,transposeB,backend:backend2,bias,preluActivationWeights,leakyreluAlpha,activation:activation2})}var _fusedMatMulConfig2={kernelName:_FusedMatMul,backendName:"webgl",kernelFunc:_fusedMatMul2},ABS2="return abs(x);";function abs3(args){let{inputs,backend:backend2}=args,{x}=inputs;if(backend2.shouldExecuteOnCPU([x])&&x.dtype!=="complex64"){let xData=backend2.texData.get(x.dataId),outValues=simpleAbsImplCPU(xData.values);return backend2.makeTensorInfo(x.shape,x.dtype,outValues)}let program;return env().getBool("WEBGL_PACK_UNARY_OPERATIONS")?program=new UnaryOpPackedProgram(x.shape,ABS2):program=new UnaryOpProgram(x.shape,ABS2),backend2.runWebGLProgram(program,[x],x.dtype)}var absConfig2={kernelName:Abs,backendName:"webgl",kernelFunc:abs3},ACOS=CHECK_NAN_SNIPPET+` + `}};function Um(e,t,n){let a=ee().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new uX(e.shape,t):new lX(e.shape,t);return n.runWebGLProgram(a,[e],e.dtype)}function cX(e,t,n,a){let r=t,s=e.shape.length,i=k.parseAxisParam(r,e.shape),o=i,l=_.getAxesPermutation(o,s),c=l!=null,u=e;c&&(u=Um(e,l,a),o=_.getInnerMostAxes(o.length,s)),_.assertAxesAreInnerMostDims("sum",o,s);let[p,d]=_.computeOutAndReduceShapes(u.shape,o),h=p;n&&(h=_.expandShapeToKeepDim(p,i));let m=k.sizeFromShape(d),f=k.sizeFromShape(e.shape)/m,g=xe({inputs:{x:u},attrs:{shape:[f,m]},backend:a}),y=th(e.dtype),b=Ki(g,y,"sum",a),x=xe({inputs:{x:b},attrs:{shape:h},backend:a});return a.disposeIntermediateTensorInfo(g),a.disposeIntermediateTensorInfo(b),c&&a.disposeIntermediateTensorInfo(u),x}function Rv(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{axis:s,keepDims:i}=a;return cX(r,s,i,n)}var pX={kernelName:hi,backendName:"webgl",kernelFunc:Rv};function Cn(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{perm:s}=a,i=n,o=r.shape.length,l=new Array(o);for(let u=0;u=2&&u>=2&&x,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${f}) and (${g}).`);let v=(y>b?e.shape.slice(0,-2):t.shape.slice(0,-2)).concat([h,m]);k.assert(p===d,()=>`Error in matMul: inner shapes (${p}) and (${d}) of Tensors with shapes ${e.shape} and ${t.shape} and transposeA=${n} and transposeB=${a} must match.`);let N=n?[y,p,h]:[y,h,p],T=a?[b,m,d]:[b,d,m],E=xe({inputs:{x:e},backend:r,attrs:{shape:N}}),A=xe({inputs:{x:t},backend:r,attrs:{shape:T}}),$=[E,A],O=Math.max(y,b),V=n?E.shape[1]:E.shape[2],W=s!=null,H=i!=null,X=l==="leakyrelu",q=l!=null?Vm(l,!0):null,K=W||H||X||q!=null,J;if((h===1||m===1)&&V>IS&&K===!1){let Q=E,ie=A;n&&(Q=Cn({inputs:{x:E},backend:r,attrs:{perm:[0,2,1]}}),$.push(Q)),a&&(ie=Cn({inputs:{x:A},backend:r,attrs:{perm:[0,2,1]}}),$.push(ie));let re=m!==1,ae=m===1,oe=Q;re&&(oe=xe({inputs:{x:Q},backend:r,attrs:{shape:[O,V,1]}}),$.push(oe));let he=m===1?2:1,ce=ie;ae&&(ce=xe({inputs:{x:ie},backend:r,attrs:{shape:[O,1,V]}}),$.push(ce));let ge=wS({inputs:{a:oe,b:ce},backend:r});J=Rv({inputs:{x:ge},backend:r,attrs:{axis:he,keepDims:!0}}),$.push(ge)}else{let Q=ua(e.dtype,t.dtype),ie=new yS(N,T,[O,h,m],n,a,W,q,H,X),re=[E,A];if(s!=null&&re.push(s),H&&re.push(i),X){let ae=r.makeTensorInfo([],"float32",k.createScalarValue(o,"float32"));re.push(ae),$.push(ae)}J=r.runWebGLProgram(ie,re,Q)}let te=xe({inputs:{x:J},backend:r,attrs:{shape:v}});$.push(J);for(let Q of $)r.disposeIntermediateTensorInfo(Q);return te}function hX(e){let{inputs:t,backend:n,attrs:a}=e,{a:r,b:s,bias:i,preluActivationWeights:o}=t,{transposeA:l,transposeB:c,activation:u,leakyreluAlpha:p}=a;return Gm({a:r,b:s,transposeA:l,transposeB:c,backend:n,bias:i,preluActivationWeights:o,leakyreluAlpha:p,activation:u})}var mX={kernelName:xi,backendName:"webgl",kernelFunc:hX},NS="return abs(x);";function fX(e){let{inputs:t,backend:n}=e,{x:a}=t;if(n.shouldExecuteOnCPU([a])&&a.dtype!=="complex64"){let s=n.texData.get(a.dataId),i=rS(s.values);return n.makeTensorInfo(a.shape,a.dtype,i)}let r;return ee().getBool("WEBGL_PACK_UNARY_OPERATIONS")?r=new hu(a.shape,NS):r=new hs(a.shape,NS),n.runWebGLProgram(r,[a],a.dtype)}var gX={kernelName:Co,backendName:"webgl",kernelFunc:fX},yX=Pa+` if (abs(x) > 1.) { return NAN; } return acos(x); -`,acos3=unaryKernelFunc2({opSnippet:ACOS}),acosConfig2={kernelName:Acos,backendName:"webgl",kernelFunc:acos3},ACOSH=CHECK_NAN_SNIPPET+` +`,bX=Ye({opSnippet:yX}),xX={kernelName:Eo,backendName:"webgl",kernelFunc:bX},vX=Pa+` if (x < 1.0) return NAN; -return log(x + sqrt(x * x - 1.0));`,acosh3=unaryKernelFunc2({opSnippet:ACOSH}),acoshConfig2={kernelName:Acosh,backendName:"webgl",kernelFunc:acosh3},ADD="return a + b;",addKernelFunc=binaryKernelFunc2({opSnippet:ADD,packedOpSnippet:ADD,supportsComplex:!0,cpuKernelImpl:addImplCPU}),addConfig2={kernelName:Add,backendName:"webgl",kernelFunc:addKernelFunc},AddNProgram=class{constructor(outputShape,shapes){this.outputShape=[],this.outputShape=outputShape,this.variableNames=shapes.map((_,i)=>`T${i}`);let snippets=[];this.variableNames.forEach(variable2=>{snippets.push(`float v${variable2} = get${variable2}AtOutCoords();`)});let operation=this.variableNames.map(variable2=>`v${variable2}`).join(" + ");this.userCode=` +return log(x + sqrt(x * x - 1.0));`,wX=Ye({opSnippet:vX}),kX={kernelName:_o,backendName:"webgl",kernelFunc:wX},TS="return a + b;",IX=sn({opSnippet:TS,packedOpSnippet:TS,supportsComplex:!0,cpuKernelImpl:j8}),NX={kernelName:Ur,backendName:"webgl",kernelFunc:IX},TX=class{constructor(e,t){this.outputShape=[],this.outputShape=e,this.variableNames=t.map((r,s)=>`T${s}`);let n=[];this.variableNames.forEach(r=>{n.push(`float v${r} = get${r}AtOutCoords();`)});let a=this.variableNames.map(r=>`v${r}`).join(" + ");this.userCode=` void main() { - ${snippets.join(` + ${n.join(` `)} - float result = ${operation}; + float result = ${a}; setOutput(result); } - `}},AddNPackedProgram=class{constructor(outputShape,shapes){this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=outputShape,this.variableNames=shapes.map((_,i)=>`T${i}`);let snippets=[];this.variableNames.forEach(variable2=>{snippets.push(`vec4 v${variable2} = get${variable2}AtOutCoords();`)});let operation=this.variableNames.map(variable2=>`v${variable2}`).join(" + ");this.userCode=` + `}},SX=class{constructor(e,t){this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.variableNames=t.map((r,s)=>`T${s}`);let n=[];this.variableNames.forEach(r=>{n.push(`vec4 v${r} = get${r}AtOutCoords();`)});let a=this.variableNames.map(r=>`v${r}`).join(" + ");this.userCode=` void main() { - ${snippets.join(` + ${n.join(` `)} - vec4 result = ${operation}; + vec4 result = ${a}; setOutput(result); } - `}};function addN3(args){let{inputs,backend:backend2}=args,tensors=inputs;if(tensors.length===1)return identity3({inputs:{x:tensors[0]},backend:backend2});if(tensors.length>env().get("WEBGL_MAX_TEXTURES_IN_SHADER")){let midIndex=Math.floor(tensors.length/2),leftSide=addN3({inputs:tensors.slice(0,midIndex),backend:backend2}),rightSide=addN3({inputs:tensors.slice(midIndex),backend:backend2});return addN3({inputs:[leftSide,rightSide],backend:backend2})}let dtype=tensors.map(t=>t.dtype).reduce((d1,d2)=>upcastType(d1,d2)),shapes=tensors.map(t=>t.shape),program=env().getBool("WEBGL_PACK")?new AddNPackedProgram(tensors[0].shape,shapes):new AddNProgram(tensors[0].shape,shapes);return backend2.runWebGLProgram(program,tensors,dtype)}var addNConfig2={kernelName:AddN,backendName:"webgl",kernelFunc:addN3};function all3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{axis,keepDims}=attrs,xRank=x.shape.length,origAxes=util_exports.parseAxisParam(axis,x.shape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),permutedX=x;permutedAxes!=null&&(permutedX=transpose3({inputs:{x},backend:backend2,attrs:{perm:permutedAxes}}),axes=backend_util_exports.getInnerMostAxes(axes.length,xRank)),backend_util_exports.assertAxesAreInnerMostDims("all",axes,xRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(permutedX.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=reshape4({inputs:{x:permutedX},backend:backend2,attrs:{shape:[-1,inSize]}}),reduced=reduce(a2D,a2D.dtype,"all",backend2),res;if(keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(outShape,origAxes);res=reshape4({inputs:{x:reduced},backend:backend2,attrs:{shape:newShape}})}else res=reshape4({inputs:{x:reduced},backend:backend2,attrs:{shape:outShape}});return backend2.disposeIntermediateTensorInfo(a2D),backend2.disposeIntermediateTensorInfo(reduced),permutedAxes!=null&&backend2.disposeIntermediateTensorInfo(permutedX),res}var allConfig2={kernelName:All,backendName:"webgl",kernelFunc:all3};function any3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{axis,keepDims}=attrs,xRank=x.shape.length,origAxes=util_exports.parseAxisParam(axis,x.shape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),permutedX=x;permutedAxes!=null&&(permutedX=transpose3({inputs:{x},backend:backend2,attrs:{perm:permutedAxes}}),axes=backend_util_exports.getInnerMostAxes(axes.length,xRank)),backend_util_exports.assertAxesAreInnerMostDims("any",axes,xRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(permutedX.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=reshape4({inputs:{x:permutedX},backend:backend2,attrs:{shape:[-1,inSize]}}),reduced=reduce(a2D,a2D.dtype,"any",backend2),res;if(keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(outShape,origAxes);res=reshape4({inputs:{x:reduced},backend:backend2,attrs:{shape:newShape}})}else res=reshape4({inputs:{x:reduced},backend:backend2,attrs:{shape:outShape}});return backend2.disposeIntermediateTensorInfo(a2D),backend2.disposeIntermediateTensorInfo(reduced),permutedAxes!=null&&backend2.disposeIntermediateTensorInfo(permutedX),res}var anyConfig2={kernelName:Any,backendName:"webgl",kernelFunc:any3},ArgMinMaxProgram=class{constructor(reduceInfo,op2,firstPass){this.variableNames=["A"];let{windowSize,batchSize,outSize}=reduceInfo;firstPass||this.variableNames.push("bestIndicesA"),this.outputShape=[batchSize,outSize];let compOp=op2==="max"?">":"<",indexSnippet=firstPass?"inOffset + i;":"round(getBestIndicesA(batch, inOffset + i));";this.userCode=` + `}};function Hm(e){let{inputs:t,backend:n}=e,a=t;if(a.length===1)return Wn({inputs:{x:a[0]},backend:n});if(a.length>ee().get("WEBGL_MAX_TEXTURES_IN_SHADER")){let o=Math.floor(a.length/2),l=Hm({inputs:a.slice(0,o),backend:n}),c=Hm({inputs:a.slice(o),backend:n});return Hm({inputs:[l,c],backend:n})}let r=a.map(o=>o.dtype).reduce((o,l)=>ua(o,l)),s=a.map(o=>o.shape),i=ee().getBool("WEBGL_PACK")?new SX(a[0].shape,s):new TX(a[0].shape,s);return n.runWebGLProgram(i,a,r)}var CX={kernelName:_s,backendName:"webgl",kernelFunc:Hm};function EX(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{axis:s,keepDims:i}=a,o=r.shape.length,l=k.parseAxisParam(s,r.shape),c=l,u=_.getAxesPermutation(c,o),p=r;u!=null&&(p=Cn({inputs:{x:r},backend:n,attrs:{perm:u}}),c=_.getInnerMostAxes(c.length,o)),_.assertAxesAreInnerMostDims("all",c,o);let[d,h]=_.computeOutAndReduceShapes(p.shape,c),m=k.sizeFromShape(h),f=xe({inputs:{x:p},backend:n,attrs:{shape:[-1,m]}}),g=Ki(f,f.dtype,"all",n),y;if(i){let b=_.expandShapeToKeepDim(d,l);y=xe({inputs:{x:g},backend:n,attrs:{shape:b}})}else y=xe({inputs:{x:g},backend:n,attrs:{shape:d}});return n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(g),u!=null&&n.disposeIntermediateTensorInfo(p),y}var _X={kernelName:vd,backendName:"webgl",kernelFunc:EX};function FX(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{axis:s,keepDims:i}=a,o=r.shape.length,l=k.parseAxisParam(s,r.shape),c=l,u=_.getAxesPermutation(c,o),p=r;u!=null&&(p=Cn({inputs:{x:r},backend:n,attrs:{perm:u}}),c=_.getInnerMostAxes(c.length,o)),_.assertAxesAreInnerMostDims("any",c,o);let[d,h]=_.computeOutAndReduceShapes(p.shape,c),m=k.sizeFromShape(h),f=xe({inputs:{x:p},backend:n,attrs:{shape:[-1,m]}}),g=Ki(f,f.dtype,"any",n),y;if(i){let b=_.expandShapeToKeepDim(d,l);y=xe({inputs:{x:g},backend:n,attrs:{shape:b}})}else y=xe({inputs:{x:g},backend:n,attrs:{shape:d}});return n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(g),u!=null&&n.disposeIntermediateTensorInfo(p),y}var AX={kernelName:wd,backendName:"webgl",kernelFunc:FX},$X=class{constructor(e,t,n){this.variableNames=["A"];let{windowSize:a,batchSize:r,outSize:s}=e;n||this.variableNames.push("bestIndicesA"),this.outputShape=[r,s];let i=t==="max"?">":"<",o=n?"inOffset + i;":"round(getBestIndicesA(batch, inOffset + i));";this.userCode=` void main() { ivec2 coords = getOutputCoords(); int batch = coords[0]; int outIdx = coords[1]; - int inOffset = outIdx * ${windowSize}; + int inOffset = outIdx * ${a}; int bestIndex = inOffset; float bestValue = getA(batch, bestIndex); - for (int i = 0; i < ${windowSize}; i++) { - int inIdx = ${indexSnippet}; + for (int i = 0; i < ${a}; i++) { + int inIdx = ${o}; float candidate = getA(batch, inIdx); - if (candidate ${compOp} bestValue) { + if (candidate ${i} bestValue) { bestValue = candidate; bestIndex = inIdx; } } setOutput(float(bestIndex)); } - `}},ArgMinMaxPackedProgram=class{constructor(shape,windowSize,op2,firstPass){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,util_exports.assert(shape.length>2,()=>`Packed arg${op2.charAt(0).toUpperCase()+op2.slice(1)} supports only inputs with rank above 2.`);let inSize=shape[shape.length-1],outSize=Math.ceil(inSize/windowSize);this.outputShape=shape.slice(0,-1),outSize>1&&this.outputShape.push(outSize),firstPass||this.variableNames.push("bestIndicesA");let outShape=this.outputShape,rank=outShape.length,dtype=getCoordsDataType(rank),coords2=getChannels("coords",rank),sourceLocSetup,sourceRank;if(outSize===1){sourceRank=rank+1;let sourceLocDType=getCoordsDataType(sourceRank);sourceLocSetup=` - ${sourceLocDType} sourceLocR = ${sourceLocDType}(${coords2.join()}, 0); - ++${coords2[rank-1]}; - ${sourceLocDType} sourceLocG = ${sourceLocDType}(${coords2.join()}, 0); - ++${coords2[rank-2]}; - ${sourceLocDType} sourceLocA = ${sourceLocDType}(${coords2.join()}, 0); - --${coords2[rank-1]}; - ${sourceLocDType} sourceLocB = ${sourceLocDType}(${coords2.join()}, 0); - --${coords2[rank-2]};`}else sourceRank=rank,sourceLocSetup=` - ${dtype} sourceLocR = coords; - ++${coords2[rank-1]}; - ${dtype} sourceLocG = coords; - ++${coords2[rank-2]}; - ${dtype} sourceLocA = coords; - --${coords2[rank-1]}; - ${dtype} sourceLocB = coords; - --${coords2[rank-2]};`;let channels=["x","y","z","w","u","v"].slice(0,sourceRank),inChannel="."+channels[sourceRank-1],intChannels=channels.map(x=>"int "+x),srcRCoords=getChannels("sourceLocR",sourceRank-1).concat("inIdx.r"),srcGCoords=getChannels("sourceLocG",sourceRank-1).concat("inIdx.g"),srcBCoords=getChannels("sourceLocB",sourceRank-1).concat("inIdx.b"),srcACoords=getChannels("sourceLocA",sourceRank-1).concat("inIdx.a"),compOp=op2==="max"?"greaterThan":"lessThan",fetchCandidateIdx=firstPass?"":` - inIdx = round(vec4(getBestIndicesAChannel(${srcRCoords.join()}), - getBestIndicesAChannel(${srcGCoords.join()}), - getBestIndicesAChannel(${srcBCoords.join()}), - getBestIndicesAChannel(${srcACoords.join()})));`,fetchValue=`vec4( - getAChannel(${srcRCoords.join()}), - hasNextCol ? getAChannel(${srcGCoords.join()}) : 0., - hasNextRow ? getAChannel(${srcBCoords.join()}) : 0., - hasNextRow && hasNextCol ? getAChannel(${srcACoords.join()}) : 0.)`,getBestIndicesAChannelSnippet=firstPass?"":` - float getBestIndicesAChannel(${intChannels.join()}) { - return getChannel(getBestIndicesA(${channels.join()}), - vec2(${channels.slice(-2).join()})); + `}},DX=class{constructor(e,t,n,a){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,k.assert(e.length>2,()=>`Packed arg${n.charAt(0).toUpperCase()+n.slice(1)} supports only inputs with rank above 2.`);let r=e[e.length-1],s=Math.ceil(r/t);this.outputShape=e.slice(0,-1),s>1&&this.outputShape.push(s),a||this.variableNames.push("bestIndicesA");let i=this.outputShape,o=i.length,l=mt(o),c=gn("coords",o),u,p;if(s===1){p=o+1;let E=mt(p);u=` + ${E} sourceLocR = ${E}(${c.join()}, 0); + ++${c[o-1]}; + ${E} sourceLocG = ${E}(${c.join()}, 0); + ++${c[o-2]}; + ${E} sourceLocA = ${E}(${c.join()}, 0); + --${c[o-1]}; + ${E} sourceLocB = ${E}(${c.join()}, 0); + --${c[o-2]};`}else p=o,u=` + ${l} sourceLocR = coords; + ++${c[o-1]}; + ${l} sourceLocG = coords; + ++${c[o-2]}; + ${l} sourceLocA = coords; + --${c[o-1]}; + ${l} sourceLocB = coords; + --${c[o-2]};`;let d=["x","y","z","w","u","v"].slice(0,p),h="."+d[p-1],m=d.map(E=>"int "+E),f=gn("sourceLocR",p-1).concat("inIdx.r"),g=gn("sourceLocG",p-1).concat("inIdx.g"),y=gn("sourceLocB",p-1).concat("inIdx.b"),b=gn("sourceLocA",p-1).concat("inIdx.a"),x=n==="max"?"greaterThan":"lessThan",v=a?"":` + inIdx = round(vec4(getBestIndicesAChannel(${f.join()}), + getBestIndicesAChannel(${g.join()}), + getBestIndicesAChannel(${y.join()}), + getBestIndicesAChannel(${b.join()})));`,N=`vec4( + getAChannel(${f.join()}), + hasNextCol ? getAChannel(${g.join()}) : 0., + hasNextRow ? getAChannel(${y.join()}) : 0., + hasNextRow && hasNextCol ? getAChannel(${b.join()}) : 0.)`,T=a?"":` + float getBestIndicesAChannel(${m.join()}) { + return getChannel(getBestIndicesA(${d.join()}), + vec2(${d.slice(-2).join()})); }`;this.userCode=` - float getAChannel(${intChannels.join()}) { - return getChannel(getA(${channels.join()}), - vec2(${channels.slice(-2).join()})); + float getAChannel(${m.join()}) { + return getChannel(getA(${d.join()}), + vec2(${d.slice(-2).join()})); } - ${getBestIndicesAChannelSnippet} + ${T} void main() { - ${dtype} coords = getOutputCoords(); - bool hasNextCol = ${coords2[rank-1]} < ${outShape[rank-1]-1}; - bool hasNextRow = ${coords2[rank-2]} < ${outShape[rank-2]-1}; - ${sourceLocSetup} - ivec4 srcIdx = ivec4(sourceLocR${inChannel}, sourceLocG${inChannel}, - sourceLocB${inChannel}, sourceLocA${inChannel}) * ${windowSize}; + ${l} coords = getOutputCoords(); + bool hasNextCol = ${c[o-1]} < ${i[o-1]-1}; + bool hasNextRow = ${c[o-2]} < ${i[o-2]-1}; + ${u} + ivec4 srcIdx = ivec4(sourceLocR${h}, sourceLocG${h}, + sourceLocB${h}, sourceLocA${h}) * ${t}; ivec4 inIdx = srcIdx; vec4 bestIndex = vec4(inIdx); - vec4 bestValue = ${fetchValue}; + vec4 bestValue = ${N}; - for (int i = 0; i < ${windowSize}; i++) { + for (int i = 0; i < ${t}; i++) { inIdx = srcIdx; - ${fetchCandidateIdx} - vec4 candidate = ${fetchValue}; + ${v} + vec4 candidate = ${N}; bvec4 nan = isnan(candidate); bvec4 replace = bvec4( - vec4(${compOp}(candidate, bestValue)) * (vec4(1.0) - vec4(nan))); + vec4(${x}(candidate, bestValue)) * (vec4(1.0) - vec4(nan))); bestValue = vec4(replace.x ? candidate.x : bestValue.x, replace.y ? candidate.y : bestValue.y, @@ -1332,25 +1332,25 @@ return log(x + sqrt(x * x - 1.0));`,acosh3=unaryKernelFunc2({opSnippet:ACOSH}),a } setOutput(bestIndex); } - `}};function argReduce(backend2,x,reduceType,bestIndicesA=null){let batchSize=x.shape[0],inSize=x.shape[1];bestIndicesA!=null&&(batchSize=bestIndicesA.shape[0],inSize=bestIndicesA.shape[1]);let windowSize=backend_util_exports.computeOptimalWindowSize(inSize),reduceInfo={windowSize,inSize,batchSize,outSize:Math.ceil(inSize/windowSize)},program=new ArgMinMaxProgram(reduceInfo,reduceType,bestIndicesA==null),inputs=[x];bestIndicesA!=null&&inputs.push(bestIndicesA);let output=backend2.runWebGLProgram(program,inputs,"int32");if(output.shape[1]===1)return output;let result=argReduce(backend2,x,reduceType,output);return backend2.disposeIntermediateTensorInfo(output),result}function argReducePacked(backend2,x,reduceType,bestIndicesA=null){let inShape=bestIndicesA!=null?bestIndicesA.shape:x.shape,inSize=inShape[inShape.length-1],windowSize=backend_util_exports.computeOptimalWindowSize(inSize),program=new ArgMinMaxPackedProgram(inShape,windowSize,reduceType,bestIndicesA==null),inputs=bestIndicesA==null?[x]:[x,bestIndicesA],output=backend2.runWebGLProgram(program,inputs,"int32");if(output.shape.length===x.shape.length){let result=argReducePacked(backend2,x,reduceType,output);return backend2.disposeIntermediateTensorInfo(output),result}return output}function argMinMaxReduce(backend2,x,axis,reduceType){let axes=[axis];if(backend_util_exports.assertAxesAreInnerMostDims("arg"+reduceType.charAt(0).toUpperCase()+reduceType.slice(1),axes,x.shape.length),!env().getBool("WEBGL_PACK_REDUCE")||x.shape.length<=2){let intermediateTensorInfos=[],[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=reshape4({inputs:{x},backend:backend2,attrs:{shape:[-1,inSize]}});intermediateTensorInfos.push(a2D);let reduced=argReduce(backend2,a2D,reduceType);intermediateTensorInfos.push(reduced);let reshaped=reshape4({inputs:{x:reduced},backend:backend2,attrs:{shape:outShape}});return intermediateTensorInfos.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),reshaped}return argReducePacked(backend2,x,reduceType)}function argMax3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{axis}=attrs,axes=util_exports.parseAxisParam(axis,x.shape),permutedAxes=backend_util_exports.getAxesPermutation(axes,x.shape.length),$x=x,intermediateTensorInfos=[];permutedAxes!=null&&($x=transpose3({inputs:{x},backend:backend2,attrs:{perm:permutedAxes}}),intermediateTensorInfos.push($x),axes=backend_util_exports.getInnerMostAxes(axes.length,$x.shape.length)),backend_util_exports.assertAxesAreInnerMostDims("argMax",[axes[0]],$x.shape.length);let out=argMinMaxReduce(backend2,$x,axes[0],"max");return intermediateTensorInfos.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),out}var argMaxConfig2={kernelName:ArgMax,backendName:"webgl",kernelFunc:argMax3};function argMin3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{axis}=attrs,axes=util_exports.parseAxisParam(axis,x.shape),permutedAxes=backend_util_exports.getAxesPermutation(axes,x.shape.length),$x=x,intermediateTensorInfos=[];permutedAxes!=null&&($x=transpose3({inputs:{x},backend:backend2,attrs:{perm:permutedAxes}}),intermediateTensorInfos.push($x),axes=backend_util_exports.getInnerMostAxes(axes.length,$x.shape.length)),backend_util_exports.assertAxesAreInnerMostDims("argMin",[axes[0]],$x.shape.length);let out=argMinMaxReduce(backend2,$x,axes[0],"min");return intermediateTensorInfos.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),out}var argMinConfig2={kernelName:ArgMin,backendName:"webgl",kernelFunc:argMin3},ASIN=CHECK_NAN_SNIPPET+` + `}};function SS(e,t,n,a=null){let r=t.shape[0],s=t.shape[1];a!=null&&(r=a.shape[0],s=a.shape[1]);let i=_.computeOptimalWindowSize(s),o={windowSize:i,inSize:s,batchSize:r,outSize:Math.ceil(s/i)},l=new $X(o,n,a==null),c=[t];a!=null&&c.push(a);let u=e.runWebGLProgram(l,c,"int32");if(u.shape[1]===1)return u;let p=SS(e,t,n,u);return e.disposeIntermediateTensorInfo(u),p}function CS(e,t,n,a=null){let r=a!=null?a.shape:t.shape,s=r[r.length-1],i=_.computeOptimalWindowSize(s),o=new DX(r,i,n,a==null),l=a==null?[t]:[t,a],c=e.runWebGLProgram(o,l,"int32");if(c.shape.length===t.shape.length){let u=CS(e,t,n,c);return e.disposeIntermediateTensorInfo(c),u}return c}function ES(e,t,n,a){let r=[n];if(_.assertAxesAreInnerMostDims("arg"+a.charAt(0).toUpperCase()+a.slice(1),r,t.shape.length),!ee().getBool("WEBGL_PACK_REDUCE")||t.shape.length<=2){let s=[],[i,o]=_.computeOutAndReduceShapes(t.shape,r),l=k.sizeFromShape(o),c=xe({inputs:{x:t},backend:e,attrs:{shape:[-1,l]}});s.push(c);let u=SS(e,c,a);s.push(u);let p=xe({inputs:{x:u},backend:e,attrs:{shape:i}});return s.forEach(d=>e.disposeIntermediateTensorInfo(d)),p}return CS(e,t,a)}function MX(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{axis:s}=a,i=k.parseAxisParam(s,r.shape),o=_.getAxesPermutation(i,r.shape.length),l=r,c=[];o!=null&&(l=Cn({inputs:{x:r},backend:n,attrs:{perm:o}}),c.push(l),i=_.getInnerMostAxes(i.length,l.shape.length)),_.assertAxesAreInnerMostDims("argMax",[i[0]],l.shape.length);let u=ES(n,l,i[0],"max");return c.forEach(p=>n.disposeIntermediateTensorInfo(p)),u}var RX={kernelName:Fs,backendName:"webgl",kernelFunc:MX};function PX(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{axis:s}=a,i=k.parseAxisParam(s,r.shape),o=_.getAxesPermutation(i,r.shape.length),l=r,c=[];o!=null&&(l=Cn({inputs:{x:r},backend:n,attrs:{perm:o}}),c.push(l),i=_.getInnerMostAxes(i.length,l.shape.length)),_.assertAxesAreInnerMostDims("argMin",[i[0]],l.shape.length);let u=ES(n,l,i[0],"min");return c.forEach(p=>n.disposeIntermediateTensorInfo(p)),u}var OX={kernelName:sc,backendName:"webgl",kernelFunc:PX},LX=Pa+` if (abs(x) > 1.) { return NAN; } return asin(x); -`,asin3=unaryKernelFunc2({opSnippet:ASIN}),asinConfig2={kernelName:Asin,backendName:"webgl",kernelFunc:asin3},ASINH=CHECK_NAN_SNIPPET+"return log(x + sqrt(x * x + 1.0));",asinh3=unaryKernelFunc2({opSnippet:ASINH}),asinhConfig2={kernelName:Asinh,backendName:"webgl",kernelFunc:asinh3},ATAN=CHECK_NAN_SNIPPET+` +`,zX=Ye({opSnippet:LX}),BX={kernelName:Fo,backendName:"webgl",kernelFunc:zX},WX=Pa+"return log(x + sqrt(x * x + 1.0));",VX=Ye({opSnippet:WX}),UX={kernelName:Ao,backendName:"webgl",kernelFunc:VX},GX=Pa+` return atan(x); -`,atan4=unaryKernelFunc2({opSnippet:ATAN}),atanConfig2={kernelName:Atan,backendName:"webgl",kernelFunc:atan4},ATAN2=CHECK_NAN_SNIPPET_BINARY+` +`,HX=Ye({opSnippet:GX}),jX={kernelName:$o,backendName:"webgl",kernelFunc:HX},qX=eX+` return atan(a, b); -`,ATAN2_PACKED=` +`,KX=` vec4 result = atan(a, b); vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0)); - `+CHECK_NAN_SNIPPET_BINARY_PACKED+` + `+tX+` return result; -`,atan23=binaryKernelFunc2({opSnippet:ATAN2,packedOpSnippet:ATAN2_PACKED}),atan2Config2={kernelName:Atan2,backendName:"webgl",kernelFunc:atan23},ATANH=CHECK_NAN_SNIPPET+` +`,XX=sn({opSnippet:qX,packedOpSnippet:KX}),YX={kernelName:Mo,backendName:"webgl",kernelFunc:XX},JX=Pa+` if ((x < -1.0) || (x > 1.0)) return NAN; -return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet:ATANH}),atanhConfig2={kernelName:Atanh,backendName:"webgl",kernelFunc:atanh3},Pool2DProgram=class{constructor(convInfo,poolType,computePositions,flattenPositions=!1,includeBatchInIndex=!1){if(this.variableNames=["x"],poolType==="avg"&&computePositions)throw new Error("Cannot compute positions for average pool.");let filterWidth=convInfo.filterWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left;this.outputShape=convInfo.outShape;let isAvgPool=poolType==="avg",batchFlattenPositionStr=`((batch * ${convInfo.inHeight} + xR) * ${convInfo.inWidth} + xC) * ${convInfo.inChannels} + d`,flattenPositionStr=`(xR * ${convInfo.inWidth} + xC) * ${convInfo.inChannels} + d`,initializationValue="0.0";if(isAvgPool||(initializationValue="-1.0 / 1e-20"),computePositions){let compareOp2=">=";this.userCode=` - const ivec2 strides = ivec2(${strideHeight}, ${strideWidth}); - const ivec2 pads = ivec2(${padTop}, ${padLeft}); +return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,ZX=Ye({opSnippet:JX}),QX={kernelName:Do,backendName:"webgl",kernelFunc:ZX},wp=class{constructor(e,t,n,a=!1,r=!1){if(this.variableNames=["x"],t==="avg"&&n)throw new Error("Cannot compute positions for average pool.");let s=e.filterWidth,i=e.strideHeight,o=e.strideWidth,l=e.dilationHeight,c=e.dilationWidth,u=e.effectiveFilterHeight,p=e.effectiveFilterWidth,d=e.padInfo.top,h=e.padInfo.left;this.outputShape=e.outShape;let m=t==="avg",f=`((batch * ${e.inHeight} + xR) * ${e.inWidth} + xC) * ${e.inChannels} + d`,g=`(xR * ${e.inWidth} + xC) * ${e.inChannels} + d`,y="0.0";if(m||(y="-1.0 / 1e-20"),n){let E=">=";this.userCode=` + const ivec2 strides = ivec2(${i}, ${o}); + const ivec2 pads = ivec2(${d}, ${h}); void main() { ivec4 coords = getOutputCoords(); @@ -1368,19 +1368,19 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: int minMaxPosition = 0; float avgValue = 0.0; - for (int wR = 0; wR < ${effectiveFilterHeight}; - wR += ${dilationHeight}) { + for (int wR = 0; wR < ${u}; + wR += ${l}) { int xR = xRCorner + wR; - if (xR < 0 || xR >= ${convInfo.inHeight}) { + if (xR < 0 || xR >= ${e.inHeight}) { continue; } - for (int wC = 0; wC < ${effectiveFilterWidth}; - wC += ${dilationWidth}) { + for (int wC = 0; wC < ${p}; + wC += ${c}) { int xC = xCCorner + wC; - if (xC < 0 || xC >= ${convInfo.inWidth}) { + if (xC < 0 || xC >= ${e.inWidth}) { continue; } @@ -1390,31 +1390,31 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // use the current value. float currMinMaxValue = mix( value, minMaxValue, minMaxValueFound); - if (value ${compareOp2} currMinMaxValue) { + if (value ${E} currMinMaxValue) { minMaxValue = value; minMaxValueFound = 1.0; - minMaxPosition = ${flattenPositions?includeBatchInIndex?batchFlattenPositionStr:flattenPositionStr:`wR * ${effectiveFilterWidth} + wC`}; + minMaxPosition = ${a?r?f:g:`wR * ${p} + wC`}; } } } setOutput(float(minMaxPosition)); } - `;return}let compareOp="max",returnValue=`${poolType}(${poolType}(${poolType}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;poolType==="avg"&&(returnValue="avgValue / count");let filterWidthNearestVec4=Math.floor(filterWidth/4)*4,filterWidthVec4Remainder=filterWidth%4,updateSnippet=` - if (${isAvgPool}) { + `;return}let b="max",x=`${t}(${t}(${t}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;t==="avg"&&(x="avgValue / count");let v=Math.floor(s/4)*4,N=s%4,T=` + if (${m}) { avgValue += dot(values, ones); } else { - minMaxValue = ${compareOp}(values, minMaxValue); + minMaxValue = ${b}(values, minMaxValue); } `;this.userCode=` - const ivec2 strides = ivec2(${strideHeight}, ${strideWidth}); - const ivec2 pads = ivec2(${padTop}, ${padLeft}); - const float initializationValue = ${initializationValue}; + const ivec2 strides = ivec2(${i}, ${o}); + const ivec2 pads = ivec2(${d}, ${h}); + const float initializationValue = ${y}; const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0); float count = 0.0; float getValue(int batch, int xR, int xC, int d) { - if (xC < 0 || xC >= ${convInfo.inWidth}) { + if (xC < 0 || xC >= ${e.inWidth}) { return initializationValue; } count += 1.0; @@ -1432,33 +1432,33 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // max/min x(?, ?, d) to get y(yR, yC, d). // ? = to be determined - vec4 minMaxValue = vec4(${initializationValue}); + vec4 minMaxValue = vec4(${y}); float avgValue = 0.0; count = 0.0; - for (int wR = 0; wR < ${effectiveFilterHeight}; - wR += ${dilationHeight}) { + for (int wR = 0; wR < ${u}; + wR += ${l}) { int xR = xRCorner + wR; - if (xR < 0 || xR >= ${convInfo.inHeight}) { + if (xR < 0 || xR >= ${e.inHeight}) { continue; } - for (int wC = 0; wC < ${filterWidthNearestVec4}; wC += 4) { - int xC = xCCorner + wC * ${dilationWidth}; + for (int wC = 0; wC < ${v}; wC += 4) { + int xC = xCCorner + wC * ${c}; vec4 values = vec4( getValue(batch, xR, xC, d), - getValue(batch, xR, xC + ${dilationWidth}, d), - getValue(batch, xR, xC + 2 * ${dilationWidth}, d), - getValue(batch, xR, xC + 3 * ${dilationWidth}, d) + getValue(batch, xR, xC + ${c}, d), + getValue(batch, xR, xC + 2 * ${c}, d), + getValue(batch, xR, xC + 3 * ${c}, d) ); - ${updateSnippet} + ${T} } - int xC = xCCorner + ${filterWidthNearestVec4}; - if (${filterWidthVec4Remainder===1}) { + int xC = xCCorner + ${v}; + if (${N===1}) { vec4 values = vec4( getValue(batch, xR, xC, d), initializationValue, @@ -1466,33 +1466,33 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: initializationValue ); - ${updateSnippet} - } else if (${filterWidthVec4Remainder===2}) { + ${T} + } else if (${N===2}) { vec4 values = vec4( getValue(batch, xR, xC, d), - getValue(batch, xR, xC + ${dilationWidth}, d), + getValue(batch, xR, xC + ${c}, d), initializationValue, initializationValue ); - ${updateSnippet} - } else if (${filterWidthVec4Remainder===3}) { + ${T} + } else if (${N===3}) { vec4 values = vec4( getValue(batch, xR, xC, d), - getValue(batch, xR, xC + ${dilationWidth}, d), - getValue(batch, xR, xC + 2 * ${dilationWidth}, d), + getValue(batch, xR, xC + ${c}, d), + getValue(batch, xR, xC + 2 * ${c}, d), initializationValue ); - ${updateSnippet} + ${T} } } - setOutput(${returnValue}); + setOutput(${x}); } - `}},Pool3DProgram=class{constructor(convInfo,poolType,computePositions,flattenPositions=!1,includeBatchInIndex=!1){if(this.variableNames=["x"],poolType==="avg"&&computePositions)throw new Error("Cannot compute positions for average pool.");let filterWidth=convInfo.filterWidth,strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=convInfo.padInfo.front,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left;this.outputShape=convInfo.outShape;let isAvgPool=poolType==="avg",initializationValue="0.0";if(isAvgPool||(initializationValue="-1.0 / 1e-20"),computePositions){let compareOp2=">=";this.userCode=` + `}},Pv=class{constructor(e,t,n,a=!1,r=!1){if(this.variableNames=["x"],t==="avg"&&n)throw new Error("Cannot compute positions for average pool.");let s=e.filterWidth,i=e.strideDepth,o=e.strideHeight,l=e.strideWidth,c=e.dilationDepth,u=e.dilationHeight,p=e.dilationWidth,d=e.effectiveFilterDepth,h=e.effectiveFilterHeight,m=e.effectiveFilterWidth,f=e.padInfo.front,g=e.padInfo.top,y=e.padInfo.left;this.outputShape=e.outShape;let b=t==="avg",x="0.0";if(b||(x="-1.0 / 1e-20"),n){let $=">=";this.userCode=` const ivec3 strides = - ivec3(${strideDepth}, ${strideHeight}, ${strideWidth}); - const ivec3 pads = ivec3(${padFront}, ${padTop}, ${padLeft}); + ivec3(${i}, ${o}, ${l}); + const ivec3 pads = ivec3(${f}, ${g}, ${y}); void main() { ivec5 coords = getOutputCoords(); @@ -1510,27 +1510,27 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: float minMaxValueFound = 0.0; int minMaxPosition = 0; - for (int wD = 0; wD < ${effectiveFilterDepth}; - wD += ${dilationDepth}) { + for (int wD = 0; wD < ${d}; + wD += ${c}) { int xD = xDCorner + wD; - if (xD < 0 || xD >= ${convInfo.inDepth}) { + if (xD < 0 || xD >= ${e.inDepth}) { continue; } - for (int wR = 0; wR < ${effectiveFilterHeight}; - wR += ${dilationHeight}) { + for (int wR = 0; wR < ${h}; + wR += ${u}) { int xR = xRCorner + wR; - if (xR < 0 || xR >= ${convInfo.inHeight}) { + if (xR < 0 || xR >= ${e.inHeight}) { continue; } - for (int wC = 0; wC < ${effectiveFilterWidth}; - wC += ${dilationWidth}) { + for (int wC = 0; wC < ${m}; + wC += ${p}) { int xC = xCCorner + wC; - if (xC < 0 || xC >= ${convInfo.inWidth}) { + if (xC < 0 || xC >= ${e.inWidth}) { continue; } @@ -1540,34 +1540,34 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // use the current value. float currMinMaxValue = mix( value, minMaxValue, minMaxValueFound); - if (value ${compareOp2} currMinMaxValue) { + if (value ${$} currMinMaxValue) { minMaxValue = value; minMaxValueFound = 1.0; - minMaxPosition = ${flattenPositions?includeBatchInIndex?`(((batch * ${convInfo.inDepth} + xD) * ${convInfo.inHeight} + xR) * ${convInfo.inWidth} + xC) * ${convInfo.inChannels} + ch`:`((xD * ${convInfo.inHeight} + xR) * ${convInfo.inWidth} + xC) * ${convInfo.inChannels} + ch`:`wD * ${effectiveFilterHeight} * ${effectiveFilterWidth} + - wR * ${effectiveFilterWidth} + wC`}; + minMaxPosition = ${a?r?`(((batch * ${e.inDepth} + xD) * ${e.inHeight} + xR) * ${e.inWidth} + xC) * ${e.inChannels} + ch`:`((xD * ${e.inHeight} + xR) * ${e.inWidth} + xC) * ${e.inChannels} + ch`:`wD * ${h} * ${m} + + wR * ${m} + wC`}; } } } } setOutput(float(minMaxPosition)); } - `;return}let compareOp="max",returnValue=`${poolType}(${poolType}(${poolType}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;poolType==="avg"&&(returnValue="avgValue / count");let filterWidthNearestVec4=Math.floor(filterWidth/4)*4,filterWidthVec4Remainder=filterWidth%4,updateSnippet=` - if (${isAvgPool}) { + `;return}let v="max",N=`${t}(${t}(${t}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;t==="avg"&&(N="avgValue / count");let T=Math.floor(s/4)*4,E=s%4,A=` + if (${b}) { avgValue += dot(values, ones); } else { - minMaxValue = ${compareOp}(values, minMaxValue); + minMaxValue = ${v}(values, minMaxValue); } `;this.userCode=` const ivec3 strides = - ivec3(${strideDepth}, ${strideHeight}, ${strideWidth}); - const ivec3 pads = ivec3(${padFront}, ${padTop}, ${padLeft}); - const float initializationValue = ${initializationValue}; + ivec3(${i}, ${o}, ${l}); + const ivec3 pads = ivec3(${f}, ${g}, ${y}); + const float initializationValue = ${x}; const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0); float count = 0.0; float getValue(int batch, int xD, int xR, int xC, int ch) { - if (xC < 0 || xC >= ${convInfo.inWidth}) { + if (xC < 0 || xC >= ${e.inWidth}) { return initializationValue; } count += 1.0; @@ -1586,41 +1586,41 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // max/min x(?, ?, ?, d) to get y(yD, yR, yC, ch). // ? = to be determined - vec4 minMaxValue = vec4(${initializationValue}); + vec4 minMaxValue = vec4(${x}); float avgValue = 0.0; count = 0.0; - for (int wD = 0; wD < ${effectiveFilterDepth}; - wD += ${dilationDepth}) { + for (int wD = 0; wD < ${d}; + wD += ${c}) { int xD = xDCorner + wD; - if (xD < 0 || xD >= ${convInfo.inDepth}) { + if (xD < 0 || xD >= ${e.inDepth}) { continue; } - for (int wR = 0; wR < ${effectiveFilterHeight}; - wR += ${dilationHeight}) { + for (int wR = 0; wR < ${h}; + wR += ${u}) { int xR = xRCorner + wR; - if (xR < 0 || xR >= ${convInfo.inHeight}) { + if (xR < 0 || xR >= ${e.inHeight}) { continue; } - for (int wC = 0; wC < ${filterWidthNearestVec4}; wC += 4) { - int xC = xCCorner + wC * ${dilationWidth}; + for (int wC = 0; wC < ${T}; wC += 4) { + int xC = xCCorner + wC * ${p}; vec4 values = vec4( getValue(batch, xD, xR, xC, ch), - getValue(batch, xD, xR, xC + ${dilationWidth}, ch), - getValue(batch, xD, xR, xC + 2 * ${dilationWidth}, ch), - getValue(batch, xD, xR, xC + 3 * ${dilationWidth}, ch) + getValue(batch, xD, xR, xC + ${p}, ch), + getValue(batch, xD, xR, xC + 2 * ${p}, ch), + getValue(batch, xD, xR, xC + 3 * ${p}, ch) ); - ${updateSnippet} + ${A} } - int xC = xCCorner + ${filterWidthNearestVec4}; - if (${filterWidthVec4Remainder===1}) { + int xC = xCCorner + ${T}; + if (${E===1}) { vec4 values = vec4( getValue(batch, xD, xR, xC, ch), initializationValue, @@ -1628,33 +1628,33 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: initializationValue ); - ${updateSnippet} - } else if (${filterWidthVec4Remainder===2}) { + ${A} + } else if (${E===2}) { vec4 values = vec4( getValue(batch, xD, xR, xC, ch), - getValue(batch, xD, xR, xC + ${dilationWidth}, ch), + getValue(batch, xD, xR, xC + ${p}, ch), initializationValue, initializationValue ); - ${updateSnippet} - } else if (${filterWidthVec4Remainder===3}) { + ${A} + } else if (${E===3}) { vec4 values = vec4( getValue(batch, xD, xR, xC, ch), - getValue(batch, xD, xR, xC + ${dilationWidth}, ch), - getValue(batch, xD, xR, xC + 2 * ${dilationWidth}, ch), + getValue(batch, xD, xR, xC + ${p}, ch), + getValue(batch, xD, xR, xC + 2 * ${p}, ch), initializationValue ); - ${updateSnippet} + ${A} } } - setOutput(${returnValue}); + setOutput(${N}); } } - `}};function avgPool3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs;assertNotComplex2(x,"avgPool");let{filterSize,strides,pad:pad3,dimRoundingMode}=attrs,dilations=1;util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad3,dimRoundingMode);if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))return identity3({inputs:{x},backend:backend2});let avgPoolProgram=new Pool2DProgram(convInfo,"avg",!1);return backend2.runWebGLProgram(avgPoolProgram,[x],"float32")}var avgPoolConfig2={kernelName:AvgPool,backendName:"webgl",kernelFunc:avgPool3};function avgPool3D2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{filterSize,strides,pad:pad3,dimRoundingMode,dataFormat}=attrs,dilations=[1,1,1],convInfo=backend_util_exports.computePool3DInfo(x.shape,filterSize,strides,dilations,pad3,dimRoundingMode,dataFormat),avgPoolProgram=new Pool3DProgram(convInfo,"avg",!1);return backend2.runWebGLProgram(avgPoolProgram,[x],"float32")}var avgPool3DConfig2={kernelName:AvgPool3D,backendName:"webgl",kernelFunc:avgPool3D2},AvgPool2DBackpropProgram=class{constructor(convInfo){this.variableNames=["dy"],this.outputShape=convInfo.inShape;let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,avgMultiplier=1/(filterHeight*filterWidth);this.userCode=` - const ivec2 pads = ivec2(${padTop}, ${padLeft}); - const float avgMultiplier = float(${avgMultiplier}); + `}};function eY(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t;bp(r,"avgPool");let{filterSize:s,strides:i,pad:o,dimRoundingMode:l}=a,c=1;k.assert(_.eitherStridesOrDilationsAreOne(i,c),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${c}'`);let u=_.computePool2DInfo(r.shape,s,i,c,o,l);if(u.filterWidth===1&&u.filterHeight===1&&k.arraysEqual(u.inShape,u.outShape))return Wn({inputs:{x:r},backend:n});let p=new wp(u,"avg",!1);return n.runWebGLProgram(p,[r],"float32")}var tY={kernelName:As,backendName:"webgl",kernelFunc:eY};function nY(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{filterSize:s,strides:i,pad:o,dimRoundingMode:l,dataFormat:c}=a,u=[1,1,1],p=_.computePool3DInfo(r.shape,s,i,u,o,l,c),d=new Pv(p,"avg",!1);return n.runWebGLProgram(d,[r],"float32")}var aY={kernelName:ic,backendName:"webgl",kernelFunc:nY},rY=class{constructor(e){this.variableNames=["dy"],this.outputShape=e.inShape;let t=e.filterHeight,n=e.filterWidth,a=e.strideHeight,r=e.strideWidth,s=e.dilationHeight,i=e.dilationWidth,o=e.effectiveFilterHeight,l=e.effectiveFilterWidth,c=o-1-e.padInfo.top,u=l-1-e.padInfo.left,p=1/(t*n);this.userCode=` + const ivec2 pads = ivec2(${c}, ${u}); + const float avgMultiplier = float(${p}); void main() { ivec4 coords = getOutputCoords(); @@ -1668,20 +1668,20 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d). // ? = to be determined. : = across all values in that axis. float dotProd = 0.0; - for (int wR = 0; wR < ${effectiveFilterHeight}; - wR += ${dilationHeight}) { - float dyR = float(dyRCorner + wR) / ${strideHeight}.0; + for (int wR = 0; wR < ${o}; + wR += ${s}) { + float dyR = float(dyRCorner + wR) / ${a}.0; - if (dyR < 0.0 || dyR >= ${convInfo.outHeight}.0 || fract(dyR) > 0.0) { + if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || fract(dyR) > 0.0) { continue; } int idyR = int(dyR); - for (int wC = 0; wC < ${effectiveFilterWidth}; - wC+= ${dilationWidth}) { - float dyC = float(dyCCorner + wC) / ${strideWidth}.0; + for (int wC = 0; wC < ${l}; + wC+= ${i}) { + float dyC = float(dyCCorner + wC) / ${r}.0; - if (dyC < 0.0 || dyC >= ${convInfo.outWidth}.0 || + if (dyC < 0.0 || dyC >= ${e.outWidth}.0 || fract(dyC) > 0.0) { continue; } @@ -1694,9 +1694,9 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(dotProd); } - `}},AvgPool3DBackpropProgram=class{constructor(convInfo){this.variableNames=["dy"],this.outputShape=convInfo.inShape;let filterDepth=convInfo.filterDepth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=effectiveFilterDepth-1-convInfo.padInfo.front,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,avgMultiplier=1/(filterDepth*filterHeight*filterWidth);this.userCode=` - const ivec3 pads = ivec3(${padFront}, ${padTop}, ${padLeft}); - const float avgMultiplier = float(${avgMultiplier}); + `}},sY=class{constructor(e){this.variableNames=["dy"],this.outputShape=e.inShape;let t=e.filterDepth,n=e.filterHeight,a=e.filterWidth,r=e.strideDepth,s=e.strideHeight,i=e.strideWidth,o=e.dilationDepth,l=e.dilationHeight,c=e.dilationWidth,u=e.effectiveFilterDepth,p=e.effectiveFilterHeight,d=e.effectiveFilterWidth,h=u-1-e.padInfo.front,m=p-1-e.padInfo.top,f=d-1-e.padInfo.left,g=1/(t*n*a);this.userCode=` + const ivec3 pads = ivec3(${h}, ${m}, ${f}); + const float avgMultiplier = float(${g}); void main() { ivec5 coords = getOutputCoords(); @@ -1713,30 +1713,30 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // ? = to be determined. : = across all values in that axis. float dotProd = 0.0; - for (int wD = 0; wD < ${effectiveFilterDepth}; - wD += ${dilationDepth}) { - float dyD = float(dyDCorner + wD) / ${strideDepth}.0; + for (int wD = 0; wD < ${u}; + wD += ${o}) { + float dyD = float(dyDCorner + wD) / ${r}.0; - if (dyD < 0.0 || dyD >= ${convInfo.outDepth}.0 || fract(dyD) > 0.0) { + if (dyD < 0.0 || dyD >= ${e.outDepth}.0 || fract(dyD) > 0.0) { continue; } int idyD = int(dyD); - for (int wR = 0; wR < ${effectiveFilterHeight}; - wR += ${dilationHeight}) { - float dyR = float(dyRCorner + wR) / ${strideHeight}.0; + for (int wR = 0; wR < ${p}; + wR += ${l}) { + float dyR = float(dyRCorner + wR) / ${s}.0; - if (dyR < 0.0 || dyR >= ${convInfo.outHeight}.0 || + if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || fract(dyR) > 0.0) { continue; } int idyR = int(dyR); - for (int wC = 0; wC < ${effectiveFilterWidth}; - wC += ${dilationWidth}) { - float dyC = float(dyCCorner + wC) / ${strideWidth}.0; + for (int wC = 0; wC < ${d}; + wC += ${c}) { + float dyC = float(dyCCorner + wC) / ${i}.0; - if (dyC < 0.0 || dyC >= ${convInfo.outWidth}.0 || + if (dyC < 0.0 || dyC >= ${e.outWidth}.0 || fract(dyC) > 0.0) { continue; } @@ -1750,71 +1750,71 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(dotProd); } - `}};function avgPool3DGrad2(args){let{inputs,backend:backend2,attrs}=args,{dy,input:input2}=inputs,x=input2,{filterSize,strides,pad:pad3,dimRoundingMode}=attrs,dilations=[1,1,1],convInfo=backend_util_exports.computePool3DInfo(x.shape,filterSize,strides,dilations,pad3,dimRoundingMode),avgPoolBackpropProgram=new AvgPool3DBackpropProgram(convInfo);return backend2.runWebGLProgram(avgPoolBackpropProgram,[dy],x.dtype)}var avgPoolGrad3DConfig={kernelName:AvgPool3DGrad,backendName:"webgl",kernelFunc:avgPool3DGrad2};function avgPoolGrad3(args){let{inputs,backend:backend2,attrs}=args,{dy,input:input2}=inputs,x=input2;assertNotComplex2([dy,input2],"avgPoolGrad");let{filterSize,strides,pad:pad3}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad3),avgPoolBackpropProgram=new AvgPool2DBackpropProgram(convInfo);return backend2.runWebGLProgram(avgPoolBackpropProgram,[dy],x.dtype)}var avgPoolGradConfig3={kernelName:AvgPoolGrad,backendName:"webgl",kernelFunc:avgPoolGrad3};function batchMatMul2(args){let{inputs,backend:backend2,attrs}=args,{a,b}=inputs,{transposeA,transposeB}=attrs;return batchMatMulImpl({a,b,transposeA,transposeB,backend:backend2})}var batchMatMulConfig2={kernelName:BatchMatMul,backendName:"webgl",kernelFunc:batchMatMul2},BatchNormProgram=class{constructor(xShape,meanShape,varianceShape,offsetShape,scaleShape,varianceEpsilon){this.outputShape=[],this.variableNames=["x","mean","variance"],backend_util_exports.assertAndGetBroadcastShape(xShape,meanShape),backend_util_exports.assertAndGetBroadcastShape(xShape,varianceShape);let offsetSnippet="0.0";offsetShape!=null&&(backend_util_exports.assertAndGetBroadcastShape(xShape,offsetShape),this.variableNames.push("offset"),offsetSnippet="getOffsetAtOutCoords()");let scaleSnippet="1.0";scaleShape!=null&&(backend_util_exports.assertAndGetBroadcastShape(xShape,scaleShape),this.variableNames.push("scale"),scaleSnippet="getScaleAtOutCoords()"),this.outputShape=xShape,this.userCode=` + `}};function iY(e){let{inputs:t,backend:n,attrs:a}=e,{dy:r,input:s}=t,i=s,{filterSize:o,strides:l,pad:c,dimRoundingMode:u}=a,p=[1,1,1],d=_.computePool3DInfo(i.shape,o,l,p,c,u),h=new sY(d);return n.runWebGLProgram(h,[r],i.dtype)}var oY={kernelName:Id,backendName:"webgl",kernelFunc:iY};function lY(e){let{inputs:t,backend:n,attrs:a}=e,{dy:r,input:s}=t,i=s;bp([r,s],"avgPoolGrad");let{filterSize:o,strides:l,pad:c}=a,u=_.computePool2DInfo(i.shape,o,l,1,c),p=new rY(u);return n.runWebGLProgram(p,[r],i.dtype)}var uY={kernelName:kd,backendName:"webgl",kernelFunc:lY};function cY(e){let{inputs:t,backend:n,attrs:a}=e,{a:r,b:s}=t,{transposeA:i,transposeB:o}=a;return Gm({a:r,b:s,transposeA:i,transposeB:o,backend:n})}var pY={kernelName:$s,backendName:"webgl",kernelFunc:cY},dY=class{constructor(e,t,n,a,r,s){this.outputShape=[],this.variableNames=["x","mean","variance"],_.assertAndGetBroadcastShape(e,t),_.assertAndGetBroadcastShape(e,n);let i="0.0";a!=null&&(_.assertAndGetBroadcastShape(e,a),this.variableNames.push("offset"),i="getOffsetAtOutCoords()");let o="1.0";r!=null&&(_.assertAndGetBroadcastShape(e,r),this.variableNames.push("scale"),o="getScaleAtOutCoords()"),this.outputShape=e,this.userCode=` void main() { float x = getXAtOutCoords(); float mean = getMeanAtOutCoords(); float variance = getVarianceAtOutCoords(); - float offset = ${offsetSnippet}; - float scale = ${scaleSnippet}; - float inv = scale * inversesqrt(variance + float(${varianceEpsilon})); + float offset = ${i}; + float scale = ${o}; + float inv = scale * inversesqrt(variance + float(${s})); setOutput(dot(vec3(x, -mean, offset), vec3(inv, inv, 1))); } - `}},BatchNormPackedProgram=class{constructor(xShape,meanShape,varianceShape,offsetShape,scaleShape,varianceEpsilon){this.packedInputs=!0,this.packedOutput=!0,this.variableNames=["x","mean","variance"],backend_util_exports.assertAndGetBroadcastShape(xShape,meanShape),backend_util_exports.assertAndGetBroadcastShape(xShape,varianceShape);let offsetSnippet="vec4(0.0)";offsetShape!=null&&(backend_util_exports.assertAndGetBroadcastShape(xShape,offsetShape),this.variableNames.push("offset"),offsetSnippet="getOffsetAtOutCoords()");let scaleSnippet="vec4(1.0)";scaleShape!=null&&(backend_util_exports.assertAndGetBroadcastShape(xShape,scaleShape),this.variableNames.push("scale"),scaleSnippet="getScaleAtOutCoords()"),this.outputShape=xShape,this.userCode=` + `}},hY=class{constructor(e,t,n,a,r,s){this.packedInputs=!0,this.packedOutput=!0,this.variableNames=["x","mean","variance"],_.assertAndGetBroadcastShape(e,t),_.assertAndGetBroadcastShape(e,n);let i="vec4(0.0)";a!=null&&(_.assertAndGetBroadcastShape(e,a),this.variableNames.push("offset"),i="getOffsetAtOutCoords()");let o="vec4(1.0)";r!=null&&(_.assertAndGetBroadcastShape(e,r),this.variableNames.push("scale"),o="getScaleAtOutCoords()"),this.outputShape=e,this.userCode=` void main() { - vec4 offset = ${offsetSnippet}; - vec4 scale = ${scaleSnippet}; + vec4 offset = ${i}; + vec4 scale = ${o}; vec4 x = getXAtOutCoords(); vec4 mean = getMeanAtOutCoords(); vec4 variance = getVarianceAtOutCoords(); - vec4 inv = scale * inversesqrt(variance + vec4(${varianceEpsilon})); + vec4 inv = scale * inversesqrt(variance + vec4(${s})); setOutput((x - mean) * inv + offset); } - `}},batchNorm3=({inputs,backend:backend2,attrs})=>{let{x,mean:mean4,variance,offset,scale:scale22}=inputs;util_exports.assert(mean4.shape.length===variance.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),util_exports.assert(offset==null||mean4.shape.length===offset.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),util_exports.assert(scale22==null||mean4.shape.length===scale22.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let{varianceEpsilon}=attrs;varianceEpsilon==null&&(varianceEpsilon=.001);let finalInputs=[x,mean4,variance],offsetShape=null;offset!=null&&(offsetShape=offset.shape,finalInputs.push(offset));let scaleShape=null;scale22!=null&&(scaleShape=scale22.shape,finalInputs.push(scale22));let program=env().getBool("WEBGL_PACK_NORMALIZATION")?new BatchNormPackedProgram(x.shape,mean4.shape,variance.shape,offsetShape,scaleShape,varianceEpsilon):new BatchNormProgram(x.shape,mean4.shape,variance.shape,offsetShape,scaleShape,varianceEpsilon);return backend2.runWebGLProgram(program,finalInputs,finalInputs[0].dtype)},batchNormConfig2={kernelName:FusedBatchNorm,backendName:"webgl",kernelFunc:batchNorm3},SliceProgram=class{constructor(destSize){this.variableNames=["source"],this.outputShape=destSize,this.rank=destSize.length;let dtype=getCoordsDataType(this.rank),uniformPart=`uniform int start[${this.rank}];`,sourceCoords=getCoords(this.rank),body,coordSum=destSize.map((_,i)=>`sourceLoc.${coords[i]} = start[${i}] + coords.${coords[i]};`);body=` - ${dtype} sourceLoc; - ${dtype} coords = getOutputCoords(); - ${coordSum.join(` + `}},mY=({inputs:e,backend:t,attrs:n})=>{let{x:a,mean:r,variance:s,offset:i,scale:o}=e;k.assert(r.shape.length===s.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),k.assert(i==null||r.shape.length===i.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),k.assert(o==null||r.shape.length===o.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let{varianceEpsilon:l}=n;l==null&&(l=.001);let c=[a,r,s],u=null;i!=null&&(u=i.shape,c.push(i));let p=null;o!=null&&(p=o.shape,c.push(o));let d=ee().getBool("WEBGL_PACK_NORMALIZATION")?new hY(a.shape,r.shape,s.shape,u,p,l):new dY(a.shape,r.shape,s.shape,u,p,l);return t.runWebGLProgram(d,c,c[0].dtype)},fY={kernelName:Us,backendName:"webgl",kernelFunc:mY},yY=class{constructor(e){this.variableNames=["source"],this.outputShape=e,this.rank=e.length;let t=mt(this.rank),n=`uniform int start[${this.rank}];`,a=gY(this.rank),r,s=e.map((i,o)=>`sourceLoc.${Ov[o]} = start[${o}] + coords.${Ov[o]};`);r=` + ${t} sourceLoc; + ${t} coords = getOutputCoords(); + ${s.join(` `)} `,this.userCode=` - ${uniformPart} + ${n} void main() { - ${body} - setOutput(getSource(${sourceCoords})); + ${r} + setOutput(getSource(${a})); } - `}getCustomSetupFunc(start){if(start.length!==this.rank)throw Error(`The rank (${this.rank}) of the program must match the length of start (${start.length})`);return(gpgpu,webGLProgram)=>{this.startLoc==null&&(this.startLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"start"),this.startLoc==null)||gpgpu.gl.uniform1iv(this.startLoc,start)}}},coords=["x","y","z","w","u","v"];function getCoords(rank){if(rank===1)return"sourceLoc";if(rank<=6)return coords.slice(0,rank).map(x=>"sourceLoc."+x).join(",");throw Error(`Slicing for rank ${rank} is not yet supported`)}var SlicePackedProgram=class{constructor(destSize){this.variableNames=["source"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=destSize,this.rank=destSize.length;let dtype=getCoordsDataType(this.rank),coords2=getChannels("coords",this.rank),sourceLoc=getChannels("sourceLoc",this.rank),innerDims=this.rank===1?"sourceLoc":`vec2(${sourceLoc.slice(-2).join()})`,getChannel=`getChannel(getSource(${sourceLoc.join()}), ${innerDims})`,upperRow=` - result.x = ${getChannel}; - if (++${coords2[this.rank-1]} < ${destSize[this.rank-1]}) { - ++${sourceLoc[this.rank-1]}; - result.y = ${getChannel}; - --${sourceLoc[this.rank-1]}; + `}getCustomSetupFunc(e){if(e.length!==this.rank)throw Error(`The rank (${this.rank}) of the program must match the length of start (${e.length})`);return(t,n)=>{this.startLoc==null&&(this.startLoc=t.getUniformLocationNoThrow(n,"start"),this.startLoc==null)||t.gl.uniform1iv(this.startLoc,e)}}},Ov=["x","y","z","w","u","v"];function gY(e){if(e===1)return"sourceLoc";if(e<=6)return Ov.slice(0,e).map(t=>"sourceLoc."+t).join(",");throw Error(`Slicing for rank ${e} is not yet supported`)}var bY=class{constructor(e){this.variableNames=["source"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.rank=e.length;let t=mt(this.rank),n=gn("coords",this.rank),a=gn("sourceLoc",this.rank),r=this.rank===1?"sourceLoc":`vec2(${a.slice(-2).join()})`,s=`getChannel(getSource(${a.join()}), ${r})`,i=` + result.x = ${s}; + if (++${n[this.rank-1]} < ${e[this.rank-1]}) { + ++${a[this.rank-1]}; + result.y = ${s}; + --${a[this.rank-1]}; } - `,lowerRow=this.rank===1?"":` - --${coords2[this.rank-1]}; - if (++${coords2[this.rank-2]} < ${destSize[this.rank-2]}) { - ++${sourceLoc[this.rank-2]}; - result.z = ${getChannel}; - if (++${coords2[this.rank-1]} < ${destSize[this.rank-1]}) { - ++${sourceLoc[this.rank-1]}; - result.w = ${getChannel}; + `,o=this.rank===1?"":` + --${n[this.rank-1]}; + if (++${n[this.rank-2]} < ${e[this.rank-2]}) { + ++${a[this.rank-2]}; + result.z = ${s}; + if (++${n[this.rank-1]} < ${e[this.rank-1]}) { + ++${a[this.rank-1]}; + result.w = ${s}; } } - `,sourceLocSetup=this.rank<=4?`sourceLoc = coords + - ${dtype}(${destSize.map((_,i)=>`start[${i}]`).join()});`:destSize.map((_,i)=>`${sourceLoc[i]} = ${coords2[i]} + start[${i}];`).join(` + `,l=this.rank<=4?`sourceLoc = coords + + ${t}(${e.map((c,u)=>`start[${u}]`).join()});`:e.map((c,u)=>`${a[u]} = ${n[u]} + start[${u}];`).join(` `);this.userCode=` uniform int start[${this.rank}]; void main() { - ${dtype} coords = getOutputCoords(); - ${dtype} sourceLoc; - ${sourceLocSetup} + ${t} coords = getOutputCoords(); + ${t} sourceLoc; + ${l} vec4 result = vec4(0.); - ${upperRow} - ${lowerRow} + ${i} + ${o} setOutput(result); } - `}getCustomSetupFunc(start){if(start.length!==this.rank)throw Error(`The rank (${this.rank}) of the program must match the length of start (${start.length})`);return(gpgpu,webGLProgram)=>{this.startLoc==null&&(this.startLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"start"),this.startLoc==null)||gpgpu.gl.uniform1iv(this.startLoc,start)}}};function shallowSlice(x,begin,size,backend2){let xTexData=backend2.texData.get(x.dataId),t=backend2.makeTensorInfo(size,x.dtype),newTexData=backend2.texData.get(t.dataId);Object.assign(newTexData,xTexData),newTexData.shape=size,newTexData.dtype=x.dtype;let flatOffset=slice_util_exports.computeFlatOffset(begin,util_exports.computeStrides(x.shape));xTexData.slice&&(flatOffset+=xTexData.slice.flatOffset),newTexData.slice={flatOffset,origDataId:xTexData.slice&&xTexData.slice.origDataId||x.dataId};let refCount=backend2.dataRefCount.get(newTexData.slice.origDataId)||1;return backend2.dataRefCount.set(newTexData.slice.origDataId,refCount+1),t}function slice3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{begin,size}=attrs,[$begin,$size]=slice_util_exports.parseSliceParams(x,begin,size);if(slice_util_exports.assertParamsValid(x,$begin,$size),util_exports.sizeFromShape($size)===0)return backend2.makeTensorInfo($size,x.dtype,[]);if(backend2.shouldExecuteOnCPU([x])||x.dtype==="string"){let xTexData=backend2.texData.get(x.dataId),outValues=sliceImplCPU(xTexData.values,$begin,$size,x.shape,x.dtype);return backend2.makeTensorInfo($size,x.dtype,outValues)}let{isPacked}=backend2.texData.get(x.dataId),isContinous=slice_util_exports.isSliceContinous(x.shape,$begin,$size);if(isPacked||!isContinous){let program=env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new SlicePackedProgram($size):new SliceProgram($size),customSetup=program.getCustomSetupFunc($begin);return backend2.runWebGLProgram(program,[x],x.dtype,customSetup)}return backend2.uploadToGPU(x.dataId),shallowSlice(x,$begin,$size,backend2)}var sliceConfig2={kernelName:Slice,backendName:"webgl",kernelFunc:slice3},batchToSpaceND3=args=>{let{inputs,backend:backend2,attrs}=args,{x}=inputs,{blockShape,crops}=attrs;util_exports.assert(x.shape.length<=4,()=>"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet");let prod5=blockShape.reduce((a,b)=>a*b),reshaped=backend_util_exports.getReshaped(x.shape,blockShape,prod5),permuted=backend_util_exports.getPermuted(reshaped.length,blockShape.length),reshapedPermuted=backend_util_exports.getReshapedPermuted(x.shape,blockShape,prod5),sliceBeginCoords=backend_util_exports.getSliceBeginCoords(crops,blockShape.length),sliceSize=backend_util_exports.getSliceSize(reshapedPermuted,crops,blockShape.length),toDispose=[],reshapedIntermediate=reshape4({inputs:{x},backend:backend2,attrs:{shape:reshaped}}),transposedIntermediate=transpose3({inputs:{x:reshapedIntermediate},backend:backend2,attrs:{perm:permuted}}),reshapedIntermediate2=reshape4({inputs:{x:transposedIntermediate},backend:backend2,attrs:{shape:reshapedPermuted}}),sliced=slice3({inputs:{x:reshapedIntermediate2},backend:backend2,attrs:{begin:sliceBeginCoords,size:sliceSize}});return toDispose.push(reshapedIntermediate),toDispose.push(transposedIntermediate),toDispose.push(reshapedIntermediate2),toDispose.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),sliced},batchToSpaceNDConfig2={kernelName:BatchToSpaceND,backendName:"webgl",kernelFunc:batchToSpaceND3};function bincount3(args){let{inputs,backend:backend2,attrs}=args,{x,weights}=inputs,{size}=attrs,xVals=backend2.readSync(x.dataId),weightsVals=backend2.readSync(weights.dataId),outVals=bincountImplCPU(xVals,weightsVals,weights.dtype,weights.shape,size);return backend2.makeTensorInfo([size],weights.dtype,outVals)}var bincountConfig2={kernelName:Bincount,backendName:"webgl",kernelFunc:bincount3},NOT_EQUAL="return float(a != b);",notEqual3=binaryKernelFunc2({opSnippet:NOT_EQUAL,dtype:"bool"}),notEqualConfig2={kernelName:NotEqual,backendName:"webgl",kernelFunc:notEqual3};function real3(args){let{inputs,backend:backend2}=args,{input:input2}=inputs,inputData=backend2.texData.get(input2.dataId);return identity3({inputs:{x:inputData.complexTensorInfos.real},backend:backend2})}var realConfig2={kernelName:Real,backendName:"webgl",kernelFunc:real3},TO_INT="return float(int(x));";function int(input2,backend2){let program=new UnaryOpProgram(input2.shape,TO_INT),output=backend2.runWebGLProgram(program,[input2],"int32");return{dataId:output.dataId,shape:output.shape,dtype:output.dtype}}function cast4(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{dtype}=attrs;if(dtype==="complex64"){if(x.dtype==="complex64")return identity3({inputs:{x},backend:backend2});let zerosTensor=zeros(x.shape),floatX=cast4({inputs:{x},backend:backend2,attrs:{dtype:"float32"}}),result=complex3({inputs:{real:floatX,imag:zerosTensor},backend:backend2});return zerosTensor.dispose(),backend2.disposeIntermediateTensorInfo(floatX),result}if(x.dtype==="complex64"){let realPart=real3({inputs:{input:x},backend:backend2}),result=cast4({inputs:{x:realPart},backend:backend2,attrs:{dtype}});return backend2.disposeIntermediateTensorInfo(realPart),result}if(!util_exports.hasEncodingLoss(x.dtype,dtype)){let result=identity3({inputs:{x},backend:backend2});return{dataId:result.dataId,shape:result.shape,dtype}}if(dtype==="int32")return int(x,backend2);if(dtype==="bool"){let zerosTensorInfo=backend2.makeTensorInfo([],"bool",util_exports.getTypedArrayFromDType("bool",1)),result=notEqual3({inputs:{a:x,b:zerosTensorInfo},backend:backend2});return backend2.disposeIntermediateTensorInfo(zerosTensorInfo),result}throw new Error(`Error in Cast: failed to cast ${x.dtype} to ${dtype}`)}var castConfig2={kernelName:Cast,backendName:"webgl",kernelFunc:cast4},CEIL="return ceil(x);",ceil3=unaryKernelFunc2({opSnippet:CEIL,packedOpSnippet:CEIL,cpuKernelImpl:ceilImplCPU}),ceilConfig2={kernelName:Ceil,backendName:"webgl",kernelFunc:ceil3},ClipProgram=class{constructor(aShape){this.variableNames=["A"],this.outputShape=aShape,this.userCode=` + `}getCustomSetupFunc(e){if(e.length!==this.rank)throw Error(`The rank (${this.rank}) of the program must match the length of start (${e.length})`);return(t,n)=>{this.startLoc==null&&(this.startLoc=t.getUniformLocationNoThrow(n,"start"),this.startLoc==null)||t.gl.uniform1iv(this.startLoc,e)}}};function xY(e,t,n,a){let r=a.texData.get(e.dataId),s=a.makeTensorInfo(n,e.dtype),i=a.texData.get(s.dataId);Object.assign(i,r),i.shape=n,i.dtype=e.dtype;let o=dn.computeFlatOffset(t,k.computeStrides(e.shape));r.slice&&(o+=r.slice.flatOffset),i.slice={flatOffset:o,origDataId:r.slice&&r.slice.origDataId||e.dataId};let l=a.dataRefCount.get(i.slice.origDataId)||1;return a.dataRefCount.set(i.slice.origDataId,l+1),s}function kp(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{begin:s,size:i}=a,[o,l]=dn.parseSliceParams(r,s,i);if(dn.assertParamsValid(r,o,l),k.sizeFromShape(l)===0)return n.makeTensorInfo(l,r.dtype,[]);if(n.shouldExecuteOnCPU([r])||r.dtype==="string"){let p=n.texData.get(r.dataId),d=dK(p.values,o,l,r.shape,r.dtype);return n.makeTensorInfo(l,r.dtype,d)}let{isPacked:c}=n.texData.get(r.dataId),u=dn.isSliceContinous(r.shape,o,l);if(c||!u){let p=ee().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new bY(l):new yY(l),d=p.getCustomSetupFunc(o);return n.runWebGLProgram(p,[r],r.dtype,d)}return n.uploadToGPU(r.dataId),xY(r,o,l,n)}var vY={kernelName:yl,backendName:"webgl",kernelFunc:kp},wY=e=>{let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{blockShape:s,crops:i}=a;k.assert(r.shape.length<=4,()=>"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet");let o=s.reduce((b,x)=>b*x),l=_.getReshaped(r.shape,s,o),c=_.getPermuted(l.length,s.length),u=_.getReshapedPermuted(r.shape,s,o),p=_.getSliceBeginCoords(i,s.length),d=_.getSliceSize(u,i,s.length),h=[],m=xe({inputs:{x:r},backend:n,attrs:{shape:l}}),f=Cn({inputs:{x:m},backend:n,attrs:{perm:c}}),g=xe({inputs:{x:f},backend:n,attrs:{shape:u}}),y=kp({inputs:{x:g},backend:n,attrs:{begin:p,size:d}});return h.push(m),h.push(f),h.push(g),h.forEach(b=>n.disposeIntermediateTensorInfo(b)),y},kY={kernelName:oc,backendName:"webgl",kernelFunc:wY};function IY(e){let{inputs:t,backend:n,attrs:a}=e,{x:r,weights:s}=t,{size:i}=a,o=n.readSync(r.dataId),l=n.readSync(s.dataId),c=aS(o,l,s.dtype,s.shape,i);return n.makeTensorInfo([i],s.dtype,c)}var NY={kernelName:Nd,backendName:"webgl",kernelFunc:IY},TY="return float(a != b);",_S=sn({opSnippet:TY,dtype:"bool"}),SY={kernelName:sl,backendName:"webgl",kernelFunc:_S};function Ip(e){let{inputs:t,backend:n}=e,{input:a}=t,r=n.texData.get(a.dataId);return Wn({inputs:{x:r.complexTensorInfos.real},backend:n})}var CY={kernelName:Hd,backendName:"webgl",kernelFunc:Ip},EY="return float(int(x));";function _Y(e,t){let n=new hs(e.shape,EY),a=t.runWebGLProgram(n,[e],"int32");return{dataId:a.dataId,shape:a.shape,dtype:a.dtype}}function Lv(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{dtype:s}=a;if(s==="complex64"){if(r.dtype==="complex64")return Wn({inputs:{x:r},backend:n});let i=yt(r.shape),o=Lv({inputs:{x:r},backend:n,attrs:{dtype:"float32"}}),l=ms({inputs:{real:o,imag:i},backend:n});return i.dispose(),n.disposeIntermediateTensorInfo(o),l}if(r.dtype==="complex64"){let i=Ip({inputs:{input:r},backend:n}),o=Lv({inputs:{x:i},backend:n,attrs:{dtype:s}});return n.disposeIntermediateTensorInfo(i),o}if(!k.hasEncodingLoss(r.dtype,s)){let i=Wn({inputs:{x:r},backend:n});return{dataId:i.dataId,shape:i.shape,dtype:s}}if(s==="int32")return _Y(r,n);if(s==="bool"){let i=n.makeTensorInfo([],"bool",k.getTypedArrayFromDType("bool",1)),o=_S({inputs:{a:r,b:i},backend:n});return n.disposeIntermediateTensorInfo(i),o}throw new Error(`Error in Cast: failed to cast ${r.dtype} to ${s}`)}var FY={kernelName:Ds,backendName:"webgl",kernelFunc:Lv},FS="return ceil(x);",AY=Ye({opSnippet:FS,packedOpSnippet:FS,cpuKernelImpl:K8}),$Y={kernelName:Ro,backendName:"webgl",kernelFunc:AY},DY=class{constructor(e){this.variableNames=["A"],this.outputShape=e,this.userCode=` uniform float minVal; uniform float maxVal; @@ -1827,7 +1827,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: setOutput(clamp(value, minVal, maxVal)); } - `}getCustomSetupFunc(min6,max6){return(gpgpu,webGLProgram)=>{this.minLoc==null&&(this.minLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"minVal"),this.maxLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"maxVal")),gpgpu.gl.uniform1f(this.minLoc,min6),gpgpu.gl.uniform1f(this.maxLoc,max6)}}},ClipPackedProgram=class{constructor(aShape){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=aShape,this.userCode=` + `}getCustomSetupFunc(e,t){return(n,a)=>{this.minLoc==null&&(this.minLoc=n.getUniformLocationNoThrow(a,"minVal"),this.maxLoc=n.getUniformLocationNoThrow(a,"maxVal")),n.gl.uniform1f(this.minLoc,e),n.gl.uniform1f(this.maxLoc,t)}}},MY=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.userCode=` uniform float minVal; uniform float maxVal; @@ -1841,7 +1841,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: setOutput(clamp(value, vec4(minVal), vec4(maxVal))); } - `}getCustomSetupFunc(min6,max6){return(gpgpu,webGLProgram)=>{this.minLoc==null&&(this.minLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"minVal"),this.maxLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"maxVal")),gpgpu.gl.uniform1f(this.minLoc,min6),gpgpu.gl.uniform1f(this.maxLoc,max6)}}};function clipByValue2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{clipValueMin,clipValueMax}=attrs,program;env().getBool("WEBGL_PACK_CLIP")?program=new ClipPackedProgram(x.shape):program=new ClipProgram(x.shape);let customSetup=program.getCustomSetupFunc(clipValueMin,clipValueMax);return backend2.runWebGLProgram(program,[x],x.dtype,customSetup)}var clipByValueConfig={kernelName:ClipByValue,backendName:"webgl",kernelFunc:clipByValue2},ComplexAbsProgram=class{constructor(shape){this.variableNames=["real","imag"],this.outputShape=shape,this.userCode=` + `}getCustomSetupFunc(e,t){return(n,a)=>{this.minLoc==null&&(this.minLoc=n.getUniformLocationNoThrow(a,"minVal"),this.maxLoc=n.getUniformLocationNoThrow(a,"maxVal")),n.gl.uniform1f(this.minLoc,e),n.gl.uniform1f(this.maxLoc,t)}}};function RY(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{clipValueMin:s,clipValueMax:i}=a,o;ee().getBool("WEBGL_PACK_CLIP")?o=new MY(r.shape):o=new DY(r.shape);let l=o.getCustomSetupFunc(s,i);return n.runWebGLProgram(o,[r],r.dtype,l)}var PY={kernelName:Gr,backendName:"webgl",kernelFunc:RY},OY=class{constructor(e){this.variableNames=["real","imag"],this.outputShape=e,this.userCode=` void main() { float re = abs(getRealAtOutCoords()); float im = abs(getImagAtOutCoords()); @@ -1854,96 +1854,96 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: mx == 0.0 ? 0.0 : mx * length(vec2(1, min(re, im)/mx)) ); } - `}};function makeComplexComponentTensorInfo(complexTensor,complexPart){return{dataId:complexPart.dataId,dtype:complexPart.dtype,shape:complexTensor.shape}}function complexAbs2(args){let{inputs,backend:backend2}=args,{x}=inputs,xData=backend2.texData.get(x.dataId),program=new ComplexAbsProgram(x.shape),programInputs=[makeComplexComponentTensorInfo(x,xData.complexTensorInfos.real),makeComplexComponentTensorInfo(x,xData.complexTensorInfos.imag)];return backend2.runWebGLProgram(program,programInputs,programInputs[0].dtype)}var complexAbsConfig2={kernelName:ComplexAbs,backendName:"webgl",kernelFunc:complexAbs2},ConcatProgram=class{constructor(shapes){this.outputShape=[],this.outputShape=backend_util_exports.computeOutShape(shapes,1),this.variableNames=shapes.map((_,i)=>`T${i}`);let offsets=new Array(shapes.length-1);offsets[0]=shapes[0][1];for(let i=1;i`T${i}`);let t=new Array(e.length-1);t[0]=e[0][1];for(let s=1;s`T${i}`);let offsets=new Array(shapes.length-1);offsets[0]=shapes[0][axis];for(let i=1;i`T${f}`);let o=new Array(e.length-1);o[0]=e[0][t];for(let m=1;m= ${offsets[i-1]}) { + getT0(${u}), vec2(${c.join()})); + }`;for(let m=1;m= ${o[m-1]}) { return getChannel( - getT${i}(${shiftedChannels(channels,channel,shift2)}), - vec2(${shiftedChannels(lastChannels,channel,shift2)})); - }`}let lastIndex=offsets.length,shift=offsets[offsets.length-1];getValueSnippet+=` + getT${m}(${jm(i,l,f)}), + vec2(${jm(c,l,f)})); + }`}let d=o.length,h=o[o.length-1];p+=` return getChannel( - getT${lastIndex}(${shiftedChannels(channels,channel,shift)}), - vec2(${shiftedChannels(lastChannels,channel,shift)}));`,this.userCode=` - float getValue(${channels.map(x=>"int "+x)}) { - ${getValueSnippet} + getT${d}(${jm(i,l,h)}), + vec2(${jm(c,l,h)}));`,this.userCode=` + float getValue(${i.map(m=>"int "+m)}) { + ${p} } void main() { - ${dtype} coords = getOutputCoords(); - vec4 result = vec4(getValue(${coords2}), 0., 0., 0.); + ${r} coords = getOutputCoords(); + vec4 result = vec4(getValue(${s}), 0., 0., 0.); - ${coords2[rank-1]} = ${coords2[rank-1]} + 1; - if (${coords2[rank-1]} < ${shape[rank-1]}) { - result.g = getValue(${coords2}); + ${s[a-1]} = ${s[a-1]} + 1; + if (${s[a-1]} < ${n[a-1]}) { + result.g = getValue(${s}); } - ${coords2[rank-2]} = ${coords2[rank-2]} + 1; - if (${coords2[rank-2]} < ${shape[rank-2]}) { - result.a = getValue(${coords2}); + ${s[a-2]} = ${s[a-2]} + 1; + if (${s[a-2]} < ${n[a-2]}) { + result.a = getValue(${s}); } - ${coords2[rank-1]} = ${coords2[rank-1]} - 1; - if (${coords2[rank-2]} < ${shape[rank-2]} && - ${coords2[rank-1]} < ${shape[rank-1]}) { - result.b = getValue(${coords2}); + ${s[a-1]} = ${s[a-1]} - 1; + if (${s[a-2]} < ${n[a-2]} && + ${s[a-1]} < ${n[a-1]}) { + result.b = getValue(${s}); } setOutput(result); } - `}};function shiftedChannels(channels,channel,shift){let channelIdx=channels.indexOf(channel);return channels.map((c,idx)=>idx===channelIdx?`${c} - ${shift}`:c).join()}function imag3(args){let{inputs,backend:backend2}=args,{input:input2}=inputs,inputData=backend2.texData.get(input2.dataId);return identity3({inputs:{x:inputData.complexTensorInfos.imag},backend:backend2})}var imagConfig2={kernelName:Imag,backendName:"webgl",kernelFunc:imag3};function concatImpl2(inputs,axis,backend2){let dtype=inputs[0].dtype;if(dtype==="complex64"){let reals=inputs.map(t=>real3({inputs:{input:t},backend:backend2})),imags=inputs.map(t=>imag3({inputs:{input:t},backend:backend2})),realConcated=concatImpl2(reals,axis,backend2),imagConcated=concatImpl2(imags,axis,backend2),result2=complex3({inputs:{real:realConcated,imag:imagConcated},backend:backend2});return reals.forEach(r=>backend2.disposeIntermediateTensorInfo(r)),imags.forEach(i=>backend2.disposeIntermediateTensorInfo(i)),backend2.disposeIntermediateTensorInfo(realConcated),backend2.disposeIntermediateTensorInfo(imagConcated),result2}if(dtype==="string"){let{tensors2D:tensors2D2,outShape:outShape2}=computeTensors2D(inputs,axis,backend2),inputsValShapes=tensors2D2.map(t=>({vals:backend2.readSync(t.dataId),shape:t.shape})),simplyConcat=tensors2D2[0].shape[0]===1,outVals=concatImplCPU(inputsValShapes,outShape2,dtype,simplyConcat),finalOutShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),axis),outInfo=backend2.makeTensorInfo(finalOutShape,dtype,outVals);return tensors2D2.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),outInfo}if(inputs.length>env().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER")){let midIndex=Math.floor(inputs.length/2),leftSide=concatImpl2(inputs.slice(0,midIndex),axis,backend2),rightSide=concatImpl2(inputs.slice(midIndex),axis,backend2),result2=concatImpl2([leftSide,rightSide],axis,backend2);return backend2.disposeIntermediateTensorInfo(leftSide),backend2.disposeIntermediateTensorInfo(rightSide),result2}if(env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")&&inputs[0].shape.length>1){let program2=new ConcatPackedProgram(inputs.map(t=>t.shape),axis);return backend2.runWebGLProgram(program2,inputs,dtype)}let{tensors2D,outShape}=computeTensors2D(inputs,axis,backend2),program=new ConcatProgram(tensors2D.map(t=>t.shape)),result=backend2.runWebGLProgram(program,tensors2D,dtype);tensors2D.forEach(r=>backend2.disposeIntermediateTensorInfo(r));let reshapedResult=reshape4({inputs:{x:result},attrs:{shape:outShape},backend:backend2});return backend2.disposeIntermediateTensorInfo(result),reshapedResult}function computeTensors2D(inputs,axis,backend2){let outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),axis);return{tensors2D:inputs.map(x=>reshape4({inputs:{x},attrs:{shape:[-1,util_exports.sizeFromShape(x.shape.slice(axis))]},backend:backend2})),outShape}}function concat3(args){let{inputs,backend:backend2,attrs}=args,{axis}=attrs,$axis=util_exports.parseAxisParam(axis,inputs[0].shape)[0],outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),$axis);if(util_exports.sizeFromShape(outShape)===0)return backend2.makeTensorInfo(outShape,inputs[0].dtype,[]);let $inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return identity3({inputs:{x:$inputs[0]},backend:backend2});let shapes=$inputs.map(t=>t.shape);return backend_util_exports.assertParamsConsistent(shapes,$axis),concatImpl2($inputs,$axis,backend2)}var concatConfig2={kernelName:Concat,backendName:"webgl",kernelFunc:concat3},Conv2DProgram=class{constructor(convInfo,addBias=!1,activation2=null,hasPreluActivationWeights=!1,hasLeakyreluAlpha=!1){this.variableNames=["x","W"],this.outputShape=convInfo.outShape;let padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,inputDepthNearestVec4=Math.floor(convInfo.inChannels/4)*4,inputDepthVec4Remainder=convInfo.inChannels%4,isChannelsLast=convInfo.dataFormat==="channelsLast",rowDim=isChannelsLast?1:2,colDim=isChannelsLast?2:3,channelDim=isChannelsLast?3:1,activationSnippet="",applyActivationSnippet="";activation2&&(hasPreluActivationWeights?activationSnippet=`float activation(float a) { + `}};function jm(e,t,n){let a=e.indexOf(t);return e.map((r,s)=>s===a?`${r} - ${n}`:r).join()}function qm(e){let{inputs:t,backend:n}=e,{input:a}=t,r=n.texData.get(a.dataId);return Wn({inputs:{x:r.complexTensorInfos.imag},backend:n})}var VY={kernelName:Ld,backendName:"webgl",kernelFunc:qm};function fu(e,t,n){let a=e[0].dtype;if(a==="complex64"){let c=e.map(m=>Ip({inputs:{input:m},backend:n})),u=e.map(m=>qm({inputs:{input:m},backend:n})),p=fu(c,t,n),d=fu(u,t,n),h=ms({inputs:{real:p,imag:d},backend:n});return c.forEach(m=>n.disposeIntermediateTensorInfo(m)),u.forEach(m=>n.disposeIntermediateTensorInfo(m)),n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(d),h}if(a==="string"){let{tensors2D:c,outShape:u}=$S(e,t,n),p=c.map(g=>({vals:n.readSync(g.dataId),shape:g.shape})),d=c[0].shape[0]===1,h=X8(p,u,a,d),m=_.computeOutShape(e.map(g=>g.shape),t),f=n.makeTensorInfo(m,a,h);return c.forEach(g=>n.disposeIntermediateTensorInfo(g)),f}if(e.length>ee().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER")){let c=Math.floor(e.length/2),u=fu(e.slice(0,c),t,n),p=fu(e.slice(c),t,n),d=fu([u,p],t,n);return n.disposeIntermediateTensorInfo(u),n.disposeIntermediateTensorInfo(p),d}if(ee().getBool("WEBGL_PACK_ARRAY_OPERATIONS")&&e[0].shape.length>1){let c=new WY(e.map(u=>u.shape),t);return n.runWebGLProgram(c,e,a)}let{tensors2D:r,outShape:s}=$S(e,t,n),i=new BY(r.map(c=>c.shape)),o=n.runWebGLProgram(i,r,a);r.forEach(c=>n.disposeIntermediateTensorInfo(c));let l=xe({inputs:{x:o},attrs:{shape:s},backend:n});return n.disposeIntermediateTensorInfo(o),l}function $S(e,t,n){let a=_.computeOutShape(e.map(r=>r.shape),t);return{tensors2D:e.map(r=>xe({inputs:{x:r},attrs:{shape:[-1,k.sizeFromShape(r.shape.slice(t))]},backend:n})),outShape:a}}function DS(e){let{inputs:t,backend:n,attrs:a}=e,{axis:r}=a,s=k.parseAxisParam(r,t[0].shape)[0],i=_.computeOutShape(t.map(c=>c.shape),s);if(k.sizeFromShape(i)===0)return n.makeTensorInfo(i,t[0].dtype,[]);let o=t.filter(c=>k.sizeFromShape(c.shape)>0);if(o.length===1)return Wn({inputs:{x:o[0]},backend:n});let l=o.map(c=>c.shape);return _.assertParamsConsistent(l,s),fu(o,s,n)}var UY={kernelName:Po,backendName:"webgl",kernelFunc:DS},MS=class{constructor(e,t=!1,n=null,a=!1,r=!1){this.variableNames=["x","W"],this.outputShape=e.outShape;let s=e.padInfo.top,i=e.padInfo.left,o=e.strideHeight,l=e.strideWidth,c=e.dilationHeight,u=e.dilationWidth,p=e.filterHeight,d=e.filterWidth,h=Math.floor(e.inChannels/4)*4,m=e.inChannels%4,f=e.dataFormat==="channelsLast",g=f?1:2,y=f?2:3,b=f?3:1,x="",v="";n&&(a?x=`float activation(float a) { float b = getPreluActivationWeightsAtOutCoords(); - ${activation2} - }`:hasLeakyreluAlpha?activationSnippet=`float activation(float a) { + ${n} + }`:r?x=`float activation(float a) { float b = getLeakyreluAlphaAtOutCoords(); - ${activation2} - }`:activationSnippet=` + ${n} + }`:x=` float activation(float x) { - ${activation2} + ${n} } - `,applyActivationSnippet="result = activation(result);");let addBiasSnippet=addBias?"result += getBiasAtOutCoords();":"";addBias&&this.variableNames.push("bias"),hasPreluActivationWeights&&this.variableNames.push("preluActivationWeights"),hasLeakyreluAlpha&&this.variableNames.push("leakyreluAlpha"),this.userCode=` - ${activationSnippet} + `,v="result = activation(result);");let N=t?"result += getBiasAtOutCoords();":"";t&&this.variableNames.push("bias"),a&&this.variableNames.push("preluActivationWeights"),r&&this.variableNames.push("leakyreluAlpha"),this.userCode=` + ${x} - const ivec2 strides = ivec2(${strideHeight}, ${strideWidth}); - const ivec2 pads = ivec2(${padTop}, ${padLeft}); + const ivec2 strides = ivec2(${o}, ${l}); + const ivec2 pads = ivec2(${s}, ${i}); void main() { ivec4 coords = getOutputCoords(); int batch = coords[0]; - int d2 = coords[${channelDim}]; + int d2 = coords[${b}]; ivec2 xRCCorner = - ivec2(coords[${rowDim}], coords[${colDim}]) * strides - pads; + ivec2(coords[${g}], coords[${y}]) * strides - pads; int xRCorner = xRCCorner.x; int xCCorner = xRCCorner.y; // Convolve x(?, ?, d1) with w(:, :, d1, d2) to get y(yR, yC, d2). // ? = to be determined. : = across all values in that axis. float dotProd = 0.0; - for (int wR = 0; wR < ${filterHeight}; wR++) { - int xR = xRCorner + wR * ${dilationHeight}; + for (int wR = 0; wR < ${p}; wR++) { + int xR = xRCorner + wR * ${c}; - if (xR < 0 || xR >= ${convInfo.inHeight}) { + if (xR < 0 || xR >= ${e.inHeight}) { continue; } - for (int wC = 0; wC < ${filterWidth}; wC++) { - int xC = xCCorner + wC * ${dilationWidth}; + for (int wC = 0; wC < ${d}; wC++) { + int xC = xCCorner + wC * ${u}; - if (xC < 0 || xC >= ${convInfo.inWidth}) { + if (xC < 0 || xC >= ${e.inWidth}) { continue; } - for (int d1 = 0; d1 < ${inputDepthNearestVec4}; d1 += 4) { + for (int d1 = 0; d1 < ${h}; d1 += 4) { vec4 wValues = vec4( getW(wR, wC, d1, d2), getW(wR, wC, d1 + 1, d2), @@ -1951,7 +1951,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: getW(wR, wC, d1 + 3, d2) ); - if (${isChannelsLast}) { + if (${f}) { vec4 xValues = vec4( getX(batch, xR, xC, d1), getX(batch, xR, xC, d1 + 1), @@ -1970,57 +1970,57 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } } - if (${inputDepthVec4Remainder===1}) { + if (${m===1}) { - if (${isChannelsLast}) { + if (${f}) { dotProd += - getX(batch, xR, xC, ${inputDepthNearestVec4}) * - getW(wR, wC, ${inputDepthNearestVec4}, d2); + getX(batch, xR, xC, ${h}) * + getW(wR, wC, ${h}, d2); } else { dotProd += - getX(batch, ${inputDepthNearestVec4}, xR, xC) * - getW(wR, wC, ${inputDepthNearestVec4}, d2); + getX(batch, ${h}, xR, xC) * + getW(wR, wC, ${h}, d2); } - } else if (${inputDepthVec4Remainder===2}) { + } else if (${m===2}) { vec2 wValues = vec2( - getW(wR, wC, ${inputDepthNearestVec4}, d2), - getW(wR, wC, ${inputDepthNearestVec4} + 1, d2) + getW(wR, wC, ${h}, d2), + getW(wR, wC, ${h} + 1, d2) ); - if (${isChannelsLast}) { + if (${f}) { vec2 xValues = vec2( - getX(batch, xR, xC, ${inputDepthNearestVec4}), - getX(batch, xR, xC, ${inputDepthNearestVec4} + 1) + getX(batch, xR, xC, ${h}), + getX(batch, xR, xC, ${h} + 1) ); dotProd += dot(xValues, wValues); } else { vec2 xValues = vec2( - getX(batch, ${inputDepthNearestVec4}, xR, xC), - getX(batch, ${inputDepthNearestVec4} + 1, xR, xC) + getX(batch, ${h}, xR, xC), + getX(batch, ${h} + 1, xR, xC) ); dotProd += dot(xValues, wValues); } - } else if (${inputDepthVec4Remainder===3}) { + } else if (${m===3}) { vec3 wValues = vec3( - getW(wR, wC, ${inputDepthNearestVec4}, d2), - getW(wR, wC, ${inputDepthNearestVec4} + 1, d2), - getW(wR, wC, ${inputDepthNearestVec4} + 2, d2) + getW(wR, wC, ${h}, d2), + getW(wR, wC, ${h} + 1, d2), + getW(wR, wC, ${h} + 2, d2) ); - if (${isChannelsLast}) { + if (${f}) { vec3 xValues = vec3( - getX(batch, xR, xC, ${inputDepthNearestVec4}), - getX(batch, xR, xC, ${inputDepthNearestVec4} + 1), - getX(batch, xR, xC, ${inputDepthNearestVec4} + 2) + getX(batch, xR, xC, ${h}), + getX(batch, xR, xC, ${h} + 1), + getX(batch, xR, xC, ${h} + 2) ); dotProd += dot(xValues, wValues); } else { vec3 xValues = vec3( - getX(batch, ${inputDepthNearestVec4}, xR, xC), - getX(batch, ${inputDepthNearestVec4} + 1, xR, xC), - getX(batch, ${inputDepthNearestVec4} + 2, xR, xC) + getX(batch, ${h}, xR, xC), + getX(batch, ${h} + 1, xR, xC), + getX(batch, ${h} + 2, xR, xC) ); dotProd += dot(xValues, wValues); } @@ -2030,13 +2030,13 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } float result = dotProd; - ${addBiasSnippet} - ${applyActivationSnippet} + ${N} + ${v} setOutput(result); } - `}},Conv3DProgram=class{constructor(convInfo){this.variableNames=["x","W"],this.outputShape=convInfo.outShape;let padFront=convInfo.padInfo.front,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,filterDepth=convInfo.filterDepth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,inputDepthNearestVec4=Math.floor(convInfo.inChannels/4)*4,inputDepthVec4Remainder=convInfo.inChannels%4;this.userCode=` - const ivec3 strides = ivec3(${strideDepth}, ${strideHeight}, ${strideWidth}); - const ivec3 pads = ivec3(${padFront}, ${padTop}, ${padLeft}); + `}},GY=class{constructor(e){this.variableNames=["x","W"],this.outputShape=e.outShape;let t=e.padInfo.front,n=e.padInfo.top,a=e.padInfo.left,r=e.strideDepth,s=e.strideHeight,i=e.strideWidth,o=e.dilationDepth,l=e.dilationHeight,c=e.dilationWidth,u=e.filterDepth,p=e.filterHeight,d=e.filterWidth,h=Math.floor(e.inChannels/4)*4,m=e.inChannels%4;this.userCode=` + const ivec3 strides = ivec3(${r}, ${s}, ${i}); + const ivec3 pads = ivec3(${t}, ${n}, ${a}); void main() { ivec5 coords = getOutputCoords(); @@ -2052,28 +2052,28 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // y(yF, yR, yC, d2). ? = to be determined. : = across all // values in that axis. float dotProd = 0.0; - for (int wF = 0; wF < ${filterDepth}; wF++) { - int xF = xFCorner + wF * ${dilationDepth}; + for (int wF = 0; wF < ${u}; wF++) { + int xF = xFCorner + wF * ${o}; - if (xF < 0 || xF >= ${convInfo.inDepth}) { + if (xF < 0 || xF >= ${e.inDepth}) { continue; } - for (int wR = 0; wR < ${filterHeight}; wR++) { - int xR = xRCorner + wR * ${dilationHeight}; + for (int wR = 0; wR < ${p}; wR++) { + int xR = xRCorner + wR * ${l}; - if (xR < 0 || xR >= ${convInfo.inHeight}) { + if (xR < 0 || xR >= ${e.inHeight}) { continue; } - for (int wC = 0; wC < ${filterWidth}; wC++) { - int xC = xCCorner + wC * ${dilationWidth}; + for (int wC = 0; wC < ${d}; wC++) { + int xC = xCCorner + wC * ${c}; - if (xC < 0 || xC >= ${convInfo.inWidth}) { + if (xC < 0 || xC >= ${e.inWidth}) { continue; } - for (int d1 = 0; d1 < ${inputDepthNearestVec4}; d1 += 4) { + for (int d1 = 0; d1 < ${h}; d1 += 4) { vec4 xValues = vec4( getX(batch, xF, xR, xC, d1), getX(batch, xF, xR, xC, d1 + 1), @@ -2090,30 +2090,30 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: dotProd += dot(xValues, wValues); } - if (${inputDepthVec4Remainder===1}) { + if (${m===1}) { dotProd += - getX(batch, xF, xR, xC, ${inputDepthNearestVec4}) * - getW(wF, wR, wC, ${inputDepthNearestVec4}, d2); - } else if (${inputDepthVec4Remainder===2}) { + getX(batch, xF, xR, xC, ${h}) * + getW(wF, wR, wC, ${h}, d2); + } else if (${m===2}) { vec2 xValues = vec2( - getX(batch, xF, xR, xC, ${inputDepthNearestVec4}), - getX(batch, xF, xR, xC, ${inputDepthNearestVec4} + 1) + getX(batch, xF, xR, xC, ${h}), + getX(batch, xF, xR, xC, ${h} + 1) ); vec2 wValues = vec2( - getW(wF, wR, wC, ${inputDepthNearestVec4}, d2), - getW(wF, wR, wC, ${inputDepthNearestVec4} + 1, d2) + getW(wF, wR, wC, ${h}, d2), + getW(wF, wR, wC, ${h} + 1, d2) ); dotProd += dot(xValues, wValues); - } else if (${inputDepthVec4Remainder===3}) { + } else if (${m===3}) { vec3 xValues = vec3( - getX(batch, xF, xR, xC, ${inputDepthNearestVec4}), - getX(batch, xF, xR, xC, ${inputDepthNearestVec4} + 1), - getX(batch, xF, xR, xC, ${inputDepthNearestVec4} + 2) + getX(batch, xF, xR, xC, ${h}), + getX(batch, xF, xR, xC, ${h} + 1), + getX(batch, xF, xR, xC, ${h} + 2) ); vec3 wValues = vec3( - getW(wF, wR, wC, ${inputDepthNearestVec4}, d2), - getW(wF, wR, wC, ${inputDepthNearestVec4} + 1, d2), - getW(wF, wR, wC, ${inputDepthNearestVec4} + 2, d2) + getW(wF, wR, wC, ${h}, d2), + getW(wF, wR, wC, ${h} + 1, d2), + getW(wF, wR, wC, ${h} + 2, d2) ); dotProd += dot(xValues, wValues); } @@ -2122,31 +2122,31 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(dotProd); } - `}},Im2ColPackedProgram=class{constructor(outputShape,inputShape,convInfo){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=outputShape;let{filterWidth,inChannels,strideWidth,strideHeight,padInfo,outWidth,dilationWidth,dilationHeight,dataFormat}=convInfo,{left,top}=padInfo,itemsPerBlockRow=inChannels*filterWidth,glsl=getGlslDifferences(),isChannelsLast=dataFormat==="channelsLast",rowDim=isChannelsLast?0:1,colDim=isChannelsLast?1:2,unrolled="";for(let row=0;row<=1;row++)for(let col=0;col<=1;col++)unrolled+=` - blockIndex = rc.y + ${col}; - pos = rc.x + ${row}; + `}},HY=class{constructor(e,t,n){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e;let{filterWidth:a,inChannels:r,strideWidth:s,strideHeight:i,padInfo:o,outWidth:l,dilationWidth:c,dilationHeight:u,dataFormat:p}=n,{left:d,top:h}=o,m=r*a,f=fn(),g=p==="channelsLast",y=g?0:1,b=g?1:2,x="";for(let v=0;v<=1;v++)for(let N=0;N<=1;N++)x+=` + blockIndex = rc.y + ${N}; + pos = rc.x + ${v}; - if(blockIndex < ${outputShape[1]} && pos < ${outputShape[0]}) { - offsetY = int(blockIndex / (${outWidth})) * ${strideHeight} - ${top}; - d0 = offsetY + ${dilationHeight} * (pos / ${itemsPerBlockRow}); + if(blockIndex < ${e[1]} && pos < ${e[0]}) { + offsetY = int(blockIndex / (${l})) * ${i} - ${h}; + d0 = offsetY + ${u} * (pos / ${m}); - if(d0 < ${inputShape[rowDim]} && d0 >= 0) { + if(d0 < ${t[y]} && d0 >= 0) { - offsetX = int(mod(float(blockIndex), ${outWidth}.) * ${strideWidth}. - ${left}.); - d1 = offsetX + ${dilationWidth} * (int(mod(float(pos), ${itemsPerBlockRow}.) / ${inChannels}.)); + offsetX = int(mod(float(blockIndex), ${l}.) * ${s}. - ${d}.); + d1 = offsetX + ${c} * (int(mod(float(pos), ${m}.) / ${r}.)); - if(d1 < ${inputShape[colDim]} && d1 >= 0) { + if(d1 < ${t[b]} && d1 >= 0) { - ch = int(mod(float(pos), ${inChannels}.)); + ch = int(mod(float(pos), ${r}.)); - if (${isChannelsLast}) { + if (${g}) { innerDims = vec2(d1, ch); - result[${row*2+col}] = getChannel( + result[${v*2+N}] = getChannel( getA(d0, int(innerDims.x), int(innerDims.y)), innerDims); } else { innerDims = vec2(d0, d1); - result[${row*2+col}] = getChannel( + result[${v*2+N}] = getChannel( getA(ch, int(innerDims.x), int(innerDims.y)), innerDims); } @@ -2162,11 +2162,11 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: int blockIndex, pos, offsetY, d0, offsetX, d1, ch; vec2 innerDims; - ${unrolled} + ${x} - ${glsl.output} = result; + ${f.output} = result; } - `}};function conv2dByMatMul({x,filter,convInfo,backend:backend2,bias=null,preluActivationWeights=null,leakyreluAlpha=0,activation:activation2=null}){let xShape=x.shape,xTexData=backend2.texData.get(x.dataId),sharedMatMulDim=convInfo.inChannels,outerShapeX=xShape[0]*xShape[1]*xShape[2],outerShapeFilter=convInfo.outChannels,isChannelsLast=convInfo.dataFormat==="channelsLast",transposeA=!1,transposeB=!1,out,intermediates=[],batchMatMulWillBeUnpacked=(outerShapeX===1||outerShapeFilter===1)&&sharedMatMulDim>MATMUL_SHARED_DIM_THRESHOLD,reshapeWillBeExpensive=xShape[2]%2!=0&&!!xTexData.isPacked;if(batchMatMulWillBeUnpacked||!env().getBool("WEBGL_LAZILY_UNPACK")||!env().getBool("WEBGL_PACK_BINARY_OPERATIONS")||!reshapeWillBeExpensive){let targetShape=isChannelsLast?xShape[0]*xShape[1]*xShape[2]:xShape[0]*xShape[2]*xShape[3],xReshaped=reshape4({inputs:{x},backend:backend2,attrs:{shape:[1,targetShape,convInfo.inChannels]}}),filterReshaped=reshape4({inputs:{x:filter},backend:backend2,attrs:{shape:[1,convInfo.inChannels,convInfo.outChannels]}}),result=batchMatMulImpl({a:xReshaped,b:filterReshaped,transposeA,transposeB,backend:backend2,bias,activation:activation2,preluActivationWeights,leakyreluAlpha});out=reshape4({inputs:{x:result},backend:backend2,attrs:{shape:convInfo.outShape}}),intermediates.push(xReshaped),intermediates.push(filterReshaped),intermediates.push(result)}else{let targetShape=isChannelsLast?xShape[0]*xShape[1]*(xShape[2]+1):xShape[0]*xShape[2]*(xShape[3]+1),xReshaped={dataId:x.dataId,shape:[1,targetShape,convInfo.inChannels],dtype:x.dtype},originalXTexDataShape=xTexData.shape;xTexData.shape=xTexData.shape.slice(),xTexData.shape[xTexData.shape.length-2]++,util_exports.assert(isReshapeFree(xTexData.shape,xReshaped.shape),()=>`packed reshape ${xTexData.shape} to ${xReshaped.shape} isn't free`);let filterReshaped=reshape4({inputs:{x:filter},backend:backend2,attrs:{shape:[1,convInfo.inChannels,convInfo.outChannels]}});intermediates.push(filterReshaped);let pointwiseConv=batchMatMulImpl({a:xReshaped,b:filterReshaped,backend:backend2,transposeA,transposeB,bias,activation:activation2,preluActivationWeights,leakyreluAlpha}),pointwiseConvTexData=backend2.texData.get(pointwiseConv.dataId);util_exports.assert(pointwiseConvTexData.isPacked,()=>"batchMatMul result is expected to be packed"),xTexData.shape=originalXTexDataShape,pointwiseConvTexData.shape=convInfo.outShape,out=identity3({inputs:{x:pointwiseConv},backend:backend2}),out.shape=convInfo.outShape,intermediates.push(pointwiseConv)}for(let i of intermediates)backend2.disposeIntermediateTensorInfo(i);return out}function conv2dWithIm2Row({x,filter,convInfo,backend:backend2,bias=null,preluActivationWeights=null,leakyreluAlpha=0,activation:activation2=null}){let{filterWidth,filterHeight,inChannels,outWidth,outHeight,dataFormat}=convInfo,isChannelsLast=dataFormat==="channelsLast",sharedDim=filterWidth*filterHeight*inChannels,numCols=outHeight*outWidth,x2ColShape=[sharedDim,numCols],transposeA=!0,transposeB=!1,intermediates=[],xSqueezed=reshape4({inputs:{x},backend:backend2,attrs:{shape:x.shape.slice(1)}}),w2Row=reshape4({inputs:{x:filter},backend:backend2,attrs:{shape:[1,sharedDim,util_exports.sizeFromShape(filter.shape)/sharedDim]}});intermediates.push(xSqueezed),intermediates.push(w2Row);let im2ColProgram=new Im2ColPackedProgram(x2ColShape,xSqueezed.shape,convInfo),im2Col=backend2.runWebGLProgram(im2ColProgram,[xSqueezed],"float32"),im2ColReshaped=reshape4({inputs:{x:im2Col},backend:backend2,attrs:{shape:[1,x2ColShape[0],x2ColShape[1]]}});intermediates.push(im2Col),intermediates.push(im2ColReshaped);let hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,hasLeakyreluAlpha=activation2==="leakyrelu",fusedActivation=activation2?mapActivationToShaderProgram(activation2,!0):null,matmulProgram=new MatMulPackedProgram(im2ColReshaped.shape,w2Row.shape,[1,numCols,convInfo.outChannels],transposeA,transposeB,hasBias,fusedActivation,hasPreluActivationWeights,hasLeakyreluAlpha),inputs=[im2ColReshaped,w2Row];if(bias&&inputs.push(bias),hasPreluActivationWeights&&inputs.push(preluActivationWeights),hasLeakyreluAlpha){let $leakyreluAlpha=backend2.makeTensorInfo([],"float32",util_exports.createScalarValue(leakyreluAlpha,"float32"));inputs.push($leakyreluAlpha),intermediates.push($leakyreluAlpha)}let product=backend2.runWebGLProgram(matmulProgram,inputs,"float32"),outShape=isChannelsLast?[1,outHeight,outWidth,convInfo.outChannels]:[1,convInfo.outChannels,outHeight,outWidth],out=reshape4({inputs:{x:product},backend:backend2,attrs:{shape:outShape}});intermediates.push(product);for(let i of intermediates)backend2.disposeIntermediateTensorInfo(i);return out}function conv2d4(args){let{inputs,backend:backend2,attrs}=args,{x,filter}=inputs,{strides,pad:pad3,dataFormat,dilations,dimRoundingMode}=attrs,$dataFormat=backend_util_exports.convertConv2DDataFormat(dataFormat),convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad3,dimRoundingMode,!1,$dataFormat),out;if(convInfo.filterHeight===1&&convInfo.filterWidth===1&&convInfo.dilationHeight===1&&convInfo.dilationWidth===1&&convInfo.strideHeight===1&&convInfo.strideWidth===1&&(convInfo.padInfo.type==="SAME"||convInfo.padInfo.type==="VALID"))out=conv2dByMatMul({x,filter,convInfo,backend:backend2});else if(env().getBool("WEBGL_CONV_IM2COL")&&x.shape[0]===1)out=conv2dWithIm2Row({x,filter,convInfo,backend:backend2});else{let program=new Conv2DProgram(convInfo);out=backend2.runWebGLProgram(program,[x,filter],"float32")}let outReshaped=reshape4({inputs:{x:out},backend:backend2,attrs:{shape:convInfo.outShape}});return backend2.disposeIntermediateTensorInfo(out),outReshaped}var conv2DConfig2={kernelName:Conv2D,backendName:"webgl",kernelFunc:conv2d4},Conv2DDerFilterProgram=class{constructor(convInfo){this.variableNames=["x","dy"],this.outputShape=convInfo.filterShape;let strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,isChannelsLast=convInfo.dataFormat==="channelsLast";this.userCode=` + `}};function RS({x:e,filter:t,convInfo:n,backend:a,bias:r=null,preluActivationWeights:s=null,leakyreluAlpha:i=0,activation:o=null}){let l=e.shape,c=a.texData.get(e.dataId),u=n.inChannels,p=l[0]*l[1]*l[2],d=n.outChannels,h=n.dataFormat==="channelsLast",m=!1,f=!1,g,y=[],b=(p===1||d===1)&&u>IS,x=l[2]%2!=0&&!!c.isPacked;if(b||!ee().getBool("WEBGL_LAZILY_UNPACK")||!ee().getBool("WEBGL_PACK_BINARY_OPERATIONS")||!x){let v=h?l[0]*l[1]*l[2]:l[0]*l[2]*l[3],N=xe({inputs:{x:e},backend:a,attrs:{shape:[1,v,n.inChannels]}}),T=xe({inputs:{x:t},backend:a,attrs:{shape:[1,n.inChannels,n.outChannels]}}),E=Gm({a:N,b:T,transposeA:m,transposeB:f,backend:a,bias:r,activation:o,preluActivationWeights:s,leakyreluAlpha:i});g=xe({inputs:{x:E},backend:a,attrs:{shape:n.outShape}}),y.push(N),y.push(T),y.push(E)}else{let v=h?l[0]*l[1]*(l[2]+1):l[0]*l[2]*(l[3]+1),N={dataId:e.dataId,shape:[1,v,n.inChannels],dtype:e.dtype},T=c.shape;c.shape=c.shape.slice(),c.shape[c.shape.length-2]++,k.assert(zm(c.shape,N.shape),()=>`packed reshape ${c.shape} to ${N.shape} isn't free`);let E=xe({inputs:{x:t},backend:a,attrs:{shape:[1,n.inChannels,n.outChannels]}});y.push(E);let A=Gm({a:N,b:E,backend:a,transposeA:m,transposeB:f,bias:r,activation:o,preluActivationWeights:s,leakyreluAlpha:i}),$=a.texData.get(A.dataId);k.assert($.isPacked,()=>"batchMatMul result is expected to be packed"),c.shape=T,$.shape=n.outShape,g=Wn({inputs:{x:A},backend:a}),g.shape=n.outShape,y.push(A)}for(let v of y)a.disposeIntermediateTensorInfo(v);return g}function PS({x:e,filter:t,convInfo:n,backend:a,bias:r=null,preluActivationWeights:s=null,leakyreluAlpha:i=0,activation:o=null}){let{filterWidth:l,filterHeight:c,inChannels:u,outWidth:p,outHeight:d,dataFormat:h}=n,m=h==="channelsLast",f=l*c*u,g=d*p,y=[f,g],b=!0,x=!1,v=[],N=xe({inputs:{x:e},backend:a,attrs:{shape:e.shape.slice(1)}}),T=xe({inputs:{x:t},backend:a,attrs:{shape:[1,f,k.sizeFromShape(t.shape)/f]}});v.push(N),v.push(T);let E=new HY(y,N.shape,n),A=a.runWebGLProgram(E,[N],"float32"),$=xe({inputs:{x:A},backend:a,attrs:{shape:[1,y[0],y[1]]}});v.push(A),v.push($);let O=r!=null,V=s!=null,W=o==="leakyrelu",H=o?Vm(o,!0):null,X=new yS($.shape,T.shape,[1,g,n.outChannels],b,x,O,H,V,W),q=[$,T];if(r&&q.push(r),V&&q.push(s),W){let Q=a.makeTensorInfo([],"float32",k.createScalarValue(i,"float32"));q.push(Q),v.push(Q)}let K=a.runWebGLProgram(X,q,"float32"),J=m?[1,d,p,n.outChannels]:[1,n.outChannels,d,p],te=xe({inputs:{x:K},backend:a,attrs:{shape:J}});v.push(K);for(let Q of v)a.disposeIntermediateTensorInfo(Q);return te}function jY(e){let{inputs:t,backend:n,attrs:a}=e,{x:r,filter:s}=t,{strides:i,pad:o,dataFormat:l,dilations:c,dimRoundingMode:u}=a,p=_.convertConv2DDataFormat(l),d=_.computeConv2DInfo(r.shape,s.shape,i,c,o,u,!1,p),h;if(d.filterHeight===1&&d.filterWidth===1&&d.dilationHeight===1&&d.dilationWidth===1&&d.strideHeight===1&&d.strideWidth===1&&(d.padInfo.type==="SAME"||d.padInfo.type==="VALID"))h=RS({x:r,filter:s,convInfo:d,backend:n});else if(ee().getBool("WEBGL_CONV_IM2COL")&&r.shape[0]===1)h=PS({x:r,filter:s,convInfo:d,backend:n});else{let f=new MS(d);h=n.runWebGLProgram(f,[r,s],"float32")}let m=xe({inputs:{x:h},backend:n,attrs:{shape:d.outShape}});return n.disposeIntermediateTensorInfo(h),m}var qY={kernelName:Ms,backendName:"webgl",kernelFunc:jY},KY=class{constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;let t=e.strideHeight,n=e.strideWidth,a=e.padInfo.top,r=e.padInfo.left,s=e.dataFormat==="channelsLast";this.userCode=` void main() { ivec4 coords = getOutputCoords(); int wR = coords.x; @@ -2178,22 +2178,22 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // ? = to be determined. : = across all values in that axis. float dotProd = 0.0; - for (int b = 0; b < ${convInfo.batchSize}; b++) { - for (int yR = 0; yR < ${convInfo.outHeight}; yR++) { - int xR = wR + yR * ${strideHeight} - ${padTop}; + for (int b = 0; b < ${e.batchSize}; b++) { + for (int yR = 0; yR < ${e.outHeight}; yR++) { + int xR = wR + yR * ${t} - ${a}; - if (xR < 0 || xR >= ${convInfo.inHeight}) { + if (xR < 0 || xR >= ${e.inHeight}) { continue; } - for (int yC = 0; yC < ${convInfo.outWidth}; yC++) { - int xC = wC + yC * ${strideWidth} - ${padLeft}; + for (int yC = 0; yC < ${e.outWidth}; yC++) { + int xC = wC + yC * ${n} - ${r}; - if (xC < 0 || xC >= ${convInfo.inWidth}) { + if (xC < 0 || xC >= ${e.inWidth}) { continue; } - if (${isChannelsLast}) { + if (${s}) { float dyValue = getDy(b, yR, yC, d2); float xValue = getX(b, xR, xC, d1); dotProd += (xValue * dyValue); @@ -2208,45 +2208,45 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(dotProd); } - `}},Conv2DDerInputProgram=class{constructor(convInfo){this.variableNames=["dy","W"],this.outputShape=convInfo.inShape;let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,isChannelsLast=convInfo.dataFormat==="channelsLast",padTop=filterHeight-1-convInfo.padInfo.top,padLeft=filterWidth-1-convInfo.padInfo.left,rowDim=isChannelsLast?1:2,colDim=isChannelsLast?2:3,channelDim=isChannelsLast?3:1;this.userCode=` - const ivec2 pads = ivec2(${padTop}, ${padLeft}); + `}},XY=class{constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;let t=e.filterHeight,n=e.filterWidth,a=e.strideHeight,r=e.strideWidth,s=e.dataFormat==="channelsLast",i=t-1-e.padInfo.top,o=n-1-e.padInfo.left,l=s?1:2,c=s?2:3,u=s?3:1;this.userCode=` + const ivec2 pads = ivec2(${i}, ${o}); void main() { ivec4 coords = getOutputCoords(); int batch = coords[0]; - int d1 = coords[${channelDim}]; + int d1 = coords[${u}]; - ivec2 dyCorner = ivec2(coords[${rowDim}], coords[${colDim}]) - pads; + ivec2 dyCorner = ivec2(coords[${l}], coords[${c}]) - pads; int dyRCorner = dyCorner.x; int dyCCorner = dyCorner.y; // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1). // ? = to be determined. : = across all values in that axis. float dotProd = 0.0; - for (int wR = 0; wR < ${filterHeight}; wR++) { - float dyR = float(dyRCorner + wR) / ${strideHeight}.0; + for (int wR = 0; wR < ${t}; wR++) { + float dyR = float(dyRCorner + wR) / ${a}.0; - if (dyR < 0.0 || dyR >= ${convInfo.outHeight}.0 || fract(dyR) > 0.0) { + if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || fract(dyR) > 0.0) { continue; } int idyR = int(dyR); - int wRPerm = ${filterHeight} - 1 - wR; + int wRPerm = ${t} - 1 - wR; - for (int wC = 0; wC < ${filterWidth}; wC++) { - float dyC = float(dyCCorner + wC) / ${strideWidth}.0; + for (int wC = 0; wC < ${n}; wC++) { + float dyC = float(dyCCorner + wC) / ${r}.0; - if (dyC < 0.0 || dyC >= ${convInfo.outWidth}.0 || + if (dyC < 0.0 || dyC >= ${e.outWidth}.0 || fract(dyC) > 0.0) { continue; } int idyC = int(dyC); - int wCPerm = ${filterWidth} - 1 - wC; + int wCPerm = ${n} - 1 - wC; - for (int d2 = 0; d2 < ${convInfo.outChannels}; d2++) { + for (int d2 = 0; d2 < ${e.outChannels}; d2++) { - if (${isChannelsLast}) { + if (${s}) { float xValue = getDy(batch, idyR, idyC, d2); float wValue = getW(wRPerm, wCPerm, d1, d2); dotProd += xValue * wValue; @@ -2261,7 +2261,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(dotProd); } - `}},Conv3DDerFilterProgram=class{constructor(convInfo){this.variableNames=["x","dy"],this.outputShape=convInfo.filterShape;let strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,padFront=convInfo.padInfo.front,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left;this.userCode=` + `}},YY=class{constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;let t=e.strideDepth,n=e.strideHeight,a=e.strideWidth,r=e.padInfo.front,s=e.padInfo.top,i=e.padInfo.left;this.userCode=` void main() { ivec5 coords = getOutputCoords(); int wF = coords.x; @@ -2272,25 +2272,25 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: float dotProd = 0.0; - for (int b = 0; b < ${convInfo.batchSize}; b++) { - for (int yF = 0; yF < ${convInfo.outDepth}; yF++) { - int xF = wF + yF * ${strideDepth} - ${padFront}; + for (int b = 0; b < ${e.batchSize}; b++) { + for (int yF = 0; yF < ${e.outDepth}; yF++) { + int xF = wF + yF * ${t} - ${r}; - if (xF < 0 || xF >= ${convInfo.inDepth}) { + if (xF < 0 || xF >= ${e.inDepth}) { continue; } - for (int yR = 0; yR < ${convInfo.outHeight}; yR++) { - int xR = wR + yR * ${strideHeight} - ${padTop}; + for (int yR = 0; yR < ${e.outHeight}; yR++) { + int xR = wR + yR * ${n} - ${s}; - if (xR < 0 || xR >= ${convInfo.inHeight}) { + if (xR < 0 || xR >= ${e.inHeight}) { continue; } - for (int yC = 0; yC < ${convInfo.outWidth}; yC++) { - int xC = wC + yC * ${strideWidth} - ${padLeft}; + for (int yC = 0; yC < ${e.outWidth}; yC++) { + int xC = wC + yC * ${a} - ${i}; - if (xC < 0 || xC >= ${convInfo.inWidth}) { + if (xC < 0 || xC >= ${e.inWidth}) { continue; } @@ -2303,8 +2303,8 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(dotProd); } - `}},Conv3DDerInputProgram=class{constructor(convInfo){this.variableNames=["dy","W"],this.outputShape=convInfo.inShape;let filterDepth=convInfo.filterDepth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,padFront=filterDepth-1-convInfo.padInfo.front,padTop=filterHeight-1-convInfo.padInfo.top,padLeft=filterWidth-1-convInfo.padInfo.left;this.userCode=` - const ivec3 pads = ivec3(${padFront}, ${padTop}, ${padLeft}); + `}},JY=class{constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;let t=e.filterDepth,n=e.filterHeight,a=e.filterWidth,r=e.strideDepth,s=e.strideHeight,i=e.strideWidth,o=t-1-e.padInfo.front,l=n-1-e.padInfo.top,c=a-1-e.padInfo.left;this.userCode=` + const ivec3 pads = ivec3(${o}, ${l}, ${c}); void main() { ivec5 coords = getOutputCoords(); @@ -2318,39 +2318,39 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: int dyCCorner = dyCorner.z; float dotProd = 0.0; - for (int wF = 0; wF < ${filterDepth}; wF++) { - float dyF = float(dyFCorner + wF) / ${strideDepth}.0; + for (int wF = 0; wF < ${t}; wF++) { + float dyF = float(dyFCorner + wF) / ${r}.0; - if (dyF < 0.0 || dyF >= ${convInfo.outDepth}.0 || fract(dyF) > 0.0) { + if (dyF < 0.0 || dyF >= ${e.outDepth}.0 || fract(dyF) > 0.0) { continue; } int idyF = int(dyF); - int wFPerm = ${filterDepth} - 1 - wF; + int wFPerm = ${t} - 1 - wF; - for (int wR = 0; wR < ${filterHeight}; wR++) { - float dyR = float(dyRCorner + wR) / ${strideHeight}.0; + for (int wR = 0; wR < ${n}; wR++) { + float dyR = float(dyRCorner + wR) / ${s}.0; - if (dyR < 0.0 || dyR >= ${convInfo.outHeight}.0 || + if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || fract(dyR) > 0.0) { continue; } int idyR = int(dyR); - int wRPerm = ${filterHeight} - 1 - wR; + int wRPerm = ${n} - 1 - wR; - for (int wC = 0; wC < ${filterWidth}; wC++) { - float dyC = float(dyCCorner + wC) / ${strideWidth}.0; + for (int wC = 0; wC < ${a}; wC++) { + float dyC = float(dyCCorner + wC) / ${i}.0; - if (dyC < 0.0 || dyC >= ${convInfo.outWidth}.0 || + if (dyC < 0.0 || dyC >= ${e.outWidth}.0 || fract(dyC) > 0.0) { continue; } int idyC = int(dyC); - int wCPerm = ${filterWidth} - 1 - wC; + int wCPerm = ${a} - 1 - wC; - for (int d2 = 0; d2 < ${convInfo.outChannels}; d2++) { + for (int d2 = 0; d2 < ${e.outChannels}; d2++) { float xValue = getDy(batch, idyF, idyR, idyC, d2); float wValue = getW(wFPerm, wRPerm, wCPerm, d1, d2); dotProd += xValue * wValue; @@ -2360,14 +2360,14 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(dotProd); } - `}};function conv2DBackpropFilter3(args){let{inputs,backend:backend2,attrs}=args,{x,dy}=inputs,{strides,pad:pad3,dataFormat,dimRoundingMode,filterShape}=attrs,$dataFormat=backend_util_exports.convertConv2DDataFormat(dataFormat),convInfo=backend_util_exports.computeConv2DInfo(x.shape,filterShape,strides,1,pad3,dimRoundingMode,!1,$dataFormat),program=new Conv2DDerFilterProgram(convInfo);return backend2.runWebGLProgram(program,[x,dy],"float32")}var conv2DBackpropFilterConfig2={kernelName:Conv2DBackpropFilter,backendName:"webgl",kernelFunc:conv2DBackpropFilter3};function conv2DBackpropInput3(args){let{inputs,backend:backend2,attrs}=args,{dy,filter}=inputs,{inputShape,strides,pad:pad3,dataFormat,dimRoundingMode}=attrs,$dataFormat=backend_util_exports.convertConv2DDataFormat(dataFormat),convInfo=backend_util_exports.computeConv2DInfo(inputShape,filter.shape,strides,1,pad3,dimRoundingMode,!1,$dataFormat),program=new Conv2DDerInputProgram(convInfo);return backend2.runWebGLProgram(program,[dy,filter],"float32")}var conv2DBackpropInputConfig2={kernelName:Conv2DBackpropInput,backendName:"webgl",kernelFunc:conv2DBackpropInput3};function conv3D2(args){let{inputs,backend:backend2,attrs}=args,{x,filter}=inputs,{strides,pad:pad3,dilations}=attrs,convInfo=backend_util_exports.computeConv3DInfo(x.shape,filter.shape,strides,dilations,pad3),program=new Conv3DProgram(convInfo);return backend2.runWebGLProgram(program,[x,filter],"float32")}var conv3DConfig2={kernelName:Conv3D,backendName:"webgl",kernelFunc:conv3D2};function conv3DBackpropFilterV22(args){let{inputs,backend:backend2,attrs}=args,{x,dy}=inputs,{strides,pad:pad3,filterShape}=attrs,convInfo=backend_util_exports.computeConv3DInfo(x.shape,filterShape,strides,1,pad3),program=new Conv3DDerFilterProgram(convInfo);return backend2.runWebGLProgram(program,[x,dy],"float32")}var conv3DBackpropFilterV2Config2={kernelName:Conv3DBackpropFilterV2,backendName:"webgl",kernelFunc:conv3DBackpropFilterV22};function conv3DBackpropInput2(args){let{inputs,backend:backend2,attrs}=args,{dy,filter}=inputs,{pad:pad3,strides,inputShape}=attrs,convInfo=backend_util_exports.computeConv3DInfo(inputShape,filter.shape,strides,1,pad3),program=new Conv3DDerInputProgram(convInfo);return backend2.runWebGLProgram(program,[dy,filter],"float32")}var conv3DBackpropInputConfig={kernelName:Conv3DBackpropInputV2,backendName:"webgl",kernelFunc:conv3DBackpropInput2},COS=CHECK_NAN_SNIPPET_UNARY+` + `}};function ZY(e){let{inputs:t,backend:n,attrs:a}=e,{x:r,dy:s}=t,{strides:i,pad:o,dataFormat:l,dimRoundingMode:c,filterShape:u}=a,p=_.convertConv2DDataFormat(l),d=_.computeConv2DInfo(r.shape,u,i,1,o,c,!1,p),h=new KY(d);return n.runWebGLProgram(h,[r,s],"float32")}var QY={kernelName:Sd,backendName:"webgl",kernelFunc:ZY};function e7(e){let{inputs:t,backend:n,attrs:a}=e,{dy:r,filter:s}=t,{inputShape:i,strides:o,pad:l,dataFormat:c,dimRoundingMode:u}=a,p=_.convertConv2DDataFormat(c),d=_.computeConv2DInfo(i,s.shape,o,1,l,u,!1,p),h=new XY(d);return n.runWebGLProgram(h,[r,s],"float32")}var t7={kernelName:Rs,backendName:"webgl",kernelFunc:e7};function n7(e){let{inputs:t,backend:n,attrs:a}=e,{x:r,filter:s}=t,{strides:i,pad:o,dilations:l}=a,c=_.computeConv3DInfo(r.shape,s.shape,i,l,o),u=new GY(c);return n.runWebGLProgram(u,[r,s],"float32")}var a7={kernelName:uc,backendName:"webgl",kernelFunc:n7};function r7(e){let{inputs:t,backend:n,attrs:a}=e,{x:r,dy:s}=t,{strides:i,pad:o,filterShape:l}=a,c=_.computeConv3DInfo(r.shape,l,i,1,o),u=new YY(c);return n.runWebGLProgram(u,[r,s],"float32")}var s7={kernelName:Cd,backendName:"webgl",kernelFunc:r7};function i7(e){let{inputs:t,backend:n,attrs:a}=e,{dy:r,filter:s}=t,{pad:i,strides:o,inputShape:l}=a,c=_.computeConv3DInfo(l,s.shape,o,1,i),u=new JY(c);return n.runWebGLProgram(u,[r,s],"float32")}var o7={kernelName:Ed,backendName:"webgl",kernelFunc:i7},l7=gS+` return cos(x); -`,cos3=unaryKernelFunc2({opSnippet:COS}),cosConfig2={kernelName:Cos,backendName:"webgl",kernelFunc:cos3},COSH=` +`,u7=Ye({opSnippet:l7}),c7={kernelName:Ps,backendName:"webgl",kernelFunc:u7},p7=` float e2x = exp(-x); return (e2x + 1.0 / e2x) / 2.0; -`,cosh3=unaryKernelFunc2({opSnippet:COSH}),coshConfig2={kernelName:Cosh,backendName:"webgl",kernelFunc:cosh3},CropAndResizeProgram=class{constructor(imageShape,boxShape,cropSize,method,extrapolationValue){this.variableNames=["Image","Boxes","BoxInd"],this.outputShape=[];let[batch,imageHeight,imageWidth,depth]=imageShape,[numBoxes]=boxShape,[cropHeight,cropWidth]=cropSize;this.outputShape=[numBoxes,cropHeight,cropWidth,depth];let methodId=method==="bilinear"?1:0,[inputHeightFloat,inputWidthFloat]=[`${imageHeight-1}.0`,`${imageWidth-1}.0`],[heightRatio,heightScale,inY]=cropHeight>1?[`${(imageHeight-1)/(cropHeight-1)}`,"(y2-y1) * height_ratio",`y1*${inputHeightFloat} + float(y)*(height_scale)`]:["0.0","0.0",`0.5 * (y1+y2) * ${inputHeightFloat}`],[widthRatio,widthScale,inX]=cropWidth>1?[`${(imageWidth-1)/(cropWidth-1)}`,"(x2-x1) * width_ratio",`x1*${inputWidthFloat} + float(x)*(width_scale)`]:["0.0","0.0",`0.5 * (x1+x2) * ${inputWidthFloat}`];this.userCode=` - const float height_ratio = float(${heightRatio}); - const float width_ratio = float(${widthRatio}); +`,d7=Ye({opSnippet:p7}),h7={kernelName:Oo,backendName:"webgl",kernelFunc:d7},m7=class{constructor(e,t,n,a,r){this.variableNames=["Image","Boxes","BoxInd"],this.outputShape=[];let[s,i,o,l]=e,[c]=t,[u,p]=n;this.outputShape=[c,u,p,l];let d=a==="bilinear"?1:0,[h,m]=[`${i-1}.0`,`${o-1}.0`],[f,g,y]=u>1?[`${(i-1)/(u-1)}`,"(y2-y1) * height_ratio",`y1*${h} + float(y)*(height_scale)`]:["0.0","0.0",`0.5 * (y1+y2) * ${h}`],[b,x,v]=p>1?[`${(o-1)/(p-1)}`,"(x2-x1) * width_ratio",`x1*${m} + float(x)*(width_scale)`]:["0.0","0.0",`0.5 * (x1+x2) * ${m}`];this.userCode=` + const float height_ratio = float(${f}); + const float width_ratio = float(${b}); void main() { ivec4 coords = getOutputCoords(); int b = coords[0]; @@ -2383,26 +2383,26 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // get image in batch index int bInd = round(getBoxInd(b)); - if(bInd < 0 || bInd >= ${batch}) { + if(bInd < 0 || bInd >= ${s}) { return; } - float height_scale = ${heightScale}; - float width_scale = ${widthScale}; + float height_scale = ${g}; + float width_scale = ${x}; - float in_y = ${inY}; - if( in_y < 0.0 || in_y > ${inputHeightFloat} ) { - setOutput(float(${extrapolationValue})); + float in_y = ${y}; + if( in_y < 0.0 || in_y > ${h} ) { + setOutput(float(${r})); return; } - float in_x = ${inX}; - if( in_x < 0.0 || in_x > ${inputWidthFloat} ) { - setOutput(float(${extrapolationValue})); + float in_x = ${v}; + if( in_x < 0.0 || in_x > ${m} ) { + setOutput(float(${r})); return; } vec2 sourceFracIndexCR = vec2(in_x,in_y); - if(${methodId} == 1) { + if(${d} == 1) { // Compute the four integer indices. ivec2 sourceFloorCR = ivec2(sourceFracIndexCR); ivec2 sourceCeilCR = ivec2(ceil(sourceFracIndexCR)); @@ -2426,21 +2426,21 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: setOutput(newValue); } } - `}},cropAndResize3=args=>{let{inputs,backend:backend2,attrs}=args,{image:image3,boxes,boxInd}=inputs,{cropSize,method,extrapolationValue}=attrs,program=new CropAndResizeProgram(image3.shape,boxes.shape,cropSize,method,extrapolationValue);return backend2.runWebGLProgram(program,[image3,boxes,boxInd],"float32")},cropAndResizeConfig2={kernelName:CropAndResize,backendName:"webgl",kernelFunc:cropAndResize3},CumSumProgram=class{constructor(shape,exclusive,reverse5){this.variableNames=["x"],this.outputShape=shape;let rank=shape.length,val=exclusive?"0.0":`getX(${getCoords2(rank,"coords")})`,length=shape[shape.length-1],condition="",idxString="";exclusive?(condition=reverse5?`end != ${length-1}`:"end != 0",idxString=reverse5?"end + 1":"end - 1"):(condition=reverse5?`end + pow2 < ${length}`:"end >= pow2",idxString=reverse5?"end + pow2":"end - pow2"),this.userCode=` + `}},f7=e=>{let{inputs:t,backend:n,attrs:a}=e,{image:r,boxes:s,boxInd:i}=t,{cropSize:o,method:l,extrapolationValue:c}=a,u=new m7(r.shape,s.shape,o,l,c);return n.runWebGLProgram(u,[r,s,i],"float32")},g7={kernelName:Lo,backendName:"webgl",kernelFunc:f7},zS=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=e;let a=e.length,r=t?"0.0":`getX(${OS(a,"coords")})`,s=e[e.length-1],i="",o="";t?(i=n?`end != ${s-1}`:"end != 0",o=n?"end + 1":"end - 1"):(i=n?`end + pow2 < ${s}`:"end >= pow2",o=n?"end + pow2":"end - pow2"),this.userCode=` uniform float index; void main() { - ${getCoordsDataType(rank)} coords = getOutputCoords(); - int end = ${getFinalCoord(rank,"coords")}; - float val = ${val}; + ${mt(a)} coords = getOutputCoords(); + int end = ${LS(a,"coords")}; + float val = ${r}; int pow2 = int(pow(2.0, index)); - if (${condition}) { - int idx = ${idxString}; - ${getFinalCoord(rank,"coords")} = idx; - val += getX(${getCoords2(rank,"coords")}); + if (${i}) { + int idx = ${o}; + ${LS(a,"coords")} = idx; + val += getX(${OS(a,"coords")}); } setOutput(val); } - `}getCustomSetupFunc(index){return(gpgpu,webGLProgram)=>{this.index==null&&(this.index=gpgpu.getUniformLocation(webGLProgram,"index")),gpgpu.gl.uniform1f(this.index,index)}}};function getCoords2(rank,name){if(rank===1)return`${name}`;if(rank===2)return`${name}.x, ${name}.y`;if(rank===3)return`${name}.x, ${name}.y, ${name}.z`;if(rank===4)return`${name}.x, ${name}.y, ${name}.z, ${name}.w`;throw Error(`Cumulative sum for rank ${rank} is not yet supported`)}function getFinalCoord(rank,name){if(rank===1)return`${name}`;if(rank===2)return`${name}.y`;if(rank===3)return`${name}.z`;if(rank===4)return`${name}.w`;throw Error(`Cumulative sum for rank ${rank} is not yet supported`)}function cumsum3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{axis,exclusive,reverse:reverse5}=attrs,xRank=x.shape.length,permutation=backend_util_exports.getAxesPermutation([axis],xRank),permutedX=x;permutation!=null&&(permutedX=transpose3({inputs:{x},backend:backend2,attrs:{perm:permutation}}));let permutedAxis=backend_util_exports.getInnerMostAxes(1,xRank)[0];if(permutedAxis!==xRank-1)throw new Error(`WebGL cumsum shader expects an inner-most axis=${x.shape.length-1} but got axis=${axis}`);let size=x.shape[permutedAxis],result=identity3({inputs:{x:permutedX},backend:backend2});for(let i=0;i<=Math.ceil(Math.log2(size))-1;i++){let program=new CumSumProgram(permutedX.shape,!1,reverse5),customSetup=program.getCustomSetupFunc(i),prevResult=result;result=backend2.runWebGLProgram(program,[result],result.dtype,customSetup),backend2.disposeIntermediateTensorInfo(prevResult)}if(exclusive){let program=new CumSumProgram(permutedX.shape,exclusive,reverse5),prevResult=result;result=backend2.runWebGLProgram(program,[result],result.dtype),backend2.disposeIntermediateTensorInfo(prevResult)}if(permutation!=null){let reversePermutation=backend_util_exports.getUndoAxesPermutation(permutation),reverseTransposedResult=transpose3({inputs:{x:result},backend:backend2,attrs:{perm:reversePermutation}});return backend2.disposeIntermediateTensorInfo(result),backend2.disposeIntermediateTensorInfo(permutedX),reverseTransposedResult}return result}var cumsumConfig2={kernelName:Cumsum,backendName:"webgl",kernelFunc:cumsum3};function denseBincount3(args){let{inputs,backend:backend2,attrs}=args,{x,weights}=inputs,{size,binaryOutput}=attrs;if(x.shape.length===1){let xVals=backend2.readSync(x.dataId),weightsVals=backend2.readSync(weights.dataId),outVals=bincountImplCPU(xVals,weightsVals,weights.dtype,weights.shape,size);return backend2.makeTensorInfo([size],weights.dtype,outVals)}else if(x.shape.length===2){let xBuf=backend2.bufferSync(x),weightsBuf=backend2.bufferSync(weights),outBuf=bincountReduceImplCPU(xBuf,weightsBuf,size,binaryOutput);return backend2.makeTensorInfo(outBuf.shape,weights.dtype,outBuf.values)}throw new Error(`Error in denseBincount: input must be at most rank 2, but got rank${x.shape.length}.`)}var denseBincountConfig2={kernelName:DenseBincount,backendName:"webgl",kernelFunc:denseBincount3},DepthToSpaceProgram=class{constructor(outputShape,blockSize,dataFormat){this.variableNames=["x"],this.outputShape=[],this.outputShape=outputShape,this.blockSize=blockSize,this.dataFormat=dataFormat,this.userCode=` + `}getCustomSetupFunc(e){return(t,n)=>{this.index==null&&(this.index=t.getUniformLocation(n,"index")),t.gl.uniform1f(this.index,e)}}};function OS(e,t){if(e===1)return`${t}`;if(e===2)return`${t}.x, ${t}.y`;if(e===3)return`${t}.x, ${t}.y, ${t}.z`;if(e===4)return`${t}.x, ${t}.y, ${t}.z, ${t}.w`;throw Error(`Cumulative sum for rank ${e} is not yet supported`)}function LS(e,t){if(e===1)return`${t}`;if(e===2)return`${t}.y`;if(e===3)return`${t}.z`;if(e===4)return`${t}.w`;throw Error(`Cumulative sum for rank ${e} is not yet supported`)}function y7(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{axis:s,exclusive:i,reverse:o}=a,l=r.shape.length,c=_.getAxesPermutation([s],l),u=r;c!=null&&(u=Cn({inputs:{x:r},backend:n,attrs:{perm:c}}));let p=_.getInnerMostAxes(1,l)[0];if(p!==l-1)throw new Error(`WebGL cumsum shader expects an inner-most axis=${r.shape.length-1} but got axis=${s}`);let d=r.shape[p],h=Wn({inputs:{x:u},backend:n});for(let m=0;m<=Math.ceil(Math.log2(d))-1;m++){let f=new zS(u.shape,!1,o),g=f.getCustomSetupFunc(m),y=h;h=n.runWebGLProgram(f,[h],h.dtype,g),n.disposeIntermediateTensorInfo(y)}if(i){let m=new zS(u.shape,i,o),f=h;h=n.runWebGLProgram(m,[h],h.dtype),n.disposeIntermediateTensorInfo(f)}if(c!=null){let m=_.getUndoAxesPermutation(c),f=Cn({inputs:{x:h},backend:n,attrs:{perm:m}});return n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(u),f}return h}var b7={kernelName:Os,backendName:"webgl",kernelFunc:y7};function x7(e){let{inputs:t,backend:n,attrs:a}=e,{x:r,weights:s}=t,{size:i,binaryOutput:o}=a;if(r.shape.length===1){let l=n.readSync(r.dataId),c=n.readSync(s.dataId),u=aS(l,c,s.dtype,s.shape,i);return n.makeTensorInfo([i],s.dtype,u)}else if(r.shape.length===2){let l=n.bufferSync(r),c=n.bufferSync(s),u=q8(l,c,i,o);return n.makeTensorInfo(u.shape,s.dtype,u.values)}throw new Error(`Error in denseBincount: input must be at most rank 2, but got rank${r.shape.length}.`)}var v7={kernelName:_d,backendName:"webgl",kernelFunc:x7},w7=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=[],this.outputShape=e,this.blockSize=t,this.dataFormat=n,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords[0]; @@ -2448,40 +2448,40 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: int w = ${this.getWidthCoordString()}; int d = ${this.getDepthCoordString()}; - int in_h = h / ${blockSize}; - int offset_h = imod(h, ${blockSize}); - int in_w = w / ${blockSize}; - int offset_w = imod(w, ${blockSize}); - int offset_d = (offset_h * ${blockSize} + offset_w) * + int in_h = h / ${t}; + int offset_h = imod(h, ${t}); + int in_w = w / ${t}; + int offset_w = imod(w, ${t}); + int offset_d = (offset_h * ${t} + offset_w) * ${this.getOutputDepthSize()}; int in_d = d + offset_d; float result = ${this.getInputSamplingString()}; setOutput(result); } - `}getHeightCoordString(){return this.dataFormat==="NHWC"?"coords[1]":"coords[2]"}getWidthCoordString(){return this.dataFormat==="NHWC"?"coords[2]":"coords[3]"}getDepthCoordString(){return this.dataFormat==="NHWC"?"coords[3]":"coords[1]"}getOutputDepthSize(){return this.dataFormat==="NHWC"?this.outputShape[3]:this.outputShape[1]}getInputSamplingString(){return this.dataFormat==="NHWC"?"getX(b, in_h, in_w, in_d)":"getX(b, in_d, in_h, in_w)"}};function depthToSpace3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{blockSize,dataFormat}=attrs;util_exports.assert(blockSize>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=dataFormat==="NHWC"?x.shape[1]:x.shape[2],inputWidth=dataFormat==="NHWC"?x.shape[2]:x.shape[3],inputDepth=dataFormat==="NHWC"?x.shape[3]:x.shape[1],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),outputShape=dataFormat==="NHWC"?[batchSize,outputHeight,outputWidth,outputDepth]:[batchSize,outputDepth,outputHeight,outputWidth],program=new DepthToSpaceProgram(outputShape,blockSize,dataFormat);return backend2.runWebGLProgram(program,[x],x.dtype)}var depthToSpaceConfig2={kernelName:DepthToSpace,backendName:"webgl",kernelFunc:depthToSpace3},DepthwiseConv2DProgram=class{constructor(convInfo,addBias=!1,activation2=null,hasPreluActivation=!1,hasLeakyReluAlpha=!1){this.variableNames=["x","W"],this.outputShape=convInfo.outShape;let xNumRows=convInfo.inHeight,xNumCols=convInfo.inWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,channelMul=convInfo.outChannels/convInfo.inChannels,activationSnippet="",applyActivationSnippet="";activation2&&(hasPreluActivation?activationSnippet=`float activation(float a) { + `}getHeightCoordString(){return this.dataFormat==="NHWC"?"coords[1]":"coords[2]"}getWidthCoordString(){return this.dataFormat==="NHWC"?"coords[2]":"coords[3]"}getDepthCoordString(){return this.dataFormat==="NHWC"?"coords[3]":"coords[1]"}getOutputDepthSize(){return this.dataFormat==="NHWC"?this.outputShape[3]:this.outputShape[1]}getInputSamplingString(){return this.dataFormat==="NHWC"?"getX(b, in_h, in_w, in_d)":"getX(b, in_d, in_h, in_w)"}};function k7(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{blockSize:s,dataFormat:i}=a;k.assert(s>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${s}`);let o=r.shape[0],l=i==="NHWC"?r.shape[1]:r.shape[2],c=i==="NHWC"?r.shape[2]:r.shape[3],u=i==="NHWC"?r.shape[3]:r.shape[1],p=l*s,d=c*s,h=u/(s*s),m=i==="NHWC"?[o,p,d,h]:[o,h,p,d],f=new w7(m,s,i);return n.runWebGLProgram(f,[r],r.dtype)}var I7={kernelName:zo,backendName:"webgl",kernelFunc:k7},BS=class{constructor(e,t=!1,n=null,a=!1,r=!1){this.variableNames=["x","W"],this.outputShape=e.outShape;let s=e.inHeight,i=e.inWidth,o=e.padInfo.top,l=e.padInfo.left,c=e.strideHeight,u=e.strideWidth,p=e.dilationHeight,d=e.dilationWidth,h=e.filterHeight,m=e.filterWidth,f=e.outChannels/e.inChannels,g="",y="";n&&(a?g=`float activation(float a) { float b = getPreluActivationWeightsAtOutCoords(); - ${activation2} - }`:hasLeakyReluAlpha?activationSnippet=`float activation(float a) { + ${n} + }`:r?g=`float activation(float a) { float b = getLeakyreluAlphaAtOutCoords(); - ${activation2} - }`:activationSnippet=` + ${n} + }`:g=` float activation(float x) { - ${activation2} + ${n} } - `,applyActivationSnippet="result = activation(result);");let addBiasSnippet=addBias?"result += getBiasAtOutCoords();":"";addBias&&this.variableNames.push("bias"),hasPreluActivation&&this.variableNames.push("preluActivationWeights"),hasLeakyReluAlpha&&this.variableNames.push("leakyreluAlpha"),this.userCode=` - ${activationSnippet} + `,y="result = activation(result);");let b=t?"result += getBiasAtOutCoords();":"";t&&this.variableNames.push("bias"),a&&this.variableNames.push("preluActivationWeights"),r&&this.variableNames.push("leakyreluAlpha"),this.userCode=` + ${g} - const ivec2 strides = ivec2(${strideHeight}, ${strideWidth}); - const ivec2 pads = ivec2(${padTop}, ${padLeft}); + const ivec2 strides = ivec2(${c}, ${u}); + const ivec2 pads = ivec2(${o}, ${l}); void main() { ivec4 coords = getOutputCoords(); int batch = coords.x; ivec2 xRCCorner = coords.yz * strides - pads; int d2 = coords.w; - int d1 = d2 / ${channelMul}; - int q = d2 - d1 * ${channelMul}; + int d1 = d2 / ${f}; + int q = d2 - d1 * ${f}; int xRCorner = xRCCorner.x; int xCCorner = xRCCorner.y; @@ -2490,17 +2490,17 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // ? = to be determined. : = across all values in that axis. float dotProd = 0.0; // TO DO(dsmilkov): Flatten the two for loops and vec4 the operations. - for (int wR = 0; wR < ${filterHeight}; wR++) { - int xR = xRCorner + wR * ${dilationHeight}; + for (int wR = 0; wR < ${h}; wR++) { + int xR = xRCorner + wR * ${p}; - if (xR < 0 || xR >= ${xNumRows}) { + if (xR < 0 || xR >= ${s}) { continue; } - for (int wC = 0; wC < ${filterWidth}; wC++) { - int xC = xCCorner + wC * ${dilationWidth}; + for (int wC = 0; wC < ${m}; wC++) { + int xC = xCCorner + wC * ${d}; - if (xC < 0 || xC >= ${xNumCols}) { + if (xC < 0 || xC >= ${i}) { continue; } @@ -2511,142 +2511,142 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } float result = dotProd; - ${addBiasSnippet} - ${applyActivationSnippet} + ${b} + ${y} setOutput(result); } - `}},DepthwiseConvPacked2DProgram=class{constructor(convInfo,addBias=!1,activation2=null,hasPreluActivation=!1,hasLeakyReluAlpha=!1){this.variableNames=["x","W"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=convInfo.outShape;let xNumRows=convInfo.inHeight,xNumCols=convInfo.inWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,texelsAcross=filterWidth,mainLoop="int xR; int xC; int xCOffset;";for(let r=0;r= 0 && xR < ${xNumRows} && xCOffset >= 0 && xCOffset < ${xNumCols}) { - xTexelR${r}C${c} = getX(batch, xR, xCOffset, d1); + if(xR >= 0 && xR < ${s} && xCOffset >= 0 && xCOffset < ${i}) { + xTexelR${v}C${T} = getX(batch, xR, xCOffset, d1); // Need to manually clear unused channels in case // we're reading from recycled texture. - if(xCOffset + 1 >= ${xNumCols}) { - xTexelR${r}C${c}.zw = vec2(0.); + if(xCOffset + 1 >= ${i}) { + xTexelR${v}C${T}.zw = vec2(0.); } } else { - xTexelR${r}C${c} = vec4(0.); + xTexelR${v}C${T} = vec4(0.); } xCOffset = xC + 1 - 2; - if(xR >= 0 && xR < ${xNumRows} && xCOffset >= 0 && xCOffset < ${xNumCols}) { + if(xR >= 0 && xR < ${s} && xCOffset >= 0 && xCOffset < ${i}) { vec4 previous = getX(batch, xR, xCOffset, d1); // Need to manually clear unused channels in case // we're reading from recycled texture. - if(xCOffset + 1 >= ${xNumCols}) { + if(xCOffset + 1 >= ${i}) { previous.zw = vec2(0.); } - xR${r}C${c} = vec4(previous.zw, xTexelR${r}C${c}.xy); + xR${v}C${T} = vec4(previous.zw, xTexelR${v}C${T}.xy); } else { - xR${r}C${c} = vec4(0, 0, xTexelR${r}C${c}.xy); + xR${v}C${T} = vec4(0, 0, xTexelR${v}C${T}.xy); } - `:mainLoop+=` - if(xR >= 0 && xR < ${xNumRows} && xC >= 0 && xC < ${xNumCols}) { - xTexelR${r}C${c} = getX(batch, xR, xC, d1); + `:g+=` + if(xR >= 0 && xR < ${s} && xC >= 0 && xC < ${i}) { + xTexelR${v}C${T} = getX(batch, xR, xC, d1); } else { - xTexelR${r}C${c} = vec4(0.); + xTexelR${v}C${T} = vec4(0.); } - xR${r}C${c} = xTexelR${r}C${c}; - `,c+1= 0 && xR < ${xNumRows} && - xCOffset >= 0 && xCOffset < ${xNumCols}) { - xTexelR${r}C${c+2} = getX(batch, xR, xCOffset, d1); + if(xR >= 0 && xR < ${s} && + xCOffset >= 0 && xCOffset < ${i}) { + xTexelR${v}C${T+2} = getX(batch, xR, xCOffset, d1); } - `,dilationWidth>1&&(mainLoop+=` + `,d>1&&(g+=` xCOffset -= 2; - if(xR >= 0 && xR < ${xNumRows} && - xCOffset >= 0 && xCOffset < ${xNumCols}) { - xTexelR${r}C${c} = getX(batch, xR, xCOffset, d1); + if(xR >= 0 && xR < ${s} && + xCOffset >= 0 && xCOffset < ${i}) { + xTexelR${v}C${T} = getX(batch, xR, xCOffset, d1); } else { - xTexelR${r}C${c} = vec4(0.); + xTexelR${v}C${T} = vec4(0.); } - `),mainLoop+=` - xR${r}C${c+1} = vec4( - xTexelR${r}C${c}.zw, xTexelR${r}C${c+2}.xy); - `):mainLoop+=` - xCOffset = xC + ${nextTexelOffset}; + `),g+=` + xR${v}C${T+1} = vec4( + xTexelR${v}C${T}.zw, xTexelR${v}C${T+2}.xy); + `):g+=` + xCOffset = xC + ${E}; - if(xR >= 0 && xR < ${xNumRows} && - xCOffset >= 0 && xCOffset < ${xNumCols}) { - xTexelR${r}C${c+2} = getX(batch, xR, xCOffset, d1); + if(xR >= 0 && xR < ${s} && + xCOffset >= 0 && xCOffset < ${i}) { + xTexelR${v}C${T+2} = getX(batch, xR, xCOffset, d1); } - xR${r}C${c+1} = xTexelR${r}C${c+2}; - `}}else c= 0 && xR < ${xNumRows}) { - `,padLeft%2==1?(mainLoop+=` - xCOffset = xC + 1 - ${strideWidth}; - if(xCOffset >= 0 && xCOffset < ${xNumCols}) { - xTexelR${r}C${c} = getX(batch, xR, xCOffset, d1); + xR${v}C${T+1} = xTexelR${v}C${T+2}; + `}}else T= 0 && xR < ${s}) { + `,l%2==1?(g+=` + xCOffset = xC + 1 - ${u}; + if(xCOffset >= 0 && xCOffset < ${i}) { + xTexelR${v}C${T} = getX(batch, xR, xCOffset, d1); } else { - xTexelR${r}C${c} = vec4(0.); + xTexelR${v}C${T} = vec4(0.); } - if(xC + 1 >= 0 && xC + 1 < ${xNumCols}) { - xTexelR${r}C${c+2} = getX(batch, xR, xC + 1, d1); + if(xC + 1 >= 0 && xC + 1 < ${i}) { + xTexelR${v}C${T+2} = getX(batch, xR, xC + 1, d1); } else { - xTexelR${r}C${c+2} = vec4(0.); + xTexelR${v}C${T+2} = vec4(0.); } - xR${r}C${c} = vec4( - xTexelR${r}C${c}.zw, xTexelR${r}C${c+2}.zw); - `,c+1= 0 && xCOffset < ${xNumCols}) { + xCOffset = xC + 1 + ${u}; + if(xCOffset >= 0 && xCOffset < ${i}) { final = getX(batch, xR, xCOffset, d1); } - xR${r}C${c+1} = vec4(xTexelR${r}C${c+2}.xy, final.xy); - `)):(mainLoop+=` - if(xC >= 0 && xC < ${xNumCols}) { - xTexelR${r}C${c} = getX(batch, xR, xC, d1); + xR${v}C${T+1} = vec4(xTexelR${v}C${T+2}.xy, final.xy); + `)):(g+=` + if(xC >= 0 && xC < ${i}) { + xTexelR${v}C${T} = getX(batch, xR, xC, d1); } else { - xTexelR${r}C${c} = vec4(0.); + xTexelR${v}C${T} = vec4(0.); } - xCOffset = xC + ${strideWidth}; - if(xCOffset >= 0 && xCOffset < ${xNumCols}) { - xTexelR${r}C${c+2} = getX(batch, xR, xCOffset, d1); + xCOffset = xC + ${u}; + if(xCOffset >= 0 && xCOffset < ${i}) { + xTexelR${v}C${T+2} = getX(batch, xR, xCOffset, d1); } else { - xTexelR${r}C${c+2} = vec4(0.); + xTexelR${v}C${T+2} = vec4(0.); } - xR${r}C${c} = vec4( - xTexelR${r}C${c}.xy, xTexelR${r}C${c+2}.xy); - `,c+1`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${$dilations}'`);let convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,$dilations,pad3,dimRoundingMode,!0),program;return env().getBool("WEBGL_PACK_DEPTHWISECONV")&&convInfo.strideWidth<=2&&convInfo.outChannels/convInfo.inChannels==1?program=new DepthwiseConvPacked2DProgram(convInfo):program=new DepthwiseConv2DProgram(convInfo),backend2.runWebGLProgram(program,[x,filter],"float32")}var depthwiseConv2dNativeConfig2={kernelName:DepthwiseConv2dNative,backendName:"webgl",kernelFunc:depthwiseConv2dNative2},DepthwiseConv2DDerFilterProgram=class{constructor(convInfo){this.variableNames=["x","dy"],this.outputShape=convInfo.filterShape;let strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,channelMul=convInfo.outChannels/convInfo.inChannels;this.userCode=` + `}};function N7(e){let{inputs:t,backend:n,attrs:a}=e,{x:r,filter:s}=t,{strides:i,pad:o,dilations:l,dimRoundingMode:c}=a,u=l;u==null&&(u=[1,1]),k.assert(_.eitherStridesOrDilationsAreOne(i,u),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${i} and dilations '${u}'`);let p=_.computeConv2DInfo(r.shape,s.shape,i,u,o,c,!0),d;return ee().getBool("WEBGL_PACK_DEPTHWISECONV")&&p.strideWidth<=2&&p.outChannels/p.inChannels==1?d=new WS(p):d=new BS(p),n.runWebGLProgram(d,[r,s],"float32")}var T7={kernelName:Ls,backendName:"webgl",kernelFunc:N7},S7=class{constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;let t=e.strideHeight,n=e.strideWidth,a=e.padInfo.top,r=e.padInfo.left,s=e.outChannels/e.inChannels;this.userCode=` void main() { ivec4 coords = getOutputCoords(); int wR = coords.x; int wC = coords.y; int d1 = coords.z; int dm = coords.w; - int d2 = d1 * ${channelMul} + dm; + int d2 = d1 * ${s} + dm; float dotProd = 0.0; // TO DO: Vec4 over the batch size - for (int b = 0; b < ${convInfo.batchSize}; b++) { - for (int yR = 0; yR < ${convInfo.outHeight}; yR++) { - int xR = wR + yR * ${strideHeight} - ${padTop}; + for (int b = 0; b < ${e.batchSize}; b++) { + for (int yR = 0; yR < ${e.outHeight}; yR++) { + int xR = wR + yR * ${t} - ${a}; - if (xR < 0 || xR >= ${convInfo.inHeight}) { + if (xR < 0 || xR >= ${e.inHeight}) { continue; } - for (int yC = 0; yC < ${convInfo.outWidth}; yC++) { - int xC = wC + yC * ${strideWidth} - ${padLeft}; + for (int yC = 0; yC < ${e.outWidth}; yC++) { + int xC = wC + yC * ${n} - ${r}; - if (xC < 0 || xC >= ${convInfo.inWidth}) { + if (xC < 0 || xC >= ${e.inWidth}) { continue; } @@ -2703,8 +2703,8 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(dotProd); } - `}},DepthwiseConv2DDerInputProgram=class{constructor(convInfo){this.variableNames=["dy","W"],this.outputShape=convInfo.inShape;let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,padTop=filterHeight-1-convInfo.padInfo.top,padLeft=filterWidth-1-convInfo.padInfo.left,channelMul=convInfo.outChannels/convInfo.inChannels;this.userCode=` - const ivec2 pads = ivec2(${padTop}, ${padLeft}); + `}},C7=class{constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;let t=e.filterHeight,n=e.filterWidth,a=e.strideHeight,r=e.strideWidth,s=t-1-e.padInfo.top,i=n-1-e.padInfo.left,o=e.outChannels/e.inChannels;this.userCode=` + const ivec2 pads = ivec2(${s}, ${i}); void main() { ivec4 coords = getOutputCoords(); @@ -2716,30 +2716,30 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: float dotProd = 0.0; - for (int wR = 0; wR < ${filterHeight}; wR++) { - float dyR = float(dyRCorner + wR) / ${strideHeight}.0; + for (int wR = 0; wR < ${t}; wR++) { + float dyR = float(dyRCorner + wR) / ${a}.0; - if (dyR < 0.0 || dyR >= ${convInfo.outHeight}.0 || fract(dyR) > 0.0) { + if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || fract(dyR) > 0.0) { continue; } int idyR = int(dyR); - int wRPerm = ${filterHeight} - 1 - wR; + int wRPerm = ${t} - 1 - wR; - for (int wC = 0; wC < ${filterWidth}; wC++) { - float dyC = float(dyCCorner + wC) / ${strideWidth}.0; + for (int wC = 0; wC < ${n}; wC++) { + float dyC = float(dyCCorner + wC) / ${r}.0; - if (dyC < 0.0 || dyC >= ${convInfo.outWidth}.0 || + if (dyC < 0.0 || dyC >= ${e.outWidth}.0 || fract(dyC) > 0.0) { continue; } int idyC = int(dyC); - int wCPerm = ${filterWidth} - 1 - wC; + int wCPerm = ${n} - 1 - wC; // TO DO: Vec4 over the channelMul - for (int dm = 0; dm < ${channelMul}; dm++) { - int d2 = d1 * ${channelMul} + dm; + for (int dm = 0; dm < ${o}; dm++) { + int d2 = d1 * ${o} + dm; float xValue = getDy(batch, idyR, idyC, d2); float wValue = getW(wRPerm, wCPerm, d1, dm); dotProd += xValue * wValue; @@ -2748,15 +2748,15 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(dotProd); } - `}};function depthwiseConv2dNativeBackpropFilter3(args){let{inputs,backend:backend2,attrs}=args,{x,dy}=inputs,{strides,dilations,pad:pad3,dimRoundingMode,filterShape}=attrs,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filterShape,strides,dilations,pad3,dimRoundingMode,!0),program=new DepthwiseConv2DDerFilterProgram(convInfo);return backend2.runWebGLProgram(program,[x,dy],"float32")}var depthwiseConv2dNativeBackpropFilterConfig2={kernelName:DepthwiseConv2dNativeBackpropFilter,backendName:"webgl",kernelFunc:depthwiseConv2dNativeBackpropFilter3};function depthwiseConv2dNativeBackpropInput3(args){let{inputs,backend:backend2,attrs}=args,{dy,filter}=inputs,{strides,dilations,pad:pad3,dimRoundingMode,inputShape}=attrs,convInfo=backend_util_exports.computeConv2DInfo(inputShape,filter.shape,strides,dilations,pad3,dimRoundingMode,!0),program=new DepthwiseConv2DDerInputProgram(convInfo);return backend2.runWebGLProgram(program,[dy,filter],"float32")}var depthwiseConv2dNativeBackpropInputConfig2={kernelName:DepthwiseConv2dNativeBackpropInput,backendName:"webgl",kernelFunc:depthwiseConv2dNativeBackpropInput3},DiagProgram=class{constructor(size){this.variableNames=["X"],this.outputShape=[size,size],this.userCode=` + `}};function E7(e){let{inputs:t,backend:n,attrs:a}=e,{x:r,dy:s}=t,{strides:i,dilations:o,pad:l,dimRoundingMode:c,filterShape:u}=a,p=_.computeConv2DInfo(r.shape,u,i,o,l,c,!0),d=new S7(p);return n.runWebGLProgram(d,[r,s],"float32")}var _7={kernelName:Fd,backendName:"webgl",kernelFunc:E7};function F7(e){let{inputs:t,backend:n,attrs:a}=e,{dy:r,filter:s}=t,{strides:i,dilations:o,pad:l,dimRoundingMode:c,inputShape:u}=a,p=_.computeConv2DInfo(u,s.shape,i,o,l,c,!0),d=new C7(p);return n.runWebGLProgram(d,[r,s],"float32")}var A7={kernelName:Ad,backendName:"webgl",kernelFunc:F7},$7=class{constructor(e){this.variableNames=["X"],this.outputShape=[e,e],this.userCode=` void main() { ivec2 coords = getOutputCoords(); float val = coords[0] == coords[1] ? getX(coords[0]) : 0.0; setOutput(val); } - `}};function diag3(args){let{inputs,backend:backend2}=args,{x}=inputs,outShape=[...x.shape,...x.shape],xSize=util_exports.sizeFromShape(x.shape),flat=reshape4({inputs:{x},backend:backend2,attrs:{shape:[xSize]}}),program=new DiagProgram(xSize),res=backend2.runWebGLProgram(program,[flat],flat.dtype),out=reshape4({inputs:{x:res},backend:backend2,attrs:{shape:outShape}});return backend2.disposeIntermediateTensorInfo(flat),backend2.disposeIntermediateTensorInfo(res),out}var diagConfig2={kernelName:Diag,backendName:"webgl",kernelFunc:diag3},Dilation2DProgram=class{constructor(convInfo){this.variableNames=["x","W"],this.outputShape=convInfo.outShape;let{inHeight,inWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth}=convInfo,{top:padTop,left:padLeft}=padInfo;this.userCode=` - const ivec2 strides = ivec2(${strideHeight}, ${strideWidth}); - const ivec2 pads = ivec2(${padTop}, ${padLeft}); + `}};function D7(e){let{inputs:t,backend:n}=e,{x:a}=t,r=[...a.shape,...a.shape],s=k.sizeFromShape(a.shape),i=xe({inputs:{x:a},backend:n,attrs:{shape:[s]}}),o=new $7(s),l=n.runWebGLProgram(o,[i],i.dtype),c=xe({inputs:{x:l},backend:n,attrs:{shape:r}});return n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(l),c}var M7={kernelName:$d,backendName:"webgl",kernelFunc:D7},R7=class{constructor(e){this.variableNames=["x","W"],this.outputShape=e.outShape;let{inHeight:t,inWidth:n,padInfo:a,strideHeight:r,strideWidth:s,filterHeight:i,filterWidth:o,dilationHeight:l,dilationWidth:c}=e,{top:u,left:p}=a;this.userCode=` + const ivec2 strides = ivec2(${r}, ${s}); + const ivec2 pads = ivec2(${u}, ${p}); const float neg_infinity = -3.4e38; void main() { @@ -2769,14 +2769,14 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: int wBeg = outTopLeftCorner.y; float curVal = neg_infinity; - for (int h = 0; h < ${filterHeight}; h++) { - int hIn = hBeg + h * ${dilationHeight}; + for (int h = 0; h < ${i}; h++) { + int hIn = hBeg + h * ${l}; - if (hIn >= 0 && hIn < ${inHeight}) { - for (int w = 0; w < ${filterWidth}; w++) { - int wIn = wBeg + w * ${dilationWidth}; + if (hIn >= 0 && hIn < ${t}) { + for (int w = 0; w < ${o}; w++) { + int wIn = wBeg + w * ${c}; - if (wIn >= 0 && wIn < ${inWidth}) { + if (wIn >= 0 && wIn < ${n}) { float xVal = getX(batch, hIn, wIn, d1); float wVal = getW(h, w, d1); @@ -2792,7 +2792,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: float result = curVal; setOutput(result); } - `}};function dilation2D(args){let{inputs,backend:backend2,attrs}=args,{x,filter}=inputs,{strides,pad:pad3,dilations}=attrs,convInfo=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad3,"NHWC",dilations),out,program=new Dilation2DProgram(convInfo);out=backend2.runWebGLProgram(program,[x,filter],"float32");let outReshaped=reshape4({inputs:{x:out},backend:backend2,attrs:{shape:convInfo.outShape}});return backend2.disposeIntermediateTensorInfo(out),outReshaped}var dilation2DConfig={kernelName:Dilation2D,backendName:"webgl",kernelFunc:dilation2D},ELU4="return (x >= 0.0) ? x : (exp(x) - 1.0);",ELU_PACKED=` + `}};function P7(e){let{inputs:t,backend:n,attrs:a}=e,{x:r,filter:s}=t,{strides:i,pad:o,dilations:l}=a,c=_.computeDilation2DInfo(r.shape,s.shape,i,o,"NHWC",l),u,p=new R7(c);u=n.runWebGLProgram(p,[r,s],"float32");let d=xe({inputs:{x:u},backend:n,attrs:{shape:c.outShape}});return n.disposeIntermediateTensorInfo(u),d}var O7={kernelName:cc,backendName:"webgl",kernelFunc:P7},L7="return (x >= 0.0) ? x : (exp(x) - 1.0);",z7=` vec4 result; result.r = (x.r >= 0.0) ? x.r : (exp(x.r) - 1.0); @@ -2801,41 +2801,41 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: result.a = (x.a >= 0.0) ? x.a : (exp(x.a) - 1.0); return result; -`,elu5=unaryKernelFunc2({opSnippet:ELU4,packedOpSnippet:ELU_PACKED}),eluConfig2={kernelName:Elu,backendName:"webgl",kernelFunc:elu5},ELU_DER="return (b >= 1.0) ? a : a * (b + 1.0);",ELU_DER_PACKED=` +`,B7=Ye({opSnippet:L7,packedOpSnippet:z7}),W7={kernelName:Bo,backendName:"webgl",kernelFunc:B7},V7="return (b >= 1.0) ? a : a * (b + 1.0);",U7=` vec4 bGTEZero = vec4(greaterThanEqual(b, vec4(0.))); return (bGTEZero * a) + ((vec4(1.0) - bGTEZero) * (a * (b + vec4(1.0)))); -`,eluGrad2=args=>{let{inputs,backend:backend2}=args,{dy,y}=inputs,program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(ELU_DER_PACKED,dy.shape,y.shape):new BinaryOpProgram(ELU_DER,dy.shape,y.shape);return backend2.runWebGLProgram(program,[dy,y],dy.dtype)},eluGradConfig3={kernelName:EluGrad,backendName:"webgl",kernelFunc:eluGrad2},PACKED_EQUAL=` +`,G7=e=>{let{inputs:t,backend:n}=e,{dy:a,y:r}=t,s=ee().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new vp(U7,a.shape,r.shape):new mu(V7,a.shape,r.shape);return n.runWebGLProgram(s,[a,r],a.dtype)},H7={kernelName:Rd,backendName:"webgl",kernelFunc:G7},j7=` return vec4(equal(a, b)); -`,EQUAL="return float(a == b);",equal3=binaryKernelFunc2({opSnippet:EQUAL,packedOpSnippet:PACKED_EQUAL,dtype:"bool"}),equalConfig2={kernelName:Equal,backendName:"webgl",kernelFunc:equal3},ERF=` +`,q7="return float(a == b);",K7=sn({opSnippet:q7,packedOpSnippet:j7,dtype:"bool"}),X7={kernelName:Vo,backendName:"webgl",kernelFunc:K7},Y7=` // Error function is calculated approximately with elementary function. // See "Handbook of Mathematical Functions with Formulas, // Graphs, and Mathematical Tables", Abramowitz and Stegun. - float p = ${backend_util_exports.ERF_P}; - float a1 = ${backend_util_exports.ERF_A1}; - float a2 = ${backend_util_exports.ERF_A2}; - float a3 = ${backend_util_exports.ERF_A3}; - float a4 = ${backend_util_exports.ERF_A4}; - float a5 = ${backend_util_exports.ERF_A5}; + float p = ${_.ERF_P}; + float a1 = ${_.ERF_A1}; + float a2 = ${_.ERF_A2}; + float a3 = ${_.ERF_A3}; + float a4 = ${_.ERF_A4}; + float a5 = ${_.ERF_A5}; float sign = sign(x); x = abs(x); float t = 1.0 / (1.0 + p * x); return sign * (1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*exp(-x*x)); -`,erf3=unaryKernelFunc2({opSnippet:ERF}),erfConfig2={kernelName:Erf,backendName:"webgl",kernelFunc:erf3},EXP="return exp(x);",exp3=unaryKernelFunc2({opSnippet:EXP,packedOpSnippet:EXP,cpuKernelImpl:expImplCPU}),expConfig2={kernelName:Exp,backendName:"webgl",kernelFunc:exp3};function expandDims4(args){let{inputs,attrs,backend:backend2}=args,{dim}=attrs,{input:input2}=inputs,inputRank=input2.shape.length,newShape=input2.shape.slice(),$dim=dim;return dim<0&&(util_exports.assert(-(inputRank+1)<=dim,()=>`Axis must be in the interval [${-(inputRank+1)}, ${inputRank}]`),$dim=inputRank+dim+1),newShape.splice($dim,0,1),reshape4({inputs:{x:input2},backend:backend2,attrs:{shape:newShape}})}var expandDimsConfig2={kernelName:ExpandDims,backendName:"webgl",kernelFunc:expandDims4},EXPM1="return exp(x) - 1.0;",expm13=unaryKernelFunc2({opSnippet:EXPM1,packedOpSnippet:EXPM1,cpuKernelImpl:expm1ImplCPU}),expm1Config2={kernelName:Expm1,backendName:"webgl",kernelFunc:expm13},FFTProgram=class{constructor(component,inputShape,inverse){this.variableNames=["real","imag"];let innerDim=inputShape[1];this.outputShape=inputShape;let exponentMultiplierSnippet=inverse?`2.0 * ${Math.PI}`:`-2.0 * ${Math.PI}`,resultDenominator=inverse?`${innerDim}.0`:"1.0",opString;if(component==="real")opString="return real * expR - imag * expI;";else if(component==="imag")opString="return real * expI + imag * expR;";else throw new Error(`FFT component must be either "real" or "imag", got ${component}.`);this.userCode=` - const float exponentMultiplier = ${exponentMultiplierSnippet}; +`,J7=Ye({opSnippet:Y7}),Z7={kernelName:Wo,backendName:"webgl",kernelFunc:J7},VS="return exp(x);",US=Ye({opSnippet:VS,packedOpSnippet:VS,cpuKernelImpl:Y8}),Q7={kernelName:Bs,backendName:"webgl",kernelFunc:US};function zv(e){let{inputs:t,attrs:n,backend:a}=e,{dim:r}=n,{input:s}=t,i=s.shape.length,o=s.shape.slice(),l=r;return r<0&&(k.assert(-(i+1)<=r,()=>`Axis must be in the interval [${-(i+1)}, ${i}]`),l=i+r+1),o.splice(l,0,1),xe({inputs:{x:s},backend:a,attrs:{shape:o}})}var eJ={kernelName:Uo,backendName:"webgl",kernelFunc:zv},GS="return exp(x) - 1.0;",tJ=Ye({opSnippet:GS,packedOpSnippet:GS,cpuKernelImpl:J8}),nJ={kernelName:Go,backendName:"webgl",kernelFunc:tJ},HS=class{constructor(e,t,n){this.variableNames=["real","imag"];let a=t[1];this.outputShape=t;let r=n?`2.0 * ${Math.PI}`:`-2.0 * ${Math.PI}`,s=n?`${a}.0`:"1.0",i;if(e==="real")i="return real * expR - imag * expI;";else if(e==="imag")i="return real * expI + imag * expR;";else throw new Error(`FFT component must be either "real" or "imag", got ${e}.`);this.userCode=` + const float exponentMultiplier = ${r}; float unaryOpComplex(float real, float expR, float imag, float expI) { - ${opString} + ${i} } float mulMatDFT(int batch, int index) { - float indexRatio = float(index) / float(${innerDim}); + float indexRatio = float(index) / float(${a}); float exponentMultiplierTimesIndexRatio = exponentMultiplier * indexRatio; float result = 0.0; - for (int i = 0; i < ${innerDim}; i++) { + for (int i = 0; i < ${a}; i++) { // x = (-2|2 * PI / N) * index * i; float x = exponentMultiplierTimesIndexRatio * float(i); float expR = cos(x); @@ -2844,7 +2844,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: float imag = getImag(batch, i); result += - unaryOpComplex(real, expR, imag, expI) / ${resultDenominator}; + unaryOpComplex(real, expR, imag, expI) / ${s}; } return result; @@ -2854,27 +2854,27 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: ivec2 coords = getOutputCoords(); setOutput(mulMatDFT(coords[0], coords[1])); } - `}};function fftImpl2(x,inverse,backend2){let xData=backend2.texData.get(x.dataId),inputSize=util_exports.sizeFromShape(x.shape),innerDimensionSize=x.shape[x.shape.length-1],batch=inputSize/innerDimensionSize,xShape=reshape4({inputs:{x},backend:backend2,attrs:{shape:[batch,innerDimensionSize]}}).shape,realProgram=new FFTProgram("real",xShape,inverse),imagProgram=new FFTProgram("imag",xShape,inverse),inputs=[{dataId:xData.complexTensorInfos.real.dataId,dtype:xData.complexTensorInfos.real.dtype,shape:xShape},{dataId:xData.complexTensorInfos.imag.dataId,dtype:xData.complexTensorInfos.imag.dtype,shape:xShape}],realPart=backend2.runWebGLProgram(realProgram,inputs,"float32"),imagPart=backend2.runWebGLProgram(imagProgram,inputs,"float32"),complexOutput=complex3({inputs:{real:realPart,imag:imagPart},backend:backend2});backend2.disposeIntermediateTensorInfo(realPart),backend2.disposeIntermediateTensorInfo(imagPart);let complexOutputReshaped=reshape4({inputs:{x:complexOutput},backend:backend2,attrs:{shape:x.shape}});return backend2.disposeIntermediateTensorInfo(complexOutputReshaped),complexOutputReshaped}function fft3(args){let{inputs,backend:backend2}=args,{input:input2}=inputs;return fftImpl2(input2,!1,backend2)}var fftConfig2={kernelName:FFT,backendName:"webgl",kernelFunc:fft3},FillProgram=class{constructor(shape,value){this.outputShape=[],this.variableNames=["x"],this.outputShape=shape,this.userCode=` + `}};function jS(e,t,n){let a=n.texData.get(e.dataId),r=k.sizeFromShape(e.shape),s=e.shape[e.shape.length-1],i=r/s,o=xe({inputs:{x:e},backend:n,attrs:{shape:[i,s]}}).shape,l=new HS("real",o,t),c=new HS("imag",o,t),u=[{dataId:a.complexTensorInfos.real.dataId,dtype:a.complexTensorInfos.real.dtype,shape:o},{dataId:a.complexTensorInfos.imag.dataId,dtype:a.complexTensorInfos.imag.dtype,shape:o}],p=n.runWebGLProgram(l,u,"float32"),d=n.runWebGLProgram(c,u,"float32"),h=ms({inputs:{real:p,imag:d},backend:n});n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(d);let m=xe({inputs:{x:h},backend:n,attrs:{shape:e.shape}});return n.disposeIntermediateTensorInfo(m),m}function aJ(e){let{inputs:t,backend:n}=e,{input:a}=t;return jS(a,!1,n)}var rJ={kernelName:Pd,backendName:"webgl",kernelFunc:aJ},sJ=class{constructor(e,t){this.outputShape=[],this.variableNames=["x"],this.outputShape=e,this.userCode=` uniform float value; void main() { // Input can be obtained from uniform value. setOutput(value); } - `}getCustomSetupFunc(value){return(gpgpu,webGLProgram)=>{this.valueLoc==null&&(this.valueLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"value")),gpgpu.gl.uniform1f(this.valueLoc,value)}}};function fill3(args){let{backend:backend2,attrs}=args,{shape,value}=attrs,{dtype}=attrs;if(dtype=dtype||util_exports.inferDtype(value),dtype==="string"){let values=util_exports.getArrayFromDType(dtype,util_exports.sizeFromShape(shape));return values.fill(value),backend2.makeTensorInfo(shape,dtype,values)}else{let program=new FillProgram(shape,value),customSetup=program.getCustomSetupFunc(value);return backend2.runWebGLProgram(program,[],dtype,customSetup)}}var fillConfig2={kernelName:Fill,backendName:"webgl",kernelFunc:fill3},FlipLeftRightProgram=class{constructor(imageShape){this.variableNames=["Image"],this.outputShape=[];let imageWidth=imageShape[2];this.outputShape=imageShape,this.userCode=` + `}getCustomSetupFunc(e){return(t,n)=>{this.valueLoc==null&&(this.valueLoc=t.getUniformLocationNoThrow(n,"value")),t.gl.uniform1f(this.valueLoc,e)}}};function Bv(e){let{backend:t,attrs:n}=e,{shape:a,value:r}=n,{dtype:s}=n;if(s=s||k.inferDtype(r),s==="string"){let i=k.getArrayFromDType(s,k.sizeFromShape(a));return i.fill(r),t.makeTensorInfo(a,s,i)}else{let i=new sJ(a,r),o=i.getCustomSetupFunc(r);return t.runWebGLProgram(i,[],s,o)}}var iJ={kernelName:pc,backendName:"webgl",kernelFunc:Bv},oJ=class{constructor(e){this.variableNames=["Image"],this.outputShape=[];let t=e[2];this.outputShape=e,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int x = coords[2]; - int coordX = ${imageWidth} - x; + int coordX = ${t} - x; float outputValue; - if(coordX >= 0 && coordX < ${imageWidth}) { + if(coordX >= 0 && coordX < ${t}) { outputValue = getImage(coords[0], coords[1], coordX, coords[3]); } else { outputValue = getImage(coords[0], coords[1], coords[2], coords[3]); } setOutput(outputValue); } - `}},flipLeftRightConfig2={kernelName:FlipLeftRight,backendName:"webgl",kernelFunc:({inputs,backend:backend2})=>{let{image:image3}=inputs,webglBackend=backend2,program=new FlipLeftRightProgram(image3.shape);return webglBackend.runWebGLProgram(program,[image3],image3.dtype)}},FLOOR="return floor(x);",floor3=unaryKernelFunc2({opSnippet:FLOOR,packedOpSnippet:FLOOR,cpuKernelImpl:floorImplCPU}),floorConfig2={kernelName:Floor,backendName:"webgl",kernelFunc:floor3},INT_DIV=` + `}},lJ={kernelName:Ho,backendName:"webgl",kernelFunc:({inputs:e,backend:t})=>{let{image:n}=e,a=t,r=new oJ(n.shape);return a.runWebGLProgram(r,[n],n.dtype)}},qS="return floor(x);",uJ=Ye({opSnippet:qS,packedOpSnippet:qS,cpuKernelImpl:Z8}),cJ={kernelName:Ws,backendName:"webgl",kernelFunc:uJ},pJ=` float s = sign(a) * sign(b); int ia = round(a); int ib = round(b); @@ -2884,7 +2884,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } else { return NAN; } -`,INT_DIV_PACKED=` +`,dJ=` ivec4 ia = round(a); ivec4 ib = round(b); bvec4 cond = notEqual(ib, ivec4(0)); @@ -2905,15 +2905,15 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: result[3] = idiv(ia[3], ib[3], s[3]); } return vec4(result); -`,floorDiv3=binaryKernelFunc2({opSnippet:INT_DIV,packedOpSnippet:INT_DIV_PACKED,dtype:"int32"}),floorDivConfig2={kernelName:FloorDiv,backendName:"webgl",kernelFunc:floorDiv3},FromPixelsProgram=class{constructor(outputShape){this.variableNames=["A"];let glsl=getGlslDifferences(),[height,width]=outputShape;this.outputShape=outputShape,this.userCode=` +`,hJ=sn({opSnippet:pJ,packedOpSnippet:dJ,dtype:"int32"}),mJ={kernelName:Vs,backendName:"webgl",kernelFunc:hJ},fJ=class{constructor(e){this.variableNames=["A"];let t=fn(),[n,a]=e;this.outputShape=e,this.userCode=` void main() { ivec3 coords = getOutputCoords(); int texR = coords[0]; int texC = coords[1]; int depth = coords[2]; - vec2 uv = (vec2(texC, texR) + halfCR) / vec2(${width}.0, ${height}.0); + vec2 uv = (vec2(texC, texR) + halfCR) / vec2(${a}.0, ${n}.0); - vec4 values = ${glsl.texture2D}(A, uv); + vec4 values = ${t.texture2D}(A, uv); float value; if (depth == 0) { value = values.r; @@ -2927,7 +2927,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: setOutput(floor(value * 255.0 + 0.5)); } - `}},FromPixelsPackedProgram=class{constructor(outputShape){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;let glsl=getGlslDifferences(),[height,width]=outputShape;this.outputShape=outputShape,this.userCode=` + `}},gJ=class{constructor(e){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;let t=fn(),[n,a]=e;this.outputShape=e,this.userCode=` void main() { ivec3 coords = getOutputCoords(); int texR = coords[0]; @@ -2942,8 +2942,8 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: depth = coords[2] + col; vec2 uv = (vec2(texC, texR) + halfCR) / - vec2(${width}.0, ${height}.0); - vec4 values = ${glsl.texture2D}(A, uv); + vec2(${a}.0, ${n}.0); + vec4 values = ${t.texture2D}(A, uv); float value; if (depth == 0) { value = values.r; @@ -2959,34 +2959,34 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } } - ${glsl.output} = result; + ${t.output} = result; } - `}},fromPixelsConfig={kernelName:FromPixels,backendName:"webgl",kernelFunc:fromPixels2},fromPixels2DContext2;function fromPixels2(args){let{inputs,backend:backend2,attrs}=args,{pixels}=inputs,{numChannels}=attrs,isVideo=typeof HTMLVideoElement!="undefined"&&pixels instanceof HTMLVideoElement,isImage=typeof HTMLImageElement!="undefined"&&pixels instanceof HTMLImageElement,isImageBitmap=typeof ImageBitmap!="undefined"&&pixels instanceof ImageBitmap,[width,height]=isVideo?[pixels.videoWidth,pixels.videoHeight]:[pixels.width,pixels.height],texShape=[height,width],outShape=[height,width,numChannels];(isImage||isVideo||isImageBitmap)&&(fromPixels2DContext2==null&&(fromPixels2DContext2=document.createElement("canvas").getContext("2d")),fromPixels2DContext2.canvas.width=width,fromPixels2DContext2.canvas.height=height,fromPixels2DContext2.drawImage(pixels,0,0,width,height),pixels=fromPixels2DContext2.canvas);let tempPixelHandle=backend2.makeTensorInfo(texShape,"int32");backend2.texData.get(tempPixelHandle.dataId).usage=TextureUsage.PIXELS,backend2.gpgpu.uploadPixelDataToTexture(backend2.getTexture(tempPixelHandle.dataId),pixels);let program=env().getBool("WEBGL_PACK")?new FromPixelsPackedProgram(outShape):new FromPixelsProgram(outShape),res=backend2.runWebGLProgram(program,[tempPixelHandle],"int32");return backend2.disposeData(tempPixelHandle.dataId),res}function fusedConv2d(args){let{inputs,backend:backend2,attrs}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad3,dataFormat,dilations,dimRoundingMode,activation:activation2,leakyreluAlpha}=attrs,$dataFormat=backend_util_exports.convertConv2DDataFormat(dataFormat),convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad3,dimRoundingMode,!1,$dataFormat),out,intermediates=[];if(convInfo.filterHeight===1&&convInfo.filterWidth===1&&convInfo.dilationHeight===1&&convInfo.dilationWidth===1&&convInfo.strideHeight===1&&convInfo.strideWidth===1&&(convInfo.padInfo.type==="SAME"||convInfo.padInfo.type==="VALID"))out=conv2dByMatMul({x,filter,convInfo,backend:backend2,bias,activation:activation2,preluActivationWeights,leakyreluAlpha});else if(env().getBool("WEBGL_CONV_IM2COL")&&x.shape[0]===1)out=conv2dWithIm2Row({x,filter,convInfo,backend:backend2,bias,activation:activation2,preluActivationWeights,leakyreluAlpha});else{let hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,hasLeakyreluAlpha=activation2==="leakyrelu",fusedActivation=activation2?mapActivationToShaderProgram(activation2,!1):null,program=new Conv2DProgram(convInfo,hasBias,fusedActivation,hasPreluActivationWeights,hasLeakyreluAlpha),inputs2=[x,filter];if(bias&&inputs2.push(bias),preluActivationWeights&&inputs2.push(preluActivationWeights),hasLeakyreluAlpha){let $leakyreluAlpha=backend2.makeTensorInfo([],"float32",util_exports.createScalarValue(leakyreluAlpha,"float32"));inputs2.push($leakyreluAlpha),intermediates.push($leakyreluAlpha)}out=backend2.runWebGLProgram(program,inputs2,"float32")}let outReshaped=reshape4({inputs:{x:out},backend:backend2,attrs:{shape:convInfo.outShape}});return intermediates.push(out),intermediates.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),outReshaped}var fusedConv2DConfig2={kernelName:FusedConv2D,backendName:"webgl",kernelFunc:fusedConv2d};function fusedDepthwiseConv2D2(args){let{inputs,backend:backend2,attrs}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad3,dilations,dimRoundingMode,activation:activation2,leakyreluAlpha}=attrs,intermediates=[],$dilations=dilations;$dilations==null&&($dilations=[1,1]),util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,$dilations),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${$dilations}'`);let convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,$dilations,pad3,dimRoundingMode,!0),shouldPackDepthwiseConv=env().getBool("WEBGL_PACK_DEPTHWISECONV")&&convInfo.strideWidth<=2&&convInfo.outChannels/convInfo.inChannels==1,fusedActivation=activation2?mapActivationToShaderProgram(activation2,shouldPackDepthwiseConv):null,programInputs=[x,filter],hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,hasLeakyreluAlpha=activation2==="leakyrelu";if(hasBias&&programInputs.push(bias),hasPreluActivationWeights&&programInputs.push(preluActivationWeights),hasLeakyreluAlpha){let $leakyreluAlpha=backend2.makeTensorInfo([],"float32",util_exports.createScalarValue(leakyreluAlpha,"float32"));programInputs.push($leakyreluAlpha),intermediates.push($leakyreluAlpha)}let program;shouldPackDepthwiseConv?program=new DepthwiseConvPacked2DProgram(convInfo,hasBias,fusedActivation,hasPreluActivationWeights,hasLeakyreluAlpha):program=new DepthwiseConv2DProgram(convInfo,hasBias,fusedActivation,hasPreluActivationWeights,hasLeakyreluAlpha);let result=backend2.runWebGLProgram(program,programInputs,"float32");return intermediates.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),result}var fusedDepthwiseConv2DConfig2={kernelName:FusedDepthwiseConv2D,backendName:"webgl",kernelFunc:fusedDepthwiseConv2D2},GatherNDProgram=class{constructor(sliceDim,strides,shape){this.sliceDim=sliceDim,this.strides=strides,this.variableNames=["x","indices"],this.outputShape=shape;let stridesType=getCoordsDataType(strides.length),dtype=getCoordsDataType(shape.length),strideString=this.sliceDim>1?"strides[j]":"strides";this.userCode=` - ${stridesType} strides = ${stridesType}(${this.strides}); + `}},bJ={kernelName:Yd,backendName:"webgl",kernelFunc:yJ},gu;function yJ(e){let{inputs:t,backend:n,attrs:a}=e,{pixels:r}=t,{numChannels:s}=a,i=typeof HTMLVideoElement!="undefined"&&r instanceof HTMLVideoElement,o=typeof HTMLImageElement!="undefined"&&r instanceof HTMLImageElement,l=typeof ImageBitmap!="undefined"&&r instanceof ImageBitmap,[c,u]=i?[r.videoWidth,r.videoHeight]:[r.width,r.height],p=[u,c],d=[u,c,s];(o||i||l)&&(gu==null&&(gu=document.createElement("canvas").getContext("2d")),gu.canvas.width=c,gu.canvas.height=u,gu.drawImage(r,0,0,c,u),r=gu.canvas);let h=n.makeTensorInfo(p,"int32");n.texData.get(h.dataId).usage=aa.PIXELS,n.gpgpu.uploadPixelDataToTexture(n.getTexture(h.dataId),r);let m=ee().getBool("WEBGL_PACK")?new gJ(d):new fJ(d),f=n.runWebGLProgram(m,[h],"int32");return n.disposeData(h.dataId),f}function xJ(e){let{inputs:t,backend:n,attrs:a}=e,{x:r,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:c,dataFormat:u,dilations:p,dimRoundingMode:d,activation:h,leakyreluAlpha:m}=a,f=_.convertConv2DDataFormat(u),g=_.computeConv2DInfo(r.shape,s.shape,l,p,c,d,!1,f),y,b=[];if(g.filterHeight===1&&g.filterWidth===1&&g.dilationHeight===1&&g.dilationWidth===1&&g.strideHeight===1&&g.strideWidth===1&&(g.padInfo.type==="SAME"||g.padInfo.type==="VALID"))y=RS({x:r,filter:s,convInfo:g,backend:n,bias:i,activation:h,preluActivationWeights:o,leakyreluAlpha:m});else if(ee().getBool("WEBGL_CONV_IM2COL")&&r.shape[0]===1)y=PS({x:r,filter:s,convInfo:g,backend:n,bias:i,activation:h,preluActivationWeights:o,leakyreluAlpha:m});else{let v=i!=null,N=o!=null,T=h==="leakyrelu",E=h?Vm(h,!1):null,A=new MS(g,v,E,N,T),$=[r,s];if(i&&$.push(i),o&&$.push(o),T){let O=n.makeTensorInfo([],"float32",k.createScalarValue(m,"float32"));$.push(O),b.push(O)}y=n.runWebGLProgram(A,$,"float32")}let x=xe({inputs:{x:y},backend:n,attrs:{shape:g.outShape}});return b.push(y),b.forEach(v=>n.disposeIntermediateTensorInfo(v)),x}var vJ={kernelName:vi,backendName:"webgl",kernelFunc:xJ};function wJ(e){let{inputs:t,backend:n,attrs:a}=e,{x:r,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:c,dilations:u,dimRoundingMode:p,activation:d,leakyreluAlpha:h}=a,m=[],f=u;f==null&&(f=[1,1]),k.assert(_.eitherStridesOrDilationsAreOne(l,f),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${l} and dilations '${f}'`);let g=_.computeConv2DInfo(r.shape,s.shape,l,f,c,p,!0),y=ee().getBool("WEBGL_PACK_DEPTHWISECONV")&&g.strideWidth<=2&&g.outChannels/g.inChannels==1,b=d?Vm(d,y):null,x=[r,s],v=i!=null,N=o!=null,T=d==="leakyrelu";if(v&&x.push(i),N&&x.push(o),T){let $=n.makeTensorInfo([],"float32",k.createScalarValue(h,"float32"));x.push($),m.push($)}let E;y?E=new WS(g,v,b,N,T):E=new BS(g,v,b,N,T);let A=n.runWebGLProgram(E,x,"float32");return m.forEach($=>n.disposeIntermediateTensorInfo($)),A}var kJ={kernelName:wi,backendName:"webgl",kernelFunc:wJ},IJ=class{constructor(e,t,n){this.sliceDim=e,this.strides=t,this.variableNames=["x","indices"],this.outputShape=n;let a=mt(t.length),r=mt(n.length),s=this.sliceDim>1?"strides[j]":"strides";this.userCode=` + ${a} strides = ${a}(${this.strides}); void main() { - ${dtype} coords = getOutputCoords(); + ${r} coords = getOutputCoords(); int flattenIndex = 0; for (int j = 0; j < ${this.sliceDim}; j++) { int index = round(getIndices(coords[0], j)); - flattenIndex += index * ${strideString}; + flattenIndex += index * ${s}; } setOutput(getX(flattenIndex, coords[1])); } - `}};function gatherNd2(args){let{inputs,backend:backend2}=args,{params,indices}=inputs,indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],[resultShape,numSlices,sliceSize,strides]=backend_util_exports.prepareAndValidate(params,indices),flattenIndices=reshape4({inputs:{x:indices},backend:backend2,attrs:{shape:[numSlices,sliceRank]}}),flattenX=reshape4({inputs:{x:params},backend:backend2,attrs:{shape:[util_exports.sizeFromShape(params.shape)/sliceSize,sliceSize]}}),program=new GatherNDProgram(sliceRank,strides,[numSlices,sliceSize]),res=backend2.runWebGLProgram(program,[flattenX,flattenIndices],flattenX.dtype),reshaped=reshape4({inputs:{x:res},backend:backend2,attrs:{shape:resultShape}});return backend2.disposeIntermediateTensorInfo(flattenIndices),backend2.disposeIntermediateTensorInfo(flattenX),backend2.disposeIntermediateTensorInfo(res),reshaped}var gatherNdConfig2={kernelName:GatherNd,backendName:"webgl",kernelFunc:gatherNd2},GatherProgram=class{constructor(aShape,outputShape){this.variableNames=["A","indices"],this.outputShape=outputShape,this.rank=outputShape.length;let dtype=getCoordsDataType(this.rank),sourceCoords=getSourceCoords2(aShape,2);this.userCode=` + `}};function NJ(e){let{inputs:t,backend:n}=e,{params:a,indices:r}=t,s=r.shape,i=s[s.length-1],[o,l,c,u]=_.prepareAndValidate(a,r),p=xe({inputs:{x:r},backend:n,attrs:{shape:[l,i]}}),d=xe({inputs:{x:a},backend:n,attrs:{shape:[k.sizeFromShape(a.shape)/c,c]}}),h=new IJ(i,u,[l,c]),m=n.runWebGLProgram(h,[d,p],d.dtype),f=xe({inputs:{x:m},backend:n,attrs:{shape:o}});return n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(m),f}var TJ={kernelName:qo,backendName:"webgl",kernelFunc:NJ},CJ=class{constructor(e,t){this.variableNames=["A","indices"],this.outputShape=t,this.rank=t.length;let n=mt(this.rank),a=SJ(e,2);this.userCode=` void main() { - ${dtype} resRC = getOutputCoords(); - setOutput(getA(${sourceCoords})); + ${n} resRC = getOutputCoords(); + setOutput(getA(${a})); } - `}};function getSourceCoords2(aShape,axis){let currentCoords=["resRC.x","resRC.y","resRC.z","resRC.w"],sourceCoords=[];for(let i=0;ibackend2.disposeIntermediateTensorInfo(t)),backend2.makeTensorInfo(shapeInfo.outputShape,outBuf.dtype,outBuf.values)}let program=new GatherProgram(flattenX.shape,flattenOutputShape),res=backend2.runWebGLProgram(program,[flattenX,flattenIndex],flattenX.dtype);toDispose.push(res);let reshaped=reshape4({inputs:{x:res},backend:backend2,attrs:{shape:shapeInfo.outputShape}});return toDispose.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),reshaped}var gatherV2Config2={kernelName:GatherV2,backendName:"webgl",kernelFunc:gatherV22},GREATER="return float(a > b);",GREATER_PACKED=` + `}};function SJ(e,t){let n=["resRC.x","resRC.y","resRC.z","resRC.w"],a=[];for(let r=0;rn.disposeIntermediateTensorInfo(N)),n.makeTensorInfo(c.outputShape,v.dtype,v.values)}let f=new CJ(d.shape,m),g=n.runWebGLProgram(f,[d,h],d.dtype);p.push(g);let y=xe({inputs:{x:g},backend:n,attrs:{shape:c.outputShape}});return p.forEach(b=>n.disposeIntermediateTensorInfo(b)),y}var _J={kernelName:jo,backendName:"webgl",kernelFunc:EJ},FJ="return float(a > b);",AJ=` return vec4(greaterThan(a, b)); -`,greater4=binaryKernelFunc2({opSnippet:GREATER,packedOpSnippet:GREATER_PACKED,cpuKernelImpl:greaterImplCPU,dtype:"bool"}),greaterConfig2={kernelName:Greater,backendName:"webgl",kernelFunc:greater4},GREATER_EQUAL="return float(a >= b);",GREATER_EQUAL_PACKED=` +`,$J=sn({opSnippet:FJ,packedOpSnippet:AJ,cpuKernelImpl:eK,dtype:"bool"}),DJ={kernelName:Ko,backendName:"webgl",kernelFunc:$J},MJ="return float(a >= b);",RJ=` return vec4(greaterThanEqual(a, b)); -`,greaterEqual3=binaryKernelFunc2({opSnippet:GREATER_EQUAL,packedOpSnippet:GREATER_EQUAL_PACKED,dtype:"bool"}),greaterEqualConfig2={kernelName:GreaterEqual,backendName:"webgl",kernelFunc:greaterEqual3};function ifft3(args){let{inputs,backend:backend2}=args,{input:input2}=inputs;return fftImpl2(input2,!0,backend2)}var ifftConfig2={kernelName:IFFT,backendName:"webgl",kernelFunc:ifft3},IS_FINITE="return float(!isnan(x) && !isinf(x));",isFinite4=unaryKernelFunc2({opSnippet:IS_FINITE,dtype:"bool"}),isFiniteConfig2={kernelName:IsFinite,backendName:"webgl",kernelFunc:isFinite4},IS_INF="return float(isinf(x));",isInf3=unaryKernelFunc2({opSnippet:IS_INF,dtype:"bool"}),isInfConfig2={kernelName:IsInf,backendName:"webgl",kernelFunc:isInf3},IS_NAN="return float(isnan(x));",isNaN4=unaryKernelFunc2({opSnippet:IS_NAN,dtype:"bool"}),isNaNConfig2={kernelName:IsNan,backendName:"webgl",kernelFunc:isNaN4},LESS="return float(a < b);",LESS_PACKED=` +`,PJ=sn({opSnippet:MJ,packedOpSnippet:RJ,dtype:"bool"}),OJ={kernelName:Gs,backendName:"webgl",kernelFunc:PJ};function LJ(e){let{inputs:t,backend:n}=e,{input:a}=t;return jS(a,!0,n)}var zJ={kernelName:Od,backendName:"webgl",kernelFunc:LJ},BJ="return float(!isnan(x) && !isinf(x));",WJ=Ye({opSnippet:BJ,dtype:"bool"}),VJ={kernelName:Yo,backendName:"webgl",kernelFunc:WJ},UJ="return float(isinf(x));",GJ=Ye({opSnippet:UJ,dtype:"bool"}),HJ={kernelName:Jo,backendName:"webgl",kernelFunc:GJ},jJ="return float(isnan(x));",qJ=Ye({opSnippet:jJ,dtype:"bool"}),KJ={kernelName:Zo,backendName:"webgl",kernelFunc:qJ},XJ="return float(a < b);",YJ=` return vec4(lessThan(a, b)); -`,less4=binaryKernelFunc2({opSnippet:LESS,packedOpSnippet:LESS_PACKED,cpuKernelImpl:lessImplCPU,dtype:"bool"}),lessConfig2={kernelName:Less,backendName:"webgl",kernelFunc:less4},LESS_EQUAL="return float(a <= b);",LESS_EQUAL_PACKED=` +`,JJ=sn({opSnippet:XJ,packedOpSnippet:YJ,cpuKernelImpl:tK,dtype:"bool"}),ZJ={kernelName:Qo,backendName:"webgl",kernelFunc:JJ},QJ="return float(a <= b);",eZ=` return vec4(lessThanEqual(a, b)); -`,lessEqual3=binaryKernelFunc2({opSnippet:LESS_EQUAL,packedOpSnippet:LESS_EQUAL_PACKED,dtype:"bool"}),lessEqualConfig2={kernelName:LessEqual,backendName:"webgl",kernelFunc:lessEqual3};function linSpace2(args){let{backend:backend2,attrs}=args,{start,stop,num}=attrs,outVals=linSpaceImplCPU(start,stop,num);return backend2.makeTensorInfo([outVals.length],"float32",outVals)}var linSpaceConfig2={kernelName:LinSpace,backendName:"webgl",kernelFunc:linSpace2},LOG=`if (x < 0.0) return NAN; - return log(x);`,LOG_PACKED=` +`,tZ=sn({opSnippet:QJ,packedOpSnippet:eZ,dtype:"bool"}),nZ={kernelName:el,backendName:"webgl",kernelFunc:tZ};function aZ(e){let{backend:t,attrs:n}=e,{start:a,stop:r,num:s}=n,i=nK(a,r,s);return t.makeTensorInfo([i.length],"float32",i)}var rZ={kernelName:zd,backendName:"webgl",kernelFunc:aZ},sZ=`if (x < 0.0) return NAN; + return log(x);`,iZ=` vec4 result = log(x); vec4 isNaN = vec4(lessThan(x, vec4(0.0))); result.r = isNaN.r == 1.0 ? NAN : result.r; @@ -2995,16 +2995,16 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: result.a = isNaN.a == 1.0 ? NAN : result.a; return result; -`,log4=unaryKernelFunc2({opSnippet:LOG,packedOpSnippet:LOG_PACKED,cpuKernelImpl:logImplCPU}),logConfig2={kernelName:Log,backendName:"webgl",kernelFunc:log4},LOG1P="return log(1.0 + x);",log1p3=unaryKernelFunc2({opSnippet:LOG1P}),log1pConfig2={kernelName:Log1p,backendName:"webgl",kernelFunc:log1p3},LOGICAL_AND="return float(a >= 1.0 && b >= 1.0);",LOGICAL_AND_PACKED=` +`,oZ=Ye({opSnippet:sZ,packedOpSnippet:iZ,cpuKernelImpl:aK}),lZ={kernelName:js,backendName:"webgl",kernelFunc:oZ},uZ="return log(1.0 + x);",cZ=Ye({opSnippet:uZ}),pZ={kernelName:tl,backendName:"webgl",kernelFunc:cZ},dZ="return float(a >= 1.0 && b >= 1.0);",hZ=` return vec4( vec4(greaterThanEqual(a, vec4(1.0))) * vec4(greaterThanEqual(b, vec4(1.0)))); -`,logicalAnd3=binaryKernelFunc2({opSnippet:LOGICAL_AND,packedOpSnippet:LOGICAL_AND_PACKED,dtype:"bool"}),logicalAndConfig2={kernelName:LogicalAnd,backendName:"webgl",kernelFunc:logicalAnd3},LOGICAL_NOT="return float(!(x >= 1.0));",logicalNot3=unaryKernelFunc2({opSnippet:LOGICAL_NOT}),logicalNotConfig2={kernelName:LogicalNot,backendName:"webgl",kernelFunc:logicalNot3},LOGICAL_OR="return float(a >= 1.0 || b >= 1.0);",LOGICAL_OR_PACKED=` +`,mZ=sn({opSnippet:dZ,packedOpSnippet:hZ,dtype:"bool"}),fZ={kernelName:nl,backendName:"webgl",kernelFunc:mZ},gZ="return float(!(x >= 1.0));",yZ=Ye({opSnippet:gZ}),bZ={kernelName:dc,backendName:"webgl",kernelFunc:yZ},xZ="return float(a >= 1.0 || b >= 1.0);",vZ=` return min( vec4(greaterThanEqual(a, vec4(1.0))) + vec4(greaterThanEqual(b, vec4(1.0))), vec4(1.0)); -`,logicalOr3=binaryKernelFunc2({opSnippet:LOGICAL_OR,packedOpSnippet:LOGICAL_OR_PACKED,dtype:"bool"}),logicalOrConfig2={kernelName:LogicalOr,backendName:"webgl",kernelFunc:logicalOr3},LRNProgram=class{constructor(xShape,radius,bias,alpha,beta){this.variableNames=["x"],this.outputShape=[];let rad=radius,maxD=xShape[3]-1;this.outputShape=xShape;let powOperator,basis=`float(${bias}) + float(${alpha}) * sum`;beta===.5?powOperator=`inversesqrt(${basis})`:beta===1?powOperator=`1.0/(${basis})`:powOperator=`exp(log(${basis}) * float(-${beta}));`,this.userCode=` +`,wZ=sn({opSnippet:xZ,packedOpSnippet:vZ,dtype:"bool"}),kZ={kernelName:hc,backendName:"webgl",kernelFunc:wZ},IZ=class{constructor(e,t,n,a,r){this.variableNames=["x"],this.outputShape=[];let s=t,i=e[3]-1;this.outputShape=e;let o,l=`float(${n}) + float(${a}) * sum`;r===.5?o=`inversesqrt(${l})`:r===1?o=`1.0/(${l})`:o=`exp(log(${l}) * float(-${r}));`,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords[0]; @@ -3013,17 +3013,17 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: int d = coords[3]; float x = getX(b, r, c, d); float sum = 0.0; - for (int j = -${rad}; j <= ${rad}; j++) { + for (int j = -${s}; j <= ${s}; j++) { int idx = d + j; - if (idx >= 0 && idx <= ${maxD}) { + if (idx >= 0 && idx <= ${i}) { float z = getX(b, r, c, idx); sum += z * z; } } - float val = x * ${powOperator}; + float val = x * ${o}; setOutput(val); } - `}},LRNPackedProgram=class{constructor(xShape,radius,bias,alpha,beta){this.variableNames=["x"],this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0;let rad=radius,maxD=xShape[3]-1;this.outputShape=xShape;let powOperator,basis=`float(${bias}) + float(${alpha}) * sum`;beta===.5?powOperator=`inversesqrt(${basis})`:beta===1?powOperator=`1.0/(${basis})`:powOperator=`exp(log(${basis}) * float(-${beta}));`,this.userCode=` + `}},NZ=class{constructor(e,t,n,a,r){this.variableNames=["x"],this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0;let s=t,i=e[3]-1;this.outputShape=e;let o,l=`float(${n}) + float(${a}) * sum`;r===.5?o=`inversesqrt(${l})`:r===1?o=`1.0/(${l})`:o=`exp(log(${l}) * float(-${r}));`,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords.x; @@ -3047,7 +3047,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: getChannel(xFragAtOutputCoords, vec2(c + 1, d + 1)) : 0.0 ); - int firstChannel = d - ${rad}; + int firstChannel = d - ${s}; vec2 cache = vec2(0.); if(firstChannel >= 0){ vec4 firstChannelFrag = getX(b, r, c, firstChannel); @@ -3058,10 +3058,10 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } ivec2 depth = ivec2(d, d + 1); - for (int j = - ${rad}; j <= ${rad}; j++) { + for (int j = - ${s}; j <= ${s}; j++) { ivec2 idx = depth + j; bvec2 aboveLowerBound = greaterThanEqual(idx, ivec2(0)); - bvec2 belowUpperBound = lessThanEqual(idx, ivec2(${maxD})); + bvec2 belowUpperBound = lessThanEqual(idx, ivec2(${i})); bool depthInRange = aboveLowerBound.x && belowUpperBound.x; bool depthPlusOneInRange = aboveLowerBound.y && belowUpperBound.y; @@ -3082,10 +3082,10 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: sum += z * z; } } - vec4 result = xAtOutputCoords * ${powOperator}; + vec4 result = xAtOutputCoords * ${o}; setOutput(result); } - `}},lrn=args=>{let{inputs,backend:backend2,attrs}=args,{x}=inputs,{depthRadius,bias,alpha,beta}=attrs,program=env().getBool("WEBGL_PACK_NORMALIZATION")?new LRNPackedProgram(x.shape,depthRadius,bias,alpha,beta):new LRNProgram(x.shape,depthRadius,bias,alpha,beta);return backend2.runWebGLProgram(program,[x],x.dtype)},LRNConfig={kernelName:LRN,backendName:"webgl",kernelFunc:lrn},LRNGradProgram=class{constructor(inputShape,depthRadius,bias,alpha,beta){this.variableNames=["inputImage","outputImage","dy"],this.outputShape=[],this.outputShape=inputShape,this.depth=inputShape[3],this.depthRadius=depthRadius,this.bias=bias,this.alpha=alpha,this.beta=beta,this.userCode=` + `}},TZ=e=>{let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{depthRadius:s,bias:i,alpha:o,beta:l}=a,c=ee().getBool("WEBGL_PACK_NORMALIZATION")?new NZ(r.shape,s,i,o,l):new IZ(r.shape,s,i,o,l);return n.runWebGLProgram(c,[r],r.dtype)},SZ={kernelName:mc,backendName:"webgl",kernelFunc:TZ},CZ=class{constructor(e,t,n,a,r){this.variableNames=["inputImage","outputImage","dy"],this.outputShape=[],this.outputShape=e,this.depth=e[3],this.depthRadius=t,this.bias=n,this.alpha=a,this.beta=r,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords[0]; @@ -3094,9 +3094,9 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: float result = 0.0; for (int d = 0; d < ${this.depth}; ++d) { - int depthBegin = int(max(0.0, float(d - ${depthRadius}))); + int depthBegin = int(max(0.0, float(d - ${t}))); int depthEnd = int(min(float(${this.depth}), - float(d + ${depthRadius} + 1))); + float(d + ${t} + 1))); const int MIN_DEPTH_BEGIN = 0; const int MAX_DEPTH_END = ${this.depth}; @@ -3114,19 +3114,19 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } } - norm = float(${alpha}) * norm + float(${bias}); + norm = float(${a}) * norm + float(${n}); for(int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k){ if (k < depthBegin){ continue; } else if (k >= depthBegin && k < depthEnd){ - float dyi = -2.0 * float(${alpha}) - * float(${beta}) + float dyi = -2.0 * float(${a}) + * float(${r}) * getInputImage(b ,r ,c, k) * getOutputImage(b, r, c, d) / norm; if (k == d) { - dyi += pow(norm, -1.0 * ${beta}); + dyi += pow(norm, -1.0 * ${r}); } if (k == coords[3]) { dyi *= getDy(b, r, c, d); @@ -3140,15 +3140,15 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(result); } - `}},lrnGrad=args=>{let{inputs,backend:backend2,attrs}=args,{x,y,dy}=inputs,{depthRadius,bias,alpha,beta}=attrs,program=new LRNGradProgram(x.shape,depthRadius,bias,alpha,beta);return backend2.runWebGLProgram(program,[x,y,dy],x.dtype)},LRNGradConfig={kernelName:LRNGrad,backendName:"webgl",kernelFunc:lrnGrad};function maxImpl2(x,reduceShape,outShape,backend2){let inSize=util_exports.sizeFromShape(reduceShape),batchSize=util_exports.sizeFromShape(x.shape)/inSize,reshapedInput=reshape4({inputs:{x},attrs:{shape:[batchSize,inSize]},backend:backend2}),reduced=reduce(reshapedInput,x.dtype,"max",backend2),reshapedOutput=reshape4({inputs:{x:reduced},attrs:{shape:outShape},backend:backend2});return backend2.disposeIntermediateTensorInfo(reshapedInput),backend2.disposeIntermediateTensorInfo(reduced),reshapedOutput}function max4(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{reductionIndices,keepDims}=attrs,xRank=x.shape.length,origAxes=util_exports.parseAxisParam(reductionIndices,x.shape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),maxInputIsTransposed=permutedAxes!=null,shouldExecuteOnCPU=backend2.shouldExecuteOnCPU([x]),maxInput=x;if(maxInputIsTransposed){if(shouldExecuteOnCPU){let values=backend2.texData.get(maxInput.dataId).values,newShape=new Array(xRank);for(let i=0;i{let{inputs:t,backend:n,attrs:a}=e,{x:r,y:s,dy:i}=t,{depthRadius:o,bias:l,alpha:c,beta:u}=a,p=new CZ(r.shape,o,l,c,u);return n.runWebGLProgram(p,[r,s,i],r.dtype)},_Z={kernelName:Bd,backendName:"webgl",kernelFunc:EZ};function FZ(e,t,n,a){let r=k.sizeFromShape(t),s=k.sizeFromShape(e.shape)/r,i=xe({inputs:{x:e},attrs:{shape:[s,r]},backend:a}),o=Ki(i,e.dtype,"max",a),l=xe({inputs:{x:o},attrs:{shape:n},backend:a});return a.disposeIntermediateTensorInfo(i),a.disposeIntermediateTensorInfo(o),l}function KS(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{reductionIndices:s,keepDims:i}=a,o=r.shape.length,l=k.parseAxisParam(s,r.shape),c=l,u=_.getAxesPermutation(c,o),p=u!=null,d=n.shouldExecuteOnCPU([r]),h=r;if(p){if(d){let b=n.texData.get(h.dataId).values,x=new Array(o);for(let T=0;T`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad3,dimRoundingMode);if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))return identity3({inputs:{x},backend:backend2});let maxPoolProgram=new Pool2DProgram(convInfo,"max",!1);return backend2.runWebGLProgram(maxPoolProgram,[x],x.dtype)}var maxPoolConfig2={kernelName:MaxPool,backendName:"webgl",kernelFunc:maxPool3};function maxPool3d2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{filterSize,strides,pad:pad3,dataFormat,dimRoundingMode}=attrs,dilations=[1,1,1],convInfo=backend_util_exports.computePool3DInfo(x.shape,filterSize,strides,dilations,pad3,dimRoundingMode,dataFormat),maxPoolProgram=new Pool3DProgram(convInfo,"max",!1);return backend2.runWebGLProgram(maxPoolProgram,[x],x.dtype)}var maxPool3DConfig2={kernelName:MaxPool3D,backendName:"webgl",kernelFunc:maxPool3d2},MaxPool2DBackpropProgram=class{constructor(convInfo){this.variableNames=["dy","maxPos"],this.outputShape=convInfo.inShape;let strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,lastIndex=effectiveFilterHeight*effectiveFilterWidth-1;this.userCode=` - const ivec2 pads = ivec2(${padTop}, ${padLeft}); +`,MZ=sn({opSnippet:$Z,packedOpSnippet:DZ,cpuKernelImpl:sK}),RZ={kernelName:Ks,backendName:"webgl",kernelFunc:MZ};function PZ(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t;bp(r,"maxPool");let{filterSize:s,strides:i,pad:o,dimRoundingMode:l}=a,c=1;k.assert(_.eitherStridesOrDilationsAreOne(i,c),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${c}'`);let u=_.computePool2DInfo(r.shape,s,i,c,o,l);if(u.filterWidth===1&&u.filterHeight===1&&k.arraysEqual(u.inShape,u.outShape))return Wn({inputs:{x:r},backend:n});let p=new wp(u,"max",!1);return n.runWebGLProgram(p,[r],r.dtype)}var OZ={kernelName:Xs,backendName:"webgl",kernelFunc:PZ};function LZ(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{filterSize:s,strides:i,pad:o,dataFormat:l,dimRoundingMode:c}=a,u=[1,1,1],p=_.computePool3DInfo(r.shape,s,i,u,o,c,l),d=new Pv(p,"max",!1);return n.runWebGLProgram(d,[r],r.dtype)}var zZ={kernelName:fc,backendName:"webgl",kernelFunc:LZ},BZ=class{constructor(e){this.variableNames=["dy","maxPos"],this.outputShape=e.inShape;let t=e.strideHeight,n=e.strideWidth,a=e.dilationHeight,r=e.effectiveFilterHeight,s=e.effectiveFilterWidth,i=r-1-e.padInfo.top,o=s-1-e.padInfo.left,l=r*s-1;this.userCode=` + const ivec2 pads = ivec2(${i}, ${o}); void main() { ivec4 coords = getOutputCoords(); @@ -3162,30 +3162,30 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d). // ? = to be determined. : = across all values in that axis. float dotProd = 0.0; - for (int wR = 0; wR < ${effectiveFilterHeight}; - wR += ${dilationHeight}) { - float dyR = float(dyRCorner + wR) / ${strideHeight}.0; + for (int wR = 0; wR < ${r}; + wR += ${a}) { + float dyR = float(dyRCorner + wR) / ${t}.0; - if (dyR < 0.0 || dyR >= ${convInfo.outHeight}.0 || fract(dyR) > 0.0) { + if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || fract(dyR) > 0.0) { continue; } int idyR = int(dyR); - for (int wC = 0; wC < ${effectiveFilterWidth}; wC++) { - float dyC = float(dyCCorner + wC) / ${strideWidth}.0; + for (int wC = 0; wC < ${s}; wC++) { + float dyC = float(dyCCorner + wC) / ${n}.0; - if (dyC < 0.0 || dyC >= ${convInfo.outWidth}.0 || + if (dyC < 0.0 || dyC >= ${e.outWidth}.0 || fract(dyC) > 0.0) { continue; } int idyC = int(dyC); float dyValue = getDy(b, idyR, idyC, d); - int maxPosValue = ${lastIndex} - int(getMaxPos(b, idyR, idyC, d)); + int maxPosValue = ${l} - int(getMaxPos(b, idyR, idyC, d)); // Get the current value, check it against the value from the // position matrix. - int curPosValue = wR * ${effectiveFilterWidth} + wC; + int curPosValue = wR * ${s} + wC; float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0); dotProd += dyValue * mask; @@ -3193,8 +3193,8 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(dotProd); } - `}},MaxPool3DBackpropProgram=class{constructor(convInfo){this.variableNames=["dy","maxPos"],this.outputShape=convInfo.inShape;let strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=effectiveFilterDepth-1-convInfo.padInfo.front,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,lastIndex=effectiveFilterDepth*effectiveFilterHeight*effectiveFilterWidth-1;this.userCode=` - const ivec3 pads = ivec3(${padFront}, ${padTop}, ${padLeft}); + `}},WZ=class{constructor(e){this.variableNames=["dy","maxPos"],this.outputShape=e.inShape;let t=e.strideDepth,n=e.strideHeight,a=e.strideWidth,r=e.dilationDepth,s=e.dilationHeight,i=e.dilationWidth,o=e.effectiveFilterDepth,l=e.effectiveFilterHeight,c=e.effectiveFilterWidth,u=o-1-e.padInfo.front,p=l-1-e.padInfo.top,d=c-1-e.padInfo.left,h=o*l*c-1;this.userCode=` + const ivec3 pads = ivec3(${u}, ${p}, ${d}); void main() { ivec5 coords = getOutputCoords(); @@ -3211,44 +3211,44 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // ? = to be determined. : = across all values in that axis. float dotProd = 0.0; - for (int wD = 0; wD < ${effectiveFilterDepth}; - wD += ${dilationDepth}) { - float dyD = float(dyDCorner + wD) / ${strideDepth}.0; + for (int wD = 0; wD < ${o}; + wD += ${r}) { + float dyD = float(dyDCorner + wD) / ${t}.0; - if (dyD < 0.0 || dyD >= ${convInfo.outDepth}.0 || fract(dyD) > 0.0) { + if (dyD < 0.0 || dyD >= ${e.outDepth}.0 || fract(dyD) > 0.0) { continue; } int idyD = int(dyD); - for (int wR = 0; wR < ${effectiveFilterHeight}; - wR += ${dilationHeight}) { - float dyR = float(dyRCorner + wR) / ${strideHeight}.0; + for (int wR = 0; wR < ${l}; + wR += ${s}) { + float dyR = float(dyRCorner + wR) / ${n}.0; - if (dyR < 0.0 || dyR >= ${convInfo.outHeight}.0 || + if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || fract(dyR) > 0.0) { continue; } int idyR = int(dyR); - for (int wC = 0; wC < ${effectiveFilterWidth}; - wC += ${dilationWidth}) { - float dyC = float(dyCCorner + wC) / ${strideWidth}.0; + for (int wC = 0; wC < ${c}; + wC += ${i}) { + float dyC = float(dyCCorner + wC) / ${a}.0; - if (dyC < 0.0 || dyC >= ${convInfo.outWidth}.0 || + if (dyC < 0.0 || dyC >= ${e.outWidth}.0 || fract(dyC) > 0.0) { continue; } int idyC = int(dyC); float dyValue = getDy(batch, idyD, idyR, idyC, ch); - int maxPosValue = ${lastIndex} - + int maxPosValue = ${h} - int(getMaxPos(batch, idyD, idyR, idyC, ch)); // Get the current value, check it against the value from the // position matrix. int curPosValue = - wD * ${effectiveFilterHeight} * ${effectiveFilterWidth} + - wR * ${effectiveFilterWidth} + wC; + wD * ${l} * ${c} + + wR * ${c} + wC; float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0); dotProd += dyValue * mask; @@ -3257,105 +3257,105 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(dotProd); } - `}};function maxPool3DGrad2(args){let{inputs,backend:backend2,attrs}=args,{dy,input:input2}=inputs,x=input2,{filterSize,strides,pad:pad3,dimRoundingMode}=attrs,dilations=[1,1,1],convInfo=backend_util_exports.computePool3DInfo(x.shape,filterSize,strides,dilations,pad3,dimRoundingMode),maxPool3dPositionsProgram=new Pool3DProgram(convInfo,"max",!0),maxPool3dPositions2=backend2.runWebGLProgram(maxPool3dPositionsProgram,[x],x.dtype),maxPoolBackpropProgram=new MaxPool3DBackpropProgram(convInfo),result=backend2.runWebGLProgram(maxPoolBackpropProgram,[dy,maxPool3dPositions2],x.dtype);return backend2.disposeIntermediateTensorInfo(maxPool3dPositions2),result}var maxPoolGrad3DConfig={kernelName:MaxPool3DGrad,backendName:"webgl",kernelFunc:maxPool3DGrad2};function maxPoolGrad3(args){let{inputs,backend:backend2,attrs}=args,{dy,input:input2,output}=inputs,x=input2;assertNotComplex2([input2,output],"maxPoolGrad");let{filterSize,strides,pad:pad3,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad3,dimRoundingMode),getPositions=!0,maxPoolPositionsProgram=new Pool2DProgram(convInfo,"max",getPositions),maxPoolPositions2=backend2.runWebGLProgram(maxPoolPositionsProgram,[x],x.dtype),maxPoolBackPropProgram=new MaxPool2DBackpropProgram(convInfo),result=backend2.runWebGLProgram(maxPoolBackPropProgram,[dy,maxPoolPositions2],x.dtype);return backend2.disposeIntermediateTensorInfo(maxPoolPositions2),result}var maxPoolGradConfig3={kernelName:MaxPoolGrad,backendName:"webgl",kernelFunc:maxPoolGrad3};function maxPoolWithArgmaxImpl2(x,includeBatchInIndex,convInfo,backend2){let program=new Pool2DProgram(convInfo,"max",!1),poolOutput=backend2.runWebGLProgram(program,[x],"float32");program=new Pool2DProgram(convInfo,"max",!0,!0,includeBatchInIndex);let indexOutput=backend2.runWebGLProgram(program,[x],"float32");return[poolOutput,indexOutput]}var maxPoolWithArgmaxConfig2={kernelName:MaxPoolWithArgmax,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend2})=>{let{x}=inputs,{filterSize,strides,pad:pad3,includeBatchInIndex}=attrs,webglBackend=backend2;util_exports.assert(x.shape.length===4,()=>`Error in maxPool: input must be rank 4 but got rank ${x.shape.length}.`);let dilations=[1,1];util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad3),[result,indexes]=maxPoolWithArgmaxImpl2(x,includeBatchInIndex,convInfo,webglBackend);return[result,indexes]}};function meanImpl(x,reduceShape,outShape,backend2){let inSize=util_exports.sizeFromShape(reduceShape),batchSize=util_exports.sizeFromShape(x.shape)/inSize,reshapedInput=reshape4({inputs:{x},attrs:{shape:[batchSize,inSize]},backend:backend2}),reduced=reduce(reshapedInput,"float32","mean",backend2),reshapedOutput=reshape4({inputs:{x:reduced},attrs:{shape:outShape},backend:backend2});return backend2.disposeIntermediateTensorInfo(reshapedInput),backend2.disposeIntermediateTensorInfo(reduced),reshapedOutput}var meanConfig2={kernelName:Mean,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend2})=>{let{x}=inputs,{keepDims,axis}=attrs,webglBackend=backend2,xRank=x.shape.length,origAxes=util_exports.parseAxisParam(axis,x.shape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),meanInputIsTransposed=permutedAxes!=null,shouldExecuteOnCPU=webglBackend.shouldExecuteOnCPU([x]),intermediates=[],meanInput=x;if(meanInputIsTransposed){if(shouldExecuteOnCPU){let values=webglBackend.texData.get(meanInput.dataId).values,newShape=new Array(xRank);for(let i=0;i{let{x:a}=e,{filterSize:r,strides:s,pad:i,includeBatchInIndex:o}=t,l=n;k.assert(a.shape.length===4,()=>`Error in maxPool: input must be rank 4 but got rank ${a.shape.length}.`);let c=[1,1];k.assert(_.eitherStridesOrDilationsAreOne(s,c),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${s} and dilations '${c}'`);let u=_.computePool2DInfo(a.shape,r,s,c,i),[p,d]=jZ(a,o,u,l);return[p,d]}};function KZ(e,t,n,a){let r=k.sizeFromShape(t),s=k.sizeFromShape(e.shape)/r,i=xe({inputs:{x:e},attrs:{shape:[s,r]},backend:a}),o=Ki(i,"float32","mean",a),l=xe({inputs:{x:o},attrs:{shape:n},backend:a});return a.disposeIntermediateTensorInfo(i),a.disposeIntermediateTensorInfo(o),l}var XZ={kernelName:Ys,backendName:"webgl",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{x:a}=e,{keepDims:r,axis:s}=t,i=n,o=a.shape.length,l=k.parseAxisParam(s,a.shape),c=l,u=_.getAxesPermutation(c,o),p=u!=null,d=i.shouldExecuteOnCPU([a]),h=[],m=a;if(p){if(d){let x=i.texData.get(m.dataId).values,v=new Array(o);for(let E=0;Ep2[0]+xShape[i]+p2[1]);let rank=xShape.length,dtype=getCoordsDataType(rank),start=paddings.map(p2=>p2[0]).join(","),end=paddings.map((p2,i)=>p2[0]+xShape[i]).join(","),unpackedCoords=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,rank),offset=mode==="reflect"?0:1;if(rank===1){this.userCode=` - int start = ${start}; - int end = ${end}; +`,e9=sn({opSnippet:ZZ,packedOpSnippet:QZ,cpuKernelImpl:iK}),t9={kernelName:Zs,backendName:"webgl",kernelFunc:e9},n9=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=t.map((c,u)=>c[0]+e[u]+c[1]);let a=e.length,r=mt(a),s=t.map(c=>c[0]).join(","),i=t.map((c,u)=>c[0]+e[u]).join(","),o=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,a),l=n==="reflect"?0:1;if(a===1){this.userCode=` + int start = ${s}; + int end = ${i}; void main() { int outC = getOutputCoords(); if (outC < start) { - outC = start * 2 - outC - ${offset}; + outC = start * 2 - outC - ${l}; } else if(outC >= end) { - outC = (end - 1) * 2 - outC + ${offset}; + outC = (end - 1) * 2 - outC + ${l}; } setOutput(getX(outC - start)); } `;return}this.userCode=` - ${dtype} start = ${dtype}(${start}); - ${dtype} end = ${dtype}(${end}); + ${r} start = ${r}(${s}); + ${r} end = ${r}(${i}); void main() { - ${dtype} outC = getOutputCoords(); - for (int i = 0; i < ${rank}; i++) { + ${r} outC = getOutputCoords(); + for (int i = 0; i < ${a}; i++) { if (outC[i] < start[i]) { - outC[i] = start[i] * 2 - outC[i] - ${offset}; + outC[i] = start[i] * 2 - outC[i] - ${l}; } else if(outC[i] >= end[i]) { - outC[i] = (end[i] - 1) * 2 - outC[i] + ${offset}; + outC[i] = (end[i] - 1) * 2 - outC[i] + ${l}; } } - ${dtype} coords = outC - start; - setOutput(getX(${unpackedCoords})); + ${r} coords = outC - start; + setOutput(getX(${o})); } - `}},MirrorPadPackedProgram=class{constructor(xShape,paddings,mode){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=paddings.map((p2,i)=>p2[0]+xShape[i]+p2[1]);let rank=xShape.length,dtype=getCoordsDataType(rank),start=paddings.map(p2=>p2[0]).join(","),end=paddings.map((p2,i)=>p2[0]+xShape[i]).join(","),coords2=getChannels("rc",rank),source=getChannels("source",rank),cLimit=`${coords2[rank-1]} < ${this.outputShape[rank-1]}`,innerDims=rank===1?"source":`vec2(${source.slice(-2).join()})`,offset=mode==="reflect"?0:1,mainLoop="";if(rank===1){let padSetup=` - ${dtype} source = rc; + `}},a9=class{constructor(e,t,n){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t.map((h,m)=>h[0]+e[m]+h[1]);let a=e.length,r=mt(a),s=t.map(h=>h[0]).join(","),i=t.map((h,m)=>h[0]+e[m]).join(","),o=gn("rc",a),l=gn("source",a),c=`${o[a-1]} < ${this.outputShape[a-1]}`,u=a===1?"source":`vec2(${l.slice(-2).join()})`,p=n==="reflect"?0:1,d="";if(a===1){let h=` + ${r} source = rc; if (source < start) { - source = start * 2 - source - ${offset}; + source = start * 2 - source - ${p}; } else if (source >= end) { - source = (end - 1) * 2 - source + ${offset}; + source = (end - 1) * 2 - source + ${p}; } source -= start; - `;mainLoop=` - ${dtype} rc = outputLoc; - ${padSetup} - result[0] = getChannel(getX(${source.join()}), ${innerDims}); - ${coords2[rank-1]} += 1; - if(${cLimit}) { - ${padSetup} - result[1] = getChannel(getX(${source.join()}), ${innerDims}); + `;d=` + ${r} rc = outputLoc; + ${h} + result[0] = getChannel(getX(${l.join()}), ${u}); + ${o[a-1]} += 1; + if(${c}) { + ${h} + result[1] = getChannel(getX(${l.join()}), ${u}); } - `}else{let padSetup=` - ${dtype} source = rc; - ${dtype} lt = ${dtype}(lessThan(source, start)); - ${dtype} gte = ${dtype}(greaterThanEqual(source, end)); - ${dtype} orig = 1 - (lt + gte); + `}else{let h=` + ${r} source = rc; + ${r} lt = ${r}(lessThan(source, start)); + ${r} gte = ${r}(greaterThanEqual(source, end)); + ${r} orig = 1 - (lt + gte); source = orig * source + - lt * (start * 2 - source - ${offset}) + - gte * ((end - 1) * 2 - source + ${offset}); + lt * (start * 2 - source - ${p}) + + gte * ((end - 1) * 2 - source + ${p}); source -= start; - `;mainLoop=` - ${dtype} rc = outputLoc; - ${padSetup} - result[0] = getChannel(getX(${source.join()}), ${innerDims}); - ${coords2[rank-1]} += 1; - if(${cLimit}) { - ${padSetup} - result[1] = getChannel(getX(${source.join()}), ${innerDims}); + `;d=` + ${r} rc = outputLoc; + ${h} + result[0] = getChannel(getX(${l.join()}), ${u}); + ${o[a-1]} += 1; + if(${c}) { + ${h} + result[1] = getChannel(getX(${l.join()}), ${u}); } rc = outputLoc; - ${coords2[rank-2]} += 1; - if(${coords2[rank-2]} < ${this.outputShape[rank-2]}) { - ${padSetup} - result[2] = getChannel(getX(${source.join()}), ${innerDims}); - ${coords2[rank-1]} += 1; - if(${cLimit}) { - ${padSetup} - result[3] = getChannel(getX(${source.join()}), ${innerDims}); + ${o[a-2]} += 1; + if(${o[a-2]} < ${this.outputShape[a-2]}) { + ${h} + result[2] = getChannel(getX(${l.join()}), ${u}); + ${o[a-1]} += 1; + if(${c}) { + ${h} + result[3] = getChannel(getX(${l.join()}), ${u}); } } `}this.userCode=` - const ${dtype} start = ${dtype}(${start}); - const ${dtype} end = ${dtype}(${end}); + const ${r} start = ${r}(${s}); + const ${r} end = ${r}(${i}); void main() { - ${dtype} outputLoc = getOutputCoords(); + ${r} outputLoc = getOutputCoords(); vec4 result = vec4(0.); - ${mainLoop} + ${d} setOutput(result); } - `}},mirrorPadKernelFunc=({inputs,backend:backend2,attrs})=>{let{x}=inputs,{paddings,mode}=attrs,program=env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new MirrorPadPackedProgram(x.shape,paddings,mode):new MirrorPadProgram(x.shape,paddings,mode);return backend2.runWebGLProgram(program,[x],x.dtype)},mirrorPadConfig2={kernelName:MirrorPad,backendName:"webgl",kernelFunc:mirrorPadKernelFunc},MOD=`if (b == 0.0) return NAN; - return mod(a, b);`,MOD_PACKED=` + `}},r9=({inputs:e,backend:t,attrs:n})=>{let{x:a}=e,{paddings:r,mode:s}=n,i=ee().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new a9(a.shape,r,s):new n9(a.shape,r,s);return t.runWebGLProgram(i,[a],a.dtype)},s9={kernelName:gc,backendName:"webgl",kernelFunc:r9},i9=`if (b == 0.0) return NAN; + return mod(a, b);`,o9=` vec4 result = mod(a, b); vec4 isNaN = vec4(equal(b, vec4(0.0))); - `+CHECK_NAN_SNIPPET3+` + `+Wm+` return result; -`,mod3=binaryKernelFunc2({opSnippet:MOD,packedOpSnippet:MOD_PACKED}),modConfig2={kernelName:Mod,backendName:"webgl",kernelFunc:mod3},MultinomialProgram=class{constructor(batchSize,numOutcomes,numSamples){this.variableNames=["probs"],this.outputShape=[batchSize,numSamples],this.userCode=` +`,l9=sn({opSnippet:i9,packedOpSnippet:o9}),u9={kernelName:al,backendName:"webgl",kernelFunc:l9},c9=class{constructor(e,t,n){this.variableNames=["probs"],this.outputShape=[e,n],this.userCode=` uniform float seed; void main() { @@ -3365,7 +3365,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: float r = random(seed); float cdf = 0.0; - for (int i = 0; i < ${numOutcomes-1}; i++) { + for (int i = 0; i < ${t-1}; i++) { cdf += getProbs(batch, i); if (r < cdf) { @@ -3375,13 +3375,13 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } // If no other event happened, last event happened. - setOutput(float(${numOutcomes-1})); + setOutput(float(${t-1})); } - `}getCustomSetupFunc(seed){return(gpgpu,webGLProgram)=>{this.seedLoc==null&&(this.seedLoc=gpgpu.getUniformLocation(webGLProgram,"seed")),gpgpu.gl.uniform1f(this.seedLoc,seed)}}},DIV=` + `}getCustomSetupFunc(e){return(t,n)=>{this.seedLoc==null&&(this.seedLoc=t.getUniformLocation(n,"seed")),t.gl.uniform1f(this.seedLoc,e)}}},p9=` if (a == b) { return 1.0; }; -return a / b;`,DIV_PACKED=` +return a / b;`,d9=` // vec4 one = vec4(equal(a, b)); // return one + (vec4(1.0) - one) * a / b; vec4 result = a / b; @@ -3399,63 +3399,63 @@ return a / b;`,DIV_PACKED=` } return result; -`,realDiv=binaryKernelFunc2({opSnippet:DIV,packedOpSnippet:DIV_PACKED,checkOutOfBounds:!0}),realDivConfig2={kernelName:RealDiv,backendName:"webgl",kernelFunc:realDiv},SUB="return a - b;",sub3=binaryKernelFunc2({opSnippet:SUB,packedOpSnippet:SUB,supportsComplex:!0,cpuKernelImpl:subImplCPU}),subConfig2={kernelName:Sub,backendName:"webgl",kernelFunc:sub3};function softmax4(args){let{inputs,backend:backend2,attrs}=args,{logits}=inputs,{dim}=attrs,axes=util_exports.parseAxisParam([dim],logits.shape),maxLogit=max4({inputs:{x:logits},backend:backend2,attrs:{reductionIndices:axes,keepDims:!1}}),expandedShape=backend_util_exports.expandShapeToKeepDim(maxLogit.shape,axes),maxLogitsReshaped=reshape4({inputs:{x:maxLogit},backend:backend2,attrs:{shape:expandedShape}}),a=sub3({inputs:{a:logits,b:maxLogitsReshaped},backend:backend2}),b=exp3({inputs:{x:a},backend:backend2}),sumExp=sum4({inputs:{x:b},backend:backend2,attrs:{axis:axes,keepDims:!1}}),sumExpReshaped=reshape4({inputs:{x:sumExp},backend:backend2,attrs:{shape:expandedShape}}),res=realDiv({inputs:{a:b,b:sumExpReshaped},backend:backend2});return backend2.disposeIntermediateTensorInfo(maxLogit),backend2.disposeIntermediateTensorInfo(maxLogitsReshaped),backend2.disposeIntermediateTensorInfo(a),backend2.disposeIntermediateTensorInfo(b),backend2.disposeIntermediateTensorInfo(sumExp),backend2.disposeIntermediateTensorInfo(sumExpReshaped),res}var softmaxConfig2={kernelName:Softmax,backendName:"webgl",kernelFunc:softmax4};function multinomial3(args){let{inputs,backend:backend2,attrs}=args,{logits}=inputs,{numSamples,seed,normalized}=attrs,probs=normalized?logits:softmax4({inputs:{logits},backend:backend2,attrs:{dim:logits.shape.length-1}}),batchSize=probs.shape[0],numOutcomes=probs.shape[1],program=new MultinomialProgram(batchSize,numOutcomes,numSamples),customSetup=program.getCustomSetupFunc(seed),res=backend2.runWebGLProgram(program,[probs],"int32",customSetup);return normalized||backend2.disposeIntermediateTensorInfo(probs),res}var multinomialConfig2={kernelName:Multinomial,backendName:"webgl",kernelFunc:multinomial3},NEG="return -x;";function neg3(args){let{inputs,backend:backend2}=args,{x}=inputs;if(backend2.shouldExecuteOnCPU([x])){let xData=backend2.texData.get(x.dataId),[outValues,newShape]=negImplCPU(xData.values,x.shape,x.dtype);return backend2.makeTensorInfo(newShape,x.dtype,outValues)}let program;return env().getBool("WEBGL_PACK_UNARY_OPERATIONS")?program=new UnaryOpPackedProgram(x.shape,NEG):program=new UnaryOpProgram(x.shape,NEG),backend2.runWebGLProgram(program,[x],x.dtype)}var negConfig2={kernelName:Neg,backendName:"webgl",kernelFunc:neg3},nonMaxSuppressionV3Impl3=kernel_impls_exports.nonMaxSuppressionV3Impl;function nonMaxSuppressionV32(args){backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs,backend:backend2,attrs}=args,{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold}=attrs,boxesVals=backend2.readSync(boxes.dataId),scoresVals=backend2.readSync(scores.dataId),{selectedIndices}=nonMaxSuppressionV3Impl3(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold);return backend2.makeTensorInfo([selectedIndices.length],"int32",new Int32Array(selectedIndices))}var nonMaxSuppressionV3Config2={kernelName:NonMaxSuppressionV3,backendName:"webgl",kernelFunc:nonMaxSuppressionV32},nonMaxSuppressionV4Impl3=kernel_impls_exports.nonMaxSuppressionV4Impl;function nonMaxSuppressionV42(args){backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs,backend:backend2,attrs}=args,{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize}=attrs,boxesVals=backend2.readSync(boxes.dataId),scoresVals=backend2.readSync(scores.dataId),{selectedIndices,validOutputs}=nonMaxSuppressionV4Impl3(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize);return[backend2.makeTensorInfo([selectedIndices.length],"int32",new Int32Array(selectedIndices)),backend2.makeTensorInfo([],"int32",new Int32Array([validOutputs]))]}var nonMaxSuppressionV4Config2={kernelName:NonMaxSuppressionV4,backendName:"webgl",kernelFunc:nonMaxSuppressionV42},nonMaxSuppressionV5Impl3=kernel_impls_exports.nonMaxSuppressionV5Impl;function nonMaxSuppressionV52(args){backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs,backend:backend2,attrs}=args,{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}=attrs,boxesVals=backend2.readSync(boxes.dataId),scoresVals=backend2.readSync(scores.dataId),maxOutputSizeVal=maxOutputSize,iouThresholdVal=iouThreshold,scoreThresholdVal=scoreThreshold,softNmsSigmaVal=softNmsSigma,{selectedIndices,selectedScores}=nonMaxSuppressionV5Impl3(boxesVals,scoresVals,maxOutputSizeVal,iouThresholdVal,scoreThresholdVal,softNmsSigmaVal);return[backend2.makeTensorInfo([selectedIndices.length],"int32",new Int32Array(selectedIndices)),backend2.makeTensorInfo([selectedScores.length],"float32",new Float32Array(selectedScores))]}var nonMaxSuppressionV5Config2={kernelName:NonMaxSuppressionV5,backendName:"webgl",kernelFunc:nonMaxSuppressionV52},OneHotProgram=class{constructor(numIndices,depth,onValue,offValue){this.variableNames=["indices"],this.outputShape=[numIndices,depth],this.userCode=` +`,XS=sn({opSnippet:p9,packedOpSnippet:d9,checkOutOfBounds:!0}),h9={kernelName:zs,backendName:"webgl",kernelFunc:XS},YS="return a - b;",JS=sn({opSnippet:YS,packedOpSnippet:YS,supportsComplex:!0,cpuKernelImpl:mK}),m9={kernelName:gi,backendName:"webgl",kernelFunc:JS};function ZS(e){let{inputs:t,backend:n,attrs:a}=e,{logits:r}=t,{dim:s}=a,i=k.parseAxisParam([s],r.shape),o=KS({inputs:{x:r},backend:n,attrs:{reductionIndices:i,keepDims:!1}}),l=_.expandShapeToKeepDim(o.shape,i),c=xe({inputs:{x:o},backend:n,attrs:{shape:l}}),u=JS({inputs:{a:r,b:c},backend:n}),p=US({inputs:{x:u},backend:n}),d=Rv({inputs:{x:p},backend:n,attrs:{axis:i,keepDims:!1}}),h=xe({inputs:{x:d},backend:n,attrs:{shape:l}}),m=XS({inputs:{a:p,b:h},backend:n});return n.disposeIntermediateTensorInfo(o),n.disposeIntermediateTensorInfo(c),n.disposeIntermediateTensorInfo(u),n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(h),m}var f9={kernelName:mi,backendName:"webgl",kernelFunc:ZS};function g9(e){let{inputs:t,backend:n,attrs:a}=e,{logits:r}=t,{numSamples:s,seed:i,normalized:o}=a,l=o?r:ZS({inputs:{logits:r},backend:n,attrs:{dim:r.shape.length-1}}),c=l.shape[0],u=l.shape[1],p=new c9(c,u,s),d=p.getCustomSetupFunc(i),h=n.runWebGLProgram(p,[l],"int32",d);return o||n.disposeIntermediateTensorInfo(l),h}var y9={kernelName:Gd,backendName:"webgl",kernelFunc:g9},QS="return -x;";function b9(e){let{inputs:t,backend:n}=e,{x:a}=t;if(n.shouldExecuteOnCPU([a])){let s=n.texData.get(a.dataId),[i,o]=lK(s.values,a.shape,a.dtype);return n.makeTensorInfo(o,a.dtype,i)}let r;return ee().getBool("WEBGL_PACK_UNARY_OPERATIONS")?r=new hu(a.shape,QS):r=new hs(a.shape,QS),n.runWebGLProgram(r,[a],a.dtype)}var x9={kernelName:rl,backendName:"webgl",kernelFunc:b9},v9=Ja.nonMaxSuppressionV3Impl;function w9(e){_.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs:t,backend:n,attrs:a}=e,{boxes:r,scores:s}=t,{maxOutputSize:i,iouThreshold:o,scoreThreshold:l}=a,c=n.readSync(r.dataId),u=n.readSync(s.dataId),{selectedIndices:p}=v9(c,u,i,o,l);return n.makeTensorInfo([p.length],"int32",new Int32Array(p))}var k9={kernelName:il,backendName:"webgl",kernelFunc:w9},I9=Ja.nonMaxSuppressionV4Impl;function N9(e){_.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs:t,backend:n,attrs:a}=e,{boxes:r,scores:s}=t,{maxOutputSize:i,iouThreshold:o,scoreThreshold:l,padToMaxOutputSize:c}=a,u=n.readSync(r.dataId),p=n.readSync(s.dataId),{selectedIndices:d,validOutputs:h}=I9(u,p,i,o,l,c);return[n.makeTensorInfo([d.length],"int32",new Int32Array(d)),n.makeTensorInfo([],"int32",new Int32Array([h]))]}var T9={kernelName:ol,backendName:"webgl",kernelFunc:N9},S9=Ja.nonMaxSuppressionV5Impl;function C9(e){_.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs:t,backend:n,attrs:a}=e,{boxes:r,scores:s}=t,{maxOutputSize:i,iouThreshold:o,scoreThreshold:l,softNmsSigma:c}=a,u=n.readSync(r.dataId),p=n.readSync(s.dataId),d=i,h=o,m=l,f=c,{selectedIndices:g,selectedScores:y}=S9(u,p,d,h,m,f);return[n.makeTensorInfo([g.length],"int32",new Int32Array(g)),n.makeTensorInfo([y.length],"float32",new Float32Array(y))]}var E9={kernelName:ll,backendName:"webgl",kernelFunc:C9},_9=class{constructor(e,t,n,a){this.variableNames=["indices"],this.outputShape=[e,t],this.userCode=` void main() { ivec2 coords = getOutputCoords(); int index = round(getIndices(coords.x)); - setOutput(mix(float(${offValue}), float(${onValue}), + setOutput(mix(float(${a}), float(${n}), float(index == coords.y))); } - `}},oneHot3=args=>{let{inputs,backend:backend2,attrs}=args,{indices}=inputs,{depth,onValue,offValue}=attrs,indicesSize=util_exports.sizeFromShape(indices.shape),program=new OneHotProgram(indicesSize,depth,onValue,offValue),reshaped=reshape4({inputs:{x:indices},backend:backend2,attrs:{shape:[indicesSize]}}),result=backend2.runWebGLProgram(program,[reshaped],indices.dtype);backend2.disposeIntermediateTensorInfo(reshaped);let outShape=[...indices.shape,depth],out=reshape4({inputs:{x:result},backend:backend2,attrs:{shape:outShape}});return backend2.disposeIntermediateTensorInfo(result),out},oneHotConfig2={kernelName:OneHot,backendName:"webgl",kernelFunc:oneHot3};function zerosLike3(args){let{inputs,backend:backend2}=args,{x}=inputs;if(x.dtype==="complex64"){let realPart=real3({inputs:{input:x},backend:backend2}),r=zerosLike3({inputs:{x:realPart},backend:backend2}),imagPart=imag3({inputs:{input:x},backend:backend2}),i=zerosLike3({inputs:{x:imagPart},backend:backend2}),result=complex3({inputs:{real:r,imag:i},backend:backend2});return backend2.disposeIntermediateTensorInfo(realPart),backend2.disposeIntermediateTensorInfo(r),backend2.disposeIntermediateTensorInfo(imagPart),backend2.disposeIntermediateTensorInfo(i),result}else return fill3({attrs:{shape:x.shape,dtype:x.dtype,value:x.dtype==="string"?"":0},backend:backend2})}var zerosLikeConfig2={kernelName:ZerosLike,backendName:"webgl",kernelFunc:zerosLike3};function onesLike3(args){let{inputs,backend:backend2}=args,{x}=inputs;if(x.dtype==="string")throw new Error("onesLike is not supported under string dtype");if(x.dtype==="complex64"){let realPart=real3({inputs:{input:x},backend:backend2}),r=onesLike3({inputs:{x:realPart},backend:backend2}),imagPart=imag3({inputs:{input:x},backend:backend2}),i=zerosLike3({inputs:{x:imagPart},backend:backend2}),result=complex3({inputs:{real:r,imag:i},backend:backend2});return backend2.disposeIntermediateTensorInfo(realPart),backend2.disposeIntermediateTensorInfo(r),backend2.disposeIntermediateTensorInfo(imagPart),backend2.disposeIntermediateTensorInfo(i),result}else return fill3({attrs:{shape:x.shape,dtype:x.dtype,value:1},backend:backend2})}var onesLikeConfig2={kernelName:OnesLike,backendName:"webgl",kernelFunc:onesLike3};function pack2(args){let{inputs,backend:backend2,attrs}=args,{axis}=attrs;if(inputs.length===1)return expandDims4({inputs:{input:inputs[0]},backend:backend2,attrs:{dim:axis}});let shape=inputs[0].shape,dtype=inputs[0].dtype;inputs.forEach(t=>{util_exports.assertShapesMatch(shape,t.shape,"All tensors passed to stack must have matching shapes"),util_exports.assert(dtype===t.dtype,()=>"All tensors passed to stack must have matching dtypes")});let intermediateTensorInfos=[],expandedTensors=inputs.map(t=>{let expandedT=expandDims4({inputs:{input:t},backend:backend2,attrs:{dim:axis}});return intermediateTensorInfos.push(expandedT),expandedT}),result=concat3({inputs:expandedTensors,backend:backend2,attrs:{axis}});return intermediateTensorInfos.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),result}var packConfig2={kernelName:Pack,backendName:"webgl",kernelFunc:pack2},PadProgram=class{constructor(xShape,paddings,constantValue){this.variableNames=["x"],this.outputShape=paddings.map((p2,i)=>p2[0]+xShape[i]+p2[1]);let rank=xShape.length,type=getCoordsDataType(rank),start=paddings.map(p2=>p2[0]).join(","),end=paddings.map((p2,i)=>p2[0]+xShape[i]).join(","),unpackedCoords=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,rank);if(rank===1){this.userCode=` - int start = ${start}; - int end = ${end}; + `}},F9=e=>{let{inputs:t,backend:n,attrs:a}=e,{indices:r}=t,{depth:s,onValue:i,offValue:o}=a,l=k.sizeFromShape(r.shape),c=new _9(l,s,i,o),u=xe({inputs:{x:r},backend:n,attrs:{shape:[l]}}),p=n.runWebGLProgram(c,[u],r.dtype);n.disposeIntermediateTensorInfo(u);let d=[...r.shape,s],h=xe({inputs:{x:p},backend:n,attrs:{shape:d}});return n.disposeIntermediateTensorInfo(p),h},A9={kernelName:ei,backendName:"webgl",kernelFunc:F9};function Km(e){let{inputs:t,backend:n}=e,{x:a}=t;if(a.dtype==="complex64"){let r=Ip({inputs:{input:a},backend:n}),s=Km({inputs:{x:r},backend:n}),i=qm({inputs:{input:a},backend:n}),o=Km({inputs:{x:i},backend:n}),l=ms({inputs:{real:s,imag:o},backend:n});return n.disposeIntermediateTensorInfo(r),n.disposeIntermediateTensorInfo(s),n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(o),l}else return Bv({attrs:{shape:a.shape,dtype:a.dtype,value:a.dtype==="string"?"":0},backend:n})}var $9={kernelName:Sl,backendName:"webgl",kernelFunc:Km};function e2(e){let{inputs:t,backend:n}=e,{x:a}=t;if(a.dtype==="string")throw new Error("onesLike is not supported under string dtype");if(a.dtype==="complex64"){let r=Ip({inputs:{input:a},backend:n}),s=e2({inputs:{x:r},backend:n}),i=qm({inputs:{input:a},backend:n}),o=Km({inputs:{x:i},backend:n}),l=ms({inputs:{real:s,imag:o},backend:n});return n.disposeIntermediateTensorInfo(r),n.disposeIntermediateTensorInfo(s),n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(o),l}else return Bv({attrs:{shape:a.shape,dtype:a.dtype,value:1},backend:n})}var D9={kernelName:ul,backendName:"webgl",kernelFunc:e2};function M9(e){let{inputs:t,backend:n,attrs:a}=e,{axis:r}=a;if(t.length===1)return zv({inputs:{input:t[0]},backend:n,attrs:{dim:r}});let s=t[0].shape,i=t[0].dtype;t.forEach(u=>{k.assertShapesMatch(s,u.shape,"All tensors passed to stack must have matching shapes"),k.assert(i===u.dtype,()=>"All tensors passed to stack must have matching dtypes")});let o=[],l=t.map(u=>{let p=zv({inputs:{input:u},backend:n,attrs:{dim:r}});return o.push(p),p}),c=DS({inputs:l,backend:n,attrs:{axis:r}});return o.forEach(u=>n.disposeIntermediateTensorInfo(u)),c}var R9={kernelName:cl,backendName:"webgl",kernelFunc:M9},P9=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=t.map((l,c)=>l[0]+e[c]+l[1]);let a=e.length,r=mt(a),s=t.map(l=>l[0]).join(","),i=t.map((l,c)=>l[0]+e[c]).join(","),o=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,a);if(a===1){this.userCode=` + int start = ${s}; + int end = ${i}; void main() { int outC = getOutputCoords(); if (outC < start || outC >= end) { - setOutput(float(${constantValue})); + setOutput(float(${n})); } else { setOutput(getX(outC - start)); } } `;return}this.userCode=` - ${type} start = ${type}(${start}); - ${type} end = ${type}(${end}); + ${r} start = ${r}(${s}); + ${r} end = ${r}(${i}); void main() { - ${type} outC = getOutputCoords(); + ${r} outC = getOutputCoords(); if (any(lessThan(outC, start)) || any(greaterThanEqual(outC, end))) { - setOutput(float(${constantValue})); + setOutput(float(${n})); } else { - ${type} coords = outC - start; - setOutput(getX(${unpackedCoords})); + ${r} coords = outC - start; + setOutput(getX(${o})); } } - `}},PadPackedProgram=class{constructor(xShape,paddings,constantValue){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=paddings.map((p2,i)=>p2[0]+xShape[i]+p2[1]);let rank=xShape.length,dtype=getCoordsDataType(rank),start=paddings.map(p2=>p2[0]).join(","),end=paddings.map((p2,i)=>p2[0]+xShape[i]).join(","),coords2=getChannels("rc",rank),source=getChannels("source",rank),cLimit=`${coords2[rank-1]} < ${this.outputShape[rank-1]}`,innerDims=rank===1?"source":`vec2(${source.slice(-2).join()})`,componentSetup=[`${dtype} rc = outputLoc;`,`${coords2[rank-1]} += 1; - if(${cLimit}) { - `,rank===1?"":`} + `}},O9=class{constructor(e,t,n){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t.map((m,f)=>m[0]+e[f]+m[1]);let a=e.length,r=mt(a),s=t.map(m=>m[0]).join(","),i=t.map((m,f)=>m[0]+e[f]).join(","),o=gn("rc",a),l=gn("source",a),c=`${o[a-1]} < ${this.outputShape[a-1]}`,u=a===1?"source":`vec2(${l.slice(-2).join()})`,p=[`${r} rc = outputLoc;`,`${o[a-1]} += 1; + if(${c}) { + `,a===1?"":`} rc = outputLoc; - ${coords2[rank-2]} += 1; - if(${coords2[rank-2]} < ${this.outputShape[rank-2]}) {`,rank===1?"":` ${coords2[rank-1]} += 1; - if(${cLimit}) {`],paddingArea=rank===1?"rc < start || rc >= end":"any(lessThan(rc, start)) || any(greaterThanEqual(rc, end))",mainLoop="";for(let i=0,j=rank===1?2:4;i= end":"any(lessThan(rc, start)) || any(greaterThanEqual(rc, end))",h="";for(let m=0,f=a===1?2:4;m{let{inputs,backend:backend2,attrs}=args,{x}=inputs,{paddings,constantValue}=attrs,program=env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new PadPackedProgram(x.shape,paddings,constantValue):new PadProgram(x.shape,paddings,constantValue);return backend2.runWebGLProgram(program,[x],x.dtype)},padV2Config2={kernelName:PadV2,backendName:"webgl",kernelFunc:padV22},POW=` + `}},t2=e=>{let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{paddings:s,constantValue:i}=a,o=ee().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new O9(r.shape,s,i):new P9(r.shape,s,i);return n.runWebGLProgram(o,[r],r.dtype)},L9={kernelName:ti,backendName:"webgl",kernelFunc:t2},z9=` if(a < 0.0 && floor(b) < b){ return NAN; } @@ -3464,7 +3464,7 @@ return a / b;`,DIV_PACKED=` } return (round(mod(b, 2.0)) != 1) ? pow(abs(a), b) : sign(a) * pow(abs(a), b); -`,POW_PACKED=` +`,B9=` // isModRound1 has 1 for components with round(mod(b, 2.0)) == 1, 0 otherwise. vec4 isModRound1 = vec4(equal(round(mod(b, 2.0)), ivec4(1))); vec4 multiplier = sign(a) * isModRound1 + (vec4(1.0) - isModRound1); @@ -3478,11 +3478,11 @@ return a / b;`,DIV_PACKED=` result.a = isExpZero.a ? 1.0 : result.a; vec4 isNaN = vec4(lessThan(a, vec4(0.0))) * vec4(lessThan(floor(b), b)); - `+CHECK_NAN_SNIPPET3+` + `+Wm+` return result; -`,pow3=binaryKernelFunc2({opSnippet:POW,packedOpSnippet:POW_PACKED}),powConfig2={kernelName:Pow,backendName:"webgl",kernelFunc:pow3};function prod3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{axis,keepDims}=attrs,xRank=x.shape.length,toDispose=[],origAxes=util_exports.parseAxisParam(axis,x.shape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),permutedX=x;permutedAxes!=null&&(permutedX=transpose3({inputs:{x},backend:backend2,attrs:{perm:permutedAxes}}),axes=backend_util_exports.getInnerMostAxes(axes.length,xRank),toDispose.push(permutedX)),backend_util_exports.assertAxesAreInnerMostDims("prod",axes,xRank);let res;if(backend2.shouldExecuteOnCPU([permutedX])){let xVals=backend2.texData.get(permutedX.dataId).values,{outVals,outShape,outDtype}=prodImplCPU(permutedX.shape,permutedX.dtype,xVals,axes);res=backend2.makeTensorInfo(outShape,outDtype,outVals)}else{let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(permutedX.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=reshape4({inputs:{x:permutedX},backend:backend2,attrs:{shape:[-1,inSize]}}),outputDType=sumOutType(x.dtype),reduced=reduce(a2D,outputDType,"prod",backend2);res=reshape4({inputs:{x:reduced},backend:backend2,attrs:{shape:outShape}}),toDispose.push(a2D),toDispose.push(reduced)}if(keepDims){toDispose.push(res);let newShape=backend_util_exports.expandShapeToKeepDim(res.shape,origAxes);res=reshape4({inputs:{x:res},backend:backend2,attrs:{shape:newShape}})}return toDispose.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),res}var prodConfig2={kernelName:Prod,backendName:"webgl",kernelFunc:prod3},range4=args=>{let{backend:backend2,attrs}=args,{start,stop,step:step4,dtype}=attrs,values=rangeImplCPU(start,stop,step4,dtype);return backend2.makeTensorInfo([values.length],dtype,values)},rangeConfig2={kernelName:Range,backendName:"webgl",kernelFunc:range4},RECIPROCAL="return 1.0 / x;",reciprocal3=unaryKernelFunc2({opSnippet:RECIPROCAL}),reciprocalConfig2={kernelName:Reciprocal,backendName:"webgl",kernelFunc:reciprocal3},RELU3=CHECK_NAN_SNIPPET+` +`,W9=sn({opSnippet:z9,packedOpSnippet:B9}),V9={kernelName:ni,backendName:"webgl",kernelFunc:W9};function U9(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{axis:s,keepDims:i}=a,o=r.shape.length,l=[],c=k.parseAxisParam(s,r.shape),u=c,p=_.getAxesPermutation(u,o),d=r;p!=null&&(d=Cn({inputs:{x:r},backend:n,attrs:{perm:p}}),u=_.getInnerMostAxes(u.length,o),l.push(d)),_.assertAxesAreInnerMostDims("prod",u,o);let h;if(n.shouldExecuteOnCPU([d])){let m=n.texData.get(d.dataId).values,{outVals:f,outShape:g,outDtype:y}=uK(d.shape,d.dtype,m,u);h=n.makeTensorInfo(g,y,f)}else{let[m,f]=_.computeOutAndReduceShapes(d.shape,u),g=k.sizeFromShape(f),y=xe({inputs:{x:d},backend:n,attrs:{shape:[-1,g]}}),b=th(r.dtype),x=Ki(y,b,"prod",n);h=xe({inputs:{x},backend:n,attrs:{shape:m}}),l.push(y),l.push(x)}if(i){l.push(h);let m=_.expandShapeToKeepDim(h.shape,c);h=xe({inputs:{x:h},backend:n,attrs:{shape:m}})}return l.forEach(m=>n.disposeIntermediateTensorInfo(m)),h}var G9={kernelName:pl,backendName:"webgl",kernelFunc:U9},n2=e=>{let{backend:t,attrs:n}=e,{start:a,stop:r,step:s,dtype:i}=n,o=cK(a,r,s,i);return t.makeTensorInfo([o.length],i,o)},H9={kernelName:yc,backendName:"webgl",kernelFunc:n2},j9="return 1.0 / x;",q9=Ye({opSnippet:j9}),K9={kernelName:dl,backendName:"webgl",kernelFunc:q9},X9=Pa+` return (x < 0.0) ? 0.0 : x; -`,RELU_PACKED=` +`,Y9=` vec4 result = x * vec4(greaterThanEqual(x, vec4(0.0))); bvec4 isNaN = isnan(x); @@ -3492,9 +3492,9 @@ return a / b;`,DIV_PACKED=` result.a = isNaN.a ? x.a : result.a; return result; -`,relu3=unaryKernelFunc2({opSnippet:RELU3,packedOpSnippet:RELU_PACKED}),reluConfig2={kernelName:Relu,backendName:"webgl",kernelFunc:relu3},RELU63=CHECK_NAN_SNIPPET+` +`,J9=Ye({opSnippet:X9,packedOpSnippet:Y9}),Z9={kernelName:ri,backendName:"webgl",kernelFunc:J9},Q9=Pa+` return (x < 0.0) ? 0.0 : min(6.0, x); -`,RELU6_PACKED=` +`,eQ=` vec4 result = min(x, vec4(6.)) * vec4(greaterThanEqual(x, vec4(0.0))); bvec4 isNaN = isnan(x); @@ -3504,11 +3504,11 @@ return a / b;`,DIV_PACKED=` result.a = isNaN.a ? x.a : result.a; return result; -`,relu63=unaryKernelFunc2({opSnippet:RELU63,packedOpSnippet:RELU6_PACKED}),relu6Config2={kernelName:Relu6,backendName:"webgl",kernelFunc:relu63},ResizeBilinearProgram=class{constructor(inputShape,newHeight,newWidth,alignCorners,halfPixelCenters){this.variableNames=["A"],this.outputShape=[];let[batch,oldHeight,oldWidth,depth]=inputShape;this.outputShape=[batch,newHeight,newWidth,depth];let effectiveInSize=[alignCorners&&newHeight>1?oldHeight-1:oldHeight,alignCorners&&newWidth>1?oldWidth-1:oldWidth],effectiveOutSize=[alignCorners&&newHeight>1?newHeight-1:newHeight,alignCorners&&newWidth>1?newWidth-1:newWidth],sourceFracIndexRC;halfPixelCenters?sourceFracIndexRC="(vec2(yRC) + vec2(0.5)) * effectiveInputOverOutputRatioRC - vec2(0.5)":sourceFracIndexRC="vec2(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` +`,tQ=Ye({opSnippet:Q9,packedOpSnippet:eQ}),nQ={kernelName:ii,backendName:"webgl",kernelFunc:tQ},aQ=class{constructor(e,t,n,a,r){this.variableNames=["A"],this.outputShape=[];let[s,i,o,l]=e;this.outputShape=[s,t,n,l];let c=[a&&t>1?i-1:i,a&&n>1?o-1:o],u=[a&&t>1?t-1:t,a&&n>1?n-1:n],p;r?p="(vec2(yRC) + vec2(0.5)) * effectiveInputOverOutputRatioRC - vec2(0.5)":p="vec2(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` const vec2 effectiveInputOverOutputRatioRC = vec2( - ${effectiveInSize[0]/effectiveOutSize[0]}, - ${effectiveInSize[1]/effectiveOutSize[1]}); - const vec2 inputShapeRC = vec2(${oldHeight}.0, ${oldWidth}.0); + ${c[0]/u[0]}, + ${c[1]/u[1]}); + const vec2 inputShapeRC = vec2(${i}.0, ${o}.0); void main() { ivec4 coords = getOutputCoords(); @@ -3517,7 +3517,7 @@ return a / b;`,DIV_PACKED=` ivec2 yRC = coords.yz; // Fractional source index. - vec2 sourceFracIndexRC = ${sourceFracIndexRC}; + vec2 sourceFracIndexRC = ${p}; // Compute the four integer indices. ivec2 sourceFloorRC = ivec2(max(sourceFracIndexRC, vec2(0.0))); @@ -3537,13 +3537,13 @@ return a / b;`,DIV_PACKED=` setOutput(newValue); } - `}},ResizeBilinearPackedProgram=class{constructor(inputShape,newHeight,newWidth,alignCorners,halfPixelCenters){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[];let[batch,oldHeight,oldWidth,depth]=inputShape;this.outputShape=[batch,newHeight,newWidth,depth];let effectiveInSize=[alignCorners&&newHeight>1?oldHeight-1:oldHeight,alignCorners&&newWidth>1?oldWidth-1:oldWidth],effectiveOutSize=[alignCorners&&newHeight>1?newHeight-1:newHeight,alignCorners&&newWidth>1?newWidth-1:newWidth],sourceFracIndexRC;halfPixelCenters?sourceFracIndexRC="(vec3(yRC) + vec3(0.5)) * effectiveInputOverOutputRatioRC - vec3(0.5)":sourceFracIndexRC="vec3(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` + `}},rQ=class{constructor(e,t,n,a,r){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[];let[s,i,o,l]=e;this.outputShape=[s,t,n,l];let c=[a&&t>1?i-1:i,a&&n>1?o-1:o],u=[a&&t>1?t-1:t,a&&n>1?n-1:n],p;r?p="(vec3(yRC) + vec3(0.5)) * effectiveInputOverOutputRatioRC - vec3(0.5)":p="vec3(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` const vec3 effectiveInputOverOutputRatioRC = vec3( - ${effectiveInSize[0]/effectiveOutSize[0]}, - ${effectiveInSize[1]/effectiveOutSize[1]}, - ${effectiveInSize[1]/effectiveOutSize[1]}); - const vec3 inputShapeRC = vec3(${oldHeight}.0, ${oldWidth}.0, - ${oldWidth}.0); + ${c[0]/u[0]}, + ${c[1]/u[1]}, + ${c[1]/u[1]}); + const vec3 inputShapeRC = vec3(${i}.0, ${o}.0, + ${o}.0); float getAValue(int b, int r, int c, int d) { return getChannel(getA(b, r, c, d), vec2(c, d)); @@ -3557,7 +3557,7 @@ return a / b;`,DIV_PACKED=` ivec3 yRC = coords.yzz + ivec3(0, 0, 1); // Fractional source index. - vec3 sourceFracIndexRC = ${sourceFracIndexRC}; + vec3 sourceFracIndexRC = ${p}; // Compute the four integer indices. ivec3 sourceFloorRC = ivec3(max(sourceFracIndexRC, vec3(0.0))); @@ -3565,8 +3565,8 @@ return a / b;`,DIV_PACKED=` min(inputShapeRC - 1.0, ceil(sourceFracIndexRC))); // Should we calculate next column and row elements in 2x2 packed cell. - bool hasNextCol = d < ${depth-1}; - bool hasNextRow = coords.z < ${newWidth-1}; + bool hasNextCol = d < ${l-1}; + bool hasNextRow = coords.z < ${n-1}; // In parallel, construct four corners for all four components in // packed 2x2 cell. @@ -3614,7 +3614,7 @@ return a / b;`,DIV_PACKED=` setOutput(newValue); } - `}};function resizeBilinear3(args){let{inputs,backend:backend2,attrs}=args,{images}=inputs,{alignCorners,halfPixelCenters,size}=attrs,[newHeight,newWidth]=size,program=env().getBool("WEBGL_PACK_IMAGE_OPERATIONS")?new ResizeBilinearPackedProgram(images.shape,newHeight,newWidth,alignCorners,halfPixelCenters):new ResizeBilinearProgram(images.shape,newHeight,newWidth,alignCorners,halfPixelCenters);return backend2.runWebGLProgram(program,[images],"float32")}var resizeBilinearConfig2={kernelName:ResizeBilinear,backendName:"webgl",kernelFunc:resizeBilinear3},ResizeBilinearBackpropProgram=class{constructor(dyShape,inputShape,alignCorners){this.variableNames=["dy"],this.outputShape=[],this.outputShape=inputShape;let[,xHeight,xWidth]=inputShape,[,yHeight,yWidth]=dyShape,effectiveXSize=[alignCorners&&yHeight>1?xHeight-1:xHeight,alignCorners&&yWidth>1?xWidth-1:xWidth],effectiveYSize=[alignCorners&&yHeight>1?yHeight-1:yHeight,alignCorners&&yWidth>1?yWidth-1:yWidth],heightScale=effectiveXSize[0]/effectiveYSize[0],widthScale=effectiveXSize[1]/effectiveYSize[1],invHeightScale=1/heightScale,invWidthScale=1/widthScale,winHeight=Math.ceil(invHeightScale)*2+2,winWidth=Math.ceil(invWidthScale)*2+2;this.userCode=` + `}};function sQ(e){let{inputs:t,backend:n,attrs:a}=e,{images:r}=t,{alignCorners:s,halfPixelCenters:i,size:o}=a,[l,c]=o,u=ee().getBool("WEBGL_PACK_IMAGE_OPERATIONS")?new rQ(r.shape,l,c,s,i):new aQ(r.shape,l,c,s,i);return n.runWebGLProgram(u,[r],"float32")}var iQ={kernelName:si,backendName:"webgl",kernelFunc:sQ},oQ=class{constructor(e,t,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=t;let[,a,r]=t,[,s,i]=e,o=[n&&s>1?a-1:a,n&&i>1?r-1:r],l=[n&&s>1?s-1:s,n&&i>1?i-1:i],c=o[0]/l[0],u=o[1]/l[1],p=1/c,d=1/u,h=Math.ceil(p)*2+2,m=Math.ceil(d)*2+2;this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords[0]; @@ -3624,14 +3624,14 @@ return a / b;`,DIV_PACKED=` float accumulator = 0.0; - const float heightScale = float(${heightScale}); - const float widthScale = float(${widthScale}); + const float heightScale = float(${c}); + const float widthScale = float(${u}); - const float invHeightScale = float(${invHeightScale}); - const float invWidthScale = float(${invWidthScale}); + const float invHeightScale = float(${p}); + const float invWidthScale = float(${d}); - const int winHeight = int(${winHeight}); - const int winWidth = int(${winWidth}); + const int winHeight = int(${h}); + const int winWidth = int(${m}); // Compute bounds for where in dy we will look float startRLerp = floor(float(r) * invHeightScale); @@ -3645,7 +3645,7 @@ return a / b;`,DIV_PACKED=` int dyR = dyROffset + startDyR; // Guard against the window exceeding the bounds of dy - if (dyR < 0 || dyR >= ${yHeight}) { + if (dyR < 0 || dyR >= ${s}) { continue; } @@ -3653,19 +3653,19 @@ return a / b;`,DIV_PACKED=` int dyC = dyCOffset + startDyC; // Guard against the window exceeding the bounds of dy - if (dyC < 0 || dyC >= ${yWidth}) { + if (dyC < 0 || dyC >= ${i}) { continue; } float dxR = float(dyR) * heightScale; int topDxRIndex = int(floor(dxR)); - int bottomDxRIndex = int(min(ceil(dxR), ${xHeight-1}.0)); + int bottomDxRIndex = int(min(ceil(dxR), ${a-1}.0)); float dxRLerp = dxR - float(topDxRIndex); float inverseDxRLerp = 1.0 - dxRLerp; float dxC = float(dyC) * widthScale; int leftDxCIndex = int(floor(dxC)); - int rightDxCIndex = int(min(ceil(dxC), ${xWidth-1}.0)); + int rightDxCIndex = int(min(ceil(dxC), ${r-1}.0)); float dxCLerp = dxC - float(leftDxCIndex); float inverseDxCLerp = 1.0 - dxCLerp; @@ -3695,11 +3695,11 @@ return a / b;`,DIV_PACKED=` setOutput(accumulator); } - `}};function resizeBilinearGrad2(args){let{inputs,backend:backend2,attrs}=args,{images,dy}=inputs,{alignCorners}=attrs,program=new ResizeBilinearBackpropProgram(dy.shape,images.shape,alignCorners);return backend2.runWebGLProgram(program,[dy],dy.dtype)}var resizeBilinearGradConfig3={kernelName:ResizeBilinearGrad,backendName:"webgl",kernelFunc:resizeBilinearGrad2},ResizeNearestNeighborProgram=class{constructor(inputShape,newHeight,newWidth,alignCorners,halfPixelCenters){this.variableNames=["A"],this.outputShape=[];let[batch,oldHeight,oldWidth,depth]=inputShape;this.outputShape=[batch,newHeight,newWidth,depth];let effectiveInSize=[alignCorners&&newHeight>1?oldHeight-1:oldHeight,alignCorners&&newWidth>1?oldWidth-1:oldWidth],effectiveOutSize=[alignCorners&&newHeight>1?newHeight-1:newHeight,alignCorners&&newWidth>1?newWidth-1:newWidth],roundBase=alignCorners?"0.5":"0.0",sourceFracIndexRC;halfPixelCenters?sourceFracIndexRC="max((vec2(yRC) + vec2(0.5)) * effectiveInputOverOutputRatioRC, vec2(0.0))":sourceFracIndexRC="vec2(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` + `}};function lQ(e){let{inputs:t,backend:n,attrs:a}=e,{images:r,dy:s}=t,{alignCorners:i}=a,o=new oQ(s.shape,r.shape,i);return n.runWebGLProgram(o,[s],s.dtype)}var uQ={kernelName:qd,backendName:"webgl",kernelFunc:lQ},cQ=class{constructor(e,t,n,a,r){this.variableNames=["A"],this.outputShape=[];let[s,i,o,l]=e;this.outputShape=[s,t,n,l];let c=[a&&t>1?i-1:i,a&&n>1?o-1:o],u=[a&&t>1?t-1:t,a&&n>1?n-1:n],p=a?"0.5":"0.0",d;r?d="max((vec2(yRC) + vec2(0.5)) * effectiveInputOverOutputRatioRC, vec2(0.0))":d="vec2(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` const vec2 effectiveInputOverOutputRatioRC = vec2( - ${effectiveInSize[0]/effectiveOutSize[0]}, - ${effectiveInSize[1]/effectiveOutSize[1]}); - const vec2 inputShapeRC = vec2(${oldHeight}.0, ${oldWidth}.0); + ${c[0]/u[0]}, + ${c[1]/u[1]}); + const vec2 inputShapeRC = vec2(${i}.0, ${o}.0); void main() { ivec4 coords = getOutputCoords(); @@ -3708,16 +3708,16 @@ return a / b;`,DIV_PACKED=` ivec2 yRC = coords.yz; // Fractional source index. - vec2 sourceFracIndexRC = ${sourceFracIndexRC}; + vec2 sourceFracIndexRC = ${d}; // Compute the coordinators of nearest neighbor point. ivec2 sourceNearestRC = ivec2( - min(inputShapeRC - 1.0, floor(sourceFracIndexRC + ${roundBase}))); + min(inputShapeRC - 1.0, floor(sourceFracIndexRC + ${p}))); float newValue = getA(b, sourceNearestRC.x, sourceNearestRC.y, d); setOutput(newValue); } - `}};function resizeNearestNeighbor3(args){let{inputs,backend:backend2,attrs}=args,{images}=inputs,{alignCorners,halfPixelCenters,size}=attrs,[newHeight,newWidth]=size,program=new ResizeNearestNeighborProgram(images.shape,newHeight,newWidth,alignCorners,halfPixelCenters);return backend2.runWebGLProgram(program,[images],images.dtype)}var resizeNearestNeighborConfig2={kernelName:ResizeNearestNeighbor,backendName:"webgl",kernelFunc:resizeNearestNeighbor3},ResizeNearestNeigborBackpropProgram=class{constructor(dyShape,inputShape,alignCorners){this.variableNames=["dy"],this.outputShape=[],this.outputShape=inputShape;let[,xHeight,xWidth]=inputShape,[,yHeight,yWidth]=dyShape,effectiveXSize=[alignCorners&&yHeight>1?xHeight-1:xHeight,alignCorners&&yWidth>1?xWidth-1:xWidth],effectiveYSize=[alignCorners&&yHeight>1?yHeight-1:yHeight,alignCorners&&yWidth>1?yWidth-1:yWidth],heightScale=effectiveXSize[0]/effectiveYSize[0],widthScale=effectiveXSize[1]/effectiveYSize[1],invHeightScale=1/heightScale,invWidthScale=1/widthScale,winHeight=Math.ceil(invHeightScale)*2+2,winWidth=Math.ceil(invWidthScale)*2+2;this.userCode=` + `}};function pQ(e){let{inputs:t,backend:n,attrs:a}=e,{images:r}=t,{alignCorners:s,halfPixelCenters:i,size:o}=a,[l,c]=o,u=new cQ(r.shape,l,c,s,i);return n.runWebGLProgram(u,[r],r.dtype)}var dQ={kernelName:bc,backendName:"webgl",kernelFunc:pQ},hQ=class{constructor(e,t,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=t;let[,a,r]=t,[,s,i]=e,o=[n&&s>1?a-1:a,n&&i>1?r-1:r],l=[n&&s>1?s-1:s,n&&i>1?i-1:i],c=o[0]/l[0],u=o[1]/l[1],p=1/c,d=1/u,h=Math.ceil(p)*2+2,m=Math.ceil(d)*2+2;this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords[0]; @@ -3727,14 +3727,14 @@ return a / b;`,DIV_PACKED=` float accumulator = 0.0; - const float heightScale = float(${heightScale}); - const float widthScale = float(${widthScale}); + const float heightScale = float(${c}); + const float widthScale = float(${u}); - const float invHeightScale = float(${invHeightScale}); - const float invWidthScale = float(${invWidthScale}); + const float invHeightScale = float(${p}); + const float invWidthScale = float(${d}); - const int winHeight = int(${winHeight}); - const int winWidth = int(${winWidth}); + const int winHeight = int(${h}); + const int winWidth = int(${m}); // Compute bounds for where in dy we will look float startRLerp = floor(float(r) * invHeightScale); @@ -3748,7 +3748,7 @@ return a / b;`,DIV_PACKED=` int dyR = dyROffset + startDyR; // Guard against the window exceeding the bounds of dy - if (dyR < 0 || dyR >= ${yHeight}) { + if (dyR < 0 || dyR >= ${s}) { continue; } @@ -3756,26 +3756,26 @@ return a / b;`,DIV_PACKED=` int dyC = dyCOffset + startDyC; // Guard against the window exceeding the bounds of dy - if (dyC < 0 || dyC >= ${yWidth}) { + if (dyC < 0 || dyC >= ${i}) { continue; } float sourceFracRow = - float(${effectiveXSize[0]}) * - (float(dyR) / float(${effectiveYSize[0]})); + float(${o[0]}) * + (float(dyR) / float(${l[0]})); float sourceFracCol = - float(${effectiveXSize[1]}) * - (float(dyC) / float(${effectiveYSize[1]})); + float(${o[1]}) * + (float(dyC) / float(${l[1]})); int sourceNearestRow = int(min( - float(int(${xHeight}) - 1), - ${alignCorners} ? float(round(sourceFracRow)) : + float(int(${a}) - 1), + ${n} ? float(round(sourceFracRow)) : float(floor(sourceFracRow)))); int sourceNearestCol = int(min( - float(int(${xWidth}) - 1), - ${alignCorners} ? float(round(sourceFracCol)) : + float(int(${r}) - 1), + ${n} ? float(round(sourceFracCol)) : float(floor(sourceFracCol)))); if (r == sourceNearestRow && c == sourceNearestCol) { @@ -3787,62 +3787,62 @@ return a / b;`,DIV_PACKED=` setOutput(accumulator); } - `}};function resizeNearestNeighborGrad2(args){let{inputs,backend:backend2,attrs}=args,{images,dy}=inputs,{alignCorners}=attrs,program=new ResizeNearestNeigborBackpropProgram(dy.shape,images.shape,alignCorners);return backend2.runWebGLProgram(program,[dy],dy.dtype)}var resizeNearestNeighborGradConfig3={kernelName:ResizeNearestNeighborGrad,backendName:"webgl",kernelFunc:resizeNearestNeighborGrad2},ReverseProgram=class{constructor(xShape,axis){this.variableNames=["x"];let rank=xShape.length;if(rank>4)throw new Error(`WebGL backend: Reverse of rank-${rank} tensor is not yet supported`);if(this.outputShape=xShape,rank===1){this.userCode=` + `}};function mQ(e){let{inputs:t,backend:n,attrs:a}=e,{images:r,dy:s}=t,{alignCorners:i}=a,o=new hQ(s.shape,r.shape,i);return n.runWebGLProgram(o,[s],s.dtype)}var fQ={kernelName:jd,backendName:"webgl",kernelFunc:mQ},gQ=class{constructor(e,t){this.variableNames=["x"];let n=e.length;if(n>4)throw new Error(`WebGL backend: Reverse of rank-${n} tensor is not yet supported`);if(this.outputShape=e,n===1){this.userCode=` void main() { int coord = getOutputCoords(); - setOutput(getX(${xShape[0]} - coord - 1)); + setOutput(getX(${e[0]} - coord - 1)); } - `;return}let getInCoord=i=>axis.indexOf(i)!==-1&&xShape[i]!==1?`${xShape[i]} - coords[${i}] - 1`:`coords[${i}]`,inCoords=xShape.map((_,i)=>getInCoord(i)).join(","),type=getCoordsDataType(rank);this.userCode=` + `;return}let a=i=>t.indexOf(i)!==-1&&e[i]!==1?`${e[i]} - coords[${i}] - 1`:`coords[${i}]`,r=e.map((i,o)=>a(o)).join(","),s=mt(n);this.userCode=` void main() { - ${type} coords = getOutputCoords(); - setOutput(getX(${inCoords})); + ${s} coords = getOutputCoords(); + setOutput(getX(${r})); } - `}},ReversePackedProgram=class{constructor(xShape,axis){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0;let rank=xShape.length;if(rank>4)throw new Error(`WebGL backend: Reverse of rank-${rank} tensor is not yet supported`);this.outputShape=xShape;let channels=getChannels("rc",rank),nextColumn=`${channels[rank-1]} + 1 < ${this.outputShape[rank-1]}`,nextRow=`${channels[rank-2]} + 1 < ${this.outputShape[rank-2]}`,type=getCoordsDataType(rank);rank===1?this.userCode=` + `}},yQ=class{constructor(e,t){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0;let n=e.length;if(n>4)throw new Error(`WebGL backend: Reverse of rank-${n} tensor is not yet supported`);this.outputShape=e;let a=gn("rc",n),r=`${a[n-1]} + 1 < ${this.outputShape[n-1]}`,s=`${a[n-2]} + 1 < ${this.outputShape[n-2]}`,i=mt(n);n===1?this.userCode=` void main(){ int rc = getOutputCoords(); vec4 result = vec4(0.); - result.r = getChannel(getX(${xShape[0]} - rc - 1), - ${xShape[0]} - rc - 1); - if(${nextColumn}){ - result.g = getChannel(getX(${xShape[0]} - (rc + 1) - 1), - ${xShape[0]} - (rc + 1) - 1); + result.r = getChannel(getX(${e[0]} - rc - 1), + ${e[0]} - rc - 1); + if(${r}){ + result.g = getChannel(getX(${e[0]} - (rc + 1) - 1), + ${e[0]} - (rc + 1) - 1); } setOutput(result); } `:this.userCode=` void main() { - ${type} rc = getOutputCoords(); + ${i} rc = getOutputCoords(); vec4 result = vec4(0.); - result.r = ${getR(channels.slice())}; - if(${nextColumn}){ - result.g = ${getG(channels.slice())}; + result.r = ${o(a.slice())}; + if(${r}){ + result.g = ${l(a.slice())}; } - if(${nextRow}) { - result.b = ${getB(channels.slice())}; - if(${nextColumn}) { - result.a = ${getA(channels.slice())}; + if(${s}) { + result.b = ${c(a.slice())}; + if(${r}) { + result.a = ${u(a.slice())}; } } setOutput(result); } - `;function getR(channels2){return getChannel(channels2)}function getG(channels2){return channels2[rank-1]="("+channels2[rank-1]+" + 1)",getChannel(channels2)}function getB(channels2){return channels2[rank-2]="("+channels2[rank-2]+" + 1)",getChannel(channels2)}function getA(channels2){return channels2[rank-1]="("+channels2[rank-1]+" + 1)",channels2[rank-2]="("+channels2[rank-2]+" + 1)",getChannel(channels2)}function getChannel(channels2){let inCoordsArray=xShape.map((_,i)=>getInCoord(i,channels2)),inCoords=inCoordsArray.join(","),innerDims=inCoordsArray.slice(-2).join(",");return`getChannel(getX(${inCoords}), vec2(${innerDims}))`}function getInCoord(i,channels1){return axis.indexOf(i)!==-1&&xShape[i]!==1?`${xShape[i]} - ${channels1[i]} - 1`:`${channels1[i]}`}}};function reverse3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{dims}=attrs,xRank=x.shape.length,$dims=util_exports.parseAxisParam(dims,x.shape);if(xRank===0)return identity3({inputs:{x},backend:backend2});let program=env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new ReversePackedProgram(x.shape,$dims):new ReverseProgram(x.shape,$dims);return backend2.runWebGLProgram(program,[x],x.dtype)}var reverseConfig2={kernelName:Reverse,backendName:"webgl",kernelFunc:reverse3},RotateProgram=class{constructor(imageShape,radians,fillValue,center){this.variableNames=["Image"],this.outputShape=[];let imageHeight=imageShape[1],imageWidth=imageShape[2],sinFactor=Math.sin(radians).toFixed(3),cosFactor=Math.cos(radians).toFixed(3);this.outputShape=imageShape;let[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),centerXString=centerX.toFixed(3),centerYString=centerY.toFixed(3),fillSnippet="";typeof fillValue=="number"?fillSnippet=`float outputValue = ${fillValue.toFixed(2)};`:fillSnippet=` - vec3 fill = vec3(${fillValue.join(",")}); + `;function o(h){return p(h)}function l(h){return h[n-1]="("+h[n-1]+" + 1)",p(h)}function c(h){return h[n-2]="("+h[n-2]+" + 1)",p(h)}function u(h){return h[n-1]="("+h[n-1]+" + 1)",h[n-2]="("+h[n-2]+" + 1)",p(h)}function p(h){let m=e.map((y,b)=>d(b,h)),f=m.join(","),g=m.slice(-2).join(",");return`getChannel(getX(${f}), vec2(${g}))`}function d(h,m){return t.indexOf(h)!==-1&&e[h]!==1?`${e[h]} - ${m[h]} - 1`:`${m[h]}`}}};function bQ(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{dims:s}=a,i=r.shape.length,o=k.parseAxisParam(s,r.shape);if(i===0)return Wn({inputs:{x:r},backend:n});let l=ee().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new yQ(r.shape,o):new gQ(r.shape,o);return n.runWebGLProgram(l,[r],r.dtype)}var xQ={kernelName:oi,backendName:"webgl",kernelFunc:bQ},vQ=class{constructor(e,t,n,a){this.variableNames=["Image"],this.outputShape=[];let r=e[1],s=e[2],i=Math.sin(t).toFixed(3),o=Math.cos(t).toFixed(3);this.outputShape=e;let[l,c]=_.getImageCenter(a,r,s),u=l.toFixed(3),p=c.toFixed(3),d="";typeof n=="number"?d=`float outputValue = ${n.toFixed(2)};`:d=` + vec3 fill = vec3(${n.join(",")}); float outputValue = fill[coords[3]];`,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int x = coords[2]; int y = coords[1]; - float coordXFloat = (float(x) - ${centerXString}) * ${cosFactor} - (float(y) - ${centerYString}) * ${sinFactor}; - float coordYFloat = (float(x) - ${centerXString}) * ${sinFactor} + (float(y) - ${centerYString}) * ${cosFactor}; - int coordX = int(round(coordXFloat + ${centerXString})); - int coordY = int(round(coordYFloat + ${centerYString})); - ${fillSnippet} - if(coordX >= 0 && coordX < ${imageWidth} && coordY >= 0 && coordY < ${imageHeight}) { + float coordXFloat = (float(x) - ${u}) * ${o} - (float(y) - ${p}) * ${i}; + float coordYFloat = (float(x) - ${u}) * ${i} + (float(y) - ${p}) * ${o}; + int coordX = int(round(coordXFloat + ${u})); + int coordY = int(round(coordYFloat + ${p})); + ${d} + if(coordX >= 0 && coordX < ${s} && coordY >= 0 && coordY < ${r}) { outputValue = getImage(coords[0], coordY, coordX, coords[3]); } setOutput(outputValue); } - `}},rotateWithOffsetConfig2={kernelName:RotateWithOffset,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend2})=>{let{image:image3}=inputs,{radians,fillValue,center}=attrs,webglBackend=backend2,program=new RotateProgram(image3.shape,radians,fillValue,center);return webglBackend.runWebGLProgram(program,[image3],image3.dtype)}},ROUND=` + `}},wQ={kernelName:El,backendName:"webgl",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{image:a}=e,{radians:r,fillValue:s,center:i}=t,o=n,l=new vQ(a.shape,r,s,i);return o.runWebGLProgram(l,[a],a.dtype)}},kQ=` // OpenGL ES does not support round function. // The algorithm is based on banker's rounding. float base = floor(x); @@ -3857,51 +3857,51 @@ return a / b;`,DIV_PACKED=` return base + 1.0; } } -`,round4=unaryKernelFunc2({opSnippet:ROUND}),roundConfig2={kernelName:Round,backendName:"webgl",kernelFunc:round4},RSQRT="return inversesqrt(x);",rsqrt3=unaryKernelFunc2({opSnippet:RSQRT,cpuKernelImpl:rsqrtImplCPU}),rsqrtConfig2={kernelName:Rsqrt,backendName:"webgl",kernelFunc:rsqrt3},ScatterProgram=class{constructor(updateSize,sliceDim,indicesRank,updatesRank,strides,shape,summingDupeIndex=!0){this.variableNames=["updates","indices","defaultValue"],this.outputShape=shape;let stridesType=getCoordsDataType(strides.length),dtype=getCoordsDataType(shape.length),indicesString="";indicesRank===1?indicesString="i":indicesRank===2&&(indicesString="i, j");let indicesSnippet=`getIndices(${indicesString})`,updatesString="";updatesRank===1?updatesString="i":updatesRank===2&&(updatesString="i, coords[1]");let updatesSnippet=`getUpdates(${updatesString})`,strideString=sliceDim>1?"strides[j]":"strides";this.userCode=` - ${stridesType} strides = ${stridesType}(${strides}); +`,IQ=Ye({opSnippet:kQ}),NQ={kernelName:li,backendName:"webgl",kernelFunc:IQ},TQ="return inversesqrt(x);",SQ=Ye({opSnippet:TQ,cpuKernelImpl:pK}),CQ={kernelName:ui,backendName:"webgl",kernelFunc:SQ},a2=class{constructor(e,t,n,a,r,s,i=!0){this.variableNames=["updates","indices","defaultValue"],this.outputShape=s;let o=mt(r.length),l=mt(s.length),c="";n===1?c="i":n===2&&(c="i, j");let u=`getIndices(${c})`,p="";a===1?p="i":a===2&&(p="i, coords[1]");let d=`getUpdates(${p})`,h=t>1?"strides[j]":"strides";this.userCode=` + ${o} strides = ${o}(${r}); void main() { - ${dtype} coords = getOutputCoords(); + ${l} coords = getOutputCoords(); float sum = 0.0; bool found = false; - for (int i = 0; i < ${updateSize}; i++) { + for (int i = 0; i < ${e}; i++) { int flattenedIndex = 0; - for (int j = 0; j < ${sliceDim}; j++) { - int index = round(${indicesSnippet}); - flattenedIndex += index * ${strideString}; + for (int j = 0; j < ${t}; j++) { + int index = round(${u}); + flattenedIndex += index * ${h}; } if (flattenedIndex == coords[0]) { - sum += ${updatesSnippet}; + sum += ${d}; found = true; } } setOutput(mix(getDefaultValue(), sum, float(found))); } - `}};function scatterNd2(args){let{inputs,backend:backend2,attrs}=args,{indices,updates}=inputs,{shape}=attrs,{sliceRank,numUpdates,sliceSize,strides,outputSize}=backend_util_exports.calculateShapes(updates,indices,shape),flattenShape=[outputSize/sliceSize,sliceSize];if(outputSize===0)return backend2.makeTensorInfo(shape,indices.dtype);let flattenIndices=reshape4({inputs:{x:indices},backend:backend2,attrs:{shape:[numUpdates,sliceRank]}}),flattenX=reshape4({inputs:{x:updates},backend:backend2,attrs:{shape:[numUpdates,sliceSize]}}),defaultValue=backend2.makeTensorInfo([],"float32",new Float32Array([0])),program=new ScatterProgram(numUpdates,sliceRank,flattenIndices.shape.length,flattenX.shape.length,strides,flattenShape),res=backend2.runWebGLProgram(program,[flattenX,flattenIndices,defaultValue],flattenX.dtype),reshaped=reshape4({inputs:{x:res},backend:backend2,attrs:{shape}});return backend2.disposeIntermediateTensorInfo(flattenIndices),backend2.disposeIntermediateTensorInfo(flattenX),backend2.disposeIntermediateTensorInfo(res),backend2.disposeIntermediateTensorInfo(defaultValue),reshaped}var scatterNdConfig2={kernelName:ScatterNd,backendName:"webgl",kernelFunc:scatterNd2},SelectProgram=class{constructor(cRank,shape,rank){this.variableNames=["c","a","b"],this.outputShape=shape;let cCoords,abCoords;if(rank>4)throw Error(`Where for rank ${rank} is not yet supported`);if(rank===1)abCoords="resRC",cCoords="resRC";else{let currentCoords=["resRC.x","resRC.y","resRC.z","resRC.w"],cCoordVars=[],abCoordVars=[];for(let i=0;i4)throw Error(`Where for rank ${n} is not yet supported`);if(n===1)r="resRC",a="resRC";else{let i=["resRC.x","resRC.y","resRC.z","resRC.w"],o=[],l=[];for(let c=0;c= 1.0) { - setOutput(getA(${abCoords})); + setOutput(getA(${r})); } else { - setOutput(getB(${abCoords})); + setOutput(getB(${r})); } } - `}};function select2(args){let{inputs,backend:backend2}=args,{condition,t,e}=inputs,program=new SelectProgram(condition.shape.length,t.shape,t.shape.length);return backend2.runWebGLProgram(program,[condition,t,e],upcastType(t.dtype,e.dtype))}var selectConfig2={kernelName:Select,backendName:"webgl",kernelFunc:select2},SELU=` + `}};function AQ(e){let{inputs:t,backend:n}=e,{condition:a,t:r,e:s}=t,i=new FQ(a.shape.length,r.shape,r.shape.length);return n.runWebGLProgram(i,[a,r,s],ua(r.dtype,s.dtype))}var $Q={kernelName:fl,backendName:"webgl",kernelFunc:AQ},DQ=` // Stable and Attracting Fixed Point (0, 1) for Normalized Weights. // see: https://arxiv.org/abs/1706.02515 - float scaleAlpha = ${backend_util_exports.SELU_SCALEALPHA}; - float scale = ${backend_util_exports.SELU_SCALE}; + float scaleAlpha = ${_.SELU_SCALEALPHA}; + float scale = ${_.SELU_SCALE}; return (x >= 0.0) ? scale * x : scaleAlpha * (exp(x) - 1.0); -`,selu3=unaryKernelFunc2({opSnippet:SELU}),seluConfig2={kernelName:Selu,backendName:"webgl",kernelFunc:selu3},SIGMOID="return 1.0 / (1.0 + exp(-1.0 * x));",sigmoid3=unaryKernelFunc2({opSnippet:SIGMOID}),sigmoidConfig2={kernelName:Sigmoid,backendName:"webgl",kernelFunc:sigmoid3},SIGN=` +`,MQ=Ye({opSnippet:DQ}),RQ={kernelName:gl,backendName:"webgl",kernelFunc:MQ},PQ="return 1.0 / (1.0 + exp(-1.0 * x));",OQ=Ye({opSnippet:PQ}),LQ={kernelName:pi,backendName:"webgl",kernelFunc:OQ},zQ=` if (isnan(x)) { return 0.0; } return sign(x); -`,sign3=unaryKernelFunc2({opSnippet:SIGN}),signConfig2={kernelName:Sign,backendName:"webgl",kernelFunc:sign3},SIN=CHECK_NAN_SNIPPET_UNARY+` +`,BQ=Ye({opSnippet:zQ}),WQ={kernelName:xl,backendName:"webgl",kernelFunc:BQ},VQ=gS+` return sin(x); -`,sin3=unaryKernelFunc2({opSnippet:SIN}),sinConfig2={kernelName:Sin,backendName:"webgl",kernelFunc:sin3},SINH=` +`,UQ=Ye({opSnippet:VQ}),GQ={kernelName:ci,backendName:"webgl",kernelFunc:UQ},HQ=` float e2x = exp(x); return (e2x - 1.0 / e2x) / 2.0; -`,sinh3=unaryKernelFunc2({opSnippet:SINH}),sinhConfig2={kernelName:Sinh,backendName:"webgl",kernelFunc:sinh3},SOFTPLUS=` +`,jQ=Ye({opSnippet:HQ}),qQ={kernelName:bl,backendName:"webgl",kernelFunc:jQ},KQ=` float epsilon = 1.1920928955078125e-7; float threshold = log(epsilon) + 2.0; @@ -3921,44 +3921,44 @@ return a / b;`,DIV_PACKED=` result = log(exp_x + 1.0); } return result; -`,softplus3=unaryKernelFunc2({opSnippet:SOFTPLUS}),softplusConfig2={kernelName:Softplus,backendName:"webgl",kernelFunc:softplus3},spaceToBatchND3=args=>{let{inputs,backend:backend2,attrs}=args,{x}=inputs,{blockShape,paddings}=attrs;util_exports.assert(x.shape.length<=4,()=>"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet");let prod5=blockShape.reduce((a,b)=>a*b),completePaddings=[[0,0]];completePaddings.push(...paddings);for(let i=1+blockShape.length;ibackend2.disposeIntermediateTensorInfo(t)),result},spaceToBatchNDConfig2={kernelName:SpaceToBatchND,backendName:"webgl",kernelFunc:spaceToBatchND3};function sparseToDense3(args){let{inputs,backend:backend2,attrs}=args,{sparseIndices,sparseValues,defaultValue}=inputs,{outputShape}=attrs,{sliceRank,numUpdates,strides,outputSize}=backend_util_exports.calculateShapes(sparseValues,sparseIndices,outputShape),sumDupeIndices=!1,program=new ScatterProgram(numUpdates,sliceRank,sparseIndices.shape.length,sparseValues.shape.length,strides,[outputSize,1],sumDupeIndices),res=backend2.runWebGLProgram(program,[sparseValues,sparseIndices,defaultValue],sparseValues.dtype),reshaped=reshape4({inputs:{x:res},backend:backend2,attrs:{shape:outputShape}});return backend2.disposeIntermediateTensorInfo(res),reshaped}var sparseToDenseConfig2={kernelName:SparseToDense,backendName:"webgl",kernelFunc:sparseToDense3};function splitV2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{numOrSizeSplits,axis}=attrs,$axis=util_exports.parseAxisParam(axis,x.shape)[0],splitSizes=backend_util_exports.prepareSplitSize(x,numOrSizeSplits,$axis),xRank=x.shape.length,begin=new Array(xRank).fill(0),size=x.shape.slice();return splitSizes.map(s=>{let sliceSize=[...size];sliceSize[$axis]=s;let sliceT=slice3({inputs:{x},backend:backend2,attrs:{begin,size:sliceSize}});return begin[$axis]+=s,sliceT})}var splitVConfig2={kernelName:SplitV,backendName:"webgl",kernelFunc:splitV2},SQRT="return sqrt(x);",sqrt3=unaryKernelFunc2({opSnippet:SQRT}),sqrtConfig2={kernelName:Sqrt,backendName:"webgl",kernelFunc:sqrt3},SQUARE="return x * x;",square3=unaryKernelFunc2({opSnippet:SQUARE}),squareConfig2={kernelName:Square,backendName:"webgl",kernelFunc:square3},SQUARED_DIFFERENCE="return (a - b) * (a - b);",squaredDifference3=binaryKernelFunc2({opSnippet:SQUARED_DIFFERENCE,packedOpSnippet:SQUARED_DIFFERENCE}),squaredDifferenceConfig2={kernelName:SquaredDifference,backendName:"webgl",kernelFunc:squaredDifference3};function step3({inputs,attrs,backend:backend2}){let{x}=inputs,opSnippet=CHECK_NAN_SNIPPET+` - return x > 0.0 ? 1.0 : float(${attrs.alpha}); - `,program=new UnaryOpProgram(x.shape,opSnippet);return backend2.runWebGLProgram(program,[x],x.dtype)}var stepConfig2={kernelName:Step,backendName:"webgl",kernelFunc:step3},StridedSliceProgram=class{constructor(begin,strides,size){this.variableNames=["x"],this.outputShape=size;let rank=size.length,inputDtype=getCoordsDataType(size.length),dtype=getCoordsDataType(size.length),newCoords="";if(rank===1)newCoords="coords * strides + begin";else{let outputAxis=0;newCoords=size.map((_,i)=>(outputAxis++,size.length===1?`coords * strides[${i}] + begin[${i}]`:`coords[${outputAxis-1}] * strides[${i}] + begin[${i}]`)).join(",")}this.userCode=` - ${inputDtype} begin = ${inputDtype}(${begin}); - ${inputDtype} strides = ${inputDtype}(${strides}); +`,XQ=Ye({opSnippet:KQ}),YQ={kernelName:vl,backendName:"webgl",kernelFunc:XQ},JQ=e=>{let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{blockShape:s,paddings:i}=a;k.assert(r.shape.length<=4,()=>"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet");let o=s.reduce((y,b)=>y*b),l=[[0,0]];l.push(...i);for(let y=1+s.length;yn.disposeIntermediateTensorInfo(y)),g},ZQ={kernelName:xc,backendName:"webgl",kernelFunc:JQ};function QQ(e){let{inputs:t,backend:n,attrs:a}=e,{sparseIndices:r,sparseValues:s,defaultValue:i}=t,{outputShape:o}=a,{sliceRank:l,numUpdates:c,strides:u,outputSize:p}=_.calculateShapes(s,r,o),d=!1,h=new a2(c,l,r.shape.length,s.shape.length,u,[p,1],d),m=n.runWebGLProgram(h,[s,r,i],s.dtype),f=xe({inputs:{x:m},backend:n,attrs:{shape:o}});return n.disposeIntermediateTensorInfo(m),f}var eee={kernelName:Kd,backendName:"webgl",kernelFunc:QQ};function tee(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{numOrSizeSplits:s,axis:i}=a,o=k.parseAxisParam(i,r.shape)[0],l=_.prepareSplitSize(r,s,o),c=r.shape.length,u=new Array(c).fill(0),p=r.shape.slice();return l.map(d=>{let h=[...p];h[o]=d;let m=kp({inputs:{x:r},backend:n,attrs:{begin:u,size:h}});return u[o]+=d,m})}var nee={kernelName:wl,backendName:"webgl",kernelFunc:tee},aee="return sqrt(x);",ree=Ye({opSnippet:aee}),see={kernelName:di,backendName:"webgl",kernelFunc:ree},iee="return x * x;",oee=Ye({opSnippet:iee}),lee={kernelName:vc,backendName:"webgl",kernelFunc:oee},r2="return (a - b) * (a - b);",uee=sn({opSnippet:r2,packedOpSnippet:r2}),cee={kernelName:fi,backendName:"webgl",kernelFunc:uee};function pee({inputs:e,attrs:t,backend:n}){let{x:a}=e,r=Pa+` + return x > 0.0 ? 1.0 : float(${t.alpha}); + `,s=new hs(a.shape,r);return n.runWebGLProgram(s,[a],a.dtype)}var dee={kernelName:Cl,backendName:"webgl",kernelFunc:pee},hee=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=n;let a=n.length,r=mt(n.length),s=mt(n.length),i="";if(a===1)i="coords * strides + begin";else{let o=0;i=n.map((l,c)=>(o++,n.length===1?`coords * strides[${c}] + begin[${c}]`:`coords[${o-1}] * strides[${c}] + begin[${c}]`)).join(",")}this.userCode=` + ${r} begin = ${r}(${e}); + ${r} strides = ${r}(${t}); void main() { - ${dtype} coords = getOutputCoords(); - setOutput(getX(${newCoords})); + ${s} coords = getOutputCoords(); + setOutput(getX(${i})); } - `}};function stridedSlice3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask}=attrs,{nonStrided,$begin,$strides,size,newShape,outShape}=slice_util_exports.sliceInfo(x.shape,begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask),$x=reshape4({inputs:{x},backend:backend2,attrs:{shape:newShape}}),result;if(nonStrided){let sliced=slice3({inputs:{x:$x},backend:backend2,attrs:{begin:$begin,size}});result=reshape4({inputs:{x:sliced},backend:backend2,attrs:{shape:outShape}}),backend2.disposeIntermediateTensorInfo(sliced)}else if(outShape.some(axis=>axis===0))result=backend2.makeTensorInfo(outShape,x.dtype,[]);else if(backend2.shouldExecuteOnCPU([$x])){let values=backend2.texData.get($x.dataId).values,xBuf=buffer($x.shape,$x.dtype,values),resultValues=stridedSliceImplCPU(outShape,xBuf,$strides,$begin);result=backend2.makeTensorInfo(outShape,$x.dtype,resultValues.values)}else{let program=new StridedSliceProgram($begin,$strides,outShape);result=backend2.runWebGLProgram(program,[$x],$x.dtype)}let resultReshaped=reshape4({inputs:{x:result},backend:backend2,attrs:{shape:outShape}});return backend2.disposeIntermediateTensorInfo($x),backend2.disposeIntermediateTensorInfo(result),resultReshaped}var stridedSliceConfig2={kernelName:StridedSlice,backendName:"webgl",kernelFunc:stridedSlice3},TAN="return tan(x);",tan3=unaryKernelFunc2({opSnippet:TAN}),tanConfig2={kernelName:Tan,backendName:"webgl",kernelFunc:tan3},TANH=` + `}};function mee(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{begin:s,end:i,strides:o,beginMask:l,endMask:c,ellipsisMask:u,newAxisMask:p,shrinkAxisMask:d}=a,{nonStrided:h,$begin:m,$strides:f,size:g,newShape:y,outShape:b}=dn.sliceInfo(r.shape,s,i,o,l,c,u,p,d),x=xe({inputs:{x:r},backend:n,attrs:{shape:y}}),v;if(h){let T=kp({inputs:{x},backend:n,attrs:{begin:m,size:g}});v=xe({inputs:{x:T},backend:n,attrs:{shape:b}}),n.disposeIntermediateTensorInfo(T)}else if(b.some(T=>T===0))v=n.makeTensorInfo(b,r.dtype,[]);else if(n.shouldExecuteOnCPU([x])){let T=n.texData.get(x.dataId).values,E=Le(x.shape,x.dtype,T),A=hK(b,E,f,m);v=n.makeTensorInfo(b,x.dtype,A.values)}else{let T=new hee(m,f,b);v=n.runWebGLProgram(T,[x],x.dtype)}let N=xe({inputs:{x:v},backend:n,attrs:{shape:b}});return n.disposeIntermediateTensorInfo(x),n.disposeIntermediateTensorInfo(v),N}var fee={kernelName:kl,backendName:"webgl",kernelFunc:mee},gee="return tan(x);",yee=Ye({opSnippet:gee}),bee={kernelName:Il,backendName:"webgl",kernelFunc:yee},xee=` float e2x = exp(-2.0 * abs(x)); return sign(x) * (1.0 - e2x) / (1.0 + e2x); -`,tanh4=unaryKernelFunc2({opSnippet:TANH}),tanhConfig2={kernelName:Tanh,backendName:"webgl",kernelFunc:tanh4},TileProgram=class{constructor(aShape,reps){this.variableNames=["A"];let outputShape=new Array(aShape.length);for(let i=0;i5)throw Error(`Tile for rank ${rank} is not yet supported`);if(rank===1)return`imod(resRC, ${aShape[0]})`;let currentCoords=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u"],sourceCoords=[];for(let i=0;iutil_exports.decodeString(d)),buf=buffer(x.shape,x.dtype,decodedData),outBuf=tileImplCPU(buf,reps);return backend2.makeTensorInfo(outBuf.shape,outBuf.dtype,outBuf.values)}let program=new TileProgram(x.shape,reps);return backend2.runWebGLProgram(program,[x],x.dtype)}var tileConfig2={kernelName:Tile,backendName:"webgl",kernelFunc:tile4};function topK2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{k,sorted}=attrs,xVals=backend2.readSync(x.dataId),[allTopKVals,allTopKIndices]=topKImplCPU(xVals,x.shape,x.dtype,k,sorted);return[backend2.makeTensorInfo(allTopKVals.shape,allTopKVals.dtype,allTopKVals.values),backend2.makeTensorInfo(allTopKIndices.shape,allTopKIndices.dtype,allTopKIndices.values)]}var topKConfig2={kernelName:TopK,backendName:"webgl",kernelFunc:topK2};function unique4(args){let{inputs,attrs,backend:backend2}=args,{axis}=attrs,{x}=inputs;assertNotComplex2(x,"unique"),console.warn("WARNING: ","UI might be locked temporarily as data is being downloaded");let values=backend2.readSync(x.dataId),{outputValues,outputShape,indices}=uniqueImplCPU(values,axis,x.shape,x.dtype);return[backend2.makeTensorInfo(outputShape,x.dtype,outputValues),backend2.makeTensorInfo([indices.length],"int32",indices)]}var uniqueConfig2={kernelName:Unique,backendName:"webgl",kernelFunc:unique4};function unpack2(args){let{inputs,backend:backend2,attrs}=args,{value}=inputs,{axis}=attrs;axis<0&&(axis+=value.shape.length);let x=value,xRank=x.shape.length,num=value.shape[axis],outShape=new Array(xRank-1),outIndex=0;for(let i=0;ibackend2.disposeIntermediateTensorInfo(t)),res}var unpackConfig2={kernelName:Unpack,backendName:"webgl",kernelFunc:unpack2},SegmentOpProgram=class{constructor(segOpInfo,segOpType){this.variableNames=["x","segmentIds"];let windowSize=segOpInfo.windowSize,batchSize=segOpInfo.batchSize,inSize=segOpInfo.inSize,numSegments=segOpInfo.numSegments,outSize=numSegments*Math.ceil(inSize/windowSize);this.outputShape=[batchSize,outSize];let initializationValue="0.0",returnValue="sumValue",windowSizeNearestVec4=Math.floor(windowSize/4)*4,windowSizeVec4Remainder=windowSize%4,updateSnippet=` + `}};function kee(e){let t=e.length;if(t>5)throw Error(`Tile for rank ${t} is not yet supported`);if(t===1)return`imod(resRC, ${e[0]})`;let n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u"],a=[];for(let r=0;rk.decodeString(u)),l=Le(r.shape,r.dtype,o),c=fK(l,s);return n.makeTensorInfo(c.shape,c.dtype,c.values)}let i=new Iee(r.shape,s);return n.runWebGLProgram(i,[r],r.dtype)}var Nee={kernelName:Hr,backendName:"webgl",kernelFunc:s2};function Tee(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{k:s,sorted:i}=a,o=n.readSync(r.dataId),[l,c]=gK(o,r.shape,r.dtype,s,i);return[n.makeTensorInfo(l.shape,l.dtype,l.values),n.makeTensorInfo(c.shape,c.dtype,c.values)]}var See={kernelName:Nl,backendName:"webgl",kernelFunc:Tee};function Cee(e){let{inputs:t,attrs:n,backend:a}=e,{axis:r}=n,{x:s}=t;bp(s,"unique"),console.warn("WARNING: ","UI might be locked temporarily as data is being downloaded");let i=a.readSync(s.dataId),{outputValues:o,outputShape:l,indices:c}=yK(i,r,s.shape,s.dtype);return[a.makeTensorInfo(l,s.dtype,o),a.makeTensorInfo([c.length],"int32",c)]}var Eee={kernelName:Xd,backendName:"webgl",kernelFunc:Cee};function _ee(e){let{inputs:t,backend:n,attrs:a}=e,{value:r}=t,{axis:s}=a;s<0&&(s+=r.shape.length);let i=r,o=i.shape.length,l=r.shape[s],c=new Array(o-1),u=0;for(let f=0;fn.disposeIntermediateTensorInfo(f)),m}var Fee={kernelName:Tl,backendName:"webgl",kernelFunc:_ee},Aee=class{constructor(e,t){this.variableNames=["x","segmentIds"];let n=e.windowSize,a=e.batchSize,r=e.inSize,s=e.numSegments,i=s*Math.ceil(r/n);this.outputShape=[a,i];let o="0.0",l="sumValue",c=Math.floor(n/4)*4,u=n%4,p=` sumValue += dot(values, segFilter); - `,checkValueOutOfBounds="";inSize%windowSize>0&&(checkValueOutOfBounds=` - if (inIdx < 0 || inIdx >= ${inSize}) { + `,d="";r%n>0&&(d=` + if (inIdx < 0 || inIdx >= ${r}) { return initializationValue; } - `);let checkSegmentIdOutOfBounds="";inSize%windowSize>0&&(checkSegmentIdOutOfBounds=` - if (inIdx < 0 || inIdx >= ${inSize}) { + `);let h="";r%n>0&&(h=` + if (inIdx < 0 || inIdx >= ${r}) { return -1.0; } `),this.userCode=` - const float initializationValue = ${initializationValue}; + const float initializationValue = ${o}; float getValue(int batch, int inIdx) { - ${checkValueOutOfBounds} + ${d} return getX(batch, inIdx); } float getSegmentIdAtIndex(int inIdx) { - ${checkSegmentIdOutOfBounds} + ${h} return getSegmentIds(inIdx); } @@ -3967,12 +3967,12 @@ return a / b;`,DIV_PACKED=` int batch = coords[0]; int outIdx = coords[1]; int inOffset = int(floor(float(outIdx) / float( - ${numSegments})) * float(${windowSize})); - int currentSeg = int(mod(float(outIdx), float(${numSegments}))); + ${s})) * float(${n})); + int currentSeg = int(mod(float(outIdx), float(${s}))); float sumValue = 0.0; - for (int i = 0; i < ${windowSizeNearestVec4}; i += 4) { + for (int i = 0; i < ${c}; i += 4) { int inIdx = inOffset + i; vec4 values = vec4( getValue(batch, inIdx), @@ -3988,11 +3988,11 @@ return a / b;`,DIV_PACKED=` int(getSegmentIdAtIndex(inIdx + 3)) == currentSeg ? 1 : 0 ); - ${updateSnippet} + ${p} } - int inIdx = inOffset + ${windowSizeNearestVec4}; - if (${windowSizeVec4Remainder===1}) { + int inIdx = inOffset + ${c}; + if (${u===1}) { vec4 values = vec4( getValue(batch, inIdx), initializationValue, @@ -4009,8 +4009,8 @@ return a / b;`,DIV_PACKED=` 0 ); - ${updateSnippet} - } else if (${windowSizeVec4Remainder===2}) { + ${p} + } else if (${u===2}) { vec4 values = vec4( getValue(batch, inIdx), getValue(batch, inIdx + 1), @@ -4025,8 +4025,8 @@ return a / b;`,DIV_PACKED=` 0 ); - ${updateSnippet} - } else if (${windowSizeVec4Remainder===3}) { + ${p} + } else if (${u===3}) { vec4 values = vec4( getValue(batch, inIdx), getValue(batch, inIdx + 1), @@ -4041,11 +4041,11 @@ return a / b;`,DIV_PACKED=` 0 ); - ${updateSnippet} + ${p} } - setOutput(${returnValue}); + setOutput(${l}); } - `}};function unsortedSegmentSum3(args){let{inputs,backend:backend2,attrs}=args,{x,segmentIds}=inputs,{numSegments}=attrs,xRank=x.shape.length,toDispose=[],axis=0,permutation=backend_util_exports.getAxesPermutation([axis],xRank),permutedX=x;permutation!=null&&(permutedX=transpose3({inputs:{x},backend:backend2,attrs:{perm:permutation}}),toDispose.push(permutedX),axis=backend_util_exports.getInnerMostAxes(1,xRank)[0]);let outShape=backend_util_exports.segment_util.computeOutShape(permutedX.shape,axis,numSegments),inSize=util_exports.sizeFromShape([permutedX.shape[axis]]),a2D=reshape4({inputs:{x:permutedX},backend:backend2,attrs:{shape:[-1,inSize]}});toDispose.push(a2D);let outputDType=sumOutType(x.dtype),segOpCompute=(x2,segOpType,segmentIds2,dtype,numSegments2)=>{let batchSize=x2.shape[0],inSize2=x2.shape[1],windowSize=backend_util_exports.segment_util.segOpComputeOptimalWindowSize(inSize2,numSegments2),segOpInfo={windowSize,inSize:inSize2,batchSize,numSegments:numSegments2},program=new SegmentOpProgram(segOpInfo,segOpType),output=backend2.compileAndRun(program,[x2,segmentIds2],dtype);if(toDispose.push(output),output.shape[1]===numSegments2)return output;let rangeInfo=range4({backend:backend2,attrs:{start:0,stop:numSegments2,step:1,dtype:"float32"}}),tileInfo=tile4({inputs:{x:rangeInfo},backend:backend2,attrs:{reps:[inSize2/windowSize]}});return toDispose.push(rangeInfo),toDispose.push(tileInfo),segOpCompute(output,segOpType,tileInfo,dtype,numSegments2)},segOpResult=segOpCompute(a2D,"unsortedSegmentSum",segmentIds,outputDType,numSegments),reshaped=reshape4({inputs:{x:segOpResult},backend:backend2,attrs:{shape:outShape}}),result=reshaped;if(permutation!=null){toDispose.push(reshaped);let perm=backend_util_exports.getUndoAxesPermutation(permutation);result=transpose3({inputs:{x:result},backend:backend2,attrs:{perm}})}return toDispose.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),result}var unsortedSegmentSumConfig2={kernelName:UnsortedSegmentSum,backendName:"webgl",kernelFunc:unsortedSegmentSum3},kernelConfigs2=[LRNConfig,LRNGradConfig,_fusedMatMulConfig2,absConfig2,acosConfig2,acoshConfig2,addConfig2,addNConfig2,allConfig2,anyConfig2,argMaxConfig2,argMinConfig2,asinConfig2,asinhConfig2,atan2Config2,atanConfig2,atanhConfig2,avgPool3DConfig2,avgPoolConfig2,avgPoolGrad3DConfig,avgPoolGradConfig3,batchMatMulConfig2,batchNormConfig2,batchToSpaceNDConfig2,bincountConfig2,castConfig2,ceilConfig2,clipByValueConfig,complexAbsConfig2,complexConfig2,concatConfig2,conv2DBackpropFilterConfig2,conv2DBackpropInputConfig2,conv2DConfig2,conv3DBackpropFilterV2Config2,conv3DBackpropInputConfig,conv3DConfig2,cosConfig2,coshConfig2,cropAndResizeConfig2,cumsumConfig2,denseBincountConfig2,depthToSpaceConfig2,depthwiseConv2dNativeBackpropFilterConfig2,depthwiseConv2dNativeBackpropInputConfig2,depthwiseConv2dNativeConfig2,diagConfig2,dilation2DConfig,eluConfig2,eluGradConfig3,equalConfig2,erfConfig2,expConfig2,expandDimsConfig2,expm1Config2,fftConfig2,fillConfig2,flipLeftRightConfig2,floorConfig2,floorDivConfig2,fromPixelsConfig,fusedConv2DConfig2,fusedDepthwiseConv2DConfig2,gatherNdConfig2,gatherV2Config2,greaterConfig2,greaterEqualConfig2,identityConfig2,ifftConfig2,imagConfig2,isFiniteConfig2,isInfConfig2,isNaNConfig2,leakyReluConfig2,lessConfig2,lessEqualConfig2,linSpaceConfig2,log1pConfig2,logConfig2,logicalAndConfig2,logicalNotConfig2,logicalOrConfig2,maxConfig2,maxPool3DConfig2,maxPoolConfig2,maxPoolGrad3DConfig,maxPoolGradConfig3,maxPoolWithArgmaxConfig2,maximumConfig2,meanConfig2,minConfig2,minimumConfig2,mirrorPadConfig2,modConfig2,multinomialConfig2,multiplyConfig2,negConfig2,nonMaxSuppressionV3Config2,nonMaxSuppressionV4Config2,nonMaxSuppressionV5Config2,notEqualConfig2,oneHotConfig2,onesLikeConfig2,packConfig2,padV2Config2,powConfig2,preluConfig2,prodConfig2,rangeConfig2,realConfig2,realDivConfig2,reciprocalConfig2,relu6Config2,reluConfig2,reshapeConfig2,resizeBilinearConfig2,resizeBilinearGradConfig3,resizeNearestNeighborConfig2,resizeNearestNeighborGradConfig3,reverseConfig2,rotateWithOffsetConfig2,roundConfig2,rsqrtConfig2,scatterNdConfig2,selectConfig2,seluConfig2,sigmoidConfig2,signConfig2,sinConfig2,sinhConfig2,sliceConfig2,softmaxConfig2,softplusConfig2,spaceToBatchNDConfig2,sparseToDenseConfig2,splitVConfig2,sqrtConfig2,squareConfig2,squaredDifferenceConfig2,stepConfig2,stridedSliceConfig2,subConfig2,sumConfig2,tanConfig2,tanhConfig2,tileConfig2,topKConfig2,transposeConfig2,uniqueConfig2,unpackConfig2,unsortedSegmentSumConfig2,zerosLikeConfig2];for(let kernelConfig of kernelConfigs2)registerKernel(kernelConfig);var version7="2.8.3",version8={"tfjs-core":version,"tfjs-backend-cpu":version5,"tfjs-backend-webgl":version6,"tfjs-data":version4,"tfjs-layers":version2,"tfjs-converter":version3,tfjs:version7},CppDType;(function(CppDType2){CppDType2[CppDType2.float32=0]="float32",CppDType2[CppDType2.int32=1]="int32",CppDType2[CppDType2.bool=2]="bool",CppDType2[CppDType2.string=3]="string",CppDType2[CppDType2.complex64=4]="complex64"})(CppDType||(CppDType={}));var FusableActivation;(function(FusableActivation2){FusableActivation2[FusableActivation2.linear=0]="linear",FusableActivation2[FusableActivation2.relu=1]="relu",FusableActivation2[FusableActivation2.relu6=2]="relu6",FusableActivation2[FusableActivation2.prelu=3]="prelu",FusableActivation2[FusableActivation2.leakyrelu=4]="leakyrelu"})(FusableActivation||(FusableActivation={}));var wasmFusedMatMul;function setup(backend2){wasmFusedMatMul=backend2.wasm.cwrap(_FusedMatMul,null,["number","array","number","number","array","number","number","number","number","number","number","number","number"])}function fusedBatchMatMul(args){let{inputs,backend:backend2,attrs}=args,{a,b,bias,preluActivationWeights}=inputs;if(a.dtype!=="float32"||b.dtype!=="float32")throw new Error("_FusedMatMul for non non-float32 tensors not yet supported.");let{transposeA,transposeB,activation:activation2,leakyreluAlpha}=attrs,aId=backend2.dataIdMap.get(a.dataId).id,bId=backend2.dataIdMap.get(b.dataId).id,biasId=0;if(bias!=null){let biasData=backend2.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`_FusedMatMul only supports rank-1 bias but got rank ${biasData.shape.length}.`);biasId=biasData.id}let preluActivationWeightsId=preluActivationWeights==null?0:backend2.dataIdMap.get(preluActivationWeights.dataId).id,fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedConv2D in the wasm backend.`);let leftDim=transposeA?a.shape[2]:a.shape[1],rightDim=transposeB?b.shape[1]:b.shape[2],batchDim=a.shape[0],out=backend2.makeOutput([batchDim,leftDim,rightDim],a.dtype),outId=backend2.dataIdMap.get(out.dataId).id,aShapeBytes=new Uint8Array(new Int32Array(a.shape).buffer),bShapeBytes=new Uint8Array(new Int32Array(b.shape).buffer);return wasmFusedMatMul(aId,aShapeBytes,a.shape.length,bId,bShapeBytes,b.shape.length,transposeA,transposeB,fusedActivation,biasId,preluActivationWeightsId,leakyreluAlpha||0,outId),out}var fusedMatMulConfig={kernelName:_FusedMatMul,backendName:"wasm",setupFunc:setup,kernelFunc:fusedBatchMatMul};function createUnaryKernelConfig(kernelName){let wasmFunc9;function setupFunc3(backend2){wasmFunc9=backend2.wasm.cwrap(kernelName,null,["number","number"])}function kernelFunc3(args){let{backend:backend2,inputs:{x}}=args,xId=backend2.dataIdMap.get(x.dataId).id,out=backend2.makeOutput(x.shape,x.dtype),outId=backend2.dataIdMap.get(out.dataId).id;return util_exports.sizeFromShape(out.shape)===0||wasmFunc9(xId,outId),out}return{kernelName,backendName:"wasm",setupFunc:setupFunc3,kernelFunc:kernelFunc3}}var absConfig3=createUnaryKernelConfig(Abs);function createBinaryKernelConfig(kernelName,supportsFullBroadcast17,dtype){let wasmFunc9;function setupFunc3(backend2){wasmFunc9=backend2.wasm.cwrap(kernelName,null,["number","array","number","number","array","number","number","number"])}function kernelFunc3(args){let{backend:backend2,inputs}=args,{a,b}=inputs,aId=backend2.dataIdMap.get(a.dataId).id,bId=backend2.dataIdMap.get(b.dataId).id,outputType=dtype!=null?dtype:a.dtype,newShape=backend_util_exports.assertAndGetBroadcastShape(a.shape,b.shape),out=backend2.makeOutput(newShape,outputType);if(util_exports.sizeFromShape(newShape)===0)return out;let aShapeBytes=new Uint8Array(new Int32Array(a.shape).buffer),bShapeBytes=new Uint8Array(new Int32Array(b.shape).buffer),outId=backend2.dataIdMap.get(out.dataId).id,kernelFunc4=()=>wasmFunc9(aId,aShapeBytes,a.shape.length,bId,bShapeBytes,b.shape.length,CppDType[a.dtype],outId);if(supportsFullBroadcast17&&a.dtype==="float32")return kernelFunc4(),out;let aBroadcastDims=backend_util_exports.getBroadcastDims(a.shape,newShape),bBroadcastDims=backend_util_exports.getBroadcastDims(b.shape,newShape),loopsOverAllOfA=aBroadcastDims.every((v,i)=>v===i),loopsOverAllOfB=bBroadcastDims.every((v,i)=>v===i);if(loopsOverAllOfA&&loopsOverAllOfB)return kernelFunc4(),out;throw new Error(`Broadcasting along outer dims is not yet supported for ${a.dtype} ${kernelName}.`)}return{kernelName,backendName:"wasm",setupFunc:setupFunc3,kernelFunc:kernelFunc3}}var supportsFullBroadcast=!0,addConfig3=createBinaryKernelConfig(Add,supportsFullBroadcast),wasmFunc;function setupFunc(backend2){wasmFunc=backend2.wasm.cwrap(AddN,null,["array","number","number","number"])}function addn(args){let{inputs,backend:backend2}=args,out=backend2.makeOutput(inputs[0].shape,inputs[0].dtype);if(util_exports.sizeFromShape(out.shape)===0)return out;let inputIds=inputs.map(x=>backend2.dataIdMap.get(x.dataId).id),inputIdsBytes=new Uint8Array(new Int32Array(inputIds).buffer),outId=backend2.dataIdMap.get(out.dataId).id;return wasmFunc(inputIdsBytes,inputIds.length,CppDType[out.dtype],outId),out}var addNConfig3={kernelName:AddN,backendName:"wasm",setupFunc,kernelFunc:addn};function identity4(args){let{inputs:{x},backend:backend2}=args,out=backend2.makeOutput(x.shape,x.dtype),inVals=backend2.typedArrayFromHeap(x);return backend2.typedArrayFromHeap(out).set(inVals),out}var identityConfig3={kernelName:Identity,backendName:"wasm",kernelFunc:identity4},wasmTranspose;function setup2(backend2){wasmTranspose=backend2.wasm.cwrap(Transpose,null,["number","array","number","number","number","array","number"])}function transpose4(args){let{inputs,backend:backend2,attrs}=args,[reducedShape,perm]=removeOneSizeDims(inputs.x.shape,attrs.perm),permIsNoOp=!0;for(let i=0;i=i&&(minValIdx===-1||newPerm[minValIdx]>newPerm[j])&&(minValIdx=j);newPerm[minValIdx]=i}return[newShape,newPerm]}var transposeConfig3={kernelName:Transpose,backendName:"wasm",kernelFunc:transpose4,setupFunc:setup2};function permuteAxesAndTranspose(x,axis,backend2){let xShape=x.shape,xRank=x.shape.length,originalAxes=util_exports.parseAxisParam(axis,xShape),axes=originalAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),xTransposed=null,inputWasTransposed=!1;if(permutedAxes!=null){let newShape=new Array(xRank);for(let i=0;i`new shape: ${$shape}, old shape: ${x.shape}. New shape and old shape must have the same number of elements.`),{dataId:x.dataId,shape:$shape,dtype:x.dtype}}var reshapeConfig3={kernelName:Reshape,backendName:"wasm",kernelFunc:reshape5},wasmBatchMatMul;function setup5(backend2){wasmBatchMatMul=backend2.wasm.cwrap(BatchMatMul,null,["number","array","number","number","array","number","number","number","number"])}function batchMatMul3(args){let{inputs,backend:backend2,attrs}=args,{a,b}=inputs,{transposeA,transposeB}=attrs;if(a.dtype!=="float32"||b.dtype!=="float32")throw new Error("BatchMatMul for non non-float32 tensors not yet supported.");let aRank=a.shape.length,bRank=b.shape.length,innerShapeA=transposeA?a.shape[aRank-2]:a.shape[aRank-1],innerShapeB=transposeB?b.shape[bRank-1]:b.shape[bRank-2],outerShapeA=transposeA?a.shape[aRank-1]:a.shape[aRank-2],outerShapeB=transposeB?b.shape[bRank-2]:b.shape[bRank-1],outerDimsA=a.shape.slice(0,-2),outerDimsB=b.shape.slice(0,-2),batchDimA=util_exports.sizeFromShape(outerDimsA),batchDimB=util_exports.sizeFromShape(outerDimsB),batchDimsCompatible=batchDimA===batchDimB||batchDimA===1||batchDimB===1;util_exports.assert(aRank>=2&&bRank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`);let outShape=(batchDimA>batchDimB?a.shape.slice(0,-2):b.shape.slice(0,-2)).concat([outerShapeA,outerShapeB]);util_exports.assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${a.shape} and ${b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let a3dShape=transposeA?[batchDimA,innerShapeA,outerShapeA]:[batchDimA,outerShapeA,innerShapeA],b3dShape=transposeB?[batchDimB,outerShapeB,innerShapeB]:[batchDimB,innerShapeB,outerShapeB],a3d=reshape5({inputs:{x:a},backend:backend2,attrs:{shape:a3dShape}}),b3d=reshape5({inputs:{x:b},backend:backend2,attrs:{shape:b3dShape}}),a3dId=backend2.dataIdMap.get(a3d.dataId).id,b3dId=backend2.dataIdMap.get(b3d.dataId).id,leftDim=transposeA?a3d.shape[2]:a3d.shape[1],rightDim=transposeB?b3d.shape[1]:b3d.shape[2],batchDim=Math.max(batchDimA,batchDimB),out=backend2.makeOutput([batchDim,leftDim,rightDim],a3d.dtype),outId=backend2.dataIdMap.get(out.dataId).id,aShapeBytes=new Uint8Array(new Int32Array(a3d.shape).buffer),bShapeBytes=new Uint8Array(new Int32Array(b3d.shape).buffer);return wasmBatchMatMul(a3dId,aShapeBytes,a3d.shape.length,b3dId,bShapeBytes,b3d.shape.length,transposeA,transposeB,outId),out.shape=outShape,out}var batchMatMulConfig3={kernelName:BatchMatMul,backendName:"wasm",setupFunc:setup5,kernelFunc:batchMatMul3};function cast5(args){let{inputs:{x},attrs:{dtype},backend:backend2}=args,out=backend2.makeOutput(x.shape,dtype),inVals=backend2.typedArrayFromHeap(x);return backend2.typedArrayFromHeap(out).set(inVals),out}var castConfig3={kernelName:Cast,backendName:"wasm",kernelFunc:cast5},wasmClip;function setup6(backend2){wasmClip=backend2.wasm.cwrap(ClipByValue,null,["number","number","number","number"])}function clip2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{clipValueMin,clipValueMax}=attrs,xId=backend2.dataIdMap.get(x.dataId).id,out=backend2.makeOutput(x.shape,x.dtype),outId=backend2.dataIdMap.get(out.dataId).id;return wasmClip(xId,clipValueMin,clipValueMax,outId),out}var clipByValueConfig2={kernelName:ClipByValue,backendName:"wasm",setupFunc:setup6,kernelFunc:clip2};function concat4(args){let{inputs,backend:backend2}=args,axis=util_exports.parseAxisParam(args.attrs.axis,inputs[0].shape)[0],outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),axis),$inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return identity4({inputs:{x:$inputs[0]},backend:backend2});let out=backend2.makeOutput(outShape,inputs[0].dtype);if(util_exports.sizeFromShape(outShape)===0)return out;let shapes=$inputs.map(t=>t.shape);if(backend_util_exports.assertParamsConsistent(shapes,axis),$inputs[0].dtype==="string"){let inputs2D=$inputs.map(t=>{let innerSize=util_exports.sizeFromShape(t.shape.slice(axis));return reshape5({inputs:{x:t},backend:backend2,attrs:{shape:[-1,innerSize]}})}),inputsValShapes=inputs2D.map(t=>({vals:backend2.readSync(t.dataId),shape:t.shape}));outShape=backend_util_exports.computeOutShape(inputs2D.map(t=>t.shape),1);let simplyConcat=inputs2D[0].shape[0]===1,outVals2=concatImpl(inputsValShapes,outShape,inputs[0].dtype,simplyConcat),finalOutShape=backend_util_exports.computeOutShape($inputs.map(t=>t.shape),axis);out.shape=finalOutShape;let outData=backend2.dataIdMap.get(out.dataId);return outData.stringBytes=backend_util_exports.fromStringArrayToUint8(outVals2),out}let batchDim=util_exports.sizeFromShape($inputs[0].shape.slice(0,axis)),sumInnerDims=0,innerDims=$inputs.map(input2=>{let innerDim=util_exports.sizeFromShape(input2.shape.slice(axis));return sumInnerDims+=innerDim,innerDim}),inVals=$inputs.map(input2=>backend2.typedArrayFromHeap(input2)),outVals=backend2.typedArrayFromHeap(out);for(let b=0;b`cumsum does not support ${x.dtype} tensors in the WASM backend`);let permutation=backend_util_exports.getAxesPermutation([axis],xRank),permutedX=x;permutation!==null&&(permutedX=transpose4({inputs:{x},attrs:{perm:permutation},backend:backend2}));let permutedAxis=backend_util_exports.getInnerMostAxes(1,xRank)[0];backend_util_exports.assertAxesAreInnerMostDims("cumsum",[permutedAxis],xRank);let permutedOut=backend2.makeOutput(permutedX.shape,permutedX.dtype),finalDim=permutedX.shape[permutedAxis],permutedXId=backend2.dataIdMap.get(permutedX.dataId).id,permutedOutId=backend2.dataIdMap.get(permutedOut.dataId).id;wasmCumsum(permutedXId,exclusive?1:0,reverse5?1:0,finalDim,permutedOutId,CppDType[x.dtype]);let out=permutedOut;if(permutation!==null){let undoPermutation=backend_util_exports.getUndoAxesPermutation(permutation);out=transpose4({inputs:{x:permutedOut},attrs:{perm:undoPermutation},backend:backend2}),backend2.disposeData(permutedX.dataId),backend2.disposeData(permutedOut.dataId)}return out}var cumsumConfig3={kernelName:Cumsum,backendName:"wasm",setupFunc:setup10,kernelFunc:cumsum4},wasmDepthToSpace;function setup11(backend2){wasmDepthToSpace=backend2.wasm.cwrap(DepthToSpace,null,["number","number","number","array","number","array","array","number","number"])}function depthToSpace4(args){let{backend:backend2,inputs,attrs}=args,{x}=inputs,{blockSize,dataFormat}=attrs;util_exports.assert(blockSize>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=dataFormat==="NHWC"?x.shape[1]:x.shape[2],inputWidth=dataFormat==="NHWC"?x.shape[2]:x.shape[3],inputDepth=dataFormat==="NHWC"?x.shape[3]:x.shape[1],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),outputShape=dataFormat==="NHWC"?[batchSize,outputHeight,outputWidth,outputDepth]:[batchSize,outputDepth,outputHeight,outputWidth],out=backend2.makeOutput(outputShape,"float32"),xId=backend2.dataIdMap.get(x.dataId).id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(x.shape)).buffer),outputShapeBytes=new Uint8Array(new Int32Array(outputShape).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(outputShape)).buffer),outId=backend2.dataIdMap.get(out.dataId).id;return wasmDepthToSpace(xId,blockSize,dataFormat==="NHWC"?1:0,xStridesBytes,x.shape.length-1,outputShapeBytes,outStridesBytes,outputShape.length,outId),out}var depthToSpaceConfig3={kernelName:DepthToSpace,backendName:"wasm",setupFunc:setup11,kernelFunc:depthToSpace4},wasmDepthwiseConv2d;function setup12(backend2){wasmDepthwiseConv2d=backend2.wasm.cwrap(DepthwiseConv2dNative,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function depthwiseConv2d5(args){let{inputs,attrs,backend:backend2}=args,{x,filter}=inputs,xId=backend2.dataIdMap.get(x.dataId).id,filterId=backend2.dataIdMap.get(filter.dataId).id,{strides,dilations,pad:pad3,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1]:dilations,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,$dilations,pad3,dimRoundingMode,!0),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,outputChannels=convInfo.outChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0;if(convInfo.dataFormat!=="channelsLast")throw new Error(`wasm backend DepthwiseConv2dNative does not support dataFormat:'${convInfo.dataFormat}'. Please use 'channelsLast'.`);let out=backend2.makeOutput(convInfo.outShape,"float32"),outId=backend2.dataIdMap.get(out.dataId).id;return wasmDepthwiseConv2d(xId,x.shape[0],x.shape[1],x.shape[2],filterId,filterHeight,filterWidth,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,outId),out}var depthwiseConv2dNativeConfig3={kernelName:DepthwiseConv2dNative,backendName:"wasm",setupFunc:setup12,kernelFunc:depthwiseConv2d5},supportsFullBroadcast2=!1,equalConfig3=createBinaryKernelConfig(Equal,supportsFullBroadcast2,"bool"),expConfig3=createUnaryKernelConfig(Exp);function expandDims5(args){let{inputs,attrs,backend:backend2}=args,{input:input2}=inputs,{dim}=attrs,inputRank=input2.shape.length,newShape=input2.shape.slice(),$dim=dim;return dim<0&&(util_exports.assert(-(inputRank+1)<=dim,()=>`Axis must be in the interval [${-(inputRank+1)}, ${inputRank}]`),$dim=inputRank+dim+1),newShape.splice($dim,0,1),reshape5({inputs:{x:input2},backend:backend2,attrs:{shape:newShape}})}var expandDimsConfig3={kernelName:ExpandDims,backendName:"wasm",kernelFunc:expandDims5};function fill4(args){let{attrs:{shape,value,dtype},backend:backend2}=args,out=backend2.makeOutput(shape,dtype);return backend2.typedArrayFromHeap(out).fill(value),out}var fillConfig3={kernelName:Fill,backendName:"wasm",kernelFunc:fill4},wasmFlipLeftRight;function setup13(backend2){wasmFlipLeftRight=backend2.wasm.cwrap(FlipLeftRight,null,["number","number","number","number","number","number"])}function flipLeftRight2(args){let{inputs,backend:backend2}=args,{image:image3}=inputs,out=backend2.makeOutput(image3.shape,image3.dtype),imageId=backend2.dataIdMap.get(image3.dataId).id,outId=backend2.dataIdMap.get(out.dataId).id,[batch,imageHeight,imageWidth,numChannels]=image3.shape;return wasmFlipLeftRight(imageId,batch,imageHeight,imageWidth,numChannels,outId),out}var flipLeftRightConfig3={kernelName:FlipLeftRight,backendName:"wasm",kernelFunc:flipLeftRight2,setupFunc:setup13},floorConfig3=createUnaryKernelConfig(Floor),supportsFullBroadcast3=!1,floorDivConfig3=createBinaryKernelConfig(FloorDiv,supportsFullBroadcast3),wasmBatchNorm;function setup14(backend2){wasmBatchNorm=backend2.wasm.cwrap(FusedBatchNorm,null,["number","number","number","number","number","number","number"])}function fusedBatchNorm(args){let{backend:backend2,inputs,attrs}=args,{varianceEpsilon}=attrs,{x,mean:mean4,variance,offset,scale:scale22}=inputs,xId=backend2.dataIdMap.get(x.dataId).id,meanId=backend2.dataIdMap.get(mean4.dataId).id,varianceId=backend2.dataIdMap.get(variance.dataId).id,offsetId=offset!=null?backend2.dataIdMap.get(offset.dataId).id:0,scaleId=scale22!=null?backend2.dataIdMap.get(scale22.dataId).id:0,out=backend2.makeOutput(x.shape,x.dtype);if(util_exports.sizeFromShape(x.shape)===0)return out;let outId=backend2.dataIdMap.get(out.dataId).id;return wasmBatchNorm(xId,meanId,varianceId,offsetId,scaleId,varianceEpsilon,outId),out}var fusedBatchNormConfig={kernelName:FusedBatchNorm,backendName:"wasm",setupFunc:setup14,kernelFunc:fusedBatchNorm},wasmFusedConv2d;function setup15(backend2){wasmFusedConv2d=backend2.wasm.cwrap(FusedConv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function fusedConv2d2(args){let{inputs,attrs,backend:backend2}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad3,dilations,dataFormat,dimRoundingMode,activation:activation2,leakyreluAlpha}=attrs,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad3,dimRoundingMode),fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedConv2D in the wasm backend.`);let xId=backend2.dataIdMap.get(x.dataId).id,filterId=backend2.dataIdMap.get(filter.dataId).id,outputChannels=convInfo.outChannels,biasId=0;if(bias!=null){let biasData=backend2.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`FusedConv2D only supports rank-1 bias but got rank ${biasData.shape.length}.`);if(biasData.shape[0]!==outputChannels)throw new Error(`FusedConv2D bias shape (${biasData.shape}) does not match the number of output channels (${outputChannels})`);biasId=biasData.id}let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0,batchSize=convInfo.batchSize,inHeight=convInfo.inHeight,inWidth=convInfo.inWidth;if(dataFormat!=="NHWC")throw new Error(`wasm backend FusedConv2D does not support dataFormat:'${dataFormat}'. Please use 'NHWC'.`);let out=backend2.makeOutput(convInfo.outShape,"float32"),outId=backend2.dataIdMap.get(out.dataId).id,preluActivationWeightsId=preluActivationWeights==null?0:backend2.dataIdMap.get(preluActivationWeights.dataId).id;return wasmFusedConv2d(xId,batchSize,inHeight,inWidth,filterId,filterHeight,filterWidth,biasId,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,fusedActivation,preluActivationWeightsId,leakyreluAlpha||0,outId),out}var fusedConv2DConfig3={kernelName:FusedConv2D,backendName:"wasm",setupFunc:setup15,kernelFunc:fusedConv2d2},wasmFusedDepthwiseConv2d;function setup16(backend2){wasmFusedDepthwiseConv2d=backend2.wasm.cwrap(FusedDepthwiseConv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function fusedDepthwiseConv2d(args){let{inputs,attrs,backend:backend2}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad3,dilations,dataFormat,dimRoundingMode,activation:activation2,leakyreluAlpha}=attrs,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad3,dimRoundingMode,!0),fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedDepthwiseConv2D in the wasm backend.`);let xId=backend2.dataIdMap.get(x.dataId).id,filterId=backend2.dataIdMap.get(filter.dataId).id,outputChannels=convInfo.outChannels,biasId=0;if(bias!=null){let biasData=backend2.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`FusedDepthwiseConv2D only supports rank-1 bias but got rank ${biasData.shape.length}.`);if(biasData.shape[0]!==outputChannels)throw new Error(`FusedDepthwiseConv2D bias shape (${biasData.shape}) does not match the number of output channels (${outputChannels})`);biasId=biasData.id}let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0,batchSize=convInfo.batchSize,inHeight=convInfo.inHeight,inWidth=convInfo.inWidth;if(dataFormat!=="NHWC")throw new Error(`wasm backend FusedDepthwiseConv2D does not support dataFormat:'${dataFormat}'. Please use 'NHWC'.`);let out=backend2.makeOutput(convInfo.outShape,"float32"),outId=backend2.dataIdMap.get(out.dataId).id,preluActivationWeightsId=preluActivationWeights==null?0:backend2.dataIdMap.get(preluActivationWeights.dataId).id;return wasmFusedDepthwiseConv2d(xId,batchSize,inHeight,inWidth,filterId,filterHeight,filterWidth,biasId,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,fusedActivation,preluActivationWeightsId,leakyreluAlpha||0,outId),out}var fusedDepthwiseConv2DConfig3={kernelName:FusedDepthwiseConv2D,backendName:"wasm",setupFunc:setup16,kernelFunc:fusedDepthwiseConv2d},wasmGatherNd;function setup17(backend2){wasmGatherNd=backend2.wasm.cwrap(GatherNd,null,["number","number","number","number","number","number","array","number"])}function gatherNd3(args){let{backend:backend2,inputs}=args,{params,indices}=inputs,[resultShape,numSlices,sliceSize,strides]=gather_nd_util_exports.prepareAndValidate(params,indices),out=backend2.makeOutput(resultShape,params.dtype);if(numSlices===0)return out;let indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],xId=backend2.dataIdMap.get(params.dataId).id,indicesId=backend2.dataIdMap.get(indices.dataId).id,stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outId=backend2.dataIdMap.get(out.dataId).id;return wasmGatherNd(xId,CppDType[params.dtype],indicesId,numSlices,sliceRank,sliceSize,stridesBytes,outId),out}var gatherNdConfig3={kernelName:GatherNd,backendName:"wasm",setupFunc:setup17,kernelFunc:gatherNd3},wasmGather;function setup18(backend2){wasmGather=backend2.wasm.cwrap("Gather",null,["number","number","array","number","number","number","array","number"])}function gatherV23(args){let{backend:backend2,inputs,attrs}=args,{x,indices}=inputs,{axis,batchDims}=attrs,parsedAxis=util_exports.parseAxisParam(axis,x.shape)[0],shapeInfo=backend_util_exports.segment_util.collectGatherOpShapeInfo(x,indices,parsedAxis,batchDims),flattenX=reshape5({inputs:{x},attrs:{shape:[shapeInfo.batchSize,shapeInfo.outerSize,shapeInfo.dimSize,shapeInfo.sliceSize]},backend:backend2}),indicesSize=util_exports.sizeFromShape(indices.shape),flattenIndex=reshape5({inputs:{x:indices},attrs:{shape:[shapeInfo.batchSize,indicesSize/shapeInfo.batchSize]},backend:backend2}),flattenOutputShape=[shapeInfo.batchSize,shapeInfo.outerSize,indicesSize/shapeInfo.batchSize,shapeInfo.sliceSize],out=backend2.makeOutput(flattenOutputShape,x.dtype);if(util_exports.sizeFromShape(x.shape)===0)return out;let stridesSize=flattenX.shape.length-1,xId=backend2.dataIdMap.get(flattenX.dataId).id,indicesId=backend2.dataIdMap.get(flattenIndex.dataId).id,outId=backend2.dataIdMap.get(out.dataId).id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(flattenX.shape)).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(flattenOutputShape)).buffer);return wasmGather(xId,CppDType[x.dtype],xStridesBytes,stridesSize,indicesId,shapeInfo.batchSize,outStridesBytes,outId),out.shape=shapeInfo.outputShape,out}var gatherV2Config3={kernelName:GatherV2,backendName:"wasm",setupFunc:setup18,kernelFunc:gatherV23},supportsFullBroadcast4=!1,greaterConfig3=createBinaryKernelConfig(Greater,supportsFullBroadcast4,"bool"),supportsFullBroadcast5=!1,greaterEqualConfig3=createBinaryKernelConfig(GreaterEqual,supportsFullBroadcast5,"bool"),wasmFunc3;function setupFunc2(backend2){wasmFunc3=backend2.wasm.cwrap(LeakyRelu,null,["number","number","number"])}function leakyRelu4(args){let{inputs:{x},attrs:{alpha},backend:backend2}=args,xId=backend2.dataIdMap.get(x.dataId).id,out=backend2.makeOutput(x.shape,x.dtype);if(util_exports.sizeFromShape(x.shape)!==0){let outId=backend2.dataIdMap.get(out.dataId).id;wasmFunc3(xId,alpha,outId)}return out}var leakyReluConfig3={kernelName:LeakyRelu,backendName:"wasm",setupFunc:setupFunc2,kernelFunc:leakyRelu4},supportsFullBroadcast6=!1,lessConfig3=createBinaryKernelConfig(Less,supportsFullBroadcast6,"bool"),supportsFullBroadcast7=!1,lessEqualConfig3=createBinaryKernelConfig(LessEqual,supportsFullBroadcast7,"bool"),logConfig3=createUnaryKernelConfig(Log),supportsFullBroadcast8=!1,logicalAndConfig3=createBinaryKernelConfig(LogicalAnd,supportsFullBroadcast8,"bool"),wasmMax;function setup19(backend2){wasmMax=backend2.wasm.cwrap(Max,null,["number, number, number"])}function max5(args){let{backend:backend2,inputs,attrs}=args,{reductionIndices:axis,keepDims}=attrs,{x}=inputs,inputId=backend2.dataIdMap.get(x.dataId).id,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend2);if(inputWasTransposed){let transposedId=backend2.dataIdMap.get(transposed.dataId).id;input2=transposed,inputId=transposedId}let inputRank=input2.shape.length;backend_util_exports.assertAxesAreInnerMostDims("max",axes,inputRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,axes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend2.makeOutput(outShape,x.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend2.dataIdMap.get(out.dataId).id;wasmMax(inputId,reduceSize,outId)}if(inputWasTransposed&&backend2.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var maxConfig3={kernelName:Max,backendName:"wasm",setupFunc:setup19,kernelFunc:max5},supportsFullBroadcast9=!1,maximumConfig3=createBinaryKernelConfig(Maximum,supportsFullBroadcast9),wasmMaxPool;function setup20(backend2){wasmMaxPool=backend2.wasm.cwrap(MaxPool,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function maxPool4(args){let{inputs,attrs,backend:backend2}=args,x=inputs.x,xId=backend2.dataIdMap.get(x.dataId).id,{filterSize,strides,pad:pad3,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad3,dimRoundingMode),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,outputChannels=convInfo.outChannels;if(convInfo.dataFormat!=="channelsLast")throw new Error(`wasm backend does not support dataFormat:'${convInfo.dataFormat}'. Please use 'channelsLast'.`);let out=backend2.makeOutput(convInfo.outShape,"float32"),outId=backend2.dataIdMap.get(out.dataId).id;return wasmMaxPool(xId,x.shape[0],x.shape[1],x.shape[2],filterHeight,filterWidth,padTop,padRight,padBottom,padLeft,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,outId),out}var maxPoolConfig3={kernelName:MaxPool,backendName:"wasm",setupFunc:setup20,kernelFunc:maxPool4},wasmMean;function setup21(backend2){wasmMean=backend2.wasm.cwrap(Mean,null,["number, number, number"])}function mean3(args){let{backend:backend2,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend2.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend2),reductionAxes=axes;if(inputWasTransposed){let transposedId=backend2.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId,reductionAxes=backend_util_exports.getInnerMostAxes(reductionAxes.length,input2.shape.length))}backend_util_exports.assertAxesAreInnerMostDims("mean",reductionAxes,input2.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,reductionAxes),reduceSize=util_exports.sizeFromShape(reduceShape),castedInput=input2;input2.dtype!=="float32"&&(castedInput=cast5({backend:backend2,inputs:{x:input2},attrs:{dtype:"float32"}}),inputId=backend2.dataIdMap.get(castedInput.dataId).id);let out=backend2.makeOutput(outShape,"float32");if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend2.dataIdMap.get(out.dataId).id;wasmMean(inputId,reduceSize,outId)}if(inputWasTransposed&&backend2.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return input2.dtype!=="float32"&&backend2.disposeData(castedInput.dataId),out}var meanConfig3={kernelName:Mean,backendName:"wasm",setupFunc:setup21,kernelFunc:mean3},wasmMin;function setup22(backend2){wasmMin=backend2.wasm.cwrap(Min,null,["number, number, number"])}function min5(args){let{backend:backend2,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend2.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend2);if(inputWasTransposed){let transposedId=backend2.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId)}let inputRank=input2.shape.length;backend_util_exports.assertAxesAreInnerMostDims("min",axes,inputRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,axes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend2.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend2.dataIdMap.get(out.dataId).id;wasmMin(inputId,reduceSize,outId)}if(inputWasTransposed&&backend2.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var minConfig3={kernelName:Min,backendName:"wasm",setupFunc:setup22,kernelFunc:min5},supportsFullBroadcast10=!1,minimumConfig3=createBinaryKernelConfig(Minimum,supportsFullBroadcast10),supportsFullBroadcast11=!0,multiplyConfig3=createBinaryKernelConfig(Multiply,supportsFullBroadcast11),negConfig3=createUnaryKernelConfig(Neg);function parseResultStruct(backend2,resOffset){let result=new Int32Array(backend2.wasm.HEAPU8.buffer,resOffset,4),pSelectedIndices=result[0],selectedSize=result[1],pSelectedScores=result[2],pValidOutputs=result[3];return backend2.wasm._free(resOffset),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}}var wasmFunc4;function setup23(backend2){wasmFunc4=backend2.wasm.cwrap(NonMaxSuppressionV3,"number",["number","number","number","number","number"])}function kernelFunc(args){let{backend:backend2,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold}=attrs,{boxes,scores}=inputs,boxesId=backend2.dataIdMap.get(boxes.dataId).id,scoresId=backend2.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc4(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend2,resOffset);return backend2.wasm._free(pSelectedScores),backend2.wasm._free(pValidOutputs),backend2.makeOutput([selectedSize],"int32",pSelectedIndices)}var nonMaxSuppressionV3Config3={kernelName:NonMaxSuppressionV3,backendName:"wasm",setupFunc:setup23,kernelFunc},wasmFunc5;function setup24(backend2){wasmFunc5=backend2.wasm.cwrap(NonMaxSuppressionV4,"number",["number","number","number","number","number","bool"])}function nonMaxSuppressionV43(args){let{backend:backend2,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold,padToMaxOutputSize}=attrs,{boxes,scores}=inputs,boxesId=backend2.dataIdMap.get(boxes.dataId).id,scoresId=backend2.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc5(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend2,resOffset);backend2.wasm._free(pSelectedScores);let selectedIndicesTensor=backend2.makeOutput([selectedSize],"int32",pSelectedIndices),validOutputsTensor=backend2.makeOutput([],"int32",pValidOutputs);return[selectedIndicesTensor,validOutputsTensor]}var nonMaxSuppressionV4Config3={kernelName:NonMaxSuppressionV4,backendName:"wasm",setupFunc:setup24,kernelFunc:nonMaxSuppressionV43},wasmFunc6;function setup25(backend2){wasmFunc6=backend2.wasm.cwrap(NonMaxSuppressionV5,"number",["number","number","number","number","number","number"])}function kernelFunc2(args){let{backend:backend2,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold,softNmsSigma}=attrs,{boxes,scores}=inputs,boxesId=backend2.dataIdMap.get(boxes.dataId).id,scoresId=backend2.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc6(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend2,resOffset);backend2.wasm._free(pValidOutputs);let selectedIndicesTensor=backend2.makeOutput([selectedSize],"int32",pSelectedIndices),selectedScoresTensor=backend2.makeOutput([selectedSize],"float32",pSelectedScores);return[selectedIndicesTensor,selectedScoresTensor]}var nonMaxSuppressionV5Config3={kernelName:NonMaxSuppressionV5,backendName:"wasm",setupFunc:setup25,kernelFunc:kernelFunc2},supportsFullBroadcast12=!1,notEqualConfig3=createBinaryKernelConfig(NotEqual,supportsFullBroadcast12,"bool"),wasmOneHot;function setup26(backend2){wasmOneHot=backend2.wasm.cwrap(OneHot,null,["number","number","number","number","number"])}function oneHot4(args){let{inputs,backend:backend2,attrs}=args,{indices}=inputs,{depth,onValue,offValue}=attrs,out=backend2.makeOutput([...indices.shape,depth],"int32"),outId=backend2.dataIdMap.get(out.dataId).id,indicesId=backend2.dataIdMap.get(indices.dataId).id;return wasmOneHot(indicesId,depth,onValue,offValue,outId),out}var oneHotConfig3={kernelName:OneHot,backendName:"wasm",setupFunc:setup26,kernelFunc:oneHot4};function onesLike4(args){let{inputs:{x},backend:backend2}=args,out=backend2.makeOutput(x.shape,x.dtype);return backend2.typedArrayFromHeap(out).fill(1),out}var onesLikeConfig3={kernelName:OnesLike,backendName:"wasm",kernelFunc:onesLike4};function pack3(args){let{inputs,backend:backend2,attrs}=args,{axis}=attrs;if(inputs.length===1)return expandDims5({inputs:{input:inputs[0]},backend:backend2,attrs:{dim:axis}});let shape=inputs[0].shape,dtype=inputs[0].dtype;inputs.forEach(t=>{util_exports.assertShapesMatch(shape,t.shape,"All tensors passed to stack must have matching shapes"),util_exports.assert(dtype===t.dtype,()=>"All tensors passed to stack must have matching dtypes")});let expandedTensors=inputs.map(t=>expandDims5({inputs:{input:t},backend:backend2,attrs:{dim:axis}}));return concat4({inputs:expandedTensors,backend:backend2,attrs:{axis}})}var packConfig3={kernelName:Pack,backendName:"wasm",kernelFunc:pack3},wasmPadV2;function setup27(backend2){wasmPadV2=backend2.wasm.cwrap(PadV2,null,["number","array","number","number","array","array","number","number"])}function pad2(args){let{inputs:{x},backend:backend2,attrs:{paddings,constantValue}}=args,outShape=paddings.map((p2,i)=>p2[0]+x.shape[i]+p2[1]),xId=backend2.dataIdMap.get(x.dataId).id,out=backend2.makeOutput(outShape,x.dtype),outId=backend2.dataIdMap.get(out.dataId).id,xShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer),prePaddingsFlat=paddings.map(padTuple=>padTuple[0]),postPaddingsFlat=paddings.map(padTuple=>padTuple[1]),prePaddingsBytes=new Uint8Array(new Int32Array(prePaddingsFlat).buffer),postPaddingsBytes=new Uint8Array(new Int32Array(postPaddingsFlat).buffer);return wasmPadV2(xId,xShapeBytes,x.shape.length,CppDType[x.dtype],prePaddingsBytes,postPaddingsBytes,constantValue,outId),out}var padV2Config3={kernelName:PadV2,backendName:"wasm",kernelFunc:pad2,setupFunc:setup27},supportsFullBroadcast13=!1,powConfig3=createBinaryKernelConfig(Pow,supportsFullBroadcast13),wasmPrelu;function setup28(backend2){wasmPrelu=backend2.wasm.cwrap(Prelu,null,["number","number","number"])}function prelu5(args){let{inputs,backend:backend2}=args,{x,alpha}=inputs,xId=backend2.dataIdMap.get(x.dataId).id,weightsId=backend2.dataIdMap.get(alpha.dataId).id,out=backend2.makeOutput(x.shape,"float32"),outId=backend2.dataIdMap.get(out.dataId).id;return wasmPrelu(xId,weightsId,outId),out}var preluConfig3={kernelName:Prelu,backendName:"wasm",setupFunc:setup28,kernelFunc:prelu5},wasmProd;function setup29(backend2){wasmProd=backend2.wasm.cwrap(Prod,null,["number","number","number","number"])}function prod4(args){let{backend:backend2,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend2.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend2),reductionAxes=axes;if(inputWasTransposed){let transposedId=backend2.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId,reductionAxes=backend_util_exports.getInnerMostAxes(reductionAxes.length,input2.shape.length))}backend_util_exports.assertAxesAreInnerMostDims("prod",reductionAxes,input2.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,reductionAxes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend2.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend2.dataIdMap.get(out.dataId).id;wasmProd(inputId,reduceSize,CppDType[out.dtype],outId)}if(inputWasTransposed&&backend2.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var prodConfig3={kernelName:Prod,backendName:"wasm",setupFunc:setup29,kernelFunc:prod4},range5=args=>{let{backend:backend2,attrs}=args,{start,stop,step:step4,dtype}=attrs,values=rangeImpl(start,stop,step4,dtype),out=backend2.makeOutput([values.length],dtype);return backend2.typedArrayFromHeap(out).set(values),out},rangeConfig3={kernelName:Range,backendName:"wasm",kernelFunc:range5},supportsFullBroadcast14=!0,realDivConfig3=createBinaryKernelConfig(RealDiv,supportsFullBroadcast14),reluConfig3=createUnaryKernelConfig(Relu),relu6Config3=createUnaryKernelConfig(Relu6),wasmResizeBilinear;function setup30(backend2){wasmResizeBilinear=backend2.wasm.cwrap(ResizeBilinear,null,["number","number","number","number","number","number","number","number","number","number"])}function resizeBilinear4(args){let{backend:backend2,inputs,attrs}=args,{images}=inputs,{alignCorners,halfPixelCenters,size}=attrs,[newHeight,newWidth]=size,[batch,oldHeight,oldWidth,numChannels]=images.shape,outShape=[batch,newHeight,newWidth,numChannels],xData=backend2.dataIdMap.get(images.dataId),castedData;xData.dtype!=="float32"&&(castedData=cast5({backend:backend2,inputs:{x:images},attrs:{dtype:"float32"}}),xData=backend2.dataIdMap.get(castedData.dataId));let xId=xData.id,out=backend2.makeOutput(outShape,"float32");if(util_exports.sizeFromShape(images.shape)===0)return out;let outId=backend2.dataIdMap.get(out.dataId).id;return wasmResizeBilinear(xId,batch,oldHeight,oldWidth,numChannels,newHeight,newWidth,alignCorners?1:0,halfPixelCenters?1:0,outId),castedData!=null&&backend2.disposeData(castedData.dataId),out}var resizeBilinearConfig3={kernelName:ResizeBilinear,backendName:"wasm",setupFunc:setup30,kernelFunc:resizeBilinear4},wasmReverse;function setup31(backend2){wasmReverse=backend2.wasm.cwrap(Reverse,null,["number","array","number","array","number","number"])}function reverse4(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{dims}=attrs,axes=util_exports.parseAxisParam(dims,x.shape);if(x.shape.length===0)return identity4({inputs:{x},backend:backend2});let out=backend2.makeOutput(x.shape,x.dtype),xId=backend2.dataIdMap.get(x.dataId).id,outId=backend2.dataIdMap.get(out.dataId).id,axesBytes=new Uint8Array(new Int32Array(axes).buffer),outShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer);return wasmReverse(xId,axesBytes,axes.length,outShapeBytes,x.shape.length,outId),reshape5({inputs:{x:out},attrs:{shape:x.shape},backend:backend2})}var reverseConfig3={kernelName:Reverse,backendName:"wasm",kernelFunc:reverse4,setupFunc:setup31},wasmRotate;function setup32(backend2){wasmRotate=backend2.wasm.cwrap(RotateWithOffset,null,["number","number","number","number","number","number","number","number","array","number","number"])}function rotateWithOffset2(args){let{inputs,backend:backend2,attrs}=args,{image:image3}=inputs,{radians,fillValue,center}=attrs,out=backend2.makeOutput(image3.shape,image3.dtype),imageId=backend2.dataIdMap.get(image3.dataId).id,outId=backend2.dataIdMap.get(out.dataId).id,[batch,imageHeight,imageWidth,numChannels]=image3.shape,[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),fillIsBlack=fillValue===0,fullOpacityValue=255,fillValues2=typeof fillValue=="number"?[fillValue,fillValue,fillValue,fillIsBlack?0:fullOpacityValue]:[...fillValue,fullOpacityValue],fillBytes=new Uint8Array(new Int32Array(fillValues2).buffer);return wasmRotate(imageId,batch,imageHeight,imageWidth,numChannels,radians,centerX,centerY,fillBytes,fillValues2.length,outId),out}var rotateWithOffsetConfig3={kernelName:RotateWithOffset,backendName:"wasm",kernelFunc:rotateWithOffset2,setupFunc:setup32},roundConfig3=createUnaryKernelConfig(Round),rsqrtConfig3=createUnaryKernelConfig(Rsqrt),wasmScatterNd;function setup33(backend2){wasmScatterNd=backend2.wasm.cwrap(ScatterNd,null,["number","number","number","number","number","number","array","number","number"])}function scatterNd3(args){let{backend:backend2,inputs,attrs}=args,{indices,updates}=inputs,{shape}=attrs,out=backend2.makeOutput(shape,updates.dtype);if(util_exports.sizeFromShape(shape)===0)return out;let{sliceRank,numUpdates,sliceSize,strides,outputSize}=scatter_nd_util_exports.calculateShapes(updates,indices,shape),indicesId=backend2.dataIdMap.get(indices.dataId).id,updatesId=backend2.dataIdMap.get(updates.dataId).id,stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outId=backend2.dataIdMap.get(out.dataId).id;return wasmScatterNd(indicesId,updatesId,CppDType[updates.dtype],sliceRank,numUpdates,sliceSize,stridesBytes,outputSize,outId),out}var scatterNdConfig3={kernelName:ScatterNd,backendName:"wasm",setupFunc:setup33,kernelFunc:scatterNd3},wasmSelect;function setup34(backend2){wasmSelect=backend2.wasm.cwrap("SelectV2",null,["number","number","number","number","number"])}function select3(args){let{inputs,backend:backend2}=args,{condition,t,e}=inputs,conditionId=backend2.dataIdMap.get(condition.dataId).id,tId=backend2.dataIdMap.get(t.dataId).id,eId=backend2.dataIdMap.get(e.dataId).id,out=backend2.makeOutput(t.shape,t.dtype),outId=backend2.dataIdMap.get(out.dataId).id,cRank=condition.shape.length,tRank=t.shape.length,offset=cRank===0||cRank>1||tRank===1?1:util_exports.sizeFromShape(t.shape.slice(1));return wasmSelect(conditionId,tId,eId,offset,outId),out}var selectConfig3={kernelName:Select,backendName:"wasm",kernelFunc:select3,setupFunc:setup34},wasmFunc7;function setup35(backend2){wasmFunc7=backend2.wasm.cwrap(Sigmoid,null,["number","number"])}function sigmoid4(args){let{backend:backend2,inputs:{x}}=args,xId=backend2.dataIdMap.get(x.dataId).id,out=backend2.makeOutput(x.shape,x.dtype),outId=backend2.dataIdMap.get(out.dataId).id;return util_exports.sizeFromShape(out.shape)===0||wasmFunc7(xId,outId),out}var sigmoidConfig3={kernelName:"Sigmoid",backendName:"wasm",setupFunc:setup35,kernelFunc:sigmoid4},sinConfig3=createUnaryKernelConfig(Sin);function slice4(args){let{inputs:{x},attrs:{begin,size},backend:backend2}=args,[begin_,size_]=slice_util_exports.parseSliceParams(x,begin,size),isContinous=slice_util_exports.isSliceContinous(x.shape,begin_,size_),xVals=backend2.readSync(x.dataId),out=backend2.makeOutput(size_,x.dtype),xStrides=util_exports.computeStrides(x.shape),outData=backend2.dataIdMap.get(out.dataId);if(isContinous){let flatOffset=slice_util_exports.computeFlatOffset(begin_,xStrides);return x.dtype==="string"?outData.stringBytes=xVals.slice(flatOffset,flatOffset+util_exports.sizeFromShape(size_)):backend2.typedArrayFromHeap(out).set(xVals.subarray(flatOffset,flatOffset+util_exports.sizeFromShape(size_))),out}if(x.dtype==="string"){let res=sliceImpl(xVals,begin_,size_,x.shape,x.dtype);return outData.stringBytes=res,out}let outVals=backend2.typedArrayFromHeap(out),rank=x.shape.length;if(rank===2)slice2d2(xVals,xStrides[0],outVals,begin_,size_);else if(rank===3)slice3d2(xVals,xStrides[0],xStrides[1],outVals,begin_,size_);else if(rank===4)slice4d2(xVals,xStrides[0],xStrides[1],xStrides[2],outVals,begin_,size_);else{let res=sliceImpl(xVals,begin_,size_,x.shape,x.dtype);outVals.set(res)}return out}function slice2d2(xVals,xStride,outVals,begin,size){let outOffset=0,beginI=begin[0],beginJ=begin[1],endI=beginI+size[0];for(let i=beginI;i{let xSliceSize=[...size];xSliceSize[$axis]=s;let xSlice=slice4({inputs:{x},attrs:{begin,size:xSliceSize},backend:backend2});return begin[$axis]+=s,xSlice})}var splitVConfig3={kernelName:SplitV,backendName:"wasm",kernelFunc:splitV3},sqrtConfig3=createUnaryKernelConfig(Sqrt),squareConfig3=createUnaryKernelConfig(Square),supportsFullBroadcast15=!0,squaredDifferenceConfig3=createBinaryKernelConfig(SquaredDifference,supportsFullBroadcast15),wasmStridedSlice;function setup37(backend2){wasmStridedSlice=backend2.wasm.cwrap(StridedSlice,null,["number","array","number","array","array","array","array","array","number","number"])}function stridedSlice4(args){let{backend:backend2,inputs,attrs}=args,{x}=inputs,{begin,end,strides}=attrs;strides==null&&(strides=new Array(begin.length));let{beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask}=attrs,ellipsisAxes=backend_util_exports.slice_util.maskToAxes(ellipsisMask);if(ellipsisAxes.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(ellipsisMask!==0&&newAxisMask!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(ellipsisMask!==0&&shrinkAxisMask!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let numInterpolatedAxes=x.shape.length-begin.length,expandAxes=backend_util_exports.slice_util.maskToAxes(newAxisMask),newShape=x.shape.slice();expandAxes.forEach(axis=>{begin[axis]=0,end[axis]=1,newShape.splice(axis,0,1)});let xReshaped=reshape5({inputs:{x},attrs:{shape:newShape},backend:backend2}),{begin:normalizedBegin,end:normalizedEnd,strides:normalizedStrides}=backend_util_exports.slice_util.getNormalizedAxes(xReshaped.shape,ellipsisAxes,numInterpolatedAxes,begin,end,strides,beginMask,endMask,ellipsisMask);begin=normalizedBegin,end=normalizedEnd,strides=normalizedStrides;let shrinkAxes=backend_util_exports.slice_util.maskToAxes(shrinkAxisMask);shrinkAxes.forEach(axis=>{end[axis]=begin[axis]+1,strides[axis]=1});let size=backend_util_exports.slice_util.computeOutShape(begin,end,strides),outShape=size.filter((_,axis)=>shrinkAxes.indexOf(axis)===-1);if(strides.every(v=>v===1)){let xSliced=slice4({inputs:{x},attrs:{begin,size},backend:backend2});return reshape5({inputs:{x:xSliced},attrs:{shape:outShape},backend:backend2})}let out=backend2.makeOutput(outShape,"float32");if(!outShape.some(axis=>axis===0)){let xId=backend2.dataIdMap.get(xReshaped.dataId).id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(xReshaped.shape)).buffer),beginBytes=new Uint8Array(new Int32Array(begin).buffer),endBytes=new Uint8Array(new Int32Array(end).buffer),stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outputShapeBytes=new Uint8Array(new Int32Array(outShape).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(outShape)).buffer),outId=backend2.dataIdMap.get(out.dataId).id;wasmStridedSlice(xId,xStridesBytes,xReshaped.shape.length,beginBytes,endBytes,stridesBytes,outputShapeBytes,outStridesBytes,outShape.length,outId)}return reshape5({inputs:{x:out},attrs:{shape:outShape},backend:backend2})}var stridedSliceConfig3={kernelName:StridedSlice,backendName:"wasm",setupFunc:setup37,kernelFunc:stridedSlice4},supportsFullBroadcast16=!0,subConfig3=createBinaryKernelConfig(Sub,supportsFullBroadcast16),wasmSum;function setup38(backend2){wasmSum=backend2.wasm.cwrap(Sum,null,["number, number, number"])}function sum5(args){let{backend:backend2,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend2.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend2),reductionAxes=axes;if(inputWasTransposed){let transposedId=backend2.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId,reductionAxes=backend_util_exports.getInnerMostAxes(reductionAxes.length,input2.shape.length))}backend_util_exports.assertAxesAreInnerMostDims("sum",reductionAxes,input2.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,reductionAxes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend2.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend2.dataIdMap.get(out.dataId).id;wasmSum(inputId,reduceSize,outId)}if(inputWasTransposed&&backend2.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var sumConfig3={kernelName:Sum,backendName:"wasm",setupFunc:setup38,kernelFunc:sum5},tanhConfig3=createUnaryKernelConfig(Tanh),wasmTile;function setup39(backend2){wasmTile=backend2.wasm.cwrap(Tile,null,["number","array","number","array","number","number"])}function tile5(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,xId=backend2.dataIdMap.get(x.dataId).id,{reps}=attrs,newShape=new Array(x.shape.length);for(let i=0;i{let{x}=inputs,{k,sorted}=attrs,xId=backend2.dataIdMap.get(x.dataId).id,xShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer),outputShape=x.shape.slice();outputShape[outputShape.length-1]=k;let outValues=backend2.makeOutput(outputShape,x.dtype),outValuesId=backend2.dataIdMap.get(outValues.dataId).id,outIndices=backend2.makeOutput(outputShape,"int32"),outIndicesId=backend2.dataIdMap.get(outIndices.dataId).id;return wasmTopK(xId,xShapeBytes,x.shape.length,CppDType[x.dtype],k,sorted,outValuesId,outIndicesId),[outValues,outIndices]},topKConfig3={kernelName:TopK,backendName:"wasm",setupFunc:setup40,kernelFunc:topk2};function unpack3(args){let{inputs,backend:backend2,attrs}=args,{value}=inputs,{axis}=attrs;axis<0&&(axis+=value.shape.length);let numOutputs=value.shape[axis],rank=value.shape.length,outShape=new Array(rank-1),outIndex=0;for(let i=0;i({dataId,dtype,shape:outShape}))}var unpackConfig3={kernelName:Unpack,backendName:"wasm",kernelFunc:unpack3};function zerosLike4(args){let{inputs:{x},backend:backend2}=args,out=backend2.makeOutput(x.shape,x.dtype);return backend2.typedArrayFromHeap(out).fill(0),out}var zerosLikeConfig3={kernelName:ZerosLike,backendName:"wasm",kernelFunc:zerosLike4},kernelConfigs3=[absConfig3,addConfig3,addNConfig3,argMaxConfig3,avgPoolConfig3,batchMatMulConfig3,castConfig3,clipByValueConfig2,concatConfig3,conv2DConfig3,conv2DBackpropInputConfig3,cosConfig3,cropAndResizeConfig3,cumsumConfig3,depthToSpaceConfig3,depthwiseConv2dNativeConfig3,equalConfig3,expConfig3,expandDimsConfig3,fillConfig3,flipLeftRightConfig3,floorConfig3,floorDivConfig3,fusedMatMulConfig,fusedBatchNormConfig,fusedConv2DConfig3,fusedDepthwiseConv2DConfig3,gatherNdConfig3,gatherV2Config3,greaterConfig3,greaterEqualConfig3,identityConfig3,leakyReluConfig3,lessConfig3,lessEqualConfig3,logConfig3,logicalAndConfig3,maxConfig3,maximumConfig3,maxPoolConfig3,meanConfig3,minConfig3,minimumConfig3,multiplyConfig3,negConfig3,nonMaxSuppressionV3Config3,nonMaxSuppressionV4Config3,nonMaxSuppressionV5Config3,notEqualConfig3,oneHotConfig3,onesLikeConfig3,packConfig3,padV2Config3,powConfig3,preluConfig3,prodConfig3,rangeConfig3,realDivConfig3,reluConfig3,relu6Config3,reshapeConfig3,resizeBilinearConfig3,reverseConfig3,rotateWithOffsetConfig3,rsqrtConfig3,roundConfig3,scatterNdConfig3,selectConfig3,sigmoidConfig3,sinConfig3,sliceConfig3,softmaxConfig3,splitVConfig3,sqrtConfig3,squareConfig3,squaredDifferenceConfig3,stridedSliceConfig3,subConfig3,sumConfig3,tanhConfig3,tileConfig3,topKConfig3,transposeConfig3,unpackConfig3,zerosLikeConfig3];for(let kernelConfig of kernelConfigs3)registerKernel(kernelConfig);var ENV4=env();ENV4.registerFlag("WASM_HAS_SIMD_SUPPORT",async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,9,1,7,0,65,0,253,15,26,11])));ENV4.registerFlag("WASM_HAS_MULTITHREAD_SUPPORT",async()=>{if(ENV4.get("IS_NODE"))return!1;try{return new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch(e){return!1}});var import_tfjs_backend_wasm_threaded_simd=__toModule2(require_tfjs_backend_wasm_threaded_simd()),wasmWorkerContents='var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module["instantiateWasm"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module["wasmModule"],info);Module["wasmModule"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd==="load"){Module["DYNAMIC_BASE"]=e.data.DYNAMIC_BASE;Module["DYNAMICTOP_PTR"]=e.data.DYNAMICTOP_PTR;Module["wasmModule"]=e.data.wasmModule;Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;if(typeof e.data.urlOrBlob==="string"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({"cmd":"loaded"})}else if(e.data.cmd==="objectTransfer"){Module["PThread"].receiveObjectTransfer(e.data)}else if(e.data.cmd==="run"){Module["__performance_now_clock_drift"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module["__register_pthread_ptr"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module["establishStackSpace"](top,max);Module["_emscripten_tls_init"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].setThreadStatus(Module["_pthread_self"](),1);try{var result=Module["dynCall_ii"](e.data.start_routine,e.data.arg);if(!Module["getNoExitRuntime"]())Module["PThread"].threadExit(result)}catch(ex){if(ex==="Canceled!"){Module["PThread"].threadCancel()}else if(ex!="unwind"){Atomics.store(Module["HEAPU32"],threadInfoStruct+4>>2,ex instanceof Module["ExitStatus"]?ex.status:-2);Atomics.store(Module["HEAPU32"],threadInfoStruct+0>>2,1);Module["_emscripten_futex_wake"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module["ExitStatus"]))throw ex}}}else if(e.data.cmd==="cancel"){if(threadInfoStruct){Module["PThread"].threadCancel()}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processThreadQueue"){if(threadInfoStruct){Module["_emscripten_current_thread_process_queued_calls"]()}}else{err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){err("worker.js onmessage() captured an uncaught exception: "+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require("worker_threads");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",function(data){onmessage({data:data})});var nodeFS=require("fs");var nodeRead=function(filename){return nodeFS.readFileSync(filename,"utf8")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance==="undefined"){performance={now:function(){return Date.now()}}}}',import_tfjs_backend_wasm=__toModule2(require_tfjs_backend_wasm()),BackendWasm=class extends KernelBackend{constructor(wasm){super();this.wasm=wasm,this.dataIdNextNumber=1,this.wasm.tfjs.init(),this.dataIdMap=new DataStorage(this,engine())}write(values,shape,dtype){let dataId={};return this.move(dataId,values,shape,dtype),dataId}numDataIds(){return this.dataIdMap.numDataIds()}async time(f){let start=util_exports.now();return f(),{kernelMs:util_exports.now()-start}}move(dataId,values,shape,dtype){let id=this.dataIdNextNumber++;if(dtype==="string"){let stringBytes=values;this.dataIdMap.set(dataId,{id,stringBytes,shape,dtype,memoryOffset:null});return}let size=util_exports.sizeFromShape(shape),numBytes=size*util_exports.bytesPerElement(dtype),memoryOffset=this.wasm._malloc(numBytes);this.dataIdMap.set(dataId,{id,memoryOffset,shape,dtype}),this.wasm.tfjs.registerTensor(id,size,memoryOffset),values!=null&&this.wasm.HEAPU8.set(new Uint8Array(values.buffer,values.byteOffset,numBytes),memoryOffset)}async read(dataId){return this.readSync(dataId)}readSync(dataId){let{memoryOffset,dtype,shape,stringBytes}=this.dataIdMap.get(dataId);if(dtype==="string")return stringBytes;let bytes=this.wasm.HEAPU8.slice(memoryOffset,memoryOffset+util_exports.sizeFromShape(shape)*util_exports.bytesPerElement(dtype));return typedArrayFromBuffer(bytes.buffer,dtype)}disposeData(dataId){let data=this.dataIdMap.get(dataId);this.wasm._free(data.memoryOffset),this.wasm.tfjs.disposeData(data.id),this.dataIdMap.delete(dataId)}floatPrecision(){return 32}getMemoryOffset(dataId){return this.dataIdMap.get(dataId).memoryOffset}dispose(){this.wasm.tfjs.dispose(),this.wasm=null}memory(){return{unreliable:!1}}makeOutput(shape,dtype,memoryOffset){let dataId;if(memoryOffset==null)dataId=this.write(null,shape,dtype);else{dataId={};let id=this.dataIdNextNumber++;this.dataIdMap.set(dataId,{id,memoryOffset,shape,dtype});let size=util_exports.sizeFromShape(shape);this.wasm.tfjs.registerTensor(id,size,memoryOffset)}return{dataId,shape,dtype}}typedArrayFromHeap({shape,dtype,dataId}){let buffer2=this.wasm.HEAPU8.buffer,{memoryOffset}=this.dataIdMap.get(dataId),size=util_exports.sizeFromShape(shape);switch(dtype){case"float32":return new Float32Array(buffer2,memoryOffset,size);case"int32":return new Int32Array(buffer2,memoryOffset,size);case"bool":return new Uint8Array(buffer2,memoryOffset,size);default:throw new Error(`Unknown dtype ${dtype}`)}}};function createInstantiateWasmFunc(path){return(imports,callback)=>(util_exports.fetch(path,{credentials:"same-origin"}).then(response=>{response.ok||imports.env.a(`failed to load wasm binary file at '${path}'`),response.arrayBuffer().then(binary=>{WebAssembly.instantiate(binary,imports).then(output=>{callback(output.instance)})})}),{})}function getPathToWasmBinary(simdSupported,threadsSupported,wasmModuleFolder){if(wasmPath!=null)return wasmPath;let path="tfjs-backend-wasm.wasm";return simdSupported&&threadsSupported?path="tfjs-backend-wasm-threaded-simd.wasm":simdSupported&&(path="tfjs-backend-wasm-simd.wasm"),wasmFileMap!=null&&wasmFileMap[path]!=null?wasmFileMap[path]:wasmModuleFolder+path}async function init(){let[simdSupported,threadsSupported]=await Promise.all([env().getAsync("WASM_HAS_SIMD_SUPPORT"),env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT")]);return new Promise((resolve,reject)=>{let factoryConfig={};factoryConfig.locateFile=(path,prefix)=>{if(path.endsWith(".worker.js")){let response=wasmWorkerContents,blob=new Blob([response],{type:"application/javascript"});return URL.createObjectURL(blob)}return path.endsWith(".wasm")?getPathToWasmBinary(simdSupported,threadsSupported,wasmPathPrefix!=null?wasmPathPrefix:prefix):prefix+path},customFetch&&(factoryConfig.instantiateWasm=createInstantiateWasmFunc(getPathToWasmBinary(simdSupported,threadsSupported,wasmPathPrefix!=null?wasmPathPrefix:"")));let wasm;threadsSupported&&simdSupported&&wasmPath==null?(wasm=import_tfjs_backend_wasm_threaded_simd.default(factoryConfig),wasm.mainScriptUrlOrBlob=new Blob(["var WasmBackendModuleThreadedSimd = "+import_tfjs_backend_wasm_threaded_simd.default.toString()],{type:"text/javascript"})):wasm=import_tfjs_backend_wasm.default(factoryConfig);let voidReturnType=null;wasm.tfjs={init:wasm.cwrap("init",null,[]),registerTensor:wasm.cwrap("register_tensor",null,["number","number","number"]),disposeData:wasm.cwrap("dispose_data",voidReturnType,["number"]),dispose:wasm.cwrap("dispose",voidReturnType,[])};let initialized=!1;wasm.onRuntimeInitialized=()=>{initialized=!0,initAborted=!1,resolve({wasm})},wasm.onAbort=()=>{initialized||initAborted||(initAborted=!0,reject({message:"Make sure the server can serve the `.wasm` file relative to the bundled js file. For more details see https://github.com/tensorflow/tfjs/blob/master/tfjs-backend-wasm/README.md#using-bundlers"}))}})}function typedArrayFromBuffer(buffer2,dtype){switch(dtype){case"float32":return new Float32Array(buffer2);case"int32":return new Int32Array(buffer2);case"bool":return new Uint8Array(buffer2);default:throw new Error(`Unknown dtype ${dtype}`)}}var wasmBinaryNames=["tfjs-backend-wasm.wasm","tfjs-backend-wasm-simd.wasm","tfjs-backend-wasm-threaded-simd.wasm"],wasmPath=null,wasmPathPrefix=null,wasmFileMap={},initAborted=!1,customFetch=!1;function setWasmPath(path,usePlatformFetch=!1){if(deprecationWarn("setWasmPath has been deprecated in favor of setWasmPaths and will be removed in a future release."),initAborted)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPath()` before you call `tf.setBackend()` or `tf.ready()`");wasmPath=path,customFetch=usePlatformFetch}function setWasmPaths(prefixOrFileMap,usePlatformFetch=!1){if(initAborted)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPaths()` before you call `tf.setBackend()` or `tf.ready()`");if(typeof prefixOrFileMap=="string")wasmPathPrefix=prefixOrFileMap;else{wasmFileMap=prefixOrFileMap;let missingPaths=wasmBinaryNames.filter(name=>wasmFileMap[name]==null);if(missingPaths.length>0)throw new Error(`There were no entries found for the following binaries: ${missingPaths.join(",")}. Please either call setWasmPaths with a map providing a path for each binary, or with a string indicating the directory where all the binaries can be found.`)}customFetch=usePlatformFetch}var version9="2.8.3",WASM_PRIORITY=2;registerBackend("wasm",async()=>{let{wasm}=await init();return new BackendWasm(wasm)},WASM_PRIORITY);var draw_exports={};__export(draw_exports,{AnchorPosition:()=>AnchorPosition,DrawBox:()=>DrawBox,DrawBoxOptions:()=>DrawBoxOptions,DrawFaceLandmarks:()=>DrawFaceLandmarks,DrawFaceLandmarksOptions:()=>DrawFaceLandmarksOptions,DrawTextField:()=>DrawTextField,DrawTextFieldOptions:()=>DrawTextFieldOptions,drawContour:()=>drawContour,drawDetections:()=>drawDetections,drawFaceExpressions:()=>drawFaceExpressions,drawFaceLandmarks:()=>drawFaceLandmarks});function drawContour(ctx,points,isClosed=!1){if(ctx.beginPath(),points.slice(1).forEach(({x,y},prevIdx)=>{let from=points[prevIdx];ctx.moveTo(from.x,from.y),ctx.lineTo(x,y)}),isClosed){let from=points[points.length-1],to=points[0];if(!from||!to)return;ctx.moveTo(from.x,from.y),ctx.lineTo(to.x,to.y)}ctx.stroke()}var utils_exports={};__export(utils_exports,{computeReshapedDimensions:()=>computeReshapedDimensions,getCenterPoint:()=>getCenterPoint,isDimensions:()=>isDimensions,isEven:()=>isEven2,isFloat:()=>isFloat,isTensor:()=>isTensor,isTensor1D:()=>isTensor1D,isTensor2D:()=>isTensor2D,isTensor3D:()=>isTensor3D,isTensor4D:()=>isTensor4D,isValidNumber:()=>isValidNumber,isValidProbablitiy:()=>isValidProbablitiy,range:()=>range6,round:()=>round5});var Dimensions=class{constructor(width,height){if(!isValidNumber(width)||!isValidNumber(height))throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({width,height})}`);this._width=width,this._height=height}get width(){return this._width}get height(){return this._height}reverse(){return new Dimensions(1/this.width,1/this.height)}};function isTensor(tensor2,dim){return tensor2 instanceof Tensor&&tensor2.shape.length===dim}function isTensor1D(tensor2){return isTensor(tensor2,1)}function isTensor2D(tensor2){return isTensor(tensor2,2)}function isTensor3D(tensor2){return isTensor(tensor2,3)}function isTensor4D(tensor2){return isTensor(tensor2,4)}function isFloat(num){return num%1!=0}function isEven2(num){return num%2==0}function round5(num,prec=2){let f=10**prec;return Math.floor(num*f)/f}function isDimensions(obj){return obj&&obj.width&&obj.height}function computeReshapedDimensions({width,height},inputSize){let scale3=inputSize/Math.max(height,width);return new Dimensions(Math.round(width*scale3),Math.round(height*scale3))}function getCenterPoint(pts){return pts.reduce((sum6,pt)=>sum6.add(pt),new Point(0,0)).div(new Point(pts.length,pts.length))}function range6(num,start,step4){return Array(num).fill(0).map((_,i)=>start+i*step4)}function isValidNumber(num){return!!num&&num!==Infinity&&num!==-Infinity&&!Number.isNaN(num)||num===0}function isValidProbablitiy(num){return isValidNumber(num)&&num>=0&&num<=1}var Point=class{constructor(x,y){this._x=x,this._y=y}get x(){return this._x}get y(){return this._y}add(pt){return new Point(this.x+pt.x,this.y+pt.y)}sub(pt){return new Point(this.x-pt.x,this.y-pt.y)}mul(pt){return new Point(this.x*pt.x,this.y*pt.y)}div(pt){return new Point(this.x/pt.x,this.y/pt.y)}abs(){return new Point(Math.abs(this.x),Math.abs(this.y))}magnitude(){return Math.sqrt(this.x**2+this.y**2)}floor(){return new Point(Math.floor(this.x),Math.floor(this.y))}};var Box=class{static isRect(rect){return!!rect&&[rect.x,rect.y,rect.width,rect.height].every(isValidNumber)}static assertIsValidBox(box,callee,allowNegativeDimensions=!1){if(!Box.isRect(box))throw new Error(`${callee} - invalid box: ${JSON.stringify(box)}, expected object with properties x, y, width, height`);if(!allowNegativeDimensions&&(box.width<0||box.height<0))throw new Error(`${callee} - width (${box.width}) and height (${box.height}) must be positive numbers`)}constructor(_box,allowNegativeDimensions=!0){let box=_box||{},isBbox=[box.left,box.top,box.right,box.bottom].every(isValidNumber),isRect=[box.x,box.y,box.width,box.height].every(isValidNumber);if(!isRect&&!isBbox)throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(box)}`);let[x,y,width,height]=isRect?[box.x,box.y,box.width,box.height]:[box.left,box.top,box.right-box.left,box.bottom-box.top];Box.assertIsValidBox({x,y,width,height},"Box.constructor",allowNegativeDimensions),this._x=x,this._y=y,this._width=width,this._height=height}get x(){return this._x}get y(){return this._y}get width(){return this._width}get height(){return this._height}get left(){return this.x}get top(){return this.y}get right(){return this.x+this.width}get bottom(){return this.y+this.height}get area(){return this.width*this.height}get topLeft(){return new Point(this.left,this.top)}get topRight(){return new Point(this.right,this.top)}get bottomLeft(){return new Point(this.left,this.bottom)}get bottomRight(){return new Point(this.right,this.bottom)}round(){let[x,y,width,height]=[this.x,this.y,this.width,this.height].map(val=>Math.round(val));return new Box({x,y,width,height})}floor(){let[x,y,width,height]=[this.x,this.y,this.width,this.height].map(val=>Math.floor(val));return new Box({x,y,width,height})}toSquare(){let{x,y,width,height}=this,diff=Math.abs(width-height);return widthimageWidth&&(edx=-ex+imageWidth+w,ex=imageWidth),ey>imageHeight&&(edy=-ey+imageHeight+h,ey=imageHeight),x<1&&(edy=2-x,x=1),y<1&&(edy=2-y,y=1),{dy,edy,dx,edx,y,ey,x,ex,w,h}}calibrate(region){return new Box({left:this.left+region.left*this.width,top:this.top+region.top*this.height,right:this.right+region.right*this.width,bottom:this.bottom+region.bottom*this.height}).toSquare().round()}};var BoundingBox=class extends Box{constructor(left,top,right,bottom,allowNegativeDimensions=!1){super({left,top,right,bottom},allowNegativeDimensions)}};var ObjectDetection=class{constructor(score,classScore,className,relativeBox,imageDims){this._imageDims=new Dimensions(imageDims.width,imageDims.height),this._score=score,this._classScore=classScore,this._className=className,this._box=new Box(relativeBox).rescale(this._imageDims)}get score(){return this._score}get classScore(){return this._classScore}get className(){return this._className}get box(){return this._box}get imageDims(){return this._imageDims}get imageWidth(){return this.imageDims.width}get imageHeight(){return this.imageDims.height}get relativeBox(){return new Box(this._box).rescale(this.imageDims.reverse())}forSize(width,height){return new ObjectDetection(this.score,this.classScore,this.className,this.relativeBox,{width,height})}};var FaceDetection=class extends ObjectDetection{constructor(score,relativeBox,imageDims){super(score,score,"",relativeBox,imageDims)}forSize(width,height){let{score,relativeBox,imageDims}=super.forSize(width,height);return new FaceDetection(score,relativeBox,imageDims)}};function iou(box1,box2,isIOU=!0){let width=Math.max(0,Math.min(box1.right,box2.right)-Math.max(box1.left,box2.left)),height=Math.max(0,Math.min(box1.bottom,box2.bottom)-Math.max(box1.top,box2.top)),interSection=width*height;return isIOU?interSection/(box1.area+box2.area-interSection):interSection/Math.min(box1.area,box2.area)}function minBbox(pts){let xs=pts.map(pt=>pt.x),ys=pts.map(pt=>pt.y),minX=xs.reduce((min6,x)=>xymax6max6({score,boxIndex})).sort((c1,c2)=>c1.score-c2.score).map(c=>c.boxIndex),pick=[];for(;indicesSortedByScore.length>0;){let curr=indicesSortedByScore.pop();pick.push(curr);let indices=indicesSortedByScore,outputs=[];for(let i=0;ioutputs[j]<=iouThreshold)}return pick}function normalize(x,meanRgb){return tidy(()=>{let[r,g,b]=meanRgb,avg_r=fill([...x.shape.slice(0,3),1],r,"float32"),avg_g=fill([...x.shape.slice(0,3),1],g,"float32"),avg_b=fill([...x.shape.slice(0,3),1],b,"float32"),avg_rgb=concat([avg_r,avg_g,avg_b],3);return sub(x,avg_rgb)})}function padToSquare(imgTensor,isCenterImage=!1){return tidy(()=>{let[height,width]=imgTensor.shape.slice(1);if(height===width)return imgTensor;let dimDiff=Math.abs(height-width),paddingAmount=Math.round(dimDiff*(isCenterImage?.5:1)),paddingAxis=height>width?2:1,createPaddingTensor=paddingAmountLocal=>{let paddingTensorShape=imgTensor.shape.slice();return paddingTensorShape[paddingAxis]=paddingAmountLocal,fill(paddingTensorShape,0,"float32")},paddingTensorAppend=createPaddingTensor(paddingAmount),remainingPaddingAmount=dimDiff-paddingTensorAppend.shape[paddingAxis],tensorsToStack=[isCenterImage&&remainingPaddingAmount?createPaddingTensor(remainingPaddingAmount):null,imgTensor,paddingTensorAppend].filter(t=>!!t).map(t=>cast(t,"float32"));return concat(tensorsToStack,paddingAxis)})}function shuffleArray(inputArray){let array2=inputArray.slice();for(let i=array2.length-1;i>0;i--){let j=Math.floor(Math.random()*(i+1)),x=array2[i];array2[i]=array2[j],array2[j]=x}return array2}function sigmoid5(x){return 1/(1+Math.exp(-x))}function inverseSigmoid(x){return Math.log(x/(1-x))}var Rect=class extends Box{constructor(x,y,width,height,allowNegativeDimensions=!1){super({x,y,width,height},allowNegativeDimensions)}};var relX=.5,relY=.43,relScale=.45,FaceLandmarks=class{constructor(relativeFaceLandmarkPositions,imgDims,shift=new Point(0,0)){let{width,height}=imgDims;this._imgDims=new Dimensions(width,height),this._shift=shift,this._positions=relativeFaceLandmarkPositions.map(pt=>pt.mul(new Point(width,height)).add(shift))}get shift(){return new Point(this._shift.x,this._shift.y)}get imageWidth(){return this._imgDims.width}get imageHeight(){return this._imgDims.height}get positions(){return this._positions}get relativePositions(){return this._positions.map(pt=>pt.sub(this._shift).div(new Point(this.imageWidth,this.imageHeight)))}forSize(width,height){return new this.constructor(this.relativePositions,{width,height})}shiftBy(x,y){return new this.constructor(this.relativePositions,this._imgDims,new Point(x,y))}shiftByPoint(pt){return this.shiftBy(pt.x,pt.y)}align(detection,options={}){if(detection){let box=detection instanceof FaceDetection?detection.box.floor():new Box(detection);return this.shiftBy(box.x,box.y).align(null,options)}let{useDlibAlignment,minBoxPadding}={useDlibAlignment:!1,minBoxPadding:.2,...options};return useDlibAlignment?this.alignDlib():this.alignMinBbox(minBoxPadding)}alignDlib(){let centers=this.getRefPointsForAlignment(),[leftEyeCenter,rightEyeCenter,mouthCenter]=centers,distToMouth=pt=>mouthCenter.sub(pt).magnitude(),eyeToMouthDist=(distToMouth(leftEyeCenter)+distToMouth(rightEyeCenter))/2,size=Math.floor(eyeToMouthDist/relScale),refPoint=getCenterPoint(centers),x=Math.floor(Math.max(0,refPoint.x-relX*size)),y=Math.floor(Math.max(0,refPoint.y-relY*size));return new Rect(x,y,Math.min(size,this.imageWidth+x),Math.min(size,this.imageHeight+y))}alignMinBbox(padding){let box=minBbox(this.positions);return box.pad(box.width*padding,box.height*padding)}getRefPointsForAlignment(){throw new Error("getRefPointsForAlignment not implemented by base class")}};var FaceLandmarks5=class extends FaceLandmarks{getRefPointsForAlignment(){let pts=this.positions;return[pts[0],pts[1],getCenterPoint([pts[3],pts[4]])]}};var FaceLandmarks68=class extends FaceLandmarks{getJawOutline(){return this.positions.slice(0,17)}getLeftEyeBrow(){return this.positions.slice(17,22)}getRightEyeBrow(){return this.positions.slice(22,27)}getNose(){return this.positions.slice(27,36)}getLeftEye(){return this.positions.slice(36,42)}getRightEye(){return this.positions.slice(42,48)}getMouth(){return this.positions.slice(48,68)}getRefPointsForAlignment(){return[this.getLeftEye(),this.getRightEye(),this.getMouth()].map(getCenterPoint)}};var FaceMatch=class{constructor(label,distance){this._label=label,this._distance=distance}get label(){return this._label}get distance(){return this._distance}toString(withDistance=!0){return`${this.label}${withDistance?` (${round5(this.distance)})`:""}`}};var LabeledBox=class extends Box{static assertIsValidLabeledBox(box,callee){if(Box.assertIsValidBox(box,callee),!isValidNumber(box.label))throw new Error(`${callee} - expected property label (${box.label}) to be a number`)}constructor(box,label){super(box);this._label=label}get label(){return this._label}};var LabeledFaceDescriptors=class{constructor(label,descriptors){if(typeof label!="string")throw new Error("LabeledFaceDescriptors - constructor expected label to be a string");if(!Array.isArray(descriptors)||descriptors.some(desc=>!(desc instanceof Float32Array)))throw new Error("LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array");this._label=label,this._descriptors=descriptors}get label(){return this._label}get descriptors(){return this._descriptors}toJSON(){return{label:this.label,descriptors:this.descriptors.map(d=>Array.from(d))}}static fromJSON(json18){let descriptors=json18.descriptors.map(d=>new Float32Array(d));return new LabeledFaceDescriptors(json18.label,descriptors)}};var PredictedBox=class extends LabeledBox{static assertIsValidPredictedBox(box,callee){if(LabeledBox.assertIsValidLabeledBox(box,callee),!isValidProbablitiy(box.score)||!isValidProbablitiy(box.classScore))throw new Error(`${callee} - expected properties score (${box.score}) and (${box.classScore}) to be a number between [0, 1]`)}constructor(box,label,score,classScore){super(box,label);this._score=score,this._classScore=classScore}get score(){return this._score}get classScore(){return this._classScore}};function isWithFaceDetection(obj){return obj.detection instanceof FaceDetection}function extendWithFaceDetection(sourceObj,detection){return{...sourceObj,...{detection}}}function createBrowserEnv(){let fetch3=window.fetch;if(!fetch3)throw new Error("fetch - missing fetch implementation for browser environment");let readFile=()=>{throw new Error("readFile - filesystem not available for browser environment")};return{Canvas:HTMLCanvasElement,CanvasRenderingContext2D,Image:HTMLImageElement,ImageData,Video:HTMLVideoElement,createCanvasElement:()=>document.createElement("canvas"),createImageElement:()=>document.createElement("img"),fetch:fetch3,readFile}}function createFileSystem(fs){let requireFsError="";if(!fs)try{fs=require("fs")}catch(err){requireFsError=err.toString()}return{readFile:fs?filePath=>new Promise((resolve,reject)=>{fs.readFile(filePath,(err,buffer2)=>err?reject(err):resolve(buffer2))}):()=>{throw new Error(`readFile - failed to require fs in nodejs environment with error: ${requireFsError}`)}}}function createNodejsEnv(){let Canvas=global.Canvas||global.HTMLCanvasElement,Image=global.Image||global.HTMLImageElement,createCanvasElement=()=>{if(Canvas)return new Canvas;throw new Error("createCanvasElement - missing Canvas implementation for nodejs environment")},createImageElement=()=>{if(Image)return new Image;throw new Error("createImageElement - missing Image implementation for nodejs environment")},fetch3=global.fetch,fileSystem=createFileSystem();return{Canvas:Canvas||class{},CanvasRenderingContext2D:global.CanvasRenderingContext2D||class{},Image:Image||class{},ImageData:global.ImageData||class{},Video:global.HTMLVideoElement||class{},createCanvasElement,createImageElement,fetch:fetch3,...fileSystem}}function isBrowser2(){return typeof window=="object"&&typeof document!="undefined"&&typeof HTMLImageElement!="undefined"&&typeof HTMLCanvasElement!="undefined"&&typeof HTMLVideoElement!="undefined"&&typeof ImageData!="undefined"&&typeof CanvasRenderingContext2D!="undefined"}var import_isNodejs=__toModule(require_isNodejs()),environment;function getEnv(){if(!environment)throw new Error("getEnv - environment is not defined, check isNodejs() and isBrowser()");return environment}function setEnv(env3){environment=env3}function initialize(){return isBrowser2()?setEnv(createBrowserEnv()):import_isNodejs.isNodejs()?setEnv(createNodejsEnv()):null}function monkeyPatch(env3){if(environment||initialize(),!environment)throw new Error("monkeyPatch - environment is not defined, check isNodejs() and isBrowser()");let{Canvas=environment.Canvas,Image=environment.Image}=env3;environment.Canvas=Canvas,environment.Image=Image,environment.createCanvasElement=env3.createCanvasElement||(()=>new Canvas),environment.createImageElement=env3.createImageElement||(()=>new Image),environment.ImageData=env3.ImageData||environment.ImageData,environment.Video=env3.Video||environment.Video,environment.fetch=env3.fetch||environment.fetch,environment.readFile=env3.readFile||environment.readFile}var env2={getEnv,setEnv,initialize,createBrowserEnv,createFileSystem,createNodejsEnv,monkeyPatch,isBrowser:isBrowser2,isNodejs:import_isNodejs.isNodejs};initialize();function resolveInput(arg){return!env2.isNodejs()&&typeof arg=="string"?document.getElementById(arg):arg}function getContext2dOrThrow(canvasArg){let{Canvas,CanvasRenderingContext2D:CanvasRenderingContext2D2}=env2.getEnv();if(canvasArg instanceof CanvasRenderingContext2D2)return canvasArg;let canvas=resolveInput(canvasArg);if(!(canvas instanceof Canvas))throw new Error("resolveContext2d - expected canvas to be of instance of Canvas");let ctx=canvas.getContext("2d");if(!ctx)throw new Error("resolveContext2d - canvas 2d context is null");return ctx}var AnchorPosition;(function(AnchorPosition2){AnchorPosition2.TOP_LEFT="TOP_LEFT",AnchorPosition2.TOP_RIGHT="TOP_RIGHT",AnchorPosition2.BOTTOM_LEFT="BOTTOM_LEFT",AnchorPosition2.BOTTOM_RIGHT="BOTTOM_RIGHT"})(AnchorPosition||(AnchorPosition={}));var DrawTextFieldOptions=class{constructor(options={}){let{anchorPosition,backgroundColor,fontColor,fontSize,fontStyle,padding}=options;this.anchorPosition=anchorPosition||AnchorPosition.TOP_LEFT,this.backgroundColor=backgroundColor||"rgba(0, 0, 0, 0.5)",this.fontColor=fontColor||"rgba(255, 255, 255, 1)",this.fontSize=fontSize||14,this.fontStyle=fontStyle||"Georgia",this.padding=padding||4}},DrawTextField=class{constructor(text,anchor,options={}){this.text=typeof text=="string"?[text]:text instanceof DrawTextField?text.text:text,this.anchor=anchor,this.options=new DrawTextFieldOptions(options)}measureWidth(ctx){let{padding}=this.options;return this.text.map(l=>ctx.measureText(l).width).reduce((w0,w1)=>w0{let x=padding+upperLeft.x,y=padding+upperLeft.y+(i+1)*fontSize;ctx.fillText(textLine,x,y)})}};var DrawBoxOptions=class{constructor(options={}){let{boxColor,lineWidth,label,drawLabelOptions}=options;this.boxColor=boxColor||"rgba(0, 0, 255, 1)",this.lineWidth=lineWidth||2,this.label=label;let defaultDrawLabelOptions={anchorPosition:AnchorPosition.BOTTOM_LEFT,backgroundColor:this.boxColor};this.drawLabelOptions=new DrawTextFieldOptions({...defaultDrawLabelOptions,...drawLabelOptions})}},DrawBox=class{constructor(box,options={}){this.box=new Box(box),this.options=new DrawBoxOptions(options)}draw(canvasArg){let ctx=getContext2dOrThrow(canvasArg),{boxColor,lineWidth}=this.options,{x,y,width,height}=this.box;ctx.strokeStyle=boxColor,ctx.lineWidth=lineWidth,ctx.strokeRect(x,y,width,height);let{label}=this.options;label&&new DrawTextField([label],{x:x-lineWidth/2,y},this.options.drawLabelOptions).draw(canvasArg)}};function drawDetections(canvasArg,detections){(Array.isArray(detections)?detections:[detections]).forEach(det=>{let score=det instanceof FaceDetection?det.score:isWithFaceDetection(det)?det.detection.score:void 0,box=det instanceof FaceDetection?det.box:isWithFaceDetection(det)?det.detection.box:new Box(det),label=score?`${round5(score)}`:void 0;new DrawBox(box,{label}).draw(canvasArg)})}function isMediaLoaded(media){let{Image,Video}=env2.getEnv();return media instanceof Image&&media.complete||media instanceof Video&&media.readyState>=3}function awaitMediaLoaded(media){return new Promise((resolve,reject)=>{if(media instanceof env2.getEnv().Canvas||isMediaLoaded(media))return resolve(null);function onError(e){!e.currentTarget||(e.currentTarget.removeEventListener("load",onLoad),e.currentTarget.removeEventListener("error",onError),reject(e))}function onLoad(e){!e.currentTarget||(e.currentTarget.removeEventListener("load",onLoad),e.currentTarget.removeEventListener("error",onError),resolve(e))}media.addEventListener("load",onLoad),media.addEventListener("error",onError)})}function bufferToImage(buf){return new Promise((resolve,reject)=>{buf instanceof Blob||reject(new Error("bufferToImage - expected buf to be of type: Blob"));let reader=new FileReader;reader.onload=()=>{typeof reader.result!="string"&&reject(new Error("bufferToImage - expected reader.result to be a string, in onload"));let img=env2.getEnv().createImageElement();img.onload=()=>resolve(img),img.onerror=reject,img.src=reader.result},reader.onerror=reject,reader.readAsDataURL(buf)})}function getMediaDimensions(input2){let{Image,Video}=env2.getEnv();return input2 instanceof Image?new Dimensions(input2.naturalWidth,input2.naturalHeight):input2 instanceof Video?new Dimensions(input2.videoWidth,input2.videoHeight):new Dimensions(input2.width,input2.height)}function createCanvas2({width,height}){let{createCanvasElement}=env2.getEnv(),canvas=createCanvasElement();return canvas.width=width,canvas.height=height,canvas}function createCanvasFromMedia(media,dims){let{ImageData:ImageData2}=env2.getEnv();if(!(media instanceof ImageData2)&&!isMediaLoaded(media))throw new Error("createCanvasFromMedia - media has not finished loading yet");let{width,height}=dims||getMediaDimensions(media),canvas=createCanvas2({width,height});return media instanceof ImageData2?getContext2dOrThrow(canvas).putImageData(media,0,0):getContext2dOrThrow(canvas).drawImage(media,0,0,width,height),canvas}async function imageTensorToCanvas(imgTensor,canvas){let targetCanvas=canvas||env2.getEnv().createCanvasElement(),[height,width,numChannels]=imgTensor.shape.slice(isTensor4D(imgTensor)?1:0),imgTensor3D=tidy(()=>imgTensor.as3D(height,width,numChannels).toInt());return await browser_exports.toPixels(imgTensor3D,targetCanvas),imgTensor3D.dispose(),targetCanvas}function isMediaElement(input2){let{Image,Canvas,Video}=env2.getEnv();return input2 instanceof Image||input2 instanceof Canvas||input2 instanceof Video}function imageToSquare(input2,inputSize,centerImage=!1){let{Image,Canvas}=env2.getEnv();if(!(input2 instanceof Image||input2 instanceof Canvas))throw new Error("imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement");let dims=getMediaDimensions(input2),scale3=inputSize/Math.max(dims.height,dims.width),width=scale3*dims.width,height=scale3*dims.height,targetCanvas=createCanvas2({width:inputSize,height:inputSize}),inputCanvas=input2 instanceof Canvas?input2:createCanvasFromMedia(input2),offset=Math.abs(width-height)/2,dx=centerImage&&width{if(isTensor3D(input2)){this._imageTensors[idx]=input2,this._inputDimensions[idx]=input2.shape;return}if(isTensor4D(input2)){let batchSize=input2.shape[0];if(batchSize!==1)throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);this._imageTensors[idx]=input2,this._inputDimensions[idx]=input2.shape.slice(1);return}let canvas=input2 instanceof env2.getEnv().Canvas?input2:createCanvasFromMedia(input2);this._canvases[idx]=canvas,this._inputDimensions[idx]=[canvas.height,canvas.width,3]})}get imageTensors(){return this._imageTensors}get canvases(){return this._canvases}get isBatchInput(){return this.batchSize>1||this._treatAsBatchInput}get batchSize(){return this._batchSize}get inputDimensions(){return this._inputDimensions}get inputSize(){return this._inputSize}get reshapedInputDimensions(){return range6(this.batchSize,0,1).map((_,batchIdx)=>this.getReshapedInputDimensions(batchIdx))}getInput(batchIdx){return this.canvases[batchIdx]||this.imageTensors[batchIdx]}getInputDimensions(batchIdx){return this._inputDimensions[batchIdx]}getInputHeight(batchIdx){return this._inputDimensions[batchIdx][0]}getInputWidth(batchIdx){return this._inputDimensions[batchIdx][1]}getReshapedInputDimensions(batchIdx){if(typeof this.inputSize!="number")throw new Error("getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet");let width=this.getInputWidth(batchIdx),height=this.getInputHeight(batchIdx);return computeReshapedDimensions({width,height},this.inputSize)}toBatchTensor(inputSize,isCenterInputs=!0){return this._inputSize=inputSize,tidy(()=>{let inputTensors=range6(this.batchSize,0,1).map(batchIdx=>{let input2=this.getInput(batchIdx);if(input2 instanceof Tensor){let imgTensor=isTensor4D(input2)?input2:input2.expandDims();return imgTensor=padToSquare(imgTensor,isCenterInputs),(imgTensor.shape[1]!==inputSize||imgTensor.shape[2]!==inputSize)&&(imgTensor=image.resizeBilinear(imgTensor,[inputSize,inputSize])),imgTensor.as3D(inputSize,inputSize,3)}if(input2 instanceof env2.getEnv().Canvas)return browser_exports.fromPixels(imageToSquare(input2,inputSize,isCenterInputs));throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input2}`)});return stack(inputTensors.map(t=>cast(t,"float32"))).as4D(this.batchSize,inputSize,inputSize,3)})}};async function toNetInput(inputs){if(inputs instanceof NetInput)return inputs;let inputArgArray=Array.isArray(inputs)?inputs:[inputs];if(!inputArgArray.length)throw new Error("toNetInput - empty array passed as input");let getIdxHint=idx=>Array.isArray(inputs)?` at input index ${idx}:`:"",inputArray=inputArgArray.map(resolveInput);return inputArray.forEach((input2,i)=>{if(!isMediaElement(input2)&&!isTensor3D(input2)&&!isTensor4D(input2))throw typeof inputArgArray[i]=="string"?new Error(`toNetInput -${getIdxHint(i)} string passed, but could not resolve HTMLElement for element id ${inputArgArray[i]}`):new Error(`toNetInput -${getIdxHint(i)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`);if(isTensor4D(input2)){let batchSize=input2.shape[0];if(batchSize!==1)throw new Error(`toNetInput -${getIdxHint(i)} tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`)}}),await Promise.all(inputArray.map(input2=>isMediaElement(input2)&&awaitMediaLoaded(input2))),new NetInput(inputArray,Array.isArray(inputs))}async function extractFaces(input2,detections){let{Canvas}=env2.getEnv(),canvas=input2;if(!(input2 instanceof Canvas)){let netInput=await toNetInput(input2);if(netInput.batchSize>1)throw new Error("extractFaces - batchSize > 1 not supported");let tensorOrCanvas=netInput.getInput(0);canvas=tensorOrCanvas instanceof Canvas?tensorOrCanvas:await imageTensorToCanvas(tensorOrCanvas)}let ctx=getContext2dOrThrow(canvas);return detections.map(det=>det instanceof FaceDetection?det.forSize(canvas.width,canvas.height).box.floor():det).map(box=>box.clipAtImageBorders(canvas.width,canvas.height)).map(({x,y,width,height})=>{let faceImg=createCanvas2({width,height});return getContext2dOrThrow(faceImg).putImageData(ctx.getImageData(x,y,width,height),0,0),faceImg})}async function extractFaceTensors(imageTensor,detections){if(!isTensor3D(imageTensor)&&!isTensor4D(imageTensor))throw new Error("extractFaceTensors - expected image tensor to be 3D or 4D");if(isTensor4D(imageTensor)&&imageTensor.shape[0]>1)throw new Error("extractFaceTensors - batchSize > 1 not supported");return tidy(()=>{let[imgHeight,imgWidth,numChannels]=imageTensor.shape.slice(isTensor4D(imageTensor)?1:0);return detections.map(det=>det instanceof FaceDetection?det.forSize(imgWidth,imgHeight).box:det).map(box=>box.clipAtImageBorders(imgWidth,imgHeight)).map(({x,y,width,height})=>slice3d(imageTensor.as3D(imgHeight,imgWidth,numChannels),[y,x,0],[height,width,numChannels]))})}async function fetchOrThrow(url,init2){let{fetch:fetch3}=env2.getEnv(),res=await fetch3(url,init2);if(!(res.status<400))throw new Error(`failed to fetch: (${res.status}) ${res.statusText}, from url: ${res.url}`);return res}async function fetchImage(uri){let res=await fetchOrThrow(uri),blob=await res.blob();if(!blob.type.startsWith("image/"))throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${blob.type}, for url: ${res.url}`);return bufferToImage(blob)}async function fetchJson(uri){return(await fetchOrThrow(uri)).json()}async function fetchNetWeights(uri){return new Float32Array(await(await fetchOrThrow(uri)).arrayBuffer())}function getModelUris(uri,defaultModelName){let defaultManifestFilename=`${defaultModelName}-weights_manifest.json`;if(!uri)return{modelBaseUri:"",manifestUri:defaultManifestFilename};if(uri==="/")return{modelBaseUri:"/",manifestUri:`/${defaultManifestFilename}`};let protocol=uri.startsWith("http://")?"http://":uri.startsWith("https://")?"https://":"";uri=uri.replace(protocol,"");let parts=uri.split("/").filter(s=>s),manifestFile=uri.endsWith(".json")?parts[parts.length-1]:defaultManifestFilename,modelBaseUri=protocol+(uri.endsWith(".json")?parts.slice(0,parts.length-1):parts).join("/");return modelBaseUri=uri.startsWith("/")?`/${modelBaseUri}`:modelBaseUri,{modelBaseUri,manifestUri:modelBaseUri==="/"?`/${manifestFile}`:`${modelBaseUri}/${manifestFile}`}}async function loadWeightMap(uri,defaultModelName){let{manifestUri,modelBaseUri}=getModelUris(uri,defaultModelName),manifest=await fetchJson(manifestUri);return io_exports.loadWeights(manifest,modelBaseUri)}function matchDimensions(input2,reference,useMediaDimensions=!1){let{width,height}=useMediaDimensions?getMediaDimensions(reference):reference;return input2.width=width,input2.height=height,{width,height}}var NeuralNetwork=class{constructor(){this._params=void 0;this._paramMappings=[]}get params(){return this._params}get paramMappings(){return this._paramMappings}get isLoaded(){return!!this.params}getParamFromPath(paramPath){let{obj,objProp}=this.traversePropertyPath(paramPath);return obj[objProp]}reassignParamFromPath(paramPath,tensor2){let{obj,objProp}=this.traversePropertyPath(paramPath);obj[objProp].dispose(),obj[objProp]=tensor2}getParamList(){return this._paramMappings.map(({paramPath})=>({path:paramPath,tensor:this.getParamFromPath(paramPath)}))}getTrainableParams(){return this.getParamList().filter(param=>param.tensor instanceof Variable)}getFrozenParams(){return this.getParamList().filter(param=>!(param.tensor instanceof Variable))}variable(){this.getFrozenParams().forEach(({path,tensor:tensor2})=>{this.reassignParamFromPath(path,tensor2.variable())})}freeze(){this.getTrainableParams().forEach(({path,tensor:variable2})=>{let tensor2=tensor(variable2.dataSync());variable2.dispose(),this.reassignParamFromPath(path,tensor2)})}dispose(throwOnRedispose=!0){this.getParamList().forEach(param=>{if(throwOnRedispose&¶m.tensor.isDisposed)throw new Error(`param tensor has already been disposed for path ${param.path}`);param.tensor.dispose()}),this._params=void 0}serializeParams(){return new Float32Array(this.getParamList().map(({tensor:tensor2})=>Array.from(tensor2.dataSync())).reduce((flat,arr)=>flat.concat(arr)))}async load(weightsOrUrl){if(weightsOrUrl instanceof Float32Array){this.extractWeights(weightsOrUrl);return}await this.loadFromUri(weightsOrUrl)}async loadFromUri(uri){if(uri&&typeof uri!="string")throw new Error(`${this._name}.loadFromUri - expected model uri`);let weightMap=await loadWeightMap(uri,this.getDefaultModelName());this.loadFromWeightMap(weightMap)}async loadFromDisk(filePath){if(filePath&&typeof filePath!="string")throw new Error(`${this._name}.loadFromDisk - expected model file path`);let{readFile}=env2.getEnv(),{manifestUri,modelBaseUri}=getModelUris(filePath,this.getDefaultModelName()),fetchWeightsFromDisk=filePaths=>Promise.all(filePaths.map(fp=>readFile(fp).then(buf=>buf.buffer))),loadWeights2=io_exports.weightsLoaderFactory(fetchWeightsFromDisk),manifest=JSON.parse((await readFile(manifestUri)).toString()),weightMap=await loadWeights2(manifest,modelBaseUri);this.loadFromWeightMap(weightMap)}loadFromWeightMap(weightMap){let{paramMappings,params}=this.extractParamsFromWeigthMap(weightMap);this._paramMappings=paramMappings,this._params=params}extractWeights(weights){let{paramMappings,params}=this.extractParams(weights);this._paramMappings=paramMappings,this._params=params}traversePropertyPath(paramPath){if(!this.params)throw new Error("traversePropertyPath - model has no loaded params");let result=paramPath.split("/").reduce((res,objProp2)=>{if(!res.nextObj.hasOwnProperty(objProp2))throw new Error(`traversePropertyPath - object does not have property ${objProp2}, for path ${paramPath}`);return{obj:res.nextObj,objProp:objProp2,nextObj:res.nextObj[objProp2]}},{nextObj:this.params}),{obj,objProp}=result;if(!obj||!objProp||!(obj[objProp]instanceof Tensor))throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${paramPath}`);return{obj,objProp}}};function depthwiseSeparableConv(x,params,stride){return tidy(()=>{let out=separableConv2d(x,params.depthwise_filter,params.pointwise_filter,stride,"same");return out=add2(out,params.bias),out})}function denseBlock3(x,denseBlockParams,isFirstLayer=!1){return tidy(()=>{let out1=relu(isFirstLayer?add2(conv2d(x,denseBlockParams.conv0.filters,[2,2],"same"),denseBlockParams.conv0.bias):depthwiseSeparableConv(x,denseBlockParams.conv0,[2,2])),out2=depthwiseSeparableConv(out1,denseBlockParams.conv1,[1,1]),in3=relu(add2(out1,out2)),out3=depthwiseSeparableConv(in3,denseBlockParams.conv2,[1,1]);return relu(add2(out1,add2(out2,out3)))})}function denseBlock4(x,denseBlockParams,isFirstLayer=!1,isScaleDown=!0){return tidy(()=>{let out1=relu(isFirstLayer?add2(conv2d(x,denseBlockParams.conv0.filters,isScaleDown?[2,2]:[1,1],"same"),denseBlockParams.conv0.bias):depthwiseSeparableConv(x,denseBlockParams.conv0,isScaleDown?[2,2]:[1,1])),out2=depthwiseSeparableConv(out1,denseBlockParams.conv1,[1,1]),in3=relu(add2(out1,out2)),out3=depthwiseSeparableConv(in3,denseBlockParams.conv2,[1,1]),in4=relu(add2(out1,add2(out2,out3))),out4=depthwiseSeparableConv(in4,denseBlockParams.conv3,[1,1]);return relu(add2(out1,add2(out2,add2(out3,out4))))})}function convLayer(x,params,padding="same",withRelu=!1){return tidy(()=>{let out=add2(conv2d(x,params.filters,[1,1],padding),params.bias);return withRelu?relu(out):out})}function disposeUnusedWeightTensors(weightMap,paramMappings){Object.keys(weightMap).forEach(path=>{paramMappings.some(pm=>pm.originalPath===path)||weightMap[path].dispose()})}function extractConvParamsFactory(extractWeights,paramMappings){return(channelsIn,channelsOut,filterSize,mappedPrefix)=>{let filters=tensor4d(extractWeights(channelsIn*channelsOut*filterSize*filterSize),[filterSize,filterSize,channelsIn,channelsOut]),bias=tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/bias`}),{filters,bias}}}function extractFCParamsFactory(extractWeights,paramMappings){return(channelsIn,channelsOut,mappedPrefix)=>{let fc_weights=tensor2d(extractWeights(channelsIn*channelsOut),[channelsIn,channelsOut]),fc_bias=tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/weights`},{paramPath:`${mappedPrefix}/bias`}),{weights:fc_weights,bias:fc_bias}}}var SeparableConvParams=class{constructor(depthwise_filter,pointwise_filter,bias){this.depthwise_filter=depthwise_filter;this.pointwise_filter=pointwise_filter;this.bias=bias}};function extractSeparableConvParamsFactory(extractWeights,paramMappings){return(channelsIn,channelsOut,mappedPrefix)=>{let depthwise_filter=tensor4d(extractWeights(3*3*channelsIn),[3,3,channelsIn,1]),pointwise_filter=tensor4d(extractWeights(channelsIn*channelsOut),[1,1,channelsIn,channelsOut]),bias=tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/depthwise_filter`},{paramPath:`${mappedPrefix}/pointwise_filter`},{paramPath:`${mappedPrefix}/bias`}),new SeparableConvParams(depthwise_filter,pointwise_filter,bias)}}function loadSeparableConvParamsFactory(extractWeightEntry){return prefix=>{let depthwise_filter=extractWeightEntry(`${prefix}/depthwise_filter`,4),pointwise_filter=extractWeightEntry(`${prefix}/pointwise_filter`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return new SeparableConvParams(depthwise_filter,pointwise_filter,bias)}}function extractWeightEntryFactory(weightMap,paramMappings){return(originalPath,paramRank,mappedPath)=>{let tensor2=weightMap[originalPath];if(!isTensor(tensor2,paramRank))throw new Error(`expected weightMap[${originalPath}] to be a Tensor${paramRank}D, instead have ${tensor2}`);return paramMappings.push({originalPath,paramPath:mappedPath||originalPath}),tensor2}}function extractWeightsFactory(weights){let remainingWeights=weights;function extractWeights(numWeights){let ret=remainingWeights.slice(0,numWeights);return remainingWeights=remainingWeights.slice(numWeights),ret}function getRemainingWeights(){return remainingWeights}return{extractWeights,getRemainingWeights}}function extractorsFactory(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings),extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);function extractDenseBlock3Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(channelsIn,channelsOut,3,`${mappedPrefix}/conv0`):extractSeparableConvParams(channelsIn,channelsOut,`${mappedPrefix}/conv0`),conv1=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv1`),conv22=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv2`);return{conv0,conv1,conv2:conv22}}function extractDenseBlock4Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer=!1){let{conv0,conv1,conv2:conv22}=extractDenseBlock3Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer),conv3=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv3`);return{conv0,conv1,conv2:conv22,conv3}}return{extractDenseBlock3Params,extractDenseBlock4Params}}function extractParams(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractDenseBlock4Params}=extractorsFactory(extractWeights,paramMappings),dense0=extractDenseBlock4Params(3,32,"dense0",!0),dense1=extractDenseBlock4Params(32,64,"dense1"),dense2=extractDenseBlock4Params(64,128,"dense2"),dense3=extractDenseBlock4Params(128,256,"dense3");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{dense0,dense1,dense2,dense3}}}function loadConvParamsFactory(extractWeightEntry){return prefix=>{let filters=extractWeightEntry(`${prefix}/filters`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return{filters,bias}}}function loadParamsFactory(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings),extractConvParams=loadConvParamsFactory(extractWeightEntry),extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);function extractDenseBlock3Params(prefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(`${prefix}/conv0`):extractSeparableConvParams(`${prefix}/conv0`),conv1=extractSeparableConvParams(`${prefix}/conv1`),conv22=extractSeparableConvParams(`${prefix}/conv2`);return{conv0,conv1,conv2:conv22}}function extractDenseBlock4Params(prefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(`${prefix}/conv0`):extractSeparableConvParams(`${prefix}/conv0`),conv1=extractSeparableConvParams(`${prefix}/conv1`),conv22=extractSeparableConvParams(`${prefix}/conv2`),conv3=extractSeparableConvParams(`${prefix}/conv3`);return{conv0,conv1,conv2:conv22,conv3}}return{extractDenseBlock3Params,extractDenseBlock4Params}}function extractParamsFromWeigthMap(weightMap){let paramMappings=[],{extractDenseBlock4Params}=loadParamsFactory(weightMap,paramMappings),params={dense0:extractDenseBlock4Params("dense0",!0),dense1:extractDenseBlock4Params("dense1"),dense2:extractDenseBlock4Params("dense2"),dense3:extractDenseBlock4Params("dense3")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var FaceFeatureExtractor=class extends NeuralNetwork{constructor(){super("FaceFeatureExtractor")}forwardInput(input2){let{params}=this;if(!params)throw new Error("FaceFeatureExtractor - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(112,!0),"float32"),normalized=normalize(batchTensor,[122.782,117.001,104.298]).div(scalar(255)),out=denseBlock4(normalized,params.dense0,!0);return out=denseBlock4(out,params.dense1),out=denseBlock4(out,params.dense2),out=denseBlock4(out,params.dense3),out=avgPool(out,[7,7],[2,2],"valid"),out})}async forward(input2){return this.forwardInput(await toNetInput(input2))}getDefaultModelName(){return"face_feature_extractor_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap(weightMap)}extractParams(weights){return extractParams(weights)}};function fullyConnectedLayer(x,params){return tidy(()=>add2(matMul(x,params.weights),params.bias))}function extractParams2(weights,channelsIn,channelsOut){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),fc=extractFCParamsFactory(extractWeights,paramMappings)(channelsIn,channelsOut,"fc");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{fc}}}function extractParamsFromWeigthMap2(weightMap){let paramMappings=[],extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractFcParams(prefix){let weights=extractWeightEntry(`${prefix}/weights`,2),bias=extractWeightEntry(`${prefix}/bias`,1);return{weights,bias}}let params={fc:extractFcParams("fc")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function seperateWeightMaps(weightMap){let featureExtractorMap={},classifierMap={};return Object.keys(weightMap).forEach(key=>{let map=key.startsWith("fc")?classifierMap:featureExtractorMap;map[key]=weightMap[key]}),{featureExtractorMap,classifierMap}}var FaceProcessor=class extends NeuralNetwork{constructor(_name,faceFeatureExtractor){super(_name);this._faceFeatureExtractor=faceFeatureExtractor}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(input2){let{params}=this;if(!params)throw new Error(`${this._name} - load model before inference`);return tidy(()=>{let bottleneckFeatures=input2 instanceof NetInput?this.faceFeatureExtractor.forwardInput(input2):input2;return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0],-1),params.fc)})}dispose(throwOnRedispose=!0){this.faceFeatureExtractor.dispose(throwOnRedispose),super.dispose(throwOnRedispose)}loadClassifierParams(weights){let{params,paramMappings}=this.extractClassifierParams(weights);this._params=params,this._paramMappings=paramMappings}extractClassifierParams(weights){return extractParams2(weights,this.getClassifierChannelsIn(),this.getClassifierChannelsOut())}extractParamsFromWeigthMap(weightMap){let{featureExtractorMap,classifierMap}=seperateWeightMaps(weightMap);return this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap),extractParamsFromWeigthMap2(classifierMap)}extractParams(weights){let cIn=this.getClassifierChannelsIn(),cOut=this.getClassifierChannelsOut(),classifierWeightSize=cOut*cIn+cOut,featureExtractorWeights=weights.slice(0,weights.length-classifierWeightSize),classifierWeights=weights.slice(weights.length-classifierWeightSize);return this.faceFeatureExtractor.extractWeights(featureExtractorWeights),this.extractClassifierParams(classifierWeights)}};var FACE_EXPRESSION_LABELS=["neutral","happy","sad","angry","fearful","disgusted","surprised"],FaceExpressions=class{constructor(probabilities){if(probabilities.length!==7)throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${probabilities.length}`);FACE_EXPRESSION_LABELS.forEach((expression,idx)=>{this[expression]=probabilities[idx]})}asSortedArray(){return FACE_EXPRESSION_LABELS.map(expression=>({expression,probability:this[expression]})).sort((e0,e1)=>e1.probability-e0.probability)}};var FaceExpressionNet=class extends FaceProcessor{constructor(faceFeatureExtractor=new FaceFeatureExtractor){super("FaceExpressionNet",faceFeatureExtractor)}forwardInput(input2){return tidy(()=>softmax(this.runNet(input2)))}async forward(input2){return this.forwardInput(await toNetInput(input2))}async predictExpressions(input2){let netInput=await toNetInput(input2),out=await this.forwardInput(netInput),probabilitesByBatch=await Promise.all(unstack(out).map(async t=>{let data=await t.data();return t.dispose(),data}));out.dispose();let predictionsByBatch=probabilitesByBatch.map(probabilites=>new FaceExpressions(probabilites));return netInput.isBatchInput?predictionsByBatch:predictionsByBatch[0]}getDefaultModelName(){return"face_expression_model"}getClassifierChannelsIn(){return 256}getClassifierChannelsOut(){return 7}};function isWithFaceExpressions(obj){return obj.expressions instanceof FaceExpressions}function extendWithFaceExpressions(sourceObj,expressions){return{...sourceObj,...{expressions}}}function drawFaceExpressions(canvasArg,faceExpressions,minConfidence=.1,textFieldAnchor){(Array.isArray(faceExpressions)?faceExpressions:[faceExpressions]).forEach(e=>{let expr=e instanceof FaceExpressions?e:isWithFaceExpressions(e)?e.expressions:void 0;if(!expr)throw new Error("drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof");let resultsToDisplay=expr.asSortedArray().filter(exprLocal=>exprLocal.probability>minConfidence),anchor=isWithFaceDetection(e)?e.detection.box.bottomLeft:textFieldAnchor||new Point(0,0);new DrawTextField(resultsToDisplay.map(exprLocal=>`${exprLocal.expression} (${round5(exprLocal.probability)})`),anchor).draw(canvasArg)})}function isWithFaceLandmarks(obj){return isWithFaceDetection(obj)&&obj.landmarks instanceof FaceLandmarks&&obj.unshiftedLandmarks instanceof FaceLandmarks&&obj.alignedRect instanceof FaceDetection}function extendWithFaceLandmarks(sourceObj,unshiftedLandmarks){let{box:shift}=sourceObj.detection,landmarks=unshiftedLandmarks.shiftBy(shift.x,shift.y),rect=landmarks.align(),{imageDims}=sourceObj.detection,alignedRect=new FaceDetection(sourceObj.detection.score,rect.rescale(imageDims.reverse()),imageDims);return{...sourceObj,...{landmarks,unshiftedLandmarks,alignedRect}}}var DrawFaceLandmarksOptions=class{constructor(options={}){let{drawLines=!0,drawPoints=!0,lineWidth,lineColor,pointSize,pointColor}=options;this.drawLines=drawLines,this.drawPoints=drawPoints,this.lineWidth=lineWidth||1,this.pointSize=pointSize||2,this.lineColor=lineColor||"rgba(0, 255, 255, 1)",this.pointColor=pointColor||"rgba(255, 0, 255, 1)"}},DrawFaceLandmarks=class{constructor(faceLandmarks,options={}){this.faceLandmarks=faceLandmarks,this.options=new DrawFaceLandmarksOptions(options)}draw(canvasArg){let ctx=getContext2dOrThrow(canvasArg),{drawLines,drawPoints,lineWidth,lineColor,pointSize,pointColor}=this.options;if(drawLines&&this.faceLandmarks instanceof FaceLandmarks68&&(ctx.strokeStyle=lineColor,ctx.lineWidth=lineWidth,drawContour(ctx,this.faceLandmarks.getJawOutline()),drawContour(ctx,this.faceLandmarks.getLeftEyeBrow()),drawContour(ctx,this.faceLandmarks.getRightEyeBrow()),drawContour(ctx,this.faceLandmarks.getNose()),drawContour(ctx,this.faceLandmarks.getLeftEye(),!0),drawContour(ctx,this.faceLandmarks.getRightEye(),!0),drawContour(ctx,this.faceLandmarks.getMouth(),!0)),drawPoints){ctx.strokeStyle=pointColor,ctx.fillStyle=pointColor;let drawPoint=pt=>{ctx.beginPath(),ctx.arc(pt.x,pt.y,pointSize,0,2*Math.PI),ctx.fill()};this.faceLandmarks.positions.forEach(drawPoint)}}};function drawFaceLandmarks(canvasArg,faceLandmarks){(Array.isArray(faceLandmarks)?faceLandmarks:[faceLandmarks]).forEach(f=>{let landmarks=f instanceof FaceLandmarks?f:isWithFaceLandmarks(f)?f.landmarks:void 0;if(!landmarks)throw new Error("drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof");new DrawFaceLandmarks(landmarks).draw(canvasArg)})}var version10="0.11.1";function extractorsFactory2(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings),extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);function extractReductionBlockParams(channelsIn,channelsOut,mappedPrefix){let separable_conv0=extractSeparableConvParams(channelsIn,channelsOut,`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/separable_conv1`),expansion_conv=extractConvParams(channelsIn,channelsOut,1,`${mappedPrefix}/expansion_conv`);return{separable_conv0,separable_conv1,expansion_conv}}function extractMainBlockParams(channels,mappedPrefix){let separable_conv0=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv1`),separable_conv2=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv2`);return{separable_conv0,separable_conv1,separable_conv2}}return{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}}function extractParams3(weights,numMainBlocks){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}=extractorsFactory2(extractWeights,paramMappings),entry_flow_conv_in=extractConvParams(3,32,3,"entry_flow/conv_in"),entry_flow_reduction_block_0=extractReductionBlockParams(32,64,"entry_flow/reduction_block_0"),entry_flow_reduction_block_1=extractReductionBlockParams(64,128,"entry_flow/reduction_block_1"),entry_flow={conv_in:entry_flow_conv_in,reduction_block_0:entry_flow_reduction_block_0,reduction_block_1:entry_flow_reduction_block_1},middle_flow={};range6(numMainBlocks,0,1).forEach(idx=>{middle_flow[`main_block_${idx}`]=extractMainBlockParams(128,`middle_flow/main_block_${idx}`)});let exit_flow_reduction_block=extractReductionBlockParams(128,256,"exit_flow/reduction_block"),exit_flow_separable_conv=extractSeparableConvParams(256,512,"exit_flow/separable_conv"),exit_flow={reduction_block:exit_flow_reduction_block,separable_conv:exit_flow_separable_conv};if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{entry_flow,middle_flow,exit_flow}}}function loadParamsFactory2(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings),extractConvParams=loadConvParamsFactory(extractWeightEntry),extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);function extractReductionBlockParams(mappedPrefix){let separable_conv0=extractSeparableConvParams(`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(`${mappedPrefix}/separable_conv1`),expansion_conv=extractConvParams(`${mappedPrefix}/expansion_conv`);return{separable_conv0,separable_conv1,expansion_conv}}function extractMainBlockParams(mappedPrefix){let separable_conv0=extractSeparableConvParams(`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(`${mappedPrefix}/separable_conv1`),separable_conv2=extractSeparableConvParams(`${mappedPrefix}/separable_conv2`);return{separable_conv0,separable_conv1,separable_conv2}}return{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}}function extractParamsFromWeigthMap3(weightMap,numMainBlocks){let paramMappings=[],{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}=loadParamsFactory2(weightMap,paramMappings),entry_flow_conv_in=extractConvParams("entry_flow/conv_in"),entry_flow_reduction_block_0=extractReductionBlockParams("entry_flow/reduction_block_0"),entry_flow_reduction_block_1=extractReductionBlockParams("entry_flow/reduction_block_1"),entry_flow={conv_in:entry_flow_conv_in,reduction_block_0:entry_flow_reduction_block_0,reduction_block_1:entry_flow_reduction_block_1},middle_flow={};range6(numMainBlocks,0,1).forEach(idx=>{middle_flow[`main_block_${idx}`]=extractMainBlockParams(`middle_flow/main_block_${idx}`)});let exit_flow_reduction_block=extractReductionBlockParams("exit_flow/reduction_block"),exit_flow_separable_conv=extractSeparableConvParams("exit_flow/separable_conv"),exit_flow={reduction_block:exit_flow_reduction_block,separable_conv:exit_flow_separable_conv};return disposeUnusedWeightTensors(weightMap,paramMappings),{params:{entry_flow,middle_flow,exit_flow},paramMappings}}function conv(x,params,stride){return add2(conv2d(x,params.filters,stride,"same"),params.bias)}function reductionBlock(x,params,isActivateInput=!0){let out=isActivateInput?relu(x):x;return out=depthwiseSeparableConv(out,params.separable_conv0,[1,1]),out=depthwiseSeparableConv(relu(out),params.separable_conv1,[1,1]),out=maxPool(out,[3,3],[2,2],"same"),out=add2(out,conv(x,params.expansion_conv,[2,2])),out}function mainBlock(x,params){let out=depthwiseSeparableConv(relu(x),params.separable_conv0,[1,1]);return out=depthwiseSeparableConv(relu(out),params.separable_conv1,[1,1]),out=depthwiseSeparableConv(relu(out),params.separable_conv2,[1,1]),out=add2(out,x),out}var TinyXception=class extends NeuralNetwork{constructor(numMainBlocks){super("TinyXception");this._numMainBlocks=numMainBlocks}forwardInput(input2){let{params}=this;if(!params)throw new Error("TinyXception - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(112,!0),"float32"),normalized=normalize(batchTensor,[122.782,117.001,104.298]).div(scalar(256)),out=relu(conv(normalized,params.entry_flow.conv_in,[2,2]));return out=reductionBlock(out,params.entry_flow.reduction_block_0,!1),out=reductionBlock(out,params.entry_flow.reduction_block_1),range6(this._numMainBlocks,0,1).forEach(idx=>{out=mainBlock(out,params.middle_flow[`main_block_${idx}`])}),out=reductionBlock(out,params.exit_flow.reduction_block),out=relu(depthwiseSeparableConv(out,params.exit_flow.separable_conv,[1,1])),out})}async forward(input2){return this.forwardInput(await toNetInput(input2))}getDefaultModelName(){return"tiny_xception_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap3(weightMap,this._numMainBlocks)}extractParams(weights){return extractParams3(weights,this._numMainBlocks)}};function extractParams4(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),extractFCParams=extractFCParamsFactory(extractWeights,paramMappings),age=extractFCParams(512,1,"fc/age"),gender=extractFCParams(512,2,"fc/gender");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{fc:{age,gender}}}}function extractParamsFromWeigthMap4(weightMap){let paramMappings=[],extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractFcParams(prefix){let weights=extractWeightEntry(`${prefix}/weights`,2),bias=extractWeightEntry(`${prefix}/bias`,1);return{weights,bias}}let params={fc:{age:extractFcParams("fc/age"),gender:extractFcParams("fc/gender")}};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var Gender;(function(Gender2){Gender2.FEMALE="female",Gender2.MALE="male"})(Gender||(Gender={}));var AgeGenderNet=class extends NeuralNetwork{constructor(faceFeatureExtractor=new TinyXception(2)){super("AgeGenderNet");this._faceFeatureExtractor=faceFeatureExtractor}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(input2){let{params}=this;if(!params)throw new Error(`${this._name} - load model before inference`);return tidy(()=>{let bottleneckFeatures=input2 instanceof NetInput?this.faceFeatureExtractor.forwardInput(input2):input2,pooled=avgPool(bottleneckFeatures,[7,7],[2,2],"valid").as2D(bottleneckFeatures.shape[0],-1),age=fullyConnectedLayer(pooled,params.fc.age).as1D(),gender=fullyConnectedLayer(pooled,params.fc.gender);return{age,gender}})}forwardInput(input2){return tidy(()=>{let{age,gender}=this.runNet(input2);return{age,gender:softmax(gender)}})}async forward(input2){return this.forwardInput(await toNetInput(input2))}async predictAgeAndGender(input2){let netInput=await toNetInput(input2),out=await this.forwardInput(netInput),ages=unstack(out.age),genders=unstack(out.gender),ageAndGenderTensors=ages.map((ageTensor,i)=>({ageTensor,genderTensor:genders[i]})),predictionsByBatch=await Promise.all(ageAndGenderTensors.map(async({ageTensor,genderTensor})=>{let age=(await ageTensor.data())[0],probMale=(await genderTensor.data())[0],isMale=probMale>.5,gender=isMale?Gender.MALE:Gender.FEMALE,genderProbability=isMale?probMale:1-probMale;return ageTensor.dispose(),genderTensor.dispose(),{age,gender,genderProbability}}));return out.age.dispose(),out.gender.dispose(),netInput.isBatchInput?predictionsByBatch:predictionsByBatch[0]}getDefaultModelName(){return"age_gender_model"}dispose(throwOnRedispose=!0){this.faceFeatureExtractor.dispose(throwOnRedispose),super.dispose(throwOnRedispose)}loadClassifierParams(weights){let{params,paramMappings}=this.extractClassifierParams(weights);this._params=params,this._paramMappings=paramMappings}extractClassifierParams(weights){return extractParams4(weights)}extractParamsFromWeigthMap(weightMap){let{featureExtractorMap,classifierMap}=seperateWeightMaps(weightMap);return this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap),extractParamsFromWeigthMap4(classifierMap)}extractParams(weights){let classifierWeightSize=512*1+1+(512*2+2),featureExtractorWeights=weights.slice(0,weights.length-classifierWeightSize),classifierWeights=weights.slice(weights.length-classifierWeightSize);return this.faceFeatureExtractor.extractWeights(featureExtractorWeights),this.extractClassifierParams(classifierWeights)}};var FaceLandmark68NetBase=class extends FaceProcessor{postProcess(output,inputSize,originalDimensions){let inputDimensions=originalDimensions.map(({width,height})=>{let scale3=inputSize/Math.max(height,width);return{width:width*scale3,height:height*scale3}}),batchSize=inputDimensions.length;return tidy(()=>{let createInterleavedTensor=(fillX,fillY)=>stack([fill([68],fillX,"float32"),fill([68],fillY,"float32")],1).as2D(1,136).as1D(),getPadding2=(batchIdx,cond)=>{let{width,height}=inputDimensions[batchIdx];return cond(width,height)?Math.abs(width-height)/2:0},getPaddingX=batchIdx=>getPadding2(batchIdx,(w,h)=>wgetPadding2(batchIdx,(w,h)=>hcreateInterleavedTensor(getPaddingX(batchIdx),getPaddingY(batchIdx))))).div(stack(Array.from(Array(batchSize),(_,batchIdx)=>createInterleavedTensor(inputDimensions[batchIdx].width,inputDimensions[batchIdx].height))))})}forwardInput(input2){return tidy(()=>{let out=this.runNet(input2);return this.postProcess(out,input2.inputSize,input2.inputDimensions.map(([height,width])=>({height,width})))})}async forward(input2){return this.forwardInput(await toNetInput(input2))}async detectLandmarks(input2){let netInput=await toNetInput(input2),landmarkTensors=tidy(()=>unstack(this.forwardInput(netInput))),landmarksForBatch=await Promise.all(landmarkTensors.map(async(landmarkTensor,batchIdx)=>{let landmarksArray=Array.from(await landmarkTensor.data()),xCoords=landmarksArray.filter((_,i)=>isEven2(i)),yCoords=landmarksArray.filter((_,i)=>!isEven2(i));return new FaceLandmarks68(Array(68).fill(0).map((_,i)=>new Point(xCoords[i],yCoords[i])),{height:netInput.getInputHeight(batchIdx),width:netInput.getInputWidth(batchIdx)})}));return landmarkTensors.forEach(t=>t.dispose()),netInput.isBatchInput?landmarksForBatch:landmarksForBatch[0]}getClassifierChannelsOut(){return 136}};var FaceLandmark68Net=class extends FaceLandmark68NetBase{constructor(faceFeatureExtractor=new FaceFeatureExtractor){super("FaceLandmark68Net",faceFeatureExtractor)}getDefaultModelName(){return"face_landmark_68_model"}getClassifierChannelsIn(){return 256}};function extractParamsFromWeigthMapTiny(weightMap){let paramMappings=[],{extractDenseBlock3Params}=loadParamsFactory(weightMap,paramMappings),params={dense0:extractDenseBlock3Params("dense0",!0),dense1:extractDenseBlock3Params("dense1"),dense2:extractDenseBlock3Params("dense2")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function extractParamsTiny(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractDenseBlock3Params}=extractorsFactory(extractWeights,paramMappings),dense0=extractDenseBlock3Params(3,32,"dense0",!0),dense1=extractDenseBlock3Params(32,64,"dense1"),dense2=extractDenseBlock3Params(64,128,"dense2");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{dense0,dense1,dense2}}}var TinyFaceFeatureExtractor=class extends NeuralNetwork{constructor(){super("TinyFaceFeatureExtractor")}forwardInput(input2){let{params}=this;if(!params)throw new Error("TinyFaceFeatureExtractor - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(112,!0),"float32"),normalized=normalize(batchTensor,[122.782,117.001,104.298]).div(scalar(255)),out=denseBlock3(normalized,params.dense0,!0);return out=denseBlock3(out,params.dense1),out=denseBlock3(out,params.dense2),out=avgPool(out,[14,14],[2,2],"valid"),out})}async forward(input2){return this.forwardInput(await toNetInput(input2))}getDefaultModelName(){return"face_feature_extractor_tiny_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMapTiny(weightMap)}extractParams(weights){return extractParamsTiny(weights)}};var FaceLandmark68TinyNet=class extends FaceLandmark68NetBase{constructor(faceFeatureExtractor=new TinyFaceFeatureExtractor){super("FaceLandmark68TinyNet",faceFeatureExtractor)}getDefaultModelName(){return"face_landmark_68_tiny_model"}getClassifierChannelsIn(){return 128}};var FaceLandmarkNet=class extends FaceLandmark68Net{};function scale2(x,params){return add2(mul(x,params.weights),params.biases)}function convLayer2(x,params,strides,withRelu,padding="same"){let{filters,bias}=params.conv,out=conv2d(x,filters,strides,padding);return out=add2(out,bias),out=scale2(out,params.scale),withRelu?relu(out):out}function conv2(x,params){return convLayer2(x,params,[1,1],!0)}function convNoRelu(x,params){return convLayer2(x,params,[1,1],!1)}function convDown(x,params){return convLayer2(x,params,[2,2],!0,"valid")}function extractorsFactory3(extractWeights,paramMappings){function extractFilterValues(numFilterValues,numFilters,filterSize){let weights=extractWeights(numFilterValues),depth=weights.length/(numFilters*filterSize*filterSize);if(isFloat(depth))throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`);return tidy(()=>transpose(tensor4d(weights,[numFilters,depth,filterSize,filterSize]),[2,3,1,0]))}function extractConvParams(numFilterValues,numFilters,filterSize,mappedPrefix){let filters=extractFilterValues(numFilterValues,numFilters,filterSize),bias=tensor1d(extractWeights(numFilters));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/bias`}),{filters,bias}}function extractScaleLayerParams(numWeights,mappedPrefix){let weights=tensor1d(extractWeights(numWeights)),biases=tensor1d(extractWeights(numWeights));return paramMappings.push({paramPath:`${mappedPrefix}/weights`},{paramPath:`${mappedPrefix}/biases`}),{weights,biases}}function extractConvLayerParams(numFilterValues,numFilters,filterSize,mappedPrefix){let conv3=extractConvParams(numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv`),scale3=extractScaleLayerParams(numFilters,`${mappedPrefix}/scale`);return{conv:conv3,scale:scale3}}function extractResidualLayerParams(numFilterValues,numFilters,filterSize,mappedPrefix,isDown=!1){let conv1=extractConvLayerParams((isDown?.5:1)*numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv1`),conv22=extractConvLayerParams(numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv2`);return{conv1,conv2:conv22}}return{extractConvLayerParams,extractResidualLayerParams}}function extractParams5(weights){let{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),paramMappings=[],{extractConvLayerParams,extractResidualLayerParams}=extractorsFactory3(extractWeights,paramMappings),conv32_down=extractConvLayerParams(4704,32,7,"conv32_down"),conv32_1=extractResidualLayerParams(9216,32,3,"conv32_1"),conv32_2=extractResidualLayerParams(9216,32,3,"conv32_2"),conv32_3=extractResidualLayerParams(9216,32,3,"conv32_3"),conv64_down=extractResidualLayerParams(36864,64,3,"conv64_down",!0),conv64_1=extractResidualLayerParams(36864,64,3,"conv64_1"),conv64_2=extractResidualLayerParams(36864,64,3,"conv64_2"),conv64_3=extractResidualLayerParams(36864,64,3,"conv64_3"),conv128_down=extractResidualLayerParams(147456,128,3,"conv128_down",!0),conv128_1=extractResidualLayerParams(147456,128,3,"conv128_1"),conv128_2=extractResidualLayerParams(147456,128,3,"conv128_2"),conv256_down=extractResidualLayerParams(589824,256,3,"conv256_down",!0),conv256_1=extractResidualLayerParams(589824,256,3,"conv256_1"),conv256_2=extractResidualLayerParams(589824,256,3,"conv256_2"),conv256_down_out=extractResidualLayerParams(589824,256,3,"conv256_down_out"),fc=tidy(()=>transpose(tensor2d(extractWeights(256*128),[128,256]),[1,0]));if(paramMappings.push({paramPath:"fc"}),getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params:{conv32_down,conv32_1,conv32_2,conv32_3,conv64_down,conv64_1,conv64_2,conv64_3,conv128_down,conv128_1,conv128_2,conv256_down,conv256_1,conv256_2,conv256_down_out,fc},paramMappings}}function extractorsFactory4(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractScaleLayerParams(prefix){let weights=extractWeightEntry(`${prefix}/scale/weights`,1),biases=extractWeightEntry(`${prefix}/scale/biases`,1);return{weights,biases}}function extractConvLayerParams(prefix){let filters=extractWeightEntry(`${prefix}/conv/filters`,4),bias=extractWeightEntry(`${prefix}/conv/bias`,1),scale3=extractScaleLayerParams(prefix);return{conv:{filters,bias},scale:scale3}}function extractResidualLayerParams(prefix){return{conv1:extractConvLayerParams(`${prefix}/conv1`),conv2:extractConvLayerParams(`${prefix}/conv2`)}}return{extractConvLayerParams,extractResidualLayerParams}}function extractParamsFromWeigthMap5(weightMap){let paramMappings=[],{extractConvLayerParams,extractResidualLayerParams}=extractorsFactory4(weightMap,paramMappings),conv32_down=extractConvLayerParams("conv32_down"),conv32_1=extractResidualLayerParams("conv32_1"),conv32_2=extractResidualLayerParams("conv32_2"),conv32_3=extractResidualLayerParams("conv32_3"),conv64_down=extractResidualLayerParams("conv64_down"),conv64_1=extractResidualLayerParams("conv64_1"),conv64_2=extractResidualLayerParams("conv64_2"),conv64_3=extractResidualLayerParams("conv64_3"),conv128_down=extractResidualLayerParams("conv128_down"),conv128_1=extractResidualLayerParams("conv128_1"),conv128_2=extractResidualLayerParams("conv128_2"),conv256_down=extractResidualLayerParams("conv256_down"),conv256_1=extractResidualLayerParams("conv256_1"),conv256_2=extractResidualLayerParams("conv256_2"),conv256_down_out=extractResidualLayerParams("conv256_down_out"),{fc}=weightMap;if(paramMappings.push({originalPath:"fc",paramPath:"fc"}),!isTensor2D(fc))throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${fc}`);let params={conv32_down,conv32_1,conv32_2,conv32_3,conv64_down,conv64_1,conv64_2,conv64_3,conv128_down,conv128_1,conv128_2,conv256_down,conv256_1,conv256_2,conv256_down_out,fc};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function residual(x,params){let out=conv2(x,params.conv1);return out=convNoRelu(out,params.conv2),out=add2(out,x),out=relu(out),out}function residualDown(x,params){let out=convDown(x,params.conv1);out=convNoRelu(out,params.conv2);let pooled=avgPool(x,2,2,"valid"),zeros4=zeros(pooled.shape),isPad=pooled.shape[3]!==out.shape[3];if(pooled.shape[1]!==out.shape[1]||pooled.shape[2]!==out.shape[2]){let padShapeX=[...out.shape];padShapeX[1]=1;let zerosW=zeros(padShapeX);out=concat([out,zerosW],1);let padShapeY=[...out.shape];padShapeY[2]=1;let zerosH=zeros(padShapeY);out=concat([out,zerosH],2)}return pooled=isPad?concat([pooled,zeros4],3):pooled,out=add2(pooled,out),out=relu(out),out}var FaceRecognitionNet=class extends NeuralNetwork{constructor(){super("FaceRecognitionNet")}forwardInput(input2){let{params}=this;if(!params)throw new Error("FaceRecognitionNet - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(150,!0),"float32"),normalized=normalize(batchTensor,[122.782,117.001,104.298]).div(scalar(256)),out=convDown(normalized,params.conv32_down);out=maxPool(out,3,2,"valid"),out=residual(out,params.conv32_1),out=residual(out,params.conv32_2),out=residual(out,params.conv32_3),out=residualDown(out,params.conv64_down),out=residual(out,params.conv64_1),out=residual(out,params.conv64_2),out=residual(out,params.conv64_3),out=residualDown(out,params.conv128_down),out=residual(out,params.conv128_1),out=residual(out,params.conv128_2),out=residualDown(out,params.conv256_down),out=residual(out,params.conv256_1),out=residual(out,params.conv256_2),out=residualDown(out,params.conv256_down_out);let globalAvg=out.mean([1,2]);return matMul(globalAvg,params.fc)})}async forward(input2){return this.forwardInput(await toNetInput(input2))}async computeFaceDescriptor(input2){let netInput=await toNetInput(input2),faceDescriptorTensors=tidy(()=>unstack(this.forwardInput(netInput))),faceDescriptorsForBatch=await Promise.all(faceDescriptorTensors.map(t=>t.data()));return faceDescriptorTensors.forEach(t=>t.dispose()),netInput.isBatchInput?faceDescriptorsForBatch:faceDescriptorsForBatch[0]}getDefaultModelName(){return"face_recognition_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap5(weightMap)}extractParams(weights){return extractParams5(weights)}};function createFaceRecognitionNet(weights){let net=new FaceRecognitionNet;return net.extractWeights(weights),net}function extendWithFaceDescriptor(sourceObj,descriptor){return{...sourceObj,...{descriptor}}}function isWithAge(obj){return typeof obj.age=="number"}function extendWithAge(sourceObj,age){return{...sourceObj,...{age}}}function isWithGender(obj){return(obj.gender===Gender.MALE||obj.gender===Gender.FEMALE)&&isValidProbablitiy(obj.genderProbability)}function extendWithGender(sourceObj,gender,genderProbability){return{...sourceObj,...{gender,genderProbability}}}function extractorsFactory5(extractWeights,paramMappings){function extractDepthwiseConvParams(numChannels,mappedPrefix){let filters=tensor4d(extractWeights(3*3*numChannels),[3,3,numChannels,1]),batch_norm_scale=tensor1d(extractWeights(numChannels)),batch_norm_offset=tensor1d(extractWeights(numChannels)),batch_norm_mean=tensor1d(extractWeights(numChannels)),batch_norm_variance=tensor1d(extractWeights(numChannels));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/batch_norm_scale`},{paramPath:`${mappedPrefix}/batch_norm_offset`},{paramPath:`${mappedPrefix}/batch_norm_mean`},{paramPath:`${mappedPrefix}/batch_norm_variance`}),{filters,batch_norm_scale,batch_norm_offset,batch_norm_mean,batch_norm_variance}}function extractConvParams(channelsIn,channelsOut,filterSize,mappedPrefix,isPointwiseConv){let filters=tensor4d(extractWeights(channelsIn*channelsOut*filterSize*filterSize),[filterSize,filterSize,channelsIn,channelsOut]),bias=tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/${isPointwiseConv?"batch_norm_offset":"bias"}`}),{filters,bias}}function extractPointwiseConvParams(channelsIn,channelsOut,filterSize,mappedPrefix){let{filters,bias}=extractConvParams(channelsIn,channelsOut,filterSize,mappedPrefix,!0);return{filters,batch_norm_offset:bias}}function extractConvPairParams(channelsIn,channelsOut,mappedPrefix){let depthwise_conv=extractDepthwiseConvParams(channelsIn,`${mappedPrefix}/depthwise_conv`),pointwise_conv=extractPointwiseConvParams(channelsIn,channelsOut,1,`${mappedPrefix}/pointwise_conv`);return{depthwise_conv,pointwise_conv}}function extractMobilenetV1Params(){let conv_0=extractPointwiseConvParams(3,32,3,"mobilenetv1/conv_0"),conv_1=extractConvPairParams(32,64,"mobilenetv1/conv_1"),conv_2=extractConvPairParams(64,128,"mobilenetv1/conv_2"),conv_3=extractConvPairParams(128,128,"mobilenetv1/conv_3"),conv_4=extractConvPairParams(128,256,"mobilenetv1/conv_4"),conv_5=extractConvPairParams(256,256,"mobilenetv1/conv_5"),conv_6=extractConvPairParams(256,512,"mobilenetv1/conv_6"),conv_7=extractConvPairParams(512,512,"mobilenetv1/conv_7"),conv_8=extractConvPairParams(512,512,"mobilenetv1/conv_8"),conv_9=extractConvPairParams(512,512,"mobilenetv1/conv_9"),conv_10=extractConvPairParams(512,512,"mobilenetv1/conv_10"),conv_11=extractConvPairParams(512,512,"mobilenetv1/conv_11"),conv_12=extractConvPairParams(512,1024,"mobilenetv1/conv_12"),conv_13=extractConvPairParams(1024,1024,"mobilenetv1/conv_13");return{conv_0,conv_1,conv_2,conv_3,conv_4,conv_5,conv_6,conv_7,conv_8,conv_9,conv_10,conv_11,conv_12,conv_13}}function extractPredictionLayerParams(){let conv_0=extractPointwiseConvParams(1024,256,1,"prediction_layer/conv_0"),conv_1=extractPointwiseConvParams(256,512,3,"prediction_layer/conv_1"),conv_2=extractPointwiseConvParams(512,128,1,"prediction_layer/conv_2"),conv_3=extractPointwiseConvParams(128,256,3,"prediction_layer/conv_3"),conv_4=extractPointwiseConvParams(256,128,1,"prediction_layer/conv_4"),conv_5=extractPointwiseConvParams(128,256,3,"prediction_layer/conv_5"),conv_6=extractPointwiseConvParams(256,64,1,"prediction_layer/conv_6"),conv_7=extractPointwiseConvParams(64,128,3,"prediction_layer/conv_7"),box_encoding_0_predictor=extractConvParams(512,12,1,"prediction_layer/box_predictor_0/box_encoding_predictor"),class_predictor_0=extractConvParams(512,9,1,"prediction_layer/box_predictor_0/class_predictor"),box_encoding_1_predictor=extractConvParams(1024,24,1,"prediction_layer/box_predictor_1/box_encoding_predictor"),class_predictor_1=extractConvParams(1024,18,1,"prediction_layer/box_predictor_1/class_predictor"),box_encoding_2_predictor=extractConvParams(512,24,1,"prediction_layer/box_predictor_2/box_encoding_predictor"),class_predictor_2=extractConvParams(512,18,1,"prediction_layer/box_predictor_2/class_predictor"),box_encoding_3_predictor=extractConvParams(256,24,1,"prediction_layer/box_predictor_3/box_encoding_predictor"),class_predictor_3=extractConvParams(256,18,1,"prediction_layer/box_predictor_3/class_predictor"),box_encoding_4_predictor=extractConvParams(256,24,1,"prediction_layer/box_predictor_4/box_encoding_predictor"),class_predictor_4=extractConvParams(256,18,1,"prediction_layer/box_predictor_4/class_predictor"),box_encoding_5_predictor=extractConvParams(128,24,1,"prediction_layer/box_predictor_5/box_encoding_predictor"),class_predictor_5=extractConvParams(128,18,1,"prediction_layer/box_predictor_5/class_predictor");return{conv_0,conv_1,conv_2,conv_3,conv_4,conv_5,conv_6,conv_7,box_predictor_0:{box_encoding_predictor:box_encoding_0_predictor,class_predictor:class_predictor_0},box_predictor_1:{box_encoding_predictor:box_encoding_1_predictor,class_predictor:class_predictor_1},box_predictor_2:{box_encoding_predictor:box_encoding_2_predictor,class_predictor:class_predictor_2},box_predictor_3:{box_encoding_predictor:box_encoding_3_predictor,class_predictor:class_predictor_3},box_predictor_4:{box_encoding_predictor:box_encoding_4_predictor,class_predictor:class_predictor_4},box_predictor_5:{box_encoding_predictor:box_encoding_5_predictor,class_predictor:class_predictor_5}}}return{extractMobilenetV1Params,extractPredictionLayerParams}}function extractParams6(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractMobilenetV1Params,extractPredictionLayerParams}=extractorsFactory5(extractWeights,paramMappings),mobilenetv1=extractMobilenetV1Params(),prediction_layer=extractPredictionLayerParams(),output_layer={extra_dim:tensor3d(extractWeights(5118*4),[1,5118,4])};if(paramMappings.push({paramPath:"output_layer/extra_dim"}),getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params:{mobilenetv1,prediction_layer,output_layer},paramMappings}}function extractorsFactory6(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractPointwiseConvParams(prefix,idx,mappedPrefix){let filters=extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`,4,`${mappedPrefix}/filters`),batch_norm_offset=extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`,1,`${mappedPrefix}/batch_norm_offset`);return{filters,batch_norm_offset}}function extractConvPairParams(idx){let mappedPrefix=`mobilenetv1/conv_${idx}`,prefixDepthwiseConv=`MobilenetV1/Conv2d_${idx}_depthwise`,mappedPrefixDepthwiseConv=`${mappedPrefix}/depthwise_conv`,mappedPrefixPointwiseConv=`${mappedPrefix}/pointwise_conv`,filters=extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`,4,`${mappedPrefixDepthwiseConv}/filters`),batch_norm_scale=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`,1,`${mappedPrefixDepthwiseConv}/batch_norm_scale`),batch_norm_offset=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`,1,`${mappedPrefixDepthwiseConv}/batch_norm_offset`),batch_norm_mean=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`,1,`${mappedPrefixDepthwiseConv}/batch_norm_mean`),batch_norm_variance=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`,1,`${mappedPrefixDepthwiseConv}/batch_norm_variance`);return{depthwise_conv:{filters,batch_norm_scale,batch_norm_offset,batch_norm_mean,batch_norm_variance},pointwise_conv:extractPointwiseConvParams("MobilenetV1",idx,mappedPrefixPointwiseConv)}}function extractMobilenetV1Params(){return{conv_0:extractPointwiseConvParams("MobilenetV1",0,"mobilenetv1/conv_0"),conv_1:extractConvPairParams(1),conv_2:extractConvPairParams(2),conv_3:extractConvPairParams(3),conv_4:extractConvPairParams(4),conv_5:extractConvPairParams(5),conv_6:extractConvPairParams(6),conv_7:extractConvPairParams(7),conv_8:extractConvPairParams(8),conv_9:extractConvPairParams(9),conv_10:extractConvPairParams(10),conv_11:extractConvPairParams(11),conv_12:extractConvPairParams(12),conv_13:extractConvPairParams(13)}}function extractConvParams(prefix,mappedPrefix){let filters=extractWeightEntry(`${prefix}/weights`,4,`${mappedPrefix}/filters`),bias=extractWeightEntry(`${prefix}/biases`,1,`${mappedPrefix}/bias`);return{filters,bias}}function extractBoxPredictorParams(idx){let box_encoding_predictor=extractConvParams(`Prediction/BoxPredictor_${idx}/BoxEncodingPredictor`,`prediction_layer/box_predictor_${idx}/box_encoding_predictor`),class_predictor=extractConvParams(`Prediction/BoxPredictor_${idx}/ClassPredictor`,`prediction_layer/box_predictor_${idx}/class_predictor`);return{box_encoding_predictor,class_predictor}}function extractPredictionLayerParams(){return{conv_0:extractPointwiseConvParams("Prediction",0,"prediction_layer/conv_0"),conv_1:extractPointwiseConvParams("Prediction",1,"prediction_layer/conv_1"),conv_2:extractPointwiseConvParams("Prediction",2,"prediction_layer/conv_2"),conv_3:extractPointwiseConvParams("Prediction",3,"prediction_layer/conv_3"),conv_4:extractPointwiseConvParams("Prediction",4,"prediction_layer/conv_4"),conv_5:extractPointwiseConvParams("Prediction",5,"prediction_layer/conv_5"),conv_6:extractPointwiseConvParams("Prediction",6,"prediction_layer/conv_6"),conv_7:extractPointwiseConvParams("Prediction",7,"prediction_layer/conv_7"),box_predictor_0:extractBoxPredictorParams(0),box_predictor_1:extractBoxPredictorParams(1),box_predictor_2:extractBoxPredictorParams(2),box_predictor_3:extractBoxPredictorParams(3),box_predictor_4:extractBoxPredictorParams(4),box_predictor_5:extractBoxPredictorParams(5)}}return{extractMobilenetV1Params,extractPredictionLayerParams}}function extractParamsFromWeigthMap6(weightMap){let paramMappings=[],{extractMobilenetV1Params,extractPredictionLayerParams}=extractorsFactory6(weightMap,paramMappings),extra_dim=weightMap["Output/extra_dim"];if(paramMappings.push({originalPath:"Output/extra_dim",paramPath:"output_layer/extra_dim"}),!isTensor3D(extra_dim))throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`);let params={mobilenetv1:extractMobilenetV1Params(),prediction_layer:extractPredictionLayerParams(),output_layer:{extra_dim}};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function pointwiseConvLayer(x,params,strides){return tidy(()=>{let out=conv2d(x,params.filters,strides,"same");return out=add2(out,params.batch_norm_offset),clipByValue(out,0,6)})}var epsilon3=.0010000000474974513;function depthwiseConvLayer(x,params,strides){return tidy(()=>{let out=depthwiseConv2d(x,params.filters,strides,"same");return out=batchNorm(out,params.batch_norm_mean,params.batch_norm_variance,params.batch_norm_offset,params.batch_norm_scale,epsilon3),clipByValue(out,0,6)})}function getStridesForLayerIdx(layerIdx){return[2,4,6,12].some(idx=>idx===layerIdx)?[2,2]:[1,1]}function mobileNetV1(x,params){return tidy(()=>{let conv11,out=pointwiseConvLayer(x,params.conv_0,[2,2]);if([params.conv_1,params.conv_2,params.conv_3,params.conv_4,params.conv_5,params.conv_6,params.conv_7,params.conv_8,params.conv_9,params.conv_10,params.conv_11,params.conv_12,params.conv_13].forEach((param,i)=>{let layerIdx=i+1,depthwiseConvStrides=getStridesForLayerIdx(layerIdx);out=depthwiseConvLayer(out,param.depthwise_conv,depthwiseConvStrides),out=pointwiseConvLayer(out,param.pointwise_conv,[1,1]),layerIdx===11&&(conv11=out)}),conv11===null)throw new Error("mobileNetV1 - output of conv layer 11 is null");return{out,conv11}})}function IOU(boxes,i,j){let boxesData=boxes.arraySync(),yminI=Math.min(boxesData[i][0],boxesData[i][2]),xminI=Math.min(boxesData[i][1],boxesData[i][3]),ymaxI=Math.max(boxesData[i][0],boxesData[i][2]),xmaxI=Math.max(boxesData[i][1],boxesData[i][3]),yminJ=Math.min(boxesData[j][0],boxesData[j][2]),xminJ=Math.min(boxesData[j][1],boxesData[j][3]),ymaxJ=Math.max(boxesData[j][0],boxesData[j][2]),xmaxJ=Math.max(boxesData[j][1],boxesData[j][3]),areaI=(ymaxI-yminI)*(xmaxI-xminI),areaJ=(ymaxJ-yminJ)*(xmaxJ-xminJ);if(areaI<=0||areaJ<=0)return 0;let intersectionYmin=Math.max(yminI,yminJ),intersectionXmin=Math.max(xminI,xminJ),intersectionYmax=Math.min(ymaxI,ymaxJ),intersectionXmax=Math.min(xmaxI,xmaxJ),intersectionArea=Math.max(intersectionYmax-intersectionYmin,0)*Math.max(intersectionXmax-intersectionXmin,0);return intersectionArea/(areaI+areaJ-intersectionArea)}function nonMaxSuppression3(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){let numBoxes=boxes.shape[0],outputSize=Math.min(maxOutputSize,numBoxes),candidates=scores.map((score,boxIndex)=>({score,boxIndex})).filter(c=>c.score>scoreThreshold).sort((c1,c2)=>c2.score-c1.score),suppressFunc=x=>x<=iouThreshold?1:0,selected=[];return candidates.forEach(c=>{if(selected.length>=outputSize)return;let originalScore=c.score;for(let j=selected.length-1;j>=0;--j){let iou2=IOU(boxes,c.boxIndex,selected[j]);if(iou2!==0&&(c.score*=suppressFunc(iou2),c.score<=scoreThreshold))break}originalScore===c.score&&selected.push(c.boxIndex)}),selected}function getCenterCoordinatesAndSizesLayer(x){let vec=unstack(transpose(x,[1,0])),sizes=[sub(vec[2],vec[0]),sub(vec[3],vec[1])],centers=[add2(vec[0],div(sizes[0],scalar(2))),add2(vec[1],div(sizes[1],scalar(2)))];return{sizes,centers}}function decodeBoxesLayer(x0,x1){let{sizes,centers}=getCenterCoordinatesAndSizesLayer(x0),vec=unstack(transpose(x1,[1,0])),div0_out=div(mul(exp(div(vec[2],scalar(5))),sizes[0]),scalar(2)),add0_out=add2(mul(div(vec[0],scalar(10)),sizes[0]),centers[0]),div1_out=div(mul(exp(div(vec[3],scalar(5))),sizes[1]),scalar(2)),add1_out=add2(mul(div(vec[1],scalar(10)),sizes[1]),centers[1]);return transpose(stack([sub(add0_out,div0_out),sub(add1_out,div1_out),add2(add0_out,div0_out),add2(add1_out,div1_out)]),[1,0])}function outputLayer(boxPredictions,classPredictions,params){return tidy(()=>{let batchSize=boxPredictions.shape[0],boxes=decodeBoxesLayer(reshape(tile(params.extra_dim,[batchSize,1,1]),[-1,4]),reshape(boxPredictions,[-1,4]));boxes=reshape(boxes,[batchSize,boxes.shape[0]/batchSize,4]);let scoresAndClasses=sigmoid(slice(classPredictions,[0,0,1],[-1,-1,-1])),scores=slice(scoresAndClasses,[0,0,0],[-1,-1,1]);scores=reshape(scores,[batchSize,scores.shape[1]]);let boxesByBatch=unstack(boxes),scoresByBatch=unstack(scores);return{boxes:boxesByBatch,scores:scoresByBatch}})}function boxPredictionLayer(x,params){return tidy(()=>{let batchSize=x.shape[0],boxPredictionEncoding=reshape(convLayer(x,params.box_encoding_predictor),[batchSize,-1,1,4]),classPrediction=reshape(convLayer(x,params.class_predictor),[batchSize,-1,3]);return{boxPredictionEncoding,classPrediction}})}function predictionLayer(x,conv11,params){return tidy(()=>{let conv0=pointwiseConvLayer(x,params.conv_0,[1,1]),conv1=pointwiseConvLayer(conv0,params.conv_1,[2,2]),conv22=pointwiseConvLayer(conv1,params.conv_2,[1,1]),conv3=pointwiseConvLayer(conv22,params.conv_3,[2,2]),conv4=pointwiseConvLayer(conv3,params.conv_4,[1,1]),conv5=pointwiseConvLayer(conv4,params.conv_5,[2,2]),conv6=pointwiseConvLayer(conv5,params.conv_6,[1,1]),conv7=pointwiseConvLayer(conv6,params.conv_7,[2,2]),boxPrediction0=boxPredictionLayer(conv11,params.box_predictor_0),boxPrediction1=boxPredictionLayer(x,params.box_predictor_1),boxPrediction2=boxPredictionLayer(conv1,params.box_predictor_2),boxPrediction3=boxPredictionLayer(conv3,params.box_predictor_3),boxPrediction4=boxPredictionLayer(conv5,params.box_predictor_4),boxPrediction5=boxPredictionLayer(conv7,params.box_predictor_5),boxPredictions=concat([boxPrediction0.boxPredictionEncoding,boxPrediction1.boxPredictionEncoding,boxPrediction2.boxPredictionEncoding,boxPrediction3.boxPredictionEncoding,boxPrediction4.boxPredictionEncoding,boxPrediction5.boxPredictionEncoding],1),classPredictions=concat([boxPrediction0.classPrediction,boxPrediction1.classPrediction,boxPrediction2.classPrediction,boxPrediction3.classPrediction,boxPrediction4.classPrediction,boxPrediction5.classPrediction],1);return{boxPredictions,classPredictions}})}var SsdMobilenetv1Options=class{constructor({minConfidence,maxResults}={}){this._name="SsdMobilenetv1Options";if(this._minConfidence=minConfidence||.5,this._maxResults=maxResults||100,typeof this._minConfidence!="number"||this._minConfidence<=0||this._minConfidence>=1)throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`);if(typeof this._maxResults!="number")throw new Error(`${this._name} - expected maxResults to be a number`)}get minConfidence(){return this._minConfidence}get maxResults(){return this._maxResults}};var SsdMobilenetv1=class extends NeuralNetwork{constructor(){super("SsdMobilenetv1")}forwardInput(input2){let{params}=this;if(!params)throw new Error("SsdMobilenetv1 - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(512,!1),"float32"),x=sub(mul(batchTensor,scalar(.007843137718737125)),scalar(1)),features=mobileNetV1(x,params.mobilenetv1),{boxPredictions,classPredictions}=predictionLayer(features.out,features.conv11,params.prediction_layer);return outputLayer(boxPredictions,classPredictions,params.output_layer)})}async forward(input2){return this.forwardInput(await toNetInput(input2))}async locateFaces(input2,options={}){let{maxResults,minConfidence}=new SsdMobilenetv1Options(options),netInput=await toNetInput(input2),{boxes:_boxes,scores:_scores}=this.forwardInput(netInput),boxes=_boxes[0],scores=_scores[0];for(let i=1;i<_boxes.length;i++)_boxes[i].dispose(),_scores[i].dispose();let scoresData=Array.from(await scores.data()),indices=nonMaxSuppression3(boxes,scoresData,maxResults,.5,minConfidence),reshapedDims=netInput.getReshapedInputDimensions(0),inputSize=netInput.inputSize,padX=inputSize/reshapedDims.width,padY=inputSize/reshapedDims.height,boxesData=boxes.arraySync(),results=indices.map(idx=>{let[top,bottom]=[Math.max(0,boxesData[idx][0]),Math.min(1,boxesData[idx][2])].map(val=>val*padY),[left,right]=[Math.max(0,boxesData[idx][1]),Math.min(1,boxesData[idx][3])].map(val=>val*padX);return new FaceDetection(scoresData[idx],new Rect(left,top,right-left,bottom-top),{height:netInput.getInputHeight(0),width:netInput.getInputWidth(0)})});return boxes.dispose(),scores.dispose(),results}getDefaultModelName(){return"ssd_mobilenetv1_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap6(weightMap)}extractParams(weights){return extractParams6(weights)}};function createSsdMobilenetv1(weights){let net=new SsdMobilenetv1;return net.extractWeights(weights),net}function createFaceDetectionNet(weights){return createSsdMobilenetv1(weights)}var FaceDetectionNet=class extends SsdMobilenetv1{};var IOU_THRESHOLD=.4,BOX_ANCHORS=[new Point(.738768,.874946),new Point(2.42204,2.65704),new Point(4.30971,7.04493),new Point(10.246,4.59428),new Point(12.6868,11.8741)],BOX_ANCHORS_SEPARABLE=[new Point(1.603231,2.094468),new Point(6.041143,7.080126),new Point(2.882459,3.518061),new Point(4.266906,5.178857),new Point(9.041765,10.66308)],MEAN_RGB_SEPARABLE=[117.001,114.697,97.404],DEFAULT_MODEL_NAME2="tiny_yolov2_model",DEFAULT_MODEL_NAME_SEPARABLE_CONV="tiny_yolov2_separable_conv_model";var isNumber2=arg=>typeof arg=="number";function validateConfig(config){if(!config)throw new Error(`invalid config: ${config}`);if(typeof config.withSeparableConvs!="boolean")throw new Error(`config.withSeparableConvs has to be a boolean, have: ${config.withSeparableConvs}`);if(!isNumber2(config.iouThreshold)||config.iouThreshold<0||config.iouThreshold>1)throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${config.iouThreshold}`);if(!Array.isArray(config.classes)||!config.classes.length||!config.classes.every(c=>typeof c=="string"))throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(config.classes)}`);if(!Array.isArray(config.anchors)||!config.anchors.length||!config.anchors.map(a=>a||{}).every(a=>isNumber2(a.x)&&isNumber2(a.y)))throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(config.anchors)}`);if(config.meanRgb&&(!Array.isArray(config.meanRgb)||config.meanRgb.length!==3||!config.meanRgb.every(isNumber2)))throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(config.meanRgb)}`)}function leaky(x){return tidy(()=>{let min6=mul(x,scalar(.10000000149011612));return add2(relu(sub(x,min6)),min6)})}function convWithBatchNorm(x,params){return tidy(()=>{let out=pad(x,[[0,0],[1,1],[1,1],[0,0]]);return out=conv2d(out,params.conv.filters,[1,1],"valid"),out=sub(out,params.bn.sub),out=mul(out,params.bn.truediv),out=add2(out,params.conv.bias),leaky(out)})}function depthwiseSeparableConv2(x,params){return tidy(()=>{let out=pad(x,[[0,0],[1,1],[1,1],[0,0]]);return out=separableConv2d(out,params.depthwise_filter,params.pointwise_filter,[1,1],"valid"),out=add2(out,params.bias),leaky(out)})}function extractorsFactory7(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings);function extractBatchNormParams(size,mappedPrefix){let sub4=tensor1d(extractWeights(size)),truediv=tensor1d(extractWeights(size));return paramMappings.push({paramPath:`${mappedPrefix}/sub`},{paramPath:`${mappedPrefix}/truediv`}),{sub:sub4,truediv}}function extractConvWithBatchNormParams(channelsIn,channelsOut,mappedPrefix){let conv3=extractConvParams(channelsIn,channelsOut,3,`${mappedPrefix}/conv`),bn=extractBatchNormParams(channelsOut,`${mappedPrefix}/bn`);return{conv:conv3,bn}}let extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);return{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}}function extractParams7(weights,config,boxEncodingSize,filterSizes){let{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),paramMappings=[],{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}=extractorsFactory7(extractWeights,paramMappings),params;if(config.withSeparableConvs){let[s0,s1,s2,s3,s4,s5,s6,s7,s8]=filterSizes,conv0=config.isFirstLayerConv2d?extractConvParams(s0,s1,3,"conv0"):extractSeparableConvParams(s0,s1,"conv0"),conv1=extractSeparableConvParams(s1,s2,"conv1"),conv22=extractSeparableConvParams(s2,s3,"conv2"),conv3=extractSeparableConvParams(s3,s4,"conv3"),conv4=extractSeparableConvParams(s4,s5,"conv4"),conv5=extractSeparableConvParams(s5,s6,"conv5"),conv6=s7?extractSeparableConvParams(s6,s7,"conv6"):void 0,conv7=s8?extractSeparableConvParams(s7,s8,"conv7"):void 0,conv8=extractConvParams(s8||s7||s6,5*boxEncodingSize,1,"conv8");params={conv0,conv1,conv2:conv22,conv3,conv4,conv5,conv6,conv7,conv8}}else{let[s0,s1,s2,s3,s4,s5,s6,s7,s8]=filterSizes,conv0=extractConvWithBatchNormParams(s0,s1,"conv0"),conv1=extractConvWithBatchNormParams(s1,s2,"conv1"),conv22=extractConvWithBatchNormParams(s2,s3,"conv2"),conv3=extractConvWithBatchNormParams(s3,s4,"conv3"),conv4=extractConvWithBatchNormParams(s4,s5,"conv4"),conv5=extractConvWithBatchNormParams(s5,s6,"conv5"),conv6=extractConvWithBatchNormParams(s6,s7,"conv6"),conv7=extractConvWithBatchNormParams(s7,s8,"conv7"),conv8=extractConvParams(s8,5*boxEncodingSize,1,"conv8");params={conv0,conv1,conv2:conv22,conv3,conv4,conv5,conv6,conv7,conv8}}if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params,paramMappings}}function extractorsFactory8(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractBatchNormParams(prefix){let sub4=extractWeightEntry(`${prefix}/sub`,1),truediv=extractWeightEntry(`${prefix}/truediv`,1);return{sub:sub4,truediv}}function extractConvParams(prefix){let filters=extractWeightEntry(`${prefix}/filters`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return{filters,bias}}function extractConvWithBatchNormParams(prefix){let conv3=extractConvParams(`${prefix}/conv`),bn=extractBatchNormParams(`${prefix}/bn`);return{conv:conv3,bn}}let extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);return{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}}function extractParamsFromWeigthMap7(weightMap,config){let paramMappings=[],{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}=extractorsFactory8(weightMap,paramMappings),params;if(config.withSeparableConvs){let numFilters=config.filterSizes&&config.filterSizes.length||9;params={conv0:config.isFirstLayerConv2d?extractConvParams("conv0"):extractSeparableConvParams("conv0"),conv1:extractSeparableConvParams("conv1"),conv2:extractSeparableConvParams("conv2"),conv3:extractSeparableConvParams("conv3"),conv4:extractSeparableConvParams("conv4"),conv5:extractSeparableConvParams("conv5"),conv6:numFilters>7?extractSeparableConvParams("conv6"):void 0,conv7:numFilters>8?extractSeparableConvParams("conv7"):void 0,conv8:extractConvParams("conv8")}}else params={conv0:extractConvWithBatchNormParams("conv0"),conv1:extractConvWithBatchNormParams("conv1"),conv2:extractConvWithBatchNormParams("conv2"),conv3:extractConvWithBatchNormParams("conv3"),conv4:extractConvWithBatchNormParams("conv4"),conv5:extractConvWithBatchNormParams("conv5"),conv6:extractConvWithBatchNormParams("conv6"),conv7:extractConvWithBatchNormParams("conv7"),conv8:extractConvParams("conv8")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var TinyYolov2Options=class{constructor({inputSize,scoreThreshold}={}){this._name="TinyYolov2Options";if(this._inputSize=inputSize||416,this._scoreThreshold=scoreThreshold||.5,typeof this._inputSize!="number"||this._inputSize%32!=0)throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`);if(typeof this._scoreThreshold!="number"||this._scoreThreshold<=0||this._scoreThreshold>=1)throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`)}get inputSize(){return this._inputSize}get scoreThreshold(){return this._scoreThreshold}};var TinyYolov2Base2=class extends NeuralNetwork{constructor(config){super("TinyYolov2");validateConfig(config),this._config=config}get config(){return this._config}get withClassScores(){return this.config.withClassScores||this.config.classes.length>1}get boxEncodingSize(){return 5+(this.withClassScores?this.config.classes.length:0)}runTinyYolov2(x,params){let out=convWithBatchNorm(x,params.conv0);return out=maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv1),out=maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv2),out=maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv3),out=maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv4),out=maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv5),out=maxPool(out,[2,2],[1,1],"same"),out=convWithBatchNorm(out,params.conv6),out=convWithBatchNorm(out,params.conv7),convLayer(out,params.conv8,"valid",!1)}runMobilenet(x,params){let out=this.config.isFirstLayerConv2d?leaky(convLayer(x,params.conv0,"valid",!1)):depthwiseSeparableConv2(x,params.conv0);return out=maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv2(out,params.conv1),out=maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv2(out,params.conv2),out=maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv2(out,params.conv3),out=maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv2(out,params.conv4),out=maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv2(out,params.conv5),out=maxPool(out,[2,2],[1,1],"same"),out=params.conv6?depthwiseSeparableConv2(out,params.conv6):out,out=params.conv7?depthwiseSeparableConv2(out,params.conv7):out,convLayer(out,params.conv8,"valid",!1)}forwardInput(input2,inputSize){let{params}=this;if(!params)throw new Error("TinyYolov2 - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(inputSize,!1),"float32");return batchTensor=this.config.meanRgb?normalize(batchTensor,this.config.meanRgb):batchTensor,batchTensor=batchTensor.div(scalar(256)),this.config.withSeparableConvs?this.runMobilenet(batchTensor,params):this.runTinyYolov2(batchTensor,params)})}async forward(input2,inputSize){return this.forwardInput(await toNetInput(input2),inputSize)}async detect(input2,forwardParams={}){let{inputSize,scoreThreshold}=new TinyYolov2Options(forwardParams),netInput=await toNetInput(input2),out=await this.forwardInput(netInput,inputSize),out0=tidy(()=>unstack(out)[0].expandDims()),inputDimensions={width:netInput.getInputWidth(0),height:netInput.getInputHeight(0)},results=await this.extractBoxes(out0,netInput.getReshapedInputDimensions(0),scoreThreshold);out.dispose(),out0.dispose();let boxes=results.map(res=>res.box),scores=results.map(res=>res.score),classScores=results.map(res=>res.classScore),classNames=results.map(res=>this.config.classes[res.label]);return nonMaxSuppression2(boxes.map(box=>box.rescale(inputSize)),scores,this.config.iouThreshold,!0).map(idx=>new ObjectDetection(scores[idx],classScores[idx],classNames[idx],boxes[idx],inputDimensions))}getDefaultModelName(){return""}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap7(weightMap,this.config)}extractParams(weights){let filterSizes=this.config.filterSizes||TinyYolov2Base2.DEFAULT_FILTER_SIZES,numFilters=filterSizes?filterSizes.length:void 0;if(numFilters!==7&&numFilters!==8&&numFilters!==9)throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`);return extractParams7(weights,this.config,this.boxEncodingSize,filterSizes)}async extractBoxes(outputTensor,inputBlobDimensions,scoreThreshold){let{width,height}=inputBlobDimensions,inputSize=Math.max(width,height),correctionFactorX=inputSize/width,correctionFactorY=inputSize/height,numCells=outputTensor.shape[1],numBoxes=this.config.anchors.length,[boxesTensor,scoresTensor,classScoresTensor]=tidy(()=>{let reshaped=outputTensor.reshape([numCells,numCells,numBoxes,this.boxEncodingSize]),boxes=reshaped.slice([0,0,0,0],[numCells,numCells,numBoxes,4]),scores=reshaped.slice([0,0,0,4],[numCells,numCells,numBoxes,1]),classScores=this.withClassScores?softmax(reshaped.slice([0,0,0,5],[numCells,numCells,numBoxes,this.config.classes.length]),3):scalar(0);return[boxes,scores,classScores]}),results=[],scoresData=await scoresTensor.array(),boxesData=await boxesTensor.array();for(let row=0;rowscoreThreshold){let ctX=(col+sigmoid5(boxesData[row][col][anchor][0]))/numCells*correctionFactorX,ctY=(row+sigmoid5(boxesData[row][col][anchor][1]))/numCells*correctionFactorY,widthLocal=Math.exp(boxesData[row][col][anchor][2])*this.config.anchors[anchor].x/numCells*correctionFactorX,heightLocal=Math.exp(boxesData[row][col][anchor][3])*this.config.anchors[anchor].y/numCells*correctionFactorY,x=ctX-widthLocal/2,y=ctY-heightLocal/2,pos={row,col,anchor},{classScore,label}=this.withClassScores?await this.extractPredictedClass(classScoresTensor,pos):{classScore:1,label:0};results.push({box:new BoundingBox(x,y,x+widthLocal,y+heightLocal),score,classScore:score*classScore,label,...pos})}}return boxesTensor.dispose(),scoresTensor.dispose(),classScoresTensor.dispose(),results}async extractPredictedClass(classesTensor,pos){let{row,col,anchor}=pos,classesData=await classesTensor.array();return Array(this.config.classes.length).fill(0).map((_,i)=>classesData[row][col][anchor][i]).map((classScore,label)=>({classScore,label})).reduce((max6,curr)=>max6.classScore>curr.classScore?max6:curr)}},TinyYolov2Base=TinyYolov2Base2;TinyYolov2Base.DEFAULT_FILTER_SIZES=[3,16,32,64,128,256,512,1024,1024];var TinyYolov2=class extends TinyYolov2Base{constructor(withSeparableConvs=!0){let config={withSeparableConvs,iouThreshold:IOU_THRESHOLD,classes:["face"],...withSeparableConvs?{anchors:BOX_ANCHORS_SEPARABLE,meanRgb:MEAN_RGB_SEPARABLE}:{anchors:BOX_ANCHORS,withClassScores:!0}};super(config)}get withSeparableConvs(){return this.config.withSeparableConvs}get anchors(){return this.config.anchors}async locateFaces(input2,forwardParams){return(await this.detect(input2,forwardParams)).map(det=>new FaceDetection(det.score,det.relativeBox,{width:det.imageWidth,height:det.imageHeight}))}getDefaultModelName(){return this.withSeparableConvs?DEFAULT_MODEL_NAME_SEPARABLE_CONV:DEFAULT_MODEL_NAME2}extractParamsFromWeigthMap(weightMap){return super.extractParamsFromWeigthMap(weightMap)}};function createTinyYolov2(weights,withSeparableConvs=!0){let net=new TinyYolov2(withSeparableConvs);return net.extractWeights(weights),net}var TinyFaceDetectorOptions=class extends TinyYolov2Options{constructor(){super(...arguments);this._name="TinyFaceDetectorOptions"}};var ComposableTask=class{async then(onfulfilled){return onfulfilled(await this.run())}async run(){throw new Error("ComposableTask - run is not implemented")}};async function extractAllFacesAndComputeResults(parentResults,input2,computeResults,extractedFaces,getRectForAlignment=({alignedRect})=>alignedRect){let faceBoxes=parentResults.map(parentResult=>isWithFaceLandmarks(parentResult)?getRectForAlignment(parentResult):parentResult.detection),faces=extractedFaces||(input2 instanceof Tensor?await extractFaceTensors(input2,faceBoxes):await extractFaces(input2,faceBoxes)),results=await computeResults(faces);return faces.forEach(f=>f instanceof Tensor&&f.dispose()),results}async function extractSingleFaceAndComputeResult(parentResult,input2,computeResult,extractedFaces,getRectForAlignment){return extractAllFacesAndComputeResults([parentResult],input2,async faces=>computeResult(faces[0]),extractedFaces,getRectForAlignment)}var IOU_THRESHOLD2=.4,BOX_ANCHORS2=[new Point(1.603231,2.094468),new Point(6.041143,7.080126),new Point(2.882459,3.518061),new Point(4.266906,5.178857),new Point(9.041765,10.66308)],MEAN_RGB=[117.001,114.697,97.404];var TinyFaceDetector=class extends TinyYolov2Base{constructor(){let config={withSeparableConvs:!0,iouThreshold:IOU_THRESHOLD2,classes:["face"],anchors:BOX_ANCHORS2,meanRgb:MEAN_RGB,isFirstLayerConv2d:!0,filterSizes:[3,16,32,64,128,256,512]};super(config)}get anchors(){return this.config.anchors}async locateFaces(input2,forwardParams){return(await this.detect(input2,forwardParams)).map(det=>new FaceDetection(det.score,det.relativeBox,{width:det.imageWidth,height:det.imageHeight}))}getDefaultModelName(){return"tiny_face_detector_model"}extractParamsFromWeigthMap(weightMap){return super.extractParamsFromWeigthMap(weightMap)}};var nets={ssdMobilenetv1:new SsdMobilenetv1,tinyFaceDetector:new TinyFaceDetector,tinyYolov2:new TinyYolov2,faceLandmark68Net:new FaceLandmark68Net,faceLandmark68TinyNet:new FaceLandmark68TinyNet,faceRecognitionNet:new FaceRecognitionNet,faceExpressionNet:new FaceExpressionNet,ageGenderNet:new AgeGenderNet},ssdMobilenetv1=(input2,options)=>nets.ssdMobilenetv1.locateFaces(input2,options),tinyFaceDetector=(input2,options)=>nets.tinyFaceDetector.locateFaces(input2,options),tinyYolov2=(input2,options)=>nets.tinyYolov2.locateFaces(input2,options),detectFaceLandmarks=input2=>nets.faceLandmark68Net.detectLandmarks(input2),detectFaceLandmarksTiny=input2=>nets.faceLandmark68TinyNet.detectLandmarks(input2),computeFaceDescriptor=input2=>nets.faceRecognitionNet.computeFaceDescriptor(input2),recognizeFaceExpressions=input2=>nets.faceExpressionNet.predictExpressions(input2),predictAgeAndGender=input2=>nets.ageGenderNet.predictAgeAndGender(input2),loadSsdMobilenetv1Model=url=>nets.ssdMobilenetv1.load(url),loadTinyFaceDetectorModel=url=>nets.tinyFaceDetector.load(url),loadTinyYolov2Model=url=>nets.tinyYolov2.load(url),loadFaceLandmarkModel=url=>nets.faceLandmark68Net.load(url),loadFaceLandmarkTinyModel=url=>nets.faceLandmark68TinyNet.load(url),loadFaceRecognitionModel=url=>nets.faceRecognitionNet.load(url),loadFaceExpressionModel=url=>nets.faceExpressionNet.load(url),loadAgeGenderModel=url=>nets.ageGenderNet.load(url),loadFaceDetectionModel=loadSsdMobilenetv1Model,locateFaces=ssdMobilenetv1,detectLandmarks=detectFaceLandmarks;var PredictFaceExpressionsTaskBase=class extends ComposableTask{constructor(parentTask,input2,extractedFaces){super();this.parentTask=parentTask;this.input=input2;this.extractedFaces=extractedFaces}},PredictAllFaceExpressionsTask=class extends PredictFaceExpressionsTaskBase{async run(){let parentResults=await this.parentTask,faceExpressionsByFace=await extractAllFacesAndComputeResults(parentResults,this.input,async faces=>Promise.all(faces.map(face=>nets.faceExpressionNet.predictExpressions(face))),this.extractedFaces);return parentResults.map((parentResult,i)=>extendWithFaceExpressions(parentResult,faceExpressionsByFace[i]))}withAgeAndGender(){return new PredictAllAgeAndGenderTask(this,this.input)}},PredictSingleFaceExpressionsTask=class extends PredictFaceExpressionsTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let faceExpressions=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.faceExpressionNet.predictExpressions(face),this.extractedFaces);return extendWithFaceExpressions(parentResult,faceExpressions)}withAgeAndGender(){return new PredictSingleAgeAndGenderTask(this,this.input)}},PredictAllFaceExpressionsWithFaceAlignmentTask=class extends PredictAllFaceExpressionsTask{withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},PredictSingleFaceExpressionsWithFaceAlignmentTask=class extends PredictSingleFaceExpressionsTask{withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}};var PredictAgeAndGenderTaskBase=class extends ComposableTask{constructor(parentTask,input2,extractedFaces){super();this.parentTask=parentTask;this.input=input2;this.extractedFaces=extractedFaces}},PredictAllAgeAndGenderTask=class extends PredictAgeAndGenderTaskBase{async run(){let parentResults=await this.parentTask,ageAndGenderByFace=await extractAllFacesAndComputeResults(parentResults,this.input,async faces=>Promise.all(faces.map(face=>nets.ageGenderNet.predictAgeAndGender(face))),this.extractedFaces);return parentResults.map((parentResult,i)=>{let{age,gender,genderProbability}=ageAndGenderByFace[i];return extendWithAge(extendWithGender(parentResult,gender,genderProbability),age)})}withFaceExpressions(){return new PredictAllFaceExpressionsTask(this,this.input)}},PredictSingleAgeAndGenderTask=class extends PredictAgeAndGenderTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let{age,gender,genderProbability}=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.ageGenderNet.predictAgeAndGender(face),this.extractedFaces);return extendWithAge(extendWithGender(parentResult,gender,genderProbability),age)}withFaceExpressions(){return new PredictSingleFaceExpressionsTask(this,this.input)}},PredictAllAgeAndGenderWithFaceAlignmentTask=class extends PredictAllAgeAndGenderTask{withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},PredictSingleAgeAndGenderWithFaceAlignmentTask=class extends PredictSingleAgeAndGenderTask{withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}};var ComputeFaceDescriptorsTaskBase=class extends ComposableTask{constructor(parentTask,input2){super();this.parentTask=parentTask;this.input=input2}},ComputeAllFaceDescriptorsTask=class extends ComputeFaceDescriptorsTaskBase{async run(){let parentResults=await this.parentTask;return(await extractAllFacesAndComputeResults(parentResults,this.input,faces=>Promise.all(faces.map(face=>nets.faceRecognitionNet.computeFaceDescriptor(face))),null,parentResult=>parentResult.landmarks.align(null,{useDlibAlignment:!0}))).map((descriptor,i)=>extendWithFaceDescriptor(parentResults[i],descriptor))}withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}},ComputeSingleFaceDescriptorTask=class extends ComputeFaceDescriptorsTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let descriptor=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.faceRecognitionNet.computeFaceDescriptor(face),null,parentResult2=>parentResult2.landmarks.align(null,{useDlibAlignment:!0}));return extendWithFaceDescriptor(parentResult,descriptor)}withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}};var DetectFaceLandmarksTaskBase=class extends ComposableTask{constructor(parentTask,input2,useTinyLandmarkNet){super();this.parentTask=parentTask;this.input=input2;this.useTinyLandmarkNet=useTinyLandmarkNet}get landmarkNet(){return this.useTinyLandmarkNet?nets.faceLandmark68TinyNet:nets.faceLandmark68Net}},DetectAllFaceLandmarksTask=class extends DetectFaceLandmarksTaskBase{async run(){let parentResults=await this.parentTask,detections=parentResults.map(res=>res.detection),faces=this.input instanceof Tensor?await extractFaceTensors(this.input,detections):await extractFaces(this.input,detections),faceLandmarksByFace=await Promise.all(faces.map(face=>this.landmarkNet.detectLandmarks(face)));return faces.forEach(f=>f instanceof Tensor&&f.dispose()),parentResults.map((parentResult,i)=>extendWithFaceLandmarks(parentResult,faceLandmarksByFace[i]))}withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},DetectSingleFaceLandmarksTask=class extends DetectFaceLandmarksTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let{detection}=parentResult,faces=this.input instanceof Tensor?await extractFaceTensors(this.input,[detection]):await extractFaces(this.input,[detection]),landmarks=await this.landmarkNet.detectLandmarks(faces[0]);return faces.forEach(f=>f instanceof Tensor&&f.dispose()),extendWithFaceLandmarks(parentResult,landmarks)}withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}};var DetectFacesTaskBase=class extends ComposableTask{constructor(input2,options=new SsdMobilenetv1Options){super();this.input=input2;this.options=options}},DetectAllFacesTask=class extends DetectFacesTaskBase{async run(){let{input:input2,options}=this,faceDetectionFunction=options instanceof TinyFaceDetectorOptions?input3=>nets.tinyFaceDetector.locateFaces(input3,options):options instanceof SsdMobilenetv1Options?input3=>nets.ssdMobilenetv1.locateFaces(input3,options):options instanceof TinyYolov2Options?input3=>nets.tinyYolov2.locateFaces(input3,options):null;if(!faceDetectionFunction)throw new Error("detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options");return faceDetectionFunction(input2)}runAndExtendWithFaceDetections(){return new Promise(async resolve=>{let detections=await this.run();resolve(detections.map(detection=>extendWithFaceDetection({},detection)))})}withFaceLandmarks(useTinyLandmarkNet=!1){return new DetectAllFaceLandmarksTask(this.runAndExtendWithFaceDetections(),this.input,useTinyLandmarkNet)}withFaceExpressions(){return new PredictAllFaceExpressionsTask(this.runAndExtendWithFaceDetections(),this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderTask(this.runAndExtendWithFaceDetections(),this.input)}},DetectSingleFaceTask=class extends DetectFacesTaskBase{async run(){let faceDetections=await new DetectAllFacesTask(this.input,this.options),faceDetectionWithHighestScore=faceDetections[0];return faceDetections.forEach(faceDetection=>{faceDetection.score>faceDetectionWithHighestScore.score&&(faceDetectionWithHighestScore=faceDetection)}),faceDetectionWithHighestScore}runAndExtendWithFaceDetection(){return new Promise(async resolve=>{let detection=await this.run();resolve(detection?extendWithFaceDetection({},detection):void 0)})}withFaceLandmarks(useTinyLandmarkNet=!1){return new DetectSingleFaceLandmarksTask(this.runAndExtendWithFaceDetection(),this.input,useTinyLandmarkNet)}withFaceExpressions(){return new PredictSingleFaceExpressionsTask(this.runAndExtendWithFaceDetection(),this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderTask(this.runAndExtendWithFaceDetection(),this.input)}};function detectSingleFace(input2,options=new SsdMobilenetv1Options){return new DetectSingleFaceTask(input2,options)}function detectAllFaces(input2,options=new SsdMobilenetv1Options){return new DetectAllFacesTask(input2,options)}async function allFacesSsdMobilenetv1(input2,minConfidence){return detectAllFaces(input2,new SsdMobilenetv1Options(minConfidence?{minConfidence}:{})).withFaceLandmarks().withFaceDescriptors()}async function allFacesTinyYolov2(input2,forwardParams={}){return detectAllFaces(input2,new TinyYolov2Options(forwardParams)).withFaceLandmarks().withFaceDescriptors()}var allFaces=allFacesSsdMobilenetv1;function euclideanDistance(arr1,arr2){if(arr1.length!==arr2.length)throw new Error("euclideanDistance: arr1.length !== arr2.length");let desc1=Array.from(arr1),desc2=Array.from(arr2);return Math.sqrt(desc1.map((val,i)=>val-desc2[i]).reduce((res,diff)=>res+diff**2,0))}var FaceMatcher=class{constructor(inputs,distanceThreshold=.6){this._distanceThreshold=distanceThreshold;let inputArray=Array.isArray(inputs)?inputs:[inputs];if(!inputArray.length)throw new Error("FaceRecognizer.constructor - expected atleast one input");let count2=1,createUniqueLabel=()=>`person ${count2++}`;this._labeledDescriptors=inputArray.map(desc=>{if(desc instanceof LabeledFaceDescriptors)return desc;if(desc instanceof Float32Array)return new LabeledFaceDescriptors(createUniqueLabel(),[desc]);if(desc.descriptor&&desc.descriptor instanceof Float32Array)return new LabeledFaceDescriptors(createUniqueLabel(),[desc.descriptor]);throw new Error("FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>")})}get labeledDescriptors(){return this._labeledDescriptors}get distanceThreshold(){return this._distanceThreshold}computeMeanDistance(queryDescriptor,descriptors){return descriptors.map(d=>euclideanDistance(d,queryDescriptor)).reduce((d1,d2)=>d1+d2,0)/(descriptors.length||1)}matchDescriptor(queryDescriptor){return this.labeledDescriptors.map(({descriptors,label})=>new FaceMatch(label,this.computeMeanDistance(queryDescriptor,descriptors))).reduce((best,curr)=>best.distanceld.toJSON())}}static fromJSON(json18){let labeledDescriptors=json18.labeledDescriptors.map(ld=>LabeledFaceDescriptors.fromJSON(ld));return new FaceMatcher(labeledDescriptors,json18.distanceThreshold)}};function createTinyFaceDetector(weights){let net=new TinyFaceDetector;return net.extractWeights(weights),net}function resizeResults(results,dimensions){let{width,height}=new Dimensions(dimensions.width,dimensions.height);if(width<=0||height<=0)throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({width,height})}`);if(Array.isArray(results))return results.map(obj=>resizeResults(obj,{width,height}));if(isWithFaceLandmarks(results)){let resizedDetection=results.detection.forSize(width,height),resizedLandmarks=results.unshiftedLandmarks.forSize(resizedDetection.box.width,resizedDetection.box.height);return extendWithFaceLandmarks(extendWithFaceDetection(results,resizedDetection),resizedLandmarks)}return isWithFaceDetection(results)?extendWithFaceDetection(results,results.detection.forSize(width,height)):results instanceof FaceLandmarks||results instanceof FaceDetection?results.forSize(width,height):results}var node=typeof process!="undefined",browser=typeof navigator!="undefined"&&typeof navigator.userAgent!="undefined",version11={faceapi:version10,node,browser};export{AgeGenderNet,BoundingBox,Box,ComposableTask,ComputeAllFaceDescriptorsTask,ComputeFaceDescriptorsTaskBase,ComputeSingleFaceDescriptorTask,DetectAllFaceLandmarksTask,DetectAllFacesTask,DetectFaceLandmarksTaskBase,DetectFacesTaskBase,DetectSingleFaceLandmarksTask,DetectSingleFaceTask,Dimensions,FACE_EXPRESSION_LABELS,FaceDetection,FaceDetectionNet,FaceExpressionNet,FaceExpressions,FaceLandmark68Net,FaceLandmark68TinyNet,FaceLandmarkNet,FaceLandmarks,FaceLandmarks5,FaceLandmarks68,FaceMatch,FaceMatcher,FaceRecognitionNet,Gender,LabeledBox,LabeledFaceDescriptors,NetInput,NeuralNetwork,ObjectDetection,Point,PredictedBox,Rect,SsdMobilenetv1,SsdMobilenetv1Options,TinyFaceDetector,TinyFaceDetectorOptions,TinyYolov2,TinyYolov2Options,allFaces,allFacesSsdMobilenetv1,allFacesTinyYolov2,awaitMediaLoaded,bufferToImage,computeFaceDescriptor,createCanvas2 as createCanvas,createCanvasFromMedia,createFaceDetectionNet,createFaceRecognitionNet,createSsdMobilenetv1,createTinyFaceDetector,createTinyYolov2,detectAllFaces,detectFaceLandmarks,detectFaceLandmarksTiny,detectLandmarks,detectSingleFace,draw_exports as draw,env2 as env,euclideanDistance,extendWithAge,extendWithFaceDescriptor,extendWithFaceDetection,extendWithFaceExpressions,extendWithFaceLandmarks,extendWithGender,extractFaceTensors,extractFaces,fetchImage,fetchJson,fetchNetWeights,fetchOrThrow,getContext2dOrThrow,getMediaDimensions,imageTensorToCanvas,imageToSquare,inverseSigmoid,iou,isMediaElement,isMediaLoaded,isWithAge,isWithFaceDetection,isWithFaceExpressions,isWithFaceLandmarks,isWithGender,loadAgeGenderModel,loadFaceDetectionModel,loadFaceExpressionModel,loadFaceLandmarkModel,loadFaceLandmarkTinyModel,loadFaceRecognitionModel,loadSsdMobilenetv1Model,loadTinyFaceDetectorModel,loadTinyYolov2Model,loadWeightMap,locateFaces,matchDimensions,minBbox,nets,nonMaxSuppression2 as nonMaxSuppression,normalize,padToSquare,predictAgeAndGender,recognizeFaceExpressions,resizeResults,resolveInput,shuffleArray,sigmoid5 as sigmoid,ssdMobilenetv1,tfjs_esm_exports as tf,tinyFaceDetector,tinyYolov2,toNetInput,utils_exports as utils,validateConfig,version11 as version}; + `}};function $ee(e){let{inputs:t,backend:n,attrs:a}=e,{x:r,segmentIds:s}=t,{numSegments:i}=a,o=r.shape.length,l=[],c=0,u=_.getAxesPermutation([c],o),p=r;u!=null&&(p=Cn({inputs:{x:r},backend:n,attrs:{perm:u}}),l.push(p),c=_.getInnerMostAxes(1,o)[0]);let d=_.segment_util.computeOutShape(p.shape,c,i),h=k.sizeFromShape([p.shape[c]]),m=xe({inputs:{x:p},backend:n,attrs:{shape:[-1,h]}});l.push(m);let f=th(r.dtype),g=(v,N,T,E,A)=>{let $=v.shape[0],O=v.shape[1],V=_.segment_util.segOpComputeOptimalWindowSize(O,A),W={windowSize:V,inSize:O,batchSize:$,numSegments:A},H=new Aee(W,N),X=n.compileAndRun(H,[v,T],E);if(l.push(X),X.shape[1]===A)return X;let q=n2({backend:n,attrs:{start:0,stop:A,step:1,dtype:"float32"}}),K=s2({inputs:{x:q},backend:n,attrs:{reps:[O/V]}});return l.push(q),l.push(K),g(X,N,K,E,A)},y=g(m,"unsortedSegmentSum",s,f,i),b=xe({inputs:{x:y},backend:n,attrs:{shape:d}}),x=b;if(u!=null){l.push(b);let v=_.getUndoAxesPermutation(u);x=Cn({inputs:{x},backend:n,attrs:{perm:v}})}return l.forEach(v=>n.disposeIntermediateTensorInfo(v)),x}var Dee={kernelName:wc,backendName:"webgl",kernelFunc:$ee},Mee=[SZ,_Z,mX,gX,xX,kX,NX,CX,_X,AX,RX,OX,BX,UX,YX,jX,QX,aY,tY,oY,uY,pY,fY,kY,NY,FY,$Y,PY,zY,XK,UY,QY,t7,qY,s7,o7,a7,c7,h7,g7,b7,v7,I7,_7,A7,T7,M7,O7,W7,H7,X7,Z7,Q7,eJ,nJ,rJ,iJ,lJ,cJ,mJ,bJ,vJ,kJ,TJ,_J,DJ,OJ,KK,zJ,VY,VJ,HJ,KJ,JK,ZJ,nZ,rZ,pZ,lZ,fZ,bZ,kZ,AZ,zZ,OZ,UZ,HZ,qZ,RZ,XZ,JZ,t9,s9,u9,y9,nX,x9,k9,T9,E9,SY,A9,D9,R9,L9,V9,QK,G9,H9,CY,h9,K9,nQ,Z9,rX,iQ,uQ,dQ,fQ,xQ,wQ,NQ,CQ,_Q,$Q,RQ,LQ,WQ,GQ,qQ,vY,f9,YQ,ZQ,eee,nee,see,lee,cee,dee,fee,m9,pX,bee,wee,Nee,See,dX,Eee,Fee,Dee,$9];for(let e of Mee)Ic(e);var Ree="2.8.3",Pee={"tfjs-core":K0,"tfjs-backend-cpu":dG,"tfjs-backend-webgl":qK,"tfjs-data":RN,"tfjs-layers":fm,"tfjs-converter":_N,tfjs:Ree},Vn;(function(e){e[e.float32=0]="float32",e[e.int32=1]="int32",e[e.bool=2]="bool",e[e.string=3]="string",e[e.complex64=4]="complex64"})(Vn||(Vn={}));var Np;(function(e){e[e.linear=0]="linear",e[e.relu=1]="relu",e[e.relu6=2]="relu6",e[e.prelu=3]="prelu",e[e.leakyrelu=4]="leakyrelu"})(Np||(Np={}));var i2;function Oee(e){i2=e.wasm.cwrap(xi,null,["number","array","number","number","array","number","number","number","number","number","number","number","number"])}function Lee(e){let{inputs:t,backend:n,attrs:a}=e,{a:r,b:s,bias:i,preluActivationWeights:o}=t;if(r.dtype!=="float32"||s.dtype!=="float32")throw new Error("_FusedMatMul for non non-float32 tensors not yet supported.");let{transposeA:l,transposeB:c,activation:u,leakyreluAlpha:p}=a,d=n.dataIdMap.get(r.dataId).id,h=n.dataIdMap.get(s.dataId).id,m=0;if(i!=null){let A=n.dataIdMap.get(i.dataId);if(A.shape.length!==1)throw new Error(`_FusedMatMul only supports rank-1 bias but got rank ${A.shape.length}.`);m=A.id}let f=o==null?0:n.dataIdMap.get(o.dataId).id,g=Np[u];if(g==null)throw new Error(`${u} activation not yet supported for FusedConv2D in the wasm backend.`);let y=l?r.shape[2]:r.shape[1],b=c?s.shape[1]:s.shape[2],x=r.shape[0],v=n.makeOutput([x,y,b],r.dtype),N=n.dataIdMap.get(v.dataId).id,T=new Uint8Array(new Int32Array(r.shape).buffer),E=new Uint8Array(new Int32Array(s.shape).buffer);return i2(d,T,r.shape.length,h,E,s.shape.length,l,c,g,m,f,p||0,N),v}var zee={kernelName:xi,backendName:"wasm",setupFunc:Oee,kernelFunc:Lee};function Un(e){let t;function n(r){t=r.wasm.cwrap(e,null,["number","number"])}function a(r){let{backend:s,inputs:{x:i}}=r,o=s.dataIdMap.get(i.dataId).id,l=s.makeOutput(i.shape,i.dtype),c=s.dataIdMap.get(l.dataId).id;return k.sizeFromShape(l.shape)===0||t(o,c),l}return{kernelName:e,backendName:"wasm",setupFunc:n,kernelFunc:a}}var Bee=Un(Co);function yn(e,t,n){let a;function r(i){a=i.wasm.cwrap(e,null,["number","array","number","number","array","number","number","number"])}function s(i){let{backend:o,inputs:l}=i,{a:c,b:u}=l,p=o.dataIdMap.get(c.dataId).id,d=o.dataIdMap.get(u.dataId).id,h=n!=null?n:c.dtype,m=_.assertAndGetBroadcastShape(c.shape,u.shape),f=o.makeOutput(m,h);if(k.sizeFromShape(m)===0)return f;let g=new Uint8Array(new Int32Array(c.shape).buffer),y=new Uint8Array(new Int32Array(u.shape).buffer),b=o.dataIdMap.get(f.dataId).id,x=()=>a(p,g,c.shape.length,d,y,u.shape.length,Vn[c.dtype],b);if(t&&c.dtype==="float32")return x(),f;let v=_.getBroadcastDims(c.shape,m),N=_.getBroadcastDims(u.shape,m),T=v.every((A,$)=>A===$),E=N.every((A,$)=>A===$);if(T&&E)return x(),f;throw new Error(`Broadcasting along outer dims is not yet supported for ${c.dtype} ${e}.`)}return{kernelName:e,backendName:"wasm",setupFunc:r,kernelFunc:s}}var Wee=!0,Vee=yn(Ur,Wee),o2;function Uee(e){o2=e.wasm.cwrap(_s,null,["array","number","number","number"])}function Gee(e){let{inputs:t,backend:n}=e,a=n.makeOutput(t[0].shape,t[0].dtype);if(k.sizeFromShape(a.shape)===0)return a;let r=t.map(o=>n.dataIdMap.get(o.dataId).id),s=new Uint8Array(new Int32Array(r).buffer),i=n.dataIdMap.get(a.dataId).id;return o2(s,r.length,Vn[a.dtype],i),a}var Hee={kernelName:_s,backendName:"wasm",setupFunc:Uee,kernelFunc:Gee};function Xm(e){let{inputs:{x:t},backend:n}=e,a=n.makeOutput(t.shape,t.dtype),r=n.typedArrayFromHeap(t);return n.typedArrayFromHeap(a).set(r),a}var jee={kernelName:Xo,backendName:"wasm",kernelFunc:Xm},l2;function qee(e){l2=e.wasm.cwrap(bi,null,["number","array","number","number","number","array","number"])}function Ym(e){let{inputs:t,backend:n,attrs:a}=e,[r,s]=Xee(t.x.shape,a.perm),i=!0;for(let m=0;m=r&&(s===-1||a[s]>a[i])&&(s=i);a[s]=r}return[n,a]}var Yee={kernelName:bi,backendName:"wasm",kernelFunc:Ym,setupFunc:qee};function yu(e,t,n){let a=e.shape,r=e.shape.length,s=k.parseAxisParam(t,a),i=s,o=_.getAxesPermutation(i,r),l=null,c=!1;if(o!=null){let u=new Array(r);for(let d=0;d`new shape: ${i}, old shape: ${a.shape}. New shape and old shape must have the same number of elements.`),{dataId:a.dataId,shape:i,dtype:a.dtype}}var ate={kernelName:hl,backendName:"wasm",kernelFunc:Oa},p2;function rte(e){p2=e.wasm.cwrap($s,null,["number","array","number","number","array","number","number","number","number"])}function ste(e){let{inputs:t,backend:n,attrs:a}=e,{a:r,b:s}=t,{transposeA:i,transposeB:o}=a;if(r.dtype!=="float32"||s.dtype!=="float32")throw new Error("BatchMatMul for non non-float32 tensors not yet supported.");let l=r.shape.length,c=s.shape.length,u=i?r.shape[l-2]:r.shape[l-1],p=o?s.shape[c-1]:s.shape[c-2],d=i?r.shape[l-1]:r.shape[l-2],h=o?s.shape[c-2]:s.shape[c-1],m=r.shape.slice(0,-2),f=s.shape.slice(0,-2),g=k.sizeFromShape(m),y=k.sizeFromShape(f),b=g===y||g===1||y===1;k.assert(l>=2&&c>=2&&b,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${m}) and (${f}).`);let x=(g>y?r.shape.slice(0,-2):s.shape.slice(0,-2)).concat([d,h]);k.assert(u===p,()=>`Error in matMul: inner shapes (${u}) and (${p}) of Tensors with shapes ${r.shape} and ${s.shape} and transposeA=${i} and transposeB=${o} must match.`);let v=i?[g,u,d]:[g,d,u],N=o?[y,h,p]:[y,p,h],T=Oa({inputs:{x:r},backend:n,attrs:{shape:v}}),E=Oa({inputs:{x:s},backend:n,attrs:{shape:N}}),A=n.dataIdMap.get(T.dataId).id,$=n.dataIdMap.get(E.dataId).id,O=i?T.shape[2]:T.shape[1],V=o?E.shape[1]:E.shape[2],W=Math.max(g,y),H=n.makeOutput([W,O,V],T.dtype),X=n.dataIdMap.get(H.dataId).id,q=new Uint8Array(new Int32Array(T.shape).buffer),K=new Uint8Array(new Int32Array(E.shape).buffer);return p2(A,q,T.shape.length,$,K,E.shape.length,i,o,X),H.shape=x,H}var ite={kernelName:$s,backendName:"wasm",setupFunc:rte,kernelFunc:ste};function Jm(e){let{inputs:{x:t},attrs:{dtype:n},backend:a}=e,r=a.makeOutput(t.shape,n),s=a.typedArrayFromHeap(t);return a.typedArrayFromHeap(r).set(s),r}var ote={kernelName:Ds,backendName:"wasm",kernelFunc:Jm},d2;function lte(e){d2=e.wasm.cwrap(Gr,null,["number","number","number","number"])}function ute(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{clipValueMin:s,clipValueMax:i}=a,o=n.dataIdMap.get(r.dataId).id,l=n.makeOutput(r.shape,r.dtype),c=n.dataIdMap.get(l.dataId).id;return d2(o,s,i,c),l}var cte={kernelName:Gr,backendName:"wasm",setupFunc:lte,kernelFunc:ute};function h2(e){let{inputs:t,backend:n}=e,a=k.parseAxisParam(e.attrs.axis,t[0].shape)[0],r=_.computeOutShape(t.map(h=>h.shape),a),s=t.filter(h=>k.sizeFromShape(h.shape)>0);if(s.length===1)return Xm({inputs:{x:s[0]},backend:n});let i=n.makeOutput(r,t[0].dtype);if(k.sizeFromShape(r)===0)return i;let o=s.map(h=>h.shape);if(_.assertParamsConsistent(o,a),s[0].dtype==="string"){let h=s.map(x=>{let v=k.sizeFromShape(x.shape.slice(a));return Oa({inputs:{x},backend:n,attrs:{shape:[-1,v]}})}),m=h.map(x=>({vals:n.readSync(x.dataId),shape:x.shape}));r=_.computeOutShape(h.map(x=>x.shape),1);let f=h[0].shape[0]===1,g=pv(m,r,t[0].dtype,f),y=_.computeOutShape(s.map(x=>x.shape),a);i.shape=y;let b=n.dataIdMap.get(i.dataId);return b.stringBytes=_.fromStringArrayToUint8(g),i}let l=k.sizeFromShape(s[0].shape.slice(0,a)),c=0,u=s.map(h=>{let m=k.sizeFromShape(h.shape.slice(a));return c+=m,m}),p=s.map(h=>n.typedArrayFromHeap(h)),d=n.typedArrayFromHeap(i);for(let h=0;h`cumsum does not support ${r.dtype} tensors in the WASM backend`);let c=_.getAxesPermutation([s],l),u=r;c!==null&&(u=Ym({inputs:{x:r},attrs:{perm:c},backend:n}));let p=_.getInnerMostAxes(1,l)[0];_.assertAxesAreInnerMostDims("cumsum",[p],l);let d=n.makeOutput(u.shape,u.dtype),h=u.shape[p],m=n.dataIdMap.get(u.dataId).id,f=n.dataIdMap.get(d.dataId).id;y2(m,i?1:0,o?1:0,h,f,Vn[r.dtype]);let g=d;if(c!==null){let y=_.getUndoAxesPermutation(c);g=Ym({inputs:{x:d},attrs:{perm:y},backend:n}),n.disposeData(u.dataId),n.disposeData(d.dataId)}return g}var Nte={kernelName:Os,backendName:"wasm",setupFunc:kte,kernelFunc:Ite},b2;function Tte(e){b2=e.wasm.cwrap(zo,null,["number","number","number","array","number","array","array","number","number"])}function Ste(e){let{backend:t,inputs:n,attrs:a}=e,{x:r}=n,{blockSize:s,dataFormat:i}=a;k.assert(s>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${s}`);let o=r.shape[0],l=i==="NHWC"?r.shape[1]:r.shape[2],c=i==="NHWC"?r.shape[2]:r.shape[3],u=i==="NHWC"?r.shape[3]:r.shape[1],p=l*s,d=c*s,h=u/(s*s),m=i==="NHWC"?[o,p,d,h]:[o,h,p,d],f=t.makeOutput(m,"float32"),g=t.dataIdMap.get(r.dataId).id,y=new Uint8Array(new Int32Array(k.computeStrides(r.shape)).buffer),b=new Uint8Array(new Int32Array(m).buffer),x=new Uint8Array(new Int32Array(k.computeStrides(m)).buffer),v=t.dataIdMap.get(f.dataId).id;return b2(g,s,i==="NHWC"?1:0,y,r.shape.length-1,b,x,m.length,v),f}var Cte={kernelName:zo,backendName:"wasm",setupFunc:Tte,kernelFunc:Ste},x2;function Ete(e){x2=e.wasm.cwrap(Ls,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function _te(e){let{inputs:t,attrs:n,backend:a}=e,{x:r,filter:s}=t,i=a.dataIdMap.get(r.dataId).id,o=a.dataIdMap.get(s.dataId).id,{strides:l,dilations:c,pad:u,dimRoundingMode:p}=n,d=c==null?[1,1]:c,h=_.computeConv2DInfo(r.shape,s.shape,l,d,u,p,!0),m=h.filterHeight,f=h.filterWidth,g=h.padInfo.top,y=h.padInfo.right,b=h.padInfo.bottom,x=h.padInfo.left,v=h.dilationHeight,N=h.dilationWidth,T=h.strideHeight,E=h.strideWidth,A=h.inChannels,$=h.outChannels,O=h.padInfo.type==="SAME"?1:0;if(h.dataFormat!=="channelsLast")throw new Error(`wasm backend DepthwiseConv2dNative does not support dataFormat:'${h.dataFormat}'. Please use 'channelsLast'.`);let V=a.makeOutput(h.outShape,"float32"),W=a.dataIdMap.get(V.dataId).id;return x2(i,r.shape[0],r.shape[1],r.shape[2],o,m,f,g,y,b,x,O,v,N,T,E,A,$,W),V}var Fte={kernelName:Ls,backendName:"wasm",setupFunc:Ete,kernelFunc:_te},Ate=!1,$te=yn(Vo,Ate,"bool"),Dte=Un(Bs);function Vv(e){let{inputs:t,attrs:n,backend:a}=e,{input:r}=t,{dim:s}=n,i=r.shape.length,o=r.shape.slice(),l=s;return s<0&&(k.assert(-(i+1)<=s,()=>`Axis must be in the interval [${-(i+1)}, ${i}]`),l=i+s+1),o.splice(l,0,1),Oa({inputs:{x:r},backend:a,attrs:{shape:o}})}var Mte={kernelName:Uo,backendName:"wasm",kernelFunc:Vv};function Rte(e){let{attrs:{shape:t,value:n,dtype:a},backend:r}=e,s=r.makeOutput(t,a);return r.typedArrayFromHeap(s).fill(n),s}var Pte={kernelName:pc,backendName:"wasm",kernelFunc:Rte},v2;function Ote(e){v2=e.wasm.cwrap(Ho,null,["number","number","number","number","number","number"])}function Lte(e){let{inputs:t,backend:n}=e,{image:a}=t,r=n.makeOutput(a.shape,a.dtype),s=n.dataIdMap.get(a.dataId).id,i=n.dataIdMap.get(r.dataId).id,[o,l,c,u]=a.shape;return v2(s,o,l,c,u,i),r}var zte={kernelName:Ho,backendName:"wasm",kernelFunc:Lte,setupFunc:Ote},Bte=Un(Ws),Wte=!1,Vte=yn(Vs,Wte),w2;function Ute(e){w2=e.wasm.cwrap(Us,null,["number","number","number","number","number","number","number"])}function Gte(e){let{backend:t,inputs:n,attrs:a}=e,{varianceEpsilon:r}=a,{x:s,mean:i,variance:o,offset:l,scale:c}=n,u=t.dataIdMap.get(s.dataId).id,p=t.dataIdMap.get(i.dataId).id,d=t.dataIdMap.get(o.dataId).id,h=l!=null?t.dataIdMap.get(l.dataId).id:0,m=c!=null?t.dataIdMap.get(c.dataId).id:0,f=t.makeOutput(s.shape,s.dtype);if(k.sizeFromShape(s.shape)===0)return f;let g=t.dataIdMap.get(f.dataId).id;return w2(u,p,d,h,m,r,g),f}var Hte={kernelName:Us,backendName:"wasm",setupFunc:Ute,kernelFunc:Gte},k2;function jte(e){k2=e.wasm.cwrap(vi,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function qte(e){let{inputs:t,attrs:n,backend:a}=e,{x:r,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:c,dilations:u,dataFormat:p,dimRoundingMode:d,activation:h,leakyreluAlpha:m}=n,f=_.computeConv2DInfo(r.shape,s.shape,l,u,c,d),g=Np[h];if(g==null)throw new Error(`${h} activation not yet supported for FusedConv2D in the wasm backend.`);let y=a.dataIdMap.get(r.dataId).id,b=a.dataIdMap.get(s.dataId).id,x=f.outChannels,v=0;if(i!=null){let oe=a.dataIdMap.get(i.dataId);if(oe.shape.length!==1)throw new Error(`FusedConv2D only supports rank-1 bias but got rank ${oe.shape.length}.`);if(oe.shape[0]!==x)throw new Error(`FusedConv2D bias shape (${oe.shape}) does not match the number of output channels (${x})`);v=oe.id}let N=f.filterHeight,T=f.filterWidth,E=f.padInfo.top,A=f.padInfo.right,$=f.padInfo.bottom,O=f.padInfo.left,V=f.dilationHeight,W=f.dilationWidth,H=f.strideHeight,X=f.strideWidth,q=f.inChannels,K=f.padInfo.type==="SAME"?1:0,J=f.batchSize,te=f.inHeight,Q=f.inWidth;if(p!=="NHWC")throw new Error(`wasm backend FusedConv2D does not support dataFormat:'${p}'. Please use 'NHWC'.`);let ie=a.makeOutput(f.outShape,"float32"),re=a.dataIdMap.get(ie.dataId).id,ae=o==null?0:a.dataIdMap.get(o.dataId).id;return k2(y,J,te,Q,b,N,T,v,E,A,$,O,K,V,W,H,X,q,x,g,ae,m||0,re),ie}var Kte={kernelName:vi,backendName:"wasm",setupFunc:jte,kernelFunc:qte},I2;function Xte(e){I2=e.wasm.cwrap(wi,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function Yte(e){let{inputs:t,attrs:n,backend:a}=e,{x:r,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:c,dilations:u,dataFormat:p,dimRoundingMode:d,activation:h,leakyreluAlpha:m}=n,f=_.computeConv2DInfo(r.shape,s.shape,l,u,c,d,!0),g=Np[h];if(g==null)throw new Error(`${h} activation not yet supported for FusedDepthwiseConv2D in the wasm backend.`);let y=a.dataIdMap.get(r.dataId).id,b=a.dataIdMap.get(s.dataId).id,x=f.outChannels,v=0;if(i!=null){let oe=a.dataIdMap.get(i.dataId);if(oe.shape.length!==1)throw new Error(`FusedDepthwiseConv2D only supports rank-1 bias but got rank ${oe.shape.length}.`);if(oe.shape[0]!==x)throw new Error(`FusedDepthwiseConv2D bias shape (${oe.shape}) does not match the number of output channels (${x})`);v=oe.id}let N=f.filterHeight,T=f.filterWidth,E=f.padInfo.top,A=f.padInfo.right,$=f.padInfo.bottom,O=f.padInfo.left,V=f.dilationHeight,W=f.dilationWidth,H=f.strideHeight,X=f.strideWidth,q=f.inChannels,K=f.padInfo.type==="SAME"?1:0,J=f.batchSize,te=f.inHeight,Q=f.inWidth;if(p!=="NHWC")throw new Error(`wasm backend FusedDepthwiseConv2D does not support dataFormat:'${p}'. Please use 'NHWC'.`);let ie=a.makeOutput(f.outShape,"float32"),re=a.dataIdMap.get(ie.dataId).id,ae=o==null?0:a.dataIdMap.get(o.dataId).id;return I2(y,J,te,Q,b,N,T,v,E,A,$,O,K,V,W,H,X,q,x,g,ae,m||0,re),ie}var Jte={kernelName:wi,backendName:"wasm",setupFunc:Xte,kernelFunc:Yte},N2;function Zte(e){N2=e.wasm.cwrap(qo,null,["number","number","number","number","number","number","array","number"])}function Qte(e){let{backend:t,inputs:n}=e,{params:a,indices:r}=n,[s,i,o,l]=hy.prepareAndValidate(a,r),c=t.makeOutput(s,a.dtype);if(i===0)return c;let u=r.shape,p=u[u.length-1],d=t.dataIdMap.get(a.dataId).id,h=t.dataIdMap.get(r.dataId).id,m=new Uint8Array(new Int32Array(l).buffer),f=t.dataIdMap.get(c.dataId).id;return N2(d,Vn[a.dtype],h,i,p,o,m,f),c}var ene={kernelName:qo,backendName:"wasm",setupFunc:Zte,kernelFunc:Qte},T2;function tne(e){T2=e.wasm.cwrap("Gather",null,["number","number","array","number","number","number","array","number"])}function nne(e){let{backend:t,inputs:n,attrs:a}=e,{x:r,indices:s}=n,{axis:i,batchDims:o}=a,l=k.parseAxisParam(i,r.shape)[0],c=_.segment_util.collectGatherOpShapeInfo(r,s,l,o),u=Oa({inputs:{x:r},attrs:{shape:[c.batchSize,c.outerSize,c.dimSize,c.sliceSize]},backend:t}),p=k.sizeFromShape(s.shape),d=Oa({inputs:{x:s},attrs:{shape:[c.batchSize,p/c.batchSize]},backend:t}),h=[c.batchSize,c.outerSize,p/c.batchSize,c.sliceSize],m=t.makeOutput(h,r.dtype);if(k.sizeFromShape(r.shape)===0)return m;let f=u.shape.length-1,g=t.dataIdMap.get(u.dataId).id,y=t.dataIdMap.get(d.dataId).id,b=t.dataIdMap.get(m.dataId).id,x=new Uint8Array(new Int32Array(k.computeStrides(u.shape)).buffer),v=new Uint8Array(new Int32Array(k.computeStrides(h)).buffer);return T2(g,Vn[r.dtype],x,f,y,c.batchSize,v,b),m.shape=c.outputShape,m}var ane={kernelName:jo,backendName:"wasm",setupFunc:tne,kernelFunc:nne},rne=!1,sne=yn(Ko,rne,"bool"),ine=!1,one=yn(Gs,ine,"bool"),S2;function lne(e){S2=e.wasm.cwrap(Hs,null,["number","number","number"])}function une(e){let{inputs:{x:t},attrs:{alpha:n},backend:a}=e,r=a.dataIdMap.get(t.dataId).id,s=a.makeOutput(t.shape,t.dtype);if(k.sizeFromShape(t.shape)!==0){let i=a.dataIdMap.get(s.dataId).id;S2(r,n,i)}return s}var cne={kernelName:Hs,backendName:"wasm",setupFunc:lne,kernelFunc:une},pne=!1,dne=yn(Qo,pne,"bool"),hne=!1,mne=yn(el,hne,"bool"),fne=Un(js),gne=!1,yne=yn(nl,gne,"bool"),C2;function bne(e){C2=e.wasm.cwrap(qs,null,["number, number, number"])}function xne(e){let{backend:t,inputs:n,attrs:a}=e,{reductionIndices:r,keepDims:s}=a,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=i,{transposed:c,axes:u,originalAxes:p,inputWasTransposed:d}=yu(i,r,t);if(d){let b=t.dataIdMap.get(c.dataId).id;l=c,o=b}let h=l.shape.length;_.assertAxesAreInnerMostDims("max",u,h);let[m,f]=_.computeOutAndReduceShapes(l.shape,u),g=k.sizeFromShape(f),y=t.makeOutput(m,i.dtype);if(k.sizeFromShape(l.shape)!==0){let b=t.dataIdMap.get(y.dataId).id;C2(o,g,b)}if(d&&t.disposeData(c.dataId),s){let b=_.expandShapeToKeepDim(y.shape,p);y.shape=b}return y}var vne={kernelName:qs,backendName:"wasm",setupFunc:bne,kernelFunc:xne},wne=!1,kne=yn(Ks,wne),E2;function Ine(e){E2=e.wasm.cwrap(Xs,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function Nne(e){let{inputs:t,attrs:n,backend:a}=e,r=t.x,s=a.dataIdMap.get(r.dataId).id,{filterSize:i,strides:o,pad:l,dimRoundingMode:c}=n,u=_.computePool2DInfo(r.shape,i,o,1,l,c),p=u.filterHeight,d=u.filterWidth,h=u.padInfo.top,m=u.padInfo.right,f=u.padInfo.bottom,g=u.padInfo.left,y=u.dilationHeight,b=u.dilationWidth,x=u.strideHeight,v=u.strideWidth,N=u.inChannels,T=u.outChannels;if(u.dataFormat!=="channelsLast")throw new Error(`wasm backend does not support dataFormat:'${u.dataFormat}'. Please use 'channelsLast'.`);let E=a.makeOutput(u.outShape,"float32"),A=a.dataIdMap.get(E.dataId).id;return E2(s,r.shape[0],r.shape[1],r.shape[2],p,d,h,m,f,g,y,b,x,v,N,T,A),E}var Tne={kernelName:Xs,backendName:"wasm",setupFunc:Ine,kernelFunc:Nne},_2;function Sne(e){_2=e.wasm.cwrap(Ys,null,["number, number, number"])}function Cne(e){let{backend:t,inputs:n,attrs:a}=e,{axis:r,keepDims:s}=a,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=o,c=i,{transposed:u,axes:p,originalAxes:d,inputWasTransposed:h}=yu(i,r,t),m=p;if(h){let v=t.dataIdMap.get(u.dataId).id;v!==o&&(c=u,l=v,m=_.getInnerMostAxes(m.length,c.shape.length))}_.assertAxesAreInnerMostDims("mean",m,c.shape.length);let[f,g]=_.computeOutAndReduceShapes(c.shape,m),y=k.sizeFromShape(g),b=c;c.dtype!=="float32"&&(b=Jm({backend:t,inputs:{x:c},attrs:{dtype:"float32"}}),l=t.dataIdMap.get(b.dataId).id);let x=t.makeOutput(f,"float32");if(k.sizeFromShape(c.shape)!==0){let v=t.dataIdMap.get(x.dataId).id;_2(l,y,v)}if(h&&t.disposeData(u.dataId),s){let v=_.expandShapeToKeepDim(x.shape,d);x.shape=v}return c.dtype!=="float32"&&t.disposeData(b.dataId),x}var Ene={kernelName:Ys,backendName:"wasm",setupFunc:Sne,kernelFunc:Cne},F2;function _ne(e){F2=e.wasm.cwrap(Js,null,["number, number, number"])}function Fne(e){let{backend:t,inputs:n,attrs:a}=e,{axis:r,keepDims:s}=a,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=o,c=i,{transposed:u,axes:p,originalAxes:d,inputWasTransposed:h}=yu(i,r,t);if(h){let x=t.dataIdMap.get(u.dataId).id;x!==o&&(c=u,l=x)}let m=c.shape.length;_.assertAxesAreInnerMostDims("min",p,m);let[f,g]=_.computeOutAndReduceShapes(c.shape,p),y=k.sizeFromShape(g),b=t.makeOutput(f,c.dtype);if(k.sizeFromShape(c.shape)!==0){let x=t.dataIdMap.get(b.dataId).id;F2(l,y,x)}if(h&&t.disposeData(u.dataId),s){let x=_.expandShapeToKeepDim(b.shape,d);b.shape=x}return b}var Ane={kernelName:Js,backendName:"wasm",setupFunc:_ne,kernelFunc:Fne},$ne=!1,Dne=yn(Zs,$ne),Mne=!0,Rne=yn(Qs,Mne),Pne=Un(rl);function Uv(e,t){let n=new Int32Array(e.wasm.HEAPU8.buffer,t,4),a=n[0],r=n[1],s=n[2],i=n[3];return e.wasm._free(t),{pSelectedIndices:a,selectedSize:r,pSelectedScores:s,pValidOutputs:i}}var A2;function One(e){A2=e.wasm.cwrap(il,"number",["number","number","number","number","number"])}function Lne(e){let{backend:t,inputs:n,attrs:a}=e,{iouThreshold:r,maxOutputSize:s,scoreThreshold:i}=a,{boxes:o,scores:l}=n,c=t.dataIdMap.get(o.dataId).id,u=t.dataIdMap.get(l.dataId).id,p=A2(c,u,s,r,i),{pSelectedIndices:d,selectedSize:h,pSelectedScores:m,pValidOutputs:f}=Uv(t,p);return t.wasm._free(m),t.wasm._free(f),t.makeOutput([h],"int32",d)}var zne={kernelName:il,backendName:"wasm",setupFunc:One,kernelFunc:Lne},$2;function Bne(e){$2=e.wasm.cwrap(ol,"number",["number","number","number","number","number","bool"])}function Wne(e){let{backend:t,inputs:n,attrs:a}=e,{iouThreshold:r,maxOutputSize:s,scoreThreshold:i,padToMaxOutputSize:o}=a,{boxes:l,scores:c}=n,u=t.dataIdMap.get(l.dataId).id,p=t.dataIdMap.get(c.dataId).id,d=$2(u,p,s,r,i,o),{pSelectedIndices:h,selectedSize:m,pSelectedScores:f,pValidOutputs:g}=Uv(t,d);t.wasm._free(f);let y=t.makeOutput([m],"int32",h),b=t.makeOutput([],"int32",g);return[y,b]}var Vne={kernelName:ol,backendName:"wasm",setupFunc:Bne,kernelFunc:Wne},D2;function Une(e){D2=e.wasm.cwrap(ll,"number",["number","number","number","number","number","number"])}function Gne(e){let{backend:t,inputs:n,attrs:a}=e,{iouThreshold:r,maxOutputSize:s,scoreThreshold:i,softNmsSigma:o}=a,{boxes:l,scores:c}=n,u=t.dataIdMap.get(l.dataId).id,p=t.dataIdMap.get(c.dataId).id,d=D2(u,p,s,r,i,o),{pSelectedIndices:h,selectedSize:m,pSelectedScores:f,pValidOutputs:g}=Uv(t,d);t.wasm._free(g);let y=t.makeOutput([m],"int32",h),b=t.makeOutput([m],"float32",f);return[y,b]}var Hne={kernelName:ll,backendName:"wasm",setupFunc:Une,kernelFunc:Gne},jne=!1,qne=yn(sl,jne,"bool"),M2;function Kne(e){M2=e.wasm.cwrap(ei,null,["number","number","number","number","number"])}function Xne(e){let{inputs:t,backend:n,attrs:a}=e,{indices:r}=t,{depth:s,onValue:i,offValue:o}=a,l=n.makeOutput([...r.shape,s],"int32"),c=n.dataIdMap.get(l.dataId).id,u=n.dataIdMap.get(r.dataId).id;return M2(u,s,i,o,c),l}var Yne={kernelName:ei,backendName:"wasm",setupFunc:Kne,kernelFunc:Xne};function Jne(e){let{inputs:{x:t},backend:n}=e,a=n.makeOutput(t.shape,t.dtype);return n.typedArrayFromHeap(a).fill(1),a}var Zne={kernelName:ul,backendName:"wasm",kernelFunc:Jne};function Qne(e){let{inputs:t,backend:n,attrs:a}=e,{axis:r}=a;if(t.length===1)return Vv({inputs:{input:t[0]},backend:n,attrs:{dim:r}});let s=t[0].shape,i=t[0].dtype;t.forEach(l=>{k.assertShapesMatch(s,l.shape,"All tensors passed to stack must have matching shapes"),k.assert(i===l.dtype,()=>"All tensors passed to stack must have matching dtypes")});let o=t.map(l=>Vv({inputs:{input:l},backend:n,attrs:{dim:r}}));return h2({inputs:o,backend:n,attrs:{axis:r}})}var eae={kernelName:cl,backendName:"wasm",kernelFunc:Qne},R2;function tae(e){R2=e.wasm.cwrap(ti,null,["number","array","number","number","array","array","number","number"])}function nae(e){let{inputs:{x:t},backend:n,attrs:{paddings:a,constantValue:r}}=e,s=a.map((m,f)=>m[0]+t.shape[f]+m[1]),i=n.dataIdMap.get(t.dataId).id,o=n.makeOutput(s,t.dtype),l=n.dataIdMap.get(o.dataId).id,c=new Uint8Array(new Int32Array(t.shape).buffer),u=a.map(m=>m[0]),p=a.map(m=>m[1]),d=new Uint8Array(new Int32Array(u).buffer),h=new Uint8Array(new Int32Array(p).buffer);return R2(i,c,t.shape.length,Vn[t.dtype],d,h,r,l),o}var aae={kernelName:ti,backendName:"wasm",kernelFunc:nae,setupFunc:tae},rae=!1,sae=yn(ni,rae),P2;function iae(e){P2=e.wasm.cwrap(ai,null,["number","number","number"])}function oae(e){let{inputs:t,backend:n}=e,{x:a,alpha:r}=t,s=n.dataIdMap.get(a.dataId).id,i=n.dataIdMap.get(r.dataId).id,o=n.makeOutput(a.shape,"float32"),l=n.dataIdMap.get(o.dataId).id;return P2(s,i,l),o}var lae={kernelName:ai,backendName:"wasm",setupFunc:iae,kernelFunc:oae},O2;function uae(e){O2=e.wasm.cwrap(pl,null,["number","number","number","number"])}function cae(e){let{backend:t,inputs:n,attrs:a}=e,{axis:r,keepDims:s}=a,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=o,c=i,{transposed:u,axes:p,originalAxes:d,inputWasTransposed:h}=yu(i,r,t),m=p;if(h){let x=t.dataIdMap.get(u.dataId).id;x!==o&&(c=u,l=x,m=_.getInnerMostAxes(m.length,c.shape.length))}_.assertAxesAreInnerMostDims("prod",m,c.shape.length);let[f,g]=_.computeOutAndReduceShapes(c.shape,m),y=k.sizeFromShape(g),b=t.makeOutput(f,c.dtype);if(k.sizeFromShape(c.shape)!==0){let x=t.dataIdMap.get(b.dataId).id;O2(l,y,Vn[b.dtype],x)}if(h&&t.disposeData(u.dataId),s){let x=_.expandShapeToKeepDim(b.shape,d);b.shape=x}return b}var pae={kernelName:pl,backendName:"wasm",setupFunc:uae,kernelFunc:cae},dae=e=>{let{backend:t,attrs:n}=e,{start:a,stop:r,step:s,dtype:i}=n,o=mv(a,r,s,i),l=t.makeOutput([o.length],i);return t.typedArrayFromHeap(l).set(o),l},hae={kernelName:yc,backendName:"wasm",kernelFunc:dae},mae=!0,fae=yn(zs,mae),gae=Un(ri),yae=Un(ii),L2;function bae(e){L2=e.wasm.cwrap(si,null,["number","number","number","number","number","number","number","number","number","number"])}function xae(e){let{backend:t,inputs:n,attrs:a}=e,{images:r}=n,{alignCorners:s,halfPixelCenters:i,size:o}=a,[l,c]=o,[u,p,d,h]=r.shape,m=[u,l,c,h],f=t.dataIdMap.get(r.dataId),g;f.dtype!=="float32"&&(g=Jm({backend:t,inputs:{x:r},attrs:{dtype:"float32"}}),f=t.dataIdMap.get(g.dataId));let y=f.id,b=t.makeOutput(m,"float32");if(k.sizeFromShape(r.shape)===0)return b;let x=t.dataIdMap.get(b.dataId).id;return L2(y,u,p,d,h,l,c,s?1:0,i?1:0,x),g!=null&&t.disposeData(g.dataId),b}var vae={kernelName:si,backendName:"wasm",setupFunc:bae,kernelFunc:xae},z2;function wae(e){z2=e.wasm.cwrap(oi,null,["number","array","number","array","number","number"])}function kae(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{dims:s}=a,i=k.parseAxisParam(s,r.shape);if(r.shape.length===0)return Xm({inputs:{x:r},backend:n});let o=n.makeOutput(r.shape,r.dtype),l=n.dataIdMap.get(r.dataId).id,c=n.dataIdMap.get(o.dataId).id,u=new Uint8Array(new Int32Array(i).buffer),p=new Uint8Array(new Int32Array(r.shape).buffer);return z2(l,u,i.length,p,r.shape.length,c),Oa({inputs:{x:o},attrs:{shape:r.shape},backend:n})}var Iae={kernelName:oi,backendName:"wasm",kernelFunc:kae,setupFunc:wae},B2;function Nae(e){B2=e.wasm.cwrap(El,null,["number","number","number","number","number","number","number","number","array","number","number"])}function Tae(e){let{inputs:t,backend:n,attrs:a}=e,{image:r}=t,{radians:s,fillValue:i,center:o}=a,l=n.makeOutput(r.shape,r.dtype),c=n.dataIdMap.get(r.dataId).id,u=n.dataIdMap.get(l.dataId).id,[p,d,h,m]=r.shape,[f,g]=_.getImageCenter(o,d,h),y=i===0,b=255,x=typeof i=="number"?[i,i,i,y?0:b]:[...i,b],v=new Uint8Array(new Int32Array(x).buffer);return B2(c,p,d,h,m,s,f,g,v,x.length,u),l}var Sae={kernelName:El,backendName:"wasm",kernelFunc:Tae,setupFunc:Nae},Cae=Un(li),Eae=Un(ui),W2;function _ae(e){W2=e.wasm.cwrap(ml,null,["number","number","number","number","number","number","array","number","number"])}function Fae(e){let{backend:t,inputs:n,attrs:a}=e,{indices:r,updates:s}=n,{shape:i}=a,o=t.makeOutput(i,s.dtype);if(k.sizeFromShape(i)===0)return o;let{sliceRank:l,numUpdates:c,sliceSize:u,strides:p,outputSize:d}=my.calculateShapes(s,r,i),h=t.dataIdMap.get(r.dataId).id,m=t.dataIdMap.get(s.dataId).id,f=new Uint8Array(new Int32Array(p).buffer),g=t.dataIdMap.get(o.dataId).id;return W2(h,m,Vn[s.dtype],l,c,u,f,d,g),o}var Aae={kernelName:ml,backendName:"wasm",setupFunc:_ae,kernelFunc:Fae},V2;function $ae(e){V2=e.wasm.cwrap("SelectV2",null,["number","number","number","number","number"])}function Dae(e){let{inputs:t,backend:n}=e,{condition:a,t:r,e:s}=t,i=n.dataIdMap.get(a.dataId).id,o=n.dataIdMap.get(r.dataId).id,l=n.dataIdMap.get(s.dataId).id,c=n.makeOutput(r.shape,r.dtype),u=n.dataIdMap.get(c.dataId).id,p=a.shape.length,d=r.shape.length,h=p===0||p>1||d===1?1:k.sizeFromShape(r.shape.slice(1));return V2(i,o,l,h,u),c}var Mae={kernelName:fl,backendName:"wasm",kernelFunc:Dae,setupFunc:$ae},U2;function Rae(e){U2=e.wasm.cwrap(pi,null,["number","number"])}function Pae(e){let{backend:t,inputs:{x:n}}=e,a=t.dataIdMap.get(n.dataId).id,r=t.makeOutput(n.shape,n.dtype),s=t.dataIdMap.get(r.dataId).id;return k.sizeFromShape(r.shape)===0||U2(a,s),r}var Oae={kernelName:"Sigmoid",backendName:"wasm",setupFunc:Rae,kernelFunc:Pae},Lae=Un(ci);function Zm(e){let{inputs:{x:t},attrs:{begin:n,size:a},backend:r}=e,[s,i]=dn.parseSliceParams(t,n,a),o=dn.isSliceContinous(t.shape,s,i),l=r.readSync(t.dataId),c=r.makeOutput(i,t.dtype),u=k.computeStrides(t.shape),p=r.dataIdMap.get(c.dataId);if(o){let m=dn.computeFlatOffset(s,u);return t.dtype==="string"?p.stringBytes=l.slice(m,m+k.sizeFromShape(i)):r.typedArrayFromHeap(c).set(l.subarray(m,m+k.sizeFromShape(i))),c}if(t.dtype==="string"){let m=Am(l,s,i,t.shape,t.dtype);return p.stringBytes=m,c}let d=r.typedArrayFromHeap(c),h=t.shape.length;if(h===2)zae(l,u[0],d,s,i);else if(h===3)Bae(l,u[0],u[1],d,s,i);else if(h===4)Wae(l,u[0],u[1],u[2],d,s,i);else{let m=Am(l,s,i,t.shape,t.dtype);d.set(m)}return c}function zae(e,t,n,a,r){let s=0,i=a[0],o=a[1],l=i+r[0];for(let c=i;c{let d=[...u];d[o]=p;let h=Zm({inputs:{x:r},attrs:{begin:c,size:d},backend:a});return c[o]+=p,h})}var qae={kernelName:wl,backendName:"wasm",kernelFunc:jae},Kae=Un(di),Xae=Un(vc),Yae=!0,Jae=yn(fi,Yae),H2;function Zae(e){H2=e.wasm.cwrap(kl,null,["number","array","number","array","array","array","array","array","number","number"])}function Qae(e){let{backend:t,inputs:n,attrs:a}=e,{x:r}=n,{begin:s,end:i,strides:o}=a;o==null&&(o=new Array(s.length));let{beginMask:l,endMask:c,ellipsisMask:u,newAxisMask:p,shrinkAxisMask:d}=a,h=_.slice_util.maskToAxes(u);if(h.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(u!==0&&p!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(u!==0&&d!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let m=r.shape.length-s.length,f=_.slice_util.maskToAxes(p),g=r.shape.slice();f.forEach($=>{s[$]=0,i[$]=1,g.splice($,0,1)});let y=Oa({inputs:{x:r},attrs:{shape:g},backend:t}),{begin:b,end:x,strides:v}=_.slice_util.getNormalizedAxes(y.shape,h,m,s,i,o,l,c,u);s=b,i=x,o=v;let N=_.slice_util.maskToAxes(d);N.forEach($=>{i[$]=s[$]+1,o[$]=1});let T=_.slice_util.computeOutShape(s,i,o),E=T.filter(($,O)=>N.indexOf(O)===-1);if(o.every($=>$===1)){let $=Zm({inputs:{x:r},attrs:{begin:s,size:T},backend:t});return Oa({inputs:{x:$},attrs:{shape:E},backend:t})}let A=t.makeOutput(E,"float32");if(!E.some($=>$===0)){let $=t.dataIdMap.get(y.dataId).id,O=new Uint8Array(new Int32Array(k.computeStrides(y.shape)).buffer),V=new Uint8Array(new Int32Array(s).buffer),W=new Uint8Array(new Int32Array(i).buffer),H=new Uint8Array(new Int32Array(o).buffer),X=new Uint8Array(new Int32Array(E).buffer),q=new Uint8Array(new Int32Array(k.computeStrides(E)).buffer),K=t.dataIdMap.get(A.dataId).id;H2($,O,y.shape.length,V,W,H,X,q,E.length,K)}return Oa({inputs:{x:A},attrs:{shape:E},backend:t})}var ere={kernelName:kl,backendName:"wasm",setupFunc:Zae,kernelFunc:Qae},tre=!0,nre=yn(gi,tre),j2;function are(e){j2=e.wasm.cwrap(hi,null,["number, number, number"])}function rre(e){let{backend:t,inputs:n,attrs:a}=e,{axis:r,keepDims:s}=a,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=o,c=i,{transposed:u,axes:p,originalAxes:d,inputWasTransposed:h}=yu(i,r,t),m=p;if(h){let x=t.dataIdMap.get(u.dataId).id;x!==o&&(c=u,l=x,m=_.getInnerMostAxes(m.length,c.shape.length))}_.assertAxesAreInnerMostDims("sum",m,c.shape.length);let[f,g]=_.computeOutAndReduceShapes(c.shape,m),y=k.sizeFromShape(g),b=t.makeOutput(f,c.dtype);if(k.sizeFromShape(c.shape)!==0){let x=t.dataIdMap.get(b.dataId).id;j2(l,y,x)}if(h&&t.disposeData(u.dataId),s){let x=_.expandShapeToKeepDim(b.shape,d);b.shape=x}return b}var sre={kernelName:hi,backendName:"wasm",setupFunc:are,kernelFunc:rre},ire=Un(yi),q2;function ore(e){q2=e.wasm.cwrap(Hr,null,["number","array","number","array","number","number"])}function lre(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,s=n.dataIdMap.get(r.dataId).id,{reps:i}=a,o=new Array(r.shape.length);for(let d=0;d{let{x:a}=e,{k:r,sorted:s}=n,i=t.dataIdMap.get(a.dataId).id,o=new Uint8Array(new Int32Array(a.shape).buffer),l=a.shape.slice();l[l.length-1]=r;let c=t.makeOutput(l,a.dtype),u=t.dataIdMap.get(c.dataId).id,p=t.makeOutput(l,"int32"),d=t.dataIdMap.get(p.dataId).id;return K2(i,o,a.shape.length,Vn[a.dtype],r,s,u,d),[c,p]},dre={kernelName:Nl,backendName:"wasm",setupFunc:cre,kernelFunc:pre};function hre(e){let{inputs:t,backend:n,attrs:a}=e,{value:r}=t,{axis:s}=a;s<0&&(s+=r.shape.length);let i=r.shape[s],o=r.shape.length,l=new Array(o-1),c=0;for(let h=0;h({dataId:h,dtype:m,shape:l}))}var mre={kernelName:Tl,backendName:"wasm",kernelFunc:hre};function fre(e){let{inputs:{x:t},backend:n}=e,a=n.makeOutput(t.shape,t.dtype);return n.typedArrayFromHeap(a).fill(0),a}var gre={kernelName:Sl,backendName:"wasm",kernelFunc:fre},yre=[Bee,Vee,Hee,Qee,nte,ite,ote,cte,pte,mte,yte,bte,wte,Nte,Cte,Fte,$te,Dte,Mte,Pte,zte,Bte,Vte,zee,Hte,Kte,Jte,ene,ane,sne,one,jee,cne,dne,mne,fne,yne,vne,kne,Tne,Ene,Ane,Dne,Rne,Pne,zne,Vne,Hne,qne,Yne,Zne,eae,aae,sae,lae,pae,hae,fae,gae,yae,ate,vae,Iae,Sae,Eae,Cae,Aae,Mae,Oae,Lae,Vae,Hae,qae,Kae,Xae,Jae,ere,nre,sre,ire,ure,dre,Yee,mre,gre];for(let e of yre)Ic(e);var Gv=ee();Gv.registerFlag("WASM_HAS_SIMD_SUPPORT",async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,9,1,7,0,65,0,253,15,26,11])));Gv.registerFlag("WASM_HAS_MULTITHREAD_SUPPORT",async()=>{if(Gv.get("IS_NODE"))return!1;try{return new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch(e){return!1}});var X2=No(F_()),bre='var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module["instantiateWasm"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module["wasmModule"],info);Module["wasmModule"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd==="load"){Module["DYNAMIC_BASE"]=e.data.DYNAMIC_BASE;Module["DYNAMICTOP_PTR"]=e.data.DYNAMICTOP_PTR;Module["wasmModule"]=e.data.wasmModule;Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;if(typeof e.data.urlOrBlob==="string"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({"cmd":"loaded"})}else if(e.data.cmd==="objectTransfer"){Module["PThread"].receiveObjectTransfer(e.data)}else if(e.data.cmd==="run"){Module["__performance_now_clock_drift"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module["__register_pthread_ptr"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module["establishStackSpace"](top,max);Module["_emscripten_tls_init"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].setThreadStatus(Module["_pthread_self"](),1);try{var result=Module["dynCall_ii"](e.data.start_routine,e.data.arg);if(!Module["getNoExitRuntime"]())Module["PThread"].threadExit(result)}catch(ex){if(ex==="Canceled!"){Module["PThread"].threadCancel()}else if(ex!="unwind"){Atomics.store(Module["HEAPU32"],threadInfoStruct+4>>2,ex instanceof Module["ExitStatus"]?ex.status:-2);Atomics.store(Module["HEAPU32"],threadInfoStruct+0>>2,1);Module["_emscripten_futex_wake"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module["ExitStatus"]))throw ex}}}else if(e.data.cmd==="cancel"){if(threadInfoStruct){Module["PThread"].threadCancel()}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processThreadQueue"){if(threadInfoStruct){Module["_emscripten_current_thread_process_queued_calls"]()}}else{err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){err("worker.js onmessage() captured an uncaught exception: "+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require("worker_threads");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",function(data){onmessage({data:data})});var nodeFS=require("fs");var nodeRead=function(filename){return nodeFS.readFileSync(filename,"utf8")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance==="undefined"){performance={now:function(){return Date.now()}}}}',xre=No(A_()),Y2=class extends nc{constructor(e){super();this.wasm=e,this.dataIdNextNumber=1,this.wasm.tfjs.init(),this.dataIdMap=new gd(this,Zr())}write(e,t,n){let a={};return this.move(a,e,t,n),a}numDataIds(){return this.dataIdMap.numDataIds()}async time(e){let t=k.now();return e(),{kernelMs:k.now()-t}}move(e,t,n,a){let r=this.dataIdNextNumber++;if(a==="string"){let l=t;this.dataIdMap.set(e,{id:r,stringBytes:l,shape:n,dtype:a,memoryOffset:null});return}let s=k.sizeFromShape(n),i=s*k.bytesPerElement(a),o=this.wasm._malloc(i);this.dataIdMap.set(e,{id:r,memoryOffset:o,shape:n,dtype:a}),this.wasm.tfjs.registerTensor(r,s,o),t!=null&&this.wasm.HEAPU8.set(new Uint8Array(t.buffer,t.byteOffset,i),o)}async read(e){return this.readSync(e)}readSync(e){let{memoryOffset:t,dtype:n,shape:a,stringBytes:r}=this.dataIdMap.get(e);if(n==="string")return r;let s=this.wasm.HEAPU8.slice(t,t+k.sizeFromShape(a)*k.bytesPerElement(n));return vre(s.buffer,n)}disposeData(e){let t=this.dataIdMap.get(e);this.wasm._free(t.memoryOffset),this.wasm.tfjs.disposeData(t.id),this.dataIdMap.delete(e)}floatPrecision(){return 32}getMemoryOffset(e){return this.dataIdMap.get(e).memoryOffset}dispose(){this.wasm.tfjs.dispose(),this.wasm=null}memory(){return{unreliable:!1}}makeOutput(e,t,n){let a;if(n==null)a=this.write(null,e,t);else{a={};let r=this.dataIdNextNumber++;this.dataIdMap.set(a,{id:r,memoryOffset:n,shape:e,dtype:t});let s=k.sizeFromShape(e);this.wasm.tfjs.registerTensor(r,s,n)}return{dataId:a,shape:e,dtype:t}}typedArrayFromHeap({shape:e,dtype:t,dataId:n}){let a=this.wasm.HEAPU8.buffer,{memoryOffset:r}=this.dataIdMap.get(n),s=k.sizeFromShape(e);switch(t){case"float32":return new Float32Array(a,r,s);case"int32":return new Int32Array(a,r,s);case"bool":return new Uint8Array(a,r,s);default:throw new Error(`Unknown dtype ${t}`)}}};function wre(e){return(t,n)=>(k.fetch(e,{credentials:"same-origin"}).then(a=>{a.ok||t.env.a(`failed to load wasm binary file at '${e}'`),a.arrayBuffer().then(r=>{WebAssembly.instantiate(r,t).then(s=>{n(s.instance)})})}),{})}function J2(e,t,n){if(Qm!=null)return Qm;let a="tfjs-backend-wasm.wasm";return e&&t?a="tfjs-backend-wasm-threaded-simd.wasm":e&&(a="tfjs-backend-wasm-simd.wasm"),Tp!=null&&Tp[a]!=null?Tp[a]:n+a}async function kre(){let[e,t]=await Promise.all([ee().getAsync("WASM_HAS_SIMD_SUPPORT"),ee().getAsync("WASM_HAS_MULTITHREAD_SUPPORT")]);return new Promise((n,a)=>{let r={};r.locateFile=(l,c)=>{if(l.endsWith(".worker.js")){let u=bre,p=new Blob([u],{type:"application/javascript"});return URL.createObjectURL(p)}return l.endsWith(".wasm")?J2(e,t,Sp!=null?Sp:c):c+l},Hv&&(r.instantiateWasm=wre(J2(e,t,Sp!=null?Sp:"")));let s;t&&e&&Qm==null?(s=X2.default(r),s.mainScriptUrlOrBlob=new Blob(["var WasmBackendModuleThreadedSimd = "+X2.default.toString()],{type:"text/javascript"})):s=xre.default(r);let i=null;s.tfjs={init:s.cwrap("init",null,[]),registerTensor:s.cwrap("register_tensor",null,["number","number","number"]),disposeData:s.cwrap("dispose_data",i,["number"]),dispose:s.cwrap("dispose",i,[])};let o=!1;s.onRuntimeInitialized=()=>{o=!0,Cp=!1,n({wasm:s})},s.onAbort=()=>{o||Cp||(Cp=!0,a({message:"Make sure the server can serve the `.wasm` file relative to the bundled js file. For more details see https://github.com/tensorflow/tfjs/blob/master/tfjs-backend-wasm/README.md#using-bundlers"}))}})}function vre(e,t){switch(t){case"float32":return new Float32Array(e);case"int32":return new Int32Array(e);case"bool":return new Uint8Array(e);default:throw new Error(`Unknown dtype ${t}`)}}var Ire=["tfjs-backend-wasm.wasm","tfjs-backend-wasm-simd.wasm","tfjs-backend-wasm-threaded-simd.wasm"],Qm=null,Sp=null,Tp={},Cp=!1,Hv=!1;function Nre(e,t=!1){if(Pt("setWasmPath has been deprecated in favor of setWasmPaths and will be removed in a future release."),Cp)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPath()` before you call `tf.setBackend()` or `tf.ready()`");Qm=e,Hv=t}function Tre(e,t=!1){if(Cp)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPaths()` before you call `tf.setBackend()` or `tf.ready()`");if(typeof e=="string")Sp=e;else{Tp=e;let n=Ire.filter(a=>Tp[a]==null);if(n.length>0)throw new Error(`There were no entries found for the following binaries: ${n.join(",")}. Please either call setWasmPaths with a map providing a path for each binary, or with a string indicating the directory where all the binaries can be found.`)}Hv=t}var Sre="2.8.3",Cre=2;lh("wasm",async()=>{let{wasm:e}=await kre();return new Y2(e)},Cre);var yw={};hd(yw,{AnchorPosition:()=>or,DrawBox:()=>af,DrawBoxOptions:()=>iw,DrawFaceLandmarks:()=>gw,DrawFaceLandmarksOptions:()=>fw,DrawTextField:()=>gs,DrawTextFieldOptions:()=>Ap,drawContour:()=>Fr,drawDetections:()=>Lre,drawFaceExpressions:()=>Vre,drawFaceLandmarks:()=>Ure});function Fr(e,t,n=!1){if(e.beginPath(),t.slice(1).forEach(({x:a,y:r},s)=>{let i=t[s];e.moveTo(i.x,i.y),e.lineTo(a,r)}),n){let a=t[t.length-1],r=t[0];if(!a||!r)return;e.moveTo(a.x,a.y),e.lineTo(r.x,r.y)}e.stroke()}var jv={};hd(jv,{computeReshapedDimensions:()=>Xv,getCenterPoint:()=>Ji,isDimensions:()=>tf,isEven:()=>ef,isFloat:()=>Kv,isTensor:()=>Xi,isTensor1D:()=>Ere,isTensor2D:()=>qv,isTensor3D:()=>Ar,isTensor4D:()=>ra,isValidNumber:()=>La,isValidProbablitiy:()=>bu,range:()=>sr,round:()=>Yi});var bn=class{constructor(t,n){if(!La(t)||!La(n))throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({width:t,height:n})}`);this._width=t,this._height=n}get width(){return this._width}get height(){return this._height}reverse(){return new bn(1/this.width,1/this.height)}};function Xi(e,t){return e instanceof z&&e.shape.length===t}function Ere(e){return Xi(e,1)}function qv(e){return Xi(e,2)}function Ar(e){return Xi(e,3)}function ra(e){return Xi(e,4)}function Kv(e){return e%1!=0}function ef(e){return e%2==0}function Yi(e,t=2){let n=10**t;return Math.floor(e*n)/n}function tf(e){return e&&e.width&&e.height}function Xv({width:e,height:t},n){let a=n/Math.max(t,e);return new bn(Math.round(e*a),Math.round(t*a))}function Ji(e){return e.reduce((t,n)=>t.add(n),new De(0,0)).div(new De(e.length,e.length))}function sr(e,t,n){return Array(e).fill(0).map((a,r)=>t+r*n)}function La(e){return!!e&&e!==Infinity&&e!==-Infinity&&!Number.isNaN(e)||e===0}function bu(e){return La(e)&&e>=0&&e<=1}var De=class{constructor(t,n){this._x=t,this._y=n}get x(){return this._x}get y(){return this._y}add(t){return new De(this.x+t.x,this.y+t.y)}sub(t){return new De(this.x-t.x,this.y-t.y)}mul(t){return new De(this.x*t.x,this.y*t.y)}div(t){return new De(this.x/t.x,this.y/t.y)}abs(){return new De(Math.abs(this.x),Math.abs(this.y))}magnitude(){return Math.sqrt(this.x**2+this.y**2)}floor(){return new De(Math.floor(this.x),Math.floor(this.y))}};var lt=class{static isRect(t){return!!t&&[t.x,t.y,t.width,t.height].every(La)}static assertIsValidBox(t,n,a=!1){if(!lt.isRect(t))throw new Error(`${n} - invalid box: ${JSON.stringify(t)}, expected object with properties x, y, width, height`);if(!a&&(t.width<0||t.height<0))throw new Error(`${n} - width (${t.width}) and height (${t.height}) must be positive numbers`)}constructor(t,n=!0){let a=t||{},r=[a.left,a.top,a.right,a.bottom].every(La),s=[a.x,a.y,a.width,a.height].every(La);if(!s&&!r)throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(a)}`);let[i,o,l,c]=s?[a.x,a.y,a.width,a.height]:[a.left,a.top,a.right-a.left,a.bottom-a.top];lt.assertIsValidBox({x:i,y:o,width:l,height:c},"Box.constructor",n),this._x=i,this._y=o,this._width=l,this._height=c}get x(){return this._x}get y(){return this._y}get width(){return this._width}get height(){return this._height}get left(){return this.x}get top(){return this.y}get right(){return this.x+this.width}get bottom(){return this.y+this.height}get area(){return this.width*this.height}get topLeft(){return new De(this.left,this.top)}get topRight(){return new De(this.right,this.top)}get bottomLeft(){return new De(this.left,this.bottom)}get bottomRight(){return new De(this.right,this.bottom)}round(){let[t,n,a,r]=[this.x,this.y,this.width,this.height].map(s=>Math.round(s));return new lt({x:t,y:n,width:a,height:r})}floor(){let[t,n,a,r]=[this.x,this.y,this.width,this.height].map(s=>Math.floor(s));return new lt({x:t,y:n,width:a,height:r})}toSquare(){let{x:t,y:n,width:a,height:r}=this,s=Math.abs(a-r);return an&&(o=-p+n+a,p=n),d>t&&(l=-d+t+r,d=t),c<1&&(l=2-c,c=1),u<1&&(l=2-u,u=1),{dy:i,edy:l,dx:s,edx:o,y:u,ey:d,x:c,ex:p,w:a,h:r}}calibrate(t){return new lt({left:this.left+t.left*this.width,top:this.top+t.top*this.height,right:this.right+t.right*this.width,bottom:this.bottom+t.bottom*this.height}).toSquare().round()}};var xu=class extends lt{constructor(t,n,a,r,s=!1){super({left:t,top:n,right:a,bottom:r},s)}};var fs=class{constructor(t,n,a,r,s){this._imageDims=new bn(s.width,s.height),this._score=t,this._classScore=n,this._className=a,this._box=new lt(r).rescale(this._imageDims)}get score(){return this._score}get classScore(){return this._classScore}get className(){return this._className}get box(){return this._box}get imageDims(){return this._imageDims}get imageWidth(){return this.imageDims.width}get imageHeight(){return this.imageDims.height}get relativeBox(){return new lt(this._box).rescale(this.imageDims.reverse())}forSize(t,n){return new fs(this.score,this.classScore,this.className,this.relativeBox,{width:t,height:n})}};var xt=class extends fs{constructor(t,n,a){super(t,t,"",n,a)}forSize(t,n){let{score:a,relativeBox:r,imageDims:s}=super.forSize(t,n);return new xt(a,r,s)}};function Yv(e,t,n=!0){let a=Math.max(0,Math.min(e.right,t.right)-Math.max(e.left,t.left)),r=Math.max(0,Math.min(e.bottom,t.bottom)-Math.max(e.top,t.top)),s=a*r;return n?s/(e.area+t.area-s):s/Math.min(e.area,t.area)}function Jv(e){let t=e.map(o=>o.x),n=e.map(o=>o.y),a=t.reduce((o,l)=>lloo({score:i,boxIndex:o})).sort((i,o)=>i.score-o.score).map(i=>i.boxIndex),s=[];for(;r.length>0;){let i=r.pop();s.push(i);let o=r,l=[];for(let c=0;cl[u]<=n)}return s}function za(e,t){return D(()=>{let[n,a,r]=t,s=In([...e.shape.slice(0,3),1],n,"float32"),i=In([...e.shape.slice(0,3),1],a,"float32"),o=In([...e.shape.slice(0,3),1],r,"float32"),l=Ze([s,i,o],3);return fe(e,l)})}function Qv(e,t=!1){return D(()=>{let[n,a]=e.shape.slice(1);if(n===a)return e;let r=Math.abs(n-a),s=Math.round(r*(t?.5:1)),i=n>a?2:1,o=d=>{let h=e.shape.slice();return h[i]=d,In(h,0,"float32")},l=o(s),c=r-l.shape[i],p=[t&&c?o(c):null,e,l].filter(d=>!!d).map(d=>pe(d,"float32"));return Ze(p,i)})}function _re(e){let t=e.slice();for(let n=t.length-1;n>0;n--){let a=Math.floor(Math.random()*(n+1)),r=t[n];t[n]=t[a],t[a]=r}return t}function Ep(e){return 1/(1+Math.exp(-e))}function Fre(e){return Math.log(e/(1-e))}var vu=class extends lt{constructor(t,n,a,r,s=!1){super({x:t,y:n,width:a,height:r},s)}};var Are=.5,$re=.43,Dre=.45,sa=class{constructor(t,n,a=new De(0,0)){let{width:r,height:s}=n;this._imgDims=new bn(r,s),this._shift=a,this._positions=t.map(i=>i.mul(new De(r,s)).add(a))}get shift(){return new De(this._shift.x,this._shift.y)}get imageWidth(){return this._imgDims.width}get imageHeight(){return this._imgDims.height}get positions(){return this._positions}get relativePositions(){return this._positions.map(t=>t.sub(this._shift).div(new De(this.imageWidth,this.imageHeight)))}forSize(t,n){return new this.constructor(this.relativePositions,{width:t,height:n})}shiftBy(t,n){return new this.constructor(this.relativePositions,this._imgDims,new De(t,n))}shiftByPoint(t){return this.shiftBy(t.x,t.y)}align(t,n={}){if(t){let s=t instanceof xt?t.box.floor():new lt(t);return this.shiftBy(s.x,s.y).align(null,n)}let{useDlibAlignment:a,minBoxPadding:r}={useDlibAlignment:!1,minBoxPadding:.2,...n};return a?this.alignDlib():this.alignMinBbox(r)}alignDlib(){let t=this.getRefPointsForAlignment(),[n,a,r]=t,s=p=>r.sub(p).magnitude(),i=(s(n)+s(a))/2,o=Math.floor(i/Dre),l=Ji(t),c=Math.floor(Math.max(0,l.x-Are*o)),u=Math.floor(Math.max(0,l.y-$re*o));return new vu(c,u,Math.min(o,this.imageWidth+c),Math.min(o,this.imageHeight+u))}alignMinBbox(t){let n=Jv(this.positions);return n.pad(n.width*t,n.height*t)}getRefPointsForAlignment(){throw new Error("getRefPointsForAlignment not implemented by base class")}};var Z2=class extends sa{getRefPointsForAlignment(){let t=this.positions;return[t[0],t[1],Ji([t[3],t[4]])]}};var wu=class extends sa{getJawOutline(){return this.positions.slice(0,17)}getLeftEyeBrow(){return this.positions.slice(17,22)}getRightEyeBrow(){return this.positions.slice(22,27)}getNose(){return this.positions.slice(27,36)}getLeftEye(){return this.positions.slice(36,42)}getRightEye(){return this.positions.slice(42,48)}getMouth(){return this.positions.slice(48,68)}getRefPointsForAlignment(){return[this.getLeftEye(),this.getRightEye(),this.getMouth()].map(Ji)}};var _p=class{constructor(t,n){this._label=t,this._distance=n}get label(){return this._label}get distance(){return this._distance}toString(t=!0){return`${this.label}${t?` (${Yi(this.distance)})`:""}`}};var Fp=class extends lt{static assertIsValidLabeledBox(t,n){if(lt.assertIsValidBox(t,n),!La(t.label))throw new Error(`${n} - expected property label (${t.label}) to be a number`)}constructor(t,n){super(t);this._label=n}get label(){return this._label}};var $r=class{constructor(t,n){if(typeof t!="string")throw new Error("LabeledFaceDescriptors - constructor expected label to be a string");if(!Array.isArray(n)||n.some(a=>!(a instanceof Float32Array)))throw new Error("LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array");this._label=t,this._descriptors=n}get label(){return this._label}get descriptors(){return this._descriptors}toJSON(){return{label:this.label,descriptors:this.descriptors.map(t=>Array.from(t))}}static fromJSON(t){let n=t.descriptors.map(a=>new Float32Array(a));return new $r(t.label,n)}};var Q2=class extends Fp{static assertIsValidPredictedBox(t,n){if(Fp.assertIsValidLabeledBox(t,n),!bu(t.score)||!bu(t.classScore))throw new Error(`${n} - expected properties score (${t.score}) and (${t.classScore}) to be a number between [0, 1]`)}constructor(t,n,a,r){super(t,n);this._score=a,this._classScore=r}get score(){return this._score}get classScore(){return this._classScore}};function ir(e){return e.detection instanceof xt}function Zi(e,t){return{...e,...{detection:t}}}function ew(){let e=window.fetch;if(!e)throw new Error("fetch - missing fetch implementation for browser environment");let t=()=>{throw new Error("readFile - filesystem not available for browser environment")};return{Canvas:HTMLCanvasElement,CanvasRenderingContext2D,Image:HTMLImageElement,ImageData,Video:HTMLVideoElement,createCanvasElement:()=>document.createElement("canvas"),createImageElement:()=>document.createElement("img"),fetch:e,readFile:t}}function nf(e){let t="";if(!e)try{e=require("fs")}catch(a){t=a.toString()}return{readFile:e?a=>new Promise((r,s)=>{e.readFile(a,(i,o)=>i?s(i):r(o))}):()=>{throw new Error(`readFile - failed to require fs in nodejs environment with error: ${t}`)}}}function tw(){let e=global.Canvas||global.HTMLCanvasElement,t=global.Image||global.HTMLImageElement,n=()=>{if(e)return new e;throw new Error("createCanvasElement - missing Canvas implementation for nodejs environment")},a=()=>{if(t)return new t;throw new Error("createImageElement - missing Image implementation for nodejs environment")},r=global.fetch,s=nf();return{Canvas:e||class{},CanvasRenderingContext2D:global.CanvasRenderingContext2D||class{},Image:t||class{},ImageData:global.ImageData||class{},Video:global.HTMLVideoElement||class{},createCanvasElement:n,createImageElement:a,fetch:r,...s}}function nw(){return typeof window=="object"&&typeof document!="undefined"&&typeof HTMLImageElement!="undefined"&&typeof HTMLCanvasElement!="undefined"&&typeof HTMLVideoElement!="undefined"&&typeof ImageData!="undefined"&&typeof CanvasRenderingContext2D!="undefined"}var aw=p_(tC()),tn;function Pre(){if(!tn)throw new Error("getEnv - environment is not defined, check isNodejs() and isBrowser()");return tn}function rw(e){tn=e}function sw(){return nw()?rw(ew()):aw.isNodejs()?rw(tw()):null}function Ore(e){if(tn||sw(),!tn)throw new Error("monkeyPatch - environment is not defined, check isNodejs() and isBrowser()");let{Canvas:t=tn.Canvas,Image:n=tn.Image}=e;tn.Canvas=t,tn.Image=n,tn.createCanvasElement=e.createCanvasElement||(()=>new t),tn.createImageElement=e.createImageElement||(()=>new n),tn.ImageData=e.ImageData||tn.ImageData,tn.Video=e.Video||tn.Video,tn.fetch=e.fetch||tn.fetch,tn.readFile=e.readFile||tn.readFile}var st={getEnv:Pre,setEnv:rw,initialize:sw,createBrowserEnv:ew,createFileSystem:nf,createNodejsEnv:tw,monkeyPatch:Ore,isBrowser:nw,isNodejs:aw.isNodejs};sw();function Qi(e){return!st.isNodejs()&&typeof e=="string"?document.getElementById(e):e}function En(e){let{Canvas:t,CanvasRenderingContext2D:n}=st.getEnv();if(e instanceof n)return e;let a=Qi(e);if(!(a instanceof t))throw new Error("resolveContext2d - expected canvas to be of instance of Canvas");let r=a.getContext("2d");if(!r)throw new Error("resolveContext2d - canvas 2d context is null");return r}var or;(function(e){e.TOP_LEFT="TOP_LEFT",e.TOP_RIGHT="TOP_RIGHT",e.BOTTOM_LEFT="BOTTOM_LEFT",e.BOTTOM_RIGHT="BOTTOM_RIGHT"})(or||(or={}));var Ap=class{constructor(t={}){let{anchorPosition:n,backgroundColor:a,fontColor:r,fontSize:s,fontStyle:i,padding:o}=t;this.anchorPosition=n||or.TOP_LEFT,this.backgroundColor=a||"rgba(0, 0, 0, 0.5)",this.fontColor=r||"rgba(255, 255, 255, 1)",this.fontSize=s||14,this.fontStyle=i||"Georgia",this.padding=o||4}},gs=class{constructor(t,n,a={}){this.text=typeof t=="string"?[t]:t instanceof gs?t.text:t,this.anchor=n,this.options=new Ap(a)}measureWidth(t){let{padding:n}=this.options;return this.text.map(a=>t.measureText(a).width).reduce((a,r)=>a{let m=l+p.x,f=l+p.y+(h+1)*i;a.fillText(d,m,f)})}};var iw=class{constructor(t={}){let{boxColor:n,lineWidth:a,label:r,drawLabelOptions:s}=t;this.boxColor=n||"rgba(0, 0, 255, 1)",this.lineWidth=a||2,this.label=r;let i={anchorPosition:or.BOTTOM_LEFT,backgroundColor:this.boxColor};this.drawLabelOptions=new Ap({...i,...s})}},af=class{constructor(t,n={}){this.box=new lt(t),this.options=new iw(n)}draw(t){let n=En(t),{boxColor:a,lineWidth:r}=this.options,{x:s,y:i,width:o,height:l}=this.box;n.strokeStyle=a,n.lineWidth=r,n.strokeRect(s,i,o,l);let{label:c}=this.options;c&&new gs([c],{x:s-r/2,y:i},this.options.drawLabelOptions).draw(t)}};function Lre(e,t){(Array.isArray(t)?t:[t]).forEach(a=>{let r=a instanceof xt?a.score:ir(a)?a.detection.score:void 0,s=a instanceof xt?a.box:ir(a)?a.detection.box:new lt(a),i=r?`${Yi(r)}`:void 0;new af(s,{label:i}).draw(e)})}function $p(e){let{Image:t,Video:n}=st.getEnv();return e instanceof t&&e.complete||e instanceof n&&e.readyState>=3}function ow(e){return new Promise((t,n)=>{if(e instanceof st.getEnv().Canvas||$p(e))return t(null);function a(s){!s.currentTarget||(s.currentTarget.removeEventListener("load",r),s.currentTarget.removeEventListener("error",a),n(s))}function r(s){!s.currentTarget||(s.currentTarget.removeEventListener("load",r),s.currentTarget.removeEventListener("error",a),t(s))}e.addEventListener("load",r),e.addEventListener("error",a)})}function lw(e){return new Promise((t,n)=>{e instanceof Blob||n(new Error("bufferToImage - expected buf to be of type: Blob"));let a=new FileReader;a.onload=()=>{typeof a.result!="string"&&n(new Error("bufferToImage - expected reader.result to be a string, in onload"));let r=st.getEnv().createImageElement();r.onload=()=>t(r),r.onerror=n,r.src=a.result},a.onerror=n,a.readAsDataURL(e)})}function eo(e){let{Image:t,Video:n}=st.getEnv();return e instanceof t?new bn(e.naturalWidth,e.naturalHeight):e instanceof n?new bn(e.videoWidth,e.videoHeight):new bn(e.width,e.height)}function ku({width:e,height:t}){let{createCanvasElement:n}=st.getEnv(),a=n();return a.width=e,a.height=t,a}function Dp(e,t){let{ImageData:n}=st.getEnv();if(!(e instanceof n)&&!$p(e))throw new Error("createCanvasFromMedia - media has not finished loading yet");let{width:a,height:r}=t||eo(e),s=ku({width:a,height:r});return e instanceof n?En(s).putImageData(e,0,0):En(s).drawImage(e,0,0,a,r),s}async function uw(e,t){let n=t||st.getEnv().createCanvasElement(),[a,r,s]=e.shape.slice(ra(e)?1:0),i=D(()=>e.as3D(a,r,s).toInt());return await Ti.toPixels(i,n),i.dispose(),n}function rf(e){let{Image:t,Canvas:n,Video:a}=st.getEnv();return e instanceof t||e instanceof n||e instanceof a}function cw(e,t,n=!1){let{Image:a,Canvas:r}=st.getEnv();if(!(e instanceof a||e instanceof r))throw new Error("imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement");let s=eo(e),i=t/Math.max(s.height,s.width),o=i*s.width,l=i*s.height,c=ku({width:t,height:t}),u=e instanceof r?e:Dp(e),p=Math.abs(o-l)/2,d=n&&o{if(Ar(a)){this._imageTensors[r]=a,this._inputDimensions[r]=a.shape;return}if(ra(a)){let i=a.shape[0];if(i!==1)throw new Error(`NetInput - tf.Tensor4D with batchSize ${i} passed, but not supported in input array`);this._imageTensors[r]=a,this._inputDimensions[r]=a.shape.slice(1);return}let s=a instanceof st.getEnv().Canvas?a:Dp(a);this._canvases[r]=s,this._inputDimensions[r]=[s.height,s.width,3]})}get imageTensors(){return this._imageTensors}get canvases(){return this._canvases}get isBatchInput(){return this.batchSize>1||this._treatAsBatchInput}get batchSize(){return this._batchSize}get inputDimensions(){return this._inputDimensions}get inputSize(){return this._inputSize}get reshapedInputDimensions(){return sr(this.batchSize,0,1).map((t,n)=>this.getReshapedInputDimensions(n))}getInput(t){return this.canvases[t]||this.imageTensors[t]}getInputDimensions(t){return this._inputDimensions[t]}getInputHeight(t){return this._inputDimensions[t][0]}getInputWidth(t){return this._inputDimensions[t][1]}getReshapedInputDimensions(t){if(typeof this.inputSize!="number")throw new Error("getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet");let n=this.getInputWidth(t),a=this.getInputHeight(t);return Xv({width:n,height:a},this.inputSize)}toBatchTensor(t,n=!0){return this._inputSize=t,D(()=>{let a=sr(this.batchSize,0,1).map(s=>{let i=this.getInput(s);if(i instanceof z){let o=ra(i)?i:i.expandDims();return o=Qv(o,n),(o.shape[1]!==t||o.shape[2]!==t)&&(o=Ya.resizeBilinear(o,[t,t])),o.as3D(t,t,3)}if(i instanceof st.getEnv().Canvas)return Ti.fromPixels(cw(i,t,n));throw new Error(`toBatchTensor - at batchIdx ${s}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${i}`)});return Mt(a.map(s=>pe(s,"float32"))).as4D(this.batchSize,t,t,3)})}};async function gt(e){if(e instanceof Dr)return e;let t=Array.isArray(e)?e:[e];if(!t.length)throw new Error("toNetInput - empty array passed as input");let n=r=>Array.isArray(e)?` at input index ${r}:`:"",a=t.map(Qi);return a.forEach((r,s)=>{if(!rf(r)&&!Ar(r)&&!ra(r))throw typeof t[s]=="string"?new Error(`toNetInput -${n(s)} string passed, but could not resolve HTMLElement for element id ${t[s]}`):new Error(`toNetInput -${n(s)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`);if(ra(r)){let i=r.shape[0];if(i!==1)throw new Error(`toNetInput -${n(s)} tf.Tensor4D with batchSize ${i} passed, but not supported in input array`)}}),await Promise.all(a.map(r=>rf(r)&&ow(r))),new Dr(a,Array.isArray(e))}async function Iu(e,t){let{Canvas:n}=st.getEnv(),a=e;if(!(e instanceof n)){let i=await gt(e);if(i.batchSize>1)throw new Error("extractFaces - batchSize > 1 not supported");let o=i.getInput(0);a=o instanceof n?o:await uw(o)}let r=En(a);return t.map(i=>i instanceof xt?i.forSize(a.width,a.height).box.floor():i).map(i=>i.clipAtImageBorders(a.width,a.height)).map(({x:i,y:o,width:l,height:c})=>{let u=ku({width:l,height:c});return En(u).putImageData(r.getImageData(i,o,l,c),0,0),u})}async function Nu(e,t){if(!Ar(e)&&!ra(e))throw new Error("extractFaceTensors - expected image tensor to be 3D or 4D");if(ra(e)&&e.shape[0]>1)throw new Error("extractFaceTensors - batchSize > 1 not supported");return D(()=>{let[n,a,r]=e.shape.slice(ra(e)?1:0);return t.map(o=>o instanceof xt?o.forSize(a,n).box:o).map(o=>o.clipAtImageBorders(a,n)).map(({x:o,y:l,width:c,height:u})=>Ul(e.as3D(n,a,r),[l,o,0],[u,c,r]))})}async function to(e,t){let{fetch:n}=st.getEnv(),a=await n(e,t);if(!(a.status<400))throw new Error(`failed to fetch: (${a.status}) ${a.statusText}, from url: ${a.url}`);return a}async function zre(e){let t=await to(e),n=await t.blob();if(!n.type.startsWith("image/"))throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${n.type}, for url: ${t.url}`);return lw(n)}async function pw(e){return(await to(e)).json()}async function Bre(e){return new Float32Array(await(await to(e)).arrayBuffer())}function sf(e,t){let n=`${t}-weights_manifest.json`;if(!e)return{modelBaseUri:"",manifestUri:n};if(e==="/")return{modelBaseUri:"/",manifestUri:`/${n}`};let a=e.startsWith("http://")?"http://":e.startsWith("https://")?"https://":"";e=e.replace(a,"");let r=e.split("/").filter(o=>o),s=e.endsWith(".json")?r[r.length-1]:n,i=a+(e.endsWith(".json")?r.slice(0,r.length-1):r).join("/");return i=e.startsWith("/")?`/${i}`:i,{modelBaseUri:i,manifestUri:i==="/"?`/${s}`:`${i}/${s}`}}async function dw(e,t){let{manifestUri:n,modelBaseUri:a}=sf(e,t),r=await pw(n);return Kt.loadWeights(r,a)}function Wre(e,t,n=!1){let{width:a,height:r}=n?eo(t):t;return e.width=a,e.height=r,{width:a,height:r}}var on=class{constructor(){this._params=void 0;this._paramMappings=[]}get params(){return this._params}get paramMappings(){return this._paramMappings}get isLoaded(){return!!this.params}getParamFromPath(t){let{obj:n,objProp:a}=this.traversePropertyPath(t);return n[a]}reassignParamFromPath(t,n){let{obj:a,objProp:r}=this.traversePropertyPath(t);a[r].dispose(),a[r]=n}getParamList(){return this._paramMappings.map(({paramPath:t})=>({path:t,tensor:this.getParamFromPath(t)}))}getTrainableParams(){return this.getParamList().filter(t=>t.tensor instanceof jr)}getFrozenParams(){return this.getParamList().filter(t=>!(t.tensor instanceof jr))}variable(){this.getFrozenParams().forEach(({path:t,tensor:n})=>{this.reassignParamFromPath(t,n.variable())})}freeze(){this.getTrainableParams().forEach(({path:t,tensor:n})=>{let a=Xn(n.dataSync());n.dispose(),this.reassignParamFromPath(t,a)})}dispose(t=!0){this.getParamList().forEach(n=>{if(t&&n.tensor.isDisposed)throw new Error(`param tensor has already been disposed for path ${n.path}`);n.tensor.dispose()}),this._params=void 0}serializeParams(){return new Float32Array(this.getParamList().map(({tensor:t})=>Array.from(t.dataSync())).reduce((t,n)=>t.concat(n)))}async load(t){if(t instanceof Float32Array){this.extractWeights(t);return}await this.loadFromUri(t)}async loadFromUri(t){if(t&&typeof t!="string")throw new Error(`${this._name}.loadFromUri - expected model uri`);let n=await dw(t,this.getDefaultModelName());this.loadFromWeightMap(n)}async loadFromDisk(t){if(t&&typeof t!="string")throw new Error(`${this._name}.loadFromDisk - expected model file path`);let{readFile:n}=st.getEnv(),{manifestUri:a,modelBaseUri:r}=sf(t,this.getDefaultModelName()),s=c=>Promise.all(c.map(u=>n(u).then(p=>p.buffer))),i=Kt.weightsLoaderFactory(s),o=JSON.parse((await n(a)).toString()),l=await i(o,r);this.loadFromWeightMap(l)}loadFromWeightMap(t){let{paramMappings:n,params:a}=this.extractParamsFromWeigthMap(t);this._paramMappings=n,this._params=a}extractWeights(t){let{paramMappings:n,params:a}=this.extractParams(t);this._paramMappings=n,this._params=a}traversePropertyPath(t){if(!this.params)throw new Error("traversePropertyPath - model has no loaded params");let n=t.split("/").reduce((s,i)=>{if(!s.nextObj.hasOwnProperty(i))throw new Error(`traversePropertyPath - object does not have property ${i}, for path ${t}`);return{obj:s.nextObj,objProp:i,nextObj:s.nextObj[i]}},{nextObj:this.params}),{obj:a,objProp:r}=n;if(!a||!r||!(a[r]instanceof z))throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${t}`);return{obj:a,objProp:r}}};function _n(e,t,n){return D(()=>{let a=Ai(e,t.depthwise_filter,t.pointwise_filter,n,"same");return a=Z(a,t.bias),a})}function of(e,t,n=!1){return D(()=>{let a=Xe(n?Z($t(e,t.conv0.filters,[2,2],"same"),t.conv0.bias):_n(e,t.conv0,[2,2])),r=_n(a,t.conv1,[1,1]),s=Xe(Z(a,r)),i=_n(s,t.conv2,[1,1]);return Xe(Z(a,Z(r,i)))})}function Mp(e,t,n=!1,a=!0){return D(()=>{let r=Xe(n?Z($t(e,t.conv0.filters,a?[2,2]:[1,1],"same"),t.conv0.bias):_n(e,t.conv0,a?[2,2]:[1,1])),s=_n(r,t.conv1,[1,1]),i=Xe(Z(r,s)),o=_n(i,t.conv2,[1,1]),l=Xe(Z(r,Z(s,o))),c=_n(l,t.conv3,[1,1]);return Xe(Z(r,Z(s,Z(o,c))))})}function no(e,t,n="same",a=!1){return D(()=>{let r=Z($t(e,t.filters,[1,1],n),t.bias);return a?Xe(r):r})}function xn(e,t){Object.keys(e).forEach(n=>{t.some(a=>a.originalPath===n)||e[n].dispose()})}function Tu(e,t){return(n,a,r,s)=>{let i=Ea(e(n*a*r*r),[r,r,n,a]),o=et(e(a));return t.push({paramPath:`${s}/filters`},{paramPath:`${s}/bias`}),{filters:i,bias:o}}}function lf(e,t){return(n,a,r)=>{let s=Ca(e(n*a),[n,a]),i=et(e(a));return t.push({paramPath:`${r}/weights`},{paramPath:`${r}/bias`}),{weights:s,bias:i}}}var uf=class{constructor(t,n,a){this.depthwise_filter=t;this.pointwise_filter=n;this.bias=a}};function Su(e,t){return(n,a,r)=>{let s=Ea(e(3*3*n),[3,3,n,1]),i=Ea(e(n*a),[1,1,n,a]),o=et(e(a));return t.push({paramPath:`${r}/depthwise_filter`},{paramPath:`${r}/pointwise_filter`},{paramPath:`${r}/bias`}),new uf(s,i,o)}}function Cu(e){return t=>{let n=e(`${t}/depthwise_filter`,4),a=e(`${t}/pointwise_filter`,4),r=e(`${t}/bias`,1);return new uf(n,a,r)}}function Gn(e,t){return(n,a,r)=>{let s=e[n];if(!Xi(s,a))throw new Error(`expected weightMap[${n}] to be a Tensor${a}D, instead have ${s}`);return t.push({originalPath:n,paramPath:r||n}),s}}function vn(e){let t=e;function n(r){let s=t.slice(0,r);return t=t.slice(r),s}function a(){return t}return{extractWeights:n,getRemainingWeights:a}}function cf(e,t){let n=Tu(e,t),a=Su(e,t);function r(i,o,l,c=!1){let u=c?n(i,o,3,`${l}/conv0`):a(i,o,`${l}/conv0`),p=a(o,o,`${l}/conv1`),d=a(o,o,`${l}/conv2`);return{conv0:u,conv1:p,conv2:d}}function s(i,o,l,c=!1){let{conv0:u,conv1:p,conv2:d}=r(i,o,l,c),h=a(o,o,`${l}/conv3`);return{conv0:u,conv1:p,conv2:d,conv3:h}}return{extractDenseBlock3Params:r,extractDenseBlock4Params:s}}function nC(e){let t=[],{extractWeights:n,getRemainingWeights:a}=vn(e),{extractDenseBlock4Params:r}=cf(n,t),s=r(3,32,"dense0",!0),i=r(32,64,"dense1"),o=r(64,128,"dense2"),l=r(128,256,"dense3");if(a().length!==0)throw new Error(`weights remaing after extract: ${a().length}`);return{paramMappings:t,params:{dense0:s,dense1:i,dense2:o,dense3:l}}}function pf(e){return t=>{let n=e(`${t}/filters`,4),a=e(`${t}/bias`,1);return{filters:n,bias:a}}}function df(e,t){let n=Gn(e,t),a=pf(n),r=Cu(n);function s(o,l=!1){let c=l?a(`${o}/conv0`):r(`${o}/conv0`),u=r(`${o}/conv1`),p=r(`${o}/conv2`);return{conv0:c,conv1:u,conv2:p}}function i(o,l=!1){let c=l?a(`${o}/conv0`):r(`${o}/conv0`),u=r(`${o}/conv1`),p=r(`${o}/conv2`),d=r(`${o}/conv3`);return{conv0:c,conv1:u,conv2:p,conv3:d}}return{extractDenseBlock3Params:s,extractDenseBlock4Params:i}}function aC(e){let t=[],{extractDenseBlock4Params:n}=df(e,t),a={dense0:n("dense0",!0),dense1:n("dense1"),dense2:n("dense2"),dense3:n("dense3")};return xn(e,t),{params:a,paramMappings:t}}var Rp=class extends on{constructor(){super("FaceFeatureExtractor")}forwardInput(t){let{params:n}=this;if(!n)throw new Error("FaceFeatureExtractor - load model before inference");return D(()=>{let a=pe(t.toBatchTensor(112,!0),"float32"),s=za(a,[122.782,117.001,104.298]).div(de(255)),i=Mp(s,n.dense0,!0);return i=Mp(i,n.dense1),i=Mp(i,n.dense2),i=Mp(i,n.dense3),i=Jn(i,[7,7],[2,2],"valid"),i})}async forward(t){return this.forwardInput(await gt(t))}getDefaultModelName(){return"face_feature_extractor_model"}extractParamsFromWeigthMap(t){return aC(t)}extractParams(t){return nC(t)}};function Pp(e,t){return D(()=>Z(ze(e,t.weights),t.bias))}function rC(e,t,n){let a=[],{extractWeights:r,getRemainingWeights:s}=vn(e),o=lf(r,a)(t,n,"fc");if(s().length!==0)throw new Error(`weights remaing after extract: ${s().length}`);return{paramMappings:a,params:{fc:o}}}function sC(e){let t=[],n=Gn(e,t);function a(s){let i=n(`${s}/weights`,2),o=n(`${s}/bias`,1);return{weights:i,bias:o}}let r={fc:a("fc")};return xn(e,t),{params:r,paramMappings:t}}function hf(e){let t={},n={};return Object.keys(e).forEach(a=>{let r=a.startsWith("fc")?n:t;r[a]=e[a]}),{featureExtractorMap:t,classifierMap:n}}var Op=class extends on{constructor(t,n){super(t);this._faceFeatureExtractor=n}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(t){let{params:n}=this;if(!n)throw new Error(`${this._name} - load model before inference`);return D(()=>{let a=t instanceof Dr?this.faceFeatureExtractor.forwardInput(t):t;return Pp(a.as2D(a.shape[0],-1),n.fc)})}dispose(t=!0){this.faceFeatureExtractor.dispose(t),super.dispose(t)}loadClassifierParams(t){let{params:n,paramMappings:a}=this.extractClassifierParams(t);this._params=n,this._paramMappings=a}extractClassifierParams(t){return rC(t,this.getClassifierChannelsIn(),this.getClassifierChannelsOut())}extractParamsFromWeigthMap(t){let{featureExtractorMap:n,classifierMap:a}=hf(t);return this.faceFeatureExtractor.loadFromWeightMap(n),sC(a)}extractParams(t){let n=this.getClassifierChannelsIn(),a=this.getClassifierChannelsOut(),r=a*n+a,s=t.slice(0,t.length-r),i=t.slice(t.length-r);return this.faceFeatureExtractor.extractWeights(s),this.extractClassifierParams(i)}};var hw=["neutral","happy","sad","angry","fearful","disgusted","surprised"],ys=class{constructor(t){if(t.length!==7)throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${t.length}`);hw.forEach((n,a)=>{this[n]=t[a]})}asSortedArray(){return hw.map(t=>({expression:t,probability:this[t]})).sort((t,n)=>n.probability-t.probability)}};var mf=class extends Op{constructor(t=new Rp){super("FaceExpressionNet",t)}forwardInput(t){return D(()=>Sa(this.runNet(t)))}async forward(t){return this.forwardInput(await gt(t))}async predictExpressions(t){let n=await gt(t),a=await this.forwardInput(n),r=await Promise.all(pt(a).map(async i=>{let o=await i.data();return i.dispose(),o}));a.dispose();let s=r.map(i=>new ys(i));return n.isBatchInput?s:s[0]}getDefaultModelName(){return"face_expression_model"}getClassifierChannelsIn(){return 256}getClassifierChannelsOut(){return 7}};function mw(e){return e.expressions instanceof ys}function ff(e,t){return{...e,...{expressions:t}}}function Vre(e,t,n=.1,a){(Array.isArray(t)?t:[t]).forEach(s=>{let i=s instanceof ys?s:mw(s)?s.expressions:void 0;if(!i)throw new Error("drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof");let l=i.asSortedArray().filter(p=>p.probability>n),c=ir(s)?s.detection.box.bottomLeft:a||new De(0,0);new gs(l.map(p=>`${p.expression} (${Yi(p.probability)})`),c).draw(e)})}function ao(e){return ir(e)&&e.landmarks instanceof sa&&e.unshiftedLandmarks instanceof sa&&e.alignedRect instanceof xt}function Eu(e,t){let{box:n}=e.detection,a=t.shiftBy(n.x,n.y),r=a.align(),{imageDims:s}=e.detection,i=new xt(e.detection.score,r.rescale(s.reverse()),s);return{...e,...{landmarks:a,unshiftedLandmarks:t,alignedRect:i}}}var fw=class{constructor(t={}){let{drawLines:n=!0,drawPoints:a=!0,lineWidth:r,lineColor:s,pointSize:i,pointColor:o}=t;this.drawLines=n,this.drawPoints=a,this.lineWidth=r||1,this.pointSize=i||2,this.lineColor=s||"rgba(0, 255, 255, 1)",this.pointColor=o||"rgba(255, 0, 255, 1)"}},gw=class{constructor(t,n={}){this.faceLandmarks=t,this.options=new fw(n)}draw(t){let n=En(t),{drawLines:a,drawPoints:r,lineWidth:s,lineColor:i,pointSize:o,pointColor:l}=this.options;if(a&&this.faceLandmarks instanceof wu&&(n.strokeStyle=i,n.lineWidth=s,Fr(n,this.faceLandmarks.getJawOutline()),Fr(n,this.faceLandmarks.getLeftEyeBrow()),Fr(n,this.faceLandmarks.getRightEyeBrow()),Fr(n,this.faceLandmarks.getNose()),Fr(n,this.faceLandmarks.getLeftEye(),!0),Fr(n,this.faceLandmarks.getRightEye(),!0),Fr(n,this.faceLandmarks.getMouth(),!0)),r){n.strokeStyle=l,n.fillStyle=l;let c=u=>{n.beginPath(),n.arc(u.x,u.y,o,0,2*Math.PI),n.fill()};this.faceLandmarks.positions.forEach(c)}}};function Ure(e,t){(Array.isArray(t)?t:[t]).forEach(a=>{let r=a instanceof sa?a:ao(a)?a.landmarks:void 0;if(!r)throw new Error("drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof");new gw(r).draw(e)})}var iC="0.11.2";function Gre(e,t){let n=Tu(e,t),a=Su(e,t);function r(i,o,l){let c=a(i,o,`${l}/separable_conv0`),u=a(o,o,`${l}/separable_conv1`),p=n(i,o,1,`${l}/expansion_conv`);return{separable_conv0:c,separable_conv1:u,expansion_conv:p}}function s(i,o){let l=a(i,i,`${o}/separable_conv0`),c=a(i,i,`${o}/separable_conv1`),u=a(i,i,`${o}/separable_conv2`);return{separable_conv0:l,separable_conv1:c,separable_conv2:u}}return{extractConvParams:n,extractSeparableConvParams:a,extractReductionBlockParams:r,extractMainBlockParams:s}}function oC(e,t){let n=[],{extractWeights:a,getRemainingWeights:r}=vn(e),{extractConvParams:s,extractSeparableConvParams:i,extractReductionBlockParams:o,extractMainBlockParams:l}=Gre(a,n),c=s(3,32,3,"entry_flow/conv_in"),u=o(32,64,"entry_flow/reduction_block_0"),p=o(64,128,"entry_flow/reduction_block_1"),d={conv_in:c,reduction_block_0:u,reduction_block_1:p},h={};sr(t,0,1).forEach(y=>{h[`main_block_${y}`]=l(128,`middle_flow/main_block_${y}`)});let m=o(128,256,"exit_flow/reduction_block"),f=i(256,512,"exit_flow/separable_conv"),g={reduction_block:m,separable_conv:f};if(r().length!==0)throw new Error(`weights remaing after extract: ${r().length}`);return{paramMappings:n,params:{entry_flow:d,middle_flow:h,exit_flow:g}}}function Hre(e,t){let n=Gn(e,t),a=pf(n),r=Cu(n);function s(o){let l=r(`${o}/separable_conv0`),c=r(`${o}/separable_conv1`),u=a(`${o}/expansion_conv`);return{separable_conv0:l,separable_conv1:c,expansion_conv:u}}function i(o){let l=r(`${o}/separable_conv0`),c=r(`${o}/separable_conv1`),u=r(`${o}/separable_conv2`);return{separable_conv0:l,separable_conv1:c,separable_conv2:u}}return{extractConvParams:a,extractSeparableConvParams:r,extractReductionBlockParams:s,extractMainBlockParams:i}}function lC(e,t){let n=[],{extractConvParams:a,extractSeparableConvParams:r,extractReductionBlockParams:s,extractMainBlockParams:i}=Hre(e,n),o=a("entry_flow/conv_in"),l=s("entry_flow/reduction_block_0"),c=s("entry_flow/reduction_block_1"),u={conv_in:o,reduction_block_0:l,reduction_block_1:c},p={};sr(t,0,1).forEach(f=>{p[`main_block_${f}`]=i(`middle_flow/main_block_${f}`)});let d=s("exit_flow/reduction_block"),h=r("exit_flow/separable_conv"),m={reduction_block:d,separable_conv:h};return xn(e,n),{params:{entry_flow:u,middle_flow:p,exit_flow:m},paramMappings:n}}function uC(e,t,n){return Z($t(e,t.filters,n,"same"),t.bias)}function bw(e,t,n=!0){let a=n?Xe(e):e;return a=_n(a,t.separable_conv0,[1,1]),a=_n(Xe(a),t.separable_conv1,[1,1]),a=Dt(a,[3,3],[2,2],"same"),a=Z(a,uC(e,t.expansion_conv,[2,2])),a}function jre(e,t){let n=_n(Xe(e),t.separable_conv0,[1,1]);return n=_n(Xe(n),t.separable_conv1,[1,1]),n=_n(Xe(n),t.separable_conv2,[1,1]),n=Z(n,e),n}var xw=class extends on{constructor(t){super("TinyXception");this._numMainBlocks=t}forwardInput(t){let{params:n}=this;if(!n)throw new Error("TinyXception - load model before inference");return D(()=>{let a=pe(t.toBatchTensor(112,!0),"float32"),s=za(a,[122.782,117.001,104.298]).div(de(256)),i=Xe(uC(s,n.entry_flow.conv_in,[2,2]));return i=bw(i,n.entry_flow.reduction_block_0,!1),i=bw(i,n.entry_flow.reduction_block_1),sr(this._numMainBlocks,0,1).forEach(o=>{i=jre(i,n.middle_flow[`main_block_${o}`])}),i=bw(i,n.exit_flow.reduction_block),i=Xe(_n(i,n.exit_flow.separable_conv,[1,1])),i})}async forward(t){return this.forwardInput(await gt(t))}getDefaultModelName(){return"tiny_xception_model"}extractParamsFromWeigthMap(t){return lC(t,this._numMainBlocks)}extractParams(t){return oC(t,this._numMainBlocks)}};function cC(e){let t=[],{extractWeights:n,getRemainingWeights:a}=vn(e),r=lf(n,t),s=r(512,1,"fc/age"),i=r(512,2,"fc/gender");if(a().length!==0)throw new Error(`weights remaing after extract: ${a().length}`);return{paramMappings:t,params:{fc:{age:s,gender:i}}}}function pC(e){let t=[],n=Gn(e,t);function a(s){let i=n(`${s}/weights`,2),o=n(`${s}/bias`,1);return{weights:i,bias:o}}let r={fc:{age:a("fc/age"),gender:a("fc/gender")}};return xn(e,t),{params:r,paramMappings:t}}var Mr;(function(e){e.FEMALE="female",e.MALE="male"})(Mr||(Mr={}));var gf=class extends on{constructor(t=new xw(2)){super("AgeGenderNet");this._faceFeatureExtractor=t}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(t){let{params:n}=this;if(!n)throw new Error(`${this._name} - load model before inference`);return D(()=>{let a=t instanceof Dr?this.faceFeatureExtractor.forwardInput(t):t,r=Jn(a,[7,7],[2,2],"valid").as2D(a.shape[0],-1),s=Pp(r,n.fc.age).as1D(),i=Pp(r,n.fc.gender);return{age:s,gender:i}})}forwardInput(t){return D(()=>{let{age:n,gender:a}=this.runNet(t);return{age:n,gender:Sa(a)}})}async forward(t){return this.forwardInput(await gt(t))}async predictAgeAndGender(t){let n=await gt(t),a=await this.forwardInput(n),r=pt(a.age),s=pt(a.gender),i=r.map((l,c)=>({ageTensor:l,genderTensor:s[c]})),o=await Promise.all(i.map(async({ageTensor:l,genderTensor:c})=>{let u=(await l.data())[0],p=(await c.data())[0],d=p>.5,h=d?Mr.MALE:Mr.FEMALE,m=d?p:1-p;return l.dispose(),c.dispose(),{age:u,gender:h,genderProbability:m}}));return a.age.dispose(),a.gender.dispose(),n.isBatchInput?o:o[0]}getDefaultModelName(){return"age_gender_model"}dispose(t=!0){this.faceFeatureExtractor.dispose(t),super.dispose(t)}loadClassifierParams(t){let{params:n,paramMappings:a}=this.extractClassifierParams(t);this._params=n,this._paramMappings=a}extractClassifierParams(t){return cC(t)}extractParamsFromWeigthMap(t){let{featureExtractorMap:n,classifierMap:a}=hf(t);return this.faceFeatureExtractor.loadFromWeightMap(n),pC(a)}extractParams(t){let n=512*1+1+(512*2+2),a=t.slice(0,t.length-n),r=t.slice(t.length-n);return this.faceFeatureExtractor.extractWeights(a),this.extractClassifierParams(r)}};var Lp=class extends Op{postProcess(t,n,a){let r=a.map(({width:i,height:o})=>{let l=n/Math.max(o,i);return{width:i*l,height:o*l}}),s=r.length;return D(()=>{let i=(p,d)=>Mt([In([68],p,"float32"),In([68],d,"float32")],1).as2D(1,136).as1D(),o=(p,d)=>{let{width:h,height:m}=r[p];return d(h,m)?Math.abs(h-m)/2:0},l=p=>o(p,(d,h)=>do(p,(d,h)=>hi(l(d),c(d))))).div(Mt(Array.from(Array(s),(p,d)=>i(r[d].width,r[d].height))))})}forwardInput(t){return D(()=>{let n=this.runNet(t);return this.postProcess(n,t.inputSize,t.inputDimensions.map(([a,r])=>({height:a,width:r})))})}async forward(t){return this.forwardInput(await gt(t))}async detectLandmarks(t){let n=await gt(t),a=D(()=>pt(this.forwardInput(n))),r=await Promise.all(a.map(async(s,i)=>{let o=Array.from(await s.data()),l=o.filter((u,p)=>ef(p)),c=o.filter((u,p)=>!ef(p));return new wu(Array(68).fill(0).map((u,p)=>new De(l[p],c[p])),{height:n.getInputHeight(i),width:n.getInputWidth(i)})}));return a.forEach(s=>s.dispose()),n.isBatchInput?r:r[0]}getClassifierChannelsOut(){return 136}};var _u=class extends Lp{constructor(t=new Rp){super("FaceLandmark68Net",t)}getDefaultModelName(){return"face_landmark_68_model"}getClassifierChannelsIn(){return 256}};function dC(e){let t=[],{extractDenseBlock3Params:n}=df(e,t),a={dense0:n("dense0",!0),dense1:n("dense1"),dense2:n("dense2")};return xn(e,t),{params:a,paramMappings:t}}function hC(e){let t=[],{extractWeights:n,getRemainingWeights:a}=vn(e),{extractDenseBlock3Params:r}=cf(n,t),s=r(3,32,"dense0",!0),i=r(32,64,"dense1"),o=r(64,128,"dense2");if(a().length!==0)throw new Error(`weights remaing after extract: ${a().length}`);return{paramMappings:t,params:{dense0:s,dense1:i,dense2:o}}}var vw=class extends on{constructor(){super("TinyFaceFeatureExtractor")}forwardInput(t){let{params:n}=this;if(!n)throw new Error("TinyFaceFeatureExtractor - load model before inference");return D(()=>{let a=pe(t.toBatchTensor(112,!0),"float32"),s=za(a,[122.782,117.001,104.298]).div(de(255)),i=of(s,n.dense0,!0);return i=of(i,n.dense1),i=of(i,n.dense2),i=Jn(i,[14,14],[2,2],"valid"),i})}async forward(t){return this.forwardInput(await gt(t))}getDefaultModelName(){return"face_feature_extractor_tiny_model"}extractParamsFromWeigthMap(t){return dC(t)}extractParams(t){return hC(t)}};var yf=class extends Lp{constructor(t=new vw){super("FaceLandmark68TinyNet",t)}getDefaultModelName(){return"face_landmark_68_tiny_model"}getClassifierChannelsIn(){return 128}};var mC=class extends _u{};function fC(e,t){return Z(L(e,t.weights),t.biases)}function ww(e,t,n,a,r="same"){let{filters:s,bias:i}=t.conv,o=$t(e,s,n,r);return o=Z(o,i),o=fC(o,t.scale),a?Xe(o):o}function gC(e,t){return ww(e,t,[1,1],!0)}function kw(e,t){return ww(e,t,[1,1],!1)}function bf(e,t){return ww(e,t,[2,2],!0,"valid")}function qre(e,t){function n(o,l,c){let u=e(o),p=u.length/(l*c*c);if(Kv(p))throw new Error(`depth has to be an integer: ${p}, weights.length: ${u.length}, numFilters: ${l}, filterSize: ${c}`);return D(()=>Ue(Ea(u,[l,p,c,c]),[2,3,1,0]))}function a(o,l,c,u){let p=n(o,l,c),d=et(e(l));return t.push({paramPath:`${u}/filters`},{paramPath:`${u}/bias`}),{filters:p,bias:d}}function r(o,l){let c=et(e(o)),u=et(e(o));return t.push({paramPath:`${l}/weights`},{paramPath:`${l}/biases`}),{weights:c,biases:u}}function s(o,l,c,u){let p=a(o,l,c,`${u}/conv`),d=r(l,`${u}/scale`);return{conv:p,scale:d}}function i(o,l,c,u,p=!1){let d=s((p?.5:1)*o,l,c,`${u}/conv1`),h=s(o,l,c,`${u}/conv2`);return{conv1:d,conv2:h}}return{extractConvLayerParams:s,extractResidualLayerParams:i}}function yC(e){let{extractWeights:t,getRemainingWeights:n}=vn(e),a=[],{extractConvLayerParams:r,extractResidualLayerParams:s}=qre(t,a),i=r(4704,32,7,"conv32_down"),o=s(9216,32,3,"conv32_1"),l=s(9216,32,3,"conv32_2"),c=s(9216,32,3,"conv32_3"),u=s(36864,64,3,"conv64_down",!0),p=s(36864,64,3,"conv64_1"),d=s(36864,64,3,"conv64_2"),h=s(36864,64,3,"conv64_3"),m=s(147456,128,3,"conv128_down",!0),f=s(147456,128,3,"conv128_1"),g=s(147456,128,3,"conv128_2"),y=s(589824,256,3,"conv256_down",!0),b=s(589824,256,3,"conv256_1"),x=s(589824,256,3,"conv256_2"),v=s(589824,256,3,"conv256_down_out"),N=D(()=>Ue(Ca(t(256*128),[128,256]),[1,0]));if(a.push({paramPath:"fc"}),n().length!==0)throw new Error(`weights remaing after extract: ${n().length}`);return{params:{conv32_down:i,conv32_1:o,conv32_2:l,conv32_3:c,conv64_down:u,conv64_1:p,conv64_2:d,conv64_3:h,conv128_down:m,conv128_1:f,conv128_2:g,conv256_down:y,conv256_1:b,conv256_2:x,conv256_down_out:v,fc:N},paramMappings:a}}function Kre(e,t){let n=Gn(e,t);function a(i){let o=n(`${i}/scale/weights`,1),l=n(`${i}/scale/biases`,1);return{weights:o,biases:l}}function r(i){let o=n(`${i}/conv/filters`,4),l=n(`${i}/conv/bias`,1),c=a(i);return{conv:{filters:o,bias:l},scale:c}}function s(i){return{conv1:r(`${i}/conv1`),conv2:r(`${i}/conv2`)}}return{extractConvLayerParams:r,extractResidualLayerParams:s}}function bC(e){let t=[],{extractConvLayerParams:n,extractResidualLayerParams:a}=Kre(e,t),r=n("conv32_down"),s=a("conv32_1"),i=a("conv32_2"),o=a("conv32_3"),l=a("conv64_down"),c=a("conv64_1"),u=a("conv64_2"),p=a("conv64_3"),d=a("conv128_down"),h=a("conv128_1"),m=a("conv128_2"),f=a("conv256_down"),g=a("conv256_1"),y=a("conv256_2"),b=a("conv256_down_out"),{fc:x}=e;if(t.push({originalPath:"fc",paramPath:"fc"}),!qv(x))throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${x}`);let v={conv32_down:r,conv32_1:s,conv32_2:i,conv32_3:o,conv64_down:l,conv64_1:c,conv64_2:u,conv64_3:p,conv128_down:d,conv128_1:h,conv128_2:m,conv256_down:f,conv256_1:g,conv256_2:y,conv256_down_out:b,fc:x};return xn(e,t),{params:v,paramMappings:t}}function Ba(e,t){let n=gC(e,t.conv1);return n=kw(n,t.conv2),n=Z(n,e),n=Xe(n),n}function zp(e,t){let n=bf(e,t.conv1);n=kw(n,t.conv2);let a=Jn(e,2,2,"valid"),r=yt(a.shape),s=a.shape[3]!==n.shape[3];if(a.shape[1]!==n.shape[1]||a.shape[2]!==n.shape[2]){let o=[...n.shape];o[1]=1;let l=yt(o);n=Ze([n,l],1);let c=[...n.shape];c[2]=1;let u=yt(c);n=Ze([n,u],2)}return a=s?Ze([a,r],3):a,n=Z(a,n),n=Xe(n),n}var Fu=class extends on{constructor(){super("FaceRecognitionNet")}forwardInput(t){let{params:n}=this;if(!n)throw new Error("FaceRecognitionNet - load model before inference");return D(()=>{let a=pe(t.toBatchTensor(150,!0),"float32"),s=za(a,[122.782,117.001,104.298]).div(de(256)),i=bf(s,n.conv32_down);i=Dt(i,3,2,"valid"),i=Ba(i,n.conv32_1),i=Ba(i,n.conv32_2),i=Ba(i,n.conv32_3),i=zp(i,n.conv64_down),i=Ba(i,n.conv64_1),i=Ba(i,n.conv64_2),i=Ba(i,n.conv64_3),i=zp(i,n.conv128_down),i=Ba(i,n.conv128_1),i=Ba(i,n.conv128_2),i=zp(i,n.conv256_down),i=Ba(i,n.conv256_1),i=Ba(i,n.conv256_2),i=zp(i,n.conv256_down_out);let o=i.mean([1,2]);return ze(o,n.fc)})}async forward(t){return this.forwardInput(await gt(t))}async computeFaceDescriptor(t){let n=await gt(t),a=D(()=>pt(this.forwardInput(n))),r=await Promise.all(a.map(s=>s.data()));return a.forEach(s=>s.dispose()),n.isBatchInput?r:r[0]}getDefaultModelName(){return"face_recognition_model"}extractParamsFromWeigthMap(t){return bC(t)}extractParams(t){return yC(t)}};function Xre(e){let t=new Fu;return t.extractWeights(e),t}function xf(e,t){return{...e,...{descriptor:t}}}function Yre(e){return typeof e.age=="number"}function vf(e,t){return{...e,...{age:t}}}function Jre(e){return(e.gender===Mr.MALE||e.gender===Mr.FEMALE)&&bu(e.genderProbability)}function wf(e,t,n){return{...e,...{gender:t,genderProbability:n}}}function Zre(e,t){function n(l,c){let u=Ea(e(3*3*l),[3,3,l,1]),p=et(e(l)),d=et(e(l)),h=et(e(l)),m=et(e(l));return t.push({paramPath:`${c}/filters`},{paramPath:`${c}/batch_norm_scale`},{paramPath:`${c}/batch_norm_offset`},{paramPath:`${c}/batch_norm_mean`},{paramPath:`${c}/batch_norm_variance`}),{filters:u,batch_norm_scale:p,batch_norm_offset:d,batch_norm_mean:h,batch_norm_variance:m}}function a(l,c,u,p,d){let h=Ea(e(l*c*u*u),[u,u,l,c]),m=et(e(c));return t.push({paramPath:`${p}/filters`},{paramPath:`${p}/${d?"batch_norm_offset":"bias"}`}),{filters:h,bias:m}}function r(l,c,u,p){let{filters:d,bias:h}=a(l,c,u,p,!0);return{filters:d,batch_norm_offset:h}}function s(l,c,u){let p=n(l,`${u}/depthwise_conv`),d=r(l,c,1,`${u}/pointwise_conv`);return{depthwise_conv:p,pointwise_conv:d}}function i(){let l=r(3,32,3,"mobilenetv1/conv_0"),c=s(32,64,"mobilenetv1/conv_1"),u=s(64,128,"mobilenetv1/conv_2"),p=s(128,128,"mobilenetv1/conv_3"),d=s(128,256,"mobilenetv1/conv_4"),h=s(256,256,"mobilenetv1/conv_5"),m=s(256,512,"mobilenetv1/conv_6"),f=s(512,512,"mobilenetv1/conv_7"),g=s(512,512,"mobilenetv1/conv_8"),y=s(512,512,"mobilenetv1/conv_9"),b=s(512,512,"mobilenetv1/conv_10"),x=s(512,512,"mobilenetv1/conv_11"),v=s(512,1024,"mobilenetv1/conv_12"),N=s(1024,1024,"mobilenetv1/conv_13");return{conv_0:l,conv_1:c,conv_2:u,conv_3:p,conv_4:d,conv_5:h,conv_6:m,conv_7:f,conv_8:g,conv_9:y,conv_10:b,conv_11:x,conv_12:v,conv_13:N}}function o(){let l=r(1024,256,1,"prediction_layer/conv_0"),c=r(256,512,3,"prediction_layer/conv_1"),u=r(512,128,1,"prediction_layer/conv_2"),p=r(128,256,3,"prediction_layer/conv_3"),d=r(256,128,1,"prediction_layer/conv_4"),h=r(128,256,3,"prediction_layer/conv_5"),m=r(256,64,1,"prediction_layer/conv_6"),f=r(64,128,3,"prediction_layer/conv_7"),g=a(512,12,1,"prediction_layer/box_predictor_0/box_encoding_predictor"),y=a(512,9,1,"prediction_layer/box_predictor_0/class_predictor"),b=a(1024,24,1,"prediction_layer/box_predictor_1/box_encoding_predictor"),x=a(1024,18,1,"prediction_layer/box_predictor_1/class_predictor"),v=a(512,24,1,"prediction_layer/box_predictor_2/box_encoding_predictor"),N=a(512,18,1,"prediction_layer/box_predictor_2/class_predictor"),T=a(256,24,1,"prediction_layer/box_predictor_3/box_encoding_predictor"),E=a(256,18,1,"prediction_layer/box_predictor_3/class_predictor"),A=a(256,24,1,"prediction_layer/box_predictor_4/box_encoding_predictor"),$=a(256,18,1,"prediction_layer/box_predictor_4/class_predictor"),O=a(128,24,1,"prediction_layer/box_predictor_5/box_encoding_predictor"),V=a(128,18,1,"prediction_layer/box_predictor_5/class_predictor");return{conv_0:l,conv_1:c,conv_2:u,conv_3:p,conv_4:d,conv_5:h,conv_6:m,conv_7:f,box_predictor_0:{box_encoding_predictor:g,class_predictor:y},box_predictor_1:{box_encoding_predictor:b,class_predictor:x},box_predictor_2:{box_encoding_predictor:v,class_predictor:N},box_predictor_3:{box_encoding_predictor:T,class_predictor:E},box_predictor_4:{box_encoding_predictor:A,class_predictor:$},box_predictor_5:{box_encoding_predictor:O,class_predictor:V}}}return{extractMobilenetV1Params:i,extractPredictionLayerParams:o}}function xC(e){let t=[],{extractWeights:n,getRemainingWeights:a}=vn(e),{extractMobilenetV1Params:r,extractPredictionLayerParams:s}=Zre(n,t),i=r(),o=s(),c={extra_dim:sh(n(5118*4),[1,5118,4])};if(t.push({paramPath:"output_layer/extra_dim"}),a().length!==0)throw new Error(`weights remaing after extract: ${a().length}`);return{params:{mobilenetv1:i,prediction_layer:o,output_layer:c},paramMappings:t}}function Qre(e,t){let n=Gn(e,t);function a(c,u,p){let d=n(`${c}/Conv2d_${u}_pointwise/weights`,4,`${p}/filters`),h=n(`${c}/Conv2d_${u}_pointwise/convolution_bn_offset`,1,`${p}/batch_norm_offset`);return{filters:d,batch_norm_offset:h}}function r(c){let u=`mobilenetv1/conv_${c}`,p=`MobilenetV1/Conv2d_${c}_depthwise`,d=`${u}/depthwise_conv`,h=`${u}/pointwise_conv`,m=n(`${p}/depthwise_weights`,4,`${d}/filters`),f=n(`${p}/BatchNorm/gamma`,1,`${d}/batch_norm_scale`),g=n(`${p}/BatchNorm/beta`,1,`${d}/batch_norm_offset`),y=n(`${p}/BatchNorm/moving_mean`,1,`${d}/batch_norm_mean`),b=n(`${p}/BatchNorm/moving_variance`,1,`${d}/batch_norm_variance`);return{depthwise_conv:{filters:m,batch_norm_scale:f,batch_norm_offset:g,batch_norm_mean:y,batch_norm_variance:b},pointwise_conv:a("MobilenetV1",c,h)}}function s(){return{conv_0:a("MobilenetV1",0,"mobilenetv1/conv_0"),conv_1:r(1),conv_2:r(2),conv_3:r(3),conv_4:r(4),conv_5:r(5),conv_6:r(6),conv_7:r(7),conv_8:r(8),conv_9:r(9),conv_10:r(10),conv_11:r(11),conv_12:r(12),conv_13:r(13)}}function i(c,u){let p=n(`${c}/weights`,4,`${u}/filters`),d=n(`${c}/biases`,1,`${u}/bias`);return{filters:p,bias:d}}function o(c){let u=i(`Prediction/BoxPredictor_${c}/BoxEncodingPredictor`,`prediction_layer/box_predictor_${c}/box_encoding_predictor`),p=i(`Prediction/BoxPredictor_${c}/ClassPredictor`,`prediction_layer/box_predictor_${c}/class_predictor`);return{box_encoding_predictor:u,class_predictor:p}}function l(){return{conv_0:a("Prediction",0,"prediction_layer/conv_0"),conv_1:a("Prediction",1,"prediction_layer/conv_1"),conv_2:a("Prediction",2,"prediction_layer/conv_2"),conv_3:a("Prediction",3,"prediction_layer/conv_3"),conv_4:a("Prediction",4,"prediction_layer/conv_4"),conv_5:a("Prediction",5,"prediction_layer/conv_5"),conv_6:a("Prediction",6,"prediction_layer/conv_6"),conv_7:a("Prediction",7,"prediction_layer/conv_7"),box_predictor_0:o(0),box_predictor_1:o(1),box_predictor_2:o(2),box_predictor_3:o(3),box_predictor_4:o(4),box_predictor_5:o(5)}}return{extractMobilenetV1Params:s,extractPredictionLayerParams:l}}function vC(e){let t=[],{extractMobilenetV1Params:n,extractPredictionLayerParams:a}=Qre(e,t),r=e["Output/extra_dim"];if(t.push({originalPath:"Output/extra_dim",paramPath:"output_layer/extra_dim"}),!Ar(r))throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${r}`);let s={mobilenetv1:n(),prediction_layer:a(),output_layer:{extra_dim:r}};return xn(e,t),{params:s,paramMappings:t}}function ba(e,t,n){return D(()=>{let a=$t(e,t.filters,n,"same");return a=Z(a,t.batch_norm_offset),Yt(a,0,6)})}var ese=.0010000000474974513;function tse(e,t,n){return D(()=>{let a=xr(e,t.filters,n,"same");return a=br(a,t.batch_norm_mean,t.batch_norm_variance,t.batch_norm_offset,t.batch_norm_scale,ese),Yt(a,0,6)})}function nse(e){return[2,4,6,12].some(t=>t===e)?[2,2]:[1,1]}function wC(e,t){return D(()=>{let n,a=ba(e,t.conv_0,[2,2]);if([t.conv_1,t.conv_2,t.conv_3,t.conv_4,t.conv_5,t.conv_6,t.conv_7,t.conv_8,t.conv_9,t.conv_10,t.conv_11,t.conv_12,t.conv_13].forEach((s,i)=>{let o=i+1,l=nse(o);a=tse(a,s.depthwise_conv,l),a=ba(a,s.pointwise_conv,[1,1]),o===11&&(n=a)}),n===null)throw new Error("mobileNetV1 - output of conv layer 11 is null");return{out:a,conv11:n}})}function ase(e,t,n){let a=e.arraySync(),r=Math.min(a[t][0],a[t][2]),s=Math.min(a[t][1],a[t][3]),i=Math.max(a[t][0],a[t][2]),o=Math.max(a[t][1],a[t][3]),l=Math.min(a[n][0],a[n][2]),c=Math.min(a[n][1],a[n][3]),u=Math.max(a[n][0],a[n][2]),p=Math.max(a[n][1],a[n][3]),d=(i-r)*(o-s),h=(u-l)*(p-c);if(d<=0||h<=0)return 0;let m=Math.max(r,l),f=Math.max(s,c),g=Math.min(i,u),y=Math.min(o,p),b=Math.max(g-m,0)*Math.max(y-f,0);return b/(d+h-b)}function kC(e,t,n,a,r){let s=e.shape[0],i=Math.min(n,s),o=t.map((u,p)=>({score:u,boxIndex:p})).filter(u=>u.score>r).sort((u,p)=>p.score-u.score),l=u=>u<=a?1:0,c=[];return o.forEach(u=>{if(c.length>=i)return;let p=u.score;for(let d=c.length-1;d>=0;--d){let h=ase(e,u.boxIndex,c[d]);if(h!==0&&(u.score*=l(h),u.score<=r))break}p===u.score&&c.push(u.boxIndex)}),c}function rse(e){let t=pt(Ue(e,[1,0])),n=[fe(t[2],t[0]),fe(t[3],t[1])],a=[Z(t[0],ve(n[0],de(2))),Z(t[1],ve(n[1],de(2)))];return{sizes:n,centers:a}}function sse(e,t){let{sizes:n,centers:a}=rse(e),r=pt(Ue(t,[1,0])),s=ve(L(hn(ve(r[2],de(5))),n[0]),de(2)),i=Z(L(ve(r[0],de(10)),n[0]),a[0]),o=ve(L(hn(ve(r[3],de(5))),n[1]),de(2)),l=Z(L(ve(r[1],de(10)),n[1]),a[1]);return Ue(Mt([fe(i,s),fe(l,o),Z(i,s),Z(l,o)]),[1,0])}function IC(e,t,n){return D(()=>{let a=e.shape[0],r=sse(j(ja(n.extra_dim,[a,1,1]),[-1,4]),j(e,[-1,4]));r=j(r,[a,r.shape[0]/a,4]);let s=ca(We(t,[0,0,1],[-1,-1,-1])),i=We(s,[0,0,0],[-1,-1,1]);i=j(i,[a,i.shape[1]]);let o=pt(r),l=pt(i);return{boxes:o,scores:l}})}function ro(e,t){return D(()=>{let n=e.shape[0],a=j(no(e,t.box_encoding_predictor),[n,-1,1,4]),r=j(no(e,t.class_predictor),[n,-1,3]);return{boxPredictionEncoding:a,classPrediction:r}})}function NC(e,t,n){return D(()=>{let a=ba(e,n.conv_0,[1,1]),r=ba(a,n.conv_1,[2,2]),s=ba(r,n.conv_2,[1,1]),i=ba(s,n.conv_3,[2,2]),o=ba(i,n.conv_4,[1,1]),l=ba(o,n.conv_5,[2,2]),c=ba(l,n.conv_6,[1,1]),u=ba(c,n.conv_7,[2,2]),p=ro(t,n.box_predictor_0),d=ro(e,n.box_predictor_1),h=ro(r,n.box_predictor_2),m=ro(i,n.box_predictor_3),f=ro(l,n.box_predictor_4),g=ro(u,n.box_predictor_5),y=Ze([p.boxPredictionEncoding,d.boxPredictionEncoding,h.boxPredictionEncoding,m.boxPredictionEncoding,f.boxPredictionEncoding,g.boxPredictionEncoding],1),b=Ze([p.classPrediction,d.classPrediction,h.classPrediction,m.classPrediction,f.classPrediction,g.classPrediction],1);return{boxPredictions:y,classPredictions:b}})}var xa=class{constructor({minConfidence:t,maxResults:n}={}){this._name="SsdMobilenetv1Options";if(this._minConfidence=t||.5,this._maxResults=n||100,typeof this._minConfidence!="number"||this._minConfidence<=0||this._minConfidence>=1)throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`);if(typeof this._maxResults!="number")throw new Error(`${this._name} - expected maxResults to be a number`)}get minConfidence(){return this._minConfidence}get maxResults(){return this._maxResults}};var so=class extends on{constructor(){super("SsdMobilenetv1")}forwardInput(t){let{params:n}=this;if(!n)throw new Error("SsdMobilenetv1 - load model before inference");return D(()=>{let a=pe(t.toBatchTensor(512,!1),"float32"),r=fe(L(a,de(.007843137718737125)),de(1)),s=wC(r,n.mobilenetv1),{boxPredictions:i,classPredictions:o}=NC(s.out,s.conv11,n.prediction_layer);return IC(i,o,n.output_layer)})}async forward(t){return this.forwardInput(await gt(t))}async locateFaces(t,n={}){let{maxResults:a,minConfidence:r}=new xa(n),s=await gt(t),{boxes:i,scores:o}=this.forwardInput(s),l=i[0],c=o[0];for(let x=1;x{let[v,N]=[Math.max(0,y[x][0]),Math.min(1,y[x][2])].map(A=>A*g),[T,E]=[Math.max(0,y[x][1]),Math.min(1,y[x][3])].map(A=>A*f);return new xt(u[x],new vu(T,v,E-T,N-v),{height:s.getInputHeight(0),width:s.getInputWidth(0)})});return l.dispose(),c.dispose(),b}getDefaultModelName(){return"ssd_mobilenetv1_model"}extractParamsFromWeigthMap(t){return vC(t)}extractParams(t){return xC(t)}};function TC(e){let t=new so;return t.extractWeights(e),t}function ise(e){return TC(e)}var SC=class extends so{};var CC=.4,EC=[new De(.738768,.874946),new De(2.42204,2.65704),new De(4.30971,7.04493),new De(10.246,4.59428),new De(12.6868,11.8741)],_C=[new De(1.603231,2.094468),new De(6.041143,7.080126),new De(2.882459,3.518061),new De(4.266906,5.178857),new De(9.041765,10.66308)],FC=[117.001,114.697,97.404],AC="tiny_yolov2_model",$C="tiny_yolov2_separable_conv_model";var kf=e=>typeof e=="number";function Iw(e){if(!e)throw new Error(`invalid config: ${e}`);if(typeof e.withSeparableConvs!="boolean")throw new Error(`config.withSeparableConvs has to be a boolean, have: ${e.withSeparableConvs}`);if(!kf(e.iouThreshold)||e.iouThreshold<0||e.iouThreshold>1)throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${e.iouThreshold}`);if(!Array.isArray(e.classes)||!e.classes.length||!e.classes.every(t=>typeof t=="string"))throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(e.classes)}`);if(!Array.isArray(e.anchors)||!e.anchors.length||!e.anchors.map(t=>t||{}).every(t=>kf(t.x)&&kf(t.y)))throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(e.anchors)}`);if(e.meanRgb&&(!Array.isArray(e.meanRgb)||e.meanRgb.length!==3||!e.meanRgb.every(kf)))throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(e.meanRgb)}`)}function Au(e){return D(()=>{let t=L(e,de(.10000000149011612));return Z(Xe(fe(e,t)),t)})}function Rr(e,t){return D(()=>{let n=ta(e,[[0,0],[1,1],[1,1],[0,0]]);return n=$t(n,t.conv.filters,[1,1],"valid"),n=fe(n,t.bn.sub),n=L(n,t.bn.truediv),n=Z(n,t.conv.bias),Au(n)})}function Pr(e,t){return D(()=>{let n=ta(e,[[0,0],[1,1],[1,1],[0,0]]);return n=Ai(n,t.depthwise_filter,t.pointwise_filter,[1,1],"valid"),n=Z(n,t.bias),Au(n)})}function ose(e,t){let n=Tu(e,t);function a(i,o){let l=et(e(i)),c=et(e(i));return t.push({paramPath:`${o}/sub`},{paramPath:`${o}/truediv`}),{sub:l,truediv:c}}function r(i,o,l){let c=n(i,o,3,`${l}/conv`),u=a(o,`${l}/bn`);return{conv:c,bn:u}}let s=Su(e,t);return{extractConvParams:n,extractConvWithBatchNormParams:r,extractSeparableConvParams:s}}function DC(e,t,n,a){let{extractWeights:r,getRemainingWeights:s}=vn(e),i=[],{extractConvParams:o,extractConvWithBatchNormParams:l,extractSeparableConvParams:c}=ose(r,i),u;if(t.withSeparableConvs){let[p,d,h,m,f,g,y,b,x]=a,v=t.isFirstLayerConv2d?o(p,d,3,"conv0"):c(p,d,"conv0"),N=c(d,h,"conv1"),T=c(h,m,"conv2"),E=c(m,f,"conv3"),A=c(f,g,"conv4"),$=c(g,y,"conv5"),O=b?c(y,b,"conv6"):void 0,V=x?c(b,x,"conv7"):void 0,W=o(x||b||y,5*n,1,"conv8");u={conv0:v,conv1:N,conv2:T,conv3:E,conv4:A,conv5:$,conv6:O,conv7:V,conv8:W}}else{let[p,d,h,m,f,g,y,b,x]=a,v=l(p,d,"conv0"),N=l(d,h,"conv1"),T=l(h,m,"conv2"),E=l(m,f,"conv3"),A=l(f,g,"conv4"),$=l(g,y,"conv5"),O=l(y,b,"conv6"),V=l(b,x,"conv7"),W=o(x,5*n,1,"conv8");u={conv0:v,conv1:N,conv2:T,conv3:E,conv4:A,conv5:$,conv6:O,conv7:V,conv8:W}}if(s().length!==0)throw new Error(`weights remaing after extract: ${s().length}`);return{params:u,paramMappings:i}}function lse(e,t){let n=Gn(e,t);function a(o){let l=n(`${o}/sub`,1),c=n(`${o}/truediv`,1);return{sub:l,truediv:c}}function r(o){let l=n(`${o}/filters`,4),c=n(`${o}/bias`,1);return{filters:l,bias:c}}function s(o){let l=r(`${o}/conv`),c=a(`${o}/bn`);return{conv:l,bn:c}}let i=Cu(n);return{extractConvParams:r,extractConvWithBatchNormParams:s,extractSeparableConvParams:i}}function MC(e,t){let n=[],{extractConvParams:a,extractConvWithBatchNormParams:r,extractSeparableConvParams:s}=lse(e,n),i;if(t.withSeparableConvs){let o=t.filterSizes&&t.filterSizes.length||9;i={conv0:t.isFirstLayerConv2d?a("conv0"):s("conv0"),conv1:s("conv1"),conv2:s("conv2"),conv3:s("conv3"),conv4:s("conv4"),conv5:s("conv5"),conv6:o>7?s("conv6"):void 0,conv7:o>8?s("conv7"):void 0,conv8:a("conv8")}}else i={conv0:r("conv0"),conv1:r("conv1"),conv2:r("conv2"),conv3:r("conv3"),conv4:r("conv4"),conv5:r("conv5"),conv6:r("conv6"),conv7:r("conv7"),conv8:a("conv8")};return xn(e,n),{params:i,paramMappings:n}}var lr=class{constructor({inputSize:t,scoreThreshold:n}={}){this._name="TinyYolov2Options";if(this._inputSize=t||416,this._scoreThreshold=n||.5,typeof this._inputSize!="number"||this._inputSize%32!=0)throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`);if(typeof this._scoreThreshold!="number"||this._scoreThreshold<=0||this._scoreThreshold>=1)throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`)}get inputSize(){return this._inputSize}get scoreThreshold(){return this._scoreThreshold}};var Nw=class extends on{constructor(t){super("TinyYolov2");Iw(t),this._config=t}get config(){return this._config}get withClassScores(){return this.config.withClassScores||this.config.classes.length>1}get boxEncodingSize(){return 5+(this.withClassScores?this.config.classes.length:0)}runTinyYolov2(t,n){let a=Rr(t,n.conv0);return a=Dt(a,[2,2],[2,2],"same"),a=Rr(a,n.conv1),a=Dt(a,[2,2],[2,2],"same"),a=Rr(a,n.conv2),a=Dt(a,[2,2],[2,2],"same"),a=Rr(a,n.conv3),a=Dt(a,[2,2],[2,2],"same"),a=Rr(a,n.conv4),a=Dt(a,[2,2],[2,2],"same"),a=Rr(a,n.conv5),a=Dt(a,[2,2],[1,1],"same"),a=Rr(a,n.conv6),a=Rr(a,n.conv7),no(a,n.conv8,"valid",!1)}runMobilenet(t,n){let a=this.config.isFirstLayerConv2d?Au(no(t,n.conv0,"valid",!1)):Pr(t,n.conv0);return a=Dt(a,[2,2],[2,2],"same"),a=Pr(a,n.conv1),a=Dt(a,[2,2],[2,2],"same"),a=Pr(a,n.conv2),a=Dt(a,[2,2],[2,2],"same"),a=Pr(a,n.conv3),a=Dt(a,[2,2],[2,2],"same"),a=Pr(a,n.conv4),a=Dt(a,[2,2],[2,2],"same"),a=Pr(a,n.conv5),a=Dt(a,[2,2],[1,1],"same"),a=n.conv6?Pr(a,n.conv6):a,a=n.conv7?Pr(a,n.conv7):a,no(a,n.conv8,"valid",!1)}forwardInput(t,n){let{params:a}=this;if(!a)throw new Error("TinyYolov2 - load model before inference");return D(()=>{let r=pe(t.toBatchTensor(n,!1),"float32");return r=this.config.meanRgb?za(r,this.config.meanRgb):r,r=r.div(de(256)),this.config.withSeparableConvs?this.runMobilenet(r,a):this.runTinyYolov2(r,a)})}async forward(t,n){return this.forwardInput(await gt(t),n)}async detect(t,n={}){let{inputSize:a,scoreThreshold:r}=new lr(n),s=await gt(t),i=await this.forwardInput(s,a),o=D(()=>pt(i)[0].expandDims()),l={width:s.getInputWidth(0),height:s.getInputHeight(0)},c=await this.extractBoxes(o,s.getReshapedInputDimensions(0),r);i.dispose(),o.dispose();let u=c.map(g=>g.box),p=c.map(g=>g.score),d=c.map(g=>g.classScore),h=c.map(g=>this.config.classes[g.label]);return Zv(u.map(g=>g.rescale(a)),p,this.config.iouThreshold,!0).map(g=>new fs(p[g],d[g],h[g],u[g],l))}getDefaultModelName(){return""}extractParamsFromWeigthMap(t){return MC(t,this.config)}extractParams(t){let n=this.config.filterSizes||Nw.DEFAULT_FILTER_SIZES,a=n?n.length:void 0;if(a!==7&&a!==8&&a!==9)throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${a} filterSizes in config`);return DC(t,this.config,this.boxEncodingSize,n)}async extractBoxes(t,n,a){let{width:r,height:s}=n,i=Math.max(r,s),o=i/r,l=i/s,c=t.shape[1],u=this.config.anchors.length,[p,d,h]=D(()=>{let y=t.reshape([c,c,u,this.boxEncodingSize]),b=y.slice([0,0,0,0],[c,c,u,4]),x=y.slice([0,0,0,4],[c,c,u,1]),v=this.withClassScores?Sa(y.slice([0,0,0,5],[c,c,u,this.config.classes.length]),3):de(0);return[b,x,v]}),m=[],f=await d.array(),g=await p.array();for(let y=0;ya){let N=(b+Ep(g[y][b][x][0]))/c*o,T=(y+Ep(g[y][b][x][1]))/c*l,E=Math.exp(g[y][b][x][2])*this.config.anchors[x].x/c*o,A=Math.exp(g[y][b][x][3])*this.config.anchors[x].y/c*l,$=N-E/2,O=T-A/2,V={row:y,col:b,anchor:x},{classScore:W,label:H}=this.withClassScores?await this.extractPredictedClass(h,V):{classScore:1,label:0};m.push({box:new xu($,O,$+E,O+A),score:v,classScore:v*W,label:H,...V})}}return p.dispose(),d.dispose(),h.dispose(),m}async extractPredictedClass(t,n){let{row:a,col:r,anchor:s}=n,i=await t.array();return Array(this.config.classes.length).fill(0).map((o,l)=>i[a][r][s][l]).map((o,l)=>({classScore:o,label:l})).reduce((o,l)=>o.classScore>l.classScore?o:l)}},$u=Nw;$u.DEFAULT_FILTER_SIZES=[3,16,32,64,128,256,512,1024,1024];var Du=class extends $u{constructor(t=!0){let n={withSeparableConvs:t,iouThreshold:CC,classes:["face"],...t?{anchors:_C,meanRgb:FC}:{anchors:EC,withClassScores:!0}};super(n)}get withSeparableConvs(){return this.config.withSeparableConvs}get anchors(){return this.config.anchors}async locateFaces(t,n){return(await this.detect(t,n)).map(r=>new xt(r.score,r.relativeBox,{width:r.imageWidth,height:r.imageHeight}))}getDefaultModelName(){return this.withSeparableConvs?$C:AC}extractParamsFromWeigthMap(t){return super.extractParamsFromWeigthMap(t)}};function use(e,t=!0){let n=new Du(t);return n.extractWeights(e),n}var If=class extends lr{constructor(){super(...arguments);this._name="TinyFaceDetectorOptions"}};var va=class{async then(t){return t(await this.run())}async run(){throw new Error("ComposableTask - run is not implemented")}};async function io(e,t,n,a,r=({alignedRect:s})=>s){let s=e.map(l=>ao(l)?r(l):l.detection),i=a||(t instanceof z?await Nu(t,s):await Iu(t,s)),o=await n(i);return i.forEach(l=>l instanceof z&&l.dispose()),o}async function Mu(e,t,n,a,r){return io([e],t,async s=>n(s[0]),a,r)}var RC=.4,PC=[new De(1.603231,2.094468),new De(6.041143,7.080126),new De(2.882459,3.518061),new De(4.266906,5.178857),new De(9.041765,10.66308)],OC=[117.001,114.697,97.404];var Ru=class extends $u{constructor(){let t={withSeparableConvs:!0,iouThreshold:RC,classes:["face"],anchors:PC,meanRgb:OC,isFirstLayerConv2d:!0,filterSizes:[3,16,32,64,128,256,512]};super(t)}get anchors(){return this.config.anchors}async locateFaces(t,n){return(await this.detect(t,n)).map(r=>new xt(r.score,r.relativeBox,{width:r.imageWidth,height:r.imageHeight}))}getDefaultModelName(){return"tiny_face_detector_model"}extractParamsFromWeigthMap(t){return super.extractParamsFromWeigthMap(t)}};var tt={ssdMobilenetv1:new so,tinyFaceDetector:new Ru,tinyYolov2:new Du,faceLandmark68Net:new _u,faceLandmark68TinyNet:new yf,faceRecognitionNet:new Fu,faceExpressionNet:new mf,ageGenderNet:new gf},LC=(e,t)=>tt.ssdMobilenetv1.locateFaces(e,t),cse=(e,t)=>tt.tinyFaceDetector.locateFaces(e,t),pse=(e,t)=>tt.tinyYolov2.locateFaces(e,t),zC=e=>tt.faceLandmark68Net.detectLandmarks(e),dse=e=>tt.faceLandmark68TinyNet.detectLandmarks(e),hse=e=>tt.faceRecognitionNet.computeFaceDescriptor(e),mse=e=>tt.faceExpressionNet.predictExpressions(e),fse=e=>tt.ageGenderNet.predictAgeAndGender(e),BC=e=>tt.ssdMobilenetv1.load(e),gse=e=>tt.tinyFaceDetector.load(e),yse=e=>tt.tinyYolov2.load(e),bse=e=>tt.faceLandmark68Net.load(e),xse=e=>tt.faceLandmark68TinyNet.load(e),vse=e=>tt.faceRecognitionNet.load(e),wse=e=>tt.faceExpressionNet.load(e),kse=e=>tt.ageGenderNet.load(e),Ise=BC,Nse=LC,Tse=zC;var Tw=class extends va{constructor(t,n,a){super();this.parentTask=t;this.input=n;this.extractedFaces=a}},Lu=class extends Tw{async run(){let t=await this.parentTask,n=await io(t,this.input,async a=>Promise.all(a.map(r=>tt.faceExpressionNet.predictExpressions(r))),this.extractedFaces);return t.map((a,r)=>ff(a,n[r]))}withAgeAndGender(){return new Pu(this,this.input)}},zu=class extends Tw{async run(){let t=await this.parentTask;if(!t)return;let n=await Mu(t,this.input,a=>tt.faceExpressionNet.predictExpressions(a),this.extractedFaces);return ff(t,n)}withAgeAndGender(){return new Ou(this,this.input)}},uo=class extends Lu{withAgeAndGender(){return new oo(this,this.input)}withFaceDescriptors(){return new bs(this,this.input)}},co=class extends zu{withAgeAndGender(){return new lo(this,this.input)}withFaceDescriptor(){return new xs(this,this.input)}};var Sw=class extends va{constructor(t,n,a){super();this.parentTask=t;this.input=n;this.extractedFaces=a}},Pu=class extends Sw{async run(){let t=await this.parentTask,n=await io(t,this.input,async a=>Promise.all(a.map(r=>tt.ageGenderNet.predictAgeAndGender(r))),this.extractedFaces);return t.map((a,r)=>{let{age:s,gender:i,genderProbability:o}=n[r];return vf(wf(a,i,o),s)})}withFaceExpressions(){return new Lu(this,this.input)}},Ou=class extends Sw{async run(){let t=await this.parentTask;if(!t)return;let{age:n,gender:a,genderProbability:r}=await Mu(t,this.input,s=>tt.ageGenderNet.predictAgeAndGender(s),this.extractedFaces);return vf(wf(t,a,r),n)}withFaceExpressions(){return new zu(this,this.input)}},oo=class extends Pu{withFaceExpressions(){return new uo(this,this.input)}withFaceDescriptors(){return new bs(this,this.input)}},lo=class extends Ou{withFaceExpressions(){return new co(this,this.input)}withFaceDescriptor(){return new xs(this,this.input)}};var Nf=class extends va{constructor(t,n){super();this.parentTask=t;this.input=n}},bs=class extends Nf{async run(){let t=await this.parentTask;return(await io(t,this.input,a=>Promise.all(a.map(r=>tt.faceRecognitionNet.computeFaceDescriptor(r))),null,a=>a.landmarks.align(null,{useDlibAlignment:!0}))).map((a,r)=>xf(t[r],a))}withFaceExpressions(){return new uo(this,this.input)}withAgeAndGender(){return new oo(this,this.input)}},xs=class extends Nf{async run(){let t=await this.parentTask;if(!t)return;let n=await Mu(t,this.input,a=>tt.faceRecognitionNet.computeFaceDescriptor(a),null,a=>a.landmarks.align(null,{useDlibAlignment:!0}));return xf(t,n)}withFaceExpressions(){return new co(this,this.input)}withAgeAndGender(){return new lo(this,this.input)}};var Tf=class extends va{constructor(t,n,a){super();this.parentTask=t;this.input=n;this.useTinyLandmarkNet=a}get landmarkNet(){return this.useTinyLandmarkNet?tt.faceLandmark68TinyNet:tt.faceLandmark68Net}},Sf=class extends Tf{async run(){let t=await this.parentTask,n=t.map(s=>s.detection),a=this.input instanceof z?await Nu(this.input,n):await Iu(this.input,n),r=await Promise.all(a.map(s=>this.landmarkNet.detectLandmarks(s)));return a.forEach(s=>s instanceof z&&s.dispose()),t.map((s,i)=>Eu(s,r[i]))}withFaceExpressions(){return new uo(this,this.input)}withAgeAndGender(){return new oo(this,this.input)}withFaceDescriptors(){return new bs(this,this.input)}},Cf=class extends Tf{async run(){let t=await this.parentTask;if(!t)return;let{detection:n}=t,a=this.input instanceof z?await Nu(this.input,[n]):await Iu(this.input,[n]),r=await this.landmarkNet.detectLandmarks(a[0]);return a.forEach(s=>s instanceof z&&s.dispose()),Eu(t,r)}withFaceExpressions(){return new co(this,this.input)}withAgeAndGender(){return new lo(this,this.input)}withFaceDescriptor(){return new xs(this,this.input)}};var Ef=class extends va{constructor(t,n=new xa){super();this.input=t;this.options=n}},Bp=class extends Ef{async run(){let{input:t,options:n}=this,a=n instanceof If?r=>tt.tinyFaceDetector.locateFaces(r,n):n instanceof xa?r=>tt.ssdMobilenetv1.locateFaces(r,n):n instanceof lr?r=>tt.tinyYolov2.locateFaces(r,n):null;if(!a)throw new Error("detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options");return a(t)}runAndExtendWithFaceDetections(){return new Promise(async t=>{let n=await this.run();t(n.map(a=>Zi({},a)))})}withFaceLandmarks(t=!1){return new Sf(this.runAndExtendWithFaceDetections(),this.input,t)}withFaceExpressions(){return new Lu(this.runAndExtendWithFaceDetections(),this.input)}withAgeAndGender(){return new Pu(this.runAndExtendWithFaceDetections(),this.input)}},_f=class extends Ef{async run(){let t=await new Bp(this.input,this.options),n=t[0];return t.forEach(a=>{a.score>n.score&&(n=a)}),n}runAndExtendWithFaceDetection(){return new Promise(async t=>{let n=await this.run();t(n?Zi({},n):void 0)})}withFaceLandmarks(t=!1){return new Cf(this.runAndExtendWithFaceDetection(),this.input,t)}withFaceExpressions(){return new zu(this.runAndExtendWithFaceDetection(),this.input)}withAgeAndGender(){return new Ou(this.runAndExtendWithFaceDetection(),this.input)}};function Sse(e,t=new xa){return new _f(e,t)}function Ff(e,t=new xa){return new Bp(e,t)}async function WC(e,t){return Ff(e,new xa(t?{minConfidence:t}:{})).withFaceLandmarks().withFaceDescriptors()}async function Cse(e,t={}){return Ff(e,new lr(t)).withFaceLandmarks().withFaceDescriptors()}var Ese=WC;function Cw(e,t){if(e.length!==t.length)throw new Error("euclideanDistance: arr1.length !== arr2.length");let n=Array.from(e),a=Array.from(t);return Math.sqrt(n.map((r,s)=>r-a[s]).reduce((r,s)=>r+s**2,0))}var Af=class{constructor(t,n=.6){this._distanceThreshold=n;let a=Array.isArray(t)?t:[t];if(!a.length)throw new Error("FaceRecognizer.constructor - expected atleast one input");let r=1,s=()=>`person ${r++}`;this._labeledDescriptors=a.map(i=>{if(i instanceof $r)return i;if(i instanceof Float32Array)return new $r(s(),[i]);if(i.descriptor&&i.descriptor instanceof Float32Array)return new $r(s(),[i.descriptor]);throw new Error("FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>")})}get labeledDescriptors(){return this._labeledDescriptors}get distanceThreshold(){return this._distanceThreshold}computeMeanDistance(t,n){return n.map(a=>Cw(a,t)).reduce((a,r)=>a+r,0)/(n.length||1)}matchDescriptor(t){return this.labeledDescriptors.map(({descriptors:n,label:a})=>new _p(a,this.computeMeanDistance(t,n))).reduce((n,a)=>n.distancet.toJSON())}}static fromJSON(t){let n=t.labeledDescriptors.map(a=>$r.fromJSON(a));return new Af(n,t.distanceThreshold)}};function _se(e){let t=new Ru;return t.extractWeights(e),t}function VC(e,t){let{width:n,height:a}=new bn(t.width,t.height);if(n<=0||a<=0)throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({width:n,height:a})}`);if(Array.isArray(e))return e.map(r=>VC(r,{width:n,height:a}));if(ao(e)){let r=e.detection.forSize(n,a),s=e.unshiftedLandmarks.forSize(r.box.width,r.box.height);return Eu(Zi(e,r),s)}return ir(e)?Zi(e,e.detection.forSize(n,a)):e instanceof sa||e instanceof xt?e.forSize(n,a):e}var Fse=typeof process!="undefined",Ase=typeof navigator!="undefined"&&typeof navigator.userAgent!="undefined",$se={faceapi:iC,node:Fse,browser:Ase};export{gf as AgeGenderNet,xu as BoundingBox,lt as Box,va as ComposableTask,bs as ComputeAllFaceDescriptorsTask,Nf as ComputeFaceDescriptorsTaskBase,xs as ComputeSingleFaceDescriptorTask,Sf as DetectAllFaceLandmarksTask,Bp as DetectAllFacesTask,Tf as DetectFaceLandmarksTaskBase,Ef as DetectFacesTaskBase,Cf as DetectSingleFaceLandmarksTask,_f as DetectSingleFaceTask,bn as Dimensions,hw as FACE_EXPRESSION_LABELS,xt as FaceDetection,SC as FaceDetectionNet,mf as FaceExpressionNet,ys as FaceExpressions,_u as FaceLandmark68Net,yf as FaceLandmark68TinyNet,mC as FaceLandmarkNet,sa as FaceLandmarks,Z2 as FaceLandmarks5,wu as FaceLandmarks68,_p as FaceMatch,Af as FaceMatcher,Fu as FaceRecognitionNet,Mr as Gender,Fp as LabeledBox,$r as LabeledFaceDescriptors,Dr as NetInput,on as NeuralNetwork,fs as ObjectDetection,De as Point,Q2 as PredictedBox,vu as Rect,so as SsdMobilenetv1,xa as SsdMobilenetv1Options,Ru as TinyFaceDetector,If as TinyFaceDetectorOptions,Du as TinyYolov2,lr as TinyYolov2Options,Ese as allFaces,WC as allFacesSsdMobilenetv1,Cse as allFacesTinyYolov2,ow as awaitMediaLoaded,lw as bufferToImage,hse as computeFaceDescriptor,ku as createCanvas,Dp as createCanvasFromMedia,ise as createFaceDetectionNet,Xre as createFaceRecognitionNet,TC as createSsdMobilenetv1,_se as createTinyFaceDetector,use as createTinyYolov2,Ff as detectAllFaces,zC as detectFaceLandmarks,dse as detectFaceLandmarksTiny,Tse as detectLandmarks,Sse as detectSingleFace,yw as draw,st as env,Cw as euclideanDistance,vf as extendWithAge,xf as extendWithFaceDescriptor,Zi as extendWithFaceDetection,ff as extendWithFaceExpressions,Eu as extendWithFaceLandmarks,wf as extendWithGender,Nu as extractFaceTensors,Iu as extractFaces,zre as fetchImage,pw as fetchJson,Bre as fetchNetWeights,to as fetchOrThrow,En as getContext2dOrThrow,eo as getMediaDimensions,uw as imageTensorToCanvas,cw as imageToSquare,Fre as inverseSigmoid,Yv as iou,rf as isMediaElement,$p as isMediaLoaded,Yre as isWithAge,ir as isWithFaceDetection,mw as isWithFaceExpressions,ao as isWithFaceLandmarks,Jre as isWithGender,kse as loadAgeGenderModel,Ise as loadFaceDetectionModel,wse as loadFaceExpressionModel,bse as loadFaceLandmarkModel,xse as loadFaceLandmarkTinyModel,vse as loadFaceRecognitionModel,BC as loadSsdMobilenetv1Model,gse as loadTinyFaceDetectorModel,yse as loadTinyYolov2Model,dw as loadWeightMap,Nse as locateFaces,Wre as matchDimensions,Jv as minBbox,tt as nets,Zv as nonMaxSuppression,za as normalize,Qv as padToSquare,fse as predictAgeAndGender,mse as recognizeFaceExpressions,VC as resizeResults,Qi as resolveInput,_re as shuffleArray,Ep as sigmoid,LC as ssdMobilenetv1,zg as tf,cse as tinyFaceDetector,pse as tinyYolov2,gt as toNetInput,jv as utils,Iw as validateConfig,$se as version}; /** * @license * Copyright 2017 Google LLC. All Rights Reserved. diff --git a/dist/face-api.esm.js.map b/dist/face-api.esm.js.map index 8a2167c..5e2d00d 100644 --- a/dist/face-api.esm.js.map +++ b/dist/face-api.esm.js.map @@ -2,6 +2,6 @@ "version": 3, "sources": ["../src/env/isNodejs.ts", "empty:/home/vlado/dev/face-api/node_modules/node-fetch/browser.js", "../node_modules/seedrandom/lib/alea.js", "../node_modules/seedrandom/lib/xor128.js", "../node_modules/seedrandom/lib/xorwow.js", "../node_modules/seedrandom/lib/xorshift7.js", "../node_modules/seedrandom/lib/xor4096.js", "../node_modules/seedrandom/lib/tychei.js", "empty:crypto", "../node_modules/seedrandom/seedrandom.js", "../node_modules/seedrandom/index.js", "empty:/home/vlado/dev/face-api/node_modules/string_decoder/lib/string_decoder.js", "empty:path", "empty:worker_threads", "empty:perf_hooks", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.js", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js", "../node_modules/@tensorflow/tfjs-core/src/backends/backend.ts", "../node_modules/@tensorflow/tfjs-core/src/util_base.ts", "../node_modules/@tensorflow/tfjs-core/src/environment.ts", "../node_modules/@tensorflow/tfjs-core/src/global_util.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_names.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/profiler.ts", "../node_modules/@tensorflow/tfjs-core/src/tape.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_format.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/types.ts", "../node_modules/@tensorflow/tfjs-core/src/engine.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/flags.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util_env.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/operation.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/complex.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/io/types.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/io/router_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/model_management.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_browser.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/buffer.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clone.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/print.ts", "../node_modules/@tensorflow/tfjs-core/src/base_side_effects.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/io/browser_files.ts", "../node_modules/@tensorflow/tfjs-core/src/io/progress.ts", "../node_modules/@tensorflow/tfjs-core/src/io/weights_loader.ts", "../node_modules/@tensorflow/tfjs-core/src/io/http.ts", "../node_modules/@tensorflow/tfjs-core/src/io/passthrough.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/confusion_matrix.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/version.ts", "../node_modules/@tensorflow/tfjs-core/src/globals.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add_n.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/basic_lstm_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dense_bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/diag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/eye.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fill.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/imag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linspace.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/axis_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_with_argmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moments.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multi_rnn_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multinomial.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/outer_product.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_gamma.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_uniform.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/range.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/real.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/setdiff1d_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor5d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor6d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/truncated_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/variable.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/where_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/boolean_mask.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/compare.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/binary_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moving_average.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/in_top_k.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hamming_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hann_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/frame.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/stft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/crop_and_resize.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/flip_left_right.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/rotate_with_offset.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/nonmax_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/band_part.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/gram_schmidt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/qr.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/loss_ops_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/compute_weighted_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/absolute_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/cosine_distance.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/hinge_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/huber_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/log_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/mean_squared_error.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/sigmoid_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/softmax_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ops.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adadelta_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adagrad_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adam_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adamax_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/sgd_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/momentum_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/rmsprop_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer_constructors.ts", "../node_modules/@tensorflow/tfjs-core/src/train.ts", "../node_modules/@tensorflow/tfjs-core/src/browser_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reduce_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rotate_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/array_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf_util.ts", "../node_modules/@tensorflow/tfjs-core/src/log.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/complex_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Abs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Add_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AddN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchMatMul_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchToSpaceND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BroadcastTo_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cast_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Ceil_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ClipByValue_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ComplexAbs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Concat_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2DBackpropInput_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cumsum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/DepthwiseConv2dNative_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Dilation2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Elu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Erf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Exp_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ExpandDims_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Expm1_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Floor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FloorDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FusedBatchNorm_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GatherV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GreaterEqual_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Identity_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsFinite_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsInf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsNan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LeakyRelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log1p_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LogSoftmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LRN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/min_max_grad_util.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Max_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Maximum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mean_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Min_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Minimum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MirrorPad_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mod_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Multiply_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Neg_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OneHot_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OnesLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/PadV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pow_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Prelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/RealDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reciprocal_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu6_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reshape_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeBilinear_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeNearestNeighbor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reverse_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Round_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Rsqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Select_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Selu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sigmoid_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sign_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Slice_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softplus_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SpaceToBatchND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SplitV_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Square_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SquaredDifference_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Step_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sub_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tile_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Transpose_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Unpack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/UnsortedSegmentSum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ZerosLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/register_all_gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_type.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as3d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as4d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as5d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2D_deprecated.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/flatten.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape_as.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_bool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_float.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_int.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/register_all_chained_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/index.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/errors.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/initializer_config.ts", "../node_modules/@tensorflow/tfjs-layers/src/initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/state.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/types_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/variable_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/topology.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/input_layer.ts", "../node_modules/@tensorflow/tfjs-layers/src/logs.ts", "../node_modules/@tensorflow/tfjs-layers/src/base_callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/serialization.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/optimizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/user_defined_metadata.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/layer_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/serialization_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/version.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/executor.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/container.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_dataset.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_tensors.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training.ts", "../node_modules/@tensorflow/tfjs-layers/src/models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports.ts", "../node_modules/@tensorflow/tfjs-layers/src/activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/advanced_activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/conv_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_depthwise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/core.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/embeddings.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/noise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/normalization.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/pooling.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/wrappers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/index.ts", "../node_modules/@tensorflow/tfjs-converter/src/data/compiled_api.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/register.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_mapper.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/node_value_impl.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/arithmetic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/basic_math_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_array.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_list.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/control_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/convolution_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/creation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/dynamic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/evaluation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/hash_table_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/image_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/logical_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/matrices_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/normalization_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/reduction_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/slice_join_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/spectral_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/transformation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/execution_context.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/model_analysis.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/resource_manager.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_model.ts", "../node_modules/@tensorflow/tfjs-converter/src/version.ts", "../node_modules/@tensorflow/tfjs-converter/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_map.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_clone.ts", "../node_modules/@tensorflow/tfjs-data/src/util/ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/util/growing_ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/text_line_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/csv_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/microphone_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/webcam_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/datasource.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/string_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/byte_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/file_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/url_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/source_util.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/file_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/url_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/readers.ts", "../node_modules/@tensorflow/tfjs-data/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/cpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/zeros_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fused_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/pool_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Clip.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fft_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Scatter_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flags_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/glsl_version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_context.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_math.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/shared.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/packing_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reshape_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/texture_manager.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unpack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/backend_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mulmat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_complex_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mean_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reduce_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reduce.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/arg_min_max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pool_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/avg_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/int.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/complex_abs_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/im2col_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/crop_and_resize_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/cumsum_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/depth_to_space_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_packed_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/diag_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/dilation_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fft_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fill_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flip_left_right_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_nd_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_grad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/max_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/multinomial_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/onehot_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/rotate_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/scatter_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/select_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/strided_slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tile_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/segment_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/index.ts", "../node_modules/@tensorflow/tfjs/src/version.ts", "../node_modules/@tensorflow/tfjs/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/types.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/unary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/binary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedBatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppression_util.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/flags_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.worker.js", "../node_modules/@tensorflow/tfjs-backend-wasm/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/index.ts", "../src/draw/index.ts", "../src/draw/drawContour.ts", "../src/utils/index.ts", "../src/classes/Dimensions.ts", "../src/classes/Point.ts", "../src/classes/Box.ts", "../src/classes/BoundingBox.ts", "../src/classes/ObjectDetection.ts", "../src/classes/FaceDetection.ts", "../src/ops/iou.ts", "../src/ops/minBbox.ts", "../src/ops/nonMaxSuppression.ts", "../src/ops/normalize.ts", "../src/ops/padToSquare.ts", "../src/ops/shuffleArray.ts", "../src/ops/index.ts", "../src/classes/Rect.ts", "../src/classes/FaceLandmarks.ts", "../src/classes/FaceLandmarks5.ts", "../src/classes/FaceLandmarks68.ts", "../src/classes/FaceMatch.ts", "../src/classes/LabeledBox.ts", "../src/classes/LabeledFaceDescriptors.ts", "../src/classes/PredictedBox.ts", "../src/factories/WithFaceDetection.ts", "../src/env/createBrowserEnv.ts", "../src/env/createFileSystem.ts", "../src/env/createNodejsEnv.ts", "../src/env/isBrowser.ts", "../src/env/index.ts", "../src/dom/resolveInput.ts", "../src/dom/getContext2dOrThrow.ts", "../src/draw/DrawTextField.ts", "../src/draw/DrawBox.ts", "../src/draw/drawDetections.ts", "../src/dom/isMediaLoaded.ts", "../src/dom/awaitMediaLoaded.ts", "../src/dom/bufferToImage.ts", "../src/dom/getMediaDimensions.ts", "../src/dom/createCanvas.ts", "../src/dom/imageTensorToCanvas.ts", "../src/dom/isMediaElement.ts", "../src/dom/imageToSquare.ts", "../src/dom/NetInput.ts", "../src/dom/toNetInput.ts", "../src/dom/extractFaces.ts", "../src/dom/extractFaceTensors.ts", "../src/dom/fetchOrThrow.ts", "../src/dom/fetchImage.ts", "../src/dom/fetchJson.ts", "../src/dom/fetchNetWeights.ts", "../src/common/getModelUris.ts", "../src/dom/loadWeightMap.ts", "../src/dom/matchDimensions.ts", "../src/NeuralNetwork.ts", "../src/common/depthwiseSeparableConv.ts", "../src/faceFeatureExtractor/denseBlock.ts", "../src/common/convLayer.ts", "../src/common/disposeUnusedWeightTensors.ts", "../src/common/extractConvParamsFactory.ts", "../src/common/extractFCParamsFactory.ts", "../src/common/types.ts", "../src/common/extractSeparableConvParamsFactory.ts", "../src/common/extractWeightEntryFactory.ts", "../src/common/extractWeightsFactory.ts", "../src/faceFeatureExtractor/extractorsFactory.ts", "../src/faceFeatureExtractor/extractParams.ts", "../src/common/loadConvParamsFactory.ts", "../src/faceFeatureExtractor/loadParamsFactory.ts", "../src/faceFeatureExtractor/extractParamsFromWeigthMap.ts", "../src/faceFeatureExtractor/FaceFeatureExtractor.ts", "../src/common/fullyConnectedLayer.ts", "../src/faceProcessor/extractParams.ts", "../src/faceProcessor/extractParamsFromWeigthMap.ts", "../src/faceProcessor/util.ts", "../src/faceProcessor/FaceProcessor.ts", "../src/faceExpressionNet/FaceExpressions.ts", "../src/faceExpressionNet/FaceExpressionNet.ts", "../src/factories/WithFaceExpressions.ts", "../src/draw/drawFaceExpressions.ts", "../src/factories/WithFaceLandmarks.ts", "../src/draw/DrawFaceLandmarks.ts", "../src/xception/extractParams.ts", "../src/xception/extractParamsFromWeigthMap.ts", "../src/xception/TinyXception.ts", "../src/ageGenderNet/extractParams.ts", "../src/ageGenderNet/extractParamsFromWeigthMap.ts", "../src/ageGenderNet/types.ts", "../src/ageGenderNet/AgeGenderNet.ts", "../src/faceLandmarkNet/FaceLandmark68NetBase.ts", "../src/faceLandmarkNet/FaceLandmark68Net.ts", "../src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts", "../src/faceFeatureExtractor/extractParamsTiny.ts", "../src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts", "../src/faceLandmarkNet/FaceLandmark68TinyNet.ts", "../src/faceLandmarkNet/index.ts", "../src/faceRecognitionNet/scaleLayer.ts", "../src/faceRecognitionNet/convLayer.ts", "../src/faceRecognitionNet/extractParams.ts", "../src/faceRecognitionNet/extractParamsFromWeigthMap.ts", "../src/faceRecognitionNet/residualLayer.ts", "../src/faceRecognitionNet/FaceRecognitionNet.ts", "../src/faceRecognitionNet/index.ts", "../src/factories/WithFaceDescriptor.ts", "../src/factories/WithAge.ts", "../src/factories/WithGender.ts", "../src/ssdMobilenetv1/extractParams.ts", "../src/ssdMobilenetv1/extractParamsFromWeigthMap.ts", "../src/ssdMobilenetv1/pointwiseConvLayer.ts", "../src/ssdMobilenetv1/mobileNetV1.ts", "../src/ssdMobilenetv1/nonMaxSuppression.ts", "../src/ssdMobilenetv1/outputLayer.ts", "../src/ssdMobilenetv1/boxPredictionLayer.ts", "../src/ssdMobilenetv1/predictionLayer.ts", "../src/ssdMobilenetv1/SsdMobilenetv1Options.ts", "../src/ssdMobilenetv1/SsdMobilenetv1.ts", "../src/ssdMobilenetv1/index.ts", "../src/tinyYolov2/const.ts", "../src/tinyYolov2/config.ts", "../src/tinyYolov2/leaky.ts", "../src/tinyYolov2/convWithBatchNorm.ts", "../src/tinyYolov2/depthwiseSeparableConv.ts", "../src/tinyYolov2/extractParams.ts", "../src/tinyYolov2/extractParamsFromWeigthMap.ts", "../src/tinyYolov2/TinyYolov2Options.ts", "../src/tinyYolov2/TinyYolov2Base.ts", "../src/tinyYolov2/TinyYolov2.ts", "../src/tinyYolov2/index.ts", "../src/tinyFaceDetector/TinyFaceDetectorOptions.ts", "../src/globalApi/ComposableTask.ts", "../src/globalApi/extractFacesAndComputeResults.ts", "../src/tinyFaceDetector/const.ts", "../src/tinyFaceDetector/TinyFaceDetector.ts", "../src/globalApi/nets.ts", "../src/globalApi/PredictFaceExpressionsTask.ts", "../src/globalApi/PredictAgeAndGenderTask.ts", "../src/globalApi/ComputeFaceDescriptorsTasks.ts", "../src/globalApi/DetectFaceLandmarksTasks.ts", "../src/globalApi/DetectFacesTasks.ts", "../src/globalApi/detectFaces.ts", "../src/globalApi/allFaces.ts", "../src/euclideanDistance.ts", "../src/globalApi/FaceMatcher.ts", "../src/tinyFaceDetector/index.ts", "../src/resizeResults.ts", "../src/index.ts"], "sourcesContent": ["export function isNodejs(): boolean {\n return typeof global === 'object'\n && typeof require === 'function'\n && typeof module !== 'undefined'\n // issues with gatsby.js: module.exports is undefined\n // && !!module.exports\n && typeof process !== 'undefined' && !!process.version;\n}\n", "", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", "", "", "\nvar WasmBackendModuleThreadedSimd = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModuleThreadedSimd) {\n WasmBackendModuleThreadedSimd = WasmBackendModuleThreadedSimd || {};\n\nfunction GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd!==\"undefined\"?WasmBackendModuleThreadedSimd:{};var _scriptDir=undefined;var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module[\"ENVIRONMENT_IS_PTHREAD\"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module[\"buffer\"];DYNAMIC_BASE=Module[\"DYNAMIC_BASE\"];DYNAMICTOP_PTR=Module[\"DYNAMICTOP_PTR\"]}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"};var nodeWorkerThreads;try{nodeWorkerThreads=require(\"worker_threads\")}catch(e){console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(ENVIRONMENT_IS_NODE){read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}}else{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance===\"undefined\"){performance=require(\"perf_hooks\").performance}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":169,\"maximum\":169+0,\"element\":\"anyfunc\"});var wasmModule;var threadInfoStruct=0;var selfThreadId=0;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256464,STACKTOP=STACK_BASE,STACK_MAX=13584,DYNAMIC_BASE=5256464,DYNAMICTOP_PTR=12656;if(ENVIRONMENT_IS_PTHREAD){}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module[\"wasmMemory\"];buffer=Module[\"buffer\"]}else{if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,\"maximum\":2147483648/WASM_PAGE_SIZE,\"shared\":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err(\"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\");if(ENVIRONMENT_IS_NODE){console.log(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)\")}throw Error(\"bad memory\")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);if(!ENVIRONMENT_IS_PTHREAD){GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,\"addRunDependency cannot be used in a pthread worker\");runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error(\"Pthread aborting at \"+(new Error).stack);what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm-threaded-simd.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency(\"wasm-instantiate\")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency(\"wasm-instantiate\")}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0;var __pthread_is_main_runtime_thread=0;var __pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0;isMainBrowserThread=isMainBrowserThread|0;isMainRuntimeThread=isMainRuntimeThread|0;__pthread_ptr=pthreadPtr;__pthread_is_main_browser_thread=isMainBrowserThread;__pthread_is_main_runtime_thread=isMainRuntimeThread}Module[\"__register_pthread_ptr\"]=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var __main_thread_futex_wait_address=13568;function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw\"Atomics.notify returned an unexpected value \"+ret}Module[\"_emscripten_futex_wake\"]=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _kill_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _kill_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cancel_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cancel_thread!\";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({\"cmd\":\"cancel\"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cleanup_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cleanup_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){var pthreadPoolSize=8;for(var i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var tlsMemory=13056;for(var i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){while(PThread.exitHandlers.length>0){PThread.exitHandlers.pop()()}PThread.exitHandlers=null}if(ENVIRONMENT_IS_PTHREAD&&threadInfoStruct)___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__register_pthread_ptr(0,0,0);threadInfoStruct=0;if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exit\"})}}},threadCancel:function(){PThread.runExitHandlers();Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1);Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1);_emscripten_futex_wake(threadInfoStruct+0,2147483647);threadInfoStruct=selfThreadId=0;__register_pthread_ptr(0,0,0);postMessage({\"cmd\":\"cancelDone\"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e[\"data\"];var cmd=d[\"cmd\"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d[\"targetThread\"]&&d[\"targetThread\"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d[\"transferList\"])}else{console.error('Internal error! Worker sent a message \"'+cmd+'\" to target pthread '+d[\"targetThread\"]+\", but that thread no longer exists!\")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd===\"processQueuedMainThreadWork\"){_emscripten_main_thread_process_queued_calls()}else if(cmd===\"spawnThread\"){__spawn_thread(e.data)}else if(cmd===\"cleanupThread\"){__cleanup_thread(d[\"thread\"])}else if(cmd===\"killThread\"){__kill_thread(d[\"thread\"])}else if(cmd===\"cancelThread\"){__cancel_thread(d[\"thread\"])}else if(cmd===\"loaded\"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd===\"print\"){out(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"printErr\"){err(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"alert\"){alert(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"exit\"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd===\"cancelDone\"){PThread.returnWorkerToPool(worker)}else if(cmd===\"objectTransfer\"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target===\"setimmediate\"){worker.postMessage(e.data)}else{err(\"worker sent an unknown command \"+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err(\"pthread sent an error! \"+e.filename+\":\"+e.lineno+\": \"+e.message)};if(ENVIRONMENT_IS_NODE){worker.on(\"message\",function(data){worker.onmessage({data:data})});worker.on(\"error\",function(data){worker.onerror(data)});worker.on(\"exit\",function(data){console.log(\"worker exited - TODO: update the worker queue?\")})}worker.postMessage({\"cmd\":\"load\",\"urlOrBlob\":Module[\"mainScriptUrlOrBlob\"]||_scriptDir,\"wasmMemory\":wasmMemory,\"wasmModule\":wasmModule,\"DYNAMIC_BASE\":DYNAMIC_BASE,\"DYNAMICTOP_PTR\":DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile(\"tfjs-backend-wasm-threaded-simd.worker.js\");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()>2]=value;return value}function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func,arg);__ATEXIT__.unshift({func:func,arg:arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({\"cmd\":\"processQueuedMainThreadWork\"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({\"targetThread\":targetThreadId,\"cmd\":\"processThreadQueue\"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({\"cmd\":\"processThreadQueue\"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0;newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret===\"timed-out\")return-73;if(ret===\"not-equal\")return-6;if(ret===\"ok\")return 0;throw\"Atomics.wait returned an unexpected value \"+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now();var tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);var ourWaitAddress=addr;while(addr==ourWaitAddress){tNow=performance.now();if(tNow>tEnd){return-73}_emscripten_main_thread_process_queued_calls();addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator[\"hardwareConcurrency\"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var args=stackAlloc(numCallArgs*8);var b=args>>3;for(var i=0;i>3]);buf+=8}else{buf=buf+3&~3;args.push(GROWABLE_HEAP_I32()[buf>>2]);buf+=4}}return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize){return false}var PAGE_MULTIPLE=65536;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}var minHeapSize=16777216;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:false,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return\"\";if(target==window)return\"#window\";if(target==screen)return\"#screen\";return target&&target.nodeName?target.nodeName:\"\"},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):\"\";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!==\"undefined\"?document:0,typeof window!==\"undefined\"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!==\"undefined\"?document.querySelector(target):undefined);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0;name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=function(index,divisor){ext[\"vertexAttribDivisorANGLE\"](index,divisor)};ctx[\"drawArraysInstanced\"]=function(mode,first,count,primcount){ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount)};ctx[\"drawElementsInstanced\"]=function(mode,count,type,indices,primcount){ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=function(){return ext[\"createVertexArrayOES\"]()};ctx[\"deleteVertexArray\"]=function(vao){ext[\"deleteVertexArrayOES\"](vao)};ctx[\"bindVertexArray\"]=function(vao){ext[\"bindVertexArrayOES\"](vao)};ctx[\"isVertexArray\"]=function(vao){return ext[\"isVertexArrayOES\"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=function(n,bufs){ext[\"drawBuffersWEBGL\"](n,bufs)};return 1}}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE);for(var i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault===\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents===\"object\")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\");var automaticallyEnabledExtensions=[\"OES_texture_float\",\"OES_texture_half_float\",\"OES_standard_derivatives\",\"OES_vertex_array_object\",\"WEBGL_compressed_texture_s3tc\",\"WEBGL_depth_texture\",\"OES_element_index_uint\",\"EXT_texture_filter_anisotropic\",\"EXT_frag_depth\",\"WEBGL_draw_buffers\",\"ANGLE_instanced_arrays\",\"OES_texture_float_linear\",\"OES_texture_half_float_linear\",\"EXT_blend_minmax\",\"EXT_shader_texture_lod\",\"EXT_texture_norm16\",\"WEBGL_compressed_texture_pvrtc\",\"EXT_color_buffer_half_float\",\"WEBGL_color_buffer_float\",\"EXT_sRGB\",\"WEBGL_compressed_texture_etc1\",\"EXT_disjoint_timer_query\",\"WEBGL_compressed_texture_etc\",\"WEBGL_compressed_texture_astc\",\"EXT_color_buffer_float\",\"WEBGL_compressed_texture_s3tc_srgb\",\"EXT_disjoint_timer_query_webgl2\",\"WEBKIT_WEBGL_compressed_texture_pvrtc\"];var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(automaticallyEnabledExtensions.indexOf(ext)!=-1){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>2;contextAttributes[\"alpha\"]=!!GROWABLE_HEAP_I32()[a+(0>>2)];contextAttributes[\"depth\"]=!!GROWABLE_HEAP_I32()[a+(4>>2)];contextAttributes[\"stencil\"]=!!GROWABLE_HEAP_I32()[a+(8>>2)];contextAttributes[\"antialias\"]=!!GROWABLE_HEAP_I32()[a+(12>>2)];contextAttributes[\"premultipliedAlpha\"]=!!GROWABLE_HEAP_I32()[a+(16>>2)];contextAttributes[\"preserveDrawingBuffer\"]=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes[\"powerPreference\"]=__emscripten_webgl_power_preferences[powerPreference];contextAttributes[\"failIfMajorPerformanceCaveat\"]=!!GROWABLE_HEAP_I32()[a+(28>>2)];contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)];contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)];contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)];contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)];contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)];contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas){return-4}if(contextAttributes.explicitSwapControl){return-1}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,fd);return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _pthread_cleanup_pop(execute){var routine=PThread.exitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){if(PThread.exitHandlers===null){PThread.exitHandlers=[]}PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _spawn_thread() can only ever be called from main application thread!\";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw\"Internal error!\";if(!threadParams.pthread_ptr)throw\"Internal error, no pthread ptr!\";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct);Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42);Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale);worker.pthread=pthread;var msg={\"cmd\":\"run\",\"start_routine\":threadParams.startRoutine,\"arg\":threadParams.arg,\"threadInfoStruct\":threadParams.pthread_ptr,\"selfThreadId\":threadParams.pthread_ptr,\"parentThreadId\":threadParams.parent_pthread_ptr,\"stackBase\":threadParams.stackBase,\"stackSize\":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread){err(\"pthread_getschedparam called with a null thread pointer!\");return ERRNO_CODES.ESRCH}var self=GROWABLE_HEAP_I32()[thread+12>>2];if(self!==thread){err(\"pthread_getschedparam attempted on thread \"+thread+\", which does not point to a valid thread, or does not exist anymore!\");return ERRNO_CODES.ESRCH}var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2);var schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);if(policy)GROWABLE_HEAP_I32()[policy>>2]=schedPolicy;if(schedparam)GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio;return 0}function _pthread_self(){return __pthread_ptr|0}Module[\"_pthread_self\"]=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer===\"undefined\"){err(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\");return 6}if(!pthread_ptr){err(\"pthread_create called with a null thread pointer!\");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;var schedPolicy=0;var schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=81920;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];var prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2];var parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24);schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2];GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy;GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else{schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(232);for(var i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct;GROWABLE_HEAP_I32()[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,schedPolicy:schedPolicy,schedPrio:schedPrio,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,parent_pthread_ptr:_pthread_self(),arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd=\"spawnThread\";postMessage(threadParams,transferList)}else{__spawn_thread(threadParams)}return 0}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();else PThread.initWorker();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf];var asmLibraryArg={\"e\":___assert_fail,\"r\":___call_main,\"w\":__emscripten_notify_thread_queue,\"a\":_abort,\"l\":_emscripten_conditional_set_current_thread_status,\"d\":_emscripten_futex_wait,\"c\":_emscripten_futex_wake,\"h\":_emscripten_get_now,\"g\":_emscripten_is_main_browser_thread,\"x\":_emscripten_is_main_runtime_thread,\"q\":_emscripten_memcpy_big,\"B\":_emscripten_num_logical_cores,\"t\":_emscripten_receive_on_main_thread_js,\"A\":_emscripten_resize_heap,\"u\":_emscripten_set_canvas_element_size,\"k\":_emscripten_set_current_thread_status,\"s\":_emscripten_set_thread_name,\"v\":_emscripten_webgl_create_context,\"m\":_fd_close,\"o\":_fd_seek,\"i\":_fd_write,\"p\":initPthreadsJS,\"memory\":wasmMemory||Module[\"wasmMemory\"],\"y\":_pthread_cleanup_pop,\"z\":_pthread_cleanup_push,\"j\":_pthread_create,\"b\":_pthread_self,\"f\":_roundf,\"n\":_sysconf,\"table\":wasmTable};var asm=createWasm();Module[\"asm\"]=asm;var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"F\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _Round=Module[\"_Round\"]=function(){return(_Round=Module[\"_Round\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=function(){return(_emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var ___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=function(){return(___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var _memalign=Module[\"_memalign\"]=function(){return(_memalign=Module[\"_memalign\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=function(){return(___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=function(){return(_emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=function(){return(_emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=function(){return(_emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var _emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=function(){return(_emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};var _emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=function(){return(_emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=Module[\"asm\"][\"ib\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=function(){return(_emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=Module[\"asm\"][\"jb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=function(){return(_emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=Module[\"asm\"][\"kb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=function(){return(_emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=Module[\"asm\"][\"lb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=function(){return(_emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=Module[\"asm\"][\"mb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=Module[\"asm\"][\"nb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=function(){return(_emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=Module[\"asm\"][\"ob\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=Module[\"asm\"][\"pb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=function(){return(_emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=Module[\"asm\"][\"qb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=function(){return(_emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=Module[\"asm\"][\"rb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=function(){return(_emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=Module[\"asm\"][\"sb\"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=Module[\"asm\"][\"tb\"]).apply(null,arguments)};var _emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=function(){return(_emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=Module[\"asm\"][\"ub\"]).apply(null,arguments)};var _emscripten_tls_init=Module[\"_emscripten_tls_init\"]=function(){return(_emscripten_tls_init=Module[\"_emscripten_tls_init\"]=Module[\"asm\"][\"vb\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"wb\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"xb\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"yb\"]).apply(null,arguments)};var dynCall_vi=Module[\"dynCall_vi\"]=function(){return(dynCall_vi=Module[\"dynCall_vi\"]=Module[\"asm\"][\"zb\"]).apply(null,arguments)};var dynCall_v=Module[\"dynCall_v\"]=function(){return(dynCall_v=Module[\"dynCall_v\"]=Module[\"asm\"][\"Ab\"]).apply(null,arguments)};var dynCall_ii=Module[\"dynCall_ii\"]=function(){return(dynCall_ii=Module[\"dynCall_ii\"]=Module[\"asm\"][\"Bb\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;Module[\"PThread\"]=PThread;Module[\"PThread\"]=PThread;Module[\"_pthread_self\"]=_pthread_self;Module[\"wasmMemory\"]=wasmMemory;Module[\"ExitStatus\"]=ExitStatus;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}if(!ENVIRONMENT_IS_PTHREAD)noExitRuntime=true;if(!ENVIRONMENT_IS_PTHREAD)run();\n\n\n return WasmBackendModuleThreadedSimd\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModuleThreadedSimd;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModuleThreadedSimd; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModuleThreadedSimd\"] = WasmBackendModuleThreadedSimd;\n ", "\nvar WasmBackendModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModule) {\n WasmBackendModule = WasmBackendModule || {};\n\nvar Module=typeof WasmBackendModule!==\"undefined\"?WasmBackendModule:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":151,\"maximum\":151+0,\"element\":\"anyfunc\"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"env\":asmLibraryArg,\"wasi_snapshot_preview1\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=exports[\"memory\"];updateGlobalBufferAndViews(wasmMemory.buffer);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}var asmLibraryArg={\"emscripten_notify_memory_growth\":_emscripten_notify_memory_growth,\"fd_close\":_fd_close,\"fd_seek\":_fd_seek,\"fd_write\":_fd_write,\"proc_exit\":_proc_exit,\"roundf\":_roundf};var asm=createWasm();Module[\"asm\"]=asm;var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"init\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"register_tensor\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"dispose_data\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"dispose\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"Abs\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"Add\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"AddN\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"ArgMax\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"AvgPool\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"BatchMatMul\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"ClipByValue\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"Conv2D\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"Conv2DBackpropInput\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Cos\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"CropAndResize\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"Cumsum\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"DepthToSpace\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"DepthwiseConv2dNative\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"Equal\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"Exp\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"FlipLeftRight\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Floor\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"FloorDiv\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"FusedBatchNorm\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"FusedConv2D\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"FusedDepthwiseConv2D\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"Gather\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"GatherNd\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"Greater\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"GreaterEqual\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"LeakyRelu\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"Less\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"LessEqual\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"Log\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"LogicalAnd\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"Max\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"MaxPool\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"Maximum\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"Mean\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"Min\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"Minimum\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"Multiply\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"Neg\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"NonMaxSuppressionV3\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"NonMaxSuppressionV4\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"NonMaxSuppressionV5\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"NotEqual\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"OneHot\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"PadV2\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"Pow\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"Prelu\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Prod\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"RealDiv\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Relu\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Relu6\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"ResizeBilinear\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Reverse\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"RotateWithOffset\"]).apply(null,arguments)};var _Round=Module[\"_Round\"]=function(){return(_Round=Module[\"_Round\"]=Module[\"asm\"][\"Round\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Rsqrt\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"ScatterNd\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"SelectV2\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Sigmoid\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Sin\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Softmax\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Sqrt\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Square\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"SquaredDifference\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"StridedSlice\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Sub\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sum\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Tanh\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Tile\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"TopK\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Transpose\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"_FusedMatMul\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"malloc\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"free\"]).apply(null,arguments)};var __start=Module[\"__start\"]=function(){return(__start=Module[\"__start\"]=Module[\"asm\"][\"_start\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"stackSave\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"stackAlloc\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"stackRestore\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module[\"__start\"];try{entryFunction();var ret=0;exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e==\"unwind\"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e===\"object\"&&e.stack){toLog=[e,e.stack]}err(\"exception thrown: \"+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(shouldRunNow)callMain(args);postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}quit_(status,new ExitStatus(status))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}var shouldRunNow=true;if(Module[\"noInitialRun\"])shouldRunNow=false;noExitRuntime=true;run();\n\n\n return WasmBackendModule\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModule;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModule; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModule\"] = WasmBackendModule;\n ", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export const wasmWorkerContents = 'var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module[\"instantiateWasm\"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);Module[\"wasmModule\"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd===\"load\"){Module[\"DYNAMIC_BASE\"]=e.data.DYNAMIC_BASE;Module[\"DYNAMICTOP_PTR\"]=e.data.DYNAMICTOP_PTR;Module[\"wasmModule\"]=e.data.wasmModule;Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob===\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({\"cmd\":\"loaded\"})}else if(e.data.cmd===\"objectTransfer\"){Module[\"PThread\"].receiveObjectTransfer(e.data)}else if(e.data.cmd===\"run\"){Module[\"__performance_now_clock_drift\"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module[\"__register_pthread_ptr\"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module[\"establishStackSpace\"](top,max);Module[\"_emscripten_tls_init\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].setThreadStatus(Module[\"_pthread_self\"](),1);try{var result=Module[\"dynCall_ii\"](e.data.start_routine,e.data.arg);if(!Module[\"getNoExitRuntime\"]())Module[\"PThread\"].threadExit(result)}catch(ex){if(ex===\"Canceled!\"){Module[\"PThread\"].threadCancel()}else if(ex!=\"unwind\"){Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+4>>2,ex instanceof Module[\"ExitStatus\"]?ex.status:-2);Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+0>>2,1);Module[\"_emscripten_futex_wake\"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module[\"ExitStatus\"]))throw ex}}}else if(e.data.cmd===\"cancel\"){if(threadInfoStruct){Module[\"PThread\"].threadCancel()}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processThreadQueue\"){if(threadInfoStruct){Module[\"_emscripten_current_thread_process_queued_calls\"]()}}else{err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){err(\"worker.js onmessage() captured an uncaught exception: \"+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require(\"worker_threads\");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",function(data){onmessage({data:data})});var nodeFS=require(\"fs\");var nodeRead=function(filename){return nodeFS.readFileSync(filename,\"utf8\")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance===\"undefined\"){performance={now:function(){return Date.now()}}}}';", null, null, null, "export * from './drawContour';\nexport * from './drawDetections';\nexport * from './drawFaceExpressions';\nexport * from './DrawBox';\nexport * from './DrawFaceLandmarks';\nexport * from './DrawTextField';\n", "import { Point } from '../classes/index';\n\nexport function drawContour(\n ctx: CanvasRenderingContext2D,\n points: Point[],\n isClosed: boolean = false,\n) {\n ctx.beginPath();\n\n points.slice(1).forEach(({ x, y }, prevIdx) => {\n const from = points[prevIdx];\n ctx.moveTo(from.x, from.y);\n ctx.lineTo(x, y);\n });\n\n if (isClosed) {\n const from = points[points.length - 1];\n const to = points[0];\n if (!from || !to) {\n return;\n }\n\n ctx.moveTo(from.x, from.y);\n ctx.lineTo(to.x, to.y);\n }\n\n ctx.stroke();\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { Point } from '../classes/index';\nimport { Dimensions, IDimensions } from '../classes/Dimensions';\n\nexport function isTensor(tensor: any, dim: number) {\n return tensor instanceof tf.Tensor && tensor.shape.length === dim;\n}\n\nexport function isTensor1D(tensor: any): tensor is tf.Tensor1D {\n return isTensor(tensor, 1);\n}\n\nexport function isTensor2D(tensor: any): tensor is tf.Tensor2D {\n return isTensor(tensor, 2);\n}\n\nexport function isTensor3D(tensor: any): tensor is tf.Tensor3D {\n return isTensor(tensor, 3);\n}\n\nexport function isTensor4D(tensor: any): tensor is tf.Tensor4D {\n return isTensor(tensor, 4);\n}\n\nexport function isFloat(num: number) {\n return num % 1 !== 0;\n}\n\nexport function isEven(num: number) {\n return num % 2 === 0;\n}\n\nexport function round(num: number, prec: number = 2) {\n const f = 10 ** prec;\n return Math.floor(num * f) / f;\n}\n\nexport function isDimensions(obj: any): boolean {\n return obj && obj.width && obj.height;\n}\n\nexport function computeReshapedDimensions({ width, height }: IDimensions, inputSize: number) {\n const scale = inputSize / Math.max(height, width);\n return new Dimensions(Math.round(width * scale), Math.round(height * scale));\n}\n\nexport function getCenterPoint(pts: Point[]): Point {\n return pts.reduce((sum, pt) => sum.add(pt), new Point(0, 0))\n .div(new Point(pts.length, pts.length));\n}\n\nexport function range(num: number, start: number, step: number): number[] {\n return Array(num).fill(0).map((_, i) => start + (i * step));\n}\n\nexport function isValidNumber(num: any) {\n // eslint-disable-next-line no-mixed-operators\n return !!num && (num !== Infinity) && (num !== -Infinity) && !Number.isNaN(num) || num === 0;\n}\n\nexport function isValidProbablitiy(num: any) {\n return isValidNumber(num) && num >= 0 && num <= 1.0;\n}\n", "import { isValidNumber } from '../utils/index';\n\nexport interface IDimensions {\n width: number\n height: number\n}\n\nexport class Dimensions implements IDimensions {\n private _width: number\n\n private _height: number\n\n constructor(width: number, height: number) {\n if (!isValidNumber(width) || !isValidNumber(height)) {\n throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({ width, height })}`);\n }\n\n this._width = width;\n this._height = height;\n }\n\n public get width(): number { return this._width; }\n\n public get height(): number { return this._height; }\n\n public reverse(): Dimensions {\n return new Dimensions(1 / this.width, 1 / this.height);\n }\n}\n", "export interface IPoint {\n x: number\n y: number\n}\n\nexport class Point implements IPoint {\n private _x: number\n\n private _y: number\n\n constructor(x: number, y: number) {\n this._x = x;\n this._y = y;\n }\n\n get x(): number { return this._x; }\n\n get y(): number { return this._y; }\n\n public add(pt: IPoint): Point {\n return new Point(this.x + pt.x, this.y + pt.y);\n }\n\n public sub(pt: IPoint): Point {\n return new Point(this.x - pt.x, this.y - pt.y);\n }\n\n public mul(pt: IPoint): Point {\n return new Point(this.x * pt.x, this.y * pt.y);\n }\n\n public div(pt: IPoint): Point {\n return new Point(this.x / pt.x, this.y / pt.y);\n }\n\n public abs(): Point {\n return new Point(Math.abs(this.x), Math.abs(this.y));\n }\n\n public magnitude(): number {\n return Math.sqrt((this.x ** 2) + (this.y ** 2));\n }\n\n public floor(): Point {\n return new Point(Math.floor(this.x), Math.floor(this.y));\n }\n}\n", "import { isDimensions, isValidNumber } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { IDimensions } from './Dimensions';\nimport { Point } from './Point';\nimport { IRect } from './Rect';\n\nexport class Box implements IBoundingBox, IRect {\n public static isRect(rect: any): boolean {\n return !!rect && [rect.x, rect.y, rect.width, rect.height].every(isValidNumber);\n }\n\n public static assertIsValidBox(box: any, callee: string, allowNegativeDimensions: boolean = false) {\n if (!Box.isRect(box)) {\n throw new Error(`${callee} - invalid box: ${JSON.stringify(box)}, expected object with properties x, y, width, height`);\n }\n\n if (!allowNegativeDimensions && (box.width < 0 || box.height < 0)) {\n throw new Error(`${callee} - width (${box.width}) and height (${box.height}) must be positive numbers`);\n }\n }\n\n private _x: number\n\n private _y: number\n\n private _width: number\n\n private _height: number\n\n constructor(_box: IBoundingBox | IRect, allowNegativeDimensions: boolean = true) {\n const box = (_box || {}) as any;\n\n const isBbox = [box.left, box.top, box.right, box.bottom].every(isValidNumber);\n const isRect = [box.x, box.y, box.width, box.height].every(isValidNumber);\n\n if (!isRect && !isBbox) {\n throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(box)}`);\n }\n\n const [x, y, width, height] = isRect\n ? [box.x, box.y, box.width, box.height]\n : [box.left, box.top, box.right - box.left, box.bottom - box.top];\n\n Box.assertIsValidBox({\n x, y, width, height,\n }, 'Box.constructor', allowNegativeDimensions);\n\n this._x = x;\n this._y = y;\n this._width = width;\n this._height = height;\n }\n\n public get x(): number { return this._x; }\n\n public get y(): number { return this._y; }\n\n public get width(): number { return this._width; }\n\n public get height(): number { return this._height; }\n\n public get left(): number { return this.x; }\n\n public get top(): number { return this.y; }\n\n public get right(): number { return this.x + this.width; }\n\n public get bottom(): number { return this.y + this.height; }\n\n public get area(): number { return this.width * this.height; }\n\n public get topLeft(): Point { return new Point(this.left, this.top); }\n\n public get topRight(): Point { return new Point(this.right, this.top); }\n\n public get bottomLeft(): Point { return new Point(this.left, this.bottom); }\n\n public get bottomRight(): Point { return new Point(this.right, this.bottom); }\n\n public round(): Box {\n const [x, y, width, height] = [this.x, this.y, this.width, this.height]\n .map((val) => Math.round(val));\n return new Box({\n x, y, width, height,\n });\n }\n\n public floor(): Box {\n const [x, y, width, height] = [this.x, this.y, this.width, this.height]\n .map((val) => Math.floor(val));\n return new Box({\n x, y, width, height,\n });\n }\n\n public toSquare(): Box {\n let {\n x, y, width, height,\n } = this;\n const diff = Math.abs(width - height);\n if (width < height) {\n x -= (diff / 2);\n width += diff;\n }\n if (height < width) {\n y -= (diff / 2);\n height += diff;\n }\n\n return new Box({\n x, y, width, height,\n });\n }\n\n public rescale(s: IDimensions | number): Box {\n const scaleX = isDimensions(s) ? (s as IDimensions).width : s as number;\n const scaleY = isDimensions(s) ? (s as IDimensions).height : s as number;\n return new Box({\n x: this.x * scaleX,\n y: this.y * scaleY,\n width: this.width * scaleX,\n height: this.height * scaleY,\n });\n }\n\n public pad(padX: number, padY: number): Box {\n const [x, y, width, height] = [\n this.x - (padX / 2),\n this.y - (padY / 2),\n this.width + padX,\n this.height + padY,\n ];\n return new Box({\n x, y, width, height,\n });\n }\n\n public clipAtImageBorders(imgWidth: number, imgHeight: number): Box {\n const {\n x, y, right, bottom,\n } = this;\n const clippedX = Math.max(x, 0);\n const clippedY = Math.max(y, 0);\n\n const newWidth = right - clippedX;\n const newHeight = bottom - clippedY;\n const clippedWidth = Math.min(newWidth, imgWidth - clippedX);\n const clippedHeight = Math.min(newHeight, imgHeight - clippedY);\n\n return (new Box({\n x: clippedX, y: clippedY, width: clippedWidth, height: clippedHeight,\n })).floor();\n }\n\n public shift(sx: number, sy: number): Box {\n const { width, height } = this;\n const x = this.x + sx;\n const y = this.y + sy;\n\n return new Box({\n x, y, width, height,\n });\n }\n\n public padAtBorders(imageHeight: number, imageWidth: number) {\n const w = this.width + 1;\n const h = this.height + 1;\n\n const dx = 1;\n const dy = 1;\n let edx = w;\n let edy = h;\n\n let x = this.left;\n let y = this.top;\n let ex = this.right;\n let ey = this.bottom;\n\n if (ex > imageWidth) {\n edx = -ex + imageWidth + w;\n ex = imageWidth;\n }\n if (ey > imageHeight) {\n edy = -ey + imageHeight + h;\n ey = imageHeight;\n }\n if (x < 1) {\n edy = 2 - x;\n x = 1;\n }\n if (y < 1) {\n edy = 2 - y;\n y = 1;\n }\n\n return {\n dy, edy, dx, edx, y, ey, x, ex, w, h,\n };\n }\n\n public calibrate(region: Box) {\n return new Box({\n left: this.left + (region.left * this.width),\n top: this.top + (region.top * this.height),\n right: this.right + (region.right * this.width),\n bottom: this.bottom + (region.bottom * this.height),\n }).toSquare().round();\n }\n}\n", "import { Box } from './Box';\n\nexport interface IBoundingBox {\n left: number\n top: number\n right: number\n bottom: number\n}\n\nexport class BoundingBox extends Box implements IBoundingBox {\n constructor(left: number, top: number, right: number, bottom: number, allowNegativeDimensions: boolean = false) {\n super({\n left, top, right, bottom,\n }, allowNegativeDimensions);\n }\n}\n", "import { Box } from './Box';\nimport { Dimensions, IDimensions } from './Dimensions';\nimport { IRect, Rect } from './Rect';\n\nexport class ObjectDetection {\n private _score: number\n\n private _classScore: number\n\n private _className: string\n\n private _box: Rect\n\n private _imageDims: Dimensions\n\n constructor(\n score: number,\n classScore: number,\n className: string,\n relativeBox: IRect,\n imageDims: IDimensions,\n ) {\n this._imageDims = new Dimensions(imageDims.width, imageDims.height);\n this._score = score;\n this._classScore = classScore;\n this._className = className;\n this._box = new Box(relativeBox).rescale(this._imageDims);\n }\n\n public get score(): number { return this._score; }\n\n public get classScore(): number { return this._classScore; }\n\n public get className(): string { return this._className; }\n\n public get box(): Box { return this._box; }\n\n public get imageDims(): Dimensions { return this._imageDims; }\n\n public get imageWidth(): number { return this.imageDims.width; }\n\n public get imageHeight(): number { return this.imageDims.height; }\n\n public get relativeBox(): Box { return new Box(this._box).rescale(this.imageDims.reverse()); }\n\n public forSize(width: number, height: number): ObjectDetection {\n return new ObjectDetection(\n this.score,\n this.classScore,\n this.className,\n this.relativeBox,\n { width, height },\n );\n }\n}\n", "import { Box } from './Box';\nimport { IDimensions } from './Dimensions';\nimport { ObjectDetection } from './ObjectDetection';\nimport { Rect } from './Rect';\n\nexport interface IFaceDetecion {\n score: number\n box: Box\n}\n\nexport class FaceDetection extends ObjectDetection implements IFaceDetecion {\n constructor(\n score: number,\n relativeBox: Rect,\n imageDims: IDimensions,\n ) {\n super(score, score, '', relativeBox, imageDims);\n }\n\n public forSize(width: number, height: number): FaceDetection {\n const { score, relativeBox, imageDims } = super.forSize(width, height);\n return new FaceDetection(score, relativeBox, imageDims);\n }\n}\n", "import { Box } from '../classes/Box';\n\nexport function iou(box1: Box, box2: Box, isIOU: boolean = true) {\n const width = Math.max(0.0, Math.min(box1.right, box2.right) - Math.max(box1.left, box2.left));\n const height = Math.max(0.0, Math.min(box1.bottom, box2.bottom) - Math.max(box1.top, box2.top));\n const interSection = width * height;\n\n return isIOU\n ? interSection / (box1.area + box2.area - interSection)\n : interSection / Math.min(box1.area, box2.area);\n}\n", "import { BoundingBox, IPoint } from '../classes/index';\n\nexport function minBbox(pts: IPoint[]): BoundingBox {\n const xs = pts.map((pt) => pt.x);\n const ys = pts.map((pt) => pt.y);\n const minX = xs.reduce((min, x) => (x < min ? x : min), Infinity);\n const minY = ys.reduce((min, y) => (y < min ? y : min), Infinity);\n const maxX = xs.reduce((max, x) => (max < x ? x : max), 0);\n const maxY = ys.reduce((max, y) => (max < y ? y : max), 0);\n\n return new BoundingBox(minX, minY, maxX, maxY);\n}\n", "import { Box } from '../classes/Box';\nimport { iou } from './iou';\n\nexport function nonMaxSuppression(\n boxes: Box[],\n scores: number[],\n iouThreshold: number,\n isIOU: boolean = true,\n): number[] {\n let indicesSortedByScore = scores\n .map((score, boxIndex) => ({ score, boxIndex }))\n .sort((c1, c2) => c1.score - c2.score)\n .map((c) => c.boxIndex);\n\n const pick: number[] = [];\n\n while (indicesSortedByScore.length > 0) {\n const curr = indicesSortedByScore.pop() as number;\n pick.push(curr);\n\n const indices = indicesSortedByScore;\n\n const outputs: number[] = [];\n for (let i = 0; i < indices.length; i++) {\n const idx = indices[i];\n\n const currBox = boxes[curr];\n const idxBox = boxes[idx];\n\n outputs.push(iou(currBox, idxBox, isIOU));\n }\n\n indicesSortedByScore = indicesSortedByScore.filter(\n (_, j) => outputs[j] <= iouThreshold,\n );\n }\n\n return pick;\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nexport function normalize(x: tf.Tensor4D, meanRgb: number[]): tf.Tensor4D {\n return tf.tidy(() => {\n const [r, g, b] = meanRgb;\n const avg_r = tf.fill([...x.shape.slice(0, 3), 1], r, 'float32');\n const avg_g = tf.fill([...x.shape.slice(0, 3), 1], g, 'float32');\n const avg_b = tf.fill([...x.shape.slice(0, 3), 1], b, 'float32');\n const avg_rgb = tf.concat([avg_r, avg_g, avg_b], 3);\n\n return tf.sub(x, avg_rgb);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\n/**\n * Pads the smaller dimension of an image tensor with zeros, such that width === height.\n *\n * @param imgTensor The image tensor.\n * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on\n * both sides of the minor dimension oof the image.\n * @returns The padded tensor with width === height.\n */\nexport function padToSquare(\n imgTensor: tf.Tensor4D,\n isCenterImage: boolean = false,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const [height, width] = imgTensor.shape.slice(1);\n if (height === width) {\n return imgTensor;\n }\n\n const dimDiff = Math.abs(height - width);\n const paddingAmount = Math.round(dimDiff * (isCenterImage ? 0.5 : 1));\n const paddingAxis = height > width ? 2 : 1;\n\n const createPaddingTensor = (paddingAmountLocal: number): tf.Tensor => {\n const paddingTensorShape = imgTensor.shape.slice();\n paddingTensorShape[paddingAxis] = paddingAmountLocal;\n return tf.fill(paddingTensorShape, 0, 'float32');\n };\n\n const paddingTensorAppend = createPaddingTensor(paddingAmount);\n const remainingPaddingAmount = dimDiff - (paddingTensorAppend.shape[paddingAxis] as number);\n\n const paddingTensorPrepend = isCenterImage && remainingPaddingAmount\n ? createPaddingTensor(remainingPaddingAmount)\n : null;\n\n const tensorsToStack = [\n paddingTensorPrepend,\n imgTensor,\n paddingTensorAppend,\n ]\n .filter((t) => !!t)\n // .map((t: tf.Tensor) => t.toFloat()) as tf.Tensor4D[]\n .map((t: tf.Tensor) => tf.cast(t, 'float32')) as tf.Tensor4D[];\n return tf.concat(tensorsToStack, paddingAxis);\n });\n}\n", "export function shuffleArray(inputArray: any[]) {\n const array = inputArray.slice();\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const x = array[i];\n array[i] = array[j];\n array[j] = x;\n }\n return array;\n}\n", "export * from './iou';\nexport * from './minBbox';\nexport * from './nonMaxSuppression';\nexport * from './normalize';\nexport * from './padToSquare';\nexport * from './shuffleArray';\n\nexport function sigmoid(x: number) {\n return 1 / (1 + Math.exp(-x));\n}\n\nexport function inverseSigmoid(x: number) {\n return Math.log(x / (1 - x));\n}\n", "import { Box } from './Box';\n\nexport interface IRect {\n x: number\n y: number\n width: number\n height: number\n}\n\nexport class Rect extends Box implements IRect {\n constructor(x: number, y: number, width: number, height: number, allowNegativeDimensions: boolean = false) {\n super({\n x, y, width, height,\n }, allowNegativeDimensions);\n }\n}\n", "import { minBbox } from '../ops/index';\nimport { getCenterPoint } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { Box } from './Box';\nimport { Dimensions, IDimensions } from './Dimensions';\nimport { FaceDetection } from './FaceDetection';\nimport { Point } from './Point';\nimport { IRect, Rect } from './Rect';\n\n// face alignment constants\nconst relX = 0.5;\nconst relY = 0.43;\nconst relScale = 0.45;\n\nexport interface IFaceLandmarks {\n positions: Point[]\n shift: Point\n}\n\nexport class FaceLandmarks implements IFaceLandmarks {\n protected _shift: Point\n\n protected _positions: Point[]\n\n protected _imgDims: Dimensions\n\n constructor(\n relativeFaceLandmarkPositions: Point[],\n imgDims: IDimensions,\n shift: Point = new Point(0, 0),\n ) {\n const { width, height } = imgDims;\n this._imgDims = new Dimensions(width, height);\n this._shift = shift;\n this._positions = relativeFaceLandmarkPositions.map(\n (pt) => pt.mul(new Point(width, height)).add(shift),\n );\n }\n\n public get shift(): Point { return new Point(this._shift.x, this._shift.y); }\n\n public get imageWidth(): number { return this._imgDims.width; }\n\n public get imageHeight(): number { return this._imgDims.height; }\n\n public get positions(): Point[] { return this._positions; }\n\n public get relativePositions(): Point[] {\n return this._positions.map(\n (pt) => pt.sub(this._shift).div(new Point(this.imageWidth, this.imageHeight)),\n );\n }\n\n public forSize(width: number, height: number): T {\n return new (this.constructor as any)(\n this.relativePositions,\n { width, height },\n );\n }\n\n public shiftBy(x: number, y: number): T {\n return new (this.constructor as any)(\n this.relativePositions,\n this._imgDims,\n new Point(x, y),\n );\n }\n\n public shiftByPoint(pt: Point): T {\n return this.shiftBy(pt.x, pt.y);\n }\n\n /**\n * Aligns the face landmarks after face detection from the relative positions of the faces\n * bounding box, or it's current shift. This function should be used to align the face images\n * after face detection has been performed, before they are passed to the face recognition net.\n * This will make the computed face descriptor more accurate.\n *\n * @param detection (optional) The bounding box of the face or the face detection result. If\n * no argument was passed the position of the face landmarks are assumed to be relative to\n * it's current shift.\n * @returns The bounding box of the aligned face.\n */\n public align(\n detection?: FaceDetection | IRect | IBoundingBox | null,\n options: { useDlibAlignment?: boolean, minBoxPadding?: number } = { },\n ): Box {\n if (detection) {\n const box = detection instanceof FaceDetection\n ? detection.box.floor()\n : new Box(detection);\n\n return this.shiftBy(box.x, box.y).align(null, options);\n }\n\n const { useDlibAlignment, minBoxPadding } = { useDlibAlignment: false, minBoxPadding: 0.2, ...options };\n\n if (useDlibAlignment) {\n return this.alignDlib();\n }\n\n return this.alignMinBbox(minBoxPadding);\n }\n\n private alignDlib(): Box {\n const centers = this.getRefPointsForAlignment();\n\n const [leftEyeCenter, rightEyeCenter, mouthCenter] = centers;\n const distToMouth = (pt: Point) => mouthCenter.sub(pt).magnitude();\n const eyeToMouthDist = (distToMouth(leftEyeCenter) + distToMouth(rightEyeCenter)) / 2;\n\n const size = Math.floor(eyeToMouthDist / relScale);\n\n const refPoint = getCenterPoint(centers);\n // TODO: pad in case rectangle is out of image bounds\n const x = Math.floor(Math.max(0, refPoint.x - (relX * size)));\n const y = Math.floor(Math.max(0, refPoint.y - (relY * size)));\n\n return new Rect(x, y, Math.min(size, this.imageWidth + x), Math.min(size, this.imageHeight + y));\n }\n\n private alignMinBbox(padding: number): Box {\n const box = minBbox(this.positions);\n return box.pad(box.width * padding, box.height * padding);\n }\n\n protected getRefPointsForAlignment(): Point[] {\n throw new Error('getRefPointsForAlignment not implemented by base class');\n }\n}\n", "import { getCenterPoint } from '../utils/index';\nimport { FaceLandmarks } from './FaceLandmarks';\nimport { Point } from './Point';\n\nexport class FaceLandmarks5 extends FaceLandmarks {\n protected getRefPointsForAlignment(): Point[] {\n const pts = this.positions;\n return [\n pts[0],\n pts[1],\n getCenterPoint([pts[3], pts[4]]),\n ];\n }\n}\n", "import { getCenterPoint } from '../utils/index';\nimport { FaceLandmarks } from './FaceLandmarks';\nimport { Point } from './Point';\n\nexport class FaceLandmarks68 extends FaceLandmarks {\n public getJawOutline(): Point[] {\n return this.positions.slice(0, 17);\n }\n\n public getLeftEyeBrow(): Point[] {\n return this.positions.slice(17, 22);\n }\n\n public getRightEyeBrow(): Point[] {\n return this.positions.slice(22, 27);\n }\n\n public getNose(): Point[] {\n return this.positions.slice(27, 36);\n }\n\n public getLeftEye(): Point[] {\n return this.positions.slice(36, 42);\n }\n\n public getRightEye(): Point[] {\n return this.positions.slice(42, 48);\n }\n\n public getMouth(): Point[] {\n return this.positions.slice(48, 68);\n }\n\n protected getRefPointsForAlignment(): Point[] {\n return [\n this.getLeftEye(),\n this.getRightEye(),\n this.getMouth(),\n ].map(getCenterPoint);\n }\n}\n", "import { round } from '../utils/index';\n\nexport interface IFaceMatch {\n label: string\n distance: number\n}\n\nexport class FaceMatch implements IFaceMatch {\n private _label: string\n\n private _distance: number\n\n constructor(label: string, distance: number) {\n this._label = label;\n this._distance = distance;\n }\n\n public get label(): string { return this._label; }\n\n public get distance(): number { return this._distance; }\n\n public toString(withDistance: boolean = true): string {\n return `${this.label}${withDistance ? ` (${round(this.distance)})` : ''}`;\n }\n}\n", "import { isValidNumber } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { Box } from './Box';\nimport { IRect } from './Rect';\n\nexport class LabeledBox extends Box {\n public static assertIsValidLabeledBox(box: any, callee: string) {\n Box.assertIsValidBox(box, callee);\n\n if (!isValidNumber(box.label)) {\n throw new Error(`${callee} - expected property label (${box.label}) to be a number`);\n }\n }\n\n private _label: number\n\n constructor(box: IBoundingBox | IRect | any, label: number) {\n super(box);\n this._label = label;\n }\n\n public get label(): number { return this._label; }\n}\n", "export class LabeledFaceDescriptors {\n private _label: string\n\n private _descriptors: Float32Array[]\n\n constructor(label: string, descriptors: Float32Array[]) {\n if (!(typeof label === 'string')) {\n throw new Error('LabeledFaceDescriptors - constructor expected label to be a string');\n }\n\n if (!Array.isArray(descriptors) || descriptors.some((desc) => !(desc instanceof Float32Array))) {\n throw new Error('LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array');\n }\n\n this._label = label;\n this._descriptors = descriptors;\n }\n\n public get label(): string { return this._label; }\n\n public get descriptors(): Float32Array[] { return this._descriptors; }\n\n public toJSON(): any {\n return {\n label: this.label,\n descriptors: this.descriptors.map((d) => Array.from(d)),\n };\n }\n\n public static fromJSON(json: any): LabeledFaceDescriptors {\n const descriptors = json.descriptors.map((d: any) => new Float32Array(d));\n return new LabeledFaceDescriptors(json.label, descriptors);\n }\n}\n", "import { isValidProbablitiy } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { LabeledBox } from './LabeledBox';\nimport { IRect } from './Rect';\n\nexport class PredictedBox extends LabeledBox {\n public static assertIsValidPredictedBox(box: any, callee: string) {\n LabeledBox.assertIsValidLabeledBox(box, callee);\n\n if (\n !isValidProbablitiy(box.score)\n || !isValidProbablitiy(box.classScore)\n ) {\n throw new Error(`${callee} - expected properties score (${box.score}) and (${box.classScore}) to be a number between [0, 1]`);\n }\n }\n\n private _score: number\n\n private _classScore: number\n\n constructor(box: IBoundingBox | IRect | any, label: number, score: number, classScore: number) {\n super(box, label);\n this._score = score;\n this._classScore = classScore;\n }\n\n public get score(): number { return this._score; }\n\n public get classScore(): number { return this._classScore; }\n}\n", "import { FaceDetection } from '../classes/FaceDetection';\n\nexport type WithFaceDetection = TSource & {\n detection: FaceDetection\n}\n\nexport function isWithFaceDetection(obj: any): obj is WithFaceDetection<{}> {\n return obj.detection instanceof FaceDetection;\n}\n\nexport function extendWithFaceDetection<\n TSource\n>(\n sourceObj: TSource,\n detection: FaceDetection,\n): WithFaceDetection {\n const extension = { detection };\n return { ...sourceObj, ...extension };\n}\n", "import { Environment } from './types';\n\nexport function createBrowserEnv(): Environment {\n const fetch = window.fetch;\n if (!fetch) throw new Error('fetch - missing fetch implementation for browser environment');\n\n const readFile = () => {\n throw new Error('readFile - filesystem not available for browser environment');\n };\n\n return {\n Canvas: HTMLCanvasElement,\n CanvasRenderingContext2D,\n Image: HTMLImageElement,\n ImageData,\n Video: HTMLVideoElement,\n createCanvasElement: () => document.createElement('canvas'),\n createImageElement: () => document.createElement('img'),\n fetch,\n readFile,\n };\n}\n", "import { FileSystem } from './types';\n\nexport function createFileSystem(fs?: any): FileSystem {\n let requireFsError = '';\n\n if (!fs) {\n try {\n // eslint-disable-next-line global-require\n fs = require('fs');\n } catch (err) {\n requireFsError = err.toString();\n }\n }\n\n const readFile = fs\n ? (filePath: string) => new Promise((resolve, reject) => {\n fs.readFile(filePath, (err: any, buffer: Buffer) => (err ? reject(err) : resolve(buffer)));\n })\n : () => {\n throw new Error(`readFile - failed to require fs in nodejs environment with error: ${requireFsError}`);\n };\n\n return {\n readFile,\n };\n}\n", "/* eslint-disable max-classes-per-file */\nimport { createFileSystem } from './createFileSystem';\nimport { Environment } from './types';\n\nexport function createNodejsEnv(): Environment {\n // eslint-disable-next-line dot-notation\n const Canvas = global['Canvas'] || global.HTMLCanvasElement;\n const Image = global.Image || global.HTMLImageElement;\n\n const createCanvasElement = () => {\n if (Canvas) return new Canvas();\n throw new Error('createCanvasElement - missing Canvas implementation for nodejs environment');\n };\n\n const createImageElement = () => {\n if (Image) return new Image();\n throw new Error('createImageElement - missing Image implementation for nodejs environment');\n };\n\n const fetch = global.fetch;\n // if (!fetch) throw new Error('fetch - missing fetch implementation for nodejs environment');\n\n const fileSystem = createFileSystem();\n\n return {\n Canvas: Canvas || class {},\n CanvasRenderingContext2D: global.CanvasRenderingContext2D || class {},\n Image: Image || class {},\n ImageData: global.ImageData || class {},\n Video: global.HTMLVideoElement || class {},\n createCanvasElement,\n createImageElement,\n fetch,\n ...fileSystem,\n };\n}\n", "export function isBrowser(): boolean {\n return typeof window === 'object'\n && typeof document !== 'undefined'\n && typeof HTMLImageElement !== 'undefined'\n && typeof HTMLCanvasElement !== 'undefined'\n && typeof HTMLVideoElement !== 'undefined'\n && typeof ImageData !== 'undefined'\n && typeof CanvasRenderingContext2D !== 'undefined';\n}\n", "import { createBrowserEnv } from './createBrowserEnv';\nimport { createFileSystem } from './createFileSystem';\nimport { createNodejsEnv } from './createNodejsEnv';\nimport { isBrowser } from './isBrowser';\nimport { isNodejs } from './isNodejs';\nimport { Environment } from './types';\n\nlet environment: Environment | null;\n\nfunction getEnv(): Environment {\n if (!environment) {\n throw new Error('getEnv - environment is not defined, check isNodejs() and isBrowser()');\n }\n return environment;\n}\n\nfunction setEnv(env: Environment) {\n environment = env;\n}\n\nfunction initialize() {\n // check for isBrowser() first to prevent electron renderer process\n // to be initialized with wrong environment due to isNodejs() returning true\n if (isBrowser()) return setEnv(createBrowserEnv());\n if (isNodejs()) return setEnv(createNodejsEnv());\n return null;\n}\n\nfunction monkeyPatch(env: Partial) {\n if (!environment) {\n initialize();\n }\n\n if (!environment) {\n throw new Error('monkeyPatch - environment is not defined, check isNodejs() and isBrowser()');\n }\n\n const { Canvas = environment.Canvas, Image = environment.Image } = env;\n environment.Canvas = Canvas;\n environment.Image = Image;\n environment.createCanvasElement = env.createCanvasElement || (() => new Canvas());\n environment.createImageElement = env.createImageElement || (() => new Image());\n\n environment.ImageData = env.ImageData || environment.ImageData;\n environment.Video = env.Video || environment.Video;\n environment.fetch = env.fetch || environment.fetch;\n environment.readFile = env.readFile || environment.readFile;\n}\n\nexport const env = {\n getEnv,\n setEnv,\n initialize,\n createBrowserEnv,\n createFileSystem,\n createNodejsEnv,\n monkeyPatch,\n isBrowser,\n isNodejs,\n};\n\ninitialize();\n\nexport * from './types';\n", "import { env } from '../env/index';\n\nexport function resolveInput(arg: string | any) {\n if (!env.isNodejs() && typeof arg === 'string') {\n return document.getElementById(arg);\n }\n return arg;\n}\n", "import { env } from '../env/index';\nimport { resolveInput } from './resolveInput';\n\nexport function getContext2dOrThrow(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D): CanvasRenderingContext2D {\n const { Canvas, CanvasRenderingContext2D } = env.getEnv();\n\n if (canvasArg instanceof CanvasRenderingContext2D) {\n return canvasArg;\n }\n\n const canvas = resolveInput(canvasArg);\n\n if (!(canvas instanceof Canvas)) {\n throw new Error('resolveContext2d - expected canvas to be of instance of Canvas');\n }\n\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n throw new Error('resolveContext2d - canvas 2d context is null');\n }\n\n return ctx;\n}\n", "/* eslint-disable max-classes-per-file */\nimport { IDimensions, IPoint } from '../classes/index';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { resolveInput } from '../dom/resolveInput';\n\n// eslint-disable-next-line no-shadow\nexport enum AnchorPosition {\n // eslint-disable-next-line no-unused-vars\n TOP_LEFT = 'TOP_LEFT',\n // eslint-disable-next-line no-unused-vars\n TOP_RIGHT = 'TOP_RIGHT',\n // eslint-disable-next-line no-unused-vars\n BOTTOM_LEFT = 'BOTTOM_LEFT',\n // eslint-disable-next-line no-unused-vars\n BOTTOM_RIGHT = 'BOTTOM_RIGHT'\n}\n\nexport interface IDrawTextFieldOptions {\n anchorPosition?: AnchorPosition\n backgroundColor?: string\n fontColor?: string\n fontSize?: number\n fontStyle?: string\n padding?: number\n}\n\nexport class DrawTextFieldOptions implements IDrawTextFieldOptions {\n public anchorPosition: AnchorPosition\n\n public backgroundColor: string\n\n public fontColor: string\n\n public fontSize: number\n\n public fontStyle: string\n\n public padding: number\n\n constructor(options: IDrawTextFieldOptions = {}) {\n const {\n anchorPosition, backgroundColor, fontColor, fontSize, fontStyle, padding,\n } = options;\n this.anchorPosition = anchorPosition || AnchorPosition.TOP_LEFT;\n this.backgroundColor = backgroundColor || 'rgba(0, 0, 0, 0.5)';\n this.fontColor = fontColor || 'rgba(255, 255, 255, 1)';\n this.fontSize = fontSize || 14;\n this.fontStyle = fontStyle || 'Georgia';\n this.padding = padding || 4;\n }\n}\n\nexport class DrawTextField {\n public text: string[]\n\n public anchor : IPoint\n\n public options: DrawTextFieldOptions\n\n constructor(\n text: string | string[] | DrawTextField,\n anchor: IPoint,\n options: IDrawTextFieldOptions = {},\n ) {\n // eslint-disable-next-line no-nested-ternary\n this.text = typeof text === 'string'\n ? [text]\n : (text instanceof DrawTextField ? text.text : text);\n this.anchor = anchor;\n this.options = new DrawTextFieldOptions(options);\n }\n\n measureWidth(ctx: CanvasRenderingContext2D): number {\n const { padding } = this.options;\n return this.text.map((l) => ctx.measureText(l).width).reduce((w0, w1) => (w0 < w1 ? w1 : w0), 0) + (2 * padding);\n }\n\n measureHeight(): number {\n const { fontSize, padding } = this.options;\n return this.text.length * fontSize + (2 * padding);\n }\n\n getUpperLeft(ctx: CanvasRenderingContext2D, canvasDims?: IDimensions): IPoint {\n const { anchorPosition } = this.options;\n const isShiftLeft = anchorPosition === AnchorPosition.BOTTOM_RIGHT || anchorPosition === AnchorPosition.TOP_RIGHT;\n const isShiftTop = anchorPosition === AnchorPosition.BOTTOM_LEFT || anchorPosition === AnchorPosition.BOTTOM_RIGHT;\n\n const textFieldWidth = this.measureWidth(ctx);\n const textFieldHeight = this.measureHeight();\n const x = (isShiftLeft ? this.anchor.x - textFieldWidth : this.anchor.x);\n const y = isShiftTop ? this.anchor.y - textFieldHeight : this.anchor.y;\n\n // adjust anchor if text box exceeds canvas borders\n if (canvasDims) {\n const { width, height } = canvasDims;\n const newX = Math.max(Math.min(x, width - textFieldWidth), 0);\n const newY = Math.max(Math.min(y, height - textFieldHeight), 0);\n return { x: newX, y: newY };\n }\n return { x, y };\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const canvas = resolveInput(canvasArg);\n const ctx = getContext2dOrThrow(canvas);\n\n const {\n backgroundColor, fontColor, fontSize, fontStyle, padding,\n } = this.options;\n\n ctx.font = `${fontSize}px ${fontStyle}`;\n const maxTextWidth = this.measureWidth(ctx);\n const textHeight = this.measureHeight();\n\n ctx.fillStyle = backgroundColor;\n const upperLeft = this.getUpperLeft(ctx, canvas);\n ctx.fillRect(upperLeft.x, upperLeft.y, maxTextWidth, textHeight);\n\n ctx.fillStyle = fontColor;\n this.text.forEach((textLine, i) => {\n const x = padding + upperLeft.x;\n const y = padding + upperLeft.y + ((i + 1) * fontSize);\n ctx.fillText(textLine, x, y);\n });\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport { Box, IBoundingBox, IRect } from '../classes/index';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport {\n AnchorPosition, DrawTextField, DrawTextFieldOptions, IDrawTextFieldOptions,\n} from './DrawTextField';\n\nexport interface IDrawBoxOptions {\n boxColor?: string\n lineWidth?: number\n drawLabelOptions?: IDrawTextFieldOptions\n label?: string\n}\n\nexport class DrawBoxOptions {\n public boxColor: string\n\n public lineWidth: number\n\n public drawLabelOptions: DrawTextFieldOptions\n\n public label?: string\n\n constructor(options: IDrawBoxOptions = {}) {\n const {\n boxColor, lineWidth, label, drawLabelOptions,\n } = options;\n this.boxColor = boxColor || 'rgba(0, 0, 255, 1)';\n this.lineWidth = lineWidth || 2;\n this.label = label;\n\n const defaultDrawLabelOptions = {\n anchorPosition: AnchorPosition.BOTTOM_LEFT,\n backgroundColor: this.boxColor,\n };\n this.drawLabelOptions = new DrawTextFieldOptions({ ...defaultDrawLabelOptions, ...drawLabelOptions });\n }\n}\n\nexport class DrawBox {\n public box: Box\n\n public options: DrawBoxOptions\n\n constructor(\n box: IBoundingBox | IRect,\n options: IDrawBoxOptions = {},\n ) {\n this.box = new Box(box);\n this.options = new DrawBoxOptions(options);\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const ctx = getContext2dOrThrow(canvasArg);\n\n const { boxColor, lineWidth } = this.options;\n\n const {\n x, y, width, height,\n } = this.box;\n ctx.strokeStyle = boxColor;\n ctx.lineWidth = lineWidth;\n ctx.strokeRect(x, y, width, height);\n\n const { label } = this.options;\n if (label) {\n new DrawTextField([label], { x: x - (lineWidth / 2), y }, this.options.drawLabelOptions).draw(canvasArg);\n }\n }\n}\n", "import { Box, IBoundingBox, IRect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { isWithFaceDetection, WithFaceDetection } from '../factories/WithFaceDetection';\nimport { round } from '../utils/index';\nimport { DrawBox } from './DrawBox';\n\nexport type TDrawDetectionsInput = IRect | IBoundingBox | FaceDetection | WithFaceDetection<{}>\n\nexport function drawDetections(\n canvasArg: string | HTMLCanvasElement,\n detections: TDrawDetectionsInput | Array,\n) {\n const detectionsArray = Array.isArray(detections) ? detections : [detections];\n\n detectionsArray.forEach((det) => {\n // eslint-disable-next-line no-nested-ternary\n const score = det instanceof FaceDetection\n ? det.score\n : (isWithFaceDetection(det) ? det.detection.score : undefined);\n\n // eslint-disable-next-line no-nested-ternary\n const box = det instanceof FaceDetection\n ? det.box\n : (isWithFaceDetection(det) ? det.detection.box : new Box(det));\n\n const label = score ? `${round(score)}` : undefined;\n new DrawBox(box, { label }).draw(canvasArg);\n });\n}\n", "import { env } from '../env/index';\n\nexport function isMediaLoaded(media: HTMLImageElement | HTMLVideoElement) : boolean {\n const { Image, Video } = env.getEnv();\n\n return (media instanceof Image && media.complete)\n || (media instanceof Video && media.readyState >= 3);\n}\n", "import { env } from '../env/index';\nimport { isMediaLoaded } from './isMediaLoaded';\n\nexport function awaitMediaLoaded(media: HTMLImageElement | HTMLVideoElement | HTMLCanvasElement) {\n // eslint-disable-next-line consistent-return\n return new Promise((resolve, reject) => {\n if (media instanceof env.getEnv().Canvas || isMediaLoaded(media)) {\n return resolve(null);\n }\n\n function onError(e: Event) {\n if (!e.currentTarget) return;\n // eslint-disable-next-line no-use-before-define\n e.currentTarget.removeEventListener('load', onLoad);\n e.currentTarget.removeEventListener('error', onError);\n reject(e);\n }\n\n function onLoad(e: Event) {\n if (!e.currentTarget) return;\n e.currentTarget.removeEventListener('load', onLoad);\n e.currentTarget.removeEventListener('error', onError);\n resolve(e);\n }\n\n media.addEventListener('load', onLoad);\n media.addEventListener('error', onError);\n });\n}\n", "import { env } from '../env/index';\n\nexport function bufferToImage(buf: Blob): Promise {\n return new Promise((resolve, reject) => {\n if (!(buf instanceof Blob)) reject(new Error('bufferToImage - expected buf to be of type: Blob'));\n const reader = new FileReader();\n reader.onload = () => {\n if (typeof reader.result !== 'string') reject(new Error('bufferToImage - expected reader.result to be a string, in onload'));\n const img = env.getEnv().createImageElement();\n img.onload = () => resolve(img);\n img.onerror = reject;\n img.src = reader.result as string;\n };\n reader.onerror = reject;\n reader.readAsDataURL(buf);\n });\n}\n", "import { Dimensions, IDimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\n\nexport function getMediaDimensions(input: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | IDimensions): Dimensions {\n const { Image, Video } = env.getEnv();\n\n if (input instanceof Image) {\n return new Dimensions(input.naturalWidth, input.naturalHeight);\n }\n if (input instanceof Video) {\n return new Dimensions(input.videoWidth, input.videoHeight);\n }\n return new Dimensions(input.width, input.height);\n}\n", "import { IDimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { getMediaDimensions } from './getMediaDimensions';\nimport { isMediaLoaded } from './isMediaLoaded';\n\nexport function createCanvas({ width, height }: IDimensions): HTMLCanvasElement {\n const { createCanvasElement } = env.getEnv();\n const canvas = createCanvasElement();\n canvas.width = width;\n canvas.height = height;\n return canvas;\n}\n\nexport function createCanvasFromMedia(media: HTMLImageElement | HTMLVideoElement | ImageData, dims?: IDimensions): HTMLCanvasElement {\n const { ImageData } = env.getEnv();\n\n if (!(media instanceof ImageData) && !isMediaLoaded(media)) {\n throw new Error('createCanvasFromMedia - media has not finished loading yet');\n }\n\n const { width, height } = dims || getMediaDimensions(media);\n const canvas = createCanvas({ width, height });\n\n if (media instanceof ImageData) {\n getContext2dOrThrow(canvas).putImageData(media, 0, 0);\n } else {\n getContext2dOrThrow(canvas).drawImage(media, 0, 0, width, height);\n }\n return canvas;\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { env } from '../env/index';\nimport { isTensor4D } from '../utils/index';\n\nexport async function imageTensorToCanvas(\n imgTensor: tf.Tensor,\n canvas?: HTMLCanvasElement,\n): Promise {\n const targetCanvas = canvas || env.getEnv().createCanvasElement();\n\n const [height, width, numChannels] = imgTensor.shape.slice(isTensor4D(imgTensor) ? 1 : 0);\n const imgTensor3D = tf.tidy(() => imgTensor.as3D(height, width, numChannels).toInt());\n await tf.browser.toPixels(imgTensor3D, targetCanvas);\n\n imgTensor3D.dispose();\n\n return targetCanvas;\n}\n", "import { env } from '../env/index';\n\nexport function isMediaElement(input: any) {\n const { Image, Canvas, Video } = env.getEnv();\n\n return input instanceof Image\n || input instanceof Canvas\n || input instanceof Video;\n}\n", "import { env } from '../env/index';\nimport { createCanvas, createCanvasFromMedia } from './createCanvas';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { getMediaDimensions } from './getMediaDimensions';\n\nexport function imageToSquare(input: HTMLImageElement | HTMLCanvasElement, inputSize: number, centerImage: boolean = false) {\n const { Image, Canvas } = env.getEnv();\n\n if (!(input instanceof Image || input instanceof Canvas)) {\n throw new Error('imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement');\n }\n\n const dims = getMediaDimensions(input);\n const scale = inputSize / Math.max(dims.height, dims.width);\n const width = scale * dims.width;\n const height = scale * dims.height;\n\n const targetCanvas = createCanvas({ width: inputSize, height: inputSize });\n const inputCanvas = input instanceof Canvas ? input : createCanvasFromMedia(input);\n\n const offset = Math.abs(width - height) / 2;\n const dx = centerImage && width < height ? offset : 0;\n const dy = centerImage && height < width ? offset : 0;\n getContext2dOrThrow(targetCanvas).drawImage(inputCanvas, dx, dy, width, height);\n\n return targetCanvas;\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { Dimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\nimport { padToSquare } from '../ops/padToSquare';\nimport {\n computeReshapedDimensions, isTensor3D, isTensor4D, range,\n} from '../utils/index';\nimport { createCanvasFromMedia } from './createCanvas';\nimport { imageToSquare } from './imageToSquare';\nimport { TResolvedNetInput } from './types';\n\nexport class NetInput {\n private _imageTensors: Array = []\n\n private _canvases: HTMLCanvasElement[] = []\n\n private _batchSize: number\n\n private _treatAsBatchInput: boolean = false\n\n private _inputDimensions: number[][] = []\n\n private _inputSize: number\n\n constructor(\n inputs: Array,\n treatAsBatchInput: boolean = false,\n ) {\n if (!Array.isArray(inputs)) {\n throw new Error(`NetInput.constructor - expected inputs to be an Array of TResolvedNetInput or to be instanceof tf.Tensor4D, instead have ${inputs}`);\n }\n\n this._treatAsBatchInput = treatAsBatchInput;\n this._batchSize = inputs.length;\n\n inputs.forEach((input, idx) => {\n if (isTensor3D(input)) {\n this._imageTensors[idx] = input;\n this._inputDimensions[idx] = input.shape;\n return;\n }\n\n if (isTensor4D(input)) {\n const batchSize = (input as any).shape[0];\n if (batchSize !== 1) {\n throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);\n }\n\n this._imageTensors[idx] = input;\n this._inputDimensions[idx] = (input as any).shape.slice(1);\n return;\n }\n\n const canvas = (input as any) instanceof env.getEnv().Canvas ? input : createCanvasFromMedia(input);\n this._canvases[idx] = canvas;\n this._inputDimensions[idx] = [canvas.height, canvas.width, 3];\n });\n }\n\n public get imageTensors(): Array {\n return this._imageTensors;\n }\n\n public get canvases(): HTMLCanvasElement[] {\n return this._canvases;\n }\n\n public get isBatchInput(): boolean {\n return this.batchSize > 1 || this._treatAsBatchInput;\n }\n\n public get batchSize(): number {\n return this._batchSize;\n }\n\n public get inputDimensions(): number[][] {\n return this._inputDimensions;\n }\n\n public get inputSize(): number | undefined {\n return this._inputSize;\n }\n\n public get reshapedInputDimensions(): Dimensions[] {\n return range(this.batchSize, 0, 1).map(\n (_, batchIdx) => this.getReshapedInputDimensions(batchIdx),\n );\n }\n\n public getInput(batchIdx: number): tf.Tensor3D | tf.Tensor4D | HTMLCanvasElement {\n return this.canvases[batchIdx] || this.imageTensors[batchIdx];\n }\n\n public getInputDimensions(batchIdx: number): number[] {\n return this._inputDimensions[batchIdx];\n }\n\n public getInputHeight(batchIdx: number): number {\n return this._inputDimensions[batchIdx][0];\n }\n\n public getInputWidth(batchIdx: number): number {\n return this._inputDimensions[batchIdx][1];\n }\n\n public getReshapedInputDimensions(batchIdx: number): Dimensions {\n if (typeof this.inputSize !== 'number') {\n throw new Error('getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet');\n }\n\n const width = this.getInputWidth(batchIdx);\n const height = this.getInputHeight(batchIdx);\n return computeReshapedDimensions({ width, height }, this.inputSize);\n }\n\n /**\n * Create a batch tensor from all input canvases and tensors\n * with size [batchSize, inputSize, inputSize, 3].\n *\n * @param inputSize Height and width of the tensor.\n * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on\n * both sides of the minor dimension oof the image.\n * @returns The batch tensor.\n */\n public toBatchTensor(inputSize: number, isCenterInputs: boolean = true): tf.Tensor4D {\n this._inputSize = inputSize;\n\n return tf.tidy(() => {\n const inputTensors = range(this.batchSize, 0, 1).map((batchIdx) => {\n const input = this.getInput(batchIdx);\n\n if (input instanceof tf.Tensor) {\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n let imgTensor = isTensor4D(input) ? input : input.expandDims();\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n imgTensor = padToSquare(imgTensor, isCenterInputs);\n\n if (imgTensor.shape[1] !== inputSize || imgTensor.shape[2] !== inputSize) {\n imgTensor = tf.image.resizeBilinear(imgTensor, [inputSize, inputSize]);\n }\n\n return imgTensor.as3D(inputSize, inputSize, 3);\n }\n\n if (input instanceof env.getEnv().Canvas) {\n return tf.browser.fromPixels(imageToSquare(input, inputSize, isCenterInputs));\n }\n\n throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input}`);\n });\n\n // const batchTensor = tf.stack(inputTensors.map(t => t.toFloat())).as4D(this.batchSize, inputSize, inputSize, 3)\n const batchTensor = tf.stack(inputTensors.map((t) => tf.cast(t, 'float32'))).as4D(this.batchSize, inputSize, inputSize, 3);\n // const batchTensor = tf.stack(inputTensors.map(t => tf.Tensor.as4D(tf.cast(t, 'float32'))), this.batchSize, inputSize, inputSize, 3);\n\n return batchTensor;\n });\n }\n}\n", "import { isTensor3D, isTensor4D } from '../utils/index';\nimport { awaitMediaLoaded } from './awaitMediaLoaded';\nimport { isMediaElement } from './isMediaElement';\nimport { NetInput } from './NetInput';\nimport { resolveInput } from './resolveInput';\nimport { TNetInput } from './types';\n\n/**\n * Validates the input to make sure, they are valid net inputs and awaits all media elements\n * to be finished loading.\n *\n * @param input The input, which can be a media element or an array of different media elements.\n * @returns A NetInput instance, which can be passed into one of the neural networks.\n */\nexport async function toNetInput(inputs: TNetInput): Promise {\n if (inputs instanceof NetInput) {\n return inputs;\n }\n\n const inputArgArray = Array.isArray(inputs)\n ? inputs\n : [inputs];\n\n if (!inputArgArray.length) {\n throw new Error('toNetInput - empty array passed as input');\n }\n\n const getIdxHint = (idx: number) => (Array.isArray(inputs) ? ` at input index ${idx}:` : '');\n\n const inputArray = inputArgArray.map(resolveInput);\n\n inputArray.forEach((input, i) => {\n if (!isMediaElement(input) && !isTensor3D(input) && !isTensor4D(input)) {\n if (typeof inputArgArray[i] === 'string') {\n throw new Error(`toNetInput -${getIdxHint(i)} string passed, but could not resolve HTMLElement for element id ${inputArgArray[i]}`);\n }\n\n throw new Error(`toNetInput -${getIdxHint(i)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`);\n }\n\n if (isTensor4D(input)) {\n // if tf.Tensor4D is passed in the input array, the batch size has to be 1\n const batchSize = input.shape[0];\n if (batchSize !== 1) {\n throw new Error(`toNetInput -${getIdxHint(i)} tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);\n }\n }\n });\n\n // wait for all media elements being loaded\n await Promise.all(\n inputArray.map((input) => isMediaElement(input) && awaitMediaLoaded(input)),\n );\n\n return new NetInput(inputArray, Array.isArray(inputs));\n}\n", "import { FaceDetection } from '../classes/FaceDetection';\nimport { Rect } from '../classes/Rect';\nimport { env } from '../env/index';\nimport { createCanvas } from './createCanvas';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { imageTensorToCanvas } from './imageTensorToCanvas';\nimport { toNetInput } from './toNetInput';\nimport { TNetInput } from './types';\n\n/**\n * Extracts the image regions containing the detected faces.\n *\n * @param input The image that face detection has been performed on.\n * @param detections The face detection results or face bounding boxes for that image.\n * @returns The Canvases of the corresponding image region for each detected face.\n */\nexport async function extractFaces(\n input: TNetInput,\n detections: Array,\n): Promise {\n const { Canvas } = env.getEnv();\n\n let canvas = input as HTMLCanvasElement;\n\n if (!(input instanceof Canvas)) {\n const netInput = await toNetInput(input);\n\n if (netInput.batchSize > 1) {\n throw new Error('extractFaces - batchSize > 1 not supported');\n }\n\n const tensorOrCanvas = netInput.getInput(0);\n canvas = tensorOrCanvas instanceof Canvas\n ? tensorOrCanvas\n : await imageTensorToCanvas(tensorOrCanvas);\n }\n\n const ctx = getContext2dOrThrow(canvas);\n const boxes = detections.map(\n (det) => (det instanceof FaceDetection\n ? det.forSize(canvas.width, canvas.height).box.floor()\n : det),\n )\n .map((box) => box.clipAtImageBorders(canvas.width, canvas.height));\n\n return boxes.map(({\n x, y, width, height,\n }) => {\n const faceImg = createCanvas({ width, height });\n getContext2dOrThrow(faceImg)\n .putImageData(ctx.getImageData(x, y, width, height), 0, 0);\n return faceImg;\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { isTensor3D, isTensor4D } from '../utils/index';\n\n/**\n * Extracts the tensors of the image regions containing the detected faces.\n * Useful if you want to compute the face descriptors for the face images.\n * Using this method is faster then extracting a canvas for each face and\n * converting them to tensors individually.\n *\n * @param imageTensor The image tensor that face detection has been performed on.\n * @param detections The face detection results or face bounding boxes for that image.\n * @returns Tensors of the corresponding image region for each detected face.\n */\nexport async function extractFaceTensors(\n imageTensor: tf.Tensor3D | tf.Tensor4D,\n detections: Array,\n): Promise {\n if (!isTensor3D(imageTensor) && !isTensor4D(imageTensor)) {\n throw new Error('extractFaceTensors - expected image tensor to be 3D or 4D');\n }\n\n if (isTensor4D(imageTensor) && imageTensor.shape[0] > 1) {\n throw new Error('extractFaceTensors - batchSize > 1 not supported');\n }\n\n return tf.tidy(() => {\n const [imgHeight, imgWidth, numChannels] = imageTensor.shape.slice(isTensor4D(imageTensor) ? 1 : 0);\n\n const boxes = detections.map(\n (det) => (det instanceof FaceDetection\n ? det.forSize(imgWidth, imgHeight).box\n : det),\n )\n .map((box) => box.clipAtImageBorders(imgWidth, imgHeight));\n\n const faceTensors = boxes.map(({\n x, y, width, height,\n }) => tf.slice3d(imageTensor.as3D(imgHeight, imgWidth, numChannels), [y, x, 0], [height, width, numChannels]));\n\n return faceTensors;\n });\n}\n", "import { env } from '../env/index';\n\nexport async function fetchOrThrow(\n url: string,\n // eslint-disable-next-line no-undef\n init?: RequestInit,\n): Promise {\n const { fetch } = env.getEnv();\n const res = await fetch(url, init);\n if (!(res.status < 400)) {\n throw new Error(`failed to fetch: (${res.status}) ${res.statusText}, from url: ${res.url}`);\n }\n return res;\n}\n", "import { bufferToImage } from './bufferToImage';\nimport { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchImage(uri: string): Promise {\n const res = await fetchOrThrow(uri);\n const blob = await (res).blob();\n\n if (!blob.type.startsWith('image/')) {\n throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${blob.type}, for url: ${res.url}`);\n }\n return bufferToImage(blob);\n}\n", "import { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchJson(uri: string): Promise {\n return (await fetchOrThrow(uri)).json();\n}\n", "import { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchNetWeights(uri: string): Promise {\n return new Float32Array(await (await fetchOrThrow(uri)).arrayBuffer());\n}\n", "export function getModelUris(uri: string | undefined, defaultModelName: string) {\n const defaultManifestFilename = `${defaultModelName}-weights_manifest.json`;\n\n if (!uri) {\n return {\n modelBaseUri: '',\n manifestUri: defaultManifestFilename,\n };\n }\n\n if (uri === '/') {\n return {\n modelBaseUri: '/',\n manifestUri: `/${defaultManifestFilename}`,\n };\n }\n // eslint-disable-next-line no-nested-ternary\n const protocol = uri.startsWith('http://') ? 'http://' : uri.startsWith('https://') ? 'https://' : '';\n uri = uri.replace(protocol, '');\n\n const parts = uri.split('/').filter((s) => s);\n\n const manifestFile = uri.endsWith('.json')\n ? parts[parts.length - 1]\n : defaultManifestFilename;\n\n let modelBaseUri = protocol + (uri.endsWith('.json') ? parts.slice(0, parts.length - 1) : parts).join('/');\n modelBaseUri = uri.startsWith('/') ? `/${modelBaseUri}` : modelBaseUri;\n\n return {\n modelBaseUri,\n manifestUri: modelBaseUri === '/' ? `/${manifestFile}` : `${modelBaseUri}/${manifestFile}`,\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { getModelUris } from '../common/getModelUris';\nimport { fetchJson } from './fetchJson';\n\nexport async function loadWeightMap(\n uri: string | undefined,\n defaultModelName: string,\n): Promise {\n const { manifestUri, modelBaseUri } = getModelUris(uri, defaultModelName);\n const manifest = await fetchJson(manifestUri);\n // if (manifest['weightsManifest']) manifest = manifest['weightsManifest'];\n return tf.io.loadWeights(manifest, modelBaseUri);\n}\n", "import { IDimensions } from '../classes/index';\nimport { getMediaDimensions } from './getMediaDimensions';\n\nexport function matchDimensions(input: IDimensions, reference: IDimensions, useMediaDimensions: boolean = false) {\n const { width, height } = useMediaDimensions\n ? getMediaDimensions(reference)\n : reference;\n input.width = width;\n input.height = height;\n return { width, height };\n}\n", "import * as tf from '../dist/tfjs.esm';\n\nimport { ParamMapping } from './common/index';\nimport { getModelUris } from './common/getModelUris';\nimport { loadWeightMap } from './dom/index';\nimport { env } from './env/index';\n\nexport abstract class NeuralNetwork {\n protected _params: TNetParams | undefined = undefined\n\n protected _paramMappings: ParamMapping[] = []\n\n public _name: any;\n\n public get params(): TNetParams | undefined { return this._params; }\n\n public get paramMappings(): ParamMapping[] { return this._paramMappings; }\n\n public get isLoaded(): boolean { return !!this.params; }\n\n public getParamFromPath(paramPath: string): tf.Tensor {\n const { obj, objProp } = this.traversePropertyPath(paramPath);\n return obj[objProp];\n }\n\n public reassignParamFromPath(paramPath: string, tensor: tf.Tensor) {\n const { obj, objProp } = this.traversePropertyPath(paramPath);\n obj[objProp].dispose();\n obj[objProp] = tensor;\n }\n\n public getParamList() {\n return this._paramMappings.map(({ paramPath }) => ({\n path: paramPath,\n tensor: this.getParamFromPath(paramPath),\n }));\n }\n\n public getTrainableParams() {\n return this.getParamList().filter((param) => param.tensor instanceof tf.Variable);\n }\n\n public getFrozenParams() {\n return this.getParamList().filter((param) => !(param.tensor instanceof tf.Variable));\n }\n\n public variable() {\n this.getFrozenParams().forEach(({ path, tensor }) => {\n this.reassignParamFromPath(path, tensor.variable());\n });\n }\n\n public freeze() {\n this.getTrainableParams().forEach(({ path, tensor: variable }) => {\n const tensor = tf.tensor(variable.dataSync());\n variable.dispose();\n this.reassignParamFromPath(path, tensor);\n });\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.getParamList().forEach((param) => {\n if (throwOnRedispose && param.tensor.isDisposed) {\n throw new Error(`param tensor has already been disposed for path ${param.path}`);\n }\n param.tensor.dispose();\n });\n this._params = undefined;\n }\n\n public serializeParams(): Float32Array {\n return new Float32Array(\n this.getParamList()\n .map(({ tensor }) => Array.from(tensor.dataSync()) as number[])\n .reduce((flat, arr) => flat.concat(arr)),\n );\n }\n\n public async load(weightsOrUrl: Float32Array | string | undefined): Promise {\n if (weightsOrUrl instanceof Float32Array) {\n this.extractWeights(weightsOrUrl);\n return;\n }\n\n await this.loadFromUri(weightsOrUrl);\n }\n\n public async loadFromUri(uri: string | undefined) {\n if (uri && typeof uri !== 'string') {\n throw new Error(`${this._name}.loadFromUri - expected model uri`);\n }\n\n const weightMap = await loadWeightMap(uri, this.getDefaultModelName());\n this.loadFromWeightMap(weightMap);\n }\n\n public async loadFromDisk(filePath: string | undefined) {\n if (filePath && typeof filePath !== 'string') {\n throw new Error(`${this._name}.loadFromDisk - expected model file path`);\n }\n\n const { readFile } = env.getEnv();\n\n const { manifestUri, modelBaseUri } = getModelUris(filePath, this.getDefaultModelName());\n\n const fetchWeightsFromDisk = (filePaths: string[]) => Promise.all(\n filePaths.map((fp) => readFile(fp).then((buf) => buf.buffer)),\n );\n const loadWeights = tf.io.weightsLoaderFactory(fetchWeightsFromDisk);\n const manifest = JSON.parse((await readFile(manifestUri)).toString());\n const weightMap = await loadWeights(manifest, modelBaseUri);\n\n this.loadFromWeightMap(weightMap);\n }\n\n public loadFromWeightMap(weightMap: tf.NamedTensorMap) {\n const {\n paramMappings,\n params,\n } = this.extractParamsFromWeigthMap(weightMap);\n\n this._paramMappings = paramMappings;\n this._params = params;\n }\n\n public extractWeights(weights: Float32Array) {\n const {\n paramMappings,\n params,\n } = this.extractParams(weights);\n\n this._paramMappings = paramMappings;\n this._params = params;\n }\n\n private traversePropertyPath(paramPath: string) {\n if (!this.params) {\n throw new Error('traversePropertyPath - model has no loaded params');\n }\n\n const result = paramPath.split('/').reduce((res: { nextObj: any, obj?: any, objProp?: string }, objProp) => {\n // eslint-disable-next-line no-prototype-builtins\n if (!res.nextObj.hasOwnProperty(objProp)) {\n throw new Error(`traversePropertyPath - object does not have property ${objProp}, for path ${paramPath}`);\n }\n\n return { obj: res.nextObj, objProp, nextObj: res.nextObj[objProp] };\n }, { nextObj: this.params });\n\n const { obj, objProp } = result;\n if (!obj || !objProp || !(obj[objProp] instanceof tf.Tensor)) {\n throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${paramPath}`);\n }\n\n return { obj, objProp };\n }\n\n protected abstract getDefaultModelName(): string\n\n // eslint-disable-next-line no-unused-vars\n protected abstract extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TNetParams, paramMappings: ParamMapping[] }\n\n // eslint-disable-next-line no-unused-vars\n protected abstract extractParams(weights: Float32Array): { params: TNetParams, paramMappings: ParamMapping[] }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { SeparableConvParams } from './types';\n\nexport function depthwiseSeparableConv(\n x: tf.Tensor4D,\n params: SeparableConvParams,\n stride: [number, number],\n): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.separableConv2d(x, params.depthwise_filter, params.pointwise_filter, stride, 'same');\n out = tf.add(out, params.bias);\n return out;\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ConvParams, SeparableConvParams } from '../common/index';\nimport { depthwiseSeparableConv } from '../common/depthwiseSeparableConv';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function denseBlock3(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock3Params,\n isFirstLayer: boolean = false,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, [2, 2], 'same'),\n denseBlockParams.conv0.bias,\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, [2, 2]),\n ) as tf.Tensor4D;\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1]);\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D;\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1]);\n\n return tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D;\n });\n}\n\nexport function denseBlock4(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock4Params,\n isFirstLayer: boolean = false,\n isScaleDown: boolean = true,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, isScaleDown ? [2, 2] : [1, 1], 'same'),\n denseBlockParams.conv0.bias,\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, isScaleDown ? [2, 2] : [1, 1]),\n ) as tf.Tensor4D;\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1]);\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D;\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1]);\n\n const in4 = tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D;\n const out4 = depthwiseSeparableConv(in4, denseBlockParams.conv3, [1, 1]);\n\n return tf.relu(tf.add(out1, tf.add(out2, tf.add(out3, out4)))) as tf.Tensor4D;\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ConvParams } from './types';\n\nexport function convLayer(\n x: tf.Tensor4D,\n params: ConvParams,\n padding: 'valid' | 'same' = 'same',\n withRelu: boolean = false,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out = tf.add(\n tf.conv2d(x, params.filters, [1, 1], padding),\n params.bias,\n ) as tf.Tensor4D;\n\n return withRelu ? tf.relu(out) : out;\n });\n}\n", "import { ParamMapping } from './types';\n\nexport function disposeUnusedWeightTensors(weightMap: any, paramMappings: ParamMapping[]) {\n Object.keys(weightMap).forEach((path) => {\n if (!paramMappings.some((pm) => pm.originalPath === path)) {\n weightMap[path].dispose();\n }\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ConvParams, ExtractWeightsFunction, ParamMapping } from './types';\n\nexport function extractConvParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[],\n) {\n return (\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n ): ConvParams => {\n const filters = tf.tensor4d(\n extractWeights(channelsIn * channelsOut * filterSize * filterSize),\n [filterSize, filterSize, channelsIn, channelsOut],\n );\n const bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return { filters, bias };\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ExtractWeightsFunction, FCParams, ParamMapping } from './types';\n\nexport function extractFCParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[],\n) {\n return (\n channelsIn: number,\n channelsOut: number,\n mappedPrefix: string,\n ): FCParams => {\n const fc_weights = tf.tensor2d(extractWeights(channelsIn * channelsOut), [channelsIn, channelsOut]);\n const fc_bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/weights` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return {\n weights: fc_weights,\n bias: fc_bias,\n };\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\n// eslint-disable-next-line no-unused-vars\nexport type ExtractWeightsFunction = (numWeights: number) => Float32Array\n\nexport type ParamMapping = {\n originalPath?: string\n paramPath: string\n}\n\nexport type ConvParams = {\n filters: tf.Tensor4D\n bias: tf.Tensor1D\n}\n\nexport type FCParams = {\n weights: tf.Tensor2D\n bias: tf.Tensor1D\n}\n\nexport class SeparableConvParams {\n // eslint-disable-next-line no-useless-constructor\n constructor(\n // eslint-disable-next-line no-unused-vars\n public depthwise_filter: tf.Tensor4D,\n // eslint-disable-next-line no-unused-vars\n public pointwise_filter: tf.Tensor4D,\n // eslint-disable-next-line no-unused-vars\n public bias: tf.Tensor1D,\n // eslint-disable-next-line no-empty-function\n ) {}\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ExtractWeightsFunction, ParamMapping, SeparableConvParams } from './types';\n\nexport function extractSeparableConvParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[],\n) {\n return (channelsIn: number, channelsOut: number, mappedPrefix: string): SeparableConvParams => {\n const depthwise_filter = tf.tensor4d(extractWeights(3 * 3 * channelsIn), [3, 3, channelsIn, 1]);\n const pointwise_filter = tf.tensor4d(extractWeights(channelsIn * channelsOut), [1, 1, channelsIn, channelsOut]);\n const bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/depthwise_filter` },\n { paramPath: `${mappedPrefix}/pointwise_filter` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias,\n );\n };\n}\n\nexport function loadSeparableConvParamsFactory(\n // eslint-disable-next-line no-unused-vars\n extractWeightEntry: (originalPath: string, paramRank: number) => T,\n) {\n return (prefix: string): SeparableConvParams => {\n const depthwise_filter = extractWeightEntry(`${prefix}/depthwise_filter`, 4);\n const pointwise_filter = extractWeightEntry(`${prefix}/pointwise_filter`, 4);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias,\n );\n };\n}\n", "import { isTensor } from '../utils/index';\nimport { ParamMapping } from './types';\n\nexport function extractWeightEntryFactory(weightMap: any, paramMappings: ParamMapping[]) {\n return (originalPath: string, paramRank: number, mappedPath?: string) => {\n const tensor = weightMap[originalPath];\n\n if (!isTensor(tensor, paramRank)) {\n throw new Error(`expected weightMap[${originalPath}] to be a Tensor${paramRank}D, instead have ${tensor}`);\n }\n\n paramMappings.push(\n { originalPath, paramPath: mappedPath || originalPath },\n );\n\n return tensor;\n };\n}\n", "export function extractWeightsFactory(weights: Float32Array) {\n let remainingWeights = weights;\n\n function extractWeights(numWeights: number): Float32Array {\n const ret = remainingWeights.slice(0, numWeights);\n remainingWeights = remainingWeights.slice(numWeights);\n return ret;\n }\n\n function getRemainingWeights(): Float32Array {\n return remainingWeights;\n }\n\n return {\n extractWeights,\n getRemainingWeights,\n };\n}\n", "import {\n extractConvParamsFactory,\n extractSeparableConvParamsFactory,\n ExtractWeightsFunction,\n ParamMapping,\n} from '../common/index';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings);\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings);\n\n function extractDenseBlock3Params(channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer: boolean = false): DenseBlock3Params {\n const conv0 = isFirstLayer\n ? extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv0`)\n : extractSeparableConvParams(channelsIn, channelsOut, `${mappedPrefix}/conv0`);\n const conv1 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv1`);\n const conv2 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv2`);\n\n return { conv0, conv1, conv2 };\n }\n\n function extractDenseBlock4Params(channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer: boolean = false): DenseBlock4Params {\n const { conv0, conv1, conv2 } = extractDenseBlock3Params(channelsIn, channelsOut, mappedPrefix, isFirstLayer);\n const conv3 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv3`);\n\n return {\n conv0, conv1, conv2, conv3,\n };\n }\n\n return {\n extractDenseBlock3Params,\n extractDenseBlock4Params,\n };\n}\n", "import { extractWeightsFactory, ParamMapping } from '../common/index';\nimport { extractorsFactory } from './extractorsFactory';\nimport { FaceFeatureExtractorParams } from './types';\n\nexport function extractParams(weights: Float32Array): { params: FaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractDenseBlock4Params,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const dense0 = extractDenseBlock4Params(3, 32, 'dense0', true);\n const dense1 = extractDenseBlock4Params(32, 64, 'dense1');\n const dense2 = extractDenseBlock4Params(64, 128, 'dense2');\n const dense3 = extractDenseBlock4Params(128, 256, 'dense3');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: {\n dense0, dense1, dense2, dense3,\n },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ConvParams } from './types';\n\n// eslint-disable-next-line no-unused-vars\nexport function loadConvParamsFactory(extractWeightEntry: (originalPath: string, paramRank: number) => T) {\n return (prefix: string): ConvParams => {\n const filters = extractWeightEntry(`${prefix}/filters`, 4);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n\n return { filters, bias };\n };\n}\n", "import { extractWeightEntryFactory, loadSeparableConvParamsFactory, ParamMapping } from '../common/index';\nimport { loadConvParamsFactory } from '../common/loadConvParamsFactory';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function loadParamsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n const extractConvParams = loadConvParamsFactory(extractWeightEntry);\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry);\n\n function extractDenseBlock3Params(prefix: string, isFirstLayer: boolean = false): DenseBlock3Params {\n const conv0 = isFirstLayer\n ? extractConvParams(`${prefix}/conv0`)\n : extractSeparableConvParams(`${prefix}/conv0`);\n const conv1 = extractSeparableConvParams(`${prefix}/conv1`);\n const conv2 = extractSeparableConvParams(`${prefix}/conv2`);\n\n return { conv0, conv1, conv2 };\n }\n\n function extractDenseBlock4Params(prefix: string, isFirstLayer: boolean = false): DenseBlock4Params {\n const conv0 = isFirstLayer\n ? extractConvParams(`${prefix}/conv0`)\n : extractSeparableConvParams(`${prefix}/conv0`);\n const conv1 = extractSeparableConvParams(`${prefix}/conv1`);\n const conv2 = extractSeparableConvParams(`${prefix}/conv2`);\n const conv3 = extractSeparableConvParams(`${prefix}/conv3`);\n\n return {\n conv0, conv1, conv2, conv3,\n };\n }\n\n return {\n extractDenseBlock3Params,\n extractDenseBlock4Params,\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { disposeUnusedWeightTensors, ParamMapping } from '../common/index';\nimport { loadParamsFactory } from './loadParamsFactory';\nimport { FaceFeatureExtractorParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: FaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractDenseBlock4Params,\n } = loadParamsFactory(weightMap, paramMappings);\n\n const params = {\n dense0: extractDenseBlock4Params('dense0', true),\n dense1: extractDenseBlock4Params('dense1'),\n dense2: extractDenseBlock4Params('dense2'),\n dense3: extractDenseBlock4Params('dense3'),\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock4 } from './denseBlock';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { FaceFeatureExtractorParams, IFaceFeatureExtractor } from './types';\n\nexport class FaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n constructor() {\n super('FaceFeatureExtractor');\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('FaceFeatureExtractor - load model before inference');\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D;\n\n let out = denseBlock4(normalized, params.dense0, true);\n out = denseBlock4(out, params.dense1);\n out = denseBlock4(out, params.dense2);\n out = denseBlock4(out, params.dense3);\n out = tf.avgPool(out, [7, 7], [2, 2], 'valid');\n\n return out;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { FCParams } from './types';\n\nexport function fullyConnectedLayer(\n x: tf.Tensor2D,\n params: FCParams,\n): tf.Tensor2D {\n return tf.tidy(() => tf.add(\n tf.matMul(x, params.weights),\n params.bias,\n ));\n}\n", "import { extractFCParamsFactory, extractWeightsFactory, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParams(weights: Float32Array, channelsIn: number, channelsOut: number): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const extractFCParams = extractFCParamsFactory(extractWeights, paramMappings);\n\n const fc = extractFCParams(channelsIn, channelsOut, 'fc');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { fc },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport {\n disposeUnusedWeightTensors, extractWeightEntryFactory, FCParams, ParamMapping,\n} from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractFcParams(prefix: string): FCParams {\n const weights = extractWeightEntry(`${prefix}/weights`, 2);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n return { weights, bias };\n }\n\n const params = {\n fc: extractFcParams('fc'),\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nexport function seperateWeightMaps(weightMap: tf.NamedTensorMap) {\n const featureExtractorMap: tf.NamedTensorMap = {};\n const classifierMap: tf.NamedTensorMap = {};\n\n Object.keys(weightMap).forEach((key) => {\n const map = key.startsWith('fc') ? classifierMap : featureExtractorMap;\n map[key] = weightMap[key];\n });\n\n return { featureExtractorMap, classifierMap };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { NetInput } from '../dom/index';\nimport {\n FaceFeatureExtractorParams,\n IFaceFeatureExtractor,\n TinyFaceFeatureExtractorParams,\n} from '../faceFeatureExtractor/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { NetParams } from './types';\nimport { seperateWeightMaps } from './util';\n\nexport abstract class FaceProcessor<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends NeuralNetwork {\n protected _faceFeatureExtractor: IFaceFeatureExtractor\n\n constructor(_name: string, faceFeatureExtractor: IFaceFeatureExtractor) {\n super(_name);\n this._faceFeatureExtractor = faceFeatureExtractor;\n }\n\n public get faceFeatureExtractor(): IFaceFeatureExtractor {\n return this._faceFeatureExtractor;\n }\n\n protected abstract getDefaultModelName(): string\n\n protected abstract getClassifierChannelsIn(): number\n\n protected abstract getClassifierChannelsOut(): number\n\n public runNet(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n const { params } = this;\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`);\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input;\n return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0], -1), params.fc);\n });\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose);\n super.dispose(throwOnRedispose);\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights);\n this._params = params;\n this._paramMappings = paramMappings;\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights, this.getClassifierChannelsIn(), this.getClassifierChannelsOut());\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap);\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap);\n\n return extractParamsFromWeigthMap(classifierMap);\n }\n\n protected extractParams(weights: Float32Array) {\n const cIn = this.getClassifierChannelsIn();\n const cOut = this.getClassifierChannelsOut();\n const classifierWeightSize = (cOut * cIn) + cOut;\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize);\n const classifierWeights = weights.slice(weights.length - classifierWeightSize);\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights);\n return this.extractClassifierParams(classifierWeights);\n }\n}\n", "export const FACE_EXPRESSION_LABELS = ['neutral', 'happy', 'sad', 'angry', 'fearful', 'disgusted', 'surprised'];\n\nexport class FaceExpressions {\n public neutral: number\n\n public happy: number\n\n public sad: number\n\n public angry: number\n\n public fearful: number\n\n public disgusted: number\n\n public surprised: number\n\n constructor(probabilities: number[] | Float32Array) {\n if (probabilities.length !== 7) {\n throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${probabilities.length}`);\n }\n\n FACE_EXPRESSION_LABELS.forEach((expression, idx) => {\n this[expression] = probabilities[idx];\n });\n }\n\n asSortedArray() {\n return FACE_EXPRESSION_LABELS\n .map((expression) => ({ expression, probability: this[expression] as number }))\n .sort((e0, e1) => e1.probability - e0.probability);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';\nimport { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { FaceExpressions } from './FaceExpressions';\n\nexport class FaceExpressionNet extends FaceProcessor {\n constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) {\n super('FaceExpressionNet', faceFeatureExtractor);\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n return tf.tidy(() => tf.softmax(this.runNet(input)));\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async predictExpressions(input: TNetInput) {\n const netInput = await toNetInput(input);\n const out = await this.forwardInput(netInput);\n const probabilitesByBatch = await Promise.all(tf.unstack(out).map(async (t) => {\n const data = await t.data();\n t.dispose();\n return data;\n }));\n out.dispose();\n\n const predictionsByBatch = probabilitesByBatch\n .map((probabilites) => new FaceExpressions(probabilites as Float32Array));\n\n return netInput.isBatchInput\n ? predictionsByBatch\n : predictionsByBatch[0];\n }\n\n protected getDefaultModelName(): string {\n return 'face_expression_model';\n }\n\n protected getClassifierChannelsIn(): number {\n return 256;\n }\n\n protected getClassifierChannelsOut(): number {\n return 7;\n }\n}\n", "import { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\n\nexport type WithFaceExpressions = TSource & {\n expressions: FaceExpressions\n}\n\nexport function isWithFaceExpressions(obj: any): obj is WithFaceExpressions<{}> {\n return obj.expressions instanceof FaceExpressions;\n}\n\nexport function extendWithFaceExpressions<\n TSource\n>(\n sourceObj: TSource,\n expressions: FaceExpressions,\n): WithFaceExpressions {\n const extension = { expressions };\n return { ...sourceObj, ...extension };\n}\n", "import { IPoint, Point } from '../classes/index';\nimport { FaceExpressions } from '../faceExpressionNet/index';\nimport { isWithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceExpressions, WithFaceExpressions } from '../factories/WithFaceExpressions';\nimport { round } from '../utils/index';\nimport { DrawTextField } from './DrawTextField';\n\nexport type DrawFaceExpressionsInput = FaceExpressions | WithFaceExpressions<{}>\n\nexport function drawFaceExpressions(\n canvasArg: string | HTMLCanvasElement,\n faceExpressions: DrawFaceExpressionsInput | Array,\n minConfidence = 0.1,\n textFieldAnchor?: IPoint,\n) {\n const faceExpressionsArray = Array.isArray(faceExpressions) ? faceExpressions : [faceExpressions];\n\n faceExpressionsArray.forEach((e) => {\n // eslint-disable-next-line no-nested-ternary\n const expr = e instanceof FaceExpressions\n ? e\n : (isWithFaceExpressions(e) ? e.expressions : undefined);\n if (!expr) {\n throw new Error('drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof');\n }\n\n const sorted = expr.asSortedArray();\n const resultsToDisplay = sorted.filter((exprLocal) => exprLocal.probability > minConfidence);\n\n const anchor = isWithFaceDetection(e)\n ? e.detection.box.bottomLeft\n : (textFieldAnchor || new Point(0, 0));\n\n const drawTextField = new DrawTextField(\n resultsToDisplay.map((exprLocal) => `${exprLocal.expression} (${round(exprLocal.probability)})`),\n anchor,\n );\n drawTextField.draw(canvasArg);\n });\n}\n", "import { FaceDetection } from '../classes/FaceDetection';\nimport { FaceLandmarks } from '../classes/FaceLandmarks';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { isWithFaceDetection, WithFaceDetection } from './WithFaceDetection';\n\nexport type WithFaceLandmarks<\n TSource extends WithFaceDetection<{}>,\n TFaceLandmarks extends FaceLandmarks = FaceLandmarks68 > = TSource & {\n landmarks: TFaceLandmarks\n unshiftedLandmarks: TFaceLandmarks\n alignedRect: FaceDetection\n }\n\nexport function isWithFaceLandmarks(obj: any): obj is WithFaceLandmarks, FaceLandmarks> {\n return isWithFaceDetection(obj)\n // eslint-disable-next-line dot-notation\n && obj['landmarks'] instanceof FaceLandmarks\n // eslint-disable-next-line dot-notation\n && obj['unshiftedLandmarks'] instanceof FaceLandmarks\n // eslint-disable-next-line dot-notation\n && obj['alignedRect'] instanceof FaceDetection;\n}\n\nexport function extendWithFaceLandmarks<\n TSource extends WithFaceDetection<{}>,\n TFaceLandmarks extends FaceLandmarks = FaceLandmarks68 >(sourceObj: TSource, unshiftedLandmarks: TFaceLandmarks): WithFaceLandmarks {\n const { box: shift } = sourceObj.detection;\n const landmarks = unshiftedLandmarks.shiftBy(shift.x, shift.y);\n\n const rect = landmarks.align();\n const { imageDims } = sourceObj.detection;\n const alignedRect = new FaceDetection(sourceObj.detection.score, rect.rescale(imageDims.reverse()), imageDims);\n\n const extension = {\n landmarks,\n unshiftedLandmarks,\n alignedRect,\n };\n\n return { ...sourceObj, ...extension };\n}\n", "/* eslint-disable max-classes-per-file */\nimport { IPoint } from '../classes/index';\nimport { FaceLandmarks } from '../classes/FaceLandmarks';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { drawContour } from './drawContour';\n\nexport interface IDrawFaceLandmarksOptions {\n drawLines?: boolean\n drawPoints?: boolean\n lineWidth?: number\n pointSize?: number\n lineColor?: string\n pointColor?: string\n}\n\nexport class DrawFaceLandmarksOptions {\n public drawLines: boolean\n\n public drawPoints: boolean\n\n public lineWidth: number\n\n public pointSize: number\n\n public lineColor: string\n\n public pointColor: string\n\n constructor(options: IDrawFaceLandmarksOptions = {}) {\n const {\n drawLines = true, drawPoints = true, lineWidth, lineColor, pointSize, pointColor,\n } = options;\n this.drawLines = drawLines;\n this.drawPoints = drawPoints;\n this.lineWidth = lineWidth || 1;\n this.pointSize = pointSize || 2;\n this.lineColor = lineColor || 'rgba(0, 255, 255, 1)';\n this.pointColor = pointColor || 'rgba(255, 0, 255, 1)';\n }\n}\n\nexport class DrawFaceLandmarks {\n public faceLandmarks: FaceLandmarks\n\n public options: DrawFaceLandmarksOptions\n\n constructor(\n faceLandmarks: FaceLandmarks,\n options: IDrawFaceLandmarksOptions = {},\n ) {\n this.faceLandmarks = faceLandmarks;\n this.options = new DrawFaceLandmarksOptions(options);\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const ctx = getContext2dOrThrow(canvasArg);\n\n const {\n drawLines, drawPoints, lineWidth, lineColor, pointSize, pointColor,\n } = this.options;\n\n if (drawLines && this.faceLandmarks instanceof FaceLandmarks68) {\n ctx.strokeStyle = lineColor;\n ctx.lineWidth = lineWidth;\n drawContour(ctx, this.faceLandmarks.getJawOutline());\n drawContour(ctx, this.faceLandmarks.getLeftEyeBrow());\n drawContour(ctx, this.faceLandmarks.getRightEyeBrow());\n drawContour(ctx, this.faceLandmarks.getNose());\n drawContour(ctx, this.faceLandmarks.getLeftEye(), true);\n drawContour(ctx, this.faceLandmarks.getRightEye(), true);\n drawContour(ctx, this.faceLandmarks.getMouth(), true);\n }\n\n if (drawPoints) {\n ctx.strokeStyle = pointColor;\n ctx.fillStyle = pointColor;\n\n const drawPoint = (pt: IPoint) => {\n ctx.beginPath();\n ctx.arc(pt.x, pt.y, pointSize, 0, 2 * Math.PI);\n ctx.fill();\n };\n this.faceLandmarks.positions.forEach(drawPoint);\n }\n }\n}\n\nexport type DrawFaceLandmarksInput = FaceLandmarks | WithFaceLandmarks>\n\nexport function drawFaceLandmarks(\n canvasArg: string | HTMLCanvasElement,\n faceLandmarks: DrawFaceLandmarksInput | Array,\n) {\n const faceLandmarksArray = Array.isArray(faceLandmarks) ? faceLandmarks : [faceLandmarks];\n faceLandmarksArray.forEach((f) => {\n // eslint-disable-next-line no-nested-ternary\n const landmarks = f instanceof FaceLandmarks\n ? f\n : (isWithFaceLandmarks(f) ? f.landmarks : undefined);\n if (!landmarks) {\n throw new Error('drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof');\n }\n\n new DrawFaceLandmarks(landmarks).draw(canvasArg);\n });\n}\n", "import { extractConvParamsFactory, extractSeparableConvParamsFactory, extractWeightsFactory } from '../common/index';\nimport { ExtractWeightsFunction, ParamMapping } from '../common/types';\nimport { range } from '../utils/index';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings);\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings);\n\n function extractReductionBlockParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ReductionBlockParams {\n const separable_conv0 = extractSeparableConvParams(channelsIn, channelsOut, `${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/separable_conv1`);\n const expansion_conv = extractConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/expansion_conv`);\n\n return { separable_conv0, separable_conv1, expansion_conv };\n }\n\n function extractMainBlockParams(channels: number, mappedPrefix: string): MainBlockParams {\n const separable_conv0 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv1`);\n const separable_conv2 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv2`);\n\n return { separable_conv0, separable_conv1, separable_conv2 };\n }\n\n return {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n };\n}\n\nexport function extractParams(weights: Float32Array, numMainBlocks: number): { params: TinyXceptionParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const entry_flow_conv_in = extractConvParams(3, 32, 3, 'entry_flow/conv_in');\n const entry_flow_reduction_block_0 = extractReductionBlockParams(32, 64, 'entry_flow/reduction_block_0');\n const entry_flow_reduction_block_1 = extractReductionBlockParams(64, 128, 'entry_flow/reduction_block_1');\n\n const entry_flow = {\n conv_in: entry_flow_conv_in,\n reduction_block_0: entry_flow_reduction_block_0,\n reduction_block_1: entry_flow_reduction_block_1,\n };\n\n const middle_flow = {};\n range(numMainBlocks, 0, 1).forEach((idx) => {\n middle_flow[`main_block_${idx}`] = extractMainBlockParams(128, `middle_flow/main_block_${idx}`);\n });\n\n const exit_flow_reduction_block = extractReductionBlockParams(128, 256, 'exit_flow/reduction_block');\n const exit_flow_separable_conv = extractSeparableConvParams(256, 512, 'exit_flow/separable_conv');\n\n const exit_flow = {\n reduction_block: exit_flow_reduction_block,\n separable_conv: exit_flow_separable_conv,\n };\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { entry_flow, middle_flow, exit_flow },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport {\n disposeUnusedWeightTensors,\n extractWeightEntryFactory,\n loadSeparableConvParamsFactory,\n ParamMapping,\n} from '../common/index';\nimport { loadConvParamsFactory } from '../common/loadConvParamsFactory';\nimport { range } from '../utils/index';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction loadParamsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n const extractConvParams = loadConvParamsFactory(extractWeightEntry);\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry);\n\n function extractReductionBlockParams(mappedPrefix: string): ReductionBlockParams {\n const separable_conv0 = extractSeparableConvParams(`${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(`${mappedPrefix}/separable_conv1`);\n const expansion_conv = extractConvParams(`${mappedPrefix}/expansion_conv`);\n\n return { separable_conv0, separable_conv1, expansion_conv };\n }\n\n function extractMainBlockParams(mappedPrefix: string): MainBlockParams {\n const separable_conv0 = extractSeparableConvParams(`${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(`${mappedPrefix}/separable_conv1`);\n const separable_conv2 = extractSeparableConvParams(`${mappedPrefix}/separable_conv2`);\n\n return { separable_conv0, separable_conv1, separable_conv2 };\n }\n\n return {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n numMainBlocks: number,\n): { params: TinyXceptionParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n } = loadParamsFactory(weightMap, paramMappings);\n\n const entry_flow_conv_in = extractConvParams('entry_flow/conv_in');\n const entry_flow_reduction_block_0 = extractReductionBlockParams('entry_flow/reduction_block_0');\n const entry_flow_reduction_block_1 = extractReductionBlockParams('entry_flow/reduction_block_1');\n\n const entry_flow = {\n conv_in: entry_flow_conv_in,\n reduction_block_0: entry_flow_reduction_block_0,\n reduction_block_1: entry_flow_reduction_block_1,\n };\n\n const middle_flow = {};\n range(numMainBlocks, 0, 1).forEach((idx) => {\n middle_flow[`main_block_${idx}`] = extractMainBlockParams(`middle_flow/main_block_${idx}`);\n });\n\n const exit_flow_reduction_block = extractReductionBlockParams('exit_flow/reduction_block');\n const exit_flow_separable_conv = extractSeparableConvParams('exit_flow/separable_conv');\n\n const exit_flow = {\n reduction_block: exit_flow_reduction_block,\n separable_conv: exit_flow_separable_conv,\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params: { entry_flow, middle_flow, exit_flow }, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ConvParams, depthwiseSeparableConv } from '../common/index';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { range } from '../utils/index';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction conv(x: tf.Tensor4D, params: ConvParams, stride: [number, number]): tf.Tensor4D {\n return tf.add(tf.conv2d(x, params.filters, stride, 'same'), params.bias);\n}\n\nfunction reductionBlock(x: tf.Tensor4D, params: ReductionBlockParams, isActivateInput: boolean = true): tf.Tensor4D {\n let out = isActivateInput ? tf.relu(x) : x;\n out = depthwiseSeparableConv(out, params.separable_conv0, [1, 1]);\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1]);\n out = tf.maxPool(out, [3, 3], [2, 2], 'same');\n out = tf.add(out, conv(x, params.expansion_conv, [2, 2]));\n return out;\n}\n\nfunction mainBlock(x: tf.Tensor4D, params: MainBlockParams): tf.Tensor4D {\n let out = depthwiseSeparableConv(tf.relu(x), params.separable_conv0, [1, 1]);\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1]);\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv2, [1, 1]);\n out = tf.add(out, x);\n return out;\n}\n\nexport class TinyXception extends NeuralNetwork {\n private _numMainBlocks: number\n\n constructor(numMainBlocks: number) {\n super('TinyXception');\n this._numMainBlocks = numMainBlocks;\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('TinyXception - load model before inference');\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D;\n\n let out = tf.relu(conv(normalized, params.entry_flow.conv_in, [2, 2]));\n out = reductionBlock(out, params.entry_flow.reduction_block_0, false);\n out = reductionBlock(out, params.entry_flow.reduction_block_1);\n\n range(this._numMainBlocks, 0, 1).forEach((idx) => {\n out = mainBlock(out, params.middle_flow[`main_block_${idx}`]);\n });\n\n out = reductionBlock(out, params.exit_flow.reduction_block);\n out = tf.relu(depthwiseSeparableConv(out, params.exit_flow.separable_conv, [1, 1]));\n return out;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n protected getDefaultModelName(): string {\n return 'tiny_xception_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this._numMainBlocks);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights, this._numMainBlocks);\n }\n}\n", "import { extractFCParamsFactory, extractWeightsFactory, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const extractFCParams = extractFCParamsFactory(extractWeights, paramMappings);\n\n const age = extractFCParams(512, 1, 'fc/age');\n const gender = extractFCParams(512, 2, 'fc/gender');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { fc: { age, gender } },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport {\n disposeUnusedWeightTensors, extractWeightEntryFactory, FCParams, ParamMapping,\n} from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractFcParams(prefix: string): FCParams {\n const weights = extractWeightEntry(`${prefix}/weights`, 2);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n return { weights, bias };\n }\n\n const params = {\n fc: {\n age: extractFcParams('fc/age'),\n gender: extractFcParams('fc/gender'),\n },\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { FCParams } from '../common/index';\n\n// eslint-disable-next-line no-shadow\nexport enum Gender {\n // eslint-disable-next-line no-unused-vars\n FEMALE = 'female',\n // eslint-disable-next-line no-unused-vars\n MALE = 'male'\n}\n\nexport type AgeAndGenderPrediction = {\n age: number\n gender: Gender\n genderProbability: number\n}\n\nexport type NetOutput = { age: tf.Tensor1D, gender: tf.Tensor2D }\n\nexport type NetParams = {\n fc: {\n age: FCParams\n gender: FCParams\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { seperateWeightMaps } from '../faceProcessor/util';\nimport { TinyXception } from '../xception/TinyXception';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport {\n AgeAndGenderPrediction, Gender, NetOutput, NetParams,\n} from './types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\n\nexport class AgeGenderNet extends NeuralNetwork {\n private _faceFeatureExtractor: TinyXception\n\n constructor(faceFeatureExtractor: TinyXception = new TinyXception(2)) {\n super('AgeGenderNet');\n this._faceFeatureExtractor = faceFeatureExtractor;\n }\n\n public get faceFeatureExtractor(): TinyXception {\n return this._faceFeatureExtractor;\n }\n\n public runNet(input: NetInput | tf.Tensor4D): NetOutput {\n const { params } = this;\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`);\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input;\n\n const pooled = tf.avgPool(bottleneckFeatures, [7, 7], [2, 2], 'valid').as2D(bottleneckFeatures.shape[0], -1);\n const age = fullyConnectedLayer(pooled, params.fc.age).as1D();\n const gender = fullyConnectedLayer(pooled, params.fc.gender);\n return { age, gender };\n });\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): NetOutput {\n return tf.tidy(() => {\n const { age, gender } = this.runNet(input);\n return { age, gender: tf.softmax(gender) };\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async predictAgeAndGender(input: TNetInput): Promise {\n const netInput = await toNetInput(input);\n const out = await this.forwardInput(netInput);\n\n const ages = tf.unstack(out.age);\n const genders = tf.unstack(out.gender);\n const ageAndGenderTensors = ages.map((ageTensor, i) => ({\n ageTensor,\n genderTensor: genders[i],\n }));\n\n const predictionsByBatch = await Promise.all(\n ageAndGenderTensors.map(async ({ ageTensor, genderTensor }) => {\n const age = (await ageTensor.data())[0];\n const probMale = (await genderTensor.data())[0];\n const isMale = probMale > 0.5;\n const gender = isMale ? Gender.MALE : Gender.FEMALE;\n const genderProbability = isMale ? probMale : (1 - probMale);\n\n ageTensor.dispose();\n genderTensor.dispose();\n return { age, gender, genderProbability };\n }),\n );\n out.age.dispose();\n out.gender.dispose();\n\n return netInput.isBatchInput ? predictionsByBatch as AgeAndGenderPrediction[] : predictionsByBatch[0] as AgeAndGenderPrediction;\n }\n\n protected getDefaultModelName(): string {\n return 'age_gender_model';\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose);\n super.dispose(throwOnRedispose);\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights);\n this._params = params;\n this._paramMappings = paramMappings;\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights);\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap);\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap);\n\n return extractParamsFromWeigthMap(classifierMap);\n }\n\n protected extractParams(weights: Float32Array) {\n const classifierWeightSize = (512 * 1 + 1) + (512 * 2 + 2);\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize);\n const classifierWeights = weights.slice(weights.length - classifierWeightSize);\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights);\n return this.extractClassifierParams(classifierWeights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { IDimensions, Point } from '../classes/index';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractorParams, TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { isEven } from '../utils/index';\n\nexport abstract class FaceLandmark68NetBase<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends FaceProcessor {\n public postProcess(output: tf.Tensor2D, inputSize: number, originalDimensions: IDimensions[]): tf.Tensor2D {\n const inputDimensions = originalDimensions.map(({ width, height }) => {\n const scale = inputSize / Math.max(height, width);\n return {\n width: width * scale,\n height: height * scale,\n };\n });\n\n const batchSize = inputDimensions.length;\n\n return tf.tidy(() => {\n const createInterleavedTensor = (fillX: number, fillY: number) => tf.stack([tf.fill([68], fillX, 'float32'), tf.fill([68], fillY, 'float32')], 1).as2D(1, 136).as1D();\n\n // eslint-disable-next-line no-unused-vars\n const getPadding = (batchIdx: number, cond: (w: number, h: number) => boolean): number => {\n const { width, height } = inputDimensions[batchIdx];\n return cond(width, height) ? Math.abs(width - height) / 2 : 0;\n };\n\n const getPaddingX = (batchIdx: number) => getPadding(batchIdx, (w, h) => w < h);\n const getPaddingY = (batchIdx: number) => getPadding(batchIdx, (w, h) => h < w);\n\n const landmarkTensors = output\n .mul(tf.fill([batchSize, 136], inputSize, 'float32'))\n .sub(tf.stack(Array.from(Array(batchSize), (_, batchIdx) => createInterleavedTensor(\n getPaddingX(batchIdx),\n getPaddingY(batchIdx),\n ))))\n .div(tf.stack(Array.from(Array(batchSize), (_, batchIdx) => createInterleavedTensor(\n inputDimensions[batchIdx].width,\n inputDimensions[batchIdx].height,\n ))));\n\n return landmarkTensors as tf.Tensor2D;\n });\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n return tf.tidy(() => {\n const out = this.runNet(input);\n return this.postProcess(\n out,\n input.inputSize as number,\n input.inputDimensions.map(([height, width]) => ({ height, width })),\n );\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async detectLandmarks(input: TNetInput): Promise {\n const netInput = await toNetInput(input);\n const landmarkTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput)),\n );\n\n const landmarksForBatch = await Promise.all(landmarkTensors.map(\n async (landmarkTensor, batchIdx) => {\n const landmarksArray = Array.from(await landmarkTensor.data());\n const xCoords = landmarksArray.filter((_, i) => isEven(i));\n const yCoords = landmarksArray.filter((_, i) => !isEven(i));\n\n return new FaceLandmarks68(\n Array(68).fill(0).map((_, i) => new Point(xCoords[i] as number, yCoords[i] as number)),\n {\n height: netInput.getInputHeight(batchIdx),\n width: netInput.getInputWidth(batchIdx),\n },\n );\n },\n ));\n\n landmarkTensors.forEach((t) => t.dispose());\n\n return netInput.isBatchInput ? landmarksForBatch as FaceLandmarks68[] : landmarksForBatch[0] as FaceLandmarks68;\n }\n\n protected getClassifierChannelsOut(): number {\n return 136;\n }\n}\n", "import { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';\nimport { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceLandmark68NetBase } from './FaceLandmark68NetBase';\n\nexport class FaceLandmark68Net extends FaceLandmark68NetBase {\n constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) {\n super('FaceLandmark68Net', faceFeatureExtractor);\n }\n\n protected getDefaultModelName(): string {\n return 'face_landmark_68_model';\n }\n\n protected getClassifierChannelsIn(): number {\n return 256;\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { disposeUnusedWeightTensors, ParamMapping } from '../common/index';\nimport { loadParamsFactory } from './loadParamsFactory';\nimport { TinyFaceFeatureExtractorParams } from './types';\n\nexport function extractParamsFromWeigthMapTiny(\n weightMap: tf.NamedTensorMap,\n): { params: TinyFaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractDenseBlock3Params,\n } = loadParamsFactory(weightMap, paramMappings);\n\n const params = {\n dense0: extractDenseBlock3Params('dense0', true),\n dense1: extractDenseBlock3Params('dense1'),\n dense2: extractDenseBlock3Params('dense2'),\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import { extractWeightsFactory, ParamMapping } from '../common/index';\nimport { extractorsFactory } from './extractorsFactory';\nimport { TinyFaceFeatureExtractorParams } from './types';\n\nexport function extractParamsTiny(weights: Float32Array): { params: TinyFaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractDenseBlock3Params,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const dense0 = extractDenseBlock3Params(3, 32, 'dense0', true);\n const dense1 = extractDenseBlock3Params(32, 64, 'dense1');\n const dense2 = extractDenseBlock3Params(64, 128, 'dense2');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { dense0, dense1, dense2 },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock3 } from './denseBlock';\nimport { extractParamsFromWeigthMapTiny } from './extractParamsFromWeigthMapTiny';\nimport { extractParamsTiny } from './extractParamsTiny';\nimport { IFaceFeatureExtractor, TinyFaceFeatureExtractorParams } from './types';\n\nexport class TinyFaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n constructor() {\n super('TinyFaceFeatureExtractor');\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('TinyFaceFeatureExtractor - load model before inference');\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D;\n\n let out = denseBlock3(normalized, params.dense0, true);\n out = denseBlock3(out, params.dense1);\n out = denseBlock3(out, params.dense2);\n out = tf.avgPool(out, [14, 14], [2, 2], 'valid');\n\n return out;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_tiny_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMapTiny(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParamsTiny(weights);\n }\n}\n", "import { TinyFaceFeatureExtractor } from '../faceFeatureExtractor/TinyFaceFeatureExtractor';\nimport { TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceLandmark68NetBase } from './FaceLandmark68NetBase';\n\nexport class FaceLandmark68TinyNet extends FaceLandmark68NetBase {\n constructor(faceFeatureExtractor: TinyFaceFeatureExtractor = new TinyFaceFeatureExtractor()) {\n super('FaceLandmark68TinyNet', faceFeatureExtractor);\n }\n\n protected getDefaultModelName(): string {\n return 'face_landmark_68_tiny_model';\n }\n\n protected getClassifierChannelsIn(): number {\n return 128;\n }\n}\n", "import { FaceLandmark68Net } from './FaceLandmark68Net';\n\nexport * from './FaceLandmark68Net';\nexport * from './FaceLandmark68TinyNet';\n\nexport class FaceLandmarkNet extends FaceLandmark68Net {}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ScaleLayerParams } from './types';\n\nexport function scale(x: tf.Tensor4D, params: ScaleLayerParams): tf.Tensor4D {\n return tf.add(tf.mul(x, params.weights), params.biases);\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { scale } from './scaleLayer';\nimport { ConvLayerParams } from './types';\n\nfunction convLayer(\n x: tf.Tensor4D,\n params: ConvLayerParams,\n strides: [number, number],\n withRelu: boolean,\n padding: 'valid' | 'same' = 'same',\n): tf.Tensor4D {\n const { filters, bias } = params.conv;\n\n let out = tf.conv2d(x, filters, strides, padding);\n out = tf.add(out, bias);\n out = scale(out, params.scale);\n return withRelu ? tf.relu(out) : out;\n}\n\nexport function conv(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], true);\n}\n\nexport function convNoRelu(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], false);\n}\n\nexport function convDown(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [2, 2], true, 'valid');\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport {\n ConvParams, extractWeightsFactory, ExtractWeightsFunction, ParamMapping,\n} from '../common/index';\nimport { isFloat } from '../utils/index';\nimport {\n ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams,\n} from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n function extractFilterValues(numFilterValues: number, numFilters: number, filterSize: number): tf.Tensor4D {\n const weights = extractWeights(numFilterValues);\n const depth = weights.length / (numFilters * filterSize * filterSize);\n\n if (isFloat(depth)) {\n throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`);\n }\n\n return tf.tidy(\n () => tf.transpose(\n tf.tensor4d(weights, [numFilters, depth, filterSize, filterSize]),\n [2, 3, 1, 0],\n ),\n );\n }\n\n function extractConvParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n ): ConvParams {\n const filters = extractFilterValues(numFilterValues, numFilters, filterSize);\n const bias = tf.tensor1d(extractWeights(numFilters));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return { filters, bias };\n }\n\n function extractScaleLayerParams(numWeights: number, mappedPrefix: string): ScaleLayerParams {\n const weights = tf.tensor1d(extractWeights(numWeights));\n const biases = tf.tensor1d(extractWeights(numWeights));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/weights` },\n { paramPath: `${mappedPrefix}/biases` },\n );\n\n return {\n weights,\n biases,\n };\n }\n\n function extractConvLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n ): ConvLayerParams {\n const conv = extractConvParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv`);\n const scale = extractScaleLayerParams(numFilters, `${mappedPrefix}/scale`);\n\n return { conv, scale };\n }\n\n function extractResidualLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n isDown: boolean = false,\n ): ResidualLayerParams {\n const conv1 = extractConvLayerParams((isDown ? 0.5 : 1) * numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv1`);\n const conv2 = extractConvLayerParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv2`);\n\n return { conv1, conv2 };\n }\n\n return {\n extractConvLayerParams,\n extractResidualLayerParams,\n };\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvLayerParams,\n extractResidualLayerParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const conv32_down = extractConvLayerParams(4704, 32, 7, 'conv32_down');\n const conv32_1 = extractResidualLayerParams(9216, 32, 3, 'conv32_1');\n const conv32_2 = extractResidualLayerParams(9216, 32, 3, 'conv32_2');\n const conv32_3 = extractResidualLayerParams(9216, 32, 3, 'conv32_3');\n\n const conv64_down = extractResidualLayerParams(36864, 64, 3, 'conv64_down', true);\n const conv64_1 = extractResidualLayerParams(36864, 64, 3, 'conv64_1');\n const conv64_2 = extractResidualLayerParams(36864, 64, 3, 'conv64_2');\n const conv64_3 = extractResidualLayerParams(36864, 64, 3, 'conv64_3');\n\n const conv128_down = extractResidualLayerParams(147456, 128, 3, 'conv128_down', true);\n const conv128_1 = extractResidualLayerParams(147456, 128, 3, 'conv128_1');\n const conv128_2 = extractResidualLayerParams(147456, 128, 3, 'conv128_2');\n\n const conv256_down = extractResidualLayerParams(589824, 256, 3, 'conv256_down', true);\n const conv256_1 = extractResidualLayerParams(589824, 256, 3, 'conv256_1');\n const conv256_2 = extractResidualLayerParams(589824, 256, 3, 'conv256_2');\n const conv256_down_out = extractResidualLayerParams(589824, 256, 3, 'conv256_down_out');\n\n const fc = tf.tidy(\n () => tf.transpose(tf.tensor2d(extractWeights(256 * 128), [128, 256]), [1, 0]),\n );\n paramMappings.push({ paramPath: 'fc' });\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n const params = {\n conv32_down,\n conv32_1,\n conv32_2,\n conv32_3,\n conv64_down,\n conv64_1,\n conv64_2,\n conv64_3,\n conv128_down,\n conv128_1,\n conv128_2,\n conv256_down,\n conv256_1,\n conv256_2,\n conv256_down_out,\n fc,\n };\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { disposeUnusedWeightTensors, extractWeightEntryFactory, ParamMapping } from '../common/index';\nimport { isTensor2D } from '../utils/index';\nimport {\n ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams,\n} from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractScaleLayerParams(prefix: string): ScaleLayerParams {\n const weights = extractWeightEntry(`${prefix}/scale/weights`, 1);\n const biases = extractWeightEntry(`${prefix}/scale/biases`, 1);\n\n return { weights, biases };\n }\n\n function extractConvLayerParams(prefix: string): ConvLayerParams {\n const filters = extractWeightEntry(`${prefix}/conv/filters`, 4);\n const bias = extractWeightEntry(`${prefix}/conv/bias`, 1);\n const scale = extractScaleLayerParams(prefix);\n\n return { conv: { filters, bias }, scale };\n }\n\n function extractResidualLayerParams(prefix: string): ResidualLayerParams {\n return {\n conv1: extractConvLayerParams(`${prefix}/conv1`),\n conv2: extractConvLayerParams(`${prefix}/conv2`),\n };\n }\n\n return {\n extractConvLayerParams,\n extractResidualLayerParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvLayerParams,\n extractResidualLayerParams,\n } = extractorsFactory(weightMap, paramMappings);\n\n const conv32_down = extractConvLayerParams('conv32_down');\n const conv32_1 = extractResidualLayerParams('conv32_1');\n const conv32_2 = extractResidualLayerParams('conv32_2');\n const conv32_3 = extractResidualLayerParams('conv32_3');\n\n const conv64_down = extractResidualLayerParams('conv64_down');\n const conv64_1 = extractResidualLayerParams('conv64_1');\n const conv64_2 = extractResidualLayerParams('conv64_2');\n const conv64_3 = extractResidualLayerParams('conv64_3');\n\n const conv128_down = extractResidualLayerParams('conv128_down');\n const conv128_1 = extractResidualLayerParams('conv128_1');\n const conv128_2 = extractResidualLayerParams('conv128_2');\n\n const conv256_down = extractResidualLayerParams('conv256_down');\n const conv256_1 = extractResidualLayerParams('conv256_1');\n const conv256_2 = extractResidualLayerParams('conv256_2');\n const conv256_down_out = extractResidualLayerParams('conv256_down_out');\n\n const { fc } = weightMap;\n paramMappings.push({ originalPath: 'fc', paramPath: 'fc' });\n\n if (!isTensor2D(fc)) {\n throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${fc}`);\n }\n\n const params = {\n conv32_down,\n conv32_1,\n conv32_2,\n conv32_3,\n conv64_down,\n conv64_1,\n conv64_2,\n conv64_3,\n conv128_down,\n conv128_1,\n conv128_2,\n conv256_down,\n conv256_1,\n conv256_2,\n conv256_down_out,\n fc,\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { conv, convDown, convNoRelu } from './convLayer';\nimport { ResidualLayerParams } from './types';\n\nexport function residual(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = conv(x, params.conv1);\n out = convNoRelu(out, params.conv2);\n out = tf.add(out, x);\n out = tf.relu(out);\n return out;\n}\n\nexport function residualDown(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = convDown(x, params.conv1);\n out = convNoRelu(out, params.conv2);\n\n let pooled = tf.avgPool(x, 2, 2, 'valid') as tf.Tensor4D;\n const zeros = tf.zeros(pooled.shape);\n const isPad = pooled.shape[3] !== out.shape[3];\n const isAdjustShape = pooled.shape[1] !== out.shape[1] || pooled.shape[2] !== out.shape[2];\n\n if (isAdjustShape) {\n const padShapeX = [...out.shape] as [number, number, number, number];\n padShapeX[1] = 1;\n const zerosW = tf.zeros(padShapeX);\n out = tf.concat([out, zerosW], 1);\n\n const padShapeY = [...out.shape] as [number, number, number, number];\n padShapeY[2] = 1;\n const zerosH = tf.zeros(padShapeY);\n out = tf.concat([out, zerosH], 2);\n }\n\n pooled = isPad ? tf.concat([pooled, zeros], 3) : pooled;\n out = tf.add(pooled, out) as tf.Tensor4D;\n\n out = tf.relu(out);\n return out;\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { convDown } from './convLayer';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { residual, residualDown } from './residualLayer';\nimport { NetParams } from './types';\n\nexport class FaceRecognitionNet extends NeuralNetwork {\n constructor() {\n super('FaceRecognitionNet');\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n const { params } = this;\n\n if (!params) {\n throw new Error('FaceRecognitionNet - load model before inference');\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(150, true).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(150, true), 'float32');\n\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D;\n\n let out = convDown(normalized, params.conv32_down);\n out = tf.maxPool(out, 3, 2, 'valid');\n\n out = residual(out, params.conv32_1);\n out = residual(out, params.conv32_2);\n out = residual(out, params.conv32_3);\n\n out = residualDown(out, params.conv64_down);\n out = residual(out, params.conv64_1);\n out = residual(out, params.conv64_2);\n out = residual(out, params.conv64_3);\n\n out = residualDown(out, params.conv128_down);\n out = residual(out, params.conv128_1);\n out = residual(out, params.conv128_2);\n\n out = residualDown(out, params.conv256_down);\n out = residual(out, params.conv256_1);\n out = residual(out, params.conv256_2);\n out = residualDown(out, params.conv256_down_out);\n\n const globalAvg = out.mean([1, 2]) as tf.Tensor2D;\n const fullyConnected = tf.matMul(globalAvg, params.fc);\n\n return fullyConnected;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async computeFaceDescriptor(input: TNetInput): Promise {\n const netInput = await toNetInput(input);\n\n const faceDescriptorTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput)),\n );\n\n const faceDescriptorsForBatch = await Promise.all(faceDescriptorTensors.map(\n (t) => t.data(),\n )) as Float32Array[];\n\n faceDescriptorTensors.forEach((t) => t.dispose());\n\n return netInput.isBatchInput\n ? faceDescriptorsForBatch\n : faceDescriptorsForBatch[0];\n }\n\n protected getDefaultModelName(): string {\n return 'face_recognition_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights);\n }\n}\n", "import { FaceRecognitionNet } from './FaceRecognitionNet';\n\nexport * from './FaceRecognitionNet';\n\nexport function createFaceRecognitionNet(weights: Float32Array) {\n const net = new FaceRecognitionNet();\n net.extractWeights(weights);\n return net;\n}\n", "export type WithFaceDescriptor = TSource & {\n descriptor: Float32Array\n}\n\nexport function extendWithFaceDescriptor<\n TSource\n>(\n sourceObj: TSource,\n descriptor: Float32Array,\n): WithFaceDescriptor {\n const extension = { descriptor };\n return { ...sourceObj, ...extension };\n}\n", "export type WithAge = TSource & {\n age: number\n}\n\nexport function isWithAge(obj: any): obj is WithAge<{}> {\n return typeof obj.age === 'number';\n}\n\nexport function extendWithAge<\n TSource\n>(\n sourceObj: TSource,\n age: number,\n): WithAge {\n const extension = { age };\n return { ...sourceObj, ...extension };\n}\n", "import { Gender } from '../ageGenderNet/types';\nimport { isValidProbablitiy } from '../utils/index';\n\nexport type WithGender = TSource & {\n gender: Gender\n genderProbability: number\n}\n\nexport function isWithGender(obj: any): obj is WithGender<{}> {\n return (obj.gender === Gender.MALE || obj.gender === Gender.FEMALE)\n && isValidProbablitiy(obj.genderProbability);\n}\n\nexport function extendWithGender<\n TSource\n>(\n sourceObj: TSource,\n gender: Gender,\n genderProbability: number,\n): WithGender {\n const extension = { gender, genderProbability };\n return { ...sourceObj, ...extension };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport {\n ExtractWeightsFunction, ParamMapping, ConvParams, extractWeightsFactory,\n} from '../common/index';\nimport {\n MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams,\n} from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n function extractDepthwiseConvParams(numChannels: number, mappedPrefix: string): MobileNetV1.DepthwiseConvParams {\n const filters = tf.tensor4d(extractWeights(3 * 3 * numChannels), [3, 3, numChannels, 1]);\n const batch_norm_scale = tf.tensor1d(extractWeights(numChannels));\n const batch_norm_offset = tf.tensor1d(extractWeights(numChannels));\n const batch_norm_mean = tf.tensor1d(extractWeights(numChannels));\n const batch_norm_variance = tf.tensor1d(extractWeights(numChannels));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/batch_norm_scale` },\n { paramPath: `${mappedPrefix}/batch_norm_offset` },\n { paramPath: `${mappedPrefix}/batch_norm_mean` },\n { paramPath: `${mappedPrefix}/batch_norm_variance` },\n );\n\n return {\n filters,\n batch_norm_scale,\n batch_norm_offset,\n batch_norm_mean,\n batch_norm_variance,\n };\n }\n\n function extractConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n isPointwiseConv?: boolean,\n ): ConvParams {\n const filters = tf.tensor4d(\n extractWeights(channelsIn * channelsOut * filterSize * filterSize),\n [filterSize, filterSize, channelsIn, channelsOut],\n );\n const bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/${isPointwiseConv ? 'batch_norm_offset' : 'bias'}` },\n );\n\n return { filters, bias };\n }\n\n function extractPointwiseConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n ): PointwiseConvParams {\n const {\n filters,\n bias,\n } = extractConvParams(channelsIn, channelsOut, filterSize, mappedPrefix, true);\n\n return {\n filters,\n batch_norm_offset: bias,\n };\n }\n\n function extractConvPairParams(\n channelsIn: number,\n channelsOut: number,\n mappedPrefix: string,\n ): MobileNetV1.ConvPairParams {\n const depthwise_conv = extractDepthwiseConvParams(channelsIn, `${mappedPrefix}/depthwise_conv`);\n const pointwise_conv = extractPointwiseConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/pointwise_conv`);\n\n return { depthwise_conv, pointwise_conv };\n }\n\n function extractMobilenetV1Params(): MobileNetV1.Params {\n const conv_0 = extractPointwiseConvParams(3, 32, 3, 'mobilenetv1/conv_0');\n\n const conv_1 = extractConvPairParams(32, 64, 'mobilenetv1/conv_1');\n const conv_2 = extractConvPairParams(64, 128, 'mobilenetv1/conv_2');\n const conv_3 = extractConvPairParams(128, 128, 'mobilenetv1/conv_3');\n const conv_4 = extractConvPairParams(128, 256, 'mobilenetv1/conv_4');\n const conv_5 = extractConvPairParams(256, 256, 'mobilenetv1/conv_5');\n const conv_6 = extractConvPairParams(256, 512, 'mobilenetv1/conv_6');\n const conv_7 = extractConvPairParams(512, 512, 'mobilenetv1/conv_7');\n const conv_8 = extractConvPairParams(512, 512, 'mobilenetv1/conv_8');\n const conv_9 = extractConvPairParams(512, 512, 'mobilenetv1/conv_9');\n const conv_10 = extractConvPairParams(512, 512, 'mobilenetv1/conv_10');\n const conv_11 = extractConvPairParams(512, 512, 'mobilenetv1/conv_11');\n const conv_12 = extractConvPairParams(512, 1024, 'mobilenetv1/conv_12');\n const conv_13 = extractConvPairParams(1024, 1024, 'mobilenetv1/conv_13');\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n conv_8,\n conv_9,\n conv_10,\n conv_11,\n conv_12,\n conv_13,\n };\n }\n\n function extractPredictionLayerParams(): PredictionLayerParams {\n const conv_0 = extractPointwiseConvParams(1024, 256, 1, 'prediction_layer/conv_0');\n const conv_1 = extractPointwiseConvParams(256, 512, 3, 'prediction_layer/conv_1');\n const conv_2 = extractPointwiseConvParams(512, 128, 1, 'prediction_layer/conv_2');\n const conv_3 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_3');\n const conv_4 = extractPointwiseConvParams(256, 128, 1, 'prediction_layer/conv_4');\n const conv_5 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_5');\n const conv_6 = extractPointwiseConvParams(256, 64, 1, 'prediction_layer/conv_6');\n const conv_7 = extractPointwiseConvParams(64, 128, 3, 'prediction_layer/conv_7');\n\n const box_encoding_0_predictor = extractConvParams(512, 12, 1, 'prediction_layer/box_predictor_0/box_encoding_predictor');\n const class_predictor_0 = extractConvParams(512, 9, 1, 'prediction_layer/box_predictor_0/class_predictor');\n const box_encoding_1_predictor = extractConvParams(1024, 24, 1, 'prediction_layer/box_predictor_1/box_encoding_predictor');\n const class_predictor_1 = extractConvParams(1024, 18, 1, 'prediction_layer/box_predictor_1/class_predictor');\n const box_encoding_2_predictor = extractConvParams(512, 24, 1, 'prediction_layer/box_predictor_2/box_encoding_predictor');\n const class_predictor_2 = extractConvParams(512, 18, 1, 'prediction_layer/box_predictor_2/class_predictor');\n const box_encoding_3_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_3/box_encoding_predictor');\n const class_predictor_3 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_3/class_predictor');\n const box_encoding_4_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_4/box_encoding_predictor');\n const class_predictor_4 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_4/class_predictor');\n const box_encoding_5_predictor = extractConvParams(128, 24, 1, 'prediction_layer/box_predictor_5/box_encoding_predictor');\n const class_predictor_5 = extractConvParams(128, 18, 1, 'prediction_layer/box_predictor_5/class_predictor');\n\n const box_predictor_0 = {\n box_encoding_predictor: box_encoding_0_predictor,\n class_predictor: class_predictor_0,\n };\n const box_predictor_1 = {\n box_encoding_predictor: box_encoding_1_predictor,\n class_predictor: class_predictor_1,\n };\n const box_predictor_2 = {\n box_encoding_predictor: box_encoding_2_predictor,\n class_predictor: class_predictor_2,\n };\n const box_predictor_3 = {\n box_encoding_predictor: box_encoding_3_predictor,\n class_predictor: class_predictor_3,\n };\n const box_predictor_4 = {\n box_encoding_predictor: box_encoding_4_predictor,\n class_predictor: class_predictor_4,\n };\n const box_predictor_5 = {\n box_encoding_predictor: box_encoding_5_predictor,\n class_predictor: class_predictor_5,\n };\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n box_predictor_0,\n box_predictor_1,\n box_predictor_2,\n box_predictor_3,\n box_predictor_4,\n box_predictor_5,\n };\n }\n\n return {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n };\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const mobilenetv1 = extractMobilenetV1Params();\n const prediction_layer = extractPredictionLayerParams();\n const extra_dim = tf.tensor3d(\n extractWeights(5118 * 4),\n [1, 5118, 4],\n );\n const output_layer = {\n extra_dim,\n };\n\n paramMappings.push({ paramPath: 'output_layer/extra_dim' });\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n params: {\n mobilenetv1,\n prediction_layer,\n output_layer,\n },\n paramMappings,\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport {\n ConvParams, disposeUnusedWeightTensors, extractWeightEntryFactory, ParamMapping,\n} from '../common/index';\nimport { isTensor3D } from '../utils/index';\nimport {\n BoxPredictionParams, MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams,\n} from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractPointwiseConvParams(prefix: string, idx: number, mappedPrefix: string): PointwiseConvParams {\n const filters = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`, 4, `${mappedPrefix}/filters`);\n const batch_norm_offset = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`, 1, `${mappedPrefix}/batch_norm_offset`);\n\n return { filters, batch_norm_offset };\n }\n\n function extractConvPairParams(idx: number): MobileNetV1.ConvPairParams {\n const mappedPrefix = `mobilenetv1/conv_${idx}`;\n const prefixDepthwiseConv = `MobilenetV1/Conv2d_${idx}_depthwise`;\n const mappedPrefixDepthwiseConv = `${mappedPrefix}/depthwise_conv`;\n const mappedPrefixPointwiseConv = `${mappedPrefix}/pointwise_conv`;\n\n const filters = extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`, 4, `${mappedPrefixDepthwiseConv}/filters`);\n const batch_norm_scale = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_scale`);\n const batch_norm_offset = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_offset`);\n const batch_norm_mean = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_mean`);\n const batch_norm_variance = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_variance`);\n\n return {\n depthwise_conv: {\n filters,\n batch_norm_scale,\n batch_norm_offset,\n batch_norm_mean,\n batch_norm_variance,\n },\n pointwise_conv: extractPointwiseConvParams('MobilenetV1', idx, mappedPrefixPointwiseConv),\n };\n }\n\n function extractMobilenetV1Params(): MobileNetV1.Params {\n return {\n conv_0: extractPointwiseConvParams('MobilenetV1', 0, 'mobilenetv1/conv_0'),\n conv_1: extractConvPairParams(1),\n conv_2: extractConvPairParams(2),\n conv_3: extractConvPairParams(3),\n conv_4: extractConvPairParams(4),\n conv_5: extractConvPairParams(5),\n conv_6: extractConvPairParams(6),\n conv_7: extractConvPairParams(7),\n conv_8: extractConvPairParams(8),\n conv_9: extractConvPairParams(9),\n conv_10: extractConvPairParams(10),\n conv_11: extractConvPairParams(11),\n conv_12: extractConvPairParams(12),\n conv_13: extractConvPairParams(13),\n };\n }\n\n function extractConvParams(prefix: string, mappedPrefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/weights`, 4, `${mappedPrefix}/filters`);\n const bias = extractWeightEntry(`${prefix}/biases`, 1, `${mappedPrefix}/bias`);\n\n return { filters, bias };\n }\n\n function extractBoxPredictorParams(idx: number): BoxPredictionParams {\n const box_encoding_predictor = extractConvParams(\n `Prediction/BoxPredictor_${idx}/BoxEncodingPredictor`,\n `prediction_layer/box_predictor_${idx}/box_encoding_predictor`,\n );\n const class_predictor = extractConvParams(\n `Prediction/BoxPredictor_${idx}/ClassPredictor`,\n `prediction_layer/box_predictor_${idx}/class_predictor`,\n );\n\n return { box_encoding_predictor, class_predictor };\n }\n\n function extractPredictionLayerParams(): PredictionLayerParams {\n return {\n conv_0: extractPointwiseConvParams('Prediction', 0, 'prediction_layer/conv_0'),\n conv_1: extractPointwiseConvParams('Prediction', 1, 'prediction_layer/conv_1'),\n conv_2: extractPointwiseConvParams('Prediction', 2, 'prediction_layer/conv_2'),\n conv_3: extractPointwiseConvParams('Prediction', 3, 'prediction_layer/conv_3'),\n conv_4: extractPointwiseConvParams('Prediction', 4, 'prediction_layer/conv_4'),\n conv_5: extractPointwiseConvParams('Prediction', 5, 'prediction_layer/conv_5'),\n conv_6: extractPointwiseConvParams('Prediction', 6, 'prediction_layer/conv_6'),\n conv_7: extractPointwiseConvParams('Prediction', 7, 'prediction_layer/conv_7'),\n box_predictor_0: extractBoxPredictorParams(0),\n box_predictor_1: extractBoxPredictorParams(1),\n box_predictor_2: extractBoxPredictorParams(2),\n box_predictor_3: extractBoxPredictorParams(3),\n box_predictor_4: extractBoxPredictorParams(4),\n box_predictor_5: extractBoxPredictorParams(5),\n };\n }\n\n return {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n } = extractorsFactory(weightMap, paramMappings);\n\n const extra_dim = weightMap['Output/extra_dim'];\n paramMappings.push({ originalPath: 'Output/extra_dim', paramPath: 'output_layer/extra_dim' });\n\n if (!isTensor3D(extra_dim)) {\n throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`);\n }\n\n const params = {\n mobilenetv1: extractMobilenetV1Params(),\n prediction_layer: extractPredictionLayerParams(),\n output_layer: {\n extra_dim,\n },\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { PointwiseConvParams } from './types';\n\nexport function pointwiseConvLayer(\n x: tf.Tensor4D,\n params: PointwiseConvParams,\n strides: [number, number],\n) {\n return tf.tidy(() => {\n let out = tf.conv2d(x, params.filters, strides, 'same');\n out = tf.add(out, params.batch_norm_offset);\n return tf.clipByValue(out, 0, 6);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { MobileNetV1 } from './types';\n\nconst epsilon = 0.0010000000474974513;\n\nfunction depthwiseConvLayer(\n x: tf.Tensor4D,\n params: MobileNetV1.DepthwiseConvParams,\n strides: [number, number],\n) {\n return tf.tidy(() => {\n let out = tf.depthwiseConv2d(x, params.filters, strides, 'same');\n out = tf.batchNorm(\n out,\n params.batch_norm_mean,\n params.batch_norm_variance,\n params.batch_norm_offset,\n params.batch_norm_scale,\n epsilon,\n );\n return tf.clipByValue(out, 0, 6);\n });\n}\n\nfunction getStridesForLayerIdx(layerIdx: number): [number, number] {\n return [2, 4, 6, 12].some((idx) => idx === layerIdx) ? [2, 2] : [1, 1];\n}\n\nexport function mobileNetV1(x: tf.Tensor4D, params: MobileNetV1.Params) {\n return tf.tidy(() => {\n let conv11;\n let out = pointwiseConvLayer(x, params.conv_0, [2, 2]);\n\n const convPairParams = [\n params.conv_1,\n params.conv_2,\n params.conv_3,\n params.conv_4,\n params.conv_5,\n params.conv_6,\n params.conv_7,\n params.conv_8,\n params.conv_9,\n params.conv_10,\n params.conv_11,\n params.conv_12,\n params.conv_13,\n ];\n\n convPairParams.forEach((param, i) => {\n const layerIdx = i + 1;\n const depthwiseConvStrides = getStridesForLayerIdx(layerIdx);\n out = depthwiseConvLayer(out, param.depthwise_conv, depthwiseConvStrides);\n out = pointwiseConvLayer(out, param.pointwise_conv, [1, 1]);\n if (layerIdx === 11) {\n conv11 = out;\n }\n });\n\n if (conv11 === null) {\n throw new Error('mobileNetV1 - output of conv layer 11 is null');\n }\n\n return {\n out,\n conv11: conv11 as any,\n };\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nfunction IOU(boxes: tf.Tensor2D, i: number, j: number) {\n const boxesData = boxes.arraySync();\n const yminI = Math.min(boxesData[i][0], boxesData[i][2]);\n const xminI = Math.min(boxesData[i][1], boxesData[i][3]);\n const ymaxI = Math.max(boxesData[i][0], boxesData[i][2]);\n const xmaxI = Math.max(boxesData[i][1], boxesData[i][3]);\n const yminJ = Math.min(boxesData[j][0], boxesData[j][2]);\n const xminJ = Math.min(boxesData[j][1], boxesData[j][3]);\n const ymaxJ = Math.max(boxesData[j][0], boxesData[j][2]);\n const xmaxJ = Math.max(boxesData[j][1], boxesData[j][3]);\n const areaI = (ymaxI - yminI) * (xmaxI - xminI);\n const areaJ = (ymaxJ - yminJ) * (xmaxJ - xminJ);\n if (areaI <= 0 || areaJ <= 0) {\n return 0.0;\n }\n const intersectionYmin = Math.max(yminI, yminJ);\n const intersectionXmin = Math.max(xminI, xminJ);\n const intersectionYmax = Math.min(ymaxI, ymaxJ);\n const intersectionXmax = Math.min(xmaxI, xmaxJ);\n const intersectionArea = Math.max(intersectionYmax - intersectionYmin, 0.0)\n * Math.max(intersectionXmax - intersectionXmin, 0.0);\n return intersectionArea / (areaI + areaJ - intersectionArea);\n}\n\nexport function nonMaxSuppression(\n boxes: tf.Tensor2D,\n scores: number[],\n maxOutputSize: number,\n iouThreshold: number,\n scoreThreshold: number,\n): number[] {\n const numBoxes = boxes.shape[0];\n const outputSize = Math.min(\n maxOutputSize,\n numBoxes,\n );\n\n const candidates = scores\n .map((score, boxIndex) => ({ score, boxIndex }))\n .filter((c) => c.score > scoreThreshold)\n .sort((c1, c2) => c2.score - c1.score);\n\n const suppressFunc = (x: number) => (x <= iouThreshold ? 1 : 0);\n\n const selected: number[] = [];\n\n candidates.forEach((c) => {\n if (selected.length >= outputSize) {\n return;\n }\n const originalScore = c.score;\n\n for (let j = selected.length - 1; j >= 0; --j) {\n const iou = IOU(boxes, c.boxIndex, selected[j]);\n if (iou === 0.0) continue;\n c.score *= suppressFunc(iou);\n if (c.score <= scoreThreshold) break;\n }\n if (originalScore === c.score) {\n selected.push(c.boxIndex);\n }\n });\n\n return selected;\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { OutputLayerParams } from './types';\n\nfunction getCenterCoordinatesAndSizesLayer(x: tf.Tensor2D) {\n const vec = tf.unstack(tf.transpose(x, [1, 0]));\n\n const sizes = [\n tf.sub(vec[2], vec[0]),\n tf.sub(vec[3], vec[1]),\n ];\n\n const centers = [\n tf.add(vec[0], tf.div(sizes[0], tf.scalar(2))),\n tf.add(vec[1], tf.div(sizes[1], tf.scalar(2))),\n ];\n\n return {\n sizes,\n centers,\n };\n}\n\nfunction decodeBoxesLayer(x0: tf.Tensor2D, x1: tf.Tensor2D) {\n const {\n sizes,\n centers,\n } = getCenterCoordinatesAndSizesLayer(x0);\n\n const vec = tf.unstack(tf.transpose(x1, [1, 0]));\n\n const div0_out = tf.div(tf.mul(tf.exp(tf.div(vec[2], tf.scalar(5))), sizes[0]), tf.scalar(2));\n const add0_out = tf.add(tf.mul(tf.div(vec[0], tf.scalar(10)), sizes[0]), centers[0]);\n\n const div1_out = tf.div(tf.mul(tf.exp(tf.div(vec[3], tf.scalar(5))), sizes[1]), tf.scalar(2));\n const add1_out = tf.add(tf.mul(tf.div(vec[1], tf.scalar(10)), sizes[1]), centers[1]);\n\n return tf.transpose(\n tf.stack([\n tf.sub(add0_out, div0_out),\n tf.sub(add1_out, div1_out),\n tf.add(add0_out, div0_out),\n tf.add(add1_out, div1_out),\n ]),\n [1, 0],\n );\n}\n\nexport function outputLayer(\n boxPredictions: tf.Tensor4D,\n classPredictions: tf.Tensor4D,\n params: OutputLayerParams,\n) {\n return tf.tidy(() => {\n const batchSize = boxPredictions.shape[0];\n\n let boxes = decodeBoxesLayer(\n tf.reshape(tf.tile(params.extra_dim, [batchSize, 1, 1]), [-1, 4]) as tf.Tensor2D,\n tf.reshape(boxPredictions, [-1, 4]) as tf.Tensor2D,\n );\n boxes = tf.reshape(\n boxes,\n [batchSize, (boxes.shape[0] / batchSize), 4],\n );\n\n const scoresAndClasses = tf.sigmoid(tf.slice(classPredictions, [0, 0, 1], [-1, -1, -1]));\n let scores = tf.slice(scoresAndClasses, [0, 0, 0], [-1, -1, 1]) as tf.Tensor;\n\n scores = tf.reshape(\n scores,\n [batchSize, scores.shape[1] as number],\n );\n\n const boxesByBatch = tf.unstack(boxes) as tf.Tensor2D[];\n const scoresByBatch = tf.unstack(scores) as tf.Tensor1D[];\n\n return {\n boxes: boxesByBatch,\n scores: scoresByBatch,\n };\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { convLayer } from '../common/index';\nimport { BoxPredictionParams } from './types';\n\nexport function boxPredictionLayer(\n x: tf.Tensor4D,\n params: BoxPredictionParams,\n) {\n return tf.tidy(() => {\n const batchSize = x.shape[0];\n\n const boxPredictionEncoding = tf.reshape(\n convLayer(x, params.box_encoding_predictor),\n [batchSize, -1, 1, 4],\n );\n const classPrediction = tf.reshape(\n convLayer(x, params.class_predictor),\n [batchSize, -1, 3],\n );\n\n return {\n boxPredictionEncoding,\n classPrediction,\n };\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { boxPredictionLayer } from './boxPredictionLayer';\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { PredictionLayerParams } from './types';\n\nexport function predictionLayer(\n x: tf.Tensor4D,\n conv11: tf.Tensor4D,\n params: PredictionLayerParams,\n) {\n return tf.tidy(() => {\n const conv0 = pointwiseConvLayer(x, params.conv_0, [1, 1]);\n const conv1 = pointwiseConvLayer(conv0, params.conv_1, [2, 2]);\n const conv2 = pointwiseConvLayer(conv1, params.conv_2, [1, 1]);\n const conv3 = pointwiseConvLayer(conv2, params.conv_3, [2, 2]);\n const conv4 = pointwiseConvLayer(conv3, params.conv_4, [1, 1]);\n const conv5 = pointwiseConvLayer(conv4, params.conv_5, [2, 2]);\n const conv6 = pointwiseConvLayer(conv5, params.conv_6, [1, 1]);\n const conv7 = pointwiseConvLayer(conv6, params.conv_7, [2, 2]);\n\n const boxPrediction0 = boxPredictionLayer(conv11, params.box_predictor_0);\n const boxPrediction1 = boxPredictionLayer(x, params.box_predictor_1);\n const boxPrediction2 = boxPredictionLayer(conv1, params.box_predictor_2);\n const boxPrediction3 = boxPredictionLayer(conv3, params.box_predictor_3);\n const boxPrediction4 = boxPredictionLayer(conv5, params.box_predictor_4);\n const boxPrediction5 = boxPredictionLayer(conv7, params.box_predictor_5);\n\n const boxPredictions = tf.concat([\n boxPrediction0.boxPredictionEncoding,\n boxPrediction1.boxPredictionEncoding,\n boxPrediction2.boxPredictionEncoding,\n boxPrediction3.boxPredictionEncoding,\n boxPrediction4.boxPredictionEncoding,\n boxPrediction5.boxPredictionEncoding,\n ], 1) as tf.Tensor4D;\n\n const classPredictions = tf.concat([\n boxPrediction0.classPrediction,\n boxPrediction1.classPrediction,\n boxPrediction2.classPrediction,\n boxPrediction3.classPrediction,\n boxPrediction4.classPrediction,\n boxPrediction5.classPrediction,\n ], 1) as tf.Tensor4D;\n\n return {\n boxPredictions,\n classPredictions,\n };\n });\n}\n", "export interface ISsdMobilenetv1Options {\n minConfidence?: number\n maxResults?: number\n}\n\nexport class SsdMobilenetv1Options {\n protected _name: string = 'SsdMobilenetv1Options'\n\n private _minConfidence: number\n\n private _maxResults: number\n\n constructor({ minConfidence, maxResults }: ISsdMobilenetv1Options = {}) {\n this._minConfidence = minConfidence || 0.5;\n this._maxResults = maxResults || 100;\n\n if (typeof this._minConfidence !== 'number' || this._minConfidence <= 0 || this._minConfidence >= 1) {\n throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`);\n }\n\n if (typeof this._maxResults !== 'number') {\n throw new Error(`${this._name} - expected maxResults to be a number`);\n }\n }\n\n get minConfidence(): number { return this._minConfidence; }\n\n get maxResults(): number { return this._maxResults; }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { mobileNetV1 } from './mobileNetV1';\nimport { nonMaxSuppression } from './nonMaxSuppression';\nimport { outputLayer } from './outputLayer';\nimport { predictionLayer } from './predictionLayer';\nimport { ISsdMobilenetv1Options, SsdMobilenetv1Options } from './SsdMobilenetv1Options';\nimport { NetParams } from './types';\n\nexport class SsdMobilenetv1 extends NeuralNetwork {\n constructor() {\n super('SsdMobilenetv1');\n }\n\n public forwardInput(input: NetInput) {\n const { params } = this;\n\n if (!params) {\n throw new Error('SsdMobilenetv1 - load model before inference');\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(512, false).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(512, false), 'float32');\n\n const x = tf.sub(tf.mul(batchTensor, tf.scalar(0.007843137718737125)), tf.scalar(1)) as tf.Tensor4D;\n const features = mobileNetV1(x, params.mobilenetv1);\n\n const {\n boxPredictions,\n classPredictions,\n } = predictionLayer(features.out, features.conv11, params.prediction_layer);\n\n return outputLayer(boxPredictions, classPredictions, params.output_layer);\n });\n }\n\n public async forward(input: TNetInput) {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async locateFaces(\n input: TNetInput,\n options: ISsdMobilenetv1Options = {},\n ): Promise {\n const { maxResults, minConfidence } = new SsdMobilenetv1Options(options);\n\n const netInput = await toNetInput(input);\n\n const {\n boxes: _boxes,\n scores: _scores,\n } = this.forwardInput(netInput);\n\n // TODO batches\n const boxes = _boxes[0];\n const scores = _scores[0];\n for (let i = 1; i < _boxes.length; i++) {\n _boxes[i].dispose();\n _scores[i].dispose();\n }\n\n // TODO find a better way to filter by minConfidence\n const scoresData = Array.from(await scores.data());\n\n const iouThreshold = 0.5;\n const indices = nonMaxSuppression(\n boxes,\n scoresData as number[],\n maxResults,\n iouThreshold,\n minConfidence,\n );\n\n const reshapedDims = netInput.getReshapedInputDimensions(0);\n const inputSize = netInput.inputSize as number;\n const padX = inputSize / reshapedDims.width;\n const padY = inputSize / reshapedDims.height;\n\n const boxesData = boxes.arraySync();\n const results = indices\n .map((idx) => {\n const [top, bottom] = [\n Math.max(0, boxesData[idx][0]),\n Math.min(1.0, boxesData[idx][2]),\n ].map((val) => val * padY);\n const [left, right] = [\n Math.max(0, boxesData[idx][1]),\n Math.min(1.0, boxesData[idx][3]),\n ].map((val) => val * padX);\n return new FaceDetection(\n scoresData[idx] as number,\n new Rect(\n left,\n top,\n right - left,\n bottom - top,\n ),\n {\n height: netInput.getInputHeight(0),\n width: netInput.getInputWidth(0),\n },\n );\n });\n\n boxes.dispose();\n scores.dispose();\n\n return results;\n }\n\n protected getDefaultModelName(): string {\n return 'ssd_mobilenetv1_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights);\n }\n}\n", "import { SsdMobilenetv1 } from './SsdMobilenetv1';\n\nexport * from './SsdMobilenetv1';\nexport * from './SsdMobilenetv1Options';\n\nexport function createSsdMobilenetv1(weights: Float32Array) {\n const net = new SsdMobilenetv1();\n net.extractWeights(weights);\n return net;\n}\n\nexport function createFaceDetectionNet(weights: Float32Array) {\n return createSsdMobilenetv1(weights);\n}\n\n// alias for backward compatibily\nexport class FaceDetectionNet extends SsdMobilenetv1 {}\n", "import { Point } from '../classes/index';\n\nexport const IOU_THRESHOLD = 0.4;\n\nexport const BOX_ANCHORS = [\n new Point(0.738768, 0.874946),\n new Point(2.42204, 2.65704),\n new Point(4.30971, 7.04493),\n new Point(10.246, 4.59428),\n new Point(12.6868, 11.8741),\n];\n\nexport const BOX_ANCHORS_SEPARABLE = [\n new Point(1.603231, 2.094468),\n new Point(6.041143, 7.080126),\n new Point(2.882459, 3.518061),\n new Point(4.266906, 5.178857),\n new Point(9.041765, 10.66308),\n];\n\nexport const MEAN_RGB_SEPARABLE: [number, number, number] = [117.001, 114.697, 97.404];\n\nexport const DEFAULT_MODEL_NAME = 'tiny_yolov2_model';\nexport const DEFAULT_MODEL_NAME_SEPARABLE_CONV = 'tiny_yolov2_separable_conv_model';\n", "import { Point } from '../classes/Point';\n\nexport type TinyYolov2Config = {\n withSeparableConvs: boolean\n iouThreshold: number\n anchors: Point[]\n classes: string[]\n meanRgb?: [number, number, number]\n withClassScores?: boolean,\n filterSizes?: number[]\n isFirstLayerConv2d?: boolean\n}\n\nconst isNumber = (arg: any) => typeof arg === 'number';\n\nexport function validateConfig(config: any) {\n if (!config) {\n throw new Error(`invalid config: ${config}`);\n }\n\n if (typeof config.withSeparableConvs !== 'boolean') {\n throw new Error(`config.withSeparableConvs has to be a boolean, have: ${config.withSeparableConvs}`);\n }\n\n if (!isNumber(config.iouThreshold) || config.iouThreshold < 0 || config.iouThreshold > 1.0) {\n throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${config.iouThreshold}`);\n }\n\n if (\n !Array.isArray(config.classes)\n || !config.classes.length\n || !config.classes.every((c: any) => typeof c === 'string')\n ) {\n throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(config.classes)}`);\n }\n\n if (\n !Array.isArray(config.anchors)\n || !config.anchors.length\n || !config.anchors.map((a: any) => a || {}).every((a: any) => isNumber(a.x) && isNumber(a.y))\n ) {\n throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(config.anchors)}`);\n }\n\n if (config.meanRgb && (\n !Array.isArray(config.meanRgb)\n || config.meanRgb.length !== 3\n || !config.meanRgb.every(isNumber)\n )) {\n throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(config.meanRgb)}`);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nexport function leaky(x: tf.Tensor4D): tf.Tensor4D {\n return tf.tidy(() => {\n const min = tf.mul(x, tf.scalar(0.10000000149011612));\n return tf.add(tf.relu(tf.sub(x, min)), min);\n // return tf.maximum(x, min)\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { leaky } from './leaky';\nimport { ConvWithBatchNorm } from './types';\n\nexport function convWithBatchNorm(x: tf.Tensor4D, params: ConvWithBatchNorm): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D;\n\n out = tf.conv2d(out, params.conv.filters, [1, 1], 'valid');\n out = tf.sub(out, params.bn.sub);\n out = tf.mul(out, params.bn.truediv);\n out = tf.add(out, params.conv.bias);\n\n return leaky(out);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { SeparableConvParams } from '../common/types';\nimport { leaky } from './leaky';\n\nexport function depthwiseSeparableConv(x: tf.Tensor4D, params: SeparableConvParams): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D;\n\n out = tf.separableConv2d(out, params.depthwise_filter, params.pointwise_filter, [1, 1], 'valid');\n out = tf.add(out, params.bias);\n\n return leaky(out);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { extractConvParamsFactory } from '../common/index';\nimport { extractSeparableConvParamsFactory } from '../common/extractSeparableConvParamsFactory';\nimport { extractWeightsFactory } from '../common/extractWeightsFactory';\nimport { ExtractWeightsFunction, ParamMapping } from '../common/types';\nimport { TinyYolov2Config } from './config';\nimport { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings);\n\n function extractBatchNormParams(size: number, mappedPrefix: string): BatchNorm {\n const sub = tf.tensor1d(extractWeights(size));\n const truediv = tf.tensor1d(extractWeights(size));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/sub` },\n { paramPath: `${mappedPrefix}/truediv` },\n );\n\n return { sub, truediv };\n }\n\n function extractConvWithBatchNormParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ConvWithBatchNorm {\n const conv = extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv`);\n const bn = extractBatchNormParams(channelsOut, `${mappedPrefix}/bn`);\n\n return { conv, bn };\n }\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings);\n\n return {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n };\n}\n\nexport function extractParams(\n weights: Float32Array,\n config: TinyYolov2Config,\n boxEncodingSize: number,\n filterSizes: number[],\n): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n let params: TinyYolov2NetParams;\n\n if (config.withSeparableConvs) {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes;\n\n const conv0 = config.isFirstLayerConv2d\n ? extractConvParams(s0, s1, 3, 'conv0')\n : extractSeparableConvParams(s0, s1, 'conv0');\n const conv1 = extractSeparableConvParams(s1, s2, 'conv1');\n const conv2 = extractSeparableConvParams(s2, s3, 'conv2');\n const conv3 = extractSeparableConvParams(s3, s4, 'conv3');\n const conv4 = extractSeparableConvParams(s4, s5, 'conv4');\n const conv5 = extractSeparableConvParams(s5, s6, 'conv5');\n const conv6 = s7 ? extractSeparableConvParams(s6, s7, 'conv6') : undefined;\n const conv7 = s8 ? extractSeparableConvParams(s7, s8, 'conv7') : undefined;\n const conv8 = extractConvParams(s8 || s7 || s6, 5 * boxEncodingSize, 1, 'conv8');\n params = {\n conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8,\n };\n } else {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes;\n const conv0 = extractConvWithBatchNormParams(s0, s1, 'conv0');\n const conv1 = extractConvWithBatchNormParams(s1, s2, 'conv1');\n const conv2 = extractConvWithBatchNormParams(s2, s3, 'conv2');\n const conv3 = extractConvWithBatchNormParams(s3, s4, 'conv3');\n const conv4 = extractConvWithBatchNormParams(s4, s5, 'conv4');\n const conv5 = extractConvWithBatchNormParams(s5, s6, 'conv5');\n const conv6 = extractConvWithBatchNormParams(s6, s7, 'conv6');\n const conv7 = extractConvWithBatchNormParams(s7, s8, 'conv7');\n const conv8 = extractConvParams(s8, 5 * boxEncodingSize, 1, 'conv8');\n params = {\n conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8,\n };\n }\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ConvParams } from '../common/index';\nimport { disposeUnusedWeightTensors } from '../common/disposeUnusedWeightTensors';\nimport { loadSeparableConvParamsFactory } from '../common/extractSeparableConvParamsFactory';\nimport { extractWeightEntryFactory } from '../common/extractWeightEntryFactory';\nimport { ParamMapping } from '../common/types';\nimport { TinyYolov2Config } from './config';\nimport { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractBatchNormParams(prefix: string): BatchNorm {\n const sub = extractWeightEntry(`${prefix}/sub`, 1);\n const truediv = extractWeightEntry(`${prefix}/truediv`, 1);\n return { sub, truediv };\n }\n\n function extractConvParams(prefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/filters`, 4);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n return { filters, bias };\n }\n\n function extractConvWithBatchNormParams(prefix: string): ConvWithBatchNorm {\n const conv = extractConvParams(`${prefix}/conv`);\n const bn = extractBatchNormParams(`${prefix}/bn`);\n return { conv, bn };\n }\n\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry);\n\n return {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n config: TinyYolov2Config,\n): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n } = extractorsFactory(weightMap, paramMappings);\n\n let params: TinyYolov2NetParams;\n\n if (config.withSeparableConvs) {\n // eslint-disable-next-line no-mixed-operators\n const numFilters = (config.filterSizes && config.filterSizes.length || 9);\n params = {\n conv0: config.isFirstLayerConv2d ? extractConvParams('conv0') : extractSeparableConvParams('conv0'),\n conv1: extractSeparableConvParams('conv1'),\n conv2: extractSeparableConvParams('conv2'),\n conv3: extractSeparableConvParams('conv3'),\n conv4: extractSeparableConvParams('conv4'),\n conv5: extractSeparableConvParams('conv5'),\n conv6: numFilters > 7 ? extractSeparableConvParams('conv6') : undefined,\n conv7: numFilters > 8 ? extractSeparableConvParams('conv7') : undefined,\n conv8: extractConvParams('conv8'),\n };\n } else {\n params = {\n conv0: extractConvWithBatchNormParams('conv0'),\n conv1: extractConvWithBatchNormParams('conv1'),\n conv2: extractConvWithBatchNormParams('conv2'),\n conv3: extractConvWithBatchNormParams('conv3'),\n conv4: extractConvWithBatchNormParams('conv4'),\n conv5: extractConvWithBatchNormParams('conv5'),\n conv6: extractConvWithBatchNormParams('conv6'),\n conv7: extractConvWithBatchNormParams('conv7'),\n conv8: extractConvParams('conv8'),\n };\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "export interface ITinyYolov2Options {\n inputSize?: number\n scoreThreshold?: number\n}\n\nexport class TinyYolov2Options {\n protected _name: string = 'TinyYolov2Options'\n\n private _inputSize: number\n\n private _scoreThreshold: number\n\n constructor({ inputSize, scoreThreshold }: ITinyYolov2Options = {}) {\n this._inputSize = inputSize || 416;\n this._scoreThreshold = scoreThreshold || 0.5;\n\n if (typeof this._inputSize !== 'number' || this._inputSize % 32 !== 0) {\n throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`);\n }\n\n if (typeof this._scoreThreshold !== 'number' || this._scoreThreshold <= 0 || this._scoreThreshold >= 1) {\n throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`);\n }\n }\n\n get inputSize(): number { return this._inputSize; }\n\n get scoreThreshold(): number { return this._scoreThreshold; }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { BoundingBox } from '../classes/BoundingBox';\nimport { Dimensions } from '../classes/Dimensions';\nimport { ObjectDetection } from '../classes/ObjectDetection';\nimport { convLayer } from '../common/index';\nimport { ConvParams, SeparableConvParams } from '../common/types';\nimport { toNetInput } from '../dom/index';\nimport { NetInput } from '../dom/NetInput';\nimport { TNetInput } from '../dom/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { sigmoid } from '../ops/index';\nimport { nonMaxSuppression } from '../ops/nonMaxSuppression';\nimport { normalize } from '../ops/normalize';\nimport { TinyYolov2Config, validateConfig } from './config';\nimport { convWithBatchNorm } from './convWithBatchNorm';\nimport { depthwiseSeparableConv } from './depthwiseSeparableConv';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { leaky } from './leaky';\nimport { ITinyYolov2Options, TinyYolov2Options } from './TinyYolov2Options';\nimport { DefaultTinyYolov2NetParams, MobilenetParams, TinyYolov2NetParams } from './types';\n\nexport class TinyYolov2Base extends NeuralNetwork {\n public static DEFAULT_FILTER_SIZES = [\n 3, 16, 32, 64, 128, 256, 512, 1024, 1024,\n ]\n\n private _config: TinyYolov2Config\n\n constructor(config: TinyYolov2Config) {\n super('TinyYolov2');\n validateConfig(config);\n this._config = config;\n }\n\n public get config(): TinyYolov2Config {\n return this._config;\n }\n\n public get withClassScores(): boolean {\n return this.config.withClassScores || this.config.classes.length > 1;\n }\n\n public get boxEncodingSize(): number {\n return 5 + (this.withClassScores ? this.config.classes.length : 0);\n }\n\n public runTinyYolov2(x: tf.Tensor4D, params: DefaultTinyYolov2NetParams): tf.Tensor4D {\n let out = convWithBatchNorm(x, params.conv0);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv1);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv2);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv3);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv4);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv5);\n out = tf.maxPool(out, [2, 2], [1, 1], 'same');\n out = convWithBatchNorm(out, params.conv6);\n out = convWithBatchNorm(out, params.conv7);\n\n return convLayer(out, params.conv8, 'valid', false);\n }\n\n public runMobilenet(x: tf.Tensor4D, params: MobilenetParams): tf.Tensor4D {\n let out = this.config.isFirstLayerConv2d\n ? leaky(convLayer(x, params.conv0 as ConvParams, 'valid', false))\n : depthwiseSeparableConv(x, params.conv0 as SeparableConvParams);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv1);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv2);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv3);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv4);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv5);\n out = tf.maxPool(out, [2, 2], [1, 1], 'same');\n out = params.conv6 ? depthwiseSeparableConv(out, params.conv6) : out;\n out = params.conv7 ? depthwiseSeparableConv(out, params.conv7) : out;\n\n return convLayer(out, params.conv8, 'valid', false);\n }\n\n public forwardInput(input: NetInput, inputSize: number): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('TinyYolov2 - load model before inference');\n }\n\n return tf.tidy(() => {\n // let batchTensor = input.toBatchTensor(inputSize, false).toFloat()\n let batchTensor = tf.cast(input.toBatchTensor(inputSize, false), 'float32');\n batchTensor = this.config.meanRgb\n ? normalize(batchTensor, this.config.meanRgb)\n : batchTensor;\n batchTensor = batchTensor.div(tf.scalar(256)) as tf.Tensor4D;\n\n return this.config.withSeparableConvs\n ? this.runMobilenet(batchTensor, params as MobilenetParams)\n : this.runTinyYolov2(batchTensor, params as DefaultTinyYolov2NetParams);\n });\n }\n\n public async forward(input: TNetInput, inputSize: number): Promise {\n return this.forwardInput(await toNetInput(input), inputSize);\n }\n\n public async detect(input: TNetInput, forwardParams: ITinyYolov2Options = {}): Promise {\n const { inputSize, scoreThreshold } = new TinyYolov2Options(forwardParams);\n\n const netInput = await toNetInput(input);\n const out = await this.forwardInput(netInput, inputSize);\n const out0 = tf.tidy(() => tf.unstack(out)[0].expandDims()) as tf.Tensor4D;\n\n const inputDimensions = {\n width: netInput.getInputWidth(0),\n height: netInput.getInputHeight(0),\n };\n\n const results = await this.extractBoxes(out0, netInput.getReshapedInputDimensions(0), scoreThreshold);\n out.dispose();\n out0.dispose();\n\n const boxes = results.map((res) => res.box);\n const scores = results.map((res) => res.score);\n const classScores = results.map((res) => res.classScore);\n const classNames = results.map((res) => this.config.classes[res.label]);\n\n const indices = nonMaxSuppression(\n boxes.map((box) => box.rescale(inputSize)),\n scores,\n this.config.iouThreshold,\n true,\n );\n\n const detections = indices.map((idx) => new ObjectDetection(\n scores[idx],\n classScores[idx],\n classNames[idx],\n boxes[idx],\n inputDimensions,\n ));\n\n return detections;\n }\n\n protected getDefaultModelName(): string {\n return '';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this.config);\n }\n\n protected extractParams(weights: Float32Array) {\n const filterSizes = this.config.filterSizes || TinyYolov2Base.DEFAULT_FILTER_SIZES;\n\n const numFilters = filterSizes ? filterSizes.length : undefined;\n if (numFilters !== 7 && numFilters !== 8 && numFilters !== 9) {\n throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`);\n }\n return extractParams(weights, this.config, this.boxEncodingSize, filterSizes);\n }\n\n protected async extractBoxes(\n outputTensor: tf.Tensor4D,\n inputBlobDimensions: Dimensions,\n scoreThreshold?: number,\n ) {\n const { width, height } = inputBlobDimensions;\n const inputSize = Math.max(width, height);\n const correctionFactorX = inputSize / width;\n const correctionFactorY = inputSize / height;\n\n const numCells = outputTensor.shape[1];\n const numBoxes = this.config.anchors.length;\n\n const [boxesTensor, scoresTensor, classScoresTensor] = tf.tidy(() => {\n const reshaped = outputTensor.reshape([numCells, numCells, numBoxes, this.boxEncodingSize]);\n\n const boxes = reshaped.slice([0, 0, 0, 0], [numCells, numCells, numBoxes, 4]);\n const scores = reshaped.slice([0, 0, 0, 4], [numCells, numCells, numBoxes, 1]);\n const classScores = this.withClassScores\n ? tf.softmax(reshaped.slice([0, 0, 0, 5], [numCells, numCells, numBoxes, this.config.classes.length]), 3)\n : tf.scalar(0);\n return [boxes, scores, classScores];\n });\n\n const results = [] as any;\n\n const scoresData = await scoresTensor.array();\n const boxesData = await boxesTensor.array();\n for (let row = 0; row < numCells; row++) {\n for (let col = 0; col < numCells; col++) {\n for (let anchor = 0; anchor < numBoxes; anchor++) {\n const score = sigmoid(scoresData[row][col][anchor][0]);\n if (!scoreThreshold || score > scoreThreshold) {\n const ctX = ((col + sigmoid(boxesData[row][col][anchor][0])) / numCells) * correctionFactorX;\n const ctY = ((row + sigmoid(boxesData[row][col][anchor][1])) / numCells) * correctionFactorY;\n const widthLocal = ((Math.exp(boxesData[row][col][anchor][2]) * this.config.anchors[anchor].x) / numCells) * correctionFactorX;\n const heightLocal = ((Math.exp(boxesData[row][col][anchor][3]) * this.config.anchors[anchor].y) / numCells) * correctionFactorY;\n\n const x = (ctX - (widthLocal / 2));\n const y = (ctY - (heightLocal / 2));\n\n const pos = { row, col, anchor };\n const { classScore, label } = this.withClassScores\n ? await this.extractPredictedClass(classScoresTensor as tf.Tensor4D, pos)\n : { classScore: 1, label: 0 };\n\n results.push({\n box: new BoundingBox(x, y, x + widthLocal, y + heightLocal),\n score,\n classScore: score * classScore,\n label,\n ...pos,\n });\n }\n }\n }\n }\n\n boxesTensor.dispose();\n scoresTensor.dispose();\n classScoresTensor.dispose();\n\n return results;\n }\n\n private async extractPredictedClass(classesTensor: tf.Tensor4D, pos: { row: number, col: number, anchor: number }) {\n const { row, col, anchor } = pos;\n const classesData = await classesTensor.array();\n return Array(this.config.classes.length).fill(0)\n .map((_, i) => classesData[row][col][anchor][i])\n .map((classScore, label) => ({\n classScore,\n label,\n }))\n .reduce((max, curr) => (max.classScore > curr.classScore ? max : curr));\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { FaceDetection, Point } from '../classes/index';\nimport { ParamMapping } from '../common/types';\nimport { TNetInput } from '../dom/types';\nimport {\n BOX_ANCHORS,\n BOX_ANCHORS_SEPARABLE,\n DEFAULT_MODEL_NAME,\n DEFAULT_MODEL_NAME_SEPARABLE_CONV,\n IOU_THRESHOLD,\n MEAN_RGB_SEPARABLE,\n} from './const';\nimport { TinyYolov2Base } from './TinyYolov2Base';\nimport { ITinyYolov2Options } from './TinyYolov2Options';\nimport { TinyYolov2NetParams } from './types';\n\nexport class TinyYolov2 extends TinyYolov2Base {\n constructor(withSeparableConvs: boolean = true) {\n const config = {\n withSeparableConvs,\n iouThreshold: IOU_THRESHOLD,\n classes: ['face'],\n ...(withSeparableConvs\n ? {\n anchors: BOX_ANCHORS_SEPARABLE,\n meanRgb: MEAN_RGB_SEPARABLE,\n }\n : {\n anchors: BOX_ANCHORS,\n withClassScores: true,\n }),\n };\n\n super(config);\n }\n\n public get withSeparableConvs(): boolean {\n return this.config.withSeparableConvs;\n }\n\n public get anchors(): Point[] {\n return this.config.anchors;\n }\n\n public async locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise {\n const objectDetections = await this.detect(input, forwardParams);\n return objectDetections.map((det) => new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }));\n }\n\n protected getDefaultModelName(): string {\n return this.withSeparableConvs ? DEFAULT_MODEL_NAME_SEPARABLE_CONV : DEFAULT_MODEL_NAME;\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n return super.extractParamsFromWeigthMap(weightMap);\n }\n}\n", "import { TinyYolov2 } from './TinyYolov2';\n\nexport * from './TinyYolov2Options';\n\nexport * from './config';\nexport * from './types';\n\nexport { TinyYolov2 };\n\nexport function createTinyYolov2(weights: Float32Array, withSeparableConvs: boolean = true) {\n const net = new TinyYolov2(withSeparableConvs);\n net.extractWeights(weights);\n return net;\n}\n", "import { ITinyYolov2Options, TinyYolov2Options } from '../tinyYolov2/index';\n\nexport interface ITinyFaceDetectorOptions extends ITinyYolov2Options {}\n\nexport class TinyFaceDetectorOptions extends TinyYolov2Options {\n protected _name: string = 'TinyFaceDetectorOptions'\n}\n", "export class ComposableTask {\n public async then(\n // eslint-disable-next-line no-unused-vars\n onfulfilled: (value: T) => T | PromiseLike,\n ): Promise {\n return onfulfilled(await this.run());\n }\n\n public async run(): Promise {\n throw new Error('ComposableTask - run is not implemented');\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\n\nexport async function extractAllFacesAndComputeResults, TResult>(\n parentResults: TSource[],\n input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n computeResults: (faces: Array) => Promise,\n extractedFaces?: Array | null,\n // eslint-disable-next-line no-unused-vars\n getRectForAlignment: (parentResult: WithFaceLandmarks) => FaceDetection = ({ alignedRect }) => alignedRect,\n) {\n const faceBoxes = parentResults.map((parentResult) => (isWithFaceLandmarks(parentResult)\n ? getRectForAlignment(parentResult)\n : parentResult.detection));\n const faces: Array = extractedFaces || (\n input instanceof tf.Tensor\n ? await extractFaceTensors(input, faceBoxes)\n : await extractFaces(input, faceBoxes)\n );\n\n const results = await computeResults(faces);\n\n faces.forEach((f) => f instanceof tf.Tensor && f.dispose());\n\n return results;\n}\n\nexport async function extractSingleFaceAndComputeResult, TResult>(\n parentResult: TSource,\n input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n computeResult: (face: HTMLCanvasElement | tf.Tensor3D) => Promise,\n extractedFaces?: Array | null,\n // eslint-disable-next-line no-unused-vars\n getRectForAlignment?: (parentResultLocal: WithFaceLandmarks) => FaceDetection,\n) {\n return extractAllFacesAndComputeResults(\n [parentResult],\n input,\n async (faces) => computeResult(faces[0]),\n extractedFaces,\n getRectForAlignment,\n );\n}\n", "import { Point } from '../classes/index';\n\nexport const IOU_THRESHOLD = 0.4;\n\nexport const BOX_ANCHORS = [\n new Point(1.603231, 2.094468),\n new Point(6.041143, 7.080126),\n new Point(2.882459, 3.518061),\n new Point(4.266906, 5.178857),\n new Point(9.041765, 10.66308),\n];\n\nexport const MEAN_RGB: [number, number, number] = [117.001, 114.697, 97.404];\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { FaceDetection, Point } from '../classes/index';\nimport { ParamMapping } from '../common/index';\nimport { TNetInput } from '../dom/index';\nimport { ITinyYolov2Options } from '../tinyYolov2/index';\nimport { TinyYolov2Base } from '../tinyYolov2/TinyYolov2Base';\nimport { TinyYolov2NetParams } from '../tinyYolov2/types';\nimport { BOX_ANCHORS, IOU_THRESHOLD, MEAN_RGB } from './const';\n\nexport class TinyFaceDetector extends TinyYolov2Base {\n constructor() {\n const config = {\n withSeparableConvs: true,\n iouThreshold: IOU_THRESHOLD,\n classes: ['face'],\n anchors: BOX_ANCHORS,\n meanRgb: MEAN_RGB,\n isFirstLayerConv2d: true,\n filterSizes: [3, 16, 32, 64, 128, 256, 512],\n };\n\n super(config);\n }\n\n public get anchors(): Point[] {\n return this.config.anchors;\n }\n\n public async locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise {\n const objectDetections = await this.detect(input, forwardParams);\n return objectDetections.map((det) => new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }));\n }\n\n protected getDefaultModelName(): string {\n return 'tiny_face_detector_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n return super.extractParamsFromWeigthMap(weightMap);\n }\n}\n", "import { AgeGenderNet } from '../ageGenderNet/AgeGenderNet';\nimport { AgeAndGenderPrediction } from '../ageGenderNet/types';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { TNetInput } from '../dom/index';\nimport { FaceExpressionNet } from '../faceExpressionNet/FaceExpressionNet';\nimport { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\nimport { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';\nimport { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';\nimport { FaceRecognitionNet } from '../faceRecognitionNet/FaceRecognitionNet';\nimport { SsdMobilenetv1 } from '../ssdMobilenetv1/SsdMobilenetv1';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { TinyFaceDetector } from '../tinyFaceDetector/TinyFaceDetector';\nimport { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';\nimport { ITinyYolov2Options, TinyYolov2 } from '../tinyYolov2/index';\n\nexport const nets = {\n ssdMobilenetv1: new SsdMobilenetv1(),\n tinyFaceDetector: new TinyFaceDetector(),\n tinyYolov2: new TinyYolov2(),\n faceLandmark68Net: new FaceLandmark68Net(),\n faceLandmark68TinyNet: new FaceLandmark68TinyNet(),\n faceRecognitionNet: new FaceRecognitionNet(),\n faceExpressionNet: new FaceExpressionNet(),\n ageGenderNet: new AgeGenderNet(),\n};\n\n/**\n * Attempts to detect all faces in an image using SSD Mobilenetv1 Network.\n *\n * @param input The input image.\n * @param options (optional, default: see SsdMobilenetv1Options constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const ssdMobilenetv1 = (input: TNetInput, options: SsdMobilenetv1Options): Promise => nets.ssdMobilenetv1.locateFaces(input, options);\n\n/**\n * Attempts to detect all faces in an image using the Tiny Face Detector.\n *\n * @param input The input image.\n * @param options (optional, default: see TinyFaceDetectorOptions constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const tinyFaceDetector = (input: TNetInput, options: TinyFaceDetectorOptions): Promise => nets.tinyFaceDetector.locateFaces(input, options);\n\n/**\n * Attempts to detect all faces in an image using the Tiny Yolov2 Network.\n *\n * @param input The input image.\n * @param options (optional, default: see TinyYolov2Options constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const tinyYolov2 = (input: TNetInput, options: ITinyYolov2Options): Promise => nets.tinyYolov2.locateFaces(input, options);\n\n/**\n * Detects the 68 point face landmark positions of the face shown in an image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns 68 point face landmarks or array thereof in case of batch input.\n */\nexport const detectFaceLandmarks = (input: TNetInput): Promise => nets.faceLandmark68Net.detectLandmarks(input);\n\n/**\n * Detects the 68 point face landmark positions of the face shown in an image\n * using a tinier version of the 68 point face landmark model, which is slightly\n * faster at inference, but also slightly less accurate.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns 68 point face landmarks or array thereof in case of batch input.\n */\nexport const detectFaceLandmarksTiny = (input: TNetInput): Promise => nets.faceLandmark68TinyNet.detectLandmarks(input);\n\n/**\n * Computes a 128 entry vector (face descriptor / face embeddings) from the face shown in an image,\n * which uniquely represents the features of that persons face. The computed face descriptor can\n * be used to measure the similarity between faces, by computing the euclidean distance of two\n * face descriptors.\n *\n * @param inputs The face image extracted from the aligned bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Face descriptor with 128 entries or array thereof in case of batch input.\n */\nexport const computeFaceDescriptor = (input: TNetInput): Promise => nets.faceRecognitionNet.computeFaceDescriptor(input);\n\n/**\n * Recognizes the facial expressions from a face image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Facial expressions with corresponding probabilities or array thereof in case of batch input.\n */\nexport const recognizeFaceExpressions = (input: TNetInput): Promise => nets.faceExpressionNet.predictExpressions(input);\n\n/**\n * Predicts age and gender from a face image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Predictions with age, gender and gender probability or array thereof in case of batch input.\n */\nexport const predictAgeAndGender = (input: TNetInput): Promise => nets.ageGenderNet.predictAgeAndGender(input);\n\nexport const loadSsdMobilenetv1Model = (url: string) => nets.ssdMobilenetv1.load(url);\nexport const loadTinyFaceDetectorModel = (url: string) => nets.tinyFaceDetector.load(url);\nexport const loadTinyYolov2Model = (url: string) => nets.tinyYolov2.load(url);\nexport const loadFaceLandmarkModel = (url: string) => nets.faceLandmark68Net.load(url);\nexport const loadFaceLandmarkTinyModel = (url: string) => nets.faceLandmark68TinyNet.load(url);\nexport const loadFaceRecognitionModel = (url: string) => nets.faceRecognitionNet.load(url);\nexport const loadFaceExpressionModel = (url: string) => nets.faceExpressionNet.load(url);\nexport const loadAgeGenderModel = (url: string) => nets.ageGenderNet.load(url);\n\n// backward compatibility\nexport const loadFaceDetectionModel = loadSsdMobilenetv1Model;\nexport const locateFaces = ssdMobilenetv1;\nexport const detectLandmarks = detectFaceLandmarks;\n", "/* eslint-disable max-classes-per-file */\nimport * as tf from '../../dist/tfjs.esm';\n\nimport { TNetInput } from '../dom/index';\nimport { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { extendWithFaceExpressions, WithFaceExpressions } from '../factories/WithFaceExpressions';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderTask,\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\n\nexport class PredictFaceExpressionsTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected extractedFaces?: Array,\n ) {\n super();\n }\n}\n\nexport class PredictAllFaceExpressionsTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictFaceExpressionsTaskBase[], TSource[]> {\n public async run(): Promise[]> {\n const parentResults = await this.parentTask;\n\n const faceExpressionsByFace = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n async (faces) => Promise.all(faces.map(\n (face) => nets.faceExpressionNet.predictExpressions(face) as Promise,\n )),\n this.extractedFaces,\n );\n\n return parentResults.map(\n (parentResult, i) => extendWithFaceExpressions(parentResult, faceExpressionsByFace[i]),\n );\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderTask(this, this.input);\n }\n}\n\nexport class PredictSingleFaceExpressionsTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictFaceExpressionsTaskBase | undefined, TSource | undefined> {\n public async run(): Promise | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n\n const faceExpressions = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n (face) => nets.faceExpressionNet.predictExpressions(face) as Promise,\n this.extractedFaces,\n );\n\n return extendWithFaceExpressions(parentResult, faceExpressions);\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderTask(this, this.input);\n }\n}\n\nexport class PredictAllFaceExpressionsWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictAllFaceExpressionsTask {\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input);\n }\n}\n\nexport class PredictSingleFaceExpressionsWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictSingleFaceExpressionsTask {\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input);\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport * as tf from '../../dist/tfjs.esm';\n\nimport { AgeAndGenderPrediction } from '../ageGenderNet/types';\nimport { TNetInput } from '../dom/index';\nimport { extendWithAge, WithAge } from '../factories/WithAge';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { extendWithGender, WithGender } from '../factories/WithGender';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllFaceExpressionsTask,\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class PredictAgeAndGenderTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected extractedFaces?: Array,\n ) {\n super();\n }\n}\n\nexport class PredictAllAgeAndGenderTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictAgeAndGenderTaskBase>[], TSource[]> {\n public async run(): Promise>[]> {\n const parentResults = await this.parentTask;\n\n const ageAndGenderByFace = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n async (faces) => Promise.all(faces.map(\n (face) => nets.ageGenderNet.predictAgeAndGender(face) as Promise,\n )),\n this.extractedFaces,\n );\n\n return parentResults.map((parentResult, i) => {\n const { age, gender, genderProbability } = ageAndGenderByFace[i];\n return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age);\n });\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsTask(this, this.input);\n }\n}\n\nexport class PredictSingleAgeAndGenderTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictAgeAndGenderTaskBase> | undefined, TSource | undefined> {\n public async run(): Promise> | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n\n const { age, gender, genderProbability } = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n (face) => nets.ageGenderNet.predictAgeAndGender(face) as Promise,\n this.extractedFaces,\n );\n\n return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age);\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsTask(this, this.input);\n }\n}\n\nexport class PredictAllAgeAndGenderWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictAllAgeAndGenderTask {\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input);\n }\n}\n\nexport class PredictSingleAgeAndGenderWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictSingleAgeAndGenderTask {\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input);\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport { TNetInput } from '../dom/index';\nimport { extendWithFaceDescriptor, WithFaceDescriptor } from '../factories/WithFaceDescriptor';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\nimport {\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class ComputeFaceDescriptorsTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n ) {\n super();\n }\n}\n\nexport class ComputeAllFaceDescriptorsTask<\n TSource extends WithFaceLandmarks>\n> extends ComputeFaceDescriptorsTaskBase[], TSource[]> {\n public async run(): Promise[]> {\n const parentResults = await this.parentTask;\n\n const descriptors = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n (faces) => Promise.all(faces.map((face) => nets.faceRecognitionNet.computeFaceDescriptor(face) as Promise)),\n null,\n (parentResult) => parentResult.landmarks.align(null, { useDlibAlignment: true }),\n );\n\n return descriptors.map((descriptor, i) => extendWithFaceDescriptor(parentResults[i], descriptor));\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n}\n\nexport class ComputeSingleFaceDescriptorTask<\n TSource extends WithFaceLandmarks>\n> extends ComputeFaceDescriptorsTaskBase | undefined, TSource | undefined> {\n public async run(): Promise | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n const descriptor = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n (face) => nets.faceRecognitionNet.computeFaceDescriptor(face) as Promise,\n null,\n // eslint-disable-next-line no-shadow\n (parentResult) => parentResult.landmarks.align(null, { useDlibAlignment: true }),\n );\n\n return extendWithFaceDescriptor(parentResult, descriptor);\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport * as tf from '../../dist/tfjs.esm';\n\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';\nimport { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { extendWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\nimport {\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class DetectFaceLandmarksTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected useTinyLandmarkNet: boolean,\n ) {\n super();\n }\n\n protected get landmarkNet(): FaceLandmark68Net | FaceLandmark68TinyNet {\n return this.useTinyLandmarkNet\n ? nets.faceLandmark68TinyNet\n : nets.faceLandmark68Net;\n }\n}\n\nexport class DetectAllFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase[], TSource[]> {\n public async run(): Promise[]> {\n const parentResults = await this.parentTask;\n const detections = parentResults.map((res) => res.detection);\n\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, detections)\n : await extractFaces(this.input, detections);\n\n const faceLandmarksByFace = await Promise.all(faces.map(\n (face) => this.landmarkNet.detectLandmarks(face),\n )) as FaceLandmarks68[];\n\n faces.forEach((f) => f instanceof tf.Tensor && f.dispose());\n\n return parentResults.map((parentResult, i) => extendWithFaceLandmarks(parentResult, faceLandmarksByFace[i]));\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input);\n }\n}\n\nexport class DetectSingleFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase | undefined, TSource | undefined> {\n public async run(): Promise | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n\n const { detection } = parentResult;\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, [detection])\n : await extractFaces(this.input, [detection]);\n\n const landmarks = await this.landmarkNet.detectLandmarks(faces[0]) as FaceLandmarks68;\n\n faces.forEach((f) => f instanceof tf.Tensor && f.dispose());\n\n return extendWithFaceLandmarks(parentResult, landmarks);\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input);\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { TNetInput } from '../dom/index';\nimport { extendWithFaceDetection, WithFaceDetection } from '../factories/WithFaceDetection';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';\nimport { TinyYolov2Options } from '../tinyYolov2/index';\nimport { ComposableTask } from './ComposableTask';\nimport { DetectAllFaceLandmarksTask, DetectSingleFaceLandmarksTask } from './DetectFaceLandmarksTasks';\nimport { nets } from './nets';\nimport { PredictAllAgeAndGenderTask, PredictSingleAgeAndGenderTask } from './PredictAgeAndGenderTask';\nimport { PredictAllFaceExpressionsTask, PredictSingleFaceExpressionsTask } from './PredictFaceExpressionsTask';\nimport { FaceDetectionOptions } from './types';\n\nexport class DetectFacesTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected options: FaceDetectionOptions = new SsdMobilenetv1Options(),\n ) {\n super();\n }\n}\n\nexport class DetectAllFacesTask extends DetectFacesTaskBase {\n public async run(): Promise {\n const { input, options } = this;\n\n // eslint-disable-next-line no-nested-ternary\n const faceDetectionFunction = options instanceof TinyFaceDetectorOptions\n // eslint-disable-next-line no-shadow\n ? (input: TNetInput) => nets.tinyFaceDetector.locateFaces(input, options)\n : (\n // eslint-disable-next-line no-nested-ternary\n options instanceof SsdMobilenetv1Options\n // eslint-disable-next-line no-shadow\n ? (input: TNetInput) => nets.ssdMobilenetv1.locateFaces(input, options)\n : (\n options instanceof TinyYolov2Options\n // eslint-disable-next-line no-shadow\n ? (input: TNetInput) => nets.tinyYolov2.locateFaces(input, options)\n : null\n )\n );\n\n if (!faceDetectionFunction) {\n throw new Error('detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options');\n }\n\n return faceDetectionFunction(input);\n }\n\n private runAndExtendWithFaceDetections(): Promise[]> {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise[]>(async (resolve) => {\n const detections = await this.run();\n resolve(detections.map((detection) => extendWithFaceDetection({}, detection)));\n });\n }\n\n withFaceLandmarks(useTinyLandmarkNet: boolean = false) {\n return new DetectAllFaceLandmarksTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n useTinyLandmarkNet,\n );\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n );\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n );\n }\n}\n\nexport class DetectSingleFaceTask extends DetectFacesTaskBase {\n public async run(): Promise {\n const faceDetections = await new DetectAllFacesTask(this.input, this.options);\n let faceDetectionWithHighestScore = faceDetections[0];\n faceDetections.forEach((faceDetection) => {\n if (faceDetection.score > faceDetectionWithHighestScore.score) {\n faceDetectionWithHighestScore = faceDetection;\n }\n });\n return faceDetectionWithHighestScore;\n }\n\n private runAndExtendWithFaceDetection(): Promise | undefined> {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise | undefined>(async (resolve) => {\n const detection = await this.run();\n resolve(detection ? extendWithFaceDetection<{}>({}, detection) : undefined);\n });\n }\n\n withFaceLandmarks(useTinyLandmarkNet: boolean = false) {\n return new DetectSingleFaceLandmarksTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n useTinyLandmarkNet,\n );\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n );\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n );\n }\n}\n", "import { TNetInput } from '../dom/index';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { DetectAllFacesTask, DetectSingleFaceTask } from './DetectFacesTasks';\nimport { FaceDetectionOptions } from './types';\n\nexport function detectSingleFace(\n input: TNetInput,\n options: FaceDetectionOptions = new SsdMobilenetv1Options(),\n): DetectSingleFaceTask {\n return new DetectSingleFaceTask(input, options);\n}\n\nexport function detectAllFaces(\n input: TNetInput,\n options: FaceDetectionOptions = new SsdMobilenetv1Options(),\n): DetectAllFacesTask {\n return new DetectAllFacesTask(input, options);\n}\n", "import { TNetInput } from '../dom/index';\nimport { WithFaceDescriptor, WithFaceDetection, WithFaceLandmarks } from '../factories/index';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/index';\nimport { ITinyYolov2Options, TinyYolov2Options } from '../tinyYolov2/index';\nimport { detectAllFaces } from './detectFaces';\n\n// export allFaces API for backward compatibility\n\nexport async function allFacesSsdMobilenetv1(\n input: TNetInput,\n minConfidence?: number,\n): Promise>>[]> {\n return detectAllFaces(input, new SsdMobilenetv1Options(minConfidence ? { minConfidence } : {}))\n .withFaceLandmarks()\n .withFaceDescriptors();\n}\n\nexport async function allFacesTinyYolov2(\n input: TNetInput,\n forwardParams: ITinyYolov2Options = {},\n): Promise>>[]> {\n return detectAllFaces(input, new TinyYolov2Options(forwardParams))\n .withFaceLandmarks()\n .withFaceDescriptors();\n}\n\nexport const allFaces = allFacesSsdMobilenetv1;\n", "export function euclideanDistance(arr1: number[] | Float32Array, arr2: number[] | Float32Array) {\n if (arr1.length !== arr2.length) throw new Error('euclideanDistance: arr1.length !== arr2.length');\n\n const desc1 = Array.from(arr1);\n const desc2 = Array.from(arr2);\n\n return Math.sqrt(\n desc1\n .map((val, i) => val - desc2[i])\n .reduce((res, diff) => res + (diff ** 2), 0),\n );\n}\n", "import { FaceMatch } from '../classes/FaceMatch';\nimport { LabeledFaceDescriptors } from '../classes/LabeledFaceDescriptors';\nimport { euclideanDistance } from '../euclideanDistance';\nimport { WithFaceDescriptor } from '../factories/index';\n\nexport class FaceMatcher {\n private _labeledDescriptors: LabeledFaceDescriptors[]\n\n private _distanceThreshold: number\n\n constructor(\n inputs: LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>,\n distanceThreshold: number = 0.6,\n ) {\n this._distanceThreshold = distanceThreshold;\n\n const inputArray = Array.isArray(inputs) ? inputs : [inputs];\n\n if (!inputArray.length) {\n throw new Error('FaceRecognizer.constructor - expected atleast one input');\n }\n\n let count = 1;\n const createUniqueLabel = () => `person ${count++}`;\n\n this._labeledDescriptors = inputArray.map((desc) => {\n if (desc instanceof LabeledFaceDescriptors) {\n return desc;\n }\n\n if (desc instanceof Float32Array) {\n return new LabeledFaceDescriptors(createUniqueLabel(), [desc]);\n }\n\n if (desc.descriptor && desc.descriptor instanceof Float32Array) {\n return new LabeledFaceDescriptors(createUniqueLabel(), [desc.descriptor]);\n }\n\n throw new Error('FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>');\n });\n }\n\n public get labeledDescriptors(): LabeledFaceDescriptors[] { return this._labeledDescriptors; }\n\n public get distanceThreshold(): number { return this._distanceThreshold; }\n\n public computeMeanDistance(queryDescriptor: Float32Array, descriptors: Float32Array[]): number {\n return descriptors\n .map((d) => euclideanDistance(d, queryDescriptor))\n .reduce((d1, d2) => d1 + d2, 0)\n / (descriptors.length || 1);\n }\n\n public matchDescriptor(queryDescriptor: Float32Array): FaceMatch {\n return this.labeledDescriptors\n .map(({ descriptors, label }) => new FaceMatch(\n label,\n this.computeMeanDistance(queryDescriptor, descriptors),\n ))\n .reduce((best, curr) => (best.distance < curr.distance ? best : curr));\n }\n\n public findBestMatch(queryDescriptor: Float32Array): FaceMatch {\n const bestMatch = this.matchDescriptor(queryDescriptor);\n return bestMatch.distance < this.distanceThreshold\n ? bestMatch\n : new FaceMatch('unknown', bestMatch.distance);\n }\n\n public toJSON(): any {\n return {\n distanceThreshold: this.distanceThreshold,\n labeledDescriptors: this.labeledDescriptors.map((ld) => ld.toJSON()),\n };\n }\n\n public static fromJSON(json: any): FaceMatcher {\n const labeledDescriptors = json.labeledDescriptors\n .map((ld: any) => LabeledFaceDescriptors.fromJSON(ld));\n return new FaceMatcher(labeledDescriptors, json.distanceThreshold);\n }\n}\n", "import { TinyFaceDetector } from './TinyFaceDetector';\n\nexport * from './TinyFaceDetector';\nexport * from './TinyFaceDetectorOptions';\n\nexport function createTinyFaceDetector(weights: Float32Array) {\n const net = new TinyFaceDetector();\n net.extractWeights(weights);\n return net;\n}\n", "import { Dimensions, IDimensions } from './classes/index';\nimport { FaceDetection } from './classes/FaceDetection';\nimport { FaceLandmarks } from './classes/FaceLandmarks';\nimport { extendWithFaceDetection, isWithFaceDetection } from './factories/WithFaceDetection';\nimport { extendWithFaceLandmarks, isWithFaceLandmarks } from './factories/WithFaceLandmarks';\n\nexport function resizeResults(results: T, dimensions: IDimensions): T {\n const { width, height } = new Dimensions(dimensions.width, dimensions.height);\n\n if (width <= 0 || height <= 0) {\n throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({ width, height })}`);\n }\n\n if (Array.isArray(results)) {\n // return results.map(obj => resizeResults(obj, { width, height })) as any as T\n return (results as Array).map((obj) => resizeResults(obj, { width, height } as IDimensions)) as any as T;\n }\n\n if (isWithFaceLandmarks(results)) {\n const resizedDetection = results.detection.forSize(width, height);\n const resizedLandmarks = results.unshiftedLandmarks.forSize(resizedDetection.box.width, resizedDetection.box.height);\n return extendWithFaceLandmarks(extendWithFaceDetection(results, resizedDetection), resizedLandmarks);\n }\n\n if (isWithFaceDetection(results)) {\n return extendWithFaceDetection(results, results.detection.forSize(width, height));\n }\n\n if (results instanceof FaceLandmarks || results instanceof FaceDetection) {\n return (results as any).forSize(width, height);\n }\n\n return results;\n}\n", "import * as tf from '../dist/tfjs.esm';\nimport * as draw from './draw/index';\nimport * as utils from './utils/index';\nimport * as pkg from '../package.json';\n\nexport { tf, draw, utils };\n\nexport * from './ageGenderNet/index';\nexport * from './classes/index';\nexport * from './dom/index';\nexport * from './env/index';\nexport * from './faceExpressionNet/index';\nexport * from './faceLandmarkNet/index';\nexport * from './faceRecognitionNet/index';\nexport * from './factories/index';\nexport * from './globalApi/index';\nexport * from './ops/index';\nexport * from './ssdMobilenetv1/index';\nexport * from './tinyFaceDetector/index';\nexport * from './tinyYolov2/index';\nexport * from './euclideanDistance';\nexport * from './NeuralNetwork';\nexport * from './resizeResults';\n\nconst node = (typeof process !== 'undefined');\n// eslint-disable-next-line no-undef\nconst browser = (typeof navigator !== 'undefined') && (typeof navigator.userAgent !== 'undefined');\nexport const version = { faceapi: pkg.version as string, node, browser };\n"], - "mappings": "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BACA,iBACA,eACA,gBACA,gBACA,eACA,gBACA,oBACA,kBACA,sBACA,yBACA,sBACA,eACA,eACA,sBACA,qBACA,iBACA,8BACA,iBACA,iBACA,cACA,eACA,iBACA,gCACA,qBACA,cACA,cACA,cACA,cACA,qBACA,gBACA,mBACA,gBACA,yBACA,iBACA,uBACA,mBACA,mBACA,gBACA,gBACA,oBACA,gBACA,cACA,qBACA,cACA,cACA,cACA,kBACA,oBACA,kBACA,eACA,cACA,kBACA,oBACA,cACA,mBACA,cACA,iBACA,mBACA,eACA,gBACA,gBACA,cACA,gBACA,qBACA,gBACA,eACA,kBACA,yBACA,gCACA,kBACA,gBACA,gBACA,iBACA,eACA,kBACA,eACA,cACA,eACA,gBACA,kBACA,mBACA,yBACA,yBACA,iBACA,iBACA,eACA,4BACA,iBACA,eACA,cACA,cACA,cACA,eACA,eACA,oBACA,iBACA,6BACA,qBAGF,OAAW,kBAAkB,aAC3B,iBAAiB,gBCxMnB,OAAO,UAAU,IAAM,WACrB,MAAA,MAAK,kBACE,IAAI,OCFb,OAAO,UAAU,KAAO,WACtB,MAAA,MAAK,kBACE,KAAK,OCFd,OAAO,UAAU,MAAQ,WACvB,MAAA,MAAK,kBACE,MAAM,OCCf,OAAO,UAAU,UAAY,SAChB,GACX,MAAA,MAAK,kBACE,UAAU,KAAM,ICRzB,OAAO,UAAU,IAAM,SAA2B,GAChD,MAAA,MAAK,kBACE,KAAI,KAAM,ICDnB,OAAO,UAAU,IAAM,SACV,KAAwB,UACnC,MAAA,MAAK,kBACE,IAAI,KAAM,KAAM,WCHzB,OAAO,UAAU,IAAM,SACV,KAAwB,UACnC,MAAA,MAAK,kBACE,IAAI,KAAM,KAAM,WCJzB,OAAO,UAAU,OAAS,SAA2B,MACnD,MAAA,MAAK,kBACE,OAAO,KAAM,OCFtB,OAAO,UAAU,OAAS,SAA2B,MACnD,MAAA,MAAK,kBACE,OAAO,KAAM,OCGtB,OAAO,UAAU,SAAW,WAC1B,MAAA,MAAK,kBACL,OAAO,KAAK,OAAS,EAAG,IAAM,uCACvB,QAAQ,KAAM,KCCvB,OAAO,UA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CvC,cACF,KAAI,CAAC,OAAQ,CAAC,EAAG,MAAM,QAAA,SAAS,MAAO,CAAC,KAAM,EAAG,SAAU,MAC/D,IAAI,KAAK,eACT,cAAc,KAAK,WACnB,cAAc,KAAK,MACnB,cAAc,KAAK,YACnB,cAAc,KAAK,MACnB,cAAc,KAAK,eAGrB,GAAM,QAAS,KAAK,CAAC,OAAQ,IAAK,QAAA,SAAS,MAAO,CAAC,KAAM,KAEzD,MAAA,eAAc,QAAQ,GAAK,SAAQ,8BAA8B,IAE1D,OAGF,GAAM,0BAAyC,CACpD,WAAY,mBACZ,YAAa,MACb,WAAY,qBC2FR,cAAgC,CACpC,mBACA,UACA,WACA,YACA,UACA,WACA,UACA,UACA,aACA,aACA,WACA,YACA,WACA,YACA,YACA,cACA,gBACA,qBACA,mBACA,kBACA,gBACA,qBACA,eACA,WACA,WACA,WACA,cACA,iBACA,aACA,2BACA,0BACA,aACA,6BACA,4BACA,aACA,UACA,WACA,oBACA,aACA,oBACA,mBACA,4BACA,0CACA,yCACA,WACA,iBACA,8BACA,+BACA,cACA,UACA,eACA,YACA,UACA,UACA,iBACA,YACA,UACA,WACA,oBACA,YACA,eACA,kBACA,2BACA,eACA,eACA,cACA,mBACA,eACA,WACA,WACA,eACA,YACA,YACA,gBACA,WACA,gBACA,eACA,UACA,YACA,iBACA,iBACA,gBACA,UACA,cACA,cACA,cACA,gBACA,qBACA,mBACA,wBACA,UACA,WACA,UACA,cACA,gBACA,UACA,kBACA,eACA,UACA,0BACA,0BACA,0BACA,eACA,aACA,eACA,WACA,YACA,UACA,YACA,WACA,YACA,WACA,iBACA,WACA,YACA,cACA,qBACA,0BACA,4BACA,iCACA,cACA,uBACA,YACA,YACA,gBACA,aACA,WACA,cACA,WACA,UACA,WACA,YACA,cACA,eACA,qBACA,oBACA,aACA,WACA,aACA,wBACA,WACA,mBACA,UACA,UACA,UACA,WACA,WACA,WACA,gBACA,aACA,aACA,yBACA,iBAGF,OAAW,gBAAgB,eACzB,eAAe,cE5TjB,GAAM,UAAm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ACA,gBACA,YACA,YACA,gBACA,aACA,aACA,iBACA,YACA,iBACA,gBACA,aACA,WACA,kBACA,kBACA,iBACA,WACA,iBACA,eACA,oBACA,mBACA,yBACA,eACA,YACA,WACA,eACA,iBACA,WACA,mBACA,gBACA,WACA,2BACA,2BACA,2BACA,gBACA,cACA,gBACA,YACA,aACA,WACA,aACA,YACA,aACA,YACA,eACA,kBACA,aACA,YACA,eACA,sBACA,0BACA,6BACA,iCACA,eACA,wBACA,aACA,aACA,iBACA,cACA,YACA,eACA,YACA,WACA,YACA,aACA,eACA,gBACA,sBACA,qBACA,cACA,YACA,cACA,yBACA,YACA,oBACA,WACA,WACA,WACA,YACA,YACA,YACA,iBACA,cACA,cACA,0BACA,kBAGF,OAAW,gBAAgB,gBACzB,eAAe,cErUjB,GAAM,UAAU,QCmCH,SAAU,CACrB,YAAa,QACb,mBAAoB,SACpB,qBAAsB,SACtB,YAAa,SACb,cAAe,SACf,iBAAkB,SAClB,KAAQ,UC3BE,SAAZ,AAAA,UAAY,WACV,UAAA,UAAA,QAAA,GAAA,UACA,UAAA,UAAA,MAAA,GAAA,QACA,UAAA,UAAA,KAAA,GAAA,OACA,UAAA,UAAA,OAAA,GAAA,SACA,UAAA,UAAA,UAAA,GAAA,cALU,UAAA,UAAQ,KASpB,GAAY,mBAAZ,AAAA,UAAY,oBACV,mBAAA,mBAAA,OAAA,GAAA,SACA,mBAAA,mBAAA,KAAA,GAAA,OACA,mBAAA,mBAAA,MAAA,GAAA,QACA,mBAAA,mBAAA,MAAA,GAAA,QACA,mBAAA,mBAAA,UAAA,GAAA,cALU,mBAAA,mBAAiB,KCJ7B,GAAI,iBAOJ,eAAe,UACb,gBAAkB,SAAQ,KAAK,MAAM,aAAc,KAAiB,CAClE,SACA,QACA,SACA,SACA,QACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,WAIJ,0BAA0B,MAKxB,GAAM,CAAC,OAAQ,QAAA,SAAS,OAAS,KAC3B,CAAC,EAAG,EAAG,KAAM,wBAA0B,OAE7C,GAAI,EAAE,QAAU,WAAa,EAAE,QAAU,UACvC,KAAM,IAAI,OAC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", + "mappings": "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AG,EAAI,EAAU,EAAE,EAC9B,EAAa,GAAW,EAAY,EAAI,GAE1C,EAAa,GAAW,EAAY,GAAK,EAAS,MAAO,SACzD,GAAM,GAAY,GAAU,GAC5B,MAAO,IAAM,EAAY,EAAU,GClC9B,GAAM,IAAkC,CAC7C,WAAY,GACZ,SAAW,GACF,EAAC,EAAG,IAAM,GAAU,MC+FzB,GAA4B,CAChC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAGF,OAAW,KAAkB,IAC3B,GAAiB,GCxMnB,EAAO,UAAU,IAAM,WACrB,MAAA,MAAK,kBACE,GAAI,OCFb,EAAO,UAAU,KAAO,WACtB,MAAA,MAAK,kBACE,GAAK,OCFd,EAAO,UAAU,MAAQ,WACvB,MAAA,MAAK,kBACE,GAAM,OCCf,EAAO,UAAU,UAAY,SAChB,GACX,MAAA,MAAK,kBACE,GAAU,KAAM,ICRzB,EAAO,UAAU,IAAM,SAA2B,GAChD,MAAA,MAAK,kBACE,EAAI,KAAM,ICDnB,EAAO,UAAU,IAAM,SACV,EAAwB,GACnC,MAAA,MAAK,kBACE,GAAI,KAAM,EAAM,ICHzB,EAAO,UAAU,IAAM,SACV,EAAwB,GACnC,MAAA,MAAK,kBACE,GAAI,KAAM,EAAM,ICJzB,EAAO,UAAU,OAAS,SAA2B,GACnD,MAAA,MAAK,kBACE,G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QAAA,EAAS,MAAO,CAAC,MAAO,aAC/C,EACF,GAAS,CAAC,OAAQ,CAAC,EAAG,EAAY,EAAG,GAAI,QAAA,IACvC,EACF,GAAI,CAAC,OAAQ,CAAC,GAAS,QAAA,EAAS,MAAO,CAAC,KAAM,EAAG,SAAU,MAC/D,EAAI,KAAK,GACT,EAAc,KAAK,GACnB,EAAc,KAAK,GACnB,EAAc,KAAK,GACnB,EAAc,KAAK,GACnB,EAAc,KAAK,GAGrB,GAAM,GAAS,GAAK,CAAC,OAAQ,EAAK,QAAA,EAAS,MAAO,CAAC,KAAM,KAEzD,MAAA,GAAc,QAAQ,GAAK,EAAQ,8BAA8B,IAE1D,EAGF,GAAM,IAAyC,CACpD,WAAY,GACZ,YAAa,MACb,WAAY,IC2FR,GAAgC,CACpC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAGF,OAAW,KAAgB,IACzB,G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GAElD,EACF,GAAQ,CAAC,OAAQ,CAAC,EAAG,GAAc,QAAA,EAAS,MAAO,CAAC,MAAO,KAE3D,EAAS,EACb,GAAI,GAAe,MACjB,EAAU,KAAK,GACf,GAAM,GAAO,EAAa,uBAAuB,GACjD,EAAS,GAAU,CAAC,OAAQ,CAAC,GAAY,QAAA,EAAS,MAAO,CAAC,KAAA,KAG5D,MAAA,GAAU,QAAQ,GAAK,EAAQ,8BAA8B,IACtD,EAGF,GAAM,KAAyC,CACpD,WAAY,GACZ,YAAa,QACb,WAAY,KC4DR,IAAgC,CACpC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IAGF,OAAW,KAAgB,KACzB,GAAe,GErUjB,GAAM,KAAU,QCmCH,IAAU,CACrB,YAAa,GACb,mBAAoB,GACpB,qBAAsB,GACtB,YAAa,GACb,cAAe,GACf,iBAAkB,GAClB,KAAQ,KC3BE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", "names": [] } diff --git a/dist/face-api.esm.json b/dist/face-api.esm.json index c037868..8dd7cbc 100644 --- a/dist/face-api.esm.json +++ b/dist/face-api.esm.json @@ -1,7 +1,7 @@ { "inputs": { "dist/tfjs.esm.js": { - "bytes": 1566890, + "bytes": 1064181, "imports": [] }, "src/draw/drawContour.ts": { @@ -1077,7 +1077,7 @@ ] }, "package.json": { - "bytes": 1807, + "bytes": 1839, "imports": [] }, "src/xception/extractParams.ts": { @@ -2136,7 +2136,7 @@ "dist/face-api.esm.js.map": { "imports": [], "inputs": {}, - "bytes": 1452595 + "bytes": 1455627 }, "dist/face-api.esm.js": { "imports": [], @@ -2264,475 +2264,475 @@ ], "inputs": { "src/env/isNodejs.ts": { - "bytesInOutput": 229 + "bytesInOutput": 173 }, "dist/tfjs.esm.js": { - "bytesInOutput": 1564739 + "bytesInOutput": 1055666 }, "src/draw/index.ts": { - "bytesInOutput": 451 + "bytesInOutput": 280 }, "src/draw/drawContour.ts": { - "bytesInOutput": 313 + "bytesInOutput": 213 }, "src/utils/index.ts": { - "bytesInOutput": 1529 + "bytesInOutput": 996 }, "src/classes/Dimensions.ts": { - "bytesInOutput": 398 + "bytesInOutput": 337 }, "src/classes/Point.ts": { - "bytesInOutput": 473 + "bytesInOutput": 440 }, "src/classes/Box.ts": { - "bytesInOutput": 3305 + "bytesInOutput": 2661 }, "src/classes/BoundingBox.ts": { - "bytesInOutput": 153 + "bytesInOutput": 93 }, "src/classes/index.ts": { "bytesInOutput": 0 }, "src/classes/ObjectDetection.ts": { - "bytesInOutput": 754 + "bytesInOutput": 627 }, "src/classes/FaceDetection.ts": { - "bytesInOutput": 272 + "bytesInOutput": 155 }, "src/ops/iou.ts": { - "bytesInOutput": 328 + "bytesInOutput": 215 }, "src/ops/index.ts": { - "bytesInOutput": 99 + "bytesInOutput": 82 }, "src/ops/minBbox.ts": { - "bytesInOutput": 294 + "bytesInOutput": 204 }, "src/ops/nonMaxSuppression.ts": { - "bytesInOutput": 556 + "bytesInOutput": 282 }, "src/ops/normalize.ts": { - "bytesInOutput": 278 + "bytesInOutput": 209 }, "src/ops/padToSquare.ts": { - "bytesInOutput": 791 + "bytesInOutput": 295 }, "src/ops/shuffleArray.ts": { - "bytesInOutput": 195 + "bytesInOutput": 133 }, "src/classes/Rect.ts": { - "bytesInOutput": 136 + "bytesInOutput": 88 }, "src/classes/FaceLandmarks.ts": { - "bytesInOutput": 1888 + "bytesInOutput": 1408 }, "src/classes/FaceLandmarks5.ts": { - "bytesInOutput": 153 + "bytesInOutput": 108 }, "src/classes/FaceLandmarks68.ts": { - "bytesInOutput": 501 + "bytesInOutput": 465 }, "src/classes/FaceMatch.ts": { - "bytesInOutput": 256 + "bytesInOutput": 201 }, "src/classes/LabeledBox.ts": { - "bytesInOutput": 308 + "bytesInOutput": 252 }, "src/classes/LabeledFaceDescriptors.ts": { - "bytesInOutput": 728 + "bytesInOutput": 595 }, "src/classes/PredictedBox.ts": { - "bytesInOutput": 508 + "bytesInOutput": 385 }, "src/factories/WithFaceDetection.ts": { - "bytesInOutput": 170 + "bytesInOutput": 95 }, "src/env/createBrowserEnv.ts": { - "bytesInOutput": 487 + "bytesInOutput": 453 }, "src/env/createFileSystem.ts": { - "bytesInOutput": 363 + "bytesInOutput": 247 }, "src/env/createNodejsEnv.ts": { - "bytesInOutput": 722 + "bytesInOutput": 600 }, "src/env/isBrowser.ts": { - "bytesInOutput": 275 + "bytesInOutput": 267 }, "src/env/index.ts": { - "bytesInOutput": 1170 + "bytesInOutput": 816 }, "src/dom/resolveInput.ts": { - "bytesInOutput": 105 + "bytesInOutput": 85 }, "src/dom/getContext2dOrThrow.ts": { - "bytesInOutput": 447 + "bytesInOutput": 314 }, "src/draw/DrawTextField.ts": { - "bytesInOutput": 2255 + "bytesInOutput": 1485 }, "src/draw/DrawBox.ts": { - "bytesInOutput": 825 + "bytesInOutput": 583 }, "src/draw/drawDetections.ts": { - "bytesInOutput": 391 + "bytesInOutput": 224 }, "src/dom/isMediaLoaded.ts": { - "bytesInOutput": 152 + "bytesInOutput": 115 }, "src/dom/awaitMediaLoaded.ts": { - "bytesInOutput": 543 + "bytesInOutput": 424 }, "src/dom/index.ts": { "bytesInOutput": 0 }, "src/dom/bufferToImage.ts": { - "bytesInOutput": 483 + "bytesInOutput": 387 }, "src/dom/getMediaDimensions.ts": { - "bytesInOutput": 275 + "bytesInOutput": 184 }, "src/dom/createCanvas.ts": { - "bytesInOutput": 622 + "bytesInOutput": 393 }, "src/dom/imageTensorToCanvas.ts": { - "bytesInOutput": 360 + "bytesInOutput": 174 }, "src/dom/isMediaElement.ts": { - "bytesInOutput": 152 + "bytesInOutput": 111 }, "src/dom/imageToSquare.ts": { - "bytesInOutput": 713 + "bytesInOutput": 383 }, "src/dom/NetInput.ts": { - "bytesInOutput": 2852 + "bytesInOutput": 2172 }, "src/dom/toNetInput.ts": { - "bytesInOutput": 1113 + "bytesInOutput": 776 }, "src/dom/extractFaces.ts": { - "bytesInOutput": 758 + "bytesInOutput": 480 }, "src/dom/extractFaceTensors.ts": { - "bytesInOutput": 686 + "bytesInOutput": 418 }, "src/dom/fetchOrThrow.ts": { - "bytesInOutput": 223 + "bytesInOutput": 177 }, "src/dom/fetchImage.ts": { - "bytesInOutput": 269 + "bytesInOutput": 219 }, "src/dom/fetchJson.ts": { - "bytesInOutput": 69 + "bytesInOutput": 48 }, "src/dom/fetchNetWeights.ts": { - "bytesInOutput": 106 + "bytesInOutput": 80 }, "src/common/getModelUris.ts": { - "bytesInOutput": 765 + "bytesInOutput": 473 }, "src/dom/loadWeightMap.ts": { - "bytesInOutput": 207 + "bytesInOutput": 106 }, "src/dom/matchDimensions.ts": { - "bytesInOutput": 204 + "bytesInOutput": 102 }, "src/NeuralNetwork.ts": { - "bytesInOutput": 3247 + "bytesInOutput": 2592 }, "src/common/depthwiseSeparableConv.ts": { - "bytesInOutput": 194 + "bytesInOutput": 117 }, "src/faceFeatureExtractor/denseBlock.ts": { - "bytesInOutput": 1037 + "bytesInOutput": 468 }, "src/common/convLayer.ts": { - "bytesInOutput": 170 + "bytesInOutput": 104 }, "src/common/index.ts": { "bytesInOutput": 0 }, "src/common/disposeUnusedWeightTensors.ts": { - "bytesInOutput": 175 + "bytesInOutput": 92 }, "src/common/extractConvParamsFactory.ts": { - "bytesInOutput": 410 + "bytesInOutput": 163 }, "src/common/extractFCParamsFactory.ts": { - "bytesInOutput": 378 + "bytesInOutput": 153 }, "src/common/types.ts": { - "bytesInOutput": 177 + "bytesInOutput": 94 }, "src/common/extractSeparableConvParamsFactory.ts": { - "bytesInOutput": 891 + "bytesInOutput": 355 }, "src/common/extractWeightEntryFactory.ts": { - "bytesInOutput": 366 + "bytesInOutput": 189 }, "src/common/extractWeightsFactory.ts": { - "bytesInOutput": 311 + "bytesInOutput": 147 }, "src/faceFeatureExtractor/extractorsFactory.ts": { - "bytesInOutput": 1047 + "bytesInOutput": 377 }, "src/faceFeatureExtractor/extractParams.ts": { - "bytesInOutput": 570 + "bytesInOutput": 344 }, "src/common/loadConvParamsFactory.ts": { - "bytesInOutput": 187 + "bytesInOutput": 97 }, "src/faceFeatureExtractor/loadParamsFactory.ts": { - "bytesInOutput": 984 + "bytesInOutput": 389 }, "src/faceFeatureExtractor/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 400 + "bytesInOutput": 186 }, "src/faceFeatureExtractor/FaceFeatureExtractor.ts": { - "bytesInOutput": 841 + "bytesInOutput": 583 }, "src/common/fullyConnectedLayer.ts": { - "bytesInOutput": 99 + "bytesInOutput": 57 }, "src/faceProcessor/extractParams.ts": { - "bytesInOutput": 382 + "bytesInOutput": 215 }, "src/faceProcessor/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 411 + "bytesInOutput": 179 }, "src/faceProcessor/util.ts": { - "bytesInOutput": 252 + "bytesInOutput": 144 }, "src/faceProcessor/FaceProcessor.ts": { - "bytesInOutput": 1544 + "bytesInOutput": 1018 }, "src/faceExpressionNet/FaceExpressions.ts": { - "bytesInOutput": 532 + "bytesInOutput": 369 }, "src/faceExpressionNet/FaceExpressionNet.ts": { - "bytesInOutput": 829 + "bytesInOutput": 533 }, "src/faceExpressionNet/index.ts": { "bytesInOutput": 0 }, "src/factories/WithFaceExpressions.ts": { - "bytesInOutput": 182 + "bytesInOutput": 99 }, "src/draw/drawFaceExpressions.ts": { - "bytesInOutput": 718 + "bytesInOutput": 422 }, "src/factories/WithFaceLandmarks.ts": { - "bytesInOutput": 572 + "bytesInOutput": 337 }, "src/draw/DrawFaceLandmarks.ts": { - "bytesInOutput": 1723 + "bytesInOutput": 1228 }, "package.json": { - "bytesInOutput": 23 + "bytesInOutput": 16 }, "src/xception/extractParams.ts": { - "bytesInOutput": 2444 + "bytesInOutput": 1237 }, "src/xception/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 2162 + "bytesInOutput": 1051 }, "src/xception/TinyXception.ts": { - "bytesInOutput": 1798 + "bytesInOutput": 1194 }, "src/ageGenderNet/extractParams.ts": { - "bytesInOutput": 434 + "bytesInOutput": 259 }, "src/ageGenderNet/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 457 + "bytesInOutput": 211 }, "src/ageGenderNet/types.ts": { - "bytesInOutput": 97 + "bytesInOutput": 67 }, "src/ageGenderNet/AgeGenderNet.ts": { - "bytesInOutput": 2499 + "bytesInOutput": 1633 }, "src/ageGenderNet/index.ts": { "bytesInOutput": 0 }, "src/index.ts": { - "bytesInOutput": 159 + "bytesInOutput": 149 }, "src/faceLandmarkNet/FaceLandmark68NetBase.ts": { - "bytesInOutput": 1958 + "bytesInOutput": 1118 }, "src/faceLandmarkNet/FaceLandmark68Net.ts": { - "bytesInOutput": 257 + "bytesInOutput": 167 }, "src/faceLandmarkNet/index.ts": { - "bytesInOutput": 54 + "bytesInOutput": 26 }, "src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts": { - "bytesInOutput": 362 + "bytesInOutput": 167 }, "src/faceFeatureExtractor/extractParamsTiny.ts": { - "bytesInOutput": 517 + "bytesInOutput": 313 }, "src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts": { - "bytesInOutput": 833 + "bytesInOutput": 581 }, "src/faceLandmarkNet/FaceLandmark68TinyNet.ts": { - "bytesInOutput": 274 + "bytesInOutput": 176 }, "src/faceRecognitionNet/scaleLayer.ts": { - "bytesInOutput": 75 + "bytesInOutput": 51 }, "src/faceRecognitionNet/convLayer.ts": { - "bytesInOutput": 410 + "bytesInOutput": 246 }, "src/faceRecognitionNet/extractParams.ts": { - "bytesInOutput": 3320 + "bytesInOutput": 1725 }, "src/faceRecognitionNet/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 2099 + "bytesInOutput": 1117 }, "src/faceRecognitionNet/residualLayer.ts": { - "bytesInOutput": 685 + "bytesInOutput": 397 }, "src/faceRecognitionNet/FaceRecognitionNet.ts": { - "bytesInOutput": 1637 + "bytesInOutput": 1012 }, "src/faceRecognitionNet/index.ts": { - "bytesInOutput": 113 + "bytesInOutput": 58 }, "src/factories/WithFaceDescriptor.ts": { - "bytesInOutput": 93 + "bytesInOutput": 48 }, "src/factories/index.ts": { "bytesInOutput": 0 }, "src/factories/WithAge.ts": { - "bytesInOutput": 124 + "bytesInOutput": 87 }, "src/factories/WithGender.ts": { - "bytesInOutput": 244 + "bytesInOutput": 156 }, "src/ssdMobilenetv1/extractParams.ts": { - "bytesInOutput": 5887 + "bytesInOutput": 3495 }, "src/ssdMobilenetv1/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 4319 + "bytesInOutput": 2467 }, "src/ssdMobilenetv1/pointwiseConvLayer.ts": { - "bytesInOutput": 180 + "bytesInOutput": 110 }, "src/ssdMobilenetv1/mobileNetV1.ts": { - "bytesInOutput": 1048 + "bytesInOutput": 659 }, "src/ssdMobilenetv1/nonMaxSuppression.ts": { - "bytesInOutput": 1504 + "bytesInOutput": 794 }, "src/ssdMobilenetv1/outputLayer.ts": { - "bytesInOutput": 1311 + "bytesInOutput": 670 }, "src/ssdMobilenetv1/boxPredictionLayer.ts": { - "bytesInOutput": 299 + "bytesInOutput": 185 }, "src/ssdMobilenetv1/predictionLayer.ts": { - "bytesInOutput": 1364 + "bytesInOutput": 695 }, "src/ssdMobilenetv1/SsdMobilenetv1Options.ts": { - "bytesInOutput": 555 + "bytesInOutput": 519 }, "src/ssdMobilenetv1/SsdMobilenetv1.ts": { - "bytesInOutput": 1841 + "bytesInOutput": 1176 }, "src/ssdMobilenetv1/index.ts": { - "bytesInOutput": 235 + "bytesInOutput": 112 }, "src/tinyYolov2/const.ts": { - "bytesInOutput": 491 + "bytesInOutput": 358 }, "src/tinyYolov2/config.ts": { - "bytesInOutput": 1173 + "bytesInOutput": 1012 }, "src/tinyYolov2/leaky.ts": { - "bytesInOutput": 116 + "bytesInOutput": 89 }, "src/tinyYolov2/convWithBatchNorm.ts": { - "bytesInOutput": 254 + "bytesInOutput": 177 }, "src/tinyYolov2/depthwiseSeparableConv.ts": { - "bytesInOutput": 234 + "bytesInOutput": 158 }, "src/tinyYolov2/extractParams.ts": { - "bytesInOutput": 2501 + "bytesInOutput": 1237 }, "src/tinyYolov2/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 2034 + "bytesInOutput": 976 }, "src/tinyYolov2/TinyYolov2Options.ts": { - "bytesInOutput": 588 + "bytesInOutput": 556 }, "src/tinyYolov2/TinyYolov2Base.ts": { - "bytesInOutput": 5767 + "bytesInOutput": 3499 }, "src/tinyYolov2/TinyYolov2.ts": { - "bytesInOutput": 782 + "bytesInOutput": 546 }, "src/tinyYolov2/index.ts": { - "bytesInOutput": 139 + "bytesInOutput": 66 }, "src/tinyFaceDetector/TinyFaceDetectorOptions.ts": { - "bytesInOutput": 133 + "bytesInOutput": 97 }, "src/globalApi/ComposableTask.ts": { - "bytesInOutput": 159 + "bytesInOutput": 127 }, "src/globalApi/extractFacesAndComputeResults.ts": { - "bytesInOutput": 772 + "bytesInOutput": 270 }, "src/tinyFaceDetector/const.ts": { - "bytesInOutput": 216 + "bytesInOutput": 173 }, "src/tinyFaceDetector/TinyFaceDetector.ts": { - "bytesInOutput": 631 + "bytesInOutput": 496 }, "src/globalApi/nets.ts": { - "bytesInOutput": 1536 + "bytesInOutput": 877 }, "src/globalApi/PredictFaceExpressionsTask.ts": { - "bytesInOutput": 1702 + "bytesInOutput": 854 }, "src/globalApi/PredictAgeAndGenderTask.ts": { - "bytesInOutput": 1796 + "bytesInOutput": 959 }, "src/globalApi/ComputeFaceDescriptorsTasks.ts": { - "bytesInOutput": 1401 + "bytesInOutput": 754 }, "src/globalApi/DetectFaceLandmarksTasks.ts": { - "bytesInOutput": 1868 + "bytesInOutput": 1089 }, "src/globalApi/DetectFacesTasks.ts": { - "bytesInOutput": 2235 + "bytesInOutput": 1348 }, "src/globalApi/detectFaces.ts": { - "bytesInOutput": 228 + "bytesInOutput": 87 }, "src/globalApi/allFaces.ts": { - "bytesInOutput": 396 + "bytesInOutput": 212 }, "src/globalApi/index.ts": { "bytesInOutput": 0 }, "src/euclideanDistance.ts": { - "bytesInOutput": 268 + "bytesInOutput": 205 }, "src/globalApi/FaceMatcher.ts": { - "bytesInOutput": 1852 + "bytesInOutput": 1333 }, "src/tinyFaceDetector/index.ts": { - "bytesInOutput": 109 + "bytesInOutput": 58 }, "src/resizeResults.ts": { - "bytesInOutput": 824 + "bytesInOutput": 446 } }, - "bytes": 1698462 + "bytes": 1142963 } } } diff --git a/dist/face-api.js b/dist/face-api.js index 295bbc1..0e594d7 100644 --- a/dist/face-api.js +++ b/dist/face-api.js @@ -5,43 +5,43 @@ author: ' */ -var faceapi=(()=>{var __create=Object.create,__defProp=Object.defineProperty,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropDesc=Object.getOwnPropertyDescriptor;var __markAsModule=target=>__defProp(target,"__esModule",{value:!0});var __commonJS=(callback,module)=>()=>(module||(module={exports:{}},callback(module.exports,module)),module.exports),__export=(target,all4)=>{__markAsModule(target);for(var name in all4)__defProp(target,name,{get:all4[name],enumerable:!0})},__exportStar=(target,module,desc)=>{if(__markAsModule(target),module&&typeof module=="object"||typeof module=="function")for(let key of __getOwnPropNames(module))!__hasOwnProp.call(target,key)&&key!=="default"&&__defProp(target,key,{get:()=>module[key],enumerable:!(desc=__getOwnPropDesc(module,key))||desc.enumerable});return target},__toModule=module=>module&&module.__esModule?module:__exportStar(__defProp(module!=null?__create(__getProtoOf(module)):{},"default",{value:module,enumerable:!0}),module);var require_isNodejs=__commonJS((exports,module)=>{__export(exports,{isNodejs:()=>isNodejs2});function isNodejs2(){return typeof global=="object"&&!0&&typeof module!="undefined"&&typeof process!="undefined"&&!!process.version}});var src_exports={};__export(src_exports,{AgeGenderNet:()=>AgeGenderNet,BoundingBox:()=>BoundingBox,Box:()=>Box,ComposableTask:()=>ComposableTask,ComputeAllFaceDescriptorsTask:()=>ComputeAllFaceDescriptorsTask,ComputeFaceDescriptorsTaskBase:()=>ComputeFaceDescriptorsTaskBase,ComputeSingleFaceDescriptorTask:()=>ComputeSingleFaceDescriptorTask,DetectAllFaceLandmarksTask:()=>DetectAllFaceLandmarksTask,DetectAllFacesTask:()=>DetectAllFacesTask,DetectFaceLandmarksTaskBase:()=>DetectFaceLandmarksTaskBase,DetectFacesTaskBase:()=>DetectFacesTaskBase,DetectSingleFaceLandmarksTask:()=>DetectSingleFaceLandmarksTask,DetectSingleFaceTask:()=>DetectSingleFaceTask,Dimensions:()=>Dimensions,FACE_EXPRESSION_LABELS:()=>FACE_EXPRESSION_LABELS,FaceDetection:()=>FaceDetection,FaceDetectionNet:()=>FaceDetectionNet,FaceExpressionNet:()=>FaceExpressionNet,FaceExpressions:()=>FaceExpressions,FaceLandmark68Net:()=>FaceLandmark68Net,FaceLandmark68TinyNet:()=>FaceLandmark68TinyNet,FaceLandmarkNet:()=>FaceLandmarkNet,FaceLandmarks:()=>FaceLandmarks,FaceLandmarks5:()=>FaceLandmarks5,FaceLandmarks68:()=>FaceLandmarks68,FaceMatch:()=>FaceMatch,FaceMatcher:()=>FaceMatcher,FaceRecognitionNet:()=>FaceRecognitionNet,Gender:()=>Gender,LabeledBox:()=>LabeledBox,LabeledFaceDescriptors:()=>LabeledFaceDescriptors,NetInput:()=>NetInput,NeuralNetwork:()=>NeuralNetwork,ObjectDetection:()=>ObjectDetection,Point:()=>Point,PredictedBox:()=>PredictedBox,Rect:()=>Rect,SsdMobilenetv1:()=>SsdMobilenetv1,SsdMobilenetv1Options:()=>SsdMobilenetv1Options,TinyFaceDetector:()=>TinyFaceDetector,TinyFaceDetectorOptions:()=>TinyFaceDetectorOptions,TinyYolov2:()=>TinyYolov2,TinyYolov2Options:()=>TinyYolov2Options,allFaces:()=>allFaces,allFacesSsdMobilenetv1:()=>allFacesSsdMobilenetv1,allFacesTinyYolov2:()=>allFacesTinyYolov2,awaitMediaLoaded:()=>awaitMediaLoaded,bufferToImage:()=>bufferToImage,computeFaceDescriptor:()=>computeFaceDescriptor,createCanvas:()=>createCanvas2,createCanvasFromMedia:()=>createCanvasFromMedia,createFaceDetectionNet:()=>createFaceDetectionNet,createFaceRecognitionNet:()=>createFaceRecognitionNet,createSsdMobilenetv1:()=>createSsdMobilenetv1,createTinyFaceDetector:()=>createTinyFaceDetector,createTinyYolov2:()=>createTinyYolov2,detectAllFaces:()=>detectAllFaces,detectFaceLandmarks:()=>detectFaceLandmarks,detectFaceLandmarksTiny:()=>detectFaceLandmarksTiny,detectLandmarks:()=>detectLandmarks,detectSingleFace:()=>detectSingleFace,draw:()=>draw_exports,env:()=>env2,euclideanDistance:()=>euclideanDistance,extendWithAge:()=>extendWithAge,extendWithFaceDescriptor:()=>extendWithFaceDescriptor,extendWithFaceDetection:()=>extendWithFaceDetection,extendWithFaceExpressions:()=>extendWithFaceExpressions,extendWithFaceLandmarks:()=>extendWithFaceLandmarks,extendWithGender:()=>extendWithGender,extractFaceTensors:()=>extractFaceTensors,extractFaces:()=>extractFaces,fetchImage:()=>fetchImage,fetchJson:()=>fetchJson,fetchNetWeights:()=>fetchNetWeights,fetchOrThrow:()=>fetchOrThrow,getContext2dOrThrow:()=>getContext2dOrThrow,getMediaDimensions:()=>getMediaDimensions,imageTensorToCanvas:()=>imageTensorToCanvas,imageToSquare:()=>imageToSquare,inverseSigmoid:()=>inverseSigmoid,iou:()=>iou,isMediaElement:()=>isMediaElement,isMediaLoaded:()=>isMediaLoaded,isWithAge:()=>isWithAge,isWithFaceDetection:()=>isWithFaceDetection,isWithFaceExpressions:()=>isWithFaceExpressions,isWithFaceLandmarks:()=>isWithFaceLandmarks,isWithGender:()=>isWithGender,loadAgeGenderModel:()=>loadAgeGenderModel,loadFaceDetectionModel:()=>loadFaceDetectionModel,loadFaceExpressionModel:()=>loadFaceExpressionModel,loadFaceLandmarkModel:()=>loadFaceLandmarkModel,loadFaceLandmarkTinyModel:()=>loadFaceLandmarkTinyModel,loadFaceRecognitionModel:()=>loadFaceRecognitionModel,loadSsdMobilenetv1Model:()=>loadSsdMobilenetv1Model,loadTinyFaceDetectorModel:()=>loadTinyFaceDetectorModel,loadTinyYolov2Model:()=>loadTinyYolov2Model,loadWeightMap:()=>loadWeightMap,locateFaces:()=>locateFaces,matchDimensions:()=>matchDimensions,minBbox:()=>minBbox,nets:()=>nets,nonMaxSuppression:()=>nonMaxSuppression2,normalize:()=>normalize,padToSquare:()=>padToSquare,predictAgeAndGender:()=>predictAgeAndGender,recognizeFaceExpressions:()=>recognizeFaceExpressions,resizeResults:()=>resizeResults,resolveInput:()=>resolveInput,shuffleArray:()=>shuffleArray,sigmoid:()=>sigmoid5,ssdMobilenetv1:()=>ssdMobilenetv1,tf:()=>tfjs_esm_exports,tinyFaceDetector:()=>tinyFaceDetector,tinyYolov2:()=>tinyYolov2,toNetInput:()=>toNetInput,utils:()=>utils_exports,validateConfig:()=>validateConfig,version:()=>version11});var tfjs_esm_exports={};__export(tfjs_esm_exports,{Abs:()=>Abs,Acos:()=>Acos,Acosh:()=>Acosh,AdadeltaOptimizer:()=>AdadeltaOptimizer,AdagradOptimizer:()=>AdagradOptimizer,AdamOptimizer:()=>AdamOptimizer,AdamaxOptimizer:()=>AdamaxOptimizer,Add:()=>Add,AddN:()=>AddN,All:()=>All,Any:()=>Any,ArgMax:()=>ArgMax,ArgMin:()=>ArgMin,Asin:()=>Asin,Asinh:()=>Asinh,Atan:()=>Atan,Atan2:()=>Atan2,Atanh:()=>Atanh,AvgPool:()=>AvgPool,AvgPool3D:()=>AvgPool3D,AvgPool3DGrad:()=>AvgPool3DGrad,AvgPoolGrad:()=>AvgPoolGrad,BackendWasm:()=>BackendWasm,BatchMatMul:()=>BatchMatMul,BatchToSpaceND:()=>BatchToSpaceND,Bincount:()=>Bincount,BroadcastTo:()=>BroadcastTo,Callback:()=>Callback,CallbackList:()=>CallbackList,Cast:()=>Cast,Ceil:()=>Ceil,ClipByValue:()=>ClipByValue,Complex:()=>Complex,ComplexAbs:()=>ComplexAbs,Concat:()=>Concat,Conv2D:()=>Conv2D,Conv2DBackpropFilter:()=>Conv2DBackpropFilter,Conv2DBackpropInput:()=>Conv2DBackpropInput,Conv3D:()=>Conv3D,Conv3DBackpropFilterV2:()=>Conv3DBackpropFilterV2,Conv3DBackpropInputV2:()=>Conv3DBackpropInputV2,Cos:()=>Cos,Cosh:()=>Cosh,CropAndResize:()=>CropAndResize,Cumsum:()=>Cumsum,CustomCallback:()=>CustomCallback,DataStorage:()=>DataStorage,DenseBincount:()=>DenseBincount,DepthToSpace:()=>DepthToSpace,DepthwiseConv2dNative:()=>DepthwiseConv2dNative,DepthwiseConv2dNativeBackpropFilter:()=>DepthwiseConv2dNativeBackpropFilter,DepthwiseConv2dNativeBackpropInput:()=>DepthwiseConv2dNativeBackpropInput,Diag:()=>Diag,Dilation2D:()=>Dilation2D,Dilation2DBackpropFilter:()=>Dilation2DBackpropFilter,Dilation2DBackpropInput:()=>Dilation2DBackpropInput,ENV:()=>ENV,EarlyStopping:()=>EarlyStopping,Elu:()=>Elu,EluGrad:()=>EluGrad,Environment:()=>Environment,Equal:()=>Equal,Erf:()=>Erf,Exp:()=>Exp,ExpandDims:()=>ExpandDims,Expm1:()=>Expm1,FFT:()=>FFT,Fill:()=>Fill,FlipLeftRight:()=>FlipLeftRight,Floor:()=>Floor,FloorDiv:()=>FloorDiv,FromPixels:()=>FromPixels,FusedBatchNorm:()=>FusedBatchNorm,FusedConv2D:()=>FusedConv2D,FusedDepthwiseConv2D:()=>FusedDepthwiseConv2D,GatherNd:()=>GatherNd,GatherV2:()=>GatherV2,GraphModel:()=>GraphModel,Greater:()=>Greater,GreaterEqual:()=>GreaterEqual,History:()=>History,IFFT:()=>IFFT,Identity:()=>Identity,Imag:()=>Imag,InputSpec:()=>InputSpec,IsFinite:()=>IsFinite,IsInf:()=>IsInf,IsNan:()=>IsNan,KernelBackend:()=>KernelBackend,LRN:()=>LRN,LRNGrad:()=>LRNGrad,LayerVariable:()=>LayerVariable,LayersModel:()=>LayersModel,LeakyRelu:()=>LeakyRelu,Less:()=>Less,LessEqual:()=>LessEqual,LinSpace:()=>LinSpace,Log:()=>Log,Log1p:()=>Log1p,LogSoftmax:()=>LogSoftmax,LogicalAnd:()=>LogicalAnd,LogicalNot:()=>LogicalNot,LogicalOr:()=>LogicalOr,Max:()=>Max,MaxPool:()=>MaxPool,MaxPool3D:()=>MaxPool3D,MaxPool3DGrad:()=>MaxPool3DGrad,MaxPoolGrad:()=>MaxPoolGrad,MaxPoolWithArgmax:()=>MaxPoolWithArgmax,Maximum:()=>Maximum,Mean:()=>Mean,Min:()=>Min,Minimum:()=>Minimum,MirrorPad:()=>MirrorPad,Mod:()=>Mod,MomentumOptimizer:()=>MomentumOptimizer,Multinomial:()=>Multinomial,Multiply:()=>Multiply,Neg:()=>Neg,NonMaxSuppressionV3:()=>NonMaxSuppressionV3,NonMaxSuppressionV4:()=>NonMaxSuppressionV4,NonMaxSuppressionV5:()=>NonMaxSuppressionV5,NotEqual:()=>NotEqual,OP_SCOPE_SUFFIX:()=>OP_SCOPE_SUFFIX,OneHot:()=>OneHot,OnesLike:()=>OnesLike,Optimizer:()=>Optimizer,Pack:()=>Pack,PadV2:()=>PadV2,Pool:()=>Pool,Pow:()=>Pow,Prelu:()=>Prelu,Prod:()=>Prod,RMSPropOptimizer:()=>RMSPropOptimizer,RNN:()=>RNN,Range:()=>Range,Rank:()=>Rank,Real:()=>Real,RealDiv:()=>RealDiv,Reciprocal:()=>Reciprocal,Reduction:()=>Reduction,Relu:()=>Relu,Relu6:()=>Relu6,Reshape:()=>Reshape,ResizeBilinear:()=>ResizeBilinear,ResizeBilinearGrad:()=>ResizeBilinearGrad,ResizeNearestNeighbor:()=>ResizeNearestNeighbor,ResizeNearestNeighborGrad:()=>ResizeNearestNeighborGrad,Reverse:()=>Reverse,RotateWithOffset:()=>RotateWithOffset,Round:()=>Round,Rsqrt:()=>Rsqrt,SGDOptimizer:()=>SGDOptimizer,ScatterNd:()=>ScatterNd,Select:()=>Select,Selu:()=>Selu,Sequential:()=>Sequential,Sigmoid:()=>Sigmoid,Sign:()=>Sign,Sin:()=>Sin,Sinh:()=>Sinh,Slice:()=>Slice,Softmax:()=>Softmax,Softplus:()=>Softplus,SpaceToBatchND:()=>SpaceToBatchND,SparseToDense:()=>SparseToDense,SplitV:()=>SplitV,Sqrt:()=>Sqrt,Square:()=>Square,SquaredDifference:()=>SquaredDifference,Step:()=>Step,StridedSlice:()=>StridedSlice,Sub:()=>Sub,Sum:()=>Sum,SymbolicTensor:()=>SymbolicTensor,Tan:()=>Tan,Tanh:()=>Tanh,Tensor:()=>Tensor,TensorBuffer:()=>TensorBuffer,Tile:()=>Tile,TopK:()=>TopK,Transpose:()=>Transpose,Unique:()=>Unique,Unpack:()=>Unpack,UnsortedSegmentSum:()=>UnsortedSegmentSum,Variable:()=>Variable,ZerosLike:()=>ZerosLike,_FusedMatMul:()=>_FusedMatMul,abs:()=>abs,acos:()=>acos,acosh:()=>acosh,add:()=>add2,addN:()=>addN,addStrict:()=>addStrict,all:()=>all,any:()=>any,argMax:()=>argMax,argMin:()=>argMin,asin:()=>asin,asinh:()=>asinh,atan:()=>atan,atan2:()=>atan2,atanh:()=>atanh,avgPool:()=>avgPool,avgPool3d:()=>avgPool3d,backend:()=>backend,backend_util:()=>backend_util_exports,basicLSTMCell:()=>basicLSTMCell,batchNorm:()=>batchNorm,batchNorm2d:()=>batchNorm2d,batchNorm3d:()=>batchNorm3d,batchNorm4d:()=>batchNorm4d,batchToSpaceND:()=>batchToSpaceND,bincount:()=>bincount,booleanMaskAsync:()=>booleanMaskAsync,broadcastTo:()=>broadcastTo,browser:()=>browser_exports,buffer:()=>buffer,callbacks:()=>callbacks,cast:()=>cast,ceil:()=>ceil,clipByValue:()=>clipByValue,clone:()=>clone,complex:()=>complex,concat:()=>concat,concat1d:()=>concat1d,concat2d:()=>concat2d,concat3d:()=>concat3d,concat4d:()=>concat4d,constraints:()=>exports_constraints_exports,conv1d:()=>conv1d,conv2d:()=>conv2d,conv2dTranspose:()=>conv2dTranspose,conv3d:()=>conv3d,conv3dTranspose:()=>conv3dTranspose,copyRegisteredKernels:()=>copyRegisteredKernels,cos:()=>cos,cosh:()=>cosh,cosineWindow:()=>cosineWindow,cumsum:()=>cumsum,customGrad:()=>customGrad,data:()=>dist_exports,denseBincount:()=>denseBincount,deprecationWarn:()=>deprecationWarn,depthToSpace:()=>depthToSpace,depthwiseConv2d:()=>depthwiseConv2d,deregisterOp:()=>deregisterOp,device_util:()=>device_util_exports,diag:()=>diag,dilation2d:()=>dilation2d,disableDeprecationWarnings:()=>disableDeprecationWarnings,dispose:()=>dispose,disposeVariables:()=>disposeVariables,div:()=>div,divNoNan:()=>divNoNan,divStrict:()=>divStrict,dot:()=>dot,dropout:()=>dropout,elu:()=>elu,enableDebugMode:()=>enableDebugMode,enableProdMode:()=>enableProdMode,enclosingPowerOfTwo:()=>enclosingPowerOfTwo,engine:()=>engine,env:()=>env,equal:()=>equal,equalStrict:()=>equalStrict,erf:()=>erf,exp:()=>exp,expandDims:()=>expandDims,expm1:()=>expm1,eye:()=>eye,fft:()=>fft,fill:()=>fill,findBackend:()=>findBackend,findBackendFactory:()=>findBackendFactory,floor:()=>floor,floorDiv:()=>floorDiv,fused:()=>fused_ops_exports,gather:()=>gather,gatherND:()=>gatherND,gather_util:()=>gather_nd_util_exports,getBackend:()=>getBackend,getGradient:()=>getGradient,getKernel:()=>getKernel,getKernelsForBackend:()=>getKernelsForBackend,grad:()=>grad,grads:()=>grads,greater:()=>greater,greaterEqual:()=>greaterEqual,greaterEqualStrict:()=>greaterEqualStrict,greaterStrict:()=>greaterStrict,ifft:()=>ifft,imag:()=>imag,image:()=>image,inTopKAsync:()=>inTopKAsync,initializers:()=>exports_initializers_exports,input:()=>input,io:()=>io_exports,irfft:()=>irfft,isFinite:()=>isFinite2,isInf:()=>isInf,isNaN:()=>isNaN2,keep:()=>keep,kernel_impls:()=>kernel_impls_exports,layers:()=>exports_layers_exports,leakyRelu:()=>leakyRelu,less:()=>less,lessEqual:()=>lessEqual,lessEqualStrict:()=>lessEqualStrict,lessStrict:()=>lessStrict,linalg:()=>linalg,linspace:()=>linspace,loadGraphModel:()=>loadGraphModel,loadLayersModel:()=>loadLayersModel,localResponseNormalization:()=>localResponseNormalization,log:()=>log,log1p:()=>log1p,logSigmoid:()=>logSigmoid,logSoftmax:()=>logSoftmax,logSumExp:()=>logSumExp,logicalAnd:()=>logicalAnd,logicalNot:()=>logicalNot,logicalOr:()=>logicalOr,logicalXor:()=>logicalXor,losses:()=>losses,matMul:()=>matMul,math:()=>math_exports,max:()=>max,maxPool:()=>maxPool,maxPool3d:()=>maxPool3d,maxPoolWithArgmax:()=>maxPoolWithArgmax,maximum:()=>maximum,maximumStrict:()=>maximumStrict,mean:()=>mean,memory:()=>memory,metrics:()=>exports_metrics_exports,min:()=>min,minimum:()=>minimum,minimumStrict:()=>minimumStrict,mirrorPad:()=>mirrorPad,mod:()=>mod,modStrict:()=>modStrict,model:()=>model,models:()=>exports_models_exports,moments:()=>moments,movingAverage:()=>movingAverage,mul:()=>mul,mulStrict:()=>mulStrict,multiRNNCell:()=>multiRNNCell,multinomial:()=>multinomial,neg:()=>neg,nextFrame:()=>nextFrame,norm:()=>norm,notEqual:()=>notEqual,notEqualStrict:()=>notEqualStrict,oneHot:()=>oneHot,ones:()=>ones2,onesLike:()=>onesLike,op:()=>op,outerProduct:()=>outerProduct,pad:()=>pad,pad1d:()=>pad1d,pad2d:()=>pad2d,pad3d:()=>pad3d,pad4d:()=>pad4d,pool:()=>pool,pow:()=>pow,powStrict:()=>powStrict,prelu:()=>prelu,print:()=>print2,prod:()=>prod,profile:()=>profile,rand:()=>rand,randomGamma:()=>randomGamma,randomNormal:()=>randomNormal,randomUniform:()=>randomUniform,range:()=>range,ready:()=>ready,real:()=>real,reciprocal:()=>reciprocal,registerBackend:()=>registerBackend,registerCallbackConstructor:()=>registerCallbackConstructor,registerGradient:()=>registerGradient,registerKernel:()=>registerKernel,registerOp:()=>registerOp,regularizers:()=>exports_regularizers_exports,relu:()=>relu,relu6:()=>relu6,removeBackend:()=>removeBackend,reshape:()=>reshape,reverse:()=>reverse,reverse1d:()=>reverse1d,reverse2d:()=>reverse2d,reverse3d:()=>reverse3d,reverse4d:()=>reverse4d,rfft:()=>rfft,round:()=>round2,rsqrt:()=>rsqrt,scalar:()=>scalar,scatterND:()=>scatterND,scatter_util:()=>scatter_nd_util_exports,selu:()=>selu,separableConv2d:()=>separableConv2d,sequential:()=>sequential,serialization:()=>serialization_exports,setBackend:()=>setBackend,setPlatform:()=>setPlatform,setWasmPath:()=>setWasmPath,setWasmPaths:()=>setWasmPaths,setdiff1dAsync:()=>setdiff1dAsync,sigmoid:()=>sigmoid,sign:()=>sign,signal:()=>signal,sin:()=>sin,sinh:()=>sinh,slice:()=>slice,slice1d:()=>slice1d,slice2d:()=>slice2d,slice3d:()=>slice3d,slice4d:()=>slice4d,slice_util:()=>slice_util_exports,softmax:()=>softmax,softplus:()=>softplus,spaceToBatchND:()=>spaceToBatchND,sparseToDense:()=>sparseToDense,spectral:()=>spectral,split:()=>split,sqrt:()=>sqrt,square:()=>square,squaredDifference:()=>squaredDifference,squaredDifferenceStrict:()=>squaredDifferenceStrict,squeeze:()=>squeeze,stack:()=>stack,step:()=>step,stridedSlice:()=>stridedSlice,sub:()=>sub,subStrict:()=>subStrict,sum:()=>sum2,sumOutType:()=>sumOutType,tan:()=>tan,tanh:()=>tanh2,tensor:()=>tensor,tensor1d:()=>tensor1d,tensor2d:()=>tensor2d,tensor3d:()=>tensor3d,tensor4d:()=>tensor4d,tensor5d:()=>tensor5d,tensor6d:()=>tensor6d,tensor_util:()=>tensor_util_exports,test_util:()=>test_util_exports,tidy:()=>tidy,tile:()=>tile,time:()=>time,topk:()=>topk,train:()=>train,transpose:()=>transpose,truncatedNormal:()=>truncatedNormal,unique:()=>unique,unregisterGradient:()=>unregisterGradient,unregisterKernel:()=>unregisterKernel,unsortedSegmentSum:()=>unsortedSegmentSum,unstack:()=>unstack,upcastType:()=>upcastType,util:()=>util_exports,valueAndGrad:()=>valueAndGrad,valueAndGrads:()=>valueAndGrads,variable:()=>variable,variableGrads:()=>variableGrads,version:()=>version8,version_converter:()=>version3,version_core:()=>version,version_layers:()=>version2,version_wasm:()=>version9,where:()=>where,whereAsync:()=>whereAsync,zeros:()=>zeros,zerosLike:()=>zerosLike});var __create2=Object.create,__defProp2=Object.defineProperty,__getProtoOf2=Object.getPrototypeOf,__hasOwnProp2=Object.prototype.hasOwnProperty,__getOwnPropNames2=Object.getOwnPropertyNames,__getOwnPropDesc2=Object.getOwnPropertyDescriptor,__markAsModule2=target=>__defProp2(target,"__esModule",{value:!0}),__commonJS2=(callback,module)=>()=>(module||(module={exports:{}},callback(module.exports,module)),module.exports),__export2=(target,all4)=>{__markAsModule2(target);for(var name in all4)__defProp2(target,name,{get:all4[name],enumerable:!0})},__exportStar2=(target,module,desc)=>{if(__markAsModule2(target),module&&typeof module=="object"||typeof module=="function")for(let key of __getOwnPropNames2(module))!__hasOwnProp2.call(target,key)&&key!=="default"&&__defProp2(target,key,{get:()=>module[key],enumerable:!(desc=__getOwnPropDesc2(module,key))||desc.enumerable});return target},__toModule2=module=>module&&module.__esModule?module:__exportStar2(__defProp2(module!=null?__create2(__getProtoOf2(module)):{},"default",{value:module,enumerable:!0}),module),require_browser=__commonJS2(()=>{}),require_alea=__commonJS2((exports,module)=>{(function(global2,module2,define2){function Alea(seed){var me=this,mash=Mash();me.next=function(){var t=2091639*me.s0+me.c*23283064365386963e-26;return me.s0=me.s1,me.s1=me.s2,me.s2=t-(me.c=t|0)},me.c=1,me.s0=mash(" "),me.s1=mash(" "),me.s2=mash(" "),me.s0-=mash(seed),me.s0<0&&(me.s0+=1),me.s1-=mash(seed),me.s1<0&&(me.s1+=1),me.s2-=mash(seed),me.s2<0&&(me.s2+=1),mash=null}function copy(f,t){return t.c=f.c,t.s0=f.s0,t.s1=f.s1,t.s2=f.s2,t}function impl(seed,opts){var xg=new Alea(seed),state=opts&&opts.state,prng=xg.next;return prng.int32=function(){return xg.next()*4294967296|0},prng.double=function(){return prng()+(prng()*2097152|0)*11102230246251565e-32},prng.quick=prng,state&&(typeof state=="object"&©(state,xg),prng.state=function(){return copy(xg,{})}),prng}function Mash(){var n=4022871197,mash=function(data){data=data.toString();for(var i=0;i>>0,h-=n,h*=n,n=h>>>0,h-=n,n+=h*4294967296}return(n>>>0)*23283064365386963e-26};return mash}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.alea=impl})(exports,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor128=__commonJS2((exports,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.x=0,me.y=0,me.z=0,me.w=0,me.next=function(){var t=me.x^me.x<<11;return me.x=me.y,me.y=me.z,me.z=me.w,me.w^=me.w>>>19^t^t>>>8},seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state&&(typeof state=="object"&©(state,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor128=impl})(exports,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorwow=__commonJS2((exports,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var t=me.x^me.x>>>2;return me.x=me.y,me.y=me.z,me.z=me.w,me.w=me.v,(me.d=me.d+362437|0)+(me.v=me.v^me.v<<4^(t^t<<1))|0},me.x=0,me.y=0,me.z=0,me.w=0,me.v=0,seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>4),me.next()}function copy(f,t){return t.x=f.x,t.y=f.y,t.z=f.z,t.w=f.w,t.v=f.v,t.d=f.d,t}function impl(seed,opts){var xg=new XorGen(seed),state=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state&&(typeof state=="object"&©(state,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorwow=impl})(exports,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xorshift7=__commonJS2((exports,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var X=me.x,i=me.i,t,v,w;return t=X[i],t^=t>>>7,v=t^t<<24,t=X[i+1&7],v^=t^t>>>10,t=X[i+3&7],v^=t^t>>>3,t=X[i+4&7],v^=t^t<<7,t=X[i+7&7],t=t^t<<13,v^=t^t<<9,X[i]=v,me.i=i+1&7,v};function init2(me2,seed2){var j,w,X=[];if(seed2===(seed2|0))w=X[0]=seed2;else for(seed2=""+seed2,j=0;j0;--j)me2.next()}init2(me,seed)}function copy(f,t){return t.x=f.x.slice(),t.i=f.i,t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state&&(state.x&©(state,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorshift7=impl})(exports,typeof module=="object"&&module,typeof define=="function"&&define)}),require_xor4096=__commonJS2((exports,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var w=me.w,X=me.X,i=me.i,t,v;return me.w=w=w+1640531527|0,v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,v=X[i]=v^t,me.i=i,v+(w^w>>>16)|0};function init2(me2,seed2){var t,v,i,j,w,X=[],limit=128;for(seed2===(seed2|0)?(v=seed2,seed2=null):(seed2=seed2+"\0",v=0,limit=Math.max(limit,seed2.length)),i=0,j=-32;j>>15,v^=v<<4,v^=v>>>13,j>=0&&(w=w+1640531527|0,t=X[j&127]^=v+w,i=t==0?i+1:0);for(i>=128&&(X[(seed2&&seed2.length||0)&127]=-1),i=127,j=4*128;j>0;--j)v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,X[i]=v^t;me2.w=w,me2.X=X,me2.i=i}init2(me,seed)}function copy(f,t){return t.i=f.i,t.w=f.w,t.X=f.X.slice(),t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state&&(state.X&©(state,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor4096=impl})(exports,typeof module=="object"&&module,typeof define=="function"&&define)}),require_tychei=__commonJS2((exports,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var b=me.b,c=me.c,d=me.d,a=me.a;return b=b<<25^b>>>7^c,c=c-d|0,d=d<<24^d>>>8^a,a=a-b|0,me.b=b=b<<20^b>>>12^c,me.c=c=c-d|0,me.d=d<<16^c>>>16^a,me.a=a-b|0},me.a=0,me.b=0,me.c=2654435769|0,me.d=1367130551,seed===Math.floor(seed)?(me.a=seed/4294967296|0,me.b=seed|0):strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state&&(typeof state=="object"&©(state,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.tychei=impl})(exports,typeof module=="object"&&module,typeof define=="function"&&define)}),require_crypto=__commonJS2(()=>{}),require_seedrandom=__commonJS2((exports,module)=>{(function(pool3,math){var global2=this,width=256,chunks=6,digits=52,rngname="random",startdenom=math.pow(width,chunks),significance=math.pow(2,digits),overflow=significance*2,mask=width-1,nodecrypto;function seedrandom5(seed,options,callback){var key=[];options=options==!0?{entropy:!0}:options||{};var shortseed=mixkey(flatten4(options.entropy?[seed,tostring(pool3)]:seed==null?autoseed():seed,3),key),arc4=new ARC4(key),prng=function(){for(var n=arc4.g(chunks),d=startdenom,x=0;n=overflow;)n/=2,d/=2,x>>>=1;return(n+x)/d};return prng.int32=function(){return arc4.g(4)|0},prng.quick=function(){return arc4.g(4)/4294967296},prng.double=prng,mixkey(tostring(arc4.S),pool3),(options.pass||callback||function(prng2,seed2,is_math_call,state){return state&&(state.S&©(state,arc4),prng2.state=function(){return copy(arc4,{})}),is_math_call?(math[rngname]=prng2,seed2):prng2})(prng,shortseed,"global"in options?options.global:this==math,options.state)}math["seed"+rngname]=seedrandom5;function ARC4(key){var t,keylen=key.length,me=this,i=0,j=me.i=me.j=0,s=me.S=[];for(keylen||(key=[keylen++]);i{var alea5=require_alea(),xor128=require_xor128(),xorwow=require_xorwow(),xorshift7=require_xorshift7(),xor4096=require_xor4096(),tychei=require_tychei(),sr=require_seedrandom();sr.alea=alea5,sr.xor128=xor128,sr.xorwow=xorwow,sr.xorshift7=xorshift7,sr.xor4096=xor4096,sr.tychei=tychei,module.exports=sr}),require_string_decoder=__commonJS2(()=>{}),require_path=__commonJS2(()=>{}),require_worker_threads=__commonJS2(()=>{}),require_perf_hooks=__commonJS2(()=>{}),require_tfjs_backend_wasm_threaded_simd=__commonJS2((exports,module)=>{var WasmBackendModuleThreadedSimd=function(){var _scriptDir=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(_scriptDir=_scriptDir||__filename),function(WasmBackendModuleThreadedSimd2){WasmBackendModuleThreadedSimd2=WasmBackendModuleThreadedSimd2||{};function GROWABLE_HEAP_I8(){return wasmMemory.buffer!=buffer2&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAP8}function GROWABLE_HEAP_U8(){return wasmMemory.buffer!=buffer2&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPU8}function GROWABLE_HEAP_I32(){return wasmMemory.buffer!=buffer2&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAP32}function GROWABLE_HEAP_U32(){return wasmMemory.buffer!=buffer2&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPU32}function GROWABLE_HEAP_F64(){return wasmMemory.buffer!=buffer2&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd2!="undefined"?WasmBackendModuleThreadedSimd2:{},_scriptDir2=void 0,moduleOverrides={},key;for(key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var arguments_=[],thisProgram="./this.program",quit_=function(status,toThrow){throw toThrow},ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module.ENVIRONMENT_IS_PTHREAD||!1;ENVIRONMENT_IS_PTHREAD&&(buffer2=Module.buffer,DYNAMIC_BASE=Module.DYNAMIC_BASE,DYNAMICTOP_PTR=Module.DYNAMICTOP_PTR);var scriptDirectory="";function locateFile(path){return Module.locateFile?Module.locateFile(path,scriptDirectory):scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle,nodeFS,nodePath;if(ENVIRONMENT_IS_NODE){ENVIRONMENT_IS_WORKER?scriptDirectory=require_path().dirname(scriptDirectory)+"/":scriptDirectory=__dirname+"/",read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret},process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),process.on("uncaughtException",function(ex){if(!(ex instanceof ExitStatus))throw ex}),process.on("unhandledRejection",abort),quit_=function(status){process.exit(status)},Module.inspect=function(){return"[Emscripten Module object]"};var nodeWorkerThreads;try{nodeWorkerThreads=require_worker_threads()}catch(e){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),e}Worker=nodeWorkerThreads.Worker}else ENVIRONMENT_IS_SHELL?(typeof read!="undefined"&&(read_=function(f){return read(f)}),readBinary=function(f){var data;return typeof readbuffer=="function"?new Uint8Array(readbuffer(f)):(data=read(f,"binary"),assert3(typeof data=="object"),data)},typeof scriptArgs!="undefined"?arguments_=scriptArgs:typeof arguments!="undefined"&&(arguments_=arguments),typeof quit=="function"&&(quit_=function(status){quit(status)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:document.currentScript&&(scriptDirectory=document.currentScript.src),_scriptDir2&&(scriptDirectory=_scriptDir2),scriptDirectory.indexOf("blob:")!==0?scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1):scriptDirectory="",ENVIRONMENT_IS_NODE?(read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret}):(read_=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.send(null),xhr.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.responseType="arraybuffer",xhr.send(null),new Uint8Array(xhr.response)}),readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.responseType="arraybuffer",xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()},xhr.onerror=onerror,xhr.send(null)}),setWindowTitle=function(title){document.title=title});ENVIRONMENT_IS_NODE&&typeof performance=="undefined"&&(performance=require_perf_hooks().performance);var out=Module.print||console.log.bind(console),err=Module.printErr||console.warn.bind(console);for(key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&(quit_=Module.quit);var Atomics_load=Atomics.load,Atomics_store=Atomics.store,Atomics_compareExchange=Atomics.compareExchange,wasmBinary;Module.wasmBinary&&(wasmBinary=Module.wasmBinary);var noExitRuntime;Module.noExitRuntime&&(noExitRuntime=Module.noExitRuntime),typeof WebAssembly!="object"&&err("no native wasm support detected");var wasmMemory,wasmTable=new WebAssembly.Table({initial:169,maximum:169+0,element:"anyfunc"}),wasmModule,threadInfoStruct=0,selfThreadId=0,ABORT=!1,EXITSTATUS=0;function assert3(condition,text){condition||abort("Assertion failed: "+text)}function getCFunc(ident){var func2=Module["_"+ident];return assert3(func2,"Cannot call unknown function "+ident+", make sure it is exported"),func2}function ccall(ident,returnType,argTypes,args,opts){var toC={string:function(str){var ret2=0;if(str!=null&&str!==0){var len=(str.length<<2)+1;ret2=stackAlloc(len),stringToUTF8(str,ret2,len)}return ret2},array:function(arr){var ret2=stackAlloc(arr.length);return writeArrayToMemory(arr,ret2),ret2}};function convertReturnValue(ret2){return returnType==="string"?UTF8ToString(ret2):returnType==="boolean"?Boolean(ret2):ret2}var func2=getCFunc(ident),cArgs=[],stack2=0;if(args)for(var i=0;i=endIdx);){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224?u0=(u0&15)<<12|u1<<6|u2:u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63,u0<65536)str+=String.fromCharCode(u0);else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;for(var startIdx=outIdx,endIdx=outIdx+maxBytesToWrite-1,i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6,heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18,heap[outIdx++]=128|u>>12&63,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}}return heap[outIdx]=0,outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){for(var len=0,i=0;i=55296&&u<=57343&&(u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023),u<=127?++len:u<=2047?len+=2:u<=65535?len+=3:len+=4}return len}function writeArrayToMemory(array2,buffer3){GROWABLE_HEAP_I8().set(array2,buffer3)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){return x%multiple>0&&(x+=multiple-x%multiple),x}var buffer2,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer2=buf,Module.HEAP8=HEAP8=new Int8Array(buf),Module.HEAP16=HEAP16=new Int16Array(buf),Module.HEAP32=HEAP32=new Int32Array(buf),Module.HEAPU8=HEAPU8=new Uint8Array(buf),Module.HEAPU16=HEAPU16=new Uint16Array(buf),Module.HEAPU32=HEAPU32=new Uint32Array(buf),Module.HEAPF32=HEAPF32=new Float32Array(buf),Module.HEAPF64=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256464,STACKTOP=STACK_BASE,STACK_MAX=13584,DYNAMIC_BASE=5256464,DYNAMICTOP_PTR=12656,INITIAL_INITIAL_MEMORY=Module.INITIAL_MEMORY||16777216;if(ENVIRONMENT_IS_PTHREAD)wasmMemory=Module.wasmMemory,buffer2=Module.buffer;else if(Module.wasmMemory)wasmMemory=Module.wasmMemory;else if(wasmMemory=new WebAssembly.Memory({initial:INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,maximum:2147483648/WASM_PAGE_SIZE,shared:!0}),!(wasmMemory.buffer instanceof SharedArrayBuffer))throw err("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"),ENVIRONMENT_IS_NODE&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"),Error("bad memory");wasmMemory&&(buffer2=wasmMemory.buffer),INITIAL_INITIAL_MEMORY=buffer2.byteLength,updateGlobalBufferAndViews(buffer2),ENVIRONMENT_IS_PTHREAD||(GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE);function callRuntimeCallbacks(callbacks2){for(;callbacks2.length>0;){var callback=callbacks2.shift();if(typeof callback=="function"){callback(Module);continue}var func2=callback.func;typeof func2=="number"?callback.arg===void 0?Module.dynCall_v(func2):Module.dynCall_vi(func2,callback.arg):func2(callback.arg===void 0?null:callback.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1;ENVIRONMENT_IS_PTHREAD&&(runtimeInitialized=!0);function preRun(){if(!ENVIRONMENT_IS_PTHREAD){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}}function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__)}function preMain(){ENVIRONMENT_IS_PTHREAD||callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(!ENVIRONMENT_IS_PTHREAD){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil,Math_floor=Math.floor,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function addRunDependency(id){assert3(!ENVIRONMENT_IS_PTHREAD,"addRunDependency cannot be used in a pthread worker"),runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(id){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var callback=dependenciesFulfilled;dependenciesFulfilled=null,callback()}}Module.preloadedImages={},Module.preloadedAudios={};function abort(what){throw Module.onAbort&&Module.onAbort(what),ENVIRONMENT_IS_PTHREAD&&console.error("Pthread aborting at "+new Error().stack),what+="",out(what),err(what),ABORT=!0,EXITSTATUS=1,what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="tfjs-backend-wasm-threaded-simd.wasm";isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile));function getBinary(){try{if(wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(wasmBinaryFile);throw"both async and sync fetching of the wasm failed"}catch(err2){abort(err2)}}function getBinaryPromise(){return!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch=="function"&&!isFileURI(wasmBinaryFile)?fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response.ok)throw"failed to load wasm binary file at '"+wasmBinaryFile+"'";return response.arrayBuffer()}).catch(function(){return getBinary()}):new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={a:asmLibraryArg};function receiveInstance(instance,module2){var exports3=instance.exports;if(Module.asm=exports3,wasmModule=module2,!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){--numWorkersToLoad||removeRunDependency("wasm-instantiate")})})}}ENVIRONMENT_IS_PTHREAD||addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output.instance,output.module)}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason),abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function")fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(receiveInstantiatedSource)})});else return instantiateArrayBuffer(receiveInstantiatedSource)}if(Module.instantiateWasm)try{var exports2=Module.instantiateWasm(info,receiveInstance);return exports2}catch(e){return err("Module.instantiateWasm callback failed with error: "+e),!1}return instantiateAsync(),{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}ENVIRONMENT_IS_PTHREAD||__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0,__pthread_is_main_runtime_thread=0,__pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0,isMainBrowserThread=isMainBrowserThread|0,isMainRuntimeThread=isMainRuntimeThread|0,__pthread_ptr=pthreadPtr,__pthread_is_main_browser_thread=isMainBrowserThread,__pthread_is_main_runtime_thread=isMainRuntimeThread}Module.__register_pthread_ptr=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},__main_thread_futex_wait_address=13568;function _emscripten_futex_wake(addr,count2){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&!0||count2<0)return-28;if(count2==0)return 0;count2>=2147483647&&(count2=Infinity);var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2),mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress&&(--count2,mainThreadWoken=1,count2<=0))return 1}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count2);if(ret>=0)return ret+mainThreadWoken;throw"Atomics.notify returned an unexpected value "+ret}Module._emscripten_futex_wake=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _kill_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _kill_thread!";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate(),PThread.freeThreadData(pthread),PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1),pthread.worker.pthread=void 0}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _cancel_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _cancel_thread!";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({cmd:"cancel"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _cleanup_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _cleanup_thread!";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1),_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){for(var pthreadPoolSize=8,i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;for(var tlsMemory=13056,i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory),Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock),Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){for(;PThread.exitHandlers.length>0;)PThread.exitHandlers.pop()();PThread.exitHandlers=null}ENVIRONMENT_IS_PTHREAD&&threadInfoStruct&&___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();tb&&(Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode),Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1),Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1),Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0),PThread.runExitHandlers(),_emscripten_futex_wake(tb+0,2147483647),__register_pthread_ptr(0,0,0),threadInfoStruct=0,ENVIRONMENT_IS_PTHREAD&&postMessage({cmd:"exit"}))},threadCancel:function(){PThread.runExitHandlers(),Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1),Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1),_emscripten_futex_wake(threadInfoStruct+0,2147483647),threadInfoStruct=selfThreadId=0,__register_pthread_ptr(0,0,0),postMessage({cmd:"cancelDone"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];pthread&&pthread.worker&&PThread.returnWorkerToPool(pthread.worker)}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0,_free(tlsMemory),_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0,pthread.allocatedOwnStack&&pthread.stackBase&&_free(pthread.stackBase),pthread.stackBase=0,pthread.worker&&(pthread.worker.pthread=null)}},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread],PThread.unusedWorkers.push(worker),PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1),PThread.freeThreadData(worker.pthread),worker.pthread=void 0},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e.data,cmd=d.cmd;if(worker.pthread&&(PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct),d.targetThread&&d.targetThread!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];thread?thread.worker.postMessage(e.data,d.transferList):console.error('Internal error! Worker sent a message "'+cmd+'" to target pthread '+d.targetThread+", but that thread no longer exists!"),PThread.currentProxiedOperationCallerThread=void 0;return}if(cmd==="processQueuedMainThreadWork")_emscripten_main_thread_process_queued_calls();else if(cmd==="spawnThread")__spawn_thread(e.data);else if(cmd==="cleanupThread")__cleanup_thread(d.thread);else if(cmd==="killThread")__kill_thread(d.thread);else if(cmd==="cancelThread")__cancel_thread(d.thread);else if(cmd==="loaded")worker.loaded=!0,onFinishedLoading&&onFinishedLoading(worker),worker.runPthread&&(worker.runPthread(),delete worker.runPthread);else if(cmd==="print")out("Thread "+d.threadId+": "+d.text);else if(cmd==="printErr")err("Thread "+d.threadId+": "+d.text);else if(cmd==="alert")alert("Thread "+d.threadId+": "+d.text);else if(cmd==="exit"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);detached&&PThread.returnWorkerToPool(worker)}else cmd==="cancelDone"?PThread.returnWorkerToPool(worker):cmd==="objectTransfer"?PThread.receiveObjectTransfer(e.data):e.data.target==="setimmediate"?worker.postMessage(e.data):err("worker sent an unknown command "+cmd);PThread.currentProxiedOperationCallerThread=void 0},worker.onerror=function(e){err("pthread sent an error! "+e.filename+":"+e.lineno+": "+e.message)},ENVIRONMENT_IS_NODE&&(worker.on("message",function(data){worker.onmessage({data})}),worker.on("error",function(data){worker.onerror(data)}),worker.on("exit",function(data){console.log("worker exited - TODO: update the worker queue?")})),worker.postMessage({cmd:"load",urlOrBlob:Module.mainScriptUrlOrBlob||_scriptDir2,wasmMemory,wasmModule,DYNAMIC_BASE,DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile("tfjs-backend-wasm-threaded-simd.worker.js");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){return PThread.unusedWorkers.length==0&&(PThread.allocateUnusedWorker(),PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])),PThread.unusedWorkers.length>0?PThread.unusedWorkers.pop():null},busySpinWait:function(msecs){for(var t=performance.now()+msecs;performance.now()>2]=value,value}function _atexit(func2,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func2,arg);__ATEXIT__.unshift({func:func2,arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId)postMessage({cmd:"processQueuedMainThreadWork"});else if(ENVIRONMENT_IS_PTHREAD)postMessage({targetThread:targetThreadId,cmd:"processThreadQueue"});else{var pthread=PThread.pthreads[targetThreadId],worker=pthread&&pthread.worker;if(!worker)return;worker.postMessage({cmd:"processThreadQueue"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0,newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&!0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret==="timed-out")return-73;if(ret==="not-equal")return-6;if(ret==="ok")return 0;throw"Atomics.wait returned an unexpected value "+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now(),tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);for(var ourWaitAddress=addr;addr==ourWaitAddress;){if(tNow=performance.now(),tNow>tEnd)return-73;_emscripten_main_thread_process_queued_calls(),addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator.hardwareConcurrency}function _emscripten_proxy_to_main_thread_js(index,sync){for(var numCallArgs=arguments.length-2,stack2=stackSave(),args=stackAlloc(numCallArgs*8),b=args>>3,i=0;i>3]),buf+=8):(buf=buf+3&~3,args.push(GROWABLE_HEAP_I32()[buf>>2]),buf+=4);return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;for(var b=args>>3,i=0;i>>16),updateGlobalBufferAndViews(wasmMemory.buffer),1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize)return!1;var PAGE_MULTIPLE=65536,maxHeapSize=2147483648;if(requestedSize>maxHeapSize)return!1;for(var minHeapSize=16777216,cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE)),replacement=emscripten_realloc_buffer(newSize);if(replacement)return!0}return!1}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:!1,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i)JSEvents._removeHandler(i);JSEvents.eventHandlers=[],JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){JSEvents.removeEventListenersRegistered||(__ATEXIT__.push(JSEvents.removeAllEventListeners),JSEvents.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return!1;for(var i2 in arrA)if(arrA[i2]!=arrB[i2])return!1;return!0}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList))return}JSEvents.deferredCalls.push({targetFunction,precedence,argsList}),JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId,GROWABLE_HEAP_I32()[varargs+4>>2]=eventData,GROWABLE_HEAP_I32()[varargs+8>>2]=userData,_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs),stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){return target?target==window?"#window":target==screen?"#screen":target&&target.nodeName?target.nodeName:"":""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1,cString=_malloc(length);return stringToUTF8(jsString,cString,length),cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave(),varargs=stackAlloc(12),targetCanvasPtr=0;targetCanvas&&(targetCanvasPtr=stringToNewUTF8(targetCanvas)),GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr,GROWABLE_HEAP_I32()[varargs+4>>2]=width,GROWABLE_HEAP_I32()[varargs+8>>2]=height,_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs),stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):"",_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):void 0);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr&&(GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width,GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height),canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){canvas.offscreenCanvas&&(canvas=canvas.offscreenCanvas);var autoResizeViewport=!1;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width,canvas.height=height,autoResizeViewport&&canvas.GLctxObject.GLctx.viewport(0,0,width,height)}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];return _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height),1}else return-4;return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){return ENVIRONMENT_IS_PTHREAD?_emscripten_proxy_to_main_thread_js(2,1,target,width,height):_emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);return canvas?_emscripten_set_canvas_element_size_calling_thread(target,width,height):_emscripten_set_canvas_element_size_main_thread(target,width,height)}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0,name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext)return ctx.vertexAttribDivisor=function(index,divisor){ext.vertexAttribDivisorANGLE(index,divisor)},ctx.drawArraysInstanced=function(mode,first,count2,primcount){ext.drawArraysInstancedANGLE(mode,first,count2,primcount)},ctx.drawElementsInstanced=function(mode,count2,type,indices,primcount){ext.drawElementsInstancedANGLE(mode,count2,type,indices,primcount)},1}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext)return ctx.createVertexArray=function(){return ext.createVertexArrayOES()},ctx.deleteVertexArray=function(vao){ext.deleteVertexArrayOES(vao)},ctx.bindVertexArray=function(vao){ext.bindVertexArrayOES(vao)},ctx.isVertexArray=function(vao){return ext.isVertexArrayOES(vao)},1}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext)return ctx.drawBuffers=function(n,bufs){ext.drawBuffersWEBGL(n,bufs)},1}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){for(var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE),i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?void 0:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};return ctx.canvas&&(ctx.canvas.GLctxObject=context),GL.contexts[handle]=context,(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault)&&GL.initExtensions(context),handle},makeContextCurrent:function(contextHandle){return GL.currentContext=GL.contexts[contextHandle],Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx,!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){GL.currentContext===GL.contexts[contextHandle]&&(GL.currentContext=null),typeof JSEvents=="object"&&JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas),GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas&&(GL.contexts[contextHandle].GLctx.canvas.GLctxObject=void 0),_free(GL.contexts[contextHandle].handle),GL.contexts[contextHandle]=null},initExtensions:function(context){if(context||(context=GL.currentContext),!context.initExtensionsDone){context.initExtensionsDone=!0;var GLctx2=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx2),__webgl_enable_OES_vertex_array_object(GLctx2),__webgl_enable_WEBGL_draw_buffers(GLctx2),GLctx2.disjointTimerQueryExt=GLctx2.getExtension("EXT_disjoint_timer_query");var automaticallyEnabledExtensions=["OES_texture_float","OES_texture_half_float","OES_standard_derivatives","OES_vertex_array_object","WEBGL_compressed_texture_s3tc","WEBGL_depth_texture","OES_element_index_uint","EXT_texture_filter_anisotropic","EXT_frag_depth","WEBGL_draw_buffers","ANGLE_instanced_arrays","OES_texture_float_linear","OES_texture_half_float_linear","EXT_blend_minmax","EXT_shader_texture_lod","EXT_texture_norm16","WEBGL_compressed_texture_pvrtc","EXT_color_buffer_half_float","WEBGL_color_buffer_float","EXT_sRGB","WEBGL_compressed_texture_etc1","EXT_disjoint_timer_query","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_astc","EXT_color_buffer_float","WEBGL_compressed_texture_s3tc_srgb","EXT_disjoint_timer_query_webgl2","WEBKIT_WEBGL_compressed_texture_pvrtc"],exts=GLctx2.getSupportedExtensions()||[];exts.forEach(function(ext){automaticallyEnabledExtensions.indexOf(ext)!=-1&&GLctx2.getExtension(ext)})}},populateUniformTable:function(program){for(var p2=GL.programs[program],ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1},utable=ptable.uniforms,numUniforms=GLctx.getProgramParameter(p2,35718),i=0;i>2;contextAttributes.alpha=!!GROWABLE_HEAP_I32()[a+(0>>2)],contextAttributes.depth=!!GROWABLE_HEAP_I32()[a+(4>>2)],contextAttributes.stencil=!!GROWABLE_HEAP_I32()[a+(8>>2)],contextAttributes.antialias=!!GROWABLE_HEAP_I32()[a+(12>>2)],contextAttributes.premultipliedAlpha=!!GROWABLE_HEAP_I32()[a+(16>>2)],contextAttributes.preserveDrawingBuffer=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes.powerPreference=__emscripten_webgl_power_preferences[powerPreference],contextAttributes.failIfMajorPerformanceCaveat=!!GROWABLE_HEAP_I32()[a+(28>>2)],contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)],contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)],contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)],contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)],contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)],contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(contextAttributes.explicitSwapControl)return-1;var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a12){return _emscripten_webgl_do_create_context(a0,a12)}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){for(var up=0,i=parts.length-1;i>=0;i--){var last=parts[i];last==="."?parts.splice(i,1):last===".."?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up;up--)parts.unshift("..");return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";return path=PATH.normalizeArray(path.split("/").filter(function(p2){return!!p2}),!isAbsolute).join("/"),!path&&!isAbsolute&&(path="."),path&&trailingSlash&&(path+="/"),(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];return!root&&!dir?".":(dir&&(dir=dir.substr(0,dir.length-1)),root+dir)},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");return lastSlash===-1?path:path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}},SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer3=SYSCALLS.buffers[stream];curr===0||curr===10?((stream===1?out:err)(UTF8ArrayToString(buffer3,0)),buffer3.length=0):buffer3.push(curr)},varargs:void 0,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return ENVIRONMENT_IS_PTHREAD?_emscripten_proxy_to_main_thread_js(3,1,fd):0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);for(var num=0,i=0;i>2],len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2],j=0;j>2]=num,0}function _pthread_cleanup_pop(execute2){var routine=PThread.exitHandlers.pop();execute2&&routine()}function _pthread_cleanup_push(routine,arg){PThread.exitHandlers===null&&(PThread.exitHandlers=[]),PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _spawn_thread() can only ever be called from main application thread!";var worker=PThread.getNewWorker();if(worker.pthread!==void 0)throw"Internal error!";if(!threadParams.pthread_ptr)throw"Internal error, no pthread ptr!";PThread.runningWorkers.push(worker);for(var tlsMemory=_malloc(128*4),i=0;i<128;++i)GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0;var stackHigh=threadParams.stackBase+threadParams.stackSize,pthread=PThread.pthreads[threadParams.pthread_ptr]={worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr},tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached),Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory),Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct),Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42),Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize),Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize),Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc(),global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale),worker.pthread=pthread;var msg={cmd:"run",start_routine:threadParams.startRoutine,arg:threadParams.arg,threadInfoStruct:threadParams.pthread_ptr,selfThreadId:threadParams.pthread_ptr,parentThreadId:threadParams.parent_pthread_ptr,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now(),worker.postMessage(msg,threadParams.transferList)},worker.loaded&&(worker.runPthread(),delete worker.runPthread)}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread)return err("pthread_getschedparam called with a null thread pointer!"),ERRNO_CODES.ESRCH;var self2=GROWABLE_HEAP_I32()[thread+12>>2];if(self2!==thread)return err("pthread_getschedparam attempted on thread "+thread+", which does not point to a valid thread, or does not exist anymore!"),ERRNO_CODES.ESRCH;var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2),schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);return policy&&(GROWABLE_HEAP_I32()[policy>>2]=schedPolicy),schedparam&&(GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio),0}function _pthread_self(){return __pthread_ptr|0}Module._pthread_self=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer=="undefined")return err("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;if(!pthread_ptr)return err("pthread_create called with a null thread pointer!"),28;var transferList=[],error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error))return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg);if(error)return error;var stackSize=0,stackBase=0,detached=0,schedPolicy=0,schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2],stackSize+=81920,stackBase=GROWABLE_HEAP_I32()[attr+8>>2],detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2],parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24),schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],schedPrio=GROWABLE_HEAP_I32()[attr+24>>2],GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy,GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}else stackSize=2097152;var allocatedOwnStack=stackBase==0;allocatedOwnStack?stackBase=_memalign(16,stackSize):(stackBase-=stackSize,assert3(stackBase>0));for(var threadInfoStruct2=_malloc(232),i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct2>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct2,GROWABLE_HEAP_I32()[threadInfoStruct2+12>>2]=threadInfoStruct2;var headPtr=threadInfoStruct2+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase,stackSize,allocatedOwnStack,schedPolicy,schedPrio,detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct2,parent_pthread_ptr:_pthread_self(),arg,transferList};return ENVIRONMENT_IS_PTHREAD?(threadParams.cmd="spawnThread",postMessage(threadParams,transferList)):__spawn_thread(threadParams),0}function _roundf(d){return d=+d,d>=0?+Math_floor(d+.5):+Math_ceil(d-.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return typeof navigator=="object"&&navigator.hardwareConcurrency||1}return setErrNo(28),-1}ENVIRONMENT_IS_PTHREAD?PThread.initWorker():PThread.initMainThreadBlock();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf],asmLibraryArg={e:___assert_fail,r:___call_main,w:__emscripten_notify_thread_queue,a:_abort,l:_emscripten_conditional_set_current_thread_status,d:_emscripten_futex_wait,c:_emscripten_futex_wake,h:_emscripten_get_now,g:_emscripten_is_main_browser_thread,x:_emscripten_is_main_runtime_thread,q:_emscripten_memcpy_big,B:_emscripten_num_logical_cores,t:_emscripten_receive_on_main_thread_js,A:_emscripten_resize_heap,u:_emscripten_set_canvas_element_size,k:_emscripten_set_current_thread_status,s:_emscripten_set_thread_name,v:_emscripten_webgl_create_context,m:_fd_close,o:_fd_seek,i:_fd_write,p:initPthreadsJS,memory:wasmMemory||Module.wasmMemory,y:_pthread_cleanup_pop,z:_pthread_cleanup_push,j:_pthread_create,b:_pthread_self,f:_roundf,n:_sysconf,table:wasmTable},asm=createWasm();Module.asm=asm;var ___wasm_call_ctors=Module.___wasm_call_ctors=function(){return(___wasm_call_ctors=Module.___wasm_call_ctors=Module.asm.C).apply(null,arguments)},_init=Module._init=function(){return(_init=Module._init=Module.asm.D).apply(null,arguments)},_register_tensor=Module._register_tensor=function(){return(_register_tensor=Module._register_tensor=Module.asm.E).apply(null,arguments)},_dispose_data=Module._dispose_data=function(){return(_dispose_data=Module._dispose_data=Module.asm.F).apply(null,arguments)},_dispose=Module._dispose=function(){return(_dispose=Module._dispose=Module.asm.G).apply(null,arguments)},_Abs=Module._Abs=function(){return(_Abs=Module._Abs=Module.asm.H).apply(null,arguments)},_Add=Module._Add=function(){return(_Add=Module._Add=Module.asm.I).apply(null,arguments)},_AddN=Module._AddN=function(){return(_AddN=Module._AddN=Module.asm.J).apply(null,arguments)},_ArgMax=Module._ArgMax=function(){return(_ArgMax=Module._ArgMax=Module.asm.K).apply(null,arguments)},_AvgPool=Module._AvgPool=function(){return(_AvgPool=Module._AvgPool=Module.asm.L).apply(null,arguments)},_BatchMatMul=Module._BatchMatMul=function(){return(_BatchMatMul=Module._BatchMatMul=Module.asm.M).apply(null,arguments)},_ClipByValue=Module._ClipByValue=function(){return(_ClipByValue=Module._ClipByValue=Module.asm.N).apply(null,arguments)},_Conv2D=Module._Conv2D=function(){return(_Conv2D=Module._Conv2D=Module.asm.O).apply(null,arguments)},_Conv2DBackpropInput=Module._Conv2DBackpropInput=function(){return(_Conv2DBackpropInput=Module._Conv2DBackpropInput=Module.asm.P).apply(null,arguments)},_Cos=Module._Cos=function(){return(_Cos=Module._Cos=Module.asm.Q).apply(null,arguments)},_CropAndResize=Module._CropAndResize=function(){return(_CropAndResize=Module._CropAndResize=Module.asm.R).apply(null,arguments)},_Cumsum=Module._Cumsum=function(){return(_Cumsum=Module._Cumsum=Module.asm.S).apply(null,arguments)},_DepthToSpace=Module._DepthToSpace=function(){return(_DepthToSpace=Module._DepthToSpace=Module.asm.T).apply(null,arguments)},_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=function(){return(_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=Module.asm.U).apply(null,arguments)},_Equal=Module._Equal=function(){return(_Equal=Module._Equal=Module.asm.V).apply(null,arguments)},_Exp=Module._Exp=function(){return(_Exp=Module._Exp=Module.asm.W).apply(null,arguments)},_FlipLeftRight=Module._FlipLeftRight=function(){return(_FlipLeftRight=Module._FlipLeftRight=Module.asm.X).apply(null,arguments)},_Floor=Module._Floor=function(){return(_Floor=Module._Floor=Module.asm.Y).apply(null,arguments)},_FloorDiv=Module._FloorDiv=function(){return(_FloorDiv=Module._FloorDiv=Module.asm.Z).apply(null,arguments)},_FusedBatchNorm=Module._FusedBatchNorm=function(){return(_FusedBatchNorm=Module._FusedBatchNorm=Module.asm._).apply(null,arguments)},_FusedConv2D=Module._FusedConv2D=function(){return(_FusedConv2D=Module._FusedConv2D=Module.asm.$).apply(null,arguments)},_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=function(){return(_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=Module.asm.aa).apply(null,arguments)},_Gather=Module._Gather=function(){return(_Gather=Module._Gather=Module.asm.ba).apply(null,arguments)},_GatherNd=Module._GatherNd=function(){return(_GatherNd=Module._GatherNd=Module.asm.ca).apply(null,arguments)},_Greater=Module._Greater=function(){return(_Greater=Module._Greater=Module.asm.da).apply(null,arguments)},_GreaterEqual=Module._GreaterEqual=function(){return(_GreaterEqual=Module._GreaterEqual=Module.asm.ea).apply(null,arguments)},_LeakyRelu=Module._LeakyRelu=function(){return(_LeakyRelu=Module._LeakyRelu=Module.asm.fa).apply(null,arguments)},_Less=Module._Less=function(){return(_Less=Module._Less=Module.asm.ga).apply(null,arguments)},_LessEqual=Module._LessEqual=function(){return(_LessEqual=Module._LessEqual=Module.asm.ha).apply(null,arguments)},_Log=Module._Log=function(){return(_Log=Module._Log=Module.asm.ia).apply(null,arguments)},_LogicalAnd=Module._LogicalAnd=function(){return(_LogicalAnd=Module._LogicalAnd=Module.asm.ja).apply(null,arguments)},_Max=Module._Max=function(){return(_Max=Module._Max=Module.asm.ka).apply(null,arguments)},_MaxPool=Module._MaxPool=function(){return(_MaxPool=Module._MaxPool=Module.asm.la).apply(null,arguments)},_Maximum=Module._Maximum=function(){return(_Maximum=Module._Maximum=Module.asm.ma).apply(null,arguments)},_Mean=Module._Mean=function(){return(_Mean=Module._Mean=Module.asm.na).apply(null,arguments)},_Min=Module._Min=function(){return(_Min=Module._Min=Module.asm.oa).apply(null,arguments)},_Minimum=Module._Minimum=function(){return(_Minimum=Module._Minimum=Module.asm.pa).apply(null,arguments)},_Multiply=Module._Multiply=function(){return(_Multiply=Module._Multiply=Module.asm.qa).apply(null,arguments)},_Neg=Module._Neg=function(){return(_Neg=Module._Neg=Module.asm.ra).apply(null,arguments)},_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=function(){return(_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=Module.asm.sa).apply(null,arguments)},_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=function(){return(_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=Module.asm.ta).apply(null,arguments)},_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=function(){return(_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=Module.asm.ua).apply(null,arguments)},_NotEqual=Module._NotEqual=function(){return(_NotEqual=Module._NotEqual=Module.asm.va).apply(null,arguments)},_OneHot=Module._OneHot=function(){return(_OneHot=Module._OneHot=Module.asm.wa).apply(null,arguments)},_PadV2=Module._PadV2=function(){return(_PadV2=Module._PadV2=Module.asm.xa).apply(null,arguments)},_Pow=Module._Pow=function(){return(_Pow=Module._Pow=Module.asm.ya).apply(null,arguments)},_Prelu=Module._Prelu=function(){return(_Prelu=Module._Prelu=Module.asm.za).apply(null,arguments)},_Prod=Module._Prod=function(){return(_Prod=Module._Prod=Module.asm.Aa).apply(null,arguments)},_RealDiv=Module._RealDiv=function(){return(_RealDiv=Module._RealDiv=Module.asm.Ba).apply(null,arguments)},_Relu=Module._Relu=function(){return(_Relu=Module._Relu=Module.asm.Ca).apply(null,arguments)},_Relu6=Module._Relu6=function(){return(_Relu6=Module._Relu6=Module.asm.Da).apply(null,arguments)},_ResizeBilinear=Module._ResizeBilinear=function(){return(_ResizeBilinear=Module._ResizeBilinear=Module.asm.Ea).apply(null,arguments)},_Reverse=Module._Reverse=function(){return(_Reverse=Module._Reverse=Module.asm.Fa).apply(null,arguments)},_RotateWithOffset=Module._RotateWithOffset=function(){return(_RotateWithOffset=Module._RotateWithOffset=Module.asm.Ga).apply(null,arguments)},_Round=Module._Round=function(){return(_Round=Module._Round=Module.asm.Ha).apply(null,arguments)},_Rsqrt=Module._Rsqrt=function(){return(_Rsqrt=Module._Rsqrt=Module.asm.Ia).apply(null,arguments)},_ScatterNd=Module._ScatterNd=function(){return(_ScatterNd=Module._ScatterNd=Module.asm.Ja).apply(null,arguments)},_SelectV2=Module._SelectV2=function(){return(_SelectV2=Module._SelectV2=Module.asm.Ka).apply(null,arguments)},_Sigmoid=Module._Sigmoid=function(){return(_Sigmoid=Module._Sigmoid=Module.asm.La).apply(null,arguments)},_Sin=Module._Sin=function(){return(_Sin=Module._Sin=Module.asm.Ma).apply(null,arguments)},_Softmax=Module._Softmax=function(){return(_Softmax=Module._Softmax=Module.asm.Na).apply(null,arguments)},_Sqrt=Module._Sqrt=function(){return(_Sqrt=Module._Sqrt=Module.asm.Oa).apply(null,arguments)},_Square=Module._Square=function(){return(_Square=Module._Square=Module.asm.Pa).apply(null,arguments)},_SquaredDifference=Module._SquaredDifference=function(){return(_SquaredDifference=Module._SquaredDifference=Module.asm.Qa).apply(null,arguments)},_StridedSlice=Module._StridedSlice=function(){return(_StridedSlice=Module._StridedSlice=Module.asm.Ra).apply(null,arguments)},_Sub=Module._Sub=function(){return(_Sub=Module._Sub=Module.asm.Sa).apply(null,arguments)},_Sum=Module._Sum=function(){return(_Sum=Module._Sum=Module.asm.Ta).apply(null,arguments)},_Tanh=Module._Tanh=function(){return(_Tanh=Module._Tanh=Module.asm.Ua).apply(null,arguments)},_Tile=Module._Tile=function(){return(_Tile=Module._Tile=Module.asm.Va).apply(null,arguments)},_TopK=Module._TopK=function(){return(_TopK=Module._TopK=Module.asm.Wa).apply(null,arguments)},_Transpose=Module._Transpose=function(){return(_Transpose=Module._Transpose=Module.asm.Xa).apply(null,arguments)},__FusedMatMul=Module.__FusedMatMul=function(){return(__FusedMatMul=Module.__FusedMatMul=Module.asm.Ya).apply(null,arguments)},_malloc=Module._malloc=function(){return(_malloc=Module._malloc=Module.asm.Za).apply(null,arguments)},_free=Module._free=function(){return(_free=Module._free=Module.asm._a).apply(null,arguments)},_emscripten_get_global_libc=Module._emscripten_get_global_libc=function(){return(_emscripten_get_global_libc=Module._emscripten_get_global_libc=Module.asm.$a).apply(null,arguments)},___errno_location=Module.___errno_location=function(){return(___errno_location=Module.___errno_location=Module.asm.ab).apply(null,arguments)},___em_js__initPthreadsJS=Module.___em_js__initPthreadsJS=function(){return(___em_js__initPthreadsJS=Module.___em_js__initPthreadsJS=Module.asm.bb).apply(null,arguments)},_memalign=Module._memalign=function(){return(_memalign=Module._memalign=Module.asm.cb).apply(null,arguments)},___pthread_tsd_run_dtors=Module.___pthread_tsd_run_dtors=function(){return(___pthread_tsd_run_dtors=Module.___pthread_tsd_run_dtors=Module.asm.db).apply(null,arguments)},_emscripten_main_thread_process_queued_calls=Module._emscripten_main_thread_process_queued_calls=function(){return(_emscripten_main_thread_process_queued_calls=Module._emscripten_main_thread_process_queued_calls=Module.asm.eb).apply(null,arguments)},_emscripten_current_thread_process_queued_calls=Module._emscripten_current_thread_process_queued_calls=function(){return(_emscripten_current_thread_process_queued_calls=Module._emscripten_current_thread_process_queued_calls=Module.asm.fb).apply(null,arguments)},_emscripten_register_main_browser_thread_id=Module._emscripten_register_main_browser_thread_id=function(){return(_emscripten_register_main_browser_thread_id=Module._emscripten_register_main_browser_thread_id=Module.asm.gb).apply(null,arguments)},_emscripten_main_browser_thread_id=Module._emscripten_main_browser_thread_id=function(){return(_emscripten_main_browser_thread_id=Module._emscripten_main_browser_thread_id=Module.asm.hb).apply(null,arguments)},_emscripten_async_run_in_main_thread=Module._emscripten_async_run_in_main_thread=function(){return(_emscripten_async_run_in_main_thread=Module._emscripten_async_run_in_main_thread=Module.asm.ib).apply(null,arguments)},_emscripten_sync_run_in_main_thread=Module._emscripten_sync_run_in_main_thread=function(){return(_emscripten_sync_run_in_main_thread=Module._emscripten_sync_run_in_main_thread=Module.asm.jb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_0=Module._emscripten_sync_run_in_main_thread_0=function(){return(_emscripten_sync_run_in_main_thread_0=Module._emscripten_sync_run_in_main_thread_0=Module.asm.kb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_1=Module._emscripten_sync_run_in_main_thread_1=function(){return(_emscripten_sync_run_in_main_thread_1=Module._emscripten_sync_run_in_main_thread_1=Module.asm.lb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_2=Module._emscripten_sync_run_in_main_thread_2=function(){return(_emscripten_sync_run_in_main_thread_2=Module._emscripten_sync_run_in_main_thread_2=Module.asm.mb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_xprintf_varargs=Module._emscripten_sync_run_in_main_thread_xprintf_varargs=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module._emscripten_sync_run_in_main_thread_xprintf_varargs=Module.asm.nb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_3=Module._emscripten_sync_run_in_main_thread_3=function(){return(_emscripten_sync_run_in_main_thread_3=Module._emscripten_sync_run_in_main_thread_3=Module.asm.ob).apply(null,arguments)},_emscripten_sync_run_in_main_thread_4=Module._emscripten_sync_run_in_main_thread_4=function(){return(_emscripten_sync_run_in_main_thread_4=Module._emscripten_sync_run_in_main_thread_4=Module.asm.pb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_5=Module._emscripten_sync_run_in_main_thread_5=function(){return(_emscripten_sync_run_in_main_thread_5=Module._emscripten_sync_run_in_main_thread_5=Module.asm.qb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_6=Module._emscripten_sync_run_in_main_thread_6=function(){return(_emscripten_sync_run_in_main_thread_6=Module._emscripten_sync_run_in_main_thread_6=Module.asm.rb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_7=Module._emscripten_sync_run_in_main_thread_7=function(){return(_emscripten_sync_run_in_main_thread_7=Module._emscripten_sync_run_in_main_thread_7=Module.asm.sb).apply(null,arguments)},_emscripten_run_in_main_runtime_thread_js=Module._emscripten_run_in_main_runtime_thread_js=function(){return(_emscripten_run_in_main_runtime_thread_js=Module._emscripten_run_in_main_runtime_thread_js=Module.asm.tb).apply(null,arguments)},_emscripten_async_queue_on_thread_=Module._emscripten_async_queue_on_thread_=function(){return(_emscripten_async_queue_on_thread_=Module._emscripten_async_queue_on_thread_=Module.asm.ub).apply(null,arguments)},_emscripten_tls_init=Module._emscripten_tls_init=function(){return(_emscripten_tls_init=Module._emscripten_tls_init=Module.asm.vb).apply(null,arguments)},stackSave=Module.stackSave=function(){return(stackSave=Module.stackSave=Module.asm.wb).apply(null,arguments)},stackAlloc=Module.stackAlloc=function(){return(stackAlloc=Module.stackAlloc=Module.asm.xb).apply(null,arguments)},stackRestore=Module.stackRestore=function(){return(stackRestore=Module.stackRestore=Module.asm.yb).apply(null,arguments)},dynCall_vi=Module.dynCall_vi=function(){return(dynCall_vi=Module.dynCall_vi=Module.asm.zb).apply(null,arguments)},dynCall_v=Module.dynCall_v=function(){return(dynCall_v=Module.dynCall_v=Module.asm.Ab).apply(null,arguments)},dynCall_ii=Module.dynCall_ii=function(){return(dynCall_ii=Module.dynCall_ii=Module.asm.Bb).apply(null,arguments)};Module.asm=asm,Module.cwrap=cwrap,Module.PThread=PThread,Module.PThread=PThread,Module._pthread_self=_pthread_self,Module.wasmMemory=wasmMemory,Module.ExitStatus=ExitStatus;var calledRun;Module.then=function(func2){if(calledRun)func2(Module);else{var old=Module.onRuntimeInitialized;Module.onRuntimeInitialized=function(){old&&old(),func2(Module)}}return Module};function ExitStatus(status){this.name="ExitStatus",this.message="Program terminated with exit("+status+")",this.status=status}dependenciesFulfilled=function runCaller(){calledRun||run(),calledRun||(dependenciesFulfilled=runCaller)};function run(args){if(args=args||arguments_,runDependencies>0||(preRun(),runDependencies>0))return;function doRun(){calledRun||(calledRun=!0,Module.calledRun=!0,!ABORT&&(initRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),postRun()))}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),doRun()},1)):doRun()}if(Module.run=run,Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();return ENVIRONMENT_IS_PTHREAD||(noExitRuntime=!0),ENVIRONMENT_IS_PTHREAD||run(),WasmBackendModuleThreadedSimd2}}();typeof exports=="object"&&typeof module=="object"?module.exports=WasmBackendModuleThreadedSimd:typeof define=="function"&&define.amd?define([],function(){return WasmBackendModuleThreadedSimd}):typeof exports=="object"&&(exports.WasmBackendModuleThreadedSimd=WasmBackendModuleThreadedSimd)}),require_tfjs_backend_wasm=__commonJS2((exports,module)=>{var WasmBackendModule=function(){var _scriptDir=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(_scriptDir=_scriptDir||__filename),function(WasmBackendModule2){WasmBackendModule2=WasmBackendModule2||{};var Module=typeof WasmBackendModule2!="undefined"?WasmBackendModule2:{},moduleOverrides={},key;for(key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var arguments_=[],thisProgram="./this.program",quit_=function(status,toThrow){throw toThrow},ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){return Module.locateFile?Module.locateFile(path,scriptDirectory):scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle,nodeFS,nodePath;ENVIRONMENT_IS_NODE?(ENVIRONMENT_IS_WORKER?scriptDirectory=require_path().dirname(scriptDirectory)+"/":scriptDirectory=__dirname+"/",read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret},process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),process.on("uncaughtException",function(ex){if(!(ex instanceof ExitStatus))throw ex}),process.on("unhandledRejection",abort),quit_=function(status){process.exit(status)},Module.inspect=function(){return"[Emscripten Module object]"}):ENVIRONMENT_IS_SHELL?(typeof read!="undefined"&&(read_=function(f){return read(f)}),readBinary=function(f){var data;return typeof readbuffer=="function"?new Uint8Array(readbuffer(f)):(data=read(f,"binary"),assert3(typeof data=="object"),data)},typeof scriptArgs!="undefined"?arguments_=scriptArgs:typeof arguments!="undefined"&&(arguments_=arguments),typeof quit=="function"&&(quit_=function(status){quit(status)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:document.currentScript&&(scriptDirectory=document.currentScript.src),_scriptDir&&(scriptDirectory=_scriptDir),scriptDirectory.indexOf("blob:")!==0?scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1):scriptDirectory="",read_=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.send(null),xhr.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.responseType="arraybuffer",xhr.send(null),new Uint8Array(xhr.response)}),readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.responseType="arraybuffer",xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()},xhr.onerror=onerror,xhr.send(null)},setWindowTitle=function(title){document.title=title});var out=Module.print||console.log.bind(console),err=Module.printErr||console.warn.bind(console);for(key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&(quit_=Module.quit);var wasmBinary;Module.wasmBinary&&(wasmBinary=Module.wasmBinary);var noExitRuntime;Module.noExitRuntime&&(noExitRuntime=Module.noExitRuntime),typeof WebAssembly!="object"&&err("no native wasm support detected");var wasmMemory,wasmTable=new WebAssembly.Table({initial:151,maximum:151+0,element:"anyfunc"}),ABORT=!1,EXITSTATUS=0;function assert3(condition,text){condition||abort("Assertion failed: "+text)}function getCFunc(ident){var func2=Module["_"+ident];return assert3(func2,"Cannot call unknown function "+ident+", make sure it is exported"),func2}function ccall(ident,returnType,argTypes,args,opts){var toC={string:function(str){var ret2=0;if(str!=null&&str!==0){var len=(str.length<<2)+1;ret2=stackAlloc(len),stringToUTF8(str,ret2,len)}return ret2},array:function(arr){var ret2=stackAlloc(arr.length);return writeArrayToMemory(arr,ret2),ret2}};function convertReturnValue(ret2){return returnType==="string"?UTF8ToString(ret2):returnType==="boolean"?Boolean(ret2):ret2}var func2=getCFunc(ident),cArgs=[],stack2=0;if(args)for(var i=0;i=endIdx);)++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder)return UTF8Decoder.decode(heap.subarray(idx,endPtr));for(var str="";idx>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;for(var startIdx=outIdx,endIdx=outIdx+maxBytesToWrite-1,i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6,heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18,heap[outIdx++]=128|u>>12&63,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}}return heap[outIdx]=0,outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array2,buffer3){HEAP8.set(array2,buffer3)}var buffer2,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer2=buf,Module.HEAP8=HEAP8=new Int8Array(buf),Module.HEAP16=HEAP16=new Int16Array(buf),Module.HEAP32=HEAP32=new Int32Array(buf),Module.HEAPU8=HEAPU8=new Uint8Array(buf),Module.HEAPU16=HEAPU16=new Uint16Array(buf),Module.HEAPU32=HEAPU32=new Uint32Array(buf),Module.HEAPF32=HEAPF32=new Float32Array(buf),Module.HEAPF64=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module.INITIAL_MEMORY||16777216;function callRuntimeCallbacks(callbacks2){for(;callbacks2.length>0;){var callback=callbacks2.shift();if(typeof callback=="function"){callback(Module);continue}var func2=callback.func;typeof func2=="number"?callback.arg===void 0?Module.dynCall_v(func2):Module.dynCall_vi(func2,callback.arg):func2(callback.arg===void 0?null:callback.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=!0}function postRun(){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil,Math_floor=Math.floor,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function addRunDependency(id){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(id){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var callback=dependenciesFulfilled;dependenciesFulfilled=null,callback()}}Module.preloadedImages={},Module.preloadedAudios={};function abort(what){throw Module.onAbort&&Module.onAbort(what),what+="",out(what),err(what),ABORT=!0,EXITSTATUS=1,what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="tfjs-backend-wasm.wasm";isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile));function getBinary(){try{if(wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(wasmBinaryFile);throw"both async and sync fetching of the wasm failed"}catch(err2){abort(err2)}}function getBinaryPromise(){return!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch=="function"&&!isFileURI(wasmBinaryFile)?fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response.ok)throw"failed to load wasm binary file at '"+wasmBinaryFile+"'";return response.arrayBuffer()}).catch(function(){return getBinary()}):new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={env:asmLibraryArg,wasi_snapshot_preview1:asmLibraryArg};function receiveInstance(instance,module2){var exports3=instance.exports;Module.asm=exports3,wasmMemory=exports3.memory,updateGlobalBufferAndViews(wasmMemory.buffer),removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output.instance)}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason),abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function")fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(receiveInstantiatedSource)})});else return instantiateArrayBuffer(receiveInstantiatedSource)}if(Module.instantiateWasm)try{var exports2=Module.instantiateWasm(info,receiveInstance);return exports2}catch(e){return err("Module.instantiateWasm callback failed with error: "+e),!1}return instantiateAsync(),{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){for(var up=0,i=parts.length-1;i>=0;i--){var last=parts[i];last==="."?parts.splice(i,1):last===".."?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up;up--)parts.unshift("..");return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";return path=PATH.normalizeArray(path.split("/").filter(function(p2){return!!p2}),!isAbsolute).join("/"),!path&&!isAbsolute&&(path="."),path&&trailingSlash&&(path+="/"),(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];return!root&&!dir?".":(dir&&(dir=dir.substr(0,dir.length-1)),root+dir)},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");return lastSlash===-1?path:path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}},SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer3=SYSCALLS.buffers[stream];curr===0||curr===10?((stream===1?out:err)(UTF8ArrayToString(buffer3,0)),buffer3.length=0):buffer3.push(curr)},varargs:void 0,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){for(var num=0,i=0;i>2],len=HEAP32[iov+(i*8+4)>>2],j=0;j>2]=num,0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){return d=+d,d>=0?+Math_floor(d+.5):+Math_ceil(d-.5)}var asmLibraryArg={emscripten_notify_memory_growth:_emscripten_notify_memory_growth,fd_close:_fd_close,fd_seek:_fd_seek,fd_write:_fd_write,proc_exit:_proc_exit,roundf:_roundf},asm=createWasm();Module.asm=asm;var _init=Module._init=function(){return(_init=Module._init=Module.asm.init).apply(null,arguments)},_register_tensor=Module._register_tensor=function(){return(_register_tensor=Module._register_tensor=Module.asm.register_tensor).apply(null,arguments)},_dispose_data=Module._dispose_data=function(){return(_dispose_data=Module._dispose_data=Module.asm.dispose_data).apply(null,arguments)},_dispose=Module._dispose=function(){return(_dispose=Module._dispose=Module.asm.dispose).apply(null,arguments)},_Abs=Module._Abs=function(){return(_Abs=Module._Abs=Module.asm.Abs).apply(null,arguments)},_Add=Module._Add=function(){return(_Add=Module._Add=Module.asm.Add).apply(null,arguments)},_AddN=Module._AddN=function(){return(_AddN=Module._AddN=Module.asm.AddN).apply(null,arguments)},_ArgMax=Module._ArgMax=function(){return(_ArgMax=Module._ArgMax=Module.asm.ArgMax).apply(null,arguments)},_AvgPool=Module._AvgPool=function(){return(_AvgPool=Module._AvgPool=Module.asm.AvgPool).apply(null,arguments)},_BatchMatMul=Module._BatchMatMul=function(){return(_BatchMatMul=Module._BatchMatMul=Module.asm.BatchMatMul).apply(null,arguments)},_ClipByValue=Module._ClipByValue=function(){return(_ClipByValue=Module._ClipByValue=Module.asm.ClipByValue).apply(null,arguments)},_Conv2D=Module._Conv2D=function(){return(_Conv2D=Module._Conv2D=Module.asm.Conv2D).apply(null,arguments)},_Conv2DBackpropInput=Module._Conv2DBackpropInput=function(){return(_Conv2DBackpropInput=Module._Conv2DBackpropInput=Module.asm.Conv2DBackpropInput).apply(null,arguments)},_Cos=Module._Cos=function(){return(_Cos=Module._Cos=Module.asm.Cos).apply(null,arguments)},_CropAndResize=Module._CropAndResize=function(){return(_CropAndResize=Module._CropAndResize=Module.asm.CropAndResize).apply(null,arguments)},_Cumsum=Module._Cumsum=function(){return(_Cumsum=Module._Cumsum=Module.asm.Cumsum).apply(null,arguments)},_DepthToSpace=Module._DepthToSpace=function(){return(_DepthToSpace=Module._DepthToSpace=Module.asm.DepthToSpace).apply(null,arguments)},_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=function(){return(_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=Module.asm.DepthwiseConv2dNative).apply(null,arguments)},_Equal=Module._Equal=function(){return(_Equal=Module._Equal=Module.asm.Equal).apply(null,arguments)},_Exp=Module._Exp=function(){return(_Exp=Module._Exp=Module.asm.Exp).apply(null,arguments)},_FlipLeftRight=Module._FlipLeftRight=function(){return(_FlipLeftRight=Module._FlipLeftRight=Module.asm.FlipLeftRight).apply(null,arguments)},_Floor=Module._Floor=function(){return(_Floor=Module._Floor=Module.asm.Floor).apply(null,arguments)},_FloorDiv=Module._FloorDiv=function(){return(_FloorDiv=Module._FloorDiv=Module.asm.FloorDiv).apply(null,arguments)},_FusedBatchNorm=Module._FusedBatchNorm=function(){return(_FusedBatchNorm=Module._FusedBatchNorm=Module.asm.FusedBatchNorm).apply(null,arguments)},_FusedConv2D=Module._FusedConv2D=function(){return(_FusedConv2D=Module._FusedConv2D=Module.asm.FusedConv2D).apply(null,arguments)},_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=function(){return(_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=Module.asm.FusedDepthwiseConv2D).apply(null,arguments)},_Gather=Module._Gather=function(){return(_Gather=Module._Gather=Module.asm.Gather).apply(null,arguments)},_GatherNd=Module._GatherNd=function(){return(_GatherNd=Module._GatherNd=Module.asm.GatherNd).apply(null,arguments)},_Greater=Module._Greater=function(){return(_Greater=Module._Greater=Module.asm.Greater).apply(null,arguments)},_GreaterEqual=Module._GreaterEqual=function(){return(_GreaterEqual=Module._GreaterEqual=Module.asm.GreaterEqual).apply(null,arguments)},_LeakyRelu=Module._LeakyRelu=function(){return(_LeakyRelu=Module._LeakyRelu=Module.asm.LeakyRelu).apply(null,arguments)},_Less=Module._Less=function(){return(_Less=Module._Less=Module.asm.Less).apply(null,arguments)},_LessEqual=Module._LessEqual=function(){return(_LessEqual=Module._LessEqual=Module.asm.LessEqual).apply(null,arguments)},_Log=Module._Log=function(){return(_Log=Module._Log=Module.asm.Log).apply(null,arguments)},_LogicalAnd=Module._LogicalAnd=function(){return(_LogicalAnd=Module._LogicalAnd=Module.asm.LogicalAnd).apply(null,arguments)},_Max=Module._Max=function(){return(_Max=Module._Max=Module.asm.Max).apply(null,arguments)},_MaxPool=Module._MaxPool=function(){return(_MaxPool=Module._MaxPool=Module.asm.MaxPool).apply(null,arguments)},_Maximum=Module._Maximum=function(){return(_Maximum=Module._Maximum=Module.asm.Maximum).apply(null,arguments)},_Mean=Module._Mean=function(){return(_Mean=Module._Mean=Module.asm.Mean).apply(null,arguments)},_Min=Module._Min=function(){return(_Min=Module._Min=Module.asm.Min).apply(null,arguments)},_Minimum=Module._Minimum=function(){return(_Minimum=Module._Minimum=Module.asm.Minimum).apply(null,arguments)},_Multiply=Module._Multiply=function(){return(_Multiply=Module._Multiply=Module.asm.Multiply).apply(null,arguments)},_Neg=Module._Neg=function(){return(_Neg=Module._Neg=Module.asm.Neg).apply(null,arguments)},_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=function(){return(_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=Module.asm.NonMaxSuppressionV3).apply(null,arguments)},_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=function(){return(_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=Module.asm.NonMaxSuppressionV4).apply(null,arguments)},_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=function(){return(_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=Module.asm.NonMaxSuppressionV5).apply(null,arguments)},_NotEqual=Module._NotEqual=function(){return(_NotEqual=Module._NotEqual=Module.asm.NotEqual).apply(null,arguments)},_OneHot=Module._OneHot=function(){return(_OneHot=Module._OneHot=Module.asm.OneHot).apply(null,arguments)},_PadV2=Module._PadV2=function(){return(_PadV2=Module._PadV2=Module.asm.PadV2).apply(null,arguments)},_Pow=Module._Pow=function(){return(_Pow=Module._Pow=Module.asm.Pow).apply(null,arguments)},_Prelu=Module._Prelu=function(){return(_Prelu=Module._Prelu=Module.asm.Prelu).apply(null,arguments)},_Prod=Module._Prod=function(){return(_Prod=Module._Prod=Module.asm.Prod).apply(null,arguments)},_RealDiv=Module._RealDiv=function(){return(_RealDiv=Module._RealDiv=Module.asm.RealDiv).apply(null,arguments)},_Relu=Module._Relu=function(){return(_Relu=Module._Relu=Module.asm.Relu).apply(null,arguments)},_Relu6=Module._Relu6=function(){return(_Relu6=Module._Relu6=Module.asm.Relu6).apply(null,arguments)},_ResizeBilinear=Module._ResizeBilinear=function(){return(_ResizeBilinear=Module._ResizeBilinear=Module.asm.ResizeBilinear).apply(null,arguments)},_Reverse=Module._Reverse=function(){return(_Reverse=Module._Reverse=Module.asm.Reverse).apply(null,arguments)},_RotateWithOffset=Module._RotateWithOffset=function(){return(_RotateWithOffset=Module._RotateWithOffset=Module.asm.RotateWithOffset).apply(null,arguments)},_Round=Module._Round=function(){return(_Round=Module._Round=Module.asm.Round).apply(null,arguments)},_Rsqrt=Module._Rsqrt=function(){return(_Rsqrt=Module._Rsqrt=Module.asm.Rsqrt).apply(null,arguments)},_ScatterNd=Module._ScatterNd=function(){return(_ScatterNd=Module._ScatterNd=Module.asm.ScatterNd).apply(null,arguments)},_SelectV2=Module._SelectV2=function(){return(_SelectV2=Module._SelectV2=Module.asm.SelectV2).apply(null,arguments)},_Sigmoid=Module._Sigmoid=function(){return(_Sigmoid=Module._Sigmoid=Module.asm.Sigmoid).apply(null,arguments)},_Sin=Module._Sin=function(){return(_Sin=Module._Sin=Module.asm.Sin).apply(null,arguments)},_Softmax=Module._Softmax=function(){return(_Softmax=Module._Softmax=Module.asm.Softmax).apply(null,arguments)},_Sqrt=Module._Sqrt=function(){return(_Sqrt=Module._Sqrt=Module.asm.Sqrt).apply(null,arguments)},_Square=Module._Square=function(){return(_Square=Module._Square=Module.asm.Square).apply(null,arguments)},_SquaredDifference=Module._SquaredDifference=function(){return(_SquaredDifference=Module._SquaredDifference=Module.asm.SquaredDifference).apply(null,arguments)},_StridedSlice=Module._StridedSlice=function(){return(_StridedSlice=Module._StridedSlice=Module.asm.StridedSlice).apply(null,arguments)},_Sub=Module._Sub=function(){return(_Sub=Module._Sub=Module.asm.Sub).apply(null,arguments)},_Sum=Module._Sum=function(){return(_Sum=Module._Sum=Module.asm.Sum).apply(null,arguments)},_Tanh=Module._Tanh=function(){return(_Tanh=Module._Tanh=Module.asm.Tanh).apply(null,arguments)},_Tile=Module._Tile=function(){return(_Tile=Module._Tile=Module.asm.Tile).apply(null,arguments)},_TopK=Module._TopK=function(){return(_TopK=Module._TopK=Module.asm.TopK).apply(null,arguments)},_Transpose=Module._Transpose=function(){return(_Transpose=Module._Transpose=Module.asm.Transpose).apply(null,arguments)},__FusedMatMul=Module.__FusedMatMul=function(){return(__FusedMatMul=Module.__FusedMatMul=Module.asm._FusedMatMul).apply(null,arguments)},_malloc=Module._malloc=function(){return(_malloc=Module._malloc=Module.asm.malloc).apply(null,arguments)},_free=Module._free=function(){return(_free=Module._free=Module.asm.free).apply(null,arguments)},__start=Module.__start=function(){return(__start=Module.__start=Module.asm._start).apply(null,arguments)},stackSave=Module.stackSave=function(){return(stackSave=Module.stackSave=Module.asm.stackSave).apply(null,arguments)},stackAlloc=Module.stackAlloc=function(){return(stackAlloc=Module.stackAlloc=Module.asm.stackAlloc).apply(null,arguments)},stackRestore=Module.stackRestore=function(){return(stackRestore=Module.stackRestore=Module.asm.stackRestore).apply(null,arguments)};Module.asm=asm,Module.cwrap=cwrap;var calledRun;Module.then=function(func2){if(calledRun)func2(Module);else{var old=Module.onRuntimeInitialized;Module.onRuntimeInitialized=function(){old&&old(),func2(Module)}}return Module};function ExitStatus(status){this.name="ExitStatus",this.message="Program terminated with exit("+status+")",this.status=status}var calledMain=!1;dependenciesFulfilled=function runCaller(){calledRun||run(),calledRun||(dependenciesFulfilled=runCaller)};function callMain(args){var entryFunction=Module.__start;try{entryFunction();var ret=0;exit(ret,!0)}catch(e){if(e instanceof ExitStatus)return;if(e=="unwind"){noExitRuntime=!0;return}else{var toLog=e;e&&typeof e=="object"&&e.stack&&(toLog=[e,e.stack]),err("exception thrown: "+toLog),quit_(1,e)}}finally{calledMain=!0}}function run(args){if(args=args||arguments_,runDependencies>0||(preRun(),runDependencies>0))return;function doRun(){calledRun||(calledRun=!0,Module.calledRun=!0,!ABORT&&(initRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),shouldRunNow&&callMain(args),postRun()))}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),doRun()},1)):doRun()}Module.run=run;function exit(status,implicit){implicit&&noExitRuntime&&status===0||(noExitRuntime||(ABORT=!0,EXITSTATUS=status,exitRuntime(),Module.onExit&&Module.onExit(status)),quit_(status,new ExitStatus(status)))}if(Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;return Module.noInitialRun&&(shouldRunNow=!1),noExitRuntime=!0,run(),WasmBackendModule2}}();typeof exports=="object"&&typeof module=="object"?module.exports=WasmBackendModule:typeof define=="function"&&define.amd?define([],function(){return WasmBackendModule}):typeof exports=="object"&&(exports.WasmBackendModule=WasmBackendModule)}),EPSILON_FLOAT32=1e-7,EPSILON_FLOAT16=1e-4,DataStorage=class{constructor(backend2,dataMover){this.backend=backend2,this.dataMover=dataMover,this.data=new WeakMap,this.dataIdsCount=0}get(dataId){return this.data.has(dataId)||this.dataMover.moveData(this.backend,dataId),this.data.get(dataId)}set(dataId,value){this.dataIdsCount++,this.data.set(dataId,value)}has(dataId){return this.data.has(dataId)}delete(dataId){return this.dataIdsCount--,this.data.delete(dataId)}numDataIds(){return this.dataIdsCount}},KernelBackend=class{time(f){return notYetImplemented("time")}read(dataId){return notYetImplemented("read")}readSync(dataId){return notYetImplemented("readSync")}numDataIds(){return notYetImplemented("numDataIds")}disposeData(dataId){return notYetImplemented("disposeData")}write(values,shape,dtype){return notYetImplemented("write")}move(dataId,values,shape,dtype){return notYetImplemented("move")}memory(){return notYetImplemented("memory")}floatPrecision(){return notYetImplemented("floatPrecision")}epsilon(){return this.floatPrecision()===32?EPSILON_FLOAT32:EPSILON_FLOAT16}batchMatMul(a,b,transposeA,transposeB){return notYetImplemented("batchMatMul")}fusedBatchMatMul({a,b,transposeA,transposeB,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedBatchMatMul")}slice(x,begin,size){return notYetImplemented("slice")}stridedSlice(x,begin,end,strides){return notYetImplemented("stridedSlice")}unstack(x,axis){return notYetImplemented("unstack")}reverse(a,axis){return notYetImplemented("reverse")}concat(tensors,axis){return notYetImplemented("concat")}neg(a){return notYetImplemented("neg")}add(a,b){return notYetImplemented("add")}addN(tensors){return notYetImplemented("addN")}subtract(a,b){return notYetImplemented("subtract")}multiply(a,b){return notYetImplemented("multiply")}realDivide(a,b){return notYetImplemented("realDivide")}floorDiv(a,b){return notYetImplemented("floorDiv")}sum(x,axes){return notYetImplemented("sum")}prod(x,axes){return notYetImplemented("prod")}unsortedSegmentSum(x,segmentIds,numSegments){return notYetImplemented("unsortedSegmentSum")}argMin(x,axis){return notYetImplemented("argMin")}argMax(x,axis){return notYetImplemented("argMax")}equal(a,b){return notYetImplemented("equal")}notEqual(a,b){return notYetImplemented("notEqual")}less(a,b){return notYetImplemented("less")}lessEqual(a,b){return notYetImplemented("lessEqual")}greater(a,b){return notYetImplemented("greater")}greaterEqual(a,b){return notYetImplemented("greaterEqual")}logicalNot(a){return notYetImplemented("logicalNot")}logicalAnd(a,b){return notYetImplemented("logicalAnd")}logicalOr(a,b){return notYetImplemented("logicalOr")}where(condition){return notYetImplemented("where")}select(condition,a,b){return notYetImplemented("select")}topk(x,k,sorted){return notYetImplemented("topk")}min(x,axes){return notYetImplemented("min")}minimum(a,b){return notYetImplemented("minimum")}mod(a,b){return notYetImplemented("mod")}max(x,axes){return notYetImplemented("max")}maximum(a,b){return notYetImplemented("maximum")}all(x,axes){return notYetImplemented("all")}any(x,axes){return notYetImplemented("any")}squaredDifference(a,b){return notYetImplemented("squaredDifference")}ceil(x){return notYetImplemented("ceil")}floor(x){return notYetImplemented("floor")}round(x){return notYetImplemented("round")}sign(x){return notYetImplemented("sign")}isNaN(x){return notYetImplemented("isNaN")}isInf(x){return notYetImplemented("isInf")}isFinite(x){return notYetImplemented("isFinite")}pow(a,b){return notYetImplemented("pow")}exp(x){return notYetImplemented("exp")}expm1(x){return notYetImplemented("expm1")}softmax(x,dim){return notYetImplemented("softmax")}log(x){return notYetImplemented("log")}log1p(x){return notYetImplemented("log1p")}sqrt(x){return notYetImplemented("sqrt")}rsqrt(x){return notYetImplemented("rsqrt")}square(x){return notYetImplemented("square")}reciprocal(x){return notYetImplemented("reciprocal")}relu(x){return notYetImplemented("relu")}relu6(x){return notYetImplemented("relu6")}prelu(x,a){return notYetImplemented("prelu")}elu(x){return notYetImplemented("elu")}eluDer(dy,y){return notYetImplemented("eluDer")}selu(x){return notYetImplemented("selu")}int(x){return notYetImplemented("int")}clip(x,min6,max6){return notYetImplemented("clip")}abs(x){return notYetImplemented("abs")}complexAbs(x){return notYetImplemented("complexAbs")}sigmoid(x){return notYetImplemented("sigmoid")}softplus(x){return notYetImplemented("softplus")}sin(x){return notYetImplemented("sin")}cos(x){return notYetImplemented("cos")}tan(x){return notYetImplemented("tan")}asin(x){return notYetImplemented("asin")}acos(x){return notYetImplemented("acos")}atan(x){return notYetImplemented("atan")}atan2(a,b){return notYetImplemented("atan2")}sinh(x){return notYetImplemented("sinh")}cosh(x){return notYetImplemented("cosh")}tanh(x){return notYetImplemented("tanh")}asinh(x){return notYetImplemented("asinh")}acosh(x){return notYetImplemented("acosh")}atanh(x){return notYetImplemented("atanh")}erf(x){return notYetImplemented("erf")}step(x,alpha){return notYetImplemented("step")}fusedConv2d({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedConv2d")}conv2d(x,filter,convInfo){return notYetImplemented("conv2d")}conv2dDerInput(dy,filter,convInfo){return notYetImplemented("conv2dDerInput")}conv2dDerFilter(x,dY,convInfo){return notYetImplemented("conv2dDerFilter")}fusedDepthwiseConv2D({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedDepthwiseConv2D")}depthwiseConv2D(input2,filter,convInfo){return notYetImplemented("depthwiseConv2D")}depthwiseConv2DDerInput(dy,filter,convInfo){return notYetImplemented("depthwiseConv2DDerInput")}depthwiseConv2DDerFilter(x,dY,convInfo){return notYetImplemented("depthwiseConv2DDerFilter")}conv3d(x,filter,convInfo){return notYetImplemented("conv3d")}conv3dDerInput(dy,filter,convInfo){return notYetImplemented("conv3dDerInput")}conv3dDerFilter(x,dY,convInfo){return notYetImplemented("conv3dDerFilter")}maxPool(x,convInfo){return notYetImplemented("maxPool")}maxPoolBackprop(dy,x,y,convInfo){return notYetImplemented("maxPoolBackprop")}avgPool(x,convInfo){return notYetImplemented("avgPool")}avgPoolBackprop(dy,x,convInfo){return notYetImplemented("avgPoolBackprop")}avgPool3d(x,convInfo){return notYetImplemented("avgPool3d")}avgPool3dBackprop(dy,x,convInfo){return notYetImplemented("avgPool3dBackprop")}maxPool3d(x,convInfo){return notYetImplemented("maxPool3d")}maxPool3dBackprop(dy,x,y,convInfo){return notYetImplemented("maxPool3dBackprop")}reshape(x,shape){return notYetImplemented("reshape")}cast(x,dtype){return notYetImplemented("cast")}tile(x,reps){return notYetImplemented("tile")}pad(x,paddings,constantValue){return notYetImplemented("pad")}transpose(x,perm){return notYetImplemented("transpose")}gather(x,indices,axis,batchDims=0){return notYetImplemented("gather")}gatherND(x,indices){return notYetImplemented("gatherND")}scatterND(indices,updates,shape){return notYetImplemented("scatterND")}batchToSpaceND(x,blockShape,crops){return notYetImplemented("batchToSpaceND")}spaceToBatchND(x,blockShape,paddings){return notYetImplemented("spaceToBatchND")}resizeBilinear(x,newHeight,newWidth,alignCorners,halfPixelCenters){return notYetImplemented("resizeBilinear")}resizeBilinearBackprop(dy,x,alignCorners){return notYetImplemented("resizeBilinearBackprop")}resizeNearestNeighbor(x,newHEight,newWidth,alignCorners,halfPixelCenters){return notYetImplemented("resizeNearestNeighbor")}resizeNearestNeighborBackprop(dy,x,alignCorners){return notYetImplemented("resizeNearestNeighborBackprop")}batchNorm(x,mean4,variance,offset,scale22,varianceEpsilon){return notYetImplemented("batchNorm")}localResponseNormalization4D(x,radius,bias,alpha,beta){return notYetImplemented("localResponseNormalization4D")}LRNGrad(dy,inputImage,outputImage,radius,bias,alpha,beta){return notYetImplemented("LRNGrad")}multinomial(logits,normalized,numSamples,seed){return notYetImplemented("multinomial")}oneHot(indices,depth,onValue,offValue){return notYetImplemented("oneHot")}cumsum(x,axis,exclusive,reverse5){return notYetImplemented("cumsum")}nonMaxSuppression(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){return notYetImplemented("nonMaxSuppression")}fft(x){return notYetImplemented("fft")}ifft(x){return notYetImplemented("ifft")}complex(real4,imag4){return notYetImplemented("complex")}real(input2){return notYetImplemented("real")}imag(input2){return notYetImplemented("imag")}cropAndResize(image3,boxes,boxIndex,cropSize,method,extrapolationValue){return notYetImplemented("cropAndResize")}depthToSpace(x,blockSize,dataFormat){return notYetImplemented("depthToSpace")}split(value,sizeSplits,axis){return notYetImplemented("split")}sparseToDense(sparseIndices,sparseValues,outputShape,defaultValue){return notYetImplemented("sparseToDense")}diag(x){return notYetImplemented("diag")}fill(shape,value,dtype){return notYetImplemented("fill")}onesLike(x){return notYetImplemented("onesLike")}zerosLike(x){return notYetImplemented("zerosLike")}linspace(start,stop,num){return notYetImplemented("linspace")}dispose(){return notYetImplemented("dispose")}};function notYetImplemented(kernelName){throw new Error(`'${kernelName}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}function shuffle(array2){let counter=array2.length,temp=0,index=0;for(;counter>0;)index=Math.random()*counter|0,counter--,temp=array2[counter],array2[counter]=array2[index],array2[index]=temp}function clamp(min6,x,max6){return Math.max(min6,Math.min(x,max6))}function nearestLargerEven(val){return val%2==0?val:val+1}function sum(arr){let sum6=0;for(let i=0;ierrorMessagePrefix+` Shapes ${shapeA} and ${shapeB} must match`)}function assertNonNull(a){assert(a!=null,()=>"The input to the tensor constructor must be a non-null value.")}function flatten(arr,result=[],skipTypedArray=!1){if(result==null&&(result=[]),Array.isArray(arr)||isTypedArray(arr)&&!skipTypedArray)for(let i=0;i0,maxCounter){return new Promise((resolve,reject)=>{let tryCount=0,tryFn=()=>{if(checkFn()){resolve();return}tryCount++;let nextBackoff=delayFn(tryCount);if(maxCounter!=null&&tryCount>=maxCounter){reject();return}setTimeout(tryFn,nextBackoff)};tryFn()})}function inferFromImplicitShape(shape,size){let shapeProd=1,implicitIdx=-1;for(let i=0;i=0)shapeProd*=shape[i];else if(shape[i]===-1){if(implicitIdx!==-1)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${implicitIdx} and dim ${i}`);implicitIdx=i}else if(shape[i]<0)throw Error(`Shapes can not be < 0. Found ${shape[i]} at dim ${i}`);if(implicitIdx===-1){if(size>0&&size!==shapeProd)throw Error(`Size(${size}) must match the product of shape ${shape}`);return shape}if(shapeProd===0)throw Error(`Cannot infer the missing size in [${shape}] when there are 0 elements`);if(size%shapeProd!=0)throw Error(`The implicit shape can't be a fractional number. Got ${size} / ${shapeProd}`);let newShape=shape.slice();return newShape[implicitIdx]=size/shapeProd,newShape}function parseAxisParam(axis,shape){let rank=shape.length;return axis=axis==null?shape.map((s,i)=>i):[].concat(axis),assert(axis.every(ax=>ax>=-rank&&ax`All values in axis param must be in range [-${rank}, ${rank}) but got axis ${axis}`),assert(axis.every(ax=>isInt(ax)),()=>`All values in axis param must be integers but got axis ${axis}`),axis.map(a=>a<0?rank+a:a)}function squeezeShape(shape,axis){let newShape=[],keptDims=[],isEmptyArray=axis!=null&&Array.isArray(axis)&&axis.length===0,axes=axis==null||isEmptyArray?null:parseAxisParam(axis,shape).sort(),j=0;for(let i=0;ii)&&shape[i]===1&&(newShape.push(shape[i]),keptDims.push(i)),axes[j]<=i&&j++}shape[i]!==1&&(newShape.push(shape[i]),keptDims.push(i))}return{newShape,keptDims}}function getTypedArrayFromDType(dtype,size){let values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else throw new Error(`Unknown data type ${dtype}`);return values}function getArrayFromDType(dtype,size){let values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else if(dtype==="string")values=new Array(size);else throw new Error(`Unknown data type ${dtype}`);return values}function checkConversionForErrors(vals,dtype){for(let i=0;ibytes+=x.length),bytes}function isString(value){return typeof value=="string"||value instanceof String}function isBoolean(value){return typeof value=="boolean"}function isNumber(value){return typeof value=="number"}function inferDtype(values){return Array.isArray(values)?inferDtype(values[0]):values instanceof Float32Array?"float32":values instanceof Int32Array||values instanceof Uint8Array?"int32":isNumber(values)?"float32":isString(values)?"string":isBoolean(values)?"bool":"float32"}function isFunction(f){return!!(f&&f.constructor&&f.call&&f.apply)}function nearestDivisor(size,start){for(let i=start;i=0;--i)strides[i]=strides[i+1]*shape[i+1];return strides}function createNestedArray(offset,shape,a){let ret=new Array;if(shape.length===1){let d=shape[0];for(let i=0;iacc*c);for(let i=0;iacc*c);if(size===0)return[];if(size!==a.length)throw new Error(`[${shape}] does not match the input size ${a.length}.`);return createNestedArray(0,shape,a)}function makeOnesTypedArray(size,dtype){let array2=makeZerosTypedArray(size,dtype);for(let i=0;iprev*curr,1);if(dtype==null||dtype==="float32")return toNestedArray(shape,new Float32Array(size));if(dtype==="int32")return toNestedArray(shape,new Int32Array(size));if(dtype==="bool")return toNestedArray(shape,new Uint8Array(size));throw new Error(`Unknown data type ${dtype}`)}function assertNonNegativeIntegerDimensions(shape){shape.forEach(dimSize=>{assert(Number.isInteger(dimSize)&&dimSize>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${shape}].`)})}function locToIndex(locs,rank,strides){if(rank===0)return 0;if(rank===1)return locs[0];let index=locs[locs.length-1];for(let i=0;i{let[key,value]=keyValue.split(":");this.urlFlags[key]=parseValue(key,value)})}};function getQueryParams(queryString){let params={};return queryString.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(s,...t)=>(decodeParam(params,t[0],t[1]),t.join("="))),params}function decodeParam(params,name,value){params[decodeURIComponent(name)]=decodeURIComponent(value||"")}function parseValue(flagName,value){if(value=value.toLowerCase(),value==="true"||value==="false")return value==="true";if(`${+value}`===value)return+value;throw new Error(`Could not parse value flag value ${value} for flag ${flagName}.`)}function env(){return ENV}var ENV=null;function setEnvironmentGlobal(environment2){ENV=environment2}var globalNameSpace;function getGlobalNamespace(){if(globalNameSpace==null){let ns;if(typeof window!="undefined")ns=window;else if(typeof global!="undefined")ns=global;else if(typeof process!="undefined")ns=process;else if(typeof self!="undefined")ns=self;else throw new Error("Could not find a global object");globalNameSpace=ns}return globalNameSpace}function getGlobalMap(){let ns=getGlobalNamespace();return ns._tfGlobals==null&&(ns._tfGlobals=new Map),ns._tfGlobals}function getGlobal(key,init2){let globalMap=getGlobalMap();if(globalMap.has(key))return globalMap.get(key);{let singleton=init2();return globalMap.set(key,singleton),globalMap.get(key)}}var Abs="Abs",Acos="Acos",Acosh="Acosh",Add="Add",AddN="AddN",All="All",Any="Any",ArgMax="ArgMax",ArgMin="ArgMin",Asin="Asin",Asinh="Asinh",Atan="Atan",Atanh="Atanh",Atan2="Atan2",AvgPool="AvgPool",AvgPoolGrad="AvgPoolGrad",AvgPool3D="AvgPool3D",AvgPool3DGrad="AvgPool3DGrad",BatchMatMul="BatchMatMul",BatchToSpaceND="BatchToSpaceND",Bincount="Bincount",BroadcastTo="BroadcastTo",Cast="Cast",Ceil="Ceil",ClipByValue="ClipByValue",Complex="Complex",ComplexAbs="ComplexAbs",Concat="Concat",Conv2D="Conv2D",Conv2DBackpropFilter="Conv2DBackpropFilter",Conv2DBackpropInput="Conv2DBackpropInput",Conv3D="Conv3D",Conv3DBackpropFilterV2="Conv3DBackpropFilterV2",Conv3DBackpropInputV2="Conv3DBackpropInputV2",Cos="Cos",Cosh="Cosh",Cumsum="Cumsum",CropAndResize="CropAndResize",DenseBincount="DenseBincount",DepthToSpace="DepthToSpace",DepthwiseConv2dNative="DepthwiseConv2dNative",DepthwiseConv2dNativeBackpropFilter="DepthwiseConv2dNativeBackpropFilter",DepthwiseConv2dNativeBackpropInput="DepthwiseConv2dNativeBackpropInput",Diag="Diag",Dilation2D="Dilation2D",Dilation2DBackpropInput="Dilation2DBackpropInput",Dilation2DBackpropFilter="Dilation2DBackpropFilter",RealDiv="RealDiv",Elu="Elu",EluGrad="EluGrad",Erf="Erf",Equal="Equal",Exp="Exp",ExpandDims="ExpandDims",Expm1="Expm1",FFT="FFT",Fill="Fill",FlipLeftRight="FlipLeftRight",Floor="Floor",FloorDiv="FloorDiv",FusedBatchNorm="FusedBatchNorm",GatherV2="GatherV2",GatherNd="GatherNd",Greater="Greater",GreaterEqual="GreaterEqual",Identity="Identity",IFFT="IFFT",Imag="Imag",IsFinite="IsFinite",IsInf="IsInf",IsNan="IsNan",LeakyRelu="LeakyRelu",Less="Less",LessEqual="LessEqual",LinSpace="LinSpace",Log="Log",Log1p="Log1p",LogicalAnd="LogicalAnd",LogicalNot="LogicalNot",LogicalOr="LogicalOr",LogSoftmax="LogSoftmax",LRN="LRN",LRNGrad="LRNGrad",Max="Max",Maximum="Maximum",MaxPool="MaxPool",MaxPoolGrad="MaxPoolGrad",MaxPool3D="MaxPool3D",MaxPool3DGrad="MaxPool3DGrad",MaxPoolWithArgmax="MaxPoolWithArgmax",Mean="Mean",Min="Min",Minimum="Minimum",MirrorPad="MirrorPad",Mod="Mod",Multinomial="Multinomial",Multiply="Multiply",Neg="Neg",NotEqual="NotEqual",NonMaxSuppressionV3="NonMaxSuppressionV3",NonMaxSuppressionV4="NonMaxSuppressionV4",NonMaxSuppressionV5="NonMaxSuppressionV5",OnesLike="OnesLike",OneHot="OneHot",Pack="Pack",PadV2="PadV2",Pool="Pool",Pow="Pow",Prelu="Prelu",Prod="Prod",Range="Range",Real="Real",Reciprocal="Reciprocal",Relu="Relu",Reshape="Reshape",ResizeNearestNeighbor="ResizeNearestNeighbor",ResizeNearestNeighborGrad="ResizeNearestNeighborGrad",ResizeBilinear="ResizeBilinear",ResizeBilinearGrad="ResizeBilinearGrad",Relu6="Relu6",Reverse="Reverse",Round="Round",Rsqrt="Rsqrt",ScatterNd="ScatterNd",Select="Select",Selu="Selu",Slice="Slice",Sin="Sin",Sinh="Sinh",Sign="Sign",Sigmoid="Sigmoid",Softplus="Softplus",Sqrt="Sqrt",Sum="Sum",SpaceToBatchND="SpaceToBatchND",SplitV="SplitV",Softmax="Softmax",SquaredDifference="SquaredDifference",Square="Square",Sub="Sub",SparseToDense="SparseToDense",StridedSlice="StridedSlice",Tan="Tan",Tanh="Tanh",Tile="Tile",TopK="TopK",Transpose="Transpose",Unique="Unique",Unpack="Unpack",UnsortedSegmentSum="UnsortedSegmentSum",ZerosLike="ZerosLike",Step="Step",FromPixels="FromPixels",RotateWithOffset="RotateWithOffset",_FusedMatMul="_FusedMatMul",FusedConv2D="FusedConv2D",FusedDepthwiseConv2D="FusedDepthwiseConv2D",kernelRegistry=getGlobal("kernelRegistry",()=>new Map),gradRegistry=getGlobal("gradRegistry",()=>new Map);function getKernel(kernelName,backendName){let key=makeKey(kernelName,backendName);return kernelRegistry.get(key)}function getGradient(kernelName){return gradRegistry.get(kernelName)}function getKernelsForBackend(backendName){let it=kernelRegistry.entries(),result=[];for(;;){let{done,value}=it.next();if(done)break;let[key,config]=value,[backend2]=key.split("_");backend2===backendName&&result.push(config)}return result}function registerKernel(config){let{kernelName,backendName}=config,key=makeKey(kernelName,backendName);kernelRegistry.has(key)&&console.warn(`The kernel '${kernelName}' for backend '${backendName}' is already registered`),kernelRegistry.set(key,config)}function registerGradient(config){let{kernelName}=config;gradRegistry.has(kernelName)&&env().getBool("DEBUG")&&console.warn(`Overriding the gradient for '${kernelName}'`),gradRegistry.set(kernelName,config)}function unregisterKernel(kernelName,backendName){let key=makeKey(kernelName,backendName);if(!kernelRegistry.has(key))throw new Error(`The kernel '${kernelName}' for backend '${backendName}' is not registered`);kernelRegistry.delete(key)}function unregisterGradient(kernelName){if(!gradRegistry.has(kernelName))throw new Error(`The gradient '${kernelName}' for backend is not registered`);gradRegistry.delete(kernelName)}function copyRegisteredKernels(registeredBackendName,newBackendName){getKernelsForBackend(registeredBackendName).forEach(kernelConfig=>{let newKernelConfig=Object.assign({},kernelConfig,{backendName:newBackendName});registerKernel(newKernelConfig)})}function makeKey(kernelName,backendName){return`${backendName}_${kernelName}`}var util_exports={};__export2(util_exports,{arraysEqual:()=>arraysEqual,assert:()=>assert,assertNonNegativeIntegerDimensions:()=>assertNonNegativeIntegerDimensions,assertNonNull:()=>assertNonNull,assertShapesMatch:()=>assertShapesMatch,bytesFromStringArray:()=>bytesFromStringArray,bytesPerElement:()=>bytesPerElement,checkConversionForErrors:()=>checkConversionForErrors,clamp:()=>clamp,computeStrides:()=>computeStrides,createScalarValue:()=>createScalarValue,createShuffledIndices:()=>createShuffledIndices,decodeString:()=>decodeString,distSquared:()=>distSquared,encodeString:()=>encodeString,fetch:()=>fetch2,flatten:()=>flatten,getArrayFromDType:()=>getArrayFromDType,getTypedArrayFromDType:()=>getTypedArrayFromDType,hasEncodingLoss:()=>hasEncodingLoss,indexToLoc:()=>indexToLoc,inferDtype:()=>inferDtype,inferFromImplicitShape:()=>inferFromImplicitShape,isBoolean:()=>isBoolean,isFunction:()=>isFunction,isInt:()=>isInt,isNumber:()=>isNumber,isPromise:()=>isPromise,isScalarShape:()=>isScalarShape,isString:()=>isString,isTypedArray:()=>isTypedArray,isValidDtype:()=>isValidDtype,locToIndex:()=>locToIndex,makeOnesTypedArray:()=>makeOnesTypedArray,makeZerosNestedTypedArray:()=>makeZerosNestedTypedArray,makeZerosTypedArray:()=>makeZerosTypedArray,nearestDivisor:()=>nearestDivisor,nearestLargerEven:()=>nearestLargerEven,now:()=>now,parseAxisParam:()=>parseAxisParam,randUniform:()=>randUniform,repeatedTry:()=>repeatedTry,rightPad:()=>rightPad,shuffle:()=>shuffle,sizeFromShape:()=>sizeFromShape,sizeToSquarishShape:()=>sizeToSquarishShape,squeezeShape:()=>squeezeShape,sum:()=>sum,tanh:()=>tanh,toNestedArray:()=>toNestedArray,toTypedArray:()=>toTypedArray});function createScalarValue(value,dtype){return dtype==="string"?encodeString(value):toTypedArray([value],dtype)}function noConversionNeeded(a,dtype){return a instanceof Float32Array&&dtype==="float32"||a instanceof Int32Array&&dtype==="int32"||a instanceof Uint8Array&&dtype==="bool"}function toTypedArray(a,dtype){if(dtype==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(a)&&(a=flatten(a)),env().getBool("DEBUG")&&checkConversionForErrors(a,dtype),noConversionNeeded(a,dtype))return a;if(dtype==null||dtype==="float32"||dtype==="complex64")return new Float32Array(a);if(dtype==="int32")return new Int32Array(a);if(dtype==="bool"){let bool=new Uint8Array(a.length);for(let i=0;i{outputs=f()},timer=this.backendTimer.time(holdResultWrapperFn);if(env().getBool("CHECK_COMPUTATION_FOR_ERRORS"))for(let i=0;i{checkComputationForErrors(tensorVals,output.dtype,kernelName)})}return{kernelName,outputs,inputs,timeMs:timer.then(timing=>timing.kernelMs),extraInfo:timer.then(timing=>timing.getExtraProfileInfo!=null?timing.getExtraProfileInfo():"")}}logKernelProfile(kernelProfile){let{kernelName,outputs,timeMs,inputs,extraInfo}=kernelProfile;outputs.forEach(result=>{Promise.all([result.data(),timeMs,extraInfo]).then(valueContainer=>{this.logger.logKernelProfile(kernelName,result,valueContainer[0],valueContainer[1],inputs,valueContainer[2])})})}};function checkComputationForErrors(vals,dtype,kernelName){if(dtype!=="float32")return!1;for(let i=0;i0?inputShape:""} `}}console.log(`%c${paddedName} %c${time2} %c${rank}D ${shape} %c${size} %c${inputShapesDescription} %c${extraInfo}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}};function getFilteredNodesXToY(tape,xs,y){let tensorsFromX={},nodesFromX={};for(let i=0;itensorsFromX[output.id]=!0),anyInputFromX=!0,nodesFromX[node2.id]=!0;break}if(anyInputFromX)break}}let tensorsLeadToY={};tensorsLeadToY[y.id]=!0;let nodesToY={};for(let i=tape.length-1;i>=0;i--){let node2=tape[i],nodeInputs=node2.inputs;for(let j=0;j=0;i--){let node2=filteredTape[i],dys=[];if(node2.outputs.forEach(o=>{let gradTensor=tensorAccumulatedGradientMap[o.id];gradTensor!=null?dys.push(gradTensor):dys.push(null)}),node2.gradient==null)throw new Error(`Cannot compute gradient: gradient function not found for ${node2.kernelName}.`);let inputGradients=node2.gradient(dys);for(let inputName in node2.inputs){if(!(inputName in inputGradients))throw new Error(`Cannot backprop through input ${inputName}. Available gradients found: ${Object.keys(inputGradients)}.`);let dx=tidy2(()=>inputGradients[inputName]());if(dx.dtype!=="float32")throw new Error(`Error in gradient for op ${node2.kernelName}. The gradient of input ${inputName} must have 'float32' dtype, but has '${dx.dtype}'`);let x=node2.inputs[inputName];if(!arraysEqual(dx.shape,x.shape))throw new Error(`Error in gradient for op ${node2.kernelName}. The gradient of input '${inputName}' has shape '${dx.shape}', which does not match the shape of the input '${x.shape}'`);if(tensorAccumulatedGradientMap[x.id]==null)tensorAccumulatedGradientMap[x.id]=dx;else{let curGradient=tensorAccumulatedGradientMap[x.id];tensorAccumulatedGradientMap[x.id]=add5(curGradient,dx),curGradient.dispose()}}}}var FORMAT_LIMIT_NUM_VALS=20,FORMAT_NUM_FIRST_LAST_VALS=3,FORMAT_NUM_SIG_DIGITS=7;function tensorToString(vals,shape,dtype,verbose){let strides=computeStrides(shape),padPerCol=computeMaxSizePerColumn(vals,shape,dtype,strides),rank=shape.length,valsLines=subTensorToString(vals,shape,dtype,strides,padPerCol),lines=["Tensor"];return verbose&&(lines.push(` dtype: ${dtype}`),lines.push(` rank: ${rank}`),lines.push(` shape: [${shape}]`),lines.push(" values:")),lines.push(valsLines.map(l=>" "+l).join(` -`)),lines.join(` -`)}function computeMaxSizePerColumn(vals,shape,dtype,strides){let n=sizeFromShape(shape),numCols=strides[strides.length-1],padPerCol=new Array(numCols).fill(0),rank=shape.length,valuesOrTuples=dtype==="complex64"?createComplexTuples(vals):vals;if(rank>1)for(let row=0;rowFORMAT_LIMIT_NUM_VALS){let firstValsSize=FORMAT_NUM_FIRST_LAST_VALS*storagePerElement,firstVals=Array.from(vals.slice(0,firstValsSize)),lastVals=Array.from(vals.slice((size-FORMAT_NUM_FIRST_LAST_VALS)*storagePerElement,size*storagePerElement));return dtype==="complex64"&&(firstVals=createComplexTuples(firstVals),lastVals=createComplexTuples(lastVals)),["["+firstVals.map((x,i)=>valToString(x,padPerCol[i],dtype)).join(", ")+", ..., "+lastVals.map((x,i)=>valToString(x,padPerCol[size-FORMAT_NUM_FIRST_LAST_VALS+i],dtype)).join(", ")+"]"]}let displayVals=dtype==="complex64"?createComplexTuples(vals):Array.from(vals);return["["+displayVals.map((x,i)=>valToString(x,padPerCol[i],dtype)).join(", ")+"]"]}let subshape=shape.slice(1),substrides=strides.slice(1),stride=strides[0]*storagePerElement,lines=[];if(size>FORMAT_LIMIT_NUM_VALS){for(let i=0;i`Length of values '${n}' does not match the size inferred by the shape '${this.size}'.`)}if(dtype==="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=values||getArrayFromDType(dtype,this.size),this.strides=computeStrides(shape)}set(value,...locs){locs.length===0&&(locs=[0]),assert(locs.length===this.rank,()=>`The number of provided coordinates (${locs.length}) must match the rank (${this.rank})`);let index=this.locToIndex(locs);this.values[index]=value}get(...locs){locs.length===0&&(locs=[0]);let i=0;for(let loc of locs){if(loc<0||loc>=this.shape[i]){let msg=`Requested out of range element at ${locs}. Buffer shape=${this.shape}`;throw new Error(msg)}i++}let index=locs[locs.length-1];for(let i2=0;i2decodeString(b))}catch(_a){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}}return data}dataSync(){this.throwIfDisposed();let data=trackerFn().readSync(this.dataId);if(this.dtype==="string")try{return data.map(b=>decodeString(b))}catch(_a){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}return data}async bytes(){this.throwIfDisposed();let data=await trackerFn().read(this.dataId);return this.dtype==="string"?data:new Uint8Array(data.buffer)}dispose(){this.isDisposed||(trackerFn().disposeTensor(this),this.isDisposedInternal=!0)}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(verbose=!1){return opHandler.print(this,verbose)}clone(){return this.throwIfDisposed(),opHandler.clone(this)}toString(verbose=!1){let vals=this.dataSync();return tensorToString(vals,this.shape,this.dtype,verbose)}cast(dtype){return this.throwIfDisposed(),opHandler.cast(this,dtype)}variable(trainable=!0,name,dtype){return this.throwIfDisposed(),trackerFn().makeVariable(this,trainable,name,dtype)}};Object.defineProperty(Tensor,Symbol.hasInstance,{value:instance=>!!instance&&instance.data!=null&&instance.dataSync!=null&&instance.throwIfDisposed!=null});var Variable=class extends Tensor{constructor(initialValue,trainable,name,tensorId){super(initialValue.shape,initialValue.dtype,initialValue.dataId,tensorId);this.trainable=trainable,this.name=name}assign(newValue){if(newValue.dtype!==this.dtype)throw new Error(`dtype of the new value (${newValue.dtype}) and previous value (${this.dtype}) must match`);if(!arraysEqual(newValue.shape,this.shape))throw new Error(`shape of the new value (${newValue.shape}) and previous value (${this.shape}) must match`);trackerFn().disposeTensor(this),this.dataId=newValue.dataId,trackerFn().incRef(this,null)}dispose(){trackerFn().disposeVariable(this),this.isDisposedInternal=!0}};Object.defineProperty(Variable,Symbol.hasInstance,{value:instance=>instance instanceof Tensor&&instance.assign!=null&&instance.assign instanceof Function});var tensor_util_exports={};__export2(tensor_util_exports,{assertTypesMatch:()=>assertTypesMatch,getTensorsInContainer:()=>getTensorsInContainer,isTensorInList:()=>isTensorInList,makeTypesMatch:()=>makeTypesMatch});var Rank;(function(Rank2){Rank2.R0="R0",Rank2.R1="R1",Rank2.R2="R2",Rank2.R3="R3",Rank2.R4="R4",Rank2.R5="R5",Rank2.R6="R6"})(Rank||(Rank={}));var UpcastInt32AndMap;(function(UpcastInt32AndMap2){UpcastInt32AndMap2.float32="float32",UpcastInt32AndMap2.int32="int32",UpcastInt32AndMap2.bool="int32",UpcastInt32AndMap2.complex64="complex64"})(UpcastInt32AndMap||(UpcastInt32AndMap={}));var UpcastBoolAndMap;(function(UpcastBoolAndMap2){UpcastBoolAndMap2.float32="float32",UpcastBoolAndMap2.int32="int32",UpcastBoolAndMap2.bool="bool",UpcastBoolAndMap2.complex64="complex64"})(UpcastBoolAndMap||(UpcastBoolAndMap={}));var UpcastFloat32AndMap;(function(UpcastFloat32AndMap2){UpcastFloat32AndMap2.float32="float32",UpcastFloat32AndMap2.int32="float32",UpcastFloat32AndMap2.bool="float32",UpcastFloat32AndMap2.complex64="complex64"})(UpcastFloat32AndMap||(UpcastFloat32AndMap={}));var UpcastComplex64AndMap;(function(UpcastComplex64AndMap2){UpcastComplex64AndMap2.float32="complex64",UpcastComplex64AndMap2.int32="complex64",UpcastComplex64AndMap2.bool="complex64",UpcastComplex64AndMap2.complex64="complex64"})(UpcastComplex64AndMap||(UpcastComplex64AndMap={}));var upcastTypeMap={float32:UpcastFloat32AndMap,int32:UpcastInt32AndMap,bool:UpcastBoolAndMap,complex64:UpcastComplex64AndMap};function upcastType(typeA,typeB){if(typeA==="string"||typeB==="string"){if(typeA==="string"&&typeB==="string")return"string";throw new Error(`Can not upcast ${typeA} with ${typeB}`)}return upcastTypeMap[typeA][typeB]}function sumOutType(type){return upcastType(type,"int32")}function makeTypesMatch(a,b){if(a.dtype===b.dtype)return[a,b];let dtype=upcastType(a.dtype,b.dtype);return[a.cast(dtype),b.cast(dtype)]}function assertTypesMatch(a,b){assert(a.dtype===b.dtype,()=>`The dtypes of the first(${a.dtype}) and second(${b.dtype}) input must match`)}function isTensorInList(tensor2,tensorList){return tensorList.some(x=>x.id===tensor2.id)}function getTensorsInContainer(result){let list=[],seen=new Set;return walkTensorContainer(result,list,seen),list}function walkTensorContainer(container,list,seen){if(container==null)return;if(container instanceof Tensor){list.push(container);return}if(!isIterable(container))return;let iterable=container;for(let k in iterable){let val=iterable[k];seen.has(val)||(seen.add(val),walkTensorContainer(val,list,seen))}}function isIterable(obj){return Array.isArray(obj)||typeof obj=="object"}var EngineState=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(k=>k.name)))}}}dispose(){for(let variableName in this.registeredVariables)this.registeredVariables[variableName].dispose()}},Engine=class{constructor(ENV5){this.ENV=ENV5,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new EngineState}async ready(){if(this.pendingBackendInit!=null)return this.pendingBackendInit.then(()=>{});if(this.backendInstance!=null)return;let sortedBackends=this.getSortedBackends();for(let i=0;i{kernel.setupFunc!=null&&kernel.setupFunc(this.backendInstance)})}disposeRegisteredKernels(backendName){getKernelsForBackend(backendName).forEach(kernel=>{kernel.disposeFunc!=null&&kernel.disposeFunc(this.registry[backendName])})}initializeBackend(backendName){let registryFactoryEntry=this.registryFactory[backendName];if(registryFactoryEntry==null)throw new Error(`Cannot initialize backend ${backendName}, no registration found.`);try{let backend2=registryFactoryEntry.factory();if(backend2&&!(backend2 instanceof KernelBackend)&&typeof backend2.then=="function"){let promiseId=++this.pendingBackendInitId,success=backend2.then(backendInstance=>promiseId(promiseIdthis.registryFactory[b].priority-this.registryFactory[a].priority)}initializeBackendsAndReturnBest(){let sortedBackends=this.getSortedBackends();for(let i=0;ithis.startScope(name),()=>this.endScope(result),()=>(result=fn(),result instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),result))}scopedRun(start,end,f){start();try{let res=f();return end(),res}catch(ex){throw end(),ex}}nextTensorId(){return Engine.nextTensorId++}nextVariableId(){return Engine.nextVariableId++}clone(x){let y=this.makeTensorFromDataId(x.dataId,x.shape,x.dtype),inputs={x},grad2=dy=>({x:()=>{let dtype="float32",gradInputs={x:dy},attrs={dtype};return ENGINE.runKernelFunc(backend2=>backend2.cast(dy,dtype),gradInputs,null,Cast,attrs)}}),saved=[];return this.addTapeNode(this.state.activeScope.name,inputs,[y],grad2,saved,{}),y}runKernel(kernelName,inputs,attrs,inputsToSave,outputsToSave){let forwardFunc=null,backwardsFunc=null;return this.runKernelFunc(forwardFunc,inputs,backwardsFunc,kernelName,attrs,inputsToSave,outputsToSave)}shouldCheckForMemLeaks(){return this.ENV.getBool("IS_TEST")}checkKernelForMemLeak(kernelName,numDataIdsBefore,outInfos){let numDataIdsAfter=this.backend.numDataIds(),numOutputDataIds=0;outInfos.forEach(info=>{numOutputDataIds+=info.dtype==="complex64"?3:1});let numMoves=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],dataIdsLeaked=numDataIdsAfter-numDataIdsBefore-numOutputDataIds-numMoves;if(dataIdsLeaked>0)throw new Error(`Backend '${this.backendName}' has an internal memory leak (${dataIdsLeaked} data ids) after running '${kernelName}'`)}runKernelFunc(forwardFunc,inputs,backwardsFunc,kernelName,attrs,inputsToSave,outputsToSave){let outputs,saved=[],isTapeOn=this.isTapeOn();kernelName==null&&(kernelName=this.state.activeScope!=null?this.state.activeScope.name:"");let startingBytecount=this.state.numBytes,startingNumTensors=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);let kernelFunc3;this.backendName==null&&this.backend;let kernel=getKernel(kernelName,this.backendName),out;if(kernel!=null)kernelFunc3=()=>{let numDataIdsBefore=this.backend.numDataIds();out=kernel.kernelFunc({inputs,attrs,backend:this.backend});let outInfos=Array.isArray(out)?out:[out];this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(kernelName,numDataIdsBefore,outInfos);let outTensors=outInfos.map(outInfo=>{if(outInfo.rank!=null)return outInfo;let{dataId,shape,dtype}=outInfo;return this.makeTensorFromDataId(dataId,shape,dtype)});if(isTapeOn){let tensorsToSave=this.getTensorsForGradient(kernelName,inputs,outTensors);if(tensorsToSave==null){outputsToSave==null&&(outputsToSave=[]);let outsToSave=outTensors.filter((_,i)=>outputsToSave[i]);tensorsToSave=(inputsToSave||[]).slice().concat(outsToSave)}saved=this.saveTensorsForBackwardMode(tensorsToSave)}return outTensors};else{if(forwardFunc==null)throw new Error(`Error running ${kernelName}: Neither modular kernel nor forward func passed`);let saveFunc=tensors=>{!isTapeOn||(saved=tensors.map(tensor2=>this.keep(this.clone(tensor2))))};kernelFunc3=()=>{let numDataIdsBefore=this.backend.numDataIds();out=this.tidy(()=>forwardFunc(this.backend,saveFunc));let outs=Array.isArray(out)?out:[out];return this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(kernelName,numDataIdsBefore,outs),outs}}let kernelProfile;return this.scopedRun(()=>this.state.kernelDepth++,()=>this.state.kernelDepth--,()=>{!this.ENV.getBool("DEBUG")&&!this.state.profiling?outputs=kernelFunc3():(kernelProfile=this.profiler.profileKernel(kernelName,inputs,()=>kernelFunc3()),this.ENV.getBool("DEBUG")&&this.profiler.logKernelProfile(kernelProfile),outputs=kernelProfile.outputs)}),isTapeOn&&this.addTapeNode(kernelName,inputs,outputs,backwardsFunc,saved,attrs),this.state.profiling&&this.state.activeProfile.kernels.push({name:kernelName,bytesAdded:this.state.numBytes-startingBytecount,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-startingNumTensors,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(inputs).map(key=>inputs[key]!=null?inputs[key].shape:null),outputShapes:outputs.map(item=>item.shape),kernelTimeMs:kernelProfile.timeMs,extraInfo:kernelProfile.extraInfo}),Array.isArray(out)?outputs:outputs[0]}saveTensorsForBackwardMode(tensors){return tensors.map(tensor2=>this.keep(this.clone(tensor2)))}getTensorsForGradient(kernelName,inputs,outputs){let gradConfig=getGradient(kernelName);if(gradConfig!=null){let inputsToSave=gradConfig.inputsToSave||[],outputsToSave=gradConfig.outputsToSave||[],inputTensorsToSave;gradConfig.saveAllInputs?(assert(Array.isArray(inputs),()=>"saveAllInputs is true, expected inputs to be an array."),inputTensorsToSave=Object.keys(inputs).map(key=>inputs[key])):inputTensorsToSave=inputsToSave.map(inputName=>inputs[inputName]);let outputTensorsToSave=outputs.filter((_,i)=>outputsToSave[i]);return inputTensorsToSave.concat(outputTensorsToSave)}return null}makeTensor(values,shape,dtype,backend2){if(values==null)throw new Error("Values passed to engine.makeTensor() are null");dtype=dtype||"float32",backend2=backend2||this.backend;let backendVals=values;dtype==="string"&&isString(values[0])&&(backendVals=values.map(d=>encodeString(d)));let dataId=backend2.write(backendVals,shape,dtype),t=new Tensor(shape,dtype,dataId,this.nextTensorId());if(this.incRef(t,backend2),dtype==="string"){let info=this.state.tensorInfo.get(dataId),newBytes=bytesFromStringArray(backendVals);this.state.numBytes+=newBytes-info.bytes,info.bytes=newBytes}return t}makeTensorFromDataId(dataId,shape,dtype,backend2){dtype=dtype||"float32";let t=new Tensor(shape,dtype,dataId,this.nextTensorId());return this.incRef(t,backend2),t}makeVariable(initialValue,trainable=!0,name,dtype){name=name||this.nextVariableId().toString(),dtype!=null&&dtype!==initialValue.dtype&&(initialValue=initialValue.cast(dtype));let v=new Variable(initialValue,trainable,name,this.nextTensorId());if(this.state.registeredVariables[v.name]!=null)throw new Error(`Variable with name ${v.name} was already registered`);return this.state.registeredVariables[v.name]=v,this.incRef(v,this.backend),v}incRef(a,backend2){let refCount=this.state.tensorInfo.has(a.dataId)?this.state.tensorInfo.get(a.dataId).refCount:0;if(this.state.numTensors++,a.dtype==="string"&&this.state.numStringTensors++,refCount===0){this.state.numDataBuffers++;let bytes=0;a.dtype!=="complex64"&&a.dtype!=="string"&&(bytes=a.size*bytesPerElement(a.dtype)),this.state.tensorInfo.set(a.dataId,{backend:backend2||this.backend,dtype:a.dtype,shape:a.shape,bytes,refCount:0}),this.state.numBytes+=bytes}this.state.tensorInfo.get(a.dataId).refCount++,a instanceof Variable||this.track(a)}disposeTensor(a){if(!this.state.tensorInfo.has(a.dataId))return;this.state.numTensors--,a.dtype==="string"&&this.state.numStringTensors--;let info=this.state.tensorInfo.get(a.dataId);info.refCount<=1?(a.dtype!=="complex64"&&(this.state.numBytes-=info.bytes),this.state.numDataBuffers--,info.backend.disposeData(a.dataId),this.state.tensorInfo.delete(a.dataId)):this.state.tensorInfo.get(a.dataId).refCount--}disposeVariables(){for(let varName in this.state.registeredVariables){let v=this.state.registeredVariables[varName];this.disposeVariable(v)}}disposeVariable(v){this.disposeTensor(v),this.state.registeredVariables[v.name]!=null&&delete this.state.registeredVariables[v.name]}memory(){let info=this.backend.memory();return info.numTensors=this.state.numTensors,info.numDataBuffers=this.state.numDataBuffers,info.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(info.unreliable=!0,info.reasons==null&&(info.reasons=[]),info.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),info}async profile(query){this.state.profiling=!0;let startBytes=this.state.numBytes,startNumTensors=this.state.numTensors;this.state.activeProfile.kernels=[],this.state.activeProfile.result=await query(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max(...this.state.activeProfile.kernels.map(d=>d.totalBytesSnapshot)),this.state.activeProfile.newBytes=this.state.numBytes-startBytes,this.state.activeProfile.newTensors=this.state.numTensors-startNumTensors;for(let kernel of this.state.activeProfile.kernels)kernel.kernelTimeMs=await kernel.kernelTimeMs,kernel.extraInfo=await kernel.extraInfo;return this.state.activeProfile}isTapeOn(){return this.state.gradientDepth>0&&this.state.kernelDepth===0}addTapeNode(kernelName,inputs,outputs,gradientsFunc,saved,attrs){let tapeNode={id:this.state.nextTapeNodeId++,kernelName,inputs,outputs,saved},gradConfig=getGradient(kernelName);gradConfig!=null&&(gradientsFunc=gradConfig.gradFunc),gradientsFunc!=null&&(tapeNode.gradient=dys=>(dys=dys.map((dy,i)=>{if(dy==null){let output=outputs[i],vals=makeZerosTypedArray(output.size,output.dtype);return this.makeTensor(vals,output.shape,output.dtype)}return dy}),gradientsFunc(dys.length>1?dys:dys[0],saved,attrs))),this.state.activeTape.push(tapeNode)}keep(result){return result.kept=!0,result}startTape(){this.state.gradientDepth===0&&(this.state.activeTape=[]),this.state.gradientDepth++}endTape(){this.state.gradientDepth--}startScope(name){let scopeInfo={track:[],name:"unnamed scope",id:this.state.nextScopeId++};name&&(scopeInfo.name=name),this.state.scopeStack.push(scopeInfo),this.state.activeScope=scopeInfo}endScope(result){let tensorsToTrackInParent=getTensorsInContainer(result),tensorsToTrackInParentSet=new Set(tensorsToTrackInParent.map(t=>t.id));for(let i=0;i{!tensor2.kept&&tensor2.scopeId===oldScope.id&&this.track(tensor2)})}gradients(f,xs,dy,allowNoGradients=!1){if(assert(xs.length>0,()=>"gradients() received an empty list of xs."),dy!=null&&dy.dtype!=="float32")throw new Error(`dy must have 'float32' dtype, but has '${dy.dtype}'`);let y=this.scopedRun(()=>this.startTape(),()=>this.endTape(),()=>this.tidy("forward",f));assert(y instanceof Tensor,()=>"The result y returned by f() must be a tensor.");let filteredTape=getFilteredNodesXToY(this.state.activeTape,xs,y);if(!allowNoGradients&&filteredTape.length===0&&xs.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 accumulatedGradientMap={};accumulatedGradientMap[y.id]=dy==null?ones(y.shape):dy,backpropagateGradients(accumulatedGradientMap,filteredTape,f2=>this.tidy(f2),add);let grads2=xs.map(x=>accumulatedGradientMap[x.id]);return this.state.gradientDepth===0&&(this.state.activeTape.forEach(node2=>{for(let tensor2 of node2.saved)tensor2.dispose()}),this.state.activeTape=null),{value:y,grads:grads2}})}customGrad(f){return assert(isFunction(f),()=>"The f passed in customGrad(f) must be a function."),(...inputs)=>{assert(inputs.every(t=>t instanceof Tensor),()=>"The args passed in customGrad(f)(x1, x2,...) must all be tensors");let res,inputMap={};return inputs.forEach((input2,i)=>{inputMap[i]=input2}),this.runKernelFunc((_,save)=>(res=f(...inputs,save),assert(res.value instanceof Tensor,()=>"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"),assert(isFunction(res.gradFunc),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."),res.value),inputMap,(dy,saved)=>{let gradRes=res.gradFunc(dy,saved),grads2=Array.isArray(gradRes)?gradRes:[gradRes];assert(grads2.length===inputs.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(...)."),assert(grads2.every(t=>t instanceof Tensor),()=>"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 gradMap={};return grads2.forEach((grad2,i)=>{gradMap[i]=()=>grad2}),gradMap})}}readSync(dataId){return this.state.tensorInfo.get(dataId).backend.readSync(dataId)}read(dataId){return this.state.tensorInfo.get(dataId).backend.read(dataId)}async time(query){let start=now(),timingInfo=await this.backend.time(query);return timingInfo.wallMs=now()-start,timingInfo}track(result){return this.state.activeScope!=null&&(result.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(result)),result}get registeredVariables(){return this.state.registeredVariables}reset(){this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new EngineState;for(let backendName in this.registry)this.disposeRegisteredKernels(backendName),this.registry[backendName].dispose(),delete this.registry[backendName];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null}};Engine.nextTensorId=0;Engine.nextVariableId=0;function ones(shape){let values=makeOnesTypedArray(sizeFromShape(shape),"float32");return ENGINE.makeTensor(values,shape,"float32")}function getOrMakeEngine(){let ns=getGlobalNamespace();if(ns._tfengine==null){let environment2=new Environment(ns);ns._tfengine=new Engine(environment2)}return setEnvironmentGlobal(ns._tfengine.ENV),setTensorTracker(()=>ns._tfengine),ns._tfengine}var ENGINE=getOrMakeEngine();function add(a,b){let inputs={a,b};return ENGINE.runKernel(Add,inputs)}var device_util_exports={};__export2(device_util_exports,{isBrowser:()=>isBrowser,isMobile:()=>isMobile});function _isNavigatorDefined(){return typeof navigator!="undefined"&&navigator!=null}function isMobile(){if(_isNavigatorDefined()){let a=navigator.userAgent||navigator.vendor||window.opera;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(a)||/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(a.substr(0,4))}return!1}function isBrowser(){return typeof window!="undefined"&&window.document!=null||typeof WorkerGlobalScope!="undefined"}var ENV2=env();ENV2.registerFlag("DEBUG",()=>!1,debugValue=>{debugValue&&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.")});ENV2.registerFlag("IS_BROWSER",()=>isBrowser());ENV2.registerFlag("IS_NODE",()=>typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined");ENV2.registerFlag("IS_CHROME",()=>typeof navigator!="undefined"&&navigator!=null&&navigator.userAgent!=null&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor));ENV2.registerFlag("PROD",()=>!1);ENV2.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",()=>ENV2.getBool("DEBUG"));ENV2.registerFlag("DEPRECATION_WARNINGS_ENABLED",()=>!0);ENV2.registerFlag("IS_TEST",()=>!1);ENV2.registerFlag("CHECK_COMPUTATION_FOR_ERRORS",()=>!0);function inferShape(val,dtype){let firstElem=val;if(isTypedArray(val))return dtype==="string"?[]:[val.length];if(!Array.isArray(val))return[];let shape=[];for(;Array.isArray(firstElem)||isTypedArray(firstElem)&&dtype!=="string";)shape.push(firstElem.length),firstElem=firstElem[0];return Array.isArray(val)&&env().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&deepAssertShapeConsistency(val,shape,[]),shape}function deepAssertShapeConsistency(val,shape,indices){if(indices=indices||[],!Array.isArray(val)&&!isTypedArray(val)){assert(shape.length===0,()=>`Element arr[${indices.join("][")}] is a primitive, but should be an array/TypedArray of ${shape[0]} elements`);return}assert(shape.length>0,()=>`Element arr[${indices.join("][")}] should be a primitive, but is an array of ${val.length} elements`),assert(val.length===shape[0],()=>`Element arr[${indices.join("][")}] should have ${shape[0]} elements, but has ${val.length} elements`);let subShape=shape.slice(1);for(let i=0;i=0&&(inferredDtype=parseAsDtype),assertDtype(parseAsDtype,inferredDtype,argName,functionName),x==null||!isTypedArray(x)&&!Array.isArray(x)&&typeof x!="number"&&typeof x!="boolean"&&typeof x!="string"){let type=x==null?"null":x.constructor.name;throw new Error(`Argument '${argName}' passed to '${functionName}' must be a Tensor or TensorLike, but got '${type}'`)}let inferredShape=inferShape(x,inferredDtype);!isTypedArray(x)&&!Array.isArray(x)&&(x=[x]);let values=inferredDtype!=="string"?toTypedArray(x,inferredDtype):flatten(x,[],!0);return ENGINE.makeTensor(values,inferredShape,inferredDtype)}function convertToTensorArray(arg,argName,functionName,parseAsDtype="numeric"){if(!Array.isArray(arg))throw new Error(`Argument ${argName} passed to ${functionName} must be a \`Tensor[]\` or \`TensorLike[]\``);return arg.map((t,i)=>convertToTensor(t,`${argName}[${i}]`,functionName,parseAsDtype))}var OP_SCOPE_SUFFIX="__op";function op(f){let keys=Object.keys(f);if(keys.length!==1)throw new Error(`Please provide an object with a single key (operation name) mapping to a function. Got an object with ${keys.length} keys.`);let opName=keys[0],fn=f[opName];opName.endsWith("_")&&(opName=opName.substring(0,opName.length-1)),opName=opName+OP_SCOPE_SUFFIX;let f2=(...args)=>{ENGINE.startScope(opName);try{let result=fn(...args);return isPromise(result)&&console.error("Cannot return a Promise inside of tidy."),ENGINE.endScope(result),result}catch(ex){throw ENGINE.endScope(null),ex}};return Object.defineProperty(f2,"name",{value:opName,configurable:!0}),f2}function complex_(real4,imag4){let $real=convertToTensor(real4,"real","complex"),$imag=convertToTensor(imag4,"imag","complex");assertShapesMatch($real.shape,$imag.shape,`real and imag shapes, ${$real.shape} and ${$imag.shape}, must match in call to tf.complex().`);let inputs={real:$real,imag:$imag};return ENGINE.runKernel(Complex,inputs)}var complex=op({complex_});function makeTensor(values,shape,inferredShape,dtype){if(dtype==null&&(dtype=inferDtype(values)),dtype==="complex64")throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(!isTypedArray(values)&&!Array.isArray(values)&&typeof values!="number"&&typeof values!="boolean"&&typeof values!="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(shape!=null){assertNonNegativeIntegerDimensions(shape);let providedSize=sizeFromShape(shape),inferredSize=sizeFromShape(inferredShape);assert(providedSize===inferredSize,()=>`Based on the provided shape, [${shape}], the tensor should have ${providedSize} values but has ${inferredSize}`);for(let i=0;i`Error creating a new Tensor. Inferred shape (${inferredShape}) does not match the provided shape (${shape}). `)}}return!isTypedArray(values)&&!Array.isArray(values)&&(values=[values]),shape=shape||inferredShape,values=dtype!=="string"?toTypedArray(values,dtype):flatten(values,[],!0),ENGINE.makeTensor(values,shape,dtype)}function tensor(values,shape,dtype){let inferredShape=inferShape(values,dtype);return makeTensor(values,shape,inferredShape,dtype)}var DTYPE_VALUE_SIZE_MAP={float32:4,float16:2,int32:4,uint16:2,uint8:1,bool:1,complex64:8},NUM_BYTES_STRING_LENGTH=4;async function encodeWeights(tensors,group){let specs=[],dataPromises=[],names=Array.isArray(tensors)?tensors.map(tensor2=>tensor2.name):Object.keys(tensors);for(let i=0;i{let vals=await t.bytes(),totalNumBytes=vals.reduce((p2,c)=>p2+c.length,0)+NUM_BYTES_STRING_LENGTH*vals.length,bytes=new Uint8Array(totalNumBytes),offset=0;for(let i2=0;i2{if(totalByteLength+=x.byteLength,normalizedXs.push(x.byteLength===x.buffer.byteLength?x:new x.constructor(x)),!(x instanceof Float32Array||x instanceof Int32Array||x instanceof Uint8Array))throw new Error(`Unsupported TypedArray subtype: ${x.constructor.name}`)});let y=new Uint8Array(totalByteLength),offset=0;return normalizedXs.forEach(x=>{y.set(new Uint8Array(x.buffer),offset),offset+=x.byteLength}),y.buffer}var useNodeBuffer=typeof Buffer!="undefined"&&(typeof Blob=="undefined"||typeof atob=="undefined"||typeof btoa=="undefined");function stringByteLength(str){return useNodeBuffer?Buffer.byteLength(str):new Blob([str]).size}function arrayBufferToBase64String(buffer2){if(useNodeBuffer)return Buffer.from(buffer2).toString("base64");let buf=new Uint8Array(buffer2),s="";for(let i=0,l=buf.length;i{totalByteLength+=buffer2.byteLength});let temp=new Uint8Array(totalByteLength),offset=0;return buffers.forEach(buffer2=>{temp.set(new Uint8Array(buffer2),offset),offset+=buffer2.byteLength}),temp.buffer}function basename(path){let SEPARATOR="/";for(path=path.trim();path.endsWith(SEPARATOR);)path=path.slice(0,path.length-1);let items=path.split(SEPARATOR);return items[items.length-1]}function getModelArtifactsInfoForJSON(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date,modelTopologyType:"JSON",modelTopologyBytes:modelArtifacts.modelTopology==null?0:stringByteLength(JSON.stringify(modelArtifacts.modelTopology)),weightSpecsBytes:modelArtifacts.weightSpecs==null?0:stringByteLength(JSON.stringify(modelArtifacts.weightSpecs)),weightDataBytes:modelArtifacts.weightData==null?0:modelArtifacts.weightData.byteLength}}function computeFloat16MantisaTable(){let convertMantissa=i=>{let m=i<<13,e=0;for(;(m&8388608)==0;)e-=8388608,m<<=1;return m&=~8388608,e+=947912704,m|e},mantisaTable=new Uint32Array(2048);mantisaTable[0]=0;for(let i=1;i<1024;i++)mantisaTable[i]=convertMantissa(i);for(let i=1024;i<2048;i++)mantisaTable[i]=939524096+(i-1024<<13);return mantisaTable}function computeFloat16ExponentTable(){let exponentTable=new Uint32Array(64);exponentTable[0]=0,exponentTable[31]=1199570944,exponentTable[32]=2147483648,exponentTable[63]=3347054592;for(let i=1;i<31;i++)exponentTable[i]=i<<23;for(let i=33;i<63;i++)exponentTable[i]=2147483648+(i-32<<23);return exponentTable}function computeFloat16OffsetTable(){let offsetTable=new Uint32Array(64);for(let i=0;i<64;i++)offsetTable[i]=1024;return offsetTable[0]=offsetTable[32]=0,offsetTable}function getFloat16Decoder(){let mantisaTable=computeFloat16MantisaTable(),exponentTable=computeFloat16ExponentTable(),offsetTable=computeFloat16OffsetTable();return quantizedArray=>{let buffer2=new ArrayBuffer(4*quantizedArray.length),bufferUint32View=new Uint32Array(buffer2);for(let index=0;index>10]+(float16Bits&1023)]+exponentTable[float16Bits>>10];bufferUint32View[index]=float32Bits}return new Float32Array(buffer2)}}var IORouterRegistry=class{constructor(){this.saveRouters=[],this.loadRouters=[]}static getInstance(){return IORouterRegistry.instance==null&&(IORouterRegistry.instance=new IORouterRegistry),IORouterRegistry.instance}static registerSaveRouter(saveRouter){IORouterRegistry.getInstance().saveRouters.push(saveRouter)}static registerLoadRouter(loadRouter){IORouterRegistry.getInstance().loadRouters.push(loadRouter)}static getSaveHandlers(url){return IORouterRegistry.getHandlers(url,"save")}static getLoadHandlers(url,loadOptions){return IORouterRegistry.getHandlers(url,"load",loadOptions)}static getHandlers(url,handlerType,loadOptions){let validHandlers=[];return(handlerType==="load"?IORouterRegistry.getInstance().loadRouters:IORouterRegistry.getInstance().saveRouters).forEach(router=>{let handler=router(url,loadOptions);handler!==null&&validHandlers.push(handler)}),validHandlers}},registerSaveRouter=loudRouter=>IORouterRegistry.registerSaveRouter(loudRouter),registerLoadRouter=loudRouter=>IORouterRegistry.registerLoadRouter(loudRouter),getSaveHandlers=url=>IORouterRegistry.getSaveHandlers(url),getLoadHandlers=(url,loadOptions)=>IORouterRegistry.getLoadHandlers(url,loadOptions),DATABASE_NAME="tensorflowjs",DATABASE_VERSION=1,MODEL_STORE_NAME="models_store",INFO_STORE_NAME="model_info_store";function getIndexedDBFactory(){if(!env().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");let theWindow=typeof window=="undefined"?self:window,factory=theWindow.indexedDB||theWindow.mozIndexedDB||theWindow.webkitIndexedDB||theWindow.msIndexedDB||theWindow.shimIndexedDB;if(factory==null)throw new Error("The current browser does not appear to support IndexedDB.");return factory}function setUpDatabase(openRequest){let db=openRequest.result;db.createObjectStore(MODEL_STORE_NAME,{keyPath:"modelPath"}),db.createObjectStore(INFO_STORE_NAME,{keyPath:"modelPath"})}var BrowserIndexedDB=class{constructor(modelPath){if(this.indexedDB=getIndexedDBFactory(),modelPath==null||!modelPath)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=modelPath}async save(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return this.databaseAction(this.modelPath,modelArtifacts)}async load(){return this.databaseAction(this.modelPath)}databaseAction(modelPath,modelArtifacts){return new Promise((resolve,reject)=>{let openRequest=this.indexedDB.open(DATABASE_NAME,DATABASE_VERSION);openRequest.onupgradeneeded=()=>setUpDatabase(openRequest),openRequest.onsuccess=()=>{let db=openRequest.result;if(modelArtifacts==null){let modelTx=db.transaction(MODEL_STORE_NAME,"readonly"),getRequest=modelTx.objectStore(MODEL_STORE_NAME).get(this.modelPath);getRequest.onsuccess=()=>{if(getRequest.result==null)return db.close(),reject(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`));resolve(getRequest.result.modelArtifacts)},getRequest.onerror=error=>(db.close(),reject(getRequest.error)),modelTx.oncomplete=()=>db.close()}else{let modelArtifactsInfo=getModelArtifactsInfoForJSON(modelArtifacts),infoTx=db.transaction(INFO_STORE_NAME,"readwrite"),infoStore=infoTx.objectStore(INFO_STORE_NAME),putInfoRequest=infoStore.put({modelPath:this.modelPath,modelArtifactsInfo}),modelTx;putInfoRequest.onsuccess=()=>{modelTx=db.transaction(MODEL_STORE_NAME,"readwrite");let putModelRequest=modelTx.objectStore(MODEL_STORE_NAME).put({modelPath:this.modelPath,modelArtifacts,modelArtifactsInfo});putModelRequest.onsuccess=()=>resolve({modelArtifactsInfo}),putModelRequest.onerror=error=>{infoStore=infoTx.objectStore(INFO_STORE_NAME);let deleteInfoRequest=infoStore.delete(this.modelPath);deleteInfoRequest.onsuccess=()=>(db.close(),reject(putModelRequest.error)),deleteInfoRequest.onerror=error2=>(db.close(),reject(putModelRequest.error))}},putInfoRequest.onerror=error=>(db.close(),reject(putInfoRequest.error)),infoTx.oncomplete=()=>{modelTx==null?db.close():modelTx.oncomplete=()=>db.close()}}},openRequest.onerror=error=>reject(openRequest.error)})}};BrowserIndexedDB.URL_SCHEME="indexeddb://";var indexedDBRouter=url=>env().getBool("IS_BROWSER")&&!Array.isArray(url)&&url.startsWith(BrowserIndexedDB.URL_SCHEME)?browserIndexedDB(url.slice(BrowserIndexedDB.URL_SCHEME.length)):null;IORouterRegistry.registerSaveRouter(indexedDBRouter);IORouterRegistry.registerLoadRouter(indexedDBRouter);function browserIndexedDB(modelPath){return new BrowserIndexedDB(modelPath)}function maybeStripScheme(key){return key.startsWith(BrowserIndexedDB.URL_SCHEME)?key.slice(BrowserIndexedDB.URL_SCHEME.length):key}var BrowserIndexedDBManager=class{constructor(){this.indexedDB=getIndexedDBFactory()}async listModels(){return new Promise((resolve,reject)=>{let openRequest=this.indexedDB.open(DATABASE_NAME,DATABASE_VERSION);openRequest.onupgradeneeded=()=>setUpDatabase(openRequest),openRequest.onsuccess=()=>{let db=openRequest.result,tx=db.transaction(INFO_STORE_NAME,"readonly"),getAllInfoRequest=tx.objectStore(INFO_STORE_NAME).getAll();getAllInfoRequest.onsuccess=()=>{let out={};for(let item of getAllInfoRequest.result)out[item.modelPath]=item.modelArtifactsInfo;resolve(out)},getAllInfoRequest.onerror=error=>(db.close(),reject(getAllInfoRequest.error)),tx.oncomplete=()=>db.close()},openRequest.onerror=error=>reject(openRequest.error)})}async removeModel(path){return path=maybeStripScheme(path),new Promise((resolve,reject)=>{let openRequest=this.indexedDB.open(DATABASE_NAME,DATABASE_VERSION);openRequest.onupgradeneeded=()=>setUpDatabase(openRequest),openRequest.onsuccess=()=>{let db=openRequest.result,infoTx=db.transaction(INFO_STORE_NAME,"readwrite"),infoStore=infoTx.objectStore(INFO_STORE_NAME),getInfoRequest=infoStore.get(path),modelTx;getInfoRequest.onsuccess=()=>{if(getInfoRequest.result==null)return db.close(),reject(new Error(`Cannot find model with path '${path}' in IndexedDB.`));{let deleteInfoRequest=infoStore.delete(path),deleteModelData=()=>{modelTx=db.transaction(MODEL_STORE_NAME,"readwrite");let deleteModelRequest=modelTx.objectStore(MODEL_STORE_NAME).delete(path);deleteModelRequest.onsuccess=()=>resolve(getInfoRequest.result.modelArtifactsInfo),deleteModelRequest.onerror=error=>reject(getInfoRequest.error)};deleteInfoRequest.onsuccess=deleteModelData,deleteInfoRequest.onerror=error=>(deleteModelData(),db.close(),reject(getInfoRequest.error))}},getInfoRequest.onerror=error=>(db.close(),reject(getInfoRequest.error)),infoTx.oncomplete=()=>{modelTx==null?db.close():modelTx.oncomplete=()=>db.close()}},openRequest.onerror=error=>reject(openRequest.error)})}},PATH_SEPARATOR="/",PATH_PREFIX="tensorflowjs_models",INFO_SUFFIX="info",MODEL_TOPOLOGY_SUFFIX="model_topology",WEIGHT_SPECS_SUFFIX="weight_specs",WEIGHT_DATA_SUFFIX="weight_data",MODEL_METADATA_SUFFIX="model_metadata";function getModelKeys(path){return{info:[PATH_PREFIX,path,INFO_SUFFIX].join(PATH_SEPARATOR),topology:[PATH_PREFIX,path,MODEL_TOPOLOGY_SUFFIX].join(PATH_SEPARATOR),weightSpecs:[PATH_PREFIX,path,WEIGHT_SPECS_SUFFIX].join(PATH_SEPARATOR),weightData:[PATH_PREFIX,path,WEIGHT_DATA_SUFFIX].join(PATH_SEPARATOR),modelMetadata:[PATH_PREFIX,path,MODEL_METADATA_SUFFIX].join(PATH_SEPARATOR)}}function getModelPathFromKey(key){let items=key.split(PATH_SEPARATOR);if(items.length<3)throw new Error(`Invalid key format: ${key}`);return items.slice(1,items.length-1).join(PATH_SEPARATOR)}function maybeStripScheme2(key){return key.startsWith(BrowserLocalStorage.URL_SCHEME)?key.slice(BrowserLocalStorage.URL_SCHEME.length):key}var BrowserLocalStorage=class{constructor(modelPath){if(!env().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,modelPath==null||!modelPath)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=modelPath,this.keys=getModelKeys(this.modelPath)}async save(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");{let topology=JSON.stringify(modelArtifacts.modelTopology),weightSpecs=JSON.stringify(modelArtifacts.weightSpecs),modelArtifactsInfo=getModelArtifactsInfoForJSON(modelArtifacts);try{this.LS.setItem(this.keys.info,JSON.stringify(modelArtifactsInfo)),this.LS.setItem(this.keys.topology,topology),this.LS.setItem(this.keys.weightSpecs,weightSpecs),this.LS.setItem(this.keys.weightData,arrayBufferToBase64String(modelArtifacts.weightData));let result={format:modelArtifacts.format,generatedBy:modelArtifacts.generatedBy,convertedBy:modelArtifacts.convertedBy};return modelArtifacts.signature!=null&&(result.signature=modelArtifacts.signature),modelArtifacts.userDefinedMetadata!=null&&(result.userDefinedMetadata=modelArtifacts.userDefinedMetadata),modelArtifacts.modelInitializer!=null&&(result.modelInitializer=modelArtifacts.modelInitializer),this.LS.setItem(this.keys.modelMetadata,JSON.stringify(result)),{modelArtifactsInfo}}catch(err){throw this.LS.removeItem(this.keys.info),this.LS.removeItem(this.keys.topology),this.LS.removeItem(this.keys.weightSpecs),this.LS.removeItem(this.keys.weightData),this.LS.removeItem(this.keys.modelMetadata),new Error(`Failed to save model '${this.modelPath}' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes=${modelArtifactsInfo.modelTopologyBytes}, weightSpecsBytes=${modelArtifactsInfo.weightSpecsBytes}, weightDataBytes=${modelArtifactsInfo.weightDataBytes}.`)}}}async load(){let info=JSON.parse(this.LS.getItem(this.keys.info));if(info==null)throw new Error(`In local storage, there is no model with name '${this.modelPath}'`);if(info.modelTopologyType!=="JSON")throw new Error("BrowserLocalStorage does not support loading non-JSON model topology yet.");let out={},topology=JSON.parse(this.LS.getItem(this.keys.topology));if(topology==null)throw new Error(`In local storage, the topology of model '${this.modelPath}' is missing.`);out.modelTopology=topology;let weightSpecs=JSON.parse(this.LS.getItem(this.keys.weightSpecs));if(weightSpecs==null)throw new Error(`In local storage, the weight specs of model '${this.modelPath}' are missing.`);out.weightSpecs=weightSpecs;let metadataString=this.LS.getItem(this.keys.modelMetadata);if(metadataString!=null){let metadata=JSON.parse(metadataString);out.format=metadata.format,out.generatedBy=metadata.generatedBy,out.convertedBy=metadata.convertedBy,metadata.signature!=null&&(out.signature=metadata.signature),metadata.userDefinedMetadata!=null&&(out.userDefinedMetadata=metadata.userDefinedMetadata),metadata.modelInitializer!=null&&(out.modelInitializer=metadata.modelInitializer)}let weightDataBase64=this.LS.getItem(this.keys.weightData);if(weightDataBase64==null)throw new Error(`In local storage, the binary weight values of model '${this.modelPath}' are missing.`);return out.weightData=base64StringToArrayBuffer(weightDataBase64),out}};BrowserLocalStorage.URL_SCHEME="localstorage://";var localStorageRouter=url=>env().getBool("IS_BROWSER")&&!Array.isArray(url)&&url.startsWith(BrowserLocalStorage.URL_SCHEME)?browserLocalStorage(url.slice(BrowserLocalStorage.URL_SCHEME.length)):null;IORouterRegistry.registerSaveRouter(localStorageRouter);IORouterRegistry.registerLoadRouter(localStorageRouter);function browserLocalStorage(modelPath){return new BrowserLocalStorage(modelPath)}var BrowserLocalStorageManager=class{constructor(){assert(env().getBool("IS_BROWSER"),()=>"Current environment is not a web browser"),assert(typeof window=="undefined"||typeof window.localStorage!="undefined",()=>"Current browser does not appear to support localStorage"),this.LS=window.localStorage}async listModels(){let out={},prefix=PATH_PREFIX+PATH_SEPARATOR,suffix=PATH_SEPARATOR+INFO_SUFFIX;for(let i=0;i"scheme must not be undefined or null."),scheme.endsWith(URL_SCHEME_SUFFIX)&&(scheme=scheme.slice(0,scheme.indexOf(URL_SCHEME_SUFFIX))),assert(scheme.length>0,()=>"scheme must not be an empty string.");let registry=ModelStoreManagerRegistry.getInstance();assert(registry.managers[scheme]==null,()=>`A model store manager is already registered for scheme '${scheme}'.`),registry.managers[scheme]=manager}static getManager(scheme){let manager=this.getInstance().managers[scheme];if(manager==null)throw new Error(`Cannot find model manager for scheme '${scheme}'`);return manager}static getSchemes(){return Object.keys(this.getInstance().managers)}};function parseURL(url){if(url.indexOf(URL_SCHEME_SUFFIX)===-1)throw new Error(`The url string provided does not contain a scheme. Supported schemes are: ${ModelStoreManagerRegistry.getSchemes().join(",")}`);return{scheme:url.split(URL_SCHEME_SUFFIX)[0],path:url.split(URL_SCHEME_SUFFIX)[1]}}async function cloneModelInternal(sourceURL,destURL,deleteSource=!1){assert(sourceURL!==destURL,()=>`Old path and new path are the same: '${sourceURL}'`);let loadHandlers=IORouterRegistry.getLoadHandlers(sourceURL);assert(loadHandlers.length>0,()=>`Copying failed because no load handler is found for source URL ${sourceURL}.`),assert(loadHandlers.length<2,()=>`Copying failed because more than one (${loadHandlers.length}) load handlers for source URL ${sourceURL}.`);let loadHandler=loadHandlers[0],saveHandlers=IORouterRegistry.getSaveHandlers(destURL);assert(saveHandlers.length>0,()=>`Copying failed because no save handler is found for destination URL ${destURL}.`),assert(saveHandlers.length<2,()=>`Copying failed because more than one (${loadHandlers.length}) save handlers for destination URL ${destURL}.`);let saveHandler=saveHandlers[0],sourceScheme=parseURL(sourceURL).scheme,sourcePath=parseURL(sourceURL).path,sameMedium=sourceScheme===parseURL(sourceURL).scheme,modelArtifacts=await loadHandler.load();deleteSource&&sameMedium&&await ModelStoreManagerRegistry.getManager(sourceScheme).removeModel(sourcePath);let saveResult=await saveHandler.save(modelArtifacts);return deleteSource&&!sameMedium&&await ModelStoreManagerRegistry.getManager(sourceScheme).removeModel(sourcePath),saveResult.modelArtifactsInfo}async function listModels(){let schemes=ModelStoreManagerRegistry.getSchemes(),out={};for(let scheme of schemes){let schemeOut=await ModelStoreManagerRegistry.getManager(scheme).listModels();for(let path in schemeOut){let url=scheme+URL_SCHEME_SUFFIX+path;out[url]=schemeOut[path]}}return out}async function removeModel(url){let schemeAndPath=parseURL(url);return ModelStoreManagerRegistry.getManager(schemeAndPath.scheme).removeModel(schemeAndPath.path)}async function copyModel(sourceURL,destURL){return cloneModelInternal(sourceURL,destURL,!1)}async function moveModel(sourceURL,destURL){return cloneModelInternal(sourceURL,destURL,!0)}var PlatformBrowser=class{fetch(path,init2){return fetch(path,init2)}now(){return performance.now()}encode(text,encoding){if(encoding!=="utf-8"&&encoding!=="utf8")throw new Error(`Browser's encoder only supports utf-8, but got ${encoding}`);return this.textEncoder==null&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(text)}decode(bytes,encoding){return new TextDecoder(encoding).decode(bytes)}};if(env().get("IS_BROWSER")){env().setPlatform("browser",new PlatformBrowser);try{ModelStoreManagerRegistry.registerManager(BrowserLocalStorage.URL_SCHEME,new BrowserLocalStorageManager)}catch(err){}try{ModelStoreManagerRegistry.registerManager(BrowserIndexedDB.URL_SCHEME,new BrowserIndexedDBManager)}catch(err){}}var getNodeFetch={importFetch:()=>require_browser()},systemFetch,PlatformNode=class{constructor(){this.util=require("util"),this.textEncoder=new this.util.TextEncoder}fetch(path,requestInits){return env().global.fetch!=null?env().global.fetch(path,requestInits):(systemFetch==null&&(systemFetch=getNodeFetch.importFetch()),systemFetch(path,requestInits))}now(){let time2=process.hrtime();return time2[0]*1e3+time2[1]/1e6}encode(text,encoding){if(encoding!=="utf-8"&&encoding!=="utf8")throw new Error(`Node built-in encoder only supports utf-8, but got ${encoding}`);return this.textEncoder.encode(text)}decode(bytes,encoding){return bytes.length===0?"":new this.util.TextDecoder(encoding).decode(bytes)}};env().get("IS_NODE")&&env().setPlatform("node",new PlatformNode);function buffer(shape,dtype="float32",values){return dtype=dtype||"float32",assertNonNegativeIntegerDimensions(shape),new TensorBuffer(shape,dtype,values)}function cast_(x,dtype){let $x=convertToTensor(x,"x","cast");if(!isValidDtype(dtype))throw new Error(`Failed to cast to unknown dtype ${dtype}`);if(dtype==="string"&&$x.dtype!=="string"||dtype!=="string"&&$x.dtype==="string")throw new Error("Only strings can be casted to strings");let inputs={x:$x},attrs={dtype};return ENGINE.runKernel(Cast,inputs,attrs)}var cast=op({cast_});function clone_(x){let inputs={x:convertToTensor(x,"x","clone","string_or_numeric")};return ENGINE.runKernel(Identity,inputs)}var clone=op({clone_});function print2(x,verbose=!1){console.log(x.toString(verbose))}getOrMakeEngine();var opHandler2={buffer,cast,clone,print:print2};setOpHandler(opHandler2);var io_exports={};__export2(io_exports,{browserFiles:()=>browserFiles,browserHTTPRequest:()=>browserHTTPRequest,concatenateArrayBuffers:()=>concatenateArrayBuffers,copyModel:()=>copyModel,decodeWeights:()=>decodeWeights,encodeWeights:()=>encodeWeights,fromMemory:()=>fromMemory,getLoadHandlers:()=>getLoadHandlers,getModelArtifactsInfoForJSON:()=>getModelArtifactsInfoForJSON,getSaveHandlers:()=>getSaveHandlers,http:()=>http,isHTTPScheme:()=>isHTTPScheme,listModels:()=>listModels,loadWeights:()=>loadWeights,moveModel:()=>moveModel,registerLoadRouter:()=>registerLoadRouter,registerSaveRouter:()=>registerSaveRouter,removeModel:()=>removeModel,weightsLoaderFactory:()=>weightsLoaderFactory,withSaveHandler:()=>withSaveHandler});var DEFAULT_FILE_NAME_PREFIX="model",DEFAULT_JSON_EXTENSION_NAME=".json",DEFAULT_WEIGHT_DATA_EXTENSION_NAME=".weights.bin";function defer(f){return new Promise(resolve=>setTimeout(resolve)).then(f)}var BrowserDownloads=class{constructor(fileNamePrefix){if(!env().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");fileNamePrefix.startsWith(BrowserDownloads.URL_SCHEME)&&(fileNamePrefix=fileNamePrefix.slice(BrowserDownloads.URL_SCHEME.length)),(fileNamePrefix==null||fileNamePrefix.length===0)&&(fileNamePrefix=DEFAULT_FILE_NAME_PREFIX),this.modelTopologyFileName=fileNamePrefix+DEFAULT_JSON_EXTENSION_NAME,this.weightDataFileName=fileNamePrefix+DEFAULT_WEIGHT_DATA_EXTENSION_NAME}async save(modelArtifacts){if(typeof document=="undefined")throw new Error("Browser downloads are not supported in this environment since `document` is not present");let weightsURL=window.URL.createObjectURL(new Blob([modelArtifacts.weightData],{type:"application/octet-stream"}));if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet.");{let weightsManifest=[{paths:["./"+this.weightDataFileName],weights:modelArtifacts.weightSpecs}],modelTopologyAndWeightManifest={modelTopology:modelArtifacts.modelTopology,format:modelArtifacts.format,generatedBy:modelArtifacts.generatedBy,convertedBy:modelArtifacts.convertedBy,weightsManifest};modelArtifacts.signature!=null&&(modelTopologyAndWeightManifest.signature=modelArtifacts.signature),modelArtifacts.userDefinedMetadata!=null&&(modelTopologyAndWeightManifest.userDefinedMetadata=modelArtifacts.userDefinedMetadata),modelArtifacts.modelInitializer!=null&&(modelTopologyAndWeightManifest.modelInitializer=modelArtifacts.modelInitializer);let modelTopologyAndWeightManifestURL=window.URL.createObjectURL(new Blob([JSON.stringify(modelTopologyAndWeightManifest)],{type:"application/json"})),jsonAnchor=this.jsonAnchor==null?document.createElement("a"):this.jsonAnchor;if(jsonAnchor.download=this.modelTopologyFileName,jsonAnchor.href=modelTopologyAndWeightManifestURL,await defer(()=>jsonAnchor.dispatchEvent(new MouseEvent("click"))),modelArtifacts.weightData!=null){let weightDataAnchor=this.weightDataAnchor==null?document.createElement("a"):this.weightDataAnchor;weightDataAnchor.download=this.weightDataFileName,weightDataAnchor.href=weightsURL,await defer(()=>weightDataAnchor.dispatchEvent(new MouseEvent("click")))}return{modelArtifactsInfo:getModelArtifactsInfoForJSON(modelArtifacts)}}}};BrowserDownloads.URL_SCHEME="downloads://";var BrowserFiles=class{constructor(files){if(files==null||files.length<1)throw new Error(`When calling browserFiles, at least 1 file is required, but received ${files}`);this.files=files}async load(){let jsonFile=this.files[0],weightFiles=this.files.slice(1);return new Promise((resolve,reject)=>{let jsonReader=new FileReader;jsonReader.onload=event=>{let modelJSON=JSON.parse(event.target.result),modelTopology=modelJSON.modelTopology;if(modelTopology==null){reject(new Error(`modelTopology field is missing from file ${jsonFile.name}`));return}weightFiles.length===0&&resolve({modelTopology});let weightsManifest=modelJSON.weightsManifest;if(weightsManifest==null){reject(new Error(`weightManifest field is missing from file ${jsonFile.name}`));return}let pathToFile;try{pathToFile=this.checkManifestAndWeightFiles(weightsManifest,weightFiles)}catch(err){reject(err);return}let weightSpecs=[],paths=[],perFileBuffers=[];weightsManifest.forEach(weightsGroup=>{weightsGroup.paths.forEach(path=>{paths.push(path),perFileBuffers.push(null)}),weightSpecs.push(...weightsGroup.weights)}),weightsManifest.forEach(weightsGroup=>{weightsGroup.paths.forEach(path=>{let weightFileReader=new FileReader;weightFileReader.onload=event2=>{let weightData=event2.target.result,index=paths.indexOf(path);if(perFileBuffers[index]=weightData,perFileBuffers.indexOf(null)===-1){let result={modelTopology,weightSpecs,weightData:concatenateArrayBuffers(perFileBuffers),format:modelJSON.format,generatedBy:modelJSON.generatedBy,convertedBy:modelJSON.convertedBy};modelJSON.signature!=null&&(result.signature=modelJSON.signature),modelJSON.userDefinedMetadata!=null&&(result.userDefinedMetadata=modelJSON.userDefinedMetadata),modelJSON.modelInitializer!=null&&(result.modelInitializer=modelJSON.modelInitializer),resolve(result)}},weightFileReader.onerror=error=>reject(`Failed to weights data from file of path '${path}'.`),weightFileReader.readAsArrayBuffer(pathToFile[path])})})},jsonReader.onerror=error=>reject(`Failed to read model topology and weights manifest JSON from file '${jsonFile.name}'. BrowserFiles supports loading Keras-style tf.Model artifacts only.`),jsonReader.readAsText(jsonFile)})}checkManifestAndWeightFiles(manifest,files){let basenames=[],fileNames=files.map(file=>basename(file.name)),pathToFile={};for(let group of manifest)group.paths.forEach(path=>{let pathBasename=basename(path);if(basenames.indexOf(pathBasename)!==-1)throw new Error(`Duplicate file basename found in weights manifest: '${pathBasename}'`);if(basenames.push(pathBasename),fileNames.indexOf(pathBasename)===-1)throw new Error(`Weight file with basename '${pathBasename}' is not provided.`);pathToFile[path]=files[fileNames.indexOf(pathBasename)]});if(basenames.length!==files.length)throw new Error(`Mismatch in the number of files in weights manifest (${basenames.length}) and the number of weight files provided (${files.length}).`);return pathToFile}},browserDownloadsRouter=url=>env().getBool("IS_BROWSER")&&!Array.isArray(url)&&url.startsWith(BrowserDownloads.URL_SCHEME)?browserDownloads(url.slice(BrowserDownloads.URL_SCHEME.length)):null;IORouterRegistry.registerSaveRouter(browserDownloadsRouter);function browserDownloads(fileNamePrefix="model"){return new BrowserDownloads(fileNamePrefix)}function browserFiles(files){return new BrowserFiles(files)}function monitorPromisesProgress(promises,onProgress,startFraction,endFraction){checkPromises(promises),startFraction=startFraction==null?0:startFraction,endFraction=endFraction==null?1:endFraction,checkFraction(startFraction,endFraction);let resolvedPromise=0,registerMonitor=promise=>(promise.then(value=>{let fraction=startFraction+ ++resolvedPromise/promises.length*(endFraction-startFraction);return onProgress(fraction),value}),promise);function checkPromises(promises2){assert(promises2!=null&&Array.isArray(promises2)&&promises2.length>0,()=>"promises must be a none empty array")}function checkFraction(startFraction2,endFraction2){assert(startFraction2>=0&&startFraction2<=1,()=>`Progress fraction must be in range [0, 1], but got startFraction ${startFraction2}`),assert(endFraction2>=0&&endFraction2<=1,()=>`Progress fraction must be in range [0, 1], but got endFraction ${endFraction2}`),assert(endFraction2>=startFraction2,()=>`startFraction must be no more than endFraction, but got startFraction ${startFraction2} and endFraction ${endFraction2}`)}return Promise.all(promises.map(registerMonitor))}async function loadWeightsAsArrayBuffer(fetchURLs,loadOptions){loadOptions==null&&(loadOptions={});let fetchFunc=loadOptions.fetchFunc==null?env().platform.fetch:loadOptions.fetchFunc,requests=fetchURLs.map(fetchURL=>fetchFunc(fetchURL,loadOptions.requestInit,{isBinary:!0})),fetchStartFraction=0,fetchEndFraction=.5,bufferPromises=(loadOptions.onProgress==null?await Promise.all(requests):await monitorPromisesProgress(requests,loadOptions.onProgress,fetchStartFraction,fetchEndFraction)).map(response=>response.arrayBuffer()),bufferStartFraction=.5,bufferEndFraction=1;return loadOptions.onProgress==null?await Promise.all(bufferPromises):await monitorPromisesProgress(bufferPromises,loadOptions.onProgress,bufferStartFraction,bufferEndFraction)}async function loadWeights(manifest,filePathPrefix="",weightNames,requestInit){return weightsLoaderFactory(fetchUrls=>loadWeightsAsArrayBuffer(fetchUrls,{requestInit}))(manifest,filePathPrefix,weightNames)}function weightsLoaderFactory(fetchWeightsFunction){return async(manifest,filePathPrefix="",weightNames)=>{let groupIndicesToFetchMap=manifest.map(()=>!1),groupWeightsToFetch={},weightsFound=weightNames!=null?weightNames.map(()=>!1):[],allManifestWeightNames=[];if(manifest.forEach((manifestGroupConfig,groupIndex)=>{let groupOffset=0;manifestGroupConfig.weights.forEach(weightsEntry=>{let rawDtype="quantization"in weightsEntry?weightsEntry.quantization.dtype:weightsEntry.dtype,weightsBytes=DTYPE_VALUE_SIZE_MAP[rawDtype]*sizeFromShape(weightsEntry.shape),enqueueWeightsForFetchingFn=()=>{groupIndicesToFetchMap[groupIndex]=!0,groupWeightsToFetch[groupIndex]==null&&(groupWeightsToFetch[groupIndex]=[]),groupWeightsToFetch[groupIndex].push({manifestEntry:weightsEntry,groupOffset,sizeBytes:weightsBytes})};weightNames!=null?weightNames.forEach((weightName,weightIndex)=>{weightName===weightsEntry.name&&(enqueueWeightsForFetchingFn(),weightsFound[weightIndex]=!0)}):enqueueWeightsForFetchingFn(),allManifestWeightNames.push(weightsEntry.name),groupOffset+=weightsBytes})}),!weightsFound.every(found=>found)){let weightsNotFound=weightNames.filter((_,i)=>!weightsFound[i]);throw new Error(`Could not find weights in manifest with names: ${weightsNotFound.join(", ")}. -Manifest JSON has weights with names: ${allManifestWeightNames.join(", ")}.`)}let groupIndicesToFetch=groupIndicesToFetchMap.reduce((accumulator,shouldFetch,i)=>(shouldFetch&&accumulator.push(i),accumulator),[]),fetchUrls=[];groupIndicesToFetch.forEach(i=>{manifest[i].paths.forEach(filepath=>{let fetchUrl=filePathPrefix+(filePathPrefix.endsWith("/")?"":"/")+filepath;fetchUrls.push(fetchUrl)})});let buffers=await fetchWeightsFunction(fetchUrls),weightsTensorMap={},bufferIndexOffset=0;return groupIndicesToFetch.forEach(i=>{let numBuffers=manifest[i].paths.length,groupBytes=0;for(let i2=0;i2{let byteBuffer=groupBuffer.slice(weightsEntry.groupOffset,weightsEntry.groupOffset+weightsEntry.sizeBytes),nameToTensorMap=decodeWeights(byteBuffer,[weightsEntry.manifestEntry]);for(let name in nameToTensorMap)weightsTensorMap[name]=nameToTensorMap[name]}),bufferIndexOffset+=numBuffers}),weightsTensorMap}}var OCTET_STREAM_MIME_TYPE="application/octet-stream",JSON_TYPE="application/json",HTTPRequest=class{constructor(path,loadOptions){if(this.DEFAULT_METHOD="POST",loadOptions==null&&(loadOptions={}),this.weightPathPrefix=loadOptions.weightPathPrefix,this.onProgress=loadOptions.onProgress,this.weightUrlConverter=loadOptions.weightUrlConverter,loadOptions.fetchFunc!=null?(assert(typeof loadOptions.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=loadOptions.fetchFunc):this.fetch=env().platform.fetch,assert(path!=null&&path.length>0,()=>"URL path for http must not be null, undefined or empty."),Array.isArray(path)&&assert(path.length===2,()=>`URL paths for http must have a length of 2, (actual length is ${path.length}).`),this.path=path,loadOptions.requestInit!=null&&loadOptions.requestInit.body!=null)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=loadOptions.requestInit||{}}async save(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");let init2=Object.assign({method:this.DEFAULT_METHOD},this.requestInit);init2.body=new FormData;let weightsManifest=[{paths:["./model.weights.bin"],weights:modelArtifacts.weightSpecs}],modelTopologyAndWeightManifest={modelTopology:modelArtifacts.modelTopology,format:modelArtifacts.format,generatedBy:modelArtifacts.generatedBy,convertedBy:modelArtifacts.convertedBy,weightsManifest};modelArtifacts.signature!=null&&(modelTopologyAndWeightManifest.signature=modelArtifacts.signature),modelArtifacts.userDefinedMetadata!=null&&(modelTopologyAndWeightManifest.userDefinedMetadata=modelArtifacts.userDefinedMetadata),modelArtifacts.modelInitializer!=null&&(modelTopologyAndWeightManifest.modelInitializer=modelArtifacts.modelInitializer),init2.body.append("model.json",new Blob([JSON.stringify(modelTopologyAndWeightManifest)],{type:JSON_TYPE}),"model.json"),modelArtifacts.weightData!=null&&init2.body.append("model.weights.bin",new Blob([modelArtifacts.weightData],{type:OCTET_STREAM_MIME_TYPE}),"model.weights.bin");let response=await this.fetch(this.path,init2);if(response.ok)return{modelArtifactsInfo:getModelArtifactsInfoForJSON(modelArtifacts),responses:[response]};throw new Error(`BrowserHTTPRequest.save() failed due to HTTP response status ${response.status}.`)}async load(){let modelConfigRequest=await this.fetch(this.path,this.requestInit);if(!modelConfigRequest.ok)throw new Error(`Request to ${this.path} failed with status code ${modelConfigRequest.status}. Please verify this URL points to the model JSON of the model to load.`);let modelConfig;try{modelConfig=await modelConfigRequest.json()}catch(e){let message=`Failed to parse model JSON of response from ${this.path}.`;throw this.path.endsWith(".pb")?message+=" 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.":message+=" Please make sure the server is serving valid JSON for this request.",new Error(message)}let modelTopology=modelConfig.modelTopology,weightsManifest=modelConfig.weightsManifest,generatedBy=modelConfig.generatedBy,convertedBy=modelConfig.convertedBy,format=modelConfig.format,signature=modelConfig.signature,userDefinedMetadata=modelConfig.userDefinedMetadata;if(modelTopology==null&&weightsManifest==null)throw new Error(`The JSON from HTTP path ${this.path} contains neither model topology or manifest for weights.`);let weightSpecs,weightData;weightsManifest!=null&&([weightSpecs,weightData]=await this.loadWeights(weightsManifest));let artifacts={modelTopology,weightSpecs,weightData,generatedBy,convertedBy,format};signature!=null&&(artifacts.signature=signature),userDefinedMetadata!=null&&(artifacts.userDefinedMetadata=userDefinedMetadata);let initializer=modelConfig.modelInitializer;return initializer&&(artifacts.modelInitializer=initializer),artifacts}async loadWeights(weightsManifest){let weightPath=Array.isArray(this.path)?this.path[1]:this.path,[prefix,suffix]=parseUrl(weightPath),pathPrefix=this.weightPathPrefix||prefix,weightSpecs=[];for(let entry of weightsManifest)weightSpecs.push(...entry.weights);let fetchURLs=[],urlPromises=[];for(let weightsGroup of weightsManifest)for(let path of weightsGroup.paths)this.weightUrlConverter!=null?urlPromises.push(this.weightUrlConverter(path)):fetchURLs.push(pathPrefix+path+suffix);this.weightUrlConverter&&fetchURLs.push(...await Promise.all(urlPromises));let buffers=await loadWeightsAsArrayBuffer(fetchURLs,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress});return[weightSpecs,concatenateArrayBuffers(buffers)]}};HTTPRequest.URL_SCHEME_REGEX=/^https?:\/\//;function parseUrl(url){let lastSlash=url.lastIndexOf("/"),lastSearchParam=url.lastIndexOf("?"),prefix=url.substring(0,lastSlash),suffix=lastSearchParam>lastSlash?url.substring(lastSearchParam):"";return[prefix+"/",suffix]}function isHTTPScheme(url){return url.match(HTTPRequest.URL_SCHEME_REGEX)!=null}var httpRouter=(url,loadOptions)=>{if(typeof fetch=="undefined"&&(loadOptions==null||loadOptions.fetchFunc==null))return null;{let isHTTP=!0;if(Array.isArray(url)?isHTTP=url.every(urlItem=>isHTTPScheme(urlItem)):isHTTP=isHTTPScheme(url),isHTTP)return http(url,loadOptions)}return null};IORouterRegistry.registerSaveRouter(httpRouter);IORouterRegistry.registerLoadRouter(httpRouter);function http(path,loadOptions){return new HTTPRequest(path,loadOptions)}function browserHTTPRequest(path,loadOptions){return http(path,loadOptions)}var PassthroughLoader=class{constructor(modelArtifacts){this.modelArtifacts=modelArtifacts}async load(){return this.modelArtifacts}},PassthroughSaver=class{constructor(saveHandler){this.saveHandler=saveHandler}async save(modelArtifacts){return this.saveHandler(modelArtifacts)}};function fromMemory(modelArtifacts,weightSpecs,weightData,trainingConfig){return arguments.length===1?modelArtifacts.modelTopology!=null||modelArtifacts.weightSpecs!=null?new PassthroughLoader(modelArtifacts):(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 PassthroughLoader({modelTopology:modelArtifacts})):(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 PassthroughLoader({modelTopology:modelArtifacts,weightSpecs,weightData,trainingConfig}))}function withSaveHandler(saveHandler){return new PassthroughSaver(saveHandler)}var math_exports={};__export2(math_exports,{confusionMatrix:()=>confusionMatrix});function matMul_(a,b,transposeA=!1,transposeB=!1){let $a=convertToTensor(a,"a","matMul"),$b=convertToTensor(b,"b","matMul");[$a,$b]=makeTypesMatch($a,$b);let inputs={a:$a,b:$b},attrs={transposeA,transposeB};return ENGINE.runKernel(BatchMatMul,inputs,attrs)}var matMul=op({matMul_});function oneHot_(indices,depth,onValue=1,offValue=0){if(depth<2)throw new Error(`Error in oneHot: depth must be >=2, but it is ${depth}`);let inputs={indices:convertToTensor(indices,"indices","oneHot","int32")},attrs={depth,onValue,offValue};return ENGINE.runKernel(OneHot,inputs,attrs)}var oneHot=op({oneHot_});function transpose_(x,perm){let $x=convertToTensor(x,"x","transpose");if(perm==null&&(perm=$x.shape.map((s,i)=>i).reverse()),assert($x.rank===perm.length,()=>`Error in transpose: rank of input ${$x.rank} must match length of perm ${perm}.`),perm.forEach(axis=>{assert(axis>=0&&axis<$x.rank,()=>`All entries in 'perm' must be between 0 and ${$x.rank-1} but got ${perm}`)}),$x.rank<=1)return $x.clone();let inputs={x:$x},attrs={perm};return ENGINE.runKernel(Transpose,inputs,attrs)}var transpose=op({transpose_});function confusionMatrix_(labels,predictions,numClasses){let $labels=convertToTensor(labels,"labels","confusionMatrix"),$predictions=convertToTensor(predictions,"predictions","confusionMatrix");assert(numClasses==null||numClasses>0&&Number.isInteger(numClasses),()=>`If provided, numClasses must be a positive integer, but got ${numClasses}`),assert($labels.rank===1,()=>`Expected the rank of labels to be 1, but got ${$labels.rank}`),assert($predictions.rank===1,()=>`Expected the rank of predictions to be 1, but got ${$predictions.rank}`),assert($labels.shape[0]===$predictions.shape[0],()=>`Mismatch in the number of examples: ${$labels.shape[0]} vs. ${$predictions.shape[0]}. Labels and predictions should have the same number of elements.`),assert(numClasses>0&&Number.isInteger(numClasses),()=>`numClasses is required to be a positive integer, but got ${numClasses}`);let oneHotLabels=oneHot(cast($labels,"int32"),numClasses),oneHotPredictions=oneHot(cast($predictions,"int32"),numClasses),oneHotLabelsT=transpose(oneHotLabels),product=matMul(oneHotLabelsT,oneHotPredictions);return cast(product,"int32")}var confusionMatrix=op({confusionMatrix_}),browser_exports={};__export2(browser_exports,{fromPixels:()=>fromPixels,toPixels:()=>toPixels});function tensor3d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==3)throw new Error("tensor3d() requires shape to have three numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==3&&inferredShape.length!==1)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return makeTensor(values,shape,inferredShape,dtype)}var fromPixels2DContext;function fromPixels_(pixels,numChannels=3){if(numChannels>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(pixels==null)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");let isPixelData=!1,isImageData=!1,isVideo=!1,isImage=!1,isCanvasLike=!1,isImageBitmap=!1;if(pixels.data instanceof Uint8Array)isPixelData=!0;else if(typeof ImageData!="undefined"&&pixels instanceof ImageData)isImageData=!0;else if(typeof HTMLVideoElement!="undefined"&&pixels instanceof HTMLVideoElement)isVideo=!0;else if(typeof HTMLImageElement!="undefined"&&pixels instanceof HTMLImageElement)isImage=!0;else if(pixels.getContext!=null)isCanvasLike=!0;else if(typeof ImageBitmap!="undefined"&&pixels instanceof ImageBitmap)isImageBitmap=!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 ${pixels.constructor.name}`);if(isVideo){let HAVE_CURRENT_DATA_READY_STATE=2;if(isVideo&&pixels.readyState element.")}if(getKernel(FromPixels,ENGINE.backendName)!=null){let inputs={pixels},attrs={numChannels};return ENGINE.runKernel(FromPixels,inputs,attrs)}let[width,height]=isVideo?[pixels.videoWidth,pixels.videoHeight]:[pixels.width,pixels.height],vals;isCanvasLike?vals=pixels.getContext("2d").getImageData(0,0,width,height).data:isImageData||isPixelData?vals=pixels.data:(isImage||isVideo||isImageBitmap)&&(fromPixels2DContext==null&&(fromPixels2DContext=document.createElement("canvas").getContext("2d")),fromPixels2DContext.canvas.width=width,fromPixels2DContext.canvas.height=height,fromPixels2DContext.drawImage(pixels,0,0,width,height),vals=fromPixels2DContext.getImageData(0,0,width,height).data);let values;if(numChannels===4)values=new Int32Array(vals);else{let numPixels=width*height;values=new Int32Array(numPixels*numChannels);for(let i=0;i4||depth===2)throw new Error(`toPixels only supports depth of size 1, 3 or 4 but got ${depth}`);if($img.dtype!=="float32"&&$img.dtype!=="int32")throw new Error(`Unsupported type for toPixels: ${$img.dtype}. Please use float32 or int32 tensors.`);let data=await $img.data(),multiplier=$img.dtype==="float32"?255:1,bytes=new Uint8ClampedArray(width*height*4);for(let i=0;i1)throw new Error(`Tensor values for a float32 Tensor must be in the range [0 - 1] but encountered ${value}.`)}else if($img.dtype==="int32"&&(value<0||value>255))throw new Error(`Tensor values for a int32 Tensor must be in the range [0 - 255] but encountered ${value}.`);depth===1?(rgba[0]=value*multiplier,rgba[1]=value*multiplier,rgba[2]=value*multiplier):rgba[d]=value*multiplier}let j=i*4;bytes[j+0]=Math.round(rgba[0]),bytes[j+1]=Math.round(rgba[1]),bytes[j+2]=Math.round(rgba[2]),bytes[j+3]=Math.round(rgba[3])}if(canvas!=null){canvas.width=width,canvas.height=height;let ctx=canvas.getContext("2d"),imageData=new ImageData(bytes,width,height);ctx.putImageData(imageData,0,0)}return $img!==img&&$img.dispose(),bytes}var fromPixels=op({fromPixels_}),gather_nd_util_exports={};__export2(gather_nd_util_exports,{prepareAndValidate:()=>prepareAndValidate});function prepareAndValidate(tensor2,indices){let tensorRank=tensor2.shape.length,indicesRank=indices.shape.length;if(tensorRank<1)throw new Error(`tf.gatherND() expects the input to be rank 1 or higher, but the rank was ${tensorRank}.`);if(indicesRank<1)throw new Error(`tf.gatherND() expects the indices to be rank 1 or higher, but the rank was ${indicesRank}.`);if(indices.dtype!=="int32")throw new Error(`tf.gatherND() expects the indices to be int32 type, but the dtype was ${indices.dtype}.`);if(indices.shape[indicesRank-1]>tensorRank)throw new Error(`index innermost dimension length must be <= tensor rank; saw: ${indices.shape[indicesRank-1]} vs. ${tensorRank}`);if(sizeFromShape(tensor2.shape)===0)throw new Error(`Requested more than 0 entries, but input is empty. Input shape: ${tensor2.shape}.`);let indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],nResult=1;for(let i=0;istride/sliceSize),1].slice(0,sliceRank);return[resultShape,nResult,sliceSize,strides]}var scatter_nd_util_exports={};__export2(scatter_nd_util_exports,{calculateShapes:()=>calculateShapes,validateInput:()=>validateInput,validateUpdateShape:()=>validateUpdateShape});function validateUpdateShape(shape,indices,updates){let sliceDim=indices.rank>1?indices.shape[indices.rank-1]:1,batchDim=indices.rank>1?indices.rank-1:1,shapeError=`Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: ${updates.shape}, indices.shape: ${indices.shape}, shape: ${shape}, sliceDim: ${sliceDim}, and batchDim: ${batchDim}.`;if(updates.rank1?indices.shape[indicesRank-1]:1,totalNd=shape.length,sliceSize=1;for(let i=sliceRank;iassertParamsValid,computeFlatOffset:()=>computeFlatOffset,computeOutShape:()=>computeOutShape,getNormalizedAxes:()=>getNormalizedAxes,isSliceContinous:()=>isSliceContinous,maskToAxes:()=>maskToAxes,parseSliceParams:()=>parseSliceParams,sliceInfo:()=>sliceInfo,startForAxis:()=>startForAxis,startIndicesWithElidedDims:()=>startIndicesWithElidedDims,stopForAxis:()=>stopForAxis,stopIndicesWithElidedDims:()=>stopIndicesWithElidedDims,stridesForAxis:()=>stridesForAxis,stridesWithElidedDims:()=>stridesWithElidedDims});function assertParamsValid(input2,begin,size){let inputRank=input2.shape.length;assert(inputRank===begin.length,()=>`Error in slice${inputRank}D: Length of begin ${begin} must match the rank of the array (${inputRank}).`),assert(inputRank===size.length,()=>`Error in slice${inputRank}D: Length of size ${size} must match the rank of the array (${inputRank}).`);for(let i=0;i`Error in slice${inputRank}D: begin[${i}] + size[${i}] (${begin[i]+size[i]}) would overflow input.shape[${i}] (${input2.shape[i]})`)}function maskToAxes(mask){let axes=[],axis=0;for(;mask>0;)mask&1&&axes.push(axis),mask/=2,axis++;return axes}function computeOutShape(begin,end,strides){let size=[];for(let axis=0;axis0){let fullIndex=ellipsisAxes[0],numElidedAxes=numInterpolatedAxes+1;normalizedBegin=startIndicesWithElidedDims(beginMask,fullIndex,numElidedAxes,begin,inputShape),normalizedEnd=stopIndicesWithElidedDims(endMask,fullIndex,numElidedAxes,end,inputShape),normalizedStrides=stridesWithElidedDims(strides,fullIndex,numElidedAxes,inputShape)}else for(let axis=0;axis-1)newIndices[axis]=0;else{let originalAxis=unnormalizeAxis(ellipsisInsertionIndex,numElidedAxes,axis),originalValue=originalBegin[originalAxis];beginMask&1<-1)newIndices[axis]=Number.MAX_SAFE_INTEGER;else{let originalAxis=unnormalizeAxis(ellipsisInsertionIndex,numElidedAxes,axis),originalValue=originalEnd[originalAxis];endMask&1<0?start=Number.MIN_SAFE_INTEGER:start=Number.MAX_SAFE_INTEGER);let axisSize=inputShape[axis];return start<0&&(start+=axisSize),start=clamp(0,start,axisSize-1),start}function stopForAxis(endMask,stopIndices,strides,inputShape,axis,ellipsisMask){let stop=stopIndices[axis],stride=strides[axis]||1;(endMask&1<0?stop=Number.MAX_SAFE_INTEGER:stop=Number.MIN_SAFE_INTEGER);let axisSize=inputShape[axis];return stop<0&&(stop+=axisSize),stride>0?stop=clamp(0,stop,axisSize):stop=clamp(-1,stop,axisSize-1),stop}function isSliceContinous(shape,begin,size){let firstNonOneAxis=size.length;for(let i=0;i1){firstNonOneAxis=i;break}for(let i=firstNonOneAxis+1;i0||size[i]!==shape[i])return!1;return!0}function computeFlatOffset(begin,strides){let flatOffset=begin.length>0?begin[begin.length-1]:1;for(let i=0;i{assert(d!==-1,()=>"slice() does not support negative begin indexing.")});let size_;return size==null?size_=new Array(xRank).fill(-1):typeof size=="number"?size_=[size,...new Array(xRank-1).fill(-1)]:size.lengthd>=0?d:(assert(d===-1,()=>`Negative size values should be exactly -1 but got ${d} for the slice() size at index ${i}.`),x.shape[i]-begin_[i])),[begin_,size_]}function sliceInfo(xShape,begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask){let $begin=begin.slice(),$end=end.slice(),$strides=strides;strides==null&&($strides=new Array($begin.length));let ellipsisAxes=maskToAxes(ellipsisMask);if(ellipsisAxes.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(ellipsisMask!==0&&newAxisMask!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(ellipsisMask!==0&&shrinkAxisMask!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let numInterpolatedAxes=xShape.length-$begin.length,expandAxes=maskToAxes(newAxisMask),newShape=xShape.slice();expandAxes.forEach(axis=>{$begin[axis]=0,$end[axis]=1,newShape.splice(axis,0,1)});let{begin:normalizedBegin,end:normalizedEnd,strides:normalizedStrides}=getNormalizedAxes(newShape,ellipsisAxes,numInterpolatedAxes,$begin,$end,$strides,beginMask,endMask,ellipsisMask);$begin=normalizedBegin,$end=normalizedEnd,$strides=normalizedStrides;let shrinkAxes=maskToAxes(shrinkAxisMask);shrinkAxes.forEach(axis=>{$end[axis]=$begin[axis]+1,$strides[axis]=1});let size=computeOutShape($begin,$end,$strides),outShape=size.filter((_,axis)=>shrinkAxes.indexOf(axis)===-1);return{nonStrided:$strides.every(v=>v===1),$begin,$end,$strides,size,newShape,outShape}}var serialization_exports={};__export2(serialization_exports,{Serializable:()=>Serializable,SerializationMap:()=>SerializationMap,registerClass:()=>registerClass});var Serializable=class{getClassName(){return this.constructor.className}static fromConfig(cls,config){return new cls(config)}},SerializationMap=class{constructor(){this.classNameMap={}}static getMap(){return SerializationMap.instance==null&&(SerializationMap.instance=new SerializationMap),SerializationMap.instance}static register(cls){SerializationMap.getMap().classNameMap[cls.className]=[cls,cls.fromConfig]}};function registerClass(cls){assert(cls.className!=null,()=>"Class being registered does not have the static className property defined."),assert(typeof cls.className=="string",()=>"className is required to be a string, but got type "+typeof cls.className),assert(cls.className.length>0,()=>"Class being registered has an empty-string as its className, which is disallowed."),SerializationMap.register(cls)}var test_util_exports={};__export2(test_util_exports,{TEST_EPSILON_FLOAT16:()=>TEST_EPSILON_FLOAT16,encodeStrings:()=>encodeStrings,expectArrayBuffersEqual:()=>expectArrayBuffersEqual,expectArraysClose:()=>expectArraysClose,expectArraysEqual:()=>expectArraysEqual,expectNumbersClose:()=>expectNumbersClose,expectPromiseToFail:()=>expectPromiseToFail,expectValuesInRange:()=>expectValuesInRange,testEpsilon:()=>testEpsilon});var TEST_EPSILON_FLOAT32=.001,TEST_EPSILON_FLOAT16=.1;function expectArraysClose(actual,expected,epsilon32){return epsilon32==null&&(epsilon32=testEpsilon()),expectArraysPredicate(actual,expected,(a,b)=>areClose(a,b,epsilon32))}function testEpsilon(){return ENGINE.backend.floatPrecision()===32?TEST_EPSILON_FLOAT32:TEST_EPSILON_FLOAT16}function expectArraysPredicate(actual,expected,predicate){let checkClassType=!0;if((isTypedArray(actual)||isTypedArray(expected))&&(checkClassType=!1),isTypedArray(actual)&&isTypedArray(expected)&&(checkClassType=!0),checkClassType){let aType=actual.constructor.name,bType=expected.constructor.name;if(aType!==bType)throw new Error(`Arrays are of different type. Actual: ${aType}. Expected: ${bType}`)}if(Array.isArray(actual)&&Array.isArray(expected)){let actualShape=inferShape(actual),expectedShape=inferShape(expected);if(!arraysEqual(actualShape,expectedShape))throw new Error(`Arrays have different shapes. Actual: [${actualShape}]. Expected: [${expectedShape}]`)}let actualFlat=isTypedArray(actual)?actual:flatten(actual),expectedFlat=isTypedArray(expected)?expected:flatten(expected);if(actualFlat.length!==expectedFlat.length)throw new Error(`Arrays have different lengths actual: ${actualFlat.length} vs expected: ${expectedFlat.length}. -Actual: ${actualFlat}. -Expected: ${expectedFlat}.`);for(let i=0;idone.fail(),()=>done())}function expectArraysEqual(actual,expected){let exp4=typeof expected=="string"||typeof expected=="number"||typeof expected=="boolean"?[expected]:expected;return isString(actual)||isString(actual[0])||isString(expected)||isString(expected[0])?expectArraysPredicate(actual,exp4,(a,b)=>a==b):expectArraysPredicate(actual,expected,(a,b)=>areClose(a,b,0))}function expectNumbersClose(a,e,epsilon32){if(epsilon32==null&&(epsilon32=testEpsilon()),!areClose(a,e,epsilon32))throw new Error(`Numbers differ: actual === ${a}, expected === ${e}`)}function areClose(a,e,epsilon32){return!isFinite(a)&&!isFinite(e)?!0:!(isNaN(a)||isNaN(e)||Math.abs(a-e)>epsilon32)}function expectValuesInRange(actual,low,high){for(let i=0;ihigh)throw new Error(`Value out of range:${actual[i]} low: ${low}, high: ${high}`)}function expectArrayBuffersEqual(actual,expected){expect(new Float32Array(actual)).toEqual(new Float32Array(expected))}function encodeStrings(a){for(let i=0;itensor2.dispose())}function keep(result){return ENGINE.keep(result)}function time(f){return ENGINE.time(f)}function setBackend(backendName){return ENGINE.setBackend(backendName)}function ready(){return ENGINE.ready()}function getBackend(){return ENGINE.backendName}function removeBackend(name){ENGINE.removeBackend(name)}function findBackend(name){return ENGINE.findBackend(name)}function findBackendFactory(name){return ENGINE.findBackendFactory(name)}function registerBackend(name,factory,priority=1){return ENGINE.registerBackend(name,factory,priority)}function backend(){return ENGINE.backend}function setPlatform(platformName,platform){env().setPlatform(platformName,platform)}function add_(a,b){let $a=convertToTensor(a,"a","add"),$b=convertToTensor(b,"b","add");[$a,$b]=makeTypesMatch($a,$b);let inputs={a:$a,b:$b};return ENGINE.runKernel(Add,inputs)}var add2=op({add_});function floorDiv_(a,b){let $a=convertToTensor(a,"a","floorDiv"),$b=convertToTensor(b,"b","floorDiv");[$a,$b]=makeTypesMatch($a,$b);let inputs={a:$a,b:$b};return ENGINE.runKernel(FloorDiv,inputs)}var floorDiv=op({floorDiv_});function div_(a,b){let $a=convertToTensor(a,"a","div"),$b=convertToTensor(b,"b","div");if([$a,$b]=makeTypesMatch($a,$b),$a.dtype==="int32"&&$b.dtype==="int32")return floorDiv($a,$b);let inputs={a:$a,b:$b},attrs={};return ENGINE.runKernel(RealDiv,inputs,attrs)}var div=op({div_});function mul_(a,b){let $a=convertToTensor(a,"a","mul"),$b=convertToTensor(b,"b","mul");[$a,$b]=makeTypesMatch($a,$b);let inputs={a:$a,b:$b};return ENGINE.runKernel(Multiply,inputs)}var mul=op({mul_});function abs_(x){let $x=convertToTensor(x,"x","abs");if($x.dtype==="complex64"){let inputs={x:$x};return ENGINE.runKernel(ComplexAbs,inputs)}else{let inputs={x:$x};return ENGINE.runKernel(Abs,inputs)}}var abs=op({abs_});function acos_(x){let inputs={x:convertToTensor(x,"x","acos")};return ENGINE.runKernel(Acos,inputs)}var acos=op({acos_});function acosh_(x){let inputs={x:convertToTensor(x,"x","acosh")};return ENGINE.runKernel(Acosh,inputs)}var acosh=op({acosh_});function addN_(tensors){assert(Array.isArray(tensors),()=>"The argument passed to tf.addN() must be a list of tensors"),assert(tensors.length>=1,()=>`Must pass at least one tensor to tf.addN(), but got ${tensors.length}`);let $tensors=tensors.map((t,i)=>convertToTensor(t,`tensors${i}`,"addN")),firstTensor=$tensors[0];$tensors.forEach(t=>{if(t.dtype!==firstTensor.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),$tensors.forEach(t=>{if(!arraysEqual(t.shape,firstTensor.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});let inputs=$tensors;return ENGINE.runKernel(AddN,inputs)}var addN=op({addN_});function all_(x,axis=null,keepDims=!1){let inputs={x:convertToTensor(x,"x","all","bool")},attrs={axis,keepDims};return ENGINE.runKernel(All,inputs,attrs)}var all=op({all_});function any_(x,axis=null,keepDims=!1){let inputs={x:convertToTensor(x,"x","any","bool")},attrs={axis,keepDims};return ENGINE.runKernel(Any,inputs,attrs)}var any=op({any_});function argMax_(x,axis=0){let inputs={x:convertToTensor(x,"x","argMax")},attrs={axis};return ENGINE.runKernel(ArgMax,inputs,attrs)}var argMax=op({argMax_});function argMin_(x,axis=0){let inputs={x:convertToTensor(x,"x","argMin")},attrs={axis};return ENGINE.runKernel(ArgMin,inputs,attrs)}var argMin=op({argMin_});function asin_(x){let inputs={x:convertToTensor(x,"x","asin")};return ENGINE.runKernel(Asin,inputs)}var asin=op({asin_});function asinh_(x){let inputs={x:convertToTensor(x,"x","asinh")};return ENGINE.runKernel(Asinh,inputs)}var asinh=op({asinh_});function atan_(x){let inputs={x:convertToTensor(x,"x","atan")};return ENGINE.runKernel(Atan,inputs)}var atan=op({atan_});function atan2_(a,b){let $a=convertToTensor(a,"a","atan2"),$b=convertToTensor(b,"b","atan2");[$a,$b]=makeTypesMatch($a,$b);let inputs={a:$a,b:$b};return ENGINE.runKernel(Atan2,inputs)}var atan2=op({atan2_});function atanh_(x){let inputs={x:convertToTensor(x,"x","atanh")};return ENGINE.runKernel(Atanh,inputs)}var atanh=op({atanh_});function computeDilation2DInfo(inputShape,filterShape,strides,pad3,dataFormat="NHWC",dilations){let inputChannels=inputShape[3],$filterShape=[...filterShape,inputChannels],$dataFormat=convertConv2DDataFormat(dataFormat);return computeConv2DInfo(inputShape,$filterShape,strides,dilations,pad3,null,null,$dataFormat)}function computePool2DInfo(inShape,filterSize,strides,dilations,pad3,roundingMode,dataFormat="channelsLast"){let[filterHeight,filterWidth]=parseTupleParam(filterSize),filterShape;if(dataFormat==="channelsLast")filterShape=[filterHeight,filterWidth,inShape[3],inShape[3]];else if(dataFormat==="channelsFirst")filterShape=[filterHeight,filterWidth,inShape[1],inShape[1]];else throw new Error(`Unknown dataFormat ${dataFormat}`);return computeConv2DInfo(inShape,filterShape,strides,dilations,pad3,roundingMode,!1,dataFormat)}function computePool3DInfo(inShape,filterSize,strides,dilations,pad3,roundingMode,dataFormat="NDHWC"){let[filterDepth,filterHeight,filterWidth]=parse3TupleParam(filterSize),filterShape,$dataFormat;if(dataFormat==="NDHWC")$dataFormat="channelsLast",filterShape=[filterDepth,filterHeight,filterWidth,inShape[4],inShape[4]];else if(dataFormat==="NCDHW")$dataFormat="channelsFirst",filterShape=[filterDepth,filterHeight,filterWidth,inShape[1],inShape[1]];else throw new Error(`Unknown dataFormat ${dataFormat}`);return computeConv3DInfo(inShape,filterShape,strides,dilations,pad3,!1,$dataFormat,roundingMode)}function computeConv2DInfo(inShape,filterShape,strides,dilations,pad3,roundingMode,depthwise=!1,dataFormat="channelsLast"){let[batchSize,inHeight,inWidth,inChannels]=[-1,-1,-1,-1];if(dataFormat==="channelsLast")[batchSize,inHeight,inWidth,inChannels]=inShape;else if(dataFormat==="channelsFirst")[batchSize,inChannels,inHeight,inWidth]=inShape;else throw new Error(`Unknown dataFormat ${dataFormat}`);let[filterHeight,filterWidth,,filterChannels]=filterShape,[strideHeight,strideWidth]=parseTupleParam(strides),[dilationHeight,dilationWidth]=parseTupleParam(dilations),effectiveFilterHeight=getEffectiveFilterSize(filterHeight,dilationHeight),effectiveFilterWidth=getEffectiveFilterSize(filterWidth,dilationWidth),{padInfo,outHeight,outWidth}=getPadAndOutInfo(pad3,inHeight,inWidth,strideHeight,strideWidth,effectiveFilterHeight,effectiveFilterWidth,roundingMode,dataFormat),outChannels=depthwise?filterChannels*inChannels:filterChannels,outShape;return dataFormat==="channelsFirst"?outShape=[batchSize,outChannels,outHeight,outWidth]:dataFormat==="channelsLast"&&(outShape=[batchSize,outHeight,outWidth,outChannels]),{batchSize,dataFormat,inHeight,inWidth,inChannels,outHeight,outWidth,outChannels,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,effectiveFilterHeight,effectiveFilterWidth,dilationHeight,dilationWidth,inShape,outShape,filterShape}}function computeConv3DInfo(inShape,filterShape,strides,dilations,pad3,depthwise=!1,dataFormat="channelsLast",roundingMode){let[batchSize,inDepth,inHeight,inWidth,inChannels]=[-1,-1,-1,-1,-1];if(dataFormat==="channelsLast")[batchSize,inDepth,inHeight,inWidth,inChannels]=inShape;else if(dataFormat==="channelsFirst")[batchSize,inChannels,inDepth,inHeight,inWidth]=inShape;else throw new Error(`Unknown dataFormat ${dataFormat}`);let[filterDepth,filterHeight,filterWidth,,filterChannels]=filterShape,[strideDepth,strideHeight,strideWidth]=parse3TupleParam(strides),[dilationDepth,dilationHeight,dilationWidth]=parse3TupleParam(dilations),effectiveFilterDepth=getEffectiveFilterSize(filterDepth,dilationDepth),effectiveFilterHeight=getEffectiveFilterSize(filterHeight,dilationHeight),effectiveFilterWidth=getEffectiveFilterSize(filterWidth,dilationWidth),{padInfo,outDepth,outHeight,outWidth}=get3DPadAndOutInfo(pad3,inDepth,inHeight,inWidth,strideDepth,strideHeight,strideWidth,effectiveFilterDepth,effectiveFilterHeight,effectiveFilterWidth,roundingMode),outChannels=depthwise?filterChannels*inChannels:filterChannels,outShape;return dataFormat==="channelsFirst"?outShape=[batchSize,outChannels,outDepth,outHeight,outWidth]:dataFormat==="channelsLast"&&(outShape=[batchSize,outDepth,outHeight,outWidth,outChannels]),{batchSize,dataFormat,inDepth,inHeight,inWidth,inChannels,outDepth,outHeight,outWidth,outChannels,padInfo,strideDepth,strideHeight,strideWidth,filterDepth,filterHeight,filterWidth,effectiveFilterDepth,effectiveFilterHeight,effectiveFilterWidth,dilationDepth,dilationHeight,dilationWidth,inShape,outShape,filterShape}}function computeOutputShape2D(inShape,fieldSize,stride,zeroPad,roundingMode){zeroPad==null&&(zeroPad=computeDefaultPad(inShape,fieldSize,stride));let inputRows=inShape[0],inputCols=inShape[1],outputRows=round((inputRows-fieldSize+2*zeroPad)/stride+1,roundingMode),outputCols=round((inputCols-fieldSize+2*zeroPad)/stride+1,roundingMode);return[outputRows,outputCols]}function computeOutputShape4D(inShape,fieldSize,outChannels,stride,zeroPad,roundingMode){zeroPad==null&&(zeroPad=computeDefaultPad(inShape,fieldSize,stride));let inputDepth=inShape[0],inputRows=inShape[1],inputCols=inShape[2],outputDepths=round((inputDepth-fieldSize+2*zeroPad)/stride+1,roundingMode),outputRows=round((inputRows-fieldSize+2*zeroPad)/stride+1,roundingMode),outputCols=round((inputCols-fieldSize+2*zeroPad)/stride+1,roundingMode);return[outputDepths,outputRows,outputCols,outChannels]}function computeDefaultPad(inputShape,fieldSize,stride,dilation=1){let effectiveFieldSize=getEffectiveFilterSize(fieldSize,dilation);return Math.floor((inputShape[0]*(stride-1)-stride+effectiveFieldSize)/2)}function parseTupleParam(param){return typeof param=="number"?[param,param,param]:param.length===2?[param[0],param[1],1]:param}function parse3TupleParam(param){return typeof param=="number"?[param,param,param]:param}function getEffectiveFilterSize(filterSize,dilation){return dilation<=1?filterSize:filterSize+(filterSize-1)*(dilation-1)}function getPadAndOutInfo(pad3,inHeight,inWidth,strideHeight,strideWidth,filterHeight,filterWidth,roundingMode,dataFormat){let padInfo,outHeight,outWidth;if(typeof pad3=="number"){padInfo={top:pad3,bottom:pad3,left:pad3,right:pad3,type:pad3===0?"VALID":"NUMBER"};let outShape=computeOutputShape2D([inHeight,inWidth],filterHeight,strideHeight,pad3,roundingMode);outHeight=outShape[0],outWidth=outShape[1]}else if(pad3==="same"){outHeight=Math.ceil(inHeight/strideHeight),outWidth=Math.ceil(inWidth/strideWidth);let padAlongHeight=Math.max(0,(outHeight-1)*strideHeight+filterHeight-inHeight),padAlongWidth=Math.max(0,(outWidth-1)*strideWidth+filterWidth-inWidth),top=Math.floor(padAlongHeight/2),bottom=padAlongHeight-top,left=Math.floor(padAlongWidth/2),right=padAlongWidth-left;padInfo={top,bottom,left,right,type:"SAME"}}else if(pad3==="valid")padInfo={top:0,bottom:0,left:0,right:0,type:"VALID"},outHeight=Math.ceil((inHeight-filterHeight+1)/strideHeight),outWidth=Math.ceil((inWidth-filterWidth+1)/strideWidth);else if(typeof pad3=="object"){let top=dataFormat==="channelsLast"?pad3[1][0]:pad3[2][0],bottom=dataFormat==="channelsLast"?pad3[1][1]:pad3[2][1],left=dataFormat==="channelsLast"?pad3[2][0]:pad3[3][0],right=dataFormat==="channelsLast"?pad3[2][1]:pad3[3][1];padInfo={top,bottom,left,right,type:top===0&&bottom===0&&left===0&&right===0?"VALID":"EXPLICIT"},outHeight=round((inHeight-filterHeight+top+bottom)/strideHeight+1,roundingMode),outWidth=round((inWidth-filterWidth+left+right)/strideWidth+1,roundingMode)}else throw Error(`Unknown padding parameter: ${pad3}`);return{padInfo,outHeight,outWidth}}function get3DPadAndOutInfo(pad3,inDepth,inHeight,inWidth,strideDepth,strideHeight,strideWidth,filterDepth,filterHeight,filterWidth,roundingMode){let padInfo,outDepth,outHeight,outWidth;if(typeof pad3=="number"){padInfo={top:pad3,bottom:pad3,left:pad3,right:pad3,front:pad3,back:pad3,type:pad3===0?"VALID":"NUMBER"};let outShape=computeOutputShape4D([inDepth,inHeight,inWidth,1],filterDepth,1,strideDepth,pad3,roundingMode);outDepth=outShape[0],outHeight=outShape[1],outWidth=outShape[2]}else if(pad3==="same"){outDepth=Math.ceil(inDepth/strideDepth),outHeight=Math.ceil(inHeight/strideHeight),outWidth=Math.ceil(inWidth/strideWidth);let padAlongDepth=(outDepth-1)*strideDepth+filterDepth-inDepth,padAlongHeight=(outHeight-1)*strideHeight+filterHeight-inHeight,padAlongWidth=(outWidth-1)*strideWidth+filterWidth-inWidth,front=Math.floor(padAlongDepth/2),back=padAlongDepth-front,top=Math.floor(padAlongHeight/2),bottom=padAlongHeight-top,left=Math.floor(padAlongWidth/2),right=padAlongWidth-left;padInfo={top,bottom,left,right,front,back,type:"SAME"}}else if(pad3==="valid")padInfo={top:0,bottom:0,left:0,right:0,front:0,back:0,type:"VALID"},outDepth=Math.ceil((inDepth-filterDepth+1)/strideDepth),outHeight=Math.ceil((inHeight-filterHeight+1)/strideHeight),outWidth=Math.ceil((inWidth-filterWidth+1)/strideWidth);else throw Error(`Unknown padding parameter: ${pad3}`);return{padInfo,outDepth,outHeight,outWidth}}function round(value,roundingMode){if(!roundingMode)return Math.trunc(value);switch(roundingMode){case"round":return Math.round(value);case"ceil":return Math.ceil(value);case"floor":return Math.floor(value);default:throw new Error(`Unknown roundingMode ${roundingMode}`)}}function tupleValuesAreOne(param){let[dimA,dimB,dimC]=parseTupleParam(param);return dimA===1&&dimB===1&&dimC===1}function eitherStridesOrDilationsAreOne(strides,dilations){return tupleValuesAreOne(strides)||tupleValuesAreOne(dilations)}function convertConv2DDataFormat(dataFormat){if(dataFormat==="NHWC")return"channelsLast";if(dataFormat==="NCHW")return"channelsFirst";throw new Error(`Unknown dataFormat ${dataFormat}`)}function reshape_(x,shape){let inputs={x:convertToTensor(x,"x","reshape","string_or_numeric")},attrs={shape};return ENGINE.runKernel(Reshape,inputs,attrs)}var reshape=op({reshape_});function avgPool_(x,filterSize,strides,pad3,dimRoundingMode){let $x=convertToTensor(x,"x","avgPool","float32"),dilations=1;assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in avgPool: x must be rank 4 but got rank ${x4D.rank}.`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in avgPool: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let inputs={x:x4D},attrs={filterSize,strides,pad:pad3,dimRoundingMode},res=ENGINE.runKernel(AvgPool,inputs,attrs);return res=cast(res,$x.dtype),reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var avgPool=op({avgPool_});function avgPool3d_(x,filterSize,strides,pad3,dimRoundingMode,dataFormat="NDHWC",dilations){dilations==null?dilations=[1,1,1]:deprecationWarn("dilations is deprecated, this field will be gone in v3.0.0.");let $x=convertToTensor(x,"x","avgPool3d","float32"),x5D=$x,reshapedTo5D=!1;$x.rank===4&&(reshapedTo5D=!0,x5D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2],$x.shape[3]])),assert(x5D.rank===5,()=>`Error in avgPool3d: x must be rank 5 but got rank ${x5D.rank}.`),assert(dataFormat==="NDHWC",()=>`Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of ${dataFormat}`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool3d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in avgPool3d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let inputs={x:x5D},attrs={filterSize,strides,pad:pad3,dimRoundingMode,dataFormat,dilations},res=ENGINE.runKernel(AvgPool3D,inputs,attrs);return res=cast(res,x5D.dtype),reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var avgPool3d=op({avgPool3d_});function concat_(tensors,axis=0){assert(tensors.length>=1,()=>"Pass at least one tensor to concat");let $tensors=convertToTensorArray(tensors,"tensors","concat","string_or_numeric");if($tensors[0].dtype==="complex64"&&$tensors.forEach(tensor2=>{if(tensor2.dtype!=="complex64")throw new Error(`Cannot concatenate complex64 tensors with a tensor - with dtype ${tensor2.dtype}. `)}),$tensors.length===1)return clone($tensors[0]);let inputs=$tensors,attr={axis};return ENGINE.runKernel(Concat,inputs,attr)}var concat=op({concat_});function sigmoid_(x){let inputs={x:convertToTensor(x,"x","sigmoid")};return ENGINE.runKernel(Sigmoid,inputs)}var sigmoid=op({sigmoid_});function slice_(x,begin,size){let $x=convertToTensor(x,"x","slice","string_or_numeric");if($x.rank===0)throw new Error("Slicing scalar is not possible");let inputs={x:$x},attrs={begin,size};return ENGINE.runKernel(Slice,inputs,attrs)}var slice=op({slice_});function tanh_(x){let inputs={x:convertToTensor(x,"x","tanh")};return ENGINE.runKernel(Tanh,inputs)}var tanh2=op({tanh_});function basicLSTMCell_(forgetBias,lstmKernel,lstmBias,data,c,h){let $forgetBias=convertToTensor(forgetBias,"forgetBias","basicLSTMCell"),$lstmKernel=convertToTensor(lstmKernel,"lstmKernel","basicLSTMCell"),$lstmBias=convertToTensor(lstmBias,"lstmBias","basicLSTMCell"),$data=convertToTensor(data,"data","basicLSTMCell"),$c=convertToTensor(c,"c","basicLSTMCell"),$h=convertToTensor(h,"h","basicLSTMCell"),combined=concat([$data,$h],1),weighted=matMul(combined,$lstmKernel),res=add2(weighted,$lstmBias),batchSize=res.shape[0],sliceCols=res.shape[1]/4,sliceSize=[batchSize,sliceCols],i=slice(res,[0,0],sliceSize),j=slice(res,[0,sliceCols],sliceSize),f=slice(res,[0,sliceCols*2],sliceSize),o=slice(res,[0,sliceCols*3],sliceSize),newC=add2(mul(sigmoid(i),tanh2(j)),mul($c,sigmoid(add2($forgetBias,f)))),newH=mul(tanh2(newC),sigmoid(o));return[newC,newH]}var basicLSTMCell=op({basicLSTMCell_});function batchToSpaceND_(x,blockShape,crops){let $x=convertToTensor(x,"x","batchToSpaceND"),prod5=blockShape.reduce((a,b)=>a*b);assert($x.rank>=1+blockShape.length,()=>`input rank is ${$x.rank} but should be > than blockShape.length ${blockShape.length}`),assert(crops.length===blockShape.length,()=>`crops.length is ${crops.length} but should be equal to blockShape.length ${blockShape.length}`),assert($x.shape[0]%prod5==0,()=>`input tensor batch is ${$x.shape[0]} but is not divisible by the product of the elements of blockShape ${blockShape.join(" * ")} === ${prod5}`);let inputs={x:$x},attrs={blockShape,crops};return ENGINE.runKernel(BatchToSpaceND,inputs,attrs)}var batchToSpaceND=op({batchToSpaceND_});function xAs4D(x){let x4D;return x.rank===0||x.rank===1?x4D=reshape(x,[1,1,1,x.size]):x.rank===2?x4D=reshape(x,[1,1,x.shape[0],x.shape[1]]):x.rank===3?x4D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]):x4D=x,x4D}function batchNorm_(x,mean4,variance,offset,scale22,varianceEpsilon){varianceEpsilon==null&&(varianceEpsilon=.001);let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean4,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale22!=null&&($scale=convertToTensor(scale22,"scale","batchNorm"));let $offset;offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($mean.rank===$variance.rank,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),assert($offset==null||$mean.rank===$offset.rank,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),assert($scale==null||$mean.rank===$scale.rank,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let inputs={x:xAs4D($x),scale:$scale,offset:$offset,mean:$mean,variance:$variance},attrs={varianceEpsilon},res=ENGINE.runKernel(FusedBatchNorm,inputs,attrs);return reshape(res,$x.shape)}var batchNorm=op({batchNorm_});function batchNorm2d_(x,mean4,variance,offset,scale22,varianceEpsilon){let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean4,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale22!=null&&($scale=convertToTensor(scale22,"scale","batchNorm"));let $offset;return offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($x.rank===2,()=>`Error in batchNorm2D: x must be rank 2 but got rank ${$x.rank}.`),assert($mean.rank===2||$mean.rank===1,()=>`Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank ${$mean.rank}.`),assert($variance.rank===2||$variance.rank===1,()=>`Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank ${$variance.rank}.`),$scale!=null&&assert($scale.rank===2||$scale.rank===1,()=>`Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank ${$scale.rank}.`),$offset!=null&&assert($offset.rank===2||$offset.rank===1,()=>`Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank ${$offset.rank}.`),batchNorm($x,$mean,$variance,$offset,$scale,varianceEpsilon)}var batchNorm2d=op({batchNorm2d_});function batchNorm3d_(x,mean4,variance,offset,scale22,varianceEpsilon){let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean4,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale22!=null&&($scale=convertToTensor(scale22,"scale","batchNorm"));let $offset;return offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($x.rank===3,()=>`Error in batchNorm3D: x must be rank 3 but got rank ${$x.rank}.`),assert($mean.rank===3||$mean.rank===1,()=>`Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank ${$mean.rank}.`),assert($variance.rank===3||$variance.rank===1,()=>`Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank ${$variance.rank}.`),$scale!=null&&assert($scale.rank===3||$scale.rank===1,()=>`Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank ${$scale.rank}.`),$offset!=null&&assert($offset.rank===3||$offset.rank===1,()=>`Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank ${$offset.rank}.`),batchNorm($x,$mean,$variance,$offset,$scale,varianceEpsilon)}var batchNorm3d=op({batchNorm3d_});function batchNorm4d_(x,mean4,variance,offset,scale22,varianceEpsilon){let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean4,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale22!=null&&($scale=convertToTensor(scale22,"scale","batchNorm"));let $offset;return offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($x.rank===4,()=>`Error in batchNorm4D: x must be rank 4 but got rank ${$x.rank}.`),assert($mean.rank===4||$mean.rank===1,()=>`Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank ${$mean.rank}.`),assert($variance.rank===4||$variance.rank===1,()=>`Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank ${$variance.rank}.`),$scale!=null&&assert($scale.rank===4||$scale.rank===1,()=>`Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank ${$scale.rank}.`),$offset!=null&&assert($offset.rank===4||$offset.rank===1,()=>`Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank ${$offset.rank}.`),batchNorm($x,$mean,$variance,$offset,$scale,varianceEpsilon)}var batchNorm4d=op({batchNorm4d_});function bincount_(x,weights,size){let $x=convertToTensor(x,"x","bincount"),$weights=convertToTensor(weights,"weights","bincount");assert($x.dtype==="int32",()=>`Error in bincount: input dtype must be int32, but got ${$x.dtype}`),assert(size>=0,()=>`size must be non-negative, but got ${size}.`),assert($weights.size===$x.size||$weights.size===0,()=>`Error in bincount: weights must have the same size as input or0-length, but got input shape: ${$x.shape}, weights shape: ${$weights.shape}.`);let inputs={x:$x,weights:$weights},attrs={size};return ENGINE.runKernel(Bincount,inputs,attrs)}var bincount=op({bincount_});function broadcastTo_(x,shape){let input2=convertToTensor(x,"broadcastTo","x"),xShape=input2.shape;if(shape.some(d=>!(d>0)||d%1!=0))throw new Error(`broadcastTo(): Invalid broadcast shape [${shape}].`);if(shape.lengthinput2.rank){let newShape=input2.shape.slice();for(;newShape.length=0;i--)if(inputShape[i]===shape[i])reps[i]=1;else if(input2.shape[i]!==1)throw new Error(`broadcastTo(): [${xShape}] cannot be broadcast to [${shape}].`);if(reps.map((n,i)=>n>1?i:-1).filter(i=>i>=0).length===0)return clone(input2);let inputs={x:input2},attrs={reps};return ENGINE.runKernel(Tile,inputs,attrs)}var broadcastTo=op({broadcastTo_});function ceil_(x){let inputs={x:convertToTensor(x,"x","ceil")};return ENGINE.runKernel(Ceil,inputs)}var ceil=op({ceil_});function clipByValue_(x,clipValueMin,clipValueMax){let $x=convertToTensor(x,"x","clipByValue");assert(clipValueMin<=clipValueMax,()=>`Error in clip: min (${clipValueMin}) must be less than or equal to max (${clipValueMax}).`);let inputs={x:$x},attrs={clipValueMin,clipValueMax};return ENGINE.runKernel(ClipByValue,inputs,attrs)}var clipByValue=op({clipByValue_});function concat1d_(tensors){return concat(tensors,0)}var concat1d=op({concat1d_});function concat2d_(tensors,axis){return concat(tensors,axis)}var concat2d=op({concat2d_});function concat3d_(tensors,axis){return concat(tensors,axis)}var concat3d=op({concat3d_});function concat4d_(tensors,axis){return concat(tensors,axis)}var concat4d=op({concat4d_});function conv2d_(x,filter,strides,pad3,dataFormat="NHWC",dilations=[1,1],dimRoundingMode){let $x=convertToTensor(x,"x","conv2d"),$filter=convertToTensor(filter,"filter","conv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in conv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in conv2d: filter must be rank 4, but got rank ${$filter.rank}.`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in conv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let inDepth=dataFormat==="NHWC"?x4D.shape[3]:x4D.shape[1];assert(inDepth===$filter.shape[2],()=>`Error in conv2d: depth of input (${inDepth}) must match input depth for filter ${$filter.shape[2]}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let inputs={x:x4D,filter:$filter},attrs={strides,pad:pad3,dataFormat,dilations,dimRoundingMode},res=ENGINE.runKernel(Conv2D,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var conv2d=op({conv2d_});function conv1d_(x,filter,stride,pad3,dataFormat="NWC",dilation=1,dimRoundingMode){let $x=convertToTensor(x,"x","conv1d"),$filter=convertToTensor(filter,"filter","conv1d"),x3D=$x,reshapedTo3D=!1;$x.rank===2&&(reshapedTo3D=!0,x3D=reshape($x,[1,$x.shape[0],$x.shape[1]])),assert(x3D.rank===3,()=>`Error in conv1d: input must be rank 3, but got rank ${x3D.rank}.`),assert($filter.rank===3,()=>`Error in conv1d: filter must be rank 3, but got rank ${$filter.rank}.`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in conv1d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`),assert(x3D.shape[2]===$filter.shape[1],()=>`Error in conv1d: depth of input (${x3D.shape[2]}) must match input depth for filter ${$filter.shape[1]}.`),assert(eitherStridesOrDilationsAreOne(stride,dilation),()=>`Error in conv1D: Either stride or dilation must be 1. Got stride ${stride} and dilation '${dilation}'`),assert(dataFormat==="NWC",()=>`Error in conv1d: got dataFormat of ${dataFormat} but only NWC is currently supported.`);let filter4D=reshape($filter,[1,$filter.shape[0],$filter.shape[1],$filter.shape[2]]),input4D=reshape(x3D,[x3D.shape[0],1,x3D.shape[1],x3D.shape[2]]),res=conv2d(input4D,filter4D,[1,stride],pad3,"NHWC",[1,dilation],dimRoundingMode);return reshapedTo3D?reshape(res,[res.shape[2],res.shape[3]]):reshape(res,[res.shape[0],res.shape[2],res.shape[3]])}var conv1d=op({conv1d_});function conv2DBackpropInput_(xShape,dy,filter,strides,pad3,dataFormat="NHWC",dimRoundingMode){assert(xShape.length===dy.rank,()=>`Length of inShape (${xShape.length}) and rank of dy (${dy.rank}) must match`);let xShape4D=xShape,dy4D=dy,reshapedTo4D=!1;dy.rank===3&&(reshapedTo4D=!0,dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]]),xShape4D=[1,xShape[0],xShape[1],xShape[2]]),assert(xShape4D.length===4,()=>`Error in conv2dDerInput: inShape must be length 4, but got length ${xShape4D.length}.`),assert(dy4D.rank===4,()=>`Error in conv2dDerInput: dy must be rank 4, but got rank ${dy4D.rank}`),assert(filter.rank===4,()=>`Error in conv2dDerInput: filter must be rank 4, but got rank ${filter.rank}`);let inDepth=dataFormat==="NHWC"?xShape4D[3]:xShape4D[1],outDepth=dataFormat==="NHWC"?dy4D.shape[3]:dy4D.shape[1];assert(inDepth===filter.shape[2],()=>`Error in conv2dDerInput: depth of input (${inDepth}) must match input depth for filter ${filter.shape[2]}.`),assert(outDepth===filter.shape[3],()=>`Error in conv2dDerInput: depth of output (${outDepth}) must match output depth for filter ${filter.shape[3]}.`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let inputs={dy:dy4D,filter},attrs={strides,pad:pad3,dataFormat,dimRoundingMode,inputShape:xShape4D},res=ENGINE.runKernel(Conv2DBackpropInput,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var conv2DBackpropInput=op({conv2DBackpropInput_});function conv2dTranspose_(x,filter,outputShape,strides,pad3,dimRoundingMode){let $x=convertToTensor(x,"x","conv2dTranspose"),$filter=convertToTensor(filter,"filter","conv2dTranspose");return conv2DBackpropInput(outputShape,$x,$filter,strides,pad3,"NHWC",dimRoundingMode)}var conv2dTranspose=op({conv2dTranspose_});function conv3d_(x,filter,strides,pad3,dataFormat="NDHWC",dilations=[1,1,1]){let $x=convertToTensor(x,"x","conv3d"),$filter=convertToTensor(filter,"filter","conv3d"),x5D=$x,reshapedTo5D=!1;$x.rank===4&&(reshapedTo5D=!0,x5D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2],$x.shape[3]])),assert(x5D.rank===5,()=>`Error in conv3d: input must be rank 5, but got rank ${x5D.rank}.`),assert($filter.rank===5,()=>`Error in conv3d: filter must be rank 5, but got rank ${$filter.rank}.`),assert(x5D.shape[4]===$filter.shape[3],()=>`Error in conv3d: depth of input (${x5D.shape[4]}) must match input depth for filter ${$filter.shape[3]}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in conv3D: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),assert(dataFormat==="NDHWC",()=>`Error in conv3d: got dataFormat of ${dataFormat} but only NDHWC is currently supported.`);let inputs={x:x5D,filter:$filter},attrs={strides,pad:pad3,dataFormat,dilations},res=ENGINE.runKernel(Conv3D,inputs,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var conv3d=op({conv3d_});function conv3DBackpropInput_(xShape,dy,filter,strides,pad3){assert(xShape.length===dy.rank,()=>`Length of inShape (${xShape.length}) and rank of dy (${dy.rank}) must match`);let xShape5D=xShape,dy5D=dy,reshapedTo5D=!1;dy.rank===4&&(reshapedTo5D=!0,dy5D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2],dy.shape[3]]),xShape5D=[1,xShape[0],xShape[1],xShape[2],xShape[3]]);let inDepth=xShape5D[4],outDepth=dy5D.shape[4];assert(xShape5D.length===5,()=>`Error in conv3dDerInput: inShape must be length 5, but got length ${xShape5D.length}.`),assert(dy5D.rank===5,()=>`Error in conv3dDerInput: dy must be rank 5, but got rank ${dy5D.rank}`),assert(filter.rank===5,()=>`Error in conv3dDerInput: filter must be rank 5, but got rank ${filter.rank}`),assert(inDepth===filter.shape[3],()=>`Error in conv3dDerInput: depth of input (${inDepth}) must match input depth for filter ${filter.shape[3]}.`),assert(outDepth===filter.shape[4],()=>`Error in conv3dDerInput: depth of output (${outDepth}) must match output depth for filter ${filter.shape[4]}.`);let inputs={dy:dy5D,filter},attrs={pad:pad3,strides,inputShape:xShape5D},res=ENGINE.runKernel(Conv3DBackpropInputV2,inputs,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var conv3DBackpropInput=op({conv3DBackpropInput_});function conv3dTranspose_(x,filter,outputShape,strides,pad3){let $x=convertToTensor(x,"x","conv3dTranspose"),$filter=convertToTensor(filter,"filter","conv3dTranspose");return conv3DBackpropInput(outputShape,$x,$filter,strides,pad3)}var conv3dTranspose=op({conv3dTranspose_});function cos_(x){let inputs={x:convertToTensor(x,"x","cos")};return ENGINE.runKernel(Cos,inputs)}var cos=op({cos_});function cosh_(x){let inputs={x:convertToTensor(x,"x","cosh")};return ENGINE.runKernel(Cosh,inputs)}var cosh=op({cosh_});function cumsum_(x,axis=0,exclusive=!1,reverse5=!1){let inputs={x:convertToTensor(x,"x","cumsum")},attrs={axis,exclusive,reverse:reverse5};return ENGINE.runKernel(Cumsum,inputs,attrs)}var cumsum=op({cumsum_});function denseBincount_(x,weights,size,binaryOutput=!1){let $x=convertToTensor(x,"x","denseBincount"),$weights=convertToTensor(weights,"weights","denseBincount");assert($x.dtype==="int32",()=>`Error in denseBincount: input dtype must be int32, but got ${$x.dtype}`),assert($x.rank<=2,()=>`Error in denseBincount: input must be at most rank 2, but got rank ${$x.rank}.`),assert(size>=0,()=>`size must be non-negative, but got ${size}.`),assert($weights.size===$x.size||$weights.size===0,()=>`Error in denseBincount: weights must have the same shape as x or 0-length, but got x shape: ${$x.shape}, weights shape: ${$weights.shape}.`);let inputs={x:$x,weights:$weights},attrs={size,binaryOutput};return ENGINE.runKernel(DenseBincount,inputs,attrs)}var denseBincount=op({denseBincount_});function depthToSpace_(x,blockSize,dataFormat="NHWC"){let $x=convertToTensor(x,"x","depthToSpace"),inputHeight=dataFormat==="NHWC"?$x.shape[1]:$x.shape[2],inputWidth=dataFormat==="NHWC"?$x.shape[2]:$x.shape[3],inputDepth=dataFormat==="NHWC"?$x.shape[3]:$x.shape[1];assert(inputHeight*blockSize>=0,()=>`Negative dimension size caused by overflow when multiplying - ${inputHeight} and ${blockSize} for depthToSpace with input shape - ${$x.shape}`),assert(inputWidth*blockSize>=0,()=>`Negative dimension size caused by overflow when multiplying - ${inputWidth} and ${blockSize} for depthToSpace with input shape - ${$x.shape}`),assert(inputDepth%(blockSize*blockSize)==0,()=>`Dimension size must be evenly divisible by ${blockSize*blockSize} but is ${inputDepth} for depthToSpace with input shape ${$x.shape}`);let inputs={x:$x},attrs={blockSize,dataFormat};return ENGINE.runKernel(DepthToSpace,inputs,attrs)}var depthToSpace=op({depthToSpace_});function depthwiseConv2d_(x,filter,strides,pad3,dataFormat="NHWC",dilations=[1,1],dimRoundingMode){let $x=convertToTensor(x,"x","depthwiseConv2d"),$filter=convertToTensor(filter,"filter","depthwiseConv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in depthwiseConv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in depthwiseConv2d: filter must be rank 4, but got rank ${$filter.rank}.`),assert(x4D.shape[3]===$filter.shape[2],()=>`Error in depthwiseConv2d: number of input channels (${x4D.shape[3]}) must match the inChannels dimension in filter ${$filter.shape[2]}.`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let inputs={x:x4D,filter:$filter},attrs={strides,pad:pad3,dataFormat,dilations,dimRoundingMode},res=ENGINE.runKernel(DepthwiseConv2dNative,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var depthwiseConv2d=op({depthwiseConv2d_});function diag_(x){let inputs={x:convertToTensor(x,"x","diag")};return ENGINE.runKernel(Diag,inputs)}var diag=op({diag_});function dilation2d_(x,filter,strides,pad3,dilations=[1,1],dataFormat="NHWC"){let $x=convertToTensor(x,"x","dilation2d"),$filter=convertToTensor(filter,"filter","dilation2d");assert($x.rank===3||$x.rank===4,()=>`Error in dilation2d: input must be rank 3 or 4, but got rank ${$x.rank}.`),assert($filter.rank===3,()=>`Error in dilation2d: filter must be rank 3, but got rank ${$filter.rank}.`),assert(dataFormat==="NHWC",()=>`Error in dilation2d: Only NHWC is currently supported, but got dataFormat of ${dataFormat}`);let x4D=$x,reshapedTo4D=!1;$x.rank===3&&(x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]]),reshapedTo4D=!0);let inputs={x:x4D,filter:$filter},attrs={strides,pad:pad3,dilations},res=ENGINE.runKernel(Dilation2D,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var dilation2d=op({dilation2d_});function getBroadcastDims(inShape,outShape){let inRank=inShape.length,dims=[];for(let i=0;i1&&a===1&&dims.unshift(dim)}return dims}function getReductionAxes(inShape,outShape){let result=[];for(let i=0;i1)&&result.unshift(outAxis)}return result}function assertAndGetBroadcastShape(shapeA,shapeB){let result=[],l=Math.max(shapeA.length,shapeB.length);for(let i=0;i"The first dimension of `a` must match the size of `condition`."),$condition.rank!==1&&assertShapesMatch($condition.shape,$broadcastedB.shape,"Error in where: ");let inputs={condition:$condition,t:$broadcastedA,e:$broadcastedB};return ENGINE.runKernel(Select,inputs)}var where=op({where_});function zerosLike_(x){let inputs={x:convertToTensor(x,"x","zerosLike")};return ENGINE.runKernel(ZerosLike,inputs)}var zerosLike=op({zerosLike_});function divNoNan_(a,b){let $a=convertToTensor(a,"a","div"),$b=convertToTensor(b,"b","div");[$a,$b]=makeTypesMatch($a,$b);let divResult=div($a,$b),zeros4=zerosLike(divResult),bEqualsZero=equal($b,zeros4);return where(bEqualsZero,zeros4,divResult)}var divNoNan=op({divNoNan_});function dot_(t1,t2){let $t1=convertToTensor(t1,"t1","dot"),$t2=convertToTensor(t2,"t2","dot");assert(($t1.rank===1||$t1.rank===2)&&($t2.rank===1||$t2.rank===2),()=>`Error in dot: inputs must all be rank 1 or 2, but got ranks ${$t1.rank} and ${$t2.rank}.`);let t1Inner=$t1.rank===1?$t1.size:$t1.shape[1],t2Inner=$t2.rank===1?$t2.size:$t2.shape[0];if(assert(t1Inner===t2Inner,()=>`Error in dot: inner dimensions of inputs must match, but got ${t1Inner} and ${t2Inner}.`),$t1.rank===1&&$t2.rank===1){let t12D=reshape($t1,[1,-1]),t22D=reshape($t2,[-1,1]),t1t2=matMul(t12D,t22D);return reshape(t1t2,[])}else if($t1.rank===1&&$t2.rank===2){let t12D=reshape($t1,[1,-1]),t22D=reshape($t2,[$t2.shape[0],$t2.shape[1]]),t1t2=matMul(t12D,t22D);return reshape(t1t2,[t1t2.size])}else if($t1.rank===2&&$t2.rank===1){let t22D=reshape($t2,[-1,1]),t1t2=matMul($t1,t22D);return reshape(t1t2,[t1t2.size])}else{let t22D=reshape($t2,[$t2.shape[0],$t2.shape[1]]);return matMul($t1,t22D)}}var dot=op({dot_});function elu_(x){let inputs={x:convertToTensor(x,"x","elu")};return ENGINE.runKernel(Elu,inputs)}var elu=op({elu_});function erf_(x){let $x=convertToTensor(x,"x","erf");assert($x.dtype==="int32"||$x.dtype==="float32",()=>"Input dtype must be `int32` or `float32`."),$x.dtype==="int32"&&($x=cast($x,"float32"));let inputs={x:$x};return ENGINE.runKernel(Erf,inputs)}var erf=op({erf_});function exp_(x){let inputs={x:convertToTensor(x,"x","exp")};return ENGINE.runKernel(Exp,inputs)}var exp=op({exp_});function expandDims_(x,axis=0){let $x=convertToTensor(x,"x","expandDims","string_or_numeric");assert(axis<=$x.rank,()=>"Axis must be <= rank of the tensor");let inputs={input:$x},attrs={dim:axis};return ENGINE.runKernel(ExpandDims,inputs,attrs)}var expandDims=op({expandDims_});function expm1_(x){let inputs={x:convertToTensor(x,"x","expm1")};return ENGINE.runKernel(Expm1,inputs)}var expm1=op({expm1_});function tile_(x,reps){let $x=convertToTensor(x,"x","tile","string_or_numeric");assert($x.rank===reps.length,()=>`Error in transpose: rank of input ${$x.rank} must match length of reps ${reps}.`);let inputs={x:$x},attrs={reps};return ENGINE.runKernel(Tile,inputs,attrs)}var tile=op({tile_});function eye_(numRows,numColumns,batchShape,dtype="float32"){numColumns==null&&(numColumns=numRows);let buff=buffer([numRows,numColumns],dtype),n=numRows<=numColumns?numRows:numColumns;for(let i=0;i`Error in localResponseNormalization: x must be rank 3 or 4 but got - rank ${$x.rank}.`),assert(isInt(depthRadius),()=>`Error in localResponseNormalization: depthRadius must be an integer but got depthRadius ${depthRadius}.`);let x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]]));let inputs={x:x4D},attrs={depthRadius,bias,alpha,beta},res=ENGINE.runKernel(LRN,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var localResponseNormalization=op({localResponseNormalization_});function log_(x){let inputs={x:convertToTensor(x,"x","log")};return ENGINE.runKernel(Log,inputs)}var log=op({log_});function log1p_(x){let inputs={x:convertToTensor(x,"x","log1p")};return ENGINE.runKernel(Log1p,inputs)}var log1p=op({log1p_});function grad(f){return assert(isFunction(f),()=>"The f passed in grad(f) must be a function"),(x,dy)=>{let $x=convertToTensor(x,"x","tf.grad","string_or_numeric"),$dy=dy!=null?convertToTensor(dy,"dy","tf.grad"):null;return ENGINE.tidy(()=>{let{value,grads:grads2}=ENGINE.gradients(()=>f($x),[$x],$dy);return $dy!=null&&assertShapesMatch(value.shape,$dy.shape,"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)"),checkGrads(grads2),grads2[0]})}}function grads(f){return assert(isFunction(f),()=>"The f passed in grads(f) must be a function"),(args,dy)=>{assert(Array.isArray(args),()=>"The args passed in grads(f)(args) must be an array of `Tensor`s or `TensorLike`s");let $args=convertToTensorArray(args,"args","tf.grads","string_or_numeric"),$dy=dy!=null?convertToTensor(dy,"dy","tf.grads"):null;return ENGINE.tidy(()=>{let{value,grads:grads2}=ENGINE.gradients(()=>f(...$args),$args,$dy);return $dy!=null&&assertShapesMatch(value.shape,$dy.shape,"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),checkGrads(grads2),grads2})}}function valueAndGrad(f){return assert(isFunction(f),()=>"The f passed in valueAndGrad(f) must be a function"),(x,dy)=>{assert(x instanceof Tensor,()=>"The x passed in valueAndGrad(f)(x) must be a tensor"),assert(dy==null||dy instanceof Tensor,()=>"The dy passed in valueAndGrad(f)(x, dy) must be a tensor");let{grads:grads2,value}=ENGINE.gradients(()=>f(x),[x],dy);return checkGrads(grads2),{grad:grads2[0],value}}}function valueAndGrads(f){return assert(isFunction(f),()=>"The f passed in valueAndGrads(f) must be a function"),(args,dy)=>{assert(Array.isArray(args)&&args.every(arg=>arg instanceof Tensor),()=>"The args passed in valueAndGrads(f)(args) must be array of tensors"),assert(dy==null||dy instanceof Tensor,()=>"The dy passed in valueAndGrads(f)(args, dy) must be a tensor");let res=ENGINE.gradients(()=>f(...args),args,dy);return dy!=null&&assertShapesMatch(res.value.shape,dy.shape,"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),checkGrads(res.grads),res}}function variableGrads(f,varList){assert(isFunction(f),()=>"The f passed in variableGrads(f) must be a function"),assert(varList==null||Array.isArray(varList)&&varList.every(v=>v instanceof Variable),()=>"The varList passed in variableGrads(f, varList) must be an array of variables");let specifiedVarList=varList!=null;if(!specifiedVarList){varList=[];for(let varName in ENGINE.registeredVariables)varList.push(ENGINE.registeredVariables[varName])}let specifiedNonTrainable=specifiedVarList?varList.filter(variable2=>!variable2.trainable):null,originalVarCount=varList.length;varList=varList.filter(variable2=>variable2.trainable),assert(varList.length>0,()=>`variableGrads() expects at least one of the input variables to be trainable, but none of the ${originalVarCount} variables is trainable.`);let allowNoGradients=!0,{value,grads:grads2}=ENGINE.gradients(f,varList,null,allowNoGradients);assert(grads2.some(g=>g!=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()."),assert(value.rank===0,()=>`The f passed in variableGrads(f) must return a scalar, but it returned a rank-${value.rank} tensor`);let namedGrads={};return varList.forEach((v,i)=>{grads2[i]!=null&&(namedGrads[v.name]=grads2[i])}),specifiedNonTrainable!=null&&specifiedNonTrainable.forEach(v=>namedGrads[v.name]=null),{value,grads:namedGrads}}function customGrad(f){return ENGINE.customGrad(f)}function checkGrads(grads2){if(grads2.filter(g=>g==null).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.`)}function neg_(x){let inputs={x:convertToTensor(x,"x","neg")};return ENGINE.runKernel(Neg,inputs)}var neg=op({neg_});function softplus_(x){let inputs={x:convertToTensor(x,"x","softplus")};return ENGINE.runKernel(Softplus,inputs)}var softplus=op({softplus_});function logSigmoid_(x){let $x=convertToTensor(x,"x","logSigmoid");return customGrad(x2=>({value:neg(softplus(neg(x2))),gradFunc:dy=>mul(dy,sigmoid(neg(x2)))}))($x)}var logSigmoid=op({logSigmoid_});function max_(x,axis=null,keepDims=!1){let inputs={x:convertToTensor(x,"x","max")},attrs={reductionIndices:axis,keepDims};return ENGINE.runKernel(Max,inputs,attrs)}var max=op({max_});function sub_(a,b){let $a=convertToTensor(a,"a","sub"),$b=convertToTensor(b,"b","sub");[$a,$b]=makeTypesMatch($a,$b);let inputs={a:$a,b:$b};return ENGINE.runKernel(Sub,inputs)}var sub=op({sub_});function sum_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","sum");$x.dtype==="bool"&&($x=cast($x,"int32"));let inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernel(Sum,inputs,attrs)}var sum2=op({sum_});function logSoftmax_(logits,axis=-1){let $logits=convertToTensor(logits,"logits","logSoftmax");if(axis===-1&&(axis=$logits.rank-1),axis!==$logits.rank-1)throw Error(`Log Softmax along a non-last dimension is not yet supported. Logits was rank ${$logits.rank} and axis was ${axis}`);return customGrad((logits2,save)=>{let keepDims=!0,xMax=max(logits2,axis,!0),shifted=sub(logits2,xMax),value=sub(cast(shifted,"float32"),log(sum2(exp(shifted),axis,keepDims)));return save([value]),{value,gradFunc:(dy,saved)=>{let[value2]=saved,keepDims2=!0,softmax6=exp(value2);return sub(dy,mul(sum2(dy,axis,keepDims2),softmax6))}}})($logits)}var logSoftmax=op({logSoftmax_});function axesAreInnerMostDims(axes,rank){for(let i=0;iaShape[dim]);return[outShape,reduceShape]}function expandShapeToKeepDim(shape,axes){let reduceSubShape=axes.map(x=>1);return combineLocations(shape,reduceSubShape,axes)}function assertAxesAreInnerMostDims(msg,axes,rank){assert(axesAreInnerMostDims(axes,rank),()=>`${msg} supports only inner-most axes for now. Got axes ${axes} and rank-${rank} input.`)}function getAxesPermutation(axes,rank){if(axesAreInnerMostDims(axes,rank))return null;let result=[];for(let i=0;iresult.push(axis)),result}function getUndoAxesPermutation(axes){return axes.map((axis,i)=>[i,axis]).sort((a,b)=>a[1]-b[1]).map(x=>x[0])}function getInnerMostAxes(numAxes,rank){let res=[];for(let i=rank-numAxes;i`Error in maxPool: input must be rank 4 but got rank ${x4D.rank}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in maxPool: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let inputs={x:x4D},attrs={filterSize,strides,pad:pad3,dimRoundingMode},res=ENGINE.runKernel(MaxPool,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var maxPool=op({maxPool_});function maxPool3d_(x,filterSize=[1,1,1],strides,pad3,dimRoundingMode,dataFormat="NDHWC",dilations){dilations==null?dilations=[1,1,1]:deprecationWarn("dilations is deprecated, this field will be gone in v3.0.0.");let $x=convertToTensor(x,"x","maxPool3d"),x5D=$x,reshapedTo5D=!1;$x.rank===4&&(reshapedTo5D=!0,x5D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2],$x.shape[3]])),assert(x5D.rank===5,()=>`Error in maxPool3d: x must be rank 5 but got rank ${x5D.rank}.`),assert(dataFormat==="NDHWC",()=>`Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of ${dataFormat}`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool3d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in maxPool3d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let inputs={x:x5D},attrs={filterSize,strides,pad:pad3,dimRoundingMode,dataFormat,dilations},res=ENGINE.runKernel(MaxPool3D,inputs,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var maxPool3d=op({maxPool3d_});function maxPoolWithArgmax_(x,filterSize,strides,pad3,includeBatchInIndex=!1){let inputs={x:convertToTensor(x,"x","maxPoolWithArgmax")},attrs={filterSize,strides,pad:pad3,includeBatchInIndex},result=ENGINE.runKernel(MaxPoolWithArgmax,inputs,attrs);return{result:result[0],indexes:result[1]}}var maxPoolWithArgmax=op({maxPoolWithArgmax_});function maximum_(a,b){let $a=convertToTensor(a,"a","maximum"),$b=convertToTensor(b,"b","maximum");[$a,$b]=makeTypesMatch($a,$b),$a.dtype==="bool"&&($a=cast($a,"int32"),$b=cast($b,"int32")),assertAndGetBroadcastShape($a.shape,$b.shape);let inputs={a:$a,b:$b};return ENGINE.runKernel(Maximum,inputs)}var maximum=op({maximum_});function mean_(x,axis=null,keepDims=!1){let inputs={x:convertToTensor(x,"x","mean")},attrs={axis,keepDims};return ENGINE.runKernel(Mean,inputs,attrs)}var mean=op({mean_});function min_(x,axis=null,keepDims=!1){let inputs={x:convertToTensor(x,"x","min")},attrs={axis,keepDims};return ENGINE.runKernel(Min,inputs,attrs)}var min=op({min_});function minimum_(a,b){let $a=convertToTensor(a,"a","minimum"),$b=convertToTensor(b,"b","minimum");[$a,$b]=makeTypesMatch($a,$b),$a.dtype==="bool"&&($a=cast($a,"int32"),$b=cast($b,"int32")),assertAndGetBroadcastShape($a.shape,$b.shape);let inputs={a:$a,b:$b};return ENGINE.runKernel(Minimum,inputs)}var minimum=op({minimum_});function mirrorPad_(x,paddings,mode){assert(mode==="reflect"||mode==="symmetric",()=>`Invalid mode. Mode must be either reflect or symmetric. Got ${mode}.`);let $x=convertToTensor(x,"x","mirrorPad");if($x.rank===0)throw new Error("mirrorPad(scalar) is not defined. Pass non-scalar to mirrorPad");assert(paddings.length===$x.rank,()=>`Padding doesn't match input. Must be ${$x.rank}. Got ${paddings.length}.`);let shapeOffset=mode==="reflect"?1:0;for(let i=0;i<$x.rank;i++)assert(paddings[i].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),assert(paddings[i][0]>=0&&paddings[i][0]<=$x.shape[i]-shapeOffset&&paddings[i][1]>=0&&paddings[i][1]<=$x.shape[i]-shapeOffset,()=>`Padding in dimension ${i} cannot be greater than or equal to ${$x.shape[i]-shapeOffset} or less than 0 for input of shape ${$x.shape}`);let attrs={paddings,mode},inputs={x:$x};return ENGINE.runKernel(MirrorPad,inputs,attrs)}var mirrorPad=op({mirrorPad_});function mod_(a,b){let $a=convertToTensor(a,"a","mod"),$b=convertToTensor(b,"b","mod");[$a,$b]=makeTypesMatch($a,$b);let inputs={a:$a,b:$b};return ENGINE.runKernel(Mod,inputs)}var mod=op({mod_});function square_(x){let $x=convertToTensor(x,"x","square"),attrs={};return ENGINE.runKernel("Square",{x:$x},attrs)}var square=op({square_});function moments_(x,axis=null,keepDims=!1){x=convertToTensor(x,"x","moments");let axes=parseAxisParam(axis,x.shape),xMean=mean(x,axes,keepDims),keepDimsShape=xMean.shape;keepDims||(keepDimsShape=expandShapeToKeepDim(xMean.shape,axes));let devSquared=square(sub(cast(x,"float32"),reshape(xMean,keepDimsShape))),variance=mean(devSquared,axes,keepDims);return{mean:xMean,variance}}var moments=op({moments_});function multiRNNCell_(lstmCells,data,c,h){let $data=convertToTensor(data,"data","multiRNNCell"),$c=convertToTensorArray(c,"c","multiRNNCell"),$h=convertToTensorArray(h,"h","multiRNNCell"),input2=$data,newStates=[];for(let i=0;i2)throw new Error(`Rank of probabilities must be 1 or 2, but is ${origRank}`);seed=seed||Math.random();let inputs={logits:origRank===1?reshape($logits,[1,-1]):$logits},attrs={numSamples,seed,normalized},res=ENGINE.runKernel(Multinomial,inputs,attrs);return origRank===1?reshape(res,[res.size]):res}var multinomial=op({multinomial_});function notEqual_(a,b){let $a=convertToTensor(a,"a","notEqual"),$b=convertToTensor(b,"b","notEqual");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let inputs={a:$a,b:$b};return ENGINE.runKernel(NotEqual,inputs)}var notEqual=op({notEqual_});function zeros(shape,dtype="float32"){if(dtype==="complex64"){let real4=zeros(shape,"float32"),imag4=zeros(shape,"float32");return complex(real4,imag4)}let values=makeZerosTypedArray(sizeFromShape(shape),dtype);return ENGINE.makeTensor(values,shape,dtype)}function ones2(shape,dtype="float32"){if(dtype==="complex64"){let real4=ones2(shape,"float32"),imag4=zeros(shape,"float32");return complex(real4,imag4)}let values=makeOnesTypedArray(sizeFromShape(shape),dtype);return ENGINE.makeTensor(values,shape,dtype)}function onesLike_(x){let inputs={x:convertToTensor(x,"x","onesLike")};return ENGINE.runKernel(OnesLike,inputs)}var onesLike=op({onesLike_});function outerProduct_(v1,v2){let $v1=convertToTensor(v1,"v1","outerProduct"),$v2=convertToTensor(v2,"v2","outerProduct");assert($v1.rank===1&&$v2.rank===1,()=>`Error in outerProduct: inputs must be rank 1, but got ranks ${$v1.rank} and ${$v2.rank}.`);let v12D=reshape($v1,[-1,1]),v22D=reshape($v2,[1,-1]);return matMul(v12D,v22D)}var outerProduct=op({outerProduct_});function pad_(x,paddings,constantValue=0){let $x=convertToTensor(x,"x","pad");if($x.rank===0)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");let attrs={paddings,constantValue},inputs={x:$x};return ENGINE.runKernel(PadV2,inputs,attrs)}var pad=op({pad_});function pad1d_(x,paddings,constantValue=0){return assert(paddings.length===2,()=>"Invalid number of paddings. Must be length of 2."),pad(x,[paddings],constantValue)}var pad1d=op({pad1d_});function pad2d_(x,paddings,constantValue=0){return assert(paddings.length===2&&paddings[0].length===2&&paddings[1].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),pad(x,paddings,constantValue)}var pad2d=op({pad2d_});function pad3d_(x,paddings,constantValue=0){return assert(paddings.length===3&&paddings[0].length===2&&paddings[1].length===2&&paddings[2].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),pad(x,paddings,constantValue)}var pad3d=op({pad3d_});function pad4d_(x,paddings,constantValue=0){return assert(paddings.length===4&&paddings[0].length===2&&paddings[1].length===2&&paddings[2].length===2&&paddings[3].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),pad(x,paddings,constantValue)}var pad4d=op({pad4d_});function spaceToBatchND_(x,blockShape,paddings){let $x=convertToTensor(x,"x","spaceToBatchND");assert($x.rank>=1+blockShape.length,()=>`input rank ${$x.rank} should be > than [blockShape] ${blockShape.length}`),assert(paddings.length===blockShape.length,()=>`paddings.shape[0] ${paddings.length} must be equal to [blockShape] ${blockShape.length}`),assert($x.shape.reduce((a,b,i)=>i>0&&i<=blockShape.length?a&&(b+paddings[i-1][0]+paddings[i-1][1])%blockShape[i-1]==0:a,!0),()=>`input spatial dimensions ${$x.shape.slice(1)} with paddings ${paddings.toString()} must be divisible by blockShapes ${blockShape.toString()}`);let inputs={x:$x},attrs={blockShape,paddings};return ENGINE.runKernel(SpaceToBatchND,inputs,attrs)}var spaceToBatchND=op({spaceToBatchND_});function pool_(input2,windowShape,poolingType,pad3,dilations,strides){dilations==null&&(dilations=[1,1]),strides==null&&(strides=1),pad3===0&&(pad3="valid");let $x=convertToTensor(input2,"x","maxPool"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in pool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=computePool2DInfo(x4D.shape,windowShape,strides,dilations,pad3),dilation=[convInfo.dilationHeight,convInfo.dilationWidth],basePadding;pad3==="same"?basePadding=withSpaceToBatchBasePaddings([convInfo.filterHeight,convInfo.filterWidth],dilation):basePadding=[[0,0],[0,0]];let isDilationOne=dilation[0]===1&&dilation[1]===1,[adjustedPadding,adjustedCrops]=requiredSpaceToBatchPaddings([convInfo.inHeight,convInfo.inWidth],dilation,basePadding),convertedPad=isDilationOne?pad3:"valid",convertedX=isDilationOne?x4D:spaceToBatchND(x4D,dilation,adjustedPadding),y=(poolingType==="avg"?()=>avgPool(convertedX,windowShape,strides,convertedPad):()=>maxPool(convertedX,windowShape,strides,convertedPad))(),res=isDilationOne?y:batchToSpaceND(y,dilation,adjustedCrops);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}function requiredSpaceToBatchPaddings(inputShape,blockShape,basePadding){let padStart=basePadding.map(b=>b[0]),origPadEnd=basePadding.map(b=>b[1]),fullInputShape=inputShape.concat(padStart,origPadEnd),padEndExtra=blockShape.map((b,i)=>(b-fullInputShape[i]%b)%b),padEnd=origPadEnd.map((s,i)=>s+padEndExtra[i]),paddings=blockShape.map((_,i)=>[padStart[i],padEnd[i]]),crops=blockShape.map((_,i)=>[0,padEndExtra[i]]);return[paddings,crops]}function withSpaceToBatchBasePaddings(filterShape,dilation){let padExtraShape=filterShape.map((s,i)=>s+(s-1)*(dilation[i]-1)).map(s=>s-1),padExtraStart=padExtraShape.map(s=>Math.floor(s/2)),padExtraEnd=padExtraShape.map((s,i)=>s-padExtraStart[i]);return padExtraShape.map((_,i)=>[padExtraStart[i],padExtraEnd[i]])}var pool=op({pool_});function pow_(base2,exp4){let $base=convertToTensor(base2,"base","pow"),$exp=convertToTensor(exp4,"exp","pow");[$base,$exp]=makeTypesMatch($base,$exp);let inputs={a:$base,b:$exp};return ENGINE.runKernel(Pow,inputs)}var pow=op({pow_});function prelu_(x,alpha){let $x=convertToTensor(x,"x","prelu"),$alpha=convertToTensor(alpha,"alpha","prelu"),inputs={x:$x,alpha:$alpha};return ENGINE.runKernel(Prelu,inputs)}var prelu=op({prelu_});function prod_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","prod");$x.dtype==="bool"&&($x=cast($x,"int32"));let inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernel(Prod,inputs,attrs)}var prod=op({prod_});function rand_(shape,randFunction,dtype){let size=sizeFromShape(shape),values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else throw new Error(`Unknown data type ${dtype}`);for(let i=0;i=1||s===0);let mul2=Math.sqrt(-2*Math.log(s)/s);resultX=this.mean+this.stdDev*v1*mul2,resultY=this.mean+this.stdDev*v2*mul2,(!this.truncated||this.isValidTruncated(resultX))&&(isValid=!0)}return(!this.truncated||this.isValidTruncated(resultY))&&(this.nextVal=this.convertValue(resultY)),this.convertValue(resultX)}convertValue(value){return this.dtype==null||this.dtype==="float32"?value:Math.round(value)}isValidTruncated(value){return value<=this.upper&&value>=this.lower}},RandGamma=class{constructor(alpha,beta,dtype,seed){this.alpha=alpha,this.beta=1/beta,this.dtype=dtype;let seedValue=seed||Math.random();this.randu=seedrandom.alea(seedValue.toString()),this.randn=new MPRandGauss(0,1,dtype,!1,this.randu()),alpha<1?this.d=alpha+2/3:this.d=alpha-1/3,this.c=1/Math.sqrt(9*this.d)}nextValue(){let x2,v0,v1,x,u,v;for(;;){do x=this.randn.nextValue(),v=1+this.c*x;while(v<=0);if(v*=v*v,x2=x*x,v0=1-.331*x2*x2,v1=.5*x2+this.d*(1-v+Math.log(v)),u=this.randu(),uthis.dtype==null||this.dtype==="float32",this.min=min6,this.range=max6-min6,this.dtype=dtype,seed==null&&(seed=Math.random()),typeof seed=="number"&&(seed=seed.toString()),!this.canReturnFloat()&&this.range<=1)throw new Error(`The difference between ${min6} - ${max6} <= 1 and dtype is not float`);this.random=seedrandom.alea(seed)}convertValue(value){return this.canReturnFloat()?value:Math.round(value)}nextValue(){return this.convertValue(this.min+this.range*this.random())}};function randomGamma_(shape,alpha,beta=1,dtype="float32",seed){if(beta==null&&(beta=1),dtype==null&&(dtype="float32"),dtype!=="float32"&&dtype!=="int32")throw new Error(`Unsupported data type ${dtype}`);let rgamma=new RandGamma(alpha,beta,dtype,seed),res=buffer(shape,dtype);for(let i=0;i`Error in reverse1D: x must be rank 1 but got rank ${$x.rank}.`),reverse($x,0)}var reverse1d=op({reverse1d_});function reverse2d_(x,axis){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===2,()=>`Error in reverse2D: x must be rank 2 but got rank ${$x.rank}.`),reverse($x,axis)}var reverse2d=op({reverse2d_});function reverse3d_(x,axis){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===3,()=>`Error in reverse3D: x must be rank 3 but got rank ${$x.rank}.`),reverse($x,axis)}var reverse3d=op({reverse3d_});function reverse4d_(x,axis){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===4,()=>`Error in reverse4D: x must be rank 4 but got rank ${$x.rank}.`),reverse($x,axis)}var reverse4d=op({reverse4d_});function round_(x){let inputs={x:convertToTensor(x,"x","round")};return ENGINE.runKernel(Round,inputs)}var round2=op({round_});function rsqrt_(x){let inputs={x:convertToTensor(x,"x","rsqrt")};return ENGINE.runKernel(Rsqrt,inputs)}var rsqrt=op({rsqrt_});function scalar(value,dtype){if((isTypedArray(value)&&dtype!=="string"||Array.isArray(value))&&dtype!=="complex64")throw new Error("Error creating a new Scalar: value must be a primitive (number|boolean|string)");if(dtype==="string"&&isTypedArray(value)&&!(value instanceof Uint8Array))throw new Error("When making a scalar from encoded string, the value must be `Uint8Array`.");return makeTensor(value,[],[],dtype)}function selu_(x){let inputs={x:convertToTensor(x,"x","selu")};return ENGINE.runKernel(Selu,inputs)}var selu=op({selu_});function separableConv2d_(x,depthwiseFilter,pointwiseFilter,strides,pad3,dilation=[1,1],dataFormat="NHWC"){let $x=convertToTensor(x,"x","separableConv2d"),$depthwiseFilter=convertToTensor(depthwiseFilter,"depthwiseFilter","separableConv2d"),$pointwiseFilter=convertToTensor(pointwiseFilter,"pointwiseFilter","separableConv2d"),x4D=$x,reshapedTo4D=!1;if($x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),dataFormat==="NCHW")throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");assert(x4D.rank===4,()=>`Error in separableConv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($depthwiseFilter.rank===4,()=>`Error in separableConv2d: depthwise filter must be rank 4, but got rank ${$depthwiseFilter.rank}.`),assert($pointwiseFilter.rank===4,()=>`Error in separableConv2d: pointwise filter must be rank 4, but got rank ${$depthwiseFilter.rank}.`),assert($pointwiseFilter.shape[0]===1,()=>`Error in separableConv2d: the first dimension of pointwise filter must be 1, but got ${$pointwiseFilter.shape[0]}.`),assert($pointwiseFilter.shape[1]===1,()=>`Error in separableConv2d: the second dimension of pointwise filter must be 1, but got ${$pointwiseFilter.shape[1]}.`);let inChannels=$depthwiseFilter.shape[2],channelMultiplier=$depthwiseFilter.shape[3];assert($pointwiseFilter.shape[2]===inChannels*channelMultiplier,()=>`Error in separableConv2d: the third dimension of pointwise filter must be ${inChannels*channelMultiplier}, but got ${$pointwiseFilter.shape[2]}.`);let depthwise=depthwiseConv2d(x4D,$depthwiseFilter,strides,pad3,dataFormat,dilation),res=conv2d(depthwise,$pointwiseFilter,1,"valid",dataFormat);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var separableConv2d=op({separableConv2d_});async function setdiff1dAsync_(x,y){let $x=convertToTensor(x,"x","setdiff1d"),$y=convertToTensor(y,"y","setdiff1d");assert($x.dtype===$y.dtype,()=>`x and y should have the same dtype, but got x (${$x.dtype}) and y (${$y.dtype}).`),assert($x.rank===1,()=>`x should be 1D tensor, but got x (${$x.shape}).`),assert($y.rank===1,()=>`y should be 1D tensor, but got y (${$y.shape}).`);let xVals=await $x.data(),yVals=await $y.data(),ySet=new Set(yVals),outputSize=0;for(let i=0;i`slice1d expects a rank-1 tensor, but got a rank-${$x.rank} tensor`),slice($x,[begin],[size])}var slice1d=op({slice1d_});function slice2d_(x,begin,size){let $x=convertToTensor(x,"x","slice2d");return assert($x.rank===2,()=>`slice2d expects a rank-2 tensor, but got a rank-${$x.rank} tensor`),slice($x,begin,size)}var slice2d=op({slice2d_});function slice3d_(x,begin,size){let $x=convertToTensor(x,"x","slice3d");return assert($x.rank===3,()=>`slice3d expects a rank-3 tensor, but got a rank-${$x.rank} tensor`),slice($x,begin,size)}var slice3d=op({slice3d_});function slice4d_(x,begin,size){let $x=convertToTensor(x,"x","slice4d");return assert($x.rank===4,()=>`slice4d expects a rank-4 tensor, but got a rank-${$x.rank} tensor`),slice($x,begin,size)}var slice4d=op({slice4d_});function softmax_(logits,dim=-1){let $logits=convertToTensor(logits,"logits","softmax","float32");if(dim===-1&&(dim=$logits.rank-1),dim!==$logits.rank-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${$logits.rank} and dim was ${dim}`);let inputs={logits:$logits},attrs={dim};return ENGINE.runKernel(Softmax,inputs,attrs)}var softmax=op({softmax_});function fft_(input2){assert(input2.dtype==="complex64",()=>`The dtype for tf.spectral.fft() must be complex64 but got ${input2.dtype}.`);let inputs={input:input2};return ENGINE.runKernel(FFT,inputs)}var fft=op({fft_});function ifft_(input2){assert(input2.dtype==="complex64",()=>`The dtype for tf.spectral.ifft() must be complex64 but got ${input2.dtype}.`);let inputs={input:input2};return ENGINE.runKernel(IFFT,inputs)}var ifft=op({ifft_});function irfft_(input2){let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,ret;if(innerDimensionSize<=2){let complexInput=reshape(input2,[batch,innerDimensionSize]);ret=ifft(complexInput)}else{let outputShape=[batch,2*(innerDimensionSize-1)],realInput=reshape(real(input2),[batch,innerDimensionSize]),imagInput=reshape(imag(input2),[batch,innerDimensionSize]),realConjugate=reverse(slice(realInput,[0,1],[batch,innerDimensionSize-2]),1),imagConjugate=mul(reverse(slice(imagInput,[0,1],[batch,innerDimensionSize-2]),1),scalar(-1)),r=concat([realInput,realConjugate],1),i=concat([imagInput,imagConjugate],1),complexInput=reshape(complex(r,i),[outputShape[0],outputShape[1]]);ret=ifft(complexInput)}if(ret=real(ret),input2.rank===3&&input2.shape[0]!==0){let temp=ret,batch2=input2.shape[0];ret=reshape(ret,[batch2,ret.shape[0]/batch2,ret.shape[1]]),temp.dispose()}return ret}var irfft=op({irfft_});function split_(x,numOrSizeSplits,axis=0){let inputs={x:convertToTensor(x,"x","split")},attr={numOrSizeSplits,axis};return ENGINE.runKernel(SplitV,inputs,attr)}var split=op({split_});function rfft_(input2,fftLength){assert(input2.dtype==="float32",()=>`The dtype for rfft() must be real value but got ${input2.dtype}`);let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,adjustedInput;if(fftLength!=null&&fftLength0),size=input2.shape.map(v=>v);size[input2.shape.length-1]=fftLength,adjustedInput=slice(input2,begin,size),innerDimensionSize=fftLength}else if(fftLength!=null&&fftLength>innerDimensionSize){let zerosShape=input2.shape.map(v=>v);zerosShape[input2.shape.length-1]=fftLength-innerDimensionSize,adjustedInput=concat([input2,zeros(zerosShape)],input2.shape.length-1),innerDimensionSize=fftLength}else adjustedInput=input2;let zerosInput=zerosLike(adjustedInput),complexInput=reshape(complex(adjustedInput,zerosInput),[batch,innerDimensionSize]),ret=fft(complexInput),half=Math.floor(innerDimensionSize/2)+1,realValues=real(ret),imagValues=imag(ret),realComplexConjugate=split(realValues,[half,innerDimensionSize-half],realValues.shape.length-1),imagComplexConjugate=split(imagValues,[half,innerDimensionSize-half],imagValues.shape.length-1),outputShape=adjustedInput.shape.slice();return outputShape[adjustedInput.shape.length-1]=half,reshape(complex(realComplexConjugate[0],imagComplexConjugate[0]),outputShape)}var rfft=op({rfft_});function sqrt_(x){let inputs={x:convertToTensor(x,"x","sqrt")};return ENGINE.runKernel(Sqrt,inputs)}var sqrt=op({sqrt_});function squaredDifference_(a,b){let $a=convertToTensor(a,"a","squaredDifference"),$b=convertToTensor(b,"b","squaredDifference");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let inputs={a:$a,b:$b},attrs={};return ENGINE.runKernel(SquaredDifference,inputs,attrs)}var squaredDifference=op({squaredDifference_});function squeeze_(x,axis){let $x=convertToTensor(x,"x","squeeze");return reshape($x,squeezeShape($x.shape,axis).newShape)}var squeeze=op({squeeze_});function stack_(tensors,axis=0){let $tensors=convertToTensorArray(tensors,"tensors","stack","string_or_numeric");assert($tensors.length>=1,()=>"Pass at least one tensor to tf.stack"),$tensors.length>0&&assert(axis<=$tensors[0].rank,()=>"Axis must be <= rank of the tensor");let inputs=$tensors,attrs={axis};return ENGINE.runKernel(Pack,inputs,attrs)}var stack=op({stack_});function step_(x,alpha=0){let inputs={x:convertToTensor(x,"x","step")},attrs={alpha};return ENGINE.runKernel(Step,inputs,attrs)}var step=op({step_});function stridedSlice_(x,begin,end,strides,beginMask=0,endMask=0,ellipsisMask=0,newAxisMask=0,shrinkAxisMask=0){let inputs={x:convertToTensor(x,"x","stridedSlice")},attrs={begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask};return ENGINE.runKernel(StridedSlice,inputs,attrs)}var stridedSlice=op({stridedSlice_});function tan_(x){let inputs={x:convertToTensor(x,"x","tan")};return ENGINE.runKernel(Tan,inputs)}var tan=op({tan_});function tensor1d(values,dtype){assertNonNull(values);let inferredShape=inferShape(values,dtype);if(inferredShape.length!==1)throw new Error("tensor1d() requires values to be a flat/TypedArray");return makeTensor(values,null,inferredShape,dtype)}function tensor2d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==2)throw new Error("tensor2d() requires shape to have two numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==2&&inferredShape.length!==1)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return makeTensor(values,shape,inferredShape,dtype)}function tensor4d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==4)throw new Error("tensor4d() requires shape to have four numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==4&&inferredShape.length!==1)throw new Error("tensor4d() requires values to be number[][][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor4d() requires shape to be provided when `values` are a flat array");return makeTensor(values,shape,inferredShape,dtype)}function tensor5d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==5)throw new Error("tensor5d() requires shape to have five numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==5&&inferredShape.length!==1)throw new Error("tensor5d() requires values to be number[][][][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor5d() requires shape to be provided when `values` are a flat array");return makeTensor(values,shape,inferredShape,dtype)}function tensor6d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==6)throw new Error("tensor6d() requires shape to have six numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==6&&inferredShape.length!==1)throw new Error("tensor6d() requires values to be number[][][][][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor6d() requires shape to be provided when `values` are a flat array");return shape=shape||inferredShape,makeTensor(values,shape,inferredShape,dtype)}function topk_(x,k=1,sorted=!0){let $x=convertToTensor(x,"x","topk");if($x.rank===0)throw new Error("topk() expects the input to be of rank 1 or higher");let lastDim=$x.shape[$x.shape.length-1];if(k>lastDim)throw new Error(`'k' passed to topk() must be <= the last dimension (${lastDim}) but got ${k}`);let inputs={x:$x},attrs={k,sorted},[values,indices]=ENGINE.runKernel(TopK,inputs,attrs);return{values,indices}}var topk=op({topk_});function truncatedNormal_(shape,mean4=0,stdDev=1,dtype,seed){if(dtype!=null&&dtype==="bool")throw new Error("Unsupported data type $ { dtype }");let randGauss=new MPRandGauss(mean4,stdDev,dtype,!0,seed),res=buffer(shape,dtype);for(let i=0;i0,()=>"The input tensor must be at least 1D");let inputs={x:$x},attrs={axis},[values,indices]=ENGINE.runKernel(Unique,inputs,attrs);return{values,indices}}var unique=op({unique_});function unsortedSegmentSum_(x,segmentIds,numSegments){let $x=convertToTensor(x,"x","unsortedSegmentSum"),$segmentIds=convertToTensor(segmentIds,"segmentIds","unsortedSegmentSum","int32");assert(isInt(numSegments),()=>"numSegments must be of dtype int");let inputs={x:$x,segmentIds:$segmentIds},attrs={numSegments};return ENGINE.runKernel(UnsortedSegmentSum,inputs,attrs)}var unsortedSegmentSum=op({unsortedSegmentSum_});function unstack_(x,axis=0){let $x=convertToTensor(x,"x","unstack","string_or_numeric");assert(axis>=-$x.shape.length&&axis<$x.shape.length,()=>`Axis = ${axis} is not in [-${$x.shape.length}, ${$x.shape.length})`);let inputs={value:$x},attrs={axis};return ENGINE.runKernel(Unpack,inputs,attrs)}var unstack=op({unstack_});function variable(initialValue,trainable=!0,name,dtype){return ENGINE.makeVariable(initialValue,trainable,name,dtype)}function whereImpl(condShape,condVals){let indices=[];for(let i=0;i0,()=>"mask cannot be scalar"),assertShapesMatch(tensorShape.slice(axisFrom,axisFrom+maskDim),$mask.shape,"mask's shape must match the first K dimensions of tensor's shape,");let leadingSize=1;for(let i=axisFrom;i"Shape mismatch in v and x");let one=scalar(1),oneMinusDecay=sub(one,$decay),update=mul(sub($x,$v),oneMinusDecay);if(zeroDebias){assert(step4!=null,()=>"When using zeroDebias: true, step is required.");let $step=convertToTensor(step4,"step","movingAverage");update=div(update,sub(one,pow($decay,$step)))}return add2($v,update)}var movingAverage=op({movingAverage_});function scatterND_(indices,updates,shape){let $indices=convertToTensor(indices,"indices","scatterND","int32"),$updates=convertToTensor(updates,"updates","scatterND");validateInput($updates,$indices,shape);let inputs={indices:$indices,updates:$updates},attrs={shape};return ENGINE.runKernel(ScatterNd,inputs,attrs)}var scatterND=op({scatterND_});function validateInput2(sparseIndices,sparseValues,outputShape,defaultValues){if(sparseIndices.dtype!=="int32")throw new Error(`tf.sparseToDense() expects the indices to be int32 type, but the dtype was ${sparseIndices.dtype}.`);if(sparseIndices.rank>2)throw new Error(`sparseIndices should be a scalar, vector, or matrix, but got shape ${sparseIndices.shape}.`);let numElems=sparseIndices.rank>0?sparseIndices.shape[0]:1,numDims=sparseIndices.rank>1?sparseIndices.shape[1]:1;if(outputShape.length!==numDims)throw new Error(`outputShape has incorrect number of elements:, ${outputShape.length}, should be: ${numDims}.`);let numValues=sparseValues.size;if(!(sparseValues.rank===0||sparseValues.rank===1&&numValues===numElems))throw new Error(`sparseValues has incorrect shape ${sparseValues.shape}, should be [] or [${numElems}]`);if(sparseValues.dtype!==defaultValues.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}function sparseToDense_(sparseIndices,sparseValues,outputShape,defaultValue=0){let $sparseIndices=convertToTensor(sparseIndices,"sparseIndices","sparseToDense","int32"),$sparseValues=convertToTensor(sparseValues,"sparseValues","sparseToDense"),$defaultValue=convertToTensor(defaultValue,"defaultValue","sparseToDense",$sparseValues.dtype);validateInput2($sparseIndices,$sparseValues,outputShape,$defaultValue);let inputs={sparseIndices:$sparseIndices,sparseValues:$sparseValues,defaultValue:$defaultValue},attrs={outputShape};return ENGINE.runKernel(SparseToDense,inputs,attrs)}var sparseToDense=op({sparseToDense_});function gatherND_(x,indices){let $indices=convertToTensor(indices,"indices","gatherND","int32"),inputs={params:convertToTensor(x,"x","gatherND"),indices:$indices};return ENGINE.runKernel(GatherNd,inputs)}var gatherND=op({gatherND_});function getNoiseShape(x,noiseShape){if(noiseShape==null)return x.shape.slice();if(arraysEqual(x.shape,noiseShape))return noiseShape;if(x.shape.length===noiseShape.length){let newDimension=[];for(let i=0;i`x has to be a floating point tensor since it's going to be scaled, but got a ${$x.dtype} tensor instead.`),assert(rate>=0&&rate<1,()=>`rate must be a float in the range [0, 1), but got ${rate}.`),rate===0)return x instanceof Tensor?$x.clone():$x;let $noiseShape=getNoiseShape($x,noiseShape),keepProb=1-rate,multiplier=div(floor(add2(randomUniform($noiseShape,0,1,"float32",seed),keepProb)),keepProb);return mul($x,multiplier)}var dropout=op({dropout_});function enclosingPowerOfTwo(value){return Math.floor(Math.pow(2,Math.ceil(Math.log(value)/Math.log(2))))}function cosineWindow(windowLength,a,b){let even=1-windowLength%2,newValues=new Float32Array(windowLength);for(let i=0;i1,()=>`inTopK() expects the predictions to be of rank 2 or higher, but got ${$predictions.rank}`),assert($predictions.rank-1===$targets.rank,()=>`predictions rank should be 1 larger than targets rank, but got predictions rank ${$predictions.rank} and targets rank ${$targets.rank}`),assertShapesMatch($predictions.shape.slice(0,$predictions.shape.length-1),$targets.shape,"predictions's shape should be align with the targets' shape, except the last dimension.");let lastDim=$predictions.shape[$predictions.shape.length-1];assert(k>0&&k<=lastDim,()=>`'k' passed to inTopK() must be > 0 && <= the predictions last dimension (${lastDim}), but got ${k}`);let predictionsVals=await $predictions.data(),targetsVals=await $targets.data(),[batch,size]=[predictionsVals.length/lastDim,lastDim],precision3=getTypedArrayFromDType("bool",batch);for(let b=0;bb2.value-a.value),precision3[b]=0;for(let i=0;iconv2d2,depthwiseConv2d:()=>depthwiseConv2d2,matMul:()=>matMul2});function conv2DBackpropFilter_(x,dy,filterShape,strides,pad3,dataFormat="NHWC",dimRoundingMode){let x4D=x;x.rank===3&&(x4D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]));let dy4D=dy;dy4D.rank===3&&(dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]])),assert(x4D.rank===4,()=>`Error in conv2dDerFilter: input must be rank 4, but got shape ${x4D.shape}.`),assert(dy4D.rank===4,()=>`Error in conv2dDerFilter: dy must be rank 4, but got shape ${dy4D.shape}.`),assert(filterShape.length===4,()=>`Error in conv2dDerFilter: filterShape must be length 4, but got ${filterShape}.`);let inDepth=dataFormat==="NHWC"?x4D.shape[3]:x4D.shape[1],outDepth=dataFormat==="NHWC"?dy4D.shape[3]:dy4D.shape[1];assert(inDepth===filterShape[2],()=>`Error in conv2dDerFilter: depth of input ${inDepth}) must match input depth in filter (${filterShape[2]}.`),assert(outDepth===filterShape[3],()=>`Error in conv2dDerFilter: depth of dy (${outDepth}) must match output depth for filter (${filterShape[3]}).`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in conv2dDerFilter: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let inputs={x:x4D,dy:dy4D},attrs={strides,pad:pad3,dataFormat,dimRoundingMode,filterShape};return ENGINE.runKernel(Conv2DBackpropFilter,inputs,attrs)}var conv2DBackpropFilter=op({conv2DBackpropFilter_});function getFusedDyActivation(dy,y,activation2){if(activation2==null||activation2==="linear")return dy;if(activation2==="relu")return mul(dy,step(y));throw new Error(`Cannot compute gradient for fused activation ${activation2}.`)}function getFusedBiasGradient(bias,dyActivation){let res=dyActivation,reduceAxes=getReductionAxes(bias.shape,dyActivation.shape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,bias.shape)}function applyActivation(x,activation2,preluActivationWeights,leakyreluAlpha){if(activation2==="linear")return x;if(activation2==="relu")return relu(x);if(activation2==="elu")return elu(x);if(activation2==="relu6")return relu6(x);if(activation2==="prelu")return prelu(x,preluActivationWeights);if(activation2==="leakyrelu")return leakyRelu(x,leakyreluAlpha);throw new Error(`Unknown fused activation ${activation2}.`)}var shouldFuse=(gradientDepth,activation2)=>!(gradientDepth>0)||activation2==="linear";function fusedConv2d_({x,filter,strides,pad:pad3,dataFormat="NHWC",dilations=[1,1],dimRoundingMode,bias,activation:activation2="linear",preluActivationWeights,leakyreluAlpha}){if(activation2=activation2||"linear",shouldFuse(ENGINE.state.gradientDepth,activation2)===!1){let result=conv2d(x,filter,strides,pad3,dataFormat,dilations,dimRoundingMode);return bias!=null&&(result=add2(result,bias)),applyActivation(result,activation2,preluActivationWeights,leakyreluAlpha)}let $x=convertToTensor(x,"x","conv2d"),$filter=convertToTensor(filter,"filter","conv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in fused conv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in fused conv2d: filter must be rank 4, but got rank ${$filter.rank}.`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in fused conv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`),assert(x4D.shape[3]===$filter.shape[2],()=>`Error in conv2d: depth of input (${x4D.shape[3]}) must match input depth for filter ${$filter.shape[2]}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),assert(dataFormat==="NHWC",()=>`Error in conv2d: got dataFormat of ${dataFormat} but only NHWC is currently supported.`);let convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad3,dimRoundingMode),$bias;bias!=null&&($bias=convertToTensor(bias,"bias","fused conv2d"),[$bias]=makeTypesMatch($bias,$x),assertAndGetBroadcastShape(convInfo.outShape,$bias.shape));let $preluActivationWeights;preluActivationWeights!=null&&($preluActivationWeights=convertToTensor(preluActivationWeights,"prelu weights","fused conv2d"));let grad2=(dy,saved)=>{let[$filter2,x4D2,y,$bias2]=saved,dyActivation=getFusedDyActivation(dy,y,activation2);assert(tupleValuesAreOne(dilations),()=>`Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${dilations}'`);let xDer=conv2DBackpropInput(x4D2.shape,dyActivation,$filter2,strides,pad3),filterDer=conv2DBackpropFilter(x4D2,dyActivation,$filter2.shape,strides,pad3),der=[xDer,filterDer];if($bias2!=null){let biasDer=getFusedBiasGradient($bias2,dyActivation);der.push(biasDer)}return der},inputs={x:x4D,filter:$filter,bias:$bias,preluActivationWeights:$preluActivationWeights},attrs={strides,pad:pad3,dataFormat,dilations,dimRoundingMode,activation:activation2,leakyreluAlpha};return bias==null?customGrad((x4D2,filter2,save)=>{let res=ENGINE.runKernel(FusedConv2D,inputs,attrs);return save([filter2,x4D2,res]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}})(x4D,$filter):customGrad((x4D2,filter2,bias2,save)=>{let res=ENGINE.runKernel(FusedConv2D,inputs,attrs);return save([filter2,x4D2,res,bias2]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}})(x4D,$filter,$bias)}var conv2d2=op({fusedConv2d_});function depthwiseConv2dNativeBackpropFilter_(x,dy,filterShape,strides,pad3,dilations=[1,1],dimRoundingMode){let x4D=x;x.rank===3&&(x4D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]));let dy4D=dy;dy4D.rank===3&&(dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]]));let inputs={x:x4D,dy:dy4D},attrs={strides,pad:pad3,dimRoundingMode,dilations,filterShape};return ENGINE.runKernel(DepthwiseConv2dNativeBackpropFilter,inputs,attrs)}var depthwiseConv2dNativeBackpropFilter=op({depthwiseConv2dNativeBackpropFilter_});function depthwiseConv2dNativeBackpropInput_(xShape,dy,filter,strides,pad3,dilations=[1,1],dimRoundingMode){let dy4D=dy,reshapedTo4D=!1;dy.rank===3&&(reshapedTo4D=!0,dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]]));let inputs={dy:dy4D,filter},attrs={strides,pad:pad3,dimRoundingMode,dilations,inputShape:xShape},res=ENGINE.runKernel(DepthwiseConv2dNativeBackpropInput,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var depthwiseConv2dNativeBackpropInput=op({depthwiseConv2dNativeBackpropInput_});function fusedDepthwiseConv2d_({x,filter,strides,pad:pad3,dataFormat="NHWC",dilations=[1,1],dimRoundingMode,bias,activation:activation2="linear",preluActivationWeights,leakyreluAlpha}){if(shouldFuse(ENGINE.state.gradientDepth,activation2)===!1){let result=depthwiseConv2d(x,filter,strides,pad3,dataFormat,dilations,dimRoundingMode);return bias!=null&&(result=add2(result,bias)),applyActivation(result,activation2,preluActivationWeights,leakyreluAlpha)}let $x=convertToTensor(x,"x","depthwiseConv2d"),$filter=convertToTensor(filter,"filter","depthwiseConv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in fused depthwiseConv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in fused depthwiseConv2d: filter must be rank 4, but got rank ${$filter.rank}.`),assert(x4D.shape[3]===$filter.shape[2],()=>`Error in fused depthwiseConv2d: number of input channels (${x4D.shape[3]}) must match the inChannels dimension in filter ${$filter.shape[2]}.`),dilations==null&&(dilations=[1,1]),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in fused depthwiseConv2d: pad must be an integer when using dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad3,dimRoundingMode,!0),$bias;bias!=null&&($bias=convertToTensor(bias,"bias","fused conv2d"),[$bias]=makeTypesMatch($bias,$x),assertAndGetBroadcastShape(convInfo.outShape,$bias.shape));let $preluActivationWeights;preluActivationWeights!=null&&($preluActivationWeights=convertToTensor(preluActivationWeights,"prelu weights","fused depthwiseConv2d"));let grad2=(dy,saved)=>{assert(tupleValuesAreOne(dilations),()=>`Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '${dilations}'`);let[$filter2,x4D2,y,bias2]=saved,dyActivation=getFusedDyActivation(dy,y,activation2),xDer=depthwiseConv2dNativeBackpropInput(x4D2.shape,dyActivation,$filter2,strides,pad3,dilations,dimRoundingMode),filterDer=depthwiseConv2dNativeBackpropFilter(x4D2,dyActivation,$filter2.shape,strides,pad3,dilations,dimRoundingMode);if(bias2!=null){let biasDer=getFusedBiasGradient($bias,dyActivation);return[xDer,filterDer,biasDer]}return[xDer,filterDer]},inputs={x:x4D,filter:$filter,bias:$bias,preluActivationWeights:$preluActivationWeights},attrs={strides,pad:pad3,dataFormat,dilations,dimRoundingMode,activation:activation2,leakyreluAlpha};return bias==null?customGrad((x4D2,filter2,save)=>{let res=ENGINE.runKernel(FusedDepthwiseConv2D,inputs,attrs);return save([filter2,x4D2,res]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}})(x4D,$filter):customGrad((x4D2,filter2,bias2,save)=>{let res=ENGINE.runKernel(FusedDepthwiseConv2D,inputs,attrs);return save([filter2,x4D2,res,bias2]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}})(x4D,$filter,$bias)}var depthwiseConv2d2=op({fusedDepthwiseConv2d_});function fusedMatMul_({a,b,transposeA=!1,transposeB=!1,bias,activation:activation2="linear",preluActivationWeights,leakyreluAlpha}){if(shouldFuse(ENGINE.state.gradientDepth,activation2)===!1){let result=matMul(a,b,transposeA,transposeB);return bias!=null&&(result=add2(result,bias)),applyActivation(result,activation2,preluActivationWeights,leakyreluAlpha)}let $a=convertToTensor(a,"a","fused matMul"),$b=convertToTensor(b,"b","fused matMul");[$a,$b]=makeTypesMatch($a,$b);let innerShapeA=transposeA?$a.shape[$a.rank-2]:$a.shape[$a.rank-1],innerShapeB=transposeB?$b.shape[$b.rank-1]:$b.shape[$b.rank-2],outerShapeA=transposeA?$a.shape[$a.rank-1]:$a.shape[$a.rank-2],outerShapeB=transposeB?$b.shape[$b.rank-2]:$b.shape[$b.rank-1],outerDimsA=$a.shape.slice(0,-2),outerDimsB=$b.shape.slice(0,-2),batchDimA=sizeFromShape(outerDimsA),batchDimB=sizeFromShape(outerDimsB);assert($a.rank>=2&&$b.rank>=2&&$a.rank===$b.rank,()=>`Error in fused matMul: inputs must have the same rank of at least 2, got ranks ${$a.rank} and ${$b.rank}.`),assert(arraysEqual(outerDimsA,outerDimsB),()=>`Error in fused matMul: outer dimensions (${outerDimsA}) and (${outerDimsB}) of Tensors with shapes ${$a.shape} and ${$b.shape} must match.`),assert(innerShapeA===innerShapeB,()=>`Error in fused matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${$a.shape} and ${$b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let outShape=$a.shape.slice(0,-2).concat([outerShapeA,outerShapeB]),a3D=transposeA?reshape($a,[batchDimA,innerShapeA,outerShapeA]):reshape($a,[batchDimA,outerShapeA,innerShapeA]),b3D=transposeB?reshape($b,[batchDimB,outerShapeB,innerShapeB]):reshape($b,[batchDimB,innerShapeB,outerShapeB]),$bias;bias!=null&&($bias=convertToTensor(bias,"bias","fused matMul"),[$bias]=makeTypesMatch($bias,$a),assertAndGetBroadcastShape(outShape,$bias.shape));let $preluActivationWeights;preluActivationWeights!=null&&($preluActivationWeights=convertToTensor(preluActivationWeights,"prelu weights","fused matMul"));let grad2=(dy,saved)=>{let[a3D2,b3D2,y,$bias2]=saved,dyActivation=getFusedDyActivation(reshape(dy,y.shape),y,activation2),aDer,bDer;if(!transposeA&&!transposeB?(aDer=matMul(dyActivation,b3D2,!1,!0),bDer=matMul(a3D2,dyActivation,!0,!1)):!transposeA&&transposeB?(aDer=matMul(dyActivation,b3D2,!1,!1),bDer=matMul(dyActivation,a3D2,!0,!1)):transposeA&&!transposeB?(aDer=matMul(b3D2,dyActivation,!1,!0),bDer=matMul(a3D2,dyActivation,!1,!1)):(aDer=matMul(b3D2,dyActivation,!0,!0),bDer=matMul(dyActivation,a3D2,!0,!0)),bias!=null){let biasDer=getFusedBiasGradient($bias2,dyActivation);return[aDer,bDer,biasDer]}else return[aDer,bDer]},inputs={a:a3D,b:b3D,bias:$bias,preluActivationWeights:$preluActivationWeights},attrs={transposeA,transposeB,activation:activation2,leakyreluAlpha};return bias==null?customGrad((a3D2,b3D2,save)=>{let res=ENGINE.runKernel(_FusedMatMul,inputs,attrs);return save([a3D2,b3D2,res]),{value:reshape(res,outShape),gradFunc:grad2}})(a3D,b3D):customGrad((a3D2,b3D2,$bias2,save)=>{let res=ENGINE.runKernel(_FusedMatMul,inputs,attrs);return save([a3D2,b3D2,res,$bias2]),{value:reshape(res,outShape),gradFunc:grad2}})(a3D,b3D,$bias)}var matMul2=op({fusedMatMul_});function hammingWindow_(windowLength){return cosineWindow(windowLength,.54,.46)}var hammingWindow=op({hammingWindow_});function hannWindow_(windowLength){return cosineWindow(windowLength,.5,.5)}var hannWindow=op({hannWindow_});function frame_(signal2,frameLength,frameStep,padEnd=!1,padValue=0){let start=0,output=[];for(;start+frameLength<=signal2.size;)output.push(slice(signal2,start,frameLength)),start+=frameStep;if(padEnd)for(;start`Error in cropAndResize: image must be rank 4,but got rank ${$image.rank}.`),assert($boxes.rank===2&&$boxes.shape[1]===4,()=>`Error in cropAndResize: boxes must be have size [${numBoxes},4] but had shape ${$boxes.shape}.`),assert($boxInd.rank===1&&$boxInd.shape[0]===numBoxes,()=>`Error in cropAndResize: boxInd must be have size [${numBoxes}] but had shape ${$boxes.shape}.`),assert(cropSize.length===2,()=>`Error in cropAndResize: cropSize must be of length 2, but got length ${cropSize.length}.`),assert(cropSize[0]>=1&&cropSize[1]>=1,()=>`cropSize must be atleast [1,1], but was ${cropSize}`),assert(method==="bilinear"||method==="nearest",()=>`method must be bilinear or nearest, but was ${method}`);let inputs={image:$image,boxes:$boxes,boxInd:$boxInd},attrs={method,extrapolationValue,cropSize};return ENGINE.runKernel(CropAndResize,inputs,attrs)}var cropAndResize=op({cropAndResize_});function flipLeftRight_(image3){let $image=convertToTensor(image3,"image","flipLeftRight","float32");assert($image.rank===4,()=>`Error in flipLeftRight: image must be rank 4,but got rank ${$image.rank}.`);let inputs={image:$image};return ENGINE.runKernel(FlipLeftRight,inputs,{})}var flipLeftRight=op({flipLeftRight_});function rotateWithOffset_(image3,radians,fillValue=0,center=.5){let $image=convertToTensor(image3,"image","rotateWithOffset","float32");assert($image.rank===4,()=>`Error in rotateWithOffset: image must be rank 4,but got rank ${$image.rank}.`);let inputs={image:$image},attrs={radians,fillValue,center};return ENGINE.runKernel(RotateWithOffset,inputs,attrs)}var rotateWithOffset=op({rotateWithOffset_});function nonMaxSuppSanityCheck(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma){iouThreshold==null&&(iouThreshold=.5),scoreThreshold==null&&(scoreThreshold=Number.NEGATIVE_INFINITY),softNmsSigma==null&&(softNmsSigma=0);let numBoxes=boxes.shape[0];return maxOutputSize=Math.min(maxOutputSize,numBoxes),assert(0<=iouThreshold&&iouThreshold<=1,()=>`iouThreshold must be in [0, 1], but was '${iouThreshold}'`),assert(boxes.rank===2,()=>`boxes must be a 2D tensor, but was of rank '${boxes.rank}'`),assert(boxes.shape[1]===4,()=>`boxes must have 4 columns, but 2nd dimension was ${boxes.shape[1]}`),assert(scores.rank===1,()=>"scores must be a 1D tensor"),assert(scores.shape[0]===numBoxes,()=>`scores has incompatible shape with boxes. Expected ${numBoxes}, but was ${scores.shape[0]}`),assert(0<=softNmsSigma&&softNmsSigma<=1,()=>`softNmsSigma must be in [0, 1], but was '${softNmsSigma}'`),{maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}}function nonMaxSuppression_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppression"),$scores=convertToTensor(scores,"scores","nonMaxSuppression"),inputs=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold);maxOutputSize=inputs.maxOutputSize,iouThreshold=inputs.iouThreshold,scoreThreshold=inputs.scoreThreshold;let attrs={maxOutputSize,iouThreshold,scoreThreshold};return ENGINE.runKernel(NonMaxSuppressionV3,{boxes:$boxes,scores:$scores},attrs)}var nonMaxSuppression=op({nonMaxSuppression_});function binaryInsert(arr,element,comparator){let index=binarySearch(arr,element,comparator),insertionPoint=index<0?-(index+1):index;arr.splice(insertionPoint,0,element)}function binarySearch(arr,target,comparator){return binarySearch_(arr,target,comparator||defaultComparator)}function defaultComparator(a,b){return a>b?1:a>>1);let compareResult=comparator(target,arr[middle]);compareResult>0?left=middle+1:(right=middle,found=!compareResult)}return found?left:-left-1}function nonMaxSuppressionV3Impl(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){return nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,0)}function nonMaxSuppressionV4Impl(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize){return nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,0,!1,padToMaxOutputSize,!0)}function nonMaxSuppressionV5Impl(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma){return nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma,!0)}function nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma,returnScoresTensor=!1,padToMaxOutputSize=!1,returnValidOutputs=!1){let candidates=[];for(let i=0;iscoreThreshold&&candidates.push({score:scores[i],boxIndex:i,suppressBeginIndex:0});candidates.sort(ascendingComparator);let scale22=softNmsSigma>0?-.5/softNmsSigma:0,selectedIndices=[],selectedScores=[];for(;selectedIndices.length0;){let candidate=candidates.pop(),{score:originalScore,boxIndex,suppressBeginIndex}=candidate;if(originalScore=suppressBeginIndex;--j){let iou2=intersectionOverUnion(boxes,boxIndex,selectedIndices[j]);if(iou2>=iouThreshold){ignoreCandidate=!0;break}if(candidate.score=candidate.score*suppressWeight(iouThreshold,scale22,iou2),candidate.score<=scoreThreshold)break}candidate.suppressBeginIndex=selectedIndices.length,ignoreCandidate||(candidate.score===originalScore?(selectedIndices.push(boxIndex),selectedScores.push(candidate.score)):candidate.score>scoreThreshold&&binaryInsert(candidates,candidate,ascendingComparator))}let validOutputs=selectedIndices.length,elemsToPad=maxOutputSize-validOutputs;padToMaxOutputSize&&elemsToPad>0&&(selectedIndices.push(...new Array(elemsToPad).fill(0)),selectedScores.push(...new Array(elemsToPad).fill(0)));let result={selectedIndices};return returnScoresTensor&&(result.selectedScores=selectedScores),returnValidOutputs&&(result.validOutputs=validOutputs),result}function intersectionOverUnion(boxes,i,j){let iCoord=boxes.subarray(i*4,i*4+4),jCoord=boxes.subarray(j*4,j*4+4),yminI=Math.min(iCoord[0],iCoord[2]),xminI=Math.min(iCoord[1],iCoord[3]),ymaxI=Math.max(iCoord[0],iCoord[2]),xmaxI=Math.max(iCoord[1],iCoord[3]),yminJ=Math.min(jCoord[0],jCoord[2]),xminJ=Math.min(jCoord[1],jCoord[3]),ymaxJ=Math.max(jCoord[0],jCoord[2]),xmaxJ=Math.max(jCoord[1],jCoord[3]),areaI=(ymaxI-yminI)*(xmaxI-xminI),areaJ=(ymaxJ-yminJ)*(xmaxJ-xminJ);if(areaI<=0||areaJ<=0)return 0;let intersectionYmin=Math.max(yminI,yminJ),intersectionXmin=Math.max(xminI,xminJ),intersectionYmax=Math.min(ymaxI,ymaxJ),intersectionXmax=Math.min(xmaxI,xmaxJ),intersectionArea=Math.max(intersectionYmax-intersectionYmin,0)*Math.max(intersectionXmax-intersectionXmin,0);return intersectionArea/(areaI+areaJ-intersectionArea)}function suppressWeight(iouThreshold,scale22,iou2){let weight=Math.exp(scale22*iou2*iou2);return iou2<=iouThreshold?weight:0}function ascendingComparator(c1,c2){return c1.score-c2.score||c1.score===c2.score&&c2.boxIndex-c1.boxIndex}async function nonMaxSuppressionAsync_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppressionAsync"),$scores=convertToTensor(scores,"scores","nonMaxSuppressionAsync"),inputs=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold);maxOutputSize=inputs.maxOutputSize,iouThreshold=inputs.iouThreshold,scoreThreshold=inputs.scoreThreshold;let boxesAndScores=await Promise.all([$boxes.data(),$scores.data()]),boxesVals=boxesAndScores[0],scoresVals=boxesAndScores[1],{selectedIndices}=nonMaxSuppressionV3Impl(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold);return $boxes!==boxes&&$boxes.dispose(),$scores!==scores&&$scores.dispose(),tensor1d(selectedIndices,"int32")}var nonMaxSuppressionAsync=nonMaxSuppressionAsync_;function nonMaxSuppressionWithScore_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,softNmsSigma=0){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppression"),$scores=convertToTensor(scores,"scores","nonMaxSuppression"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);maxOutputSize=params.maxOutputSize,iouThreshold=params.iouThreshold,scoreThreshold=params.scoreThreshold,softNmsSigma=params.softNmsSigma;let inputs={boxes:$boxes,scores:$scores},attrs={maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma},result=ENGINE.runKernel(NonMaxSuppressionV5,inputs,attrs);return{selectedIndices:result[0],selectedScores:result[1]}}var nonMaxSuppressionWithScore=op({nonMaxSuppressionWithScore_});async function nonMaxSuppressionWithScoreAsync_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,softNmsSigma=0){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppressionAsync"),$scores=convertToTensor(scores,"scores","nonMaxSuppressionAsync"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);maxOutputSize=params.maxOutputSize,iouThreshold=params.iouThreshold,scoreThreshold=params.scoreThreshold,softNmsSigma=params.softNmsSigma;let boxesAndScores=await Promise.all([$boxes.data(),$scores.data()]),boxesVals=boxesAndScores[0],scoresVals=boxesAndScores[1],{selectedIndices,selectedScores}=nonMaxSuppressionV5Impl(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);return $boxes!==boxes&&$boxes.dispose(),$scores!==scores&&$scores.dispose(),{selectedIndices:tensor1d(selectedIndices,"int32"),selectedScores:tensor1d(selectedScores)}}var nonMaxSuppressionWithScoreAsync=nonMaxSuppressionWithScoreAsync_;function nonMaxSuppressionPadded_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,padToMaxOutputSize=!1){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppression"),$scores=convertToTensor(scores,"scores","nonMaxSuppression"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,null),$maxOutputSize=params.maxOutputSize,$iouThreshold=params.iouThreshold,$scoreThreshold=params.scoreThreshold,inputs={boxes:$boxes,scores:$scores},attrs={maxOutputSize:$maxOutputSize,iouThreshold:$iouThreshold,scoreThreshold:$scoreThreshold,padToMaxOutputSize},result=ENGINE.runKernel(NonMaxSuppressionV4,inputs,attrs);return{selectedIndices:result[0],validOutputs:result[1]}}var nonMaxSuppressionPadded=op({nonMaxSuppressionPadded_});async function nonMaxSuppressionPaddedAsync_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,padToMaxOutputSize=!1){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppressionAsync"),$scores=convertToTensor(scores,"scores","nonMaxSuppressionAsync"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,null),$maxOutputSize=params.maxOutputSize,$iouThreshold=params.iouThreshold,$scoreThreshold=params.scoreThreshold,[boxesVals,scoresVals]=await Promise.all([$boxes.data(),$scores.data()]),{selectedIndices,validOutputs}=nonMaxSuppressionV4Impl(boxesVals,scoresVals,$maxOutputSize,$iouThreshold,$scoreThreshold,padToMaxOutputSize);return $boxes!==boxes&&$boxes.dispose(),$scores!==scores&&$scores.dispose(),{selectedIndices:tensor1d(selectedIndices,"int32"),validOutputs:scalar(validOutputs,"int32")}}var nonMaxSuppressionPaddedAsync=nonMaxSuppressionPaddedAsync_;function resizeBilinear_(images,size,alignCorners=!1,halfPixelCenters=!1){let $images=convertToTensor(images,"images","resizeBilinear");assert($images.rank===3||$images.rank===4,()=>`Error in resizeBilinear: x must be rank 3 or 4, but got rank ${$images.rank}.`),assert(size.length===2,()=>`Error in resizeBilinear: new shape must 2D, but got shape ${size}.`),assert(halfPixelCenters===!1||alignCorners===!1,()=>"Error in resizeBilinear: If halfPixelCenters is true, alignCorners must be false.");let batchImages=$images,reshapedTo4D=!1;$images.rank===3&&(reshapedTo4D=!0,batchImages=reshape($images,[1,$images.shape[0],$images.shape[1],$images.shape[2]]));let[]=size,inputs={images:batchImages},attrs={alignCorners,halfPixelCenters,size},res=ENGINE.runKernel(ResizeBilinear,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var resizeBilinear=op({resizeBilinear_});function resizeNearestNeighbor_(images,size,alignCorners=!1,halfPixelCenters=!1){let $images=convertToTensor(images,"images","resizeNearestNeighbor");assert($images.rank===3||$images.rank===4,()=>`Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank ${$images.rank}.`),assert(size.length===2,()=>`Error in resizeNearestNeighbor: new shape must 2D, but got shape ${size}.`),assert($images.dtype==="float32"||$images.dtype==="int32",()=>"`images` must have `int32` or `float32` as dtype"),assert(halfPixelCenters===!1||alignCorners===!1,()=>"Error in resizeNearestNeighbor: If halfPixelCenters is true, alignCorners must be false.");let batchImages=$images,reshapedTo4D=!1;$images.rank===3&&(reshapedTo4D=!0,batchImages=reshape($images,[1,$images.shape[0],$images.shape[1],$images.shape[2]]));let[]=size,inputs={images:batchImages},attrs={alignCorners,halfPixelCenters,size},res=ENGINE.runKernel(ResizeNearestNeighbor,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var resizeNearestNeighbor=op({resizeNearestNeighbor_});function bandPart_(a,numLower,numUpper){assert(numLower%1==0,()=>`bandPart(): numLower must be an integer, got ${numLower}.`),assert(numUpper%1==0,()=>`bandPart(): numUpper must be an integer, got ${numUpper}.`);let $a=convertToTensor(a,"a","bandPart");assert($a.rank>=2,()=>`bandPart(): Rank must be at least 2, got ${$a.rank}.`);let shape=$a.shape,[M,N]=$a.shape.slice(-2);if(!(numLower<=M))throw new Error(`bandPart(): numLower (${numLower}) must not be greater than the number of rows (${M}).`);if(!(numUpper<=N))throw new Error(`bandPart(): numUpper (${numUpper}) must not be greater than the number of columns (${N}).`);numLower<0&&(numLower=M),numUpper<0&&(numUpper=N);let i=reshape(range(0,M,1,"int32"),[-1,1]),j=range(0,N,1,"int32"),ij=sub(i,j),inBand=logicalAnd(lessEqual(ij,scalar(+numLower,"int32")),greaterEqual(ij,scalar(-numUpper,"int32"))),zero=zeros([M,N],$a.dtype);return reshape(stack(unstack(reshape($a,[-1,M,N])).map(mat=>where(inBand,mat,zero))),shape)}var bandPart=op({bandPart_});function gramSchmidt_(xs){let inputIsTensor2D;if(Array.isArray(xs)){inputIsTensor2D=!1,assert(xs!=null&&xs.length>0,()=>"Gram-Schmidt process: input must not be null, undefined, or empty");let dim=xs[0].shape[0];for(let i=1;i`Gram-Schmidt: Non-unique lengths found in the input vectors: (${xs[i].shape[0]} vs. ${dim})`)}else inputIsTensor2D=!0,xs=split(xs,xs.shape[0],0).map(x=>squeeze(x,[0]));assert(xs.length<=xs[0].shape[0],()=>`Gram-Schmidt: Number of vectors (${xs.length}) exceeds number of dimensions (${xs[0].shape[0]}).`);let ys=[],xs1d=xs;for(let i=0;i{let x=xs1d[i];if(i>0)for(let j=0;j=2,()=>`qr() requires input tensor to have a rank >= 2, but got rank ${x.rank}`),x.rank===2)return qr2d(x,fullMatrices);{let outerDimsProd=x.shape.slice(0,x.shape.length-2).reduce((value,prev)=>value*prev),x2ds=unstack(reshape(x,[outerDimsProd,x.shape[x.shape.length-2],x.shape[x.shape.length-1]]),0),q2ds=[],r2ds=[];x2ds.forEach(x2d=>{let[q2d,r2d]=qr2d(x2d,fullMatrices);q2ds.push(q2d),r2ds.push(r2d)});let q=reshape(stack(q2ds,0),x.shape),r=reshape(stack(r2ds,0),x.shape);return[q,r]}}function qr2d(x,fullMatrices=!1){return ENGINE.tidy(()=>{assert(x.shape.length===2,()=>`qr2d() requires a 2D Tensor, but got a ${x.shape.length}D Tensor.`);let m=x.shape[0],n=x.shape[1],q=eye(m),r=clone(x),one2D=tensor2d([[1]],[1,1]),w=clone(one2D),iters=m>=n?n:m;for(let j=0;j{let rjEnd1=slice(r,[j,j],[m-j,1]),normX=norm(rjEnd1),rjj=slice(r,[j,j],[1,1]),s=where(greater(rjj,0),tensor2d([[-1]]),tensor2d([[1]])),u1=sub(rjj,mul(s,normX)),wPre=div(rjEnd1,u1);wPre.shape[0]===1?w=clone(one2D):w=concat([one2D,slice(wPre,[1,0],[wPre.shape[0]-1,wPre.shape[1]])],0);let tau=neg(div(matMul(s,u1),normX)),rjEndAll=slice(r,[j,0],[m-j,n]),tauTimesW=mul(tau,w),wT=transpose(w);if(j===0)r=sub(rjEndAll,matMul(tauTimesW,matMul(wT,rjEndAll)));else{let rTimesTau=sub(rjEndAll,matMul(tauTimesW,matMul(wT,rjEndAll)));r=concat([slice(r,[0,0],[j,n]),rTimesTau],0)}let tawTimesWT=transpose(tauTimesW),qAllJEnd=slice(q,[0,j],[m,q.shape[1]-j]);if(j===0)q=sub(qAllJEnd,matMul(matMul(qAllJEnd,w),tawTimesWT));else{let qTimesTau=sub(qAllJEnd,matMul(matMul(qAllJEnd,w),tawTimesWT));q=concat([slice(q,[0,0],[m,j]),qTimesTau],1)}return[w,r,q]}),dispose([rTemp,wTemp,qTemp])}return!fullMatrices&&m>n&&(q=slice(q,[0,0],[m,n]),r=slice(r,[0,0],[n,n])),[q,r]})}var qr=op({qr_}),Reduction;(function(Reduction2){Reduction2[Reduction2.NONE=0]="NONE",Reduction2[Reduction2.MEAN=1]="MEAN",Reduction2[Reduction2.SUM=2]="SUM",Reduction2[Reduction2.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"})(Reduction||(Reduction={}));function computeWeightedLoss_(losses4,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $losses=convertToTensor(losses4,"losses","computeWeightedLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","computeWeightedLoss"));let weightedLoss=$weights==null?$losses:mul($losses,$weights);if(reduction2===Reduction.NONE)return weightedLoss;if(reduction2===Reduction.SUM)return sum2(weightedLoss);if(reduction2===Reduction.MEAN){if($weights==null)return mean(weightedLoss);{let broadcastFactor=$losses.size/$weights.size,result=div(sum2(weightedLoss),sum2($weights));return broadcastFactor>1?div(result,scalar(broadcastFactor)):result}}if(reduction2===Reduction.SUM_BY_NONZERO_WEIGHTS){if($weights==null)return div(sum2(weightedLoss),scalar($losses.size));{let broadcastedWeights=mul($weights,ones2($losses.shape)),numNonZeros=cast(sum2(notEqual(broadcastedWeights,scalar(0))),"float32");return div(sum2(weightedLoss),numNonZeros)}}throw Error(`Unknown reduction: ${reduction2}`)}var computeWeightedLoss=op({computeWeightedLoss_});function absoluteDifference_(labels,predictions,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","absoluteDifference"),$predictions=convertToTensor(predictions,"predictions","absoluteDifference"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","absoluteDifference")),assertShapesMatch($labels.shape,$predictions.shape,"Error in absoluteDifference: ");let losses4=abs(sub($labels,$predictions));return computeWeightedLoss(losses4,$weights,reduction2)}var absoluteDifference=op({absoluteDifference_});function cosineDistance_(labels,predictions,axis,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","cosineDistance"),$predictions=convertToTensor(predictions,"predictions","cosineDistance"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","cosineDistance")),assertShapesMatch($labels.shape,$predictions.shape,"Error in cosineDistance: ");let one=scalar(1),losses4=sub(one,sum2(mul($labels,$predictions),axis,!0));return computeWeightedLoss(losses4,$weights,reduction2)}var cosineDistance=op({cosineDistance_});function hingeLoss_(labels,predictions,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","hingeLoss"),$predictions=convertToTensor(predictions,"predictions","hingeLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","hingeLoss")),assertShapesMatch($labels.shape,$predictions.shape,"Error in hingeLoss: ");let one=scalar(1);$labels=sub(mul(scalar(2),$labels),one);let losses4=relu(sub(one,mul($labels,$predictions)));return computeWeightedLoss(losses4,$weights,reduction2)}var hingeLoss=op({hingeLoss_});function huberLoss_(labels,predictions,weights,delta=1,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","huberLoss"),$predictions=convertToTensor(predictions,"predictions","huberLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","huberLoss")),assertShapesMatch($labels.shape,$predictions.shape,"Error in huberLoss: ");let deltaScalar=scalar(delta),error=abs(sub($predictions,$labels)),quadratic=minimum(error,deltaScalar),linear=sub(error,quadratic),losses4=add2(mul(scalar(.5),square(quadratic)),mul(deltaScalar,linear));return computeWeightedLoss(losses4,$weights,reduction2)}var huberLoss=op({huberLoss_});function logLoss_(labels,predictions,weights,epsilon32=1e-7,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","logLoss"),$predictions=convertToTensor(predictions,"predictions","logLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","logLoss")),assertShapesMatch($labels.shape,$predictions.shape,"Error in logLoss: ");let one=scalar(1),epsilonScalar=scalar(epsilon32),l13=neg(mul($labels,log(add2($predictions,epsilonScalar)))),l23=mul(sub(one,$labels),log(add2(sub(one,$predictions),epsilonScalar))),losses4=sub(l13,l23);return computeWeightedLoss(losses4,$weights,reduction2)}var logLoss=op({logLoss_});function meanSquaredError_(labels,predictions,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","meanSquaredError"),$predictions=convertToTensor(predictions,"predictions","meanSquaredError"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","meanSquaredError")),assertShapesMatch($labels.shape,$predictions.shape,"Error in meanSquaredError: ");let losses4=squaredDifference($labels,$predictions);return computeWeightedLoss(losses4,$weights,reduction2)}var meanSquaredError=op({meanSquaredError_});function sigmoidCrossEntropyWithLogits_(labels,logits){let $labels=convertToTensor(labels,"labels","sigmoidCrossEntropyWithLogits"),$logits=convertToTensor(logits,"logits","sigmoidCrossEntropyWithLogits");assertShapesMatch($labels.shape,$logits.shape,"Error in sigmoidCrossEntropyWithLogits: ");let maxOutput=relu($logits),outputXTarget=mul($logits,$labels),sigmoidOutput=log1p(exp(neg(abs($logits))));return add2(sub(maxOutput,outputXTarget),sigmoidOutput)}function sigmoidCrossEntropy_(multiClassLabels,logits,weights,labelSmoothing=0,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $multiClassLabels=convertToTensor(multiClassLabels,"multiClassLabels","sigmoidCrossEntropy"),$logits=convertToTensor(logits,"logits","sigmoidCrossEntropy"),$weights=null;if(weights!=null&&($weights=convertToTensor(weights,"weights","sigmoidCrossEntropy")),assertShapesMatch($multiClassLabels.shape,$logits.shape,"Error in sigmoidCrossEntropy: "),labelSmoothing>0){let labelSmoothingScalar=scalar(labelSmoothing),one=scalar(1),half=scalar(.5);$multiClassLabels=add2(mul($multiClassLabels,sub(one,labelSmoothingScalar)),mul(half,labelSmoothingScalar))}let losses4=sigmoidCrossEntropyWithLogits_($multiClassLabels,$logits);return computeWeightedLoss(losses4,$weights,reduction2)}var sigmoidCrossEntropy=op({sigmoidCrossEntropy_});function softmaxCrossEntropyWithLogits_(labels,logits,dim=-1){if(dim===-1&&(dim=logits.rank-1),dim!==logits.rank-1)throw Error(`Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank ${logits.rank} and dim was ${dim}`);return customGrad((labels2,logits2,save)=>{let lse=logSumExp(logits2,[dim],!0),logResult=sub(cast(logits2,"float32"),lse);save([labels2,logResult]);let costVector=neg(mul(logResult,labels2));return{value:sum2(costVector,[dim]),gradFunc:(dy,saved)=>{let[labels3,logResult2]=saved,dyShape=expandShapeToKeepDim(dy.shape,[dim]);return[mul(reshape(dy,dyShape),sub(cast(labels3,"float32"),exp(logResult2))),mul(reshape(dy,dyShape),sub(exp(logResult2),cast(labels3,"float32")))]}}})(labels,logits)}function softmaxCrossEntropy_(onehotLabels,logits,weights,labelSmoothing=0,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $onehotLabels=convertToTensor(onehotLabels,"onehotLabels","softmaxCrossEntropy"),$logits=convertToTensor(logits,"logits","softmaxCrossEntropy"),$weights=null;if(weights!=null&&($weights=convertToTensor(weights,"weights","softmaxCrossEntropy")),assertShapesMatch($onehotLabels.shape,$logits.shape,"Error in softmaxCrossEntropy: "),labelSmoothing>0){let labelSmoothingScalar=scalar(labelSmoothing),one=scalar(1),numClasses=scalar($onehotLabels.shape[1]);$onehotLabels=add2(mul($onehotLabels,sub(one,labelSmoothingScalar)),div(labelSmoothingScalar,numClasses))}let losses4=softmaxCrossEntropyWithLogits_($onehotLabels,$logits);return computeWeightedLoss(losses4,$weights,reduction2)}var softmaxCrossEntropy=op({softmaxCrossEntropy_}),spectral={fft,ifft,rfft,irfft},signal={hammingWindow,hannWindow,frame,stft},image={flipLeftRight,resizeNearestNeighbor,resizeBilinear,rotateWithOffset,cropAndResize,nonMaxSuppression,nonMaxSuppressionAsync,nonMaxSuppressionWithScore,nonMaxSuppressionWithScoreAsync,nonMaxSuppressionPadded,nonMaxSuppressionPaddedAsync},linalg={bandPart,gramSchmidt,qr},losses={absoluteDifference,computeWeightedLoss,cosineDistance,hingeLoss,huberLoss,logLoss,meanSquaredError,sigmoidCrossEntropy,softmaxCrossEntropy},Optimizer=class extends Serializable{minimize(f,returnCost=!1,varList){let{value,grads:grads2}=this.computeGradients(f,varList);if(varList!=null){let gradArray=varList.map(v=>({name:v.name,tensor:grads2[v.name]}));this.applyGradients(gradArray)}else this.applyGradients(grads2);return dispose(grads2),returnCost?value:(value.dispose(),null)}get iterations(){return this.iterations_==null&&(this.iterations_=0),this.iterations_}incrementIterations(){this.iterations_=this.iterations+1}computeGradients(f,varList){return variableGrads(f,varList)}dispose(){this.iterations_!=null&&dispose(this.iterations_)}async saveIterations(){return this.iterations_==null&&(this.iterations_=0),{name:"iter",tensor:scalar(this.iterations_,"int32")}}async getWeights(){throw new Error("getWeights() is not implemented for this optimizer yet.")}async setWeights(weightValues){throw new Error(`setWeights() is not implemented for this optimizer class ${this.getClassName()}`)}async extractIterations(weightValues){return this.iterations_=(await weightValues[0].tensor.data())[0],weightValues.slice(1)}};Object.defineProperty(Optimizer,Symbol.hasInstance,{value:instance=>instance.minimize!=null&&instance.computeGradients!=null&&instance.applyGradients!=null});var AdadeltaOptimizer=class extends Optimizer{constructor(learningRate,rho,epsilon32=null){super();this.learningRate=learningRate,this.rho=rho,this.epsilon=epsilon32,this.accumulatedGrads=[],this.accumulatedUpdates=[],epsilon32==null&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(variableGradients){(Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients)).forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedGrads[i]==null&&(this.accumulatedGrads[i]={originalName:`${name}/accum_grad`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedUpdates[i]==null&&(this.accumulatedUpdates[i]={originalName:`${name}/accum_var`,variable:tidy(()=>zerosLike(value).variable(trainable))});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let accumulatedGrad=this.accumulatedGrads[i].variable,accumulatedUpdate=this.accumulatedUpdates[i].variable;tidy(()=>{let newAccumulatedGrad=add2(mul(accumulatedGrad,this.rho),mul(square(gradient),1-this.rho)),updates=mul(div(sqrt(add2(accumulatedUpdate,this.epsilon)),sqrt(add2(accumulatedGrad,this.epsilon))),gradient),newAccumulatedUpdate=add2(mul(accumulatedUpdate,this.rho),mul(square(updates),1-this.rho));accumulatedGrad.assign(newAccumulatedGrad),accumulatedUpdate.assign(newAccumulatedUpdate);let newValue=add2(mul(updates,-this.learningRate),value);value.assign(newValue)})}),this.incrementIterations()}dispose(){this.accumulatedUpdates!=null&&(dispose(this.accumulatedGrads.map(v=>v.variable)),dispose(this.accumulatedUpdates.map(v=>v.variable)))}async getWeights(){let variables=[...this.accumulatedGrads,...this.accumulatedUpdates];return[await this.saveIterations()].concat(variables.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let variableCount=weightValues.length/2,trainable=!1;this.accumulatedGrads=weightValues.slice(0,variableCount).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.accumulatedUpdates=weightValues.slice(variableCount,variableCount*2).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}}static fromConfig(cls,config){return new cls(config.learningRate,config.rho,config.epsilon)}};AdadeltaOptimizer.className="Adadelta";registerClass(AdadeltaOptimizer);var AdagradOptimizer=class extends Optimizer{constructor(learningRate,initialAccumulatorValue=.1){super();this.learningRate=learningRate,this.initialAccumulatorValue=initialAccumulatorValue,this.accumulatedGrads=[]}applyGradients(variableGradients){(Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients)).forEach((name,i)=>{let value=ENGINE.registeredVariables[name];if(this.accumulatedGrads[i]==null){let trainable=!1;this.accumulatedGrads[i]={originalName:`${name}/accumulator`,variable:tidy(()=>fill(value.shape,this.initialAccumulatorValue).variable(trainable))}}let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let accumulatedGrad=this.accumulatedGrads[i].variable;tidy(()=>{let newAccumulatedGrad=add2(accumulatedGrad,square(gradient));accumulatedGrad.assign(newAccumulatedGrad);let newValue=add2(mul(div(gradient,sqrt(add2(newAccumulatedGrad,ENGINE.backend.epsilon()))),-this.learningRate),value);value.assign(newValue)})}),this.incrementIterations()}dispose(){this.accumulatedGrads!=null&&dispose(this.accumulatedGrads.map(v=>v.variable))}async getWeights(){return[await this.saveIterations()].concat(this.accumulatedGrads.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let trainable=!1;this.accumulatedGrads=weightValues.map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}}static fromConfig(cls,config){return new cls(config.learningRate,config.initialAccumulatorValue)}};AdagradOptimizer.className="Adagrad";registerClass(AdagradOptimizer);var AdamOptimizer=class extends Optimizer{constructor(learningRate,beta1,beta2,epsilon32=null){super();this.learningRate=learningRate,this.beta1=beta1,this.beta2=beta2,this.epsilon=epsilon32,this.accumulatedFirstMoment=[],this.accumulatedSecondMoment=[],tidy(()=>{this.accBeta1=scalar(beta1).variable(),this.accBeta2=scalar(beta2).variable()}),epsilon32==null&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(variableGradients){let varNames=Array.isArray(variableGradients)?variableGradients.map(v=>v.name):Object.keys(variableGradients);tidy(()=>{let oneMinusAccBeta1=sub(1,this.accBeta1),oneMinusAccBeta2=sub(1,this.accBeta2);varNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedFirstMoment[i]==null&&(this.accumulatedFirstMoment[i]={originalName:`${name}/m`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedSecondMoment[i]==null&&(this.accumulatedSecondMoment[i]={originalName:`${name}/v`,variable:tidy(()=>zerosLike(value).variable(trainable))});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let firstMoment=this.accumulatedFirstMoment[i].variable,secondMoment=this.accumulatedSecondMoment[i].variable,newFirstMoment=add2(mul(firstMoment,this.beta1),mul(gradient,1-this.beta1)),newSecondMoment=add2(mul(secondMoment,this.beta2),mul(square(gradient),1-this.beta2)),biasCorrectedFirstMoment=div(newFirstMoment,oneMinusAccBeta1),biasCorrectedSecondMoment=div(newSecondMoment,oneMinusAccBeta2);firstMoment.assign(newFirstMoment),secondMoment.assign(newSecondMoment);let newValue=add2(mul(div(biasCorrectedFirstMoment,add2(sqrt(biasCorrectedSecondMoment),this.epsilon)),-this.learningRate),value);value.assign(newValue)}),this.accBeta1.assign(mul(this.accBeta1,this.beta1)),this.accBeta2.assign(mul(this.accBeta2,this.beta2))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.accBeta2.dispose(),this.accumulatedFirstMoment!=null&&dispose(this.accumulatedFirstMoment.map(v=>v.variable)),this.accumulatedSecondMoment!=null&&dispose(this.accumulatedSecondMoment.map(v=>v.variable))}async getWeights(){let variables=[...this.accumulatedFirstMoment,...this.accumulatedSecondMoment];return[await this.saveIterations()].concat(variables.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues),tidy(()=>{this.accBeta1.assign(pow(this.beta1,this.iterations_+1)),this.accBeta2.assign(pow(this.beta2,this.iterations_+1))});let variableCount=weightValues.length/2,trainable=!1;this.accumulatedFirstMoment=weightValues.slice(0,variableCount).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.accumulatedSecondMoment=weightValues.slice(variableCount,variableCount*2).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}}static fromConfig(cls,config){return new cls(config.learningRate,config.beta1,config.beta2,config.epsilon)}};AdamOptimizer.className="Adam";registerClass(AdamOptimizer);var AdamaxOptimizer=class extends Optimizer{constructor(learningRate,beta1,beta2,epsilon32=null,decay=0){super();this.learningRate=learningRate,this.beta1=beta1,this.beta2=beta2,this.epsilon=epsilon32,this.decay=decay,this.accumulatedFirstMoment=[],this.accumulatedWeightedInfNorm=[],tidy(()=>{this.iteration=scalar(0).variable(),this.accBeta1=scalar(beta1).variable()}),epsilon32==null&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);tidy(()=>{let oneMinusAccBeta1=sub(1,this.accBeta1),lr=div(-this.learningRate,add2(mul(this.iteration,this.decay),1));variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedFirstMoment[i]==null&&(this.accumulatedFirstMoment[i]={originalName:`${name}/m`,variable:zerosLike(value).variable(trainable)}),this.accumulatedWeightedInfNorm[i]==null&&(this.accumulatedWeightedInfNorm[i]={originalName:`${name}/v`,variable:zerosLike(value).variable(trainable)});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let firstMoment=this.accumulatedFirstMoment[i].variable,weightedInfNorm=this.accumulatedWeightedInfNorm[i].variable,newFirstMoment=add2(mul(firstMoment,this.beta1),mul(gradient,1-this.beta1)),ut0=mul(weightedInfNorm,this.beta2),ut1=abs(gradient),newWeightedInfNorm=maximum(ut0,ut1);firstMoment.assign(newFirstMoment),weightedInfNorm.assign(newWeightedInfNorm);let newValue=add2(mul(div(lr,oneMinusAccBeta1),div(newFirstMoment,add2(newWeightedInfNorm,this.epsilon))),value);value.assign(newValue)}),this.iteration.assign(add2(this.iteration,1)),this.accBeta1.assign(mul(this.accBeta1,this.beta1))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.iteration.dispose(),this.accumulatedFirstMoment!=null&&dispose(this.accumulatedFirstMoment.map(v=>v.variable)),this.accumulatedWeightedInfNorm!=null&&dispose(this.accumulatedWeightedInfNorm.map(v=>v.variable))}async getWeights(){throw new Error("getWeights() is not implemented for Adamax yet.")}async setWeights(weightValues){throw new Error("setWeights() is not implemented for Adamax yet.")}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}}static fromConfig(cls,config){return new cls(config.learningRate,config.beta1,config.beta2,config.epsilon,config.decay)}};AdamaxOptimizer.className="Adamax";registerClass(AdamaxOptimizer);var SGDOptimizer=class extends Optimizer{constructor(learningRate){super();this.learningRate=learningRate,this.setLearningRate(learningRate)}applyGradients(variableGradients){(Array.isArray(variableGradients)?variableGradients.map(v=>v.name):Object.keys(variableGradients)).forEach((name,i)=>{let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let value=ENGINE.registeredVariables[name];tidy(()=>{let newValue=add2(mul(this.c,gradient),value);value.assign(newValue)})}),this.incrementIterations()}setLearningRate(learningRate){this.learningRate=learningRate,this.c!=null&&this.c.dispose(),this.c=keep(scalar(-learningRate))}dispose(){this.c.dispose()}async getWeights(){return[await this.saveIterations()]}async setWeights(weightValues){if(weightValues=await this.extractIterations(weightValues),weightValues.length!==0)throw new Error("SGD optimizer does not have settable weights.")}getConfig(){return{learningRate:this.learningRate}}static fromConfig(cls,config){return new cls(config.learningRate)}};SGDOptimizer.className="SGD";registerClass(SGDOptimizer);var MomentumOptimizer=class extends SGDOptimizer{constructor(learningRate,momentum,useNesterov=!1){super(learningRate);this.learningRate=learningRate,this.momentum=momentum,this.useNesterov=useNesterov,this.accumulations=[],this.m=scalar(this.momentum)}applyGradients(variableGradients){(Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients)).forEach((name,i)=>{let value=ENGINE.registeredVariables[name];if(this.accumulations[i]==null){let trainable=!1;this.accumulations[i]={originalName:`${name}/momentum`,variable:tidy(()=>zerosLike(value).variable(trainable))}}let accumulation=this.accumulations[i].variable,gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];gradient!=null&&tidy(()=>{let newValue,newAccumulation=add2(mul(this.m,accumulation),gradient);this.useNesterov?newValue=add2(mul(this.c,add2(gradient,mul(newAccumulation,this.m))),value):newValue=add2(mul(this.c,newAccumulation),value),accumulation.assign(newAccumulation),value.assign(newValue)})}),this.incrementIterations()}dispose(){this.m.dispose(),this.accumulations!=null&&dispose(this.accumulations.map(v=>v.variable))}setMomentum(momentum){this.momentum=momentum}async getWeights(){return[await this.saveIterations()].concat(this.accumulations.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let trainable=!1;this.accumulations=weightValues.map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}}static fromConfig(cls,config){return new cls(config.learningRate,config.momentum,config.useNesterov)}};MomentumOptimizer.className="Momentum";registerClass(MomentumOptimizer);var RMSPropOptimizer=class extends Optimizer{constructor(learningRate,decay=.9,momentum=0,epsilon32=null,centered=!1){super();if(this.learningRate=learningRate,this.decay=decay,this.momentum=momentum,this.epsilon=epsilon32,this.accumulatedMeanSquares=[],this.accumulatedMoments=[],this.accumulatedMeanGrads=[],this.centered=centered,epsilon32==null&&(this.epsilon=ENGINE.backend.epsilon()),learningRate==null)throw new Error("learningRate for RMSPropOptimizer must be defined.")}applyGradients(variableGradients){(Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients)).forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedMeanSquares[i]==null&&(this.accumulatedMeanSquares[i]={originalName:`${name}/rms`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedMoments[i]==null&&(this.accumulatedMoments[i]={originalName:`${name}/momentum`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedMeanGrads[i]==null&&this.centered&&(this.accumulatedMeanGrads[i]={originalName:`${name}/mg`,variable:tidy(()=>zerosLike(value).variable(trainable))});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let accumulatedMeanSquare=this.accumulatedMeanSquares[i].variable,accumulatedMoments=this.accumulatedMoments[i].variable;tidy(()=>{let newAccumulatedMeanSquare=add2(mul(accumulatedMeanSquare,this.decay),mul(square(gradient),1-this.decay));if(this.centered){let accumulatedMeanGrad=this.accumulatedMeanGrads[i].variable,newAccumulatedMeanGrad=add2(mul(accumulatedMeanGrad,this.decay),mul(gradient,1-this.decay)),gradContribution=div(mul(gradient,this.learningRate),sqrt(sub(newAccumulatedMeanSquare,add2(square(newAccumulatedMeanGrad),this.epsilon)))),newAccumulatedMoments=add2(mul(accumulatedMoments,this.momentum),gradContribution);accumulatedMeanSquare.assign(newAccumulatedMeanSquare),accumulatedMeanGrad.assign(newAccumulatedMeanGrad),accumulatedMoments.assign(newAccumulatedMoments);let newValue=sub(value,newAccumulatedMoments);value.assign(newValue)}else{let newAccumulatedMeanSquare2=add2(mul(accumulatedMeanSquare,this.decay),mul(square(gradient),1-this.decay)),newAccumulatedMoments=add2(mul(accumulatedMoments,this.momentum),div(mul(gradient,this.learningRate),sqrt(add2(newAccumulatedMeanSquare2,this.epsilon))));accumulatedMeanSquare.assign(newAccumulatedMeanSquare2),accumulatedMoments.assign(newAccumulatedMoments);let newValue=sub(value,newAccumulatedMoments);value.assign(newValue)}})}),this.incrementIterations()}dispose(){this.accumulatedMeanSquares!=null&&dispose(this.accumulatedMeanSquares.map(v=>v.variable)),this.accumulatedMeanGrads!=null&&this.centered&&dispose(this.accumulatedMeanGrads.map(v=>v.variable)),this.accumulatedMoments!=null&&dispose(this.accumulatedMoments.map(v=>v.variable))}async getWeights(){let variables=[...this.accumulatedMeanSquares,...this.accumulatedMoments];return this.centered&&variables.push(...this.accumulatedMeanGrads),[await this.saveIterations()].concat(variables.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let variableCount=this.centered?weightValues.length/3:weightValues.length/2,trainable=!1;this.accumulatedMeanSquares=weightValues.slice(0,variableCount).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.accumulatedMoments=weightValues.slice(variableCount,variableCount*2).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.centered&&(this.accumulatedMeanGrads=weightValues.slice(variableCount*2,variableCount*3).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})))}getConfig(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}}static fromConfig(cls,config){return new cls(config.learningRate,config.decay,config.momentum,config.epsilon,config.centered)}};RMSPropOptimizer.className="RMSProp";registerClass(RMSPropOptimizer);var OptimizerConstructors=class{static sgd(learningRate){return new SGDOptimizer(learningRate)}static momentum(learningRate,momentum,useNesterov=!1){return new MomentumOptimizer(learningRate,momentum,useNesterov)}static rmsprop(learningRate,decay=.9,momentum=0,epsilon32=null,centered=!1){return new RMSPropOptimizer(learningRate,decay,momentum,epsilon32,centered)}static adam(learningRate=.001,beta1=.9,beta2=.999,epsilon32=null){return new AdamOptimizer(learningRate,beta1,beta2,epsilon32)}static adadelta(learningRate=.001,rho=.95,epsilon32=null){return new AdadeltaOptimizer(learningRate,rho,epsilon32)}static adamax(learningRate=.002,beta1=.9,beta2=.999,epsilon32=null,decay=0){return new AdamaxOptimizer(learningRate,beta1,beta2,epsilon32,decay)}static adagrad(learningRate,initialAccumulatorValue=.1){return new AdagradOptimizer(learningRate,initialAccumulatorValue)}},train={sgd:OptimizerConstructors.sgd,momentum:OptimizerConstructors.momentum,adadelta:OptimizerConstructors.adadelta,adagrad:OptimizerConstructors.adagrad,rmsprop:OptimizerConstructors.rmsprop,adamax:OptimizerConstructors.adamax,adam:OptimizerConstructors.adam},delayCallback=(()=>typeof requestAnimationFrame!="undefined"?requestAnimationFrame:typeof setImmediate!="undefined"?setImmediate:f=>f())();function nextFrame(){return new Promise(resolve=>delayCallback(()=>resolve()))}var backend_util_exports={};__export2(backend_util_exports,{ERF_A1:()=>ERF_A1,ERF_A2:()=>ERF_A2,ERF_A3:()=>ERF_A3,ERF_A4:()=>ERF_A4,ERF_A5:()=>ERF_A5,ERF_P:()=>ERF_P,PARALLELIZE_THRESHOLD:()=>PARALLELIZE_THRESHOLD,SELU_SCALE:()=>SELU_SCALE,SELU_SCALEALPHA:()=>SELU_SCALEALPHA,applyActivation:()=>applyActivation,assertAndGetBroadcastShape:()=>assertAndGetBroadcastShape,assertAxesAreInnerMostDims:()=>assertAxesAreInnerMostDims,assertParamsConsistent:()=>assertParamsConsistent,assignToTypedArray:()=>assignToTypedArray,axesAreInnerMostDims:()=>axesAreInnerMostDims,calculateShapes:()=>calculateShapes,castTensor:()=>castTensor,combineLocations:()=>combineLocations,complexWithEvenIndex:()=>complexWithEvenIndex,complexWithOddIndex:()=>complexWithOddIndex,computeConv2DInfo:()=>computeConv2DInfo,computeConv3DInfo:()=>computeConv3DInfo,computeDefaultPad:()=>computeDefaultPad,computeDilation2DInfo:()=>computeDilation2DInfo,computeOptimalWindowSize:()=>computeOptimalWindowSize,computeOutAndReduceShapes:()=>computeOutAndReduceShapes,computeOutShape:()=>computeOutShape2,computePool2DInfo:()=>computePool2DInfo,computePool3DInfo:()=>computePool3DInfo,convertConv2DDataFormat:()=>convertConv2DDataFormat,eitherStridesOrDilationsAreOne:()=>eitherStridesOrDilationsAreOne,expandShapeToKeepDim:()=>expandShapeToKeepDim,exponent:()=>exponent,exponents:()=>exponents,fromStringArrayToUint8:()=>fromStringArrayToUint8,fromUint8ToStringArray:()=>fromUint8ToStringArray,getAxesPermutation:()=>getAxesPermutation,getBroadcastDims:()=>getBroadcastDims,getComplexWithIndex:()=>getComplexWithIndex,getFusedBiasGradient:()=>getFusedBiasGradient,getFusedDyActivation:()=>getFusedDyActivation,getImageCenter:()=>getImageCenter,getInnerMostAxes:()=>getInnerMostAxes,getPermuted:()=>getPermuted,getReductionAxes:()=>getReductionAxes,getReshaped:()=>getReshaped,getReshapedPermuted:()=>getReshapedPermuted,getSliceBeginCoords:()=>getSliceBeginCoords,getSliceSize:()=>getSliceSize,getUndoAxesPermutation:()=>getUndoAxesPermutation,log:()=>log2,mergeRealAndImagArrays:()=>mergeRealAndImagArrays,prepareAndValidate:()=>prepareAndValidate,prepareSplitSize:()=>prepareSplitSize,reshapeTensor:()=>reshapeTensor,segment_util:()=>segment_util_exports,shouldFuse:()=>shouldFuse,slice_util:()=>slice_util_exports,splitRealAndImagArrays:()=>splitRealAndImagArrays,tupleValuesAreOne:()=>tupleValuesAreOne,upcastType:()=>upcastType,validateInput:()=>validateInput,validateUpdateShape:()=>validateUpdateShape,warn:()=>warn});function assertParamsConsistent(shapes,axis){let rank=shapes[0].length;shapes.forEach((shape,i)=>{assert(shape.length===rank,()=>`Error in concat${rank}D: rank of tensors[${i}] must be the same as the rank of the rest (${rank})`)}),assert(axis>=0&&axis`Error in concat${rank}D: axis must be between 0 and ${rank-1}.`);let firstShape=shapes[0];shapes.forEach((shape,i)=>{for(let r=0;r`Error in concat${rank}D: Shape of tensors[${i}] (${shape}) does not match the shape of the rest (${firstShape}) along the non-concatenated axis ${i}.`)})}function computeOutShape2(shapes,axis){let outputShape=shapes[0].slice();for(let i=1;i=blockShapeRank*2+1||i%2==1?permutedAfterBatch.push(i):permutedBeforeBatch.push(i);permuted.push(...permutedBeforeBatch),permuted.push(0),permuted.push(...permutedAfterBatch)}return permuted}function getReshapedPermuted(inputShape,blockShape,prod5,batchToSpace=!0){let reshapedPermuted=[];batchToSpace?reshapedPermuted.push(inputShape[0]/prod5):reshapedPermuted.push(inputShape[0]*prod5);for(let i=1;i"Number of splits must evenly divide the axis."),splitSizes=new Array(numOrSizeSplits).fill(x.shape[axis]/numOrSizeSplits);else{let numOfNegs=numOrSizeSplits.reduce((count2,value)=>(value===-1&&(count2+=1),count2),0);assert(numOfNegs<=1,()=>"There should be only one negative value in split array.");let negIndex=numOrSizeSplits.indexOf(-1);if(negIndex!==-1){let total=numOrSizeSplits.reduce((a,b)=>b>0?a+b:a);numOrSizeSplits[negIndex]=x.shape[axis]-total}assert(x.shape[axis]===numOrSizeSplits.reduce((a,b)=>a+b),()=>"The sum of sizes must match the size of the axis dimension."),splitSizes=numOrSizeSplits}return splitSizes}var segment_util_exports={};__export2(segment_util_exports,{collectGatherOpShapeInfo:()=>collectGatherOpShapeInfo,computeOutShape:()=>computeOutShape3,segOpComputeOptimalWindowSize:()=>segOpComputeOptimalWindowSize});function segOpComputeOptimalWindowSize(inSize,numSegments){let done=!1,res;for(inSize<=PARALLELIZE_THRESHOLD?(res=inSize,done=!0):res=nearestDivisor(inSize,Math.floor(Math.sqrt(inSize)));!done;)res>numSegments||res===inSize?done=!0:res=nearestDivisor(inSize,res+1);return res}function computeOutShape3(aShape,axis,numSegments){let outShape=[],rank=aShape.length;for(let dim=0;dimindicesRank))throw new Error(`Expect batchDims in the range of [-${indicesRank}, ${indicesRank}], but got ${batchDims}`);if(batchDims<0&&(batchDims+=indicesRank),batchDims>xRank)throw new Error(`batchDims (${batchDims}) must be less than rank(x) ( - ${xRank}).`);if(axisdecodeString(val))}catch(err){throw new Error(`Failed to decode encoded string bytes into utf-8, error: ${err}`)}}function fromStringArrayToUint8(strings){return strings.map(s=>encodeString(s))}var kernel_impls_exports={};__export2(kernel_impls_exports,{nonMaxSuppressionV3Impl:()=>nonMaxSuppressionV3Impl,nonMaxSuppressionV4Impl:()=>nonMaxSuppressionV4Impl,nonMaxSuppressionV5Impl:()=>nonMaxSuppressionV5Impl,whereImpl:()=>whereImpl});var absGradConfig={kernelName:Abs,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,step(cast(x,"float32"),-1))}}},acosGradConfig={kernelName:Acos,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let a=square(cast(x,"float32")),b=sqrt(sub(scalar(1),a));return neg(div(dy,b))}}}},acoshGradConfig={kernelName:Acosh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let a=sqrt(sub(square(cast(x,"float32")),1));return div(dy,a)}}}},addGradConfig={kernelName:Add,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape);return{a:()=>{let res=dy,reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,a.shape)},b:()=>{let res=dy,reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,b.shape)}}}},addNGradConfig={kernelName:AddN,saveAllInputs:!0,gradFunc:(dy,saved)=>{let ders={};return saved.forEach((_,i)=>{ders[i]=()=>dy.clone()}),ders}},argMaxGradConfig={kernelName:ArgMax,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>zerosLike(x)}}},argMinGradConfig={kernelName:ArgMin,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>zerosLike(x)}}},asinGradConfig={kernelName:Asin,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,sqrt(sub(scalar(1),square(cast(x,"float32")))))}}},asinhGradConfig={kernelName:Asinh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let a=sqrt(add2(scalar(1),square(cast(x,"float32"))));return div(dy,a)}}}},atan2GradConfig={kernelName:Atan2,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape);return{a:()=>{let d=add2(square(a),square(b)),res=mul(dy,div(b,d)),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,a.shape)},b:()=>{let d=add2(square(a),square(b)),res=neg(mul(dy,div(a,d))),reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,b.shape)}}}},atanGradConfig={kernelName:Atan,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,add2(square(cast(x,"float32")),1))}}},atanhGradConfig={kernelName:Atanh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,sub(scalar(1),square(cast(x,"float32"))))}}};function avgPool3dGrad_(dy,input2,filterSize,strides,dilations=[1,1,1],pad3,dimRoundingMode){let $dy=convertToTensor(dy,"dy","avgPool3dGrad"),$input=convertToTensor(input2,"input","avgPool3dGrad"),dy5D=$dy,input5D=$input,reshapedTo5D=!1;$input.rank===4&&(reshapedTo5D=!0,dy5D=reshape($dy,[1,$dy.shape[0],$dy.shape[1],$dy.shape[2],$dy.shape[3]]),input5D=reshape($input,[1,$input.shape[0],$input.shape[1],$input.shape[2],$input.shape[3]])),assert(dy5D.rank===5,()=>`Error in avgPool3dGrad: dy must be rank 5 but got rank ${dy5D.rank}.`),assert(input5D.rank===5,()=>`Error in avgPool3dGrad: input must be rank 5 but got rank ${input5D.rank}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool3dGrad: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in avgPool3dGrad: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let inputs={dy:dy5D,input:input5D},attrs={filterSize,strides,dilations,pad:pad3,dimRoundingMode},res=ENGINE.runKernel(AvgPool3DGrad,inputs,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var avgPool3dGrad=op({avgPool3dGrad_}),avgPool3DGradConfig={kernelName:AvgPool3D,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{filterSize,strides,dilations,pad:pad3,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1,1]:dilations;return{x:()=>avgPool3dGrad(dy,x,filterSize,strides,$dilations,pad3,dimRoundingMode)}}};function avgPoolGrad_(dy,input2,filterSize,strides,pad3){let $dy=convertToTensor(dy,"dy","avgPoolGrad"),$input=convertToTensor(input2,"input","avgPoolGrad");assert($input.rank===$dy.rank,()=>`Rank of input (${$input.rank}) does not match rank of dy (${$dy.rank})`);let input4D=$input,dy4D=$dy,reshapedTo4D=!1;$input.rank===3&&(reshapedTo4D=!0,input4D=reshape($input,[1,$input.shape[0],$input.shape[1],$input.shape[2]]),dy4D=reshape($dy,[1,$dy.shape[0],$dy.shape[1],$dy.shape[2]])),assert(dy4D.rank===4,()=>`Error in avgPoolGrad: dy must be rank 4 but got rank ${dy4D.rank}.`),assert(input4D.rank===4,()=>`Error in avgPoolGrad: input must be rank 4 but got rank ${input4D.rank}.`);let inputs={dy:dy4D,input:input4D},attrs={filterSize,strides,pad:pad3},res=ENGINE.runKernel(AvgPoolGrad,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var avgPoolGrad=op({avgPoolGrad_}),avgPoolGradConfig={kernelName:AvgPool,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{filterSize,strides,pad:pad3}=attrs;return{x:()=>avgPoolGrad(dy,x,filterSize,strides,pad3)}}},batchMatMulGradConfig={kernelName:BatchMatMul,inputsToSave:["a","b"],gradFunc:(dy,saved,attrs)=>{let[a,b]=saved,{transposeA,transposeB}=attrs;return!transposeA&&!transposeB?{a:()=>matMul(dy,b,!1,!0),b:()=>matMul(a,dy,!0,!1)}:!transposeA&&transposeB?{a:()=>matMul(dy,b,!1,!1),b:()=>matMul(dy,a,!0,!1)}:transposeA&&!transposeB?{a:()=>matMul(b,dy,!1,!0),b:()=>matMul(a,dy,!1,!1)}:{a:()=>matMul(b,dy,!0,!0),b:()=>matMul(dy,a,!0,!0)}}},batchToSpaceNDGradConfig={kernelName:BatchToSpaceND,gradFunc:(dy,saved,attrs)=>{let{blockShape,crops}=attrs;return{x:()=>spaceToBatchND(dy,blockShape,crops)}}},broadcastToGradConfig={kernelName:BroadcastTo,gradFunc:(dy,saved,attrs)=>{let broadCastToAttrs=attrs,inputShape=broadCastToAttrs.inputShape,outputShape=broadCastToAttrs.shape,reps=Array.from(outputShape);for(let i=inputShape.length-1;i>=0;i--)if(inputShape[i]===outputShape[i])reps[i]=1;else if(inputShape[i]!==1)throw new Error(`broadcastTo(): [${inputShape}] cannot be broadcast to [${outputShape}].`);let axes=[];for(let i=0;i1&&axes.push(i);return{x:()=>sum2(dy,axes,!0)}}},castGradConfig={kernelName:Cast,gradFunc:dy=>({x:()=>dy.clone()})},ceilGradConfig={kernelName:Ceil,gradFunc:dy=>({x:()=>zerosLike(dy)})},clipByValueGradConfig={kernelName:ClipByValue,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{clipValueMin,clipValueMax}=attrs;return{x:()=>where(logicalAnd(greaterEqual(x,clipValueMin),lessEqual(x,clipValueMax)),dy,zerosLike(dy))}}},complexAbsGradConfig={kernelName:ComplexAbs,inputsToSave:["x"],gradFunc:absGradConfig.gradFunc},concatGradConfig={kernelName:Concat,saveAllInputs:!0,gradFunc:(dy,saved,attrs)=>{let shapes=saved.map(t=>t.shape),{axis}=attrs,$axis=parseAxisParam(axis,saved[0].shape)[0],sizeSplits=shapes.map(s=>s[$axis]);return split(dy,sizeSplits,$axis).map(t=>()=>t)}},conv2DGradConfig={kernelName:Conv2D,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let[x4D,$filter]=saved,{dilations,strides,pad:pad3,dataFormat}=attrs;return assert(tupleValuesAreOne(dilations),()=>`Error in gradient of conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${dilations}'`),{x:()=>conv2DBackpropInput(x4D.shape,dy,$filter,strides,pad3,dataFormat),filter:()=>conv2DBackpropFilter(x4D,dy,$filter.shape,strides,pad3,dataFormat)}}},conv2DBackpropInputGradConfig={kernelName:Conv2DBackpropInput,inputsToSave:["dy","filter"],gradFunc:(ddx,saved,attrs)=>{let[dy,filter]=saved,{strides,pad:pad3,dataFormat,dimRoundingMode}=attrs;return{dy:()=>conv2d(ddx,filter,strides,pad3,dataFormat,1,dimRoundingMode),filter:()=>conv2DBackpropFilter(ddx,dy,filter.shape,strides,pad3,dataFormat,dimRoundingMode)}}};function conv3DBackpropFilter_(x,dy,filterShape,strides,pad3){let x5D=x;x.rank===4&&(x5D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2],x.shape[3]]));let dy5D=dy;dy5D.rank===4&&(dy5D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2],dy.shape[3]])),assert(x5D.rank===5,()=>`Error in conv3dDerFilter: input must be rank 5, but got shape ${x5D.shape}.`),assert(dy5D.rank===5,()=>`Error in conv3dDerFilter: dy must be rank 5, but got shape ${dy5D.shape}.`),assert(filterShape.length===5,()=>`Error in conv3dDerFilter: filterShape must be length 5, but got ${filterShape}.`),assert(x5D.shape[4]===filterShape[3],()=>`Error in conv3dDerFilter: depth of input ${x5D.shape[4]}) must match input depth in filter (${filterShape[3]}.`),assert(dy5D.shape[4]===filterShape[4],()=>`Error in conv3dDerFilter: depth of dy (${dy5D.shape[4]}) must match output depth for filter (${filterShape[4]}).`);let inputs={x:x5D,dy:dy5D},attrs={strides,pad:pad3,filterShape};return ENGINE.runKernel(Conv3DBackpropFilterV2,inputs,attrs)}var conv3DBackpropFilter=op({conv3DBackpropFilter_}),conv3DGradConfig={kernelName:Conv3D,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let{dilations,strides,pad:pad3}=attrs;assert(tupleValuesAreOne(dilations),()=>`Error in gradient of conv3D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${dilations}'`);let[x5D,$filter]=saved;return{x:()=>conv3DBackpropInput(x5D.shape,dy,$filter,strides,pad3),filter:()=>conv3DBackpropFilter(x5D,dy,$filter.shape,strides,pad3)}}},cosGradConfig={kernelName:Cos,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(neg(sin(cast(x,"float32"))),dy)}}},coshGradConfig={kernelName:Cosh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(sinh(cast(x,"float32")),dy)}}},cumsumGradConfig={kernelName:Cumsum,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{axis,exclusive,reverse:reverse5}=attrs;return{x:()=>{let permutation=getAxesPermutation([axis],x.rank),out=cumsum(dy,axis,exclusive,!reverse5);return permutation!=null&&(out=transpose(out,permutation)),out}}}},depthwiseConv2dNativeGradConfig={kernelName:DepthwiseConv2dNative,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let{dilations,strides,pad:pad3,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1]:dilations;assert(tupleValuesAreOne($dilations),()=>`Error in gradient of depthwiseConv2dNative: dilation rates greater than 1 are not yet supported. Got dilations '${$dilations}'`);let[x,filter]=saved;return assert(x.rank===4,()=>`Error in gradient of depthwiseConv2dNative: input must be rank 4, but got rank ${x.rank}.`),assert(filter.rank===4,()=>`Error in gradient of depthwiseConv2dNative: filter must be rank 4, but got rank ${filter.rank}.`),assert(x.shape[3]===filter.shape[2],()=>`Error in gradient of depthwiseConv2d: number of input channels (${x.shape[3]}) must match the inChannels dimension in filter ${filter.shape[2]}.`),assert(eitherStridesOrDilationsAreOne(strides,$dilations),()=>`Error in gradient of depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${$dilations}'.`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`),{x:()=>depthwiseConv2dNativeBackpropInput(x.shape,dy,filter,strides,pad3,dilations,dimRoundingMode),filter:()=>depthwiseConv2dNativeBackpropFilter(x,dy,filter.shape,strides,pad3,dilations,dimRoundingMode)}}},dilation2dGradConfig={kernelName:Dilation2D,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let[x,filter]=saved,inputInputs={x,filter,dy},filterInputs={x,filter,dy};return{x:()=>ENGINE.runKernel(Dilation2DBackpropInput,inputInputs,attrs),filter:()=>ENGINE.runKernel(Dilation2DBackpropFilter,filterInputs,attrs)}}},eluGradConfig={kernelName:Elu,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved,inputs={dy,y};return{x:()=>ENGINE.runKernel(EluGrad,inputs)}}},erfGradConfig={kernelName:Erf,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved,a=mul(exp(neg(square(x))),2/Math.sqrt(Math.PI));return{x:()=>mul(dy,a)}}},expGradConfig={kernelName:Exp,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved;return{x:()=>mul(dy,y)}}},expandDimsGradConfig={kernelName:ExpandDims,inputsToSave:["input"],gradFunc:(dy,saved)=>{let[input2]=saved;return{input:()=>reshape(dy,input2.shape)}}},expm1GradConfig={kernelName:Expm1,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,exp(x))}}},floorGradConfig={kernelName:Floor,gradFunc:dy=>({x:()=>zerosLike(dy)})},floorDivGradConfig={kernelName:FloorDiv,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape);return{a:()=>{let res=div(dy,cast(b,"float32")),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),a.shape):res},b:()=>{let res=mul(dy,cast(a,"float32")),reduceAxes=getReductionAxes(b.shape,outShape);reduceAxes.length>0&&(res=reshape(sum2(res,reduceAxes),b.shape));let tmp=square(b);return neg(div(res,cast(tmp,"float32")))}}}},fusedBatchNormGradConfig={kernelName:FusedBatchNorm,inputsToSave:["x","mean","variance","scale"],gradFunc:(dy,saved,attrs)=>{let{varianceEpsilon}=attrs,[x,mean4,variance,scale22]=saved,scaleValue=scale22==null?scalar(1):scale22,reductionAxes=getReductionAxes(mean4.shape,x.shape),tileShape=[];if(mean4.rank===1){for(let i=0;imean4.rank===1?reshape(mul(mul(dy,tile(reshape(oneOverSqrtVariance,[1,1,1,mean4.shape[0]]),tileShape)),scaleValue),x.shape):reshape(mul(mul(dy,oneOverSqrtVariance),scaleValue),x.shape),mean:()=>{let meanDer=mul(mul(oneOverSqrtVariance,scalar(-1)),dyTimesScaleValue);return mean4.rank===1&&(meanDer=sum2(meanDer,reductionAxes)),reshape(meanDer,mean4.shape)},variance:()=>{let varianceDer=mul(mul(minusHalfRCube,xMinusMean),dyTimesScaleValue);return mean4.rank===1&&(varianceDer=sum2(varianceDer,reductionAxes)),reshape(varianceDer,mean4.shape)},scale:()=>{let xMinusMean2TimesRsqrt=mul(xMinusMean,oneOverSqrtVariance),scaleDer=mul(dy,xMinusMean2TimesRsqrt);return mean4.rank===1&&(scaleDer=sum2(scaleDer,reductionAxes)),reshape(scaleDer,mean4.shape)},offset:()=>{let offsetDer=dy;return mean4.rank===1&&(offsetDer=sum2(offsetDer,reductionAxes)),reshape(offsetDer,mean4.shape)}}}},gatherGradConfig={kernelName:GatherV2,inputsToSave:["x","indices"],gradFunc:(dy,saved,attrs)=>{let[x,indices]=saved,{axis}=attrs,parsedAxis=parseAxisParam(axis,x.shape)[0];return{x:()=>{let paramsShape=x.shape,indicesSize=indices.size,outerShape=paramsShape.slice(0,parsedAxis),outerDims=outerShape.length,innerShape=paramsShape.slice(axis,paramsShape.length).slice(1),innerDims=innerShape.length,outerAxesIndices=arrayRange(0,outerDims),innerAxesIndices=arrayRange(outerDims+1,outerDims+1+innerDims),valuesShape=arrayConcat([outerShape,[indicesSize],innerShape]),values=reshape(dy,valuesShape),reshapedIndices=reshape(indices,[indicesSize]),transposeDims=arrayConcat([[outerDims],outerAxesIndices,innerAxesIndices]),valuesTranspose=transpose(values,transposeDims),paramsGrad=unsortedSegmentSum(valuesTranspose,reshapedIndices,x.shape[parsedAxis]),invertTransposeDims=getUndoAxesPermutation(transposeDims);return paramsGrad=transpose(paramsGrad,invertTransposeDims),paramsGrad},indices:()=>indices}}};function arrayRange(start,stop){let result=[];for(let i=start;i{let[a,b]=saved;return{a:()=>zerosLike(a),b:()=>zerosLike(b)}}},identityGradConfig={kernelName:Identity,gradFunc:dy=>({x:()=>cast(dy,"float32")})},isFiniteGradConfig={kernelName:IsFinite,gradFunc:dy=>({x:()=>zerosLike(dy)})},isInfGradConfig={kernelName:IsInf,gradFunc:dy=>({x:()=>zerosLike(dy)})},isNanGradConfig={kernelName:IsNan,gradFunc:dy=>({x:()=>zerosLike(dy)})},leakyReluGradConfig={kernelName:LeakyRelu,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{alpha}=attrs,mask=greater(x,0);return{x:()=>where(mask,dy,mul(dy,alpha))}}},log1pGradConfig={kernelName:Log1p,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,add2(x,1))}}},logGradConfig={kernelName:Log,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,cast(x,"float32"))}}},logSoftmaxGradConfig={kernelName:LogSoftmax,inputsToSave:[],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[value]=saved,{axis}=attrs;return{logits:()=>{let keepDims=!0,softmax6=exp(value);return sub(dy,mul(sum2(dy,axis,keepDims),softmax6))}}}};function localResponseNormalizationBackprop_(x,y,dy,depthRadius=5,bias=1,alpha=1,beta=.5){let inputs={x,y,dy},attrs={depthRadius,bias,alpha,beta};return ENGINE.runKernel(LRNGrad,inputs,attrs)}var localResponseNormalizationBackprop=op({localResponseNormalizationBackprop_}),lrnGradConfig={kernelName:LRN,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[x,y]=saved,{depthRadius,bias,alpha,beta}=attrs;return{x:()=>localResponseNormalizationBackprop(x,y,dy,depthRadius,bias,alpha,beta)}}};function gradForMinAndMax(dy,y,xOrig,origAxes){return y.rankmul(dy,cast(equal(xOrig,y),dy.dtype))}}var maxGradConfig={kernelName:Max,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let maxAttrs=attrs,{reductionIndices}=maxAttrs,x=saved[0],y=saved[1],origAxes=parseAxisParam(reductionIndices,x.shape),maxGrad=gradForMinAndMax(dy,y,x,origAxes);return{x:()=>maxGrad.x()}}},maximumGradConfig={kernelName:Maximum,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved;return{a:()=>mul(dy,cast(greaterEqual(a,b),"float32")),b:()=>mul(dy,cast(less(a,b),"float32"))}}};function maxPool3dGrad_(dy,input2,output,filterSize,strides,dilations=[1,1,1],pad3,dimRoundingMode){let $dy=convertToTensor(dy,"dy","maxPool3dGrad"),$input=convertToTensor(input2,"input","maxPool3dGrad"),$output=convertToTensor(output,"output","maxPool3dGrad"),dy5D=$dy,input5D=$input,output5D=$output,reshapedTo5D=!1;$input.rank===4&&(reshapedTo5D=!0,dy5D=reshape($dy,[1,$dy.shape[0],$dy.shape[1],$dy.shape[2],$dy.shape[3]]),input5D=reshape($input,[1,$input.shape[0],$input.shape[1],$input.shape[2],$input.shape[3]]),output5D=reshape($output,[1,$output.shape[0],$output.shape[1],$output.shape[2],$output.shape[3]])),assert(dy5D.rank===5,()=>`Error in maxPool3dGrad: dy must be rank 5 but got rank ${dy5D.rank}.`),assert(input5D.rank===5,()=>`Error in maxPool3dGrad: input must be rank 5 but got rank ${input5D.rank}.`),assert(output5D.rank===5,()=>`Error in maxPool3dGrad: output must be rank 5 but got rank ${output5D.rank}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool3dGrad: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in maxPool3dGrad: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let inputs={dy:dy5D,input:input5D,output:output5D},attrs={filterSize,strides,dilations,pad:pad3,dimRoundingMode},res=ENGINE.runKernel(MaxPool3DGrad,inputs,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var maxPool3dGrad=op({maxPool3dGrad_}),maxPool3DGradConfig={kernelName:MaxPool3D,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[x,y]=saved,{filterSize,strides,dilations,pad:pad3,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1,1]:dilations;return{x:()=>maxPool3dGrad(dy,x,y,filterSize,strides,$dilations,pad3,dimRoundingMode)}}};function maxPoolGrad_(dy,input2,output,filterSize,strides,pad3,dimRoundingMode){let $dy=convertToTensor(dy,"dy","maxPoolGrad"),$input=convertToTensor(input2,"input","maxPoolGrad"),$output=convertToTensor(output,"output","maxPoolGrad");assert($input.rank===$dy.rank,()=>`Rank of input (${$input.rank}) does not match rank of dy (${$dy.rank})`),assert($dy.rank===4,()=>`Error in maxPoolGrad: dy must be rank 4 but got rank ${$dy.rank}.`),assert($input.rank===4,()=>`Error in maxPoolGrad: input must be rank 4 but got rank ${$input.rank}.`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in maxPoolGrad: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let inputs={dy:$dy,input:$input,output:$output},attrs={filterSize,strides,pad:pad3,dimRoundingMode};return ENGINE.runKernel(MaxPoolGrad,inputs,attrs)}var maxPoolGrad=op({maxPoolGrad_}),maxPoolGradConfig={kernelName:MaxPool,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[x,y]=saved,{filterSize,strides,pad:pad3}=attrs;return{x:()=>maxPoolGrad(dy,x,y,filterSize,strides,pad3)}}},meanGradConfig={kernelName:Mean,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{axis}=attrs,axes=parseAxisParam(axis,x.shape),reduceShape=computeOutAndReduceShapes(x.shape,axes)[1],reduceSize=sizeFromShape(reduceShape);return{x:()=>{let expandedDyShape=x.shape.slice();axes.forEach(axis2=>{expandedDyShape[axis2]=1});let expandedDy=reshape(dy,expandedDyShape);return div(mul(expandedDy,ones2(x.shape,"float32")),reduceSize)}}}},minGradConfig={kernelName:Min,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let minAttrs=attrs,{axis}=minAttrs,[x,y]=saved,origAxes=parseAxisParam(axis,x.shape),minGrad=gradForMinAndMax(dy,y,x,origAxes);return{x:()=>minGrad.x()}}},minimumGradConfig={kernelName:Minimum,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved;return{a:()=>mul(dy,cast(lessEqual(a,b),"float32")),b:()=>mul(dy,cast(greater(a,b),"float32"))}}},mirrorPadGradConfig={kernelName:MirrorPad,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let x=saved[0],{paddings}=attrs,begin=paddings.map(p2=>p2[0]);return{x:()=>slice(dy,begin,x.shape)}}},modGradConfig={kernelName:Mod,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape);return{a:()=>{let reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(dy,reduceAxes),a.shape):dy},b:()=>{let res=mul(dy,neg(floor(div(a,b)))),reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),b.shape):res}}}},multiplyGradConfig={kernelName:Multiply,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape);return{a:()=>{let res=mul(dy,cast(b,"float32")),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),a.shape):res},b:()=>{let res=mul(dy,cast(a,"float32")),reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),b.shape):res}}}},negGradConfig={kernelName:Neg,gradFunc:dy=>({x:()=>neg(dy)})},oneHotGradConfig={kernelName:OneHot,inputsToSave:["indices"],gradFunc:(dy,saved)=>{let indices=saved[0];return{indices:()=>zeros(indices.shape,"float32")}}},onesLikeGradConfig={kernelName:OnesLike,gradFunc:dy=>({x:()=>zerosLike(dy)})},packGradConfig={kernelName:Pack,saveAllInputs:!0,gradFunc:(dy,saved,attrs)=>{let{axis}=attrs;return unstack(dy,axis).map(t=>()=>t)}},padV2GradConfig={kernelName:PadV2,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let x=saved[0],{paddings}=attrs,begin=paddings.map(p2=>p2[0]);return{x:()=>slice(dy,begin,x.shape)}}},powGradConfig={kernelName:Pow,inputsToSave:["a","b"],outputsToSave:[!0],gradFunc:(dy,saved)=>{let[a,b,y]=saved,base2=a,exp4=b,outShape=assertAndGetBroadcastShape(base2.shape,exp4.shape);return{a:()=>{let expFloat=cast(exp4,"float32"),res=mul(dy,mul(expFloat,pow(base2,sub(expFloat,scalar(1))))),reduceAxes=getReductionAxes(base2.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,base2.shape)},b:()=>{let condition=greater(base2,0),logBase=where(condition,log(base2),zerosLike(base2)),res=mul(dy,mul(y,logBase)),reduceAxes=getReductionAxes(exp4.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,exp4.shape)}}}},preluGradConfig={kernelName:Prelu,inputsToSave:["x","alpha"],gradFunc:(dy,saved)=>{let[x,alpha]=saved,mask=greater(x,0);return{x:()=>where(mask,dy,mul(dy,alpha)),alpha:()=>{let res=where(mask,zerosLike(dy),mul(dy,x)),reduceAxes=getReductionAxes(alpha.shape,dy.shape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,alpha.shape)}}}},divGradConfig={kernelName:RealDiv,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape);return{a:()=>{let res=div(dy,cast(b,"float32")),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),a.shape):res},b:()=>{let res=mul(dy,cast(a,"float32")),reduceAxes=getReductionAxes(b.shape,outShape);reduceAxes.length>0&&(res=reshape(sum2(res,reduceAxes),b.shape));let tmp=square(b);return neg(div(res,cast(tmp,"float32")))}}}},reciprocalGradConfig={kernelName:Reciprocal,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,neg(square(x)))}}},relu6GradConfig={kernelName:Relu6,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved,mask=mul(lessEqual(x,6),step(x));return{x:()=>mul(dy,cast(mask,"float32"))}}},reluGradConfig={kernelName:Relu,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,cast(step(x),"float32"))}}},reshapeGradConfig={kernelName:Reshape,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>reshape(dy,x.shape)}}},resizeBilinearGradConfig={kernelName:ResizeBilinear,inputsToSave:["images"],gradFunc:(dy,saved,attrs)=>{let[images]=saved,inputs={dy,images};return{images:()=>ENGINE.runKernel(ResizeBilinearGrad,inputs,attrs)}}},resizeNearestNeighborGradConfig={kernelName:ResizeNearestNeighbor,inputsToSave:["images"],gradFunc:(dy,saved,attrs)=>{let[images]=saved,inputs={dy,images};return{images:()=>ENGINE.runKernel(ResizeNearestNeighborGrad,inputs,attrs)}}},reverseGradConfig={kernelName:Reverse,gradFunc:(dy,saved,attrs)=>{let{dims}=attrs,axes=parseAxisParam(dims,dy.shape);return{x:()=>reverse(dy,axes)}}},roundGradConfig={kernelName:Round,gradFunc:dy=>({x:()=>zerosLike(dy)})},rsqrtGradConfig={kernelName:Rsqrt,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>neg(div(dy,mul(pow(x,1.5),2)))}}},selectGradConfig={kernelName:Select,inputsToSave:["condition"],gradFunc:(dy,saved)=>{let[condition]=saved;return{condition:()=>cast(zerosLike(condition),"float32"),t:()=>mul(dy,cast(condition,dy.dtype)),e:()=>mul(dy,cast(logicalNot(condition),dy.dtype))}}},seluGradConfig={kernelName:Selu,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let mask=greater(x,scalar(0)),scaleAlpha2=scalar(SELU_SCALEALPHA),scale22=scalar(SELU_SCALE),greaterThanZeroDer=mul(dy,scale22),lessEqualZeroDer=mul(mul(dy,scaleAlpha2),exp(cast(x,"float32")));return where(mask,greaterThanZeroDer,lessEqualZeroDer)}}}},sigmoidGradConfig={kernelName:Sigmoid,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved;return{x:()=>mul(dy,mul(y,sub(scalar(1),y)))}}},signGradConfig={kernelName:Sign,gradFunc:dy=>({x:()=>zerosLike(dy)})},sinGradConfig={kernelName:Sin,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(cos(cast(x,"float32")),dy)}}},sinhGradConfig={kernelName:Sinh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(cosh(cast(x,"float32")),dy)}}},sliceGradConfig={kernelName:Slice,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{begin,size}=attrs,inputShape=x.shape,[begin_,size_]=parseSliceParams(x,begin,size),paddings=[];for(let i=0;ipad(dy,paddings)}}},softmaxGradConfig={kernelName:Softmax,outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[y]=saved,{dim}=attrs,keepDims=!0,dyTimesY=mul(dy,y);return{logits:()=>sub(dyTimesY,mul(sum2(dyTimesY,[dim],keepDims),y))}}},softplusGradConfig={kernelName:Softplus,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,sigmoid(x))}}},spaceToBatchNDGradConfig={kernelName:SpaceToBatchND,gradFunc:(dy,saved,attrs)=>{let{blockShape,paddings}=attrs;return{x:()=>batchToSpaceND(dy,blockShape,paddings)}}},splitVGradConfig={kernelName:SplitV,gradFunc:(dy,saved,attrs)=>{let{axis}=attrs;return{x:()=>concat(dy,axis)}}},sqrtGradConfig={kernelName:Sqrt,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,mul(sqrt(cast(x,"float32")),2))}}},squareGradConfig={kernelName:Square,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,mul(cast(x,"float32"),2))}}},squaredDifferenceGradConfig={kernelName:SquaredDifference,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,two=scalar(2);return{a:()=>mul(dy,mul(two,sub(a,b))),b:()=>mul(dy,mul(two,sub(b,a)))}}},stepGradConfig={kernelName:Step,gradFunc:dy=>({x:()=>zerosLike(dy)})},subGradConfig={kernelName:Sub,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape);return{a:()=>{let res=dy,reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,a.shape)},b:()=>{let res=dy,reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(neg(res),b.shape)}}}},sumGradConfig={kernelName:Sum,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,expandedDyShape=x.shape.slice(),{axis}=attrs;parseAxisParam(axis,x.shape).forEach(axis2=>{expandedDyShape[axis2]=1});let expandedDy=reshape(dy,expandedDyShape),derX=mul(expandedDy,ones2(x.shape,"float32"));return{x:()=>derX}}},tanGradConfig={kernelName:Tan,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,square(cos(x)))}}},tanhGradConfig={kernelName:Tanh,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved;return{x:()=>mul(sub(scalar(1),square(y)),dy)}}},tileGradConfig={kernelName:Tile,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{reps}=attrs;return{x:()=>{let xGrad=zerosLike(x);if(x.rank===1)for(let i=0;i{let transposeAttrs=attrs,{perm}=transposeAttrs,undoPerm=getUndoAxesPermutation(perm);return{x:()=>transpose(dy,undoPerm)}}},unpackGradConfig={kernelName:Unpack,gradFunc:(dy,saved,attrs)=>{let unpackAttrs=attrs,{axis}=unpackAttrs;return{value:()=>stack(dy,axis)}}},unsortedSegmentSumGradConfig={kernelName:UnsortedSegmentSum,inputsToSave:["segmentIds"],gradFunc:(dy,saved)=>{let[segmentIds]=saved;return{x:()=>gatherDropNegatives(dy,segmentIds)}}};function gatherDropNegatives(x,indices){let zeroClippedIndices=maximum(indices,zerosLike(indices)),gathered=gather(x,zeroClippedIndices),isPositive=greaterEqual(indices,scalar(0,"int32")),numIters=gathered.rank-isPositive.rank;for(let i=0;i({x:()=>zerosLike(dy)})},gradConfigs=[absGradConfig,acosGradConfig,acoshGradConfig,addGradConfig,addNGradConfig,argMaxGradConfig,argMinGradConfig,asinGradConfig,asinhGradConfig,atan2GradConfig,atanGradConfig,atanhGradConfig,avgPool3DGradConfig,avgPoolGradConfig,batchMatMulGradConfig,batchToSpaceNDGradConfig,broadcastToGradConfig,castGradConfig,ceilGradConfig,clipByValueGradConfig,complexAbsGradConfig,concatGradConfig,conv2DBackpropInputGradConfig,conv2DGradConfig,conv3DGradConfig,cosGradConfig,coshGradConfig,cumsumGradConfig,depthwiseConv2dNativeGradConfig,dilation2dGradConfig,divGradConfig,eluGradConfig,erfGradConfig,expGradConfig,expandDimsGradConfig,expm1GradConfig,floorDivGradConfig,floorGradConfig,fusedBatchNormGradConfig,gatherGradConfig,greaterEqualGradConfig,identityGradConfig,isFiniteGradConfig,isInfGradConfig,isNanGradConfig,leakyReluGradConfig,log1pGradConfig,logGradConfig,logSoftmaxGradConfig,lrnGradConfig,maxGradConfig,maxGradConfig,maximumGradConfig,maxPool3DGradConfig,maxPoolGradConfig,meanGradConfig,minGradConfig,minimumGradConfig,mirrorPadGradConfig,modGradConfig,multiplyGradConfig,negGradConfig,oneHotGradConfig,onesLikeGradConfig,packGradConfig,padV2GradConfig,padV2GradConfig,powGradConfig,preluGradConfig,reciprocalGradConfig,relu6GradConfig,reluGradConfig,reshapeGradConfig,resizeBilinearGradConfig,resizeNearestNeighborGradConfig,reverseGradConfig,roundGradConfig,rsqrtGradConfig,selectGradConfig,seluGradConfig,sigmoidGradConfig,signGradConfig,sinGradConfig,sinhGradConfig,sliceGradConfig,softmaxGradConfig,softplusGradConfig,spaceToBatchNDGradConfig,spaceToBatchNDGradConfig,splitVGradConfig,splitVGradConfig,sqrtGradConfig,squaredDifferenceGradConfig,squareGradConfig,stepGradConfig,subGradConfig,sumGradConfig,tanGradConfig,tanhGradConfig,tileGradConfig,transposeGradConfig,unpackGradConfig,unsortedSegmentSumGradConfig,zerosLikeGradConfig];for(let gradientConfig of gradConfigs)registerGradient(gradientConfig);Tensor.prototype.abs=function(){return this.throwIfDisposed(),abs(this)};Tensor.prototype.acos=function(){return this.throwIfDisposed(),acos(this)};Tensor.prototype.acosh=function(){return this.throwIfDisposed(),acosh(this)};Tensor.prototype.addStrict=function(x){return this.throwIfDisposed(),addStrict(this,x)};Tensor.prototype.add=function(b){return this.throwIfDisposed(),add2(this,b)};Tensor.prototype.all=function(axis,keepDims){return this.throwIfDisposed(),all(this,axis,keepDims)};Tensor.prototype.any=function(axis,keepDims){return this.throwIfDisposed(),any(this,axis,keepDims)};Tensor.prototype.argMax=function(axis){return this.throwIfDisposed(),argMax(this,axis)};Tensor.prototype.argMin=function(axis){return this.throwIfDisposed(),argMin(this,axis)};Tensor.prototype.asScalar=function(){return this.throwIfDisposed(),assert(this.size===1,()=>"The array must have only 1 element."),reshape(this,[])};Tensor.prototype.asType=function(dtype){return this.throwIfDisposed(),cast(this,dtype)};Tensor.prototype.as1D=function(){return this.throwIfDisposed(),reshape(this,[this.size])};Tensor.prototype.as2D=function(rows,columns){return this.throwIfDisposed(),reshape(this,[rows,columns])};Tensor.prototype.as3D=function(rows,columns,depth){return this.throwIfDisposed(),reshape(this,[rows,columns,depth])};Tensor.prototype.as4D=function(rows,columns,depth,depth2){return this.throwIfDisposed(),reshape(this,[rows,columns,depth,depth2])};Tensor.prototype.as5D=function(rows,columns,depth,depth2,depth3){return this.throwIfDisposed(),reshape(this,[rows,columns,depth,depth2,depth3])};Tensor.prototype.asin=function(){return this.throwIfDisposed(),asin(this)};Tensor.prototype.asinh=function(){return this.throwIfDisposed(),asinh(this)};Tensor.prototype.atan=function(){return this.throwIfDisposed(),atan(this)};Tensor.prototype.atan2=function(b){return this.throwIfDisposed(),atan2(this,b)};Tensor.prototype.atanh=function(){return this.throwIfDisposed(),atanh(this)};Tensor.prototype.avgPool=function(filterSize,strides,pad3,dimRoundingMode){return this.throwIfDisposed(),avgPool(this,filterSize,strides,pad3,dimRoundingMode)};Tensor.prototype.batchToSpaceND=function(blockShape,crops){return this.throwIfDisposed(),batchToSpaceND(this,blockShape,crops)};Tensor.prototype.batchNorm=function(mean4,variance,offset,scale22,varianceEpsilon){return this.throwIfDisposed(),batchNorm(this,mean4,variance,offset,scale22,varianceEpsilon)};Tensor.prototype.broadcastTo=function(shape){return this.throwIfDisposed(),broadcastTo(this,shape)};Tensor.prototype.cast=function(dtype){return this.throwIfDisposed(),cast(this,dtype)};Tensor.prototype.ceil=function(){return this.throwIfDisposed(),ceil(this)};Tensor.prototype.clipByValue=function(min6,max6){return this.throwIfDisposed(),clipByValue(this,min6,max6)};Tensor.prototype.concat=function(x,axis){return this.throwIfDisposed(),x instanceof Tensor&&(x=[x]),concat([this,...x],axis)};Tensor.prototype.conv1d=function(filter,stride,pad3,dataFormat,dilation,dimRoundingMode){return this.throwIfDisposed(),conv1d(this,filter,stride,pad3,dataFormat,dilation,dimRoundingMode)};Tensor.prototype.conv2dTranspose=function(filter,outputShape,strides,pad3,dimRoundingMode){return this.throwIfDisposed(),conv2dTranspose(this,filter,outputShape,strides,pad3,dimRoundingMode)};Tensor.prototype.conv2d=function(filter,strides,pad3,dataFormat,dilations,dimRoundingMode){return this.throwIfDisposed(),conv2d(this,filter,strides,pad3,dataFormat,dilations,dimRoundingMode)};Tensor.prototype.cos=function(){return this.throwIfDisposed(),cos(this)};Tensor.prototype.cosh=function(){return this.throwIfDisposed(),cosh(this)};Tensor.prototype.cumsum=function(axis,exclusive,reverse5){return this.throwIfDisposed(),cumsum(this,axis,exclusive,reverse5)};Tensor.prototype.depthToSpace=function(blockSize,dataFormat){return this.throwIfDisposed(),depthToSpace(this,blockSize,dataFormat)};Tensor.prototype.depthwiseConv2D=function(filter,strides,pad3,dataFormat,dilations,dimRoundingMode){return deprecationWarn("depthwiseConv2D is deprecated, use depthwiseConv2d instead"),this.throwIfDisposed(),depthwiseConv2d(this,filter,strides,pad3,dataFormat,dilations,dimRoundingMode)};Tensor.prototype.depthwiseConv2d=function(filter,strides,pad3,dataFormat,dilations,dimRoundingMode){return this.throwIfDisposed(),depthwiseConv2d(this,filter,strides,pad3,dataFormat,dilations,dimRoundingMode)};Tensor.prototype.dilation2d=function(filter,strides,pad3,dilations,dataFormat){return this.throwIfDisposed(),dilation2d(this,filter,strides,pad3,dilations,dataFormat)};Tensor.prototype.divNoNan=function(b){return this.throwIfDisposed(),divNoNan(this,b)};Tensor.prototype.divStrict=function(x){return this.throwIfDisposed(),divStrict(this,x)};Tensor.prototype.div=function(b){return this.throwIfDisposed(),div(this,b)};Tensor.prototype.dot=function(b){return this.throwIfDisposed(),dot(this,b)};Tensor.prototype.elu=function(){return this.throwIfDisposed(),elu(this)};Tensor.prototype.equalStrict=function(x){return this.throwIfDisposed(),equalStrict(this,x)};Tensor.prototype.equal=function(b){return this.throwIfDisposed(),equal(this,b)};Tensor.prototype.erf=function(){return this.throwIfDisposed(),erf(this)};Tensor.prototype.exp=function(){return this.throwIfDisposed(),exp(this)};Tensor.prototype.expandDims=function(axis){return this.throwIfDisposed(),expandDims(this,axis)};Tensor.prototype.expm1=function(){return this.throwIfDisposed(),expm1(this)};Tensor.prototype.fft=function(){return this.throwIfDisposed(),fft(this)};Tensor.prototype.flatten=function(){return this.throwIfDisposed(),reshape(this,[this.size])};Tensor.prototype.floor=function(){return this.throwIfDisposed(),floor(this)};Tensor.prototype.floorDiv=function(b){return this.throwIfDisposed(),floorDiv(this,b)};Tensor.prototype.gather=function(indices,axis){return this.throwIfDisposed(),gather(this,indices,axis)};Tensor.prototype.greaterEqualStrict=function(x){return this.throwIfDisposed(),greaterEqualStrict(this,x)};Tensor.prototype.greaterEqual=function(b){return this.throwIfDisposed(),greaterEqual(this,b)};Tensor.prototype.greaterStrict=function(x){return this.throwIfDisposed(),greaterStrict(this,x)};Tensor.prototype.greater=function(b){return this.throwIfDisposed(),greater(this,b)};Tensor.prototype.ifft=function(){return this.throwIfDisposed(),ifft(this)};Tensor.prototype.irfft=function(){return this.throwIfDisposed(),irfft(this)};Tensor.prototype.isFinite=function(){return this.throwIfDisposed(),isFinite2(this)};Tensor.prototype.isInf=function(){return this.throwIfDisposed(),isInf(this)};Tensor.prototype.isNaN=function(){return this.throwIfDisposed(),isNaN2(this)};Tensor.prototype.leakyRelu=function(alpha){return this.throwIfDisposed(),leakyRelu(this,alpha)};Tensor.prototype.lessEqualStrict=function(x){return this.throwIfDisposed(),lessEqualStrict(this,x)};Tensor.prototype.lessEqual=function(b){return this.throwIfDisposed(),lessEqual(this,b)};Tensor.prototype.lessStrict=function(x){return this.throwIfDisposed(),lessStrict(this,x)};Tensor.prototype.less=function(b){return this.throwIfDisposed(),less(this,b)};Tensor.prototype.localResponseNormalization=function(depthRadius,bias,alpha,beta){return this.throwIfDisposed(),localResponseNormalization(this,depthRadius,bias,alpha,beta)};Tensor.prototype.logSigmoid=function(){return this.throwIfDisposed(),logSigmoid(this)};Tensor.prototype.logSoftmax=function(axis){return this.throwIfDisposed(),logSoftmax(this,axis)};Tensor.prototype.logSumExp=function(axis,keepDims){return this.throwIfDisposed(),logSumExp(this,axis,keepDims)};Tensor.prototype.log=function(){return this.throwIfDisposed(),log(this)};Tensor.prototype.log1p=function(){return this.throwIfDisposed(),log1p(this)};Tensor.prototype.logicalAnd=function(b){return this.throwIfDisposed(),logicalAnd(this,b)};Tensor.prototype.logicalNot=function(){return this.throwIfDisposed(),logicalNot(this)};Tensor.prototype.logicalOr=function(b){return this.throwIfDisposed(),logicalOr(this,b)};Tensor.prototype.logicalXor=function(b){return this.throwIfDisposed(),logicalXor(this,b)};Tensor.prototype.matMul=function(b,transposeA,transposeB){return this.throwIfDisposed(),matMul(this,b,transposeA,transposeB)};Tensor.prototype.maxPool=function(filterSize,strides,pad3,dimRoundingMode){return this.throwIfDisposed(),maxPool(this,filterSize,strides,pad3,dimRoundingMode)};Tensor.prototype.max=function(axis,keepDims){return this.throwIfDisposed(),max(this,axis,keepDims)};Tensor.prototype.maximumStrict=function(x){return this.throwIfDisposed(),maximumStrict(this,x)};Tensor.prototype.maximum=function(b){return this.throwIfDisposed(),maximum(this,b)};Tensor.prototype.mean=function(axis,keepDims){return this.throwIfDisposed(),mean(this,axis,keepDims)};Tensor.prototype.min=function(axis,keepDims){return this.throwIfDisposed(),min(this,axis,keepDims)};Tensor.prototype.minimumStrict=function(x){return this.throwIfDisposed(),minimumStrict(this,x)};Tensor.prototype.minimum=function(b){return this.throwIfDisposed(),minimum(this,b)};Tensor.prototype.mirrorPad=function(paddings,mode){return this.throwIfDisposed(),mirrorPad(this,paddings,mode)};Tensor.prototype.modStrict=function(x){return this.throwIfDisposed(),modStrict(this,x)};Tensor.prototype.mod=function(b){return this.throwIfDisposed(),mod(this,b)};Tensor.prototype.mulStrict=function(x){return this.throwIfDisposed(),mulStrict(this,x)};Tensor.prototype.mul=function(b){return this.throwIfDisposed(),mul(this,b)};Tensor.prototype.neg=function(){return this.throwIfDisposed(),neg(this)};Tensor.prototype.norm=function(ord,axis,keepDims){return this.throwIfDisposed(),norm(this,ord,axis,keepDims)};Tensor.prototype.notEqualStrict=function(x){return this.throwIfDisposed(),notEqualStrict(this,x)};Tensor.prototype.notEqual=function(b){return this.throwIfDisposed(),notEqual(this,b)};Tensor.prototype.oneHot=function(depth,onValue=1,offValue=0){return this.throwIfDisposed(),oneHot(this,depth,onValue,offValue)};Tensor.prototype.onesLike=function(){return this.throwIfDisposed(),onesLike(this)};Tensor.prototype.pad=function(paddings,constantValue){return this.throwIfDisposed(),pad(this,paddings,constantValue)};Tensor.prototype.pool=function(windowShape,poolingType,padding,dilationRate,strides){return this.throwIfDisposed(),pool(this,windowShape,poolingType,padding,dilationRate,strides)};Tensor.prototype.powStrict=function(exp4){return this.throwIfDisposed(),powStrict(this,exp4)};Tensor.prototype.pow=function(exp4){return this.throwIfDisposed(),pow(this,exp4)};Tensor.prototype.prelu=function(alpha){return this.throwIfDisposed(),prelu(this,alpha)};Tensor.prototype.prod=function(axis,keepDims){return this.throwIfDisposed(),prod(this,axis,keepDims)};Tensor.prototype.reciprocal=function(){return this.throwIfDisposed(),reciprocal(this)};Tensor.prototype.relu=function(){return this.throwIfDisposed(),relu(this)};Tensor.prototype.relu6=function(){return this.throwIfDisposed(),relu6(this)};Tensor.prototype.reshapeAs=function(x){return this.throwIfDisposed(),reshape(this,x.shape)};Tensor.prototype.reshape=function(shape){return this.throwIfDisposed(),reshape(this,shape)};Tensor.prototype.resizeBilinear=function(newShape2D,alignCorners,halfPixelCenters){return this.throwIfDisposed(),resizeBilinear(this,newShape2D,alignCorners,halfPixelCenters)};Tensor.prototype.resizeNearestNeighbor=function(newShape2D,alignCorners,halfFloatCenters){return this.throwIfDisposed(),resizeNearestNeighbor(this,newShape2D,alignCorners,halfFloatCenters)};Tensor.prototype.reverse=function(axis){return this.throwIfDisposed(),reverse(this,axis)};Tensor.prototype.rfft=function(){return this.throwIfDisposed(),rfft(this)};Tensor.prototype.round=function(){return this.throwIfDisposed(),round2(this)};Tensor.prototype.rsqrt=function(){return this.throwIfDisposed(),rsqrt(this)};Tensor.prototype.selu=function(){return this.throwIfDisposed(),selu(this)};Tensor.prototype.separableConv2d=function(depthwiseFilter,pointwiseFilter,strides,pad3,dilation,dataFormat){return this.throwIfDisposed(),separableConv2d(this,depthwiseFilter,pointwiseFilter,strides,pad3,dilation,dataFormat)};Tensor.prototype.sigmoid=function(){return this.throwIfDisposed(),sigmoid(this)};Tensor.prototype.sign=function(){return this.throwIfDisposed(),sign(this)};Tensor.prototype.sin=function(){return this.throwIfDisposed(),sin(this)};Tensor.prototype.sinh=function(){return this.throwIfDisposed(),sinh(this)};Tensor.prototype.slice=function(begin,size){return this.throwIfDisposed(),slice(this,begin,size)};Tensor.prototype.softmax=function(dim){return this.throwIfDisposed(),softmax(this,dim)};Tensor.prototype.softplus=function(){return this.throwIfDisposed(),softplus(this)};Tensor.prototype.spaceToBatchND=function(blockShape,paddings){return this.throwIfDisposed(),spaceToBatchND(this,blockShape,paddings)};Tensor.prototype.split=function(numOrSizeSplits,axis){return this.throwIfDisposed(),split(this,numOrSizeSplits,axis)};Tensor.prototype.sqrt=function(){return this.throwIfDisposed(),sqrt(this)};Tensor.prototype.square=function(){return this.throwIfDisposed(),square(this)};Tensor.prototype.squaredDifference=function(b){return this.throwIfDisposed(),squaredDifference(this,b)};Tensor.prototype.squaredDifferenceStrict=function(x){return this.throwIfDisposed(),squaredDifferenceStrict(this,x)};Tensor.prototype.squeeze=function(axis){return this.throwIfDisposed(),squeeze(this,axis)};Tensor.prototype.stack=function(x,axis){this.throwIfDisposed();let tensorsToBeStacked=x instanceof Tensor?[this,x]:[this,...x];return stack(tensorsToBeStacked,axis)};Tensor.prototype.step=function(alpha){return this.throwIfDisposed(),step(this,alpha)};Tensor.prototype.stridedSlice=function(begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask){return this.throwIfDisposed(),stridedSlice(this,begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask)};Tensor.prototype.subStrict=function(x){return this.throwIfDisposed(),subStrict(this,x)};Tensor.prototype.sub=function(b){return this.throwIfDisposed(),sub(this,b)};Tensor.prototype.sum=function(axis,keepDims){return this.throwIfDisposed(),sum2(this,axis,keepDims)};Tensor.prototype.tan=function(){return this.throwIfDisposed(),tan(this)};Tensor.prototype.tanh=function(){return this.throwIfDisposed(),tanh2(this)};Tensor.prototype.tile=function(reps){return this.throwIfDisposed(),tile(this,reps)};Tensor.prototype.toBool=function(){return this.throwIfDisposed(),cast(this,"bool")};Tensor.prototype.toFloat=function(){return this.throwIfDisposed(),cast(this,"float32")};Tensor.prototype.toInt=function(){return this.throwIfDisposed(),cast(this,"int32")};Tensor.prototype.topk=function(k,sorted){return this.throwIfDisposed(),topk(this,k,sorted)};Tensor.prototype.transpose=function(perm){return this.throwIfDisposed(),transpose(this,perm)};Tensor.prototype.unique=function(axis){return this.throwIfDisposed(),unique(this,axis)};Tensor.prototype.unsortedSegmentSum=function(segmentIds,numSegments){return this.throwIfDisposed(),unsortedSegmentSum(this,segmentIds,numSegments)};Tensor.prototype.unstack=function(axis){return this.throwIfDisposed(),unstack(this,axis)};Tensor.prototype.where=function(condition,x){return this.throwIfDisposed(),where(condition,this,x)};Tensor.prototype.zerosLike=function(){return this.throwIfDisposed(),zerosLike(this)};var exports_constraints_exports={};__export2(exports_constraints_exports,{maxNorm:()=>maxNorm,minMaxNorm:()=>minMaxNorm,nonNeg:()=>nonNeg,unitNorm:()=>unitNorm});var _epsilon;function epsilon(){return _epsilon==null&&(_epsilon=backend().epsilon()),_epsilon}function imageDataFormat(){return"channelsLast"}var AttributeError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,AttributeError.prototype)}},RuntimeError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,RuntimeError.prototype)}},ValueError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,ValueError.prototype)}},NotImplementedError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,NotImplementedError.prototype)}},AssertionError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,AssertionError.prototype)}},IndexError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,IndexError.prototype)}};function pyListRepeat(value,numValues){if(Array.isArray(value)){let newArray=[];for(let i=0;ip1.toUpperCase())}var _GLOBAL_CUSTOM_OBJECTS={};function serializeKerasObject(instance){if(instance==null)return null;let dict={};return dict.className=instance.getClassName(),dict.config=instance.getConfig(),dict}function convertNDArrayScalarsInConfig(config){if(!(config==null||typeof config!="object"))if(Array.isArray(config))config.forEach(configItem=>convertNDArrayScalarsInConfig(configItem));else{let fields=Object.keys(config);for(let field of fields){let value=config[field];value!=null&&typeof value=="object"&&(!Array.isArray(value)&&value.type==="ndarray"&&typeof value.value=="number"?config[field]=value.value:convertNDArrayScalarsInConfig(value))}}}function deserializeKerasObject(identifier,moduleObjects={},customObjects={},printableModuleName="object",fastWeightInit=!1){if(typeof identifier=="string"){let functionName=identifier,fn;if(functionName in customObjects)fn=customObjects[functionName];else if(functionName in _GLOBAL_CUSTOM_OBJECTS)fn=_GLOBAL_CUSTOM_OBJECTS[functionName];else if(fn=moduleObjects[functionName],fn==null)throw new ValueError(`Unknown ${printableModuleName}: ${identifier}. This may be due to one of the following reasons: -1. The ${printableModuleName} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code. -2. The custom ${printableModuleName} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);return fn}else{let config=identifier;if(config.className==null||config.config==null)throw new ValueError(`${printableModuleName}: Improper config format: ${JSON.stringify(config)}. -'className' and 'config' must set.`);let className=config.className,cls,fromConfig;if(className in customObjects?[cls,fromConfig]=customObjects[className]:className in _GLOBAL_CUSTOM_OBJECTS?[cls,fromConfig]=_GLOBAL_CUSTOM_OBJECTS.className:className in moduleObjects&&([cls,fromConfig]=moduleObjects[className]),cls==null)throw new ValueError(`Unknown ${printableModuleName}: ${className}. This may be due to one of the following reasons: -1. The ${printableModuleName} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code. -2. The custom ${printableModuleName} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);if(fromConfig!=null){let customObjectsCombined={};for(let key of Object.keys(_GLOBAL_CUSTOM_OBJECTS))customObjectsCombined[key]=_GLOBAL_CUSTOM_OBJECTS[key];for(let key of Object.keys(customObjects))customObjectsCombined[key]=customObjects[key];let nestedConfig=config.config;nestedConfig.customObjects=customObjectsCombined;let backupCustomObjects=Object.assign({},_GLOBAL_CUSTOM_OBJECTS);for(let key of Object.keys(customObjects))_GLOBAL_CUSTOM_OBJECTS[key]=customObjects[key];convertNDArrayScalarsInConfig(config.config);let returnObj=fromConfig(cls,config.config,customObjects,fastWeightInit);return _GLOBAL_CUSTOM_OBJECTS=Object.assign({},backupCustomObjects),returnObj}else{let backupCustomObjects=Object.assign({},_GLOBAL_CUSTOM_OBJECTS);for(let key of Object.keys(customObjects))_GLOBAL_CUSTOM_OBJECTS[key]=customObjects[key];let returnObj=new cls(config.config);return _GLOBAL_CUSTOM_OBJECTS=Object.assign({},backupCustomObjects),returnObj}}}function numberCompare(a,b){return ab?1:0}function reverseNumberCompare(a,b){return-1*numberCompare(a,b)}function unique2(xs){if(xs==null)return xs;let out=[];for(let x of xs)out.indexOf(x)===-1&&out.push(x);return out}function isObjectEmpty(obj){if(obj==null)throw new ValueError(`Invalid value in obj: ${JSON.stringify(obj)}`);for(let key in obj)if(obj.hasOwnProperty(key))return!1;return!0}function checkStringTypeUnionValue(values,label,value){if(value!=null&&values.indexOf(value)<0)throw new ValueError(`${value} is not a valid ${label}. Valid values are ${values} or null/undefined.`)}function checkArrayTypeAndLength(x,expectedType,minLength=0,maxLength=Infinity){return assert2(minLength>=0),assert2(maxLength>=minLength),Array.isArray(x)&&x.length>=minLength&&x.length<=maxLength&&x.every(e=>typeof e===expectedType)}function assertPositiveInteger(value,name){Array.isArray(value)?(util_exports.assert(value.length>0,()=>`${name} is unexpectedly an empty array.`),value.forEach((v,i)=>assertPositiveInteger(v,`element ${i+1} of ${name}`))):util_exports.assert(Number.isInteger(value)&&value>0,()=>`Expected ${name} to be a positive integer, but got ${formatAsFriendlyString(value)}.`)}function formatAsFriendlyString(value){return value===null?"null":Array.isArray(value)?"["+value.map(v=>formatAsFriendlyString(v)).join(",")+"]":typeof value=="string"?`"${value}"`:`${value}`}function debounce(f,waitMs){let lastTime=util_exports.now(),lastResult;return(...args)=>{let now2=util_exports.now();return now2-lastTimesqrt(sum2(mul(w,w),axis,!0)))}var Constraint=class extends serialization_exports.Serializable{getConfig(){return{}}},MaxNorm=class extends Constraint{constructor(args){super();this.defaultMaxValue=2,this.defaultAxis=0,this.maxValue=args.maxValue!=null?args.maxValue:this.defaultMaxValue,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>{let norms=calcL2Norms(w,this.axis),desired=clipByValue(norms,0,this.maxValue);return mul(w,div(desired,add2(epsilon(),norms)))})}getConfig(){return{maxValue:this.maxValue,axis:this.axis}}};MaxNorm.className="MaxNorm";serialization_exports.registerClass(MaxNorm);var UnitNorm=class extends Constraint{constructor(args){super();this.defaultAxis=0,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>div(w,add2(epsilon(),calcL2Norms(w,this.axis))))}getConfig(){return{axis:this.axis}}};UnitNorm.className="UnitNorm";serialization_exports.registerClass(UnitNorm);var NonNeg=class extends Constraint{apply(w){return relu(w)}};NonNeg.className="NonNeg";serialization_exports.registerClass(NonNeg);var MinMaxNorm=class extends Constraint{constructor(args){super();this.defaultMinValue=0,this.defaultMaxValue=1,this.defaultRate=1,this.defaultAxis=0,this.minValue=args.minValue!=null?args.minValue:this.defaultMinValue,this.maxValue=args.maxValue!=null?args.maxValue:this.defaultMaxValue,this.rate=args.rate!=null?args.rate:this.defaultRate,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>{let norms=calcL2Norms(w,this.axis),desired=add2(mul(this.rate,clipByValue(norms,this.minValue,this.maxValue)),mul(1-this.rate,norms));return mul(w,div(desired,add2(epsilon(),norms)))})}getConfig(){return{minValue:this.minValue,maxValue:this.maxValue,rate:this.rate,axis:this.axis}}};MinMaxNorm.className="MinMaxNorm";serialization_exports.registerClass(MinMaxNorm);var CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP={maxNorm:"MaxNorm",minMaxNorm:"MinMaxNorm",nonNeg:"NonNeg",unitNorm:"UnitNorm"};function serializeConstraint(constraint){return serializeKerasObject(constraint)}function deserializeConstraint(config,customObjects={}){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"constraint")}function getConstraint(identifier){if(identifier==null)return null;if(typeof identifier=="string"){let config={className:identifier in CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP?CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier,config:{}};return deserializeConstraint(config)}else return identifier instanceof Constraint?identifier:deserializeConstraint(identifier)}function maxNorm(args){return new MaxNorm(args)}function unitNorm(args){return new UnitNorm(args)}function nonNeg(){return new NonNeg}function minMaxNorm(config){return new MinMaxNorm(config)}var exports_initializers_exports={};__export2(exports_initializers_exports,{constant:()=>constant,glorotNormal:()=>glorotNormal,glorotUniform:()=>glorotUniform,heNormal:()=>heNormal,heUniform:()=>heUniform,identity:()=>identity,leCunNormal:()=>leCunNormal,leCunUniform:()=>leCunUniform,ones:()=>ones3,orthogonal:()=>orthogonal,randomNormal:()=>randomNormal3,randomUniform:()=>randomUniform2,truncatedNormal:()=>truncatedNormal2,varianceScaling:()=>varianceScaling,zeros:()=>zeros2});var VALID_DATA_FORMAT_VALUES=["channelsFirst","channelsLast"],VALID_INTERPOLATION_FORMAT_VALUES=["nearest","bilinear"],VALID_PADDING_MODE_VALUES=["valid","same","causal"],VALID_POOL_MODE_VALUES=["max","avg"],VALID_BIDIRECTIONAL_MERGE_MODES=["sum","mul","concat","ave"],nameMap=new Map;function checkDataFormat(value){checkStringTypeUnionValue(VALID_DATA_FORMAT_VALUES,"DataFormat",value)}function checkInterpolationFormat(value){checkStringTypeUnionValue(VALID_INTERPOLATION_FORMAT_VALUES,"InterpolationFormat",value)}function checkPaddingMode(value){checkStringTypeUnionValue(VALID_PADDING_MODE_VALUES,"PaddingMode",value)}function checkPoolMode(value){checkStringTypeUnionValue(VALID_POOL_MODE_VALUES,"PoolMode",value)}var _nameScopeStack=[],_nameScopeDivider="/";function nameScope(name,fn){_nameScopeStack.push(name);try{let val=fn();return _nameScopeStack.pop(),val}catch(e){throw _nameScopeStack.pop(),e}}function currentNameScopePrefix(){return _nameScopeStack.length===0?"":_nameScopeStack.join(_nameScopeDivider)+_nameScopeDivider}function getScopedTensorName(tensorName){if(!isValidTensorName(tensorName))throw new Error("Not a valid tensor name: '"+tensorName+"'");return currentNameScopePrefix()+tensorName}function getUniqueTensorName(scopedName){if(!isValidTensorName(scopedName))throw new Error("Not a valid tensor name: '"+scopedName+"'");nameMap.has(scopedName)||nameMap.set(scopedName,0);let index=nameMap.get(scopedName);if(nameMap.set(scopedName,nameMap.get(scopedName)+1),index>0){let result=`${scopedName}_${index}`;return nameMap.set(result,1),result}else return scopedName}var tensorNameRegex=new RegExp(/^[A-Za-z0-9][-A-Za-z0-9\._\/]*$/);function isValidTensorName(name){return!!name.match(tensorNameRegex)}function isInteger(x){return x===parseInt(x.toString(),10)}function arrayProd(array2,begin,end){begin==null&&(begin=0),end==null&&(end=array2.length);let prod5=1;for(let i=begin;i{if(x.shape.length!==2)throw new ValueError(`repeat() expects a rank-2 tensor, but received a rank-${x.shape.length} tensor.`);let y=expandDims2(x,1);return tile2(y,[1,n,1])})}function flatten2(x){let newShape=[arrayProd(x.shape)];return x.reshape(newShape)}function batchFlatten(x){if(x.rank<=1)throw new ValueError(`batchFlatten requires a minimum rank of 2. Got rank: ${x.rank}.`);let newShape=[x.shape[0],arrayProd(x.shape,1)];return x.reshape(newShape)}function sliceAlongFirstAxis(array2,start,size){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:return slice2d(array2,[start,0],[size,array2.shape[1]]);case 3:return slice3d(array2,[start,0,0],[size,array2.shape[1],array2.shape[2]]);case 4:return slice4d(array2,[start,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3]]);case 5:return slice(array2,[start,0,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3],array2.shape[4]]);case 6:return slice(array2,[start,0,0,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3],array2.shape[4],array2.shape[5]]);default:throw new ValueError(`sliceAlongFirstAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function sliceAlongLastAxis(array2,start,size){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:return slice2d(array2,[0,start],[array2.shape[0],size]);case 3:return slice3d(array2,[0,0,start],[array2.shape[0],array2.shape[1],size]);case 4:return slice4d(array2,[0,0,0,start],[array2.shape[0],array2.shape[1],array2.shape[2],size]);default:throw new ValueError(`sliceAlongLastAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function sliceAlongAxis(array2,start,size,axis){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}case 3:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return slice3d(array2,[0,start,0],[array2.shape[0],size,array2.shape[2]]);case 3:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}case 4:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return slice4d(array2,[0,start,0,0],[array2.shape[0],size,array2.shape[2],array2.shape[3]]);case 3:return slice4d(array2,[0,0,start,0],[array2.shape[0],array2.shape[1],size,array2.shape[3]]);case 4:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}default:throw new ValueError(`sliceAlongLastAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function concatenate(tensors,axis=-1){let rank;return axis<0&&(rank=tensors[0].rank,rank!==0?axis=rank:axis=0),axis===tensors[0].rank&&(axis=-1),concat(tensors,axis)}function concatAlongFirstAxis(a,b){switch(a.rank){case 1:return concat1d([a,b]);case 2:return concat2d([a,b],0);case 3:return concat3d([a,b],0);case 4:return concat4d([a,b],0);default:throw new ValueError(`concatAlongFirstAxis() received an unsupported tensor rank: ${a.rank}`)}}function tile2(x,n){if(Array.isArray(n)||(n=[n]),x.rank!==n.length)throw new ValueError(`The length of input n (${n.length}) does not match the number of dimensions in input x (${x.rank})`);return tile(x,n)}function randomNormal2(shape,mean4=0,stddev=1,dtype,seed){return randomNormal(shape,mean4,stddev,dtype,seed)}function dot2(a,b,activation2,bias){if(a.rank<2||b.rank<2)throw new NotImplementedError(`dot requires both inputs to be rank >= 2 but got x shape = ${a.shape} and y shape = ${b.shape}`);if(b.rank>=3){let xLastDim=a.shape.slice(-1)[0],ySecondLastDim=b.shape.slice(-2)[0];if(xLastDim!==ySecondLastDim)throw new NotImplementedError(`If rank y >= 3, then the second last dim of y must equal the last dim of x but got x shape = ${a.shape} and y shape = ${b.shape}`)}if(a.rank===2&&b.rank===2){let transposeA=!1,transposeB=!1;return fused_ops_exports.matMul({a,b,transposeA,transposeB,bias:bias?reshapeBias(a.rank,bias,imageDataFormat()):null,activation:activation2})}else{let aFirstDims=a.shape.slice(),aLastDim=aFirstDims.pop();a=a.reshape([-1,aLastDim]);let bShape=b.shape.slice(),bLastDim=bShape.pop(),ySecondLastDim=bShape.pop(),yOtherDims=[...bShape,bLastDim],perm=Array.from({length:b.rank},(_,i)=>i===0?b.rank-2:i<=b.rank-2?i-1:i);b=b.transpose(perm).reshape([ySecondLastDim,-1]);let outputShape=[...aFirstDims,...yOtherDims],transposeA=!1,transposeB=!1;return fused_ops_exports.matMul({a,b,transposeA,transposeB,bias:bias?reshapeBias(a.rank,bias,imageDataFormat()):null,activation:activation2}).reshape(outputShape)}}function gather2(reference,indices,axis){return tidy(()=>(Array.isArray(indices)?indices=tensor1d(indices,"int32"):indices=indices.toInt(),gather(reference,indices,axis)))}function square2(x){return mul(x,x)}function reshapeBias(xRank,bias,dataFormat){let biasShape=bias.shape;if(bias.rank!==1&&bias.rank!==xRank)throw new ValueError(`Unexpected bias dimensions: ${bias.rank}; expected it to be 1 or ${xRank}`);if(xRank===5){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1,1,1]):bias.reshape([1,biasShape[3],biasShape[0],biasShape[1],biasShape[2]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank===4){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1,1]):bias.reshape([1,biasShape[2],biasShape[0],biasShape[1]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank===3){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1]):bias.reshape([1,biasShape[1],biasShape[0]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank<3)return bias;throw new ValueError(`Unsupported input rank by biasAdd: ${bias.rank}`)}function biasAdd(x,bias,dataFormat){return tidy(()=>(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.add(reshapeBias(x.rank,bias,dataFormat))))}function elu2(x,alpha=1){if(alpha!==1)throw new NotImplementedError(`Support for alpha values other than 1 (${alpha}) is not implemented yet.`);return elu(x)}function softsign(x){return tidy(()=>div(x,abs(x).add(1)))}function dropout2(x,level,noiseShape,seed){return tidy(()=>dropout(x,level,noiseShape,seed))}function hardSigmoid(x){return tidy(()=>{let y=add2(.5,mul(.2,x));return clipByValue(y,0,1)})}function inTrainPhase(x,alt,training=!1){return training?x():alt()}var VALID_FAN_MODE_VALUES=["fanIn","fanOut","fanAvg"],VALID_DISTRIBUTION_VALUES=["normal","uniform","truncatedNormal"];function checkFanMode(value){checkStringTypeUnionValue(VALID_FAN_MODE_VALUES,"FanMode",value)}function checkDistribution(value){checkStringTypeUnionValue(VALID_DISTRIBUTION_VALUES,"Distribution",value)}var Initializer=class extends serialization_exports.Serializable{fromConfigUsesCustomObjects(){return!1}getConfig(){return{}}},Zeros=class extends Initializer{apply(shape,dtype){return zeros(shape,dtype)}};Zeros.className="Zeros";serialization_exports.registerClass(Zeros);var Ones=class extends Initializer{apply(shape,dtype){return ones2(shape,dtype)}};Ones.className="Ones";serialization_exports.registerClass(Ones);var Constant=class extends Initializer{constructor(args){super();if(typeof args!="object")throw new ValueError(`Expected argument of type ConstantConfig but got ${args}`);if(args.value===void 0)throw new ValueError(`config must have value set but got ${args}`);this.value=args.value}apply(shape,dtype){return tidy(()=>mul(scalar(this.value),ones2(shape,dtype)))}getConfig(){return{value:this.value}}};Constant.className="Constant";serialization_exports.registerClass(Constant);var RandomUniform=class extends Initializer{constructor(args){super();this.DEFAULT_MINVAL=-.05,this.DEFAULT_MAXVAL=.05,this.minval=args.minval||this.DEFAULT_MINVAL,this.maxval=args.maxval||this.DEFAULT_MAXVAL,this.seed=args.seed}apply(shape,dtype){return randomUniform(shape,this.minval,this.maxval,dtype)}getConfig(){return{minval:this.minval,maxval:this.maxval,seed:this.seed}}};RandomUniform.className="RandomUniform";serialization_exports.registerClass(RandomUniform);var RandomNormal=class extends Initializer{constructor(args){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=args.mean||this.DEFAULT_MEAN,this.stddev=args.stddev||this.DEFAULT_STDDEV,this.seed=args.seed}apply(shape,dtype){if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`randomNormal does not support dType ${dtype}.`);return randomNormal2(shape,this.mean,this.stddev,dtype,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};RandomNormal.className="RandomNormal";serialization_exports.registerClass(RandomNormal);var TruncatedNormal=class extends Initializer{constructor(args){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=args.mean||this.DEFAULT_MEAN,this.stddev=args.stddev||this.DEFAULT_STDDEV,this.seed=args.seed}apply(shape,dtype){if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`truncatedNormal does not support dType ${dtype}.`);return truncatedNormal(shape,this.mean,this.stddev,dtype,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};TruncatedNormal.className="TruncatedNormal";serialization_exports.registerClass(TruncatedNormal);var Identity2=class extends Initializer{constructor(args){super();this.gain=args.gain!=null?args.gain:1}apply(shape,dtype){return tidy(()=>{if(shape.length!==2||shape[0]!==shape[1])throw new ValueError("Identity matrix initializer can only be used for 2D square matrices.");return mul(this.gain,eye(shape[0]))})}getConfig(){return{gain:this.gain}}};Identity2.className="Identity";serialization_exports.registerClass(Identity2);function computeFans(shape,dataFormat="channelsLast"){let fanIn,fanOut;if(checkDataFormat(dataFormat),shape.length===2)fanIn=shape[0],fanOut=shape[1];else if([3,4,5].indexOf(shape.length)!==-1){if(dataFormat==="channelsFirst"){let receptiveFieldSize=arrayProd(shape,2);fanIn=shape[1]*receptiveFieldSize,fanOut=shape[0]*receptiveFieldSize}else if(dataFormat==="channelsLast"){let receptiveFieldSize=arrayProd(shape,0,shape.length-2);fanIn=shape[shape.length-2]*receptiveFieldSize,fanOut=shape[shape.length-1]*receptiveFieldSize}}else{let shapeProd=arrayProd(shape);fanIn=Math.sqrt(shapeProd),fanOut=Math.sqrt(shapeProd)}return[fanIn,fanOut]}var VarianceScaling=class extends Initializer{constructor(args){super();if(args.scale<0)throw new ValueError(`scale must be a positive float. Got: ${args.scale}`);this.scale=args.scale==null?1:args.scale,this.mode=args.mode==null?"fanIn":args.mode,checkFanMode(this.mode),this.distribution=args.distribution==null?"normal":args.distribution,checkDistribution(this.distribution),this.seed=args.seed}apply(shape,dtype){let fans=computeFans(shape),fanIn=fans[0],fanOut=fans[1],scale22=this.scale;if(this.mode==="fanIn"?scale22/=Math.max(1,fanIn):this.mode==="fanOut"?scale22/=Math.max(1,fanOut):scale22/=Math.max(1,(fanIn+fanOut)/2),this.distribution==="normal"){let stddev=Math.sqrt(scale22);if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`${this.getClassName()} does not support dType ${dtype}.`);return truncatedNormal(shape,0,stddev,dtype,this.seed)}else{let limit=Math.sqrt(3*scale22);return randomUniform(shape,-limit,limit,dtype)}}getConfig(){return{scale:this.scale,mode:this.mode,distribution:this.distribution,seed:this.seed}}};VarianceScaling.className="VarianceScaling";serialization_exports.registerClass(VarianceScaling);var GlorotUniform=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanAvg",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};GlorotUniform.className="GlorotUniform";serialization_exports.registerClass(GlorotUniform);var GlorotNormal=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanAvg",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};GlorotNormal.className="GlorotNormal";serialization_exports.registerClass(GlorotNormal);var HeNormal=class extends VarianceScaling{constructor(args){super({scale:2,mode:"fanIn",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};HeNormal.className="HeNormal";serialization_exports.registerClass(HeNormal);var HeUniform=class extends VarianceScaling{constructor(args){super({scale:2,mode:"fanIn",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};HeUniform.className="HeUniform";serialization_exports.registerClass(HeUniform);var LeCunNormal=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanIn",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};LeCunNormal.className="LeCunNormal";serialization_exports.registerClass(LeCunNormal);var LeCunUniform=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanIn",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};LeCunUniform.className="LeCunNormal";serialization_exports.registerClass(LeCunUniform);var Orthogonal=class extends Initializer{constructor(args){super();if(this.DEFAULT_GAIN=1,this.gain=args.gain==null?this.DEFAULT_GAIN:args.gain,this.seed=args.seed,this.seed!=null)throw new NotImplementedError("Random seed is not implemented for Orthogonal Initializer yet.")}apply(shape,dtype){return tidy(()=>{if(shape.length<2)throw new NotImplementedError("Shape must be at least 2D.");shape[0]*shape[1]>2e3&&console.warn(`Orthogonal initializer is being called on a matrix with more than 2000 (${shape[0]*shape[1]}) elements: Slowness may result.`);let normalizedShape=shape[0]>shape[1]?[shape[1],shape[0]]:shape,a=randomNormal2(normalizedShape,0,1,"float32"),q=linalg.gramSchmidt(a);return shape[0]>shape[1]&&(q=q.transpose()),mul(this.gain,q)})}getConfig(){return{gain:this.gain,seed:this.seed}}};Orthogonal.className="Orthogonal";serialization_exports.registerClass(Orthogonal);var INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP={constant:"Constant",glorotNormal:"GlorotNormal",glorotUniform:"GlorotUniform",heNormal:"HeNormal",heUniform:"HeUniform",identity:"Identity",leCunNormal:"LeCunNormal",leCunUniform:"LeCunUniform",ones:"Ones",orthogonal:"Orthogonal",randomNormal:"RandomNormal",randomUniform:"RandomUniform",truncatedNormal:"TruncatedNormal",varianceScaling:"VarianceScaling",zeros:"Zeros"};function deserializeInitializer(config,customObjects={}){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"initializer")}function serializeInitializer(initializer){return serializeKerasObject(initializer)}function getInitializer(identifier){if(typeof identifier=="string"){let className=identifier in INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP?INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier;if(className==="GlorotNormal")return new GlorotNormal;if(className==="GlorotUniform")return new GlorotUniform;if(className==="HeNormal")return new HeNormal;if(className==="HeUniform")return new HeUniform;if(className==="LeCunNormal")return new LeCunNormal;if(className==="LeCunUniform")return new LeCunUniform;{let config={};return config.className=className,config.config={},deserializeInitializer(config)}}else return identifier instanceof Initializer?identifier:deserializeInitializer(identifier)}function zeros2(){return new Zeros}function ones3(){return new Ones}function constant(args){return new Constant(args)}function randomUniform2(args){return new RandomUniform(args)}function randomNormal3(args){return new RandomNormal(args)}function truncatedNormal2(args){return new TruncatedNormal(args)}function identity(args){return new Identity2(args)}function varianceScaling(config){return new VarianceScaling(config)}function glorotUniform(args){return new GlorotUniform(args)}function glorotNormal(args){return new GlorotNormal(args)}function heNormal(args){return new HeNormal(args)}function heUniform(args){return new HeUniform(args)}function leCunNormal(args){return new LeCunNormal(args)}function leCunUniform(args){return new LeCunUniform(args)}function orthogonal(args){return new Orthogonal(args)}var exports_layers_exports={};__export2(exports_layers_exports,{Layer:()=>Layer,RNN:()=>RNN,RNNCell:()=>RNNCell,activation:()=>activation,add:()=>add3,alphaDropout:()=>alphaDropout,average:()=>average,averagePooling1d:()=>averagePooling1d,averagePooling2d:()=>averagePooling2d,averagePooling3d:()=>averagePooling3d,avgPool1d:()=>avgPool1d,avgPool2d:()=>avgPool2d,avgPool3d:()=>avgPool3d2,avgPooling1d:()=>avgPooling1d,avgPooling2d:()=>avgPooling2d,avgPooling3d:()=>avgPooling3d,batchNormalization:()=>batchNormalization2,bidirectional:()=>bidirectional,concatenate:()=>concatenate2,conv1d:()=>conv1d2,conv2d:()=>conv2d3,conv2dTranspose:()=>conv2dTranspose2,conv3d:()=>conv3d2,convLstm2d:()=>convLstm2d,convLstm2dCell:()=>convLstm2dCell,cropping2D:()=>cropping2D,dense:()=>dense,depthwiseConv2d:()=>depthwiseConv2d4,dot:()=>dot3,dropout:()=>dropout3,elu:()=>elu3,embedding:()=>embedding,flatten:()=>flatten3,gaussianDropout:()=>gaussianDropout,gaussianNoise:()=>gaussianNoise,globalAveragePooling1d:()=>globalAveragePooling1d,globalAveragePooling2d:()=>globalAveragePooling2d,globalMaxPool1d:()=>globalMaxPool1d,globalMaxPool2d:()=>globalMaxPool2d,globalMaxPooling1d:()=>globalMaxPooling1d,globalMaxPooling2d:()=>globalMaxPooling2d,gru:()=>gru,gruCell:()=>gruCell,input:()=>input,inputLayer:()=>inputLayer,layerNormalization:()=>layerNormalization,leakyReLU:()=>leakyReLU,lstm:()=>lstm,lstmCell:()=>lstmCell,masking:()=>masking,maxPool1d:()=>maxPool1d,maxPool2d:()=>maxPool2d,maxPooling1d:()=>maxPooling1d,maxPooling2d:()=>maxPooling2d,maxPooling3d:()=>maxPooling3d,maximum:()=>maximum2,minimum:()=>minimum2,multiply:()=>multiply,permute:()=>permute,prelu:()=>prelu2,reLU:()=>reLU,repeatVector:()=>repeatVector,reshape:()=>reshape2,rnn:()=>rnn2,separableConv2d:()=>separableConv2d2,simpleRNN:()=>simpleRNN,simpleRNNCell:()=>simpleRNNCell,softmax:()=>softmax2,spatialDropout1d:()=>spatialDropout1d,stackedRNNCells:()=>stackedRNNCells,thresholdedReLU:()=>thresholdedReLU,timeDistributed:()=>timeDistributed,upSampling2d:()=>upSampling2d,zeroPadding2d:()=>zeroPadding2d});var _nextUniqueTensorId=0;function getNextUniqueTensorId(){return _nextUniqueTensorId++}var _uidPrefixes={};function getUid(prefix=""){return prefix in _uidPrefixes||(_uidPrefixes[prefix]=0),_uidPrefixes[prefix]+=1,prefix+_uidPrefixes[prefix].toString()}function isArrayOfShapes(x){return Array.isArray(x)&&Array.isArray(x[0])}function normalizeShapeList(x){return x.length===0?[]:Array.isArray(x[0])?x:[x]}function getExactlyOneTensor(xs){let x;if(Array.isArray(xs)){if(xs.length!==1)throw new ValueError(`Expected Tensor length to be 1; got ${xs.length}`);x=xs[0]}else x=xs;return x}function getExactlyOneShape(shapes){if(Array.isArray(shapes)&&Array.isArray(shapes[0])){if(shapes.length===1)return shapes=shapes,shapes[0];throw new ValueError(`Expected exactly 1 Shape; got ${shapes.length}`)}else return shapes}function countParamsInWeights(weights){let count2=0;for(let weight of weights)weight.shape.length===0?count2+=1:count2+=weight.shape.reduce((a,b)=>a*b);return count2}var DEFAULT_VARIABLE_NAME_PREFIX="Variable",LayerVariable=class{constructor(val,dtype="float32",name=DEFAULT_VARIABLE_NAME_PREFIX,trainable=!0,constraint=null){this.dtype=dtype==null?"float32":dtype,this.shape=val.shape,this.id=getNextUniqueTensorId(),name=name==null?DEFAULT_VARIABLE_NAME_PREFIX:name,this.originalName=getScopedTensorName(name),this.name=getUniqueTensorName(this.originalName),this.trainable_=trainable,this.constraint=constraint,this.val=variable(val,this.trainable_,this.name,this.dtype)}read(){return this.assertNotDisposed(),this.val}write(newVal){return this.assertNotDisposed(),checkShapesMatch(this.val,newVal),this.val.id!==newVal.id&&(this.val.assign(newVal),this.constraint!=null&&this.val.assign(this.constraint.apply(this.val))),this}dispose(){this.assertNotDisposed(),this.val.dispose()}assertNotDisposed(){if(this.val.isDisposed)throw new Error(`LayersVariable ${this.name} is already disposed.`)}get trainable(){return this.trainable_}set trainable(trainable){this.trainable_=trainable,this.val.trainable=trainable}};function checkShapesMatch(x,y){if(x.shape.toString()!==y.shape.toString())throw new Error("Shape mismatch: "+JSON.stringify(x.shape)+" vs. "+JSON.stringify(y.shape))}function batchGetValue(xs){return xs.map(x=>x.read())}function batchSetValue(variablesAndValues){variablesAndValues.forEach(variableAndValue=>{variableAndValue[0].write(variableAndValue[1])})}var InputSpec=class{constructor(args){this.dtype=args.dtype,this.shape=args.shape,args.shape!=null?this.ndim=args.shape.length:this.ndim=args.ndim,this.maxNDim=args.maxNDim,this.minNDim=args.minNDim,this.axes=args.axes||{}}},SymbolicTensor=class{constructor(dtype,shape,sourceLayer,inputs,callArgs,name,outputTensorIndex){this.dtype=dtype,this.shape=shape,this.sourceLayer=sourceLayer,this.inputs=inputs,this.callArgs=callArgs,this.outputTensorIndex=outputTensorIndex,this.id=getNextUniqueTensorId(),name!=null&&(this.originalName=getScopedTensorName(name),this.name=getUniqueTensorName(this.originalName)),this.rank=shape.length}},_nextNodeID=0,Node=class{constructor(args,callArgs){this.callArgs=callArgs,this.id=_nextNodeID++,this.outboundLayer=args.outboundLayer,this.inboundLayers=args.inboundLayers,this.nodeIndices=args.nodeIndices,this.tensorIndices=args.tensorIndices,this.inputTensors=args.inputTensors,this.outputTensors=args.outputTensors,this.inputMasks=args.inputMasks,this.outputMasks=args.outputMasks,this.inputShapes=args.inputShapes,this.outputShapes=args.outputShapes;for(let layer of args.inboundLayers)layer!=null&&layer.outboundNodes.push(this);args.outboundLayer.inboundNodes.push(this)}getConfig(){let inboundNames=[];for(let layer of this.inboundLayers)layer!=null?inboundNames.push(layer.name):inboundNames.push(null);return{outboundLayer:this.outboundLayer?this.outboundLayer.name:null,inboundLayers:inboundNames,nodeIndices:this.nodeIndices,tensorIndices:this.tensorIndices}}},_nextLayerID=0,Layer=class extends serialization_exports.Serializable{constructor(args={}){super();this._callHook=null,this._addedWeightNames=[],this._stateful=!1,this.id=_nextLayerID++,this.activityRegularizer=null,this.inputSpec=null,this.supportsMasking=!1,this._trainableWeights=[],this._nonTrainableWeights=[],this._losses=[],this._updates=[],this._built=!1,this.inboundNodes=[],this.outboundNodes=[];let name=args.name;if(!name){let prefix=this.getClassName();name=toSnakeCase(prefix)+"_"+getUid(prefix)}if(this.name=name,this.trainable_=args.trainable==null?!0:args.trainable,args.inputShape!=null||args.batchInputShape!=null){let batchInputShape;if(args.batchInputShape!=null)batchInputShape=args.batchInputShape;else if(args.inputShape!=null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),batchInputShape=[batchSize].concat(args.inputShape)}this.batchInputShape=batchInputShape;let dtype=args.dtype;dtype==null&&(dtype=args.inputDType),dtype==null&&(dtype="float32"),this.dtype=dtype}args.weights!=null?this.initialWeights=args.weights:this.initialWeights=null,this._refCount=null,this.fastWeightInitDuringBuild=!1}static nodeKey(layer,nodeIndex){return layer.name+"_ib-"+nodeIndex.toString()}getNodeAtIndex(nodeIndex,attrName){if(this.inboundNodes.length===0)throw new RuntimeError(`The layer has never been called and thus has no defined ${attrName}.`);if(this.inboundNodes.length<=nodeIndex)throw new ValueError(`Asked to get ${attrName} at node ${nodeIndex}, but the layer has only ${this.inboundNodes.length} inbound nodes.`);return this.inboundNodes[nodeIndex]}getInputAt(nodeIndex){return singletonOrArray(this.getNodeAtIndex(nodeIndex,"input").inputTensors)}getOutputAt(nodeIndex){return singletonOrArray(this.getNodeAtIndex(nodeIndex,"output").outputTensors)}get input(){if(this.inboundNodes.length>1)throw new AttributeError(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer input" is ill-defined. Use \`getInputAt(nodeIndex)\` instead.`);if(this.inboundNodes.length===0)throw new AttributeError(`Layer ${this.name} is not connected, no input to return.`);return singletonOrArray(this.getNodeAtIndex(0,"input").inputTensors)}get output(){if(this.inboundNodes.length===0)throw new AttributeError(`Layer ${this.name} has no inbound nodes.`);if(this.inboundNodes.length>1)throw new AttributeError(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer output" is ill-defined. Use \`getOutputAt(nodeIndex)\` instead.`);return singletonOrArray(this.getNodeAtIndex(0,"output").outputTensors)}get losses(){return this._losses}calculateLosses(){return this.losses.map(lossFn=>lossFn())}get updates(){return this._updates}get built(){return this._built}set built(built){this._built=built}get trainable(){return this.trainable_}set trainable(trainable){this._trainableWeights.forEach(w=>w.trainable=trainable),this.trainable_=trainable}get trainableWeights(){return this.trainable_?this._trainableWeights.filter(w=>w.trainable):[]}set trainableWeights(weights){this._trainableWeights=weights}get nonTrainableWeights(){return this.trainable?this._trainableWeights.filter(w=>!w.trainable).concat(this._nonTrainableWeights):this._trainableWeights.concat(this._nonTrainableWeights)}set nonTrainableWeights(weights){this._nonTrainableWeights=weights}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}get stateful(){return this._stateful}resetStates(){if(!this.stateful)throw new Error("Cannot call the resetStates() method of a non-stateful Layer object.")}assertInputCompatibility(inputs){if(inputs=toList(inputs),this.inputSpec==null||this.inputSpec.length===0)return;let inputSpec=toList(this.inputSpec);if(inputs.length!==inputSpec.length)throw new ValueError(`Layer ${this.name} expects ${inputSpec.length} inputs, but it received ${inputs.length} input tensors. Input received: ${inputs}`);for(let inputIndex=0;inputIndexspec.maxNDim)throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name}: expected max_ndim=${spec.maxNDim}, found ndim=${ndim}`);if(spec.minNDim!=null&&ndim=0?xShape[axis]:xShape[xShape.length+axis];if(value!=null&&[value,null].indexOf(xShapeAtAxis)===-1)throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name}: expected axis ${axis} of input shape to have value ${value} but got shape ${xShape}.`)}}if(spec.shape!=null)for(let i=0;i{if(!this.built){this.assertInputCompatibility(inputs);let inputShapes=[];for(let xElem of toList(inputs))inputShapes.push(xElem.shape);this.build(singletonOrArray(inputShapes)),this.built=!0,this.initialWeights&&this.setWeights(this.initialWeights),this._refCount===null&&noneAreSymbolic&&(this._refCount=1)}if(this.assertInputCompatibility(inputs),noneAreSymbolic){let output=this.call(inputs,kwargs),outputList=toList(output),outputListCopy=[];for(let x of outputList)inputsList.indexOf(x)!==-1&&(x=x.clone()),outputListCopy.push(x);if(output=singletonOrArray(outputListCopy),this.activityRegularizer!=null)throw new NotImplementedError("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return output}else{let inputShape=collectInputShape(inputs),outputShape=this.computeOutputShape(inputShape),output,outputDType=guessOutputDType(inputs);if(this.warnOnIncompatibleInputShape(Array.isArray(inputs)?inputShape[0]:inputShape),outputShape!=null&&outputShape.length>0&&Array.isArray(outputShape[0])?output=outputShape.map((shape,index)=>new SymbolicTensor(outputDType,shape,this,toList(inputs),kwargs,this.name,index)):output=new SymbolicTensor(outputDType,outputShape,this,toList(inputs),kwargs,this.name),this.addInboundNode(inputs,output,null,null,inputShape,outputShape,kwargs),this._refCount++,this.activityRegularizer!=null)throw new NotImplementedError("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return output}})}warnOnIncompatibleInputShape(inputShape){if(this.batchInputShape!=null)if(inputShape.length!==this.batchInputShape.length)console.warn(`The rank of the input tensor provided (shape: ${JSON.stringify(inputShape)}) does not match that of the batchInputShape (${JSON.stringify(this.batchInputShape)}) of the layer ${this.name}`);else{let dimMismatch=!1;this.batchInputShape.forEach((dimension,i)=>{dimension!=null&&inputShape[i]!=null&&inputShape[i]!==dimension&&(dimMismatch=!0)}),dimMismatch&&console.warn(`The shape of the input tensor (${JSON.stringify(inputShape)}) does not match the expectation of layer ${this.name}: ${JSON.stringify(this.batchInputShape)}`)}}get outputShape(){if(this.inboundNodes==null||this.inboundNodes.length===0)throw new AttributeError(`The layer ${this.name} has never been called and thus has no defined output shape.`);let allOutputShapes=[];for(let node2 of this.inboundNodes){let shapeString=JSON.stringify(node2.outputShapes);allOutputShapes.indexOf(shapeString)===-1&&allOutputShapes.push(shapeString)}if(allOutputShapes.length===1){let outputShapes=this.inboundNodes[0].outputShapes;return Array.isArray(outputShapes)&&Array.isArray(outputShapes[0])&&outputShapes.length===1?outputShapes[0]:outputShapes}else throw new AttributeError(`The layer ${this.name} has multiple inbound nodes with different output shapes. Hence the notion of "output shape" is ill-defined for the layer.`)}countParams(){if(!this.built)throw new RuntimeError(`You tried to call countParams() on ${this.name}, but the layer is not built yet. Build it first by calling build(batchInputShape).`);return countParamsInWeights(this.weights)}build(inputShape){this.built=!0}getWeights(trainableOnly=!1){return batchGetValue(trainableOnly?this.trainableWeights:this.weights)}setWeights(weights){tidy(()=>{let params=this.weights;if(params.length!==weights.length)throw new ValueError(`You called setWeights(weights) on layer "${this.name}" with a weight list of length ${weights.length}, but the layer was expecting ${params.length} weights. Provided weights: ${weights}...`);if(params.length===0)return;let weightValueTuples=[],paramValues=batchGetValue(params);for(let i=0;iregularizer.apply(weight.read())),trainable==null&&(trainable=!0),trainable?this._trainableWeights.push(weight):this._nonTrainableWeights.push(weight),weight}setFastWeightInitDuringBuild(value){this.fastWeightInitDuringBuild=value}addLoss(losses4){losses4==null||Array.isArray(losses4)&&losses4.length===0||(losses4=toList(losses4),this._losses!==void 0&&this._losses!==null&&this.losses.push(...losses4))}computeOutputShape(inputShape){return inputShape}computeMask(inputs,mask){if(!this.supportsMasking){if(mask!=null)if(Array.isArray(mask))mask.forEach(maskElement=>{if(maskElement!=null)throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`)});else throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`);return null}return mask}addInboundNode(inputTensors,outputTensors,inputMasks,outputMasks,inputShapes,outputShapes,kwargs=null){let inputTensorList=toList(inputTensors);outputTensors=toList(outputTensors),inputMasks=toList(inputMasks),outputMasks=toList(outputMasks),inputShapes=normalizeShapeList(inputShapes),outputShapes=normalizeShapeList(outputShapes);let inboundLayers=[],nodeIndices=[],tensorIndices=[];for(let x of inputTensorList)inboundLayers.push(x.sourceLayer),nodeIndices.push(x.nodeIndex),tensorIndices.push(x.tensorIndex);new Node({outboundLayer:this,inboundLayers,nodeIndices,tensorIndices,inputTensors:inputTensorList,outputTensors,inputMasks,outputMasks,inputShapes,outputShapes},kwargs);for(let i=0;iweight.dispose()),this.weights.length}assertNotDisposed(){if(this._refCount===0)throw new Error(`Layer '${this.name}' is already disposed.`)}dispose(){if(!this.built)throw new Error(`Cannot dispose Layer ${this.name} because it has not been built yet.`);if(this._refCount===null)throw new Error(`Cannot dispose Layer ${this.name} because it has not been used yet.`);this.assertNotDisposed();let numDisposedVariables=0;return--this._refCount==0&&(numDisposedVariables=this.disposeWeights()),{refCountAfterDispose:this._refCount,numDisposedVariables}}};function collectInputShape(inputTensors){inputTensors=toList(inputTensors);let shapes=[];for(let x of inputTensors)shapes.push(x.shape);return singletonOrArray(shapes)}function guessOutputDType(inputTensors){return"float32"}function getSourceInputs(tensor2,layer,nodeIndex){if((layer==null||nodeIndex!=null&&nodeIndex>0)&&(layer=tensor2.sourceLayer,nodeIndex=tensor2.nodeIndex),layer.inboundNodes.length===0)return[tensor2];{let node2=layer.inboundNodes[nodeIndex];if(node2.inboundLayers.length===0)return node2.inputTensors;{let sourceTensors=[];for(let i=0;i0){let values=await Promise.all(promises);for(let i=0;iadd2(this.totals[key],mul(value,batchSize)));this.totals[key]=total,oldTotalsToDispose!=null&&oldTotalsToDispose.dispose()}}}async onEpochEnd(epoch,logs){if(logs!=null)for(let key of this.params.metrics)this.totals[key]!=null&&(typeof this.totals[key]=="number"?logs[key]=this.totals[key]/this.seen:tidy(()=>{let log5=mul(div(1,this.seen),this.totals[key]);logs[key]=log5,this.totals[key].dispose(),keep(logs[key])}))}},History=class extends BaseCallback{async onTrainBegin(logs){this.epoch=[],this.history={}}async onEpochEnd(epoch,logs){logs==null&&(logs={}),this.epoch.push(epoch);for(let key in logs)this.history[key]==null&&(this.history[key]=[]),this.history[key].push(logs[key])}async syncData(){let promises=[],keys=[],indices=[];for(let key in this.history){let valueArray=this.history[key];for(let i=0;inew CustomCallback(callbackConfig,yieldEvery))}var CallbackConstructorRegistry=class{constructor(){}static registerCallbackConstructor(verbosityLevel,callbackConstructor){util_exports.assert(verbosityLevel>=0&&Number.isInteger(verbosityLevel),()=>`Verbosity level is expected to be an integer >= 0, but got ${verbosityLevel}`),CallbackConstructorRegistry.checkForDuplicate(callbackConstructor),CallbackConstructorRegistry.constructors[verbosityLevel]==null&&(CallbackConstructorRegistry.constructors[verbosityLevel]=[]),CallbackConstructorRegistry.constructors[verbosityLevel].push(callbackConstructor)}static checkForDuplicate(callbackConstructor){for(let levelName in CallbackConstructorRegistry.constructors)CallbackConstructorRegistry.constructors[+levelName].forEach(ctor=>{if(ctor===callbackConstructor)throw new ValueError("Duplicate callback constructor.")})}static clear(){CallbackConstructorRegistry.constructors={}}static createCallbacks(verbosityLevel){let constructors=[];for(let levelName in CallbackConstructorRegistry.constructors){let level=+levelName;verbosityLevel>=level&&constructors.push(...CallbackConstructorRegistry.constructors[level])}return constructors.map(ctor=>new ctor)}};CallbackConstructorRegistry.constructors={};function configureCallbacks(callbacks2,verbose,epochs,initialEpoch,numTrainSamples,stepsPerEpoch,batchSize,doValidation,callbackMetrics){let history=new History,actualCallbacks=[new BaseLogger,...CallbackConstructorRegistry.createCallbacks(verbose)];callbacks2!=null&&actualCallbacks.push(...callbacks2),actualCallbacks.push(history);let callbackList=new CallbackList(actualCallbacks);return callbackList.setParams({epochs,initialEpoch,samples:numTrainSamples,steps:stepsPerEpoch,batchSize,verbose,doValidation,metrics:callbackMetrics}),{callbackList,history}}function deserialize(config,customObjects={},fastWeightInit=!1){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"layer",fastWeightInit)}function l2Normalize(x,axis){return tidy(()=>{x.dtype!=="float32"&&(x=x.asType("float32"));let squareSum=sum2(square2(x),axis,!0),epsilonTensor=fill(squareSum.shape,epsilon()),norm2=sqrt(maximum(squareSum,epsilonTensor));return div(x,norm2)})}function meanSquaredError2(yTrue,yPred){return tidy(()=>mean(square2(sub(yPred,yTrue)),-1))}function meanAbsoluteError(yTrue,yPred){return tidy(()=>mean(abs(sub(yPred,yTrue)),-1))}function meanAbsolutePercentageError(yTrue,yPred){return tidy(()=>{let diff=sub(yTrue,yPred),clippedTrue=clipByValue(abs(yTrue),epsilon(),Number.MAX_VALUE),absResult=abs(div(diff,clippedTrue));return mul(100,mean(absResult,-1))})}function meanSquaredLogarithmicError(yTrue,yPred){return tidy(()=>{let clippedPred=clipByValue(yPred,epsilon(),Number.MAX_VALUE),firstLog=log(add2(1,clippedPred)),clippedTrue=clipByValue(yTrue,epsilon(),Number.MAX_VALUE),secondLog=log(add2(1,clippedTrue));return mean(square2(sub(firstLog,secondLog)),-1)})}function squaredHinge(yTrue,yPred){return tidy(()=>{let maxResult=maximum(0,sub(1,mul(yTrue,yPred)));return mean(square2(maxResult),-1)})}function hinge(yTrue,yPred){return tidy(()=>{let maxResult=maximum(0,sub(1,mul(yTrue,yPred)));return mean(maxResult,-1)})}function categoricalHinge(yTrue,yPred){return tidy(()=>{let pos=sum2(mul(yTrue,yPred),-1),neg4=max(mul(sub(1,yTrue),yPred),-1);return maximum(0,add2(1,sub(neg4,pos)))})}function logcosh(yTrue,yPred){return tidy(()=>{let log22=Math.log(2),predictionDiff=sub(yPred,yTrue),logcoshResult=sub(add2(predictionDiff,softplus(mul(-2,predictionDiff))),log22);return mean(logcoshResult,-1)})}function categoricalCrossentropy(target,output,fromLogits=!1){return tidy(()=>{if(fromLogits)output=softmax(output);else{let outputSum=sum2(output,output.shape.length-1,!0);output=div(output,outputSum)}return output=clipByValue(output,epsilon(),1-epsilon()),neg(sum2(mul(target.toFloat(),log(output)),output.shape.length-1))})}function sparseCategoricalCrossentropy(target,output,fromLogits=!1){return tidy(()=>{let flatTarget=floor(flatten2(target)).toInt();output=clipByValue(output,epsilon(),1-epsilon());let outputShape=output.shape,oneHotTarget=oneHot(flatTarget,outputShape[outputShape.length-1]).reshape(outputShape);return categoricalCrossentropy(oneHotTarget,output,fromLogits)})}function sigmoidCrossEntropyWithLogits(labels,logits){if(!util_exports.arraysEqual(labels.shape,logits.shape))throw new ValueError(`logits and labels must have the same shape, but got shapes ${JSON.stringify(labels.shape)} and ${JSON.stringify(logits.shape)}`);return tidy(()=>{let reluLogits=logits.relu(),negAbsLogits=logits.abs().neg();return reluLogits.sub(logits.mul(labels)).add(negAbsLogits.exp().log1p())})}function binaryCrossentropy(yTrue,yPred){return tidy(()=>{let y;return y=clipByValue(yPred,epsilon(),1-epsilon()),y=log(div(y,sub(1,y))),mean(sigmoidCrossEntropyWithLogits(yTrue,y),-1)})}function kullbackLeiblerDivergence(yTrue,yPred){return tidy(()=>{let clippedTrue=clipByValue(yTrue,epsilon(),1),clippedPred=clipByValue(yPred,epsilon(),1);return sum2(mul(yTrue,log(div(clippedTrue,clippedPred))),-1)})}function poisson(yTrue,yPred){return tidy(()=>{let logPred=log(add2(epsilon(),yPred));return mean(sub(yPred,mul(yTrue,logPred)),-1)})}function cosineProximity(yTrue,yPred){return tidy(()=>{let trueNormalized=l2Normalize(yTrue,-1),predNormalized=l2Normalize(yPred,-1),trueXPred=mul(trueNormalized,predNormalized);return neg(sum2(trueXPred,-1))})}var lossesMap={meanSquaredError:meanSquaredError2,meanAbsoluteError,meanAbsolutePercentageError,meanSquaredLogarithmicError,squaredHinge,hinge,categoricalHinge,logcosh,categoricalCrossentropy,sparseCategoricalCrossentropy,binaryCrossentropy,kullbackLeiblerDivergence,poisson,cosineProximity};function get(identifierOrFn){if(typeof identifierOrFn=="string"){if(identifierOrFn in lossesMap)return lossesMap[identifierOrFn];let errMsg=`Unknown loss ${identifierOrFn}`;throw identifierOrFn.toLowerCase().includes("softmaxcrossentropy")&&(errMsg=`Unknown loss ${identifierOrFn}. Use "categoricalCrossentropy" as the string name for tf.losses.softmaxCrossEntropy`),new ValueError(errMsg)}else return identifierOrFn}function binaryAccuracy(yTrue,yPred){return tidy(()=>{let threshold2=mul(.5,onesLike(yPred)),yPredThresholded=cast2(greater(yPred,threshold2),yTrue.dtype);return mean(equal(yTrue,yPredThresholded),-1)})}function categoricalAccuracy(yTrue,yPred){return tidy(()=>cast2(equal(argMax(yTrue,-1),argMax(yPred,-1)),"float32"))}function truePositives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(1),yPred.equal(1)).sum().cast("float32"))}function falseNegatives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(1),yPred.equal(0)).sum().cast("float32"))}function falsePositives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(0),yPred.equal(1)).sum().cast("float32"))}function precision(yTrue,yPred){return tidy(()=>{let tp=truePositives(yTrue,yPred),fp=falsePositives(yTrue,yPred),denominator=tp.add(fp);return where(greater(denominator,0),tp.div(denominator),0).cast("float32")})}function recall(yTrue,yPred){return tidy(()=>{let tp=truePositives(yTrue,yPred),fn=falseNegatives(yTrue,yPred),denominator=tp.add(fn);return where(greater(denominator,0),tp.div(denominator),0).cast("float32")})}function binaryCrossentropy2(yTrue,yPred){return binaryCrossentropy(yTrue,yPred)}function sparseCategoricalAccuracy(yTrue,yPred){return yTrue.rank===yPred.rank&&(yTrue=yTrue.squeeze([yTrue.rank-1])),yPred=yPred.argMax(-1),yPred.dtype!==yTrue.dtype&&(yPred=yPred.asType(yTrue.dtype)),equal(yTrue,yPred).asType("float32")}var mse=meanSquaredError2,MSE=meanSquaredError2,mae=meanAbsoluteError,MAE=meanAbsoluteError,mape=meanAbsolutePercentageError,MAPE=meanAbsolutePercentageError,categoricalCrossentropy2=categoricalCrossentropy,cosine=cosineProximity,sparseCategoricalCrossentropy2=sparseCategoricalCrossentropy,metricsMap={binaryAccuracy,categoricalAccuracy,precision,categoricalCrossentropy:categoricalCrossentropy2,sparseCategoricalCrossentropy:sparseCategoricalCrossentropy2,mse,MSE,mae,MAE,mape,MAPE,cosine};function get2(identifier){if(typeof identifier=="string"&&identifier in metricsMap)return metricsMap[identifier];if(typeof identifier!="string"&&identifier!=null)return identifier;throw new ValueError(`Unknown metric ${identifier}`)}function getLossOrMetricName(fn){if(assert2(fn!==null,`Unknown LossOrMetricFn ${fn}`),typeof fn=="string")return fn;{let fnName;for(let key of Object.keys(lossesMap))if(lossesMap[key]===fn){fnName=key;break}if(fnName!==void 0)return fnName;for(let key of Object.keys(metricsMap))if(metricsMap[key]===fn){fnName=key;break}return fnName!==void 0?fnName:fn.name}}function getOptimizer(identifier){let optimizerMap={Adagrad:()=>train.adagrad(.01),Adadelta:()=>train.adadelta(1,.95,epsilon()),Adam:()=>train.adam(.001,.9,.999,epsilon()),Adamax:()=>train.adamax(.002,.9,.999,epsilon(),0),RMSProp:()=>train.rmsprop(.001,.9,0,epsilon()),SGD:()=>train.sgd(.01)};if(optimizerMap.adagrad=optimizerMap.Adagrad,optimizerMap.adadelta=optimizerMap.Adadelta,optimizerMap.adam=optimizerMap.Adam,optimizerMap.adamax=optimizerMap.Adamax,optimizerMap.rmsprop=optimizerMap.RMSProp,optimizerMap.sgd=optimizerMap.SGD,identifier in optimizerMap)return optimizerMap[identifier]();throw new ValueError(`Unknown Optimizer ${identifier}`)}var MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH=1*1024*1024;function checkUserDefinedMetadata(userDefinedMetadata,modelName,checkSize=!1){if(userDefinedMetadata==null||typeof userDefinedMetadata!="object"||Object.getPrototypeOf(userDefinedMetadata)!==Object.prototype||!plainObjectCheck(userDefinedMetadata))throw new Error("User-defined metadata is expected to be a JSON object, but is not.");if(checkSize){let out=JSON.stringify(userDefinedMetadata);out.length>MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH&&console.warn(`User-defined metadata of model "${modelName}" is too large in size (length=${out.length} when serialized). It is not recommended to store such large objects in user-defined metadata. Please make sure its serialized length is <= ${MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH}.`)}}function plainObjectCheck(x){if(x===null)return!0;if(typeof x=="object")if(Object.getPrototypeOf(x)===Object.prototype){let keys=Object.keys(x);for(let key of keys)if(typeof key!="string"||!plainObjectCheck(x[key]))return!1;return!0}else if(Array.isArray(x)){for(let item of x)if(!plainObjectCheck(item))return!1;return!0}else return!1;else{let xType=typeof x;return xType==="string"||xType==="number"||xType==="boolean"}}function printSummary(model2,lineLength,positions,printFn=console.log){let sequentialLike=isModelSequentialLike(model2),toDisplay=["Layer (type)","Output shape","Param #"];sequentialLike?(lineLength=lineLength||65,positions=positions||[.45,.85,1]):(lineLength=lineLength||98,positions=positions||[.33,.55,.67,1]),positions[positions.length-1]<=1&&(positions=positions.map(p2=>Math.floor(lineLength*p2)));let relevantNodes;if(!sequentialLike){toDisplay.push("Receives inputs"),relevantNodes=[];for(let depth in model2.nodesByDepth)relevantNodes.push(...model2.nodesByDepth[depth])}printFn("_".repeat(lineLength)),printRow(toDisplay,positions,printFn),printFn("=".repeat(lineLength));let layers=model2.layers;for(let i=0;i1||depthNodes.length===1&&depthNodes[0].inboundLayers.length>1){sequentialLike=!1;break}nodes.push(...depthNodes)}if(sequentialLike)for(let layer of model2.layers){let flag=!1;for(let node2 of layer.inboundNodes)if(nodes.indexOf(node2)!==-1)if(flag){sequentialLike=!1;break}else flag=!0;if(!sequentialLike)break}return sequentialLike}function printRow(fields,positions,printFn=console.log){let line="";for(let i=0;i0&&(line=line.slice(0,line.length-1)+" "),line+=fields[i],line=line.slice(0,positions[i]),line+=" ".repeat(positions[i]-line.length);printFn(line)}function printLayerSummary(layer,positions,printFn){let outputShape;try{outputShape=JSON.stringify(layer.outputShape)}catch(err){outputShape="multiple"}let name=layer.name,className=layer.getClassName(),fields=[`${name} (${className})`,outputShape,layer.countParams().toString()];printRow(fields,positions,printFn)}function printLayerSummaryWithConnections(layer,positions,relevantNodes,printFn){let outputShape;try{outputShape=JSON.stringify(layer.outputShape)}catch(err){outputShape="multiple"}let connections=[];for(let node2 of layer.inboundNodes)if(!(relevantNodes!=null&&relevantNodes.length>0&&relevantNodes.indexOf(node2)===-1))for(let i=0;it.name),finalOutputs=[],feedNames=feedDict.names();for(let outputName of outputNames)feedNames.indexOf(outputName)!==-1?finalOutputs.push(feedDict.getValue(outputName)):finalOutputs.push(null);probe!=null&&(probe.maxNumTensors=-Infinity,probe.minNumTensors=Infinity);let fetchAndFeedKey=outputNames.join(",")+"|"+feedDict.names().join(","),sorted,recipientCounts;if(cachedSorted[fetchAndFeedKey]==null){let out=getTopologicalSortAndRecipientCounts(fetchArray,feedDict);sorted=out.sorted,recipientCounts=out.recipientCounts,cachedSorted[fetchAndFeedKey]=sorted,cachedRecipientCounts[fetchAndFeedKey]=recipientCounts}sorted=cachedSorted[fetchAndFeedKey],recipientCounts={},training||Object.assign(recipientCounts,cachedRecipientCounts[fetchAndFeedKey]);let internalFeedDict=new FeedDict(feedDict);for(let i=0;iprobe.maxNumTensors&&(probe.maxNumTensors=numTensors),numTensors0,()=>"Expected at least one fetch, got none");let finalSorted=[],finalRecipientMap={};if(fetches.length===1){let out=getTopologicalSortAndRecipientCountsForOneFetch(fetches[0],feedDict);finalSorted=out.sorted,finalRecipientMap=out.recipientMap}else{let visited=new Set;for(let fetch3 of fetches){let{sorted,recipientMap}=getTopologicalSortAndRecipientCountsForOneFetch(fetch3,feedDict);for(let symbolicTensor of sorted)visited.has(symbolicTensor.name)||(finalSorted.push(symbolicTensor),visited.add(symbolicTensor.name));for(let name in recipientMap)finalRecipientMap[name]==null&&(finalRecipientMap[name]=new Set),recipientMap[name].forEach(recipient=>finalRecipientMap[name].add(recipient))}}return{sorted:finalSorted,recipientCounts:recipientMap2Counts(finalRecipientMap)}}function recipientMap2Counts(recipientMap){let recipientCounts={};for(let name in recipientMap)recipientCounts[name]=recipientMap[name].size;return recipientCounts}function getTopologicalSortAndRecipientCountsForOneFetch(fetch3,feedDict){let visited=new Set,sorted=[],recipientMap={};for(let key of feedDict.names())visited.add(key);let stack2=[],marks=[];for(stack2.push(fetch3);stack2.length>0;){let top=stack2[stack2.length-1];if(visited.has(top.name)){stack2.pop();continue}let topIsMarked=marks[marks.length-1]===stack2.length-1;if(top.inputs.length===0||topIsMarked)stack2.pop(),sorted.push(top),visited.add(top.name),topIsMarked&&marks.pop();else{marks.push(stack2.length-1);for(let input2 of top.inputs)recipientMap[input2.name]==null&&(recipientMap[input2.name]=new Set),recipientMap[input2.name].add(top.name),!visited.has(input2.name)&&stack2.push(input2)}}return{sorted,recipientMap}}function getNodeOutputs(fetch3){let layerOutputs;if(fetch3.sourceLayer.inboundNodes.length===1)layerOutputs=fetch3.sourceLayer.output;else{let nodeIndex=null;for(let i=0;ix.name)}`);unique2(this.outputs).length!==this.outputs.length&&console.warn(`The list of outputs passed to the model is redundant. All outputs should only appear once. Found: ${this.outputs.map(x=>x.name)}`),this.inputLayers=[],this.inputLayersNodeIndices=[],this.inputLayersTensorIndices=[],this.outputLayers=[],this.outputLayersNodeIndices=[],this.outputLayersTensorIndices=[],this.layers=[],this.internalContainerRefs=[];for(let x of this.outputs){let layer=x.sourceLayer,nodeIndex=x.nodeIndex,tensorIndex=x.tensorIndex;this.outputLayers.push(layer),this.outputLayersNodeIndices.push(nodeIndex),this.outputLayersTensorIndices.push(tensorIndex)}for(let x of this.inputs){let layer=x.sourceLayer,nodeIndex=x.nodeIndex,tensorIndex=x.tensorIndex;assert2(nodeIndex===0,"input layer has >1 nodes"),assert2(tensorIndex===0,"input layer has >1 tensors"),this.inputLayers.push(layer),this.inputLayersNodeIndices.push(nodeIndex),this.inputLayersTensorIndices.push(tensorIndex)}this.inputNames=[],this.outputNames=[],this.feedInputShapes=[],this.feedInputNames=[],this.feedOutputNames=[];for(let i=0;ix.shape),this.internalOutputShapes=this.outputs.map(x=>x.shape);let nodesDepths={},nodeIDToNode={},layersDepths={},layerIDToLayer={},layerIndices={},nodesInDecreasingDepth=[],buildMapOfGraph=(tensor2,finishedNodes2,nodesInProgress2,layer,nodeIndex,tensorIndex)=>{(layer==null||nodeIndex==null||tensorIndex==null)&&(layer=tensor2.sourceLayer,nodeIndex=tensor2.nodeIndex,tensorIndex=tensor2.tensorIndex);let node2=layer.inboundNodes[nodeIndex];if(nodesInProgress2.indexOf(node2)!==-1)throw new RuntimeError(`The tensor ${tensor2.name} at layer "${layer.name}" is part of a cycle.`);if(finishedNodes2.indexOf(node2)!==-1)return;this.containerNodes.add(Container.nodeKey(layer,nodeIndex)),layer.id in layerIndices||(layerIndices[layer.id]=Object.keys(layerIndices).length),nodesInProgress2.indexOf(node2)===-1&&nodesInProgress2.push(node2);let numInboundLayers=node2.inboundLayers.length;for(let i=0;i=0;)nodesInProgress2.splice(nodesInProgress2.indexOf(node2),1);nodesInDecreasingDepth.push(node2)},finishedNodes=[],nodesInProgress=[];for(let x of this.outputs)buildMapOfGraph(x,finishedNodes,nodesInProgress);let reversedNodesInDecreasingDepth=nodesInDecreasingDepth.slice().reverse();for(let node2 of reversedNodesInDecreasingDepth){nodeIDToNode[node2.id]=node2,node2.id in nodesDepths||(nodesDepths[node2.id]=0);let depth=nodesDepths[node2.id],previousDepth=layersDepths[node2.outboundLayer.id]==null?0:layersDepths[node2.outboundLayer.id];depth=Math.max(depth,previousDepth),layersDepths[node2.outboundLayer.id]=depth,layerIDToLayer[node2.outboundLayer.id]=node2.outboundLayer,nodesDepths[node2.id]=depth;for(let i=0;iparseInt(x,10)).sort(reverseNumberCompare);this.layers=[];for(let depth of depthKeys){let layersForDepth=layersByDepth[depth];layersForDepth.sort((a,b)=>{let aIndex=layerIndices[a.id],bIndex=layerIndices[b.id];return aIndexbIndex?1:0});for(let layer of layersForDepth)layer instanceof Container&&this.internalContainerRefs.push(layer),this.layers.push(layer)}this.layersByDepth=layersByDepth,depthKeys=Object.keys(nodesByDepth).map(x=>parseInt(x,10)).sort(reverseNumberCompare);let computableTensors=this.inputs.slice(),layersWithCompleteInput=[];for(let depth of depthKeys)for(let node2 of nodesByDepth[depth]){let layer=node2.outboundLayer;if(layer!=null){for(let x of node2.inputTensors)if(computableTensors.indexOf(x)===-1)throw new RuntimeError(`Graph disconnected: cannot obtain value for tensor ${x} at layer "${layer.name}". The following previous layers were accessed without issue: ${layersWithCompleteInput}`);for(let x of node2.outputTensors)computableTensors.push(x);layersWithCompleteInput.push(layer.name)}}this.nodesByDepth=nodesByDepth;let allNames=this.layers.map(x=>x.name);for(let name of allNames){let numOccurrences=allNames.filter(x=>x===name).length;if(numOccurrences!==1)throw new RuntimeError(`The name "${name}" is used ${numOccurrences} times in the model. All layer names should be unique. Layer names: `+JSON.stringify(allNames))}this.outboundNodes=[],this.inboundNodes=[],new Node({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:this.inputs.map(x=>null),outputMasks:this.outputs.map(x=>null),inputShapes:this.inputs.map(x=>x.shape),outputShapes:this.outputs.map(x=>x.shape)}),this.built=!0,this._refCount=1}assertNotDisposed(){if(this._refCount===0)throw new Error(`Container '${this.name}' is already disposed.`)}dispose(){this.assertNotDisposed();let result={refCountAfterDispose:null,numDisposedVariables:0};if(--this._refCount==0){for(let layer of this.layers)result.numDisposedVariables+=layer.dispose().numDisposedVariables;for(let container of this.internalContainerRefs)result.numDisposedVariables+=container.dispose().numDisposedVariables}return result.refCountAfterDispose=this._refCount,result}get trainable(){return this.trainable_}set trainable(trainable){this.layers.forEach(layer=>{layer._trainableWeights.forEach(w=>w.trainable=trainable)}),this.trainable_=trainable}get trainableWeights(){if(this._trainableWeights.length>0)throw new ValueError("Container instance unexpectedly contains _trainableWeights.The trainable weights of a Container are a union of the trainable weights of its consituent Layers. Its own _trainableWeights must remain an empty Array.");if(!this.trainable)return[];let weights=[];for(let layer of this.layers)weights=weights.concat(layer.trainableWeights);return weights}get nonTrainableWeights(){let weights=[];for(let layer of this.layers)weights.push(...layer.nonTrainableWeights);if(!this.trainable){let trainableWeights=[];for(let layer of this.layers)trainableWeights.push(...layer.trainableWeights);return trainableWeights.concat(weights)}return weights}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}loadWeights(weights,strict=!0){let nameToWeight={},totalWeightsCount=0;for(let layer of this.layers)for(let weight of layer.weights){if(nameToWeight[weight.originalName]!=null)throw new ValueError(`Duplicate weight name: ${weight.originalName}`);nameToWeight[weight.originalName]=weight,totalWeightsCount++}let weightValueTuples=[];for(let name in weights){let validatedName=name;if(nameToWeight[name]==null){let tokens=name.split("/");validatedName=tokens.slice(0,-2).concat([tokens[tokens.length-1]]).join("/")}if(nameToWeight[validatedName]!=null)weightValueTuples.push([nameToWeight[validatedName],weights[name]]);else if(strict)throw new ValueError(`Provided weight data has no target variable: ${name}`);delete nameToWeight[validatedName]}if(strict){let unsetNames=[];for(let name in nameToWeight)unsetNames.push(name);if(unsetNames.length>0)throw new ValueError(`${unsetNames.length} of ${totalWeightsCount} weights are not set: ${unsetNames}`)}batchSetValue(weightValueTuples)}updatedConfig(){let theConfig=this.getConfig(),modelConfig={};return modelConfig.className=this.getClassName(),modelConfig.config=theConfig,modelConfig.kerasVersion=`tfjs-layers ${version2}`,modelConfig.backend="TensorFlow.js",modelConfig}toJSON(unused,returnString=!0){let modelConfig=convertTsToPythonic(this.updatedConfig());return returnString?JSON.stringify(modelConfig):modelConfig}call(inputs,kwargs){return tidy(()=>{inputs=toList(inputs);let feedDict=new FeedDict;for(let i=0;i{inputs=toList(inputs);let masks;return mask==null?masks=pyListRepeat(null,inputs.length):masks=toList(mask),this.runInternalGraph(inputs,masks)[1]})}computeOutputShape(inputShape){let inputShapes=normalizeShapeList(inputShape);if(inputShapes.length!==this.inputLayers.length)throw new ValueError(`Invalid inputShape argument ${inputShape}: model has ${this.inputLayers.length} tensor inputs.`);let layersToOutputShapes={};for(let i=0;iparseInt(x,10)).sort(reverseNumberCompare);if(depthKeys.length>1)for(let depth of depthKeys){let nodes=this.nodesByDepth[depth];for(let node2 of nodes){let layer=node2.outboundLayer;if(this.inputLayers.map(x=>x.id).indexOf(layer.id)!==-1)continue;let inputShapes2=[];for(let j=0;jparseInt(x,10)).sort(reverseNumberCompare);for(let depth of depthKeys){let nodes=this.nodesByDepth[depth];for(let node2 of nodes){let layer=node2.outboundLayer,referenceInputTensors=node2.inputTensors,referenceOutputTensors=node2.outputTensors,computedData=new Array;for(let x of referenceInputTensors)x.id in tensorMap&&computedData.push(tensorMap[x.id]);if(computedData.length===referenceInputTensors.length){let kwargs={},computedTensors,computedMasks,outputTensors2,outputMasks2;if(node2.callArgs!=null&&(kwargs=node2.callArgs),computedData.length===1){let[computedTensor,computedMask]=computedData[0];kwargs.mask==null&&(kwargs.mask=computedMask),outputTensors2=toList(layer.call(computedTensor,kwargs)),outputMasks2=toList(layer.computeMask(computedTensor,computedMask)),computedTensors=[computedTensor],computedMasks=[computedMask]}else computedTensors=computedData.map(x=>x[0]),computedMasks=computedData.map(x=>x[1]),kwargs.mask==null&&(kwargs.mask=computedMasks),outputTensors2=toList(layer.call(computedTensors,kwargs)),outputMasks2=toList(layer.computeMask(computedTensors,computedMasks));if(layer.activityRegularizer)throw new NotImplementedError("LayersModel invocation with concrete Tensor value(s) in the presence of activity regularizer(s) is not supported yet.");for(let i=0;i{let losses4=[];for(let layer of this.layers)for(let nodeIndex=0;nodeIndex0){let nodeData=[];for(let i=0;i0&&layer.apply(singletonOrArray(inputTensors2),kwargs)}function processLayer(layerData){let layerName=layerData.name,layer=deserialize(layerData,config.customObjects!=null?config.customObjects:{});layer.setFastWeightInitDuringBuild(fastWeightInit),createdLayers[layerName]=layer,layerData.inboundNodes.forEach(nodeData=>{if(!(nodeData instanceof Array))throw new ValueError(`Corrupted configuration, expected array for nodeData: ${nodeData}`);addUnprocessedNode(layer,nodeData)})}let name=config.name,layersFromConfig=config.layers;for(let layerData of layersFromConfig)processLayer(layerData);for(;!isObjectEmpty(unprocessedNodes);)for(let layerData of layersFromConfig){let layer=createdLayers[layerData.name];if(layer.name in unprocessedNodes){let currentUnprocessedNodesForLayer=unprocessedNodes[layer.name];delete unprocessedNodes[layer.name];for(let nodeData of currentUnprocessedNodesForLayer)processNode(layer,nodeData)}}let inputTensors=[],outputTensors=[],inputLayersFromConfig=config.inputLayers;for(let layerData of inputLayersFromConfig){let layerName=layerData[0],nodeIndex=layerData[1],tensorIndex=layerData[2];assert2(layerName in createdLayers);let layerOutputTensors=createdLayers[layerName].inboundNodes[nodeIndex].outputTensors;inputTensors.push(layerOutputTensors[tensorIndex])}let outputLayersFromConfig=config.outputLayers;for(let layerData of outputLayersFromConfig){let layerName=layerData[0],nodeIndex=layerData[1],tensorIndex=layerData[2];assert2(layerName in createdLayers);let layerOutputTensors=createdLayers[layerName].inboundNodes[nodeIndex].outputTensors;outputTensors.push(layerOutputTensors[tensorIndex])}return new cls({inputs:inputTensors,outputs:outputTensors,name})}get stateful(){if(this._stateful)throw new ValueError("Container instance unexpectedly has _stateful = true. The statefulness of a Container is determined by the Layers it contains. Its _stateful property must remain the default false.");for(let layer of this.layers)if(layer.stateful)return!0;return!1}resetStates(){tidy(()=>{this.layers.forEach(layer=>{layer.stateful&&layer.resetStates()})})}};function standardizeSampleOrClassWeights(xWeight,outputNames,weightType){let numOutputs=outputNames.length;if(xWeight==null||Array.isArray(xWeight)&&xWeight.length===0)return outputNames.map(name=>null);if(numOutputs===1)return Array.isArray(xWeight)&&xWeight.length===1?xWeight:typeof xWeight=="object"&&outputNames[0]in xWeight?[xWeight[outputNames[0]]]:[xWeight];if(Array.isArray(xWeight)){if(xWeight.length!==numOutputs)throw new Error(`Provided ${weightType} is an array of ${xWeight.length} element(s), but the model has ${numOutputs} outputs. Make sure a set of weights is provided for each model output.`);return xWeight}else if(typeof xWeight=="object"&&Object.keys(xWeight).length>0&&typeof xWeight[Object.keys(xWeight)[0]]=="object"){let output=[];return outputNames.forEach(outputName=>{outputName in xWeight?output.push(xWeight[outputName]):output.push(null)}),output}else throw new Error(`The model has multiple (${numOutputs}) outputs, so ${weightType} must be either an array with ${numOutputs} elements or an object with ${outputNames} keys. Provided ${weightType} not understood: ${JSON.stringify(xWeight)}`)}function standardizeClassWeights(classWeight,outputNames){return standardizeSampleOrClassWeights(classWeight,outputNames,"classWeight")}async function standardizeWeights(y,sampleWeight,classWeight,sampleWeightMode){if(sampleWeight!=null||sampleWeightMode!=null)throw new Error("Support sampleWeight is not implemented yet");if(classWeight!=null){let yClasses=tidy(()=>{if(y.shape.length===1)return y.clone();if(y.shape.length===2)if(y.shape[1]>1){let axis=1;return y.argMax(axis)}else{if(y.shape[1]===1)return y.reshape([y.shape[0]]);throw new Error(`Encountered unexpected last-dimension size (${y.shape[1]}) during handling of class weights. The size is expected to be >= 1.`)}else throw new Error(`Unexpected rank of target (y) tensor (${y.rank}) during handling of class weights. The rank is expected to be 1 or 2.`)}),yClassIndices=Array.from(await yClasses.data());dispose(yClasses);let classSampleWeight=[];return yClassIndices.forEach(classIndex=>{if(classWeight[classIndex]==null)throw new Error(`classWeight must contain all classes in the training data. The class ${classIndex} exists in the data but not in classWeight`);classSampleWeight.push(classWeight[classIndex])}),tensor1d(classSampleWeight,"float32")}else return null}function computeWeightedLoss2(losses4,sampleWeights){return mul(losses4,sampleWeights)}var DEFAULT_VALIDATION_BATCH_SIZE=32;function standardizeDataIteratorOutput(model2,iteratorOut){let xs,ys,iteratorOutObj=iteratorOut;xs=iteratorOutObj.xs,ys=iteratorOutObj.ys,util_exports.assert(xs!=null&&ys!=null,()=>`A Dataset iterator for fitDataset() is expected to generate objects of the form \`{xs: xVal, ys: yVal}\`, where the two values may be \`tf.Tensor\`, an array of Tensors, or a map of string to Tensor. The provided Dataset instead generates ${iteratorOut}`);let flattenedXs=flattenTensorOrArrayOrMap("input",model2.inputNames,xs),flattenedYs=flattenTensorOrArrayOrMap("output",model2.outputNames,ys),batchSize=flattenedXs[0].shape[0];util_exports.assert(flattenedXs.length===model2.inputs.length,()=>`LayersModel has ${model2.inputs.length} inputs, but the dataset provides ${flattenedXs.length} inputs. (Expected input keys: ${JSON.stringify(model2.inputNames)})`),util_exports.assert(flattenedYs.length===model2.outputs.length,()=>`LayersModel has ${model2.outputs.length} outputs, but the dataset provides ${flattenedYs.length} outputs. (Expected output keys: ${JSON.stringify(model2.outputNames)})`);for(let xIndex=0;xIndex`Batch size mismatch: input ${model2.inputNames[xIndex]} has ${flattenedXs[xIndex].shape[0]}; expected ${batchSize} based on input ${model2.inputNames[0]}.`);for(let yIndex=0;yIndex`Batch size mismatch: output ${model2.outputNames[yIndex]} has ${flattenedYs[yIndex].shape[0]}; expected ${batchSize} based on input ${model2.inputNames[0]}.`);return{xs:flattenedXs,ys:flattenedYs}}function flattenTensorOrArrayOrMap(inputOrOutput,names,values){if(values instanceof Tensor)return[values];if(Array.isArray(values))return util_exports.assert(values.length===names.length,()=>`Received an array of ${values.length} Tensors, but expected ${names.length} to match the ${inputOrOutput} keys ${names}.`),values;{let result=[];for(let name of names){if(values[name]==null)throw new ValueError(`The feature data generated by the dataset lacks the required ${inputOrOutput} key '${name}'.`);result.push(values[name])}return result}}function standardizeTensorValidationData(data){if(data.length===3)throw new NotImplementedError("Validation with sample weights is not implemented yet.");return{xs:data[0],ys:data[1]}}async function fitDataset(model2,dataset,args){let hasBatchesPerEpoch=args.batchesPerEpoch!=null;if(util_exports.assert(model2.optimizer!=null,()=>"You must compile a model before training/testing. Use LayersModel.compile(modelCompileConfig)."),util_exports.assert(args!=null,()=>"For fitDataset(), the 2nd argument (config) is required, but it is not provided in this call."),util_exports.assert(args.epochs!=null&&args.epochs>0&&Number.isInteger(args.epochs),()=>`For fitDataset(), config.epochs is expected to be a positive integer, but got ${args.epochs}`),util_exports.assert(!hasBatchesPerEpoch||args.batchesPerEpoch>0&&Number.isInteger(args.batchesPerEpoch),()=>`For fitDataset(), config.batchesPerEpoch is expected to be a positive integer if specified, but got ${args.batchesPerEpoch}`),util_exports.assert(args.validationSplit==null,()=>"`validationSplit` is not supported by `fitDataset()`. Use validationData instead."),model2.isTraining)throw new Error("Cannot start training because another fit() call is ongoing.");model2.isTraining=!0;try{let doValidation=args.validationData!=null,valXs,valYs;if(doValidation)if(isDatasetObject(args.validationData))util_exports.assert(args.validationBatches==null||args.validationBatches>0&&Number.isInteger(args.validationBatches),()=>`For fitDataset() with dataset-based validation, config.validationBatches is expected not to be provided, or to be a positive integer, but got ${args.validationBatches}`);else{let validationData=standardizeTensorValidationData(args.validationData);valXs=validationData.xs,valYs=validationData.ys}let trainFunction=model2.makeTrainFunction(),outLabels=model2.getDedupedMetricsNames(),callbackMetrics;doValidation?callbackMetrics=outLabels.slice().concat(outLabels.map(n=>"val_"+n)):callbackMetrics=outLabels.slice();let callbacks2=standardizeCallbacks(args.callbacks,args.yieldEvery),verbose=args.verbose==null?1:args.verbose,{callbackList,history}=configureCallbacks(callbacks2,verbose,args.epochs,null,null,getStepsPerEpoch(dataset,args),null,doValidation,callbackMetrics);callbackList.setModel(model2),model2.history=history,await callbackList.onTrainBegin(),model2.stopTraining_=!1;let epoch=args.initialEpoch==null?0:args.initialEpoch,dataIterator=await dataset.iterator();for(;epoch=args.batchesPerEpoch:iteratorOut.done){if(doValidation){let valOuts;isDatasetObject(args.validationData)?valOuts=toList(await model2.evaluateDataset(args.validationData,{batches:args.validationBatches})):valOuts=toList(model2.evaluate(valXs,valYs,{batchSize:args.validationBatchSize==null?DEFAULT_VALIDATION_BATCH_SIZE:args.validationBatchSize,verbose:0}));for(let i=0;i0)throw new NotImplementedError("Verbose mode is not implemented yet.");util_exports.assert(!hasBatches||args.batches>0&&Number.isInteger(args.batches),()=>`Test loop expects \`batches\` to be a positive integer, but received ${JSON.stringify(args.batches)}`);let dataIterator=isLazyIteratorObject(dataset)?dataset:await dataset.iterator(),numExamples=0,batch=0;for(;hasBatches?batch{if(iteratorOut.value){let{xs,ys}=standardizeDataIteratorOutput(model2,iteratorOut.value),xsAndYs=xs.concat(ys),batchOuts=tidy(()=>f(xsAndYs));if(dispose(xsAndYs),batch===0)for(let i=0;iadd2(outs[i],mul(batchSize,batchOut))),batch>0&&dispose(oldScalar)}dispose(batchOuts),numExamples+=batchSize,++batch}return outs}),iteratorOut.done){hasBatches&&console.warn(`Your dataset iterator ran out of data during evaluateDataset(). Interrupting evalution. Make sure that your dataset can generate at least \`batches\` batches (in this case, ${args.batches} batches). You may need to use the repeat() function when building your dataset.`);break}}for(let i=0;i0&&Number.isInteger(batchSize),()=>`batchSize is required to be a positive integer, but got ${batchSize}`)}function sliceArrays(arrays,start,stop){return arrays==null?[null]:Array.isArray(arrays)?arrays.map(array2=>sliceAlongFirstAxis(array2,start,stop-start)):sliceAlongFirstAxis(arrays,start,stop-start)}function sliceArraysByIndices(arrays,indices){return tidy(()=>arrays==null?null:Array.isArray(arrays)?arrays.map(array2=>sliceArraysByIndices(array2,indices)):gather2(arrays,indices.dtype==="int32"?indices:indices.toInt()))}function makeBatches(size,batchSize){let output=[],batchStart=0,batchEnd=null;for(;batchStart=size&&(batchEnd=size),output.push([batchStart,batchEnd]),batchStart=batchEnd;return output}async function fitLoop(model2,f,ins,outLabels,batchSize,epochs,verbose,callbacks2,valF,valIns,shuffle2,callbackMetrics,initialEpoch,stepsPerEpoch,validationSteps){batchSize==null&&(batchSize=32),epochs==null&&(epochs=1),shuffle2==null&&(shuffle2=!0),initialEpoch==null&&(initialEpoch=0);let doValidation=!1;if(valF!=null&&valIns!=null&&(doValidation=!0),validationSteps!=null&&(doValidation=!0,stepsPerEpoch==null))throw new ValueError("Can only use `validationSteps` when doing step-wise training, i.e., `stepsPerEpoch` must be set.");let numTrainSamples=model2.checkNumSamples(ins,batchSize,stepsPerEpoch,"steps_per_epoch"),indexArray;numTrainSamples!=null&&(indexArray=range2(0,numTrainSamples)),verbose==null&&(verbose=1);let{callbackList,history}=configureCallbacks(callbacks2,verbose,epochs,initialEpoch,numTrainSamples,stepsPerEpoch,batchSize,doValidation,callbackMetrics);callbackList.setModel(model2),model2.history=history,await callbackList.onTrainBegin(),model2.stopTraining_=!1;for(let epoch=initialEpoch;epoch{let batchStart=batches[batchIndex][0],batchEnd=batches[batchIndex][1],batchIds=sliceAlongFirstAxis(epochIndexArray1D,batchStart,batchEnd-batchStart);batchLogs.batch=batchIndex,batchLogs.size=batchEnd-batchStart;let insBatch=sliceArraysByIndices(ins,batchIds),outs=f(insBatch);for(let i=0;i0){if(doValidation=!0,args.validationData.length===2)inputValX=args.validationData[0],inputValY=args.validationData[1];else throw args.validationData.length===3?new NotImplementedError("validationData including sample weights is not supported yet."):new ValueError(`When passing validation data, it must contain 2 (valX, valY) or 3 (valX, valY, valSampleWeight) items; ${args.validationData} is invalid.`);let checkBatchAxis2=!0,valStandardized=await model2.standardizeUserData(inputValX,inputValY,null,null,checkBatchAxis2,batchSize);valX=valStandardized[0],valY=valStandardized[1],valIns=valX.concat(valY)}else if(args.validationSplit!=null&&args.validationSplit>0&&args.validationSplit<1){doValidation=!0;let splitAt=Math.floor(inputs[0].shape[0]*(1-args.validationSplit)),originalBatchSize=inputs[0].shape[0];valX=sliceArrays(inputs,splitAt,originalBatchSize),inputs=sliceArrays(inputs,0,splitAt),valY=sliceArrays(targets,splitAt,originalBatchSize),targets=sliceArrays(targets,0,splitAt),valIns=valX.concat(valY)}else args.validationSteps!=null&&(doValidation=!0);let ins=inputs.concat(targets).concat(sampleWeights);model2.checkTrainableWeightsConsistency();let trainFunction=model2.makeTrainFunction(),outLabels=model2.getDedupedMetricsNames(),valFunction,callbackMetrics;doValidation?(model2.makeTestFunction(),valFunction=model2.testFunction,callbackMetrics=outLabels.slice().concat(outLabels.map(n=>"val_"+n))):(valFunction=null,valIns=[],callbackMetrics=outLabels.slice());let callbacks2=standardizeCallbacks(args.callbacks,args.yieldEvery);return await fitLoop(model2,trainFunction,ins,outLabels,batchSize,args.epochs,args.verbose,callbacks2,valFunction,valIns,args.shuffle,callbackMetrics,args.initialEpoch,null,null)}finally{model2.isTraining=!1,disposeNewTensors(inputs,x),disposeNewTensors(targets,y),disposeNewTensors(valX,inputValX),disposeNewTensors(valY,inputValY),sampleWeights!=null&&dispose(sampleWeights)}}function ensureTensorsRank2OrHigher(tensors){let outs=[];tensors instanceof Tensor&&(tensors=[tensors]);for(let i=0;ioldTensorIds.push(t.id));else if(refTensors!=null)for(let name in refTensors){let oldTensor=refTensors[name];oldTensorIds.push(oldTensor.id)}let tensorsToDispose=[];if(tensors instanceof Tensor)oldTensorIds.indexOf(tensors.id)===-1&&tensorsToDispose.push(tensors);else if(Array.isArray(tensors))tensors.forEach(t=>{oldTensorIds.indexOf(t.id)===-1&&tensorsToDispose.push(t)});else if(tensors!=null)for(let name in tensors){let tensor2=tensors[name];oldTensorIds.indexOf(tensor2.id)===-1&&tensorsToDispose.push(tensor2)}tensorsToDispose.forEach(t=>{t.isDisposed||t.dispose()})}function isDataTensor(x){return x instanceof Tensor}function isDataArray(x){return Array.isArray(x)}function isDataDict(x){return!isDataTensor(x)&&!isDataArray(x)}function standardizeInputData(data,names,shapes,checkBatchAxis=!0,exceptionPrefix=""){if(names==null||names.length===0){if(data!=null){let gotUnexpectedData=!1;if(isDataArray(data)&&data.length>0)gotUnexpectedData=!0;else if(isDataDict(data)){for(let key in data)if(data.hasOwnProperty(key)){gotUnexpectedData=!0;break}}else gotUnexpectedData=!0;if(gotUnexpectedData)throw new ValueError(`Error when checking model ${exceptionPrefix} expected no data, but got ${data}`)}return[]}if(data==null)return names.map(name=>null);let arrays;if(isDataDict(data)){data=data,arrays=[];for(let name of names){if(data[name]==null)throw new ValueError(`No data provided for "${name}". Need data for each key in: ${names}`);arrays.push(data[name])}}else if(isDataArray(data)){if(data=data,data.length!==names.length)throw new ValueError(`Error when checking model ${exceptionPrefix}: the Array of Tensors that you are passing to your model is not the size the model expected. Expected to see ${names.length} Tensor(s), but instead got the following list of Tensor(s): ${data}`);arrays=data}else{if(data=data,names.length>1)throw new ValueError(`The model ${exceptionPrefix} expects ${names.length} Tensor(s), but only received one Tensor. Found: Tensor with shape ${data.shape}`);arrays=[data]}if(arrays=ensureTensorsRank2OrHigher(arrays),shapes!=null)for(let i=0;i=0&&dim!==refDim)throw new ValueError(`Error when checking ${exceptionPrefix}: expected ${names[i]} to have shape [${shapes[i]}], but got array with shape [${array2.shape}].`)}}return arrays}function checkArrayLengths(inputs,targets,weights){let setX=unique2(inputs.map(input2=>input2.shape[0]));setX.sort();let setY=unique2(targets.map(target=>target.shape[0]));if(setY.sort(),setX.length>1)throw new ValueError(`All input Tensors (x) should have the same number of samples. Got array shapes: ${JSON.stringify(inputs.map(input2=>input2.shape))}`);if(setY.length>1)throw new ValueError(`All target Tensors (y) should have the same number of samples. Got array shapes: ${JSON.stringify(targets.map(target=>target.shape))}`);if(setX.length>0&&setY.length>0&&!util_exports.arraysEqual(setX,setY))throw new ValueError(`Input Tensors should have the same number of samples as target Tensors. Found ${setX[0]} input sample(s) and ${setY[0]} target sample(s).`)}function checkLossAndTargetCompatibility(targets,lossFns,outputShapes){let keyLosses=[meanSquaredError2,binaryCrossentropy,categoricalCrossentropy];for(let i=0;i1)throw new ValueError(`The model expects ${names.length} ${exceptionPrefix} Tensors, but only received one Tensor. Found: array with shape ${JSON.stringify(data.shape)}.`);arrays=[data]}if(shapes!=null)for(let i=0;i[]);let wrappedMetrics;if(typeof metrics2=="string"||typeof metrics2=="function")wrappedMetrics=[metrics2];else if(Array.isArray(metrics2)||typeof metrics2=="object")wrappedMetrics=metrics2;else throw new TypeError(`Type of metrics argument not understood. Expected an string,function, Array, or Object, found: ${metrics2}`);if(Array.isArray(wrappedMetrics))return outputNames.map(name=>wrappedMetrics);{let nestedMetrics=[];for(let name of outputNames){let outputMetrics=wrappedMetrics.hasOwnProperty(name)?wrappedMetrics[name]:[];Array.isArray(outputMetrics)||(outputMetrics=[outputMetrics]),nestedMetrics.push(outputMetrics)}return nestedMetrics}}var LAYERS_MODEL_FORMAT_NAME="layers-model",LayersModel=class extends Container{constructor(args){super(args);this.isTraining=!1}summary(lineLength,positions,printFn=console.log){if(!this.built)throw new ValueError("This model has never been called, thus its weights have not been created yet. So no summary can be displayed. Build the model first (e.g., by calling it on some test data).");printSummary(this,lineLength,positions,printFn)}compile(args){if(args.loss==null&&(args.loss=[]),this.loss=args.loss,typeof args.optimizer=="string")this.optimizer_=getOptimizer(args.optimizer),this.isOptimizerOwned=!0;else{if(!(args.optimizer instanceof Optimizer))throw new ValueError("User-defined optimizer must be an instance of tf.Optimizer.");this.optimizer_=args.optimizer,this.isOptimizerOwned=!1}let lossFunctions=[];if(!Array.isArray(args.loss)&&typeof args.loss!="string"&&typeof args.loss!="function"){args.loss=args.loss;for(let name in args.loss)if(this.outputNames.indexOf(name)===-1)throw new ValueError(`Unknown entry in loss dictionary: "${name}". Only expected the following keys: ${this.outputNames}`);for(let name of this.outputNames)args.loss[name]==null&&console.warn(`Output "${name}" is missing from loss dictionary. We assume this was done on purpose, and we will not be expecting data to be passed to ${name} during training`),lossFunctions.push(get(args.loss[name]))}else if(Array.isArray(args.loss)){if(args.loss.length!==this.outputs.length)throw new ValueError(`When passing an Array as loss, it should have one entry per model output. The model has ${this.outputs.length} output(s), but you passed loss=${args.loss}.`);lossFunctions=args.loss.map(l=>get(l))}else{let lossFunction=get(args.loss);this.outputs.forEach(_=>{lossFunctions.push(lossFunction)})}this.lossFunctions=lossFunctions,this.feedOutputNames=[],this.feedOutputShapes=[],this.feedLossFns=[];for(let i=0;i{for(let i=0;i1&&(this.metricsTensors.push([weightedLoss,i]),this.metricsNames.push(this.outputNames[i]+"_loss"))}});let nestedMetrics=collectMetrics(args.metrics,this.outputNames),appendMetric=(outputIndex,metricName,metricTensor)=>{this.outputNames.length>1&&(metricName=this.outputNames[outputIndex]+"_"+metricName),this.metricsNames.push(metricName),this.metricsTensors.push([metricTensor,outputIndex])};nameScope("metric",()=>{for(let i=0;i{let metricNamePrefix="",metricName,accFn,weightedMetricFn;for(let metric of metrics2){if(typeof metric=="string"&&["accuracy","acc","crossentropy","ce"].indexOf(metric)!==-1){let outputShape=this.internalOutputShapes[i];outputShape[outputShape.length-1]===1||this.lossFunctions[i]===binaryCrossentropy?["accuracy","acc"].indexOf(metric)!==-1?accFn=binaryAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=binaryCrossentropy2):this.lossFunctions[i]===sparseCategoricalCrossentropy?["accuracy","acc"].indexOf(metric)!==-1?accFn=sparseCategoricalAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=sparseCategoricalCrossentropy2):["accuracy","acc"].indexOf(metric)!==-1?accFn=categoricalAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=categoricalCrossentropy2);let suffix;["accuracy","acc"].indexOf(metric)!==-1?suffix="acc":["crossentropy","ce"].indexOf(metric)!==-1&&(suffix="ce"),weightedMetricFn=accFn,metricName=metricNamePrefix+suffix}else weightedMetricFn=get2(metric),metricName=metricNamePrefix+getLossOrMetricName(metric);let metricResult;nameScope(metricName,()=>{metricResult=weightedMetricFn}),appendMetric(i,metricName,metricResult)}})(outputMetrics)}}),this.collectedTrainableWeights=this.trainableWeights}checkTrainableWeightsConsistency(){this.collectedTrainableWeights!=null&&this.trainableWeights.length!==this.collectedTrainableWeights.length&&console.warn("Discrepancy between trainableweights and collected trainable weights. Did you set `model.trainable` without calling `model.compile()` afterwards?")}evaluate(x,y,args={}){let batchSize=args.batchSize==null?32:args.batchSize;checkBatchSize(batchSize);let checkBatchAxis=!0,standardizedOuts=this.standardizeUserDataXY(x,y,checkBatchAxis,batchSize);try{let ins=standardizedOuts[0].concat(standardizedOuts[1]);this.makeTestFunction();let f=this.testFunction,testOuts=this.testLoop(f,ins,batchSize,args.verbose,args.steps);return singletonOrArray(testOuts)}finally{disposeNewTensors(standardizedOuts[0],x),disposeNewTensors(standardizedOuts[1],y)}}async evaluateDataset(dataset,args){return this.makeTestFunction(),evaluateDataset(this,dataset,args)}checkNumSamples(ins,batchSize,steps,stepsName="steps"){let numSamples;if(steps!=null){if(numSamples=null,batchSize!=null)throw new ValueError(`If ${stepsName} is set, batchSize must be null or undefined.Got batchSize = ${batchSize}`)}else if(ins!=null)Array.isArray(ins)?numSamples=ins[0].shape[0]:numSamples=ins.shape[0];else throw new ValueError(`Either the input data should have a defined shape, or ${stepsName} shoud be specified.`);return numSamples}execute(inputs,outputs){if(Array.isArray(outputs)&&outputs.length===0)throw new ValueError("`outputs` is an empty Array, which is not allowed.");let outputsIsArray=Array.isArray(outputs),outputNames=outputsIsArray?outputs:[outputs],outputSymbolicTensors=this.retrieveSymbolicTensors(outputNames),feedDict=new FeedDict;if(inputs instanceof Tensor&&(inputs=[inputs]),Array.isArray(inputs)){if(inputs.length!==this.inputs.length)throw new ValueError(`The number of inputs provided (${inputs.length}) does not match the number of inputs of this model (${this.inputs.length}).`);for(let i=0;ioutput.name);for(let i=0;i0){let remainingNames=[];throw outputSymbolicTensors.forEach((tensor2,i)=>{tensor2==null&&remainingNames.push(symbolicTensorNames[i])}),new ValueError(`Cannot find SymbolicTensors for output name(s): ${JSON.stringify(remainingNames)}`)}return outputSymbolicTensors}predictLoop(ins,batchSize=32,verbose=!1){return tidy(()=>{let numSamples=this.checkNumSamples(ins);if(verbose)throw new NotImplementedError("Verbose predictLoop() is not implemented yet.");let batches=makeBatches(numSamples,batchSize),outsBatches=this.outputs.map(output=>[]);for(let batchIndex=0;batchIndex{let batchStart=batches[batchIndex][0],batchEnd=batches[batchIndex][1],insBatch=sliceArrays(ins,batchStart,batchEnd),feeds=[];if(Array.isArray(insBatch))for(let i=0;ioutsBatches[i].push(batchOut));return singletonOrArray(outsBatches.map(batches2=>concat(batches2,0)))})}predict(x,args={}){let xsRank2OrHigher=ensureTensorsRank2OrHigher(x);checkInputData(xsRank2OrHigher,this.inputNames,this.feedInputShapes,!1);try{let batchSize=args.batchSize==null?32:args.batchSize;return checkBatchSize(batchSize),this.predictLoop(xsRank2OrHigher,batchSize)}finally{disposeNewTensors(xsRank2OrHigher,x)}}predictOnBatch(x){checkInputData(x,this.inputNames,this.feedInputShapes,!0);let batchSize=(Array.isArray(x)?x[0]:x).shape[0];return this.predictLoop(x,batchSize)}standardizeUserDataXY(x,y,checkBatchAxis=!0,batchSize){if(this.optimizer_==null)throw new RuntimeError("You must compile a model before training/testing. Use LayersModel.compile(modelCompileArgs).");let outputShapes=[];for(let i=0;i0&&x[0].shape[0]%batchSize!=0)throw new ValueError(`In a stateful network, you should only pass inputs with a number of samples that is divisible by the batch size ${batchSize}. Found: ${x[0].shape[0]} sample(s).`);return[x,y]}async standardizeUserData(x,y,sampleWeight,classWeight,checkBatchAxis=!0,batchSize){let[standardXs,standardYs]=this.standardizeUserDataXY(x,y,checkBatchAxis,batchSize);if(sampleWeight!=null)throw new Error("sample weight is not supported yet.");let standardSampleWeights=null;if(classWeight!=null){let classWeights=standardizeClassWeights(classWeight,this.outputNames);standardSampleWeights=[];for(let i=0;i{let numSamples=this.checkNumSamples(ins,batchSize,steps,"steps"),outs=[];if(verbose>0)throw new NotImplementedError("Verbose mode is not implemented yet.");if(steps!=null)throw new NotImplementedError("steps mode in testLoop() is not implemented yet");{let batches=makeBatches(numSamples,batchSize),indexArray=tensor1d(range2(0,numSamples));for(let batchIndex=0;batchIndex1&&(newLabel+=`_${count(outLabels.slice(0,i),label)}`),dedupedOutLabels.push(newLabel)}return dedupedOutLabels}makeTrainFunction(){return data=>{let lossValues=[],inputs=data.slice(0,this.inputs.length),targets=data.slice(this.inputs.length,this.inputs.length+this.outputs.length),sampleWeights=data.slice(this.inputs.length+this.outputs.length,this.inputs.length+this.outputs.length*2),metricsValues=[],totalLossFunction=()=>{let feeds=[];for(let i=0;i1&&i{totalLoss=add2(totalLoss,regularizerLoss)}),totalLoss},variables=this.collectedTrainableWeights.map(param=>param.read()),returnCost=!0;return[this.optimizer_.minimize(totalLossFunction,returnCost,variables)].concat(metricsValues)}}makeTestFunction(){this.testFunction=data=>tidy(()=>{let valOutputs=[],totalLoss,inputs=data.slice(0,this.inputs.length),targets=data.slice(this.inputs.length,this.inputs.length+this.outputs.length),feeds=[];for(let i=0;itoSnakeCase(name))}else{let outputNames=Object.keys(this.loss);lossNames={};let losses4=this.loss;for(let outputName of outputNames)if(typeof losses4[outputName]=="string")lossNames[outputName]=toSnakeCase(losses4[outputName]);else throw new Error("Serialization of non-string loss is not supported.")}return lossNames}getMetricIdentifiers(){if(typeof this.metrics=="string"||typeof this.metrics=="function")return[toSnakeCase(getLossOrMetricName(this.metrics))];if(Array.isArray(this.metrics))return this.metrics.map(metric=>toSnakeCase(getLossOrMetricName(metric)));{let metricsIdentifiers={};for(let key in this.metrics)metricsIdentifiers[key]=toSnakeCase(getLossOrMetricName(this.metrics[key]));return metricsIdentifiers}}getTrainingConfig(){return{loss:this.getLossIdentifiers(),metrics:this.getMetricIdentifiers(),optimizer_config:{class_name:this.optimizer.getClassName(),config:this.optimizer.getConfig()}}}loadTrainingConfig(trainingConfig){if(trainingConfig.weighted_metrics!=null)throw new Error("Loading weight_metrics is not supported yet.");if(trainingConfig.loss_weights!=null)throw new Error("Loading loss_weights is not supported yet.");if(trainingConfig.sample_weight_mode!=null)throw new Error("Loading sample_weight_mode is not supported yet.");let tsConfig=convertPythonicToTs(trainingConfig.optimizer_config),optimizer=deserialize(tsConfig),loss;if(typeof trainingConfig.loss=="string")loss=toCamelCase(trainingConfig.loss);else if(Array.isArray(trainingConfig.loss))loss=trainingConfig.loss.map(lossEntry=>toCamelCase(lossEntry));else if(trainingConfig.loss!=null){loss={};for(let key in trainingConfig.loss)loss[key]=toCamelCase(trainingConfig.loss[key])}let metrics2;if(Array.isArray(trainingConfig.metrics))metrics2=trainingConfig.metrics.map(metric=>toCamelCase(metric));else if(trainingConfig.metrics!=null){metrics2={};for(let key in trainingConfig.metrics)metrics2[key]=toCamelCase(trainingConfig.metrics[key])}this.compile({loss,metrics:metrics2,optimizer})}async save(handlerOrURL,config){if(typeof handlerOrURL=="string"){let handlers=io_exports.getSaveHandlers(handlerOrURL);if(handlers.length===0)throw new ValueError(`Cannot find any save handlers for URL '${handlerOrURL}'`);if(handlers.length>1)throw new ValueError(`Found more than one (${handlers.length}) save handlers for URL '${handlerOrURL}'`);handlerOrURL=handlers[0]}if(handlerOrURL.save==null)throw new ValueError("LayersModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");let weightDataAndSpecs=await io_exports.encodeWeights(this.getNamedWeights(config)),returnString=!1,unusedArg=null,modelArtifacts={modelTopology:this.toJSON(unusedArg,returnString),format:LAYERS_MODEL_FORMAT_NAME,generatedBy:`TensorFlow.js tfjs-layers v${version2}`,convertedBy:null};if((config==null?!1:config.includeOptimizer)&&this.optimizer!=null){modelArtifacts.trainingConfig=this.getTrainingConfig();let weightType="optimizer",{data:optimizerWeightData,specs:optimizerWeightSpecs}=await io_exports.encodeWeights(await this.optimizer.getWeights(),weightType);weightDataAndSpecs.specs.push(...optimizerWeightSpecs),weightDataAndSpecs.data=io_exports.concatenateArrayBuffers([weightDataAndSpecs.data,optimizerWeightData])}if(this.userDefinedMetadata!=null){let checkSize=!0;checkUserDefinedMetadata(this.userDefinedMetadata,this.name,checkSize),modelArtifacts.userDefinedMetadata=this.userDefinedMetadata}return modelArtifacts.weightData=weightDataAndSpecs.data,modelArtifacts.weightSpecs=weightDataAndSpecs.specs,handlerOrURL.save(modelArtifacts)}setUserDefinedMetadata(userDefinedMetadata){checkUserDefinedMetadata(userDefinedMetadata,this.name),this.userDefinedMetadata=userDefinedMetadata}getUserDefinedMetadata(){return this.userDefinedMetadata}};LayersModel.className="Model";serialization_exports.registerClass(LayersModel);var Functional=class extends LayersModel{};Functional.className="Functional";serialization_exports.registerClass(Functional);async function modelFromJSON(modelAndWeightsConfig,customObjects){"modelTopology"in modelAndWeightsConfig||(modelAndWeightsConfig={modelTopology:modelAndWeightsConfig}),modelAndWeightsConfig=modelAndWeightsConfig;let modelTopology=modelAndWeightsConfig.modelTopology;modelTopology.model_config!=null&&(modelTopology=modelTopology.model_config);let tsConfig=convertPythonicToTs(modelTopology),model2=deserialize(tsConfig,customObjects);if(modelAndWeightsConfig.weightsManifest!=null){let weightValues=await io_exports.loadWeights(modelAndWeightsConfig.weightsManifest,modelAndWeightsConfig.pathPrefix,model2.weights.map(weight=>weight.originalName)),uniqueWeightValues={};for(let weight of model2.weights)uniqueWeightValues[weight.originalName]=weightValues[weight.originalName];model2.loadWeights(uniqueWeightValues),dispose(weightValues)}return model2}async function loadLayersModelInternal(pathOrIOHandler,options){if(options==null&&(options={}),typeof pathOrIOHandler=="string"){let handlers=io_exports.getLoadHandlers(pathOrIOHandler,options);if(handlers.length===0)handlers.push(io_exports.browserHTTPRequest(pathOrIOHandler,options));else if(handlers.length>1)throw new ValueError(`Found more than one (${handlers.length}) load handlers for URL '${pathOrIOHandler}'`);pathOrIOHandler=handlers[0]}return loadLayersModelFromIOHandler(pathOrIOHandler,void 0,options)}async function loadLayersModelFromIOHandler(handler,customObjects,options){if(options==null&&(options={}),handler.load==null)throw new ValueError("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let artifacts=await handler.load(),modelTopology=artifacts.modelTopology;modelTopology.model_config!=null&&(modelTopology=modelTopology.model_config);let strict=options.strict==null?!0:options.strict,fastWeightInit=artifacts.weightData!=null&&artifacts.weightSpecs!=null&&strict,model2=deserialize(convertPythonicToTs(modelTopology),customObjects,fastWeightInit),trainingConfig=artifacts.trainingConfig;if(trainingConfig!=null&&model2.loadTrainingConfig(trainingConfig),artifacts.userDefinedMetadata!=null&&model2.setUserDefinedMetadata(artifacts.userDefinedMetadata),artifacts.weightData!=null){if(artifacts.weightSpecs==null)throw new ValueError("LayersModel artifacts contains weight data, but not weight specs. Therefore loading of weights cannot proceed.");let{modelWeights,optimizerWeights}=decodeModelAndOptimizerWeights(artifacts.weightData,artifacts.weightSpecs);model2.loadWeights(modelWeights,strict),model2.optimizer!=null&&optimizerWeights.length>0&&await model2.optimizer.setWeights(optimizerWeights),dispose(modelWeights),dispose(optimizerWeights.map(w=>w.tensor))}return model2}function decodeModelAndOptimizerWeights(buffer2,specs){let name2Tensor=io_exports.decodeWeights(buffer2,specs),modelWeights={},optimizerWeights=[];return specs.forEach(spec=>{spec.group==="optimizer"?optimizerWeights.push({name:spec.name,tensor:name2Tensor[spec.name]}):modelWeights[spec.name]=name2Tensor[spec.name]}),{modelWeights,optimizerWeights}}var Sequential=class extends LayersModel{constructor(args){super({inputs:[],outputs:[]});if(args=args||{},this.trainable=!0,this.built=!1,this.name=args.name!=null?args.name:getUid("sequential_"),args.layers!=null)for(let layer of args.layers)this.add(layer)}checkShape(layer){if(layer.inboundNodes[0].outputTensors[0].shape.some(x=>x<0))throw new ValueError(`Negative dimension size caused by adding layer ${layer.name} with input shape [${layer.inboundNodes[0].inputTensors[0].shape}]`)}add(layer){let isLayerModelInstance=layer instanceof Sequential||layer instanceof LayersModel,modelLayer;if(isLayerModelInstance){if(modelLayer=layer,modelLayer.outputs.length!==1)throw new ValueError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");if(modelLayer.inputs.length!==1)throw new ValueError("All layers in a Sequential model should have a single input tensor. For multi-input layers, use the functional API.")}if(this.outputs.length===0){if(layer.inboundNodes.length===0){if(layer.batchInputShape==null)throw new ValueError("The first layer in a Sequential model must get an `inputShape` or `batchInputShape` argument.");let x=Input({batchShape:layer.batchInputShape,dtype:layer.dtype,name:layer.name+"_input"});layer.apply(x)}if(isLayerModelInstance)this.outputs=modelLayer.outputs,this.inputs=modelLayer.inputs;else{if(layer.inboundNodes.length!==1)throw new ValueError(`A layer added to a Sequential model must not already be connected somewhere else. LayersModel received layer ${layer.name} which has ${layer.inboundNodes.length} pre-existing inbound connections.`);if(layer.inboundNodes[0].outputTensors.length!==1)throw new ValueError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(layer),this.outputs=[layer.inboundNodes[0].outputTensors[0]],this.inputs=getSourceInputs(this.outputs[0])}this.inboundNodes=[],new Node({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:pyListRepeat(null,this.inputs.length),outputMasks:[null],inputShapes:this.inputs.map(x=>x.shape),outputShapes:this.outputs[0].shape})}else{let outputTensor=layer.apply(this.outputs[0]);if(Array.isArray(outputTensor))throw new TypeError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(layer),this.outputs=[outputTensor],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}this.layers.push(layer),this.built=!1}pop(){if(this.layers.length===0)throw new TypeError("There are no layers in the model.");if(this.layers.pop(),this.layers.length===0)this.outputs=[],this.inboundNodes=[],this.outboundNodes=[];else{let lastLayerIndex=this.layers.length-1;this.layers[lastLayerIndex].outboundNodes=[],this.outputs=[this.layers[lastLayerIndex].output],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}}call(inputs,kwargs){return this.model==null&&this.build(),this.model.call(inputs,kwargs)}build(inputShape){if(getExactlyOneShape(inputShape),this.inputs.length===0||this.outputs.length===0)throw new TypeError("Sequential model cannot be built: model is empty. Add some layers first.");this.model=new LayersModel({inputs:this.inputs,outputs:this.outputs[0],name:this.name+"_model"}),this.model.trainable=this.trainable,this.supportsMasking=this.model.supportsMasking,this.inputLayers=this.model.inputLayers,this.inputLayersNodeIndices=this.model.inputLayersNodeIndices,this.inputLayersTensorIndices=this.model.inputLayersTensorIndices,this.outputLayers=this.model.outputLayers,this.outputLayersNodeIndices=this.model.outputLayersNodeIndices,this.outputLayersTensorIndices=this.model.outputLayersTensorIndices,this.nodesByDepth=this.model.nodesByDepth,this.containerNodes=this.model.containerNodes,this.outputNames=this.model.outputNames,this.inputNames=this.model.inputNames,this.built=!0}countParams(){return this.built||this.build(),super.countParams()}summary(lineLength,positions,printFn=console.log){this.built||this.build(),super.summary(lineLength,positions,printFn)}setWeights(weights){this.model==null&&this.build(),this.model.setWeights(weights)}evaluate(x,y,args={}){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.evaluate(x,y,args)}async evaluateDataset(dataset,args){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.evaluateDataset(dataset,args)}predict(x,args={}){return this.model==null&&this.build(),this.model.predict(x,args)}predictOnBatch(x){return this.model==null&&this.build(),this.model.predictOnBatch(x)}compile(args){this.build(),this.model.compile(args),this.optimizer_=this.model.optimizer,this.isOptimizerOwned=this.model.isOptimizerOwned,this.loss=this.model.loss,this.metrics=this.model.metrics,this.metricsTensors=this.model.metricsTensors,this.metricsNames=this.model.metricsNames}get optimizer(){return this.model==null?void 0:this.model.optimizer}set optimizer(optimizer){this.model.optimizer=optimizer}async fit(x,y,args={}){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.fit(x,y,args)}async fitDataset(dataset,args){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.fitDataset(dataset,args)}async trainOnBatch(x,y){return this.model.trainOnBatch(x,y)}static fromConfig(cls,config,customObjects={},fastWeightInit=!1){let configArray,extraModelConfig={};if(config instanceof Array){if(config[0].className==null||config[0].className==="Merge")throw new ValueError("Legacy serialization format not supported yet.");configArray=config}else util_exports.assert(config.layers!=null,()=>"When the config data for a Sequential model is not an Array, it must be an Object that contains the 'layers' field."),configArray=config.layers,delete config.layers,extraModelConfig=config;let model2=new cls(extraModelConfig);if(!(model2 instanceof Sequential))throw new NotImplementedError(`Sequential.fromConfig called on non-Sequential input: ${model2}`);for(let conf of configArray){let layer=deserialize(conf,void 0,fastWeightInit);fastWeightInit&&layer.setFastWeightInitDuringBuild(!0),model2.add(layer)}return model2}set stopTraining(stop){if(this.model==null)throw new ValueError("Cannot set the stopTraining property of a sequential model before it is compiled.");this.model.stopTraining=stop}get stopTraining(){if(this.model==null)throw new ValueError("Cannot get the stopTraining property of a sequential model before it is compiled.");return this.model.stopTraining}getConfig(){let layers=[];for(let layer of this.layers){let dict={};dict.className=layer.getClassName(),dict.config=layer.getConfig(),layers.push(dict)}return{name:this.name,layers}}};Sequential.className="Sequential";serialization_exports.registerClass(Sequential);function model(args){return new LayersModel(args)}function sequential(config){return new Sequential(config)}function loadLayersModel(pathOrIOHandler,options){return options==null&&(options={}),loadLayersModelInternal(pathOrIOHandler,options)}function input(config){return Input(config)}function registerCallbackConstructor(verbosityLevel,callbackConstructor){CallbackConstructorRegistry.registerCallbackConstructor(verbosityLevel,callbackConstructor)}var Activation=class extends serialization_exports.Serializable{getConfig(){return{}}},Elu2=class extends Activation{apply(x,alpha=1){return elu2(x,alpha)}};Elu2.className="elu";serialization_exports.registerClass(Elu2);var Selu2=class extends Activation{apply(x){return selu(x)}};Selu2.className="selu";serialization_exports.registerClass(Selu2);var Relu2=class extends Activation{apply(x){return relu(x)}};Relu2.className="relu";serialization_exports.registerClass(Relu2);var Relu62=class extends Activation{apply(x){return tidy(()=>minimum(6,relu(x)))}};Relu62.className="relu6";serialization_exports.registerClass(Relu62);var Linear=class extends Activation{apply(x){return x}};Linear.className="linear";serialization_exports.registerClass(Linear);var Sigmoid2=class extends Activation{apply(x){return sigmoid(x)}};Sigmoid2.className="sigmoid";serialization_exports.registerClass(Sigmoid2);var HardSigmoid=class extends Activation{apply(x){return hardSigmoid(x)}};HardSigmoid.className="hardSigmoid";serialization_exports.registerClass(HardSigmoid);var Softplus2=class extends Activation{apply(x){return softplus(x)}};Softplus2.className="softplus";serialization_exports.registerClass(Softplus2);var Softsign=class extends Activation{apply(x){return softsign(x)}};Softsign.className="softsign";serialization_exports.registerClass(Softsign);var Tanh2=class extends Activation{apply(x){return tanh2(x)}};Tanh2.className="tanh";serialization_exports.registerClass(Tanh2);var Softmax2=class extends Activation{apply(x,axis=-1){return softmax(x,axis)}};Softmax2.className="softmax";serialization_exports.registerClass(Softmax2);var LogSoftmax2=class extends Activation{apply(x,axis=-1){return logSoftmax(x,axis)}};LogSoftmax2.className="logSoftmax";serialization_exports.registerClass(LogSoftmax2);var Swish=class extends Activation{apply(x,alpha=1){return tidy(()=>sigmoid(x.mul(alpha)).mul(x))}};Swish.className="swish";serialization_exports.registerClass(Swish);function serializeActivation(activation2){return activation2.getClassName()}function deserializeActivation(config,customObjects={}){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"activation")}function getActivation(identifier){if(identifier==null){let config={};return config.className="linear",config.config={},deserializeActivation(config)}if(typeof identifier=="string"){let config={};return config.className=identifier,config.config={},deserializeActivation(config)}else return identifier instanceof Activation?identifier:deserializeActivation(identifier)}function assertObjectArgs(args){if(args!=null&&typeof args!="object")throw new Error(`Argument to L1L2 regularizer's constructor is expected to be an object, but received: ${args}`)}var Regularizer=class extends serialization_exports.Serializable{},L1L2=class extends Regularizer{constructor(args){super();assertObjectArgs(args),this.l1=args==null||args.l1==null?.01:args.l1,this.l2=args==null||args.l2==null?.01:args.l2,this.hasL1=this.l1!==0,this.hasL2=this.l2!==0}apply(x){return tidy(()=>{let regularization=zeros([1]);return this.hasL1&&(regularization=add2(regularization,sum2(mul(this.l1,abs(x))))),this.hasL2&&(regularization=add2(regularization,sum2(mul(this.l2,square2(x))))),regularization.asScalar()})}getConfig(){return{l1:this.l1,l2:this.l2}}static fromConfig(cls,config){return new cls({l1:config.l1,l2:config.l2})}};L1L2.className="L1L2";serialization_exports.registerClass(L1L2);function l1(args){return assertObjectArgs(args),new L1L2({l1:args!=null?args.l1:null,l2:0})}function l2(args){return assertObjectArgs(args),new L1L2({l2:args!=null?args.l2:null,l1:0})}var REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP={l1l2:"L1L2"};function serializeRegularizer(constraint){return serializeKerasObject(constraint)}function deserializeRegularizer(config,customObjects={}){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"regularizer")}function getRegularizer(identifier){if(identifier==null)return null;if(typeof identifier=="string"){let config={className:identifier in REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP?REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier,config:{}};return deserializeRegularizer(config)}else return identifier instanceof Regularizer?identifier:deserializeRegularizer(identifier)}var ReLU=class extends Layer{constructor(args){super(args==null?{}:args);this.supportsMasking=!0,args!=null&&(this.maxValue=args.maxValue)}call(inputs,kwargs){inputs=getExactlyOneTensor(inputs);let output=relu(inputs);return this.maxValue!=null&&(output=clipByValue(output,0,this.maxValue)),output}computeOutputShape(inputShape){return inputShape}getConfig(){let config={maxValue:this.maxValue},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};ReLU.className="ReLU";serialization_exports.registerClass(ReLU);var LeakyReLU=class extends Layer{constructor(args){super(args==null?{}:args);this.DEFAULT_ALPHA=.3,args==null&&(args={}),this.alpha=args.alpha==null?this.DEFAULT_ALPHA:args.alpha}call(inputs,kwargs){let x=getExactlyOneTensor(inputs);return leakyRelu(x,this.alpha)}computeOutputShape(inputShape){return inputShape}getConfig(){let config={alpha:this.alpha},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};LeakyReLU.className="LeakyReLU";serialization_exports.registerClass(LeakyReLU);var PReLU=class extends Layer{constructor(args){super(args==null?{}:args);if(this.DEFAULT_ALPHA_INITIALIZER="zeros",args==null&&(args={}),this.supportsMasking=!0,this.alphaInitializer=getInitializer(args.alphaInitializer||this.DEFAULT_ALPHA_INITIALIZER),this.alphaRegularizer=getRegularizer(args.alphaRegularizer),this.alphaConstraint=getConstraint(args.alphaConstraint),args.sharedAxes==null)this.sharedAxes=null;else if(Array.isArray(args.sharedAxes))this.sharedAxes=args.sharedAxes;else if(typeof args.sharedAxes=="number")this.sharedAxes=[args.sharedAxes];else throw new ValueError(`Expected sharedAxes to be a number or an array of numbers, but got ${args.sharedAxes}`)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let paramShape=inputShape.slice(1);if(this.sharedAxes!=null)for(let i of this.sharedAxes)paramShape[i-1]=1;this.alpha=this.addWeight("alpha",paramShape,"float32",this.alphaInitializer,this.alphaRegularizer,!0,this.alphaConstraint);let axes={};if(this.sharedAxes!=null)for(let i=1;i(checkDataFormat(dataFormat),dataFormat==="channelsFirst"?transpose(x,[0,2,3,1]):x))}function preprocessConv3DInput(x,dataFormat){return tidy(()=>(checkDataFormat(dataFormat),dataFormat==="channelsFirst"?transpose(x,[0,2,3,4,1]):x))}function conv1dWithBias(x,kernel,bias,strides=1,padding="valid",dataFormat,dilationRate=1){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.shape.length!==3)throw new ValueError(`The input of a conv1dWithBias operation should be 3, but is ${x.shape.length} instead.`);if(kernel.shape.length!==3)throw new ValueError(`The kernel for a conv1dWithBias operation should be 3, but is ${kernel.shape.length} instead`);if(bias!=null&&bias.shape.length!==1)throw new ValueError(`The bias for a conv1dWithBias operation should be 1, but is ${kernel.shape.length} instead`);if(dataFormat==="channelsFirst"&&(x=transpose(x,[0,2,1])),padding==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");let y=conv1d(x,kernel,strides,padding==="same"?"same":"valid","NWC",dilationRate);return bias!=null&&(y=biasAdd(y,bias)),y})}function conv2dWithBiasActivation(x,kernel,bias,strides=[1,1],padding="valid",dataFormat,dilationRate,activation2=null){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.rank!==3&&x.rank!==4)throw new ValueError(`conv2dWithBiasActivation expects input to be of rank 3 or 4, but received ${x.rank}.`);if(kernel.rank!==3&&kernel.rank!==4)throw new ValueError(`conv2dWithBiasActivation expects kernel to be of rank 3 or 4, but received ${x.rank}.`);let y=preprocessConv2DInput(x,dataFormat);if(padding==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");return y=fused_ops_exports.conv2d({x:y,filter:kernel,strides,pad:padding==="same"?"same":"valid",dilations:dilationRate,dataFormat:"NHWC",bias,activation:activation2}),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}function conv3dWithBias(x,kernel,bias,strides=[1,1,1],padding="valid",dataFormat,dilationRate){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.rank!==4&&x.rank!==5)throw new ValueError(`conv3dWithBias expects input to be of rank 4 or 5, but received ${x.rank}.`);if(kernel.rank!==4&&kernel.rank!==5)throw new ValueError(`conv3dWithBias expects kernel to be of rank 4 or 5, but received ${x.rank}.`);let y=preprocessConv3DInput(x,dataFormat);if(padding==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv3dWithBias is not implemented yet.");return y=conv3d(y,kernel,strides,padding==="same"?"same":"valid","NDHWC",dilationRate),bias!=null&&(y=biasAdd(y,bias)),dataFormat==="channelsFirst"&&(y=transpose(y,[0,4,1,2,3])),y})}var BaseConv=class extends Layer{constructor(rank,args){super(args);if(this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",BaseConv.verifyArgs(args),this.rank=rank,assertPositiveInteger(this.rank,"rank"),this.rank!==1&&this.rank!==2&&this.rank!==3)throw new NotImplementedError(`Convolution layer for rank other than 1, 2, or 3 (${this.rank}) is not implemented yet.`);if(this.kernelSize=normalizeArray(args.kernelSize,rank,"kernelSize"),this.strides=normalizeArray(args.strides==null?1:args.strides,rank,"strides"),this.padding=args.padding==null?"valid":args.padding,checkPaddingMode(this.padding),this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),this.activation=getActivation(args.activation),this.useBias=args.useBias==null?!0:args.useBias,this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.biasConstraint=getConstraint(args.biasConstraint),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.dilationRate=normalizeArray(args.dilationRate==null?1:args.dilationRate,rank,"dilationRate"),this.rank===1&&Array.isArray(this.dilationRate)&&this.dilationRate.length!==1)throw new ValueError(`dilationRate must be a number or an array of a single number for 1D convolution, but received ${JSON.stringify(this.dilationRate)}`);if(this.rank===2){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==2)throw new ValueError(`dilationRate must be a number or array of two numbers for 2D convolution, but received ${JSON.stringify(this.dilationRate)}`)}else if(this.rank===3){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==3)throw new ValueError(`dilationRate must be a number or array of three numbers for 3D convolution, but received ${JSON.stringify(this.dilationRate)}`)}}static verifyArgs(args){if(assert2("kernelSize"in args,"required key 'kernelSize' not in config"),typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,3))throw new ValueError(`BaseConv expects config.kernelSize to be number or number[] with length 1, 2, or 3, but received ${JSON.stringify(args.kernelSize)}.`)}getConfig(){let config={kernelSize:this.kernelSize,strides:this.strides,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,activation:serializeActivation(this.activation),useBias:this.useBias,biasInitializer:serializeInitializer(this.biasInitializer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),biasConstraint:serializeConstraint(this.biasConstraint)},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},Conv=class extends BaseConv{constructor(rank,args){super(rank,args);this.kernel=null,Conv.verifyArgs(args),this.filters=args.filters,assertPositiveInteger(this.filters,"filters"),this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.kernelConstraint=getConstraint(args.kernelConstraint),this.kernelRegularizer=getRegularizer(args.kernelRegularizer)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError(`The channel dimension of the input should be defined. Found ${inputShape[channelAxis]}`);let inputDim=inputShape[channelAxis],kernelShape=this.kernelSize.concat([inputDim,this.filters]);this.kernel=this.addWeight("kernel",kernelShape,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[{ndim:this.rank+2,axes:{[channelAxis]:inputDim}}],this.built=!0}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let outputs,biasValue=this.bias==null?null:this.bias.read(),fusedActivationName=mapActivationToFusedKernel(this.activation.getClassName());if(fusedActivationName!=null&&this.rank===2)outputs=conv2dWithBiasActivation(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate,fusedActivationName);else{if(this.rank===1)outputs=conv1dWithBias(inputs,this.kernel.read(),biasValue,this.strides[0],this.padding,this.dataFormat,this.dilationRate[0]);else if(this.rank===2)outputs=conv2dWithBiasActivation(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate);else if(this.rank===3)outputs=conv3dWithBias(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate);else throw new NotImplementedError("convolutions greater than 3D are not implemented yet.");this.activation!=null&&(outputs=this.activation.apply(outputs))}return outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let newSpace=[],space=this.dataFormat==="channelsLast"?inputShape.slice(1,inputShape.length-1):inputShape.slice(2);for(let i=0;i 0 but got ${JSON.stringify(args.filters)}`)}},Conv2D2=class extends Conv{constructor(args){super(2,args);Conv2D2.verifyArgs(args)}getConfig(){let config=super.getConfig();return delete config.rank,config}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,2))throw new ValueError(`Conv2D expects config.kernelSize to be number or number[] with length 1 or 2, but received ${JSON.stringify(args.kernelSize)}.`)}};Conv2D2.className="Conv2D";serialization_exports.registerClass(Conv2D2);var Conv3D2=class extends Conv{constructor(args){super(3,args);Conv3D2.verifyArgs(args)}getConfig(){let config=super.getConfig();return delete config.rank,config}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!(Array.isArray(args.kernelSize)&&(args.kernelSize.length===1||args.kernelSize.length===3)))throw new ValueError(`Conv3D expects config.kernelSize to be number or [number, number, number], but received ${JSON.stringify(args.kernelSize)}.`)}};Conv3D2.className="Conv3D";serialization_exports.registerClass(Conv3D2);var Conv2DTranspose=class extends Conv2D2{constructor(args){super(args);if(this.inputSpec=[new InputSpec({ndim:4})],this.padding!=="same"&&this.padding!=="valid")throw new ValueError(`Conv2DTranspose currently supports only padding modes 'same' and 'valid', but received padding mode ${this.padding}`)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length!==4)throw new ValueError("Input should have rank 4; Received input shape: "+JSON.stringify(inputShape));let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError("The channel dimension of the inputs should be defined. Found `None`.");let inputDim=inputShape[channelAxis],kernelShape=this.kernelSize.concat([this.filters,inputDim]);this.kernel=this.addWeight("kernel",kernelShape,"float32",this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],"float32",this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[new InputSpec({ndim:4,axes:{[channelAxis]:inputDim}})],this.built=!0}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);if(input2.shape.length!==4)throw new ValueError(`Conv2DTranspose.call() expects input tensor to be rank-4, but received a tensor of rank-${input2.shape.length}`);let inputShape=input2.shape,batchSize=inputShape[0],hAxis,wAxis;this.dataFormat==="channelsFirst"?(hAxis=2,wAxis=3):(hAxis=1,wAxis=2);let height=inputShape[hAxis],width=inputShape[wAxis],kernelH=this.kernelSize[0],kernelW=this.kernelSize[1],strideH=this.strides[0],strideW=this.strides[1],outHeight=deconvLength(height,strideH,kernelH,this.padding),outWidth=deconvLength(width,strideW,kernelW,this.padding),outputShape=[batchSize,outHeight,outWidth,this.filters];this.dataFormat!=="channelsLast"&&(input2=transpose(input2,[0,2,3,1]));let outputs=conv2dTranspose(input2,this.kernel.read(),outputShape,this.strides,this.padding);return this.dataFormat!=="channelsLast"&&(outputs=transpose(outputs,[0,3,1,2])),this.bias!=null&&(outputs=biasAdd(outputs,this.bias.read(),this.dataFormat)),this.activation!=null&&(outputs=this.activation.apply(outputs)),outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice(),channelAxis,heightAxis,widthAxis;this.dataFormat==="channelsFirst"?(channelAxis=1,heightAxis=2,widthAxis=3):(channelAxis=3,heightAxis=1,widthAxis=2);let kernelH=this.kernelSize[0],kernelW=this.kernelSize[1],strideH=this.strides[0],strideW=this.strides[1];return outputShape[channelAxis]=this.filters,outputShape[heightAxis]=deconvLength(outputShape[heightAxis],strideH,kernelH,this.padding),outputShape[widthAxis]=deconvLength(outputShape[widthAxis],strideW,kernelW,this.padding),outputShape}getConfig(){let config=super.getConfig();return delete config.dilationRate,config}};Conv2DTranspose.className="Conv2DTranspose";serialization_exports.registerClass(Conv2DTranspose);var SeparableConv=class extends Conv{constructor(rank,config){super(rank,config);if(this.DEFAULT_DEPTHWISE_INITIALIZER="glorotUniform",this.DEFAULT_POINTWISE_INITIALIZER="glorotUniform",this.depthwiseKernel=null,this.pointwiseKernel=null,config.filters==null)throw new ValueError("The `filters` configuration field is required by SeparableConv, but is unspecified.");if(config.kernelInitializer!=null||config.kernelRegularizer!=null||config.kernelConstraint!=null)throw new ValueError("Fields kernelInitializer, kernelRegularizer and kernelConstraint are invalid for SeparableConv2D. Use depthwiseInitializer, depthwiseRegularizer, depthwiseConstraint, pointwiseInitializer, pointwiseRegularizer and pointwiseConstraint instead.");if(config.padding!=null&&config.padding!=="same"&&config.padding!=="valid")throw new ValueError(`SeparableConv${this.rank}D supports only padding modes: 'same' and 'valid', but received ${JSON.stringify(config.padding)}`);this.depthMultiplier=config.depthMultiplier==null?1:config.depthMultiplier,this.depthwiseInitializer=getInitializer(config.depthwiseInitializer||this.DEFAULT_DEPTHWISE_INITIALIZER),this.depthwiseRegularizer=getRegularizer(config.depthwiseRegularizer),this.depthwiseConstraint=getConstraint(config.depthwiseConstraint),this.pointwiseInitializer=getInitializer(config.depthwiseInitializer||this.DEFAULT_POINTWISE_INITIALIZER),this.pointwiseRegularizer=getRegularizer(config.pointwiseRegularizer),this.pointwiseConstraint=getConstraint(config.pointwiseConstraint)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length{inputs=getExactlyOneTensor(inputs);let output;if(this.rank===1)throw new NotImplementedError("1D separable convolution is not implemented yet.");return this.rank===2&&(this.dataFormat==="channelsFirst"&&(inputs=transpose(inputs,[0,2,3,1])),output=separableConv2d(inputs,this.depthwiseKernel.read(),this.pointwiseKernel.read(),this.strides,this.padding,this.dilationRate,"NHWC")),this.useBias&&(output=biasAdd(output,this.bias.read(),this.dataFormat)),this.activation!=null&&(output=this.activation.apply(output)),this.dataFormat==="channelsFirst"&&(output=transpose(output,[0,3,1,2])),output})}getConfig(){let config=super.getConfig();return delete config.rank,delete config.kernelInitializer,delete config.kernelRegularizer,delete config.kernelConstraint,config.depthwiseInitializer=serializeInitializer(this.depthwiseInitializer),config.pointwiseInitializer=serializeInitializer(this.pointwiseInitializer),config.depthwiseRegularizer=serializeRegularizer(this.depthwiseRegularizer),config.pointwiseRegularizer=serializeRegularizer(this.pointwiseRegularizer),config.depthwiseConstraint=serializeConstraint(this.depthwiseConstraint),config.pointwiseConstraint=serializeConstraint(this.pointwiseConstraint),config}};SeparableConv.className="SeparableConv";var SeparableConv2D=class extends SeparableConv{constructor(args){super(2,args)}};SeparableConv2D.className="SeparableConv2D";serialization_exports.registerClass(SeparableConv2D);var Conv1D=class extends Conv{constructor(args){super(1,args);Conv1D.verifyArgs(args),this.inputSpec=[{ndim:3}]}getConfig(){let config=super.getConfig();return delete config.rank,delete config.dataFormat,config}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,1))throw new ValueError(`Conv1D expects config.kernelSize to be number or number[] with length 1, but received ${JSON.stringify(args.kernelSize)}.`)}};Conv1D.className="Conv1D";serialization_exports.registerClass(Conv1D);var Cropping2D=class extends Layer{constructor(args){super(args);typeof args.cropping=="number"?this.cropping=[[args.cropping,args.cropping],[args.cropping,args.cropping]]:typeof args.cropping[0]=="number"?this.cropping=[[args.cropping[0],args.cropping[0]],[args.cropping[1],args.cropping[1]]]:this.cropping=args.cropping,this.dataFormat=args.dataFormat===void 0?"channelsLast":args.dataFormat,this.inputSpec=[{ndim:4}]}computeOutputShape(inputShape){return this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],inputShape[2]-this.cropping[0][0]-this.cropping[0][1],inputShape[3]-this.cropping[1][0]-this.cropping[1][1]]:[inputShape[0],inputShape[1]-this.cropping[0][0]-this.cropping[0][1],inputShape[2]-this.cropping[1][0]-this.cropping[1][1],inputShape[3]]}call(inputs,kwargs){return tidy(()=>{if(inputs=getExactlyOneTensor(inputs),this.dataFormat==="channelsLast"){let hSliced=sliceAlongAxis(inputs,this.cropping[0][0],inputs.shape[1]-this.cropping[0][0]-this.cropping[0][1],2);return sliceAlongAxis(hSliced,this.cropping[1][0],inputs.shape[2]-this.cropping[1][1]-this.cropping[1][0],3)}else{let hSliced=sliceAlongAxis(inputs,this.cropping[0][0],inputs.shape[2]-this.cropping[0][0]-this.cropping[0][1],3);return sliceAlongAxis(hSliced,this.cropping[1][0],inputs.shape[3]-this.cropping[1][1]-this.cropping[1][0],4)}})}getConfig(){let config={cropping:this.cropping,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Cropping2D.className="Cropping2D";serialization_exports.registerClass(Cropping2D);var UpSampling2D=class extends Layer{constructor(args){super(args);this.DEFAULT_SIZE=[2,2],this.inputSpec=[{ndim:4}],this.size=args.size==null?this.DEFAULT_SIZE:args.size,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),this.interpolation=args.interpolation==null?"nearest":args.interpolation,checkInterpolationFormat(this.interpolation)}computeOutputShape(inputShape){if(this.dataFormat==="channelsFirst"){let height=inputShape[2]==null?null:this.size[0]*inputShape[2],width=inputShape[3]==null?null:this.size[1]*inputShape[3];return[inputShape[0],inputShape[1],height,width]}else{let height=inputShape[1]==null?null:this.size[0]*inputShape[1],width=inputShape[2]==null?null:this.size[1]*inputShape[2];return[inputShape[0],height,width,inputShape[3]]}}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs),inputShape=input2.shape;if(this.dataFormat==="channelsFirst"){input2=transpose(input2,[0,2,3,1]);let height=this.size[0]*inputShape[2],width=this.size[1]*inputShape[3],resized=this.interpolation==="nearest"?input2.resizeNearestNeighbor([height,width]):input2.resizeBilinear([height,width]);return transpose(resized,[0,3,1,2])}else{let height=this.size[0]*inputShape[1],width=this.size[1]*inputShape[2];return this.interpolation==="nearest"?input2.resizeNearestNeighbor([height,width]):input2.resizeBilinear([height,width])}})}getConfig(){let config={size:this.size,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};UpSampling2D.className="UpSampling2D";serialization_exports.registerClass(UpSampling2D);function depthwiseConv2d3(x,depthwiseKernel,strides=[1,1],padding="valid",dataFormat,dilationRate){return tidy(()=>{dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat);let y=preprocessConv2DInput(x,dataFormat);if(x.rank!==4)throw new ValueError(`Input for depthwiseConv2d is required to be 4-D, but is instead ${x.rank}-D`);if(depthwiseKernel.rank!==4)throw new ValueError(`depthwiseKernel is required to be 4-D, but is instead ${depthwiseKernel.rank}-D`);return y=depthwiseConv2d(y,depthwiseKernel,strides,padding==="same"?"same":"valid","NHWC",dilationRate),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}var DepthwiseConv2D=class extends BaseConv{constructor(args){super(2,args);this.depthwiseKernel=null,this.depthMultiplier=args.depthMultiplier==null?1:args.depthMultiplier,this.depthwiseInitializer=getInitializer(args.depthwiseInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.depthwiseConstraint=getConstraint(args.depthwiseConstraint),this.depthwiseRegularizer=getRegularizer(args.depthwiseRegularizer)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length<4)throw new ValueError(`Inputs to DepthwiseConv2D should have rank 4. Received input shape: ${JSON.stringify(inputShape)}.`);let channelAxis=this.dataFormat==="channelsFirst"?1:3;if(inputShape[channelAxis]==null||inputShape[channelAxis]<0)throw new ValueError(`The channel dimension of the inputs to DepthwiseConv2D should be defined, but is not (${inputShape[channelAxis]}).`);let inputDim=inputShape[channelAxis],depthwiseKernelShape=[this.kernelSize[0],this.kernelSize[1],inputDim,this.depthMultiplier];this.depthwiseKernel=this.addWeight("depthwise_kernel",depthwiseKernelShape,null,this.depthwiseInitializer,this.depthwiseRegularizer,!0,this.depthwiseConstraint),this.useBias?this.bias=this.addWeight("bias",[inputDim*this.depthMultiplier],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let outputs=depthwiseConv2d3(inputs,this.depthwiseKernel.read(),this.strides,this.padding,this.dataFormat,null);return this.useBias&&(outputs=biasAdd(outputs,this.bias.read(),this.dataFormat)),this.activation!=null&&(outputs=this.activation.apply(outputs)),outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],cols=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2],outFilters=this.dataFormat==="channelsFirst"?inputShape[1]*this.depthMultiplier:inputShape[3]*this.depthMultiplier,outRows=convOutputLength(rows,this.kernelSize[0],this.padding,this.strides[0]),outCols=convOutputLength(cols,this.kernelSize[1],this.padding,this.strides[1]);return this.dataFormat==="channelsFirst"?[inputShape[0],outFilters,outRows,outCols]:[inputShape[0],outRows,outCols,outFilters]}getConfig(){let config=super.getConfig();return config.depthMultiplier=this.depthMultiplier,config.depthwiseInitializer=serializeInitializer(this.depthwiseInitializer),config.depthwiseRegularizer=serializeRegularizer(this.depthwiseRegularizer),config.depthwiseConstraint=serializeConstraint(this.depthwiseRegularizer),config}};DepthwiseConv2D.className="DepthwiseConv2D";serialization_exports.registerClass(DepthwiseConv2D);function standardizeArgs(inputs,initialState,constants,numConstants){if(Array.isArray(inputs)){if(initialState!=null||constants!=null)throw new ValueError("When inputs is an array, neither initialState or constants should be provided");numConstants!=null&&(constants=inputs.slice(inputs.length-numConstants,inputs.length),inputs=inputs.slice(0,inputs.length-numConstants)),inputs.length>1&&(initialState=inputs.slice(1,inputs.length)),inputs=inputs[0]}function toListOrNull(x){return x==null||Array.isArray(x)?x:[x]}return initialState=toListOrNull(initialState),constants=toListOrNull(constants),{inputs,initialState,constants}}function rnn(stepFunction,inputs,initialStates,goBackwards=!1,mask,constants,unroll=!1,needPerStepOutputs=!1){return tidy(()=>{let ndim=inputs.shape.length;if(ndim<3)throw new ValueError(`Input should be at least 3D, but is ${ndim}D.`);let axes=[1,0].concat(range2(2,ndim));if(inputs=transpose(inputs,axes),constants!=null)throw new NotImplementedError("The rnn() functoin of the deeplearn.js backend does not support constants yet.");unroll&&console.warn("Backend rnn(): the unroll = true option is not applicable to the imperative deeplearn.js backend."),mask!=null&&(mask=mask.asType("bool").asType("float32"),mask.rank===ndim-1&&(mask=expandDims(mask,-1)),mask=transpose(mask,axes)),goBackwards&&(inputs=reverse(inputs,0),mask!=null&&(mask=reverse(mask,0)));let perStepOutputs=[],lastOutput,states=initialStates,timeSteps=inputs.shape[0],perStepInputs=unstack(inputs),perStepMasks;mask!=null&&(perStepMasks=unstack(mask));for(let t=0;tstepFunction(currentInput,states));if(mask==null)lastOutput=stepOutputs[0],states=stepOutputs[1];else{let maskedOutputs=tidy(()=>{let stepMask=perStepMasks[t],negStepMask=onesLike(stepMask).sub(stepMask),output=stepOutputs[0].mul(stepMask).add(states[0].mul(negStepMask)),newStates=states.map((state,i)=>stepOutputs[1][i].mul(stepMask).add(state.mul(negStepMask)));return{output,newStates}});lastOutput=maskedOutputs.output,states=maskedOutputs.newStates}needPerStepOutputs&&perStepOutputs.push(lastOutput)}let outputs;return needPerStepOutputs&&(outputs=stack(perStepOutputs,1)),[lastOutput,outputs,states]})}var RNN=class extends Layer{constructor(args){super(args);let cell;if(args.cell==null)throw new ValueError("cell property is missing for the constructor of RNN.");if(Array.isArray(args.cell)?cell=new StackedRNNCells({cells:args.cell}):cell=args.cell,cell.stateSize==null)throw new ValueError("The RNN cell should have an attribute `stateSize` (tuple of integers, one integer per RNN state).");this.cell=cell,this.returnSequences=args.returnSequences==null?!1:args.returnSequences,this.returnState=args.returnState==null?!1:args.returnState,this.goBackwards=args.goBackwards==null?!1:args.goBackwards,this._stateful=args.stateful==null?!1:args.stateful,this.unroll=args.unroll==null?!1:args.unroll,this.supportsMasking=!0,this.inputSpec=[new InputSpec({ndim:3})],this.stateSpec=null,this.states_=null,this.numConstants=null,this.keptStates=[]}getStates(){if(this.states_==null){let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;return range2(0,numStates).map(x=>null)}else return this.states_}setStates(states){this.states_=states}computeOutputShape(inputShape){isArrayOfShapes(inputShape)&&(inputShape=inputShape[0]),inputShape=inputShape;let stateSize=this.cell.stateSize;Array.isArray(stateSize)||(stateSize=[stateSize]);let outputDim=stateSize[0],outputShape;if(this.returnSequences?outputShape=[inputShape[0],inputShape[1],outputDim]:outputShape=[inputShape[0],outputDim],this.returnState){let stateShape=[];for(let dim of stateSize)stateShape.push([inputShape[0],dim]);return[outputShape].concat(stateShape)}else return outputShape}computeMask(inputs,mask){return tidy(()=>{Array.isArray(mask)&&(mask=mask[0]);let outputMask=this.returnSequences?mask:null;if(this.returnState){let stateMask=this.states.map(s=>null);return[outputMask].concat(stateMask)}else return outputMask})}get states(){if(this.states_==null){let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1,output=[];for(let i=0;ispec.shape[spec.shape.length-1]),stateSize))throw new ValueError(`An initialState was passed that is not compatible with cell.stateSize. Received stateSpec=${this.stateSpec}; However cell.stateSize is ${this.cell.stateSize}`)}else this.stateSpec=stateSize.map(dim=>new InputSpec({shape:[null,dim]}));this.stateful&&this.resetStates()}resetStates(states,training=!1){tidy(()=>{if(!this.stateful)throw new AttributeError("Cannot call resetStates() on an RNN Layer that is not stateful.");let batchSize=this.inputSpec[0].shape[0];if(batchSize==null)throw new ValueError("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.states_==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(dim=>zeros([batchSize,dim])):this.states_=[zeros([batchSize,this.cell.stateSize])];else if(states==null)dispose(this.states_),this.keptStates!=null&&(dispose(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(dim=>zeros([batchSize,dim])):this.states_[0]=zeros([batchSize,this.cell.stateSize]);else{if(Array.isArray(states)||(states=[states]),states.length!==this.states_.length)throw new ValueError(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${states.length} state value(s). Input received: ${states}`);training===!0?this.keptStates.push(this.states_.slice()):dispose(this.states_);for(let index=0;indexkeep(state.clone()))})}apply(inputs,kwargs){let initialState=kwargs==null?null:kwargs.initialState,constants=kwargs==null?null:kwargs.constants;kwargs==null&&(kwargs={});let standardized=standardizeArgs(inputs,initialState,constants,this.numConstants);inputs=standardized.inputs,initialState=standardized.initialState,constants=standardized.constants;let additionalInputs=[],additionalSpecs=[];if(initialState!=null){kwargs.initialState=initialState,additionalInputs=additionalInputs.concat(initialState),this.stateSpec=[];for(let state of initialState)this.stateSpec.push(new InputSpec({shape:state.shape}));additionalSpecs=additionalSpecs.concat(this.stateSpec)}if(constants!=null&&(kwargs.constants=constants,additionalInputs=additionalInputs.concat(constants),this.numConstants=constants.length),additionalInputs[0]instanceof SymbolicTensor){let fullInput=[inputs].concat(additionalInputs),fullInputSpec=this.inputSpec.concat(additionalSpecs),originalInputSpec=this.inputSpec;this.inputSpec=fullInputSpec;let output=super.apply(fullInput,kwargs);return this.inputSpec=originalInputSpec,output}else return super.apply(inputs,kwargs)}call(inputs,kwargs){return tidy(()=>{let mask=kwargs==null?null:kwargs.mask,training=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;inputs=getExactlyOneTensor(inputs),initialState==null&&(this.stateful?initialState=this.states_:initialState=this.getInitialState(inputs));let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;if(initialState.length!==numStates)throw new ValueError(`RNN Layer has ${numStates} state(s) but was passed ${initialState.length} initial state(s).`);this.unroll&&console.warn("Ignoring unroll = true for RNN layer, due to imperative backend.");let cellCallKwargs={training},rnnOutputs=rnn((inputs2,states2)=>{let outputs2=this.cell.call([inputs2].concat(states2),cellCallKwargs);return[outputs2[0],outputs2.slice(1)]},inputs,initialState,this.goBackwards,mask,null,this.unroll,this.returnSequences),lastOutput=rnnOutputs[0],outputs=rnnOutputs[1],states=rnnOutputs[2];this.stateful&&this.resetStates(states,training);let output=this.returnSequences?outputs:lastOutput;return this.returnState?[output].concat(states):output})}getInitialState(inputs){return tidy(()=>{let initialState=zeros(inputs.shape);return initialState=sum2(initialState,[1,2]),initialState=expandDims2(initialState),Array.isArray(this.cell.stateSize)?this.cell.stateSize.map(dim=>dim>1?tile2(initialState,[1,dim]):initialState):this.cell.stateSize>1?[tile2(initialState,[1,this.cell.stateSize])]:[initialState]})}get trainableWeights(){return this.trainable?this.cell.trainableWeights:[]}get nonTrainableWeights(){return this.trainable?this.cell.nonTrainableWeights:this.cell.weights}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.cell!=null&&this.cell.setFastWeightInitDuringBuild(value)}getConfig(){let baseConfig=super.getConfig(),config={returnSequences:this.returnSequences,returnState:this.returnState,goBackwards:this.goBackwards,stateful:this.stateful,unroll:this.unroll};this.numConstants!=null&&(config.numConstants=this.numConstants);let cellConfig=this.cell.getConfig();return this.getClassName()===RNN.className&&(config.cell={className:this.cell.getClassName(),config:cellConfig}),Object.assign({},cellConfig,baseConfig,config)}static fromConfig(cls,config,customObjects={}){let cellConfig=config.cell,cell=deserialize(cellConfig,customObjects);return new cls(Object.assign(config,{cell}))}};RNN.className="RNN";serialization_exports.registerClass(RNN);var RNNCell=class extends Layer{},SimpleRNNCell=class extends RNNCell{constructor(args){super(args);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation==null?this.DEFAULT_ACTIVATION:args.activation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min2([1,max2([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min2([1,max2([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){inputShape=getExactlyOneShape(inputShape),this.kernel=this.addWeight("kernel",[inputShape[inputShape.length-1],this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,inputs.length!==2)throw new ValueError(`SimpleRNNCell expects 2 input Tensors, got ${inputs.length}.`);let prevOutput=inputs[1];inputs=inputs[0];let training=kwargs.training==null?!1:kwargs.training;0onesLike(inputs),rate:this.dropout,training})),0onesLike(prevOutput),rate:this.recurrentDropout,training}));let h,dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask;dpMask!=null?h=dot2(mul(inputs,dpMask),this.kernel.read()):h=dot2(inputs,this.kernel.read()),this.bias!=null&&(h=biasAdd(h,this.bias.read())),recDpMask!=null&&(prevOutput=mul(prevOutput,recDpMask));let output=add2(h,dot2(prevOutput,this.recurrentKernel.read()));return this.activation!=null&&(output=this.activation.apply(output)),[output,output]})}getConfig(){let baseConfig=super.getConfig(),config={units:this.units,activation:serializeActivation(this.activation),useBias:this.useBias,kernelInitializer:serializeInitializer(this.kernelInitializer),recurrentInitializer:serializeInitializer(this.recurrentInitializer),biasInitializer:serializeInitializer(this.biasInitializer),kernelRegularizer:serializeRegularizer(this.kernelRegularizer),recurrentRegularizer:serializeRegularizer(this.recurrentRegularizer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),kernelConstraint:serializeConstraint(this.kernelConstraint),recurrentConstraint:serializeConstraint(this.recurrentConstraint),biasConstraint:serializeConstraint(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout};return Object.assign({},baseConfig,config)}};SimpleRNNCell.className="SimpleRNNCell";serialization_exports.registerClass(SimpleRNNCell);var SimpleRNN=class extends RNN{constructor(args){args.cell=new SimpleRNNCell(args),super(args)}call(inputs,kwargs){return tidy(()=>{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training,initialState})})}static fromConfig(cls,config){return new cls(config)}};SimpleRNN.className="SimpleRNN";serialization_exports.registerClass(SimpleRNN);var GRUCell=class extends RNNCell{constructor(args){super(args);if(this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",args.resetAfter)throw new ValueError("GRUCell does not support reset_after parameter set to true.");this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation===void 0?this.DEFAULT_ACTIVATION:args.activation),this.recurrentActivation=getActivation(args.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:args.recurrentActivation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min2([1,max2([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min2([1,max2([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.implementation=args.implementation,this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){inputShape=getExactlyOneShape(inputShape);let inputDim=inputShape[inputShape.length-1];this.kernel=this.addWeight("kernel",[inputDim,this.units*3],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*3],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units*3],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,inputs.length!==2)throw new ValueError(`GRUCell expects 2 input Tensors (inputs, h, c), got ${inputs.length}.`);let training=kwargs.training==null?!1:kwargs.training,hTMinus1=inputs[1];inputs=inputs[0],0onesLike(inputs),rate:this.dropout,training,count:3})),0onesLike(hTMinus1),rate:this.recurrentDropout,training,count:3}));let dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask,z,r,hh;0{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training,initialState})})}static fromConfig(cls,config){return config.implmentation===0&&(config.implementation=1),new cls(config)}};GRU.className="GRU";serialization_exports.registerClass(GRU);var LSTMCell=class extends RNNCell{constructor(args){super(args);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation===void 0?this.DEFAULT_ACTIVATION:args.activation),this.recurrentActivation=getActivation(args.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:args.recurrentActivation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.unitForgetBias=args.unitForgetBias,this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min2([1,max2([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min2([1,max2([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.implementation=args.implementation,this.stateSize=[this.units,this.units],this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){var _a;inputShape=getExactlyOneShape(inputShape);let inputDim=inputShape[inputShape.length-1];this.kernel=this.addWeight("kernel",[inputDim,this.units*4],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*4],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint);let biasInitializer;if(this.useBias){if(this.unitForgetBias){let capturedBiasInit=this.biasInitializer,capturedUnits=this.units;biasInitializer=new(_a=class extends Initializer{apply(shape,dtype){let bI=capturedBiasInit.apply([capturedUnits]),bF=new Ones().apply([capturedUnits]),bCAndH=capturedBiasInit.apply([capturedUnits*2]);return concatAlongFirstAxis(concatAlongFirstAxis(bI,bF),bCAndH)}},_a.className="CustomInit",_a)}else biasInitializer=this.biasInitializer;this.bias=this.addWeight("bias",[this.units*4],null,biasInitializer,this.biasRegularizer,!0,this.biasConstraint)}else this.bias=null;this.built=!0}call(inputs,kwargs){return tidy(()=>{let training=kwargs.training==null?!1:kwargs.training;if(inputs=inputs,inputs.length!==3)throw new ValueError(`LSTMCell expects 3 input Tensors (inputs, h, c), got ${inputs.length}.`);let hTMinus1=inputs[1],cTMinus1=inputs[2];inputs=inputs[0],0onesLike(inputs),rate:this.dropout,training,count:4})),0onesLike(hTMinus1),rate:this.recurrentDropout,training,count:4}));let dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask,i,f,c,o;0{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training,initialState})})}static fromConfig(cls,config){return config.implmentation===0&&(config.implementation=1),new cls(config)}};LSTM.className="LSTM";serialization_exports.registerClass(LSTM);var StackedRNNCells=class extends RNNCell{constructor(args){super(args);this.cells=args.cells}get stateSize(){let stateSize=[];for(let cell of this.cells.slice().reverse())Array.isArray(cell.stateSize)?stateSize.push(...cell.stateSize):stateSize.push(cell.stateSize);return stateSize}call(inputs,kwargs){return tidy(()=>{inputs=inputs;let states=inputs.slice(1),nestedStates=[];for(let cell of this.cells.slice().reverse())Array.isArray(cell.stateSize)?nestedStates.push(states.splice(0,cell.stateSize.length)):nestedStates.push(states.splice(0,1));nestedStates.reverse();let newNestedStates=[],callInputs;for(let i=0;i{nameScope(`RNNCell_${i}`,()=>{cell.build(inputShape),Array.isArray(cell.stateSize)?outputDim=cell.stateSize[0]:outputDim=cell.stateSize,inputShape=[inputShape[0],outputDim]})}),this.built=!0}getConfig(){let baseConfig=super.getConfig(),getCellConfig=cell=>({className:cell.getClassName(),config:cell.getConfig()}),config={cells:this.cells.map(getCellConfig)};return Object.assign({},baseConfig,config)}static fromConfig(cls,config,customObjects={}){let cells=[];for(let cellConfig of config.cells)cells.push(deserialize(cellConfig,customObjects));return new cls({cells})}get trainableWeights(){if(!this.trainable)return[];let weights=[];for(let cell of this.cells)weights.push(...cell.trainableWeights);return weights}get nonTrainableWeights(){let weights=[];for(let cell of this.cells)weights.push(...cell.nonTrainableWeights);if(!this.trainable){let trainableWeights=[];for(let cell of this.cells)trainableWeights.push(...cell.trainableWeights);return trainableWeights.concat(weights)}return weights}getWeights(){let weights=[];for(let cell of this.cells)weights.push(...cell.weights);return batchGetValue(weights)}setWeights(weights){let tuples=[];for(let cell of this.cells){let numParams=cell.weights.length,inputWeights=weights.splice(numParams);for(let i=0;idropout2(ones4(),rate),createMask=()=>inTrainPhase(droppedInputs,ones4,training);return!count2||count2<=1?keep(createMask().clone()):Array(count2).fill(void 0).map(createMask).map(m=>keep(m.clone()))}var __rest=function(s,e){var t={};for(var p2 in s)Object.prototype.hasOwnProperty.call(s,p2)&&e.indexOf(p2)<0&&(t[p2]=s[p2]);if(s!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,p2=Object.getOwnPropertySymbols(s);i{if(this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null),kwargs&&kwargs.constants)throw new ValueError("ConvRNN2D cell does not support constants");let mask=kwargs==null?null:kwargs.mask,training=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training,initialState})})}computeOutputShape(inputShape){let outShape=this.computeSingleOutputShape(inputShape);return this.returnSequences||(outShape=[outShape[0],...outShape.slice(2)]),this.returnState&&(outShape=[outShape,...Array(2).fill([inputShape[0],...outShape.slice(-3)])]),outShape}getInitialState(inputs){return tidy(()=>{let{stateSize}=this.cell,inputShape=inputs.shape,outputShape=this.computeSingleOutputShape(inputShape),stateShape=[outputShape[0],...outputShape.slice(2)],initialState=zeros(stateShape);return Array.isArray(stateSize)?Array(stateSize.length).fill(initialState):[initialState]})}resetStates(states,training=!1){tidy(()=>{if(!this.stateful)throw new AttributeError("Cannot call resetStates() on an RNN Layer that is not stateful.");let inputShape=this.inputSpec[0].shape,outputShape=this.computeSingleOutputShape(inputShape),stateShape=[outputShape[0],...outputShape.slice(2)];if(inputShape[0]==null)throw new ValueError("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.getStates()==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>zeros(stateShape)):this.states_=[zeros(stateShape)];else if(states==null)dispose(this.states_),this.keptStates!=null&&(dispose(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>zeros(stateShape)):this.states_[0]=zeros(stateShape);else{if(Array.isArray(states)||(states=[states]),states.length!==this.states_.length)throw new ValueError(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${states.length} state value(s). Input received: ${states}`);training?this.keptStates.push(this.states_.slice()):dispose(this.states_);for(let index=0;indexkeep(state.clone()))})}computeSingleOutputShape(inputShape){let{dataFormat,filters,kernelSize,padding,strides,dilationRate}=this.cell,isChannelsFirst=dataFormat==="channelsFirst",h=inputShape[isChannelsFirst?3:2],w=inputShape[isChannelsFirst?4:3],hOut=convOutputLength(h,kernelSize[0],padding,strides[0],dilationRate[0]),wOut=convOutputLength(w,kernelSize[1],padding,strides[1],dilationRate[1]);return[...inputShape.slice(0,2),...isChannelsFirst?[filters,hOut,wOut]:[hOut,wOut,filters]]}};ConvRNN2D.className="ConvRNN2D";var ConvLSTM2DCell=class extends LSTMCell{constructor(args){let{filters,kernelSize,strides,padding,dataFormat,dilationRate}=args;super(Object.assign({},args,{units:filters}));this.filters=filters,assertPositiveInteger(this.filters,"filters"),this.kernelSize=normalizeArray(kernelSize,2,"kernelSize"),this.kernelSize.forEach(size=>assertPositiveInteger(size,"kernelSize")),this.strides=normalizeArray(strides||1,2,"strides"),this.strides.forEach(stride=>assertPositiveInteger(stride,"strides")),this.padding=padding||"valid",checkPaddingMode(this.padding),this.dataFormat=dataFormat||"channelsLast",checkDataFormat(this.dataFormat),this.dilationRate=normalizeArray(dilationRate||1,2,"dilationRate"),this.dilationRate.forEach(rate=>assertPositiveInteger(rate,"dilationRate"))}build(inputShape){var _a;inputShape=getExactlyOneShape(inputShape);let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError(`The channel dimension of the input should be defined. Found ${inputShape[channelAxis]}`);let inputDim=inputShape[channelAxis],numOfKernels=4,kernelShape=this.kernelSize.concat([inputDim,this.filters*numOfKernels]);this.kernel=this.addWeight("kernel",kernelShape,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint);let recurrentKernelShape=this.kernelSize.concat([this.filters,this.filters*numOfKernels]);if(this.recurrentKernel=this.addWeight("recurrent_kernel",recurrentKernelShape,null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias){let biasInitializer;if(this.unitForgetBias){let init2=this.biasInitializer,filters=this.filters;biasInitializer=new(_a=class extends Initializer{apply(shape,dtype){let biasI=init2.apply([filters]),biasF=ones2([filters]),biasCAndO=init2.apply([filters*2]);return concatenate([biasI,biasF,biasCAndO])}},_a.className="CustomInit",_a)}else biasInitializer=this.biasInitializer;this.bias=this.addWeight("bias",[this.filters*numOfKernels],null,biasInitializer,this.biasRegularizer,!0,this.biasConstraint)}this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs.length!==3)throw new ValueError(`ConvLSTM2DCell expects 3 input Tensors (inputs, h, c), got ${inputs.length}.`);let training=kwargs.training||!1,x=inputs[0],hTMinus1=inputs[1],cTMinus1=inputs[2],numOfKernels=4;0onesLike(x),rate:this.dropout,training,count:numOfKernels}));let dropoutMask=this.dropoutMask,applyDropout=(x2,mask,index)=>!mask||!mask[index]?x2:mul(mask[index],x2),xI=applyDropout(x,dropoutMask,0),xF=applyDropout(x,dropoutMask,1),xC=applyDropout(x,dropoutMask,2),xO=applyDropout(x,dropoutMask,3);0onesLike(hTMinus1),rate:this.recurrentDropout,training,count:numOfKernels}));let recDropoutMask=this.recurrentDropoutMask,hI=applyDropout(hTMinus1,recDropoutMask,0),hF=applyDropout(hTMinus1,recDropoutMask,1),hC=applyDropout(hTMinus1,recDropoutMask,2),hO=applyDropout(hTMinus1,recDropoutMask,3),kernelChannelAxis=3,[kernelI,kernelF,kernelC,kernelO]=split(this.kernel.read(),numOfKernels,kernelChannelAxis),[biasI,biasF,biasC,biasO]=this.useBias?split(this.bias.read(),numOfKernels):[null,null,null,null];xI=this.inputConv(xI,kernelI,biasI,this.padding),xF=this.inputConv(xF,kernelF,biasF,this.padding),xC=this.inputConv(xC,kernelC,biasC,this.padding),xO=this.inputConv(xO,kernelO,biasO,this.padding);let[recKernelI,recKernelF,recKernelC,recKernelO]=split(this.recurrentKernel.read(),numOfKernels,kernelChannelAxis);hI=this.recurrentConv(hI,recKernelI),hF=this.recurrentConv(hF,recKernelF),hC=this.recurrentConv(hC,recKernelC),hO=this.recurrentConv(hO,recKernelO);let i=this.recurrentActivation.apply(add2(xI,hI)),f=this.recurrentActivation.apply(add2(xF,hF)),c=add2(mul(f,cTMinus1),mul(i,this.activation.apply(add2(xC,hC)))),h=mul(this.recurrentActivation.apply(add2(xO,hO)),this.activation.apply(c));return[h,h,c]})}getConfig(){let _a=super.getConfig(),{units:_}=_a,baseConfig=__rest(_a,["units"]),config={filters:this.filters,kernelSize:this.kernelSize,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,strides:this.strides};return Object.assign({},baseConfig,config)}inputConv(x,w,b,padding){let out=conv2d(x,w,this.strides,padding||"valid",this.dataFormat==="channelsFirst"?"NCHW":"NHWC",this.dilationRate);return b?biasAdd(out,b,this.dataFormat):out}recurrentConv(x,w){return conv2d(x,w,1,"same",this.dataFormat==="channelsFirst"?"NCHW":"NHWC")}};ConvLSTM2DCell.className="ConvLSTM2DCell";serialization_exports.registerClass(ConvLSTM2DCell);var ConvLSTM2D=class extends ConvRNN2D{constructor(args){let cell=new ConvLSTM2DCell(args);super(Object.assign({},args,{cell}))}static fromConfig(cls,config){return new cls(config)}};ConvLSTM2D.className="ConvLSTM2D";serialization_exports.registerClass(ConvLSTM2D);var Dropout=class extends Layer{constructor(args){super(args);this.rate=Math.max(Math.min(args.rate,1),0),this.noiseShape=args.noiseShape,this.seed=args.seed,this.supportsMasking=!0}getNoiseShape(input2){if(this.noiseShape==null)return this.noiseShape;let inputShape=input2.shape,noiseShape=[];for(let i=0;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(0dropout2(input2,this.rate,noiseShape,this.seed),()=>input2,training)}return inputs})}getConfig(){let config={rate:this.rate,noiseShape:this.noiseShape,seed:this.seed},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}dispose(){return super.dispose()}};Dropout.className="Dropout";serialization_exports.registerClass(Dropout);var SpatialDropout1D=class extends Dropout{constructor(args){super(args);this.inputSpec=[{ndim:3}]}getNoiseShape(input2){let inputShape=input2.shape;return[inputShape[0],1,inputShape[2]]}};SpatialDropout1D.className="SpatialDropout1D";serialization_exports.registerClass(SpatialDropout1D);var Dense=class extends Layer{constructor(args){super(args);if(this.activation=null,this.useBias=!0,this.kernel=null,this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",args.batchInputShape==null&&args.inputShape==null&&args.inputDim!=null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),this.batchInputShape=[batchSize,args.inputDim]}this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation),args.useBias!=null&&(this.useBias=args.useBias),this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelConstraint=getConstraint(args.kernelConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.supportsMasking=!0,this.inputSpec=[{minNDim:2}]}build(inputShape){inputShape=getExactlyOneShape(inputShape);let inputLastDim=inputShape[inputShape.length-1];this.kernel==null&&(this.kernel=this.addWeight("kernel",[inputLastDim,this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint))),this.inputSpec=[{minNDim:2,axes:{[-1]:inputLastDim}}],this.built=!0}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice();return outputShape[outputShape.length-1]=this.units,outputShape}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),fusedActivationName=mapActivationToFusedKernel(this.activation.getClassName()),output;return fusedActivationName!=null?output=dot2(input2,this.kernel.read(),fusedActivationName,this.bias?this.bias.read():null):(output=dot2(input2,this.kernel.read()),this.bias!=null&&(output=biasAdd(output,this.bias.read())),this.activation!=null&&(output=this.activation.apply(output))),output})}getConfig(){let config={units:this.units,activation:serializeActivation(this.activation),useBias:this.useBias,kernelInitializer:serializeInitializer(this.kernelInitializer),biasInitializer:serializeInitializer(this.biasInitializer),kernelRegularizer:serializeRegularizer(this.kernelRegularizer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),kernelConstraint:serializeConstraint(this.kernelConstraint),biasConstraint:serializeConstraint(this.biasConstraint)},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Dense.className="Dense";serialization_exports.registerClass(Dense);var Flatten=class extends Layer{constructor(args){args=args||{},super(args),this.inputSpec=[{minNDim:3}],this.dataFormat=args.dataFormat}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);for(let dim of inputShape.slice(1))if(dim==null)throw new ValueError(`The shape of the input to "Flatten" is not fully defined (got ${inputShape.slice(1)}). Make sure to pass a complete "input_shape" or "batch_input_shape" argument to the first layer in your model.`);return[inputShape[0],arrayProd(inputShape,1)]}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(this.dataFormat==="channelsFirst"&&input2.rank>1){let permutation=[0];for(let i=2;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);return this.activation.apply(input2)})}getConfig(){let config={activation:serializeActivation(this.activation)},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Activation2.className="Activation";serialization_exports.registerClass(Activation2);var RepeatVector=class extends Layer{constructor(args){super(args);this.n=args.n,this.inputSpec=[{ndim:2}]}computeOutputShape(inputShape){return[inputShape[0],this.n,inputShape[1]]}call(inputs,kwargs){return tidy(()=>(inputs=getExactlyOneTensor(inputs),repeat(inputs,this.n)))}getConfig(){let config={n:this.n},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};RepeatVector.className="RepeatVector";serialization_exports.registerClass(RepeatVector);var Reshape2=class extends Layer{constructor(args){super(args);this.targetShape=args.targetShape;for(let i=0;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),inputShape=input2.shape,outputShape=inputShape.slice(0,1).concat(this.fixUnknownDimension(inputShape.slice(1),this.targetShape));return input2.reshape(outputShape)})}getConfig(){let config={targetShape:this.targetShape},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Reshape2.className="Reshape";serialization_exports.registerClass(Reshape2);var Permute=class extends Layer{constructor(args){super(args);if(args.dims==null)throw new Error("Required configuration field `dims` is missing during Permute constructor call.");if(!Array.isArray(args.dims))throw new Error(`Permute constructor requires \`dims\` to be an Array, but received ${args.dims} instead.`);let expectedSortedIndices=range2(1,args.dims.length+1);if(!util_exports.arraysEqual(args.dims.slice().sort(),expectedSortedIndices))throw new Error("Invalid permutation `dims`: "+JSON.stringify(args.dims)+" `dims` must contain consecutive integers starting from 1.");this.dims=args.dims,this.dimsIncludingBatch=[0].concat(this.dims),this.inputSpec=[new InputSpec({ndim:this.dims.length+1})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice();return this.dims.forEach((dim,i)=>{outputShape[i+1]=inputShape[dim]}),outputShape}call(inputs,kwargs){return transpose(getExactlyOneTensor(inputs),this.dimsIncludingBatch)}getConfig(){let config={dims:this.dims},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Permute.className="Permute";serialization_exports.registerClass(Permute);var Masking=class extends Layer{constructor(args){super(args==null?{}:args);this.supportsMasking=!0,args!=null?this.maskValue=args.maskValue==null?0:args.maskValue:this.maskValue=0}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config={maskValue:this.maskValue};return Object.assign(config,baseConfig),config}computeMask(inputs,mask){let input2=getExactlyOneTensor(inputs),axis=-1;return any(notEqual(input2,this.maskValue),axis)}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),axis=-1,keepDims=!0,booleanMask=any(notEqual(input2,this.maskValue),axis,keepDims);return input2.mul(booleanMask.asType(input2.dtype))})}};Masking.className="Masking";serialization_exports.registerClass(Masking);var Embedding=class extends Layer{constructor(args){super(args);if(this.embeddings=null,this.DEFAULT_EMBEDDINGS_INITIALIZER="randomUniform",args.batchInputShape==null&&args.inputShape==null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),args.inputLength==null?this.batchInputShape=[batchSize,null]:this.batchInputShape=[batchSize].concat(toList(args.inputLength))}this.inputDim=args.inputDim,assertPositiveInteger(this.inputDim,"inputDim"),this.outputDim=args.outputDim,assertPositiveInteger(this.outputDim,"outputDim"),this.embeddingsInitializer=getInitializer(args.embeddingsInitializer||this.DEFAULT_EMBEDDINGS_INITIALIZER),this.embeddingsRegularizer=getRegularizer(args.embeddingsRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.embeddingsConstraint=getConstraint(args.embeddingsConstraint),this.maskZero=args.maskZero,this.supportsMasking=args.maskZero,this.inputLength=args.inputLength}build(inputShape){this.embeddings=this.addWeight("embeddings",[this.inputDim,this.outputDim],this.dtype,this.embeddingsInitializer,this.embeddingsRegularizer,!0,this.embeddingsConstraint),this.built=!0}warnOnIncompatibleInputShape(inputShape){}computeMask(inputs,mask){return tidy(()=>this.maskZero?(inputs=getExactlyOneTensor(inputs),notEqual(inputs,zerosLike(inputs))):null)}computeOutputShape(inputShape){if(inputShape=getExactlyOneShape(inputShape),this.inputLength==null)return[...inputShape,this.outputDim];let inLens=toList(this.inputLength);if(inLens.length!==inputShape.length-1)throw new ValueError(`"inputLength" is ${this.inputLength}, but received input shape has shape ${inputShape}`);{let i=0;for(let k=0;k{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);return input2.dtype!=="int32"&&(input2=cast2(input2,"int32")),gather2(this.embeddings.read(),input2.as1D()).reshape(getExactlyOneShape(this.computeOutputShape(input2.shape)))})}getConfig(){let config={inputDim:this.inputDim,outputDim:this.outputDim,embeddingsInitializer:serializeInitializer(this.embeddingsInitializer),embeddingsRegularizer:serializeRegularizer(this.embeddingsRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),embeddingsConstraint:serializeConstraint(this.embeddingsConstraint),maskZero:this.maskZero,inputLength:this.inputLength},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Embedding.className="Embedding";serialization_exports.registerClass(Embedding);var Merge=class extends Layer{constructor(args){super(args||{});this.supportsMasking=!0}mergeFunction(inputs){throw new NotImplementedError}computeElementwiseOpOutputShape(shape1,shape2){if(shape1==null||shape2==null)return null;if(shape1.length1)throw new ValueError(`Can not merge tensors with different batch sizes. Got tensors with shapes: ${JSON.stringify(inputShape)}.`);let outputShape=inputShape[0]==null?null:inputShape[0].slice(1);for(let i=1;ishape.length);inputShape.indexOf(null)===-1&&unique2(allRanks).length===1?this.reshapeRequired=!1:this.reshapeRequired=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,this.reshapeRequired){let reshapedInputs=[],inputDims=inputs.map(input2=>input2.rank);if(inputDims.indexOf(null)===-1){let maxNDim=max2(inputDims);for(let x of inputs){let xNDim=x.rank;for(let k=0;k1){let dims=range2(1,xNDim).concat([0]);reshapedInputs.push(transpose(x,dims)),transposed=!0}else reshapedInputs.push(x)}let y=this.mergeFunction(reshapedInputs),yNDim=y.rank;if(transposed){if(yNDim==null){let yShape=y.shape,yNDim2=yShape.length,batchSize=yShape[yNDim2-1],newShape=[batchSize].concat(yShape.slice(0,yShape.length-1));y=transpose(y.reshape([-1,batchSize]),[1,0]).reshape(newShape)}else if(yNDim>1){let dims=[yNDim-1].concat(range2(0,yNDim-1));y=transpose(y,dims)}}return y}}else return this.mergeFunction(inputs)})}computeOutputShape(inputShape){inputShape=inputShape;let outputShape;inputShape[0]==null?outputShape=null:outputShape=inputShape[0].slice(1);for(let i=1;i{if(mask==null)return null;if(!Array.isArray(mask))throw new ValueError("`mask` should be an Array");if(!Array.isArray(inputs))throw new ValueError("`inputs` should be an Array");if(mask.length!==inputs.length)throw new ValueError(`The Array 'inputs' and 'mask' are expected to have the same length, but have different lengths (${inputs.length} vs ${mask.length})`);if(mask.every(m=>m==null))return null;mask=mask.map(m=>m==null?m:expandDims(m,0));let output=mask[0];for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0];for(let i=1;i{let output=inputs[0];for(let i=1;i1)throw new ValueError("A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got input shapes: "+JSON.stringify(inputShape))}mergeFunction(inputs){return tidy(()=>concatenate(inputs,this.axis))}computeOutputShape(inputShape){if(!(Array.isArray(inputShape)&&Array.isArray(inputShape[0])))throw new ValueError("A `Concatenate` layer should be called on a list of inputs.");let inputShapes=inputShape,outputShape=inputShapes[0].slice(),axis=this.axis<0?outputShape.length+this.axis:this.axis;for(let shape of inputShapes.slice(1)){if(outputShape[axis]==null||shape[axis]==null){outputShape[axis]=null;break}outputShape[axis]+=shape[axis]}return outputShape}computeMask(inputs,mask){if(mask==null)return null;if(!Array.isArray(mask))throw new ValueError("`mask` should be an array for Concatenate");if(!Array.isArray(inputs))throw new ValueError("`inputs` should be an array for Concatenate");if(mask.length!==inputs.length)throw new ValueError(`Mismatch in the length of mask (${mask.length}) and the legnth of inputs (${inputs.length})`);return tidy(()=>{let allNullMasks=!0;if(mask.forEach(m=>{if(m!=null){allNullMasks=!1;return}}),allNullMasks)return null;let outputMasks=[];for(let i=0;i3||y.shape.length>3)throw new NotImplementedError("batchDot is not implemented for tensors of 4D or higher rank yet");if(util_exports.assert(x.shape.length>=2,()=>`batchDot requires the rank of x to be >= 2, but got ${x.shape.length}`),util_exports.assert(x.shape.length>=2,()=>`batchDot requires the rank of y to be >= 2, but got ${y.shape.length}`),typeof axes=="number"&&(axes=[axes,axes]),x.dtype==="complex64"||y.dtype==="complex64")throw new NotImplementedError("batchDot is not implemented for complex64-type Tensors yet.");let xNDim=x.shape.length,yNDim=y.shape.length;axes==null&&(axes=[xNDim-1,yNDim-2]);let axesArray=axes;return tidy(()=>{let diff;if(xNDim>yNDim){diff=xNDim-yNDim;let diffShape=[];for(let i=0;ixNDim){diff=yNDim-xNDim;let diffShape=[];for(let i=0;i0){let idx;xNDim>yNDim?idx=xNDim+yNDim-3:idx=xNDim-1;let squeezeAxes=[];for(let i=idx;i"A `Dot` layer should be called on a list of exactly 2 inputs.");let shape1=inputShape[0],shape2=inputShape[1];if(shape1.length>3||shape2.length>3)throw new NotImplementedError("Dot layer does not support tensors of 4D or higher rank yet.");let axes=this.interpretAxes(shape1,shape2);if(shape1[axes[0]]!==shape2[axes[1]])throw new ValueError(`Dimension incompatibility: ${shape1[axes[0]]} !== ${shape2[axes[1]]}`)}mergeFunction(inputs){if(inputs.length!==2)throw new ValueError(`A \`Dot\` layer must be called on exactly 2 inputs, but received ${inputs.length} input(s).`);let x1=inputs[0],x2=inputs[1],axes;return Array.isArray(this.axes)?axes=this.axes.map((axis,i)=>interpretAxis(axis,inputs[i].shape.length)):axes=[interpretAxis(this.axes,x1.shape.length),interpretAxis(this.axes,x2.shape.length)],this.normalize&&(x1=l2Normalize(x1,axes[0]),x2=l2Normalize(x2,axes[1])),batchDot(x1,x2,axes)}interpretAxes(shape1,shape2){let axes;return Array.isArray(this.axes)?axes=this.axes:axes=[interpretAxis(this.axes,shape1.length),interpretAxis(this.axes,shape2.length)],axes}computeOutputShape(inputShape){util_exports.assert(Array.isArray(inputShape)&&inputShape.length===2&&Array.isArray(inputShape[0])&&Array.isArray(inputShape[1]),()=>"A `Dot` layer should be called on a list of exactly 2 inputs.");let shape1=inputShape[0].slice(),shape2=inputShape[1].slice();if(shape1.length>3||shape2.length>3)throw new NotImplementedError("Dot layer does not support tensors of 4D or higher rank yet.");let axes=this.interpretAxes(shape1,shape2);shape1.splice(axes[0],1),shape2.splice(axes[1],1),shape2.splice(0,1);let outputShape=shape1.concat(shape2);return outputShape.length===1&&outputShape.push(1),outputShape}computeMask(inputs,mask){return null}getConfig(){let config={axes:this.axes,normalize:this.normalize},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Dot.className="Dot";serialization_exports.registerClass(Dot);var GaussianNoise=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.stddev=args.stddev}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config={stddev:this.stddev};return Object.assign(config,baseConfig),config}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);return inTrainPhase(()=>randomNormal2(input2.shape,0,this.stddev).add(input2),()=>input2,kwargs.training||!1)})}};GaussianNoise.className="GaussianNoise";serialization_exports.registerClass(GaussianNoise);var GaussianDropout=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.rate=args.rate}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config={rate:this.rate};return Object.assign(config,baseConfig),config}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);return this.rate>0&&this.rate<1?inTrainPhase(()=>{let stddev=Math.sqrt(this.rate/(1-this.rate));return input2.mul(randomNormal2(input2.shape,1,stddev))},()=>input2,kwargs.training||!1):input2})}};GaussianDropout.className="GaussianDropout";serialization_exports.registerClass(GaussianDropout);var AlphaDropout=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.rate=args.rate,this.noiseShape=args.noiseShape}_getNoiseShape(inputs){return this.noiseShape||getExactlyOneTensor(inputs).shape}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config={rate:this.rate};return Object.assign(config,baseConfig),config}call(inputs,kwargs){return tidy(()=>{if(this.rate<1&&this.rate>0){let noiseShape=this._getNoiseShape(inputs);return inTrainPhase(()=>{let input2=getExactlyOneTensor(inputs),alpha=1.6732632423543772,scale22=1.0507009873554805,alphaP=-alpha*scale22,keptIdx=greaterEqual(randomUniform(noiseShape),this.rate);keptIdx=cast2(keptIdx,"float32");let a=((1-this.rate)*(1+this.rate*alphaP**2))**-.5,b=-a*alphaP*this.rate;return input2.mul(keptIdx).add(keptIdx.add(-1).mul(alphaP)).mul(a).add(b)},()=>getExactlyOneTensor(inputs),kwargs.training||!1)}return inputs})}};AlphaDropout.className="AlphaDropout";serialization_exports.registerClass(AlphaDropout);function batchNormalization(x,mean4,variance,beta,gamma,epsilon32=.001){let out;if(x.rank===2)out=batchNorm2d(x,mean4,variance,beta,gamma,epsilon32);else if(x.rank===3)out=batchNorm3d(x,mean4,variance,beta,gamma,epsilon32);else if(x.rank===4)out=batchNorm4d(x,mean4,variance,beta,gamma,epsilon32);else throw new NotImplementedError(`batchNormalization is not implemented for array of rank ${x.rank} yet`);return out}function regularNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon32=.001){return tidy(()=>{let meanAndVariance=moments(x,reductionAxes),mean4=meanAndVariance.mean,variance=meanAndVariance.variance;return[batchNormalization(x,mean4,variance,beta,gamma,epsilon32),mean4,variance]})}function broadcastNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon32=.001){return tidy(()=>{let meanAndVariance=moments(x,reductionAxes),mean4=meanAndVariance.mean,variance=meanAndVariance.variance,targetShape=[];for(let axis of range2(0,x.rank))reductionAxes.indexOf(axis)!==-1?targetShape.push(1):targetShape.push(x.shape[axis]);let broadcastMean=mean4.reshape(targetShape),broadcastVariance=variance.reshape(targetShape),broadcastGamma=gamma==null?null:gamma.reshape(targetShape),broadcastBeta=beta==null?null:beta.reshape(targetShape);return[batchNormalization(x,broadcastMean,broadcastVariance,broadcastBeta,broadcastGamma,epsilon32),mean4,variance]})}function normalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon32=.001){return util_exports.arraysEqual(reductionAxes.slice().sort(),range2(0,x.rank-1))?regularNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon32):broadcastNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon32)}var BatchNormalization=class extends Layer{constructor(args){args==null&&(args={}),super(args),this.supportsMasking=!0,this.axis=args.axis==null?-1:args.axis,this.momentum=args.momentum==null?.99:args.momentum,this.epsilon=args.epsilon==null?.001:args.epsilon,this.center=args.center==null?!0:args.center,this.scale=args.scale==null?!0:args.scale,this.betaInitializer=getInitializer(args.betaInitializer||"zeros"),this.gammaInitializer=getInitializer(args.gammaInitializer||"ones"),this.movingMeanInitializer=getInitializer(args.movingMeanInitializer||"zeros"),this.movingVarianceInitializer=getInitializer(args.movingVarianceInitializer||"ones"),this.betaConstraint=getConstraint(args.betaConstraint),this.gammaConstraint=getConstraint(args.gammaConstraint),this.betaRegularizer=getRegularizer(args.betaRegularizer),this.gammaRegularizer=getRegularizer(args.gammaRegularizer)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let axis=this.axis>=0?this.axis:this.axis+inputShape.length,dim=inputShape[axis];if(dim==null)throw new ValueError(`Axis ${axis} of input tensor should have a defined dimension but the layer received an input with shape ${JSON.stringify(inputShape)}.`);this.inputSpec=[new InputSpec({ndim:inputShape.length,axes:{[axis]:dim}})];let shape=[dim];this.scale&&(this.gamma=this.addWeight("gamma",shape,null,this.gammaInitializer,this.gammaRegularizer,!0,this.gammaConstraint)),this.center&&(this.beta=this.addWeight("beta",shape,null,this.betaInitializer,this.betaRegularizer,!0,this.betaConstraint)),this.movingMean=this.addWeight("moving_mean",shape,null,this.movingMeanInitializer,null,!1),this.movingVariance=this.addWeight("moving_variance",shape,null,this.movingVarianceInitializer,null,!1),this.built=!0}call(inputs,kwargs){return tidy(()=>{let training=kwargs.training==null?!1:kwargs.training,input2=getExactlyOneTensor(inputs),inputShape=input2.shape,ndim=inputShape.length,reductionAxes=range2(0,ndim),axis=this.axis>=0?this.axis:this.axis+ndim;reductionAxes.splice(axis,1);let broadcastShape=pyListRepeat(1,ndim);broadcastShape[axis]=inputShape[axis];let sortedReductionAxes=reductionAxes.slice();sortedReductionAxes.sort();let needsBroadcasting=!util_exports.arraysEqual(sortedReductionAxes,range2(0,ndim).slice(0,ndim-1)),normalizeInference=()=>{if(needsBroadcasting){let broadcastMovingMean=this.movingMean.read().reshape(broadcastShape),broadcastMovingVariance=this.movingVariance.read().reshape(broadcastShape),broadcastBeta=this.center?this.beta.read().reshape(broadcastShape):null,broadcastGamma=this.scale?this.gamma.read().reshape(broadcastShape):null;return batchNormalization(input2,broadcastMovingMean,broadcastMovingVariance,broadcastBeta,broadcastGamma,this.epsilon)}else return batchNormalization(input2,this.movingMean.read(),this.movingVariance.read(),this.beta==null?null:this.beta.read(),this.gamma==null?null:this.gamma.read(),this.epsilon)};if(!training)return normalizeInference();let[normedTraining,mean4,variance]=normalizeBatchInTraining(input2,this.gamma.read(),this.beta.read(),reductionAxes,this.epsilon),doMovingAverage=(variable2,value,momentum)=>{tidy(()=>{let decay=1-momentum,origValue=variable2.read(),updateDelta=origValue.sub(value).mul(decay);variable2.write(origValue.sub(updateDelta))})};return(()=>{doMovingAverage(this.movingMean,mean4,this.momentum),doMovingAverage(this.movingVariance,variance,this.momentum)})(),normedTraining})}getConfig(){let config={axis:this.axis,momentum:this.momentum,epsilon:this.epsilon,center:this.center,scale:this.scale,betaInitializer:serializeInitializer(this.betaInitializer),gammaInitializer:serializeInitializer(this.gammaInitializer),movingMeanInitializer:serializeInitializer(this.movingMeanInitializer),movingVarianceInitializer:serializeInitializer(this.movingVarianceInitializer),betaRegularizer:serializeRegularizer(this.betaRegularizer),gammaRegularizer:serializeRegularizer(this.gammaRegularizer),betaConstraint:serializeConstraint(this.betaConstraint),gammaConstraint:serializeConstraint(this.gammaConstraint)},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};BatchNormalization.className="BatchNormalization";serialization_exports.registerClass(BatchNormalization);var LayerNormalization=class extends Layer{constructor(args){if(args==null&&(args={}),super(args),this.axis=args.axis==null?-1:args.axis,typeof this.axis=="number"){if(!Number.isInteger(this.axis))throw new Error(`Expected axis to be an integer, but received ${this.axis}`)}else if(Array.isArray(this.axis)){for(let axis of this.axis)if(!Number.isInteger(axis))throw new Error(`Expected axis to be an array of integers, but received ${JSON.stringify(this.axis)}`)}else throw new Error(`Expected axis to be an integer or an array of integers, but received ${JSON.stringify(this.axis)}`);this.epsilon=args.epsilon==null?.001:args.epsilon,this.center=args.center==null?!0:args.center,this.scale=args.scale==null?!0:args.scale,this.betaInitializer=getInitializer(args.betaInitializer||"zeros"),this.gammaInitializer=getInitializer(args.gammaInitializer||"ones"),this.betaRegularizer=getRegularizer(args.betaRegularizer),this.gammaRegularizer=getRegularizer(args.gammaRegularizer),this.supportsMasking=!0}build(inputShape){inputShape=getExactlyOneShape(inputShape);let nDims=inputShape.length;typeof this.axis=="number"&&(this.axis=[this.axis]);for(let i=0;i=nDims)throw new Error(`Invalid axis: ${axis}`);if(this.axis.length!==unique2(this.axis).length)throw new Error(`Found duplicate axes in: ${this.axis}`);let paramShape=this.axis.map(axis=>inputShape[axis]),trainable=!0;this.scale?this.gamma=this.addWeight("gamma",paramShape,"float32",this.gammaInitializer,this.gammaRegularizer,trainable):this.gamma=null,this.center?this.beta=this.addWeight("beta",paramShape,"float32",this.betaInitializer,this.betaRegularizer,trainable):this.beta=null,this.built=!0}call(inputs,kwargs){let input2=getExactlyOneTensor(inputs),inputShape=input2.shape,nDims=inputShape.length;return tidy(()=>{let keepDims=!0,{mean:mean4,variance}=moments(input2,this.axis,keepDims),broadcastShape=pyListRepeat(1,nDims);for(let dim of this.axis)broadcastShape[dim]=inputShape[dim];let broadcast=v=>v!=null&&v.shape.length!==nDims&&this.axis!==[nDims-1]?v.reshape(broadcastShape):v,scale22=broadcast(this.gamma.read()),offset=broadcast(this.beta.read()),momentsTiling=[],scaleOffsetTiling=[];for(let i=0;i{if(x.rank!==4)throw new ValueError(`temporalPadding expects input tensor to be 4-D, but received a ${x.rank}-D tensor.`);if(padding==null&&(padding=[[1,1],[1,1]]),padding.length!==2||padding[0].length!==2||padding[1].length!==2)throw new ValueError("spatial2dPadding expects `padding` to be an Array of two Arrays, each of which is an Array of two integers.");if(dataFormat==null&&(dataFormat=imageDataFormat()),dataFormat!=="channelsLast"&&dataFormat!=="channelsFirst")throw new ValueError(`Unknown data format: ${dataFormat}. Supported data formats are 'channelsLast' and 'channelsFirst.`);let pattern;return dataFormat==="channelsFirst"?pattern=[[0,0],[0,0],padding[0],padding[1]]:pattern=[[0,0],padding[0],padding[1],[0,0]],pad(x,pattern)})}var ZeroPadding2D=class extends Layer{constructor(args){if(args==null&&(args={}),super(args),this.dataFormat=args.dataFormat==null?imageDataFormat():args.dataFormat,args.padding==null)this.padding=[[1,1],[1,1]];else if(typeof args.padding=="number")this.padding=[[args.padding,args.padding],[args.padding,args.padding]];else{if(args.padding=args.padding,args.padding.length!==2)throw new ValueError(`ZeroPadding2D expects padding to be a length-2 array, but received a length-${args.padding.length} array.`);let heightPadding,widthPadding;if(typeof args.padding[0]=="number")heightPadding=[args.padding[0],args.padding[0]],widthPadding=[args.padding[1],args.padding[1]];else{if(args.padding=args.padding,args.padding[0].length!==2)throw new ValueError(`ZeroPadding2D expects height padding to be a length-2 array, but received a length-${args.padding[0].length} array.`);if(heightPadding=args.padding[0],args.padding[1].length!==2)throw new ValueError(`ZeroPadding2D expects width padding to be a length-2 array, but received a length-${args.padding[1].length} array.`);widthPadding=args.padding[1]}this.padding=[heightPadding,widthPadding]}this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows,cols;return this.dataFormat==="channelsFirst"?(inputShape[2]!=null&&inputShape[2]>=0?rows=inputShape[2]+this.padding[0][0]+this.padding[0][1]:rows=null,inputShape[3]!=null&&inputShape[3]>=0?cols=inputShape[3]+this.padding[1][0]+this.padding[1][1]:cols=null,[inputShape[0],inputShape[1],rows,cols]):(inputShape[1]!=null&&inputShape[1]>=0?rows=inputShape[1]+this.padding[0][0]+this.padding[0][1]:rows=null,inputShape[2]!=null&&inputShape[2]>=0?cols=inputShape[2]+this.padding[1][0]+this.padding[1][1]:cols=null,[inputShape[0],rows,cols,inputShape[3]])}call(inputs,kwargs){return tidy(()=>spatial2dPadding(getExactlyOneTensor(inputs),this.padding,this.dataFormat))}getConfig(){let config={padding:this.padding,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};ZeroPadding2D.className="ZeroPadding2D";serialization_exports.registerClass(ZeroPadding2D);function pool2d(x,poolSize,strides,padding,dataFormat,poolMode){return tidy(()=>{checkDataFormat(dataFormat),checkPoolMode(poolMode),checkPaddingMode(padding),strides==null&&(strides=[1,1]),padding==null&&(padding="valid"),dataFormat==null&&(dataFormat=imageDataFormat()),poolMode==null&&(poolMode="max"),x=preprocessConv2DInput(x,dataFormat);let y,paddingString=padding==="same"?"same":"valid";return poolMode==="max"?y=maxPool(x,poolSize,strides,paddingString):y=avgPool(x,poolSize,strides,paddingString),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}function pool3d(x,poolSize,strides,padding,dataFormat,poolMode){return tidy(()=>{checkDataFormat(dataFormat),checkPoolMode(poolMode),checkPaddingMode(padding),strides==null&&(strides=[1,1,1]),padding==null&&(padding="valid"),dataFormat==null&&(dataFormat=imageDataFormat()),poolMode==null&&(poolMode="max"),x=preprocessConv3DInput(x,dataFormat);let y,paddingString=padding==="same"?"same":"valid";return poolMode==="max"?y=maxPool3d(x,poolSize,strides,paddingString):y=avgPool3d(x,poolSize,strides,paddingString),dataFormat==="channelsFirst"&&(y=transpose(y,[0,4,1,2,3])),y})}var Pooling1D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=2),super(args),typeof args.poolSize=="number")this.poolSize=[args.poolSize];else if(Array.isArray(args.poolSize)&&args.poolSize.length===1&&typeof args.poolSize[0]=="number")this.poolSize=args.poolSize;else throw new ValueError(`poolSize for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(args.poolSize)}`);if(assertPositiveInteger(this.poolSize,"poolSize"),args.strides==null)this.strides=this.poolSize;else if(typeof args.strides=="number")this.strides=[args.strides];else if(Array.isArray(args.strides)&&args.strides.length===1&&typeof args.strides[0]=="number")this.strides=args.strides;else throw new ValueError(`strides for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(args.strides)}`);assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:3})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let length=convOutputLength(inputShape[1],this.poolSize[0],this.padding,this.strides[0]);return[inputShape[0],length,inputShape[2]]}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs),inputs=expandDims2(getExactlyOneTensor(inputs),2);let output=this.poolingFunction(getExactlyOneTensor(inputs),[this.poolSize[0],1],[this.strides[0],1],this.padding,"channelsLast");return squeeze(output,[2])})}getConfig(){let config={poolSize:this.poolSize,padding:this.padding,strides:this.strides},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},MaxPooling1D=class extends Pooling1D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding),pool2d(inputs,poolSize,strides,padding,dataFormat,"max")}};MaxPooling1D.className="MaxPooling1D";serialization_exports.registerClass(MaxPooling1D);var AveragePooling1D=class extends Pooling1D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding),pool2d(inputs,poolSize,strides,padding,dataFormat,"avg")}};AveragePooling1D.className="AveragePooling1D";serialization_exports.registerClass(AveragePooling1D);var Pooling2D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=[2,2]),super(args),this.poolSize=Array.isArray(args.poolSize)?args.poolSize:[args.poolSize,args.poolSize],args.strides==null)this.strides=this.poolSize;else if(Array.isArray(args.strides)){if(args.strides.length!==2)throw new ValueError(`If the strides property of a 2D pooling layer is an Array, it is expected to have a length of 2, but received length ${args.strides.length}.`);this.strides=args.strides}else this.strides=[args.strides,args.strides];assertPositiveInteger(this.poolSize,"poolSize"),assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],cols=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2];return rows=convOutputLength(rows,this.poolSize[0],this.padding,this.strides[0]),cols=convOutputLength(cols,this.poolSize[1],this.padding,this.strides[1]),this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],rows,cols]:[inputShape[0],rows,cols,inputShape[3]]}call(inputs,kwargs){return tidy(()=>(this.invokeCallHook(inputs,kwargs),this.poolingFunction(getExactlyOneTensor(inputs),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let config={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},MaxPooling2D=class extends Pooling2D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding),pool2d(inputs,poolSize,strides,padding,dataFormat,"max")}};MaxPooling2D.className="MaxPooling2D";serialization_exports.registerClass(MaxPooling2D);var AveragePooling2D=class extends Pooling2D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding),pool2d(inputs,poolSize,strides,padding,dataFormat,"avg")}};AveragePooling2D.className="AveragePooling2D";serialization_exports.registerClass(AveragePooling2D);var Pooling3D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=[2,2,2]),super(args),this.poolSize=Array.isArray(args.poolSize)?args.poolSize:[args.poolSize,args.poolSize,args.poolSize],args.strides==null)this.strides=this.poolSize;else if(Array.isArray(args.strides)){if(args.strides.length!==3)throw new ValueError(`If the strides property of a 3D pooling layer is an Array, it is expected to have a length of 3, but received length ${args.strides.length}.`);this.strides=args.strides}else this.strides=[args.strides,args.strides,args.strides];assertPositiveInteger(this.poolSize,"poolSize"),assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:5})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let depths=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],rows=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2],cols=this.dataFormat==="channelsFirst"?inputShape[4]:inputShape[3];return depths=convOutputLength(depths,this.poolSize[0],this.padding,this.strides[0]),rows=convOutputLength(rows,this.poolSize[1],this.padding,this.strides[1]),cols=convOutputLength(cols,this.poolSize[2],this.padding,this.strides[2]),this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],depths,rows,cols]:[inputShape[0],depths,rows,cols,inputShape[4]]}call(inputs,kwargs){return tidy(()=>(this.invokeCallHook(inputs,kwargs),this.poolingFunction(getExactlyOneTensor(inputs),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let config={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},MaxPooling3D=class extends Pooling3D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding),pool3d(inputs,poolSize,strides,padding,dataFormat,"max")}};MaxPooling3D.className="MaxPooling3D";serialization_exports.registerClass(MaxPooling3D);var AveragePooling3D=class extends Pooling3D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding),pool3d(inputs,poolSize,strides,padding,dataFormat,"avg")}};AveragePooling3D.className="AveragePooling3D";serialization_exports.registerClass(AveragePooling3D);var GlobalPooling1D=class extends Layer{constructor(args){super(args);this.inputSpec=[new InputSpec({ndim:3})]}computeOutputShape(inputShape){return[inputShape[0],inputShape[2]]}call(inputs,kwargs){throw new NotImplementedError}},GlobalAveragePooling1D=class extends GlobalPooling1D{constructor(args){super(args||{})}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return mean(input2,1)})}};GlobalAveragePooling1D.className="GlobalAveragePooling1D";serialization_exports.registerClass(GlobalAveragePooling1D);var GlobalMaxPooling1D=class extends GlobalPooling1D{constructor(args){super(args||{})}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return max(input2,1)})}};GlobalMaxPooling1D.className="GlobalMaxPooling1D";serialization_exports.registerClass(GlobalMaxPooling1D);var GlobalPooling2D=class extends Layer{constructor(args){super(args);this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){return inputShape=inputShape,this.dataFormat==="channelsLast"?[inputShape[0],inputShape[3]]:[inputShape[0],inputShape[1]]}call(inputs,kwargs){throw new NotImplementedError}getConfig(){let config={dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},GlobalAveragePooling2D=class extends GlobalPooling2D{call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return this.dataFormat==="channelsLast"?mean(input2,[1,2]):mean(input2,[2,3])})}};GlobalAveragePooling2D.className="GlobalAveragePooling2D";serialization_exports.registerClass(GlobalAveragePooling2D);var GlobalMaxPooling2D=class extends GlobalPooling2D{call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return this.dataFormat==="channelsLast"?max(input2,[1,2]):max(input2,[2,3])})}};GlobalMaxPooling2D.className="GlobalMaxPooling2D";serialization_exports.registerClass(GlobalMaxPooling2D);var Wrapper=class extends Layer{constructor(args){super(args);this.layer=args.layer}build(inputShape){this.built=!0}get trainable(){return this.layer!=null?this.layer.trainable:!1}set trainable(value){this.layer!=null&&(this.layer.trainable=value)}get trainableWeights(){return this.layer.trainableWeights}get nonTrainableWeights(){return this.layer.nonTrainableWeights}get updates(){return this.layer._updates}get losses(){return this.layer.losses}getWeights(){return this.layer.getWeights()}setWeights(weights){this.layer.setWeights(weights)}getConfig(){let config={layer:{className:this.layer.getClassName(),config:this.layer.getConfig()}},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.layer!=null&&this.layer.setFastWeightInitDuringBuild(value)}static fromConfig(cls,config,customObjects={}){let layerConfig=config.layer,layer=deserialize(layerConfig,customObjects);delete config.layer;let newConfig={layer};return Object.assign(newConfig,config),new cls(newConfig)}},TimeDistributed=class extends Wrapper{constructor(args){super(args);this.supportsMasking=!0}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length<3)throw new ValueError(`TimeDistributed layer expects an input shape >= 3D, but received input shape ${JSON.stringify(inputShape)}`);this.inputSpec=[{shape:inputShape}];let childInputShape=[inputShape[0]].concat(inputShape.slice(2));this.layer.built||(this.layer.build(childInputShape),this.layer.built=!0),super.build(inputShape)}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let childInputShape=[inputShape[0]].concat(inputShape.slice(2)),childOutputShape=this.layer.computeOutputShape(childInputShape),timesteps=inputShape[1];return[childOutputShape[0],timesteps].concat(childOutputShape.slice(1))}call(inputs,kwargs){return tidy(()=>(inputs=getExactlyOneTensor(inputs),rnn((inputs2,states)=>[getExactlyOneTensor(this.layer.call(inputs2,kwargs)),[]],inputs,[],!1,null,null,!1,!0)[1]))}};TimeDistributed.className="TimeDistributed";serialization_exports.registerClass(TimeDistributed);function checkBidirectionalMergeMode(value){checkStringTypeUnionValue(VALID_BIDIRECTIONAL_MERGE_MODES,"BidirectionalMergeMode",value)}var DEFAULT_BIDIRECTIONAL_MERGE_MODE="concat",Bidirectional=class extends Wrapper{constructor(args){super(args);let layerConfig=args.layer.getConfig(),forwDict={};forwDict.className=args.layer.getClassName(),forwDict.config=layerConfig,this.forwardLayer=deserialize(forwDict),layerConfig.goBackwards=layerConfig.goBackwards!==!0;let backDict={};if(backDict.className=args.layer.getClassName(),backDict.config=layerConfig,this.backwardLayer=deserialize(backDict),this.forwardLayer.name="forward_"+this.forwardLayer.name,this.backwardLayer.name="backward_"+this.backwardLayer.name,this.mergeMode=args.mergeMode===void 0?DEFAULT_BIDIRECTIONAL_MERGE_MODE:args.mergeMode,checkBidirectionalMergeMode(this.mergeMode),args.weights)throw new NotImplementedError("weights support is not implemented for Bidirectional layer yet.");this._stateful=args.layer.stateful,this.returnSequences=args.layer.returnSequences,this.returnState=args.layer.returnState,this.supportsMasking=!0,this._trainable=!0,this.inputSpec=args.layer.inputSpec,this.numConstants=null}get trainable(){return this._trainable}set trainable(value){this._trainable=value,this.forwardLayer!=null&&(this.forwardLayer.trainable=value),this.backwardLayer!=null&&(this.backwardLayer.trainable=value)}getWeights(){return this.forwardLayer.getWeights().concat(this.backwardLayer.getWeights())}setWeights(weights){let numWeights=weights.length,numeightsOver2=Math.floor(numWeights/2);this.forwardLayer.setWeights(weights.slice(0,numeightsOver2)),this.backwardLayer.setWeights(weights.slice(numeightsOver2))}computeOutputShape(inputShape){let layerShapes=this.forwardLayer.computeOutputShape(inputShape);Array.isArray(layerShapes)&&Array.isArray(layerShapes[0])||(layerShapes=[layerShapes]),layerShapes=layerShapes;let outputShape,outputShapes,stateShape;return this.returnState&&(stateShape=layerShapes.slice(1)),outputShape=layerShapes[0],outputShape=outputShape,this.mergeMode==="concat"?(outputShape[outputShape.length-1]*=2,outputShapes=[outputShape]):this.mergeMode==null?outputShapes=[outputShape,outputShape.slice()]:outputShapes=[outputShape],this.returnState?this.mergeMode==null?outputShapes.concat(stateShape).concat(stateShape.slice()):[outputShape].concat(stateShape).concat(stateShape.slice()):singletonOrArray(outputShapes)}apply(inputs,kwargs){let initialState=kwargs==null?null:kwargs.initialState,constants=kwargs==null?null:kwargs.constants;kwargs==null&&(kwargs={});let standardized=standardizeArgs(inputs,initialState,constants,this.numConstants);if(inputs=standardized.inputs,initialState=standardized.initialState,constants=standardized.constants,Array.isArray(inputs)&&(initialState=inputs.slice(1),inputs=inputs[0]),(initialState==null||initialState.length===0)&&constants==null)return super.apply(inputs,kwargs);let additionalInputs=[],additionalSpecs=[];if(initialState!=null){let numStates=initialState.length;if(numStates%2>0)throw new ValueError("When passing `initialState` to a Bidrectional RNN, the state should be an Array containing the states of the underlying RNNs.");kwargs.initialState=initialState,additionalInputs.push(...initialState);let stateSpecs=initialState.map(state=>new InputSpec({shape:state.shape}));this.forwardLayer.stateSpec=stateSpecs.slice(0,numStates/2),this.backwardLayer.stateSpec=stateSpecs.slice(numStates/2),additionalSpecs.push(...stateSpecs)}if(constants!=null)throw new NotImplementedError("Support for constants in Bidirectional layers is not implemented yet.");let isSymbolicTensor=additionalInputs[0]instanceof SymbolicTensor;for(let tensor2 of additionalInputs)if(tensor2 instanceof SymbolicTensor!==isSymbolicTensor)throw new ValueError("The initial state of a Bidirectional layer cannot be specified as a mix of symbolic and non-symbolic tensors");if(isSymbolicTensor){let fullInput=[inputs].concat(additionalInputs),fullInputSpec=this.inputSpec.concat(additionalSpecs),originalInputSpec=this.inputSpec;this.inputSpec=fullInputSpec;let output=super.apply(fullInput,kwargs);return this.inputSpec=originalInputSpec,output}else return super.apply(inputs,kwargs)}call(inputs,kwargs){return tidy(()=>{let initialState=kwargs.initialState,y,yRev;if(initialState==null)y=this.forwardLayer.call(inputs,kwargs),yRev=this.backwardLayer.call(inputs,kwargs);else{let forwardState=initialState.slice(0,initialState.length/2),backwardState=initialState.slice(initialState.length/2);y=this.forwardLayer.call(inputs,Object.assign(kwargs,{initialState:forwardState})),yRev=this.backwardLayer.call(inputs,Object.assign(kwargs,{initialState:backwardState}))}let states;this.returnState&&(Array.isArray(y)&&(states=y.slice(1).concat(yRev.slice(1))),y=y[0],yRev=yRev[0]),this.returnSequences&&(yRev=reverse(yRev,1));let output;return this.mergeMode==="concat"?output=concatenate([y,yRev]):this.mergeMode==="sum"?output=add2(y,yRev):this.mergeMode==="ave"?output=mul(.5,add2(y,yRev)):this.mergeMode==="mul"?output=mul(y,yRev):this.mergeMode==null&&(output=[y,yRev]),this.returnState?this.mergeMode==null?output.concat(states):[output].concat(states):output})}resetStates(states){this.forwardLayer.resetStates(),this.backwardLayer.resetStates()}build(inputShape){nameScope(this.forwardLayer.name,()=>{this.forwardLayer.build(inputShape)}),nameScope(this.backwardLayer.name,()=>{this.backwardLayer.build(inputShape)}),this.built=!0}computeMask(inputs,mask){Array.isArray(mask)&&(mask=mask[0]);let outputMask;if(this.returnSequences?this.mergeMode==null?outputMask=[mask,mask]:outputMask=mask:this.mergeMode==null?outputMask=[null,null]:outputMask=null,this.returnState){let stateMask=this.forwardLayer.states.map(state=>null);return Array.isArray(outputMask)?outputMask.concat(stateMask).concat(stateMask):[outputMask].concat(stateMask).concat(stateMask)}else return outputMask}get trainableWeights(){return this.forwardLayer.trainableWeights.concat(this.backwardLayer.trainableWeights)}get nonTrainableWeights(){return this.forwardLayer.nonTrainableWeights.concat(this.backwardLayer.nonTrainableWeights)}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.forwardLayer!=null&&this.forwardLayer.setFastWeightInitDuringBuild(value),this.backwardLayer!=null&&this.backwardLayer.setFastWeightInitDuringBuild(value)}getConfig(){let config={mergeMode:this.mergeMode},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}static fromConfig(cls,config){let rnnLayer=deserialize(config.layer);if(delete config.layer,config.numConstants!=null)throw new NotImplementedError("Deserialization of a Bidirectional layer with numConstants present is not supported yet.");let newConfig=config;return newConfig.layer=rnnLayer,new cls(newConfig)}};Bidirectional.className="Bidirectional";serialization_exports.registerClass(Bidirectional);function inputLayer(args){return new InputLayer(args)}function elu3(args){return new ELU(args)}function reLU(args){return new ReLU(args)}function leakyReLU(args){return new LeakyReLU(args)}function prelu2(args){return new PReLU(args)}function softmax2(args){return new Softmax3(args)}function thresholdedReLU(args){return new ThresholdedReLU(args)}function conv1d2(args){return new Conv1D(args)}function conv2d3(args){return new Conv2D2(args)}function conv2dTranspose2(args){return new Conv2DTranspose(args)}function conv3d2(args){return new Conv3D2(args)}function separableConv2d2(args){return new SeparableConv2D(args)}function cropping2D(args){return new Cropping2D(args)}function upSampling2d(args){return new UpSampling2D(args)}function depthwiseConv2d4(args){return new DepthwiseConv2D(args)}function activation(args){return new Activation2(args)}function dense(args){return new Dense(args)}function dropout3(args){return new Dropout(args)}function spatialDropout1d(args){return new SpatialDropout1D(args)}function flatten3(args){return new Flatten(args)}function repeatVector(args){return new RepeatVector(args)}function reshape2(args){return new Reshape2(args)}function permute(args){return new Permute(args)}function embedding(args){return new Embedding(args)}function add3(args){return new Add2(args)}function average(args){return new Average(args)}function concatenate2(args){return new Concatenate(args)}function maximum2(args){return new Maximum2(args)}function minimum2(args){return new Minimum2(args)}function multiply(args){return new Multiply2(args)}function dot3(args){return new Dot(args)}function batchNormalization2(args){return new BatchNormalization(args)}function layerNormalization(args){return new LayerNormalization(args)}function zeroPadding2d(args){return new ZeroPadding2D(args)}function averagePooling1d(args){return new AveragePooling1D(args)}function avgPool1d(args){return averagePooling1d(args)}function avgPooling1d(args){return averagePooling1d(args)}function averagePooling2d(args){return new AveragePooling2D(args)}function avgPool2d(args){return averagePooling2d(args)}function avgPooling2d(args){return averagePooling2d(args)}function averagePooling3d(args){return new AveragePooling3D(args)}function avgPool3d2(args){return averagePooling3d(args)}function avgPooling3d(args){return averagePooling3d(args)}function globalAveragePooling1d(args){return new GlobalAveragePooling1D(args)}function globalAveragePooling2d(args){return new GlobalAveragePooling2D(args)}function globalMaxPooling1d(args){return new GlobalMaxPooling1D(args)}function globalMaxPooling2d(args){return new GlobalMaxPooling2D(args)}function maxPooling1d(args){return new MaxPooling1D(args)}function maxPooling2d(args){return new MaxPooling2D(args)}function maxPooling3d(args){return new MaxPooling3D(args)}function gru(args){return new GRU(args)}function gruCell(args){return new GRUCell(args)}function lstm(args){return new LSTM(args)}function lstmCell(args){return new LSTMCell(args)}function simpleRNN(args){return new SimpleRNN(args)}function simpleRNNCell(args){return new SimpleRNNCell(args)}function convLstm2d(args){return new ConvLSTM2D(args)}function convLstm2dCell(args){return new ConvLSTM2DCell(args)}function rnn2(args){return new RNN(args)}function stackedRNNCells(args){return new StackedRNNCells(args)}function bidirectional(args){return new Bidirectional(args)}function timeDistributed(args){return new TimeDistributed(args)}var globalMaxPool1d=globalMaxPooling1d,globalMaxPool2d=globalMaxPooling2d,maxPool1d=maxPooling1d,maxPool2d=maxPooling2d;function gaussianNoise(args){return new GaussianNoise(args)}function gaussianDropout(args){return new GaussianDropout(args)}function alphaDropout(args){return new AlphaDropout(args)}function masking(args){return new Masking(args)}var exports_metrics_exports={};__export2(exports_metrics_exports,{MAPE:()=>MAPE2,MSE:()=>MSE2,binaryAccuracy:()=>binaryAccuracy2,binaryCrossentropy:()=>binaryCrossentropy3,categoricalAccuracy:()=>categoricalAccuracy2,categoricalCrossentropy:()=>categoricalCrossentropy3,cosineProximity:()=>cosineProximity2,mape:()=>mape2,meanAbsoluteError:()=>meanAbsoluteError2,meanAbsolutePercentageError:()=>meanAbsolutePercentageError2,meanSquaredError:()=>meanSquaredError3,mse:()=>mse2,precision:()=>precision2,recall:()=>recall2,sparseCategoricalAccuracy:()=>sparseCategoricalAccuracy2});function binaryAccuracy2(yTrue,yPred){return binaryAccuracy(yTrue,yPred)}function binaryCrossentropy3(yTrue,yPred){return binaryCrossentropy2(yTrue,yPred)}function sparseCategoricalAccuracy2(yTrue,yPred){return sparseCategoricalAccuracy(yTrue,yPred)}function categoricalAccuracy2(yTrue,yPred){return categoricalAccuracy(yTrue,yPred)}function categoricalCrossentropy3(yTrue,yPred){return categoricalCrossentropy2(yTrue,yPred)}function precision2(yTrue,yPred){return precision(yTrue,yPred)}function recall2(yTrue,yPred){return recall(yTrue,yPred)}function cosineProximity2(yTrue,yPred){return cosineProximity(yTrue,yPred)}function meanAbsoluteError2(yTrue,yPred){return meanAbsoluteError(yTrue,yPred)}function meanAbsolutePercentageError2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function MAPE2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function mape2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function meanSquaredError3(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}function MSE2(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}function mse2(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}var exports_models_exports={};__export2(exports_models_exports,{modelFromJSON:()=>modelFromJSON});var exports_regularizers_exports={};__export2(exports_regularizers_exports,{l1:()=>l12,l1l2:()=>l1l2,l2:()=>l22});function l1l2(config){return new L1L2(config)}function l12(config){return l1(config)}function l22(config){return l2(config)}var Callback=class extends BaseCallback{constructor(){super(...arguments);this.model=null}setModel(model2){if(!(model2 instanceof LayersModel))throw new Error("model must be a LayersModel, not some other Container");this.model=model2}};function less2(currVal,prevVal){return currValprevVal}var EarlyStopping=class extends Callback{constructor(args){super();if(args==null&&(args={}),args.restoreBestWeights)throw new NotImplementedError("restoreBestWeights = True is not implemented in EarlyStopping yet.");this.monitor=args.monitor||"val_loss",this.minDelta=Math.abs(args.minDelta||0),this.patience=args.patience||0,this.verbose=args.verbose||0,this.mode=args.mode||"auto",this.baseline=args.baseline,["auto","min","max"].indexOf(this.mode)===-1&&(console.warn(`EarlyStopping mode '${this.mode}' is invalid. Falling back to mode 'auto'.`),this.mode="auto"),this.mode==="min"?this.monitorFunc=less2:this.mode==="max"?this.monitorFunc=greater2:this.monitor.indexOf("acc")!==-1?this.monitorFunc=greater2:this.monitorFunc=less2,this.monitorFunc===less2&&(this.minDelta*=-1)}async onTrainBegin(logs){this.wait=0,this.stoppedEpoch=0,this.baseline!=null?this.best=this.baseline:this.best=this.monitorFunc===less2?Infinity:-Infinity}async onEpochEnd(epoch,logs){await resolveScalarsInLogs(logs);let current=this.getMonitorValue(logs);current!=null&&(this.monitorFunc(current-this.minDelta,this.best)?(this.best=current,this.wait=0):(this.wait++,this.wait>=this.patience&&(this.stoppedEpoch=epoch,this.model.stopTraining=!0)))}async onTrainEnd(logs){this.stoppedEpoch>0&&this.verbose&&console.log(`Epoch ${this.stoppedEpoch}: early stopping.`)}getMonitorValue(logs){logs==null&&(logs={});let monitorValue=logs[this.monitor];return monitorValue==null&&console.warn(`Metric for EarlyStopping ${this.monitor} is not available. Available metrics are: ${Object.keys(logs)}`),monitorValue}};function earlyStopping(args){return new EarlyStopping(args)}var callbacks={earlyStopping},DataType;(function(DataType2){DataType2[DataType2.DT_INVALID=0]="DT_INVALID",DataType2[DataType2.DT_FLOAT=1]="DT_FLOAT",DataType2[DataType2.DT_DOUBLE=2]="DT_DOUBLE",DataType2[DataType2.DT_INT32=3]="DT_INT32",DataType2[DataType2.DT_UINT8=4]="DT_UINT8",DataType2[DataType2.DT_INT16=5]="DT_INT16",DataType2[DataType2.DT_INT8=6]="DT_INT8",DataType2[DataType2.DT_STRING=7]="DT_STRING",DataType2[DataType2.DT_COMPLEX64=8]="DT_COMPLEX64",DataType2[DataType2.DT_INT64=9]="DT_INT64",DataType2[DataType2.DT_BOOL=10]="DT_BOOL",DataType2[DataType2.DT_QINT8=11]="DT_QINT8",DataType2[DataType2.DT_QUINT8=12]="DT_QUINT8",DataType2[DataType2.DT_QINT32=13]="DT_QINT32",DataType2[DataType2.DT_BFLOAT16=14]="DT_BFLOAT16",DataType2[DataType2.DT_FLOAT_REF=101]="DT_FLOAT_REF",DataType2[DataType2.DT_DOUBLE_REF=102]="DT_DOUBLE_REF",DataType2[DataType2.DT_INT32_REF=103]="DT_INT32_REF",DataType2[DataType2.DT_UINT8_REF=104]="DT_UINT8_REF",DataType2[DataType2.DT_INT16_REF=105]="DT_INT16_REF",DataType2[DataType2.DT_INT8_REF=106]="DT_INT8_REF",DataType2[DataType2.DT_STRING_REF=107]="DT_STRING_REF",DataType2[DataType2.DT_COMPLEX64_REF=108]="DT_COMPLEX64_REF",DataType2[DataType2.DT_INT64_REF=109]="DT_INT64_REF",DataType2[DataType2.DT_BOOL_REF=110]="DT_BOOL_REF",DataType2[DataType2.DT_QINT8_REF=111]="DT_QINT8_REF",DataType2[DataType2.DT_QUINT8_REF=112]="DT_QUINT8_REF",DataType2[DataType2.DT_QINT32_REF=113]="DT_QINT32_REF",DataType2[DataType2.DT_BFLOAT16_REF=114]="DT_BFLOAT16_REF"})(DataType||(DataType={}));var SaverDef;(function(SaverDef2){let CheckpointFormatVersion;(function(CheckpointFormatVersion2){CheckpointFormatVersion2[CheckpointFormatVersion2.LEGACY=0]="LEGACY",CheckpointFormatVersion2[CheckpointFormatVersion2.V1=1]="V1",CheckpointFormatVersion2[CheckpointFormatVersion2.V2=2]="V2"})(CheckpointFormatVersion=SaverDef2.CheckpointFormatVersion||(SaverDef2.CheckpointFormatVersion={}))})(SaverDef||(SaverDef={}));var CUSTOM_OPS={};function registerOp(name,opFunc){let opMapper={tfOpName:name,category:"custom",inputs:[],attrs:[],customExecutor:opFunc};CUSTOM_OPS[name]=opMapper}function getRegisteredOp(name){return CUSTOM_OPS[name]}function deregisterOp(name){delete CUSTOM_OPS[name]}function getParamValue(paramName,node2,tensorMap,context,resourceManager){let inputParam=node2.inputParams[paramName];if(inputParam&&inputParam.inputIndexStart!==void 0){let start=inputParam.inputIndexStart,end=inputParam.inputIndexEnd===0?void 0:inputParam.inputIndexEnd===void 0?start+1:inputParam.inputIndexEnd;if(inputParam.type==="tensor")return getTensor(node2.inputNames[inputParam.inputIndexStart],tensorMap,context,resourceManager);if(inputParam.type==="tensors")return node2.inputNames.slice(start,end).map(name=>getTensor(name,tensorMap,context,resourceManager));let tensor2=getTensor(node2.inputNames.slice(start)[0],tensorMap,context,resourceManager),data=tensor2.dataSync();return inputParam.type==="number"?data[0]:util_exports.toNestedArray(tensor2.shape,data)}let attrParam=node2.attrParams[paramName];return attrParam&&attrParam.value}function getTensor(name,tensorsMap,context,resourceManager){let[nodeName,index]=parseNodeName(name);if(resourceManager!=null){let tensor2=resourceManager.getHashTableHandleByName(nodeName);if(tensor2!=null)return tensor2}let contextId=context.currentContextIds.find(contextId2=>!!tensorsMap[getNodeNameWithContextId(nodeName,contextId2)]);return contextId!==void 0?tensorsMap[getNodeNameWithContextId(nodeName,contextId)][index]:void 0}function getTensorsForCurrentContenxt(name,tensorsMap,context){return tensorsMap[getNodeNameWithContextId(name,context.currentContextId)]}function getNodeNameAndIndex(inputName,context){let[nodeName,index]=parseNodeName(inputName);return[getNodeNameWithContextId(nodeName,context&&context.currentContextId),index]}function getNodeNameWithContextId(name,contextId){return contextId?`${name}-${contextId}`:name}function parseNodeName(name){let parts=name.split(":");return parts.length===1?[name,0]:[parts[0],Number(parts[parts.length-1])]}function getPadding(node2,tensorMap,context){let pad3=getParamValue("pad",node2,tensorMap,context);if(pad3==="explicit"){pad3=getParamValue("explicitPaddings",node2,tensorMap,context);let explicitPadding=[[0,0],[0,0],[0,0],[0,0]];for(let i=0;i<4;i++)explicitPadding[i][0]=pad3[i*2],explicitPadding[i][1]=pad3[i*2+1];return explicitPadding}return pad3}function cloneTensor(tensor2){return tensor2.kept?tensor2:clone(tensor2)}var arithmetic_exports={};__export2(arithmetic_exports,{json:()=>json});var json=[{tfOpName:"Add",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddV2",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddN",category:"arithmetic",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"BiasAdd",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"Sub",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"RealDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Div",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"DivNoNan",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mul",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Maximum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Minimum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Pow",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SquaredDifference",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorMod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],basic_math_exports={};__export2(basic_math_exports,{json:()=>json2});var json2=[{tfOpName:"Abs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan2",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ceil",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ClipByValue",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"clipValueMin",type:"number"},{start:2,name:"clipValueMax",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Complex",category:"basic_math",inputs:[{start:0,name:"real",type:"tensor"},{start:1,name:"imag",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ComplexAbs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Elu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Exp",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Floor",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Imag",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Neg",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Real",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Prelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"alpha",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu6",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Selu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sigmoid",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Rsqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Square",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sign",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Round",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Expm1",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log1p",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Reciprocal",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Softplus",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Erf",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Prod",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axes",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LeakyRelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"alpha",name:"alpha",type:"number",defaultValue:.2},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],control_exports={};__export2(control_exports,{json:()=>json3});var json3=[{tfOpName:"EmptyTensorList",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"maxNumElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"LoopCond",category:"control",inputs:[{start:0,name:"pred",type:"tensor"}]},{tfOpName:"Switch",category:"control",inputs:[{start:0,name:"data",type:"tensor"},{start:1,name:"pred",type:"tensor"}]},{tfOpName:"Merge",category:"control",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"Enter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"frame_name",name:"frameName",type:"string"},{tfName:"is_constant",name:"isConstant",type:"bool"}]},{tfOpName:"Exit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NextIteration",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayV3",category:"control",inputs:[{start:0,name:"size",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"dynamic_size",name:"dynamicSize",type:"bool"},{tfName:"clear_after_read",name:"clearAfterRead",type:"bool"},{tfName:"identical_element_shapes",name:"identicalElementShapes",type:"bool"},{tfName:"tensor_array_name",name:"name",type:"string"}]},{tfOpName:"TensorArrayWriteV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayReadV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayGatherV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"}]},{tfOpName:"TensorArrayScatterV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArrayConcatV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape_except0",name:"elementShapeExcept0",type:"shape",notSupported:!0}]},{tfOpName:"TensorArraySplitV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"tensor",type:"tensor"},{start:2,name:"lengths",type:"number[]"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArraySizeV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}]},{tfOpName:"TensorArrayCloseV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"}]},{tfOpName:"StatelessIf",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"If",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"StatelessWhile",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"While",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"TensorListScatter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListScatterV2",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"},{start:3,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGather",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListSetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListReserve",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListFromTensor",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListStack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"},{tfName:"num_elements",name:"numElements",type:"dtype"}]},{tfOpName:"TensorListSplit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"},{start:2,name:"lengths",type:"number[]"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListConcat",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"}],attrs:[{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPopBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPushBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]}],convolution_exports={};__export2(convolution_exports,{json:()=>json4});var json4=[{tfOpName:"AvgPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[],notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPoolWithArgmax",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"include_batch_in_index",name:"includeBatchInIndex",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AvgPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Conv1D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"stride",name:"stride",type:"number"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NWC"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"dilation",name:"dilation",type:"number",defaultValue:1}]},{tfOpName:"Conv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"useCudnnOnGpu",name:"useCudnnOnGpu",type:"bool"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"_FusedConv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"use_cudnn_on_gpu",name:"useCudnnOnGpu",type:"bool",defaultValue:!0},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"leakyrelu_alpha",name:"leakyreluAlpha",type:"number"}]},{tfOpName:"Conv2DBackpropInput",category:"convolution",inputs:[{start:2,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:0,name:"outputShape",type:"number[]"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]",notSupported:!0}]},{tfOpName:"DepthwiseConv2d",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"DepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"FusedDepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]}]},{tfOpName:"Conv3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"Dilation2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"rates",name:"dilations",type:"number[]"},{tfName:"padding",name:"pad",type:"string"}]}],creation_exports={};__export2(creation_exports,{json:()=>json5});var json5=[{tfOpName:"Fill",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"},{start:1,name:"value",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"LinSpace",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"num",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"OneHot",category:"creation",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"depth",type:"number"},{start:2,name:"onValue",type:"number",defaultValue:1},{start:3,name:"offValue",type:"number",defaultValue:0}],attrs:[{tfName:"axis",name:"axis",type:"number",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ones",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"OnesLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"RandomUniform",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"minval",name:"minval",type:"number",defaultValue:0},{tfName:"maxval",name:"maxval",type:"number",defaultValue:1},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"seed",name:"seed",type:"number",defaultValue:0},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Range",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"step",type:"number",defaultValue:0}],attrs:[{tfName:"Tidx",name:"dtype",type:"dtype"}]},{tfOpName:"TruncatedNormal",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"means",name:"mean",type:"number",defaultValue:0},{tfName:"stddev",name:"stdDev",type:"number",defaultValue:1},{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Zeros",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"ZerosLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"Multinomial",category:"creation",inputs:[{start:0,name:"logits",type:"tensor"},{start:1,name:"numSamples",type:"number"}],attrs:[{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number"},{tfName:"T",name:"dtype",type:"dtype"},{tfName:"output_dtype",name:"output_dtype",type:"dtype"}]}],dynamic_exports={};__export2(dynamic_exports,{json:()=>json6});var json6=[{tfOpName:"NonMaxSuppressionV2",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV3",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV4",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"T_threshold",name:"threshold",type:"dtype",notSupported:!0},{tfName:"pad_to_max_output_size",name:"padToMaxOutputSize",type:"bool"}]},{tfOpName:"NonMaxSuppressionV5",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"},{start:5,name:"softNmsSigma",type:"number"}]},{tfOpName:"Where",category:"dynamic",inputs:[{start:0,name:"condition",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ListDiff",category:"dynamic",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],evaluation_exports={};__export2(evaluation_exports,{json:()=>json7});var json7=[{tfOpName:"TopKV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"k",type:"number"}],attrs:[{tfName:"sorted",name:"sorted",type:"bool"}]},{tfOpName:"Unique",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"UniqueV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]}],graph_exports={};__export2(graph_exports,{json:()=>json8});var json8=[{tfOpName:"PlaceholderWithDefault",category:"graph",inputs:[{start:0,name:"default",type:"tensor"}],attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Placeholder",category:"graph",attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Const",category:"graph"},{tfOpName:"Identity",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IdentityN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Snapshot",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Rank",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Size",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Shape",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"ShapeN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Print",category:"graph",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"data",type:"tensors"}],attrs:[{tfName:"message",name:"message",type:"string"},{tfName:"first_n",name:"firstN",type:"number",notSupported:!0},{tfName:"summarize",name:"summarize",type:"number",defaultValue:3}]},{tfOpName:"NoOp",category:"graph",inputs:[]},{tfOpName:"StopGradient",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"FakeQuantWithMinMaxVars",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"min",name:"min",type:"number"},{tfName:"max",name:"max",type:"number"}]}],hash_table_exports={};__export2(hash_table_exports,{json:()=>json9});var json9=[{tfOpName:"HashTable",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"HashTableV2",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"LookupTableImport",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableImportV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFind",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFindV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]}],image_exports={};__export2(image_exports,{json:()=>json10});var json10=[{tfOpName:"ResizeBilinear",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"half_pixel_centers",name:"halfPixelCenters",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ResizeNearestNeighbor",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"half_pixel_centers",name:"halfPixelCenters",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"CropAndResize",category:"image",inputs:[{start:0,name:"image",type:"tensor"},{start:1,name:"boxes",type:"tensor"},{start:2,name:"boxInd",type:"tensor"},{start:3,name:"cropSize",type:"number[]"}],attrs:[{tfName:"method",name:"method",type:"string"},{tfName:"extrapolation_value",name:"extrapolationValue",type:"number"}]}],logical_exports={};__export2(logical_exports,{json:()=>json11});var json11=[{tfOpName:"Equal",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NotEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Greater",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"GreaterEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Less",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LessEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalAnd",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalNot",category:"logical",inputs:[{start:0,name:"a",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalOr",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Select",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SelectV2",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],matrices_exports={};__export2(matrices_exports,{json:()=>json12});var json12=[{tfOpName:"_FusedMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMulV2",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Transpose",category:"matrices",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"perm",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],normalization_exports={};__export2(normalization_exports,{json:()=>json13});var json13=[{tfOpName:"FusedBatchNorm",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV2",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV3",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"LRN",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"depth_radius",name:"radius",type:"number",defaultValue:5},{tfName:"bias",name:"bias",type:"number",defaultValue:1},{tfName:"alpha",name:"alpha",type:"number",defaultValue:1},{tfName:"beta",name:"beta",type:"number",defaultValue:.5}]},{tfOpName:"Softmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"LogSoftmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"SparseToDense",category:"normalization",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!0,notSupported:!0}]}],reduction_exports={};__export2(reduction_exports,{json:()=>json14});var json14=[{tfOpName:"Bincount",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"size",type:"number"},{start:2,name:"weights",type:"tensor"}]},{tfOpName:"DenseBincount",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"size",type:"number"},{start:2,name:"weights",type:"tensor"}],attrs:[{tfName:"binary_output",name:"binaryOutput",type:"bool"}]},{tfOpName:"Max",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Mean",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Min",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Sum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"All",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Any",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"ArgMax",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"ArgMin",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"Prod",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Cumsum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}],attrs:[{tfName:"exclusive",name:"exclusive",type:"bool"},{tfName:"reverse",name:"reverse",type:"bool"}]}],slice_join_exports={};__export2(slice_join_exports,{json:()=>json15});var json15=[{tfOpName:"ConcatV2",category:"slice_join",inputs:[{start:0,end:-1,name:"tensors",type:"tensors"},{start:-1,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"Concat",category:"slice_join",inputs:[{start:1,end:0,name:"tensors",type:"tensors"},{start:0,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"GatherV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"},{start:2,name:"axis",type:"number",defaultValue:0}],attrs:[{tfName:"batch_dims",name:"batchDims",type:"number",defaultValue:0}]},{tfOpName:"Gather",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",notSupported:!0}]},{tfOpName:"Reverse",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"dims",type:"bool[]"}]},{tfOpName:"ReverseV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}]},{tfOpName:"Slice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"size",type:"number[]"}]},{tfOpName:"StridedSlice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"end",type:"number[]"},{start:3,name:"strides",type:"number[]"}],attrs:[{tfName:"begin_mask",name:"beginMask",type:"number",defaultValue:0},{tfName:"end_mask",name:"endMask",type:"number",defaultValue:0},{tfName:"new_axis_mask",name:"newAxisMask",type:"number",defaultValue:0},{tfName:"ellipsis_mask",name:"ellipsisMask",type:"number",defaultValue:0},{tfName:"shrink_axis_mask",name:"shrinkAxisMask",type:"number",defaultValue:0}]},{tfOpName:"Pack",category:"slice_join",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0}]},{tfOpName:"Unpack",category:"slice_join",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0},{tfName:"num",name:"num",type:"number",defaultValue:0,notSupported:!0}]},{tfOpName:"Tile",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"reps",type:"number[]"}]},{tfOpName:"Split",category:"slice_join",inputs:[{start:0,name:"axis",type:"number",defaultValue:0},{start:1,name:"x",type:"tensor"}],attrs:[{tfName:"num_split",name:"numOrSizeSplits",type:"number",defaultValue:1}]},{tfOpName:"SplitV",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"numOrSizeSplits",type:"number[]"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"ScatterNd",category:"slice_join",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"values",type:"tensor"},{start:2,name:"shape",type:"number[]"}]},{tfOpName:"GatherNd",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}]},{tfOpName:"SparseToDense",category:"slice_join",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!1,notSupported:!0}]}],spectral_exports={};__export2(spectral_exports,{json:()=>json16});var json16=[{tfOpName:"FFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"RFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]},{tfOpName:"IRFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]}],transformation_exports={};__export2(transformation_exports,{json:()=>json17});var json17=[{tfOpName:"Cast",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"SrcT",name:"sdtype",type:"dtype",notSupported:!0},{tfName:"DstT",name:"dtype",type:"dtype"}]},{tfOpName:"ExpandDims",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"MirrorPad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"mode",name:"mode",type:"string"}]},{tfOpName:"Pad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"constant_value",name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"PadV2",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"},{start:2,name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"Reshape",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}]},{tfOpName:"Squeeze",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"axis",tfDeprecatedName:"squeeze_dims",name:"axis",type:"number[]"}]},{tfOpName:"SpaceToBatchND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"paddings",type:"number[]"}]},{tfOpName:"BatchToSpaceND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"crops",type:"number[]"}]},{tfOpName:"DepthToSpace",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"block_size",name:"blockSize",type:"number"},{tfName:"data_format",name:"dataFormat",type:"string"}]},{tfOpName:"BroadcastTo",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}],attrs:[]}],OperationMapper=class{static get Instance(){return this._instance||(this._instance=new this)}constructor(){let ops=[arithmetic_exports,basic_math_exports,control_exports,convolution_exports,creation_exports,dynamic_exports,evaluation_exports,logical_exports,image_exports,graph_exports,matrices_exports,normalization_exports,reduction_exports,slice_join_exports,spectral_exports,transformation_exports,hash_table_exports],mappersJson=[].concat(...ops.map(op2=>op2.json));this.opMappers=mappersJson.reduce((map,mapper)=>(map[mapper.tfOpName]=mapper,map),{})}transformGraph(graph2,signature={}){let tfNodes=graph2.node,placeholders=[],weights=[],initNodes=[],nodes=tfNodes.reduce((map,node2)=>(map[node2.name]=this.mapNode(node2),node2.op.startsWith("Placeholder")?placeholders.push(map[node2.name]):node2.op==="Const"?weights.push(map[node2.name]):(node2.input==null||node2.input.length===0)&&initNodes.push(map[node2.name]),map),{}),inputs=[],outputs=[],inputNodeNameToKey={},outputNodeNameToKey={};signature!=null&&(inputNodeNameToKey=this.mapSignatureEntries(signature.inputs),outputNodeNameToKey=this.mapSignatureEntries(signature.outputs));let allNodes=Object.keys(nodes);allNodes.forEach(key=>{let node2=nodes[key];node2.inputNames.forEach(name=>{let[nodeName]=getNodeNameAndIndex(name);node2.inputs.push(nodes[nodeName]),nodes[nodeName].children.push(node2)})}),Object.keys(outputNodeNameToKey).length===0?allNodes.forEach(key=>{let node2=nodes[key];node2.children.length===0&&outputs.push(node2)}):Object.keys(outputNodeNameToKey).forEach(name=>{let[nodeName]=getNodeNameAndIndex(name),node2=nodes[nodeName];node2!=null&&(node2.signatureKey=outputNodeNameToKey[name],outputs.push(node2))}),Object.keys(inputNodeNameToKey).length>0?Object.keys(inputNodeNameToKey).forEach(name=>{let[nodeName]=getNodeNameAndIndex(name),node2=nodes[nodeName];node2&&(node2.signatureKey=inputNodeNameToKey[name],inputs.push(node2))}):inputs=placeholders;let functions={};graph2.library!=null&&graph2.library.function!=null&&(functions=graph2.library.function.reduce((functions2,func2)=>(functions2[func2.signature.name]=this.mapFunction(func2),functions2),{}));let result={nodes,inputs,outputs,weights,placeholders,signature,functions};return initNodes.length>0&&(result.initNodes=initNodes),result}mapSignatureEntries(entries){return Object.keys(entries||{}).reduce((prev,curr)=>(prev[entries[curr].name]=curr,prev),{})}mapNode(node2){let mapper=getRegisteredOp(node2.op)||this.opMappers[node2.op]||{};node2.attr==null&&(node2.attr={});let newNode={name:node2.name,op:node2.op,category:mapper.category,inputNames:(node2.input||[]).map(input2=>input2.startsWith("^")?input2.substr(1):input2),inputs:[],children:[],inputParams:{},attrParams:{},rawAttrs:node2.attr};return mapper.inputs!=null&&(newNode.inputParams=mapper.inputs.reduce((map,param)=>(map[param.name]={type:param.type,inputIndexStart:param.start,inputIndexEnd:param.end},map),{})),mapper.attrs!=null&&(newNode.attrParams=mapper.attrs.reduce((map,param)=>{let type=param.type,value;switch(param.type){case"string":value=getStringParam(node2.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getStringParam(node2.attr,param.tfDeprecatedName,param.defaultValue));break;case"string[]":value=getStringArrayParam(node2.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getStringArrayParam(node2.attr,param.tfDeprecatedName,param.defaultValue));break;case"number":value=getNumberParam(node2.attr,param.tfName,param.defaultValue||0),value===void 0&&!!param.tfDeprecatedName&&(value=getNumberParam(node2.attr,param.tfDeprecatedName,param.defaultValue));break;case"number[]":value=getNumericArrayParam(node2.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getNumericArrayParam(node2.attr,param.tfDeprecatedName,param.defaultValue));break;case"bool":value=getBoolParam(node2.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getBoolParam(node2.attr,param.tfDeprecatedName,param.defaultValue));break;case"bool[]":value=getBoolArrayParam(node2.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getBoolArrayParam(node2.attr,param.tfDeprecatedName,param.defaultValue));break;case"shape":value=getTensorShapeParam(node2.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getTensorShapeParam(node2.attr,param.tfDeprecatedName,param.defaultValue));break;case"shape[]":value=getTensorShapeArrayParam(node2.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getTensorShapeArrayParam(node2.attr,param.tfDeprecatedName,param.defaultValue));break;case"dtype":value=getDtypeParam(node2.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getDtypeParam(node2.attr,param.tfDeprecatedName,param.defaultValue));break;case"dtype[]":value=getDtypeArrayParam(node2.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getDtypeArrayParam(node2.attr,param.tfDeprecatedName,param.defaultValue));break;case"func":value=getFuncParam(node2.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getFuncParam(node2.attr,param.tfDeprecatedName,param.defaultValue));break;case"tensor":case"tensors":break;default:throw new Error(`Unsupported param type: ${param.type} for op: ${node2.op}`)}return map[param.name]={value,type},map},{})),newNode}mapFunction(functionDef){let tfNodes=functionDef.nodeDef,placeholders=[],weights=[],nodes={};tfNodes!=null&&(nodes=tfNodes.reduce((map,node2)=>(map[node2.name]=this.mapNode(node2),node2.op==="Const"&&weights.push(map[node2.name]),map),{}));let inputs=[],outputs=[];functionDef.signature.inputArg.forEach(arg=>{let[nodeName]=getNodeNameAndIndex(arg.name),node2={name:nodeName,op:"Placeholder",inputs:[],inputNames:[],category:"graph",inputParams:{},attrParams:{dtype:{value:parseDtypeParam(arg.type),type:"dtype"}},children:[]};node2.signatureKey=arg.name,inputs.push(node2),nodes[nodeName]=node2}),Object.keys(nodes).forEach(key=>{let node2=nodes[key];node2.inputNames.forEach(name=>{let[nodeName]=getNodeNameAndIndex(name);node2.inputs.push(nodes[nodeName]),nodes[nodeName].children.push(node2)})});let returnNodeMap=functionDef.ret;functionDef.signature.outputArg.forEach(output=>{let[nodeName,index]=getNodeNameAndIndex(returnNodeMap[output.name]),node2=nodes[nodeName];node2!=null&&(node2.defaultOutput=index,outputs.push(node2))});let signature=this.mapArgsToSignature(functionDef);return{nodes,inputs,outputs,weights,placeholders,signature}}mapArgsToSignature(functionDef){return{methodName:functionDef.signature.name,inputs:functionDef.signature.inputArg.reduce((map,arg)=>(map[arg.name]=this.mapArgToTensorInfo(arg),map),{}),outputs:functionDef.signature.outputArg.reduce((map,arg)=>(map[arg.name]=this.mapArgToTensorInfo(arg,functionDef.ret),map),{})}}mapArgToTensorInfo(arg,nameMap2){let name=arg.name;return nameMap2!=null&&(name=nameMap2[name]),{name,dtype:arg.type}}};function decodeBase64(text){let global2=env().global;if(typeof global2.atob!="undefined")return global2.atob(text);if(typeof Buffer!="undefined")return new Buffer(text,"base64").toString();throw new Error("Unable to decode base64 in this environment. Missing built-in atob() or Buffer()")}function parseStringParam(s,keepCase){let value=Array.isArray(s)?String.fromCharCode.apply(null,s):decodeBase64(s);return keepCase?value:value.toLowerCase()}function getStringParam(attrs,name,def,keepCase=!1){let param=attrs[name];return param!=null?parseStringParam(param.s,keepCase):def}function getBoolParam(attrs,name,def){let param=attrs[name];return param?param.b:def}function getNumberParam(attrs,name,def){let param=attrs[name]||{},value=param.i!=null?param.i:param.f!=null?param.f:def;return typeof value=="number"?value:parseInt(value,10)}function parseDtypeParam(value){switch(typeof value=="string"&&(value=DataType[value]),value){case DataType.DT_FLOAT:return"float32";case DataType.DT_INT32:case DataType.DT_INT64:case DataType.DT_INT8:case DataType.DT_UINT8:return"int32";case DataType.DT_BOOL:return"bool";case DataType.DT_DOUBLE:return"float32";case DataType.DT_STRING:return"string";default:return null}}function getFuncParam(attrs,name,def){let param=attrs[name];return param&¶m.func?param.func.name:def}function getDtypeParam(attrs,name,def){let param=attrs[name];return param&¶m.type?parseDtypeParam(param.type):def}function getDtypeArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.type?param.list.type.map(v=>parseDtypeParam(v)):def}function parseTensorShapeParam(shape){if(!shape.unknownRank)return shape.dim!=null?shape.dim.map(dim=>typeof dim.size=="number"?dim.size:parseInt(dim.size,10)):[]}function getTensorShapeParam(attrs,name,def){let param=attrs[name];return param&¶m.shape?parseTensorShapeParam(param.shape):def}function getNumericArrayParam(attrs,name,def){let param=attrs[name];return param?((param.list.f&¶m.list.f.length?param.list.f:param.list.i)||[]).map(v=>typeof v=="number"?v:parseInt(v,10)):def}function getStringArrayParam(attrs,name,def,keepCase=!1){let param=attrs[name];return param&¶m.list&¶m.list.s?param.list.s.map(v=>parseStringParam(v,keepCase)):def}function getTensorShapeArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.shape?param.list.shape.map(v=>parseTensorShapeParam(v)):def}function getBoolArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.b?param.list.b:def}var NodeValueImpl=class{constructor(node2,tensorMap,context){this.node=node2,this.tensorMap=tensorMap,this.context=context,this.inputs=[],this.attrs={},this.inputs=node2.inputNames.map(name=>this.getInput(name)),node2.rawAttrs!=null&&(this.attrs=Object.keys(node2.rawAttrs).reduce((attrs,key)=>(attrs[key]=this.getAttr(key),attrs),{}))}getInput(name){return getTensor(name,this.tensorMap,this.context)}getAttr(name,defaultValue){let value=this.node.rawAttrs[name];if(value.tensor!=null)return getTensor(name,this.tensorMap,this.context);if(value.i!=null||value.f!=null)return getNumberParam(this.node.rawAttrs,name,defaultValue);if(value.s!=null)return getStringParam(this.node.rawAttrs,name,defaultValue);if(value.b!=null)return getBoolParam(this.node.rawAttrs,name,defaultValue);if(value.shape!=null)return getTensorShapeParam(this.node.rawAttrs,name,defaultValue);if(value.type!=null)return getDtypeParam(this.node.rawAttrs,name,defaultValue);if(value.list!=null){if(value.list.i!=null||value.list.f!=null)return getNumericArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.s!=null)return getStringArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.shape!=null)return getTensorShapeArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.b!=null)return getBoolArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.type!=null)return getDtypeArrayParam(this.node.rawAttrs,name,defaultValue)}return defaultValue}},executeOp=(node2,tensorMap,context)=>{switch(node2.op){case"BiasAdd":case"AddV2":case"Add":return[add2(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"AddN":return[addN(getParamValue("tensors",node2,tensorMap,context))];case"FloorMod":case"Mod":return[mod(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"Mul":return[mul(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"RealDiv":case"Div":return[div(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"DivNoNan":return[divNoNan(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"FloorDiv":return[floorDiv(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"Sub":return[sub(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"Minimum":return[minimum(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"Maximum":return[maximum(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"Pow":return[pow(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"SquaredDifference":return[squaredDifference(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];default:throw TypeError(`Node type ${node2.op} is not implemented`)}},executeOp2=(node2,tensorMap,context)=>{switch(node2.op){case"Abs":case"ComplexAbs":return[abs(getParamValue("x",node2,tensorMap,context))];case"Acos":return[acos(getParamValue("x",node2,tensorMap,context))];case"Acosh":return[acosh(getParamValue("x",node2,tensorMap,context))];case"Asin":return[asin(getParamValue("x",node2,tensorMap,context))];case"Asinh":return[asinh(getParamValue("x",node2,tensorMap,context))];case"Atan":return[atan(getParamValue("x",node2,tensorMap,context))];case"Atan2":return[atan2(getParamValue("x",node2,tensorMap,context),getParamValue("y",node2,tensorMap,context))];case"Atanh":return[atanh(getParamValue("x",node2,tensorMap,context))];case"Ceil":return[ceil(getParamValue("x",node2,tensorMap,context))];case"Complex":return[complex(getParamValue("real",node2,tensorMap,context),getParamValue("imag",node2,tensorMap,context))];case"Cos":return[cos(getParamValue("x",node2,tensorMap,context))];case"Cosh":return[cosh(getParamValue("x",node2,tensorMap,context))];case"Elu":return[elu(getParamValue("x",node2,tensorMap,context))];case"Erf":return[erf(getParamValue("x",node2,tensorMap,context))];case"Exp":return[exp(getParamValue("x",node2,tensorMap,context))];case"Expm1":return[expm1(getParamValue("x",node2,tensorMap,context))];case"Floor":return[floor(getParamValue("x",node2,tensorMap,context))];case"Log":return[log(getParamValue("x",node2,tensorMap,context))];case"Log1p":return[log1p(getParamValue("x",node2,tensorMap,context))];case"Imag":return[imag(getParamValue("x",node2,tensorMap,context))];case"Neg":return[neg(getParamValue("x",node2,tensorMap,context))];case"Reciprocal":return[reciprocal(getParamValue("x",node2,tensorMap,context))];case"Real":return[real(getParamValue("x",node2,tensorMap,context))];case"Relu":return[relu(getParamValue("x",node2,tensorMap,context))];case"Round":return[round2(getParamValue("x",node2,tensorMap,context))];case"Selu":return[selu(getParamValue("x",node2,tensorMap,context))];case"Sigmoid":return[sigmoid(getParamValue("x",node2,tensorMap,context))];case"Sin":return[sin(getParamValue("x",node2,tensorMap,context))];case"Sign":return[sign(getParamValue("x",node2,tensorMap,context))];case"Sinh":return[sinh(getParamValue("x",node2,tensorMap,context))];case"Softplus":return[softplus(getParamValue("x",node2,tensorMap,context))];case"Sqrt":return[sqrt(getParamValue("x",node2,tensorMap,context))];case"Square":return[square(getParamValue("x",node2,tensorMap,context))];case"Tanh":return[tanh2(getParamValue("x",node2,tensorMap,context))];case"Tan":return[tan(getParamValue("x",node2,tensorMap,context))];case"ClipByValue":return[clipByValue(getParamValue("x",node2,tensorMap,context),getParamValue("clipValueMin",node2,tensorMap,context),getParamValue("clipValueMax",node2,tensorMap,context))];case"Relu6":return[relu6(getParamValue("x",node2,tensorMap,context))];case"Rsqrt":return[rsqrt(getTensor(node2.inputNames[0],tensorMap,context))];case"Prod":return[prod(getParamValue("x",node2,tensorMap,context),getParamValue("axes",node2,tensorMap,context))];case"LeakyRelu":return[leakyRelu(getParamValue("x",node2,tensorMap,context),getParamValue("alpha",node2,tensorMap,context))];case"Prelu":return[prelu(getParamValue("x",node2,tensorMap,context),getParamValue("alpha",node2,tensorMap,context))];default:throw TypeError(`Node type ${node2.op} is not implemented`)}};function assertShapesMatchAllowUndefinedSize(shapeA,shapeB,errorMessagePrefix=""){util_exports.assert(shapesEqualAllowUndefinedSize(shapeA,shapeB),()=>errorMessagePrefix+` Shapes ${shapeA} and ${shapeB} must match`)}function shapesEqualAllowUndefinedSize(n1,n2){if(n1.length!==n2.length)return!1;for(let i=0;i{(keepIds==null||!keepIds.has(tensor2.tensor.id))&&tensor2.tensor.dispose()}),this.tensors=[],this.closed_=!0,this.idTensor.dispose()}size(){return this.tensors.length}read(index){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(index<0||index>=this.size())throw new Error(`Tried to read from index ${index}, but array size is: ${this.size()}`);let tensorWithState=this.tensors[index];if(tensorWithState.cleared)throw new Error(`TensorArray ${this.name}: Could not read index ${index} twice because it was cleared after a previous read (perhaps try setting clear_after_read = false?).`);return this.clearAfterRead&&(tensorWithState.cleared=!0),tensorWithState.read=!0,tensorWithState.tensor}readMany(indices){return indices.map(index=>this.read(index))}write(index,tensor2){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(index<0||!this.dynamicSize&&index>=this.maxSize)throw new Error(`Tried to write to index ${index}, but array is not resizeable and size is: ${this.maxSize}`);let t=this.tensors[index]||{};if(tensor2.dtype!==this.dtype)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, - because the value dtype is ${tensor2.dtype}, but TensorArray dtype is ${this.dtype}.`);if(this.size()===0&&(this.elementShape==null||this.elementShape.length===0)&&(this.elementShape=tensor2.shape),assertShapesMatchAllowUndefinedSize(this.elementShape,tensor2.shape,`TensorArray ${this.name}: Could not write to TensorArray index ${index}.`),t.read)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, because it has already been read.`);if(t.written)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, because it has already been written.`);t.tensor=tensor2,keep(tensor2),t.written=!0,this.tensors[index]=t}writeMany(indices,tensors){if(indices.length!==tensors.length)throw new Error(`TensorArray ${this.name}: could not write multiple tensors,because the index size: ${indices.length} is not the same as tensors size: ${tensors.length}.`);indices.forEach((i,index)=>this.write(i,tensors[index]))}gather(indices,dtype){if(!!dtype&&dtype!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but gather requested dtype ${dtype}`);if(indices)indices=indices.slice(0,this.size());else{indices=[];for(let i=0;i=this.maxSize)throw new Error(`Max index must be < array size (${maxIndex} vs. ${this.maxSize})`);this.writeMany(indices,unstack(tensor2,0))}split(length,tensor2){if(tensor2.dtype!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but tensor has dtype ${tensor2.dtype}`);let totalLength=0,cumulativeLengths=length.map(len=>(totalLength+=len,totalLength));if(totalLength!==tensor2.shape[0])throw new Error(`Expected sum of lengths to be equal to +var faceapi=(()=>{var R_=Object.create,Fd=Object.defineProperty,P_=Object.getPrototypeOf,O_=Object.prototype.hasOwnProperty,L_=Object.getOwnPropertyNames,z_=Object.getOwnPropertyDescriptor;var Kw=e=>Fd(e,"__esModule",{value:!0});var B_=(e,t)=>()=>(t||(t={exports:{}},e(t.exports,t)),t.exports),oc=(e,t)=>{Kw(e);for(var n in t)Fd(e,n,{get:t[n],enumerable:!0})},W_=(e,t,n)=>{if(Kw(e),t&&typeof t=="object"||typeof t=="function")for(let a of L_(t))!O_.call(e,a)&&a!=="default"&&Fd(e,a,{get:()=>t[a],enumerable:!(n=z_(t,a))||n.enumerable});return e},V_=e=>e&&e.__esModule?e:W_(Fd(e!=null?R_(P_(e)):{},"default",{value:e,enumerable:!0}),e);var pC=B_((use,cC)=>{oc(use,{isNodejs:()=>cse});function cse(){return typeof global=="object"&&!0&&typeof cC!="undefined"&&typeof process!="undefined"&&!!process.version}});var Ase={};oc(Ase,{AgeGenderNet:()=>Up,BoundingBox:()=>ro,Box:()=>ot,ComposableTask:()=>oa,ComputeAllFaceDescriptorsTask:()=>zr,ComputeFaceDescriptorsTaskBase:()=>Jp,ComputeSingleFaceDescriptorTask:()=>Br,DetectAllFaceLandmarksTask:()=>Qp,DetectAllFacesTask:()=>Hu,DetectFaceLandmarksTaskBase:()=>Zp,DetectFacesTaskBase:()=>td,DetectSingleFaceLandmarksTask:()=>ed,DetectSingleFaceTask:()=>nd,Dimensions:()=>cn,FACE_EXPRESSION_LABELS:()=>Vf,FaceDetection:()=>yt,FaceDetectionNet:()=>_w,FaceExpressionNet:()=>Wp,FaceExpressions:()=>Pr,FaceLandmark68Net:()=>ho,FaceLandmark68TinyNet:()=>Hp,FaceLandmarkNet:()=>Tw,FaceLandmarks:()=>Gn,FaceLandmarks5:()=>pw,FaceLandmarks68:()=>io,FaceMatch:()=>Au,FaceMatcher:()=>rd,FaceRecognitionNet:()=>mo,Gender:()=>pr,LabeledBox:()=>$u,LabeledFaceDescriptors:()=>lr,NetInput:()=>cr,NeuralNetwork:()=>nn,ObjectDetection:()=>Rr,Point:()=>De,PredictedBox:()=>dw,Rect:()=>so,SsdMobilenetv1:()=>Ts,SsdMobilenetv1Options:()=>ia,TinyFaceDetector:()=>bo,TinyFaceDetectorOptions:()=>Yp,TinyYolov2:()=>go,TinyYolov2Options:()=>Va,allFaces:()=>yE,allFacesSsdMobilenetv1:()=>Pw,allFacesTinyYolov2:()=>gE,awaitMediaLoaded:()=>Ef,bufferToImage:()=>_f,computeFaceDescriptor:()=>nE,createCanvas:()=>oo,createCanvasFromMedia:()=>Mu,createFaceDetectionNet:()=>BC,createFaceRecognitionNet:()=>AC,createSsdMobilenetv1:()=>Ew,createTinyFaceDetector:()=>bE,createTinyYolov2:()=>XC,detectAllFaces:()=>ad,detectFaceLandmarks:()=>$w,detectFaceLandmarksTiny:()=>tE,detectLandmarks:()=>mE,detectSingleFace:()=>fE,draw:()=>Gf,env:()=>st,euclideanDistance:()=>Kf,extendWithAge:()=>Kp,extendWithFaceDescriptor:()=>qp,extendWithFaceDetection:()=>xs,extendWithFaceExpressions:()=>Vp,extendWithFaceLandmarks:()=>po,extendWithGender:()=>Xp,extractFaceTensors:()=>uo,extractFaces:()=>lo,fetchImage:()=>dC,fetchJson:()=>$f,fetchNetWeights:()=>hC,fetchOrThrow:()=>Is,getContext2dOrThrow:()=>xn,getMediaDimensions:()=>ks,imageTensorToCanvas:()=>Ff,imageToSquare:()=>Af,inverseSigmoid:()=>uC,iou:()=>kf,isMediaElement:()=>Pp,isMediaLoaded:()=>Du,isWithAge:()=>$C,isWithFaceDetection:()=>Ba,isWithFaceExpressions:()=>Uf,isWithFaceLandmarks:()=>Ns,isWithGender:()=>DC,loadAgeGenderModel:()=>pE,loadFaceDetectionModel:()=>dE,loadFaceExpressionModel:()=>cE,loadFaceLandmarkModel:()=>oE,loadFaceLandmarkTinyModel:()=>lE,loadFaceRecognitionModel:()=>uE,loadSsdMobilenetv1Model:()=>Dw,loadTinyFaceDetectorModel:()=>sE,loadTinyYolov2Model:()=>iE,loadWeightMap:()=>Mf,locateFaces:()=>hE,matchDimensions:()=>mC,minBbox:()=>If,nets:()=>Qe,nonMaxSuppression:()=>Nf,normalize:()=>va,padToSquare:()=>Tf,predictAgeAndGender:()=>rE,recognizeFaceExpressions:()=>aE,resizeResults:()=>Ow,resolveInput:()=>vs,shuffleArray:()=>lC,sigmoid:()=>Fu,ssdMobilenetv1:()=>Aw,tf:()=>Ad,tinyFaceDetector:()=>QC,tinyYolov2:()=>eE,toNetInput:()=>ft,utils:()=>xf,validateConfig:()=>qf,version:()=>xE});var Ad={};oc(Ad,{Abs:()=>Lo,Acos:()=>zo,Acosh:()=>Bo,AdadeltaOptimizer:()=>am,AdagradOptimizer:()=>rm,AdamOptimizer:()=>sm,AdamaxOptimizer:()=>im,Add:()=>qr,AddN:()=>Rs,All:()=>Ld,Any:()=>zd,ArgMax:()=>Ps,ArgMin:()=>dc,Asin:()=>Wo,Asinh:()=>Vo,Atan:()=>Uo,Atan2:()=>Ho,Atanh:()=>Go,AvgPool:()=>Os,AvgPool3D:()=>hc,AvgPool3DGrad:()=>Wd,AvgPoolGrad:()=>Bd,BackendWasm:()=>iC,BatchMatMul:()=>Ls,BatchToSpaceND:()=>mc,Bincount:()=>Vd,BroadcastTo:()=>d0,Callback:()=>oN,CallbackList:()=>sI,Cast:()=>zs,Ceil:()=>jo,ClipByValue:()=>Kr,Complex:()=>Ud,ComplexAbs:()=>fc,Concat:()=>qo,Conv2D:()=>Bs,Conv2DBackpropFilter:()=>Gd,Conv2DBackpropInput:()=>Ws,Conv3D:()=>gc,Conv3DBackpropFilterV2:()=>Hd,Conv3DBackpropInputV2:()=>jd,Cos:()=>Vs,Cosh:()=>Ko,CropAndResize:()=>Xo,Cumsum:()=>Us,CustomCallback:()=>oI,DataStorage:()=>Md,DenseBincount:()=>qd,DepthToSpace:()=>Yo,DepthwiseConv2dNative:()=>Gs,DepthwiseConv2dNativeBackpropFilter:()=>Kd,DepthwiseConv2dNativeBackpropInput:()=>Xd,Diag:()=>Yd,Dilation2D:()=>yc,Dilation2DBackpropFilter:()=>Zd,Dilation2DBackpropInput:()=>Jd,ENV:()=>sy,EarlyStopping:()=>uN,Elu:()=>Jo,EluGrad:()=>Qd,Environment:()=>u0,Equal:()=>Qo,Erf:()=>Zo,Exp:()=>js,ExpandDims:()=>el,Expm1:()=>tl,FFT:()=>eh,Fill:()=>bc,FlipLeftRight:()=>nl,Floor:()=>qs,FloorDiv:()=>Ks,FromPixels:()=>mh,FusedBatchNorm:()=>Xs,FusedConv2D:()=>Si,FusedDepthwiseConv2D:()=>Ci,GatherNd:()=>rl,GatherV2:()=>al,GraphModel:()=>LN,Greater:()=>sl,GreaterEqual:()=>Ys,History:()=>iI,IFFT:()=>th,Identity:()=>il,Imag:()=>nh,InputSpec:()=>Zt,IsFinite:()=>ol,IsInf:()=>ll,IsNan:()=>ul,KernelBackend:()=>uc,LRN:()=>wc,LRNGrad:()=>rh,LayerVariable:()=>eI,LayersModel:()=>_r,LeakyRelu:()=>Js,Less:()=>cl,LessEqual:()=>pl,LinSpace:()=>ah,Log:()=>Zs,Log1p:()=>dl,LogSoftmax:()=>h0,LogicalAnd:()=>hl,LogicalNot:()=>xc,LogicalOr:()=>vc,Max:()=>Qs,MaxPool:()=>ti,MaxPool3D:()=>kc,MaxPool3DGrad:()=>ih,MaxPoolGrad:()=>sh,MaxPoolWithArgmax:()=>oh,Maximum:()=>ei,Mean:()=>ni,Min:()=>ai,Minimum:()=>ri,MirrorPad:()=>Ic,Mod:()=>ml,MomentumOptimizer:()=>om,Multinomial:()=>lh,Multiply:()=>si,Neg:()=>fl,NonMaxSuppressionV3:()=>yl,NonMaxSuppressionV4:()=>bl,NonMaxSuppressionV5:()=>xl,NotEqual:()=>gl,OP_SCOPE_SUFFIX:()=>N0,OneHot:()=>ii,OnesLike:()=>vl,Optimizer:()=>Sr,Pack:()=>wl,PadV2:()=>oi,Pool:()=>_F,Pow:()=>li,Prelu:()=>ui,Prod:()=>kl,RMSPropOptimizer:()=>lm,RNN:()=>ar,Range:()=>Nc,Rank:()=>hy,Real:()=>uh,RealDiv:()=>Hs,Reciprocal:()=>Il,Reduction:()=>fn,Relu:()=>ci,Relu6:()=>di,Reshape:()=>Nl,ResizeBilinear:()=>pi,ResizeBilinearGrad:()=>ph,ResizeNearestNeighbor:()=>Tc,ResizeNearestNeighborGrad:()=>ch,Reverse:()=>hi,RotateWithOffset:()=>zl,Round:()=>mi,Rsqrt:()=>fi,SGDOptimizer:()=>ep,ScatterNd:()=>Tl,Select:()=>Sl,Selu:()=>Cl,Sequential:()=>uu,Sigmoid:()=>yi,Sign:()=>Fl,Sin:()=>gi,Sinh:()=>_l,Slice:()=>El,Softmax:()=>vi,Softplus:()=>Al,SpaceToBatchND:()=>Sc,SparseToDense:()=>dh,SplitV:()=>$l,Sqrt:()=>bi,Square:()=>Cc,SquaredDifference:()=>wi,Step:()=>Ll,StridedSlice:()=>Dl,Sub:()=>ki,Sum:()=>xi,SymbolicTensor:()=>Da,Tan:()=>Ml,Tanh:()=>Ii,Tensor:()=>z,TensorBuffer:()=>Bt,Tile:()=>Xr,TopK:()=>Rl,Transpose:()=>Ni,Unique:()=>hh,Unpack:()=>Pl,UnsortedSegmentSum:()=>Ec,Variable:()=>Yr,ZerosLike:()=>Ol,_FusedMatMul:()=>Ti,abs:()=>Wt,acos:()=>Py,acosh:()=>Oy,add:()=>Z,addN:()=>ik,addStrict:()=>Gk,all:()=>Eh,any:()=>Lc,argMax:()=>zc,argMin:()=>Ly,asin:()=>zy,asinh:()=>By,atan:()=>Wy,atan2:()=>Vy,atanh:()=>Uy,avgPool:()=>Zn,avgPool3d:()=>jy,backend:()=>sk,backend_util:()=>_,basicLSTMCell:()=>rD,batchNorm:()=>wr,batchNorm2d:()=>ck,batchNorm3d:()=>pk,batchNorm4d:()=>dk,batchToSpaceND:()=>Wc,bincount:()=>hk,booleanMaskAsync:()=>lP,broadcastTo:()=>Vc,browser:()=>Ai,buffer:()=>Le,callbacks:()=>hV,cast:()=>pe,ceil:()=>qy,clipByValue:()=>Yt,clone:()=>es,complex:()=>Jr,concat:()=>Ze,concat1d:()=>mk,concat2d:()=>fk,concat3d:()=>gk,concat4d:()=>yk,constraints:()=>C1,conv1d:()=>Fh,conv2d:()=>$t,conv2dTranspose:()=>Ah,conv3d:()=>Xy,conv3dTranspose:()=>SD,copyRegisteredKernels:()=>$F,cos:()=>Uc,cosh:()=>$h,cosineWindow:()=>vb,cumsum:()=>Dh,customGrad:()=>Xa,data:()=>BN,denseBincount:()=>xk,deprecationWarn:()=>Pt,depthToSpace:()=>Yy,depthwiseConv2d:()=>kr,deregisterOp:()=>fV,device_util:()=>vh,diag:()=>MD,dilation2d:()=>Jy,disableDeprecationWarnings:()=>g$,dispose:()=>Ae,disposeVariables:()=>y$,div:()=>ve,divNoNan:()=>Zy,divStrict:()=>Hk,dot:()=>vk,dropout:()=>n1,elu:()=>Xl,enableDebugMode:()=>f$,enableProdMode:()=>m$,enclosingPowerOfTwo:()=>a1,engine:()=>ns,env:()=>ee,equal:()=>Ir,equalStrict:()=>Lk,erf:()=>Qy,exp:()=>mn,expandDims:()=>Qn,expm1:()=>eb,eye:()=>tb,fft:()=>Jc,fill:()=>Nn,findBackend:()=>N$,findBackendFactory:()=>T$,floor:()=>Yl,floorDiv:()=>Ch,fused:()=>os,gather:()=>Mi,gatherND:()=>t1,gather_util:()=>_y,getBackend:()=>k$,getGradient:()=>uy,getKernel:()=>ly,getKernelsForBackend:()=>fh,grad:()=>uM,grads:()=>cM,greater:()=>ea,greaterEqual:()=>Nr,greaterEqualStrict:()=>zk,greaterStrict:()=>Bk,ifft:()=>tu,imag:()=>Mh,image:()=>Za,inTopKAsync:()=>MP,initializers:()=>M1,input:()=>q1,io:()=>Kt,irfft:()=>Xh,isFinite:()=>wk,isInf:()=>kk,isNaN:()=>Ik,keep:()=>Xt,kernel_impls:()=>Qa,layers:()=>j1,leakyRelu:()=>Gc,less:()=>Hc,lessEqual:()=>rs,lessEqualStrict:()=>Wk,lessStrict:()=>Vk,linalg:()=>f1,linspace:()=>Nk,loadGraphModel:()=>fU,loadLayersModel:()=>D4,localResponseNormalization:()=>nb,log:()=>Dn,log1p:()=>Rh,logSigmoid:()=>Sk,logSoftmax:()=>Oh,logSumExp:()=>sb,logicalAnd:()=>ha,logicalNot:()=>jc,logicalOr:()=>Lh,logicalXor:()=>Fk,losses:()=>XO,matMul:()=>ze,math:()=>B0,max:()=>ta,maxPool:()=>Dt,maxPool3d:()=>ib,maxPoolWithArgmax:()=>Ak,maximum:()=>Sa,maximumStrict:()=>jk,mean:()=>Ct,memory:()=>Th,metrics:()=>rN,min:()=>Zl,minimum:()=>Pi,minimumStrict:()=>qk,mirrorPad:()=>ob,mod:()=>zh,modStrict:()=>Kk,model:()=>A4,models:()=>sN,moments:()=>Bh,movingAverage:()=>SP,mul:()=>L,mulStrict:()=>Xk,multiRNNCell:()=>zM,multinomial:()=>$k,neg:()=>St,nextFrame:()=>um,norm:()=>Zh,notEqual:()=>ss,notEqualStrict:()=>Uk,oneHot:()=>Hl,ones:()=>Ya,onesLike:()=>Mn,op:()=>R,outerProduct:()=>GM,pad:()=>na,pad1d:()=>qM,pad2d:()=>XM,pad3d:()=>JM,pad4d:()=>QM,pool:()=>Dk,pow:()=>Ja,powStrict:()=>Yk,prelu:()=>Kc,print:()=>M0,prod:()=>Wh,profile:()=>b$,rand:()=>lR,randomGamma:()=>dR,randomNormal:()=>Mk,randomUniform:()=>Ql,range:()=>Vh,ready:()=>w$,real:()=>Xc,reciprocal:()=>cb,registerBackend:()=>Sh,registerCallbackConstructor:()=>M4,registerGradient:()=>m0,registerKernel:()=>Fc,registerOp:()=>mV,regularizers:()=>iN,relu:()=>Xe,relu6:()=>Uh,removeBackend:()=>I$,reshape:()=>j,reverse:()=>Rn,reverse1d:()=>wR,reverse2d:()=>IR,reverse3d:()=>TR,reverse4d:()=>CR,rfft:()=>Zc,round:()=>pb,rsqrt:()=>Gh,scalar:()=>de,scatterND:()=>e1,scatter_util:()=>Fy,selu:()=>Hh,separableConv2d:()=>Oi,sequential:()=>$4,serialization:()=>se,setBackend:()=>v$,setPlatform:()=>S$,setWasmPath:()=>tse,setWasmPaths:()=>nse,setdiff1dAsync:()=>Rk,sigmoid:()=>da,sign:()=>db,signal:()=>KO,sin:()=>jh,sinh:()=>qh,slice:()=>We,slice1d:()=>Kh,slice2d:()=>hb,slice3d:()=>eu,slice4d:()=>Yc,slice_util:()=>hn,softmax:()=>Ca,softplus:()=>Jl,spaceToBatchND:()=>qc,sparseToDense:()=>xb,spectral:()=>qO,split:()=>Pn,sqrt:()=>rn,square:()=>lt,squaredDifference:()=>Qc,squaredDifferenceStrict:()=>Jk,squeeze:()=>is,stack:()=>Mt,step:()=>nu,stridedSlice:()=>mb,sub:()=>fe,subStrict:()=>Zk,sum:()=>Ce,sumOutType:()=>xh,tan:()=>fb,tanh:()=>Kl,tensor:()=>Yn,tensor1d:()=>tt,tensor2d:()=>Ea,tensor3d:()=>Ih,tensor4d:()=>_a,tensor5d:()=>QR,tensor6d:()=>eP,tensor_util:()=>Ta,test_util:()=>tk,tidy:()=>D,tile:()=>Ka,time:()=>x$,topk:()=>gb,train:()=>zi,transpose:()=>Ue,truncatedNormal:()=>Yh,unique:()=>Jh,unregisterGradient:()=>AF,unregisterKernel:()=>FF,unsortedSegmentSum:()=>yb,unstack:()=>pt,upcastType:()=>pa,util:()=>k,valueAndGrad:()=>pM,valueAndGrads:()=>dM,variable:()=>Pk,variableGrads:()=>Tk,version:()=>hte,version_converter:()=>zN,version_core:()=>rk,version_layers:()=>Dm,version_wasm:()=>ase,where:()=>In,whereAsync:()=>bb,zeros:()=>bt,zerosLike:()=>He});var U_=Object.create,$d=Object.defineProperty,G_=Object.getPrototypeOf,H_=Object.prototype.hasOwnProperty,j_=Object.getOwnPropertyNames,q_=Object.getOwnPropertyDescriptor,Xw=e=>$d(e,"__esModule",{value:!0}),dn=(e,t)=>()=>(t||(t={exports:{}},e(t.exports,t)),t.exports),Oe=(e,t)=>{Xw(e);for(var n in t)$d(e,n,{get:t[n],enumerable:!0})},K_=(e,t,n)=>{if(Xw(e),t&&typeof t=="object"||typeof t=="function")for(let a of j_(t))!H_.call(e,a)&&a!=="default"&&$d(e,a,{get:()=>t[a],enumerable:!(n=q_(t,a))||n.enumerable});return e},Ro=e=>e&&e.__esModule?e:K_($d(e!=null?U_(G_(e)):{},"default",{value:e,enumerable:!0}),e),X_=dn(()=>{}),Y_=dn((e,t)=>{(function(n,a,r){function s(c){var u=this,p=l();u.next=function(){var d=2091639*u.s0+u.c*23283064365386963e-26;return u.s0=u.s1,u.s1=u.s2,u.s2=d-(u.c=d|0)},u.c=1,u.s0=p(" "),u.s1=p(" "),u.s2=p(" "),u.s0-=p(c),u.s0<0&&(u.s0+=1),u.s1-=p(c),u.s1<0&&(u.s1+=1),u.s2-=p(c),u.s2<0&&(u.s2+=1),p=null}function i(c,u){return u.c=c.c,u.s0=c.s0,u.s1=c.s1,u.s2=c.s2,u}function o(c,u){var p=new s(c),d=u&&u.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"&&i(d,p),h.state=function(){return i(p,{})}),h}function l(){var c=4022871197,u=function(p){p=p.toString();for(var d=0;d>>0,h-=c,h*=c,c=h>>>0,h-=c,c+=h*4294967296}return(c>>>0)*23283064365386963e-26};return u}a&&a.exports?a.exports=o:r&&r.amd?r(function(){return o}):this.alea=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),J_=dn((e,t)=>{(function(n,a,r){function s(l){var c=this,u="";c.x=0,c.y=0,c.z=0,c.w=0,c.next=function(){var d=c.x^c.x<<11;return c.x=c.y,c.y=c.z,c.z=c.w,c.w^=c.w>>>19^d^d>>>8},l===(l|0)?c.x=l:u+=l;for(var p=0;p>>0)/4294967296};return d.double=function(){do var h=u.next()>>>11,m=(u.next()>>>0)/4294967296,f=(h+m)/(1<<21);while(f===0);return f},d.int32=u.next,d.quick=d,p&&(typeof p=="object"&&i(p,u),d.state=function(){return i(u,{})}),d}a&&a.exports?a.exports=o:r&&r.amd?r(function(){return o}):this.xor128=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),Z_=dn((e,t)=>{(function(n,a,r){function s(l){var c=this,u="";c.next=function(){var d=c.x^c.x>>>2;return c.x=c.y,c.y=c.z,c.z=c.w,c.w=c.v,(c.d=c.d+362437|0)+(c.v=c.v^c.v<<4^(d^d<<1))|0},c.x=0,c.y=0,c.z=0,c.w=0,c.v=0,l===(l|0)?c.x=l:u+=l;for(var p=0;p>>4),c.next()}function i(l,c){return c.x=l.x,c.y=l.y,c.z=l.z,c.w=l.w,c.v=l.v,c.d=l.d,c}function o(l,c){var u=new s(l),p=c&&c.state,d=function(){return(u.next()>>>0)/4294967296};return d.double=function(){do var h=u.next()>>>11,m=(u.next()>>>0)/4294967296,f=(h+m)/(1<<21);while(f===0);return f},d.int32=u.next,d.quick=d,p&&(typeof p=="object"&&i(p,u),d.state=function(){return i(u,{})}),d}a&&a.exports?a.exports=o:r&&r.amd?r(function(){return o}):this.xorwow=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),Q_=dn((e,t)=>{(function(n,a,r){function s(l){var c=this;c.next=function(){var p=c.x,d=c.i,h,m,f;return h=p[d],h^=h>>>7,m=h^h<<24,h=p[d+1&7],m^=h^h>>>10,h=p[d+3&7],m^=h^h>>>3,h=p[d+4&7],m^=h^h<<7,h=p[d+7&7],h=h^h<<13,m^=h^h<<9,p[d]=m,c.i=d+1&7,m};function u(p,d){var h,m,f=[];if(d===(d|0))m=f[0]=d;else for(d=""+d,h=0;h0;--h)p.next()}u(c,l)}function i(l,c){return c.x=l.x.slice(),c.i=l.i,c}function o(l,c){l==null&&(l=+new Date);var u=new s(l),p=c&&c.state,d=function(){return(u.next()>>>0)/4294967296};return d.double=function(){do var h=u.next()>>>11,m=(u.next()>>>0)/4294967296,f=(h+m)/(1<<21);while(f===0);return f},d.int32=u.next,d.quick=d,p&&(p.x&&i(p,u),d.state=function(){return i(u,{})}),d}a&&a.exports?a.exports=o:r&&r.amd?r(function(){return o}):this.xorshift7=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),eF=dn((e,t)=>{(function(n,a,r){function s(l){var c=this;c.next=function(){var p=c.w,d=c.X,h=c.i,m,f;return c.w=p=p+1640531527|0,f=d[h+34&127],m=d[h=h+1&127],f^=f<<13,m^=m<<17,f^=f>>>15,m^=m>>>12,f=d[h]=f^m,c.i=h,f+(p^p>>>16)|0};function u(p,d){var h,m,f,g,y,b=[],x=128;for(d===(d|0)?(m=d,d=null):(d=d+"\0",m=0,x=Math.max(x,d.length)),f=0,g=-32;g>>15,m^=m<<4,m^=m>>>13,g>=0&&(y=y+1640531527|0,h=b[g&127]^=m+y,f=h==0?f+1:0);for(f>=128&&(b[(d&&d.length||0)&127]=-1),f=127,g=4*128;g>0;--g)m=b[f+34&127],h=b[f=f+1&127],m^=m<<13,h^=h<<17,m^=m>>>15,h^=h>>>12,b[f]=m^h;p.w=y,p.X=b,p.i=f}u(c,l)}function i(l,c){return c.i=l.i,c.w=l.w,c.X=l.X.slice(),c}function o(l,c){l==null&&(l=+new Date);var u=new s(l),p=c&&c.state,d=function(){return(u.next()>>>0)/4294967296};return d.double=function(){do var h=u.next()>>>11,m=(u.next()>>>0)/4294967296,f=(h+m)/(1<<21);while(f===0);return f},d.int32=u.next,d.quick=d,p&&(p.X&&i(p,u),d.state=function(){return i(u,{})}),d}a&&a.exports?a.exports=o:r&&r.amd?r(function(){return o}):this.xor4096=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),tF=dn((e,t)=>{(function(n,a,r){function s(l){var c=this,u="";c.next=function(){var d=c.b,h=c.c,m=c.d,f=c.a;return d=d<<25^d>>>7^h,h=h-m|0,m=m<<24^m>>>8^f,f=f-d|0,c.b=d=d<<20^d>>>12^h,c.c=h=h-m|0,c.d=m<<16^h>>>16^f,c.a=f-d|0},c.a=0,c.b=0,c.c=2654435769|0,c.d=1367130551,l===Math.floor(l)?(c.a=l/4294967296|0,c.b=l|0):u+=l;for(var p=0;p>>0)/4294967296};return d.double=function(){do var h=u.next()>>>11,m=(u.next()>>>0)/4294967296,f=(h+m)/(1<<21);while(f===0);return f},d.int32=u.next,d.quick=d,p&&(typeof p=="object"&&i(p,u),d.state=function(){return i(u,{})}),d}a&&a.exports?a.exports=o:r&&r.amd?r(function(){return o}):this.tychei=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),nF=dn(()=>{}),aF=dn((e,t)=>{(function(n,a){var r=this,s=256,i=6,o=52,l="random",c=a.pow(s,i),u=a.pow(2,o),p=u*2,d=s-1,h;function m(N,T,E){var A=[];T=T==!0?{entropy:!0}:T||{};var $=b(y(T.entropy?[N,v(n)]:N==null?x():N,3),A),O=new f(A),V=function(){for(var W=O.g(i),H=c,X=0;W=p;)W/=2,H/=2,X>>>=1;return(W+X)/H};return V.int32=function(){return O.g(4)|0},V.quick=function(){return O.g(4)/4294967296},V.double=V,b(v(O.S),n),(T.pass||E||function(W,H,X,q){return q&&(q.S&&g(q,O),W.state=function(){return g(O,{})}),X?(a[l]=W,H):W})(V,$,"global"in T?T.global:this==a,T.state)}a["seed"+l]=m;function f(N){var T,E=N.length,A=this,$=0,O=A.i=A.j=0,V=A.S=[];for(E||(N=[E++]);${var n=Y_(),a=J_(),r=Z_(),s=Q_(),i=eF(),o=tF(),l=aF();l.alea=n,l.xor128=a,l.xorwow=r,l.xorshift7=s,l.xor4096=i,l.tychei=o,t.exports=l}),rF=dn(()=>{}),lc=dn(()=>{}),sF=dn(()=>{}),iF=dn(()=>{}),oF=dn((e,t)=>{var n=function(){var a=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(a=a||__filename),function(r){r=r||{};function s(){return ae.buffer!=Nt&&ka(ae.buffer),an}function i(){return ae.buffer!=Nt&&ka(ae.buffer),kn}function o(){return ae.buffer!=Nt&&ka(ae.buffer),pn}function l(){return ae.buffer!=Nt&&ka(ae.buffer),jn}function c(){return ae.buffer!=Nt&&ka(ae.buffer),hr}var u=typeof r!="undefined"?r:{},p=void 0,d={},h;for(h in u)u.hasOwnProperty(h)&&(d[h]=u[h]);var m=[],f="./this.program",g=function(w,S){throw S},y=!1,b=!1,x=!1,v=!1;y=typeof window=="object",b=typeof importScripts=="function",x=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",v=!y&&!x&&!b;var N=u.ENVIRONMENT_IS_PTHREAD||!1;N&&(Nt=u.buffer,Na=u.DYNAMIC_BASE,Ss=u.DYNAMICTOP_PTR);var T="";function E(w){return u.locateFile?u.locateFile(w,T):T+w}var A,$,O,V,W,H;if(x){b?T=lc().dirname(T)+"/":T=__dirname+"/",A=function(w,S){return W||(W=require("fs")),H||(H=lc()),w=H.normalize(w),W.readFileSync(w,S?null:"utf8")},O=function(w){var S=A(w,!0);return S.buffer||(S=new Uint8Array(S)),Te(S.buffer),S},process.argv.length>1&&(f=process.argv[1].replace(/\\/g,"/")),m=process.argv.slice(2),process.on("uncaughtException",function(w){if(!(w instanceof jw))throw w}),process.on("unhandledRejection",gr),g=function(w){process.exit(w)},u.inspect=function(){return"[Emscripten Module object]"};var X;try{X=sF()}catch(w){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),w}Worker=X.Worker}else v?(typeof read!="undefined"&&(A=function(w){return read(w)}),O=function(w){var S;return typeof readbuffer=="function"?new Uint8Array(readbuffer(w)):(S=read(w,"binary"),Te(typeof S=="object"),S)},typeof scriptArgs!="undefined"?m=scriptArgs:typeof arguments!="undefined"&&(m=arguments),typeof quit=="function"&&(g=function(w){quit(w)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(y||b)&&(b?T=self.location.href:document.currentScript&&(T=document.currentScript.src),p&&(T=p),T.indexOf("blob:")!==0?T=T.substr(0,T.lastIndexOf("/")+1):T="",x?(A=function(w,S){return W||(W=require("fs")),H||(H=lc()),w=H.normalize(w),W.readFileSync(w,S?null:"utf8")},O=function(w){var S=A(w,!0);return S.buffer||(S=new Uint8Array(S)),Te(S.buffer),S}):(A=function(w){var S=new XMLHttpRequest;return S.open("GET",w,!1),S.send(null),S.responseText},b&&(O=function(w){var S=new XMLHttpRequest;return S.open("GET",w,!1),S.responseType="arraybuffer",S.send(null),new Uint8Array(S.response)}),$=function(w,S,M){var G=new XMLHttpRequest;G.open("GET",w,!0),G.responseType="arraybuffer",G.onload=function(){if(G.status==200||G.status==0&&G.response){S(G.response);return}M()},G.onerror=M,G.send(null)}),V=function(w){document.title=w});x&&typeof performance=="undefined"&&(performance=iF().performance);var q=u.print||console.log.bind(console),K=u.printErr||console.warn.bind(console);for(h in d)d.hasOwnProperty(h)&&(u[h]=d[h]);d=null,u.arguments&&(m=u.arguments),u.thisProgram&&(f=u.thisProgram),u.quit&&(g=u.quit);var J=Atomics.load,te=Atomics.store,Q=Atomics.compareExchange,ie;u.wasmBinary&&(ie=u.wasmBinary);var re;u.noExitRuntime&&(re=u.noExitRuntime),typeof WebAssembly!="object"&&K("no native wasm support detected");var ae,oe=new WebAssembly.Table({initial:169,maximum:169+0,element:"anyfunc"}),he,ce=0,ge=0,be=!1,Ie=0;function Te(w,S){w||gr("Assertion failed: "+S)}function Ee(w){var S=u["_"+w];return Te(S,"Cannot call unknown function "+w+", make sure it is exported"),S}function Me(w,S,M,G,me){var ue={string:function(Xn){var Gr=0;if(Xn!=null&&Xn!==0){var ic=(Xn.length<<2)+1;Gr=Ao(ic),Ge(Xn,Gr,ic)}return Gr},array:function(Xn){var Gr=Ao(Xn.length);return gt(Xn,Gr),Gr}};function le(Xn){return S==="string"?Ve(Xn):S==="boolean"?Boolean(Xn):Xn}var we=Ee(w),et=[],Lt=0;if(G)for(var ln=0;ln=G);){var ue=w[S++];if(!ue)return me;if(!(ue&128)){me+=String.fromCharCode(ue);continue}var le=w[S++]&63;if((ue&224)==192){me+=String.fromCharCode((ue&31)<<6|le);continue}var we=w[S++]&63;if((ue&240)==224?ue=(ue&15)<<12|le<<6|we:ue=(ue&7)<<18|le<<12|we<<6|w[S++]&63,ue<65536)me+=String.fromCharCode(ue);else{var et=ue-65536;me+=String.fromCharCode(55296|et>>10,56320|et&1023)}}return me}function Ve(w,S){return w?nt(i(),w,S):""}function ut(w,S,M,G){if(!(G>0))return 0;for(var me=M,ue=M+G-1,le=0;le=55296&&we<=57343){var et=w.charCodeAt(++le);we=65536+((we&1023)<<10)|et&1023}if(we<=127){if(M>=ue)break;S[M++]=we}else if(we<=2047){if(M+1>=ue)break;S[M++]=192|we>>6,S[M++]=128|we&63}else if(we<=65535){if(M+2>=ue)break;S[M++]=224|we>>12,S[M++]=128|we>>6&63,S[M++]=128|we&63}else{if(M+3>=ue)break;S[M++]=240|we>>18,S[M++]=128|we>>12&63,S[M++]=128|we>>6&63,S[M++]=128|we&63}}return S[M]=0,M-me}function Ge(w,S,M){return ut(w,i(),S,M)}function ct(w){for(var S=0,M=0;M=55296&&G<=57343&&(G=65536+((G&1023)<<10)|w.charCodeAt(++M)&1023),G<=127?++S:G<=2047?S+=2:G<=65535?S+=3:S+=4}return S}function gt(w,S){s().set(w,S)}var Fn=65536;function _t(w,S){return w%S>0&&(w+=S-w%S),w}var Nt,an,kn,la,An,pn,jn,dr,hr;function ka(w){Nt=w,u.HEAP8=an=new Int8Array(w),u.HEAP16=la=new Int16Array(w),u.HEAP32=pn=new Int32Array(w),u.HEAPU8=kn=new Uint8Array(w),u.HEAPU16=An=new Uint16Array(w),u.HEAPU32=jn=new Uint32Array(w),u.HEAPF32=dr=new Float32Array(w),u.HEAPF64=hr=new Float64Array(w)}var Io=5256464,Ia=Io,Ua=13584,Na=5256464,Ss=12656,sd=u.INITIAL_MEMORY||16777216;if(N)ae=u.wasmMemory,Nt=u.buffer;else if(u.wasmMemory)ae=u.wasmMemory;else if(ae=new WebAssembly.Memory({initial:sd/Fn,maximum:2147483648/Fn,shared:!0}),!(ae.buffer instanceof SharedArrayBuffer))throw K("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"),x&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"),Error("bad memory");ae&&(Nt=ae.buffer),sd=Nt.byteLength,ka(Nt),N||(o()[Ss>>2]=Na);function mr(w){for(;w.length>0;){var S=w.shift();if(typeof S=="function"){S(u);continue}var M=S.func;typeof M=="number"?S.arg===void 0?u.dynCall_v(M):u.dynCall_vi(M,S.arg):M(S.arg===void 0?null:S.arg)}}var ju=[],id=[],od=[],ld=[],qu=[],qn=!1;N&&(qn=!0);function ud(){if(!N){if(u.preRun)for(typeof u.preRun=="function"&&(u.preRun=[u.preRun]);u.preRun.length;)Cs(u.preRun.shift());mr(ju)}}function Xf(){qn=!0,mr(id)}function Yf(){N||mr(od)}function Jf(){if(!N){if(u.postRun)for(typeof u.postRun=="function"&&(u.postRun=[u.postRun]);u.postRun.length;)No(u.postRun.shift());mr(qu)}}function Cs(w){ju.unshift(w)}function No(w){qu.unshift(w)}var Zf=Math.ceil,Qf=Math.floor,fr=0,Ku=null,Es=null;function eg(w){Te(!N,"addRunDependency cannot be used in a pthread worker"),fr++,u.monitorRunDependencies&&u.monitorRunDependencies(fr)}function cd(w){if(fr--,u.monitorRunDependencies&&u.monitorRunDependencies(fr),fr==0&&(Ku!==null&&(clearInterval(Ku),Ku=null),Es)){var S=Es;Es=null,S()}}u.preloadedImages={},u.preloadedAudios={};function gr(w){throw u.onAbort&&u.onAbort(w),N&&console.error("Pthread aborting at "+new Error().stack),w+="",q(w),K(w),be=!0,Ie=1,w="abort("+w+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(w)}function pd(w,S){return String.prototype.startsWith?w.startsWith(S):w.indexOf(S)===0}var tg="data:application/octet-stream;base64,";function dd(w){return pd(w,tg)}var ng="file://";function hd(w){return pd(w,ng)}var ua="tfjs-backend-wasm-threaded-simd.wasm";dd(ua)||(ua=E(ua));function md(){try{if(ie)return new Uint8Array(ie);if(O)return O(ua);throw"both async and sync fetching of the wasm failed"}catch(w){gr(w)}}function ag(){return!ie&&(y||b)&&typeof fetch=="function"&&!hd(ua)?fetch(ua,{credentials:"same-origin"}).then(function(w){if(!w.ok)throw"failed to load wasm binary file at '"+ua+"'";return w.arrayBuffer()}).catch(function(){return md()}):new Promise(function(w,S){w(md())})}function rg(){var w={a:Td};function S(le,we){var et=le.exports;if(u.asm=et,he=we,!N){var Lt=ye.unusedWorkers.length;ye.unusedWorkers.forEach(function(ln){ye.loadWasmModuleToWorker(ln,function(){--Lt||cd("wasm-instantiate")})})}}N||eg("wasm-instantiate");function M(le){S(le.instance,le.module)}function G(le){return ag().then(function(we){return WebAssembly.instantiate(we,w)}).then(le,function(we){K("failed to asynchronously prepare wasm: "+we),gr(we)})}function me(){if(!ie&&typeof WebAssembly.instantiateStreaming=="function"&&!dd(ua)&&!hd(ua)&&typeof fetch=="function")fetch(ua,{credentials:"same-origin"}).then(function(le){var we=WebAssembly.instantiateStreaming(le,w);return we.then(M,function(et){K("wasm streaming compile failed: "+et),K("falling back to ArrayBuffer instantiation"),G(M)})});else return G(M)}if(u.instantiateWasm)try{var ue=u.instantiateWasm(w,S);return ue}catch(le){return K("Module.instantiateWasm callback failed with error: "+le),!1}return me(),{}}var sg={};function ig(){ye.initRuntime()}N||id.push({func:function(){Ju()}});var fd=0,gd=0,yd=0;function To(w,S,M){w=w|0,S=S|0,M=M|0,fd=w,yd=S,gd=M}u.__register_pthread_ptr=To;var Xu={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},So=13568;function Co(w,S){if(w<=0||w>s().length||w&!0||S<0)return-28;if(S==0)return 0;S>=2147483647&&(S=Infinity);var M=Atomics.load(o(),So>>2),G=0;if(M==w){var me=Atomics.compareExchange(o(),So>>2,M,0);if(me==M&&(--S,G=1,S<=0))return 1}var ue=Atomics.notify(o(),w>>2,S);if(ue>=0)return ue+G;throw"Atomics.notify returned an unexpected value "+ue}u._emscripten_futex_wake=Co;function og(w){if(N)throw"Internal Error! _kill_thread() can only ever be called from main application thread!";if(!w)throw"Internal Error! Null pthread_ptr in _kill_thread!";o()[w+12>>2]=0;var S=ye.pthreads[w];S.worker.terminate(),ye.freeThreadData(S),ye.runningWorkers.splice(ye.runningWorkers.indexOf(S.worker),1),S.worker.pthread=void 0}function lg(w){if(N)throw"Internal Error! _cancel_thread() can only ever be called from main application thread!";if(!w)throw"Internal Error! Null pthread_ptr in _cancel_thread!";var S=ye.pthreads[w];S.worker.postMessage({cmd:"cancel"})}function ug(w){if(N)throw"Internal Error! _cleanup_thread() can only ever be called from main application thread!";if(!w)throw"Internal Error! Null pthread_ptr in _cleanup_thread!";o()[w+12>>2]=0;var S=ye.pthreads[w];if(S){var M=S.worker;ye.returnWorkerToPool(M)}}var ye={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){To(ye.mainThreadBlock,!b,1),Vw(ye.mainThreadBlock)},initMainThreadBlock:function(){for(var w=8,S=0;S>2]=ye.mainThreadBlock;var M=ye.mainThreadBlock+156;o()[M>>2]=M;for(var G=13056,S=0;S<128;++S)l()[G/4+S]=0;Atomics.store(l(),ye.mainThreadBlock+104>>2,G),Atomics.store(l(),ye.mainThreadBlock+40>>2,ye.mainThreadBlock),Atomics.store(l(),ye.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(ye.exitHandlers!==null){for(;ye.exitHandlers.length>0;)ye.exitHandlers.pop()();ye.exitHandlers=null}N&&ce&&Ww()},threadExit:function(w){var S=Ga();S&&(Atomics.store(l(),S+4>>2,w),Atomics.store(l(),S+0>>2,1),Atomics.store(l(),S+60>>2,1),Atomics.store(l(),S+64>>2,0),ye.runExitHandlers(),Co(S+0,2147483647),To(0,0,0),ce=0,N&&postMessage({cmd:"exit"}))},threadCancel:function(){ye.runExitHandlers(),Atomics.store(l(),ce+4>>2,-1),Atomics.store(l(),ce+0>>2,1),Co(ce+0,2147483647),ce=ge=0,To(0,0,0),postMessage({cmd:"cancelDone"})},terminateAllThreads:function(){for(var w in ye.pthreads){var S=ye.pthreads[w];S&&S.worker&&ye.returnWorkerToPool(S.worker)}ye.pthreads={};for(var M=0;M>2];o()[w.threadInfoStruct+104>>2]=0,nc(S),nc(w.threadInfoStruct)}w.threadInfoStruct=0,w.allocatedOwnStack&&w.stackBase&&nc(w.stackBase),w.stackBase=0,w.worker&&(w.worker.pthread=null)}},returnWorkerToPool:function(w){delete ye.pthreads[w.pthread.thread],ye.unusedWorkers.push(w),ye.runningWorkers.splice(ye.runningWorkers.indexOf(w),1),ye.freeThreadData(w.pthread),w.pthread=void 0},receiveObjectTransfer:function(w){},loadWasmModuleToWorker:function(w,S){w.onmessage=function(M){var G=M.data,me=G.cmd;if(w.pthread&&(ye.currentProxiedOperationCallerThread=w.pthread.threadInfoStruct),G.targetThread&&G.targetThread!=Ga()){var ue=ye.pthreads[G.targetThread];ue?ue.worker.postMessage(M.data,G.transferList):console.error('Internal error! Worker sent a message "'+me+'" to target pthread '+G.targetThread+", but that thread no longer exists!"),ye.currentProxiedOperationCallerThread=void 0;return}if(me==="processQueuedMainThreadWork")Jg();else if(me==="spawnThread")Id(M.data);else if(me==="cleanupThread")ug(G.thread);else if(me==="killThread")og(G.thread);else if(me==="cancelThread")lg(G.thread);else if(me==="loaded")w.loaded=!0,S&&S(w),w.runPthread&&(w.runPthread(),delete w.runPthread);else if(me==="print")q("Thread "+G.threadId+": "+G.text);else if(me==="printErr")K("Thread "+G.threadId+": "+G.text);else if(me==="alert")alert("Thread "+G.threadId+": "+G.text);else if(me==="exit"){var le=w.pthread&&Atomics.load(l(),w.pthread.thread+68>>2);le&&ye.returnWorkerToPool(w)}else me==="cancelDone"?ye.returnWorkerToPool(w):me==="objectTransfer"?ye.receiveObjectTransfer(M.data):M.data.target==="setimmediate"?w.postMessage(M.data):K("worker sent an unknown command "+me);ye.currentProxiedOperationCallerThread=void 0},w.onerror=function(M){K("pthread sent an error! "+M.filename+":"+M.lineno+": "+M.message)},x&&(w.on("message",function(M){w.onmessage({data:M})}),w.on("error",function(M){w.onerror(M)}),w.on("exit",function(M){console.log("worker exited - TODO: update the worker queue?")})),w.postMessage({cmd:"load",urlOrBlob:u.mainScriptUrlOrBlob||p,wasmMemory:ae,wasmModule:he,DYNAMIC_BASE:Na,DYNAMICTOP_PTR:Ss})},allocateUnusedWorker:function(){var w=E("tfjs-backend-wasm-threaded-simd.worker.js");ye.unusedWorkers.push(new Worker(w))},getNewWorker:function(){return ye.unusedWorkers.length==0&&(ye.allocateUnusedWorker(),ye.loadWasmModuleToWorker(ye.unusedWorkers[0])),ye.unusedWorkers.length>0?ye.unusedWorkers.pop():null},busySpinWait:function(w){for(var S=performance.now()+w;performance.now()>2]=w,w}function fg(w,S){if(N)return Wr(1,1,w,S);ld.unshift({func:w,arg:S})}function gg(w,S){if(w==S)postMessage({cmd:"processQueuedMainThreadWork"});else if(N)postMessage({targetThread:w,cmd:"processThreadQueue"});else{var M=ye.pthreads[w],G=M&&M.worker;if(!G)return;G.postMessage({cmd:"processThreadQueue"})}return 1}function yg(){gr()}function bg(w,S){w=w|0,S=S|0}function xg(w,S,M){if(w<=0||w>s().length||w&!0)return-28;if(b){var G=Atomics.wait(o(),w>>2,S,M);if(G==="timed-out")return-73;if(G==="not-equal")return-6;if(G==="ok")return 0;throw"Atomics.wait returned an unexpected value "+G}else{var me=Atomics.load(o(),w>>2);if(S!=me)return-6;var ue=performance.now(),le=ue+M;Atomics.store(o(),So>>2,w);for(var we=w;w==we;){if(ue=performance.now(),ue>le)return-73;Jg(),w=Atomics.load(o(),So>>2)}return 0}}function vg(){return yd|0}function wg(){return gd|0}function kg(w,S,M){i().copyWithin(w,S,S+M)}function Ig(){return navigator.hardwareConcurrency}function Wr(w,S){for(var M=arguments.length-2,G=ac(),me=Ao(M*8),ue=me>>3,le=0;le>3]),S+=8):(S=S+3&~3,M.push(o()[S>>2]),S+=4);return M}function Ng(w,S,M){Fs.length=S;for(var G=M>>3,me=0;me>>16),ka(ae.buffer),1}catch(S){}}function Cg(w){w=w>>>0;var S=Tg();if(w<=S)return!1;var M=65536,G=2147483648;if(w>G)return!1;for(var me=16777216,ue=1;ue<=4;ue*=2){var le=S*(1+.2/ue);le=Math.min(le,w+100663296);var we=Math.min(G,_t(Math.max(me,w,le),M)),et=Sg(we);if(et)return!0}return!1}var Pe={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:!1,removeAllEventListeners:function(){for(var w=Pe.eventHandlers.length-1;w>=0;--w)Pe._removeHandler(w);Pe.eventHandlers=[],Pe.deferredCalls=[]},registerRemoveEventListeners:function(){Pe.removeEventListenersRegistered||(ld.push(Pe.removeAllEventListeners),Pe.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(w,S,M){function G(le,we){if(le.length!=we.length)return!1;for(var et in le)if(le[et]!=we[et])return!1;return!0}for(var me in Pe.deferredCalls){var ue=Pe.deferredCalls[me];if(ue.targetFunction==w&&G(ue.argsList,M))return}Pe.deferredCalls.push({targetFunction:w,precedence:S,argsList:M}),Pe.deferredCalls.sort(function(le,we){return le.precedence>2]=M,o()[le+4>>2]=G,o()[le+8>>2]=me,Zg(w,637534208,S,G,le),$o(ue)},getTargetThreadForEventCallback:function(w){switch(w){case 1:return 0;case 2:return ye.currentProxiedOperationCallerThread;default:return w}},getNodeNameForTarget:function(w){return w?w==window?"#window":w==screen?"#screen":w&&w.nodeName?w.nodeName:"":""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function Eg(w){var S=ct(w)+1,M=tc(S);return Ge(w,M,S),M}function _g(w,S,M,G){var me=ac(),ue=Ao(12),le=0;S&&(le=Eg(S)),o()[ue>>2]=le,o()[ue+4>>2]=M,o()[ue+8>>2]=G,Zg(w,657457152,0,le,ue),$o(me)}function Fg(w,S,M,G){S=S?Ve(S):"",_g(w,S,M,G)}function Ag(w){return w>2?Ve(w):w}var $g=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function Dg(w){w=Ag(w);var S=$g[w]||(typeof document!="undefined"?document.querySelector(w):void 0);return S}function Yu(w){return Dg(w)}function bd(w,S,M){var G=Yu(w);if(!G)return-4;if(G.canvasSharedPtr&&(o()[G.canvasSharedPtr>>2]=S,o()[G.canvasSharedPtr+4>>2]=M),G.offscreenCanvas||!G.controlTransferredOffscreen){G.offscreenCanvas&&(G=G.offscreenCanvas);var me=!1;if(G.GLctxObject&&G.GLctxObject.GLctx){var ue=G.GLctxObject.GLctx.getParameter(2978);me=ue[0]===0&&ue[1]===0&&ue[2]===G.width&&ue[3]===G.height}G.width=S,G.height=M,me&&G.GLctxObject.GLctx.viewport(0,0,S,M)}else if(G.canvasSharedPtr){var le=o()[G.canvasSharedPtr+8>>2];return Fg(le,w,S,M),1}else return-4;return 0}function xd(w,S,M){return N?Wr(2,1,w,S,M):bd(w,S,M)}function Mg(w,S,M){var G=Yu(w);return G?bd(w,S,M):xd(w,S,M)}function Rg(w){w=w|0}function Pg(w,S){w=w|0,S=S|0}function Og(w){var S=w.getExtension("ANGLE_instanced_arrays");if(S)return w.vertexAttribDivisor=function(M,G){S.vertexAttribDivisorANGLE(M,G)},w.drawArraysInstanced=function(M,G,me,ue){S.drawArraysInstancedANGLE(M,G,me,ue)},w.drawElementsInstanced=function(M,G,me,ue,le){S.drawElementsInstancedANGLE(M,G,me,ue,le)},1}function Lg(w){var S=w.getExtension("OES_vertex_array_object");if(S)return w.createVertexArray=function(){return S.createVertexArrayOES()},w.deleteVertexArray=function(M){S.deleteVertexArrayOES(M)},w.bindVertexArray=function(M){S.bindVertexArrayOES(M)},w.isVertexArray=function(M){return S.isVertexArrayOES(M)},1}function zg(w){var S=w.getExtension("WEBGL_draw_buffers");if(S)return w.drawBuffers=function(M,G){S.drawBuffersWEBGL(M,G)},1}var Be={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){for(var w=new Float32Array(Be.MINI_TEMP_BUFFER_SIZE),S=0;S>2]:-1;me+=Ve(o()[M+ue*4>>2],le<0?void 0:le)}return me},createContext:function(w,S){var M=w.getContext("webgl",S);if(!M)return 0;var G=Be.registerContext(M,S);return G},registerContext:function(w,S){var M=tc(8);o()[M+4>>2]=Ga();var G={handle:M,attributes:S,version:S.majorVersion,GLctx:w};return w.canvas&&(w.canvas.GLctxObject=G),Be.contexts[M]=G,(typeof S.enableExtensionsByDefault=="undefined"||S.enableExtensionsByDefault)&&Be.initExtensions(G),M},makeContextCurrent:function(w){return Be.currentContext=Be.contexts[w],u.ctx=Vr=Be.currentContext&&Be.currentContext.GLctx,!(w&&!Vr)},getContext:function(w){return Be.contexts[w]},deleteContext:function(w){Be.currentContext===Be.contexts[w]&&(Be.currentContext=null),typeof Pe=="object"&&Pe.removeAllHandlersOnTarget(Be.contexts[w].GLctx.canvas),Be.contexts[w]&&Be.contexts[w].GLctx.canvas&&(Be.contexts[w].GLctx.canvas.GLctxObject=void 0),nc(Be.contexts[w].handle),Be.contexts[w]=null},initExtensions:function(w){if(w||(w=Be.currentContext),!w.initExtensionsDone){w.initExtensionsDone=!0;var S=w.GLctx;Og(S),Lg(S),zg(S),S.disjointTimerQueryExt=S.getExtension("EXT_disjoint_timer_query");var M=["OES_texture_float","OES_texture_half_float","OES_standard_derivatives","OES_vertex_array_object","WEBGL_compressed_texture_s3tc","WEBGL_depth_texture","OES_element_index_uint","EXT_texture_filter_anisotropic","EXT_frag_depth","WEBGL_draw_buffers","ANGLE_instanced_arrays","OES_texture_float_linear","OES_texture_half_float_linear","EXT_blend_minmax","EXT_shader_texture_lod","EXT_texture_norm16","WEBGL_compressed_texture_pvrtc","EXT_color_buffer_half_float","WEBGL_color_buffer_float","EXT_sRGB","WEBGL_compressed_texture_etc1","EXT_disjoint_timer_query","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_astc","EXT_color_buffer_float","WEBGL_compressed_texture_s3tc_srgb","EXT_disjoint_timer_query_webgl2","WEBKIT_WEBGL_compressed_texture_pvrtc"],G=S.getSupportedExtensions()||[];G.forEach(function(me){M.indexOf(me)!=-1&&S.getExtension(me)})}},populateUniformTable:function(w){for(var S=Be.programs[w],M=Be.programInfos[w]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1},G=M.uniforms,me=Vr.getProgramParameter(S,35718),ue=0;ue>2;M.alpha=!!o()[G+(0>>2)],M.depth=!!o()[G+(4>>2)],M.stencil=!!o()[G+(8>>2)],M.antialias=!!o()[G+(12>>2)],M.premultipliedAlpha=!!o()[G+(16>>2)],M.preserveDrawingBuffer=!!o()[G+(20>>2)];var me=o()[G+(24>>2)];M.powerPreference=Bg[me],M.failIfMajorPerformanceCaveat=!!o()[G+(28>>2)],M.majorVersion=o()[G+(32>>2)],M.minorVersion=o()[G+(36>>2)],M.enableExtensionsByDefault=o()[G+(40>>2)],M.explicitSwapControl=o()[G+(44>>2)],M.proxyContextToMainThread=o()[G+(48>>2)],M.renderViaOffscreenBackBuffer=o()[G+(52>>2)];var ue=Yu(w);if(!ue)return-4;if(M.explicitSwapControl)return-1;var le=Be.createContext(ue,M);return le}function Vg(w,S){return Wg(w,S)}var As={splitPath:function(w){var S=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return S.exec(w).slice(1)},normalizeArray:function(w,S){for(var M=0,G=w.length-1;G>=0;G--){var me=w[G];me==="."?w.splice(G,1):me===".."?(w.splice(G,1),M++):M&&(w.splice(G,1),M--)}if(S)for(;M;M--)w.unshift("..");return w},normalize:function(w){var S=w.charAt(0)==="/",M=w.substr(-1)==="/";return w=As.normalizeArray(w.split("/").filter(function(G){return!!G}),!S).join("/"),!w&&!S&&(w="."),w&&M&&(w+="/"),(S?"/":"")+w},dirname:function(w){var S=As.splitPath(w),M=S[0],G=S[1];return!M&&!G?".":(G&&(G=G.substr(0,G.length-1)),M+G)},basename:function(w){if(w==="/")return"/";var S=w.lastIndexOf("/");return S===-1?w:w.substr(S+1)},extname:function(w){return As.splitPath(w)[3]},join:function(){var w=Array.prototype.slice.call(arguments,0);return As.normalize(w.join("/"))},join2:function(w,S){return As.normalize(w+"/"+S)}},_o={mappings:{},buffers:[null,[],[]],printChar:function(w,S){var M=_o.buffers[w];S===0||S===10?((w===1?q:K)(nt(M,0)),M.length=0):M.push(S)},varargs:void 0,get:function(){_o.varargs+=4;var w=o()[_o.varargs-4>>2];return w},getStr:function(w){var S=Ve(w);return S},get64:function(w,S){return w}};function vd(w){return N?Wr(3,1,w):0}function wd(w,S,M,G,me){if(N)return Wr(4,1,w,S,M,G,me)}function kd(w,S,M,G){if(N)return Wr(5,1,w,S,M,G);for(var me=0,ue=0;ue>2],we=o()[S+(ue*8+4)>>2],et=0;et>2]=me,0}function Ug(w){var S=ye.exitHandlers.pop();w&&S()}function Gg(w,S){ye.exitHandlers===null&&(ye.exitHandlers=[]),ye.exitHandlers.push(function(){Hw(w,S)})}function Id(w){if(N)throw"Internal Error! _spawn_thread() can only ever be called from main application thread!";var S=ye.getNewWorker();if(S.pthread!==void 0)throw"Internal error!";if(!w.pthread_ptr)throw"Internal error, no pthread ptr!";ye.runningWorkers.push(S);for(var M=tc(128*4),G=0;G<128;++G)o()[M+G*4>>2]=0;var me=w.stackBase+w.stackSize,ue=ye.pthreads[w.pthread_ptr]={worker:S,stackBase:w.stackBase,stackSize:w.stackSize,allocatedOwnStack:w.allocatedOwnStack,thread:w.pthread_ptr,threadInfoStruct:w.pthread_ptr},le=ue.threadInfoStruct>>2;Atomics.store(l(),le+(0>>2),0),Atomics.store(l(),le+(4>>2),0),Atomics.store(l(),le+(8>>2),0),Atomics.store(l(),le+(68>>2),w.detached),Atomics.store(l(),le+(104>>2),M),Atomics.store(l(),le+(48>>2),0),Atomics.store(l(),le+(40>>2),ue.threadInfoStruct),Atomics.store(l(),le+(44>>2),42),Atomics.store(l(),le+(108>>2),w.stackSize),Atomics.store(l(),le+(84>>2),w.stackSize),Atomics.store(l(),le+(80>>2),me),Atomics.store(l(),le+(108+8>>2),me),Atomics.store(l(),le+(108+12>>2),w.detached),Atomics.store(l(),le+(108+20>>2),w.schedPolicy),Atomics.store(l(),le+(108+24>>2),w.schedPrio);var we=Lw(),et=we+40;Atomics.store(l(),le+(176>>2),et),S.pthread=ue;var Lt={cmd:"run",start_routine:w.startRoutine,arg:w.arg,threadInfoStruct:w.pthread_ptr,selfThreadId:w.pthread_ptr,parentThreadId:w.parent_pthread_ptr,stackBase:w.stackBase,stackSize:w.stackSize};S.runPthread=function(){Lt.time=performance.now(),S.postMessage(Lt,w.transferList)},S.loaded&&(S.runPthread(),delete S.runPthread)}function Hg(w,S,M){if(!S&&!M)return Xu.EINVAL;if(!w)return K("pthread_getschedparam called with a null thread pointer!"),Xu.ESRCH;var G=o()[w+12>>2];if(G!==w)return K("pthread_getschedparam attempted on thread "+w+", which does not point to a valid thread, or does not exist anymore!"),Xu.ESRCH;var me=Atomics.load(l(),w+108+20>>2),ue=Atomics.load(l(),w+108+24>>2);return S&&(o()[S>>2]=me),M&&(o()[M>>2]=ue),0}function Ga(){return fd|0}u._pthread_self=Ga;function jg(w,S,M,G){if(typeof SharedArrayBuffer=="undefined")return K("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;if(!w)return K("pthread_create called with a null thread pointer!"),28;var me=[],ue=0;if(N&&(me.length===0||ue))return Uw(687865856,w,S,M,G);if(ue)return ue;var le=0,we=0,et=0,Lt=0,ln=0;if(S){le=o()[S>>2],le+=81920,we=o()[S+8>>2],et=o()[S+12>>2]!==0;var Do=o()[S+16>>2]===0;if(Do){var sc=o()[S+20>>2],Xn=o()[S+24>>2],Gr=ye.currentProxiedOperationCallerThread?ye.currentProxiedOperationCallerThread:Ga();Hg(Gr,S+20,S+24),Lt=o()[S+20>>2],ln=o()[S+24>>2],o()[S+20>>2]=sc,o()[S+24>>2]=Xn}else Lt=o()[S+20>>2],ln=o()[S+24>>2]}else le=2097152;var ic=we==0;ic?we=Bw(16,le):(we-=le,Te(we>0));for(var Mo=tc(232),ey=0;ey<232>>2;++ey)l()[(Mo>>2)+ey]=0;o()[w>>2]=Mo,o()[Mo+12>>2]=Mo;var qw=Mo+156;o()[qw>>2]=qw;var ty={stackBase:we,stackSize:le,allocatedOwnStack:ic,schedPolicy:Lt,schedPrio:ln,detached:et,startRoutine:M,pthread_ptr:Mo,parent_pthread_ptr:Ga(),arg:G,transferList:me};return N?(ty.cmd="spawnThread",postMessage(ty,me)):Id(ty),0}function qg(w){return w=+w,w>=0?+Qf(w+.5):+Zf(w-.5)}function Nd(w){if(N)return Wr(6,1,w);switch(w){case 30:return 16384;case 85:var S=2147483648;return S/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return typeof navigator=="object"&&navigator.hardwareConcurrency||1}return mg(28),-1}N?ye.initWorker():ye.initMainThreadBlock();var Vr;Be.init();var Kg=[null,fg,xd,vd,wd,kd,Nd],Td={e:dg,r:hg,w:gg,a:yg,l:bg,d:xg,c:Co,h:_s,g:vg,x:wg,q:kg,B:Ig,t:Ng,A:Cg,u:Mg,k:Rg,s:Pg,v:Vg,m:vd,o:wd,i:kd,p:ig,memory:ae||u.wasmMemory,y:Ug,z:Gg,j:jg,b:Ga,f:qg,n:Nd,table:oe},Fo=rg();u.asm=Fo;var Ju=u.___wasm_call_ctors=function(){return(Ju=u.___wasm_call_ctors=u.asm.C).apply(null,arguments)},$s=u._init=function(){return($s=u._init=u.asm.D).apply(null,arguments)},Zu=u._register_tensor=function(){return(Zu=u._register_tensor=u.asm.E).apply(null,arguments)},Xg=u._dispose_data=function(){return(Xg=u._dispose_data=u.asm.F).apply(null,arguments)},Yg=u._dispose=function(){return(Yg=u._dispose=u.asm.G).apply(null,arguments)},Qu=u._Abs=function(){return(Qu=u._Abs=u.asm.H).apply(null,arguments)},Sd=u._Add=function(){return(Sd=u._Add=u.asm.I).apply(null,arguments)},Cd=u._AddN=function(){return(Cd=u._AddN=u.asm.J).apply(null,arguments)},U=u._ArgMax=function(){return(U=u._ArgMax=u.asm.K).apply(null,arguments)},ne=u._AvgPool=function(){return(ne=u._AvgPool=u.asm.L).apply(null,arguments)},Ne=u._BatchMatMul=function(){return(Ne=u._BatchMatMul=u.asm.M).apply(null,arguments)},_e=u._ClipByValue=function(){return(_e=u._ClipByValue=u.asm.N).apply(null,arguments)},at=u._Conv2D=function(){return(at=u._Conv2D=u.asm.O).apply(null,arguments)},Ft=u._Conv2DBackpropInput=function(){return(Ft=u._Conv2DBackpropInput=u.asm.P).apply(null,arguments)},Ke=u._Cos=function(){return(Ke=u._Cos=u.asm.Q).apply(null,arguments)},je=u._CropAndResize=function(){return(je=u._CropAndResize=u.asm.R).apply(null,arguments)},jt=u._Cumsum=function(){return(jt=u._Cumsum=u.asm.S).apply(null,arguments)},yr=u._DepthToSpace=function(){return(yr=u._DepthToSpace=u.asm.T).apply(null,arguments)},br=u._DepthwiseConv2dNative=function(){return(br=u._DepthwiseConv2dNative=u.asm.U).apply(null,arguments)},Ed=u._Equal=function(){return(Ed=u._Equal=u.asm.V).apply(null,arguments)},ec=u._Exp=function(){return(ec=u._Exp=u.asm.W).apply(null,arguments)},Kn=u._FlipLeftRight=function(){return(Kn=u._FlipLeftRight=u.asm.X).apply(null,arguments)},Ur=u._Floor=function(){return(Ur=u._Floor=u.asm.Y).apply(null,arguments)},_d=u._FloorDiv=function(){return(_d=u._FloorDiv=u.asm.Z).apply(null,arguments)},vE=u._FusedBatchNorm=function(){return(vE=u._FusedBatchNorm=u.asm._).apply(null,arguments)},wE=u._FusedConv2D=function(){return(wE=u._FusedConv2D=u.asm.$).apply(null,arguments)},kE=u._FusedDepthwiseConv2D=function(){return(kE=u._FusedDepthwiseConv2D=u.asm.aa).apply(null,arguments)},IE=u._Gather=function(){return(IE=u._Gather=u.asm.ba).apply(null,arguments)},NE=u._GatherNd=function(){return(NE=u._GatherNd=u.asm.ca).apply(null,arguments)},TE=u._Greater=function(){return(TE=u._Greater=u.asm.da).apply(null,arguments)},SE=u._GreaterEqual=function(){return(SE=u._GreaterEqual=u.asm.ea).apply(null,arguments)},CE=u._LeakyRelu=function(){return(CE=u._LeakyRelu=u.asm.fa).apply(null,arguments)},EE=u._Less=function(){return(EE=u._Less=u.asm.ga).apply(null,arguments)},_E=u._LessEqual=function(){return(_E=u._LessEqual=u.asm.ha).apply(null,arguments)},FE=u._Log=function(){return(FE=u._Log=u.asm.ia).apply(null,arguments)},AE=u._LogicalAnd=function(){return(AE=u._LogicalAnd=u.asm.ja).apply(null,arguments)},$E=u._Max=function(){return($E=u._Max=u.asm.ka).apply(null,arguments)},DE=u._MaxPool=function(){return(DE=u._MaxPool=u.asm.la).apply(null,arguments)},ME=u._Maximum=function(){return(ME=u._Maximum=u.asm.ma).apply(null,arguments)},RE=u._Mean=function(){return(RE=u._Mean=u.asm.na).apply(null,arguments)},PE=u._Min=function(){return(PE=u._Min=u.asm.oa).apply(null,arguments)},OE=u._Minimum=function(){return(OE=u._Minimum=u.asm.pa).apply(null,arguments)},LE=u._Multiply=function(){return(LE=u._Multiply=u.asm.qa).apply(null,arguments)},zE=u._Neg=function(){return(zE=u._Neg=u.asm.ra).apply(null,arguments)},BE=u._NonMaxSuppressionV3=function(){return(BE=u._NonMaxSuppressionV3=u.asm.sa).apply(null,arguments)},WE=u._NonMaxSuppressionV4=function(){return(WE=u._NonMaxSuppressionV4=u.asm.ta).apply(null,arguments)},VE=u._NonMaxSuppressionV5=function(){return(VE=u._NonMaxSuppressionV5=u.asm.ua).apply(null,arguments)},UE=u._NotEqual=function(){return(UE=u._NotEqual=u.asm.va).apply(null,arguments)},GE=u._OneHot=function(){return(GE=u._OneHot=u.asm.wa).apply(null,arguments)},HE=u._PadV2=function(){return(HE=u._PadV2=u.asm.xa).apply(null,arguments)},jE=u._Pow=function(){return(jE=u._Pow=u.asm.ya).apply(null,arguments)},qE=u._Prelu=function(){return(qE=u._Prelu=u.asm.za).apply(null,arguments)},KE=u._Prod=function(){return(KE=u._Prod=u.asm.Aa).apply(null,arguments)},XE=u._RealDiv=function(){return(XE=u._RealDiv=u.asm.Ba).apply(null,arguments)},YE=u._Relu=function(){return(YE=u._Relu=u.asm.Ca).apply(null,arguments)},JE=u._Relu6=function(){return(JE=u._Relu6=u.asm.Da).apply(null,arguments)},ZE=u._ResizeBilinear=function(){return(ZE=u._ResizeBilinear=u.asm.Ea).apply(null,arguments)},QE=u._Reverse=function(){return(QE=u._Reverse=u.asm.Fa).apply(null,arguments)},e_=u._RotateWithOffset=function(){return(e_=u._RotateWithOffset=u.asm.Ga).apply(null,arguments)},t_=u._Round=function(){return(t_=u._Round=u.asm.Ha).apply(null,arguments)},n_=u._Rsqrt=function(){return(n_=u._Rsqrt=u.asm.Ia).apply(null,arguments)},a_=u._ScatterNd=function(){return(a_=u._ScatterNd=u.asm.Ja).apply(null,arguments)},r_=u._SelectV2=function(){return(r_=u._SelectV2=u.asm.Ka).apply(null,arguments)},s_=u._Sigmoid=function(){return(s_=u._Sigmoid=u.asm.La).apply(null,arguments)},i_=u._Sin=function(){return(i_=u._Sin=u.asm.Ma).apply(null,arguments)},o_=u._Softmax=function(){return(o_=u._Softmax=u.asm.Na).apply(null,arguments)},l_=u._Sqrt=function(){return(l_=u._Sqrt=u.asm.Oa).apply(null,arguments)},u_=u._Square=function(){return(u_=u._Square=u.asm.Pa).apply(null,arguments)},c_=u._SquaredDifference=function(){return(c_=u._SquaredDifference=u.asm.Qa).apply(null,arguments)},p_=u._StridedSlice=function(){return(p_=u._StridedSlice=u.asm.Ra).apply(null,arguments)},d_=u._Sub=function(){return(d_=u._Sub=u.asm.Sa).apply(null,arguments)},h_=u._Sum=function(){return(h_=u._Sum=u.asm.Ta).apply(null,arguments)},m_=u._Tanh=function(){return(m_=u._Tanh=u.asm.Ua).apply(null,arguments)},f_=u._Tile=function(){return(f_=u._Tile=u.asm.Va).apply(null,arguments)},g_=u._TopK=function(){return(g_=u._TopK=u.asm.Wa).apply(null,arguments)},y_=u._Transpose=function(){return(y_=u._Transpose=u.asm.Xa).apply(null,arguments)},b_=u.__FusedMatMul=function(){return(b_=u.__FusedMatMul=u.asm.Ya).apply(null,arguments)},tc=u._malloc=function(){return(tc=u._malloc=u.asm.Za).apply(null,arguments)},nc=u._free=function(){return(nc=u._free=u.asm._a).apply(null,arguments)},Lw=u._emscripten_get_global_libc=function(){return(Lw=u._emscripten_get_global_libc=u.asm.$a).apply(null,arguments)},zw=u.___errno_location=function(){return(zw=u.___errno_location=u.asm.ab).apply(null,arguments)},x_=u.___em_js__initPthreadsJS=function(){return(x_=u.___em_js__initPthreadsJS=u.asm.bb).apply(null,arguments)},Bw=u._memalign=function(){return(Bw=u._memalign=u.asm.cb).apply(null,arguments)},Ww=u.___pthread_tsd_run_dtors=function(){return(Ww=u.___pthread_tsd_run_dtors=u.asm.db).apply(null,arguments)},Jg=u._emscripten_main_thread_process_queued_calls=function(){return(Jg=u._emscripten_main_thread_process_queued_calls=u.asm.eb).apply(null,arguments)},v_=u._emscripten_current_thread_process_queued_calls=function(){return(v_=u._emscripten_current_thread_process_queued_calls=u.asm.fb).apply(null,arguments)},Vw=u._emscripten_register_main_browser_thread_id=function(){return(Vw=u._emscripten_register_main_browser_thread_id=u.asm.gb).apply(null,arguments)},w_=u._emscripten_main_browser_thread_id=function(){return(w_=u._emscripten_main_browser_thread_id=u.asm.hb).apply(null,arguments)},k_=u._emscripten_async_run_in_main_thread=function(){return(k_=u._emscripten_async_run_in_main_thread=u.asm.ib).apply(null,arguments)},I_=u._emscripten_sync_run_in_main_thread=function(){return(I_=u._emscripten_sync_run_in_main_thread=u.asm.jb).apply(null,arguments)},N_=u._emscripten_sync_run_in_main_thread_0=function(){return(N_=u._emscripten_sync_run_in_main_thread_0=u.asm.kb).apply(null,arguments)},T_=u._emscripten_sync_run_in_main_thread_1=function(){return(T_=u._emscripten_sync_run_in_main_thread_1=u.asm.lb).apply(null,arguments)},S_=u._emscripten_sync_run_in_main_thread_2=function(){return(S_=u._emscripten_sync_run_in_main_thread_2=u.asm.mb).apply(null,arguments)},C_=u._emscripten_sync_run_in_main_thread_xprintf_varargs=function(){return(C_=u._emscripten_sync_run_in_main_thread_xprintf_varargs=u.asm.nb).apply(null,arguments)},E_=u._emscripten_sync_run_in_main_thread_3=function(){return(E_=u._emscripten_sync_run_in_main_thread_3=u.asm.ob).apply(null,arguments)},Uw=u._emscripten_sync_run_in_main_thread_4=function(){return(Uw=u._emscripten_sync_run_in_main_thread_4=u.asm.pb).apply(null,arguments)},__=u._emscripten_sync_run_in_main_thread_5=function(){return(__=u._emscripten_sync_run_in_main_thread_5=u.asm.qb).apply(null,arguments)},F_=u._emscripten_sync_run_in_main_thread_6=function(){return(F_=u._emscripten_sync_run_in_main_thread_6=u.asm.rb).apply(null,arguments)},A_=u._emscripten_sync_run_in_main_thread_7=function(){return(A_=u._emscripten_sync_run_in_main_thread_7=u.asm.sb).apply(null,arguments)},Gw=u._emscripten_run_in_main_runtime_thread_js=function(){return(Gw=u._emscripten_run_in_main_runtime_thread_js=u.asm.tb).apply(null,arguments)},Zg=u._emscripten_async_queue_on_thread_=function(){return(Zg=u._emscripten_async_queue_on_thread_=u.asm.ub).apply(null,arguments)},$_=u._emscripten_tls_init=function(){return($_=u._emscripten_tls_init=u.asm.vb).apply(null,arguments)},ac=u.stackSave=function(){return(ac=u.stackSave=u.asm.wb).apply(null,arguments)},Ao=u.stackAlloc=function(){return(Ao=u.stackAlloc=u.asm.xb).apply(null,arguments)},$o=u.stackRestore=function(){return($o=u.stackRestore=u.asm.yb).apply(null,arguments)},Hw=u.dynCall_vi=function(){return(Hw=u.dynCall_vi=u.asm.zb).apply(null,arguments)},D_=u.dynCall_v=function(){return(D_=u.dynCall_v=u.asm.Ab).apply(null,arguments)},M_=u.dynCall_ii=function(){return(M_=u.dynCall_ii=u.asm.Bb).apply(null,arguments)};u.asm=Fo,u.cwrap=Je,u.PThread=ye,u.PThread=ye,u._pthread_self=Ga,u.wasmMemory=ae,u.ExitStatus=jw;var rc;u.then=function(w){if(rc)w(u);else{var S=u.onRuntimeInitialized;u.onRuntimeInitialized=function(){S&&S(),w(u)}}return u};function jw(w){this.name="ExitStatus",this.message="Program terminated with exit("+w+")",this.status=w}Es=function w(){rc||Qg(),rc||(Es=w)};function Qg(w){if(w=w||m,fr>0||(ud(),fr>0))return;function S(){rc||(rc=!0,u.calledRun=!0,!be&&(Xf(),Yf(),u.onRuntimeInitialized&&u.onRuntimeInitialized(),Jf()))}u.setStatus?(u.setStatus("Running..."),setTimeout(function(){setTimeout(function(){u.setStatus("")},1),S()},1)):S()}if(u.run=Qg,u.preInit)for(typeof u.preInit=="function"&&(u.preInit=[u.preInit]);u.preInit.length>0;)u.preInit.pop()();return N||(re=!0),N||Qg(),r}}();typeof e=="object"&&typeof t=="object"?t.exports=n:typeof define=="function"&&define.amd?define([],function(){return n}):typeof e=="object"&&(e.WasmBackendModuleThreadedSimd=n)}),lF=dn((e,t)=>{var n=function(){var a=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(a=a||__filename),function(r){r=r||{};var s=typeof r!="undefined"?r:{},i={},o;for(o in s)s.hasOwnProperty(o)&&(i[o]=s[o]);var l=[],c="./this.program",u=function(U,ne){throw ne},p=!1,d=!1,h=!1,m=!1;p=typeof window=="object",d=typeof importScripts=="function",h=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",m=!p&&!h&&!d;var f="";function g(U){return s.locateFile?s.locateFile(U,f):f+U}var y,b,x,v,N,T;h?(d?f=lc().dirname(f)+"/":f=__dirname+"/",y=function(U,ne){return N||(N=require("fs")),T||(T=lc()),U=T.normalize(U),N.readFileSync(U,ne?null:"utf8")},x=function(U){var ne=y(U,!0);return ne.buffer||(ne=new Uint8Array(ne)),q(ne.buffer),ne},process.argv.length>1&&(c=process.argv[1].replace(/\\/g,"/")),l=process.argv.slice(2),process.on("uncaughtException",function(U){if(!(U instanceof Zu))throw U}),process.on("unhandledRejection",mr),u=function(U){process.exit(U)},s.inspect=function(){return"[Emscripten Module object]"}):m?(typeof read!="undefined"&&(y=function(U){return read(U)}),x=function(U){var ne;return typeof readbuffer=="function"?new Uint8Array(readbuffer(U)):(ne=read(U,"binary"),q(typeof ne=="object"),ne)},typeof scriptArgs!="undefined"?l=scriptArgs:typeof arguments!="undefined"&&(l=arguments),typeof quit=="function"&&(u=function(U){quit(U)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(p||d)&&(d?f=self.location.href:document.currentScript&&(f=document.currentScript.src),a&&(f=a),f.indexOf("blob:")!==0?f=f.substr(0,f.lastIndexOf("/")+1):f="",y=function(U){var ne=new XMLHttpRequest;return ne.open("GET",U,!1),ne.send(null),ne.responseText},d&&(x=function(U){var ne=new XMLHttpRequest;return ne.open("GET",U,!1),ne.responseType="arraybuffer",ne.send(null),new Uint8Array(ne.response)}),b=function(U,ne,Ne){var _e=new XMLHttpRequest;_e.open("GET",U,!0),_e.responseType="arraybuffer",_e.onload=function(){if(_e.status==200||_e.status==0&&_e.response){ne(_e.response);return}Ne()},_e.onerror=Ne,_e.send(null)},v=function(U){document.title=U});var E=s.print||console.log.bind(console),A=s.printErr||console.warn.bind(console);for(o in i)i.hasOwnProperty(o)&&(s[o]=i[o]);i=null,s.arguments&&(l=s.arguments),s.thisProgram&&(c=s.thisProgram),s.quit&&(u=s.quit);var $;s.wasmBinary&&($=s.wasmBinary);var O;s.noExitRuntime&&(O=s.noExitRuntime),typeof WebAssembly!="object"&&A("no native wasm support detected");var V,W=new WebAssembly.Table({initial:151,maximum:151+0,element:"anyfunc"}),H=!1,X=0;function q(U,ne){U||mr("Assertion failed: "+ne)}function K(U){var ne=s["_"+U];return q(ne,"Cannot call unknown function "+U+", make sure it is exported"),ne}function J(U,ne,Ne,_e,at){var Ft={string:function(Kn){var Ur=0;if(Kn!=null&&Kn!==0){var _d=(Kn.length<<2)+1;Ur=Fo(_d),oe(Kn,Ur,_d)}return Ur},array:function(Kn){var Ur=Fo(Kn.length);return he(Kn,Ur),Ur}};function Ke(Kn){return ne==="string"?re(Kn):ne==="boolean"?Boolean(Kn):Kn}var je=K(U),jt=[],yr=0;if(_e)for(var br=0;br<_e.length;br++){var Ed=Ft[Ne[br]];Ed?(yr===0&&(yr=Td()),jt[br]=Ed(_e[br])):jt[br]=_e[br]}var ec=je.apply(null,jt);return ec=Ke(ec),yr!==0&&Ju(yr),ec}function te(U,ne,Ne,_e){Ne=Ne||[];var at=Ne.every(function(Ke){return Ke==="number"}),Ft=ne!=="string";return Ft&&at&&!_e?K(U):function(){return J(U,ne,Ne,arguments,_e)}}var Q=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):void 0;function ie(U,ne,Ne){for(var _e=ne+Ne,at=ne;U[at]&&!(at>=_e);)++at;if(at-ne>16&&U.subarray&&Q)return Q.decode(U.subarray(ne,at));for(var Ft="";ne>10,56320|yr&1023)}}return Ft}function re(U,ne){return U?ie(be,U,ne):""}function ae(U,ne,Ne,_e){if(!(_e>0))return 0;for(var at=Ne,Ft=Ne+_e-1,Ke=0;Ke=55296&&je<=57343){var jt=U.charCodeAt(++Ke);je=65536+((je&1023)<<10)|jt&1023}if(je<=127){if(Ne>=Ft)break;ne[Ne++]=je}else if(je<=2047){if(Ne+1>=Ft)break;ne[Ne++]=192|je>>6,ne[Ne++]=128|je&63}else if(je<=65535){if(Ne+2>=Ft)break;ne[Ne++]=224|je>>12,ne[Ne++]=128|je>>6&63,ne[Ne++]=128|je&63}else{if(Ne+3>=Ft)break;ne[Ne++]=240|je>>18,ne[Ne++]=128|je>>12&63,ne[Ne++]=128|je>>6&63,ne[Ne++]=128|je&63}}return ne[Ne]=0,Ne-at}function oe(U,ne,Ne){return ae(U,be,ne,Ne)}function he(U,ne){ge.set(U,ne)}var ce,ge,be,Ie,Te,Ee,Me,Je,nt;function Ve(U){ce=U,s.HEAP8=ge=new Int8Array(U),s.HEAP16=Ie=new Int16Array(U),s.HEAP32=Ee=new Int32Array(U),s.HEAPU8=be=new Uint8Array(U),s.HEAPU16=Te=new Uint16Array(U),s.HEAPU32=Me=new Uint32Array(U),s.HEAPF32=Je=new Float32Array(U),s.HEAPF64=nt=new Float64Array(U)}var ut=s.INITIAL_MEMORY||16777216;function Ge(U){for(;U.length>0;){var ne=U.shift();if(typeof ne=="function"){ne(s);continue}var Ne=ne.func;typeof Ne=="number"?ne.arg===void 0?s.dynCall_v(Ne):s.dynCall_vi(Ne,ne.arg):Ne(ne.arg===void 0?null:ne.arg)}}var ct=[],gt=[],Fn=[],_t=[],Nt=!1,an=!1;function kn(){if(s.preRun)for(typeof s.preRun=="function"&&(s.preRun=[s.preRun]);s.preRun.length;)dr(s.preRun.shift());Ge(ct)}function la(){Nt=!0,Ge(gt)}function An(){Ge(Fn)}function pn(){an=!0}function jn(){if(s.postRun)for(typeof s.postRun=="function"&&(s.postRun=[s.postRun]);s.postRun.length;)hr(s.postRun.shift());Ge(_t)}function dr(U){ct.unshift(U)}function hr(U){_t.unshift(U)}var ka=Math.ceil,Io=Math.floor,Ia=0,Ua=null,Na=null;function Ss(U){Ia++,s.monitorRunDependencies&&s.monitorRunDependencies(Ia)}function sd(U){if(Ia--,s.monitorRunDependencies&&s.monitorRunDependencies(Ia),Ia==0&&(Ua!==null&&(clearInterval(Ua),Ua=null),Na)){var ne=Na;Na=null,ne()}}s.preloadedImages={},s.preloadedAudios={};function mr(U){throw s.onAbort&&s.onAbort(U),U+="",E(U),A(U),H=!0,X=1,U="abort("+U+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(U)}function ju(U,ne){return String.prototype.startsWith?U.startsWith(ne):U.indexOf(ne)===0}var id="data:application/octet-stream;base64,";function od(U){return ju(U,id)}var ld="file://";function qu(U){return ju(U,ld)}var qn="tfjs-backend-wasm.wasm";od(qn)||(qn=g(qn));function ud(){try{if($)return new Uint8Array($);if(x)return x(qn);throw"both async and sync fetching of the wasm failed"}catch(U){mr(U)}}function Xf(){return!$&&(p||d)&&typeof fetch=="function"&&!qu(qn)?fetch(qn,{credentials:"same-origin"}).then(function(U){if(!U.ok)throw"failed to load wasm binary file at '"+qn+"'";return U.arrayBuffer()}).catch(function(){return ud()}):new Promise(function(U,ne){U(ud())})}function Yf(){var U={env:cd,wasi_snapshot_preview1:cd};function ne(Ke,je){var jt=Ke.exports;s.asm=jt,V=jt.memory,Ve(V.buffer),sd("wasm-instantiate")}Ss("wasm-instantiate");function Ne(Ke){ne(Ke.instance)}function _e(Ke){return Xf().then(function(je){return WebAssembly.instantiate(je,U)}).then(Ke,function(je){A("failed to asynchronously prepare wasm: "+je),mr(je)})}function at(){if(!$&&typeof WebAssembly.instantiateStreaming=="function"&&!od(qn)&&!qu(qn)&&typeof fetch=="function")fetch(qn,{credentials:"same-origin"}).then(function(Ke){var je=WebAssembly.instantiateStreaming(Ke,U);return je.then(Ne,function(jt){A("wasm streaming compile failed: "+jt),A("falling back to ArrayBuffer instantiation"),_e(Ne)})});else return _e(Ne)}if(s.instantiateWasm)try{var Ft=s.instantiateWasm(U,ne);return Ft}catch(Ke){return A("Module.instantiateWasm callback failed with error: "+Ke),!1}return at(),{}}gt.push();function Jf(U){Ve(V.buffer)}var Cs={splitPath:function(U){var ne=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return ne.exec(U).slice(1)},normalizeArray:function(U,ne){for(var Ne=0,_e=U.length-1;_e>=0;_e--){var at=U[_e];at==="."?U.splice(_e,1):at===".."?(U.splice(_e,1),Ne++):Ne&&(U.splice(_e,1),Ne--)}if(ne)for(;Ne;Ne--)U.unshift("..");return U},normalize:function(U){var ne=U.charAt(0)==="/",Ne=U.substr(-1)==="/";return U=Cs.normalizeArray(U.split("/").filter(function(_e){return!!_e}),!ne).join("/"),!U&&!ne&&(U="."),U&&Ne&&(U+="/"),(ne?"/":"")+U},dirname:function(U){var ne=Cs.splitPath(U),Ne=ne[0],_e=ne[1];return!Ne&&!_e?".":(_e&&(_e=_e.substr(0,_e.length-1)),Ne+_e)},basename:function(U){if(U==="/")return"/";var ne=U.lastIndexOf("/");return ne===-1?U:U.substr(ne+1)},extname:function(U){return Cs.splitPath(U)[3]},join:function(){var U=Array.prototype.slice.call(arguments,0);return Cs.normalize(U.join("/"))},join2:function(U,ne){return Cs.normalize(U+"/"+ne)}},No={mappings:{},buffers:[null,[],[]],printChar:function(U,ne){var Ne=No.buffers[U];ne===0||ne===10?((U===1?E:A)(ie(Ne,0)),Ne.length=0):Ne.push(ne)},varargs:void 0,get:function(){No.varargs+=4;var U=Ee[No.varargs-4>>2];return U},getStr:function(U){var ne=re(U);return ne},get64:function(U,ne){return U}};function Zf(U){return 0}function Qf(U,ne,Ne,_e,at){}function fr(U,ne,Ne,_e){for(var at=0,Ft=0;Ft>2],je=Ee[ne+(Ft*8+4)>>2],jt=0;jt>2]=at,0}function Ku(U){Sd(U)}function Es(U){Ku(U)}function eg(U){return U=+U,U>=0?+Io(U+.5):+ka(U-.5)}var cd={emscripten_notify_memory_growth:Jf,fd_close:Zf,fd_seek:Qf,fd_write:fr,proc_exit:Es,roundf:eg},gr=Yf();s.asm=gr;var pd=s._init=function(){return(pd=s._init=s.asm.init).apply(null,arguments)},tg=s._register_tensor=function(){return(tg=s._register_tensor=s.asm.register_tensor).apply(null,arguments)},dd=s._dispose_data=function(){return(dd=s._dispose_data=s.asm.dispose_data).apply(null,arguments)},ng=s._dispose=function(){return(ng=s._dispose=s.asm.dispose).apply(null,arguments)},hd=s._Abs=function(){return(hd=s._Abs=s.asm.Abs).apply(null,arguments)},ua=s._Add=function(){return(ua=s._Add=s.asm.Add).apply(null,arguments)},md=s._AddN=function(){return(md=s._AddN=s.asm.AddN).apply(null,arguments)},ag=s._ArgMax=function(){return(ag=s._ArgMax=s.asm.ArgMax).apply(null,arguments)},rg=s._AvgPool=function(){return(rg=s._AvgPool=s.asm.AvgPool).apply(null,arguments)},sg=s._BatchMatMul=function(){return(sg=s._BatchMatMul=s.asm.BatchMatMul).apply(null,arguments)},ig=s._ClipByValue=function(){return(ig=s._ClipByValue=s.asm.ClipByValue).apply(null,arguments)},fd=s._Conv2D=function(){return(fd=s._Conv2D=s.asm.Conv2D).apply(null,arguments)},gd=s._Conv2DBackpropInput=function(){return(gd=s._Conv2DBackpropInput=s.asm.Conv2DBackpropInput).apply(null,arguments)},yd=s._Cos=function(){return(yd=s._Cos=s.asm.Cos).apply(null,arguments)},To=s._CropAndResize=function(){return(To=s._CropAndResize=s.asm.CropAndResize).apply(null,arguments)},Xu=s._Cumsum=function(){return(Xu=s._Cumsum=s.asm.Cumsum).apply(null,arguments)},So=s._DepthToSpace=function(){return(So=s._DepthToSpace=s.asm.DepthToSpace).apply(null,arguments)},Co=s._DepthwiseConv2dNative=function(){return(Co=s._DepthwiseConv2dNative=s.asm.DepthwiseConv2dNative).apply(null,arguments)},og=s._Equal=function(){return(og=s._Equal=s.asm.Equal).apply(null,arguments)},lg=s._Exp=function(){return(lg=s._Exp=s.asm.Exp).apply(null,arguments)},ug=s._FlipLeftRight=function(){return(ug=s._FlipLeftRight=s.asm.FlipLeftRight).apply(null,arguments)},ye=s._Floor=function(){return(ye=s._Floor=s.asm.Floor).apply(null,arguments)},cg=s._FloorDiv=function(){return(cg=s._FloorDiv=s.asm.FloorDiv).apply(null,arguments)},pg=s._FusedBatchNorm=function(){return(pg=s._FusedBatchNorm=s.asm.FusedBatchNorm).apply(null,arguments)},dg=s._FusedConv2D=function(){return(dg=s._FusedConv2D=s.asm.FusedConv2D).apply(null,arguments)},hg=s._FusedDepthwiseConv2D=function(){return(hg=s._FusedDepthwiseConv2D=s.asm.FusedDepthwiseConv2D).apply(null,arguments)},_s=s._Gather=function(){return(_s=s._Gather=s.asm.Gather).apply(null,arguments)},mg=s._GatherNd=function(){return(mg=s._GatherNd=s.asm.GatherNd).apply(null,arguments)},fg=s._Greater=function(){return(fg=s._Greater=s.asm.Greater).apply(null,arguments)},gg=s._GreaterEqual=function(){return(gg=s._GreaterEqual=s.asm.GreaterEqual).apply(null,arguments)},yg=s._LeakyRelu=function(){return(yg=s._LeakyRelu=s.asm.LeakyRelu).apply(null,arguments)},bg=s._Less=function(){return(bg=s._Less=s.asm.Less).apply(null,arguments)},xg=s._LessEqual=function(){return(xg=s._LessEqual=s.asm.LessEqual).apply(null,arguments)},vg=s._Log=function(){return(vg=s._Log=s.asm.Log).apply(null,arguments)},wg=s._LogicalAnd=function(){return(wg=s._LogicalAnd=s.asm.LogicalAnd).apply(null,arguments)},kg=s._Max=function(){return(kg=s._Max=s.asm.Max).apply(null,arguments)},Ig=s._MaxPool=function(){return(Ig=s._MaxPool=s.asm.MaxPool).apply(null,arguments)},Wr=s._Maximum=function(){return(Wr=s._Maximum=s.asm.Maximum).apply(null,arguments)},Fs=s._Mean=function(){return(Fs=s._Mean=s.asm.Mean).apply(null,arguments)},Eo=s._Min=function(){return(Eo=s._Min=s.asm.Min).apply(null,arguments)},Ng=s._Minimum=function(){return(Ng=s._Minimum=s.asm.Minimum).apply(null,arguments)},Tg=s._Multiply=function(){return(Tg=s._Multiply=s.asm.Multiply).apply(null,arguments)},Sg=s._Neg=function(){return(Sg=s._Neg=s.asm.Neg).apply(null,arguments)},Cg=s._NonMaxSuppressionV3=function(){return(Cg=s._NonMaxSuppressionV3=s.asm.NonMaxSuppressionV3).apply(null,arguments)},Pe=s._NonMaxSuppressionV4=function(){return(Pe=s._NonMaxSuppressionV4=s.asm.NonMaxSuppressionV4).apply(null,arguments)},Eg=s._NonMaxSuppressionV5=function(){return(Eg=s._NonMaxSuppressionV5=s.asm.NonMaxSuppressionV5).apply(null,arguments)},_g=s._NotEqual=function(){return(_g=s._NotEqual=s.asm.NotEqual).apply(null,arguments)},Fg=s._OneHot=function(){return(Fg=s._OneHot=s.asm.OneHot).apply(null,arguments)},Ag=s._PadV2=function(){return(Ag=s._PadV2=s.asm.PadV2).apply(null,arguments)},$g=s._Pow=function(){return($g=s._Pow=s.asm.Pow).apply(null,arguments)},Dg=s._Prelu=function(){return(Dg=s._Prelu=s.asm.Prelu).apply(null,arguments)},Yu=s._Prod=function(){return(Yu=s._Prod=s.asm.Prod).apply(null,arguments)},bd=s._RealDiv=function(){return(bd=s._RealDiv=s.asm.RealDiv).apply(null,arguments)},xd=s._Relu=function(){return(xd=s._Relu=s.asm.Relu).apply(null,arguments)},Mg=s._Relu6=function(){return(Mg=s._Relu6=s.asm.Relu6).apply(null,arguments)},Rg=s._ResizeBilinear=function(){return(Rg=s._ResizeBilinear=s.asm.ResizeBilinear).apply(null,arguments)},Pg=s._Reverse=function(){return(Pg=s._Reverse=s.asm.Reverse).apply(null,arguments)},Og=s._RotateWithOffset=function(){return(Og=s._RotateWithOffset=s.asm.RotateWithOffset).apply(null,arguments)},Lg=s._Round=function(){return(Lg=s._Round=s.asm.Round).apply(null,arguments)},zg=s._Rsqrt=function(){return(zg=s._Rsqrt=s.asm.Rsqrt).apply(null,arguments)},Be=s._ScatterNd=function(){return(Be=s._ScatterNd=s.asm.ScatterNd).apply(null,arguments)},Bg=s._SelectV2=function(){return(Bg=s._SelectV2=s.asm.SelectV2).apply(null,arguments)},Wg=s._Sigmoid=function(){return(Wg=s._Sigmoid=s.asm.Sigmoid).apply(null,arguments)},Vg=s._Sin=function(){return(Vg=s._Sin=s.asm.Sin).apply(null,arguments)},As=s._Softmax=function(){return(As=s._Softmax=s.asm.Softmax).apply(null,arguments)},_o=s._Sqrt=function(){return(_o=s._Sqrt=s.asm.Sqrt).apply(null,arguments)},vd=s._Square=function(){return(vd=s._Square=s.asm.Square).apply(null,arguments)},wd=s._SquaredDifference=function(){return(wd=s._SquaredDifference=s.asm.SquaredDifference).apply(null,arguments)},kd=s._StridedSlice=function(){return(kd=s._StridedSlice=s.asm.StridedSlice).apply(null,arguments)},Ug=s._Sub=function(){return(Ug=s._Sub=s.asm.Sub).apply(null,arguments)},Gg=s._Sum=function(){return(Gg=s._Sum=s.asm.Sum).apply(null,arguments)},Id=s._Tanh=function(){return(Id=s._Tanh=s.asm.Tanh).apply(null,arguments)},Hg=s._Tile=function(){return(Hg=s._Tile=s.asm.Tile).apply(null,arguments)},Ga=s._TopK=function(){return(Ga=s._TopK=s.asm.TopK).apply(null,arguments)},jg=s._Transpose=function(){return(jg=s._Transpose=s.asm.Transpose).apply(null,arguments)},qg=s.__FusedMatMul=function(){return(qg=s.__FusedMatMul=s.asm._FusedMatMul).apply(null,arguments)},Nd=s._malloc=function(){return(Nd=s._malloc=s.asm.malloc).apply(null,arguments)},Vr=s._free=function(){return(Vr=s._free=s.asm.free).apply(null,arguments)},Kg=s.__start=function(){return(Kg=s.__start=s.asm._start).apply(null,arguments)},Td=s.stackSave=function(){return(Td=s.stackSave=s.asm.stackSave).apply(null,arguments)},Fo=s.stackAlloc=function(){return(Fo=s.stackAlloc=s.asm.stackAlloc).apply(null,arguments)},Ju=s.stackRestore=function(){return(Ju=s.stackRestore=s.asm.stackRestore).apply(null,arguments)};s.asm=gr,s.cwrap=te;var $s;s.then=function(U){if($s)U(s);else{var ne=s.onRuntimeInitialized;s.onRuntimeInitialized=function(){ne&&ne(),U(s)}}return s};function Zu(U){this.name="ExitStatus",this.message="Program terminated with exit("+U+")",this.status=U}var Xg=!1;Na=function U(){$s||Qu(),$s||(Na=U)};function Yg(U){var ne=s.__start;try{ne();var Ne=0;Sd(Ne,!0)}catch(at){if(at instanceof Zu)return;if(at=="unwind"){O=!0;return}else{var _e=at;at&&typeof at=="object"&&at.stack&&(_e=[at,at.stack]),A("exception thrown: "+_e),u(1,at)}}finally{Xg=!0}}function Qu(U){if(U=U||l,Ia>0||(kn(),Ia>0))return;function ne(){$s||($s=!0,s.calledRun=!0,!H&&(la(),An(),s.onRuntimeInitialized&&s.onRuntimeInitialized(),Cd&&Yg(U),jn()))}s.setStatus?(s.setStatus("Running..."),setTimeout(function(){setTimeout(function(){s.setStatus("")},1),ne()},1)):ne()}s.run=Qu;function Sd(U,ne){ne&&O&&U===0||(O||(H=!0,X=U,pn(),s.onExit&&s.onExit(U)),u(U,new Zu(U)))}if(s.preInit)for(typeof s.preInit=="function"&&(s.preInit=[s.preInit]);s.preInit.length>0;)s.preInit.pop()();var Cd=!0;return s.noInitialRun&&(Cd=!1),O=!0,Qu(),r}}();typeof e=="object"&&typeof t=="object"?t.exports=n:typeof define=="function"&&define.amd?define([],function(){return n}):typeof e=="object"&&(e.WasmBackendModule=n)}),uF=1e-7,cF=1e-4,Md=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}},uc=class{time(e){return Y("time")}read(e){return Y("read")}readSync(e){return Y("readSync")}numDataIds(){return Y("numDataIds")}disposeData(e){return Y("disposeData")}write(e,t,n){return Y("write")}move(e,t,n,a){return Y("move")}memory(){return Y("memory")}floatPrecision(){return Y("floatPrecision")}epsilon(){return this.floatPrecision()===32?uF:cF}batchMatMul(e,t,n,a){return Y("batchMatMul")}fusedBatchMatMul({a:e,b:t,transposeA:n,transposeB:a,bias:r,activation:s,preluActivationWeights:i}){return Y("fusedBatchMatMul")}slice(e,t,n){return Y("slice")}stridedSlice(e,t,n,a){return Y("stridedSlice")}unstack(e,t){return Y("unstack")}reverse(e,t){return Y("reverse")}concat(e,t){return Y("concat")}neg(e){return Y("neg")}add(e,t){return Y("add")}addN(e){return Y("addN")}subtract(e,t){return Y("subtract")}multiply(e,t){return Y("multiply")}realDivide(e,t){return Y("realDivide")}floorDiv(e,t){return Y("floorDiv")}sum(e,t){return Y("sum")}prod(e,t){return Y("prod")}unsortedSegmentSum(e,t,n){return Y("unsortedSegmentSum")}argMin(e,t){return Y("argMin")}argMax(e,t){return Y("argMax")}equal(e,t){return Y("equal")}notEqual(e,t){return Y("notEqual")}less(e,t){return Y("less")}lessEqual(e,t){return Y("lessEqual")}greater(e,t){return Y("greater")}greaterEqual(e,t){return Y("greaterEqual")}logicalNot(e){return Y("logicalNot")}logicalAnd(e,t){return Y("logicalAnd")}logicalOr(e,t){return Y("logicalOr")}where(e){return Y("where")}select(e,t,n){return Y("select")}topk(e,t,n){return Y("topk")}min(e,t){return Y("min")}minimum(e,t){return Y("minimum")}mod(e,t){return Y("mod")}max(e,t){return Y("max")}maximum(e,t){return Y("maximum")}all(e,t){return Y("all")}any(e,t){return Y("any")}squaredDifference(e,t){return Y("squaredDifference")}ceil(e){return Y("ceil")}floor(e){return Y("floor")}round(e){return Y("round")}sign(e){return Y("sign")}isNaN(e){return Y("isNaN")}isInf(e){return Y("isInf")}isFinite(e){return Y("isFinite")}pow(e,t){return Y("pow")}exp(e){return Y("exp")}expm1(e){return Y("expm1")}softmax(e,t){return Y("softmax")}log(e){return Y("log")}log1p(e){return Y("log1p")}sqrt(e){return Y("sqrt")}rsqrt(e){return Y("rsqrt")}square(e){return Y("square")}reciprocal(e){return Y("reciprocal")}relu(e){return Y("relu")}relu6(e){return Y("relu6")}prelu(e,t){return Y("prelu")}elu(e){return Y("elu")}eluDer(e,t){return Y("eluDer")}selu(e){return Y("selu")}int(e){return Y("int")}clip(e,t,n){return Y("clip")}abs(e){return Y("abs")}complexAbs(e){return Y("complexAbs")}sigmoid(e){return Y("sigmoid")}softplus(e){return Y("softplus")}sin(e){return Y("sin")}cos(e){return Y("cos")}tan(e){return Y("tan")}asin(e){return Y("asin")}acos(e){return Y("acos")}atan(e){return Y("atan")}atan2(e,t){return Y("atan2")}sinh(e){return Y("sinh")}cosh(e){return Y("cosh")}tanh(e){return Y("tanh")}asinh(e){return Y("asinh")}acosh(e){return Y("acosh")}atanh(e){return Y("atanh")}erf(e){return Y("erf")}step(e,t){return Y("step")}fusedConv2d({input:e,filter:t,convInfo:n,bias:a,activation:r,preluActivationWeights:s}){return Y("fusedConv2d")}conv2d(e,t,n){return Y("conv2d")}conv2dDerInput(e,t,n){return Y("conv2dDerInput")}conv2dDerFilter(e,t,n){return Y("conv2dDerFilter")}fusedDepthwiseConv2D({input:e,filter:t,convInfo:n,bias:a,activation:r,preluActivationWeights:s}){return Y("fusedDepthwiseConv2D")}depthwiseConv2D(e,t,n){return Y("depthwiseConv2D")}depthwiseConv2DDerInput(e,t,n){return Y("depthwiseConv2DDerInput")}depthwiseConv2DDerFilter(e,t,n){return Y("depthwiseConv2DDerFilter")}conv3d(e,t,n){return Y("conv3d")}conv3dDerInput(e,t,n){return Y("conv3dDerInput")}conv3dDerFilter(e,t,n){return Y("conv3dDerFilter")}maxPool(e,t){return Y("maxPool")}maxPoolBackprop(e,t,n,a){return Y("maxPoolBackprop")}avgPool(e,t){return Y("avgPool")}avgPoolBackprop(e,t,n){return Y("avgPoolBackprop")}avgPool3d(e,t){return Y("avgPool3d")}avgPool3dBackprop(e,t,n){return Y("avgPool3dBackprop")}maxPool3d(e,t){return Y("maxPool3d")}maxPool3dBackprop(e,t,n,a){return Y("maxPool3dBackprop")}reshape(e,t){return Y("reshape")}cast(e,t){return Y("cast")}tile(e,t){return Y("tile")}pad(e,t,n){return Y("pad")}transpose(e,t){return Y("transpose")}gather(e,t,n,a=0){return Y("gather")}gatherND(e,t){return Y("gatherND")}scatterND(e,t,n){return Y("scatterND")}batchToSpaceND(e,t,n){return Y("batchToSpaceND")}spaceToBatchND(e,t,n){return Y("spaceToBatchND")}resizeBilinear(e,t,n,a,r){return Y("resizeBilinear")}resizeBilinearBackprop(e,t,n){return Y("resizeBilinearBackprop")}resizeNearestNeighbor(e,t,n,a,r){return Y("resizeNearestNeighbor")}resizeNearestNeighborBackprop(e,t,n){return Y("resizeNearestNeighborBackprop")}batchNorm(e,t,n,a,r,s){return Y("batchNorm")}localResponseNormalization4D(e,t,n,a,r){return Y("localResponseNormalization4D")}LRNGrad(e,t,n,a,r,s,i){return Y("LRNGrad")}multinomial(e,t,n,a){return Y("multinomial")}oneHot(e,t,n,a){return Y("oneHot")}cumsum(e,t,n,a){return Y("cumsum")}nonMaxSuppression(e,t,n,a,r){return Y("nonMaxSuppression")}fft(e){return Y("fft")}ifft(e){return Y("ifft")}complex(e,t){return Y("complex")}real(e){return Y("real")}imag(e){return Y("imag")}cropAndResize(e,t,n,a,r,s){return Y("cropAndResize")}depthToSpace(e,t,n){return Y("depthToSpace")}split(e,t,n){return Y("split")}sparseToDense(e,t,n,a){return Y("sparseToDense")}diag(e){return Y("diag")}fill(e,t,n){return Y("fill")}onesLike(e){return Y("onesLike")}zerosLike(e){return Y("zerosLike")}linspace(e,t,n){return Y("linspace")}dispose(){return Y("dispose")}};function Y(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 Yw(e){let t=e.length,n=0,a=0;for(;t>0;)a=Math.random()*t|0,t--,n=e[t],e[t]=e[a],e[a]=n}function cc(e,t,n){return Math.max(e,Math.min(t,n))}function pF(e){return e%2==0?e:e+1}function dF(e){let t=0;for(let n=0;nn+` Shapes ${e} and ${t} must match`)}function Ds(e){F(e!=null,()=>"The input to the tensor constructor must be a non-null value.")}function Ms(e,t=[],n=!1){if(t==null&&(t=[]),Array.isArray(e)||un(e)&&!n)for(let a=0;a0,n){return new Promise((a,r)=>{let s=0,i=()=>{if(e()){a();return}s++;let o=t(s);if(n!=null&&s>=n){r();return}setTimeout(i,o)};i()})}function vF(e,t){let n=1,a=-1;for(let s=0;s=0)n*=e[s];else if(e[s]===-1){if(a!==-1)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${a} and dim ${s}`);a=s}else if(e[s]<0)throw Error(`Shapes can not be < 0. Found ${e[s]} at dim ${s}`);if(a===-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[a]=t/n,r}function ca(e,t){let n=t.length;return e=e==null?t.map((a,r)=>r):[].concat(e),F(e.every(a=>a>=-n&&a`All values in axis param must be in range [-${n}, ${n}) but got axis ${e}`),F(e.every(a=>qt(a)),()=>`All values in axis param must be integers but got axis ${e}`),e.map(a=>a<0?n+a:a)}function Jw(e,t){let n=[],a=[],r=t!=null&&Array.isArray(t)&&t.length===0,s=t==null||r?null:ca(t,e).sort(),i=0;for(let o=0;oo)&&e[o]===1&&(n.push(e[o]),a.push(o)),s[i]<=o&&i++}e[o]!==1&&(n.push(e[o]),a.push(o))}return{newShape:n,keptDims:a}}function Zw(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 Qw(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 e0(e,t){for(let n=0;nt+=n.length),t}function Hr(e){return typeof e=="string"||e instanceof String}function s0(e){return typeof e=="boolean"}function i0(e){return typeof e=="number"}function Rd(e){return Array.isArray(e)?Rd(e[0]):e instanceof Float32Array?"float32":e instanceof Int32Array||e instanceof Uint8Array?"int32":i0(e)?"float32":Hr(e)?"string":s0(e)?"bool":"float32"}function jr(e){return!!(e&&e.constructor&&e.call&&e.apply)}function Pd(e,t){for(let n=t;n=0;--a)n[a]=n[a+1]*e[a+1];return n}function o0(e,t,n){let a=new Array;if(t.length===1){let r=t[0];for(let s=0;so*l);for(let o=0;oa*r);if(n===0)return[];if(n!==t.length)throw new Error(`[${e}] does not match the input size ${t.length}.`);return o0(0,e,t)}function ny(e,t){let n=Od(e,t);for(let a=0;aa*r,1);if(t==null||t==="float32")return Oo(e,new Float32Array(n));if(t==="int32")return Oo(e,new Int32Array(n));if(t==="bool")return Oo(e,new Uint8Array(n));throw new Error(`Unknown data type ${t}`)}function ay(e){e.forEach(t=>{F(Number.isInteger(t)&&t>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${e}].`)})}function kF(e,t,n){if(t===0)return 0;if(t===1)return e[0];let a=e[e.length-1];for(let r=0;r{let[n,a]=t.split(":");this.urlFlags[n]=TF(n,a)})}};function NF(e){let t={};return e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(n,...a)=>(SF(t,a[0],a[1]),a.join("="))),t}function SF(e,t,n){e[decodeURIComponent(t)]=decodeURIComponent(n||"")}function TF(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 ee(){return sy}var sy=null;function CF(e){sy=e}var iy;function c0(){if(iy==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");iy=e}return iy}function EF(){let e=c0();return e._tfGlobals==null&&(e._tfGlobals=new Map),e._tfGlobals}function p0(e,t){let n=EF();if(n.has(e))return n.get(e);{let a=t();return n.set(e,a),n.get(e)}}var Lo="Abs",zo="Acos",Bo="Acosh",qr="Add",Rs="AddN",Ld="All",zd="Any",Ps="ArgMax",dc="ArgMin",Wo="Asin",Vo="Asinh",Uo="Atan",Go="Atanh",Ho="Atan2",Os="AvgPool",Bd="AvgPoolGrad",hc="AvgPool3D",Wd="AvgPool3DGrad",Ls="BatchMatMul",mc="BatchToSpaceND",Vd="Bincount",d0="BroadcastTo",zs="Cast",jo="Ceil",Kr="ClipByValue",Ud="Complex",fc="ComplexAbs",qo="Concat",Bs="Conv2D",Gd="Conv2DBackpropFilter",Ws="Conv2DBackpropInput",gc="Conv3D",Hd="Conv3DBackpropFilterV2",jd="Conv3DBackpropInputV2",Vs="Cos",Ko="Cosh",Us="Cumsum",Xo="CropAndResize",qd="DenseBincount",Yo="DepthToSpace",Gs="DepthwiseConv2dNative",Kd="DepthwiseConv2dNativeBackpropFilter",Xd="DepthwiseConv2dNativeBackpropInput",Yd="Diag",yc="Dilation2D",Jd="Dilation2DBackpropInput",Zd="Dilation2DBackpropFilter",Hs="RealDiv",Jo="Elu",Qd="EluGrad",Zo="Erf",Qo="Equal",js="Exp",el="ExpandDims",tl="Expm1",eh="FFT",bc="Fill",nl="FlipLeftRight",qs="Floor",Ks="FloorDiv",Xs="FusedBatchNorm",al="GatherV2",rl="GatherNd",sl="Greater",Ys="GreaterEqual",il="Identity",th="IFFT",nh="Imag",ol="IsFinite",ll="IsInf",ul="IsNan",Js="LeakyRelu",cl="Less",pl="LessEqual",ah="LinSpace",Zs="Log",dl="Log1p",hl="LogicalAnd",xc="LogicalNot",vc="LogicalOr",h0="LogSoftmax",wc="LRN",rh="LRNGrad",Qs="Max",ei="Maximum",ti="MaxPool",sh="MaxPoolGrad",kc="MaxPool3D",ih="MaxPool3DGrad",oh="MaxPoolWithArgmax",ni="Mean",ai="Min",ri="Minimum",Ic="MirrorPad",ml="Mod",lh="Multinomial",si="Multiply",fl="Neg",gl="NotEqual",yl="NonMaxSuppressionV3",bl="NonMaxSuppressionV4",xl="NonMaxSuppressionV5",vl="OnesLike",ii="OneHot",wl="Pack",oi="PadV2",_F="Pool",li="Pow",ui="Prelu",kl="Prod",Nc="Range",uh="Real",Il="Reciprocal",ci="Relu",Nl="Reshape",Tc="ResizeNearestNeighbor",ch="ResizeNearestNeighborGrad",pi="ResizeBilinear",ph="ResizeBilinearGrad",di="Relu6",hi="Reverse",mi="Round",fi="Rsqrt",Tl="ScatterNd",Sl="Select",Cl="Selu",El="Slice",gi="Sin",_l="Sinh",Fl="Sign",yi="Sigmoid",Al="Softplus",bi="Sqrt",xi="Sum",Sc="SpaceToBatchND",$l="SplitV",vi="Softmax",wi="SquaredDifference",Cc="Square",ki="Sub",dh="SparseToDense",Dl="StridedSlice",Ml="Tan",Ii="Tanh",Xr="Tile",Rl="TopK",Ni="Transpose",hh="Unique",Pl="Unpack",Ec="UnsortedSegmentSum",Ol="ZerosLike",Ll="Step",mh="FromPixels",zl="RotateWithOffset",Ti="_FusedMatMul",Si="FusedConv2D",Ci="FusedDepthwiseConv2D",Bl=p0("kernelRegistry",()=>new Map),_c=p0("gradRegistry",()=>new Map);function ly(e,t){let n=oy(e,t);return Bl.get(n)}function uy(e){return _c.get(e)}function fh(e){let t=Bl.entries(),n=[];for(;;){let{done:a,value:r}=t.next();if(a)break;let[s,i]=r,[o]=s.split("_");o===e&&n.push(i)}return n}function Fc(e){let{kernelName:t,backendName:n}=e,a=oy(t,n);Bl.has(a)&&console.warn(`The kernel '${t}' for backend '${n}' is already registered`),Bl.set(a,e)}function m0(e){let{kernelName:t}=e;_c.has(t)&&ee().getBool("DEBUG")&&console.warn(`Overriding the gradient for '${t}'`),_c.set(t,e)}function FF(e,t){let n=oy(e,t);if(!Bl.has(n))throw new Error(`The kernel '${e}' for backend '${t}' is not registered`);Bl.delete(n)}function AF(e){if(!_c.has(e))throw new Error(`The gradient '${e}' for backend is not registered`);_c.delete(e)}function $F(e,t){fh(e).forEach(n=>{let a=Object.assign({},n,{backendName:t});Fc(a)})}function oy(e,t){return`${t}_${e}`}var k={};Oe(k,{arraysEqual:()=>xr,assert:()=>F,assertNonNegativeIntegerDimensions:()=>ay,assertNonNull:()=>Ds,assertShapesMatch:()=>rt,bytesFromStringArray:()=>r0,bytesPerElement:()=>a0,checkConversionForErrors:()=>e0,clamp:()=>cc,computeStrides:()=>Po,createScalarValue:()=>DF,createShuffledIndices:()=>bF,decodeString:()=>yh,distSquared:()=>mF,encodeString:()=>Ac,fetch:()=>MF,flatten:()=>Ms,getArrayFromDType:()=>Qw,getTypedArrayFromDType:()=>Zw,hasEncodingLoss:()=>n0,indexToLoc:()=>IF,inferDtype:()=>Rd,inferFromImplicitShape:()=>vF,isBoolean:()=>s0,isFunction:()=>jr,isInt:()=>qt,isNumber:()=>i0,isPromise:()=>ry,isScalarShape:()=>fF,isString:()=>Hr,isTypedArray:()=>un,isValidDtype:()=>t0,locToIndex:()=>kF,makeOnesTypedArray:()=>ny,makeZerosNestedTypedArray:()=>wF,makeZerosTypedArray:()=>Od,nearestDivisor:()=>Pd,nearestLargerEven:()=>pF,now:()=>cy,parseAxisParam:()=>ca,randUniform:()=>hF,repeatedTry:()=>xF,rightPad:()=>pc,shuffle:()=>Yw,sizeFromShape:()=>zt,sizeToSquarishShape:()=>yF,squeezeShape:()=>Jw,sum:()=>dF,tanh:()=>gF,toNestedArray:()=>Oo,toTypedArray:()=>gh});function DF(e,t){return t==="string"?Ac(e):gh([e],t)}function RF(e,t){return e instanceof Float32Array&&t==="float32"||e instanceof Int32Array&&t==="int32"||e instanceof Uint8Array&&t==="bool"}function gh(e,t){if(t==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(e)&&(e=Ms(e)),ee().getBool("DEBUG")&&e0(e,t),RF(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 a=0;a{a=n()},s=this.backendTimer.time(r);if(ee().getBool("CHECK_COMPUTATION_FOR_ERRORS"))for(let i=0;i{PF(l,o.dtype,e)})}return{kernelName:e,outputs:a,inputs:t,timeMs:s.then(i=>i.kernelMs),extraInfo:s.then(i=>i.getExtraProfileInfo!=null?i.getExtraProfileInfo():"")}}logKernelProfile(e){let{kernelName:t,outputs:n,timeMs:a,inputs:r,extraInfo:s}=e;n.forEach(i=>{Promise.all([i.data(),a,s]).then(o=>{this.logger.logKernelProfile(t,i,o[0],o[1],r,o[2])})})}};function PF(e,t,n){if(t!=="float32")return!1;for(let a=0;a0?m:""} `}}console.log(`%c${o} %c${i} %c${l}D ${u} %c${c} %c${p} %c${s}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}};function zF(e,t,n){let a={},r={};for(let l=0;la[f.id]=!0),h=!0,r[c.id]=!0;break}if(h)break}}let s={};s[n.id]=!0;let i={};for(let l=e.length-1;l>=0;l--){let c=e[l],u=c.inputs;for(let p=0;p=0;r--){let s=t[r],i=[];if(s.outputs.forEach(l=>{let c=e[l.id];c!=null?i.push(c):i.push(null)}),s.gradient==null)throw new Error(`Cannot compute gradient: gradient function not found for ${s.kernelName}.`);let o=s.gradient(i);for(let l in s.inputs){if(!(l in o))throw new Error(`Cannot backprop through input ${l}. Available gradients found: ${Object.keys(o)}.`);let c=n(()=>o[l]());if(c.dtype!=="float32")throw new Error(`Error in gradient for op ${s.kernelName}. The gradient of input ${l} must have 'float32' dtype, but has '${c.dtype}'`);let u=s.inputs[l];if(!xr(c.shape,u.shape))throw new Error(`Error in gradient for op ${s.kernelName}. The gradient of input '${l}' has shape '${c.shape}', which does not match the shape of the input '${u.shape}'`);if(e[u.id]==null)e[u.id]=c;else{let p=e[u.id];e[u.id]=a(p,c),p.dispose()}}}}var f0=20,$c=3,py=7;function VF(e,t,n,a){let r=Po(t),s=WF(e,t,n,r),i=t.length,o=bh(e,t,n,r,s),l=["Tensor"];return a&&(l.push(` dtype: ${n}`),l.push(` rank: ${i}`),l.push(` shape: [${t}]`),l.push(" values:")),l.push(o.map(c=>" "+c).join(` +`)),l.join(` +`)}function WF(e,t,n,a){let r=zt(t),s=a[a.length-1],i=new Array(s).fill(0),o=t.length,l=n==="complex64"?Mc(e):e;if(o>1)for(let c=0;cf0){let g=$c*i,y=Array.from(e.slice(0,g)),b=Array.from(e.slice((o-$c)*i,o*i));return n==="complex64"&&(y=Mc(y),b=Mc(b)),["["+y.map((x,v)=>Dc(x,r[v],n)).join(", ")+", ..., "+b.map((x,v)=>Dc(x,r[o-$c+v],n)).join(", ")+"]"]}let f=n==="complex64"?Mc(e):Array.from(e);return["["+f.map((g,y)=>Dc(g,r[y],n)).join(", ")+"]"]}let c=t.slice(1),u=a.slice(1),p=a[0]*i,d=[];if(o>f0){for(let f=0;f<$c;f++){let g=f*p,y=g+p;d.push(...bh(e.slice(g,y),c,n,u,r,!1))}d.push("...");for(let f=o-$c;f`Length of values '${a}' 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||Qw(t,this.size),this.strides=Po(e)}set(e,...t){t.length===0&&(t=[0]),F(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 a of e){if(a<0||a>=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 a=0;ayh(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=Ha().readSync(this.dataId);if(this.dtype==="string")try{return e.map(t=>yh(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 Ha().read(this.dataId);return this.dtype==="string"?e:new Uint8Array(e.buffer)}dispose(){this.isDisposed||(Ha().disposeTensor(this),this.isDisposedInternal=!0)}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(e=!1){return Wl.print(this,e)}clone(){return this.throwIfDisposed(),Wl.clone(this)}toString(e=!1){let t=this.dataSync();return VF(t,this.shape,this.dtype,e)}cast(e){return this.throwIfDisposed(),Wl.cast(this,e)}variable(e=!0,t,n){return this.throwIfDisposed(),Ha().makeVariable(this,e,t,n)}};Object.defineProperty(z,Symbol.hasInstance,{value:e=>!!e&&e.data!=null&&e.dataSync!=null&&e.throwIfDisposed!=null});var Yr=class extends z{constructor(e,t,n,a){super(e.shape,e.dtype,e.dataId,a);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(!xr(e.shape,this.shape))throw new Error(`shape of the new value (${e.shape}) and previous value (${this.shape}) must match`);Ha().disposeTensor(this),this.dataId=e.dataId,Ha().incRef(this,null)}dispose(){Ha().disposeVariable(this),this.isDisposedInternal=!0}};Object.defineProperty(Yr,Symbol.hasInstance,{value:e=>e instanceof z&&e.assign!=null&&e.assign instanceof Function});var Ta={};Oe(Ta,{assertTypesMatch:()=>y0,getTensorsInContainer:()=>dy,isTensorInList:()=>qF,makeTypesMatch:()=>Tt});var hy;(function(e){e.R0="R0",e.R1="R1",e.R2="R2",e.R3="R3",e.R4="R4",e.R5="R5",e.R6="R6"})(hy||(hy={}));var my;(function(e){e.float32="float32",e.int32="int32",e.bool="int32",e.complex64="complex64"})(my||(my={}));var fy;(function(e){e.float32="float32",e.int32="int32",e.bool="bool",e.complex64="complex64"})(fy||(fy={}));var gy;(function(e){e.float32="float32",e.int32="float32",e.bool="float32",e.complex64="complex64"})(gy||(gy={}));var yy;(function(e){e.float32="complex64",e.int32="complex64",e.bool="complex64",e.complex64="complex64"})(yy||(yy={}));var KF={float32:gy,int32:my,bool:fy,complex64:yy};function pa(e,t){if(e==="string"||t==="string"){if(e==="string"&&t==="string")return"string";throw new Error(`Can not upcast ${e} with ${t}`)}return KF[e][t]}function xh(e){return pa(e,"int32")}function Tt(e,t){if(e.dtype===t.dtype)return[e,t];let n=pa(e.dtype,t.dtype);return[e.cast(n),t.cast(n)]}function y0(e,t){F(e.dtype===t.dtype,()=>`The dtypes of the first(${e.dtype}) and second(${t.dtype}) input must match`)}function qF(e,t){return t.some(n=>n.id===e.id)}function dy(e){let t=[],n=new Set;return b0(e,t,n),t}function b0(e,t,n){if(e==null)return;if(e instanceof z){t.push(e);return}if(!XF(e))return;let a=e;for(let r in a){let s=a[r];n.has(s)||(n.add(s),b0(s,t,n))}}function XF(e){return Array.isArray(e)||typeof e=="object"}var x0=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()}},Rc=class{constructor(e){this.ENV=e,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new x0}async ready(){if(this.pendingBackendInit!=null)return this.pendingBackendInit.then(()=>{});if(this.backendInstance!=null)return;let e=this.getSortedBackends();for(let t=0;t{e.setupFunc!=null&&e.setupFunc(this.backendInstance)})}disposeRegisteredKernels(e){fh(e).forEach(t=>{t.disposeFunc!=null&&t.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 uc)&&typeof n.then=="function"){let a=++this.pendingBackendInitId,r=n.then(s=>a(athis.registryFactory[t].priority-this.registryFactory[e].priority)}initializeBackendsAndReturnBest(){let e=this.getSortedBackends();for(let t=0;tthis.startScope(n),()=>this.endScope(a),()=>(a=t(),a instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),a))}scopedRun(e,t,n){e();try{let a=n();return t(),a}catch(a){throw t(),a}}nextTensorId(){return Rc.nextTensorId++}nextVariableId(){return Rc.nextVariableId++}clone(e){let t=this.makeTensorFromDataId(e.dataId,e.shape,e.dtype),n={x:e},a=s=>({x:()=>{let i="float32",o={x:s},l={dtype:i};return P.runKernelFunc(c=>c.cast(s,i),o,null,zs,l)}}),r=[];return this.addTapeNode(this.state.activeScope.name,n,[t],a,r,{}),t}runKernel(e,t,n,a,r){let s=null,i=null;return this.runKernelFunc(s,t,i,e,n,a,r)}shouldCheckForMemLeaks(){return this.ENV.getBool("IS_TEST")}checkKernelForMemLeak(e,t,n){let a=this.backend.numDataIds(),r=0;n.forEach(o=>{r+=o.dtype==="complex64"?3:1});let s=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],i=a-t-r-s;if(i>0)throw new Error(`Backend '${this.backendName}' has an internal memory leak (${i} data ids) after running '${e}'`)}runKernelFunc(e,t,n,a,r,s,i){let o,l=[],c=this.isTapeOn();a==null&&(a=this.state.activeScope!=null?this.state.activeScope.name:"");let u=this.state.numBytes,p=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);let d;this.backendName==null&&this.backend;let h=ly(a,this.backendName),m;if(h!=null)d=()=>{let g=this.backend.numDataIds();m=h.kernelFunc({inputs:t,attrs:r,backend:this.backend});let y=Array.isArray(m)?m:[m];this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(a,g,y);let b=y.map(x=>{if(x.rank!=null)return x;let{dataId:v,shape:N,dtype:T}=x;return this.makeTensorFromDataId(v,N,T)});if(c){let x=this.getTensorsForGradient(a,t,b);if(x==null){i==null&&(i=[]);let v=b.filter((N,T)=>i[T]);x=(s||[]).slice().concat(v)}l=this.saveTensorsForBackwardMode(x)}return b};else{if(e==null)throw new Error(`Error running ${a}: Neither modular kernel nor forward func passed`);let g=y=>{!c||(l=y.map(b=>this.keep(this.clone(b))))};d=()=>{let y=this.backend.numDataIds();m=this.tidy(()=>e(this.backend,g));let b=Array.isArray(m)?m:[m];return this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(a,y,b),b}}let f;return this.scopedRun(()=>this.state.kernelDepth++,()=>this.state.kernelDepth--,()=>{!this.ENV.getBool("DEBUG")&&!this.state.profiling?o=d():(f=this.profiler.profileKernel(a,t,()=>d()),this.ENV.getBool("DEBUG")&&this.profiler.logKernelProfile(f),o=f.outputs)}),c&&this.addTapeNode(a,t,o,n,l,r),this.state.profiling&&this.state.activeProfile.kernels.push({name:a,bytesAdded:this.state.numBytes-u,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-p,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(t).map(g=>t[g]!=null?t[g].shape:null),outputShapes:o.map(g=>g.shape),kernelTimeMs:f.timeMs,extraInfo:f.extraInfo}),Array.isArray(m)?o:o[0]}saveTensorsForBackwardMode(e){return e.map(t=>this.keep(this.clone(t)))}getTensorsForGradient(e,t,n){let a=uy(e);if(a!=null){let r=a.inputsToSave||[],s=a.outputsToSave||[],i;a.saveAllInputs?(F(Array.isArray(t),()=>"saveAllInputs is true, expected inputs to be an array."),i=Object.keys(t).map(l=>t[l])):i=r.map(l=>t[l]);let o=n.filter((l,c)=>s[c]);return i.concat(o)}return null}makeTensor(e,t,n,a){if(e==null)throw new Error("Values passed to engine.makeTensor() are null");n=n||"float32",a=a||this.backend;let r=e;n==="string"&&Hr(e[0])&&(r=e.map(o=>Ac(o)));let s=a.write(r,t,n),i=new z(t,n,s,this.nextTensorId());if(this.incRef(i,a),n==="string"){let o=this.state.tensorInfo.get(s),l=r0(r);this.state.numBytes+=l-o.bytes,o.bytes=l}return i}makeTensorFromDataId(e,t,n,a){n=n||"float32";let r=new z(t,n,e,this.nextTensorId());return this.incRef(r,a),r}makeVariable(e,t=!0,n,a){n=n||this.nextVariableId().toString(),a!=null&&a!==e.dtype&&(e=e.cast(a));let r=new Yr(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}incRef(e,t){let n=this.state.tensorInfo.has(e.dataId)?this.state.tensorInfo.get(e.dataId).refCount:0;if(this.state.numTensors++,e.dtype==="string"&&this.state.numStringTensors++,n===0){this.state.numDataBuffers++;let a=0;e.dtype!=="complex64"&&e.dtype!=="string"&&(a=e.size*a0(e.dtype)),this.state.tensorInfo.set(e.dataId,{backend:t||this.backend,dtype:e.dtype,shape:e.shape,bytes:a,refCount:0}),this.state.numBytes+=a}this.state.tensorInfo.get(e.dataId).refCount++,e instanceof Yr||this.track(e)}disposeTensor(e){if(!this.state.tensorInfo.has(e.dataId))return;this.state.numTensors--,e.dtype==="string"&&this.state.numStringTensors--;let t=this.state.tensorInfo.get(e.dataId);t.refCount<=1?(e.dtype!=="complex64"&&(this.state.numBytes-=t.bytes),this.state.numDataBuffers--,t.backend.disposeData(e.dataId),this.state.tensorInfo.delete(e.dataId)):this.state.tensorInfo.get(e.dataId).refCount--}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(a=>a.totalBytesSnapshot)),this.state.activeProfile.newBytes=this.state.numBytes-t,this.state.activeProfile.newTensors=this.state.numTensors-n;for(let a of this.state.activeProfile.kernels)a.kernelTimeMs=await a.kernelTimeMs,a.extraInfo=await a.extraInfo;return this.state.activeProfile}isTapeOn(){return this.state.gradientDepth>0&&this.state.kernelDepth===0}addTapeNode(e,t,n,a,r,s){let i={id:this.state.nextTapeNodeId++,kernelName:e,inputs:t,outputs:n,saved:r},o=uy(e);o!=null&&(a=o.gradFunc),a!=null&&(i.gradient=l=>(l=l.map((c,u)=>{if(c==null){let p=n[u],d=Od(p.size,p.dtype);return this.makeTensor(d,p.shape,p.dtype)}return c}),a(l.length>1?l:l[0],r,s))),this.state.activeTape.push(i)}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=dy(e),n=new Set(t.map(r=>r.id));for(let r=0;r{!r.kept&&r.scopeId===a.id&&this.track(r)})}gradients(e,t,n,a=!1){if(F(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));F(r instanceof z,()=>"The result y returned by f() must be a tensor.");let s=zF(this.state.activeTape,t,r);if(!a&&s.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 i={};i[r.id]=n==null?YF(r.shape):n,BF(i,s,l=>this.tidy(l),JF);let o=t.map(l=>i[l.id]);return this.state.gradientDepth===0&&(this.state.activeTape.forEach(l=>{for(let c of l.saved)c.dispose()}),this.state.activeTape=null),{value:r,grads:o}})}customGrad(e){return F(jr(e),()=>"The f passed in customGrad(f) must be a function."),(...t)=>{F(t.every(r=>r instanceof z),()=>"The args passed in customGrad(f)(x1, x2,...) must all be tensors");let n,a={};return t.forEach((r,s)=>{a[s]=r}),this.runKernelFunc((r,s)=>(n=e(...t,s),F(n.value instanceof z,()=>"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"),F(jr(n.gradFunc),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."),n.value),a,(r,s)=>{let i=n.gradFunc(r,s),o=Array.isArray(i)?i:[i];F(o.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(...)."),F(o.every(c=>c instanceof z),()=>"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 l={};return o.forEach((c,u)=>{l[u]=()=>c}),l})}}readSync(e){return this.state.tensorInfo.get(e).backend.readSync(e)}read(e){return this.state.tensorInfo.get(e).backend.read(e)}async time(e){let t=cy(),n=await this.backend.time(e);return n.wallMs=cy()-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 x0;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}};Rc.nextTensorId=0;Rc.nextVariableId=0;function YF(e){let t=ny(zt(e),"float32");return P.makeTensor(t,e,"float32")}function v0(){let e=c0();if(e._tfengine==null){let t=new u0(e);e._tfengine=new Rc(t)}return CF(e._tfengine.ENV),GF(()=>e._tfengine),e._tfengine}var P=v0();function JF(e,t){let n={a:e,b:t};return P.runKernel(qr,n)}var vh={};Oe(vh,{isBrowser:()=>w0,isMobile:()=>ZF});function QF(){return typeof navigator!="undefined"&&navigator!=null}function ZF(){if(QF()){let e=navigator.userAgent||navigator.vendor||window.opera;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(e)||/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(e.substr(0,4))}return!1}function w0(){return typeof window!="undefined"&&window.document!=null||typeof WorkerGlobalScope!="undefined"}var ja=ee();ja.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.")});ja.registerFlag("IS_BROWSER",()=>w0());ja.registerFlag("IS_NODE",()=>typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined");ja.registerFlag("IS_CHROME",()=>typeof navigator!="undefined"&&navigator!=null&&navigator.userAgent!=null&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor));ja.registerFlag("PROD",()=>!1);ja.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",()=>ja.getBool("DEBUG"));ja.registerFlag("DEPRECATION_WARNINGS_ENABLED",()=>!0);ja.registerFlag("IS_TEST",()=>!1);ja.registerFlag("CHECK_COMPUTATION_FOR_ERRORS",()=>!0);function qa(e,t){let n=e;if(un(e))return t==="string"?[]:[e.length];if(!Array.isArray(e))return[];let a=[];for(;Array.isArray(n)||un(n)&&t!=="string";)a.push(n.length),n=n[0];return Array.isArray(e)&&ee().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&k0(e,a,[]),a}function k0(e,t,n){if(n=n||[],!Array.isArray(e)&&!un(e)){F(t.length===0,()=>`Element arr[${n.join("][")}] is a primitive, but should be an array/TypedArray of ${t[0]} elements`);return}F(t.length>0,()=>`Element arr[${n.join("][")}] should be a primitive, but is an array of ${e.length} elements`),F(e.length===t[0],()=>`Element arr[${n.join("][")}] should have ${t[0]} elements, but has ${e.length} elements`);let a=t.slice(1);for(let r=0;r=0&&(r=a),I0(a,r,t,n),e==null||!un(e)&&!Array.isArray(e)&&typeof e!="number"&&typeof e!="boolean"&&typeof e!="string"){let o=e==null?"null":e.constructor.name;throw new Error(`Argument '${t}' passed to '${n}' must be a Tensor or TensorLike, but got '${o}'`)}let s=qa(e,r);!un(e)&&!Array.isArray(e)&&(e=[e]);let i=r!=="string"?gh(e,r):Ms(e,[],!0);return P.makeTensor(i,s,r)}function Pc(e,t,n,a="numeric"){if(!Array.isArray(e))throw new Error(`Argument ${t} passed to ${n} must be a \`Tensor[]\` or \`TensorLike[]\``);return e.map((r,s)=>C(r,`${t}[${s}]`,n,a))}var N0="__op";function R(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],a=e[n];n.endsWith("_")&&(n=n.substring(0,n.length-1)),n=n+N0;let r=(...s)=>{P.startScope(n);try{let i=a(...s);return ry(i)&&console.error("Cannot return a Promise inside of tidy."),P.endScope(i),i}catch(i){throw P.endScope(null),i}};return Object.defineProperty(r,"name",{value:n,configurable:!0}),r}function eA(e,t){let n=C(e,"real","complex"),a=C(t,"imag","complex");rt(n.shape,a.shape,`real and imag shapes, ${n.shape} and ${a.shape}, must match in call to tf.complex().`);let r={real:n,imag:a};return P.runKernel(Ud,r)}var Jr=R({complex_:eA});function Zr(e,t,n,a){if(a==null&&(a=Rd(e)),a==="complex64")throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(!un(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){ay(t);let r=zt(t),s=zt(n);F(r===s,()=>`Based on the provided shape, [${t}], the tensor should have ${r} values but has ${s}`);for(let i=0;i`Error creating a new Tensor. Inferred shape (${n}) does not match the provided shape (${t}). `)}}return!un(e)&&!Array.isArray(e)&&(e=[e]),t=t||n,e=a!=="string"?gh(e,a):Ms(e,[],!0),P.makeTensor(e,t,a)}function Yn(e,t,n){let a=qa(e,n);return Zr(e,t,a,n)}var by={float32:4,float16:2,int32:4,uint16:2,uint8:1,bool:1,complex64:8},wh=4;async function nA(e,t){let n=[],a=[],r=Array.isArray(e)?e.map(i=>i.name):Object.keys(e);for(let i=0;i{let d=await l.bytes(),h=d.reduce((g,y)=>g+y.length,0)+wh*d.length,m=new Uint8Array(h),f=0;for(let g=0;g{if(t+=s.byteLength,n.push(s.byteLength===s.buffer.byteLength?s:new s.constructor(s)),!(s instanceof Float32Array||s instanceof Int32Array||s instanceof Uint8Array))throw new Error(`Unsupported TypedArray subtype: ${s.constructor.name}`)});let a=new Uint8Array(t),r=0;return n.forEach(s=>{a.set(new Uint8Array(s.buffer),r),r+=s.byteLength}),a.buffer}var xy=typeof Buffer!="undefined"&&(typeof Blob=="undefined"||typeof atob=="undefined"||typeof btoa=="undefined");function S0(e){return xy?Buffer.byteLength(e):new Blob([e]).size}function rA(e){if(xy)return Buffer.from(e).toString("base64");let t=new Uint8Array(e),n="";for(let a=0,r=t.length;a{t+=r.byteLength});let n=new Uint8Array(t),a=0;return e.forEach(r=>{n.set(new Uint8Array(r),a),a+=r.byteLength}),n.buffer}function C0(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 Oc(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:S0(JSON.stringify(e.modelTopology)),weightSpecsBytes:e.weightSpecs==null?0:S0(JSON.stringify(e.weightSpecs)),weightDataBytes:e.weightData==null?0:e.weightData.byteLength}}function iA(){let e=n=>{let a=n<<13,r=0;for(;(a&8388608)==0;)r-=8388608,a<<=1;return a&=~8388608,r+=947912704,a|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 oA(){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 lA(){let e=new Uint32Array(64);for(let t=0;t<64;t++)e[t]=1024;return e[0]=e[32]=0,e}function aA(){let e=iA(),t=oA(),n=lA();return a=>{let r=new ArrayBuffer(4*a.length),s=new Uint32Array(r);for(let i=0;i>10]+(o&1023)]+t[o>>10];s[i]=l}return new Float32Array(r)}}var At=class{constructor(){this.saveRouters=[],this.loadRouters=[]}static getInstance(){return At.instance==null&&(At.instance=new At),At.instance}static registerSaveRouter(e){At.getInstance().saveRouters.push(e)}static registerLoadRouter(e){At.getInstance().loadRouters.push(e)}static getSaveHandlers(e){return At.getHandlers(e,"save")}static getLoadHandlers(e,t){return At.getHandlers(e,"load",t)}static getHandlers(e,t,n){let a=[];return(t==="load"?At.getInstance().loadRouters:At.getInstance().saveRouters).forEach(r=>{let s=r(e,n);s!==null&&a.push(s)}),a}},uA=e=>At.registerSaveRouter(e),cA=e=>At.registerLoadRouter(e),pA=e=>At.getSaveHandlers(e),dA=(e,t)=>At.getLoadHandlers(e,t),wy="tensorflowjs",ky=1,Ei="models_store",Qr="model_info_store";function E0(){if(!ee().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(Ei,{keyPath:"modelPath"}),t.createObjectStore(Qr,{keyPath:"modelPath"})}var _i=class{constructor(e){if(this.indexedDB=E0(),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,a)=>{let r=this.indexedDB.open(wy,ky);r.onupgradeneeded=()=>Iy(r),r.onsuccess=()=>{let s=r.result;if(t==null){let i=s.transaction(Ei,"readonly"),o=i.objectStore(Ei).get(this.modelPath);o.onsuccess=()=>{if(o.result==null)return s.close(),a(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`));n(o.result.modelArtifacts)},o.onerror=l=>(s.close(),a(o.error)),i.oncomplete=()=>s.close()}else{let i=Oc(t),o=s.transaction(Qr,"readwrite"),l=o.objectStore(Qr),c=l.put({modelPath:this.modelPath,modelArtifactsInfo:i}),u;c.onsuccess=()=>{u=s.transaction(Ei,"readwrite");let p=u.objectStore(Ei).put({modelPath:this.modelPath,modelArtifacts:t,modelArtifactsInfo:i});p.onsuccess=()=>n({modelArtifactsInfo:i}),p.onerror=d=>{l=o.objectStore(Qr);let h=l.delete(this.modelPath);h.onsuccess=()=>(s.close(),a(p.error)),h.onerror=m=>(s.close(),a(p.error))}},c.onerror=p=>(s.close(),a(c.error)),o.oncomplete=()=>{u==null?s.close():u.oncomplete=()=>s.close()}}},r.onerror=s=>a(r.error)})}};_i.URL_SCHEME="indexeddb://";var _0=e=>ee().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(_i.URL_SCHEME)?hA(e.slice(_i.URL_SCHEME.length)):null;At.registerSaveRouter(_0);At.registerLoadRouter(_0);function hA(e){return new _i(e)}function mA(e){return e.startsWith(_i.URL_SCHEME)?e.slice(_i.URL_SCHEME.length):e}var fA=class{constructor(){this.indexedDB=E0()}async listModels(){return new Promise((e,t)=>{let n=this.indexedDB.open(wy,ky);n.onupgradeneeded=()=>Iy(n),n.onsuccess=()=>{let a=n.result,r=a.transaction(Qr,"readonly"),s=r.objectStore(Qr).getAll();s.onsuccess=()=>{let i={};for(let o of s.result)i[o.modelPath]=o.modelArtifactsInfo;e(i)},s.onerror=i=>(a.close(),t(s.error)),r.oncomplete=()=>a.close()},n.onerror=a=>t(n.error)})}async removeModel(e){return e=mA(e),new Promise((t,n)=>{let a=this.indexedDB.open(wy,ky);a.onupgradeneeded=()=>Iy(a),a.onsuccess=()=>{let r=a.result,s=r.transaction(Qr,"readwrite"),i=s.objectStore(Qr),o=i.get(e),l;o.onsuccess=()=>{if(o.result==null)return r.close(),n(new Error(`Cannot find model with path '${e}' in IndexedDB.`));{let c=i.delete(e),u=()=>{l=r.transaction(Ei,"readwrite");let p=l.objectStore(Ei).delete(e);p.onsuccess=()=>t(o.result.modelArtifactsInfo),p.onerror=d=>n(o.error)};c.onsuccess=u,c.onerror=p=>(u(),r.close(),n(o.error))}},o.onerror=c=>(r.close(),n(o.error)),s.oncomplete=()=>{l==null?r.close():l.oncomplete=()=>r.close()}},a.onerror=r=>n(a.error)})}},vr="/",Vl="tensorflowjs_models",F0="info",gA="model_topology",yA="weight_specs",bA="weight_data",xA="model_metadata";function A0(e){return{info:[Vl,e,F0].join(vr),topology:[Vl,e,gA].join(vr),weightSpecs:[Vl,e,yA].join(vr),weightData:[Vl,e,bA].join(vr),modelMetadata:[Vl,e,xA].join(vr)}}function vA(e){let t=e.split(vr);if(t.length<3)throw new Error(`Invalid key format: ${e}`);return t.slice(1,t.length-1).join(vr)}function wA(e){return e.startsWith(Fi.URL_SCHEME)?e.slice(Fi.URL_SCHEME.length):e}var Fi=class{constructor(e){if(!ee().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=A0(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),a=Oc(e);try{this.LS.setItem(this.keys.info,JSON.stringify(a)),this.LS.setItem(this.keys.topology,t),this.LS.setItem(this.keys.weightSpecs,n),this.LS.setItem(this.keys.weightData,rA(e.weightData));let r={format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy};return e.signature!=null&&(r.signature=e.signature),e.userDefinedMetadata!=null&&(r.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(r.modelInitializer=e.modelInitializer),this.LS.setItem(this.keys.modelMetadata,JSON.stringify(r)),{modelArtifactsInfo:a}}catch(r){throw this.LS.removeItem(this.keys.info),this.LS.removeItem(this.keys.topology),this.LS.removeItem(this.keys.weightSpecs),this.LS.removeItem(this.keys.weightData),this.LS.removeItem(this.keys.modelMetadata),new Error(`Failed to save model '${this.modelPath}' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes=${a.modelTopologyBytes}, weightSpecsBytes=${a.weightSpecsBytes}, weightDataBytes=${a.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 a=JSON.parse(this.LS.getItem(this.keys.weightSpecs));if(a==null)throw new Error(`In local storage, the weight specs of model '${this.modelPath}' are missing.`);t.weightSpecs=a;let r=this.LS.getItem(this.keys.modelMetadata);if(r!=null){let i=JSON.parse(r);t.format=i.format,t.generatedBy=i.generatedBy,t.convertedBy=i.convertedBy,i.signature!=null&&(t.signature=i.signature),i.userDefinedMetadata!=null&&(t.userDefinedMetadata=i.userDefinedMetadata),i.modelInitializer!=null&&(t.modelInitializer=i.modelInitializer)}let s=this.LS.getItem(this.keys.weightData);if(s==null)throw new Error(`In local storage, the binary weight values of model '${this.modelPath}' are missing.`);return t.weightData=sA(s),t}};Fi.URL_SCHEME="localstorage://";var $0=e=>ee().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(Fi.URL_SCHEME)?kA(e.slice(Fi.URL_SCHEME.length)):null;At.registerSaveRouter($0);At.registerLoadRouter($0);function kA(e){return new Fi(e)}var IA=class{constructor(){F(ee().getBool("IS_BROWSER"),()=>"Current environment is not a web browser"),F(typeof window=="undefined"||typeof window.localStorage!="undefined",()=>"Current browser does not appear to support localStorage"),this.LS=window.localStorage}async listModels(){let e={},t=Vl+vr,n=vr+F0;for(let a=0;a"scheme must not be undefined or null."),e.endsWith(Ul)&&(e=e.slice(0,e.indexOf(Ul))),F(e.length>0,()=>"scheme must not be an empty string.");let n=Jn.getInstance();F(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 kh(e){if(e.indexOf(Ul)===-1)throw new Error(`The url string provided does not contain a scheme. Supported schemes are: ${Jn.getSchemes().join(",")}`);return{scheme:e.split(Ul)[0],path:e.split(Ul)[1]}}async function D0(e,t,n=!1){F(e!==t,()=>`Old path and new path are the same: '${e}'`);let a=At.getLoadHandlers(e);F(a.length>0,()=>`Copying failed because no load handler is found for source URL ${e}.`),F(a.length<2,()=>`Copying failed because more than one (${a.length}) load handlers for source URL ${e}.`);let r=a[0],s=At.getSaveHandlers(t);F(s.length>0,()=>`Copying failed because no save handler is found for destination URL ${t}.`),F(s.length<2,()=>`Copying failed because more than one (${a.length}) save handlers for destination URL ${t}.`);let i=s[0],o=kh(e).scheme,l=kh(e).path,c=o===kh(e).scheme,u=await r.load();n&&c&&await Jn.getManager(o).removeModel(l);let p=await i.save(u);return n&&!c&&await Jn.getManager(o).removeModel(l),p.modelArtifactsInfo}async function NA(){let e=Jn.getSchemes(),t={};for(let n of e){let a=await Jn.getManager(n).listModels();for(let r in a){let s=n+Ul+r;t[s]=a[r]}}return t}async function TA(e){let t=kh(e);return Jn.getManager(t.scheme).removeModel(t.path)}async function SA(e,t){return D0(e,t,!1)}async function CA(e,t){return D0(e,t,!0)}var EA=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(ee().get("IS_BROWSER")){ee().setPlatform("browser",new EA);try{Jn.registerManager(Fi.URL_SCHEME,new IA)}catch(e){}try{Jn.registerManager(_i.URL_SCHEME,new fA)}catch(e){}}var _A={importFetch:()=>X_()},Ny,FA=class{constructor(){this.util=require("util"),this.textEncoder=new this.util.TextEncoder}fetch(e,t){return ee().global.fetch!=null?ee().global.fetch(e,t):(Ny==null&&(Ny=_A.importFetch()),Ny(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)}};ee().get("IS_NODE")&&ee().setPlatform("node",new FA);function Le(e,t="float32",n){return t=t||"float32",ay(e),new Bt(e,t,n)}function AA(e,t){let n=C(e,"x","cast");if(!t0(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 a={x:n},r={dtype:t};return P.runKernel(zs,a,r)}var pe=R({cast_:AA});function $A(e){let t={x:C(e,"x","clone","string_or_numeric")};return P.runKernel(il,t)}var es=R({clone_:$A});function M0(e,t=!1){console.log(e.toString(t))}v0();var DA={buffer:Le,cast:pe,clone:es,print:M0};HF(DA);var Kt={};Oe(Kt,{browserFiles:()=>MA,browserHTTPRequest:()=>PA,concatenateArrayBuffers:()=>vy,copyModel:()=>SA,decodeWeights:()=>T0,encodeWeights:()=>nA,fromMemory:()=>OA,getLoadHandlers:()=>dA,getModelArtifactsInfoForJSON:()=>Oc,getSaveHandlers:()=>pA,http:()=>Sy,isHTTPScheme:()=>Ty,listModels:()=>NA,loadWeights:()=>RA,moveModel:()=>CA,registerLoadRouter:()=>cA,registerSaveRouter:()=>uA,removeModel:()=>TA,weightsLoaderFactory:()=>R0,withSaveHandler:()=>LA});var zA="model",BA=".json",WA=".weights.bin";function P0(e){return new Promise(t=>setTimeout(t)).then(e)}var Gl=class{constructor(e){if(!ee().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");e.startsWith(Gl.URL_SCHEME)&&(e=e.slice(Gl.URL_SCHEME.length)),(e==null||e.length===0)&&(e=zA),this.modelTopologyFileName=e+BA,this.weightDataFileName=e+WA}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}],a={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,weightsManifest:n};e.signature!=null&&(a.signature=e.signature),e.userDefinedMetadata!=null&&(a.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(a.modelInitializer=e.modelInitializer);let r=window.URL.createObjectURL(new Blob([JSON.stringify(a)],{type:"application/json"})),s=this.jsonAnchor==null?document.createElement("a"):this.jsonAnchor;if(s.download=this.modelTopologyFileName,s.href=r,await P0(()=>s.dispatchEvent(new MouseEvent("click"))),e.weightData!=null){let i=this.weightDataAnchor==null?document.createElement("a"):this.weightDataAnchor;i.download=this.weightDataFileName,i.href=t,await P0(()=>i.dispatchEvent(new MouseEvent("click")))}return{modelArtifactsInfo:Oc(e)}}}};Gl.URL_SCHEME="downloads://";var VA=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.files=e}async load(){let e=this.files[0],t=this.files.slice(1);return new Promise((n,a)=>{let r=new FileReader;r.onload=s=>{let i=JSON.parse(s.target.result),o=i.modelTopology;if(o==null){a(new Error(`modelTopology field is missing from file ${e.name}`));return}t.length===0&&n({modelTopology:o});let l=i.weightsManifest;if(l==null){a(new Error(`weightManifest field is missing from file ${e.name}`));return}let c;try{c=this.checkManifestAndWeightFiles(l,t)}catch(h){a(h);return}let u=[],p=[],d=[];l.forEach(h=>{h.paths.forEach(m=>{p.push(m),d.push(null)}),u.push(...h.weights)}),l.forEach(h=>{h.paths.forEach(m=>{let f=new FileReader;f.onload=g=>{let y=g.target.result,b=p.indexOf(m);if(d[b]=y,d.indexOf(null)===-1){let x={modelTopology:o,weightSpecs:u,weightData:vy(d),format:i.format,generatedBy:i.generatedBy,convertedBy:i.convertedBy};i.signature!=null&&(x.signature=i.signature),i.userDefinedMetadata!=null&&(x.userDefinedMetadata=i.userDefinedMetadata),i.modelInitializer!=null&&(x.modelInitializer=i.modelInitializer),n(x)}},f.onerror=g=>a(`Failed to weights data from file of path '${m}'.`),f.readAsArrayBuffer(c[m])})})},r.onerror=s=>a(`Failed to read model topology and weights manifest JSON from file '${e.name}'. BrowserFiles supports loading Keras-style tf.Model artifacts only.`),r.readAsText(e)})}checkManifestAndWeightFiles(e,t){let n=[],a=t.map(s=>C0(s.name)),r={};for(let s of e)s.paths.forEach(i=>{let o=C0(i);if(n.indexOf(o)!==-1)throw new Error(`Duplicate file basename found in weights manifest: '${o}'`);if(n.push(o),a.indexOf(o)===-1)throw new Error(`Weight file with basename '${o}' is not provided.`);r[i]=t[a.indexOf(o)]});if(n.length!==t.length)throw new Error(`Mismatch in the number of files in weights manifest (${n.length}) and the number of weight files provided (${t.length}).`);return r}},GA=e=>ee().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(Gl.URL_SCHEME)?UA(e.slice(Gl.URL_SCHEME.length)):null;At.registerSaveRouter(GA);function UA(e="model"){return new Gl(e)}function MA(e){return new VA(e)}function O0(e,t,n,a){i(e),n=n==null?0:n,a=a==null?1:a,o(n,a);let r=0,s=l=>(l.then(c=>{let u=n+ ++r/e.length*(a-n);return t(u),c}),l);function i(l){F(l!=null&&Array.isArray(l)&&l.length>0,()=>"promises must be a none empty array")}function o(l,c){F(l>=0&&l<=1,()=>`Progress fraction must be in range [0, 1], but got startFraction ${l}`),F(c>=0&&c<=1,()=>`Progress fraction must be in range [0, 1], but got endFraction ${c}`),F(c>=l,()=>`startFraction must be no more than endFraction, but got startFraction ${l} and endFraction ${c}`)}return Promise.all(e.map(s))}async function L0(e,t){t==null&&(t={});let n=t.fetchFunc==null?ee().platform.fetch:t.fetchFunc,a=e.map(c=>n(c,t.requestInit,{isBinary:!0})),r=0,s=.5,i=(t.onProgress==null?await Promise.all(a):await O0(a,t.onProgress,r,s)).map(c=>c.arrayBuffer()),o=.5,l=1;return t.onProgress==null?await Promise.all(i):await O0(i,t.onProgress,o,l)}async function RA(e,t="",n,a){return R0(r=>L0(r,{requestInit:a}))(e,t,n)}function R0(e){return async(t,n="",a)=>{let r=t.map(()=>!1),s={},i=a!=null?a.map(()=>!1):[],o=[];if(t.forEach((h,m)=>{let f=0;h.weights.forEach(g=>{let y="quantization"in g?g.quantization.dtype:g.dtype,b=by[y]*zt(g.shape),x=()=>{r[m]=!0,s[m]==null&&(s[m]=[]),s[m].push({manifestEntry:g,groupOffset:f,sizeBytes:b})};a!=null?a.forEach((v,N)=>{v===g.name&&(x(),i[N]=!0)}):x(),o.push(g.name),f+=b})}),!i.every(h=>h)){let h=a.filter((m,f)=>!i[f]);throw new Error(`Could not find weights in manifest with names: ${h.join(", ")}. +Manifest JSON has weights with names: ${o.join(", ")}.`)}let l=r.reduce((h,m,f)=>(m&&h.push(f),h),[]),c=[];l.forEach(h=>{t[h].paths.forEach(m=>{let f=n+(n.endsWith("/")?"":"/")+m;c.push(f)})});let u=await e(c),p={},d=0;return l.forEach(h=>{let m=t[h].paths.length,f=0;for(let x=0;x{let v=g.slice(x.groupOffset,x.groupOffset+x.sizeBytes),N=T0(v,[x.manifestEntry]);for(let T in N)p[T]=N[T]}),d+=m}),p}}var HA="application/octet-stream",jA="application/json",Cy=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?(F(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=ee().platform.fetch,F(e!=null&&e.length>0,()=>"URL path for http must not be null, undefined or empty."),Array.isArray(e)&&F(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}],a={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,weightsManifest:n};e.signature!=null&&(a.signature=e.signature),e.userDefinedMetadata!=null&&(a.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(a.modelInitializer=e.modelInitializer),t.body.append("model.json",new Blob([JSON.stringify(a)],{type:jA}),"model.json"),e.weightData!=null&&t.body.append("model.weights.bin",new Blob([e.weightData],{type:HA}),"model.weights.bin");let r=await this.fetch(this.path,t);if(r.ok)return{modelArtifactsInfo:Oc(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(h){let m=`Failed to parse model JSON of response from ${this.path}.`;throw this.path.endsWith(".pb")?m+=" 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.":m+=" Please make sure the server is serving valid JSON for this request.",new Error(m)}let n=t.modelTopology,a=t.weightsManifest,r=t.generatedBy,s=t.convertedBy,i=t.format,o=t.signature,l=t.userDefinedMetadata;if(n==null&&a==null)throw new Error(`The JSON from HTTP path ${this.path} contains neither model topology or manifest for weights.`);let c,u;a!=null&&([c,u]=await this.loadWeights(a));let p={modelTopology:n,weightSpecs:c,weightData:u,generatedBy:r,convertedBy:s,format:i};o!=null&&(p.signature=o),l!=null&&(p.userDefinedMetadata=l);let d=t.modelInitializer;return d&&(p.modelInitializer=d),p}async loadWeights(e){let t=Array.isArray(this.path)?this.path[1]:this.path,[n,a]=qA(t),r=this.weightPathPrefix||n,s=[];for(let c of e)s.push(...c.weights);let i=[],o=[];for(let c of e)for(let u of c.paths)this.weightUrlConverter!=null?o.push(this.weightUrlConverter(u)):i.push(r+u+a);this.weightUrlConverter&&i.push(...await Promise.all(o));let l=await L0(i,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress});return[s,vy(l)]}};Cy.URL_SCHEME_REGEX=/^https?:\/\//;function qA(e){let t=e.lastIndexOf("/"),n=e.lastIndexOf("?"),a=e.substring(0,t),r=n>t?e.substring(n):"";return[a+"/",r]}function Ty(e){return e.match(Cy.URL_SCHEME_REGEX)!=null}var z0=(e,t)=>{if(typeof fetch=="undefined"&&(t==null||t.fetchFunc==null))return null;{let n=!0;if(Array.isArray(e)?n=e.every(a=>Ty(a)):n=Ty(e),n)return Sy(e,t)}return null};At.registerSaveRouter(z0);At.registerLoadRouter(z0);function Sy(e,t){return new Cy(e,t)}function PA(e,t){return Sy(e,t)}var Ey=class{constructor(e){this.modelArtifacts=e}async load(){return this.modelArtifacts}},KA=class{constructor(e){this.saveHandler=e}async save(e){return this.saveHandler(e)}};function OA(e,t,n,a){return arguments.length===1?e.modelTopology!=null||e.weightSpecs!=null?new Ey(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 Ey({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 Ey({modelTopology:e,weightSpecs:t,weightData:n,trainingConfig:a}))}function LA(e){return new KA(e)}var B0={};Oe(B0,{confusionMatrix:()=>XA});function YA(e,t,n=!1,a=!1){let r=C(e,"a","matMul"),s=C(t,"b","matMul");[r,s]=Tt(r,s);let i={a:r,b:s},o={transposeA:n,transposeB:a};return P.runKernel(Ls,i,o)}var ze=R({matMul_:YA});function JA(e,t,n=1,a=0){if(t<2)throw new Error(`Error in oneHot: depth must be >=2, but it is ${t}`);let r={indices:C(e,"indices","oneHot","int32")},s={depth:t,onValue:n,offValue:a};return P.runKernel(ii,r,s)}var Hl=R({oneHot_:JA});function ZA(e,t){let n=C(e,"x","transpose");if(t==null&&(t=n.shape.map((s,i)=>i).reverse()),F(n.rank===t.length,()=>`Error in transpose: rank of input ${n.rank} must match length of perm ${t}.`),t.forEach(s=>{F(s>=0&&s`All entries in 'perm' must be between 0 and ${n.rank-1} but got ${t}`)}),n.rank<=1)return n.clone();let a={x:n},r={perm:t};return P.runKernel(Ni,a,r)}var Ue=R({transpose_:ZA});function QA(e,t,n){let a=C(e,"labels","confusionMatrix"),r=C(t,"predictions","confusionMatrix");F(n==null||n>0&&Number.isInteger(n),()=>`If provided, numClasses must be a positive integer, but got ${n}`),F(a.rank===1,()=>`Expected the rank of labels to be 1, but got ${a.rank}`),F(r.rank===1,()=>`Expected the rank of predictions to be 1, but got ${r.rank}`),F(a.shape[0]===r.shape[0],()=>`Mismatch in the number of examples: ${a.shape[0]} vs. ${r.shape[0]}. Labels and predictions should have the same number of elements.`),F(n>0&&Number.isInteger(n),()=>`numClasses is required to be a positive integer, but got ${n}`);let s=Hl(pe(a,"int32"),n),i=Hl(pe(r,"int32"),n),o=Ue(s),l=ze(o,i);return pe(l,"int32")}var XA=R({confusionMatrix_:QA}),Ai={};Oe(Ai,{fromPixels:()=>t$,toPixels:()=>e$});function Ih(e,t,n){if(Ds(e),t!=null&&t.length!==3)throw new Error("tensor3d() requires shape to have three numbers");let a=qa(e,n);if(a.length!==3&&a.length!==1)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(a.length===1&&t==null)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return Zr(e,t,a,n)}var jl;function n$(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,a=!1,r=!1,s=!1,i=!1,o=!1;if(e.data instanceof Uint8Array)n=!0;else if(typeof ImageData!="undefined"&&e instanceof ImageData)a=!0;else if(typeof HTMLVideoElement!="undefined"&&e instanceof HTMLVideoElement)r=!0;else if(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement)s=!0;else if(e.getContext!=null)i=!0;else if(typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap)o=!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){let d=2;if(r&&e.readyState element.")}if(ly(mh,P.backendName)!=null){let d={pixels:e},h={numChannels:t};return P.runKernel(mh,d,h)}let[l,c]=r?[e.videoWidth,e.videoHeight]:[e.width,e.height],u;i?u=e.getContext("2d").getImageData(0,0,l,c).data:a||n?u=e.data:(s||r||o)&&(jl==null&&(jl=document.createElement("canvas").getContext("2d")),jl.canvas.width=l,jl.canvas.height=c,jl.drawImage(e,0,0,l,c),u=jl.getImageData(0,0,l,c).data);let p;if(t===4)p=new Int32Array(u);else{let d=l*c;p=new Int32Array(d*t);for(let h=0;h4||s===2)throw new Error(`toPixels only supports depth of size 1, 3 or 4 but got ${s}`);if(n.dtype!=="float32"&&n.dtype!=="int32")throw new Error(`Unsupported type for toPixels: ${n.dtype}. Please use float32 or int32 tensors.`);let i=await n.data(),o=n.dtype==="float32"?255:1,l=new Uint8ClampedArray(r*a*4);for(let c=0;c1)throw new Error(`Tensor values for a float32 Tensor must be in the range [0 - 1] but encountered ${h}.`)}else if(n.dtype==="int32"&&(h<0||h>255))throw new Error(`Tensor values for a int32 Tensor must be in the range [0 - 255] but encountered ${h}.`);s===1?(u[0]=h*o,u[1]=h*o,u[2]=h*o):u[d]=h*o}let p=c*4;l[p+0]=Math.round(u[0]),l[p+1]=Math.round(u[1]),l[p+2]=Math.round(u[2]),l[p+3]=Math.round(u[3])}if(t!=null){t.width=r,t.height=a;let c=t.getContext("2d"),u=new ImageData(l,r,a);c.putImageData(u,0,0)}return n!==e&&n.dispose(),l}var t$=R({fromPixels_:n$}),_y={};Oe(_y,{prepareAndValidate:()=>W0});function W0(e,t){let n=e.shape.length,a=t.shape.length;if(n<1)throw new Error(`tf.gatherND() expects the input to be rank 1 or higher, but the rank was ${n}.`);if(a<1)throw new Error(`tf.gatherND() expects the indices to be rank 1 or higher, but the rank was ${a}.`);if(t.dtype!=="int32")throw new Error(`tf.gatherND() expects the indices to be int32 type, but the dtype was ${t.dtype}.`);if(t.shape[a-1]>n)throw new Error(`index innermost dimension length must be <= tensor rank; saw: ${t.shape[a-1]} vs. ${n}`);if(zt(e.shape)===0)throw new Error(`Requested more than 0 entries, but input is empty. Input shape: ${e.shape}.`);let r=t.shape,s=r[r.length-1],i=1;for(let p=0;pp/c),1].slice(0,s);return[l,i,c,u]}var Fy={};Oe(Fy,{calculateShapes:()=>V0,validateInput:()=>$y,validateUpdateShape:()=>Ay});function Ay(e,t,n){let a=t.rank>1?t.shape[t.rank-1]:1,r=t.rank>1?t.rank-1:1,s=`Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: ${n.shape}, indices.shape: ${t.shape}, shape: ${e}, sliceDim: ${a}, and batchDim: ${r}.`;if(n.rank1?t.shape[a-1]:1,s=n.length,i=1;for(let p=r;pa$,computeFlatOffset:()=>s$,computeOutShape:()=>U0,getNormalizedAxes:()=>H0,isSliceContinous:()=>r$,maskToAxes:()=>Nh,parseSliceParams:()=>J0,sliceInfo:()=>i$,startForAxis:()=>X0,startIndicesWithElidedDims:()=>j0,stopForAxis:()=>Y0,stopIndicesWithElidedDims:()=>q0,stridesForAxis:()=>K0,stridesWithElidedDims:()=>G0});function a$(e,t,n){let a=e.shape.length;F(a===t.length,()=>`Error in slice${a}D: Length of begin ${t} must match the rank of the array (${a}).`),F(a===n.length,()=>`Error in slice${a}D: Length of size ${n} must match the rank of the array (${a}).`);for(let r=0;r`Error in slice${a}D: begin[${r}] + size[${r}] (${t[r]+n[r]}) would overflow input.shape[${r}] (${e.shape[r]})`)}function Nh(e){let t=[],n=0;for(;e>0;)e&1&&t.push(n),e/=2,n++;return t}function U0(e,t,n){let a=[];for(let r=0;r0){let h=t[0],m=n+1;u=j0(i,h,m,a,e),p=q0(o,h,m,r,e),d=G0(s,h,m,e)}else for(let h=0;h-1)s[o]=0;else{let l=Z0(t,n,o),c=a[l];e&1<-1)s[o]=Number.MAX_SAFE_INTEGER;else{let l=Z0(t,n,o),c=a[l];e&1<0?i=Number.MIN_SAFE_INTEGER:i=Number.MAX_SAFE_INTEGER);let l=a[r];return i<0&&(i+=l),i=cc(0,i,l-1),i}function Y0(e,t,n,a,r,s){let i=t[r],o=n[r]||1;(e&1<0?i=Number.MAX_SAFE_INTEGER:i=Number.MIN_SAFE_INTEGER);let l=a[r];return i<0&&(i+=l),o>0?i=cc(0,i,l):i=cc(-1,i,l-1),i}function r$(e,t,n){let a=n.length;for(let r=0;r1){a=r;break}for(let r=a+1;r0||n[r]!==e[r])return!1;return!0}function s$(e,t){let n=e.length>0?e[e.length-1]:1;for(let a=0;a{F(i!==-1,()=>"slice() does not support negative begin indexing.")});let s;return n==null?s=new Array(r).fill(-1):typeof n=="number"?s=[n,...new Array(r-1).fill(-1)]:n.lengthi>=0?i:(F(i===-1,()=>`Negative size values should be exactly -1 but got ${i} for the slice() size at index ${o}.`),e.shape[o]-a[o])),[a,s]}function i$(e,t,n,a,r,s,i,o,l){let c=t.slice(),u=n.slice(),p=a;a==null&&(p=new Array(c.length));let d=Nh(i);if(d.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(i!==0&&o!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(i!==0&&l!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let h=e.length-c.length,m=Nh(o),f=e.slice();m.forEach(T=>{c[T]=0,u[T]=1,f.splice(T,0,1)});let{begin:g,end:y,strides:b}=H0(f,d,h,c,u,p,r,s,i);c=g,u=y,p=b;let x=Nh(l);x.forEach(T=>{u[T]=c[T]+1,p[T]=1});let v=U0(c,u,p),N=v.filter((T,E)=>x.indexOf(E)===-1);return{nonStrided:p.every(T=>T===1),$begin:c,$end:u,$strides:p,size:v,newShape:f,outShape:N}}var se={};Oe(se,{Serializable:()=>ek,SerializationMap:()=>$i,registerClass:()=>ts});var ek=class{getClassName(){return this.constructor.className}static fromConfig(e,t){return new e(t)}},$i=class{constructor(){this.classNameMap={}}static getMap(){return $i.instance==null&&($i.instance=new $i),$i.instance}static register(e){$i.getMap().classNameMap[e.className]=[e,e.fromConfig]}};function ts(e){F(e.className!=null,()=>"Class being registered does not have the static className property defined."),F(typeof e.className=="string",()=>"className is required to be a string, but got type "+typeof e.className),F(e.className.length>0,()=>"Class being registered has an empty-string as its className, which is disallowed."),$i.register(e)}var tk={};Oe(tk,{TEST_EPSILON_FLOAT16:()=>nk,encodeStrings:()=>ak,expectArrayBuffersEqual:()=>d$,expectArraysClose:()=>o$,expectArraysEqual:()=>u$,expectNumbersClose:()=>c$,expectPromiseToFail:()=>l$,expectValuesInRange:()=>p$,testEpsilon:()=>Dy});var h$=.001,nk=.1;function o$(e,t,n){return n==null&&(n=Dy()),My(e,t,(a,r)=>Ry(a,r,n))}function Dy(){return P.backend.floatPrecision()===32?h$:nk}function My(e,t,n){let a=!0;if((un(e)||un(t))&&(a=!1),un(e)&&un(t)&&(a=!0),a){let i=e.constructor.name,o=t.constructor.name;if(i!==o)throw new Error(`Arrays are of different type. Actual: ${i}. Expected: ${o}`)}if(Array.isArray(e)&&Array.isArray(t)){let i=qa(e),o=qa(t);if(!xr(i,o))throw new Error(`Arrays have different shapes. Actual: [${i}]. Expected: [${o}]`)}let r=un(e)?e:Ms(e),s=un(t)?t:Ms(t);if(r.length!==s.length)throw new Error(`Arrays have different lengths actual: ${r.length} vs expected: ${s.length}. +Actual: ${r}. +Expected: ${s}.`);for(let i=0;it.fail(),()=>t())}function u$(e,t){let n=typeof t=="string"||typeof t=="number"||typeof t=="boolean"?[t]:t;return Hr(e)||Hr(e[0])||Hr(t)||Hr(t[0])?My(e,n,(a,r)=>a==r):My(e,t,(a,r)=>Ry(a,r,0))}function c$(e,t,n){if(n==null&&(n=Dy()),!Ry(e,t,n))throw new Error(`Numbers differ: actual === ${e}, expected === ${t}`)}function Ry(e,t,n){return!isFinite(e)&&!isFinite(t)?!0:!(isNaN(e)||isNaN(t)||Math.abs(e-t)>n)}function p$(e,t,n){for(let a=0;an)throw new Error(`Value out of range:${e[a]} low: ${t}, high: ${n}`)}function d$(e,t){expect(new Float32Array(e)).toEqual(new Float32Array(t))}function ak(e){for(let t=0;tt.dispose())}function Xt(e){return P.keep(e)}function x$(e){return P.time(e)}function v$(e){return P.setBackend(e)}function w$(){return P.ready()}function k$(){return P.backendName}function I$(e){P.removeBackend(e)}function N$(e){return P.findBackend(e)}function T$(e){return P.findBackendFactory(e)}function Sh(e,t,n=1){return P.registerBackend(e,t,n)}function sk(){return P.backend}function S$(e,t){ee().setPlatform(e,t)}function C$(e,t){let n=C(e,"a","add"),a=C(t,"b","add");[n,a]=Tt(n,a);let r={a:n,b:a};return P.runKernel(qr,r)}var Z=R({add_:C$});function E$(e,t){let n=C(e,"a","floorDiv"),a=C(t,"b","floorDiv");[n,a]=Tt(n,a);let r={a:n,b:a};return P.runKernel(Ks,r)}var Ch=R({floorDiv_:E$});function _$(e,t){let n=C(e,"a","div"),a=C(t,"b","div");if([n,a]=Tt(n,a),n.dtype==="int32"&&a.dtype==="int32")return Ch(n,a);let r={a:n,b:a},s={};return P.runKernel(Hs,r,s)}var ve=R({div_:_$});function F$(e,t){let n=C(e,"a","mul"),a=C(t,"b","mul");[n,a]=Tt(n,a);let r={a:n,b:a};return P.runKernel(si,r)}var L=R({mul_:F$});function A$(e){let t=C(e,"x","abs");if(t.dtype==="complex64"){let n={x:t};return P.runKernel(fc,n)}else{let n={x:t};return P.runKernel(Lo,n)}}var Wt=R({abs_:A$});function $$(e){let t={x:C(e,"x","acos")};return P.runKernel(zo,t)}var Py=R({acos_:$$});function D$(e){let t={x:C(e,"x","acosh")};return P.runKernel(Bo,t)}var Oy=R({acosh_:D$});function M$(e){F(Array.isArray(e),()=>"The argument passed to tf.addN() must be a list of tensors"),F(e.length>=1,()=>`Must pass at least one tensor to tf.addN(), but got ${e.length}`);let t=e.map((r,s)=>C(r,`tensors${s}`,"addN")),n=t[0];t.forEach(r=>{if(r.dtype!==n.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),t.forEach(r=>{if(!xr(r.shape,n.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});let a=t;return P.runKernel(Rs,a)}var ik=R({addN_:M$});function R$(e,t=null,n=!1){let a={x:C(e,"x","all","bool")},r={axis:t,keepDims:n};return P.runKernel(Ld,a,r)}var Eh=R({all_:R$});function P$(e,t=null,n=!1){let a={x:C(e,"x","any","bool")},r={axis:t,keepDims:n};return P.runKernel(zd,a,r)}var Lc=R({any_:P$});function O$(e,t=0){let n={x:C(e,"x","argMax")},a={axis:t};return P.runKernel(Ps,n,a)}var zc=R({argMax_:O$});function L$(e,t=0){let n={x:C(e,"x","argMin")},a={axis:t};return P.runKernel(dc,n,a)}var Ly=R({argMin_:L$});function z$(e){let t={x:C(e,"x","asin")};return P.runKernel(Wo,t)}var zy=R({asin_:z$});function B$(e){let t={x:C(e,"x","asinh")};return P.runKernel(Vo,t)}var By=R({asinh_:B$});function W$(e){let t={x:C(e,"x","atan")};return P.runKernel(Uo,t)}var Wy=R({atan_:W$});function V$(e,t){let n=C(e,"a","atan2"),a=C(t,"b","atan2");[n,a]=Tt(n,a);let r={a:n,b:a};return P.runKernel(Ho,r)}var Vy=R({atan2_:V$});function U$(e){let t={x:C(e,"x","atanh")};return P.runKernel(Go,t)}var Uy=R({atanh_:U$});function G$(e,t,n,a,r="NHWC",s){let i=e[3],o=[...t,i],l=ok(r);return Bc(e,o,n,s,a,null,null,l)}function lk(e,t,n,a,r,s,i="channelsLast"){let[o,l]=_h(t),c;if(i==="channelsLast")c=[o,l,e[3],e[3]];else if(i==="channelsFirst")c=[o,l,e[1],e[1]];else throw new Error(`Unknown dataFormat ${i}`);return Bc(e,c,n,a,r,s,!1,i)}function H$(e,t,n,a,r,s,i="NDHWC"){let[o,l,c]=Gy(t),u,p;if(i==="NDHWC")p="channelsLast",u=[o,l,c,e[4],e[4]];else if(i==="NCDHW")p="channelsFirst",u=[o,l,c,e[1],e[1]];else throw new Error(`Unknown dataFormat ${i}`);return uk(e,u,n,a,r,!1,p,s)}function Bc(e,t,n,a,r,s,i=!1,o="channelsLast"){let[l,c,u,p]=[-1,-1,-1,-1];if(o==="channelsLast")[l,c,u,p]=e;else if(o==="channelsFirst")[l,p,c,u]=e;else throw new Error(`Unknown dataFormat ${o}`);let[d,h,,m]=t,[f,g]=_h(n),[y,b]=_h(a),x=ql(d,y),v=ql(h,b),{padInfo:N,outHeight:T,outWidth:E}=j$(r,c,u,f,g,x,v,s,o),A=i?m*p:m,$;return o==="channelsFirst"?$=[l,A,T,E]:o==="channelsLast"&&($=[l,T,E,A]),{batchSize:l,dataFormat:o,inHeight:c,inWidth:u,inChannels:p,outHeight:T,outWidth:E,outChannels:A,padInfo:N,strideHeight:f,strideWidth:g,filterHeight:d,filterWidth:h,effectiveFilterHeight:x,effectiveFilterWidth:v,dilationHeight:y,dilationWidth:b,inShape:e,outShape:$,filterShape:t}}function uk(e,t,n,a,r,s=!1,i="channelsLast",o){let[l,c,u,p,d]=[-1,-1,-1,-1,-1];if(i==="channelsLast")[l,c,u,p,d]=e;else if(i==="channelsFirst")[l,d,c,u,p]=e;else throw new Error(`Unknown dataFormat ${i}`);let[h,m,f,,g]=t,[y,b,x]=Gy(n),[v,N,T]=Gy(a),E=ql(h,v),A=ql(m,N),$=ql(f,T),{padInfo:O,outDepth:V,outHeight:W,outWidth:H}=q$(r,c,u,p,y,b,x,E,A,$,o),X=s?g*d:g,q;return i==="channelsFirst"?q=[l,X,V,W,H]:i==="channelsLast"&&(q=[l,V,W,H,X]),{batchSize:l,dataFormat:i,inDepth:c,inHeight:u,inWidth:p,inChannels:d,outDepth:V,outHeight:W,outWidth:H,outChannels:X,padInfo:O,strideDepth:y,strideHeight:b,strideWidth:x,filterDepth:h,filterHeight:m,filterWidth:f,effectiveFilterDepth:E,effectiveFilterHeight:A,effectiveFilterWidth:$,dilationDepth:v,dilationHeight:N,dilationWidth:T,inShape:e,outShape:q,filterShape:t}}function K$(e,t,n,a,r){a==null&&(a=Hy(e,t,n));let s=e[0],i=e[1],o=Di((s-t+2*a)/n+1,r),l=Di((i-t+2*a)/n+1,r);return[o,l]}function X$(e,t,n,a,r,s){r==null&&(r=Hy(e,t,a));let i=e[0],o=e[1],l=e[2],c=Di((i-t+2*r)/a+1,s),u=Di((o-t+2*r)/a+1,s),p=Di((l-t+2*r)/a+1,s);return[c,u,p,n]}function Hy(e,t,n,a=1){let r=ql(t,a);return Math.floor((e[0]*(n-1)-n+r)/2)}function _h(e){return typeof e=="number"?[e,e,e]:e.length===2?[e[0],e[1],1]:e}function Gy(e){return typeof e=="number"?[e,e,e]:e}function ql(e,t){return t<=1?e:e+(e-1)*(t-1)}function j$(e,t,n,a,r,s,i,o,l){let c,u,p;if(typeof e=="number"){c={top:e,bottom:e,left:e,right:e,type:e===0?"VALID":"NUMBER"};let d=K$([t,n],s,a,e,o);u=d[0],p=d[1]}else if(e==="same"){u=Math.ceil(t/a),p=Math.ceil(n/r);let d=Math.max(0,(u-1)*a+s-t),h=Math.max(0,(p-1)*r+i-n),m=Math.floor(d/2),f=d-m,g=Math.floor(h/2),y=h-g;c={top:m,bottom:f,left:g,right:y,type:"SAME"}}else if(e==="valid")c={top:0,bottom:0,left:0,right:0,type:"VALID"},u=Math.ceil((t-s+1)/a),p=Math.ceil((n-i+1)/r);else if(typeof e=="object"){let d=l==="channelsLast"?e[1][0]:e[2][0],h=l==="channelsLast"?e[1][1]:e[2][1],m=l==="channelsLast"?e[2][0]:e[3][0],f=l==="channelsLast"?e[2][1]:e[3][1];c={top:d,bottom:h,left:m,right:f,type:d===0&&h===0&&m===0&&f===0?"VALID":"EXPLICIT"},u=Di((t-s+d+h)/a+1,o),p=Di((n-i+m+f)/r+1,o)}else throw Error(`Unknown padding parameter: ${e}`);return{padInfo:c,outHeight:u,outWidth:p}}function q$(e,t,n,a,r,s,i,o,l,c,u){let p,d,h,m;if(typeof e=="number"){p={top:e,bottom:e,left:e,right:e,front:e,back:e,type:e===0?"VALID":"NUMBER"};let f=X$([t,n,a,1],o,1,r,e,u);d=f[0],h=f[1],m=f[2]}else if(e==="same"){d=Math.ceil(t/r),h=Math.ceil(n/s),m=Math.ceil(a/i);let f=(d-1)*r+o-t,g=(h-1)*s+l-n,y=(m-1)*i+c-a,b=Math.floor(f/2),x=f-b,v=Math.floor(g/2),N=g-v,T=Math.floor(y/2),E=y-T;p={top:v,bottom:N,left:T,right:E,front:b,back:x,type:"SAME"}}else if(e==="valid")p={top:0,bottom:0,left:0,right:0,front:0,back:0,type:"VALID"},d=Math.ceil((t-o+1)/r),h=Math.ceil((n-l+1)/s),m=Math.ceil((a-c+1)/i);else throw Error(`Unknown padding parameter: ${e}`);return{padInfo:p,outDepth:d,outHeight:h,outWidth:m}}function Di(e,t){if(!t)return Math.trunc(e);switch(t){case"round":return Math.round(e);case"ceil":return Math.ceil(e);case"floor":return Math.floor(e);default:throw new Error(`Unknown roundingMode ${t}`)}}function as(e){let[t,n,a]=_h(e);return t===1&&n===1&&a===1}function $n(e,t){return as(e)||as(t)}function ok(e){if(e==="NHWC")return"channelsLast";if(e==="NCHW")return"channelsFirst";throw new Error(`Unknown dataFormat ${e}`)}function Y$(e,t){let n={x:C(e,"x","reshape","string_or_numeric")},a={shape:t};return P.runKernel(Nl,n,a)}var j=R({reshape_:Y$});function J$(e,t,n,a,r){let s=C(e,"x","avgPool","float32"),i=1;F($n(n,i),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${n} and dilations '${i}'`);let o=s,l=!1;s.rank===3&&(l=!0,o=j(s,[1,s.shape[0],s.shape[1],s.shape[2]])),F(o.rank===4,()=>`Error in avgPool: x must be rank 4 but got rank ${o.rank}.`),r!=null&&F(qt(a),()=>`Error in avgPool: pad must be an integer when using, dimRoundingMode ${r} but got pad ${a}.`);let c={x:o},u={filterSize:t,strides:n,pad:a,dimRoundingMode:r},p=P.runKernel(Os,c,u);return p=pe(p,s.dtype),l?j(p,[p.shape[1],p.shape[2],p.shape[3]]):p}var Zn=R({avgPool_:J$});function Z$(e,t,n,a,r,s="NDHWC",i){i==null?i=[1,1,1]:Pt("dilations is deprecated, this field will be gone in v3.0.0.");let o=C(e,"x","avgPool3d","float32"),l=o,c=!1;o.rank===4&&(c=!0,l=j(o,[1,o.shape[0],o.shape[1],o.shape[2],o.shape[3]])),F(l.rank===5,()=>`Error in avgPool3d: x must be rank 5 but got rank ${l.rank}.`),F(s==="NDHWC",()=>`Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of ${s}`),F($n(n,i),()=>`Error in avgPool3d: Either strides or dilations must be 1. Got strides ${n} and dilations '${i}'`),r!=null&&F(qt(a),()=>`Error in avgPool3d: pad must be an integer when using, dimRoundingMode ${r} but got pad ${a}.`);let u={x:l},p={filterSize:t,strides:n,pad:a,dimRoundingMode:r,dataFormat:s,dilations:i},d=P.runKernel(hc,u,p);return d=pe(d,l.dtype),c?j(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}var jy=R({avgPool3d_:Z$});function Q$(e,t=0){F(e.length>=1,()=>"Pass at least one tensor to concat");let n=Pc(e,"tensors","concat","string_or_numeric");if(n[0].dtype==="complex64"&&n.forEach(s=>{if(s.dtype!=="complex64")throw new Error(`Cannot concatenate complex64 tensors with a tensor + with dtype ${s.dtype}. `)}),n.length===1)return es(n[0]);let a=n,r={axis:t};return P.runKernel(qo,a,r)}var Ze=R({concat_:Q$});function eD(e){let t={x:C(e,"x","sigmoid")};return P.runKernel(yi,t)}var da=R({sigmoid_:eD});function tD(e,t,n){let a=C(e,"x","slice","string_or_numeric");if(a.rank===0)throw new Error("Slicing scalar is not possible");let r={x:a},s={begin:t,size:n};return P.runKernel(El,r,s)}var We=R({slice_:tD});function nD(e){let t={x:C(e,"x","tanh")};return P.runKernel(Ii,t)}var Kl=R({tanh_:nD});function aD(e,t,n,a,r,s){let i=C(e,"forgetBias","basicLSTMCell"),o=C(t,"lstmKernel","basicLSTMCell"),l=C(n,"lstmBias","basicLSTMCell"),c=C(a,"data","basicLSTMCell"),u=C(r,"c","basicLSTMCell"),p=C(s,"h","basicLSTMCell"),d=Ze([c,p],1),h=ze(d,o),m=Z(h,l),f=m.shape[0],g=m.shape[1]/4,y=[f,g],b=We(m,[0,0],y),x=We(m,[0,g],y),v=We(m,[0,g*2],y),N=We(m,[0,g*3],y),T=Z(L(da(b),Kl(x)),L(u,da(Z(i,v)))),E=L(Kl(T),da(N));return[T,E]}var rD=R({basicLSTMCell_:aD});function sD(e,t,n){let a=C(e,"x","batchToSpaceND"),r=t.reduce((o,l)=>o*l);F(a.rank>=1+t.length,()=>`input rank is ${a.rank} but should be > than blockShape.length ${t.length}`),F(n.length===t.length,()=>`crops.length is ${n.length} but should be equal to blockShape.length ${t.length}`),F(a.shape[0]%r==0,()=>`input tensor batch is ${a.shape[0]} but is not divisible by the product of the elements of blockShape ${t.join(" * ")} === ${r}`);let s={x:a},i={blockShape:t,crops:n};return P.runKernel(mc,s,i)}var Wc=R({batchToSpaceND_:sD});function iD(e){let t;return e.rank===0||e.rank===1?t=j(e,[1,1,1,e.size]):e.rank===2?t=j(e,[1,1,e.shape[0],e.shape[1]]):e.rank===3?t=j(e,[1,e.shape[0],e.shape[1],e.shape[2]]):t=e,t}function oD(e,t,n,a,r,s){s==null&&(s=.001);let i=C(e,"x","batchNorm"),o=C(t,"mean","batchNorm"),l=C(n,"variance","batchNorm"),c;r!=null&&(c=C(r,"scale","batchNorm"));let u;a!=null&&(u=C(a,"offset","batchNorm")),F(o.rank===l.rank,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),F(u==null||o.rank===u.rank,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),F(c==null||o.rank===c.rank,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let p={x:iD(i),scale:c,offset:u,mean:o,variance:l},d={varianceEpsilon:s},h=P.runKernel(Xs,p,d);return j(h,i.shape)}var wr=R({batchNorm_:oD});function lD(e,t,n,a,r,s){let i=C(e,"x","batchNorm"),o=C(t,"mean","batchNorm"),l=C(n,"variance","batchNorm"),c;r!=null&&(c=C(r,"scale","batchNorm"));let u;return a!=null&&(u=C(a,"offset","batchNorm")),F(i.rank===2,()=>`Error in batchNorm2D: x must be rank 2 but got rank ${i.rank}.`),F(o.rank===2||o.rank===1,()=>`Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank ${o.rank}.`),F(l.rank===2||l.rank===1,()=>`Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank ${l.rank}.`),c!=null&&F(c.rank===2||c.rank===1,()=>`Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank ${c.rank}.`),u!=null&&F(u.rank===2||u.rank===1,()=>`Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank ${u.rank}.`),wr(i,o,l,u,c,s)}var ck=R({batchNorm2d_:lD});function uD(e,t,n,a,r,s){let i=C(e,"x","batchNorm"),o=C(t,"mean","batchNorm"),l=C(n,"variance","batchNorm"),c;r!=null&&(c=C(r,"scale","batchNorm"));let u;return a!=null&&(u=C(a,"offset","batchNorm")),F(i.rank===3,()=>`Error in batchNorm3D: x must be rank 3 but got rank ${i.rank}.`),F(o.rank===3||o.rank===1,()=>`Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank ${o.rank}.`),F(l.rank===3||l.rank===1,()=>`Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank ${l.rank}.`),c!=null&&F(c.rank===3||c.rank===1,()=>`Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank ${c.rank}.`),u!=null&&F(u.rank===3||u.rank===1,()=>`Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank ${u.rank}.`),wr(i,o,l,u,c,s)}var pk=R({batchNorm3d_:uD});function cD(e,t,n,a,r,s){let i=C(e,"x","batchNorm"),o=C(t,"mean","batchNorm"),l=C(n,"variance","batchNorm"),c;r!=null&&(c=C(r,"scale","batchNorm"));let u;return a!=null&&(u=C(a,"offset","batchNorm")),F(i.rank===4,()=>`Error in batchNorm4D: x must be rank 4 but got rank ${i.rank}.`),F(o.rank===4||o.rank===1,()=>`Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank ${o.rank}.`),F(l.rank===4||l.rank===1,()=>`Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank ${l.rank}.`),c!=null&&F(c.rank===4||c.rank===1,()=>`Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank ${c.rank}.`),u!=null&&F(u.rank===4||u.rank===1,()=>`Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank ${u.rank}.`),wr(i,o,l,u,c,s)}var dk=R({batchNorm4d_:cD});function pD(e,t,n){let a=C(e,"x","bincount"),r=C(t,"weights","bincount");F(a.dtype==="int32",()=>`Error in bincount: input dtype must be int32, but got ${a.dtype}`),F(n>=0,()=>`size must be non-negative, but got ${n}.`),F(r.size===a.size||r.size===0,()=>`Error in bincount: weights must have the same size as input or0-length, but got input shape: ${a.shape}, weights shape: ${r.shape}.`);let s={x:a,weights:r},i={size:n};return P.runKernel(Vd,s,i)}var hk=R({bincount_:pD});function dD(e,t){let n=C(e,"broadcastTo","x"),a=n.shape;if(t.some(l=>!(l>0)||l%1!=0))throw new Error(`broadcastTo(): Invalid broadcast shape [${t}].`);if(t.lengthn.rank){let l=n.shape.slice();for(;l.length=0;l--)if(r[l]===t[l])s[l]=1;else if(n.shape[l]!==1)throw new Error(`broadcastTo(): [${a}] cannot be broadcast to [${t}].`);if(s.map((l,c)=>l>1?c:-1).filter(l=>l>=0).length===0)return es(n);let i={x:n},o={reps:s};return P.runKernel(Xr,i,o)}var Vc=R({broadcastTo_:dD});function hD(e){let t={x:C(e,"x","ceil")};return P.runKernel(jo,t)}var qy=R({ceil_:hD});function mD(e,t,n){let a=C(e,"x","clipByValue");F(t<=n,()=>`Error in clip: min (${t}) must be less than or equal to max (${n}).`);let r={x:a},s={clipValueMin:t,clipValueMax:n};return P.runKernel(Kr,r,s)}var Yt=R({clipByValue_:mD});function fD(e){return Ze(e,0)}var mk=R({concat1d_:fD});function gD(e,t){return Ze(e,t)}var fk=R({concat2d_:gD});function yD(e,t){return Ze(e,t)}var gk=R({concat3d_:yD});function bD(e,t){return Ze(e,t)}var yk=R({concat4d_:bD});function xD(e,t,n,a,r="NHWC",s=[1,1],i){let o=C(e,"x","conv2d"),l=C(t,"filter","conv2d"),c=o,u=!1;o.rank===3&&(u=!0,c=j(o,[1,o.shape[0],o.shape[1],o.shape[2]])),F(c.rank===4,()=>`Error in conv2d: input must be rank 4, but got rank ${c.rank}.`),F(l.rank===4,()=>`Error in conv2d: filter must be rank 4, but got rank ${l.rank}.`),i!=null&&F(qt(a),()=>`Error in conv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${a}.`);let p=r==="NHWC"?c.shape[3]:c.shape[1];F(p===l.shape[2],()=>`Error in conv2d: depth of input (${p}) must match input depth for filter ${l.shape[2]}.`),F($n(n,s),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`);let d={x:c,filter:l},h={strides:n,pad:a,dataFormat:r,dilations:s,dimRoundingMode:i},m=P.runKernel(Bs,d,h);return u?j(m,[m.shape[1],m.shape[2],m.shape[3]]):m}var $t=R({conv2d_:xD});function vD(e,t,n,a,r="NWC",s=1,i){let o=C(e,"x","conv1d"),l=C(t,"filter","conv1d"),c=o,u=!1;o.rank===2&&(u=!0,c=j(o,[1,o.shape[0],o.shape[1]])),F(c.rank===3,()=>`Error in conv1d: input must be rank 3, but got rank ${c.rank}.`),F(l.rank===3,()=>`Error in conv1d: filter must be rank 3, but got rank ${l.rank}.`),i!=null&&F(qt(a),()=>`Error in conv1d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${a}.`),F(c.shape[2]===l.shape[1],()=>`Error in conv1d: depth of input (${c.shape[2]}) must match input depth for filter ${l.shape[1]}.`),F($n(n,s),()=>`Error in conv1D: Either stride or dilation must be 1. Got stride ${n} and dilation '${s}'`),F(r==="NWC",()=>`Error in conv1d: got dataFormat of ${r} but only NWC is currently supported.`);let p=j(l,[1,l.shape[0],l.shape[1],l.shape[2]]),d=j(c,[c.shape[0],1,c.shape[1],c.shape[2]]),h=$t(d,p,[1,n],a,"NHWC",[1,s],i);return u?j(h,[h.shape[2],h.shape[3]]):j(h,[h.shape[0],h.shape[2],h.shape[3]])}var Fh=R({conv1d_:vD});function wD(e,t,n,a,r,s="NHWC",i){F(e.length===t.rank,()=>`Length of inShape (${e.length}) and rank of dy (${t.rank}) must match`);let o=e,l=t,c=!1;t.rank===3&&(c=!0,l=j(t,[1,t.shape[0],t.shape[1],t.shape[2]]),o=[1,e[0],e[1],e[2]]),F(o.length===4,()=>`Error in conv2dDerInput: inShape must be length 4, but got length ${o.length}.`),F(l.rank===4,()=>`Error in conv2dDerInput: dy must be rank 4, but got rank ${l.rank}`),F(n.rank===4,()=>`Error in conv2dDerInput: filter must be rank 4, but got rank ${n.rank}`);let u=s==="NHWC"?o[3]:o[1],p=s==="NHWC"?l.shape[3]:l.shape[1];F(u===n.shape[2],()=>`Error in conv2dDerInput: depth of input (${u}) must match input depth for filter ${n.shape[2]}.`),F(p===n.shape[3],()=>`Error in conv2dDerInput: depth of output (${p}) must match output depth for filter ${n.shape[3]}.`),i!=null&&F(qt(r),()=>`Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`);let d={dy:l,filter:n},h={strides:a,pad:r,dataFormat:s,dimRoundingMode:i,inputShape:o},m=P.runKernel(Ws,d,h);return c?j(m,[m.shape[1],m.shape[2],m.shape[3]]):m}var Ky=R({conv2DBackpropInput_:wD});function kD(e,t,n,a,r,s){let i=C(e,"x","conv2dTranspose"),o=C(t,"filter","conv2dTranspose");return Ky(n,i,o,a,r,"NHWC",s)}var Ah=R({conv2dTranspose_:kD});function ID(e,t,n,a,r="NDHWC",s=[1,1,1]){let i=C(e,"x","conv3d"),o=C(t,"filter","conv3d"),l=i,c=!1;i.rank===4&&(c=!0,l=j(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]])),F(l.rank===5,()=>`Error in conv3d: input must be rank 5, but got rank ${l.rank}.`),F(o.rank===5,()=>`Error in conv3d: filter must be rank 5, but got rank ${o.rank}.`),F(l.shape[4]===o.shape[3],()=>`Error in conv3d: depth of input (${l.shape[4]}) must match input depth for filter ${o.shape[3]}.`),F($n(n,s),()=>`Error in conv3D: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`),F(r==="NDHWC",()=>`Error in conv3d: got dataFormat of ${r} but only NDHWC is currently supported.`);let u={x:l,filter:o},p={strides:n,pad:a,dataFormat:r,dilations:s},d=P.runKernel(gc,u,p);return c?j(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}var Xy=R({conv3d_:ID});function ND(e,t,n,a,r){F(e.length===t.rank,()=>`Length of inShape (${e.length}) and rank of dy (${t.rank}) must match`);let s=e,i=t,o=!1;t.rank===4&&(o=!0,i=j(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]]),s=[1,e[0],e[1],e[2],e[3]]);let l=s[4],c=i.shape[4];F(s.length===5,()=>`Error in conv3dDerInput: inShape must be length 5, but got length ${s.length}.`),F(i.rank===5,()=>`Error in conv3dDerInput: dy must be rank 5, but got rank ${i.rank}`),F(n.rank===5,()=>`Error in conv3dDerInput: filter must be rank 5, but got rank ${n.rank}`),F(l===n.shape[3],()=>`Error in conv3dDerInput: depth of input (${l}) must match input depth for filter ${n.shape[3]}.`),F(c===n.shape[4],()=>`Error in conv3dDerInput: depth of output (${c}) must match output depth for filter ${n.shape[4]}.`);let u={dy:i,filter:n},p={pad:r,strides:a,inputShape:s},d=P.runKernel(jd,u,p);return o?j(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}var bk=R({conv3DBackpropInput_:ND});function TD(e,t,n,a,r){let s=C(e,"x","conv3dTranspose"),i=C(t,"filter","conv3dTranspose");return bk(n,s,i,a,r)}var SD=R({conv3dTranspose_:TD});function CD(e){let t={x:C(e,"x","cos")};return P.runKernel(Vs,t)}var Uc=R({cos_:CD});function ED(e){let t={x:C(e,"x","cosh")};return P.runKernel(Ko,t)}var $h=R({cosh_:ED});function _D(e,t=0,n=!1,a=!1){let r={x:C(e,"x","cumsum")},s={axis:t,exclusive:n,reverse:a};return P.runKernel(Us,r,s)}var Dh=R({cumsum_:_D});function FD(e,t,n,a=!1){let r=C(e,"x","denseBincount"),s=C(t,"weights","denseBincount");F(r.dtype==="int32",()=>`Error in denseBincount: input dtype must be int32, but got ${r.dtype}`),F(r.rank<=2,()=>`Error in denseBincount: input must be at most rank 2, but got rank ${r.rank}.`),F(n>=0,()=>`size must be non-negative, but got ${n}.`),F(s.size===r.size||s.size===0,()=>`Error in denseBincount: weights must have the same shape as x or 0-length, but got x shape: ${r.shape}, weights shape: ${s.shape}.`);let i={x:r,weights:s},o={size:n,binaryOutput:a};return P.runKernel(qd,i,o)}var xk=R({denseBincount_:FD});function AD(e,t,n="NHWC"){let a=C(e,"x","depthToSpace"),r=n==="NHWC"?a.shape[1]:a.shape[2],s=n==="NHWC"?a.shape[2]:a.shape[3],i=n==="NHWC"?a.shape[3]:a.shape[1];F(r*t>=0,()=>`Negative dimension size caused by overflow when multiplying + ${r} and ${t} for depthToSpace with input shape + ${a.shape}`),F(s*t>=0,()=>`Negative dimension size caused by overflow when multiplying + ${s} and ${t} for depthToSpace with input shape + ${a.shape}`),F(i%(t*t)==0,()=>`Dimension size must be evenly divisible by ${t*t} but is ${i} for depthToSpace with input shape ${a.shape}`);let o={x:a},l={blockSize:t,dataFormat:n};return P.runKernel(Yo,o,l)}var Yy=R({depthToSpace_:AD});function $D(e,t,n,a,r="NHWC",s=[1,1],i){let o=C(e,"x","depthwiseConv2d"),l=C(t,"filter","depthwiseConv2d"),c=o,u=!1;o.rank===3&&(u=!0,c=j(o,[1,o.shape[0],o.shape[1],o.shape[2]])),F(c.rank===4,()=>`Error in depthwiseConv2d: input must be rank 4, but got rank ${c.rank}.`),F(l.rank===4,()=>`Error in depthwiseConv2d: filter must be rank 4, but got rank ${l.rank}.`),F(c.shape[3]===l.shape[2],()=>`Error in depthwiseConv2d: number of input channels (${c.shape[3]}) must match the inChannels dimension in filter ${l.shape[2]}.`),i!=null&&F(qt(a),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${a}.`);let p={x:c,filter:l},d={strides:n,pad:a,dataFormat:r,dilations:s,dimRoundingMode:i},h=P.runKernel(Gs,p,d);return u?j(h,[h.shape[1],h.shape[2],h.shape[3]]):h}var kr=R({depthwiseConv2d_:$D});function DD(e){let t={x:C(e,"x","diag")};return P.runKernel(Yd,t)}var MD=R({diag_:DD});function RD(e,t,n,a,r=[1,1],s="NHWC"){let i=C(e,"x","dilation2d"),o=C(t,"filter","dilation2d");F(i.rank===3||i.rank===4,()=>`Error in dilation2d: input must be rank 3 or 4, but got rank ${i.rank}.`),F(o.rank===3,()=>`Error in dilation2d: filter must be rank 3, but got rank ${o.rank}.`),F(s==="NHWC",()=>`Error in dilation2d: Only NHWC is currently supported, but got dataFormat of ${s}`);let l=i,c=!1;i.rank===3&&(l=j(i,[1,i.shape[0],i.shape[1],i.shape[2]]),c=!0);let u={x:l,filter:o},p={strides:n,pad:a,dilations:r},d=P.runKernel(yc,u,p);return c?j(d,[d.shape[1],d.shape[2],d.shape[3]]):d}var Jy=R({dilation2d_:RD});function PD(e,t){let n=e.length,a=[];for(let r=0;r1&&i===1&&a.unshift(s)}return a}function Vt(e,t){let n=[];for(let a=0;a1)&&n.unshift(s)}return n}function vt(e,t){let n=[],a=Math.max(e.length,t.length);for(let r=0;r"The first dimension of `a` must match the size of `condition`."),s.rank!==1&&rt(s.shape,l.shape,"Error in where: ");let c={condition:s,t:o,e:l};return P.runKernel(Sl,c)}var In=R({where_:LD});function zD(e){let t={x:C(e,"x","zerosLike")};return P.runKernel(Ol,t)}var He=R({zerosLike_:zD});function BD(e,t){let n=C(e,"a","div"),a=C(t,"b","div");[n,a]=Tt(n,a);let r=ve(n,a),s=He(r),i=Ir(a,s);return In(i,s,r)}var Zy=R({divNoNan_:BD});function WD(e,t){let n=C(e,"t1","dot"),a=C(t,"t2","dot");F((n.rank===1||n.rank===2)&&(a.rank===1||a.rank===2),()=>`Error in dot: inputs must all be rank 1 or 2, but got ranks ${n.rank} and ${a.rank}.`);let r=n.rank===1?n.size:n.shape[1],s=a.rank===1?a.size:a.shape[0];if(F(r===s,()=>`Error in dot: inner dimensions of inputs must match, but got ${r} and ${s}.`),n.rank===1&&a.rank===1){let i=j(n,[1,-1]),o=j(a,[-1,1]),l=ze(i,o);return j(l,[])}else if(n.rank===1&&a.rank===2){let i=j(n,[1,-1]),o=j(a,[a.shape[0],a.shape[1]]),l=ze(i,o);return j(l,[l.size])}else if(n.rank===2&&a.rank===1){let i=j(a,[-1,1]),o=ze(n,i);return j(o,[o.size])}else{let i=j(a,[a.shape[0],a.shape[1]]);return ze(n,i)}}var vk=R({dot_:WD});function VD(e){let t={x:C(e,"x","elu")};return P.runKernel(Jo,t)}var Xl=R({elu_:VD});function UD(e){let t=C(e,"x","erf");F(t.dtype==="int32"||t.dtype==="float32",()=>"Input dtype must be `int32` or `float32`."),t.dtype==="int32"&&(t=pe(t,"float32"));let n={x:t};return P.runKernel(Zo,n)}var Qy=R({erf_:UD});function GD(e){let t={x:C(e,"x","exp")};return P.runKernel(js,t)}var mn=R({exp_:GD});function HD(e,t=0){let n=C(e,"x","expandDims","string_or_numeric");F(t<=n.rank,()=>"Axis must be <= rank of the tensor");let a={input:n},r={dim:t};return P.runKernel(el,a,r)}var Qn=R({expandDims_:HD});function jD(e){let t={x:C(e,"x","expm1")};return P.runKernel(tl,t)}var eb=R({expm1_:jD});function qD(e,t){let n=C(e,"x","tile","string_or_numeric");F(n.rank===t.length,()=>`Error in transpose: rank of input ${n.rank} must match length of reps ${t}.`);let a={x:n},r={reps:t};return P.runKernel(Xr,a,r)}var Ka=R({tile_:qD});function KD(e,t,n,a="float32"){t==null&&(t=e);let r=Le([e,t],a),s=e<=t?e:t;for(let o=0;o`Error in localResponseNormalization: x must be rank 3 or 4 but got + rank ${s.rank}.`),F(qt(t),()=>`Error in localResponseNormalization: depthRadius must be an integer but got depthRadius ${t}.`);let i=s,o=!1;s.rank===3&&(o=!0,i=j(s,[1,s.shape[0],s.shape[1],s.shape[2]]));let l={x:i},c={depthRadius:t,bias:n,alpha:a,beta:r},u=P.runKernel(wc,l,c);return o?j(u,[u.shape[1],u.shape[2],u.shape[3]]):u}var nb=R({localResponseNormalization_:iM});function oM(e){let t={x:C(e,"x","log")};return P.runKernel(Zs,t)}var Dn=R({log_:oM});function lM(e){let t={x:C(e,"x","log1p")};return P.runKernel(dl,t)}var Rh=R({log1p_:lM});function uM(e){return F(jr(e),()=>"The f passed in grad(f) must be a function"),(t,n)=>{let a=C(t,"x","tf.grad","string_or_numeric"),r=n!=null?C(n,"dy","tf.grad"):null;return P.tidy(()=>{let{value:s,grads:i}=P.gradients(()=>e(a),[a],r);return r!=null&&rt(s.shape,r.shape,"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)"),Ph(i),i[0]})}}function cM(e){return F(jr(e),()=>"The f passed in grads(f) must be a function"),(t,n)=>{F(Array.isArray(t),()=>"The args passed in grads(f)(args) must be an array of `Tensor`s or `TensorLike`s");let a=Pc(t,"args","tf.grads","string_or_numeric"),r=n!=null?C(n,"dy","tf.grads"):null;return P.tidy(()=>{let{value:s,grads:i}=P.gradients(()=>e(...a),a,r);return r!=null&&rt(s.shape,r.shape,"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),Ph(i),i})}}function pM(e){return F(jr(e),()=>"The f passed in valueAndGrad(f) must be a function"),(t,n)=>{F(t instanceof z,()=>"The x passed in valueAndGrad(f)(x) must be a tensor"),F(n==null||n instanceof z,()=>"The dy passed in valueAndGrad(f)(x, dy) must be a tensor");let{grads:a,value:r}=P.gradients(()=>e(t),[t],n);return Ph(a),{grad:a[0],value:r}}}function dM(e){return F(jr(e),()=>"The f passed in valueAndGrads(f) must be a function"),(t,n)=>{F(Array.isArray(t)&&t.every(r=>r instanceof z),()=>"The args passed in valueAndGrads(f)(args) must be array of tensors"),F(n==null||n instanceof z,()=>"The dy passed in valueAndGrads(f)(args, dy) must be a tensor");let a=P.gradients(()=>e(...t),t,n);return n!=null&&rt(a.value.shape,n.shape,"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),Ph(a.grads),a}}function Tk(e,t){F(jr(e),()=>"The f passed in variableGrads(f) must be a function"),F(t==null||Array.isArray(t)&&t.every(c=>c instanceof Yr),()=>"The varList passed in variableGrads(f, varList) must be an array of variables");let n=t!=null;if(!n){t=[];for(let c in P.registeredVariables)t.push(P.registeredVariables[c])}let a=n?t.filter(c=>!c.trainable):null,r=t.length;t=t.filter(c=>c.trainable),F(t.length>0,()=>`variableGrads() expects at least one of the input variables to be trainable, but none of the ${r} variables is trainable.`);let s=!0,{value:i,grads:o}=P.gradients(e,t,null,s);F(o.some(c=>c!=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()."),F(i.rank===0,()=>`The f passed in variableGrads(f) must return a scalar, but it returned a rank-${i.rank} tensor`);let l={};return t.forEach((c,u)=>{o[u]!=null&&(l[c.name]=o[u])}),a!=null&&a.forEach(c=>l[c.name]=null),{value:i,grads:l}}function Xa(e){return P.customGrad(e)}function Ph(e){if(e.filter(t=>t==null).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.`)}function hM(e){let t={x:C(e,"x","neg")};return P.runKernel(fl,t)}var St=R({neg_:hM});function mM(e){let t={x:C(e,"x","softplus")};return P.runKernel(Al,t)}var Jl=R({softplus_:mM});function fM(e){let t=C(e,"x","logSigmoid");return Xa(n=>({value:St(Jl(St(n))),gradFunc:a=>L(a,da(St(n)))}))(t)}var Sk=R({logSigmoid_:fM});function gM(e,t=null,n=!1){let a={x:C(e,"x","max")},r={reductionIndices:t,keepDims:n};return P.runKernel(Qs,a,r)}var ta=R({max_:gM});function yM(e,t){let n=C(e,"a","sub"),a=C(t,"b","sub");[n,a]=Tt(n,a);let r={a:n,b:a};return P.runKernel(ki,r)}var fe=R({sub_:yM});function bM(e,t=null,n=!1){let a=C(e,"x","sum");a.dtype==="bool"&&(a=pe(a,"int32"));let r={x:a},s={axis:t,keepDims:n};return P.runKernel(xi,r,s)}var Ce=R({sum_:bM});function xM(e,t=-1){let n=C(e,"logits","logSoftmax");if(t===-1&&(t=n.rank-1),t!==n.rank-1)throw Error(`Log Softmax along a non-last dimension is not yet supported. Logits was rank ${n.rank} and axis was ${t}`);return Xa((a,r)=>{let s=!0,i=ta(a,t,!0),o=fe(a,i),l=fe(pe(o,"float32"),Dn(Ce(mn(o),t,s)));return r([l]),{value:l,gradFunc:(c,u)=>{let[p]=u,d=!0,h=mn(p);return fe(c,L(Ce(c,t,d),h))}}})(n)}var Oh=R({logSoftmax_:xM});function ab(e,t){for(let n=0;ne[s]);return[n,r]}function Ri(e,t){let n=t.map(a=>1);return Ck(e,n,t)}function vM(e,t,n){F(ab(t,n),()=>`${e} supports only inner-most axes for now. Got axes ${t} and rank-${n} input.`)}function _k(e,t){if(ab(e,t))return null;let n=[];for(let a=0;an.push(a)),n}function rb(e){return e.map((t,n)=>[n,t]).sort((t,n)=>t[1]-n[1]).map(t=>t[0])}function wM(e,t){let n=[];for(let a=t-e;a`Error in maxPool: input must be rank 4 but got rank ${o.rank}.`),F($n(n,i),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${n} and dilations '${i}'`),r!=null&&F(qt(a),()=>`Error in maxPool: pad must be an integer when using, dimRoundingMode ${r} but got pad ${a}.`);let c={x:o},u={filterSize:t,strides:n,pad:a,dimRoundingMode:r},p=P.runKernel(ti,c,u);return l?j(p,[p.shape[1],p.shape[2],p.shape[3]]):p}var Dt=R({maxPool_:CM});function EM(e,t=[1,1,1],n,a,r,s="NDHWC",i){i==null?i=[1,1,1]:Pt("dilations is deprecated, this field will be gone in v3.0.0.");let o=C(e,"x","maxPool3d"),l=o,c=!1;o.rank===4&&(c=!0,l=j(o,[1,o.shape[0],o.shape[1],o.shape[2],o.shape[3]])),F(l.rank===5,()=>`Error in maxPool3d: x must be rank 5 but got rank ${l.rank}.`),F(s==="NDHWC",()=>`Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of ${s}`),F($n(n,i),()=>`Error in maxPool3d: Either strides or dilations must be 1. Got strides ${n} and dilations '${i}'`),r!=null&&F(qt(a),()=>`Error in maxPool3d: pad must be an integer when using, dimRoundingMode ${r} but got pad ${a}.`);let u={x:l},p={filterSize:t,strides:n,pad:a,dimRoundingMode:r,dataFormat:s,dilations:i},d=P.runKernel(kc,u,p);return c?j(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}var ib=R({maxPool3d_:EM});function _M(e,t,n,a,r=!1){let s={x:C(e,"x","maxPoolWithArgmax")},i={filterSize:t,strides:n,pad:a,includeBatchInIndex:r},o=P.runKernel(oh,s,i);return{result:o[0],indexes:o[1]}}var Ak=R({maxPoolWithArgmax_:_M});function FM(e,t){let n=C(e,"a","maximum"),a=C(t,"b","maximum");[n,a]=Tt(n,a),n.dtype==="bool"&&(n=pe(n,"int32"),a=pe(a,"int32")),vt(n.shape,a.shape);let r={a:n,b:a};return P.runKernel(ei,r)}var Sa=R({maximum_:FM});function AM(e,t=null,n=!1){let a={x:C(e,"x","mean")},r={axis:t,keepDims:n};return P.runKernel(ni,a,r)}var Ct=R({mean_:AM});function $M(e,t=null,n=!1){let a={x:C(e,"x","min")},r={axis:t,keepDims:n};return P.runKernel(ai,a,r)}var Zl=R({min_:$M});function DM(e,t){let n=C(e,"a","minimum"),a=C(t,"b","minimum");[n,a]=Tt(n,a),n.dtype==="bool"&&(n=pe(n,"int32"),a=pe(a,"int32")),vt(n.shape,a.shape);let r={a:n,b:a};return P.runKernel(ri,r)}var Pi=R({minimum_:DM});function MM(e,t,n){F(n==="reflect"||n==="symmetric",()=>`Invalid mode. Mode must be either reflect or symmetric. Got ${n}.`);let a=C(e,"x","mirrorPad");if(a.rank===0)throw new Error("mirrorPad(scalar) is not defined. Pass non-scalar to mirrorPad");F(t.length===a.rank,()=>`Padding doesn't match input. Must be ${a.rank}. Got ${t.length}.`);let r=n==="reflect"?1:0;for(let o=0;o"Invalid number of paddings. Must be length of 2 each."),F(t[o][0]>=0&&t[o][0]<=a.shape[o]-r&&t[o][1]>=0&&t[o][1]<=a.shape[o]-r,()=>`Padding in dimension ${o} cannot be greater than or equal to ${a.shape[o]-r} or less than 0 for input of shape ${a.shape}`);let s={paddings:t,mode:n},i={x:a};return P.runKernel(Ic,i,s)}var ob=R({mirrorPad_:MM});function RM(e,t){let n=C(e,"a","mod"),a=C(t,"b","mod");[n,a]=Tt(n,a);let r={a:n,b:a};return P.runKernel(ml,r)}var zh=R({mod_:RM});function PM(e){let t=C(e,"x","square"),n={};return P.runKernel("Square",{x:t},n)}var lt=R({square_:PM});function OM(e,t=null,n=!1){e=C(e,"x","moments");let a=ca(t,e.shape),r=Ct(e,a,n),s=r.shape;n||(s=Ri(r.shape,a));let i=lt(fe(pe(e,"float32"),j(r,s))),o=Ct(i,a,n);return{mean:r,variance:o}}var Bh=R({moments_:OM});function LM(e,t,n,a){let r=C(t,"data","multiRNNCell"),s=Pc(n,"c","multiRNNCell"),i=Pc(a,"h","multiRNNCell"),o=r,l=[];for(let p=0;p2)throw new Error(`Rank of probabilities must be 1 or 2, but is ${i}`);n=n||Math.random();let o={logits:i===1?j(r,[1,-1]):r},l={numSamples:t,seed:n,normalized:a},c=P.runKernel(lh,o,l);return i===1?j(c,[c.size]):c}var $k=R({multinomial_:BM});function WM(e,t){let n=C(e,"a","notEqual"),a=C(t,"b","notEqual");[n,a]=Tt(n,a),vt(n.shape,a.shape);let r={a:n,b:a};return P.runKernel(gl,r)}var ss=R({notEqual_:WM});function bt(e,t="float32"){if(t==="complex64"){let a=bt(e,"float32"),r=bt(e,"float32");return Jr(a,r)}let n=Od(zt(e),t);return P.makeTensor(n,e,t)}function Ya(e,t="float32"){if(t==="complex64"){let a=Ya(e,"float32"),r=bt(e,"float32");return Jr(a,r)}let n=ny(zt(e),t);return P.makeTensor(n,e,t)}function VM(e){let t={x:C(e,"x","onesLike")};return P.runKernel(vl,t)}var Mn=R({onesLike_:VM});function UM(e,t){let n=C(e,"v1","outerProduct"),a=C(t,"v2","outerProduct");F(n.rank===1&&a.rank===1,()=>`Error in outerProduct: inputs must be rank 1, but got ranks ${n.rank} and ${a.rank}.`);let r=j(n,[-1,1]),s=j(a,[1,-1]);return ze(r,s)}var GM=R({outerProduct_:UM});function HM(e,t,n=0){let a=C(e,"x","pad");if(a.rank===0)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");let r={paddings:t,constantValue:n},s={x:a};return P.runKernel(oi,s,r)}var na=R({pad_:HM});function jM(e,t,n=0){return F(t.length===2,()=>"Invalid number of paddings. Must be length of 2."),na(e,[t],n)}var qM=R({pad1d_:jM});function KM(e,t,n=0){return F(t.length===2&&t[0].length===2&&t[1].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),na(e,t,n)}var XM=R({pad2d_:KM});function YM(e,t,n=0){return F(t.length===3&&t[0].length===2&&t[1].length===2&&t[2].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),na(e,t,n)}var JM=R({pad3d_:YM});function ZM(e,t,n=0){return F(t.length===4&&t[0].length===2&&t[1].length===2&&t[2].length===2&&t[3].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),na(e,t,n)}var QM=R({pad4d_:ZM});function eR(e,t,n){let a=C(e,"x","spaceToBatchND");F(a.rank>=1+t.length,()=>`input rank ${a.rank} should be > than [blockShape] ${t.length}`),F(n.length===t.length,()=>`paddings.shape[0] ${n.length} must be equal to [blockShape] ${t.length}`),F(a.shape.reduce((i,o,l)=>l>0&&l<=t.length?i&&(o+n[l-1][0]+n[l-1][1])%t[l-1]==0:i,!0),()=>`input spatial dimensions ${a.shape.slice(1)} with paddings ${n.toString()} must be divisible by blockShapes ${t.toString()}`);let r={x:a},s={blockShape:t,paddings:n};return P.runKernel(Sc,r,s)}var qc=R({spaceToBatchND_:eR});function aR(e,t,n,a,r,s){r==null&&(r=[1,1]),s==null&&(s=1),a===0&&(a="valid");let i=C(e,"x","maxPool"),o=i,l=!1;i.rank===3&&(l=!0,o=j(i,[1,i.shape[0],i.shape[1],i.shape[2]])),F($n(s,r),()=>`Error in pool: Either strides or dilations must be 1. Got strides ${s} and dilations '${r}'`);let c=lk(o.shape,t,s,r,a),u=[c.dilationHeight,c.dilationWidth],p;a==="same"?p=nR([c.filterHeight,c.filterWidth],u):p=[[0,0],[0,0]];let d=u[0]===1&&u[1]===1,[h,m]=tR([c.inHeight,c.inWidth],u,p),f=d?a:"valid",g=d?o:qc(o,u,h),y=(n==="avg"?()=>Zn(g,t,s,f):()=>Dt(g,t,s,f))(),b=d?y:Wc(y,u,m);return l?j(b,[b.shape[1],b.shape[2],b.shape[3]]):b}function tR(e,t,n){let a=n.map(u=>u[0]),r=n.map(u=>u[1]),s=e.concat(a,r),i=t.map((u,p)=>(u-s[p]%u)%u),o=r.map((u,p)=>u+i[p]),l=t.map((u,p)=>[a[p],o[p]]),c=t.map((u,p)=>[0,i[p]]);return[l,c]}function nR(e,t){let n=e.map((s,i)=>s+(s-1)*(t[i]-1)).map(s=>s-1),a=n.map(s=>Math.floor(s/2)),r=n.map((s,i)=>s-a[i]);return n.map((s,i)=>[a[i],r[i]])}var Dk=R({pool_:aR});function rR(e,t){let n=C(e,"base","pow"),a=C(t,"exp","pow");[n,a]=Tt(n,a);let r={a:n,b:a};return P.runKernel(li,r)}var Ja=R({pow_:rR});function sR(e,t){let n=C(e,"x","prelu"),a=C(t,"alpha","prelu"),r={x:n,alpha:a};return P.runKernel(ui,r)}var Kc=R({prelu_:sR});function iR(e,t=null,n=!1){let a=C(e,"x","prod");a.dtype==="bool"&&(a=pe(a,"int32"));let r={x:a},s={axis:t,keepDims:n};return P.runKernel(kl,r,s)}var Wh=R({prod_:iR});function oR(e,t,n){let a=zt(e),r=null;if(n==null||n==="float32")r=new Float32Array(a);else if(n==="int32")r=new Int32Array(a);else if(n==="bool")r=new Uint8Array(a);else throw new Error(`Unknown data type ${n}`);for(let s=0;s=1||s===0);let i=Math.sqrt(-2*Math.log(s)/s);e=this.mean+this.stdDev*a*i,t=this.mean+this.stdDev*r*i,(!this.truncated||this.isValidTruncated(e))&&(n=!0)}return(!this.truncated||this.isValidTruncated(t))&&(this.nextVal=this.convertValue(t)),this.convertValue(e)}convertValue(e){return this.dtype==null||this.dtype==="float32"?e:Math.round(e)}isValidTruncated(e){return e<=this.upper&&e>=this.lower}},uR=class{constructor(e,t,n,a){this.alpha=e,this.beta=1/t,this.dtype=n;let r=a||Math.random();this.randu=lb.alea(r.toString()),this.randn=new ub(0,1,n,!1,this.randu()),e<1?this.d=e+2/3:this.d=e-1/3,this.c=1/Math.sqrt(9*this.d)}nextValue(){let e,t,n,a,r,s;for(;;){do a=this.randn.nextValue(),s=1+this.c*a;while(s<=0);if(s*=s*s,e=a*a,t=1-.331*e*e,n=.5*e+this.d*(1-s+Math.log(s)),r=this.randu(),rthis.dtype==null||this.dtype==="float32",this.min=e,this.range=t-e,this.dtype=n,a==null&&(a=Math.random()),typeof a=="number"&&(a=a.toString()),!this.canReturnFloat()&&this.range<=1)throw new Error(`The difference between ${e} - ${t} <= 1 and dtype is not float`);this.random=lb.alea(a)}convertValue(e){return this.canReturnFloat()?e:Math.round(e)}nextValue(){return this.convertValue(this.min+this.range*this.random())}};function pR(e,t,n=1,a="float32",r){if(n==null&&(n=1),a==null&&(a="float32"),a!=="float32"&&a!=="int32")throw new Error(`Unsupported data type ${a}`);let s=new uR(t,n,a,r),i=Le(e,a);for(let o=0;o`Error in reverse1D: x must be rank 1 but got rank ${t.rank}.`),Rn(t,0)}var wR=R({reverse1d_:vR});function kR(e,t){let n=C(e,"x","reverse");return F(n.rank===2,()=>`Error in reverse2D: x must be rank 2 but got rank ${n.rank}.`),Rn(n,t)}var IR=R({reverse2d_:kR});function NR(e,t){let n=C(e,"x","reverse");return F(n.rank===3,()=>`Error in reverse3D: x must be rank 3 but got rank ${n.rank}.`),Rn(n,t)}var TR=R({reverse3d_:NR});function SR(e,t){let n=C(e,"x","reverse");return F(n.rank===4,()=>`Error in reverse4D: x must be rank 4 but got rank ${n.rank}.`),Rn(n,t)}var CR=R({reverse4d_:SR});function ER(e){let t={x:C(e,"x","round")};return P.runKernel(mi,t)}var pb=R({round_:ER});function _R(e){let t={x:C(e,"x","rsqrt")};return P.runKernel(fi,t)}var Gh=R({rsqrt_:_R});function de(e,t){if((un(e)&&t!=="string"||Array.isArray(e))&&t!=="complex64")throw new Error("Error creating a new Scalar: value must be a primitive (number|boolean|string)");if(t==="string"&&un(e)&&!(e instanceof Uint8Array))throw new Error("When making a scalar from encoded string, the value must be `Uint8Array`.");return Zr(e,[],[],t)}function FR(e){let t={x:C(e,"x","selu")};return P.runKernel(Cl,t)}var Hh=R({selu_:FR});function AR(e,t,n,a,r,s=[1,1],i="NHWC"){let o=C(e,"x","separableConv2d"),l=C(t,"depthwiseFilter","separableConv2d"),c=C(n,"pointwiseFilter","separableConv2d"),u=o,p=!1;if(o.rank===3&&(p=!0,u=j(o,[1,o.shape[0],o.shape[1],o.shape[2]])),i==="NCHW")throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");F(u.rank===4,()=>`Error in separableConv2d: input must be rank 4, but got rank ${u.rank}.`),F(l.rank===4,()=>`Error in separableConv2d: depthwise filter must be rank 4, but got rank ${l.rank}.`),F(c.rank===4,()=>`Error in separableConv2d: pointwise filter must be rank 4, but got rank ${l.rank}.`),F(c.shape[0]===1,()=>`Error in separableConv2d: the first dimension of pointwise filter must be 1, but got ${c.shape[0]}.`),F(c.shape[1]===1,()=>`Error in separableConv2d: the second dimension of pointwise filter must be 1, but got ${c.shape[1]}.`);let d=l.shape[2],h=l.shape[3];F(c.shape[2]===d*h,()=>`Error in separableConv2d: the third dimension of pointwise filter must be ${d*h}, but got ${c.shape[2]}.`);let m=kr(u,l,a,r,i,s),f=$t(m,c,1,"valid",i);return p?j(f,[f.shape[1],f.shape[2],f.shape[3]]):f}var Oi=R({separableConv2d_:AR});async function $R(e,t){let n=C(e,"x","setdiff1d"),a=C(t,"y","setdiff1d");F(n.dtype===a.dtype,()=>`x and y should have the same dtype, but got x (${n.dtype}) and y (${a.dtype}).`),F(n.rank===1,()=>`x should be 1D tensor, but got x (${n.shape}).`),F(a.rank===1,()=>`y should be 1D tensor, but got y (${a.shape}).`);let r=await n.data(),s=await a.data(),i=new Set(s),o=0;for(let u=0;u`slice1d expects a rank-1 tensor, but got a rank-${a.rank} tensor`),We(a,[t],[n])}var Kh=R({slice1d_:PR});function OR(e,t,n){let a=C(e,"x","slice2d");return F(a.rank===2,()=>`slice2d expects a rank-2 tensor, but got a rank-${a.rank} tensor`),We(a,t,n)}var hb=R({slice2d_:OR});function LR(e,t,n){let a=C(e,"x","slice3d");return F(a.rank===3,()=>`slice3d expects a rank-3 tensor, but got a rank-${a.rank} tensor`),We(a,t,n)}var eu=R({slice3d_:LR});function zR(e,t,n){let a=C(e,"x","slice4d");return F(a.rank===4,()=>`slice4d expects a rank-4 tensor, but got a rank-${a.rank} tensor`),We(a,t,n)}var Yc=R({slice4d_:zR});function BR(e,t=-1){let n=C(e,"logits","softmax","float32");if(t===-1&&(t=n.rank-1),t!==n.rank-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${n.rank} and dim was ${t}`);let a={logits:n},r={dim:t};return P.runKernel(vi,a,r)}var Ca=R({softmax_:BR});function WR(e){F(e.dtype==="complex64",()=>`The dtype for tf.spectral.fft() must be complex64 but got ${e.dtype}.`);let t={input:e};return P.runKernel(eh,t)}var Jc=R({fft_:WR});function VR(e){F(e.dtype==="complex64",()=>`The dtype for tf.spectral.ifft() must be complex64 but got ${e.dtype}.`);let t={input:e};return P.runKernel(th,t)}var tu=R({ifft_:VR});function UR(e){let t=e.shape[e.shape.length-1],n=e.size/t,a;if(t<=2){let r=j(e,[n,t]);a=tu(r)}else{let r=[n,2*(t-1)],s=j(Xc(e),[n,t]),i=j(Mh(e),[n,t]),o=Rn(We(s,[0,1],[n,t-2]),1),l=L(Rn(We(i,[0,1],[n,t-2]),1),de(-1)),c=Ze([s,o],1),u=Ze([i,l],1),p=j(Jr(c,u),[r[0],r[1]]);a=tu(p)}if(a=Xc(a),e.rank===3&&e.shape[0]!==0){let r=a,s=e.shape[0];a=j(a,[s,a.shape[0]/s,a.shape[1]]),r.dispose()}return a}var Xh=R({irfft_:UR});function GR(e,t,n=0){let a={x:C(e,"x","split")},r={numOrSizeSplits:t,axis:n};return P.runKernel($l,a,r)}var Pn=R({split_:GR});function HR(e,t){F(e.dtype==="float32",()=>`The dtype for rfft() must be real value but got ${e.dtype}`);let n=e.shape[e.shape.length-1],a=e.size/n,r;if(t!=null&&t0),f=e.shape.map(g=>g);f[e.shape.length-1]=t,r=We(e,m,f),n=t}else if(t!=null&&t>n){let m=e.shape.map(f=>f);m[e.shape.length-1]=t-n,r=Ze([e,bt(m)],e.shape.length-1),n=t}else r=e;let s=He(r),i=j(Jr(r,s),[a,n]),o=Jc(i),l=Math.floor(n/2)+1,c=Xc(o),u=Mh(o),p=Pn(c,[l,n-l],c.shape.length-1),d=Pn(u,[l,n-l],u.shape.length-1),h=r.shape.slice();return h[r.shape.length-1]=l,j(Jr(p[0],d[0]),h)}var Zc=R({rfft_:HR});function jR(e){let t={x:C(e,"x","sqrt")};return P.runKernel(bi,t)}var rn=R({sqrt_:jR});function qR(e,t){let n=C(e,"a","squaredDifference"),a=C(t,"b","squaredDifference");[n,a]=Tt(n,a),vt(n.shape,a.shape);let r={a:n,b:a},s={};return P.runKernel(wi,r,s)}var Qc=R({squaredDifference_:qR});function KR(e,t){let n=C(e,"x","squeeze");return j(n,Jw(n.shape,t).newShape)}var is=R({squeeze_:KR});function XR(e,t=0){let n=Pc(e,"tensors","stack","string_or_numeric");F(n.length>=1,()=>"Pass at least one tensor to tf.stack"),n.length>0&&F(t<=n[0].rank,()=>"Axis must be <= rank of the tensor");let a=n,r={axis:t};return P.runKernel(wl,a,r)}var Mt=R({stack_:XR});function YR(e,t=0){let n={x:C(e,"x","step")},a={alpha:t};return P.runKernel(Ll,n,a)}var nu=R({step_:YR});function JR(e,t,n,a,r=0,s=0,i=0,o=0,l=0){let c={x:C(e,"x","stridedSlice")},u={begin:t,end:n,strides:a,beginMask:r,endMask:s,ellipsisMask:i,newAxisMask:o,shrinkAxisMask:l};return P.runKernel(Dl,c,u)}var mb=R({stridedSlice_:JR});function ZR(e){let t={x:C(e,"x","tan")};return P.runKernel(Ml,t)}var fb=R({tan_:ZR});function tt(e,t){Ds(e);let n=qa(e,t);if(n.length!==1)throw new Error("tensor1d() requires values to be a flat/TypedArray");return Zr(e,null,n,t)}function Ea(e,t,n){if(Ds(e),t!=null&&t.length!==2)throw new Error("tensor2d() requires shape to have two numbers");let a=qa(e,n);if(a.length!==2&&a.length!==1)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(a.length===1&&t==null)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return Zr(e,t,a,n)}function _a(e,t,n){if(Ds(e),t!=null&&t.length!==4)throw new Error("tensor4d() requires shape to have four numbers");let a=qa(e,n);if(a.length!==4&&a.length!==1)throw new Error("tensor4d() requires values to be number[][][][] or flat/TypedArray");if(a.length===1&&t==null)throw new Error("tensor4d() requires shape to be provided when `values` are a flat array");return Zr(e,t,a,n)}function QR(e,t,n){if(Ds(e),t!=null&&t.length!==5)throw new Error("tensor5d() requires shape to have five numbers");let a=qa(e,n);if(a.length!==5&&a.length!==1)throw new Error("tensor5d() requires values to be number[][][][][] or flat/TypedArray");if(a.length===1&&t==null)throw new Error("tensor5d() requires shape to be provided when `values` are a flat array");return Zr(e,t,a,n)}function eP(e,t,n){if(Ds(e),t!=null&&t.length!==6)throw new Error("tensor6d() requires shape to have six numbers");let a=qa(e,n);if(a.length!==6&&a.length!==1)throw new Error("tensor6d() requires values to be number[][][][][][] or flat/TypedArray");if(a.length===1&&t==null)throw new Error("tensor6d() requires shape to be provided when `values` are a flat array");return t=t||a,Zr(e,t,a,n)}function tP(e,t=1,n=!0){let a=C(e,"x","topk");if(a.rank===0)throw new Error("topk() expects the input to be of rank 1 or higher");let r=a.shape[a.shape.length-1];if(t>r)throw new Error(`'k' passed to topk() must be <= the last dimension (${r}) but got ${t}`);let s={x:a},i={k:t,sorted:n},[o,l]=P.runKernel(Rl,s,i);return{values:o,indices:l}}var gb=R({topk_:tP});function nP(e,t=0,n=1,a,r){if(a!=null&&a==="bool")throw new Error("Unsupported data type $ { dtype }");let s=new ub(t,n,a,!0,r),i=Le(e,a);for(let o=0;o0,()=>"The input tensor must be at least 1D");let a={x:n},r={axis:t},[s,i]=P.runKernel(hh,a,r);return{values:s,indices:i}}var Jh=R({unique_:aP});function rP(e,t,n){let a=C(e,"x","unsortedSegmentSum"),r=C(t,"segmentIds","unsortedSegmentSum","int32");F(qt(n),()=>"numSegments must be of dtype int");let s={x:a,segmentIds:r},i={numSegments:n};return P.runKernel(Ec,s,i)}var yb=R({unsortedSegmentSum_:rP});function sP(e,t=0){let n=C(e,"x","unstack","string_or_numeric");F(t>=-n.shape.length&&t`Axis = ${t} is not in [-${n.shape.length}, ${n.shape.length})`);let a={value:n},r={axis:t};return P.runKernel(Pl,a,r)}var pt=R({unstack_:sP});function Pk(e,t=!0,n,a){return P.makeVariable(e,t,n,a)}function Ok(e,t){let n=[];for(let s=0;s0,()=>"mask cannot be scalar"),rt(o.slice(s,s+i),r.shape,"mask's shape must match the first K dimensions of tensor's shape,");let l=1;for(let f=s;f"Shape mismatch in v and x");let l=de(1),c=fe(l,o),u=L(fe(i,s),c);if(r){F(a!=null,()=>"When using zeroDebias: true, step is required.");let p=C(a,"step","movingAverage");u=ve(u,fe(l,Ja(o,p)))}return Z(s,u)}var SP=R({movingAverage_:TP});function CP(e,t,n){let a=C(e,"indices","scatterND","int32"),r=C(t,"updates","scatterND");$y(r,a,n);let s={indices:a,updates:r},i={shape:n};return P.runKernel(Tl,s,i)}var e1=R({scatterND_:CP});function EP(e,t,n,a){if(e.dtype!=="int32")throw new Error(`tf.sparseToDense() expects the indices to be int32 type, but the dtype was ${e.dtype}.`);if(e.rank>2)throw new Error(`sparseIndices should be a scalar, vector, or matrix, but got shape ${e.shape}.`);let r=e.rank>0?e.shape[0]:1,s=e.rank>1?e.shape[1]:1;if(n.length!==s)throw new Error(`outputShape has incorrect number of elements:, ${n.length}, should be: ${s}.`);let i=t.size;if(!(t.rank===0||t.rank===1&&i===r))throw new Error(`sparseValues has incorrect shape ${t.shape}, should be [] or [${r}]`);if(t.dtype!==a.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}function _P(e,t,n,a=0){let r=C(e,"sparseIndices","sparseToDense","int32"),s=C(t,"sparseValues","sparseToDense"),i=C(a,"defaultValue","sparseToDense",s.dtype);EP(r,s,n,i);let o={sparseIndices:r,sparseValues:s,defaultValue:i},l={outputShape:n};return P.runKernel(dh,o,l)}var xb=R({sparseToDense_:_P});function FP(e,t){let n=C(t,"indices","gatherND","int32"),a={params:C(e,"x","gatherND"),indices:n};return P.runKernel(rl,a)}var t1=R({gatherND_:FP});function AP(e,t){if(t==null)return e.shape.slice();if(xr(e.shape,t))return t;if(e.shape.length===t.length){let n=[];for(let a=0;a`x has to be a floating point tensor since it's going to be scaled, but got a ${r.dtype} tensor instead.`),F(t>=0&&t<1,()=>`rate must be a float in the range [0, 1), but got ${t}.`),t===0)return e instanceof z?r.clone():r;let s=AP(r,n),i=1-t,o=ve(Yl(Z(Ql(s,0,1,"float32",a),i)),i);return L(r,o)}var n1=R({dropout_:$P});function a1(e){return Math.floor(Math.pow(2,Math.ceil(Math.log(e)/Math.log(2))))}function vb(e,t,n){let a=1-e%2,r=new Float32Array(e);for(let s=0;s1,()=>`inTopK() expects the predictions to be of rank 2 or higher, but got ${a.rank}`),F(a.rank-1===r.rank,()=>`predictions rank should be 1 larger than targets rank, but got predictions rank ${a.rank} and targets rank ${r.rank}`),rt(a.shape.slice(0,a.shape.length-1),r.shape,"predictions's shape should be align with the targets' shape, except the last dimension.");let s=a.shape[a.shape.length-1];F(n>0&&n<=s,()=>`'k' passed to inTopK() must be > 0 && <= the predictions last dimension (${s}), but got ${n}`);let i=await a.data(),o=await r.data(),[l,c]=[i.length/s,s],u=Zw("bool",l);for(let p=0;pg.value-f.value),u[p]=0;for(let f=0;fRP,depthwiseConv2d:()=>PP,matMul:()=>OP});function LP(e,t,n,a,r,s="NHWC",i){let o=e;e.rank===3&&(o=j(e,[1,e.shape[0],e.shape[1],e.shape[2]]));let l=t;l.rank===3&&(l=j(t,[1,t.shape[0],t.shape[1],t.shape[2]])),F(o.rank===4,()=>`Error in conv2dDerFilter: input must be rank 4, but got shape ${o.shape}.`),F(l.rank===4,()=>`Error in conv2dDerFilter: dy must be rank 4, but got shape ${l.shape}.`),F(n.length===4,()=>`Error in conv2dDerFilter: filterShape must be length 4, but got ${n}.`);let c=s==="NHWC"?o.shape[3]:o.shape[1],u=s==="NHWC"?l.shape[3]:l.shape[1];F(c===n[2],()=>`Error in conv2dDerFilter: depth of input ${c}) must match input depth in filter (${n[2]}.`),F(u===n[3],()=>`Error in conv2dDerFilter: depth of dy (${u}) must match output depth for filter (${n[3]}).`),i!=null&&F(qt(r),()=>`Error in conv2dDerFilter: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`);let p={x:o,dy:l},d={strides:a,pad:r,dataFormat:s,dimRoundingMode:i,filterShape:n};return P.runKernel(Gd,p,d)}var wb=R({conv2DBackpropFilter_:LP});function Qh(e,t,n){if(n==null||n==="linear")return e;if(n==="relu")return L(e,nu(t));throw new Error(`Cannot compute gradient for fused activation ${n}.`)}function em(e,t){let n=t,a=Vt(e.shape,t.shape);return a.length>0&&(n=Ce(n,a)),j(n,e.shape)}function tm(e,t,n,a){if(t==="linear")return e;if(t==="relu")return Xe(e);if(t==="elu")return Xl(e);if(t==="relu6")return Uh(e);if(t==="prelu")return Kc(e,n);if(t==="leakyrelu")return Gc(e,a);throw new Error(`Unknown fused activation ${t}.`)}var nm=(e,t)=>!(e>0)||t==="linear";function zP({x:e,filter:t,strides:n,pad:a,dataFormat:r="NHWC",dilations:s=[1,1],dimRoundingMode:i,bias:o,activation:l="linear",preluActivationWeights:c,leakyreluAlpha:u}){if(l=l||"linear",nm(P.state.gradientDepth,l)===!1){let N=$t(e,t,n,a,r,s,i);return o!=null&&(N=Z(N,o)),tm(N,l,c,u)}let p=C(e,"x","conv2d"),d=C(t,"filter","conv2d"),h=p,m=!1;p.rank===3&&(m=!0,h=j(p,[1,p.shape[0],p.shape[1],p.shape[2]])),F(h.rank===4,()=>`Error in fused conv2d: input must be rank 4, but got rank ${h.rank}.`),F(d.rank===4,()=>`Error in fused conv2d: filter must be rank 4, but got rank ${d.rank}.`),i!=null&&F(qt(a),()=>`Error in fused conv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${a}.`),F(h.shape[3]===d.shape[2],()=>`Error in conv2d: depth of input (${h.shape[3]}) must match input depth for filter ${d.shape[2]}.`),F($n(n,s),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`),F(r==="NHWC",()=>`Error in conv2d: got dataFormat of ${r} but only NHWC is currently supported.`);let f=Bc(h.shape,d.shape,n,s,a,i),g;o!=null&&(g=C(o,"bias","fused conv2d"),[g]=Tt(g,p),vt(f.outShape,g.shape));let y;c!=null&&(y=C(c,"prelu weights","fused conv2d"));let b=(N,T)=>{let[E,A,$,O]=T,V=Qh(N,$,l);F(as(s),()=>`Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${s}'`);let W=Ky(A.shape,V,E,n,a),H=wb(A,V,E.shape,n,a),X=[W,H];if(O!=null){let q=em(O,V);X.push(q)}return X},x={x:h,filter:d,bias:g,preluActivationWeights:y},v={strides:n,pad:a,dataFormat:r,dilations:s,dimRoundingMode:i,activation:l,leakyreluAlpha:u};return o==null?Xa((N,T,E)=>{let A=P.runKernel(Si,x,v);return E([T,N,A]),m&&(A=j(A,[A.shape[1],A.shape[2],A.shape[3]])),{value:A,gradFunc:b}})(h,d):Xa((N,T,E,A)=>{let $=P.runKernel(Si,x,v);return A([T,N,$,E]),m&&($=j($,[$.shape[1],$.shape[2],$.shape[3]])),{value:$,gradFunc:b}})(h,d,g)}var RP=R({fusedConv2d_:zP});function BP(e,t,n,a,r,s=[1,1],i){let o=e;e.rank===3&&(o=j(e,[1,e.shape[0],e.shape[1],e.shape[2]]));let l=t;l.rank===3&&(l=j(t,[1,t.shape[0],t.shape[1],t.shape[2]]));let c={x:o,dy:l},u={strides:a,pad:r,dimRoundingMode:i,dilations:s,filterShape:n};return P.runKernel(Kd,c,u)}var r1=R({depthwiseConv2dNativeBackpropFilter_:BP});function WP(e,t,n,a,r,s=[1,1],i){let o=t,l=!1;t.rank===3&&(l=!0,o=j(t,[1,t.shape[0],t.shape[1],t.shape[2]]));let c={dy:o,filter:n},u={strides:a,pad:r,dimRoundingMode:i,dilations:s,inputShape:e},p=P.runKernel(Xd,c,u);return l?j(p,[p.shape[1],p.shape[2],p.shape[3]]):p}var s1=R({depthwiseConv2dNativeBackpropInput_:WP});function VP({x:e,filter:t,strides:n,pad:a,dataFormat:r="NHWC",dilations:s=[1,1],dimRoundingMode:i,bias:o,activation:l="linear",preluActivationWeights:c,leakyreluAlpha:u}){if(nm(P.state.gradientDepth,l)===!1){let N=kr(e,t,n,a,r,s,i);return o!=null&&(N=Z(N,o)),tm(N,l,c,u)}let p=C(e,"x","depthwiseConv2d"),d=C(t,"filter","depthwiseConv2d"),h=p,m=!1;p.rank===3&&(m=!0,h=j(p,[1,p.shape[0],p.shape[1],p.shape[2]])),F(h.rank===4,()=>`Error in fused depthwiseConv2d: input must be rank 4, but got rank ${h.rank}.`),F(d.rank===4,()=>`Error in fused depthwiseConv2d: filter must be rank 4, but got rank ${d.rank}.`),F(h.shape[3]===d.shape[2],()=>`Error in fused depthwiseConv2d: number of input channels (${h.shape[3]}) must match the inChannels dimension in filter ${d.shape[2]}.`),s==null&&(s=[1,1]),F($n(n,s),()=>`Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`),i!=null&&F(qt(a),()=>`Error in fused depthwiseConv2d: pad must be an integer when using dimRoundingMode ${i} but got pad ${a}.`);let f=Bc(h.shape,d.shape,n,s,a,i,!0),g;o!=null&&(g=C(o,"bias","fused conv2d"),[g]=Tt(g,p),vt(f.outShape,g.shape));let y;c!=null&&(y=C(c,"prelu weights","fused depthwiseConv2d"));let b=(N,T)=>{F(as(s),()=>`Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '${s}'`);let[E,A,$,O]=T,V=Qh(N,$,l),W=s1(A.shape,V,E,n,a,s,i),H=r1(A,V,E.shape,n,a,s,i);if(O!=null){let X=em(g,V);return[W,H,X]}return[W,H]},x={x:h,filter:d,bias:g,preluActivationWeights:y},v={strides:n,pad:a,dataFormat:r,dilations:s,dimRoundingMode:i,activation:l,leakyreluAlpha:u};return o==null?Xa((N,T,E)=>{let A=P.runKernel(Ci,x,v);return E([T,N,A]),m&&(A=j(A,[A.shape[1],A.shape[2],A.shape[3]])),{value:A,gradFunc:b}})(h,d):Xa((N,T,E,A)=>{let $=P.runKernel(Ci,x,v);return A([T,N,$,E]),m&&($=j($,[$.shape[1],$.shape[2],$.shape[3]])),{value:$,gradFunc:b}})(h,d,g)}var PP=R({fusedDepthwiseConv2d_:VP});function UP({a:e,b:t,transposeA:n=!1,transposeB:a=!1,bias:r,activation:s="linear",preluActivationWeights:i,leakyreluAlpha:o}){if(nm(P.state.gradientDepth,s)===!1){let O=ze(e,t,n,a);return r!=null&&(O=Z(O,r)),tm(O,s,i,o)}let l=C(e,"a","fused matMul"),c=C(t,"b","fused matMul");[l,c]=Tt(l,c);let u=n?l.shape[l.rank-2]:l.shape[l.rank-1],p=a?c.shape[c.rank-1]:c.shape[c.rank-2],d=n?l.shape[l.rank-1]:l.shape[l.rank-2],h=a?c.shape[c.rank-2]:c.shape[c.rank-1],m=l.shape.slice(0,-2),f=c.shape.slice(0,-2),g=zt(m),y=zt(f);F(l.rank>=2&&c.rank>=2&&l.rank===c.rank,()=>`Error in fused matMul: inputs must have the same rank of at least 2, got ranks ${l.rank} and ${c.rank}.`),F(xr(m,f),()=>`Error in fused matMul: outer dimensions (${m}) and (${f}) of Tensors with shapes ${l.shape} and ${c.shape} must match.`),F(u===p,()=>`Error in fused matMul: inner shapes (${u}) and (${p}) of Tensors with shapes ${l.shape} and ${c.shape} and transposeA=${n} and transposeB=${a} must match.`);let b=l.shape.slice(0,-2).concat([d,h]),x=n?j(l,[g,u,d]):j(l,[g,d,u]),v=a?j(c,[y,h,p]):j(c,[y,p,h]),N;r!=null&&(N=C(r,"bias","fused matMul"),[N]=Tt(N,l),vt(b,N.shape));let T;i!=null&&(T=C(i,"prelu weights","fused matMul"));let E=(O,V)=>{let[W,H,X,q]=V,K=Qh(j(O,X.shape),X,s),J,te;if(!n&&!a?(J=ze(K,H,!1,!0),te=ze(W,K,!0,!1)):!n&&a?(J=ze(K,H,!1,!1),te=ze(K,W,!0,!1)):n&&!a?(J=ze(H,K,!1,!0),te=ze(W,K,!1,!1)):(J=ze(H,K,!0,!0),te=ze(K,W,!0,!0)),r!=null){let Q=em(q,K);return[J,te,Q]}else return[J,te]},A={a:x,b:v,bias:N,preluActivationWeights:T},$={transposeA:n,transposeB:a,activation:s,leakyreluAlpha:o};return r==null?Xa((O,V,W)=>{let H=P.runKernel(Ti,A,$);return W([O,V,H]),{value:j(H,b),gradFunc:E}})(x,v):Xa((O,V,W,H)=>{let X=P.runKernel(Ti,A,$);return H([O,V,X,W]),{value:j(X,b),gradFunc:E}})(x,v,N)}var OP=R({fusedMatMul_:UP});function GP(e){return vb(e,.54,.46)}var HP=R({hammingWindow_:GP});function jP(e){return vb(e,.5,.5)}var i1=R({hannWindow_:jP});function qP(e,t,n,a=!1,r=0){let s=0,i=[];for(;s+t<=e.size;)i.push(We(e,s,t)),s+=n;if(a)for(;s`Error in cropAndResize: image must be rank 4,but got rank ${i.rank}.`),F(o.rank===2&&o.shape[1]===4,()=>`Error in cropAndResize: boxes must be have size [${c},4] but had shape ${o.shape}.`),F(l.rank===1&&l.shape[0]===c,()=>`Error in cropAndResize: boxInd must be have size [${c}] but had shape ${o.shape}.`),F(a.length===2,()=>`Error in cropAndResize: cropSize must be of length 2, but got length ${a.length}.`),F(a[0]>=1&&a[1]>=1,()=>`cropSize must be atleast [1,1], but was ${a}`),F(r==="bilinear"||r==="nearest",()=>`method must be bilinear or nearest, but was ${r}`);let u={image:i,boxes:o,boxInd:l},p={method:r,extrapolationValue:s,cropSize:a};return P.runKernel(Xo,u,p)}var JP=R({cropAndResize_:YP});function ZP(e){let t=C(e,"image","flipLeftRight","float32");F(t.rank===4,()=>`Error in flipLeftRight: image must be rank 4,but got rank ${t.rank}.`);let n={image:t};return P.runKernel(nl,n,{})}var QP=R({flipLeftRight_:ZP});function eO(e,t,n=0,a=.5){let r=C(e,"image","rotateWithOffset","float32");F(r.rank===4,()=>`Error in rotateWithOffset: image must be rank 4,but got rank ${r.rank}.`);let s={image:r},i={radians:t,fillValue:n,center:a};return P.runKernel(zl,s,i)}var tO=R({rotateWithOffset_:eO});function au(e,t,n,a,r,s){a==null&&(a=.5),r==null&&(r=Number.NEGATIVE_INFINITY),s==null&&(s=0);let i=e.shape[0];return n=Math.min(n,i),F(0<=a&&a<=1,()=>`iouThreshold must be in [0, 1], but was '${a}'`),F(e.rank===2,()=>`boxes must be a 2D tensor, but was of rank '${e.rank}'`),F(e.shape[1]===4,()=>`boxes must have 4 columns, but 2nd dimension was ${e.shape[1]}`),F(t.rank===1,()=>"scores must be a 1D tensor"),F(t.shape[0]===i,()=>`scores has incompatible shape with boxes. Expected ${i}, but was ${t.shape[0]}`),F(0<=s&&s<=1,()=>`softNmsSigma must be in [0, 1], but was '${s}'`),{maxOutputSize:n,iouThreshold:a,scoreThreshold:r,softNmsSigma:s}}function nO(e,t,n,a=.5,r=Number.NEGATIVE_INFINITY){let s=C(e,"boxes","nonMaxSuppression"),i=C(t,"scores","nonMaxSuppression"),o=au(s,i,n,a,r);n=o.maxOutputSize,a=o.iouThreshold,r=o.scoreThreshold;let l={maxOutputSize:n,iouThreshold:a,scoreThreshold:r};return P.runKernel(yl,{boxes:s,scores:i},l)}var aO=R({nonMaxSuppression_:nO});function sO(e,t,n){let a=rO(e,t,n),r=a<0?-(a+1):a;e.splice(r,0,t)}function rO(e,t,n){return oO(e,t,n||iO)}function iO(e,t){return e>t?1:e>>1);let o=n(t,e[s]);o>0?a=s+1:(r=s,i=!o)}return i?a:-a-1}function l1(e,t,n,a,r){return kb(e,t,n,a,r,0)}function u1(e,t,n,a,r,s){return kb(e,t,n,a,r,0,!1,s,!0)}function c1(e,t,n,a,r,s){return kb(e,t,n,a,r,s,!0)}function kb(e,t,n,a,r,s,i=!1,o=!1,l=!1){let c=[];for(let g=0;gr&&c.push({score:t[g],boxIndex:g,suppressBeginIndex:0});c.sort(p1);let u=s>0?-.5/s:0,p=[],d=[];for(;p.length0;){let g=c.pop(),{score:y,boxIndex:b,suppressBeginIndex:x}=g;if(y=x;--N){let T=lO(e,b,p[N]);if(T>=a){v=!0;break}if(g.score=g.score*uO(a,u,T),g.score<=r)break}g.suppressBeginIndex=p.length,v||(g.score===y?(p.push(b),d.push(g.score)):g.score>r&&sO(c,g,p1))}let h=p.length,m=n-h;o&&m>0&&(p.push(...new Array(m).fill(0)),d.push(...new Array(m).fill(0)));let f={selectedIndices:p};return i&&(f.selectedScores=d),l&&(f.validOutputs=h),f}function lO(e,t,n){let a=e.subarray(t*4,t*4+4),r=e.subarray(n*4,n*4+4),s=Math.min(a[0],a[2]),i=Math.min(a[1],a[3]),o=Math.max(a[0],a[2]),l=Math.max(a[1],a[3]),c=Math.min(r[0],r[2]),u=Math.min(r[1],r[3]),p=Math.max(r[0],r[2]),d=Math.max(r[1],r[3]),h=(o-s)*(l-i),m=(p-c)*(d-u);if(h<=0||m<=0)return 0;let f=Math.max(s,c),g=Math.max(i,u),y=Math.min(o,p),b=Math.min(l,d),x=Math.max(y-f,0)*Math.max(b-g,0);return x/(h+m-x)}function uO(e,t,n){let a=Math.exp(t*n*n);return n<=e?a:0}function p1(e,t){return e.score-t.score||e.score===t.score&&t.boxIndex-e.boxIndex}async function cO(e,t,n,a=.5,r=Number.NEGATIVE_INFINITY){let s=C(e,"boxes","nonMaxSuppressionAsync"),i=C(t,"scores","nonMaxSuppressionAsync"),o=au(s,i,n,a,r);n=o.maxOutputSize,a=o.iouThreshold,r=o.scoreThreshold;let l=await Promise.all([s.data(),i.data()]),c=l[0],u=l[1],{selectedIndices:p}=l1(c,u,n,a,r);return s!==e&&s.dispose(),i!==t&&i.dispose(),tt(p,"int32")}var pO=cO;function dO(e,t,n,a=.5,r=Number.NEGATIVE_INFINITY,s=0){let i=C(e,"boxes","nonMaxSuppression"),o=C(t,"scores","nonMaxSuppression"),l=au(i,o,n,a,r,s);n=l.maxOutputSize,a=l.iouThreshold,r=l.scoreThreshold,s=l.softNmsSigma;let c={boxes:i,scores:o},u={maxOutputSize:n,iouThreshold:a,scoreThreshold:r,softNmsSigma:s},p=P.runKernel(xl,c,u);return{selectedIndices:p[0],selectedScores:p[1]}}var hO=R({nonMaxSuppressionWithScore_:dO});async function mO(e,t,n,a=.5,r=Number.NEGATIVE_INFINITY,s=0){let i=C(e,"boxes","nonMaxSuppressionAsync"),o=C(t,"scores","nonMaxSuppressionAsync"),l=au(i,o,n,a,r,s);n=l.maxOutputSize,a=l.iouThreshold,r=l.scoreThreshold,s=l.softNmsSigma;let c=await Promise.all([i.data(),o.data()]),u=c[0],p=c[1],{selectedIndices:d,selectedScores:h}=c1(u,p,n,a,r,s);return i!==e&&i.dispose(),o!==t&&o.dispose(),{selectedIndices:tt(d,"int32"),selectedScores:tt(h)}}var fO=mO;function gO(e,t,n,a=.5,r=Number.NEGATIVE_INFINITY,s=!1){let i=C(e,"boxes","nonMaxSuppression"),o=C(t,"scores","nonMaxSuppression"),l=au(i,o,n,a,r,null),c=l.maxOutputSize,u=l.iouThreshold,p=l.scoreThreshold,d={boxes:i,scores:o},h={maxOutputSize:c,iouThreshold:u,scoreThreshold:p,padToMaxOutputSize:s},m=P.runKernel(bl,d,h);return{selectedIndices:m[0],validOutputs:m[1]}}var yO=R({nonMaxSuppressionPadded_:gO});async function bO(e,t,n,a=.5,r=Number.NEGATIVE_INFINITY,s=!1){let i=C(e,"boxes","nonMaxSuppressionAsync"),o=C(t,"scores","nonMaxSuppressionAsync"),l=au(i,o,n,a,r,null),c=l.maxOutputSize,u=l.iouThreshold,p=l.scoreThreshold,[d,h]=await Promise.all([i.data(),o.data()]),{selectedIndices:m,validOutputs:f}=u1(d,h,c,u,p,s);return i!==e&&i.dispose(),o!==t&&o.dispose(),{selectedIndices:tt(m,"int32"),validOutputs:de(f,"int32")}}var xO=bO;function vO(e,t,n=!1,a=!1){let r=C(e,"images","resizeBilinear");F(r.rank===3||r.rank===4,()=>`Error in resizeBilinear: x must be rank 3 or 4, but got rank ${r.rank}.`),F(t.length===2,()=>`Error in resizeBilinear: new shape must 2D, but got shape ${t}.`),F(a===!1||n===!1,()=>"Error in resizeBilinear: If halfPixelCenters is true, alignCorners must be false.");let s=r,i=!1;r.rank===3&&(i=!0,s=j(r,[1,r.shape[0],r.shape[1],r.shape[2]]));let[]=t,o={images:s},l={alignCorners:n,halfPixelCenters:a,size:t},c=P.runKernel(pi,o,l);return i?j(c,[c.shape[1],c.shape[2],c.shape[3]]):c}var d1=R({resizeBilinear_:vO});function wO(e,t,n=!1,a=!1){let r=C(e,"images","resizeNearestNeighbor");F(r.rank===3||r.rank===4,()=>`Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank ${r.rank}.`),F(t.length===2,()=>`Error in resizeNearestNeighbor: new shape must 2D, but got shape ${t}.`),F(r.dtype==="float32"||r.dtype==="int32",()=>"`images` must have `int32` or `float32` as dtype"),F(a===!1||n===!1,()=>"Error in resizeNearestNeighbor: If halfPixelCenters is true, alignCorners must be false.");let s=r,i=!1;r.rank===3&&(i=!0,s=j(r,[1,r.shape[0],r.shape[1],r.shape[2]]));let[]=t,o={images:s},l={alignCorners:n,halfPixelCenters:a,size:t},c=P.runKernel(Tc,o,l);return i?j(c,[c.shape[1],c.shape[2],c.shape[3]]):c}var h1=R({resizeNearestNeighbor_:wO});function kO(e,t,n){F(t%1==0,()=>`bandPart(): numLower must be an integer, got ${t}.`),F(n%1==0,()=>`bandPart(): numUpper must be an integer, got ${n}.`);let a=C(e,"a","bandPart");F(a.rank>=2,()=>`bandPart(): Rank must be at least 2, got ${a.rank}.`);let r=a.shape,[s,i]=a.shape.slice(-2);if(!(t<=s))throw new Error(`bandPart(): numLower (${t}) must not be greater than the number of rows (${s}).`);if(!(n<=i))throw new Error(`bandPart(): numUpper (${n}) must not be greater than the number of columns (${i}).`);t<0&&(t=s),n<0&&(n=i);let o=j(Vh(0,s,1,"int32"),[-1,1]),l=Vh(0,i,1,"int32"),c=fe(o,l),u=ha(rs(c,de(+t,"int32")),Nr(c,de(-n,"int32"))),p=bt([s,i],a.dtype);return j(Mt(pt(j(a,[-1,s,i])).map(d=>In(u,d,p))),r)}var IO=R({bandPart_:kO});function NO(e){let t;if(Array.isArray(e)){t=!1,F(e!=null&&e.length>0,()=>"Gram-Schmidt process: input must not be null, undefined, or empty");let r=e[0].shape[0];for(let s=1;s`Gram-Schmidt: Non-unique lengths found in the input vectors: (${e[s].shape[0]} vs. ${r})`)}else t=!0,e=Pn(e,e.shape[0],0).map(r=>is(r,[0]));F(e.length<=e[0].shape[0],()=>`Gram-Schmidt: Number of vectors (${e.length}) exceeds number of dimensions (${e[0].shape[0]}).`);let n=[],a=e;for(let r=0;r{let s=a[r];if(r>0)for(let i=0;i=2,()=>`qr() requires input tensor to have a rank >= 2, but got rank ${e.rank}`),e.rank===2)return m1(e,t);{let n=e.shape.slice(0,e.shape.length-2).reduce((l,c)=>l*c),a=pt(j(e,[n,e.shape[e.shape.length-2],e.shape[e.shape.length-1]]),0),r=[],s=[];a.forEach(l=>{let[c,u]=m1(l,t);r.push(c),s.push(u)});let i=j(Mt(r,0),e.shape),o=j(Mt(s,0),e.shape);return[i,o]}}function m1(e,t=!1){return P.tidy(()=>{F(e.shape.length===2,()=>`qr2d() requires a 2D Tensor, but got a ${e.shape.length}D Tensor.`);let n=e.shape[0],a=e.shape[1],r=tb(n),s=es(e),i=Ea([[1]],[1,1]),o=es(i),l=n>=a?a:n;for(let c=0;c{let h=We(s,[c,c],[n-c,1]),m=Zh(h),f=We(s,[c,c],[1,1]),g=In(ea(f,0),Ea([[-1]]),Ea([[1]])),y=fe(f,L(g,m)),b=ve(h,y);b.shape[0]===1?o=es(i):o=Ze([i,We(b,[1,0],[b.shape[0]-1,b.shape[1]])],0);let x=St(ve(ze(g,y),m)),v=We(s,[c,0],[n-c,a]),N=L(x,o),T=Ue(o);if(c===0)s=fe(v,ze(N,ze(T,v)));else{let $=fe(v,ze(N,ze(T,v)));s=Ze([We(s,[0,0],[c,a]),$],0)}let E=Ue(N),A=We(r,[0,c],[n,r.shape[1]-c]);if(c===0)r=fe(A,ze(ze(A,o),E));else{let $=fe(A,ze(ze(A,o),E));r=Ze([We(r,[0,0],[n,c]),$],1)}return[o,s,r]}),Ae([u,p,d])}return!t&&n>a&&(r=We(r,[0,0],[n,a]),s=We(s,[0,0],[a,a])),[r,s]})}var CO=R({qr_:SO}),fn;(function(e){e[e.NONE=0]="NONE",e[e.MEAN=1]="MEAN",e[e.SUM=2]="SUM",e[e.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"})(fn||(fn={}));function EO(e,t,n=fn.SUM_BY_NONZERO_WEIGHTS){let a=C(e,"losses","computeWeightedLoss"),r=null;t!=null&&(r=C(t,"weights","computeWeightedLoss"));let s=r==null?a:L(a,r);if(n===fn.NONE)return s;if(n===fn.SUM)return Ce(s);if(n===fn.MEAN){if(r==null)return Ct(s);{let i=a.size/r.size,o=ve(Ce(s),Ce(r));return i>1?ve(o,de(i)):o}}if(n===fn.SUM_BY_NONZERO_WEIGHTS){if(r==null)return ve(Ce(s),de(a.size));{let i=L(r,Ya(a.shape)),o=pe(Ce(ss(i,de(0))),"float32");return ve(Ce(s),o)}}throw Error(`Unknown reduction: ${n}`)}var Tr=R({computeWeightedLoss_:EO});function _O(e,t,n,a=fn.SUM_BY_NONZERO_WEIGHTS){let r=C(e,"labels","absoluteDifference"),s=C(t,"predictions","absoluteDifference"),i=null;n!=null&&(i=C(n,"weights","absoluteDifference")),rt(r.shape,s.shape,"Error in absoluteDifference: ");let o=Wt(fe(r,s));return Tr(o,i,a)}var FO=R({absoluteDifference_:_O});function AO(e,t,n,a,r=fn.SUM_BY_NONZERO_WEIGHTS){let s=C(e,"labels","cosineDistance"),i=C(t,"predictions","cosineDistance"),o=null;a!=null&&(o=C(a,"weights","cosineDistance")),rt(s.shape,i.shape,"Error in cosineDistance: ");let l=de(1),c=fe(l,Ce(L(s,i),n,!0));return Tr(c,o,r)}var $O=R({cosineDistance_:AO});function DO(e,t,n,a=fn.SUM_BY_NONZERO_WEIGHTS){let r=C(e,"labels","hingeLoss"),s=C(t,"predictions","hingeLoss"),i=null;n!=null&&(i=C(n,"weights","hingeLoss")),rt(r.shape,s.shape,"Error in hingeLoss: ");let o=de(1);r=fe(L(de(2),r),o);let l=Xe(fe(o,L(r,s)));return Tr(l,i,a)}var MO=R({hingeLoss_:DO});function RO(e,t,n,a=1,r=fn.SUM_BY_NONZERO_WEIGHTS){let s=C(e,"labels","huberLoss"),i=C(t,"predictions","huberLoss"),o=null;n!=null&&(o=C(n,"weights","huberLoss")),rt(s.shape,i.shape,"Error in huberLoss: ");let l=de(a),c=Wt(fe(i,s)),u=Pi(c,l),p=fe(c,u),d=Z(L(de(.5),lt(u)),L(l,p));return Tr(d,o,r)}var PO=R({huberLoss_:RO});function OO(e,t,n,a=1e-7,r=fn.SUM_BY_NONZERO_WEIGHTS){let s=C(e,"labels","logLoss"),i=C(t,"predictions","logLoss"),o=null;n!=null&&(o=C(n,"weights","logLoss")),rt(s.shape,i.shape,"Error in logLoss: ");let l=de(1),c=de(a),u=St(L(s,Dn(Z(i,c)))),p=L(fe(l,s),Dn(Z(fe(l,i),c))),d=fe(u,p);return Tr(d,o,r)}var LO=R({logLoss_:OO});function zO(e,t,n,a=fn.SUM_BY_NONZERO_WEIGHTS){let r=C(e,"labels","meanSquaredError"),s=C(t,"predictions","meanSquaredError"),i=null;n!=null&&(i=C(n,"weights","meanSquaredError")),rt(r.shape,s.shape,"Error in meanSquaredError: ");let o=Qc(r,s);return Tr(o,i,a)}var BO=R({meanSquaredError_:zO});function WO(e,t){let n=C(e,"labels","sigmoidCrossEntropyWithLogits"),a=C(t,"logits","sigmoidCrossEntropyWithLogits");rt(n.shape,a.shape,"Error in sigmoidCrossEntropyWithLogits: ");let r=Xe(a),s=L(a,n),i=Rh(mn(St(Wt(a))));return Z(fe(r,s),i)}function VO(e,t,n,a=0,r=fn.SUM_BY_NONZERO_WEIGHTS){let s=C(e,"multiClassLabels","sigmoidCrossEntropy"),i=C(t,"logits","sigmoidCrossEntropy"),o=null;if(n!=null&&(o=C(n,"weights","sigmoidCrossEntropy")),rt(s.shape,i.shape,"Error in sigmoidCrossEntropy: "),a>0){let c=de(a),u=de(1),p=de(.5);s=Z(L(s,fe(u,c)),L(p,c))}let l=WO(s,i);return Tr(l,o,r)}var UO=R({sigmoidCrossEntropy_:VO});function GO(e,t,n=-1){if(n===-1&&(n=t.rank-1),n!==t.rank-1)throw Error(`Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank ${t.rank} and dim was ${n}`);return Xa((a,r,s)=>{let i=sb(r,[n],!0),o=fe(pe(r,"float32"),i);s([a,o]);let l=St(L(o,a));return{value:Ce(l,[n]),gradFunc:(c,u)=>{let[p,d]=u,h=Ri(c.shape,[n]);return[L(j(c,h),fe(pe(p,"float32"),mn(d))),L(j(c,h),fe(mn(d),pe(p,"float32")))]}}})(e,t)}function HO(e,t,n,a=0,r=fn.SUM_BY_NONZERO_WEIGHTS){let s=C(e,"onehotLabels","softmaxCrossEntropy"),i=C(t,"logits","softmaxCrossEntropy"),o=null;if(n!=null&&(o=C(n,"weights","softmaxCrossEntropy")),rt(s.shape,i.shape,"Error in softmaxCrossEntropy: "),a>0){let c=de(a),u=de(1),p=de(s.shape[1]);s=Z(L(s,fe(u,c)),ve(c,p))}let l=GO(s,i);return Tr(l,o,r)}var jO=R({softmaxCrossEntropy_:HO}),qO={fft:Jc,ifft:tu,rfft:Zc,irfft:Xh},KO={hammingWindow:HP,hannWindow:i1,frame:o1,stft:XP},Za={flipLeftRight:QP,resizeNearestNeighbor:h1,resizeBilinear:d1,rotateWithOffset:tO,cropAndResize:JP,nonMaxSuppression:aO,nonMaxSuppressionAsync:pO,nonMaxSuppressionWithScore:hO,nonMaxSuppressionWithScoreAsync:fO,nonMaxSuppressionPadded:yO,nonMaxSuppressionPaddedAsync:xO},f1={bandPart:IO,gramSchmidt:TO,qr:CO},XO={absoluteDifference:FO,computeWeightedLoss:Tr,cosineDistance:$O,hingeLoss:MO,huberLoss:PO,logLoss:LO,meanSquaredError:BO,sigmoidCrossEntropy:UO,softmaxCrossEntropy:jO},Sr=class extends ek{minimize(e,t=!1,n){let{value:a,grads:r}=this.computeGradients(e,n);if(n!=null){let s=n.map(i=>({name:i.name,tensor:r[i.name]}));this.applyGradients(s)}else this.applyGradients(r);return Ae(r),t?a:(a.dispose(),null)}get iterations(){return this.iterations_==null&&(this.iterations_=0),this.iterations_}incrementIterations(){this.iterations_=this.iterations+1}computeGradients(e,t){return Tk(e,t)}dispose(){this.iterations_!=null&&Ae(this.iterations_)}async saveIterations(){return this.iterations_==null&&(this.iterations_=0),{name:"iter",tensor:de(this.iterations_,"int32")}}async getWeights(){throw new Error("getWeights() is not implemented for this optimizer yet.")}async setWeights(e){throw new Error(`setWeights() is not implemented for this optimizer class ${this.getClassName()}`)}async extractIterations(e){return this.iterations_=(await e[0].tensor.data())[0],e.slice(1)}};Object.defineProperty(Sr,Symbol.hasInstance,{value:e=>e.minimize!=null&&e.computeGradients!=null&&e.applyGradients!=null});var am=class extends Sr{constructor(e,t,n=null){super();this.learningRate=e,this.rho=t,this.epsilon=n,this.accumulatedGrads=[],this.accumulatedUpdates=[],n==null&&(this.epsilon=P.backend.epsilon())}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let a=P.registeredVariables[t],r=!1;this.accumulatedGrads[n]==null&&(this.accumulatedGrads[n]={originalName:`${t}/accum_grad`,variable:D(()=>He(a).variable(r))}),this.accumulatedUpdates[n]==null&&(this.accumulatedUpdates[n]={originalName:`${t}/accum_var`,variable:D(()=>He(a).variable(r))});let s=Array.isArray(e)?e[n].tensor:e[t];if(s==null)return;let i=this.accumulatedGrads[n].variable,o=this.accumulatedUpdates[n].variable;D(()=>{let l=Z(L(i,this.rho),L(lt(s),1-this.rho)),c=L(ve(rn(Z(o,this.epsilon)),rn(Z(i,this.epsilon))),s),u=Z(L(o,this.rho),L(lt(c),1-this.rho));i.assign(l),o.assign(u);let p=Z(L(c,-this.learningRate),a);a.assign(p)})}),this.incrementIterations()}dispose(){this.accumulatedUpdates!=null&&(Ae(this.accumulatedGrads.map(e=>e.variable)),Ae(this.accumulatedUpdates.map(e=>e.variable)))}async getWeights(){let e=[...this.accumulatedGrads,...this.accumulatedUpdates];return[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=e.length/2,n=!1;this.accumulatedGrads=e.slice(0,t).map(a=>({originalName:a.name,variable:a.tensor.variable(n)})),this.accumulatedUpdates=e.slice(t,t*2).map(a=>({originalName:a.name,variable:a.tensor.variable(n)}))}getConfig(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.rho,t.epsilon)}};am.className="Adadelta";ts(am);var rm=class extends Sr{constructor(e,t=.1){super();this.learningRate=e,this.initialAccumulatorValue=t,this.accumulatedGrads=[]}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let a=P.registeredVariables[t];if(this.accumulatedGrads[n]==null){let i=!1;this.accumulatedGrads[n]={originalName:`${t}/accumulator`,variable:D(()=>Nn(a.shape,this.initialAccumulatorValue).variable(i))}}let r=Array.isArray(e)?e[n].tensor:e[t];if(r==null)return;let s=this.accumulatedGrads[n].variable;D(()=>{let i=Z(s,lt(r));s.assign(i);let o=Z(L(ve(r,rn(Z(i,P.backend.epsilon()))),-this.learningRate),a);a.assign(o)})}),this.incrementIterations()}dispose(){this.accumulatedGrads!=null&&Ae(this.accumulatedGrads.map(e=>e.variable))}async getWeights(){return[await this.saveIterations()].concat(this.accumulatedGrads.map(e=>({name:e.originalName,tensor:e.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=!1;this.accumulatedGrads=e.map(n=>({originalName:n.name,variable:n.tensor.variable(t)}))}getConfig(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}}static fromConfig(e,t){return new e(t.learningRate,t.initialAccumulatorValue)}};rm.className="Adagrad";ts(rm);var sm=class extends Sr{constructor(e,t,n,a=null){super();this.learningRate=e,this.beta1=t,this.beta2=n,this.epsilon=a,this.accumulatedFirstMoment=[],this.accumulatedSecondMoment=[],D(()=>{this.accBeta1=de(t).variable(),this.accBeta2=de(n).variable()}),a==null&&(this.epsilon=P.backend.epsilon())}applyGradients(e){let t=Array.isArray(e)?e.map(n=>n.name):Object.keys(e);D(()=>{let n=fe(1,this.accBeta1),a=fe(1,this.accBeta2);t.forEach((r,s)=>{let i=P.registeredVariables[r],o=!1;this.accumulatedFirstMoment[s]==null&&(this.accumulatedFirstMoment[s]={originalName:`${r}/m`,variable:D(()=>He(i).variable(o))}),this.accumulatedSecondMoment[s]==null&&(this.accumulatedSecondMoment[s]={originalName:`${r}/v`,variable:D(()=>He(i).variable(o))});let l=Array.isArray(e)?e[s].tensor:e[r];if(l==null)return;let c=this.accumulatedFirstMoment[s].variable,u=this.accumulatedSecondMoment[s].variable,p=Z(L(c,this.beta1),L(l,1-this.beta1)),d=Z(L(u,this.beta2),L(lt(l),1-this.beta2)),h=ve(p,n),m=ve(d,a);c.assign(p),u.assign(d);let f=Z(L(ve(h,Z(rn(m),this.epsilon)),-this.learningRate),i);i.assign(f)}),this.accBeta1.assign(L(this.accBeta1,this.beta1)),this.accBeta2.assign(L(this.accBeta2,this.beta2))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.accBeta2.dispose(),this.accumulatedFirstMoment!=null&&Ae(this.accumulatedFirstMoment.map(e=>e.variable)),this.accumulatedSecondMoment!=null&&Ae(this.accumulatedSecondMoment.map(e=>e.variable))}async getWeights(){let e=[...this.accumulatedFirstMoment,...this.accumulatedSecondMoment];return[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e),D(()=>{this.accBeta1.assign(Ja(this.beta1,this.iterations_+1)),this.accBeta2.assign(Ja(this.beta2,this.iterations_+1))});let t=e.length/2,n=!1;this.accumulatedFirstMoment=e.slice(0,t).map(a=>({originalName:a.name,variable:a.tensor.variable(n)})),this.accumulatedSecondMoment=e.slice(t,t*2).map(a=>({originalName:a.name,variable:a.tensor.variable(n)}))}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon)}};sm.className="Adam";ts(sm);var im=class extends Sr{constructor(e,t,n,a=null,r=0){super();this.learningRate=e,this.beta1=t,this.beta2=n,this.epsilon=a,this.decay=r,this.accumulatedFirstMoment=[],this.accumulatedWeightedInfNorm=[],D(()=>{this.iteration=de(0).variable(),this.accBeta1=de(t).variable()}),a==null&&(this.epsilon=P.backend.epsilon())}applyGradients(e){let t=Array.isArray(e)?e.map(n=>n.name):Object.keys(e);D(()=>{let n=fe(1,this.accBeta1),a=ve(-this.learningRate,Z(L(this.iteration,this.decay),1));t.forEach((r,s)=>{let i=P.registeredVariables[r],o=!1;this.accumulatedFirstMoment[s]==null&&(this.accumulatedFirstMoment[s]={originalName:`${r}/m`,variable:He(i).variable(o)}),this.accumulatedWeightedInfNorm[s]==null&&(this.accumulatedWeightedInfNorm[s]={originalName:`${r}/v`,variable:He(i).variable(o)});let l=Array.isArray(e)?e[s].tensor:e[r];if(l==null)return;let c=this.accumulatedFirstMoment[s].variable,u=this.accumulatedWeightedInfNorm[s].variable,p=Z(L(c,this.beta1),L(l,1-this.beta1)),d=L(u,this.beta2),h=Wt(l),m=Sa(d,h);c.assign(p),u.assign(m);let f=Z(L(ve(a,n),ve(p,Z(m,this.epsilon))),i);i.assign(f)}),this.iteration.assign(Z(this.iteration,1)),this.accBeta1.assign(L(this.accBeta1,this.beta1))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.iteration.dispose(),this.accumulatedFirstMoment!=null&&Ae(this.accumulatedFirstMoment.map(e=>e.variable)),this.accumulatedWeightedInfNorm!=null&&Ae(this.accumulatedWeightedInfNorm.map(e=>e.variable))}async getWeights(){throw new Error("getWeights() is not implemented for Adamax yet.")}async setWeights(e){throw new Error("setWeights() is not implemented for Adamax yet.")}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}}static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon,t.decay)}};im.className="Adamax";ts(im);var ep=class extends Sr{constructor(e){super();this.learningRate=e,this.setLearningRate(e)}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let a=Array.isArray(e)?e[n].tensor:e[t];if(a==null)return;let r=P.registeredVariables[t];D(()=>{let s=Z(L(this.c,a),r);r.assign(s)})}),this.incrementIterations()}setLearningRate(e){this.learningRate=e,this.c!=null&&this.c.dispose(),this.c=Xt(de(-e))}dispose(){this.c.dispose()}async getWeights(){return[await this.saveIterations()]}async setWeights(e){if(e=await this.extractIterations(e),e.length!==0)throw new Error("SGD optimizer does not have settable weights.")}getConfig(){return{learningRate:this.learningRate}}static fromConfig(e,t){return new e(t.learningRate)}};ep.className="SGD";ts(ep);var om=class extends ep{constructor(e,t,n=!1){super(e);this.learningRate=e,this.momentum=t,this.useNesterov=n,this.accumulations=[],this.m=de(this.momentum)}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let a=P.registeredVariables[t];if(this.accumulations[n]==null){let i=!1;this.accumulations[n]={originalName:`${t}/momentum`,variable:D(()=>He(a).variable(i))}}let r=this.accumulations[n].variable,s=Array.isArray(e)?e[n].tensor:e[t];s!=null&&D(()=>{let i,o=Z(L(this.m,r),s);this.useNesterov?i=Z(L(this.c,Z(s,L(o,this.m))),a):i=Z(L(this.c,o),a),r.assign(o),a.assign(i)})}),this.incrementIterations()}dispose(){this.m.dispose(),this.accumulations!=null&&Ae(this.accumulations.map(e=>e.variable))}setMomentum(e){this.momentum=e}async getWeights(){return[await this.saveIterations()].concat(this.accumulations.map(e=>({name:e.originalName,tensor:e.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=!1;this.accumulations=e.map(n=>({originalName:n.name,variable:n.tensor.variable(t)}))}getConfig(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}}static fromConfig(e,t){return new e(t.learningRate,t.momentum,t.useNesterov)}};om.className="Momentum";ts(om);var lm=class extends Sr{constructor(e,t=.9,n=0,a=null,r=!1){super();if(this.learningRate=e,this.decay=t,this.momentum=n,this.epsilon=a,this.accumulatedMeanSquares=[],this.accumulatedMoments=[],this.accumulatedMeanGrads=[],this.centered=r,a==null&&(this.epsilon=P.backend.epsilon()),e==null)throw new Error("learningRate for RMSPropOptimizer must be defined.")}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let a=P.registeredVariables[t],r=!1;this.accumulatedMeanSquares[n]==null&&(this.accumulatedMeanSquares[n]={originalName:`${t}/rms`,variable:D(()=>He(a).variable(r))}),this.accumulatedMoments[n]==null&&(this.accumulatedMoments[n]={originalName:`${t}/momentum`,variable:D(()=>He(a).variable(r))}),this.accumulatedMeanGrads[n]==null&&this.centered&&(this.accumulatedMeanGrads[n]={originalName:`${t}/mg`,variable:D(()=>He(a).variable(r))});let s=Array.isArray(e)?e[n].tensor:e[t];if(s==null)return;let i=this.accumulatedMeanSquares[n].variable,o=this.accumulatedMoments[n].variable;D(()=>{let l=Z(L(i,this.decay),L(lt(s),1-this.decay));if(this.centered){let c=this.accumulatedMeanGrads[n].variable,u=Z(L(c,this.decay),L(s,1-this.decay)),p=ve(L(s,this.learningRate),rn(fe(l,Z(lt(u),this.epsilon)))),d=Z(L(o,this.momentum),p);i.assign(l),c.assign(u),o.assign(d);let h=fe(a,d);a.assign(h)}else{let c=Z(L(i,this.decay),L(lt(s),1-this.decay)),u=Z(L(o,this.momentum),ve(L(s,this.learningRate),rn(Z(c,this.epsilon))));i.assign(c),o.assign(u);let p=fe(a,u);a.assign(p)}})}),this.incrementIterations()}dispose(){this.accumulatedMeanSquares!=null&&Ae(this.accumulatedMeanSquares.map(e=>e.variable)),this.accumulatedMeanGrads!=null&&this.centered&&Ae(this.accumulatedMeanGrads.map(e=>e.variable)),this.accumulatedMoments!=null&&Ae(this.accumulatedMoments.map(e=>e.variable))}async getWeights(){let e=[...this.accumulatedMeanSquares,...this.accumulatedMoments];return this.centered&&e.push(...this.accumulatedMeanGrads),[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=this.centered?e.length/3:e.length/2,n=!1;this.accumulatedMeanSquares=e.slice(0,t).map(a=>({originalName:a.name,variable:a.tensor.variable(n)})),this.accumulatedMoments=e.slice(t,t*2).map(a=>({originalName:a.name,variable:a.tensor.variable(n)})),this.centered&&(this.accumulatedMeanGrads=e.slice(t*2,t*3).map(a=>({originalName:a.name,variable:a.tensor.variable(n)})))}getConfig(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}}static fromConfig(e,t){return new e(t.learningRate,t.decay,t.momentum,t.epsilon,t.centered)}};lm.className="RMSProp";ts(lm);var Li=class{static sgd(e){return new ep(e)}static momentum(e,t,n=!1){return new om(e,t,n)}static rmsprop(e,t=.9,n=0,a=null,r=!1){return new lm(e,t,n,a,r)}static adam(e=.001,t=.9,n=.999,a=null){return new sm(e,t,n,a)}static adadelta(e=.001,t=.95,n=null){return new am(e,t,n)}static adamax(e=.002,t=.9,n=.999,a=null,r=0){return new im(e,t,n,a,r)}static adagrad(e,t=.1){return new rm(e,t)}},zi={sgd:Li.sgd,momentum:Li.momentum,adadelta:Li.adadelta,adagrad:Li.adagrad,rmsprop:Li.rmsprop,adamax:Li.adamax,adam:Li.adam},YO=(()=>typeof requestAnimationFrame!="undefined"?requestAnimationFrame:typeof setImmediate!="undefined"?setImmediate:e=>e())();function um(){return new Promise(e=>YO(()=>e()))}var _={};Oe(_,{ERF_A1:()=>oL,ERF_A2:()=>lL,ERF_A3:()=>uL,ERF_A4:()=>cL,ERF_A5:()=>pL,ERF_P:()=>iL,PARALLELIZE_THRESHOLD:()=>Ib,SELU_SCALE:()=>y1,SELU_SCALEALPHA:()=>g1,applyActivation:()=>tm,assertAndGetBroadcastShape:()=>vt,assertAxesAreInnerMostDims:()=>vM,assertParamsConsistent:()=>JO,assignToTypedArray:()=>xL,axesAreInnerMostDims:()=>ab,calculateShapes:()=>V0,castTensor:()=>IL,combineLocations:()=>Ck,complexWithEvenIndex:()=>gL,complexWithOddIndex:()=>yL,computeConv2DInfo:()=>Bc,computeConv3DInfo:()=>uk,computeDefaultPad:()=>Hy,computeDilation2DInfo:()=>G$,computeOptimalWindowSize:()=>QO,computeOutAndReduceShapes:()=>Ek,computeOutShape:()=>ZO,computePool2DInfo:()=>lk,computePool3DInfo:()=>H$,convertConv2DDataFormat:()=>ok,eitherStridesOrDilationsAreOne:()=>$n,expandShapeToKeepDim:()=>Ri,exponent:()=>wL,exponents:()=>vL,fromStringArrayToUint8:()=>SL,fromUint8ToStringArray:()=>TL,getAxesPermutation:()=>_k,getBroadcastDims:()=>PD,getComplexWithIndex:()=>bL,getFusedBiasGradient:()=>em,getFusedDyActivation:()=>Qh,getImageCenter:()=>eL,getInnerMostAxes:()=>wM,getPermuted:()=>nL,getReductionAxes:()=>Vt,getReshaped:()=>tL,getReshapedPermuted:()=>aL,getSliceBeginCoords:()=>rL,getSliceSize:()=>sL,getUndoAxesPermutation:()=>rb,log:()=>hL,mergeRealAndImagArrays:()=>mL,prepareAndValidate:()=>W0,prepareSplitSize:()=>kL,reshapeTensor:()=>NL,segment_util:()=>b1,shouldFuse:()=>nm,slice_util:()=>hn,splitRealAndImagArrays:()=>fL,tupleValuesAreOne:()=>as,upcastType:()=>pa,validateInput:()=>$y,validateUpdateShape:()=>Ay,warn:()=>dL});function JO(e,t){let n=e[0].length;e.forEach((r,s)=>{F(r.length===n,()=>`Error in concat${n}D: rank of tensors[${s}] must be the same as the rank of the rest (${n})`)}),F(t>=0&&t`Error in concat${n}D: axis must be between 0 and ${n-1}.`);let a=e[0];e.forEach((r,s)=>{for(let i=0;i`Error in concat${n}D: Shape of tensors[${s}] (${r}) does not match the shape of the rest (${a}) along the non-concatenated axis ${s}.`)})}function ZO(e,t){let n=e[0].slice();for(let a=1;a=t*2+1||i%2==1?s.push(i):r.push(i);a.push(...r),a.push(0),a.push(...s)}return a}function aL(e,t,n,a=!0){let r=[];a?r.push(e[0]/n):r.push(e[0]*n);for(let s=1;s"Number of splits must evenly divide the axis."),a=new Array(t).fill(e.shape[n]/t);else{let r=t.reduce((i,o)=>(o===-1&&(i+=1),i),0);F(r<=1,()=>"There should be only one negative value in split array.");let s=t.indexOf(-1);if(s!==-1){let i=t.reduce((o,l)=>l>0?o+l:o);t[s]=e.shape[n]-i}F(e.shape[n]===t.reduce((i,o)=>i+o),()=>"The sum of sizes must match the size of the axis dimension."),a=t}return a}var b1={};Oe(b1,{collectGatherOpShapeInfo:()=>_L,computeOutShape:()=>EL,segOpComputeOptimalWindowSize:()=>CL});function CL(e,t){let n=!1,a;for(e<=Ib?(a=e,n=!0):a=Pd(e,Math.floor(Math.sqrt(e)));!n;)a>t||a===e?n=!0:a=Pd(e,a+1);return a}function EL(e,t,n){let a=[],r=e.length;for(let s=0;sr))throw new Error(`Expect batchDims in the range of [-${r}, ${r}], but got ${a}`);if(a<0&&(a+=r),a>s)throw new Error(`batchDims (${a}) must be less than rank(x) ( + ${s}).`);if(nyh(t))}catch(t){throw new Error(`Failed to decode encoded string bytes into utf-8, error: ${t}`)}}function SL(e){return e.map(t=>Ac(t))}var Qa={};Oe(Qa,{nonMaxSuppressionV3Impl:()=>l1,nonMaxSuppressionV4Impl:()=>u1,nonMaxSuppressionV5Impl:()=>c1,whereImpl:()=>Ok});var x1={kernelName:Lo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>L(e,nu(pe(n,"float32"),-1))}}},FL={kernelName:zo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>{let a=lt(pe(n,"float32")),r=rn(fe(de(1),a));return St(ve(e,r))}}}},AL={kernelName:Bo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>{let a=rn(fe(lt(pe(n,"float32")),1));return ve(e,a)}}}},$L={kernelName:qr,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,a]=t,r=vt(n.shape,a.shape);return{a:()=>{let s=e,i=Vt(n.shape,r);return i.length>0&&(s=Ce(s,i)),j(s,n.shape)},b:()=>{let s=e,i=Vt(a.shape,r);return i.length>0&&(s=Ce(s,i)),j(s,a.shape)}}}},DL={kernelName:Rs,saveAllInputs:!0,gradFunc:(e,t)=>{let n={};return t.forEach((a,r)=>{n[r]=()=>e.clone()}),n}},ML={kernelName:Ps,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>He(n)}}},RL={kernelName:dc,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>He(n)}}},PL={kernelName:Wo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ve(e,rn(fe(de(1),lt(pe(n,"float32")))))}}},OL={kernelName:Vo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>{let a=rn(Z(de(1),lt(pe(n,"float32"))));return ve(e,a)}}}},LL={kernelName:Ho,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,a]=t,r=vt(n.shape,a.shape);return{a:()=>{let s=Z(lt(n),lt(a)),i=L(e,ve(a,s)),o=Vt(n.shape,r);return o.length>0&&(i=Ce(i,o)),j(i,n.shape)},b:()=>{let s=Z(lt(n),lt(a)),i=St(L(e,ve(n,s))),o=Vt(a.shape,r);return o.length>0&&(i=Ce(i,o)),j(i,a.shape)}}}},zL={kernelName:Uo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ve(e,Z(lt(pe(n,"float32")),1))}}},BL={kernelName:Go,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ve(e,fe(de(1),lt(pe(n,"float32"))))}}};function WL(e,t,n,a,r=[1,1,1],s,i){let o=C(e,"dy","avgPool3dGrad"),l=C(t,"input","avgPool3dGrad"),c=o,u=l,p=!1;l.rank===4&&(p=!0,c=j(o,[1,o.shape[0],o.shape[1],o.shape[2],o.shape[3]]),u=j(l,[1,l.shape[0],l.shape[1],l.shape[2],l.shape[3]])),F(c.rank===5,()=>`Error in avgPool3dGrad: dy must be rank 5 but got rank ${c.rank}.`),F(u.rank===5,()=>`Error in avgPool3dGrad: input must be rank 5 but got rank ${u.rank}.`),F($n(a,r),()=>`Error in avgPool3dGrad: Either strides or dilations must be 1. Got strides ${a} and dilations '${r}'`),i!=null&&F(qt(s),()=>`Error in avgPool3dGrad: pad must be an integer when using, dimRoundingMode ${i} but got pad ${s}.`);let d={dy:c,input:u},h={filterSize:n,strides:a,dilations:r,pad:s,dimRoundingMode:i},m=P.runKernel(Wd,d,h);return p?j(m,[m.shape[1],m.shape[2],m.shape[3],m.shape[4]]):m}var VL=R({avgPool3dGrad_:WL}),UL={kernelName:hc,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[a]=t,{filterSize:r,strides:s,dilations:i,pad:o,dimRoundingMode:l}=n,c=i==null?[1,1,1]:i;return{x:()=>VL(e,a,r,s,c,o,l)}}};function GL(e,t,n,a,r){let s=C(e,"dy","avgPoolGrad"),i=C(t,"input","avgPoolGrad");F(i.rank===s.rank,()=>`Rank of input (${i.rank}) does not match rank of dy (${s.rank})`);let o=i,l=s,c=!1;i.rank===3&&(c=!0,o=j(i,[1,i.shape[0],i.shape[1],i.shape[2]]),l=j(s,[1,s.shape[0],s.shape[1],s.shape[2]])),F(l.rank===4,()=>`Error in avgPoolGrad: dy must be rank 4 but got rank ${l.rank}.`),F(o.rank===4,()=>`Error in avgPoolGrad: input must be rank 4 but got rank ${o.rank}.`);let u={dy:l,input:o},p={filterSize:n,strides:a,pad:r},d=P.runKernel(Bd,u,p);return c?j(d,[d.shape[1],d.shape[2],d.shape[3]]):d}var HL=R({avgPoolGrad_:GL}),jL={kernelName:Os,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[a]=t,{filterSize:r,strides:s,pad:i}=n;return{x:()=>HL(e,a,r,s,i)}}},qL={kernelName:Ls,inputsToSave:["a","b"],gradFunc:(e,t,n)=>{let[a,r]=t,{transposeA:s,transposeB:i}=n;return!s&&!i?{a:()=>ze(e,r,!1,!0),b:()=>ze(a,e,!0,!1)}:!s&&i?{a:()=>ze(e,r,!1,!1),b:()=>ze(e,a,!0,!1)}:s&&!i?{a:()=>ze(r,e,!1,!0),b:()=>ze(a,e,!1,!1)}:{a:()=>ze(r,e,!0,!0),b:()=>ze(e,a,!0,!0)}}},KL={kernelName:mc,gradFunc:(e,t,n)=>{let{blockShape:a,crops:r}=n;return{x:()=>qc(e,a,r)}}},XL={kernelName:d0,gradFunc:(e,t,n)=>{let a=n,r=a.inputShape,s=a.shape,i=Array.from(s);for(let l=r.length-1;l>=0;l--)if(r[l]===s[l])i[l]=1;else if(r[l]!==1)throw new Error(`broadcastTo(): [${r}] cannot be broadcast to [${s}].`);let o=[];for(let l=0;l1&&o.push(l);return{x:()=>Ce(e,o,!0)}}},YL={kernelName:zs,gradFunc:e=>({x:()=>e.clone()})},JL={kernelName:jo,gradFunc:e=>({x:()=>He(e)})},ZL={kernelName:Kr,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[a]=t,{clipValueMin:r,clipValueMax:s}=n;return{x:()=>In(ha(Nr(a,r),rs(a,s)),e,He(e))}}},QL={kernelName:fc,inputsToSave:["x"],gradFunc:x1.gradFunc},e3={kernelName:qo,saveAllInputs:!0,gradFunc:(e,t,n)=>{let a=t.map(o=>o.shape),{axis:r}=n,s=ca(r,t[0].shape)[0],i=a.map(o=>o[s]);return Pn(e,i,s).map(o=>()=>o)}},t3={kernelName:Bs,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{let[a,r]=t,{dilations:s,strides:i,pad:o,dataFormat:l}=n;return F(as(s),()=>`Error in gradient of conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${s}'`),{x:()=>Ky(a.shape,e,r,i,o,l),filter:()=>wb(a,e,r.shape,i,o,l)}}},n3={kernelName:Ws,inputsToSave:["dy","filter"],gradFunc:(e,t,n)=>{let[a,r]=t,{strides:s,pad:i,dataFormat:o,dimRoundingMode:l}=n;return{dy:()=>$t(e,r,s,i,o,1,l),filter:()=>wb(e,a,r.shape,s,i,o,l)}}};function a3(e,t,n,a,r){let s=e;e.rank===4&&(s=j(e,[1,e.shape[0],e.shape[1],e.shape[2],e.shape[3]]));let i=t;i.rank===4&&(i=j(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]])),F(s.rank===5,()=>`Error in conv3dDerFilter: input must be rank 5, but got shape ${s.shape}.`),F(i.rank===5,()=>`Error in conv3dDerFilter: dy must be rank 5, but got shape ${i.shape}.`),F(n.length===5,()=>`Error in conv3dDerFilter: filterShape must be length 5, but got ${n}.`),F(s.shape[4]===n[3],()=>`Error in conv3dDerFilter: depth of input ${s.shape[4]}) must match input depth in filter (${n[3]}.`),F(i.shape[4]===n[4],()=>`Error in conv3dDerFilter: depth of dy (${i.shape[4]}) must match output depth for filter (${n[4]}).`);let o={x:s,dy:i},l={strides:a,pad:r,filterShape:n};return P.runKernel(Hd,o,l)}var r3=R({conv3DBackpropFilter_:a3}),s3={kernelName:gc,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{let{dilations:a,strides:r,pad:s}=n;F(as(a),()=>`Error in gradient of conv3D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${a}'`);let[i,o]=t;return{x:()=>bk(i.shape,e,o,r,s),filter:()=>r3(i,e,o.shape,r,s)}}},i3={kernelName:Vs,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>L(St(jh(pe(n,"float32"))),e)}}},o3={kernelName:Ko,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>L(qh(pe(n,"float32")),e)}}},l3={kernelName:Us,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[a]=t,{axis:r,exclusive:s,reverse:i}=n;return{x:()=>{let o=_k([r],a.rank),l=Dh(e,r,s,!i);return o!=null&&(l=Ue(l,o)),l}}}},u3={kernelName:Gs,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{let{dilations:a,strides:r,pad:s,dimRoundingMode:i}=n,o=a==null?[1,1]:a;F(as(o),()=>`Error in gradient of depthwiseConv2dNative: dilation rates greater than 1 are not yet supported. Got dilations '${o}'`);let[l,c]=t;return F(l.rank===4,()=>`Error in gradient of depthwiseConv2dNative: input must be rank 4, but got rank ${l.rank}.`),F(c.rank===4,()=>`Error in gradient of depthwiseConv2dNative: filter must be rank 4, but got rank ${c.rank}.`),F(l.shape[3]===c.shape[2],()=>`Error in gradient of depthwiseConv2d: number of input channels (${l.shape[3]}) must match the inChannels dimension in filter ${c.shape[2]}.`),F($n(r,o),()=>`Error in gradient of depthwiseConv2d: Either strides or dilations must be 1. Got strides ${r} and dilations '${o}'.`),i!=null&&F(qt(s),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${s}.`),{x:()=>s1(l.shape,e,c,r,s,a,i),filter:()=>r1(l,e,c.shape,r,s,a,i)}}},c3={kernelName:yc,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{let[a,r]=t,s={x:a,filter:r,dy:e},i={x:a,filter:r,dy:e};return{x:()=>P.runKernel(Jd,s,n),filter:()=>P.runKernel(Zd,i,n)}}},p3={kernelName:Jo,outputsToSave:[!0],gradFunc:(e,t)=>{let[n]=t,a={dy:e,y:n};return{x:()=>P.runKernel(Qd,a)}}},d3={kernelName:Zo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t,a=L(mn(St(lt(n))),2/Math.sqrt(Math.PI));return{x:()=>L(e,a)}}},h3={kernelName:js,outputsToSave:[!0],gradFunc:(e,t)=>{let[n]=t;return{x:()=>L(e,n)}}},m3={kernelName:el,inputsToSave:["input"],gradFunc:(e,t)=>{let[n]=t;return{input:()=>j(e,n.shape)}}},f3={kernelName:tl,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>L(e,mn(n))}}},g3={kernelName:qs,gradFunc:e=>({x:()=>He(e)})},y3={kernelName:Ks,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,a]=t,r=vt(n.shape,a.shape);return{a:()=>{let s=ve(e,pe(a,"float32")),i=Vt(n.shape,r);return i.length>0?j(Ce(s,i),n.shape):s},b:()=>{let s=L(e,pe(n,"float32")),i=Vt(a.shape,r);i.length>0&&(s=j(Ce(s,i),a.shape));let o=lt(a);return St(ve(s,pe(o,"float32")))}}}},b3={kernelName:Xs,inputsToSave:["x","mean","variance","scale"],gradFunc:(e,t,n)=>{let{varianceEpsilon:a}=n,[r,s,i,o]=t,l=o==null?de(1):o,c=Vt(s.shape,r.shape),u=[];if(s.rank===1){for(let f=0;fs.rank===1?j(L(L(e,Ka(j(h,[1,1,1,s.shape[0]]),u)),l),r.shape):j(L(L(e,h),l),r.shape),mean:()=>{let f=L(L(h,de(-1)),d);return s.rank===1&&(f=Ce(f,c)),j(f,s.shape)},variance:()=>{let f=L(L(m,p),d);return s.rank===1&&(f=Ce(f,c)),j(f,s.shape)},scale:()=>{let f=L(p,h),g=L(e,f);return s.rank===1&&(g=Ce(g,c)),j(g,s.shape)},offset:()=>{let f=e;return s.rank===1&&(f=Ce(f,c)),j(f,s.shape)}}}},x3={kernelName:al,inputsToSave:["x","indices"],gradFunc:(e,t,n)=>{let[a,r]=t,{axis:s}=n,i=ca(s,a.shape)[0];return{x:()=>{let o=a.shape,l=r.size,c=o.slice(0,i),u=c.length,p=o.slice(s,o.length).slice(1),d=p.length,h=v1(0,u),m=v1(u+1,u+1+d),f=w1([c,[l],p]),g=j(e,f),y=j(r,[l]),b=w1([[u],h,m]),x=Ue(g,b),v=yb(x,y,a.shape[i]),N=rb(b);return v=Ue(v,N),v},indices:()=>r}}};function v1(e,t){let n=[];for(let a=e;a{let[n,a]=t;return{a:()=>He(n),b:()=>He(a)}}},w3={kernelName:il,gradFunc:e=>({x:()=>pe(e,"float32")})},k3={kernelName:ol,gradFunc:e=>({x:()=>He(e)})},I3={kernelName:ll,gradFunc:e=>({x:()=>He(e)})},N3={kernelName:ul,gradFunc:e=>({x:()=>He(e)})},T3={kernelName:Js,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[a]=t,{alpha:r}=n,s=ea(a,0);return{x:()=>In(s,e,L(e,r))}}},S3={kernelName:dl,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ve(e,Z(n,1))}}},C3={kernelName:Zs,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ve(e,pe(n,"float32"))}}},E3={kernelName:h0,inputsToSave:[],outputsToSave:[!0],gradFunc:(e,t,n)=>{let[a]=t,{axis:r}=n;return{logits:()=>{let s=!0,i=mn(a);return fe(e,L(Ce(e,r,s),i))}}}};function _3(e,t,n,a=5,r=1,s=1,i=.5){let o={x:e,y:t,dy:n},l={depthRadius:a,bias:r,alpha:s,beta:i};return P.runKernel(rh,o,l)}var F3=R({localResponseNormalizationBackprop_:_3}),A3={kernelName:wc,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let[a,r]=t,{depthRadius:s,bias:i,alpha:o,beta:l}=n;return{x:()=>F3(a,r,e,s,i,o,l)}}};function k1(e,t,n,a){return t.rankL(e,pe(Ir(n,t),e.dtype))}}var I1={kernelName:Qs,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let a=n,{reductionIndices:r}=a,s=t[0],i=t[1],o=ca(r,s.shape),l=k1(e,i,s,o);return{x:()=>l.x()}}},$3={kernelName:ei,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,a]=t;return{a:()=>L(e,pe(Nr(n,a),"float32")),b:()=>L(e,pe(Hc(n,a),"float32"))}}};function D3(e,t,n,a,r,s=[1,1,1],i,o){let l=C(e,"dy","maxPool3dGrad"),c=C(t,"input","maxPool3dGrad"),u=C(n,"output","maxPool3dGrad"),p=l,d=c,h=u,m=!1;c.rank===4&&(m=!0,p=j(l,[1,l.shape[0],l.shape[1],l.shape[2],l.shape[3]]),d=j(c,[1,c.shape[0],c.shape[1],c.shape[2],c.shape[3]]),h=j(u,[1,u.shape[0],u.shape[1],u.shape[2],u.shape[3]])),F(p.rank===5,()=>`Error in maxPool3dGrad: dy must be rank 5 but got rank ${p.rank}.`),F(d.rank===5,()=>`Error in maxPool3dGrad: input must be rank 5 but got rank ${d.rank}.`),F(h.rank===5,()=>`Error in maxPool3dGrad: output must be rank 5 but got rank ${h.rank}.`),F($n(r,s),()=>`Error in maxPool3dGrad: Either strides or dilations must be 1. Got strides ${r} and dilations '${s}'`),o!=null&&F(qt(i),()=>`Error in maxPool3dGrad: pad must be an integer when using, dimRoundingMode ${o} but got pad ${i}.`);let f={dy:p,input:d,output:h},g={filterSize:a,strides:r,dilations:s,pad:i,dimRoundingMode:o},y=P.runKernel(ih,f,g);return m?j(y,[y.shape[1],y.shape[2],y.shape[3],y.shape[4]]):y}var M3=R({maxPool3dGrad_:D3}),R3={kernelName:kc,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let[a,r]=t,{filterSize:s,strides:i,dilations:o,pad:l,dimRoundingMode:c}=n,u=o==null?[1,1,1]:o;return{x:()=>M3(e,a,r,s,i,u,l,c)}}};function P3(e,t,n,a,r,s,i){let o=C(e,"dy","maxPoolGrad"),l=C(t,"input","maxPoolGrad"),c=C(n,"output","maxPoolGrad");F(l.rank===o.rank,()=>`Rank of input (${l.rank}) does not match rank of dy (${o.rank})`),F(o.rank===4,()=>`Error in maxPoolGrad: dy must be rank 4 but got rank ${o.rank}.`),F(l.rank===4,()=>`Error in maxPoolGrad: input must be rank 4 but got rank ${l.rank}.`),i!=null&&F(qt(s),()=>`Error in maxPoolGrad: pad must be an integer when using, dimRoundingMode ${i} but got pad ${s}.`);let u={dy:o,input:l,output:c},p={filterSize:a,strides:r,pad:s,dimRoundingMode:i};return P.runKernel(sh,u,p)}var O3=R({maxPoolGrad_:P3}),L3={kernelName:ti,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let[a,r]=t,{filterSize:s,strides:i,pad:o}=n;return{x:()=>O3(e,a,r,s,i,o)}}},z3={kernelName:ni,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[a]=t,{axis:r}=n,s=ca(r,a.shape),i=Ek(a.shape,s)[1],o=zt(i);return{x:()=>{let l=a.shape.slice();s.forEach(u=>{l[u]=1});let c=j(e,l);return ve(L(c,Ya(a.shape,"float32")),o)}}}},B3={kernelName:ai,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let a=n,{axis:r}=a,[s,i]=t,o=ca(r,s.shape),l=k1(e,i,s,o);return{x:()=>l.x()}}},W3={kernelName:ri,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,a]=t;return{a:()=>L(e,pe(rs(n,a),"float32")),b:()=>L(e,pe(ea(n,a),"float32"))}}},V3={kernelName:Ic,inputsToSave:["x"],gradFunc:(e,t,n)=>{let a=t[0],{paddings:r}=n,s=r.map(i=>i[0]);return{x:()=>We(e,s,a.shape)}}},U3={kernelName:ml,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,a]=t,r=vt(n.shape,a.shape);return{a:()=>{let s=Vt(n.shape,r);return s.length>0?j(Ce(e,s),n.shape):e},b:()=>{let s=L(e,St(Yl(ve(n,a)))),i=Vt(a.shape,r);return i.length>0?j(Ce(s,i),a.shape):s}}}},G3={kernelName:si,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,a]=t,r=vt(n.shape,a.shape);return{a:()=>{let s=L(e,pe(a,"float32")),i=Vt(n.shape,r);return i.length>0?j(Ce(s,i),n.shape):s},b:()=>{let s=L(e,pe(n,"float32")),i=Vt(a.shape,r);return i.length>0?j(Ce(s,i),a.shape):s}}}},H3={kernelName:fl,gradFunc:e=>({x:()=>St(e)})},j3={kernelName:ii,inputsToSave:["indices"],gradFunc:(e,t)=>{let n=t[0];return{indices:()=>bt(n.shape,"float32")}}},q3={kernelName:vl,gradFunc:e=>({x:()=>He(e)})},K3={kernelName:wl,saveAllInputs:!0,gradFunc:(e,t,n)=>{let{axis:a}=n;return pt(e,a).map(r=>()=>r)}},N1={kernelName:oi,inputsToSave:["x"],gradFunc:(e,t,n)=>{let a=t[0],{paddings:r}=n,s=r.map(i=>i[0]);return{x:()=>We(e,s,a.shape)}}},X3={kernelName:li,inputsToSave:["a","b"],outputsToSave:[!0],gradFunc:(e,t)=>{let[n,a,r]=t,s=n,i=a,o=vt(s.shape,i.shape);return{a:()=>{let l=pe(i,"float32"),c=L(e,L(l,Ja(s,fe(l,de(1))))),u=Vt(s.shape,o);return u.length>0&&(c=Ce(c,u)),j(c,s.shape)},b:()=>{let l=ea(s,0),c=In(l,Dn(s),He(s)),u=L(e,L(r,c)),p=Vt(i.shape,o);return p.length>0&&(u=Ce(u,p)),j(u,i.shape)}}}},Y3={kernelName:ui,inputsToSave:["x","alpha"],gradFunc:(e,t)=>{let[n,a]=t,r=ea(n,0);return{x:()=>In(r,e,L(e,a)),alpha:()=>{let s=In(r,He(e),L(e,n)),i=Vt(a.shape,e.shape);return i.length>0&&(s=Ce(s,i)),j(s,a.shape)}}}},J3={kernelName:Hs,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,a]=t,r=vt(n.shape,a.shape);return{a:()=>{let s=ve(e,pe(a,"float32")),i=Vt(n.shape,r);return i.length>0?j(Ce(s,i),n.shape):s},b:()=>{let s=L(e,pe(n,"float32")),i=Vt(a.shape,r);i.length>0&&(s=j(Ce(s,i),a.shape));let o=lt(a);return St(ve(s,pe(o,"float32")))}}}},Z3={kernelName:Il,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ve(e,St(lt(n)))}}},Q3={kernelName:di,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t,a=L(rs(n,6),nu(n));return{x:()=>L(e,pe(a,"float32"))}}},ez={kernelName:ci,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>L(e,pe(nu(n),"float32"))}}},tz={kernelName:Nl,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>j(e,n.shape)}}},nz={kernelName:pi,inputsToSave:["images"],gradFunc:(e,t,n)=>{let[a]=t,r={dy:e,images:a};return{images:()=>P.runKernel(ph,r,n)}}},az={kernelName:Tc,inputsToSave:["images"],gradFunc:(e,t,n)=>{let[a]=t,r={dy:e,images:a};return{images:()=>P.runKernel(ch,r,n)}}},rz={kernelName:hi,gradFunc:(e,t,n)=>{let{dims:a}=n,r=ca(a,e.shape);return{x:()=>Rn(e,r)}}},sz={kernelName:mi,gradFunc:e=>({x:()=>He(e)})},iz={kernelName:fi,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>St(ve(e,L(Ja(n,1.5),2)))}}},oz={kernelName:Sl,inputsToSave:["condition"],gradFunc:(e,t)=>{let[n]=t;return{condition:()=>pe(He(n),"float32"),t:()=>L(e,pe(n,e.dtype)),e:()=>L(e,pe(jc(n),e.dtype))}}},lz={kernelName:Cl,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>{let a=ea(n,de(0)),r=de(g1),s=de(y1),i=L(e,s),o=L(L(e,r),mn(pe(n,"float32")));return In(a,i,o)}}}},uz={kernelName:yi,outputsToSave:[!0],gradFunc:(e,t)=>{let[n]=t;return{x:()=>L(e,L(n,fe(de(1),n)))}}},cz={kernelName:Fl,gradFunc:e=>({x:()=>He(e)})},pz={kernelName:gi,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>L(Uc(pe(n,"float32")),e)}}},dz={kernelName:_l,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>L($h(pe(n,"float32")),e)}}},hz={kernelName:El,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[a]=t,{begin:r,size:s}=n,i=a.shape,[o,l]=J0(a,r,s),c=[];for(let u=0;una(e,c)}}},mz={kernelName:vi,outputsToSave:[!0],gradFunc:(e,t,n)=>{let[a]=t,{dim:r}=n,s=!0,i=L(e,a);return{logits:()=>fe(i,L(Ce(i,[r],s),a))}}},fz={kernelName:Al,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>L(e,da(n))}}},T1={kernelName:Sc,gradFunc:(e,t,n)=>{let{blockShape:a,paddings:r}=n;return{x:()=>Wc(e,a,r)}}},S1={kernelName:$l,gradFunc:(e,t,n)=>{let{axis:a}=n;return{x:()=>Ze(e,a)}}},gz={kernelName:bi,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ve(e,L(rn(pe(n,"float32")),2))}}},yz={kernelName:Cc,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>L(e,L(pe(n,"float32"),2))}}},bz={kernelName:wi,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,a]=t,r=de(2);return{a:()=>L(e,L(r,fe(n,a))),b:()=>L(e,L(r,fe(a,n)))}}},xz={kernelName:Ll,gradFunc:e=>({x:()=>He(e)})},vz={kernelName:ki,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,a]=t,r=vt(n.shape,a.shape);return{a:()=>{let s=e,i=Vt(n.shape,r);return i.length>0&&(s=Ce(s,i)),j(s,n.shape)},b:()=>{let s=e,i=Vt(a.shape,r);return i.length>0&&(s=Ce(s,i)),j(St(s),a.shape)}}}},wz={kernelName:xi,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[a]=t,r=a.shape.slice(),{axis:s}=n;ca(s,a.shape).forEach(l=>{r[l]=1});let i=j(e,r),o=L(i,Ya(a.shape,"float32"));return{x:()=>o}}},kz={kernelName:Ml,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ve(e,lt(Uc(n)))}}},Iz={kernelName:Ii,outputsToSave:[!0],gradFunc:(e,t)=>{let[n]=t;return{x:()=>L(fe(de(1),lt(n)),e)}}},Nz={kernelName:Xr,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[a]=t,{reps:r}=n;return{x:()=>{let s=He(a);if(a.rank===1)for(let i=0;i{let a=n,{perm:r}=a,s=rb(r);return{x:()=>Ue(e,s)}}},Sz={kernelName:Pl,gradFunc:(e,t,n)=>{let a=n,{axis:r}=a;return{value:()=>Mt(e,r)}}},Ez={kernelName:Ec,inputsToSave:["segmentIds"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>Cz(e,n)}}};function Cz(e,t){let n=Sa(t,He(t)),a=Mi(e,n),r=Nr(t,de(0,"int32")),s=a.rank-r.rank;for(let o=0;o({x:()=>He(e)})},Fz=[x1,FL,AL,$L,DL,ML,RL,PL,OL,LL,zL,BL,UL,jL,qL,KL,XL,YL,JL,ZL,QL,e3,n3,t3,s3,i3,o3,l3,u3,c3,J3,p3,d3,h3,m3,f3,y3,g3,b3,x3,v3,w3,k3,I3,N3,T3,S3,C3,E3,A3,I1,I1,$3,R3,L3,z3,B3,W3,V3,U3,G3,H3,j3,q3,K3,N1,N1,X3,Y3,Z3,Q3,ez,tz,nz,az,rz,sz,iz,oz,lz,uz,cz,pz,dz,hz,mz,fz,T1,T1,S1,S1,gz,bz,yz,xz,vz,wz,kz,Iz,Nz,Tz,Sz,Ez,_z];for(let e of Fz)m0(e);z.prototype.abs=function(){return this.throwIfDisposed(),Wt(this)};z.prototype.acos=function(){return this.throwIfDisposed(),Py(this)};z.prototype.acosh=function(){return this.throwIfDisposed(),Oy(this)};z.prototype.addStrict=function(e){return this.throwIfDisposed(),Gk(this,e)};z.prototype.add=function(e){return this.throwIfDisposed(),Z(this,e)};z.prototype.all=function(e,t){return this.throwIfDisposed(),Eh(this,e,t)};z.prototype.any=function(e,t){return this.throwIfDisposed(),Lc(this,e,t)};z.prototype.argMax=function(e){return this.throwIfDisposed(),zc(this,e)};z.prototype.argMin=function(e){return this.throwIfDisposed(),Ly(this,e)};z.prototype.asScalar=function(){return this.throwIfDisposed(),F(this.size===1,()=>"The array must have only 1 element."),j(this,[])};z.prototype.asType=function(e){return this.throwIfDisposed(),pe(this,e)};z.prototype.as1D=function(){return this.throwIfDisposed(),j(this,[this.size])};z.prototype.as2D=function(e,t){return this.throwIfDisposed(),j(this,[e,t])};z.prototype.as3D=function(e,t,n){return this.throwIfDisposed(),j(this,[e,t,n])};z.prototype.as4D=function(e,t,n,a){return this.throwIfDisposed(),j(this,[e,t,n,a])};z.prototype.as5D=function(e,t,n,a,r){return this.throwIfDisposed(),j(this,[e,t,n,a,r])};z.prototype.asin=function(){return this.throwIfDisposed(),zy(this)};z.prototype.asinh=function(){return this.throwIfDisposed(),By(this)};z.prototype.atan=function(){return this.throwIfDisposed(),Wy(this)};z.prototype.atan2=function(e){return this.throwIfDisposed(),Vy(this,e)};z.prototype.atanh=function(){return this.throwIfDisposed(),Uy(this)};z.prototype.avgPool=function(e,t,n,a){return this.throwIfDisposed(),Zn(this,e,t,n,a)};z.prototype.batchToSpaceND=function(e,t){return this.throwIfDisposed(),Wc(this,e,t)};z.prototype.batchNorm=function(e,t,n,a,r){return this.throwIfDisposed(),wr(this,e,t,n,a,r)};z.prototype.broadcastTo=function(e){return this.throwIfDisposed(),Vc(this,e)};z.prototype.cast=function(e){return this.throwIfDisposed(),pe(this,e)};z.prototype.ceil=function(){return this.throwIfDisposed(),qy(this)};z.prototype.clipByValue=function(e,t){return this.throwIfDisposed(),Yt(this,e,t)};z.prototype.concat=function(e,t){return this.throwIfDisposed(),e instanceof z&&(e=[e]),Ze([this,...e],t)};z.prototype.conv1d=function(e,t,n,a,r,s){return this.throwIfDisposed(),Fh(this,e,t,n,a,r,s)};z.prototype.conv2dTranspose=function(e,t,n,a,r){return this.throwIfDisposed(),Ah(this,e,t,n,a,r)};z.prototype.conv2d=function(e,t,n,a,r,s){return this.throwIfDisposed(),$t(this,e,t,n,a,r,s)};z.prototype.cos=function(){return this.throwIfDisposed(),Uc(this)};z.prototype.cosh=function(){return this.throwIfDisposed(),$h(this)};z.prototype.cumsum=function(e,t,n){return this.throwIfDisposed(),Dh(this,e,t,n)};z.prototype.depthToSpace=function(e,t){return this.throwIfDisposed(),Yy(this,e,t)};z.prototype.depthwiseConv2D=function(e,t,n,a,r,s){return Pt("depthwiseConv2D is deprecated, use depthwiseConv2d instead"),this.throwIfDisposed(),kr(this,e,t,n,a,r,s)};z.prototype.depthwiseConv2d=function(e,t,n,a,r,s){return this.throwIfDisposed(),kr(this,e,t,n,a,r,s)};z.prototype.dilation2d=function(e,t,n,a,r){return this.throwIfDisposed(),Jy(this,e,t,n,a,r)};z.prototype.divNoNan=function(e){return this.throwIfDisposed(),Zy(this,e)};z.prototype.divStrict=function(e){return this.throwIfDisposed(),Hk(this,e)};z.prototype.div=function(e){return this.throwIfDisposed(),ve(this,e)};z.prototype.dot=function(e){return this.throwIfDisposed(),vk(this,e)};z.prototype.elu=function(){return this.throwIfDisposed(),Xl(this)};z.prototype.equalStrict=function(e){return this.throwIfDisposed(),Lk(this,e)};z.prototype.equal=function(e){return this.throwIfDisposed(),Ir(this,e)};z.prototype.erf=function(){return this.throwIfDisposed(),Qy(this)};z.prototype.exp=function(){return this.throwIfDisposed(),mn(this)};z.prototype.expandDims=function(e){return this.throwIfDisposed(),Qn(this,e)};z.prototype.expm1=function(){return this.throwIfDisposed(),eb(this)};z.prototype.fft=function(){return this.throwIfDisposed(),Jc(this)};z.prototype.flatten=function(){return this.throwIfDisposed(),j(this,[this.size])};z.prototype.floor=function(){return this.throwIfDisposed(),Yl(this)};z.prototype.floorDiv=function(e){return this.throwIfDisposed(),Ch(this,e)};z.prototype.gather=function(e,t){return this.throwIfDisposed(),Mi(this,e,t)};z.prototype.greaterEqualStrict=function(e){return this.throwIfDisposed(),zk(this,e)};z.prototype.greaterEqual=function(e){return this.throwIfDisposed(),Nr(this,e)};z.prototype.greaterStrict=function(e){return this.throwIfDisposed(),Bk(this,e)};z.prototype.greater=function(e){return this.throwIfDisposed(),ea(this,e)};z.prototype.ifft=function(){return this.throwIfDisposed(),tu(this)};z.prototype.irfft=function(){return this.throwIfDisposed(),Xh(this)};z.prototype.isFinite=function(){return this.throwIfDisposed(),wk(this)};z.prototype.isInf=function(){return this.throwIfDisposed(),kk(this)};z.prototype.isNaN=function(){return this.throwIfDisposed(),Ik(this)};z.prototype.leakyRelu=function(e){return this.throwIfDisposed(),Gc(this,e)};z.prototype.lessEqualStrict=function(e){return this.throwIfDisposed(),Wk(this,e)};z.prototype.lessEqual=function(e){return this.throwIfDisposed(),rs(this,e)};z.prototype.lessStrict=function(e){return this.throwIfDisposed(),Vk(this,e)};z.prototype.less=function(e){return this.throwIfDisposed(),Hc(this,e)};z.prototype.localResponseNormalization=function(e,t,n,a){return this.throwIfDisposed(),nb(this,e,t,n,a)};z.prototype.logSigmoid=function(){return this.throwIfDisposed(),Sk(this)};z.prototype.logSoftmax=function(e){return this.throwIfDisposed(),Oh(this,e)};z.prototype.logSumExp=function(e,t){return this.throwIfDisposed(),sb(this,e,t)};z.prototype.log=function(){return this.throwIfDisposed(),Dn(this)};z.prototype.log1p=function(){return this.throwIfDisposed(),Rh(this)};z.prototype.logicalAnd=function(e){return this.throwIfDisposed(),ha(this,e)};z.prototype.logicalNot=function(){return this.throwIfDisposed(),jc(this)};z.prototype.logicalOr=function(e){return this.throwIfDisposed(),Lh(this,e)};z.prototype.logicalXor=function(e){return this.throwIfDisposed(),Fk(this,e)};z.prototype.matMul=function(e,t,n){return this.throwIfDisposed(),ze(this,e,t,n)};z.prototype.maxPool=function(e,t,n,a){return this.throwIfDisposed(),Dt(this,e,t,n,a)};z.prototype.max=function(e,t){return this.throwIfDisposed(),ta(this,e,t)};z.prototype.maximumStrict=function(e){return this.throwIfDisposed(),jk(this,e)};z.prototype.maximum=function(e){return this.throwIfDisposed(),Sa(this,e)};z.prototype.mean=function(e,t){return this.throwIfDisposed(),Ct(this,e,t)};z.prototype.min=function(e,t){return this.throwIfDisposed(),Zl(this,e,t)};z.prototype.minimumStrict=function(e){return this.throwIfDisposed(),qk(this,e)};z.prototype.minimum=function(e){return this.throwIfDisposed(),Pi(this,e)};z.prototype.mirrorPad=function(e,t){return this.throwIfDisposed(),ob(this,e,t)};z.prototype.modStrict=function(e){return this.throwIfDisposed(),Kk(this,e)};z.prototype.mod=function(e){return this.throwIfDisposed(),zh(this,e)};z.prototype.mulStrict=function(e){return this.throwIfDisposed(),Xk(this,e)};z.prototype.mul=function(e){return this.throwIfDisposed(),L(this,e)};z.prototype.neg=function(){return this.throwIfDisposed(),St(this)};z.prototype.norm=function(e,t,n){return this.throwIfDisposed(),Zh(this,e,t,n)};z.prototype.notEqualStrict=function(e){return this.throwIfDisposed(),Uk(this,e)};z.prototype.notEqual=function(e){return this.throwIfDisposed(),ss(this,e)};z.prototype.oneHot=function(e,t=1,n=0){return this.throwIfDisposed(),Hl(this,e,t,n)};z.prototype.onesLike=function(){return this.throwIfDisposed(),Mn(this)};z.prototype.pad=function(e,t){return this.throwIfDisposed(),na(this,e,t)};z.prototype.pool=function(e,t,n,a,r){return this.throwIfDisposed(),Dk(this,e,t,n,a,r)};z.prototype.powStrict=function(e){return this.throwIfDisposed(),Yk(this,e)};z.prototype.pow=function(e){return this.throwIfDisposed(),Ja(this,e)};z.prototype.prelu=function(e){return this.throwIfDisposed(),Kc(this,e)};z.prototype.prod=function(e,t){return this.throwIfDisposed(),Wh(this,e,t)};z.prototype.reciprocal=function(){return this.throwIfDisposed(),cb(this)};z.prototype.relu=function(){return this.throwIfDisposed(),Xe(this)};z.prototype.relu6=function(){return this.throwIfDisposed(),Uh(this)};z.prototype.reshapeAs=function(e){return this.throwIfDisposed(),j(this,e.shape)};z.prototype.reshape=function(e){return this.throwIfDisposed(),j(this,e)};z.prototype.resizeBilinear=function(e,t,n){return this.throwIfDisposed(),d1(this,e,t,n)};z.prototype.resizeNearestNeighbor=function(e,t,n){return this.throwIfDisposed(),h1(this,e,t,n)};z.prototype.reverse=function(e){return this.throwIfDisposed(),Rn(this,e)};z.prototype.rfft=function(){return this.throwIfDisposed(),Zc(this)};z.prototype.round=function(){return this.throwIfDisposed(),pb(this)};z.prototype.rsqrt=function(){return this.throwIfDisposed(),Gh(this)};z.prototype.selu=function(){return this.throwIfDisposed(),Hh(this)};z.prototype.separableConv2d=function(e,t,n,a,r,s){return this.throwIfDisposed(),Oi(this,e,t,n,a,r,s)};z.prototype.sigmoid=function(){return this.throwIfDisposed(),da(this)};z.prototype.sign=function(){return this.throwIfDisposed(),db(this)};z.prototype.sin=function(){return this.throwIfDisposed(),jh(this)};z.prototype.sinh=function(){return this.throwIfDisposed(),qh(this)};z.prototype.slice=function(e,t){return this.throwIfDisposed(),We(this,e,t)};z.prototype.softmax=function(e){return this.throwIfDisposed(),Ca(this,e)};z.prototype.softplus=function(){return this.throwIfDisposed(),Jl(this)};z.prototype.spaceToBatchND=function(e,t){return this.throwIfDisposed(),qc(this,e,t)};z.prototype.split=function(e,t){return this.throwIfDisposed(),Pn(this,e,t)};z.prototype.sqrt=function(){return this.throwIfDisposed(),rn(this)};z.prototype.square=function(){return this.throwIfDisposed(),lt(this)};z.prototype.squaredDifference=function(e){return this.throwIfDisposed(),Qc(this,e)};z.prototype.squaredDifferenceStrict=function(e){return this.throwIfDisposed(),Jk(this,e)};z.prototype.squeeze=function(e){return this.throwIfDisposed(),is(this,e)};z.prototype.stack=function(e,t){this.throwIfDisposed();let n=e instanceof z?[this,e]:[this,...e];return Mt(n,t)};z.prototype.step=function(e){return this.throwIfDisposed(),nu(this,e)};z.prototype.stridedSlice=function(e,t,n,a,r,s,i,o){return this.throwIfDisposed(),mb(this,e,t,n,a,r,s,i,o)};z.prototype.subStrict=function(e){return this.throwIfDisposed(),Zk(this,e)};z.prototype.sub=function(e){return this.throwIfDisposed(),fe(this,e)};z.prototype.sum=function(e,t){return this.throwIfDisposed(),Ce(this,e,t)};z.prototype.tan=function(){return this.throwIfDisposed(),fb(this)};z.prototype.tanh=function(){return this.throwIfDisposed(),Kl(this)};z.prototype.tile=function(e){return this.throwIfDisposed(),Ka(this,e)};z.prototype.toBool=function(){return this.throwIfDisposed(),pe(this,"bool")};z.prototype.toFloat=function(){return this.throwIfDisposed(),pe(this,"float32")};z.prototype.toInt=function(){return this.throwIfDisposed(),pe(this,"int32")};z.prototype.topk=function(e,t){return this.throwIfDisposed(),gb(this,e,t)};z.prototype.transpose=function(e){return this.throwIfDisposed(),Ue(this,e)};z.prototype.unique=function(e){return this.throwIfDisposed(),Jh(this,e)};z.prototype.unsortedSegmentSum=function(e,t){return this.throwIfDisposed(),yb(this,e,t)};z.prototype.unstack=function(e){return this.throwIfDisposed(),pt(this,e)};z.prototype.where=function(e,t){return this.throwIfDisposed(),In(e,this,t)};z.prototype.zerosLike=function(){return this.throwIfDisposed(),He(this)};var C1={};Oe(C1,{maxNorm:()=>Az,minMaxNorm:()=>Mz,nonNeg:()=>Dz,unitNorm:()=>$z});var Nb;function Ut(){return Nb==null&&(Nb=sk().epsilon()),Nb}function Fa(){return"channelsLast"}var Cr=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,Cr.prototype)}},Aa=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,Aa.prototype)}},B=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,B.prototype)}},$e=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,$e.prototype)}},E1=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,E1.prototype)}},Rz=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,Rz.prototype)}};function Bi(e,t){if(Array.isArray(e)){let n=[];for(let a=0;an.toUpperCase())}var ma={};function Tb(e){if(e==null)return null;let t={};return t.className=e.getClassName(),t.config=e.getConfig(),t}function Sb(e){if(!(e==null||typeof e!="object"))if(Array.isArray(e))e.forEach(t=>Sb(t));else{let t=Object.keys(e);for(let n of t){let a=e[n];a!=null&&typeof a=="object"&&(!Array.isArray(a)&&a.type==="ndarray"&&typeof a.value=="number"?e[n]=a.value:Sb(a))}}}function tp(e,t={},n={},a="object",r=!1){if(typeof e=="string"){let s=e,i;if(s in n)i=n[s];else if(s in ma)i=ma[s];else if(i=t[s],i==null)throw new B(`Unknown ${a}: ${e}. This may be due to one of the following reasons: +1. The ${a} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code. +2. The custom ${a} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);return i}else{let s=e;if(s.className==null||s.config==null)throw new B(`${a}: Improper config format: ${JSON.stringify(s)}. +'className' and 'config' must set.`);let i=s.className,o,l;if(i in n?[o,l]=n[i]:i in ma?[o,l]=ma.className:i in t&&([o,l]=t[i]),o==null)throw new B(`Unknown ${a}: ${i}. This may be due to one of the following reasons: +1. The ${a} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code. +2. The custom ${a} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);if(l!=null){let c={};for(let h of Object.keys(ma))c[h]=ma[h];for(let h of Object.keys(n))c[h]=n[h];let u=s.config;u.customObjects=c;let p=Object.assign({},ma);for(let h of Object.keys(n))ma[h]=n[h];Sb(s.config);let d=l(o,s.config,n,r);return ma=Object.assign({},p),d}else{let c=Object.assign({},ma);for(let p of Object.keys(n))ma[p]=n[p];let u=new o(s.config);return ma=Object.assign({},c),u}}}function Pz(e,t){return et?1:0}function cm(e,t){return-1*Pz(e,t)}function ls(e){if(e==null)return e;let t=[];for(let n of e)t.indexOf(n)===-1&&t.push(n);return t}function Oz(e){if(e==null)throw new B(`Invalid value in obj: ${JSON.stringify(e)}`);for(let t in e)if(e.hasOwnProperty(t))return!1;return!0}function Vi(e,t,n){if(n!=null&&e.indexOf(n)<0)throw new B(`${n} is not a valid ${t}. Valid values are ${e} or null/undefined.`)}function Cb(e,t,n=0,a=Infinity){return er(n>=0),er(a>=n),Array.isArray(e)&&e.length>=n&&e.length<=a&&e.every(r=>typeof r===t)}function Jt(e,t){Array.isArray(e)?(k.assert(e.length>0,()=>`${t} is unexpectedly an empty array.`),e.forEach((n,a)=>Jt(n,`element ${a+1} of ${t}`))):k.assert(Number.isInteger(e)&&e>0,()=>`Expected ${t} to be a positive integer, but got ${F1(e)}.`)}function F1(e){return e===null?"null":Array.isArray(e)?"["+e.map(t=>F1(t)).join(",")+"]":typeof e=="string"?`"${e}"`:`${e}`}function Lz(e,t){let n=k.now(),a;return(...r)=>{let s=k.now();return s-nrn(Ce(L(e,e),t,!0)))}var np=class extends se.Serializable{getConfig(){return{}}},_b=class extends np{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 D(()=>{let t=Eb(e,this.axis),n=Yt(t,0,this.maxValue);return L(e,ve(n,Z(Ut(),t)))})}getConfig(){return{maxValue:this.maxValue,axis:this.axis}}};_b.className="MaxNorm";se.registerClass(_b);var Fb=class extends np{constructor(e){super();this.defaultAxis=0,this.axis=e.axis!=null?e.axis:this.defaultAxis}apply(e){return D(()=>ve(e,Z(Ut(),Eb(e,this.axis))))}getConfig(){return{axis:this.axis}}};Fb.className="UnitNorm";se.registerClass(Fb);var Ab=class extends np{apply(e){return Xe(e)}};Ab.className="NonNeg";se.registerClass(Ab);var $b=class extends np{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 D(()=>{let t=Eb(e,this.axis),n=Z(L(this.rate,Yt(t,this.minValue,this.maxValue)),L(1-this.rate,t));return L(e,ve(n,Z(Ut(),t)))})}getConfig(){return{minValue:this.minValue,maxValue:this.maxValue,rate:this.rate,axis:this.axis}}};$b.className="MinMaxNorm";se.registerClass($b);var $1={maxNorm:"MaxNorm",minMaxNorm:"MinMaxNorm",nonNeg:"NonNeg",unitNorm:"UnitNorm"};function Gt(e){return Tb(e)}function D1(e,t={}){return tp(e,se.SerializationMap.getMap().classNameMap,t,"constraint")}function Ht(e){if(e==null)return null;if(typeof e=="string"){let t={className:e in $1?$1[e]:e,config:{}};return D1(t)}else return e instanceof np?e:D1(e)}function Az(e){return new _b(e)}function $z(e){return new Fb(e)}function Dz(){return new Ab}function Mz(e){return new $b(e)}var M1={};Oe(M1,{constant:()=>Wz,glorotNormal:()=>Kz,glorotUniform:()=>qz,heNormal:()=>Xz,heUniform:()=>Yz,identity:()=>Hz,leCunNormal:()=>Jz,leCunUniform:()=>Zz,ones:()=>Bz,orthogonal:()=>Qz,randomNormal:()=>Uz,randomUniform:()=>Vz,truncatedNormal:()=>Gz,varianceScaling:()=>jz,zeros:()=>zz});var eB=["channelsFirst","channelsLast"],tB=["nearest","bilinear"],nB=["valid","same","causal"],aB=["max","avg"],rB=["sum","mul","concat","ave"],ru=new Map;function Rt(e){Vi(eB,"DataFormat",e)}function sB(e){Vi(tB,"InterpolationFormat",e)}function aa(e){Vi(nB,"PaddingMode",e)}function R1(e){Vi(aB,"PoolMode",e)}var ap=[],P1="/";function Ui(e,t){ap.push(e);try{let n=t();return ap.pop(),n}catch(n){throw ap.pop(),n}}function iB(){return ap.length===0?"":ap.join(P1)+P1}function L1(e){if(!O1(e))throw new Error("Not a valid tensor name: '"+e+"'");return iB()+e}function z1(e){if(!O1(e))throw new Error("Not a valid tensor name: '"+e+"'");ru.has(e)||ru.set(e,0);let t=ru.get(e);if(ru.set(e,ru.get(e)+1),t>0){let n=`${e}_${t}`;return ru.set(n,1),n}else return e}var oB=new RegExp(/^[A-Za-z0-9][-A-Za-z0-9\._\/]*$/);function O1(e){return!!e.match(oB)}function lB(e){return e===parseInt(e.toString(),10)}function us(e,t,n){t==null&&(t=0),n==null&&(n=e.length);let a=1;for(let r=t;r{if(e.shape.length!==2)throw new B(`repeat() expects a rank-2 tensor, but received a rank-${e.shape.length} tensor.`);let n=sp(e,1);return Db(n,[1,t,1])})}function cB(e){let t=[us(e.shape)];return e.reshape(t)}function pB(e){if(e.rank<=1)throw new B(`batchFlatten requires a minimum rank of 2. Got rank: ${e.rank}.`);let t=[e.shape[0],us(e.shape,1)];return e.reshape(t)}function Gi(e,t,n){return D(()=>{switch(e.rank){case 1:return Kh(e,t,n);case 2:return hb(e,[t,0],[n,e.shape[1]]);case 3:return eu(e,[t,0,0],[n,e.shape[1],e.shape[2]]);case 4:return Yc(e,[t,0,0,0],[n,e.shape[1],e.shape[2],e.shape[3]]);case 5:return We(e,[t,0,0,0,0],[n,e.shape[1],e.shape[2],e.shape[3],e.shape[4]]);case 6:return We(e,[t,0,0,0,0,0],[n,e.shape[1],e.shape[2],e.shape[3],e.shape[4],e.shape[5]]);default:throw new B(`sliceAlongFirstAxis() received an unsupported tensor rank: ${e.rank}`)}})}function Mb(e,t,n){return D(()=>{switch(e.rank){case 1:return Kh(e,t,n);case 2:return hb(e,[0,t],[e.shape[0],n]);case 3:return eu(e,[0,0,t],[e.shape[0],e.shape[1],n]);case 4:return Yc(e,[0,0,0,t],[e.shape[0],e.shape[1],e.shape[2],n]);default:throw new B(`sliceAlongLastAxis() received an unsupported tensor rank: ${e.rank}`)}})}function pm(e,t,n,a){return D(()=>{switch(e.rank){case 1:return Kh(e,t,n);case 2:switch(a){case 1:return Gi(e,t,n);case 2:return Mb(e,t,n);default:throw new B(`The axis is not within the rank of the tensor ${a}`)}case 3:switch(a){case 1:return Gi(e,t,n);case 2:return eu(e,[0,t,0],[e.shape[0],n,e.shape[2]]);case 3:return Mb(e,t,n);default:throw new B(`The axis is not within the rank of the tensor ${a}`)}case 4:switch(a){case 1:return Gi(e,t,n);case 2:return Yc(e,[0,t,0,0],[e.shape[0],n,e.shape[2],e.shape[3]]);case 3:return Yc(e,[0,0,t,0],[e.shape[0],e.shape[1],n,e.shape[3]]);case 4:return Mb(e,t,n);default:throw new B(`The axis is not within the rank of the tensor ${a}`)}default:throw new B(`sliceAlongLastAxis() received an unsupported tensor rank: ${e.rank}`)}})}function Rb(e,t=-1){let n;return t<0&&(n=e[0].rank,n!==0?t=n:t=0),t===e[0].rank&&(t=-1),Ze(e,t)}function W1(e,t){switch(e.rank){case 1:return mk([e,t]);case 2:return fk([e,t],0);case 3:return gk([e,t],0);case 4:return yk([e,t],0);default:throw new B(`concatAlongFirstAxis() received an unsupported tensor rank: ${e.rank}`)}}function Db(e,t){if(Array.isArray(t)||(t=[t]),e.rank!==t.length)throw new B(`The length of input n (${t.length}) does not match the number of dimensions in input x (${e.rank})`);return Ka(e,t)}function dm(e,t=0,n=1,a,r){return Mk(e,t,n,a,r)}function tr(e,t,n,a){if(e.rank<2||t.rank<2)throw new $e(`dot requires both inputs to be rank >= 2 but got x shape = ${e.shape} and y shape = ${t.shape}`);if(t.rank>=3){let r=e.shape.slice(-1)[0],s=t.shape.slice(-2)[0];if(r!==s)throw new $e(`If rank y >= 3, then the second last dim of y must equal the last dim of x but got x shape = ${e.shape} and y shape = ${t.shape}`)}if(e.rank===2&&t.rank===2){let r=!1,s=!1;return os.matMul({a:e,b:t,transposeA:r,transposeB:s,bias:a?Pb(e.rank,a,Fa()):null,activation:n})}else{let r=e.shape.slice(),s=r.pop();e=e.reshape([-1,s]);let i=t.shape.slice(),o=i.pop(),l=i.pop(),c=[...i,o],u=Array.from({length:t.rank},(m,f)=>f===0?t.rank-2:f<=t.rank-2?f-1:f);t=t.transpose(u).reshape([l,-1]);let p=[...r,...c],d=!1,h=!1;return os.matMul({a:e,b:t,transposeA:d,transposeB:h,bias:a?Pb(e.rank,a,Fa()):null,activation:n}).reshape(p)}}function V1(e,t,n){return D(()=>(Array.isArray(t)?t=tt(t,"int32"):t=t.toInt(),Mi(e,t,n)))}function ip(e){return L(e,e)}function Pb(e,t,n){let a=t.shape;if(t.rank!==1&&t.rank!==e)throw new B(`Unexpected bias dimensions: ${t.rank}; expected it to be 1 or ${e}`);if(e===5){if(n==="channelsFirst")return a.length===1?t.reshape([1,a[0],1,1,1]):t.reshape([1,a[3],a[0],a[1],a[2]]);if(n==="channelsLast")return a.length===1?t.reshape([1,1,1,1,a[0]]):t.reshape([1].concat(a))}else if(e===4){if(n==="channelsFirst")return a.length===1?t.reshape([1,a[0],1,1]):t.reshape([1,a[2],a[0],a[1]]);if(n==="channelsLast")return a.length===1?t.reshape([1,1,1,a[0]]):t.reshape([1].concat(a))}else if(e===3){if(n==="channelsFirst")return a.length===1?t.reshape([1,a[0],1]):t.reshape([1,a[1],a[0]]);if(n==="channelsLast")return a.length===1?t.reshape([1,1,a[0]]):t.reshape([1].concat(a))}else if(e<3)return t;throw new B(`Unsupported input rank by biasAdd: ${t.rank}`)}function nr(e,t,n){return D(()=>(n==null&&(n=Fa()),Rt(n),e.add(Pb(e.rank,t,n))))}function dB(e,t=1){if(t!==1)throw new $e(`Support for alpha values other than 1 (${t}) is not implemented yet.`);return Xl(e)}function hB(e){return D(()=>ve(e,Wt(e).add(1)))}function U1(e,t,n,a){return D(()=>n1(e,t,n,a))}function mB(e){return D(()=>{let t=Z(.5,L(.2,e));return Yt(t,0,1)})}function op(e,t,n=!1){return n?e():t()}var fB=["fanIn","fanOut","fanAvg"],gB=["normal","uniform","truncatedNormal"];function yB(e){Vi(fB,"FanMode",e)}function bB(e){Vi(gB,"Distribution",e)}var fa=class extends se.Serializable{fromConfigUsesCustomObjects(){return!1}getConfig(){return{}}},Ob=class extends fa{apply(e,t){return bt(e,t)}};Ob.className="Zeros";se.registerClass(Ob);var hm=class extends fa{apply(e,t){return Ya(e,t)}};hm.className="Ones";se.registerClass(hm);var Lb=class extends fa{constructor(e){super();if(typeof e!="object")throw new B(`Expected argument of type ConstantConfig but got ${e}`);if(e.value===void 0)throw new B(`config must have value set but got ${e}`);this.value=e.value}apply(e,t){return D(()=>L(de(this.value),Ya(e,t)))}getConfig(){return{value:this.value}}};Lb.className="Constant";se.registerClass(Lb);var zb=class extends fa{constructor(e){super();this.DEFAULT_MINVAL=-.05,this.DEFAULT_MAXVAL=.05,this.minval=e.minval||this.DEFAULT_MINVAL,this.maxval=e.maxval||this.DEFAULT_MAXVAL,this.seed=e.seed}apply(e,t){return Ql(e,this.minval,this.maxval,t)}getConfig(){return{minval:this.minval,maxval:this.maxval,seed:this.seed}}};zb.className="RandomUniform";se.registerClass(zb);var Bb=class extends fa{constructor(e){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=e.mean||this.DEFAULT_MEAN,this.stddev=e.stddev||this.DEFAULT_STDDEV,this.seed=e.seed}apply(e,t){if(t=t||"float32",t!=="float32"&&t!=="int32")throw new $e(`randomNormal does not support dType ${t}.`);return dm(e,this.mean,this.stddev,t,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};Bb.className="RandomNormal";se.registerClass(Bb);var Wb=class extends fa{constructor(e){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=e.mean||this.DEFAULT_MEAN,this.stddev=e.stddev||this.DEFAULT_STDDEV,this.seed=e.seed}apply(e,t){if(t=t||"float32",t!=="float32"&&t!=="int32")throw new $e(`truncatedNormal does not support dType ${t}.`);return Yh(e,this.mean,this.stddev,t,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};Wb.className="TruncatedNormal";se.registerClass(Wb);var Vb=class extends fa{constructor(e){super();this.gain=e.gain!=null?e.gain:1}apply(e,t){return D(()=>{if(e.length!==2||e[0]!==e[1])throw new B("Identity matrix initializer can only be used for 2D square matrices.");return L(this.gain,tb(e[0]))})}getConfig(){return{gain:this.gain}}};Vb.className="Identity";se.registerClass(Vb);function xB(e,t="channelsLast"){let n,a;if(Rt(t),e.length===2)n=e[0],a=e[1];else if([3,4,5].indexOf(e.length)!==-1){if(t==="channelsFirst"){let r=us(e,2);n=e[1]*r,a=e[0]*r}else if(t==="channelsLast"){let r=us(e,0,e.length-2);n=e[e.length-2]*r,a=e[e.length-1]*r}}else{let r=us(e);n=Math.sqrt(r),a=Math.sqrt(r)}return[n,a]}var Sn=class extends fa{constructor(e){super();if(e.scale<0)throw new B(`scale must be a positive float. Got: ${e.scale}`);this.scale=e.scale==null?1:e.scale,this.mode=e.mode==null?"fanIn":e.mode,yB(this.mode),this.distribution=e.distribution==null?"normal":e.distribution,bB(this.distribution),this.seed=e.seed}apply(e,t){let n=xB(e),a=n[0],r=n[1],s=this.scale;if(this.mode==="fanIn"?s/=Math.max(1,a):this.mode==="fanOut"?s/=Math.max(1,r):s/=Math.max(1,(a+r)/2),this.distribution==="normal"){let i=Math.sqrt(s);if(t=t||"float32",t!=="float32"&&t!=="int32")throw new $e(`${this.getClassName()} does not support dType ${t}.`);return Yh(e,0,i,t,this.seed)}else{let i=Math.sqrt(3*s);return Ql(e,-i,i,t)}}getConfig(){return{scale:this.scale,mode:this.mode,distribution:this.distribution,seed:this.seed}}};Sn.className="VarianceScaling";se.registerClass(Sn);var mm=class extends Sn{constructor(e){super({scale:1,mode:"fanAvg",distribution:"uniform",seed:e==null?null:e.seed})}getClassName(){return Sn.className}};mm.className="GlorotUniform";se.registerClass(mm);var fm=class extends Sn{constructor(e){super({scale:1,mode:"fanAvg",distribution:"normal",seed:e==null?null:e.seed})}getClassName(){return Sn.className}};fm.className="GlorotNormal";se.registerClass(fm);var gm=class extends Sn{constructor(e){super({scale:2,mode:"fanIn",distribution:"normal",seed:e==null?null:e.seed})}getClassName(){return Sn.className}};gm.className="HeNormal";se.registerClass(gm);var ym=class extends Sn{constructor(e){super({scale:2,mode:"fanIn",distribution:"uniform",seed:e==null?null:e.seed})}getClassName(){return Sn.className}};ym.className="HeUniform";se.registerClass(ym);var bm=class extends Sn{constructor(e){super({scale:1,mode:"fanIn",distribution:"normal",seed:e==null?null:e.seed})}getClassName(){return Sn.className}};bm.className="LeCunNormal";se.registerClass(bm);var xm=class extends Sn{constructor(e){super({scale:1,mode:"fanIn",distribution:"uniform",seed:e==null?null:e.seed})}getClassName(){return Sn.className}};xm.className="LeCunNormal";se.registerClass(xm);var Ub=class extends fa{constructor(e){super();if(this.DEFAULT_GAIN=1,this.gain=e.gain==null?this.DEFAULT_GAIN:e.gain,this.seed=e.seed,this.seed!=null)throw new $e("Random seed is not implemented for Orthogonal Initializer yet.")}apply(e,t){return D(()=>{if(e.length<2)throw new $e("Shape must be at least 2D.");e[0]*e[1]>2e3&&console.warn(`Orthogonal initializer is being called on a matrix with more than 2000 (${e[0]*e[1]}) elements: Slowness may result.`);let n=e[0]>e[1]?[e[1],e[0]]:e,a=dm(n,0,1,"float32"),r=f1.gramSchmidt(a);return e[0]>e[1]&&(r=r.transpose()),L(this.gain,r)})}getConfig(){return{gain:this.gain,seed:this.seed}}};Ub.className="Orthogonal";se.registerClass(Ub);var G1={constant:"Constant",glorotNormal:"GlorotNormal",glorotUniform:"GlorotUniform",heNormal:"HeNormal",heUniform:"HeUniform",identity:"Identity",leCunNormal:"LeCunNormal",leCunUniform:"LeCunUniform",ones:"Ones",orthogonal:"Orthogonal",randomNormal:"RandomNormal",randomUniform:"RandomUniform",truncatedNormal:"TruncatedNormal",varianceScaling:"VarianceScaling",zeros:"Zeros"};function H1(e,t={}){return tp(e,se.SerializationMap.getMap().classNameMap,t,"initializer")}function Et(e){return Tb(e)}function wt(e){if(typeof e=="string"){let t=e in G1?G1[e]:e;if(t==="GlorotNormal")return new fm;if(t==="GlorotUniform")return new mm;if(t==="HeNormal")return new gm;if(t==="HeUniform")return new ym;if(t==="LeCunNormal")return new bm;if(t==="LeCunUniform")return new xm;{let n={};return n.className=t,n.config={},H1(n)}}else return e instanceof fa?e:H1(e)}function zz(){return new Ob}function Bz(){return new hm}function Wz(e){return new Lb(e)}function Vz(e){return new zb(e)}function Uz(e){return new Bb(e)}function Gz(e){return new Wb(e)}function Hz(e){return new Vb(e)}function jz(e){return new Sn(e)}function qz(e){return new mm(e)}function Kz(e){return new fm(e)}function Xz(e){return new gm(e)}function Yz(e){return new ym(e)}function Jz(e){return new bm(e)}function Zz(e){return new xm(e)}function Qz(e){return new Ub(e)}var j1={};Oe(j1,{Layer:()=>qe,RNN:()=>ar,RNNCell:()=>lp,activation:()=>RB,add:()=>GB,alphaDropout:()=>CW,average:()=>HB,averagePooling1d:()=>Gb,averagePooling2d:()=>Hb,averagePooling3d:()=>jb,avgPool1d:()=>eW,avgPool2d:()=>nW,avgPool3d:()=>rW,avgPooling1d:()=>tW,avgPooling2d:()=>aW,avgPooling3d:()=>sW,batchNormalization:()=>JB,bidirectional:()=>xW,concatenate:()=>jB,conv1d:()=>CB,conv2d:()=>EB,conv2dTranspose:()=>_B,conv3d:()=>FB,convLstm2d:()=>fW,convLstm2dCell:()=>gW,cropping2D:()=>$B,dense:()=>PB,depthwiseConv2d:()=>MB,dot:()=>YB,dropout:()=>OB,elu:()=>wB,embedding:()=>UB,flatten:()=>zB,gaussianDropout:()=>SW,gaussianNoise:()=>TW,globalAveragePooling1d:()=>iW,globalAveragePooling2d:()=>oW,globalMaxPool1d:()=>wW,globalMaxPool2d:()=>kW,globalMaxPooling1d:()=>K1,globalMaxPooling2d:()=>X1,gru:()=>uW,gruCell:()=>cW,input:()=>q1,inputLayer:()=>vB,layerNormalization:()=>ZB,leakyReLU:()=>IB,lstm:()=>pW,lstmCell:()=>dW,masking:()=>EW,maxPool1d:()=>IW,maxPool2d:()=>NW,maxPooling1d:()=>Y1,maxPooling2d:()=>J1,maxPooling3d:()=>lW,maximum:()=>qB,minimum:()=>KB,multiply:()=>XB,permute:()=>VB,prelu:()=>NB,reLU:()=>kB,repeatVector:()=>BB,reshape:()=>WB,rnn:()=>yW,separableConv2d:()=>AB,simpleRNN:()=>hW,simpleRNNCell:()=>mW,softmax:()=>TB,spatialDropout1d:()=>LB,stackedRNNCells:()=>bW,thresholdedReLU:()=>SB,timeDistributed:()=>vW,upSampling2d:()=>DB,zeroPadding2d:()=>QB});var _W=0;function Z1(){return _W++}var vm={};function wm(e=""){return e in vm||(vm[e]=0),vm[e]+=1,e+vm[e].toString()}function qb(e){return Array.isArray(e)&&Array.isArray(e[0])}function km(e){return e.length===0?[]:Array.isArray(e[0])?e:[e]}function Re(e){let t;if(Array.isArray(e)){if(e.length!==1)throw new B(`Expected Tensor length to be 1; got ${e.length}`);t=e[0]}else t=e;return t}function dt(e){if(Array.isArray(e)&&Array.isArray(e[0])){if(e.length===1)return e=e,e[0];throw new B(`Expected exactly 1 Shape; got ${e.length}`)}else return e}function Im(e){let t=0;for(let n of e)n.shape.length===0?t+=1:t+=n.shape.reduce((a,r)=>a*r);return t}var Q1="Variable",eI=class{constructor(e,t="float32",n=Q1,a=!0,r=null){this.dtype=t==null?"float32":t,this.shape=e.shape,this.id=Z1(),n=n==null?Q1:n,this.originalName=L1(n),this.name=z1(this.originalName),this.trainable_=a,this.constraint=r,this.val=Pk(e,this.trainable_,this.name,this.dtype)}read(){return this.assertNotDisposed(),this.val}write(e){return this.assertNotDisposed(),FW(this.val,e),this.val.id!==e.id&&(this.val.assign(e),this.constraint!=null&&this.val.assign(this.constraint.apply(this.val))),this}dispose(){this.assertNotDisposed(),this.val.dispose()}assertNotDisposed(){if(this.val.isDisposed)throw new Error(`LayersVariable ${this.name} is already disposed.`)}get trainable(){return this.trainable_}set trainable(e){this.trainable_=e,this.val.trainable=e}};function FW(e,t){if(e.shape.toString()!==t.shape.toString())throw new Error("Shape mismatch: "+JSON.stringify(e.shape)+" vs. "+JSON.stringify(t.shape))}function Kb(e){return e.map(t=>t.read())}function Xb(e){e.forEach(t=>{t[0].write(t[1])})}var Zt=class{constructor(e){this.dtype=e.dtype,this.shape=e.shape,e.shape!=null?this.ndim=e.shape.length:this.ndim=e.ndim,this.maxNDim=e.maxNDim,this.minNDim=e.minNDim,this.axes=e.axes||{}}},Da=class{constructor(e,t,n,a,r,s,i){this.dtype=e,this.shape=t,this.sourceLayer=n,this.inputs=a,this.callArgs=r,this.outputTensorIndex=i,this.id=Z1(),s!=null&&(this.originalName=L1(s),this.name=z1(this.originalName)),this.rank=t.length}},AW=0,Nm=class{constructor(e,t){this.callArgs=t,this.id=AW++,this.outboundLayer=e.outboundLayer,this.inboundLayers=e.inboundLayers,this.nodeIndices=e.nodeIndices,this.tensorIndices=e.tensorIndices,this.inputTensors=e.inputTensors,this.outputTensors=e.outputTensors,this.inputMasks=e.inputMasks,this.outputMasks=e.outputMasks,this.inputShapes=e.inputShapes,this.outputShapes=e.outputShapes;for(let n of e.inboundLayers)n!=null&&n.outboundNodes.push(this);e.outboundLayer.inboundNodes.push(this)}getConfig(){let e=[];for(let t of this.inboundLayers)t!=null?e.push(t.name):e.push(null);return{outboundLayer:this.outboundLayer?this.outboundLayer.name:null,inboundLayers:e,nodeIndices:this.nodeIndices,tensorIndices:this.tensorIndices}}},$W=0,qe=class extends se.Serializable{constructor(e={}){super();this._callHook=null,this._addedWeightNames=[],this._stateful=!1,this.id=$W++,this.activityRegularizer=null,this.inputSpec=null,this.supportsMasking=!1,this._trainableWeights=[],this._nonTrainableWeights=[],this._losses=[],this._updates=[],this._built=!1,this.inboundNodes=[],this.outboundNodes=[];let t=e.name;if(!t){let n=this.getClassName();t=Er(n)+"_"+wm(n)}if(this.name=t,this.trainable_=e.trainable==null?!0:e.trainable,e.inputShape!=null||e.batchInputShape!=null){let n;if(e.batchInputShape!=null)n=e.batchInputShape;else if(e.inputShape!=null){let r=null;e.batchSize!=null&&(r=e.batchSize),n=[r].concat(e.inputShape)}this.batchInputShape=n;let a=e.dtype;a==null&&(a=e.inputDType),a==null&&(a="float32"),this.dtype=a}e.weights!=null?this.initialWeights=e.weights:this.initialWeights=null,this._refCount=null,this.fastWeightInitDuringBuild=!1}static nodeKey(e,t){return e.name+"_ib-"+t.toString()}getNodeAtIndex(e,t){if(this.inboundNodes.length===0)throw new Aa(`The layer has never been called and thus has no defined ${t}.`);if(this.inboundNodes.length<=e)throw new B(`Asked to get ${t} at node ${e}, but the layer has only ${this.inboundNodes.length} inbound nodes.`);return this.inboundNodes[e]}getInputAt(e){return Tn(this.getNodeAtIndex(e,"input").inputTensors)}getOutputAt(e){return Tn(this.getNodeAtIndex(e,"output").outputTensors)}get input(){if(this.inboundNodes.length>1)throw new Cr(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer input" is ill-defined. Use \`getInputAt(nodeIndex)\` instead.`);if(this.inboundNodes.length===0)throw new Cr(`Layer ${this.name} is not connected, no input to return.`);return Tn(this.getNodeAtIndex(0,"input").inputTensors)}get output(){if(this.inboundNodes.length===0)throw new Cr(`Layer ${this.name} has no inbound nodes.`);if(this.inboundNodes.length>1)throw new Cr(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer output" is ill-defined. Use \`getOutputAt(nodeIndex)\` instead.`);return Tn(this.getNodeAtIndex(0,"output").outputTensors)}get losses(){return this._losses}calculateLosses(){return this.losses.map(e=>e())}get updates(){return this._updates}get built(){return this._built}set built(e){this._built=e}get trainable(){return this.trainable_}set trainable(e){this._trainableWeights.forEach(t=>t.trainable=e),this.trainable_=e}get trainableWeights(){return this.trainable_?this._trainableWeights.filter(e=>e.trainable):[]}set trainableWeights(e){this._trainableWeights=e}get nonTrainableWeights(){return this.trainable?this._trainableWeights.filter(e=>!e.trainable).concat(this._nonTrainableWeights):this._trainableWeights.concat(this._nonTrainableWeights)}set nonTrainableWeights(e){this._nonTrainableWeights=e}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}get stateful(){return this._stateful}resetStates(){if(!this.stateful)throw new Error("Cannot call the resetStates() method of a non-stateful Layer object.")}assertInputCompatibility(e){if(e=xt(e),this.inputSpec==null||this.inputSpec.length===0)return;let t=xt(this.inputSpec);if(e.length!==t.length)throw new B(`Layer ${this.name} expects ${t.length} inputs, but it received ${e.length} input tensors. Input received: ${e}`);for(let n=0;nr.maxNDim)throw new B(`Input ${n} is incompatible with layer ${this.name}: expected max_ndim=${r.maxNDim}, found ndim=${s}`);if(r.minNDim!=null&&s=0?i[l]:i[i.length+l];if(c!=null&&[c,null].indexOf(u)===-1)throw new B(`Input ${n} is incompatible with layer ${this.name}: expected axis ${l} of input shape to have value ${c} but got shape ${i}.`)}}if(r.shape!=null)for(let i=0;i{if(!this.built){this.assertInputCompatibility(e);let s=[];for(let i of xt(e))s.push(i.shape);this.build(Tn(s)),this.built=!0,this.initialWeights&&this.setWeights(this.initialWeights),this._refCount===null&&r&&(this._refCount=1)}if(this.assertInputCompatibility(e),r){let s=this.call(e,t),i=xt(s),o=[];for(let l of i)n.indexOf(l)!==-1&&(l=l.clone()),o.push(l);if(s=Tn(o),this.activityRegularizer!=null)throw new $e("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return s}else{let s=DW(e),i=this.computeOutputShape(s),o,l=MW(e);if(this.warnOnIncompatibleInputShape(Array.isArray(e)?s[0]:s),i!=null&&i.length>0&&Array.isArray(i[0])?o=i.map((c,u)=>new Da(l,c,this,xt(e),t,this.name,u)):o=new Da(l,i,this,xt(e),t,this.name),this.addInboundNode(e,o,null,null,s,i,t),this._refCount++,this.activityRegularizer!=null)throw new $e("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return o}})}warnOnIncompatibleInputShape(e){if(this.batchInputShape!=null)if(e.length!==this.batchInputShape.length)console.warn(`The rank of the input tensor provided (shape: ${JSON.stringify(e)}) does not match that of the batchInputShape (${JSON.stringify(this.batchInputShape)}) of the layer ${this.name}`);else{let t=!1;this.batchInputShape.forEach((n,a)=>{n!=null&&e[a]!=null&&e[a]!==n&&(t=!0)}),t&&console.warn(`The shape of the input tensor (${JSON.stringify(e)}) does not match the expectation of layer ${this.name}: ${JSON.stringify(this.batchInputShape)}`)}}get outputShape(){if(this.inboundNodes==null||this.inboundNodes.length===0)throw new Cr(`The layer ${this.name} has never been called and thus has no defined output shape.`);let e=[];for(let t of this.inboundNodes){let n=JSON.stringify(t.outputShapes);e.indexOf(n)===-1&&e.push(n)}if(e.length===1){let t=this.inboundNodes[0].outputShapes;return Array.isArray(t)&&Array.isArray(t[0])&&t.length===1?t[0]:t}else throw new Cr(`The layer ${this.name} has multiple inbound nodes with different output shapes. Hence the notion of "output shape" is ill-defined for the layer.`)}countParams(){if(!this.built)throw new Aa(`You tried to call countParams() on ${this.name}, but the layer is not built yet. Build it first by calling build(batchInputShape).`);return Im(this.weights)}build(e){this.built=!0}getWeights(e=!1){return Kb(e?this.trainableWeights:this.weights)}setWeights(e){D(()=>{let t=this.weights;if(t.length!==e.length)throw new B(`You called setWeights(weights) on layer "${this.name}" with a weight list of length ${e.length}, but the layer was expecting ${t.length} weights. Provided weights: ${e}...`);if(t.length===0)return;let n=[],a=Kb(t);for(let r=0;rr.apply(l.read())),s==null&&(s=!0),s?this._trainableWeights.push(l):this._nonTrainableWeights.push(l),l}setFastWeightInitDuringBuild(e){this.fastWeightInitDuringBuild=e}addLoss(e){e==null||Array.isArray(e)&&e.length===0||(e=xt(e),this._losses!==void 0&&this._losses!==null&&this.losses.push(...e))}computeOutputShape(e){return e}computeMask(e,t){if(!this.supportsMasking){if(t!=null)if(Array.isArray(t))t.forEach(n=>{if(n!=null)throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`)});else throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`);return null}return t}addInboundNode(e,t,n,a,r,s,i=null){let o=xt(e);t=xt(t),n=xt(n),a=xt(a),r=km(r),s=km(s);let l=[],c=[],u=[];for(let p of o)l.push(p.sourceLayer),c.push(p.nodeIndex),u.push(p.tensorIndex);new Nm({outboundLayer:this,inboundLayers:l,nodeIndices:c,tensorIndices:u,inputTensors:o,outputTensors:t,inputMasks:n,outputMasks:a,inputShapes:r,outputShapes:s},i);for(let p=0;pe.dispose()),this.weights.length}assertNotDisposed(){if(this._refCount===0)throw new Error(`Layer '${this.name}' is already disposed.`)}dispose(){if(!this.built)throw new Error(`Cannot dispose Layer ${this.name} because it has not been built yet.`);if(this._refCount===null)throw new Error(`Cannot dispose Layer ${this.name} because it has not been used yet.`);this.assertNotDisposed();let e=0;return--this._refCount==0&&(e=this.disposeWeights()),{refCountAfterDispose:this._refCount,numDisposedVariables:e}}};function DW(e){e=xt(e);let t=[];for(let n of e)t.push(n.shape);return Tn(t)}function MW(e){return"float32"}function tI(e,t,n){if((t==null||n!=null&&n>0)&&(t=e.sourceLayer,n=e.nodeIndex),t.inboundNodes.length===0)return[e];{let a=t.inboundNodes[n];if(a.inboundLayers.length===0)return a.inputTensors;{let r=[];for(let s=0;s0){let r=await Promise.all(t);for(let s=0;sZ(this.totals[a],L(r,n)));this.totals[a]=i,s!=null&&s.dispose()}}}async onEpochEnd(e,t){if(t!=null)for(let n of this.params.metrics)this.totals[n]!=null&&(typeof this.totals[n]=="number"?t[n]=this.totals[n]/this.seen:D(()=>{let a=L(ve(1,this.seen),this.totals[n]);t[n]=a,this.totals[n].dispose(),Xt(t[n])}))}},iI=class extends ou{async onTrainBegin(e){this.epoch=[],this.history={}}async onEpochEnd(e,t){t==null&&(t={}),this.epoch.push(e);for(let n in t)this.history[n]==null&&(this.history[n]=[]),this.history[n].push(t[n])}async syncData(){let e=[],t=[],n=[];for(let r in this.history){let s=this.history[r];for(let i=0;inew oI(n,t))}var ga=class{constructor(){}static registerCallbackConstructor(e,t){k.assert(e>=0&&Number.isInteger(e),()=>`Verbosity level is expected to be an integer >= 0, but got ${e}`),ga.checkForDuplicate(t),ga.constructors[e]==null&&(ga.constructors[e]=[]),ga.constructors[e].push(t)}static checkForDuplicate(e){for(let t in ga.constructors)ga.constructors[+t].forEach(n=>{if(n===e)throw new B("Duplicate callback constructor.")})}static clear(){ga.constructors={}}static createCallbacks(e){let t=[];for(let n in ga.constructors){let a=+n;e>=a&&t.push(...ga.constructors[a])}return t.map(n=>new n)}};ga.constructors={};function uI(e,t,n,a,r,s,i,o,l){let c=new iI,u=[new PW,...ga.createCallbacks(t)];e!=null&&u.push(...e),u.push(c);let p=new sI(u);return p.setParams({epochs:n,initialEpoch:a,samples:r,steps:s,batchSize:i,verbose:t,doValidation:o,metrics:l}),{callbackList:p,history:c}}function Ma(e,t={},n=!1){return tp(e,se.SerializationMap.getMap().classNameMap,t,"layer",n)}function Tm(e,t){return D(()=>{e.dtype!=="float32"&&(e=e.asType("float32"));let n=Ce(ip(e),t,!0),a=Nn(n.shape,Ut()),r=rn(Sa(n,a));return ve(e,r)})}function Hi(e,t){return D(()=>Ct(ip(fe(t,e)),-1))}function Sm(e,t){return D(()=>Ct(Wt(fe(t,e)),-1))}function lu(e,t){return D(()=>{let n=fe(e,t),a=Yt(Wt(e),Ut(),Number.MAX_VALUE),r=Wt(ve(n,a));return L(100,Ct(r,-1))})}function OW(e,t){return D(()=>{let n=Yt(t,Ut(),Number.MAX_VALUE),a=Dn(Z(1,n)),r=Yt(e,Ut(),Number.MAX_VALUE),s=Dn(Z(1,r));return Ct(ip(fe(a,s)),-1)})}function LW(e,t){return D(()=>{let n=Sa(0,fe(1,L(e,t)));return Ct(ip(n),-1)})}function zW(e,t){return D(()=>{let n=Sa(0,fe(1,L(e,t)));return Ct(n,-1)})}function BW(e,t){return D(()=>{let n=Ce(L(e,t),-1),a=ta(L(fe(1,e),t),-1);return Sa(0,Z(1,fe(a,n)))})}function WW(e,t){return D(()=>{let n=Math.log(2),a=fe(t,e),r=fe(Z(a,Jl(L(-2,a))),n);return Ct(r,-1)})}function up(e,t,n=!1){return D(()=>{if(n)t=Ca(t);else{let a=Ce(t,t.shape.length-1,!0);t=ve(t,a)}return t=Yt(t,Ut(),1-Ut()),St(Ce(L(e.toFloat(),Dn(t)),t.shape.length-1))})}function Cm(e,t,n=!1){return D(()=>{let a=Yl(cB(e)).toInt();t=Yt(t,Ut(),1-Ut());let r=t.shape,s=Hl(a,r[r.length-1]).reshape(r);return up(s,t,n)})}function VW(e,t){if(!k.arraysEqual(e.shape,t.shape))throw new B(`logits and labels must have the same shape, but got shapes ${JSON.stringify(e.shape)} and ${JSON.stringify(t.shape)}`);return D(()=>{let n=t.relu(),a=t.abs().neg();return n.sub(t.mul(e)).add(a.exp().log1p())})}function Em(e,t){return D(()=>{let n;return n=Yt(t,Ut(),1-Ut()),n=Dn(ve(n,fe(1,n))),Ct(VW(e,n),-1)})}function UW(e,t){return D(()=>{let n=Yt(e,Ut(),1),a=Yt(t,Ut(),1);return Ce(L(e,Dn(ve(n,a))),-1)})}function GW(e,t){return D(()=>{let n=Dn(Z(Ut(),t));return Ct(fe(t,L(e,n)),-1)})}function Yb(e,t){return D(()=>{let n=Tm(e,-1),a=Tm(t,-1),r=L(n,a);return St(Ce(r,-1))})}var _m={meanSquaredError:Hi,meanAbsoluteError:Sm,meanAbsolutePercentageError:lu,meanSquaredLogarithmicError:OW,squaredHinge:LW,hinge:zW,categoricalHinge:BW,logcosh:WW,categoricalCrossentropy:up,sparseCategoricalCrossentropy:Cm,binaryCrossentropy:Em,kullbackLeiblerDivergence:UW,poisson:GW,cosineProximity:Yb};function Jb(e){if(typeof e=="string"){if(e in _m)return _m[e];let t=`Unknown loss ${e}`;throw e.toLowerCase().includes("softmaxcrossentropy")&&(t=`Unknown loss ${e}. Use "categoricalCrossentropy" as the string name for tf.losses.softmaxCrossEntropy`),new B(t)}else return e}function Zb(e,t){return D(()=>{let n=L(.5,Mn(t)),a=rp(ea(t,n),e.dtype);return Ct(Ir(e,a),-1)})}function Qb(e,t){return D(()=>rp(Ir(zc(e,-1),zc(t,-1)),"float32"))}function cI(e,t){return D(()=>ha(e.equal(1),t.equal(1)).sum().cast("float32"))}function HW(e,t){return D(()=>ha(e.equal(1),t.equal(0)).sum().cast("float32"))}function jW(e,t){return D(()=>ha(e.equal(0),t.equal(1)).sum().cast("float32"))}function pI(e,t){return D(()=>{let n=cI(e,t),a=jW(e,t),r=n.add(a);return In(ea(r,0),n.div(r),0).cast("float32")})}function qW(e,t){return D(()=>{let n=cI(e,t),a=HW(e,t),r=n.add(a);return In(ea(r,0),n.div(r),0).cast("float32")})}function dI(e,t){return Em(e,t)}function hI(e,t){return e.rank===t.rank&&(e=e.squeeze([e.rank-1])),t=t.argMax(-1),t.dtype!==e.dtype&&(t=t.asType(e.dtype)),Ir(e,t).asType("float32")}var KW=Hi,XW=Hi,YW=Sm,JW=Sm,ZW=lu,QW=lu,ex=up,e4=Yb,mI=Cm,Fm={binaryAccuracy:Zb,categoricalAccuracy:Qb,precision:pI,categoricalCrossentropy:ex,sparseCategoricalCrossentropy:mI,mse:KW,MSE:XW,mae:YW,MAE:JW,mape:ZW,MAPE:QW,cosine:e4};function t4(e){if(typeof e=="string"&&e in Fm)return Fm[e];if(typeof e!="string"&&e!=null)return e;throw new B(`Unknown metric ${e}`)}function Am(e){if(er(e!==null,`Unknown LossOrMetricFn ${e}`),typeof e=="string")return e;{let t;for(let n of Object.keys(_m))if(_m[n]===e){t=n;break}if(t!==void 0)return t;for(let n of Object.keys(Fm))if(Fm[n]===e){t=n;break}return t!==void 0?t:e.name}}function n4(e){let t={Adagrad:()=>zi.adagrad(.01),Adadelta:()=>zi.adadelta(1,.95,Ut()),Adam:()=>zi.adam(.001,.9,.999,Ut()),Adamax:()=>zi.adamax(.002,.9,.999,Ut(),0),RMSProp:()=>zi.rmsprop(.001,.9,0,Ut()),SGD:()=>zi.sgd(.01)};if(t.adagrad=t.Adagrad,t.adadelta=t.Adadelta,t.adam=t.Adam,t.adamax=t.Adamax,t.rmsprop=t.RMSProp,t.sgd=t.SGD,e in t)return t[e]();throw new B(`Unknown Optimizer ${e}`)}var fI=1*1024*1024;function gI(e,t,n=!1){if(e==null||typeof e!="object"||Object.getPrototypeOf(e)!==Object.prototype||!tx(e))throw new Error("User-defined metadata is expected to be a JSON object, but is not.");if(n){let a=JSON.stringify(e);a.length>fI&&console.warn(`User-defined metadata of model "${t}" is too large in size (length=${a.length} when serialized). It is not recommended to store such large objects in user-defined metadata. Please make sure its serialized length is <= ${fI}.`)}}function tx(e){if(e===null)return!0;if(typeof e=="object")if(Object.getPrototypeOf(e)===Object.prototype){let t=Object.keys(e);for(let n of t)if(typeof n!="string"||!tx(e[n]))return!1;return!0}else if(Array.isArray(e)){for(let t of e)if(!tx(t))return!1;return!0}else return!1;else{let t=typeof e;return t==="string"||t==="number"||t==="boolean"}}function o4(e,t,n,a=console.log){let r=r4(e),s=["Layer (type)","Output shape","Param #"];r?(t=t||65,n=n||[.45,.85,1]):(t=t||98,n=n||[.33,.55,.67,1]),n[n.length-1]<=1&&(n=n.map(u=>Math.floor(t*u)));let i;if(!r){s.push("Receives inputs"),i=[];for(let u in e.nodesByDepth)i.push(...e.nodesByDepth[u])}a("_".repeat(t)),$m(s,n,a),a("=".repeat(t));let o=e.layers;for(let u=0;u1||r.length===1&&r[0].inboundLayers.length>1){t=!1;break}a.push(...r)}if(t)for(let r of e.layers){let s=!1;for(let i of r.inboundNodes)if(a.indexOf(i)!==-1)if(s){t=!1;break}else s=!0;if(!t)break}return t}function $m(e,t,n=console.log){let a="";for(let r=0;r0&&(a=a.slice(0,a.length-1)+" "),a+=e[r],a=a.slice(0,t[r]),a+=" ".repeat(t[r]-a.length);n(a)}function s4(e,t,n){let a;try{a=JSON.stringify(e.outputShape)}catch(o){a="multiple"}let r=e.name,s=e.getClassName(),i=[`${r} (${s})`,a,e.countParams().toString()];$m(i,t,n)}function i4(e,t,n,a){let r;try{r=JSON.stringify(e.outputShape)}catch(u){r="multiple"}let s=[];for(let u of e.inboundNodes)if(!(n!=null&&n.length>0&&n.indexOf(u)===-1))for(let p=0;pm.name),l=[],c=t.names();for(let m of o)c.indexOf(m)!==-1?l.push(t.getValue(m)):l.push(null);a!=null&&(a.maxNumTensors=-Infinity,a.minNumTensors=Infinity);let u=o.join(",")+"|"+t.names().join(","),p,d;if(ax[u]==null){let m=u4(i,t);p=m.sorted,d=m.recipientCounts,ax[u]=p,bI[u]=d}p=ax[u],d={},r||Object.assign(d,bI[u]);let h=new ji(t);for(let m=0;ma.maxNumTensors&&(a.maxNumTensors=$),$0,()=>"Expected at least one fetch, got none");let n=[],a={};if(e.length===1){let r=xI(e[0],t);n=r.sorted,a=r.recipientMap}else{let r=new Set;for(let s of e){let{sorted:i,recipientMap:o}=xI(s,t);for(let l of i)r.has(l.name)||(n.push(l),r.add(l.name));for(let l in o)a[l]==null&&(a[l]=new Set),o[l].forEach(c=>a[l].add(c))}}return{sorted:n,recipientCounts:p4(a)}}function p4(e){let t={};for(let n in e)t[n]=e[n].size;return t}function xI(e,t){let n=new Set,a=[],r={};for(let o of t.names())n.add(o);let s=[],i=[];for(s.push(e);s.length>0;){let o=s[s.length-1];if(n.has(o.name)){s.pop();continue}let l=i[i.length-1]===s.length-1;if(o.inputs.length===0||l)s.pop(),a.push(o),n.add(o.name),l&&i.pop();else{i.push(s.length-1);for(let c of o.inputs)r[c.name]==null&&(r[c.name]=new Set),r[c.name].add(o.name),!n.has(c.name)&&s.push(c)}}return{sorted:a,recipientMap:r}}function c4(e){let t;if(e.sourceLayer.inboundNodes.length===1)t=e.sourceLayer.output;else{let n=null;for(let a=0;ay.name)}`);ls(this.outputs).length!==this.outputs.length&&console.warn(`The list of outputs passed to the model is redundant. All outputs should only appear once. Found: ${this.outputs.map(y=>y.name)}`),this.inputLayers=[],this.inputLayersNodeIndices=[],this.inputLayersTensorIndices=[],this.outputLayers=[],this.outputLayersNodeIndices=[],this.outputLayersTensorIndices=[],this.layers=[],this.internalContainerRefs=[];for(let y of this.outputs){let b=y.sourceLayer,x=y.nodeIndex,v=y.tensorIndex;this.outputLayers.push(b),this.outputLayersNodeIndices.push(x),this.outputLayersTensorIndices.push(v)}for(let y of this.inputs){let b=y.sourceLayer,x=y.nodeIndex,v=y.tensorIndex;er(x===0,"input layer has >1 nodes"),er(v===0,"input layer has >1 tensors"),this.inputLayers.push(b),this.inputLayersNodeIndices.push(x),this.inputLayersTensorIndices.push(v)}this.inputNames=[],this.outputNames=[],this.feedInputShapes=[],this.feedInputNames=[],this.feedOutputNames=[];for(let y=0;yy.shape),this.internalOutputShapes=this.outputs.map(y=>y.shape);let t={},n={},a={},r={},s={},i=[],o=(y,b,x,v,N,T)=>{(v==null||N==null||T==null)&&(v=y.sourceLayer,N=y.nodeIndex,T=y.tensorIndex);let E=v.inboundNodes[N];if(x.indexOf(E)!==-1)throw new Aa(`The tensor ${y.name} at layer "${v.name}" is part of a cycle.`);if(b.indexOf(E)!==-1)return;this.containerNodes.add(rr.nodeKey(v,N)),v.id in s||(s[v.id]=Object.keys(s).length),x.indexOf(E)===-1&&x.push(E);let A=E.inboundLayers.length;for(let $=0;$=0;)x.splice(x.indexOf(E),1);i.push(E)},l=[],c=[];for(let y of this.outputs)o(y,l,c);let u=i.slice().reverse();for(let y of u){n[y.id]=y,y.id in t||(t[y.id]=0);let b=t[y.id],x=a[y.outboundLayer.id]==null?0:a[y.outboundLayer.id];b=Math.max(b,x),a[y.outboundLayer.id]=b,r[y.outboundLayer.id]=y.outboundLayer,t[y.id]=b;for(let v=0;vparseInt(y,10)).sort(cm);this.layers=[];for(let y of h){let b=d[y];b.sort((x,v)=>{let N=s[x.id],T=s[v.id];return NT?1:0});for(let x of b)x instanceof rr&&this.internalContainerRefs.push(x),this.layers.push(x)}this.layersByDepth=d,h=Object.keys(p).map(y=>parseInt(y,10)).sort(cm);let m=this.inputs.slice(),f=[];for(let y of h)for(let b of p[y]){let x=b.outboundLayer;if(x!=null){for(let v of b.inputTensors)if(m.indexOf(v)===-1)throw new Aa(`Graph disconnected: cannot obtain value for tensor ${v} at layer "${x.name}". The following previous layers were accessed without issue: ${f}`);for(let v of b.outputTensors)m.push(v);f.push(x.name)}}this.nodesByDepth=p;let g=this.layers.map(y=>y.name);for(let y of g){let b=g.filter(x=>x===y).length;if(b!==1)throw new Aa(`The name "${y}" is used ${b} times in the model. All layer names should be unique. Layer names: `+JSON.stringify(g))}this.outboundNodes=[],this.inboundNodes=[],new Nm({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:this.inputs.map(y=>null),outputMasks:this.outputs.map(y=>null),inputShapes:this.inputs.map(y=>y.shape),outputShapes:this.outputs.map(y=>y.shape)}),this.built=!0,this._refCount=1}assertNotDisposed(){if(this._refCount===0)throw new Error(`Container '${this.name}' is already disposed.`)}dispose(){this.assertNotDisposed();let e={refCountAfterDispose:null,numDisposedVariables:0};if(--this._refCount==0){for(let t of this.layers)e.numDisposedVariables+=t.dispose().numDisposedVariables;for(let t of this.internalContainerRefs)e.numDisposedVariables+=t.dispose().numDisposedVariables}return e.refCountAfterDispose=this._refCount,e}get trainable(){return this.trainable_}set trainable(e){this.layers.forEach(t=>{t._trainableWeights.forEach(n=>n.trainable=e)}),this.trainable_=e}get trainableWeights(){if(this._trainableWeights.length>0)throw new B("Container instance unexpectedly contains _trainableWeights.The trainable weights of a Container are a union of the trainable weights of its consituent Layers. Its own _trainableWeights must remain an empty Array.");if(!this.trainable)return[];let e=[];for(let t of this.layers)e=e.concat(t.trainableWeights);return e}get nonTrainableWeights(){let e=[];for(let t of this.layers)e.push(...t.nonTrainableWeights);if(!this.trainable){let t=[];for(let n of this.layers)t.push(...n.trainableWeights);return t.concat(e)}return e}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}loadWeights(e,t=!0){let n={},a=0;for(let s of this.layers)for(let i of s.weights){if(n[i.originalName]!=null)throw new B(`Duplicate weight name: ${i.originalName}`);n[i.originalName]=i,a++}let r=[];for(let s in e){let i=s;if(n[s]==null){let o=s.split("/");i=o.slice(0,-2).concat([o[o.length-1]]).join("/")}if(n[i]!=null)r.push([n[i],e[s]]);else if(t)throw new B(`Provided weight data has no target variable: ${s}`);delete n[i]}if(t){let s=[];for(let i in n)s.push(i);if(s.length>0)throw new B(`${s.length} of ${a} weights are not set: ${s}`)}Xb(r)}updatedConfig(){let e=this.getConfig(),t={};return t.className=this.getClassName(),t.config=e,t.kerasVersion=`tfjs-layers ${Dm}`,t.backend="TensorFlow.js",t}toJSON(e,t=!0){let n=nx(this.updatedConfig());return t?JSON.stringify(n):n}call(e,t){return D(()=>{e=xt(e);let n=new ji;for(let a=0;a{e=xt(e);let n;return t==null?n=Bi(null,e.length):n=xt(t),this.runInternalGraph(e,n)[1]})}computeOutputShape(e){let t=km(e);if(t.length!==this.inputLayers.length)throw new B(`Invalid inputShape argument ${e}: model has ${this.inputLayers.length} tensor inputs.`);let n={};for(let i=0;iparseInt(i,10)).sort(cm);if(a.length>1)for(let i of a){let o=this.nodesByDepth[i];for(let l of o){let c=l.outboundLayer;if(this.inputLayers.map(m=>m.id).indexOf(c.id)!==-1)continue;let u=[];for(let m=0;mparseInt(o,10)).sort(cm);for(let o of a){let l=this.nodesByDepth[o];for(let c of l){let u=c.outboundLayer,p=c.inputTensors,d=c.outputTensors,h=new Array;for(let m of p)m.id in n&&h.push(n[m.id]);if(h.length===p.length){let m={},f,g,y,b;if(c.callArgs!=null&&(m=c.callArgs),h.length===1){let[x,v]=h[0];m.mask==null&&(m.mask=v),y=xt(u.call(x,m)),b=xt(u.computeMask(x,v)),f=[x],g=[v]}else f=h.map(x=>x[0]),g=h.map(x=>x[1]),m.mask==null&&(m.mask=g),y=xt(u.call(f,m)),b=xt(u.computeMask(f,g));if(u.activityRegularizer)throw new $e("LayersModel invocation with concrete Tensor value(s) in the presence of activity regularizer(s) is not supported yet.");for(let x=0;x{let e=[];for(let t of this.layers)for(let n=0;n0){let m=[];for(let f=0;f0&&f.apply(Tn(y),b)}function l(f){let g=f.name,y=Ma(f,t.customObjects!=null?t.customObjects:{});y.setFastWeightInitDuringBuild(a),r[g]=y,f.inboundNodes.forEach(b=>{if(!(b instanceof Array))throw new B(`Corrupted configuration, expected array for nodeData: ${b}`);i(y,b)})}let c=t.name,u=t.layers;for(let f of u)l(f);for(;!Oz(s);)for(let f of u){let g=r[f.name];if(g.name in s){let y=s[g.name];delete s[g.name];for(let b of y)o(g,b)}}let p=[],d=[],h=t.inputLayers;for(let f of h){let g=f[0],y=f[1],b=f[2];er(g in r);let x=r[g].inboundNodes[y].outputTensors;p.push(x[b])}let m=t.outputLayers;for(let f of m){let g=f[0],y=f[1],b=f[2];er(g in r);let x=r[g].inboundNodes[y].outputTensors;d.push(x[b])}return new e({inputs:p,outputs:d,name:c})}get stateful(){if(this._stateful)throw new B("Container instance unexpectedly has _stateful = true. The statefulness of a Container is determined by the Layers it contains. Its _stateful property must remain the default false.");for(let e of this.layers)if(e.stateful)return!0;return!1}resetStates(){D(()=>{this.layers.forEach(e=>{e.stateful&&e.resetStates()})})}};function d4(e,t,n){let a=t.length;if(e==null||Array.isArray(e)&&e.length===0)return t.map(r=>null);if(a===1)return Array.isArray(e)&&e.length===1?e:typeof e=="object"&&t[0]in e?[e[t[0]]]:[e];if(Array.isArray(e)){if(e.length!==a)throw new Error(`Provided ${n} is an array of ${e.length} element(s), but the model has ${a} outputs. Make sure a set of weights is provided for each model output.`);return e}else if(typeof e=="object"&&Object.keys(e).length>0&&typeof e[Object.keys(e)[0]]=="object"){let r=[];return t.forEach(s=>{s in e?r.push(e[s]):r.push(null)}),r}else throw new Error(`The model has multiple (${a}) outputs, so ${n} must be either an array with ${a} elements or an object with ${t} keys. Provided ${n} not understood: ${JSON.stringify(e)}`)}function vI(e,t){return d4(e,t,"classWeight")}async function wI(e,t,n,a){if(t!=null||a!=null)throw new Error("Support sampleWeight is not implemented yet");if(n!=null){let r=D(()=>{if(e.shape.length===1)return e.clone();if(e.shape.length===2)if(e.shape[1]>1){let o=1;return e.argMax(o)}else{if(e.shape[1]===1)return e.reshape([e.shape[0]]);throw new Error(`Encountered unexpected last-dimension size (${e.shape[1]}) during handling of class weights. The size is expected to be >= 1.`)}else throw new Error(`Unexpected rank of target (y) tensor (${e.rank}) during handling of class weights. The rank is expected to be 1 or 2.`)}),s=Array.from(await r.data());Ae(r);let i=[];return s.forEach(o=>{if(n[o]==null)throw new Error(`classWeight must contain all classes in the training data. The class ${o} exists in the data but not in classWeight`);i.push(n[o])}),tt(i,"float32")}else return null}function h4(e,t){return L(e,t)}var m4=32;function II(e,t){let n,a,r=t;n=r.xs,a=r.ys,k.assert(n!=null&&a!=null,()=>`A Dataset iterator for fitDataset() is expected to generate objects of the form \`{xs: xVal, ys: yVal}\`, where the two values may be \`tf.Tensor\`, an array of Tensors, or a map of string to Tensor. The provided Dataset instead generates ${t}`);let s=kI("input",e.inputNames,n),i=kI("output",e.outputNames,a),o=s[0].shape[0];k.assert(s.length===e.inputs.length,()=>`LayersModel has ${e.inputs.length} inputs, but the dataset provides ${s.length} inputs. (Expected input keys: ${JSON.stringify(e.inputNames)})`),k.assert(i.length===e.outputs.length,()=>`LayersModel has ${e.outputs.length} outputs, but the dataset provides ${i.length} outputs. (Expected output keys: ${JSON.stringify(e.outputNames)})`);for(let l=0;l`Batch size mismatch: input ${e.inputNames[l]} has ${s[l].shape[0]}; expected ${o} based on input ${e.inputNames[0]}.`);for(let l=0;l`Batch size mismatch: output ${e.outputNames[l]} has ${i[l].shape[0]}; expected ${o} based on input ${e.inputNames[0]}.`);return{xs:s,ys:i}}function kI(e,t,n){if(n instanceof z)return[n];if(Array.isArray(n))return k.assert(n.length===t.length,()=>`Received an array of ${n.length} Tensors, but expected ${t.length} to match the ${e} keys ${t}.`),n;{let a=[];for(let r of t){if(n[r]==null)throw new B(`The feature data generated by the dataset lacks the required ${e} key '${r}'.`);a.push(n[r])}return a}}function f4(e){if(e.length===3)throw new $e("Validation with sample weights is not implemented yet.");return{xs:e[0],ys:e[1]}}async function y4(e,t,n){let a=n.batchesPerEpoch!=null;if(k.assert(e.optimizer!=null,()=>"You must compile a model before training/testing. Use LayersModel.compile(modelCompileConfig)."),k.assert(n!=null,()=>"For fitDataset(), the 2nd argument (config) is required, but it is not provided in this call."),k.assert(n.epochs!=null&&n.epochs>0&&Number.isInteger(n.epochs),()=>`For fitDataset(), config.epochs is expected to be a positive integer, but got ${n.epochs}`),k.assert(!a||n.batchesPerEpoch>0&&Number.isInteger(n.batchesPerEpoch),()=>`For fitDataset(), config.batchesPerEpoch is expected to be a positive integer if specified, but got ${n.batchesPerEpoch}`),k.assert(n.validationSplit==null,()=>"`validationSplit` is not supported by `fitDataset()`. Use validationData instead."),e.isTraining)throw new Error("Cannot start training because another fit() call is ongoing.");e.isTraining=!0;try{let r=n.validationData!=null,s,i;if(r)if(NI(n.validationData))k.assert(n.validationBatches==null||n.validationBatches>0&&Number.isInteger(n.validationBatches),()=>`For fitDataset() with dataset-based validation, config.validationBatches is expected not to be provided, or to be a positive integer, but got ${n.validationBatches}`);else{let g=f4(n.validationData);s=g.xs,i=g.ys}let o=e.makeTrainFunction(),l=e.getDedupedMetricsNames(),c;r?c=l.slice().concat(l.map(g=>"val_"+g)):c=l.slice();let u=lI(n.callbacks,n.yieldEvery),p=n.verbose==null?1:n.verbose,{callbackList:d,history:h}=uI(u,p,n.epochs,null,null,g4(t,n),null,r,c);d.setModel(e),e.history=h,await d.onTrainBegin(),e.stopTraining_=!1;let m=n.initialEpoch==null?0:n.initialEpoch,f=await t.iterator();for(;m=n.batchesPerEpoch:x.done){if(r){let v;NI(n.validationData)?v=xt(await e.evaluateDataset(n.validationData,{batches:n.validationBatches})):v=xt(e.evaluate(s,i,{batchSize:n.validationBatchSize==null?m4:n.validationBatchSize,verbose:0}));for(let N=0;N0)throw new $e("Verbose mode is not implemented yet.");k.assert(!a||n.batches>0&&Number.isInteger(n.batches),()=>`Test loop expects \`batches\` to be a positive integer, but received ${JSON.stringify(n.batches)}`);let i=b4(t)?t:await t.iterator(),o=0,l=0;for(;a?l{if(c.value){let{xs:u,ys:p}=II(e,c.value),d=u.concat(p),h=D(()=>r(d));if(Ae(d),l===0)for(let f=0;fZ(s[f],L(m,g))),l>0&&Ae(y)}Ae(h),o+=m,++l}return s}),c.done){a&&console.warn(`Your dataset iterator ran out of data during evaluateDataset(). Interrupting evalution. Make sure that your dataset can generate at least \`batches\` batches (in this case, ${n.batches} batches). You may need to use the repeat() function when building your dataset.`);break}}for(let c=0;c0&&Number.isInteger(e),()=>`batchSize is required to be a positive integer, but got ${e}`)}function dp(e,t,n){return e==null?[null]:Array.isArray(e)?e.map(a=>Gi(a,t,n-t)):Gi(e,t,n-t)}function sx(e,t){return D(()=>e==null?null:Array.isArray(e)?e.map(n=>sx(n,t)):V1(e,t.dtype==="int32"?t:t.toInt()))}function ix(e,t){let n=[],a=0,r=null;for(;a=e&&(r=e),n.push([a,r]),a=r;return n}async function v4(e,t,n,a,r,s,i,o,l,c,u,p,d,h,m){r==null&&(r=32),s==null&&(s=1),u==null&&(u=!0),d==null&&(d=0);let f=!1;if(l!=null&&c!=null&&(f=!0),m!=null&&(f=!0,h==null))throw new B("Can only use `validationSteps` when doing step-wise training, i.e., `stepsPerEpoch` must be set.");let g=e.checkNumSamples(n,r,h,"steps_per_epoch"),y;g!=null&&(y=$a(0,g)),i==null&&(i=1);let{callbackList:b,history:x}=uI(o,i,s,d,g,h,r,f,p);b.setModel(e),e.history=x,await b.onTrainBegin(),e.stopTraining_=!1;for(let v=d;v{let O=E[A][0],V=E[A][1],W=Gi(T,O,V-O);$.batch=A,$.size=V-O;let H=sx(n,W),X=t(H);for(let q=0;q0){if(m=!0,a.validationData.length===2)i=a.validationData[0],o=a.validationData[1];else throw a.validationData.length===3?new $e("validationData including sample weights is not supported yet."):new B(`When passing validation data, it must contain 2 (valX, valY) or 3 (valX, valY, valSampleWeight) items; ${a.validationData} is invalid.`);let T=!0,E=await e.standardizeUserData(i,o,null,null,T,p);l=E[0],c=E[1],f=l.concat(c)}else if(a.validationSplit!=null&&a.validationSplit>0&&a.validationSplit<1){m=!0;let T=Math.floor(r[0].shape[0]*(1-a.validationSplit)),E=r[0].shape[0];l=dp(r,T,E),r=dp(r,0,T),c=dp(s,T,E),s=dp(s,0,T),f=l.concat(c)}else a.validationSteps!=null&&(m=!0);let g=r.concat(s).concat(u);e.checkTrainableWeightsConsistency();let y=e.makeTrainFunction(),b=e.getDedupedMetricsNames(),x,v;m?(e.makeTestFunction(),x=e.testFunction,v=b.slice().concat(b.map(T=>"val_"+T))):(x=null,f=[],v=b.slice());let N=lI(a.callbacks,a.yieldEvery);return await v4(e,y,g,b,p,a.epochs,a.verbose,N,x,f,a.shuffle,v,a.initialEpoch,null,null)}finally{e.isTraining=!1,qi(r,t),qi(s,n),qi(l,i),qi(c,o),u!=null&&Ae(u)}}function TI(e){let t=[];e instanceof z&&(e=[e]);for(let n=0;nn.push(r.id));else if(t!=null)for(let r in t){let s=t[r];n.push(s.id)}let a=[];if(e instanceof z)n.indexOf(e.id)===-1&&a.push(e);else if(Array.isArray(e))e.forEach(r=>{n.indexOf(r.id)===-1&&a.push(r)});else if(e!=null)for(let r in e){let s=e[r];n.indexOf(s.id)===-1&&a.push(s)}a.forEach(r=>{r.isDisposed||r.dispose()})}function k4(e){return e instanceof z}function ox(e){return Array.isArray(e)}function SI(e){return!k4(e)&&!ox(e)}function CI(e,t,n,a=!0,r=""){if(t==null||t.length===0){if(e!=null){let i=!1;if(ox(e)&&e.length>0)i=!0;else if(SI(e)){for(let o in e)if(e.hasOwnProperty(o)){i=!0;break}}else i=!0;if(i)throw new B(`Error when checking model ${r} expected no data, but got ${e}`)}return[]}if(e==null)return t.map(i=>null);let s;if(SI(e)){e=e,s=[];for(let i of t){if(e[i]==null)throw new B(`No data provided for "${i}". Need data for each key in: ${t}`);s.push(e[i])}}else if(ox(e)){if(e=e,e.length!==t.length)throw new B(`Error when checking model ${r}: the Array of Tensors that you are passing to your model is not the size the model expected. Expected to see ${t.length} Tensor(s), but instead got the following list of Tensor(s): ${e}`);s=e}else{if(e=e,t.length>1)throw new B(`The model ${r} expects ${t.length} Tensor(s), but only received one Tensor. Found: Tensor with shape ${e.shape}`);s=[e]}if(s=TI(s),n!=null)for(let i=0;i=0&&c!==u)throw new B(`Error when checking ${r}: expected ${t[i]} to have shape [${n[i]}], but got array with shape [${o.shape}].`)}}return s}function I4(e,t,n){let a=ls(e.map(s=>s.shape[0]));a.sort();let r=ls(t.map(s=>s.shape[0]));if(r.sort(),a.length>1)throw new B(`All input Tensors (x) should have the same number of samples. Got array shapes: ${JSON.stringify(e.map(s=>s.shape))}`);if(r.length>1)throw new B(`All target Tensors (y) should have the same number of samples. Got array shapes: ${JSON.stringify(t.map(s=>s.shape))}`);if(a.length>0&&r.length>0&&!k.arraysEqual(a,r))throw new B(`Input Tensors should have the same number of samples as target Tensors. Found ${a[0]} input sample(s) and ${r[0]} target sample(s).`)}function N4(e,t,n){let a=[Hi,Em,up];for(let r=0;r1)throw new B(`The model expects ${t.length} ${r} Tensors, but only received one Tensor. Found: array with shape ${JSON.stringify(e.shape)}.`);s=[e]}if(n!=null)for(let i=0;i[]);let n;if(typeof e=="string"||typeof e=="function")n=[e];else if(Array.isArray(e)||typeof e=="object")n=e;else throw new TypeError(`Type of metrics argument not understood. Expected an string,function, Array, or Object, found: ${e}`);if(Array.isArray(n))return t.map(a=>n);{let a=[];for(let r of t){let s=n.hasOwnProperty(r)?n[r]:[];Array.isArray(s)||(s=[s]),a.push(s)}return a}}var S4="layers-model",_r=class extends rr{constructor(e){super(e);this.isTraining=!1}summary(e,t,n=console.log){if(!this.built)throw new B("This model has never been called, thus its weights have not been created yet. So no summary can be displayed. Build the model first (e.g., by calling it on some test data).");o4(this,e,t,n)}compile(e){if(e.loss==null&&(e.loss=[]),this.loss=e.loss,typeof e.optimizer=="string")this.optimizer_=n4(e.optimizer),this.isOptimizerOwned=!0;else{if(!(e.optimizer instanceof Sr))throw new B("User-defined optimizer must be an instance of tf.Optimizer.");this.optimizer_=e.optimizer,this.isOptimizerOwned=!1}let t=[];if(!Array.isArray(e.loss)&&typeof e.loss!="string"&&typeof e.loss!="function"){e.loss=e.loss;for(let s in e.loss)if(this.outputNames.indexOf(s)===-1)throw new B(`Unknown entry in loss dictionary: "${s}". Only expected the following keys: ${this.outputNames}`);for(let s of this.outputNames)e.loss[s]==null&&console.warn(`Output "${s}" is missing from loss dictionary. We assume this was done on purpose, and we will not be expecting data to be passed to ${s} during training`),t.push(Jb(e.loss[s]))}else if(Array.isArray(e.loss)){if(e.loss.length!==this.outputs.length)throw new B(`When passing an Array as loss, it should have one entry per model output. The model has ${this.outputs.length} output(s), but you passed loss=${e.loss}.`);t=e.loss.map(s=>Jb(s))}else{let s=Jb(e.loss);this.outputs.forEach(i=>{t.push(s)})}this.lossFunctions=t,this.feedOutputNames=[],this.feedOutputShapes=[],this.feedLossFns=[];for(let s=0;s{for(let s=0;s1&&(this.metricsTensors.push([i,s]),this.metricsNames.push(this.outputNames[s]+"_loss"))}});let a=T4(e.metrics,this.outputNames),r=(s,i,o)=>{this.outputNames.length>1&&(i=this.outputNames[s]+"_"+i),this.metricsNames.push(i),this.metricsTensors.push([o,s])};Ui("metric",()=>{for(let s=0;s{let l="",c,u,p;for(let d of o){if(typeof d=="string"&&["accuracy","acc","crossentropy","ce"].indexOf(d)!==-1){let m=this.internalOutputShapes[s];m[m.length-1]===1||this.lossFunctions[s]===Em?["accuracy","acc"].indexOf(d)!==-1?u=Zb:["crossentropy","ce"].indexOf(d)!==-1&&(u=dI):this.lossFunctions[s]===Cm?["accuracy","acc"].indexOf(d)!==-1?u=hI:["crossentropy","ce"].indexOf(d)!==-1&&(u=mI):["accuracy","acc"].indexOf(d)!==-1?u=Qb:["crossentropy","ce"].indexOf(d)!==-1&&(u=ex);let f;["accuracy","acc"].indexOf(d)!==-1?f="acc":["crossentropy","ce"].indexOf(d)!==-1&&(f="ce"),p=u,c=l+f}else p=t4(d),c=l+Am(d);let h;Ui(c,()=>{h=p}),r(s,c,h)}})(i)}}),this.collectedTrainableWeights=this.trainableWeights}checkTrainableWeightsConsistency(){this.collectedTrainableWeights!=null&&this.trainableWeights.length!==this.collectedTrainableWeights.length&&console.warn("Discrepancy between trainableweights and collected trainable weights. Did you set `model.trainable` without calling `model.compile()` afterwards?")}evaluate(e,t,n={}){let a=n.batchSize==null?32:n.batchSize;rx(a);let r=!0,s=this.standardizeUserDataXY(e,t,r,a);try{let i=s[0].concat(s[1]);this.makeTestFunction();let o=this.testFunction,l=this.testLoop(o,i,a,n.verbose,n.steps);return Tn(l)}finally{qi(s[0],e),qi(s[1],t)}}async evaluateDataset(e,t){return this.makeTestFunction(),x4(this,e,t)}checkNumSamples(e,t,n,a="steps"){let r;if(n!=null){if(r=null,t!=null)throw new B(`If ${a} is set, batchSize must be null or undefined.Got batchSize = ${t}`)}else if(e!=null)Array.isArray(e)?r=e[0].shape[0]:r=e.shape[0];else throw new B(`Either the input data should have a defined shape, or ${a} shoud be specified.`);return r}execute(e,t){if(Array.isArray(t)&&t.length===0)throw new B("`outputs` is an empty Array, which is not allowed.");let n=Array.isArray(t),a=n?t:[t],r=this.retrieveSymbolicTensors(a),s=new ji;if(e instanceof z&&(e=[e]),Array.isArray(e)){if(e.length!==this.inputs.length)throw new B(`The number of inputs provided (${e.length}) does not match the number of inputs of this model (${this.inputs.length}).`);for(let o=0;oi.name);for(let i=0;i0){let a=[];throw t.forEach((r,s)=>{r==null&&a.push(e[s])}),new B(`Cannot find SymbolicTensors for output name(s): ${JSON.stringify(a)}`)}return t}predictLoop(e,t=32,n=!1){return D(()=>{let a=this.checkNumSamples(e);if(n)throw new $e("Verbose predictLoop() is not implemented yet.");let r=ix(a,t),s=this.outputs.map(i=>[]);for(let i=0;i{let o=r[i][0],l=r[i][1],c=dp(e,o,l),u=[];if(Array.isArray(c))for(let d=0;ds[l].push(o));return Tn(s.map(i=>Ze(i,0)))})}predict(e,t={}){let n=TI(e);EI(n,this.inputNames,this.feedInputShapes,!1);try{let a=t.batchSize==null?32:t.batchSize;return rx(a),this.predictLoop(n,a)}finally{qi(n,e)}}predictOnBatch(e){EI(e,this.inputNames,this.feedInputShapes,!0);let t=(Array.isArray(e)?e[0]:e).shape[0];return this.predictLoop(e,t)}standardizeUserDataXY(e,t,n=!0,a){if(this.optimizer_==null)throw new Aa("You must compile a model before training/testing. Use LayersModel.compile(modelCompileArgs).");let r=[];for(let s=0;s0&&e[0].shape[0]%a!=0)throw new B(`In a stateful network, you should only pass inputs with a number of samples that is divisible by the batch size ${a}. Found: ${e[0].shape[0]} sample(s).`);return[e,t]}async standardizeUserData(e,t,n,a,r=!0,s){let[i,o]=this.standardizeUserDataXY(e,t,r,s);if(n!=null)throw new Error("sample weight is not supported yet.");let l=null;if(a!=null){let c=vI(a,this.outputNames);l=[];for(let u=0;u{let s=this.checkNumSamples(t,n,r,"steps"),i=[];if(a>0)throw new $e("Verbose mode is not implemented yet.");if(r!=null)throw new $e("steps mode in testLoop() is not implemented yet");{let o=ix(s,n),l=tt($a(0,s));for(let c=0;c1&&(r+=`_${_1(e.slice(0,n),a)}`),t.push(r)}return t}makeTrainFunction(){return e=>{let t=[],n=e.slice(0,this.inputs.length),a=e.slice(this.inputs.length,this.inputs.length+this.outputs.length),r=e.slice(this.inputs.length+this.outputs.length,this.inputs.length+this.outputs.length*2),s=[],i=()=>{let c=[];for(let h=0;h1&&h{d=Z(d,h)}),d},o=this.collectedTrainableWeights.map(c=>c.read()),l=!0;return[this.optimizer_.minimize(i,l,o)].concat(s)}}makeTestFunction(){this.testFunction=e=>D(()=>{let t=[],n,a=e.slice(0,this.inputs.length),r=e.slice(this.inputs.length,this.inputs.length+this.outputs.length),s=[];for(let l=0;lEr(t))}else{let t=Object.keys(this.loss);e={};let n=this.loss;for(let a of t)if(typeof n[a]=="string")e[a]=Er(n[a]);else throw new Error("Serialization of non-string loss is not supported.")}return e}getMetricIdentifiers(){if(typeof this.metrics=="string"||typeof this.metrics=="function")return[Er(Am(this.metrics))];if(Array.isArray(this.metrics))return this.metrics.map(e=>Er(Am(e)));{let e={};for(let t in this.metrics)e[t]=Er(Am(this.metrics[t]));return e}}getTrainingConfig(){return{loss:this.getLossIdentifiers(),metrics:this.getMetricIdentifiers(),optimizer_config:{class_name:this.optimizer.getClassName(),config:this.optimizer.getConfig()}}}loadTrainingConfig(e){if(e.weighted_metrics!=null)throw new Error("Loading weight_metrics is not supported yet.");if(e.loss_weights!=null)throw new Error("Loading loss_weights is not supported yet.");if(e.sample_weight_mode!=null)throw new Error("Loading sample_weight_mode is not supported yet.");let t=cp(e.optimizer_config),n=Ma(t),a;if(typeof e.loss=="string")a=Wi(e.loss);else if(Array.isArray(e.loss))a=e.loss.map(s=>Wi(s));else if(e.loss!=null){a={};for(let s in e.loss)a[s]=Wi(e.loss[s])}let r;if(Array.isArray(e.metrics))r=e.metrics.map(s=>Wi(s));else if(e.metrics!=null){r={};for(let s in e.metrics)r[s]=Wi(e.metrics[s])}this.compile({loss:a,metrics:r,optimizer:n})}async save(e,t){if(typeof e=="string"){let i=Kt.getSaveHandlers(e);if(i.length===0)throw new B(`Cannot find any save handlers for URL '${e}'`);if(i.length>1)throw new B(`Found more than one (${i.length}) save handlers for URL '${e}'`);e=i[0]}if(e.save==null)throw new B("LayersModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");let n=await Kt.encodeWeights(this.getNamedWeights(t)),a=!1,r=null,s={modelTopology:this.toJSON(r,a),format:S4,generatedBy:`TensorFlow.js tfjs-layers v${Dm}`,convertedBy:null};if((t==null?!1:t.includeOptimizer)&&this.optimizer!=null){s.trainingConfig=this.getTrainingConfig();let i="optimizer",{data:o,specs:l}=await Kt.encodeWeights(await this.optimizer.getWeights(),i);n.specs.push(...l),n.data=Kt.concatenateArrayBuffers([n.data,o])}if(this.userDefinedMetadata!=null){let i=!0;gI(this.userDefinedMetadata,this.name,i),s.userDefinedMetadata=this.userDefinedMetadata}return s.weightData=n.data,s.weightSpecs=n.specs,e.save(s)}setUserDefinedMetadata(e){gI(e,this.name),this.userDefinedMetadata=e}getUserDefinedMetadata(){return this.userDefinedMetadata}};_r.className="Model";se.registerClass(_r);var _I=class extends _r{};_I.className="Functional";se.registerClass(_I);async function C4(e,t){"modelTopology"in e||(e={modelTopology:e}),e=e;let n=e.modelTopology;n.model_config!=null&&(n=n.model_config);let a=cp(n),r=Ma(a,t);if(e.weightsManifest!=null){let s=await Kt.loadWeights(e.weightsManifest,e.pathPrefix,r.weights.map(o=>o.originalName)),i={};for(let o of r.weights)i[o.originalName]=s[o.originalName];r.loadWeights(i),Ae(s)}return r}async function _4(e,t){if(t==null&&(t={}),typeof e=="string"){let n=Kt.getLoadHandlers(e,t);if(n.length===0)n.push(Kt.browserHTTPRequest(e,t));else if(n.length>1)throw new B(`Found more than one (${n.length}) load handlers for URL '${e}'`);e=n[0]}return E4(e,void 0,t)}async function E4(e,t,n){if(n==null&&(n={}),e.load==null)throw new B("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let a=await e.load(),r=a.modelTopology;r.model_config!=null&&(r=r.model_config);let s=n.strict==null?!0:n.strict,i=a.weightData!=null&&a.weightSpecs!=null&&s,o=Ma(cp(r),t,i),l=a.trainingConfig;if(l!=null&&o.loadTrainingConfig(l),a.userDefinedMetadata!=null&&o.setUserDefinedMetadata(a.userDefinedMetadata),a.weightData!=null){if(a.weightSpecs==null)throw new B("LayersModel artifacts contains weight data, but not weight specs. Therefore loading of weights cannot proceed.");let{modelWeights:c,optimizerWeights:u}=F4(a.weightData,a.weightSpecs);o.loadWeights(c,s),o.optimizer!=null&&u.length>0&&await o.optimizer.setWeights(u),Ae(c),Ae(u.map(p=>p.tensor))}return o}function F4(e,t){let n=Kt.decodeWeights(e,t),a={},r=[];return t.forEach(s=>{s.group==="optimizer"?r.push({name:s.name,tensor:n[s.name]}):a[s.name]=n[s.name]}),{modelWeights:a,optimizerWeights:r}}var uu=class extends _r{constructor(e){super({inputs:[],outputs:[]});if(e=e||{},this.trainable=!0,this.built=!1,this.name=e.name!=null?e.name:wm("sequential_"),e.layers!=null)for(let t of e.layers)this.add(t)}checkShape(e){if(e.inboundNodes[0].outputTensors[0].shape.some(t=>t<0))throw new B(`Negative dimension size caused by adding layer ${e.name} with input shape [${e.inboundNodes[0].inputTensors[0].shape}]`)}add(e){let t=e instanceof uu||e instanceof _r,n;if(t){if(n=e,n.outputs.length!==1)throw new B("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");if(n.inputs.length!==1)throw new B("All layers in a Sequential model should have a single input tensor. For multi-input layers, use the functional API.")}if(this.outputs.length===0){if(e.inboundNodes.length===0){if(e.batchInputShape==null)throw new B("The first layer in a Sequential model must get an `inputShape` or `batchInputShape` argument.");let a=nI({batchShape:e.batchInputShape,dtype:e.dtype,name:e.name+"_input"});e.apply(a)}if(t)this.outputs=n.outputs,this.inputs=n.inputs;else{if(e.inboundNodes.length!==1)throw new B(`A layer added to a Sequential model must not already be connected somewhere else. LayersModel received layer ${e.name} which has ${e.inboundNodes.length} pre-existing inbound connections.`);if(e.inboundNodes[0].outputTensors.length!==1)throw new B("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(e),this.outputs=[e.inboundNodes[0].outputTensors[0]],this.inputs=tI(this.outputs[0])}this.inboundNodes=[],new Nm({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:Bi(null,this.inputs.length),outputMasks:[null],inputShapes:this.inputs.map(a=>a.shape),outputShapes:this.outputs[0].shape})}else{let a=e.apply(this.outputs[0]);if(Array.isArray(a))throw new TypeError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(e),this.outputs=[a],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}this.layers.push(e),this.built=!1}pop(){if(this.layers.length===0)throw new TypeError("There are no layers in the model.");if(this.layers.pop(),this.layers.length===0)this.outputs=[],this.inboundNodes=[],this.outboundNodes=[];else{let e=this.layers.length-1;this.layers[e].outboundNodes=[],this.outputs=[this.layers[e].output],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}}call(e,t){return this.model==null&&this.build(),this.model.call(e,t)}build(e){if(dt(e),this.inputs.length===0||this.outputs.length===0)throw new TypeError("Sequential model cannot be built: model is empty. Add some layers first.");this.model=new _r({inputs:this.inputs,outputs:this.outputs[0],name:this.name+"_model"}),this.model.trainable=this.trainable,this.supportsMasking=this.model.supportsMasking,this.inputLayers=this.model.inputLayers,this.inputLayersNodeIndices=this.model.inputLayersNodeIndices,this.inputLayersTensorIndices=this.model.inputLayersTensorIndices,this.outputLayers=this.model.outputLayers,this.outputLayersNodeIndices=this.model.outputLayersNodeIndices,this.outputLayersTensorIndices=this.model.outputLayersTensorIndices,this.nodesByDepth=this.model.nodesByDepth,this.containerNodes=this.model.containerNodes,this.outputNames=this.model.outputNames,this.inputNames=this.model.inputNames,this.built=!0}countParams(){return this.built||this.build(),super.countParams()}summary(e,t,n=console.log){this.built||this.build(),super.summary(e,t,n)}setWeights(e){this.model==null&&this.build(),this.model.setWeights(e)}evaluate(e,t,n={}){if(!this.built)throw new Aa("The model needs to be compiled before being used.");return this.model.evaluate(e,t,n)}async evaluateDataset(e,t){if(!this.built)throw new Aa("The model needs to be compiled before being used.");return this.model.evaluateDataset(e,t)}predict(e,t={}){return this.model==null&&this.build(),this.model.predict(e,t)}predictOnBatch(e){return this.model==null&&this.build(),this.model.predictOnBatch(e)}compile(e){this.build(),this.model.compile(e),this.optimizer_=this.model.optimizer,this.isOptimizerOwned=this.model.isOptimizerOwned,this.loss=this.model.loss,this.metrics=this.model.metrics,this.metricsTensors=this.model.metricsTensors,this.metricsNames=this.model.metricsNames}get optimizer(){return this.model==null?void 0:this.model.optimizer}set optimizer(e){this.model.optimizer=e}async fit(e,t,n={}){if(!this.built)throw new Aa("The model needs to be compiled before being used.");return this.model.fit(e,t,n)}async fitDataset(e,t){if(!this.built)throw new Aa("The model needs to be compiled before being used.");return this.model.fitDataset(e,t)}async trainOnBatch(e,t){return this.model.trainOnBatch(e,t)}static fromConfig(e,t,n={},a=!1){let r,s={};if(t instanceof Array){if(t[0].className==null||t[0].className==="Merge")throw new B("Legacy serialization format not supported yet.");r=t}else k.assert(t.layers!=null,()=>"When the config data for a Sequential model is not an Array, it must be an Object that contains the 'layers' field."),r=t.layers,delete t.layers,s=t;let i=new e(s);if(!(i instanceof uu))throw new $e(`Sequential.fromConfig called on non-Sequential input: ${i}`);for(let o of r){let l=Ma(o,void 0,a);a&&l.setFastWeightInitDuringBuild(!0),i.add(l)}return i}set stopTraining(e){if(this.model==null)throw new B("Cannot set the stopTraining property of a sequential model before it is compiled.");this.model.stopTraining=e}get stopTraining(){if(this.model==null)throw new B("Cannot get the stopTraining property of a sequential model before it is compiled.");return this.model.stopTraining}getConfig(){let e=[];for(let t of this.layers){let n={};n.className=t.getClassName(),n.config=t.getConfig(),e.push(n)}return{name:this.name,layers:e}}};uu.className="Sequential";se.registerClass(uu);function A4(e){return new _r(e)}function $4(e){return new uu(e)}function D4(e,t){return t==null&&(t={}),_4(e,t)}function q1(e){return nI(e)}function M4(e,t){ga.registerCallbackConstructor(e,t)}var On=class extends se.Serializable{getConfig(){return{}}},FI=class extends On{apply(e,t=1){return dB(e,t)}};FI.className="elu";se.registerClass(FI);var AI=class extends On{apply(e){return Hh(e)}};AI.className="selu";se.registerClass(AI);var $I=class extends On{apply(e){return Xe(e)}};$I.className="relu";se.registerClass($I);var DI=class extends On{apply(e){return D(()=>Pi(6,Xe(e)))}};DI.className="relu6";se.registerClass(DI);var MI=class extends On{apply(e){return e}};MI.className="linear";se.registerClass(MI);var RI=class extends On{apply(e){return da(e)}};RI.className="sigmoid";se.registerClass(RI);var PI=class extends On{apply(e){return mB(e)}};PI.className="hardSigmoid";se.registerClass(PI);var OI=class extends On{apply(e){return Jl(e)}};OI.className="softplus";se.registerClass(OI);var LI=class extends On{apply(e){return hB(e)}};LI.className="softsign";se.registerClass(LI);var zI=class extends On{apply(e){return Kl(e)}};zI.className="tanh";se.registerClass(zI);var lx=class extends On{apply(e,t=-1){return Ca(e,t)}};lx.className="softmax";se.registerClass(lx);var BI=class extends On{apply(e,t=-1){return Oh(e,t)}};BI.className="logSoftmax";se.registerClass(BI);var WI=class extends On{apply(e,t=1){return D(()=>da(e.mul(t)).mul(e))}};WI.className="swish";se.registerClass(WI);function ds(e){return e.getClassName()}function ux(e,t={}){return tp(e,se.SerializationMap.getMap().classNameMap,t,"activation")}function hs(e){if(e==null){let t={};return t.className="linear",t.config={},ux(t)}if(typeof e=="string"){let t={};return t.className=e,t.config={},ux(t)}else return e instanceof On?e:ux(e)}function cx(e){if(e!=null&&typeof e!="object")throw new Error(`Argument to L1L2 regularizer's constructor is expected to be an object, but received: ${e}`)}var VI=class extends se.Serializable{},hp=class extends VI{constructor(e){super();cx(e),this.l1=e==null||e.l1==null?.01:e.l1,this.l2=e==null||e.l2==null?.01:e.l2,this.hasL1=this.l1!==0,this.hasL2=this.l2!==0}apply(e){return D(()=>{let t=bt([1]);return this.hasL1&&(t=Z(t,Ce(L(this.l1,Wt(e))))),this.hasL2&&(t=Z(t,Ce(L(this.l2,ip(e))))),t.asScalar()})}getConfig(){return{l1:this.l1,l2:this.l2}}static fromConfig(e,t){return new e({l1:t.l1,l2:t.l2})}};hp.className="L1L2";se.registerClass(hp);function R4(e){return cx(e),new hp({l1:e!=null?e.l1:null,l2:0})}function P4(e){return cx(e),new hp({l2:e!=null?e.l2:null,l1:0})}var UI={l1l2:"L1L2"};function ht(e){return Tb(e)}function GI(e,t={}){return tp(e,se.SerializationMap.getMap().classNameMap,t,"regularizer")}function kt(e){if(e==null)return null;if(typeof e=="string"){let t={className:e in UI?UI[e]:e,config:{}};return GI(t)}else return e instanceof VI?e:GI(e)}var px=class extends qe{constructor(e){super(e==null?{}:e);this.supportsMasking=!0,e!=null&&(this.maxValue=e.maxValue)}call(e,t){e=Re(e);let n=Xe(e);return this.maxValue!=null&&(n=Yt(n,0,this.maxValue)),n}computeOutputShape(e){return e}getConfig(){let e={maxValue:this.maxValue},t=super.getConfig();return Object.assign(e,t),e}};px.className="ReLU";se.registerClass(px);var dx=class extends qe{constructor(e){super(e==null?{}:e);this.DEFAULT_ALPHA=.3,e==null&&(e={}),this.alpha=e.alpha==null?this.DEFAULT_ALPHA:e.alpha}call(e,t){let n=Re(e);return Gc(n,this.alpha)}computeOutputShape(e){return e}getConfig(){let e={alpha:this.alpha},t=super.getConfig();return Object.assign(e,t),e}};dx.className="LeakyReLU";se.registerClass(dx);var hx=class extends qe{constructor(e){super(e==null?{}:e);if(this.DEFAULT_ALPHA_INITIALIZER="zeros",e==null&&(e={}),this.supportsMasking=!0,this.alphaInitializer=wt(e.alphaInitializer||this.DEFAULT_ALPHA_INITIALIZER),this.alphaRegularizer=kt(e.alphaRegularizer),this.alphaConstraint=Ht(e.alphaConstraint),e.sharedAxes==null)this.sharedAxes=null;else if(Array.isArray(e.sharedAxes))this.sharedAxes=e.sharedAxes;else if(typeof e.sharedAxes=="number")this.sharedAxes=[e.sharedAxes];else throw new B(`Expected sharedAxes to be a number or an array of numbers, but got ${e.sharedAxes}`)}build(e){e=dt(e);let t=e.slice(1);if(this.sharedAxes!=null)for(let a of this.sharedAxes)t[a-1]=1;this.alpha=this.addWeight("alpha",t,"float32",this.alphaInitializer,this.alphaRegularizer,!0,this.alphaConstraint);let n={};if(this.sharedAxes!=null)for(let a=1;a(Rt(t),t==="channelsFirst"?Ue(e,[0,2,3,1]):e))}function HI(e,t){return D(()=>(Rt(t),t==="channelsFirst"?Ue(e,[0,2,3,4,1]):e))}function O4(e,t,n,a=1,r="valid",s,i=1){return D(()=>{if(s==null&&(s=Fa()),Rt(s),e.shape.length!==3)throw new B(`The input of a conv1dWithBias operation should be 3, but is ${e.shape.length} instead.`);if(t.shape.length!==3)throw new B(`The kernel for a conv1dWithBias operation should be 3, but is ${t.shape.length} instead`);if(n!=null&&n.shape.length!==1)throw new B(`The bias for a conv1dWithBias operation should be 1, but is ${t.shape.length} instead`);if(s==="channelsFirst"&&(e=Ue(e,[0,2,1])),r==="causal")throw new $e("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");let o=Fh(e,t,a,r==="same"?"same":"valid","NWC",i);return n!=null&&(o=nr(o,n)),o})}function jI(e,t,n,a=[1,1],r="valid",s,i,o=null){return D(()=>{if(s==null&&(s=Fa()),Rt(s),e.rank!==3&&e.rank!==4)throw new B(`conv2dWithBiasActivation expects input to be of rank 3 or 4, but received ${e.rank}.`);if(t.rank!==3&&t.rank!==4)throw new B(`conv2dWithBiasActivation expects kernel to be of rank 3 or 4, but received ${e.rank}.`);let l=yx(e,s);if(r==="causal")throw new $e("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");return l=os.conv2d({x:l,filter:t,strides:a,pad:r==="same"?"same":"valid",dilations:i,dataFormat:"NHWC",bias:n,activation:o}),s==="channelsFirst"&&(l=Ue(l,[0,3,1,2])),l})}function L4(e,t,n,a=[1,1,1],r="valid",s,i){return D(()=>{if(s==null&&(s=Fa()),Rt(s),e.rank!==4&&e.rank!==5)throw new B(`conv3dWithBias expects input to be of rank 4 or 5, but received ${e.rank}.`);if(t.rank!==4&&t.rank!==5)throw new B(`conv3dWithBias expects kernel to be of rank 4 or 5, but received ${e.rank}.`);let o=HI(e,s);if(r==="causal")throw new $e("The support for CAUSAL padding mode in conv3dWithBias is not implemented yet.");return o=Xy(o,t,a,r==="same"?"same":"valid","NDHWC",i),n!=null&&(o=nr(o,n)),s==="channelsFirst"&&(o=Ue(o,[0,4,1,2,3])),o})}var bx=class extends qe{constructor(e,t){super(t);if(this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",bx.verifyArgs(t),this.rank=e,Jt(this.rank,"rank"),this.rank!==1&&this.rank!==2&&this.rank!==3)throw new $e(`Convolution layer for rank other than 1, 2, or 3 (${this.rank}) is not implemented yet.`);if(this.kernelSize=cu(t.kernelSize,e,"kernelSize"),this.strides=cu(t.strides==null?1:t.strides,e,"strides"),this.padding=t.padding==null?"valid":t.padding,aa(this.padding),this.dataFormat=t.dataFormat==null?"channelsLast":t.dataFormat,Rt(this.dataFormat),this.activation=hs(t.activation),this.useBias=t.useBias==null?!0:t.useBias,this.biasInitializer=wt(t.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.biasConstraint=Ht(t.biasConstraint),this.biasRegularizer=kt(t.biasRegularizer),this.activityRegularizer=kt(t.activityRegularizer),this.dilationRate=cu(t.dilationRate==null?1:t.dilationRate,e,"dilationRate"),this.rank===1&&Array.isArray(this.dilationRate)&&this.dilationRate.length!==1)throw new B(`dilationRate must be a number or an array of a single number for 1D convolution, but received ${JSON.stringify(this.dilationRate)}`);if(this.rank===2){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==2)throw new B(`dilationRate must be a number or array of two numbers for 2D convolution, but received ${JSON.stringify(this.dilationRate)}`)}else if(this.rank===3){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==3)throw new B(`dilationRate must be a number or array of three numbers for 3D convolution, but received ${JSON.stringify(this.dilationRate)}`)}}static verifyArgs(e){if(er("kernelSize"in e,"required key 'kernelSize' not in config"),typeof e.kernelSize!="number"&&!Cb(e.kernelSize,"number",1,3))throw new B(`BaseConv expects config.kernelSize to be number or number[] with length 1, 2, or 3, but received ${JSON.stringify(e.kernelSize)}.`)}getConfig(){let e={kernelSize:this.kernelSize,strides:this.strides,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,activation:ds(this.activation),useBias:this.useBias,biasInitializer:Et(this.biasInitializer),biasRegularizer:ht(this.biasRegularizer),activityRegularizer:ht(this.activityRegularizer),biasConstraint:Gt(this.biasConstraint)},t=super.getConfig();return Object.assign(e,t),e}},mp=class extends bx{constructor(e,t){super(e,t);this.kernel=null,mp.verifyArgs(t),this.filters=t.filters,Jt(this.filters,"filters"),this.kernelInitializer=wt(t.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.kernelConstraint=Ht(t.kernelConstraint),this.kernelRegularizer=kt(t.kernelRegularizer)}build(e){e=dt(e);let t=this.dataFormat==="channelsFirst"?1:e.length-1;if(e[t]==null)throw new B(`The channel dimension of the input should be defined. Found ${e[t]}`);let n=e[t],a=this.kernelSize.concat([n,this.filters]);this.kernel=this.addWeight("kernel",a,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[{ndim:this.rank+2,axes:{[t]:n}}],this.built=!0}call(e,t){return D(()=>{e=Re(e);let n,a=this.bias==null?null:this.bias.read(),r=A1(this.activation.getClassName());if(r!=null&&this.rank===2)n=jI(e,this.kernel.read(),a,this.strides,this.padding,this.dataFormat,this.dilationRate,r);else{if(this.rank===1)n=O4(e,this.kernel.read(),a,this.strides[0],this.padding,this.dataFormat,this.dilationRate[0]);else if(this.rank===2)n=jI(e,this.kernel.read(),a,this.strides,this.padding,this.dataFormat,this.dilationRate);else if(this.rank===3)n=L4(e,this.kernel.read(),a,this.strides,this.padding,this.dataFormat,this.dilationRate);else throw new $e("convolutions greater than 3D are not implemented yet.");this.activation!=null&&(n=this.activation.apply(n))}return n})}computeOutputShape(e){e=dt(e);let t=[],n=this.dataFormat==="channelsLast"?e.slice(1,e.length-1):e.slice(2);for(let r=0;r 0 but got ${JSON.stringify(e.filters)}`)}},fp=class extends mp{constructor(e){super(2,e);fp.verifyArgs(e)}getConfig(){let e=super.getConfig();return delete e.rank,e}static verifyArgs(e){if(typeof e.kernelSize!="number"&&!Cb(e.kernelSize,"number",1,2))throw new B(`Conv2D expects config.kernelSize to be number or number[] with length 1 or 2, but received ${JSON.stringify(e.kernelSize)}.`)}};fp.className="Conv2D";se.registerClass(fp);var Rm=class extends mp{constructor(e){super(3,e);Rm.verifyArgs(e)}getConfig(){let e=super.getConfig();return delete e.rank,e}static verifyArgs(e){if(typeof e.kernelSize!="number"&&!(Array.isArray(e.kernelSize)&&(e.kernelSize.length===1||e.kernelSize.length===3)))throw new B(`Conv3D expects config.kernelSize to be number or [number, number, number], but received ${JSON.stringify(e.kernelSize)}.`)}};Rm.className="Conv3D";se.registerClass(Rm);var xx=class extends fp{constructor(e){super(e);if(this.inputSpec=[new Zt({ndim:4})],this.padding!=="same"&&this.padding!=="valid")throw new B(`Conv2DTranspose currently supports only padding modes 'same' and 'valid', but received padding mode ${this.padding}`)}build(e){if(e=dt(e),e.length!==4)throw new B("Input should have rank 4; Received input shape: "+JSON.stringify(e));let t=this.dataFormat==="channelsFirst"?1:e.length-1;if(e[t]==null)throw new B("The channel dimension of the inputs should be defined. Found `None`.");let n=e[t],a=this.kernelSize.concat([this.filters,n]);this.kernel=this.addWeight("kernel",a,"float32",this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],"float32",this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[new Zt({ndim:4,axes:{[t]:n}})],this.built=!0}call(e,t){return D(()=>{let n=Re(e);if(n.shape.length!==4)throw new B(`Conv2DTranspose.call() expects input tensor to be rank-4, but received a tensor of rank-${n.shape.length}`);let a=n.shape,r=a[0],s,i;this.dataFormat==="channelsFirst"?(s=2,i=3):(s=1,i=2);let o=a[s],l=a[i],c=this.kernelSize[0],u=this.kernelSize[1],p=this.strides[0],d=this.strides[1],h=Mm(o,p,c,this.padding),m=Mm(l,d,u,this.padding),f=[r,h,m,this.filters];this.dataFormat!=="channelsLast"&&(n=Ue(n,[0,2,3,1]));let g=Ah(n,this.kernel.read(),f,this.strides,this.padding);return this.dataFormat!=="channelsLast"&&(g=Ue(g,[0,3,1,2])),this.bias!=null&&(g=nr(g,this.bias.read(),this.dataFormat)),this.activation!=null&&(g=this.activation.apply(g)),g})}computeOutputShape(e){e=dt(e);let t=e.slice(),n,a,r;this.dataFormat==="channelsFirst"?(n=1,a=2,r=3):(n=3,a=1,r=2);let s=this.kernelSize[0],i=this.kernelSize[1],o=this.strides[0],l=this.strides[1];return t[n]=this.filters,t[a]=Mm(t[a],o,s,this.padding),t[r]=Mm(t[r],l,i,this.padding),t}getConfig(){let e=super.getConfig();return delete e.dilationRate,e}};xx.className="Conv2DTranspose";se.registerClass(xx);var qI=class extends mp{constructor(e,t){super(e,t);if(this.DEFAULT_DEPTHWISE_INITIALIZER="glorotUniform",this.DEFAULT_POINTWISE_INITIALIZER="glorotUniform",this.depthwiseKernel=null,this.pointwiseKernel=null,t.filters==null)throw new B("The `filters` configuration field is required by SeparableConv, but is unspecified.");if(t.kernelInitializer!=null||t.kernelRegularizer!=null||t.kernelConstraint!=null)throw new B("Fields kernelInitializer, kernelRegularizer and kernelConstraint are invalid for SeparableConv2D. Use depthwiseInitializer, depthwiseRegularizer, depthwiseConstraint, pointwiseInitializer, pointwiseRegularizer and pointwiseConstraint instead.");if(t.padding!=null&&t.padding!=="same"&&t.padding!=="valid")throw new B(`SeparableConv${this.rank}D supports only padding modes: 'same' and 'valid', but received ${JSON.stringify(t.padding)}`);this.depthMultiplier=t.depthMultiplier==null?1:t.depthMultiplier,this.depthwiseInitializer=wt(t.depthwiseInitializer||this.DEFAULT_DEPTHWISE_INITIALIZER),this.depthwiseRegularizer=kt(t.depthwiseRegularizer),this.depthwiseConstraint=Ht(t.depthwiseConstraint),this.pointwiseInitializer=wt(t.depthwiseInitializer||this.DEFAULT_POINTWISE_INITIALIZER),this.pointwiseRegularizer=kt(t.pointwiseRegularizer),this.pointwiseConstraint=Ht(t.pointwiseConstraint)}build(e){if(e=dt(e),e.length{e=Re(e);let n;if(this.rank===1)throw new $e("1D separable convolution is not implemented yet.");return this.rank===2&&(this.dataFormat==="channelsFirst"&&(e=Ue(e,[0,2,3,1])),n=Oi(e,this.depthwiseKernel.read(),this.pointwiseKernel.read(),this.strides,this.padding,this.dilationRate,"NHWC")),this.useBias&&(n=nr(n,this.bias.read(),this.dataFormat)),this.activation!=null&&(n=this.activation.apply(n)),this.dataFormat==="channelsFirst"&&(n=Ue(n,[0,3,1,2])),n})}getConfig(){let e=super.getConfig();return delete e.rank,delete e.kernelInitializer,delete e.kernelRegularizer,delete e.kernelConstraint,e.depthwiseInitializer=Et(this.depthwiseInitializer),e.pointwiseInitializer=Et(this.pointwiseInitializer),e.depthwiseRegularizer=ht(this.depthwiseRegularizer),e.pointwiseRegularizer=ht(this.pointwiseRegularizer),e.depthwiseConstraint=Gt(this.depthwiseConstraint),e.pointwiseConstraint=Gt(this.pointwiseConstraint),e}};qI.className="SeparableConv";var vx=class extends qI{constructor(e){super(2,e)}};vx.className="SeparableConv2D";se.registerClass(vx);var Pm=class extends mp{constructor(e){super(1,e);Pm.verifyArgs(e),this.inputSpec=[{ndim:3}]}getConfig(){let e=super.getConfig();return delete e.rank,delete e.dataFormat,e}static verifyArgs(e){if(typeof e.kernelSize!="number"&&!Cb(e.kernelSize,"number",1,1))throw new B(`Conv1D expects config.kernelSize to be number or number[] with length 1, but received ${JSON.stringify(e.kernelSize)}.`)}};Pm.className="Conv1D";se.registerClass(Pm);var wx=class extends qe{constructor(e){super(e);typeof e.cropping=="number"?this.cropping=[[e.cropping,e.cropping],[e.cropping,e.cropping]]:typeof e.cropping[0]=="number"?this.cropping=[[e.cropping[0],e.cropping[0]],[e.cropping[1],e.cropping[1]]]:this.cropping=e.cropping,this.dataFormat=e.dataFormat===void 0?"channelsLast":e.dataFormat,this.inputSpec=[{ndim:4}]}computeOutputShape(e){return this.dataFormat==="channelsFirst"?[e[0],e[1],e[2]-this.cropping[0][0]-this.cropping[0][1],e[3]-this.cropping[1][0]-this.cropping[1][1]]:[e[0],e[1]-this.cropping[0][0]-this.cropping[0][1],e[2]-this.cropping[1][0]-this.cropping[1][1],e[3]]}call(e,t){return D(()=>{if(e=Re(e),this.dataFormat==="channelsLast"){let n=pm(e,this.cropping[0][0],e.shape[1]-this.cropping[0][0]-this.cropping[0][1],2);return pm(n,this.cropping[1][0],e.shape[2]-this.cropping[1][1]-this.cropping[1][0],3)}else{let n=pm(e,this.cropping[0][0],e.shape[2]-this.cropping[0][0]-this.cropping[0][1],3);return pm(n,this.cropping[1][0],e.shape[3]-this.cropping[1][1]-this.cropping[1][0],4)}})}getConfig(){let e={cropping:this.cropping,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}};wx.className="Cropping2D";se.registerClass(wx);var kx=class extends qe{constructor(e){super(e);this.DEFAULT_SIZE=[2,2],this.inputSpec=[{ndim:4}],this.size=e.size==null?this.DEFAULT_SIZE:e.size,this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Rt(this.dataFormat),this.interpolation=e.interpolation==null?"nearest":e.interpolation,sB(this.interpolation)}computeOutputShape(e){if(this.dataFormat==="channelsFirst"){let t=e[2]==null?null:this.size[0]*e[2],n=e[3]==null?null:this.size[1]*e[3];return[e[0],e[1],t,n]}else{let t=e[1]==null?null:this.size[0]*e[1],n=e[2]==null?null:this.size[1]*e[2];return[e[0],t,n,e[3]]}}call(e,t){return D(()=>{let n=Re(e),a=n.shape;if(this.dataFormat==="channelsFirst"){n=Ue(n,[0,2,3,1]);let r=this.size[0]*a[2],s=this.size[1]*a[3],i=this.interpolation==="nearest"?n.resizeNearestNeighbor([r,s]):n.resizeBilinear([r,s]);return Ue(i,[0,3,1,2])}else{let r=this.size[0]*a[1],s=this.size[1]*a[2];return this.interpolation==="nearest"?n.resizeNearestNeighbor([r,s]):n.resizeBilinear([r,s])}})}getConfig(){let e={size:this.size,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}};kx.className="UpSampling2D";se.registerClass(kx);function z4(e,t,n=[1,1],a="valid",r,s){return D(()=>{r==null&&(r=Fa()),Rt(r);let i=yx(e,r);if(e.rank!==4)throw new B(`Input for depthwiseConv2d is required to be 4-D, but is instead ${e.rank}-D`);if(t.rank!==4)throw new B(`depthwiseKernel is required to be 4-D, but is instead ${t.rank}-D`);return i=kr(i,t,n,a==="same"?"same":"valid","NHWC",s),r==="channelsFirst"&&(i=Ue(i,[0,3,1,2])),i})}var Ix=class extends bx{constructor(e){super(2,e);this.depthwiseKernel=null,this.depthMultiplier=e.depthMultiplier==null?1:e.depthMultiplier,this.depthwiseInitializer=wt(e.depthwiseInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.depthwiseConstraint=Ht(e.depthwiseConstraint),this.depthwiseRegularizer=kt(e.depthwiseRegularizer)}build(e){if(e=dt(e),e.length<4)throw new B(`Inputs to DepthwiseConv2D should have rank 4. Received input shape: ${JSON.stringify(e)}.`);let t=this.dataFormat==="channelsFirst"?1:3;if(e[t]==null||e[t]<0)throw new B(`The channel dimension of the inputs to DepthwiseConv2D should be defined, but is not (${e[t]}).`);let n=e[t],a=[this.kernelSize[0],this.kernelSize[1],n,this.depthMultiplier];this.depthwiseKernel=this.addWeight("depthwise_kernel",a,null,this.depthwiseInitializer,this.depthwiseRegularizer,!0,this.depthwiseConstraint),this.useBias?this.bias=this.addWeight("bias",[n*this.depthMultiplier],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(e,t){return D(()=>{e=Re(e);let n=z4(e,this.depthwiseKernel.read(),this.strides,this.padding,this.dataFormat,null);return this.useBias&&(n=nr(n,this.bias.read(),this.dataFormat)),this.activation!=null&&(n=this.activation.apply(n)),n})}computeOutputShape(e){e=dt(e);let t=this.dataFormat==="channelsFirst"?e[2]:e[1],n=this.dataFormat==="channelsFirst"?e[3]:e[2],a=this.dataFormat==="channelsFirst"?e[1]*this.depthMultiplier:e[3]*this.depthMultiplier,r=Ra(t,this.kernelSize[0],this.padding,this.strides[0]),s=Ra(n,this.kernelSize[1],this.padding,this.strides[1]);return this.dataFormat==="channelsFirst"?[e[0],a,r,s]:[e[0],r,s,a]}getConfig(){let e=super.getConfig();return e.depthMultiplier=this.depthMultiplier,e.depthwiseInitializer=Et(this.depthwiseInitializer),e.depthwiseRegularizer=ht(this.depthwiseRegularizer),e.depthwiseConstraint=Gt(this.depthwiseRegularizer),e}};Ix.className="DepthwiseConv2D";se.registerClass(Ix);function KI(e,t,n,a){if(Array.isArray(e)){if(t!=null||n!=null)throw new B("When inputs is an array, neither initialState or constants should be provided");a!=null&&(n=e.slice(e.length-a,e.length),e=e.slice(0,e.length-a)),e.length>1&&(t=e.slice(1,e.length)),e=e[0]}function r(s){return s==null||Array.isArray(s)?s:[s]}return t=r(t),n=r(n),{inputs:e,initialState:t,constants:n}}function XI(e,t,n,a=!1,r,s,i=!1,o=!1){return D(()=>{let l=t.shape.length;if(l<3)throw new B(`Input should be at least 3D, but is ${l}D.`);let c=[1,0].concat($a(2,l));if(t=Ue(t,c),s!=null)throw new $e("The rnn() functoin of the deeplearn.js backend does not support constants yet.");i&&console.warn("Backend rnn(): the unroll = true option is not applicable to the imperative deeplearn.js backend."),r!=null&&(r=r.asType("bool").asType("float32"),r.rank===l-1&&(r=Qn(r,-1)),r=Ue(r,c)),a&&(t=Rn(t,0),r!=null&&(r=Rn(r,0)));let u=[],p,d=n,h=t.shape[0],m=pt(t),f;r!=null&&(f=pt(r));for(let y=0;ye(b,d));if(r==null)p=x[0],d=x[1];else{let v=D(()=>{let N=f[y],T=Mn(N).sub(N),E=x[0].mul(N).add(d[0].mul(T)),A=d.map(($,O)=>x[1][O].mul(N).add($.mul(T)));return{output:E,newStates:A}});p=v.output,d=v.newStates}o&&u.push(p)}let g;return o&&(g=Mt(u,1)),[p,g,d]})}var ar=class extends qe{constructor(e){super(e);let t;if(e.cell==null)throw new B("cell property is missing for the constructor of RNN.");if(Array.isArray(e.cell)?t=new Om({cells:e.cell}):t=e.cell,t.stateSize==null)throw new B("The RNN cell should have an attribute `stateSize` (tuple of integers, one integer per RNN state).");this.cell=t,this.returnSequences=e.returnSequences==null?!1:e.returnSequences,this.returnState=e.returnState==null?!1:e.returnState,this.goBackwards=e.goBackwards==null?!1:e.goBackwards,this._stateful=e.stateful==null?!1:e.stateful,this.unroll=e.unroll==null?!1:e.unroll,this.supportsMasking=!0,this.inputSpec=[new Zt({ndim:3})],this.stateSpec=null,this.states_=null,this.numConstants=null,this.keptStates=[]}getStates(){if(this.states_==null){let e=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;return $a(0,e).map(t=>null)}else return this.states_}setStates(e){this.states_=e}computeOutputShape(e){qb(e)&&(e=e[0]),e=e;let t=this.cell.stateSize;Array.isArray(t)||(t=[t]);let n=t[0],a;if(this.returnSequences?a=[e[0],e[1],n]:a=[e[0],n],this.returnState){let r=[];for(let s of t)r.push([e[0],s]);return[a].concat(r)}else return a}computeMask(e,t){return D(()=>{Array.isArray(t)&&(t=t[0]);let n=this.returnSequences?t:null;if(this.returnState){let a=this.states.map(r=>null);return[n].concat(a)}else return n})}get states(){if(this.states_==null){let e=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1,t=[];for(let n=0;ni.shape[i.shape.length-1]),s))throw new B(`An initialState was passed that is not compatible with cell.stateSize. Received stateSpec=${this.stateSpec}; However cell.stateSize is ${this.cell.stateSize}`)}else this.stateSpec=s.map(i=>new Zt({shape:[null,i]}));this.stateful&&this.resetStates()}resetStates(e,t=!1){D(()=>{if(!this.stateful)throw new Cr("Cannot call resetStates() on an RNN Layer that is not stateful.");let n=this.inputSpec[0].shape[0];if(n==null)throw new B("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.states_==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(a=>bt([n,a])):this.states_=[bt([n,this.cell.stateSize])];else if(e==null)Ae(this.states_),this.keptStates!=null&&(Ae(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(a=>bt([n,a])):this.states_[0]=bt([n,this.cell.stateSize]);else{if(Array.isArray(e)||(e=[e]),e.length!==this.states_.length)throw new B(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${e.length} state value(s). Input received: ${e}`);t===!0?this.keptStates.push(this.states_.slice()):Ae(this.states_);for(let a=0;aXt(a.clone()))})}apply(e,t){let n=t==null?null:t.initialState,a=t==null?null:t.constants;t==null&&(t={});let r=KI(e,n,a,this.numConstants);e=r.inputs,n=r.initialState,a=r.constants;let s=[],i=[];if(n!=null){t.initialState=n,s=s.concat(n),this.stateSpec=[];for(let o of n)this.stateSpec.push(new Zt({shape:o.shape}));i=i.concat(this.stateSpec)}if(a!=null&&(t.constants=a,s=s.concat(a),this.numConstants=a.length),s[0]instanceof Da){let o=[e].concat(s),l=this.inputSpec.concat(i),c=this.inputSpec;this.inputSpec=l;let u=super.apply(o,t);return this.inputSpec=c,u}else return super.apply(e,t)}call(e,t){return D(()=>{let n=t==null?null:t.mask,a=t==null?null:t.training,r=t==null?null:t.initialState;e=Re(e),r==null&&(this.stateful?r=this.states_:r=this.getInitialState(e));let s=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;if(r.length!==s)throw new B(`RNN Layer has ${s} state(s) but was passed ${r.length} initial state(s).`);this.unroll&&console.warn("Ignoring unroll = true for RNN layer, due to imperative backend.");let i={training:a},o=XI((d,h)=>{let m=this.cell.call([d].concat(h),i);return[m[0],m.slice(1)]},e,r,this.goBackwards,n,null,this.unroll,this.returnSequences),l=o[0],c=o[1],u=o[2];this.stateful&&this.resetStates(u,a);let p=this.returnSequences?c:l;return this.returnState?[p].concat(u):p})}getInitialState(e){return D(()=>{let t=bt(e.shape);return t=Ce(t,[1,2]),t=sp(t),Array.isArray(this.cell.stateSize)?this.cell.stateSize.map(n=>n>1?Db(t,[1,n]):t):this.cell.stateSize>1?[Db(t,[1,this.cell.stateSize])]:[t]})}get trainableWeights(){return this.trainable?this.cell.trainableWeights:[]}get nonTrainableWeights(){return this.trainable?this.cell.nonTrainableWeights:this.cell.weights}setFastWeightInitDuringBuild(e){super.setFastWeightInitDuringBuild(e),this.cell!=null&&this.cell.setFastWeightInitDuringBuild(e)}getConfig(){let e=super.getConfig(),t={returnSequences:this.returnSequences,returnState:this.returnState,goBackwards:this.goBackwards,stateful:this.stateful,unroll:this.unroll};this.numConstants!=null&&(t.numConstants=this.numConstants);let n=this.cell.getConfig();return this.getClassName()===ar.className&&(t.cell={className:this.cell.getClassName(),config:n}),Object.assign({},n,e,t)}static fromConfig(e,t,n={}){let a=t.cell,r=Ma(a,n);return new e(Object.assign(t,{cell:r}))}};ar.className="RNN";se.registerClass(ar);var lp=class extends qe{},Lm=class extends lp{constructor(e){super(e);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=e.units,Jt(this.units,"units"),this.activation=hs(e.activation==null?this.DEFAULT_ACTIVATION:e.activation),this.useBias=e.useBias==null?!0:e.useBias,this.kernelInitializer=wt(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=wt(e.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=wt(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=kt(e.kernelRegularizer),this.recurrentRegularizer=kt(e.recurrentRegularizer),this.biasRegularizer=kt(e.biasRegularizer),this.kernelConstraint=Ht(e.kernelConstraint),this.recurrentConstraint=Ht(e.recurrentConstraint),this.biasConstraint=Ht(e.biasConstraint),this.dropout=su([1,cs([0,e.dropout==null?0:e.dropout])]),this.recurrentDropout=su([1,cs([0,e.recurrentDropout==null?0:e.recurrentDropout])]),this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(e){e=dt(e),this.kernel=this.addWeight("kernel",[e[e.length-1],this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(e,t){return D(()=>{if(e=e,e.length!==2)throw new B(`SimpleRNNCell expects 2 input Tensors, got ${e.length}.`);let n=e[1];e=e[0];let a=t.training==null?!1:t.training;0Mn(e),rate:this.dropout,training:a})),0Mn(n),rate:this.recurrentDropout,training:a}));let r,s=this.dropoutMask,i=this.recurrentDropoutMask;s!=null?r=tr(L(e,s),this.kernel.read()):r=tr(e,this.kernel.read()),this.bias!=null&&(r=nr(r,this.bias.read())),i!=null&&(n=L(n,i));let o=Z(r,tr(n,this.recurrentKernel.read()));return this.activation!=null&&(o=this.activation.apply(o)),[o,o]})}getConfig(){let e=super.getConfig(),t={units:this.units,activation:ds(this.activation),useBias:this.useBias,kernelInitializer:Et(this.kernelInitializer),recurrentInitializer:Et(this.recurrentInitializer),biasInitializer:Et(this.biasInitializer),kernelRegularizer:ht(this.kernelRegularizer),recurrentRegularizer:ht(this.recurrentRegularizer),biasRegularizer:ht(this.biasRegularizer),activityRegularizer:ht(this.activityRegularizer),kernelConstraint:Gt(this.kernelConstraint),recurrentConstraint:Gt(this.recurrentConstraint),biasConstraint:Gt(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout};return Object.assign({},e,t)}};Lm.className="SimpleRNNCell";se.registerClass(Lm);var Nx=class extends ar{constructor(e){e.cell=new Lm(e),super(e)}call(e,t){return D(()=>{this.cell.dropoutMask!=null&&(Ae(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Ae(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let n=t==null?null:t.mask,a=t==null?null:t.training,r=t==null?null:t.initialState;return super.call(e,{mask:n,training:a,initialState:r})})}static fromConfig(e,t){return new e(t)}};Nx.className="SimpleRNN";se.registerClass(Nx);var zm=class extends lp{constructor(e){super(e);if(this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",e.resetAfter)throw new B("GRUCell does not support reset_after parameter set to true.");this.units=e.units,Jt(this.units,"units"),this.activation=hs(e.activation===void 0?this.DEFAULT_ACTIVATION:e.activation),this.recurrentActivation=hs(e.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:e.recurrentActivation),this.useBias=e.useBias==null?!0:e.useBias,this.kernelInitializer=wt(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=wt(e.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=wt(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=kt(e.kernelRegularizer),this.recurrentRegularizer=kt(e.recurrentRegularizer),this.biasRegularizer=kt(e.biasRegularizer),this.kernelConstraint=Ht(e.kernelConstraint),this.recurrentConstraint=Ht(e.recurrentConstraint),this.biasConstraint=Ht(e.biasConstraint),this.dropout=su([1,cs([0,e.dropout==null?0:e.dropout])]),this.recurrentDropout=su([1,cs([0,e.recurrentDropout==null?0:e.recurrentDropout])]),this.implementation=e.implementation,this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(e){e=dt(e);let t=e[e.length-1];this.kernel=this.addWeight("kernel",[t,this.units*3],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*3],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units*3],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(e,t){return D(()=>{if(e=e,e.length!==2)throw new B(`GRUCell expects 2 input Tensors (inputs, h, c), got ${e.length}.`);let n=t.training==null?!1:t.training,a=e[1];e=e[0],0Mn(e),rate:this.dropout,training:n,count:3})),0Mn(a),rate:this.recurrentDropout,training:n,count:3}));let r=this.dropoutMask,s=this.recurrentDropoutMask,i,o,l;0{this.cell.dropoutMask!=null&&(Ae(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Ae(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let n=t==null?null:t.mask,a=t==null?null:t.training,r=t==null?null:t.initialState;return super.call(e,{mask:n,training:a,initialState:r})})}static fromConfig(e,t){return t.implmentation===0&&(t.implementation=1),new e(t)}};Tx.className="GRU";se.registerClass(Tx);var gp=class extends lp{constructor(e){super(e);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=e.units,Jt(this.units,"units"),this.activation=hs(e.activation===void 0?this.DEFAULT_ACTIVATION:e.activation),this.recurrentActivation=hs(e.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:e.recurrentActivation),this.useBias=e.useBias==null?!0:e.useBias,this.kernelInitializer=wt(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=wt(e.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=wt(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.unitForgetBias=e.unitForgetBias,this.kernelRegularizer=kt(e.kernelRegularizer),this.recurrentRegularizer=kt(e.recurrentRegularizer),this.biasRegularizer=kt(e.biasRegularizer),this.kernelConstraint=Ht(e.kernelConstraint),this.recurrentConstraint=Ht(e.recurrentConstraint),this.biasConstraint=Ht(e.biasConstraint),this.dropout=su([1,cs([0,e.dropout==null?0:e.dropout])]),this.recurrentDropout=su([1,cs([0,e.recurrentDropout==null?0:e.recurrentDropout])]),this.implementation=e.implementation,this.stateSize=[this.units,this.units],this.dropoutMask=null,this.recurrentDropoutMask=null}build(e){var t;e=dt(e);let n=e[e.length-1];this.kernel=this.addWeight("kernel",[n,this.units*4],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*4],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint);let a;if(this.useBias){if(this.unitForgetBias){let r=this.biasInitializer,s=this.units;a=new(t=class extends fa{apply(i,o){let l=r.apply([s]),c=new hm().apply([s]),u=r.apply([s*2]);return W1(W1(l,c),u)}},t.className="CustomInit",t)}else a=this.biasInitializer;this.bias=this.addWeight("bias",[this.units*4],null,a,this.biasRegularizer,!0,this.biasConstraint)}else this.bias=null;this.built=!0}call(e,t){return D(()=>{let n=t.training==null?!1:t.training;if(e=e,e.length!==3)throw new B(`LSTMCell expects 3 input Tensors (inputs, h, c), got ${e.length}.`);let a=e[1],r=e[2];e=e[0],0Mn(e),rate:this.dropout,training:n,count:4})),0Mn(a),rate:this.recurrentDropout,training:n,count:4}));let s=this.dropoutMask,i=this.recurrentDropoutMask,o,l,c,u;0{this.cell.dropoutMask!=null&&(Ae(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Ae(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let n=t==null?null:t.mask,a=t==null?null:t.training,r=t==null?null:t.initialState;return super.call(e,{mask:n,training:a,initialState:r})})}static fromConfig(e,t){return t.implmentation===0&&(t.implementation=1),new e(t)}};Sx.className="LSTM";se.registerClass(Sx);var Om=class extends lp{constructor(e){super(e);this.cells=e.cells}get stateSize(){let e=[];for(let t of this.cells.slice().reverse())Array.isArray(t.stateSize)?e.push(...t.stateSize):e.push(t.stateSize);return e}call(e,t){return D(()=>{e=e;let n=e.slice(1),a=[];for(let i of this.cells.slice().reverse())Array.isArray(i.stateSize)?a.push(n.splice(0,i.stateSize.length)):a.push(n.splice(0,1));a.reverse();let r=[],s;for(let i=0;i{Ui(`RNNCell_${a}`,()=>{n.build(e),Array.isArray(n.stateSize)?t=n.stateSize[0]:t=n.stateSize,e=[e[0],t]})}),this.built=!0}getConfig(){let e=super.getConfig(),t=a=>({className:a.getClassName(),config:a.getConfig()}),n={cells:this.cells.map(t)};return Object.assign({},e,n)}static fromConfig(e,t,n={}){let a=[];for(let r of t.cells)a.push(Ma(r,n));return new e({cells:a})}get trainableWeights(){if(!this.trainable)return[];let e=[];for(let t of this.cells)e.push(...t.trainableWeights);return e}get nonTrainableWeights(){let e=[];for(let t of this.cells)e.push(...t.nonTrainableWeights);if(!this.trainable){let t=[];for(let n of this.cells)t.push(...n.trainableWeights);return t.concat(e)}return e}getWeights(){let e=[];for(let t of this.cells)e.push(...t.weights);return Kb(e)}setWeights(e){let t=[];for(let n of this.cells){let a=n.weights.length,r=e.splice(a);for(let s=0;sU1(t(),n),i=()=>op(s,t,a);return!r||r<=1?Xt(i().clone()):Array(r).fill(void 0).map(i).map(o=>Xt(o.clone()))}var B4=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,a=Object.getOwnPropertySymbols(e);r{if(this.cell.dropoutMask!=null&&(Ae(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Ae(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null),t&&t.constants)throw new B("ConvRNN2D cell does not support constants");let n=t==null?null:t.mask,a=t==null?null:t.training,r=t==null?null:t.initialState;return super.call(e,{mask:n,training:a,initialState:r})})}computeOutputShape(e){let t=this.computeSingleOutputShape(e);return this.returnSequences||(t=[t[0],...t.slice(2)]),this.returnState&&(t=[t,...Array(2).fill([e[0],...t.slice(-3)])]),t}getInitialState(e){return D(()=>{let{stateSize:t}=this.cell,n=e.shape,a=this.computeSingleOutputShape(n),r=[a[0],...a.slice(2)],s=bt(r);return Array.isArray(t)?Array(t.length).fill(s):[s]})}resetStates(e,t=!1){D(()=>{if(!this.stateful)throw new Cr("Cannot call resetStates() on an RNN Layer that is not stateful.");let n=this.inputSpec[0].shape,a=this.computeSingleOutputShape(n),r=[a[0],...a.slice(2)];if(n[0]==null)throw new B("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.getStates()==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>bt(r)):this.states_=[bt(r)];else if(e==null)Ae(this.states_),this.keptStates!=null&&(Ae(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>bt(r)):this.states_[0]=bt(r);else{if(Array.isArray(e)||(e=[e]),e.length!==this.states_.length)throw new B(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${e.length} state value(s). Input received: ${e}`);t?this.keptStates.push(this.states_.slice()):Ae(this.states_);for(let s=0;sXt(s.clone()))})}computeSingleOutputShape(e){let{dataFormat:t,filters:n,kernelSize:a,padding:r,strides:s,dilationRate:i}=this.cell,o=t==="channelsFirst",l=e[o?3:2],c=e[o?4:3],u=Ra(l,a[0],r,s[0],i[0]),p=Ra(c,a[1],r,s[1],i[1]);return[...e.slice(0,2),...o?[n,u,p]:[u,p,n]]}};YI.className="ConvRNN2D";var Bm=class extends gp{constructor(e){let{filters:t,kernelSize:n,strides:a,padding:r,dataFormat:s,dilationRate:i}=e;super(Object.assign({},e,{units:t}));this.filters=t,Jt(this.filters,"filters"),this.kernelSize=cu(n,2,"kernelSize"),this.kernelSize.forEach(o=>Jt(o,"kernelSize")),this.strides=cu(a||1,2,"strides"),this.strides.forEach(o=>Jt(o,"strides")),this.padding=r||"valid",aa(this.padding),this.dataFormat=s||"channelsLast",Rt(this.dataFormat),this.dilationRate=cu(i||1,2,"dilationRate"),this.dilationRate.forEach(o=>Jt(o,"dilationRate"))}build(e){var t;e=dt(e);let n=this.dataFormat==="channelsFirst"?1:e.length-1;if(e[n]==null)throw new B(`The channel dimension of the input should be defined. Found ${e[n]}`);let a=e[n],r=4,s=this.kernelSize.concat([a,this.filters*r]);this.kernel=this.addWeight("kernel",s,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint);let i=this.kernelSize.concat([this.filters,this.filters*r]);if(this.recurrentKernel=this.addWeight("recurrent_kernel",i,null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias){let o;if(this.unitForgetBias){let l=this.biasInitializer,c=this.filters;o=new(t=class extends fa{apply(u,p){let d=l.apply([c]),h=Ya([c]),m=l.apply([c*2]);return Rb([d,h,m])}},t.className="CustomInit",t)}else o=this.biasInitializer;this.bias=this.addWeight("bias",[this.filters*r],null,o,this.biasRegularizer,!0,this.biasConstraint)}this.built=!0}call(e,t){return D(()=>{if(e.length!==3)throw new B(`ConvLSTM2DCell expects 3 input Tensors (inputs, h, c), got ${e.length}.`);let n=t.training||!1,a=e[0],r=e[1],s=e[2],i=4;0Mn(a),rate:this.dropout,training:n,count:i}));let o=this.dropoutMask,l=(Q,ie,re)=>!ie||!ie[re]?Q:L(ie[re],Q),c=l(a,o,0),u=l(a,o,1),p=l(a,o,2),d=l(a,o,3);0Mn(r),rate:this.recurrentDropout,training:n,count:i}));let h=this.recurrentDropoutMask,m=l(r,h,0),f=l(r,h,1),g=l(r,h,2),y=l(r,h,3),b=3,[x,v,N,T]=Pn(this.kernel.read(),i,b),[E,A,$,O]=this.useBias?Pn(this.bias.read(),i):[null,null,null,null];c=this.inputConv(c,x,E,this.padding),u=this.inputConv(u,v,A,this.padding),p=this.inputConv(p,N,$,this.padding),d=this.inputConv(d,T,O,this.padding);let[V,W,H,X]=Pn(this.recurrentKernel.read(),i,b);m=this.recurrentConv(m,V),f=this.recurrentConv(f,W),g=this.recurrentConv(g,H),y=this.recurrentConv(y,X);let q=this.recurrentActivation.apply(Z(c,m)),K=this.recurrentActivation.apply(Z(u,f)),J=Z(L(K,s),L(q,this.activation.apply(Z(p,g)))),te=L(this.recurrentActivation.apply(Z(d,y)),this.activation.apply(J));return[te,te,J]})}getConfig(){let e=super.getConfig(),{units:t}=e,n=B4(e,["units"]),a={filters:this.filters,kernelSize:this.kernelSize,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,strides:this.strides};return Object.assign({},n,a)}inputConv(e,t,n,a){let r=$t(e,t,this.strides,a||"valid",this.dataFormat==="channelsFirst"?"NCHW":"NHWC",this.dilationRate);return n?nr(r,n,this.dataFormat):r}recurrentConv(e,t){return $t(e,t,1,"same",this.dataFormat==="channelsFirst"?"NCHW":"NHWC")}};Bm.className="ConvLSTM2DCell";se.registerClass(Bm);var Cx=class extends YI{constructor(e){let t=new Bm(e);super(Object.assign({},e,{cell:t}))}static fromConfig(e,t){return new e(t)}};Cx.className="ConvLSTM2D";se.registerClass(Cx);var Wm=class extends qe{constructor(e){super(e);this.rate=Math.max(Math.min(e.rate,1),0),this.noiseShape=e.noiseShape,this.seed=e.seed,this.supportsMasking=!0}getNoiseShape(e){if(this.noiseShape==null)return this.noiseShape;let t=e.shape,n=[];for(let a=0;a{this.invokeCallHook(e,t);let n=Re(e);if(0U1(n,this.rate,r,this.seed),()=>n,a)}return e})}getConfig(){let e={rate:this.rate,noiseShape:this.noiseShape,seed:this.seed},t=super.getConfig();return Object.assign(e,t),e}dispose(){return super.dispose()}};Wm.className="Dropout";se.registerClass(Wm);var Ex=class extends Wm{constructor(e){super(e);this.inputSpec=[{ndim:3}]}getNoiseShape(e){let t=e.shape;return[t[0],1,t[2]]}};Ex.className="SpatialDropout1D";se.registerClass(Ex);var _x=class extends qe{constructor(e){super(e);if(this.activation=null,this.useBias=!0,this.kernel=null,this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",e.batchInputShape==null&&e.inputShape==null&&e.inputDim!=null){let t=null;e.batchSize!=null&&(t=e.batchSize),this.batchInputShape=[t,e.inputDim]}this.units=e.units,Jt(this.units,"units"),this.activation=hs(e.activation),e.useBias!=null&&(this.useBias=e.useBias),this.kernelInitializer=wt(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.biasInitializer=wt(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelConstraint=Ht(e.kernelConstraint),this.biasConstraint=Ht(e.biasConstraint),this.kernelRegularizer=kt(e.kernelRegularizer),this.biasRegularizer=kt(e.biasRegularizer),this.activityRegularizer=kt(e.activityRegularizer),this.supportsMasking=!0,this.inputSpec=[{minNDim:2}]}build(e){e=dt(e);let t=e[e.length-1];this.kernel==null&&(this.kernel=this.addWeight("kernel",[t,this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint))),this.inputSpec=[{minNDim:2,axes:{[-1]:t}}],this.built=!0}computeOutputShape(e){e=dt(e);let t=e.slice();return t[t.length-1]=this.units,t}call(e,t){return D(()=>{this.invokeCallHook(e,t);let n=Re(e),a=A1(this.activation.getClassName()),r;return a!=null?r=tr(n,this.kernel.read(),a,this.bias?this.bias.read():null):(r=tr(n,this.kernel.read()),this.bias!=null&&(r=nr(r,this.bias.read())),this.activation!=null&&(r=this.activation.apply(r))),r})}getConfig(){let e={units:this.units,activation:ds(this.activation),useBias:this.useBias,kernelInitializer:Et(this.kernelInitializer),biasInitializer:Et(this.biasInitializer),kernelRegularizer:ht(this.kernelRegularizer),biasRegularizer:ht(this.biasRegularizer),activityRegularizer:ht(this.activityRegularizer),kernelConstraint:Gt(this.kernelConstraint),biasConstraint:Gt(this.biasConstraint)},t=super.getConfig();return Object.assign(e,t),e}};_x.className="Dense";se.registerClass(_x);var Fx=class extends qe{constructor(e){e=e||{},super(e),this.inputSpec=[{minNDim:3}],this.dataFormat=e.dataFormat}computeOutputShape(e){e=dt(e);for(let t of e.slice(1))if(t==null)throw new B(`The shape of the input to "Flatten" is not fully defined (got ${e.slice(1)}). Make sure to pass a complete "input_shape" or "batch_input_shape" argument to the first layer in your model.`);return[e[0],us(e,1)]}call(e,t){return D(()=>{this.invokeCallHook(e,t);let n=Re(e);if(this.dataFormat==="channelsFirst"&&n.rank>1){let a=[0];for(let r=2;r{this.invokeCallHook(e,t);let n=Re(e);return this.activation.apply(n)})}getConfig(){let e={activation:ds(this.activation)},t=super.getConfig();return Object.assign(e,t),e}};Ax.className="Activation";se.registerClass(Ax);var $x=class extends qe{constructor(e){super(e);this.n=e.n,this.inputSpec=[{ndim:2}]}computeOutputShape(e){return[e[0],this.n,e[1]]}call(e,t){return D(()=>(e=Re(e),uB(e,this.n)))}getConfig(){let e={n:this.n},t=super.getConfig();return Object.assign(e,t),e}};$x.className="RepeatVector";se.registerClass($x);var Dx=class extends qe{constructor(e){super(e);this.targetShape=e.targetShape;for(let t=0;t{this.invokeCallHook(e,t);let n=Re(e),a=n.shape,r=a.slice(0,1).concat(this.fixUnknownDimension(a.slice(1),this.targetShape));return n.reshape(r)})}getConfig(){let e={targetShape:this.targetShape},t=super.getConfig();return Object.assign(e,t),e}};Dx.className="Reshape";se.registerClass(Dx);var Mx=class extends qe{constructor(e){super(e);if(e.dims==null)throw new Error("Required configuration field `dims` is missing during Permute constructor call.");if(!Array.isArray(e.dims))throw new Error(`Permute constructor requires \`dims\` to be an Array, but received ${e.dims} instead.`);let t=$a(1,e.dims.length+1);if(!k.arraysEqual(e.dims.slice().sort(),t))throw new Error("Invalid permutation `dims`: "+JSON.stringify(e.dims)+" `dims` must contain consecutive integers starting from 1.");this.dims=e.dims,this.dimsIncludingBatch=[0].concat(this.dims),this.inputSpec=[new Zt({ndim:this.dims.length+1})]}computeOutputShape(e){e=dt(e);let t=e.slice();return this.dims.forEach((n,a)=>{t[a+1]=e[n]}),t}call(e,t){return Ue(Re(e),this.dimsIncludingBatch)}getConfig(){let e={dims:this.dims},t=super.getConfig();return Object.assign(e,t),e}};Mx.className="Permute";se.registerClass(Mx);var Rx=class extends qe{constructor(e){super(e==null?{}:e);this.supportsMasking=!0,e!=null?this.maskValue=e.maskValue==null?0:e.maskValue:this.maskValue=0}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={maskValue:this.maskValue};return Object.assign(t,e),t}computeMask(e,t){let n=Re(e),a=-1;return Lc(ss(n,this.maskValue),a)}call(e,t){return D(()=>{this.invokeCallHook(e,t);let n=Re(e),a=-1,r=!0,s=Lc(ss(n,this.maskValue),a,r);return n.mul(s.asType(n.dtype))})}};Rx.className="Masking";se.registerClass(Rx);var Px=class extends qe{constructor(e){super(e);if(this.embeddings=null,this.DEFAULT_EMBEDDINGS_INITIALIZER="randomUniform",e.batchInputShape==null&&e.inputShape==null){let t=null;e.batchSize!=null&&(t=e.batchSize),e.inputLength==null?this.batchInputShape=[t,null]:this.batchInputShape=[t].concat(xt(e.inputLength))}this.inputDim=e.inputDim,Jt(this.inputDim,"inputDim"),this.outputDim=e.outputDim,Jt(this.outputDim,"outputDim"),this.embeddingsInitializer=wt(e.embeddingsInitializer||this.DEFAULT_EMBEDDINGS_INITIALIZER),this.embeddingsRegularizer=kt(e.embeddingsRegularizer),this.activityRegularizer=kt(e.activityRegularizer),this.embeddingsConstraint=Ht(e.embeddingsConstraint),this.maskZero=e.maskZero,this.supportsMasking=e.maskZero,this.inputLength=e.inputLength}build(e){this.embeddings=this.addWeight("embeddings",[this.inputDim,this.outputDim],this.dtype,this.embeddingsInitializer,this.embeddingsRegularizer,!0,this.embeddingsConstraint),this.built=!0}warnOnIncompatibleInputShape(e){}computeMask(e,t){return D(()=>this.maskZero?(e=Re(e),ss(e,He(e))):null)}computeOutputShape(e){if(e=dt(e),this.inputLength==null)return[...e,this.outputDim];let t=xt(this.inputLength);if(t.length!==e.length-1)throw new B(`"inputLength" is ${this.inputLength}, but received input shape has shape ${e}`);{let n=0;for(let a=0;a{this.invokeCallHook(e,t);let n=Re(e);return n.dtype!=="int32"&&(n=rp(n,"int32")),V1(this.embeddings.read(),n.as1D()).reshape(dt(this.computeOutputShape(n.shape)))})}getConfig(){let e={inputDim:this.inputDim,outputDim:this.outputDim,embeddingsInitializer:Et(this.embeddingsInitializer),embeddingsRegularizer:ht(this.embeddingsRegularizer),activityRegularizer:ht(this.activityRegularizer),embeddingsConstraint:Gt(this.embeddingsConstraint),maskZero:this.maskZero,inputLength:this.inputLength},t=super.getConfig();return Object.assign(e,t),e}};Px.className="Embedding";se.registerClass(Px);var Ki=class extends qe{constructor(e){super(e||{});this.supportsMasking=!0}mergeFunction(e){throw new $e}computeElementwiseOpOutputShape(e,t){if(e==null||t==null)return null;if(e.length1)throw new B(`Can not merge tensors with different batch sizes. Got tensors with shapes: ${JSON.stringify(e)}.`);let n=e[0]==null?null:e[0].slice(1);for(let r=1;rr.length);e.indexOf(null)===-1&&ls(a).length===1?this.reshapeRequired=!1:this.reshapeRequired=!0}call(e,t){return D(()=>{if(e=e,this.reshapeRequired){let n=[],a=e.map(r=>r.rank);if(a.indexOf(null)===-1){let r=cs(a);for(let s of e){let i=s.rank;for(let o=0;o1){let c=$a(1,l).concat([0]);n.push(Ue(o,c)),r=!0}else n.push(o)}let s=this.mergeFunction(n),i=s.rank;if(r){if(i==null){let o=s.shape,l=o.length,c=o[l-1],u=[c].concat(o.slice(0,o.length-1));s=Ue(s.reshape([-1,c]),[1,0]).reshape(u)}else if(i>1){let o=[i-1].concat($a(0,i-1));s=Ue(s,o)}}return s}}else return this.mergeFunction(e)})}computeOutputShape(e){e=e;let t;e[0]==null?t=null:t=e[0].slice(1);for(let a=1;a{if(t==null)return null;if(!Array.isArray(t))throw new B("`mask` should be an Array");if(!Array.isArray(e))throw new B("`inputs` should be an Array");if(t.length!==e.length)throw new B(`The Array 'inputs' and 'mask' are expected to have the same length, but have different lengths (${e.length} vs ${t.length})`);if(t.every(a=>a==null))return null;t=t.map(a=>a==null?a:Qn(a,0));let n=t[0];for(let a=1;a{let t=e[0].clone();for(let n=1;n{let t=e[0].clone();for(let n=1;n{let t=e[0].clone();for(let n=1;n{let t=e[0];for(let n=1;n{let t=e[0];for(let n=1;n1)throw new B("A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got input shapes: "+JSON.stringify(e))}mergeFunction(e){return D(()=>Rb(e,this.axis))}computeOutputShape(e){if(!(Array.isArray(e)&&Array.isArray(e[0])))throw new B("A `Concatenate` layer should be called on a list of inputs.");let t=e,n=t[0].slice(),a=this.axis<0?n.length+this.axis:this.axis;for(let r of t.slice(1)){if(n[a]==null||r[a]==null){n[a]=null;break}n[a]+=r[a]}return n}computeMask(e,t){if(t==null)return null;if(!Array.isArray(t))throw new B("`mask` should be an array for Concatenate");if(!Array.isArray(e))throw new B("`inputs` should be an array for Concatenate");if(t.length!==e.length)throw new B(`Mismatch in the length of mask (${t.length}) and the legnth of inputs (${e.length})`);return D(()=>{let n=!0;if(t.forEach(s=>{if(s!=null){n=!1;return}}),n)return null;let a=[];for(let s=0;s3||t.shape.length>3)throw new $e("batchDot is not implemented for tensors of 4D or higher rank yet");if(k.assert(e.shape.length>=2,()=>`batchDot requires the rank of x to be >= 2, but got ${e.shape.length}`),k.assert(e.shape.length>=2,()=>`batchDot requires the rank of y to be >= 2, but got ${t.shape.length}`),typeof n=="number"&&(n=[n,n]),e.dtype==="complex64"||t.dtype==="complex64")throw new $e("batchDot is not implemented for complex64-type Tensors yet.");let a=e.shape.length,r=t.shape.length;n==null&&(n=[a-1,r-2]);let s=n;return D(()=>{let i;if(a>r){i=a-r;let l=[];for(let c=0;ca){i=r-a;let l=[];for(let c=0;c0){let l;a>r?l=a+r-3:l=a-1;let c=[];for(let u=l;u"A `Dot` layer should be called on a list of exactly 2 inputs.");let t=e[0],n=e[1];if(t.length>3||n.length>3)throw new $e("Dot layer does not support tensors of 4D or higher rank yet.");let a=this.interpretAxes(t,n);if(t[a[0]]!==n[a[1]])throw new B(`Dimension incompatibility: ${t[a[0]]} !== ${n[a[1]]}`)}mergeFunction(e){if(e.length!==2)throw new B(`A \`Dot\` layer must be called on exactly 2 inputs, but received ${e.length} input(s).`);let t=e[0],n=e[1],a;return Array.isArray(this.axes)?a=this.axes.map((r,s)=>yp(r,e[s].shape.length)):a=[yp(this.axes,t.shape.length),yp(this.axes,n.shape.length)],this.normalize&&(t=Tm(t,a[0]),n=Tm(n,a[1])),W4(t,n,a)}interpretAxes(e,t){let n;return Array.isArray(this.axes)?n=this.axes:n=[yp(this.axes,e.length),yp(this.axes,t.length)],n}computeOutputShape(e){k.assert(Array.isArray(e)&&e.length===2&&Array.isArray(e[0])&&Array.isArray(e[1]),()=>"A `Dot` layer should be called on a list of exactly 2 inputs.");let t=e[0].slice(),n=e[1].slice();if(t.length>3||n.length>3)throw new $e("Dot layer does not support tensors of 4D or higher rank yet.");let a=this.interpretAxes(t,n);t.splice(a[0],1),n.splice(a[1],1),n.splice(0,1);let r=t.concat(n);return r.length===1&&r.push(1),r}computeMask(e,t){return null}getConfig(){let e={axes:this.axes,normalize:this.normalize},t=super.getConfig();return Object.assign(e,t),e}};Ux.className="Dot";se.registerClass(Ux);var Gx=class extends qe{constructor(e){super(e);this.supportsMasking=!0,this.stddev=e.stddev}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={stddev:this.stddev};return Object.assign(t,e),t}call(e,t){return D(()=>{this.invokeCallHook(e,t);let n=Re(e);return op(()=>dm(n.shape,0,this.stddev).add(n),()=>n,t.training||!1)})}};Gx.className="GaussianNoise";se.registerClass(Gx);var Hx=class extends qe{constructor(e){super(e);this.supportsMasking=!0,this.rate=e.rate}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={rate:this.rate};return Object.assign(t,e),t}call(e,t){return D(()=>{this.invokeCallHook(e,t);let n=Re(e);return this.rate>0&&this.rate<1?op(()=>{let a=Math.sqrt(this.rate/(1-this.rate));return n.mul(dm(n.shape,1,a))},()=>n,t.training||!1):n})}};Hx.className="GaussianDropout";se.registerClass(Hx);var jx=class extends qe{constructor(e){super(e);this.supportsMasking=!0,this.rate=e.rate,this.noiseShape=e.noiseShape}_getNoiseShape(e){return this.noiseShape||Re(e).shape}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={rate:this.rate};return Object.assign(t,e),t}call(e,t){return D(()=>{if(this.rate<1&&this.rate>0){let n=this._getNoiseShape(e);return op(()=>{let a=Re(e),r=1.6732632423543772,s=1.0507009873554805,i=-r*s,o=Nr(Ql(n),this.rate);o=rp(o,"float32");let l=((1-this.rate)*(1+this.rate*i**2))**-.5,c=-l*i*this.rate;return a.mul(o).add(o.add(-1).mul(i)).mul(l).add(c)},()=>Re(e),t.training||!1)}return e})}};jx.className="AlphaDropout";se.registerClass(jx);function bp(e,t,n,a,r,s=.001){let i;if(e.rank===2)i=ck(e,t,n,a,r,s);else if(e.rank===3)i=pk(e,t,n,a,r,s);else if(e.rank===4)i=dk(e,t,n,a,r,s);else throw new $e(`batchNormalization is not implemented for array of rank ${e.rank} yet`);return i}function V4(e,t,n,a,r=.001){return D(()=>{let s=Bh(e,a),i=s.mean,o=s.variance;return[bp(e,i,o,n,t,r),i,o]})}function U4(e,t,n,a,r=.001){return D(()=>{let s=Bh(e,a),i=s.mean,o=s.variance,l=[];for(let h of $a(0,e.rank))a.indexOf(h)!==-1?l.push(1):l.push(e.shape[h]);let c=i.reshape(l),u=o.reshape(l),p=t==null?null:t.reshape(l),d=n==null?null:n.reshape(l);return[bp(e,c,u,d,p,r),i,o]})}function G4(e,t,n,a,r=.001){return k.arraysEqual(a.slice().sort(),$a(0,e.rank-1))?V4(e,t,n,a,r):U4(e,t,n,a,r)}var qx=class extends qe{constructor(e){e==null&&(e={}),super(e),this.supportsMasking=!0,this.axis=e.axis==null?-1:e.axis,this.momentum=e.momentum==null?.99:e.momentum,this.epsilon=e.epsilon==null?.001:e.epsilon,this.center=e.center==null?!0:e.center,this.scale=e.scale==null?!0:e.scale,this.betaInitializer=wt(e.betaInitializer||"zeros"),this.gammaInitializer=wt(e.gammaInitializer||"ones"),this.movingMeanInitializer=wt(e.movingMeanInitializer||"zeros"),this.movingVarianceInitializer=wt(e.movingVarianceInitializer||"ones"),this.betaConstraint=Ht(e.betaConstraint),this.gammaConstraint=Ht(e.gammaConstraint),this.betaRegularizer=kt(e.betaRegularizer),this.gammaRegularizer=kt(e.gammaRegularizer)}build(e){e=dt(e);let t=this.axis>=0?this.axis:this.axis+e.length,n=e[t];if(n==null)throw new B(`Axis ${t} of input tensor should have a defined dimension but the layer received an input with shape ${JSON.stringify(e)}.`);this.inputSpec=[new Zt({ndim:e.length,axes:{[t]:n}})];let a=[n];this.scale&&(this.gamma=this.addWeight("gamma",a,null,this.gammaInitializer,this.gammaRegularizer,!0,this.gammaConstraint)),this.center&&(this.beta=this.addWeight("beta",a,null,this.betaInitializer,this.betaRegularizer,!0,this.betaConstraint)),this.movingMean=this.addWeight("moving_mean",a,null,this.movingMeanInitializer,null,!1),this.movingVariance=this.addWeight("moving_variance",a,null,this.movingVarianceInitializer,null,!1),this.built=!0}call(e,t){return D(()=>{let n=t.training==null?!1:t.training,a=Re(e),r=a.shape,s=r.length,i=$a(0,s),o=this.axis>=0?this.axis:this.axis+s;i.splice(o,1);let l=Bi(1,s);l[o]=r[o];let c=i.slice();c.sort();let u=!k.arraysEqual(c,$a(0,s).slice(0,s-1)),p=()=>{if(u){let g=this.movingMean.read().reshape(l),y=this.movingVariance.read().reshape(l),b=this.center?this.beta.read().reshape(l):null,x=this.scale?this.gamma.read().reshape(l):null;return bp(a,g,y,b,x,this.epsilon)}else return bp(a,this.movingMean.read(),this.movingVariance.read(),this.beta==null?null:this.beta.read(),this.gamma==null?null:this.gamma.read(),this.epsilon)};if(!n)return p();let[d,h,m]=G4(a,this.gamma.read(),this.beta.read(),i,this.epsilon),f=(g,y,b)=>{D(()=>{let x=1-b,v=g.read(),N=v.sub(y).mul(x);g.write(v.sub(N))})};return(()=>{f(this.movingMean,h,this.momentum),f(this.movingVariance,m,this.momentum)})(),d})}getConfig(){let e={axis:this.axis,momentum:this.momentum,epsilon:this.epsilon,center:this.center,scale:this.scale,betaInitializer:Et(this.betaInitializer),gammaInitializer:Et(this.gammaInitializer),movingMeanInitializer:Et(this.movingMeanInitializer),movingVarianceInitializer:Et(this.movingVarianceInitializer),betaRegularizer:ht(this.betaRegularizer),gammaRegularizer:ht(this.gammaRegularizer),betaConstraint:Gt(this.betaConstraint),gammaConstraint:Gt(this.gammaConstraint)},t=super.getConfig();return Object.assign(e,t),e}};qx.className="BatchNormalization";se.registerClass(qx);var Kx=class extends qe{constructor(e){if(e==null&&(e={}),super(e),this.axis=e.axis==null?-1:e.axis,typeof this.axis=="number"){if(!Number.isInteger(this.axis))throw new Error(`Expected axis to be an integer, but received ${this.axis}`)}else if(Array.isArray(this.axis)){for(let t of this.axis)if(!Number.isInteger(t))throw new Error(`Expected axis to be an array of integers, but received ${JSON.stringify(this.axis)}`)}else throw new Error(`Expected axis to be an integer or an array of integers, but received ${JSON.stringify(this.axis)}`);this.epsilon=e.epsilon==null?.001:e.epsilon,this.center=e.center==null?!0:e.center,this.scale=e.scale==null?!0:e.scale,this.betaInitializer=wt(e.betaInitializer||"zeros"),this.gammaInitializer=wt(e.gammaInitializer||"ones"),this.betaRegularizer=kt(e.betaRegularizer),this.gammaRegularizer=kt(e.gammaRegularizer),this.supportsMasking=!0}build(e){e=dt(e);let t=e.length;typeof this.axis=="number"&&(this.axis=[this.axis]);for(let r=0;r=t)throw new Error(`Invalid axis: ${r}`);if(this.axis.length!==ls(this.axis).length)throw new Error(`Found duplicate axes in: ${this.axis}`);let n=this.axis.map(r=>e[r]),a=!0;this.scale?this.gamma=this.addWeight("gamma",n,"float32",this.gammaInitializer,this.gammaRegularizer,a):this.gamma=null,this.center?this.beta=this.addWeight("beta",n,"float32",this.betaInitializer,this.betaRegularizer,a):this.beta=null,this.built=!0}call(e,t){let n=Re(e),a=n.shape,r=a.length;return D(()=>{let s=!0,{mean:i,variance:o}=Bh(n,this.axis,s),l=Bi(1,r);for(let m of this.axis)l[m]=a[m];let c=m=>m!=null&&m.shape.length!==r&&this.axis!==[r-1]?m.reshape(l):m,u=c(this.gamma.read()),p=c(this.beta.read()),d=[],h=[];for(let m=0;m{if(e.rank!==4)throw new B(`temporalPadding expects input tensor to be 4-D, but received a ${e.rank}-D tensor.`);if(t==null&&(t=[[1,1],[1,1]]),t.length!==2||t[0].length!==2||t[1].length!==2)throw new B("spatial2dPadding expects `padding` to be an Array of two Arrays, each of which is an Array of two integers.");if(n==null&&(n=Fa()),n!=="channelsLast"&&n!=="channelsFirst")throw new B(`Unknown data format: ${n}. Supported data formats are 'channelsLast' and 'channelsFirst.`);let a;return n==="channelsFirst"?a=[[0,0],[0,0],t[0],t[1]]:a=[[0,0],t[0],t[1],[0,0]],na(e,a)})}var Xx=class extends qe{constructor(e){if(e==null&&(e={}),super(e),this.dataFormat=e.dataFormat==null?Fa():e.dataFormat,e.padding==null)this.padding=[[1,1],[1,1]];else if(typeof e.padding=="number")this.padding=[[e.padding,e.padding],[e.padding,e.padding]];else{if(e.padding=e.padding,e.padding.length!==2)throw new B(`ZeroPadding2D expects padding to be a length-2 array, but received a length-${e.padding.length} array.`);let t,n;if(typeof e.padding[0]=="number")t=[e.padding[0],e.padding[0]],n=[e.padding[1],e.padding[1]];else{if(e.padding=e.padding,e.padding[0].length!==2)throw new B(`ZeroPadding2D expects height padding to be a length-2 array, but received a length-${e.padding[0].length} array.`);if(t=e.padding[0],e.padding[1].length!==2)throw new B(`ZeroPadding2D expects width padding to be a length-2 array, but received a length-${e.padding[1].length} array.`);n=e.padding[1]}this.padding=[t,n]}this.inputSpec=[new Zt({ndim:4})]}computeOutputShape(e){e=dt(e);let t,n;return this.dataFormat==="channelsFirst"?(e[2]!=null&&e[2]>=0?t=e[2]+this.padding[0][0]+this.padding[0][1]:t=null,e[3]!=null&&e[3]>=0?n=e[3]+this.padding[1][0]+this.padding[1][1]:n=null,[e[0],e[1],t,n]):(e[1]!=null&&e[1]>=0?t=e[1]+this.padding[0][0]+this.padding[0][1]:t=null,e[2]!=null&&e[2]>=0?n=e[2]+this.padding[1][0]+this.padding[1][1]:n=null,[e[0],t,n,e[3]])}call(e,t){return D(()=>H4(Re(e),this.padding,this.dataFormat))}getConfig(){let e={padding:this.padding,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}};Xx.className="ZeroPadding2D";se.registerClass(Xx);function Vm(e,t,n,a,r,s){return D(()=>{Rt(r),R1(s),aa(a),n==null&&(n=[1,1]),a==null&&(a="valid"),r==null&&(r=Fa()),s==null&&(s="max"),e=yx(e,r);let i,o=a==="same"?"same":"valid";return s==="max"?i=Dt(e,t,n,o):i=Zn(e,t,n,o),r==="channelsFirst"&&(i=Ue(i,[0,3,1,2])),i})}function JI(e,t,n,a,r,s){return D(()=>{Rt(r),R1(s),aa(a),n==null&&(n=[1,1,1]),a==null&&(a="valid"),r==null&&(r=Fa()),s==null&&(s="max"),e=HI(e,r);let i,o=a==="same"?"same":"valid";return s==="max"?i=ib(e,t,n,o):i=jy(e,t,n,o),r==="channelsFirst"&&(i=Ue(i,[0,4,1,2,3])),i})}var ZI=class extends qe{constructor(e){if(e.poolSize==null&&(e.poolSize=2),super(e),typeof e.poolSize=="number")this.poolSize=[e.poolSize];else if(Array.isArray(e.poolSize)&&e.poolSize.length===1&&typeof e.poolSize[0]=="number")this.poolSize=e.poolSize;else throw new B(`poolSize for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(e.poolSize)}`);if(Jt(this.poolSize,"poolSize"),e.strides==null)this.strides=this.poolSize;else if(typeof e.strides=="number")this.strides=[e.strides];else if(Array.isArray(e.strides)&&e.strides.length===1&&typeof e.strides[0]=="number")this.strides=e.strides;else throw new B(`strides for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(e.strides)}`);Jt(this.strides,"strides"),this.padding=e.padding==null?"valid":e.padding,aa(this.padding),this.inputSpec=[new Zt({ndim:3})]}computeOutputShape(e){e=dt(e);let t=Ra(e[1],this.poolSize[0],this.padding,this.strides[0]);return[e[0],t,e[2]]}call(e,t){return D(()=>{this.invokeCallHook(e,t),e=sp(Re(e),2);let n=this.poolingFunction(Re(e),[this.poolSize[0],1],[this.strides[0],1],this.padding,"channelsLast");return is(n,[2])})}getConfig(){let e={poolSize:this.poolSize,padding:this.padding,strides:this.strides},t=super.getConfig();return Object.assign(e,t),e}},Yx=class extends ZI{constructor(e){super(e)}poolingFunction(e,t,n,a,r){return Rt(r),aa(a),Vm(e,t,n,a,r,"max")}};Yx.className="MaxPooling1D";se.registerClass(Yx);var Jx=class extends ZI{constructor(e){super(e)}poolingFunction(e,t,n,a,r){return Rt(r),aa(a),Vm(e,t,n,a,r,"avg")}};Jx.className="AveragePooling1D";se.registerClass(Jx);var QI=class extends qe{constructor(e){if(e.poolSize==null&&(e.poolSize=[2,2]),super(e),this.poolSize=Array.isArray(e.poolSize)?e.poolSize:[e.poolSize,e.poolSize],e.strides==null)this.strides=this.poolSize;else if(Array.isArray(e.strides)){if(e.strides.length!==2)throw new B(`If the strides property of a 2D pooling layer is an Array, it is expected to have a length of 2, but received length ${e.strides.length}.`);this.strides=e.strides}else this.strides=[e.strides,e.strides];Jt(this.poolSize,"poolSize"),Jt(this.strides,"strides"),this.padding=e.padding==null?"valid":e.padding,this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Rt(this.dataFormat),aa(this.padding),this.inputSpec=[new Zt({ndim:4})]}computeOutputShape(e){e=dt(e);let t=this.dataFormat==="channelsFirst"?e[2]:e[1],n=this.dataFormat==="channelsFirst"?e[3]:e[2];return t=Ra(t,this.poolSize[0],this.padding,this.strides[0]),n=Ra(n,this.poolSize[1],this.padding,this.strides[1]),this.dataFormat==="channelsFirst"?[e[0],e[1],t,n]:[e[0],t,n,e[3]]}call(e,t){return D(()=>(this.invokeCallHook(e,t),this.poolingFunction(Re(e),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let e={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}},Zx=class extends QI{constructor(e){super(e)}poolingFunction(e,t,n,a,r){return Rt(r),aa(a),Vm(e,t,n,a,r,"max")}};Zx.className="MaxPooling2D";se.registerClass(Zx);var Qx=class extends QI{constructor(e){super(e)}poolingFunction(e,t,n,a,r){return Rt(r),aa(a),Vm(e,t,n,a,r,"avg")}};Qx.className="AveragePooling2D";se.registerClass(Qx);var eN=class extends qe{constructor(e){if(e.poolSize==null&&(e.poolSize=[2,2,2]),super(e),this.poolSize=Array.isArray(e.poolSize)?e.poolSize:[e.poolSize,e.poolSize,e.poolSize],e.strides==null)this.strides=this.poolSize;else if(Array.isArray(e.strides)){if(e.strides.length!==3)throw new B(`If the strides property of a 3D pooling layer is an Array, it is expected to have a length of 3, but received length ${e.strides.length}.`);this.strides=e.strides}else this.strides=[e.strides,e.strides,e.strides];Jt(this.poolSize,"poolSize"),Jt(this.strides,"strides"),this.padding=e.padding==null?"valid":e.padding,this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Rt(this.dataFormat),aa(this.padding),this.inputSpec=[new Zt({ndim:5})]}computeOutputShape(e){e=dt(e);let t=this.dataFormat==="channelsFirst"?e[2]:e[1],n=this.dataFormat==="channelsFirst"?e[3]:e[2],a=this.dataFormat==="channelsFirst"?e[4]:e[3];return t=Ra(t,this.poolSize[0],this.padding,this.strides[0]),n=Ra(n,this.poolSize[1],this.padding,this.strides[1]),a=Ra(a,this.poolSize[2],this.padding,this.strides[2]),this.dataFormat==="channelsFirst"?[e[0],e[1],t,n,a]:[e[0],t,n,a,e[4]]}call(e,t){return D(()=>(this.invokeCallHook(e,t),this.poolingFunction(Re(e),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let e={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}},ev=class extends eN{constructor(e){super(e)}poolingFunction(e,t,n,a,r){return Rt(r),aa(a),JI(e,t,n,a,r,"max")}};ev.className="MaxPooling3D";se.registerClass(ev);var tv=class extends eN{constructor(e){super(e)}poolingFunction(e,t,n,a,r){return Rt(r),aa(a),JI(e,t,n,a,r,"avg")}};tv.className="AveragePooling3D";se.registerClass(tv);var tN=class extends qe{constructor(e){super(e);this.inputSpec=[new Zt({ndim:3})]}computeOutputShape(e){return[e[0],e[2]]}call(e,t){throw new $e}},nv=class extends tN{constructor(e){super(e||{})}call(e,t){return D(()=>{let n=Re(e);return Ct(n,1)})}};nv.className="GlobalAveragePooling1D";se.registerClass(nv);var av=class extends tN{constructor(e){super(e||{})}call(e,t){return D(()=>{let n=Re(e);return ta(n,1)})}};av.className="GlobalMaxPooling1D";se.registerClass(av);var nN=class extends qe{constructor(e){super(e);this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Rt(this.dataFormat),this.inputSpec=[new Zt({ndim:4})]}computeOutputShape(e){return e=e,this.dataFormat==="channelsLast"?[e[0],e[3]]:[e[0],e[1]]}call(e,t){throw new $e}getConfig(){let e={dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}},rv=class extends nN{call(e,t){return D(()=>{let n=Re(e);return this.dataFormat==="channelsLast"?Ct(n,[1,2]):Ct(n,[2,3])})}};rv.className="GlobalAveragePooling2D";se.registerClass(rv);var sv=class extends nN{call(e,t){return D(()=>{let n=Re(e);return this.dataFormat==="channelsLast"?ta(n,[1,2]):ta(n,[2,3])})}};sv.className="GlobalMaxPooling2D";se.registerClass(sv);var aN=class extends qe{constructor(e){super(e);this.layer=e.layer}build(e){this.built=!0}get trainable(){return this.layer!=null?this.layer.trainable:!1}set trainable(e){this.layer!=null&&(this.layer.trainable=e)}get trainableWeights(){return this.layer.trainableWeights}get nonTrainableWeights(){return this.layer.nonTrainableWeights}get updates(){return this.layer._updates}get losses(){return this.layer.losses}getWeights(){return this.layer.getWeights()}setWeights(e){this.layer.setWeights(e)}getConfig(){let e={layer:{className:this.layer.getClassName(),config:this.layer.getConfig()}},t=super.getConfig();return Object.assign(e,t),e}setFastWeightInitDuringBuild(e){super.setFastWeightInitDuringBuild(e),this.layer!=null&&this.layer.setFastWeightInitDuringBuild(e)}static fromConfig(e,t,n={}){let a=t.layer,r=Ma(a,n);delete t.layer;let s={layer:r};return Object.assign(s,t),new e(s)}},iv=class extends aN{constructor(e){super(e);this.supportsMasking=!0}build(e){if(e=dt(e),e.length<3)throw new B(`TimeDistributed layer expects an input shape >= 3D, but received input shape ${JSON.stringify(e)}`);this.inputSpec=[{shape:e}];let t=[e[0]].concat(e.slice(2));this.layer.built||(this.layer.build(t),this.layer.built=!0),super.build(e)}computeOutputShape(e){e=dt(e);let t=[e[0]].concat(e.slice(2)),n=this.layer.computeOutputShape(t),a=e[1];return[n[0],a].concat(n.slice(1))}call(e,t){return D(()=>(e=Re(e),XI((n,a)=>[Re(this.layer.call(n,t)),[]],e,[],!1,null,null,!1,!0)[1]))}};iv.className="TimeDistributed";se.registerClass(iv);function j4(e){Vi(rB,"BidirectionalMergeMode",e)}var q4="concat",ov=class extends aN{constructor(e){super(e);let t=e.layer.getConfig(),n={};n.className=e.layer.getClassName(),n.config=t,this.forwardLayer=Ma(n),t.goBackwards=t.goBackwards!==!0;let a={};if(a.className=e.layer.getClassName(),a.config=t,this.backwardLayer=Ma(a),this.forwardLayer.name="forward_"+this.forwardLayer.name,this.backwardLayer.name="backward_"+this.backwardLayer.name,this.mergeMode=e.mergeMode===void 0?q4:e.mergeMode,j4(this.mergeMode),e.weights)throw new $e("weights support is not implemented for Bidirectional layer yet.");this._stateful=e.layer.stateful,this.returnSequences=e.layer.returnSequences,this.returnState=e.layer.returnState,this.supportsMasking=!0,this._trainable=!0,this.inputSpec=e.layer.inputSpec,this.numConstants=null}get trainable(){return this._trainable}set trainable(e){this._trainable=e,this.forwardLayer!=null&&(this.forwardLayer.trainable=e),this.backwardLayer!=null&&(this.backwardLayer.trainable=e)}getWeights(){return this.forwardLayer.getWeights().concat(this.backwardLayer.getWeights())}setWeights(e){let t=e.length,n=Math.floor(t/2);this.forwardLayer.setWeights(e.slice(0,n)),this.backwardLayer.setWeights(e.slice(n))}computeOutputShape(e){let t=this.forwardLayer.computeOutputShape(e);Array.isArray(t)&&Array.isArray(t[0])||(t=[t]),t=t;let n,a,r;return this.returnState&&(r=t.slice(1)),n=t[0],n=n,this.mergeMode==="concat"?(n[n.length-1]*=2,a=[n]):this.mergeMode==null?a=[n,n.slice()]:a=[n],this.returnState?this.mergeMode==null?a.concat(r).concat(r.slice()):[n].concat(r).concat(r.slice()):Tn(a)}apply(e,t){let n=t==null?null:t.initialState,a=t==null?null:t.constants;t==null&&(t={});let r=KI(e,n,a,this.numConstants);if(e=r.inputs,n=r.initialState,a=r.constants,Array.isArray(e)&&(n=e.slice(1),e=e[0]),(n==null||n.length===0)&&a==null)return super.apply(e,t);let s=[],i=[];if(n!=null){let l=n.length;if(l%2>0)throw new B("When passing `initialState` to a Bidrectional RNN, the state should be an Array containing the states of the underlying RNNs.");t.initialState=n,s.push(...n);let c=n.map(u=>new Zt({shape:u.shape}));this.forwardLayer.stateSpec=c.slice(0,l/2),this.backwardLayer.stateSpec=c.slice(l/2),i.push(...c)}if(a!=null)throw new $e("Support for constants in Bidirectional layers is not implemented yet.");let o=s[0]instanceof Da;for(let l of s)if(l instanceof Da!==o)throw new B("The initial state of a Bidirectional layer cannot be specified as a mix of symbolic and non-symbolic tensors");if(o){let l=[e].concat(s),c=this.inputSpec.concat(i),u=this.inputSpec;this.inputSpec=c;let p=super.apply(l,t);return this.inputSpec=u,p}else return super.apply(e,t)}call(e,t){return D(()=>{let n=t.initialState,a,r;if(n==null)a=this.forwardLayer.call(e,t),r=this.backwardLayer.call(e,t);else{let o=n.slice(0,n.length/2),l=n.slice(n.length/2);a=this.forwardLayer.call(e,Object.assign(t,{initialState:o})),r=this.backwardLayer.call(e,Object.assign(t,{initialState:l}))}let s;this.returnState&&(Array.isArray(a)&&(s=a.slice(1).concat(r.slice(1))),a=a[0],r=r[0]),this.returnSequences&&(r=Rn(r,1));let i;return this.mergeMode==="concat"?i=Rb([a,r]):this.mergeMode==="sum"?i=Z(a,r):this.mergeMode==="ave"?i=L(.5,Z(a,r)):this.mergeMode==="mul"?i=L(a,r):this.mergeMode==null&&(i=[a,r]),this.returnState?this.mergeMode==null?i.concat(s):[i].concat(s):i})}resetStates(e){this.forwardLayer.resetStates(),this.backwardLayer.resetStates()}build(e){Ui(this.forwardLayer.name,()=>{this.forwardLayer.build(e)}),Ui(this.backwardLayer.name,()=>{this.backwardLayer.build(e)}),this.built=!0}computeMask(e,t){Array.isArray(t)&&(t=t[0]);let n;if(this.returnSequences?this.mergeMode==null?n=[t,t]:n=t:this.mergeMode==null?n=[null,null]:n=null,this.returnState){let a=this.forwardLayer.states.map(r=>null);return Array.isArray(n)?n.concat(a).concat(a):[n].concat(a).concat(a)}else return n}get trainableWeights(){return this.forwardLayer.trainableWeights.concat(this.backwardLayer.trainableWeights)}get nonTrainableWeights(){return this.forwardLayer.nonTrainableWeights.concat(this.backwardLayer.nonTrainableWeights)}setFastWeightInitDuringBuild(e){super.setFastWeightInitDuringBuild(e),this.forwardLayer!=null&&this.forwardLayer.setFastWeightInitDuringBuild(e),this.backwardLayer!=null&&this.backwardLayer.setFastWeightInitDuringBuild(e)}getConfig(){let e={mergeMode:this.mergeMode},t=super.getConfig();return Object.assign(e,t),e}static fromConfig(e,t){let n=Ma(t.layer);if(delete t.layer,t.numConstants!=null)throw new $e("Deserialization of a Bidirectional layer with numConstants present is not supported yet.");let a=t;return a.layer=n,new e(a)}};ov.className="Bidirectional";se.registerClass(ov);function vB(e){return new iu(e)}function wB(e){return new mx(e)}function kB(e){return new px(e)}function IB(e){return new dx(e)}function NB(e){return new hx(e)}function TB(e){return new gx(e)}function SB(e){return new fx(e)}function CB(e){return new Pm(e)}function EB(e){return new fp(e)}function _B(e){return new xx(e)}function FB(e){return new Rm(e)}function AB(e){return new vx(e)}function $B(e){return new wx(e)}function DB(e){return new kx(e)}function MB(e){return new Ix(e)}function RB(e){return new Ax(e)}function PB(e){return new _x(e)}function OB(e){return new Wm(e)}function LB(e){return new Ex(e)}function zB(e){return new Fx(e)}function BB(e){return new $x(e)}function WB(e){return new Dx(e)}function VB(e){return new Mx(e)}function UB(e){return new Px(e)}function GB(e){return new Ox(e)}function HB(e){return new zx(e)}function jB(e){return new Vx(e)}function qB(e){return new Bx(e)}function KB(e){return new Wx(e)}function XB(e){return new Lx(e)}function YB(e){return new Ux(e)}function JB(e){return new qx(e)}function ZB(e){return new Kx(e)}function QB(e){return new Xx(e)}function Gb(e){return new Jx(e)}function eW(e){return Gb(e)}function tW(e){return Gb(e)}function Hb(e){return new Qx(e)}function nW(e){return Hb(e)}function aW(e){return Hb(e)}function jb(e){return new tv(e)}function rW(e){return jb(e)}function sW(e){return jb(e)}function iW(e){return new nv(e)}function oW(e){return new rv(e)}function K1(e){return new av(e)}function X1(e){return new sv(e)}function Y1(e){return new Yx(e)}function J1(e){return new Zx(e)}function lW(e){return new ev(e)}function uW(e){return new Tx(e)}function cW(e){return new zm(e)}function pW(e){return new Sx(e)}function dW(e){return new gp(e)}function hW(e){return new Nx(e)}function mW(e){return new Lm(e)}function fW(e){return new Cx(e)}function gW(e){return new Bm(e)}function yW(e){return new ar(e)}function bW(e){return new Om(e)}function xW(e){return new ov(e)}function vW(e){return new iv(e)}var wW=K1,kW=X1,IW=Y1,NW=J1;function TW(e){return new Gx(e)}function SW(e){return new Hx(e)}function CW(e){return new jx(e)}function EW(e){return new Rx(e)}var rN={};Oe(rN,{MAPE:()=>rV,MSE:()=>oV,binaryAccuracy:()=>K4,binaryCrossentropy:()=>X4,categoricalAccuracy:()=>J4,categoricalCrossentropy:()=>Z4,cosineProximity:()=>tV,mape:()=>sV,meanAbsoluteError:()=>nV,meanAbsolutePercentageError:()=>aV,meanSquaredError:()=>iV,mse:()=>lV,precision:()=>Q4,recall:()=>eV,sparseCategoricalAccuracy:()=>Y4});function K4(e,t){return Zb(e,t)}function X4(e,t){return dI(e,t)}function Y4(e,t){return hI(e,t)}function J4(e,t){return Qb(e,t)}function Z4(e,t){return ex(e,t)}function Q4(e,t){return pI(e,t)}function eV(e,t){return qW(e,t)}function tV(e,t){return Yb(e,t)}function nV(e,t){return Sm(e,t)}function aV(e,t){return lu(e,t)}function rV(e,t){return lu(e,t)}function sV(e,t){return lu(e,t)}function iV(e,t){return Hi(e,t)}function oV(e,t){return Hi(e,t)}function lV(e,t){return Hi(e,t)}var sN={};Oe(sN,{modelFromJSON:()=>C4});var iN={};Oe(iN,{l1:()=>cV,l1l2:()=>uV,l2:()=>pV});function uV(e){return new hp(e)}function cV(e){return R4(e)}function pV(e){return P4(e)}var oN=class extends ou{constructor(){super(...arguments);this.model=null}setModel(e){if(!(e instanceof _r))throw new Error("model must be a LayersModel, not some other Container");this.model=e}};function Um(e,t){return et}var uN=class extends oN{constructor(e){super();if(e==null&&(e={}),e.restoreBestWeights)throw new $e("restoreBestWeights = True is not implemented in EarlyStopping yet.");this.monitor=e.monitor||"val_loss",this.minDelta=Math.abs(e.minDelta||0),this.patience=e.patience||0,this.verbose=e.verbose||0,this.mode=e.mode||"auto",this.baseline=e.baseline,["auto","min","max"].indexOf(this.mode)===-1&&(console.warn(`EarlyStopping mode '${this.mode}' is invalid. Falling back to mode 'auto'.`),this.mode="auto"),this.mode==="min"?this.monitorFunc=Um:this.mode==="max"?this.monitorFunc=lN:this.monitor.indexOf("acc")!==-1?this.monitorFunc=lN:this.monitorFunc=Um,this.monitorFunc===Um&&(this.minDelta*=-1)}async onTrainBegin(e){this.wait=0,this.stoppedEpoch=0,this.baseline!=null?this.best=this.baseline:this.best=this.monitorFunc===Um?Infinity:-Infinity}async onEpochEnd(e,t){await ps(t);let n=this.getMonitorValue(t);n!=null&&(this.monitorFunc(n-this.minDelta,this.best)?(this.best=n,this.wait=0):(this.wait++,this.wait>=this.patience&&(this.stoppedEpoch=e,this.model.stopTraining=!0)))}async onTrainEnd(e){this.stoppedEpoch>0&&this.verbose&&console.log(`Epoch ${this.stoppedEpoch}: early stopping.`)}getMonitorValue(e){e==null&&(e={});let t=e[this.monitor];return t==null&&console.warn(`Metric for EarlyStopping ${this.monitor} is not available. Available metrics are: ${Object.keys(e)}`),t}};function dV(e){return new uN(e)}var hV={earlyStopping:dV},Pa;(function(e){e[e.DT_INVALID=0]="DT_INVALID",e[e.DT_FLOAT=1]="DT_FLOAT",e[e.DT_DOUBLE=2]="DT_DOUBLE",e[e.DT_INT32=3]="DT_INT32",e[e.DT_UINT8=4]="DT_UINT8",e[e.DT_INT16=5]="DT_INT16",e[e.DT_INT8=6]="DT_INT8",e[e.DT_STRING=7]="DT_STRING",e[e.DT_COMPLEX64=8]="DT_COMPLEX64",e[e.DT_INT64=9]="DT_INT64",e[e.DT_BOOL=10]="DT_BOOL",e[e.DT_QINT8=11]="DT_QINT8",e[e.DT_QUINT8=12]="DT_QUINT8",e[e.DT_QINT32=13]="DT_QINT32",e[e.DT_BFLOAT16=14]="DT_BFLOAT16",e[e.DT_FLOAT_REF=101]="DT_FLOAT_REF",e[e.DT_DOUBLE_REF=102]="DT_DOUBLE_REF",e[e.DT_INT32_REF=103]="DT_INT32_REF",e[e.DT_UINT8_REF=104]="DT_UINT8_REF",e[e.DT_INT16_REF=105]="DT_INT16_REF",e[e.DT_INT8_REF=106]="DT_INT8_REF",e[e.DT_STRING_REF=107]="DT_STRING_REF",e[e.DT_COMPLEX64_REF=108]="DT_COMPLEX64_REF",e[e.DT_INT64_REF=109]="DT_INT64_REF",e[e.DT_BOOL_REF=110]="DT_BOOL_REF",e[e.DT_QINT8_REF=111]="DT_QINT8_REF",e[e.DT_QUINT8_REF=112]="DT_QUINT8_REF",e[e.DT_QINT32_REF=113]="DT_QINT32_REF",e[e.DT_BFLOAT16_REF=114]="DT_BFLOAT16_REF"})(Pa||(Pa={}));var cN;(function(e){let t;(function(n){n[n.LEGACY=0]="LEGACY",n[n.V1=1]="V1",n[n.V2=2]="V2"})(t=e.CheckpointFormatVersion||(e.CheckpointFormatVersion={}))})(cN||(cN={}));var lv={};function mV(e,t){let n={tfOpName:e,category:"custom",inputs:[],attrs:[],customExecutor:t};lv[e]=n}function pN(e){return lv[e]}function fV(e){delete lv[e]}function I(e,t,n,a,r){let s=t.inputParams[e];if(s&&s.inputIndexStart!==void 0){let o=s.inputIndexStart,l=s.inputIndexEnd===0?void 0:s.inputIndexEnd===void 0?o+1:s.inputIndexEnd;if(s.type==="tensor")return Cn(t.inputNames[s.inputIndexStart],n,a,r);if(s.type==="tensors")return t.inputNames.slice(o,l).map(p=>Cn(p,n,a,r));let c=Cn(t.inputNames.slice(o)[0],n,a,r),u=c.dataSync();return s.type==="number"?u[0]:k.toNestedArray(c.shape,u)}let i=t.attrParams[e];return i&&i.value}function Cn(e,t,n,a){let[r,s]=Ln(e);if(a!=null){let o=a.getHashTableHandleByName(r);if(o!=null)return o}let i=n.currentContextIds.find(o=>!!t[Gm(r,o)]);return i!==void 0?t[Gm(r,i)][s]:void 0}function gV(e,t,n){return t[Gm(e,n.currentContextId)]}function Fr(e,t){let[n,a]=Ln(e);return[Gm(n,t&&t.currentContextId),a]}function Gm(e,t){return t?`${e}-${t}`:e}function Ln(e){let t=e.split(":");return t.length===1?[e,0]:[t[0],Number(t[t.length-1])]}function Hm(e,t,n){let a=I("pad",e,t,n);if(a==="explicit"){a=I("explicitPaddings",e,t,n);let r=[[0,0],[0,0],[0,0],[0,0]];for(let s=0;s<4;s++)r[s][0]=a[s*2],r[s][1]=a[s*2+1];return r}return a}function Ar(e){return e.kept?e:es(e)}var dN={};Oe(dN,{json:()=>yV});var yV=[{tfOpName:"Add",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddV2",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddN",category:"arithmetic",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"BiasAdd",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"Sub",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"RealDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Div",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"DivNoNan",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mul",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Maximum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Minimum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Pow",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SquaredDifference",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorMod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],hN={};Oe(hN,{json:()=>bV});var bV=[{tfOpName:"Abs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan2",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ceil",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ClipByValue",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"clipValueMin",type:"number"},{start:2,name:"clipValueMax",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Complex",category:"basic_math",inputs:[{start:0,name:"real",type:"tensor"},{start:1,name:"imag",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ComplexAbs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Elu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Exp",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Floor",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Imag",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Neg",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Real",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Prelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"alpha",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu6",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Selu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sigmoid",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Rsqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Square",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sign",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Round",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Expm1",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log1p",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Reciprocal",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Softplus",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Erf",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Prod",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axes",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LeakyRelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"alpha",name:"alpha",type:"number",defaultValue:.2},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],mN={};Oe(mN,{json:()=>xV});var xV=[{tfOpName:"EmptyTensorList",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"maxNumElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"LoopCond",category:"control",inputs:[{start:0,name:"pred",type:"tensor"}]},{tfOpName:"Switch",category:"control",inputs:[{start:0,name:"data",type:"tensor"},{start:1,name:"pred",type:"tensor"}]},{tfOpName:"Merge",category:"control",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"Enter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"frame_name",name:"frameName",type:"string"},{tfName:"is_constant",name:"isConstant",type:"bool"}]},{tfOpName:"Exit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NextIteration",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayV3",category:"control",inputs:[{start:0,name:"size",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"dynamic_size",name:"dynamicSize",type:"bool"},{tfName:"clear_after_read",name:"clearAfterRead",type:"bool"},{tfName:"identical_element_shapes",name:"identicalElementShapes",type:"bool"},{tfName:"tensor_array_name",name:"name",type:"string"}]},{tfOpName:"TensorArrayWriteV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayReadV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayGatherV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"}]},{tfOpName:"TensorArrayScatterV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArrayConcatV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape_except0",name:"elementShapeExcept0",type:"shape",notSupported:!0}]},{tfOpName:"TensorArraySplitV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"tensor",type:"tensor"},{start:2,name:"lengths",type:"number[]"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArraySizeV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}]},{tfOpName:"TensorArrayCloseV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"}]},{tfOpName:"StatelessIf",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"If",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"StatelessWhile",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"While",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"TensorListScatter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListScatterV2",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"},{start:3,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGather",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListSetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListReserve",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListFromTensor",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListStack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"},{tfName:"num_elements",name:"numElements",type:"dtype"}]},{tfOpName:"TensorListSplit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"},{start:2,name:"lengths",type:"number[]"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListConcat",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"}],attrs:[{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPopBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPushBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]}],fN={};Oe(fN,{json:()=>vV});var vV=[{tfOpName:"AvgPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[],notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPoolWithArgmax",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"include_batch_in_index",name:"includeBatchInIndex",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AvgPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Conv1D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"stride",name:"stride",type:"number"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NWC"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"dilation",name:"dilation",type:"number",defaultValue:1}]},{tfOpName:"Conv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"useCudnnOnGpu",name:"useCudnnOnGpu",type:"bool"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"_FusedConv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"use_cudnn_on_gpu",name:"useCudnnOnGpu",type:"bool",defaultValue:!0},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"leakyrelu_alpha",name:"leakyreluAlpha",type:"number"}]},{tfOpName:"Conv2DBackpropInput",category:"convolution",inputs:[{start:2,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:0,name:"outputShape",type:"number[]"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]",notSupported:!0}]},{tfOpName:"DepthwiseConv2d",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"DepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"FusedDepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]}]},{tfOpName:"Conv3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"Dilation2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"rates",name:"dilations",type:"number[]"},{tfName:"padding",name:"pad",type:"string"}]}],gN={};Oe(gN,{json:()=>wV});var wV=[{tfOpName:"Fill",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"},{start:1,name:"value",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"LinSpace",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"num",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"OneHot",category:"creation",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"depth",type:"number"},{start:2,name:"onValue",type:"number",defaultValue:1},{start:3,name:"offValue",type:"number",defaultValue:0}],attrs:[{tfName:"axis",name:"axis",type:"number",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ones",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"OnesLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"RandomUniform",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"minval",name:"minval",type:"number",defaultValue:0},{tfName:"maxval",name:"maxval",type:"number",defaultValue:1},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"seed",name:"seed",type:"number",defaultValue:0},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Range",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"step",type:"number",defaultValue:0}],attrs:[{tfName:"Tidx",name:"dtype",type:"dtype"}]},{tfOpName:"TruncatedNormal",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"means",name:"mean",type:"number",defaultValue:0},{tfName:"stddev",name:"stdDev",type:"number",defaultValue:1},{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Zeros",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"ZerosLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"Multinomial",category:"creation",inputs:[{start:0,name:"logits",type:"tensor"},{start:1,name:"numSamples",type:"number"}],attrs:[{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number"},{tfName:"T",name:"dtype",type:"dtype"},{tfName:"output_dtype",name:"output_dtype",type:"dtype"}]}],yN={};Oe(yN,{json:()=>kV});var kV=[{tfOpName:"NonMaxSuppressionV2",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV3",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV4",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"T_threshold",name:"threshold",type:"dtype",notSupported:!0},{tfName:"pad_to_max_output_size",name:"padToMaxOutputSize",type:"bool"}]},{tfOpName:"NonMaxSuppressionV5",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"},{start:5,name:"softNmsSigma",type:"number"}]},{tfOpName:"Where",category:"dynamic",inputs:[{start:0,name:"condition",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ListDiff",category:"dynamic",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],bN={};Oe(bN,{json:()=>IV});var IV=[{tfOpName:"TopKV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"k",type:"number"}],attrs:[{tfName:"sorted",name:"sorted",type:"bool"}]},{tfOpName:"Unique",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"UniqueV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]}],xN={};Oe(xN,{json:()=>NV});var NV=[{tfOpName:"PlaceholderWithDefault",category:"graph",inputs:[{start:0,name:"default",type:"tensor"}],attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Placeholder",category:"graph",attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Const",category:"graph"},{tfOpName:"Identity",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IdentityN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Snapshot",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Rank",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Size",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Shape",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"ShapeN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Print",category:"graph",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"data",type:"tensors"}],attrs:[{tfName:"message",name:"message",type:"string"},{tfName:"first_n",name:"firstN",type:"number",notSupported:!0},{tfName:"summarize",name:"summarize",type:"number",defaultValue:3}]},{tfOpName:"NoOp",category:"graph",inputs:[]},{tfOpName:"StopGradient",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"FakeQuantWithMinMaxVars",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"min",name:"min",type:"number"},{tfName:"max",name:"max",type:"number"}]}],vN={};Oe(vN,{json:()=>TV});var TV=[{tfOpName:"HashTable",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"HashTableV2",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"LookupTableImport",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableImportV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFind",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFindV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]}],wN={};Oe(wN,{json:()=>SV});var SV=[{tfOpName:"ResizeBilinear",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"half_pixel_centers",name:"halfPixelCenters",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ResizeNearestNeighbor",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"half_pixel_centers",name:"halfPixelCenters",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"CropAndResize",category:"image",inputs:[{start:0,name:"image",type:"tensor"},{start:1,name:"boxes",type:"tensor"},{start:2,name:"boxInd",type:"tensor"},{start:3,name:"cropSize",type:"number[]"}],attrs:[{tfName:"method",name:"method",type:"string"},{tfName:"extrapolation_value",name:"extrapolationValue",type:"number"}]}],kN={};Oe(kN,{json:()=>CV});var CV=[{tfOpName:"Equal",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NotEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Greater",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"GreaterEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Less",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LessEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalAnd",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalNot",category:"logical",inputs:[{start:0,name:"a",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalOr",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Select",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SelectV2",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],IN={};Oe(IN,{json:()=>EV});var EV=[{tfOpName:"_FusedMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMulV2",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Transpose",category:"matrices",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"perm",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],NN={};Oe(NN,{json:()=>_V});var _V=[{tfOpName:"FusedBatchNorm",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV2",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV3",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"LRN",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"depth_radius",name:"radius",type:"number",defaultValue:5},{tfName:"bias",name:"bias",type:"number",defaultValue:1},{tfName:"alpha",name:"alpha",type:"number",defaultValue:1},{tfName:"beta",name:"beta",type:"number",defaultValue:.5}]},{tfOpName:"Softmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"LogSoftmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"SparseToDense",category:"normalization",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!0,notSupported:!0}]}],TN={};Oe(TN,{json:()=>FV});var FV=[{tfOpName:"Bincount",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"size",type:"number"},{start:2,name:"weights",type:"tensor"}]},{tfOpName:"DenseBincount",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"size",type:"number"},{start:2,name:"weights",type:"tensor"}],attrs:[{tfName:"binary_output",name:"binaryOutput",type:"bool"}]},{tfOpName:"Max",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Mean",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Min",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Sum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"All",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Any",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"ArgMax",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"ArgMin",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"Prod",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Cumsum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}],attrs:[{tfName:"exclusive",name:"exclusive",type:"bool"},{tfName:"reverse",name:"reverse",type:"bool"}]}],SN={};Oe(SN,{json:()=>AV});var AV=[{tfOpName:"ConcatV2",category:"slice_join",inputs:[{start:0,end:-1,name:"tensors",type:"tensors"},{start:-1,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"Concat",category:"slice_join",inputs:[{start:1,end:0,name:"tensors",type:"tensors"},{start:0,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"GatherV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"},{start:2,name:"axis",type:"number",defaultValue:0}],attrs:[{tfName:"batch_dims",name:"batchDims",type:"number",defaultValue:0}]},{tfOpName:"Gather",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",notSupported:!0}]},{tfOpName:"Reverse",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"dims",type:"bool[]"}]},{tfOpName:"ReverseV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}]},{tfOpName:"Slice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"size",type:"number[]"}]},{tfOpName:"StridedSlice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"end",type:"number[]"},{start:3,name:"strides",type:"number[]"}],attrs:[{tfName:"begin_mask",name:"beginMask",type:"number",defaultValue:0},{tfName:"end_mask",name:"endMask",type:"number",defaultValue:0},{tfName:"new_axis_mask",name:"newAxisMask",type:"number",defaultValue:0},{tfName:"ellipsis_mask",name:"ellipsisMask",type:"number",defaultValue:0},{tfName:"shrink_axis_mask",name:"shrinkAxisMask",type:"number",defaultValue:0}]},{tfOpName:"Pack",category:"slice_join",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0}]},{tfOpName:"Unpack",category:"slice_join",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0},{tfName:"num",name:"num",type:"number",defaultValue:0,notSupported:!0}]},{tfOpName:"Tile",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"reps",type:"number[]"}]},{tfOpName:"Split",category:"slice_join",inputs:[{start:0,name:"axis",type:"number",defaultValue:0},{start:1,name:"x",type:"tensor"}],attrs:[{tfName:"num_split",name:"numOrSizeSplits",type:"number",defaultValue:1}]},{tfOpName:"SplitV",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"numOrSizeSplits",type:"number[]"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"ScatterNd",category:"slice_join",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"values",type:"tensor"},{start:2,name:"shape",type:"number[]"}]},{tfOpName:"GatherNd",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}]},{tfOpName:"SparseToDense",category:"slice_join",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!1,notSupported:!0}]}],CN={};Oe(CN,{json:()=>$V});var $V=[{tfOpName:"FFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"RFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]},{tfOpName:"IRFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]}],EN={};Oe(EN,{json:()=>DV});var DV=[{tfOpName:"Cast",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"SrcT",name:"sdtype",type:"dtype",notSupported:!0},{tfName:"DstT",name:"dtype",type:"dtype"}]},{tfOpName:"ExpandDims",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"MirrorPad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"mode",name:"mode",type:"string"}]},{tfOpName:"Pad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"constant_value",name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"PadV2",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"},{start:2,name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"Reshape",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}]},{tfOpName:"Squeeze",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"axis",tfDeprecatedName:"squeeze_dims",name:"axis",type:"number[]"}]},{tfOpName:"SpaceToBatchND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"paddings",type:"number[]"}]},{tfOpName:"BatchToSpaceND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"crops",type:"number[]"}]},{tfOpName:"DepthToSpace",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"block_size",name:"blockSize",type:"number"},{tfName:"data_format",name:"dataFormat",type:"string"}]},{tfOpName:"BroadcastTo",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}],attrs:[]}],FN=class{static get Instance(){return this._instance||(this._instance=new this)}constructor(){let e=[dN,hN,mN,fN,gN,yN,bN,kN,wN,xN,IN,NN,TN,SN,CN,EN,vN],t=[].concat(...e.map(n=>n.json));this.opMappers=t.reduce((n,a)=>(n[a.tfOpName]=a,n),{})}transformGraph(e,t={}){let n=e.node,a=[],r=[],s=[],i=n.reduce((m,f)=>(m[f.name]=this.mapNode(f),f.op.startsWith("Placeholder")?a.push(m[f.name]):f.op==="Const"?r.push(m[f.name]):(f.input==null||f.input.length===0)&&s.push(m[f.name]),m),{}),o=[],l=[],c={},u={};t!=null&&(c=this.mapSignatureEntries(t.inputs),u=this.mapSignatureEntries(t.outputs));let p=Object.keys(i);p.forEach(m=>{let f=i[m];f.inputNames.forEach(g=>{let[y]=Fr(g);f.inputs.push(i[y]),i[y].children.push(f)})}),Object.keys(u).length===0?p.forEach(m=>{let f=i[m];f.children.length===0&&l.push(f)}):Object.keys(u).forEach(m=>{let[f]=Fr(m),g=i[f];g!=null&&(g.signatureKey=u[m],l.push(g))}),Object.keys(c).length>0?Object.keys(c).forEach(m=>{let[f]=Fr(m),g=i[f];g&&(g.signatureKey=c[m],o.push(g))}):o=a;let d={};e.library!=null&&e.library.function!=null&&(d=e.library.function.reduce((m,f)=>(m[f.signature.name]=this.mapFunction(f),m),{}));let h={nodes:i,inputs:o,outputs:l,weights:r,placeholders:a,signature:t,functions:d};return s.length>0&&(h.initNodes=s),h}mapSignatureEntries(e){return Object.keys(e||{}).reduce((t,n)=>(t[e[n].name]=n,t),{})}mapNode(e){let t=pN(e.op)||this.opMappers[e.op]||{};e.attr==null&&(e.attr={});let n={name:e.name,op:e.op,category:t.category,inputNames:(e.input||[]).map(a=>a.startsWith("^")?a.substr(1):a),inputs:[],children:[],inputParams:{},attrParams:{},rawAttrs:e.attr};return t.inputs!=null&&(n.inputParams=t.inputs.reduce((a,r)=>(a[r.name]={type:r.type,inputIndexStart:r.start,inputIndexEnd:r.end},a),{})),t.attrs!=null&&(n.attrParams=t.attrs.reduce((a,r)=>{let s=r.type,i;switch(r.type){case"string":i=uv(e.attr,r.tfName,r.defaultValue),i===void 0&&!!r.tfDeprecatedName&&(i=uv(e.attr,r.tfDeprecatedName,r.defaultValue));break;case"string[]":i=yv(e.attr,r.tfName,r.defaultValue),i===void 0&&!!r.tfDeprecatedName&&(i=yv(e.attr,r.tfDeprecatedName,r.defaultValue));break;case"number":i=pv(e.attr,r.tfName,r.defaultValue||0),i===void 0&&!!r.tfDeprecatedName&&(i=pv(e.attr,r.tfDeprecatedName,r.defaultValue));break;case"number[]":i=gv(e.attr,r.tfName,r.defaultValue),i===void 0&&!!r.tfDeprecatedName&&(i=gv(e.attr,r.tfDeprecatedName,r.defaultValue));break;case"bool":i=cv(e.attr,r.tfName,r.defaultValue),i===void 0&&!!r.tfDeprecatedName&&(i=cv(e.attr,r.tfDeprecatedName,r.defaultValue));break;case"bool[]":i=xv(e.attr,r.tfName,r.defaultValue),i===void 0&&!!r.tfDeprecatedName&&(i=xv(e.attr,r.tfDeprecatedName,r.defaultValue));break;case"shape":i=fv(e.attr,r.tfName,r.defaultValue),i===void 0&&!!r.tfDeprecatedName&&(i=fv(e.attr,r.tfDeprecatedName,r.defaultValue));break;case"shape[]":i=bv(e.attr,r.tfName,r.defaultValue),i===void 0&&!!r.tfDeprecatedName&&(i=bv(e.attr,r.tfDeprecatedName,r.defaultValue));break;case"dtype":i=hv(e.attr,r.tfName,r.defaultValue),i===void 0&&!!r.tfDeprecatedName&&(i=hv(e.attr,r.tfDeprecatedName,r.defaultValue));break;case"dtype[]":i=mv(e.attr,r.tfName,r.defaultValue),i===void 0&&!!r.tfDeprecatedName&&(i=mv(e.attr,r.tfDeprecatedName,r.defaultValue));break;case"func":i=_N(e.attr,r.tfName,r.defaultValue),i===void 0&&!!r.tfDeprecatedName&&(i=_N(e.attr,r.tfDeprecatedName,r.defaultValue));break;case"tensor":case"tensors":break;default:throw new Error(`Unsupported param type: ${r.type} for op: ${e.op}`)}return a[r.name]={value:i,type:s},a},{})),n}mapFunction(e){let t=e.nodeDef,n=[],a=[],r={};t!=null&&(r=t.reduce((c,u)=>(c[u.name]=this.mapNode(u),u.op==="Const"&&a.push(c[u.name]),c),{}));let s=[],i=[];e.signature.inputArg.forEach(c=>{let[u]=Fr(c.name),p={name:u,op:"Placeholder",inputs:[],inputNames:[],category:"graph",inputParams:{},attrParams:{dtype:{value:dv(c.type),type:"dtype"}},children:[]};p.signatureKey=c.name,s.push(p),r[u]=p}),Object.keys(r).forEach(c=>{let u=r[c];u.inputNames.forEach(p=>{let[d]=Fr(p);u.inputs.push(r[d]),r[d].children.push(u)})});let o=e.ret;e.signature.outputArg.forEach(c=>{let[u,p]=Fr(o[c.name]),d=r[u];d!=null&&(d.defaultOutput=p,i.push(d))});let l=this.mapArgsToSignature(e);return{nodes:r,inputs:s,outputs:i,weights:a,placeholders:n,signature:l}}mapArgsToSignature(e){return{methodName:e.signature.name,inputs:e.signature.inputArg.reduce((t,n)=>(t[n.name]=this.mapArgToTensorInfo(n),t),{}),outputs:e.signature.outputArg.reduce((t,n)=>(t[n.name]=this.mapArgToTensorInfo(n,e.ret),t),{})}}mapArgToTensorInfo(e,t){let n=e.name;return t!=null&&(n=t[n]),{name:n,dtype:e.type}}};function MV(e){let t=ee().global;if(typeof t.atob!="undefined")return t.atob(e);if(typeof Buffer!="undefined")return new Buffer(e,"base64").toString();throw new Error("Unable to decode base64 in this environment. Missing built-in atob() or Buffer()")}function AN(e,t){let n=Array.isArray(e)?String.fromCharCode.apply(null,e):MV(e);return t?n:n.toLowerCase()}function uv(e,t,n,a=!1){let r=e[t];return r!=null?AN(r.s,a):n}function cv(e,t,n){let a=e[t];return a?a.b:n}function pv(e,t,n){let a=e[t]||{},r=a.i!=null?a.i:a.f!=null?a.f:n;return typeof r=="number"?r:parseInt(r,10)}function dv(e){switch(typeof e=="string"&&(e=Pa[e]),e){case Pa.DT_FLOAT:return"float32";case Pa.DT_INT32:case Pa.DT_INT64:case Pa.DT_INT8:case Pa.DT_UINT8:return"int32";case Pa.DT_BOOL:return"bool";case Pa.DT_DOUBLE:return"float32";case Pa.DT_STRING:return"string";default:return null}}function _N(e,t,n){let a=e[t];return a&&a.func?a.func.name:n}function hv(e,t,n){let a=e[t];return a&&a.type?dv(a.type):n}function mv(e,t,n){let a=e[t];return a&&a.list&&a.list.type?a.list.type.map(r=>dv(r)):n}function $N(e){if(!e.unknownRank)return e.dim!=null?e.dim.map(t=>typeof t.size=="number"?t.size:parseInt(t.size,10)):[]}function fv(e,t,n){let a=e[t];return a&&a.shape?$N(a.shape):n}function gv(e,t,n){let a=e[t];return a?((a.list.f&&a.list.f.length?a.list.f:a.list.i)||[]).map(r=>typeof r=="number"?r:parseInt(r,10)):n}function yv(e,t,n,a=!1){let r=e[t];return r&&r.list&&r.list.s?r.list.s.map(s=>AN(s,a)):n}function bv(e,t,n){let a=e[t];return a&&a.list&&a.list.shape?a.list.shape.map(r=>$N(r)):n}function xv(e,t,n){let a=e[t];return a&&a.list&&a.list.b?a.list.b:n}var RV=class{constructor(e,t,n){this.node=e,this.tensorMap=t,this.context=n,this.inputs=[],this.attrs={},this.inputs=e.inputNames.map(a=>this.getInput(a)),e.rawAttrs!=null&&(this.attrs=Object.keys(e.rawAttrs).reduce((a,r)=>(a[r]=this.getAttr(r),a),{}))}getInput(e){return Cn(e,this.tensorMap,this.context)}getAttr(e,t){let n=this.node.rawAttrs[e];if(n.tensor!=null)return Cn(e,this.tensorMap,this.context);if(n.i!=null||n.f!=null)return pv(this.node.rawAttrs,e,t);if(n.s!=null)return uv(this.node.rawAttrs,e,t);if(n.b!=null)return cv(this.node.rawAttrs,e,t);if(n.shape!=null)return fv(this.node.rawAttrs,e,t);if(n.type!=null)return hv(this.node.rawAttrs,e,t);if(n.list!=null){if(n.list.i!=null||n.list.f!=null)return gv(this.node.rawAttrs,e,t);if(n.list.s!=null)return yv(this.node.rawAttrs,e,t);if(n.list.shape!=null)return bv(this.node.rawAttrs,e,t);if(n.list.b!=null)return xv(this.node.rawAttrs,e,t);if(n.list.type!=null)return mv(this.node.rawAttrs,e,t)}return t}},PV=(e,t,n)=>{switch(e.op){case"BiasAdd":case"AddV2":case"Add":return[Z(I("a",e,t,n),I("b",e,t,n))];case"AddN":return[ik(I("tensors",e,t,n))];case"FloorMod":case"Mod":return[zh(I("a",e,t,n),I("b",e,t,n))];case"Mul":return[L(I("a",e,t,n),I("b",e,t,n))];case"RealDiv":case"Div":return[ve(I("a",e,t,n),I("b",e,t,n))];case"DivNoNan":return[Zy(I("a",e,t,n),I("b",e,t,n))];case"FloorDiv":return[Ch(I("a",e,t,n),I("b",e,t,n))];case"Sub":return[fe(I("a",e,t,n),I("b",e,t,n))];case"Minimum":return[Pi(I("a",e,t,n),I("b",e,t,n))];case"Maximum":return[Sa(I("a",e,t,n),I("b",e,t,n))];case"Pow":return[Ja(I("a",e,t,n),I("b",e,t,n))];case"SquaredDifference":return[Qc(I("a",e,t,n),I("b",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},OV=(e,t,n)=>{switch(e.op){case"Abs":case"ComplexAbs":return[Wt(I("x",e,t,n))];case"Acos":return[Py(I("x",e,t,n))];case"Acosh":return[Oy(I("x",e,t,n))];case"Asin":return[zy(I("x",e,t,n))];case"Asinh":return[By(I("x",e,t,n))];case"Atan":return[Wy(I("x",e,t,n))];case"Atan2":return[Vy(I("x",e,t,n),I("y",e,t,n))];case"Atanh":return[Uy(I("x",e,t,n))];case"Ceil":return[qy(I("x",e,t,n))];case"Complex":return[Jr(I("real",e,t,n),I("imag",e,t,n))];case"Cos":return[Uc(I("x",e,t,n))];case"Cosh":return[$h(I("x",e,t,n))];case"Elu":return[Xl(I("x",e,t,n))];case"Erf":return[Qy(I("x",e,t,n))];case"Exp":return[mn(I("x",e,t,n))];case"Expm1":return[eb(I("x",e,t,n))];case"Floor":return[Yl(I("x",e,t,n))];case"Log":return[Dn(I("x",e,t,n))];case"Log1p":return[Rh(I("x",e,t,n))];case"Imag":return[Mh(I("x",e,t,n))];case"Neg":return[St(I("x",e,t,n))];case"Reciprocal":return[cb(I("x",e,t,n))];case"Real":return[Xc(I("x",e,t,n))];case"Relu":return[Xe(I("x",e,t,n))];case"Round":return[pb(I("x",e,t,n))];case"Selu":return[Hh(I("x",e,t,n))];case"Sigmoid":return[da(I("x",e,t,n))];case"Sin":return[jh(I("x",e,t,n))];case"Sign":return[db(I("x",e,t,n))];case"Sinh":return[qh(I("x",e,t,n))];case"Softplus":return[Jl(I("x",e,t,n))];case"Sqrt":return[rn(I("x",e,t,n))];case"Square":return[lt(I("x",e,t,n))];case"Tanh":return[Kl(I("x",e,t,n))];case"Tan":return[fb(I("x",e,t,n))];case"ClipByValue":return[Yt(I("x",e,t,n),I("clipValueMin",e,t,n),I("clipValueMax",e,t,n))];case"Relu6":return[Uh(I("x",e,t,n))];case"Rsqrt":return[Gh(Cn(e.inputNames[0],t,n))];case"Prod":return[Wh(I("x",e,t,n),I("axes",e,t,n))];case"LeakyRelu":return[Gc(I("x",e,t,n),I("alpha",e,t,n))];case"Prelu":return[Kc(I("x",e,t,n),I("alpha",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};function ya(e,t,n=""){k.assert(LV(e,t),()=>n+` Shapes ${e} and ${t} must match`)}function LV(e,t){if(e.length!==t.length)return!1;for(let n=0;n{(e==null||!e.has(t.tensor.id))&&t.tensor.dispose()}),this.tensors=[],this.closed_=!0,this.idTensor.dispose()}size(){return this.tensors.length}read(e){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(e<0||e>=this.size())throw new Error(`Tried to read from index ${e}, but array size is: ${this.size()}`);let t=this.tensors[e];if(t.cleared)throw new Error(`TensorArray ${this.name}: Could not read index ${e} twice because it was cleared after a previous read (perhaps try setting clear_after_read = false?).`);return this.clearAfterRead&&(t.cleared=!0),t.read=!0,t.tensor}readMany(e){return e.map(t=>this.read(t))}write(e,t){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(e<0||!this.dynamicSize&&e>=this.maxSize)throw new Error(`Tried to write to index ${e}, but array is not resizeable and size is: ${this.maxSize}`);let n=this.tensors[e]||{};if(t.dtype!==this.dtype)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e}, + because the value dtype is ${t.dtype}, but TensorArray dtype is ${this.dtype}.`);if(this.size()===0&&(this.elementShape==null||this.elementShape.length===0)&&(this.elementShape=t.shape),ya(this.elementShape,t.shape,`TensorArray ${this.name}: Could not write to TensorArray index ${e}.`),n.read)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e}, because it has already been read.`);if(n.written)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e}, because it has already been written.`);n.tensor=t,Xt(t),n.written=!0,this.tensors[e]=n}writeMany(e,t){if(e.length!==t.length)throw new Error(`TensorArray ${this.name}: could not write multiple tensors,because the index size: ${e.length} is not the same as tensors size: ${t.length}.`);e.forEach((n,a)=>this.write(n,t[a]))}gather(e,t){if(!!t&&t!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but gather requested dtype ${t}`);if(e)e=e.slice(0,this.size());else{e=[];for(let a=0;a=this.maxSize)throw new Error(`Max index must be < array size (${n} vs. ${this.maxSize})`);this.writeMany(e,pt(t,0))}split(e,t){if(t.dtype!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but tensor has dtype ${t.dtype}`);let n=0,a=e.map(o=>(n+=o,n));if(n!==t.shape[0])throw new Error(`Expected sum of lengths to be equal to tensor.shape[0], but sum of lengths is - ${totalLength}, and tensor's shape is: ${tensor2.shape}`);if(!this.dynamicSize&&length.length!==this.maxSize)throw new Error(`TensorArray's size is not equal to the size of lengths (${this.maxSize} vs. ${length.length}), and the TensorArray is not marked as dynamically resizeable`);let elementPerRow=totalLength===0?0:tensor2.size/totalLength,tensors=[];tidy(()=>{tensor2=reshape(tensor2,[1,totalLength,elementPerRow]);for(let i=0;i{if(elementDtype!==tensor2.dtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${tensor2.dtype}`);assertShapesMatchAllowUndefinedSize(elementShape,tensor2.shape,"TensorList shape mismatch: "),keep(tensor2)}),this.idTensor=scalar(0),this.maxNumElements=maxNumElements,keep(this.idTensor)}get id(){return this.idTensor.id}copy(){return new TensorList([...this.tensors],this.elementShape,this.elementDtype)}clearAndClose(keepIds){this.tensors.forEach(tensor2=>{(keepIds==null||!keepIds.has(tensor2.id))&&tensor2.dispose()}),this.tensors.length=0,this.idTensor.dispose()}size(){return this.tensors.length}stack(elementShape,elementDtype,numElements=-1){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(numElements!==-1&&this.tensors.length!==numElements)throw new Error(`Operation expected a list with ${numElements} elements but got a list with ${this.tensors.length} elements.`);return assertShapesMatchAllowUndefinedSize(elementShape,this.elementShape,"TensorList shape mismatch: "),tidy(()=>{let reshapedTensors=this.tensors.map(tensor2=>reshape(tensor2,elementShape));return stack(reshapedTensors,0)})}popBack(elementShape,elementDtype){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(this.size()===0)throw new Error("Trying to pop from an empty list.");let tensor2=this.tensors.pop();return assertShapesMatchAllowUndefinedSize(tensor2.shape,elementShape,"TensorList shape mismatch: "),reshape(tensor2,elementShape)}pushBack(tensor2){if(tensor2.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${tensor2.dtype}, but list elements ${this.elementDtype}`);if(assertShapesMatchAllowUndefinedSize(tensor2.shape,this.elementShape,"TensorList shape mismatch: "),this.maxNumElements===this.size())throw new Error("Trying to push element into a full list.");keep(tensor2),this.tensors.push(tensor2)}resize(size){if(size<0)throw new Error(`TensorListResize expects size to be non-negative. Got: ${size}`);if(this.maxNumElements!==-1&&size>this.maxNumElements)throw new Error(`TensorListResize input size ${size} is greater maxNumElement ${this.maxNumElements}.`);this.tensors.length=size}getItem(elementIndex,elementShape,elementDtype){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(elementIndex<0||elementIndex>this.tensors.length)throw new Error(`Trying to access element ${elementIndex} in a list with ${this.tensors.length} elements.`);if(this.tensors[elementIndex]==null)throw new Error(`element at index ${elementIndex} is null.`);return assertShapesMatchAllowUndefinedSize(this.tensors[elementIndex].shape,elementShape,"TensorList shape mismatch: "),this.tensors[elementIndex]}setItem(elementIndex,tensor2){if(tensor2.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${tensor2.dtype}, but list elements ${this.elementDtype}`);if(elementIndex<0||this.maxNumElements!==-1&&elementIndex>=this.maxNumElements)throw new Error(`Trying to set element ${elementIndex} in a list with max ${this.maxNumElements} elements.`);assertShapesMatchAllowUndefinedSize(this.elementShape,tensor2.shape,"TensorList shape mismatch: "),keep(tensor2),this.tensors[elementIndex]=tensor2}gather(indices,elementDtype,elementShape){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);return assertShapesMatchAllowUndefinedSize(this.elementShape,elementShape,"TensorList shape mismatch: "),indices=indices.slice(0,this.size()),indices.length===0?tensor([],[0].concat(this.elementShape)):tidy(()=>{let tensors=indices.map(i=>reshape(this.tensors[i],elementShape));return stack(tensors,0)})}concat(elementDtype,elementShape){if(!!elementDtype&&elementDtype!==this.elementDtype)throw new Error(`TensorList dtype is ${this.elementDtype} but concat requested dtype ${elementDtype}`);return assertShapesMatchAllowUndefinedSize(this.elementShape,elementShape,"TensorList shape mismatch: "),this.size()===0?tensor([],[0].concat(this.elementShape)):tidy(()=>{let tensors=this.tensors.map(t=>reshape(t,elementShape));return concat(tensors,0)})}};function fromTensor(tensor2,elementShape,elementDtype){let dtype=tensor2.dtype;if(tensor2.shape.length<1)throw new Error(`Tensor must be at least a vector, but saw shape: ${tensor2.shape}`);if(tensor2.dtype!==elementDtype)throw new Error(`Invalid data types; op elements ${tensor2.dtype}, but list elements ${elementDtype}`);let outputShape=tensor2.shape.slice(1);assertShapesMatchAllowUndefinedSize(outputShape,elementShape,"TensorList shape mismatch: ");let tensorList=unstack(tensor2);return new TensorList(tensorList,elementShape,dtype)}function reserve(elementShape,elementDtype,numElements){return new TensorList([],elementShape,elementDtype,numElements)}function scatter(tensor2,indices,elementShape,numElements){if(indices.length!==tensor2.shape[0])throw new Error(`Expected len(indices) == tensor.shape[0], but saw: ${indices.length} vs. ${tensor2.shape[0]}`);let maxIndex=Math.max(...indices);if(numElements!=null&&numElements!==-1&&maxIndex>=numElements)throw new Error(`Max index must be < array size (${maxIndex} vs. ${numElements})`);let list=new TensorList([],elementShape,tensor2.dtype,numElements),tensors=unstack(tensor2,0);return indices.forEach((value,index)=>{list.setItem(value,tensors[index])}),list}function split2(tensor2,length,elementShape){let totalLength=0,cumulativeLengths=length.map(len=>(totalLength+=len,totalLength));if(totalLength!==tensor2.shape[0])throw new Error(`Expected sum of lengths to be equal to + ${n}, and tensor's shape is: ${t.shape}`);if(!this.dynamicSize&&e.length!==this.maxSize)throw new Error(`TensorArray's size is not equal to the size of lengths (${this.maxSize} vs. ${e.length}), and the TensorArray is not marked as dynamically resizeable`);let r=n===0?0:t.size/n,s=[];D(()=>{t=j(t,[1,n,r]);for(let o=0;o{if(n!==r.dtype)throw new Error(`Invalid data types; op elements ${n}, but list elements ${r.dtype}`);ya(t,r.shape,"TensorList shape mismatch: "),Xt(r)}),this.idTensor=de(0),this.maxNumElements=a,Xt(this.idTensor)}get id(){return this.idTensor.id}copy(){return new xp([...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(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);if(n!==-1&&this.tensors.length!==n)throw new Error(`Operation expected a list with ${n} elements but got a list with ${this.tensors.length} elements.`);return ya(e,this.elementShape,"TensorList shape mismatch: "),D(()=>{let a=this.tensors.map(r=>j(r,e));return Mt(a,0)})}popBack(e,t){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);if(this.size()===0)throw new Error("Trying to pop from an empty list.");let n=this.tensors.pop();return ya(n.shape,e,"TensorList shape mismatch: "),j(n,e)}pushBack(e){if(e.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${e.dtype}, but list elements ${this.elementDtype}`);if(ya(e.shape,this.elementShape,"TensorList shape mismatch: "),this.maxNumElements===this.size())throw new Error("Trying to push element into a full list.");Xt(e),this.tensors.push(e)}resize(e){if(e<0)throw new Error(`TensorListResize expects size to be non-negative. Got: ${e}`);if(this.maxNumElements!==-1&&e>this.maxNumElements)throw new Error(`TensorListResize input size ${e} is greater maxNumElement ${this.maxNumElements}.`);this.tensors.length=e}getItem(e,t,n){if(n!==this.elementDtype)throw new Error(`Invalid data types; op elements ${n}, but list elements ${this.elementDtype}`);if(e<0||e>this.tensors.length)throw new Error(`Trying to access element ${e} in a list with ${this.tensors.length} elements.`);if(this.tensors[e]==null)throw new Error(`element at index ${e} is null.`);return ya(this.tensors[e].shape,t,"TensorList shape mismatch: "),this.tensors[e]}setItem(e,t){if(t.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t.dtype}, but list elements ${this.elementDtype}`);if(e<0||this.maxNumElements!==-1&&e>=this.maxNumElements)throw new Error(`Trying to set element ${e} in a list with max ${this.maxNumElements} elements.`);ya(this.elementShape,t.shape,"TensorList shape mismatch: "),Xt(t),this.tensors[e]=t}gather(e,t,n){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);return ya(this.elementShape,n,"TensorList shape mismatch: "),e=e.slice(0,this.size()),e.length===0?Yn([],[0].concat(this.elementShape)):D(()=>{let a=e.map(r=>j(this.tensors[r],n));return Mt(a,0)})}concat(e,t){if(!!e&&e!==this.elementDtype)throw new Error(`TensorList dtype is ${this.elementDtype} but concat requested dtype ${e}`);return ya(this.elementShape,t,"TensorList shape mismatch: "),this.size()===0?Yn([],[0].concat(this.elementShape)):D(()=>{let n=this.tensors.map(a=>j(a,t));return Ze(n,0)})}};function BV(e,t,n){let a=e.dtype;if(e.shape.length<1)throw new Error(`Tensor must be at least a vector, but saw shape: ${e.shape}`);if(e.dtype!==n)throw new Error(`Invalid data types; op elements ${e.dtype}, but list elements ${n}`);let r=e.shape.slice(1);ya(r,t,"TensorList shape mismatch: ");let s=pt(e);return new xp(s,t,a)}function WV(e,t,n){return new xp([],e,t,n)}function VV(e,t,n,a){if(t.length!==e.shape[0])throw new Error(`Expected len(indices) == tensor.shape[0], but saw: ${t.length} vs. ${e.shape[0]}`);let r=Math.max(...t);if(a!=null&&a!==-1&&r>=a)throw new Error(`Max index must be < array size (${r} vs. ${a})`);let s=new xp([],n,e.dtype,a),i=pt(e,0);return t.forEach((o,l)=>{s.setItem(o,i[l])}),s}function UV(e,t,n){let a=0,r=t.map(l=>(a+=l,a));if(a!==e.shape[0])throw new Error(`Expected sum of lengths to be equal to tensor.shape[0], but sum of lengths is - ${totalLength}, and tensor's shape is: ${tensor2.shape}`);let elementPerRow=totalLength===0?0:tensor2.size/totalLength,tensors=tidy(()=>{let tensors2=[];tensor2=reshape(tensor2,[1,totalLength,elementPerRow]);for(let i=0;i{switch(node2.op){case"If":case"StatelessIf":{let thenFunc=getParamValue("thenBranch",node2,tensorMap,context),elseFunc=getParamValue("elseBranch",node2,tensorMap,context),cond=getParamValue("cond",node2,tensorMap,context),args=getParamValue("args",node2,tensorMap,context);return(await cond.data())[0]?context.functionMap[thenFunc].executeFunctionAsync(args,context.tensorArrayMap,context.tensorListMap):context.functionMap[elseFunc].executeFunctionAsync(args,context.tensorArrayMap,context.tensorListMap)}case"While":case"StatelessWhile":{let bodyFunc=getParamValue("body",node2,tensorMap,context),condFunc=getParamValue("cond",node2,tensorMap,context),args=getParamValue("args",node2,tensorMap,context),condResult=await context.functionMap[condFunc].executeFunctionAsync(args,context.tensorArrayMap,context.tensorListMap),argIds=args.map(tensor2=>tensor2.id),condValue=await condResult[0].data();condResult.forEach(tensor2=>{!tensor2.kept&&argIds.indexOf(tensor2.id)===-1&&tensor2.dispose()});let result=args;for(;condValue[0];){let origResult=result;result=await context.functionMap[bodyFunc].executeFunctionAsync(result,context.tensorArrayMap,context.tensorListMap);let resultIds=result.map(tensor2=>tensor2.id);origResult.forEach(tensor2=>{!tensor2.kept&&argIds.indexOf(tensor2.id)===-1&&resultIds.indexOf(tensor2.id)===-1&&tensor2.dispose()});let condResult2=await context.functionMap[condFunc].executeFunctionAsync(result,context.tensorArrayMap,context.tensorListMap);condValue=await condResult2[0].data(),condResult2.forEach(tensor2=>{!tensor2.kept&&argIds.indexOf(tensor2.id)===-1&&resultIds.indexOf(tensor2.id)===-1&&tensor2.dispose()})}return result}case"LoopCond":{let pred=getParamValue("pred",node2,tensorMap,context);return[cloneTensor(pred)]}case"Switch":{let pred=getParamValue("pred",node2,tensorMap,context),data=getParamValue("data",node2,tensorMap,context);return data.kept||(data=cloneTensor(data)),(await pred.data())[0]?[void 0,data]:[data,void 0]}case"Merge":{let inputName=node2.inputNames.find(name=>getTensor(name,tensorMap,context)!==void 0);if(inputName){let data=getTensor(inputName,tensorMap,context);return[cloneTensor(data)]}return}case"Enter":{let frameId=getParamValue("frameName",node2,tensorMap,context),data=getParamValue("tensor",node2,tensorMap,context);return context.enterFrame(frameId),[cloneTensor(data)]}case"Exit":{let data=getParamValue("tensor",node2,tensorMap,context);return context.exitFrame(),[cloneTensor(data)]}case"NextIteration":{let data=getParamValue("tensor",node2,tensorMap,context);return context.nextIteration(),[cloneTensor(data)]}case"TensorArrayV3":{let size=getParamValue("size",node2,tensorMap,context),dtype=getParamValue("dtype",node2,tensorMap,context),elementShape=getParamValue("elementShape",node2,tensorMap,context),dynamicSize=getParamValue("dynamicSize",node2,tensorMap,context),clearAfterRead=getParamValue("clearAfterRead",node2,tensorMap,context),identicalElementShapes=getParamValue("identicalElementShapes",node2,tensorMap,context),name=getParamValue("name",node2,tensorMap,context),tensorArray=new TensorArray(name,dtype,size,elementShape,identicalElementShapes,dynamicSize,clearAfterRead);return context.addTensorArray(tensorArray),[tensorArray.idTensor,scalar(1)]}case"TensorArrayWriteV3":{let id=getParamValue("tensorArrayId",node2,tensorMap,context),index=getParamValue("index",node2,tensorMap,context),writeTensor=getParamValue("tensor",node2,tensorMap,context),writeTensorArray=context.getTensorArray(id.id);return writeTensorArray.write(index,writeTensor),[writeTensorArray.idTensor]}case"TensorArrayReadV3":{let readId=getParamValue("tensorArrayId",node2,tensorMap,context),readIndex=getParamValue("index",node2,tensorMap,context);return[context.getTensorArray(readId.id).read(readIndex)]}case"TensorArrayGatherV3":{let gatherId=getParamValue("tensorArrayId",node2,tensorMap,context),gatherIndices=getParamValue("indices",node2,tensorMap,context),gatherDtype=getParamValue("dtype",node2,tensorMap,context);return[context.getTensorArray(gatherId.id).gather(gatherIndices,gatherDtype)]}case"TensorArrayScatterV3":{let scatterId=getParamValue("tensorArrayId",node2,tensorMap,context),scatterIndices=getParamValue("indices",node2,tensorMap,context),scatterTensor=getParamValue("tensor",node2,tensorMap,context),scatterTensorArray=context.getTensorArray(scatterId.id);return scatterTensorArray.scatter(scatterIndices,scatterTensor),[scatterTensorArray.idTensor]}case"TensorArrayConcatV3":{let concatId=getParamValue("tensorArrayId",node2,tensorMap,context),concatTensorArray=context.getTensorArray(concatId.id),concatDtype=getParamValue("dtype",node2,tensorMap,context);return[concatTensorArray.concat(concatDtype)]}case"TensorArraySplitV3":{let splitId=getParamValue("tensorArrayId",node2,tensorMap,context),splitTensor=getParamValue("tensor",node2,tensorMap,context),lengths=getParamValue("lengths",node2,tensorMap,context),splitTensorArray=context.getTensorArray(splitId.id);return splitTensorArray.split(lengths,splitTensor),[splitTensorArray.idTensor]}case"TensorArraySizeV3":{let sizeId=getParamValue("tensorArrayId",node2,tensorMap,context),sizeTensorArray=context.getTensorArray(sizeId.id);return[scalar(sizeTensorArray.size(),"int32")]}case"TensorArrayCloseV3":{let closeId=getParamValue("tensorArrayId",node2,tensorMap,context),closeTensorArray=context.getTensorArray(closeId.id);return closeTensorArray.clearAndClose(),[closeTensorArray.idTensor]}case"TensorListSetItem":{let idTensor=getParamValue("tensorListId",node2,tensorMap,context),index=getParamValue("index",node2,tensorMap,context),writeTensor=getParamValue("tensor",node2,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return tensorList.setItem(index,writeTensor),[tensorList.idTensor]}case"TensorListGetItem":{let idTensor=getParamValue("tensorListId",node2,tensorMap,context),readIndex=getParamValue("index",node2,tensorMap,context),elementShape=getParamValue("elementShape",node2,tensorMap,context),elementDType=getParamValue("elementDType",node2,tensorMap,context);return[context.getTensorList(idTensor.id).getItem(readIndex,elementShape,elementDType)]}case"TensorListScatterV2":case"TensorListScatter":{let scatterIndices=getParamValue("indices",node2,tensorMap,context),scatterTensor=getParamValue("tensor",node2,tensorMap,context),elementShape=getParamValue("elementShape",node2,tensorMap,context),numElements=getParamValue("numElements",node2,tensorMap,context),tensorList=scatter(scatterTensor,scatterIndices,elementShape,numElements);return context.addTensorList(tensorList),[tensorList.idTensor]}case"TensorListReserve":case"EmptyTensorList":{let elementShape=getParamValue("elementShape",node2,tensorMap,context),elementDtype=getParamValue("elementDType",node2,tensorMap,context),numElementsParam;node2.op==="TensorListReserve"?numElementsParam="numElements":numElementsParam="maxNumElements";let numElements=getParamValue(numElementsParam,node2,tensorMap,context),tensorList=reserve(elementShape,elementDtype,numElements);return context.addTensorList(tensorList),[tensorList.idTensor]}case"TensorListGather":{let gatherId=getParamValue("tensorListId",node2,tensorMap,context),gatherIndices=getParamValue("indices",node2,tensorMap,context),elementShape=getParamValue("elementShape",node2,tensorMap,context),elementDtype=getParamValue("elementDType",node2,tensorMap,context);return[context.getTensorList(gatherId.id).gather(gatherIndices,elementDtype,elementShape)]}case"TensorListStack":{let idTensor=getParamValue("tensorListId",node2,tensorMap,context),elementShape=getParamValue("elementShape",node2,tensorMap,context),elementDtype=getParamValue("elementDType",node2,tensorMap,context),numElements=getParamValue("numElements",node2,tensorMap,context);return[context.getTensorList(idTensor.id).stack(elementShape,elementDtype,numElements)]}case"TensorListFromTensor":{let tensor2=getParamValue("tensor",node2,tensorMap,context),elementShape=getParamValue("elementShape",node2,tensorMap,context),elementDtype=getParamValue("elementDType",node2,tensorMap,context),tensorList=fromTensor(tensor2,elementShape,elementDtype);return context.addTensorList(tensorList),[tensorList.idTensor]}case"TensorListConcat":{let concatId=getParamValue("tensorListId",node2,tensorMap,context),tensorList=context.getTensorList(concatId.id),concatDtype=getParamValue("dtype",node2,tensorMap,context),elementShape=getParamValue("elementShape",node2,tensorMap,context);return[tensorList.concat(concatDtype,elementShape)]}case"TensorListPushBack":{let idTensor=getParamValue("tensorListId",node2,tensorMap,context),writeTensor=getParamValue("tensor",node2,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return tensorList.pushBack(writeTensor),[tensorList.idTensor]}case"TensorListPopBack":{let idTensor=getParamValue("tensorListId",node2,tensorMap,context),elementShape=getParamValue("elementShape",node2,tensorMap,context),elementDType=getParamValue("elementDType",node2,tensorMap,context);return[context.getTensorList(idTensor.id).popBack(elementShape,elementDType)]}case"TensorListSplit":{let splitTensor=getParamValue("tensor",node2,tensorMap,context),elementShape=getParamValue("elementShape",node2,tensorMap,context),lengths=getParamValue("lengths",node2,tensorMap,context),tensorList=split2(splitTensor,lengths,elementShape);return context.addTensorList(tensorList),[tensorList.idTensor]}default:throw TypeError(`Node type ${node2.op} is not implemented`)}};function fusedConvAndDepthWiseParams(node2,tensorMap,context){let[extraOp,activationFunc]=getParamValue("fusedOps",node2,tensorMap,context),isBiasAdd=extraOp==="biasadd",isPrelu=activationFunc==="prelu",isBatchNorm=extraOp==="fusedbatchnorm",numArgs=getParamValue("numArgs",node2,tensorMap,context);if(isBiasAdd){if(isPrelu&&numArgs!==2)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!isPrelu&&numArgs!==1)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd must have one extra argument: bias.")}if(isBatchNorm)throw new Error("FusedConv2d and DepthwiseConv2d with FusedBatchNorm is not supported.");let stride=getParamValue("strides",node2,tensorMap,context),pad3=getPadding(node2,tensorMap,context),dataFormat=getParamValue("dataFormat",node2,tensorMap,context).toUpperCase(),dilations=getParamValue("dilations",node2,tensorMap,context),[biasArg,preluArg]=getParamValue("args",node2,tensorMap,context),leakyreluAlpha=getParamValue("leakyreluAlpha",node2,tensorMap,context);return{stride,pad:pad3,dataFormat,dilations,biasArg,preluArg,activationFunc,leakyreluAlpha}}var executeOp4=(node2,tensorMap,context)=>{switch(node2.op){case"Conv1D":{let stride=getParamValue("stride",node2,tensorMap,context),pad3=getParamValue("pad",node2,tensorMap,context),dataFormat=getParamValue("dataFormat",node2,tensorMap,context).toUpperCase(),dilation=getParamValue("dilation",node2,tensorMap,context);return[conv1d(getParamValue("x",node2,tensorMap,context),getParamValue("filter",node2,tensorMap,context),stride,pad3,dataFormat,dilation)]}case"Conv2D":{let stride=getParamValue("strides",node2,tensorMap,context),pad3=getPadding(node2,tensorMap,context),dataFormat=getParamValue("dataFormat",node2,tensorMap,context).toUpperCase(),dilations=getParamValue("dilations",node2,tensorMap,context);return[conv2d(getParamValue("x",node2,tensorMap,context),getParamValue("filter",node2,tensorMap,context),[stride[1],stride[2]],pad3,dataFormat,[dilations[1],dilations[2]])]}case"_FusedConv2D":{let{stride,pad:pad3,dataFormat,dilations,biasArg,preluArg,activationFunc,leakyreluAlpha}=fusedConvAndDepthWiseParams(node2,tensorMap,context);return[fused_ops_exports.conv2d({x:getParamValue("x",node2,tensorMap,context),filter:getParamValue("filter",node2,tensorMap,context),strides:[stride[1],stride[2]],pad:pad3,dataFormat,dilations:[dilations[1],dilations[2]],bias:biasArg,activation:activationFunc,preluActivationWeights:preluArg,leakyreluAlpha})]}case"FusedDepthwiseConv2dNative":{let{stride,pad:pad3,dataFormat,dilations,biasArg,preluArg,activationFunc,leakyreluAlpha}=fusedConvAndDepthWiseParams(node2,tensorMap,context);return[fused_ops_exports.depthwiseConv2d({x:getParamValue("x",node2,tensorMap,context),filter:getParamValue("filter",node2,tensorMap,context),strides:[stride[1],stride[2]],pad:pad3,dataFormat,dilations:[dilations[1],dilations[2]],bias:biasArg,activation:activationFunc,preluActivationWeights:preluArg,leakyreluAlpha})]}case"Conv2DBackpropInput":case"Conv2dTranspose":{let shape=getParamValue("outputShape",node2,tensorMap,context),stride=getParamValue("strides",node2,tensorMap,context),pad3=getPadding(node2,tensorMap,context);return[conv2dTranspose(getParamValue("x",node2,tensorMap,context),getParamValue("filter",node2,tensorMap,context),shape,[stride[1],stride[2]],pad3)]}case"DepthwiseConv2dNative":case"DepthwiseConv2d":{let stride=getParamValue("strides",node2,tensorMap,context),pad3=getPadding(node2,tensorMap,context),dilations=getParamValue("dilations",node2,tensorMap,context),dataFormat=getParamValue("dataFormat",node2,tensorMap,context).toUpperCase();return[depthwiseConv2d(getParamValue("input",node2,tensorMap,context),getParamValue("filter",node2,tensorMap,context),[stride[1],stride[2]],pad3,dataFormat,[dilations[1],dilations[2]])]}case"Conv3D":{let stride=getParamValue("strides",node2,tensorMap,context),pad3=getParamValue("pad",node2,tensorMap,context),dataFormat=getParamValue("dataFormat",node2,tensorMap,context).toUpperCase(),dilations=getParamValue("dilations",node2,tensorMap,context);return[conv3d(getParamValue("x",node2,tensorMap,context),getParamValue("filter",node2,tensorMap,context),[stride[1],stride[2],stride[3]],pad3,dataFormat,[dilations[1],dilations[2],dilations[3]])]}case"AvgPool":{let stride=getParamValue("strides",node2,tensorMap,context),pad3=getParamValue("pad",node2,tensorMap,context),kernelSize=getParamValue("kernelSize",node2,tensorMap,context);return[avgPool(getParamValue("x",node2,tensorMap,context),[kernelSize[1],kernelSize[2]],[stride[1],stride[2]],pad3)]}case"MaxPool":{let stride=getParamValue("strides",node2,tensorMap,context),pad3=getParamValue("pad",node2,tensorMap,context),kernelSize=getParamValue("kernelSize",node2,tensorMap,context);return[maxPool(getParamValue("x",node2,tensorMap,context),[kernelSize[1],kernelSize[2]],[stride[1],stride[2]],pad3)]}case"MaxPoolWithArgmax":{let stride=getParamValue("strides",node2,tensorMap,context),pad3=getParamValue("pad",node2,tensorMap,context),kernelSize=getParamValue("kernelSize",node2,tensorMap,context),includeBatchInIndex=getParamValue("includeBatchInIndex",node2,tensorMap,context),{result,indexes}=maxPoolWithArgmax(getParamValue("x",node2,tensorMap,context),[kernelSize[1],kernelSize[2]],[stride[1],stride[2]],pad3,includeBatchInIndex);return[result,indexes]}case"AvgPool3D":{let stride=getParamValue("strides",node2,tensorMap,context),pad3=getParamValue("pad",node2,tensorMap,context),kernelSize=getParamValue("kernelSize",node2,tensorMap,context);return[avgPool3d(getParamValue("x",node2,tensorMap,context),[kernelSize[1],kernelSize[2],kernelSize[3]],[stride[1],stride[2],stride[3]],pad3)]}case"MaxPool3D":{let stride=getParamValue("strides",node2,tensorMap,context),pad3=getParamValue("pad",node2,tensorMap,context),kernelSize=getParamValue("kernelSize",node2,tensorMap,context);return[maxPool3d(getParamValue("x",node2,tensorMap,context),[kernelSize[1],kernelSize[2],kernelSize[3]],[stride[1],stride[2],stride[3]],pad3)]}case"Dilation2D":{let strides=getParamValue("strides",node2,tensorMap,context),pad3=getParamValue("pad",node2,tensorMap,context),dilations=getParamValue("dilations",node2,tensorMap,context),strideHeight=strides[1],strideWidth=strides[2],dilationHeight=dilations[1],dilationWidth=dilations[2];return[dilation2d(getParamValue("x",node2,tensorMap,context),getParamValue("filter",node2,tensorMap,context),[strideHeight,strideWidth],pad3,[dilationHeight,dilationWidth],"NHWC")]}default:throw TypeError(`Node type ${node2.op} is not implemented`)}},executeOp5=(node2,tensorMap,context)=>{switch(node2.op){case"Fill":{let shape=getParamValue("shape",node2,tensorMap,context),dtype=getParamValue("dtype",node2,tensorMap,context),value=getParamValue("value",node2,tensorMap,context);return[fill(shape,value,dtype)]}case"LinSpace":{let start=getParamValue("start",node2,tensorMap,context),stop=getParamValue("stop",node2,tensorMap,context),num=getParamValue("num",node2,tensorMap,context);return[linspace(start,stop,num)]}case"Multinomial":{let logits=getParamValue("logits",node2,tensorMap,context),numSamples=getParamValue("numSamples",node2,tensorMap,context),seed=getParamValue("seed",node2,tensorMap,context);return[multinomial(logits,numSamples,seed)]}case"OneHot":{let indices=getParamValue("indices",node2,tensorMap,context),depth=getParamValue("depth",node2,tensorMap,context),onValue=getParamValue("onValue",node2,tensorMap,context),offValue=getParamValue("offValue",node2,tensorMap,context);return[oneHot(indices,depth,onValue,offValue)]}case"Ones":return[ones2(getParamValue("shape",node2,tensorMap,context),getParamValue("dtype",node2,tensorMap,context))];case"OnesLike":return[onesLike(getParamValue("x",node2,tensorMap,context))];case"RandomUniform":return[randomUniform(getParamValue("shape",node2,tensorMap,context),getParamValue("minval",node2,tensorMap,context),getParamValue("maxval",node2,tensorMap,context),getParamValue("dtype",node2,tensorMap,context))];case"Range":{let start=getParamValue("start",node2,tensorMap,context),stop=getParamValue("stop",node2,tensorMap,context),step4=getParamValue("step",node2,tensorMap,context);return[range(start,stop,step4,getParamValue("dtype",node2,tensorMap,context))]}case"TruncatedNormal":{let shape=getParamValue("shape",node2,tensorMap,context),mean4=getParamValue("mean",node2,tensorMap,context),stdDev=getParamValue("stdDev",node2,tensorMap,context),seed=getParamValue("seed",node2,tensorMap,context);return[truncatedNormal(shape,mean4,stdDev,getParamValue("dtype",node2,tensorMap,context),seed)]}case"Zeros":return[zeros(getParamValue("shape",node2,tensorMap,context),getParamValue("dtype",node2,tensorMap,context))];case"ZerosLike":return[zerosLike(getParamValue("x",node2,tensorMap,context))];default:throw TypeError(`Node type ${node2.op} is not implemented`)}};function nmsParams(node2,tensorMap,context){let boxes=getParamValue("boxes",node2,tensorMap,context),scores=getParamValue("scores",node2,tensorMap,context),maxOutputSize=getParamValue("maxOutputSize",node2,tensorMap,context),iouThreshold=getParamValue("iouThreshold",node2,tensorMap,context),scoreThreshold=getParamValue("scoreThreshold",node2,tensorMap,context),softNmsSigma=getParamValue("softNmsSigma",node2,tensorMap,context);return{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}}var executeOp6=async(node2,tensorMap,context)=>{switch(node2.op){case"NonMaxSuppressionV5":{let{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}=nmsParams(node2,tensorMap,context),result=await image.nonMaxSuppressionWithScoreAsync(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);return[result.selectedIndices,result.selectedScores]}case"NonMaxSuppressionV4":{let{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold}=nmsParams(node2,tensorMap,context),padToMaxOutputSize=getParamValue("padToMaxOutputSize",node2,tensorMap,context),result=await image.nonMaxSuppressionPaddedAsync(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize);return[result.selectedIndices,result.validOutputs]}case"NonMaxSuppressionV3":case"NonMaxSuppressionV2":{let{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold}=nmsParams(node2,tensorMap,context);return[await image.nonMaxSuppressionAsync(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold)]}case"Where":{let condition=cast(getParamValue("condition",node2,tensorMap,context),"bool"),result=[await whereAsync(condition)];return condition.dispose(),result}case"ListDiff":return setdiff1dAsync(getParamValue("x",node2,tensorMap,context),getParamValue("y",node2,tensorMap,context));default:throw TypeError(`Node type ${node2.op} is not implemented`)}},executeOp7=(node2,tensorMap,context)=>{switch(node2.op){case"TopKV2":{let x=getParamValue("x",node2,tensorMap,context),k=getParamValue("k",node2,tensorMap,context),sorted=getParamValue("sorted",node2,tensorMap,context),result=topk(x,k,sorted);return[result.values,result.indices]}case"Unique":{let x=getParamValue("x",node2,tensorMap,context),result=unique(x);return[result.values,result.indices]}case"UniqueV2":{let x=getParamValue("x",node2,tensorMap,context),axis=getParamValue("axis",node2,tensorMap,context),result=unique(x,axis);return[result.values,result.indices]}default:throw TypeError(`Node type ${node2.op} is not implemented`)}},executeOp8=(node2,tensorMap,context)=>{switch(node2.op){case"Const":return tensorMap[node2.name];case"PlaceholderWithDefault":let def=getParamValue("default",node2,tensorMap,context);return[getTensor(node2.name,tensorMap,context)||def];case"Placeholder":return[getTensor(node2.name,tensorMap,context)];case"Identity":case"StopGradient":case"FakeQuantWithMinMaxVars":{let data2=getParamValue("x",node2,tensorMap,context);return[cloneTensor(data2)]}case"IdentityN":return getParamValue("x",node2,tensorMap,context).map(t=>cloneTensor(t));case"Snapshot":let snapshot=getParamValue("x",node2,tensorMap,context);return[cloneTensor(snapshot)];case"Shape":return[tensor1d(getParamValue("x",node2,tensorMap,context).shape,"int32")];case"ShapeN":return getParamValue("x",node2,tensorMap,context).map(t=>tensor1d(t.shape));case"Size":return[scalar(getParamValue("x",node2,tensorMap,context).size,"int32")];case"Rank":return[scalar(getParamValue("x",node2,tensorMap,context).rank,"int32")];case"NoOp":return[scalar(1)];case"Print":let input2=getParamValue("x",node2,tensorMap,context),data=getParamValue("data",node2,tensorMap,context),message=getParamValue("message",node2,tensorMap,context),summarize=getParamValue("summarize",node2,tensorMap,context);console.warn("The graph has a tf.print() operation,usually used for debugging, which slows down performance."),console.log(message);for(let i=0;ivalue.dispose()),this.tensorMap.clear(),this.handle.dispose()}size(){return this.tensorMap.size}async import(keys,values){this.checkKeyAndValueTensor(keys,values);let $keys=await keys.data();return this.tensorMap.forEach(value=>value.dispose()),this.tensorMap.clear(),tidy(()=>{let $values=unstack(values),keysLength=$keys.length,valuesLength=$values.length;util_exports.assert(keysLength===valuesLength,()=>`The number of elements doesn't match, keys has ${keysLength} elements, the values has ${valuesLength} elements.`);for(let i=0;i{let result=[];for(let i=0;i<$keys.length;i++){let key=$keys[i],value=this.findWithDefault(key,defaultValue);result.push(value)}return stack(result)})}findWithDefault(key,defaultValue){let result=this.tensorMap.get(key);return result!=null?result:defaultValue}checkKeyAndValueTensor(key,value){if(key.dtype!==this.keyDType)throw new Error(`Expect key dtype ${this.keyDType}, but got ${key.dtype}`);if(value.dtype!==this.valueDType)throw new Error(`Expect value dtype ${this.valueDType}, but got ${value.dtype}`)}},executeOp9=async(node2,tensorMap,context,resourceManager)=>{switch(node2.op){case"HashTable":case"HashTableV2":{let keyDType=getParamValue("keyDType",node2,tensorMap,context),valueDType=getParamValue("valueDType",node2,tensorMap,context),hashTable2=new HashTable(keyDType,valueDType);return resourceManager.addHashTable(node2.name,hashTable2),[hashTable2.handle]}case"LookupTableImport":case"LookupTableImportV2":{let handle=getParamValue("tableHandle",node2,tensorMap,context,resourceManager),keys=getParamValue("keys",node2,tensorMap,context),values=getParamValue("values",node2,tensorMap,context);return[await resourceManager.getHashTableById(handle.id).import(keys,values)]}case"LookupTableFind":case"LookupTableFindV2":{let handle=getParamValue("tableHandle",node2,tensorMap,context,resourceManager),keys=getParamValue("keys",node2,tensorMap,context),defaultValue=getParamValue("defaultValue",node2,tensorMap,context);return[await resourceManager.getHashTableById(handle.id).find(keys,defaultValue)]}default:throw TypeError(`Node type ${node2.op} is not implemented`)}},executeOp10=(node2,tensorMap,context)=>{switch(node2.op){case"ResizeBilinear":{let images=getParamValue("images",node2,tensorMap,context),size=getParamValue("size",node2,tensorMap,context),alignCorners=getParamValue("alignCorners",node2,tensorMap,context),halfPixelCenters=getParamValue("halfPixelCenters",node2,tensorMap,context);return[image.resizeBilinear(images,[size[0],size[1]],alignCorners,halfPixelCenters)]}case"ResizeNearestNeighbor":{let images=getParamValue("images",node2,tensorMap,context),size=getParamValue("size",node2,tensorMap,context),alignCorners=getParamValue("alignCorners",node2,tensorMap,context),halfPixelCenters=getParamValue("halfPixelCenters",node2,tensorMap,context);return[image.resizeNearestNeighbor(images,[size[0],size[1]],alignCorners,halfPixelCenters)]}case"CropAndResize":{let image3=getParamValue("image",node2,tensorMap,context),boxes=getParamValue("boxes",node2,tensorMap,context),boxInd=getParamValue("boxInd",node2,tensorMap,context),cropSize=getParamValue("cropSize",node2,tensorMap,context),method=getParamValue("method",node2,tensorMap,context),extrapolationValue=getParamValue("extrapolationValue",node2,tensorMap,context);return[image.cropAndResize(image3,boxes,boxInd,cropSize,method,extrapolationValue)]}default:throw TypeError(`Node type ${node2.op} is not implemented`)}},executeOp11=(node2,tensorMap,context)=>{switch(node2.op){case"Equal":return[equal(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"NotEqual":return[notEqual(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"Greater":return[greater(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"GreaterEqual":return[greaterEqual(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"Less":return[less(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"LessEqual":return[lessEqual(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"LogicalAnd":return[logicalAnd(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"LogicalNot":return[logicalNot(getParamValue("a",node2,tensorMap,context))];case"LogicalOr":return[logicalOr(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];case"Select":case"SelectV2":return[where(getParamValue("condition",node2,tensorMap,context),getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context))];default:throw TypeError(`Node type ${node2.op} is not implemented`)}},executeOp12=(node2,tensorMap,context)=>{switch(node2.op){case"BatchMatMul":case"BatchMatMulV2":case"MatMul":return[matMul(getParamValue("a",node2,tensorMap,context),getParamValue("b",node2,tensorMap,context),getParamValue("transposeA",node2,tensorMap,context),getParamValue("transposeB",node2,tensorMap,context))];case"Transpose":return[transpose(getParamValue("x",node2,tensorMap,context),getParamValue("perm",node2,tensorMap,context))];case"_FusedMatMul":let[extraOp,activationFunc]=getParamValue("fusedOps",node2,tensorMap,context),isBiasAdd=extraOp==="biasadd",isPrelu=activationFunc==="prelu",numArgs=getParamValue("numArgs",node2,tensorMap,context),leakyreluAlpha=getParamValue("leakyreluAlpha",node2,tensorMap,context);if(isBiasAdd){if(isPrelu&&numArgs!==2)throw new Error("Fused MatMul with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!isPrelu&&numArgs!==1)throw new Error("Fused MatMul with BiasAdd must have one extra argument: bias.")}let[biasArg,preluArg]=getParamValue("args",node2,tensorMap,context);return[fused_ops_exports.matMul({a:getParamValue("a",node2,tensorMap,context),b:getParamValue("b",node2,tensorMap,context),transposeA:getParamValue("transposeA",node2,tensorMap,context),transposeB:getParamValue("transposeB",node2,tensorMap,context),bias:biasArg,activation:activationFunc,preluActivationWeights:preluArg,leakyreluAlpha})];default:throw TypeError(`Node type ${node2.op} is not implemented`)}},executeOp13=(node2,tensorMap,context)=>{switch(node2.op){case"FusedBatchNorm":case"FusedBatchNormV2":return[batchNorm(getParamValue("x",node2,tensorMap,context),getParamValue("mean",node2,tensorMap,context),getParamValue("variance",node2,tensorMap,context),getParamValue("offset",node2,tensorMap,context),getParamValue("scale",node2,tensorMap,context),getParamValue("epsilon",node2,tensorMap,context))];case"FusedBatchNormV3":return[batchNorm(getParamValue("x",node2,tensorMap,context),getParamValue("mean",node2,tensorMap,context),getParamValue("variance",node2,tensorMap,context),getParamValue("offset",node2,tensorMap,context),getParamValue("scale",node2,tensorMap,context),getParamValue("epsilon",node2,tensorMap,context))];case"LRN":return[localResponseNormalization(getParamValue("x",node2,tensorMap,context),getParamValue("radius",node2,tensorMap,context),getParamValue("bias",node2,tensorMap,context),getParamValue("alpha",node2,tensorMap,context),getParamValue("beta",node2,tensorMap,context))];case"Softmax":return[softmax(getParamValue("x",node2,tensorMap,context))];case"LogSoftmax":return[logSoftmax(getParamValue("x",node2,tensorMap,context))];case"SparseToDense":return[sparseToDense(getParamValue("sparseIndices",node2,tensorMap,context),getParamValue("outputShape",node2,tensorMap,context),getParamValue("sparseValues",node2,tensorMap,context),getParamValue("defaultValue",node2,tensorMap,context))];default:throw TypeError(`Node type ${node2.op} is not implemented`)}},executeOp14=(node2,tensorMap,context)=>{switch(node2.op){case"Max":{let axis=getParamValue("axis",node2,tensorMap,context),keepDims=getParamValue("keepDims",node2,tensorMap,context);return[max(getParamValue("x",node2,tensorMap,context),axis,keepDims)]}case"Mean":{let axis=getParamValue("axis",node2,tensorMap,context),keepDims=getParamValue("keepDims",node2,tensorMap,context);return[mean(getParamValue("x",node2,tensorMap,context),axis,keepDims)]}case"Min":{let axis=getParamValue("axis",node2,tensorMap,context),keepDims=getParamValue("keepDims",node2,tensorMap,context);return[min(getParamValue("x",node2,tensorMap,context),axis,keepDims)]}case"Sum":{let axis=getParamValue("axis",node2,tensorMap,context),keepDims=getParamValue("keepDims",node2,tensorMap,context);return[sum2(getParamValue("x",node2,tensorMap,context),axis,keepDims)]}case"All":{let axis=getParamValue("axis",node2,tensorMap,context),keepDims=getParamValue("keepDims",node2,tensorMap,context);return[all(getParamValue("x",node2,tensorMap,context),axis,keepDims)]}case"Any":{let axis=getParamValue("axis",node2,tensorMap,context),keepDims=getParamValue("keepDims",node2,tensorMap,context);return[any(getParamValue("x",node2,tensorMap,context),axis,keepDims)]}case"ArgMax":{let axis=getParamValue("axis",node2,tensorMap,context);return[argMax(getParamValue("x",node2,tensorMap,context),axis)]}case"ArgMin":{let axis=getParamValue("axis",node2,tensorMap,context);return[argMin(getParamValue("x",node2,tensorMap,context),axis)]}case"Prod":{let axis=getParamValue("axis",node2,tensorMap,context),keepDims=getParamValue("keepDims",node2,tensorMap,context);return[prod(getParamValue("x",node2,tensorMap,context),axis,keepDims)]}case"Cumsum":{let axis=getParamValue("axis",node2,tensorMap,context),exclusive=getParamValue("exclusive",node2,tensorMap,context),reverse5=getParamValue("reverse",node2,tensorMap,context);return[cumsum(getParamValue("x",node2,tensorMap,context),axis,exclusive,reverse5)]}case"Bincount":let x=getParamValue("x",node2,tensorMap,context),weights=getParamValue("weights",node2,tensorMap,context),size=getParamValue("size",node2,tensorMap,context);return[bincount(x,weights,size)];case"DenseBincount":{let x2=getParamValue("x",node2,tensorMap,context),weights2=getParamValue("weights",node2,tensorMap,context),size2=getParamValue("size",node2,tensorMap,context),binaryOutput=getParamValue("binaryOutput",node2,tensorMap,context);return[denseBincount(x2,weights2,size2,binaryOutput)]}default:throw TypeError(`Node type ${node2.op} is not implemented`)}},executeOp15=(node2,tensorMap,context)=>{switch(node2.op){case"ConcatV2":case"Concat":{let n=getParamValue("n",node2,tensorMap,context),axis=getParamValue("axis",node2,tensorMap,context),inputs=getParamValue("tensors",node2,tensorMap,context);return inputs=inputs.slice(0,n),[concat(inputs,axis)]}case"Gather":{let input2=getParamValue("x",node2,tensorMap,context),indices=getParamValue("indices",node2,tensorMap,context);return[gather(input2,cast(indices,"int32"),0)]}case"GatherV2":{let axis=getParamValue("axis",node2,tensorMap,context),batchDims=getParamValue("batchDims",node2,tensorMap,context),input2=getParamValue("x",node2,tensorMap,context),indices=getParamValue("indices",node2,tensorMap,context);return[gather(input2,cast(indices,"int32"),axis,batchDims)]}case"Reverse":{let dims=getParamValue("dims",node2,tensorMap,context),axis=[];for(let i=0;i{let axis=getParamValue("axis",node2,tensorMap,context),tensors=getParamValue("tensors",node2,tensorMap,context),shape=tensors[0].shape,squeezedShape=squeeze(tensors[0]).shape,mapped=tensors.map(tensor2=>{let sameShape=util_exports.arraysEqual(tensor2.shape,shape);if(!sameShape&&!util_exports.arraysEqual(squeeze(tensor2).shape,squeezedShape))throw new Error("the input tensors shape does not match");return sameShape?tensor2:reshape(tensor2,shape)});return[stack(mapped,axis)]});case"Unpack":{let axis=getParamValue("axis",node2,tensorMap,context),tensor2=getParamValue("tensor",node2,tensorMap,context);return unstack(tensor2,axis)}case"Tile":{let reps=getParamValue("reps",node2,tensorMap,context);return[tile(getParamValue("x",node2,tensorMap,context),reps)]}case"Split":case"SplitV":{let axis=getParamValue("axis",node2,tensorMap,context),numOrSizeSplits=getParamValue("numOrSizeSplits",node2,tensorMap,context),tensor2=getParamValue("x",node2,tensorMap,context);return split(tensor2,numOrSizeSplits,axis)}case"ScatterNd":{let indices=getParamValue("indices",node2,tensorMap,context),values=getParamValue("values",node2,tensorMap,context),shape=getParamValue("shape",node2,tensorMap,context);return[scatterND(indices,values,shape)]}case"GatherNd":{let x=getParamValue("x",node2,tensorMap,context),indices=getParamValue("indices",node2,tensorMap,context);return[gatherND(x,indices)]}case"SparseToDense":{let indices=getParamValue("sparseIndices",node2,tensorMap,context),shape=getParamValue("outputShape",node2,tensorMap,context),sparseValues=getParamValue("sparseValues",node2,tensorMap,context),defaultValue=getParamValue("defaultValue",node2,tensorMap,context);return[sparseToDense(indices,sparseValues,shape,sparseValues.dtype===defaultValue.dtype?defaultValue:cast(defaultValue,sparseValues.dtype))]}default:throw TypeError(`Node type ${node2.op} is not implemented`)}},executeOp16=(node2,tensorMap,context)=>{switch(node2.op){case"FFT":return[fft(getParamValue("x",node2,tensorMap,context))];case"IFFT":return[ifft(getParamValue("x",node2,tensorMap,context))];case"RFFT":return[rfft(getParamValue("x",node2,tensorMap,context))];case"IRFFT":return[irfft(getParamValue("x",node2,tensorMap,context))];default:throw TypeError(`Node type ${node2.op} is not implemented`)}},executeOp17=(node2,tensorMap,context)=>{switch(node2.op){case"Cast":return[cast(getParamValue("x",node2,tensorMap,context),getParamValue("dtype",node2,tensorMap,context))];case"ExpandDims":{let axis=getParamValue("axis",node2,tensorMap,context);return[expandDims(getParamValue("x",node2,tensorMap,context),axis)]}case"Squeeze":{let axis=getParamValue("axis",node2,tensorMap,context);return[squeeze(getParamValue("x",node2,tensorMap,context),axis)]}case"Reshape":return[reshape(getParamValue("x",node2,tensorMap,context),getParamValue("shape",node2,tensorMap,context))];case"MirrorPad":return[mirrorPad(getParamValue("x",node2,tensorMap,context),getParamValue("padding",node2,tensorMap,context),getParamValue("mode",node2,tensorMap,context))];case"PadV2":case"Pad":return[pad(getParamValue("x",node2,tensorMap,context),getParamValue("padding",node2,tensorMap,context),getParamValue("constantValue",node2,tensorMap,context))];case"SpaceToBatchND":{let blockShape=getParamValue("blockShape",node2,tensorMap,context),paddings=getParamValue("paddings",node2,tensorMap,context);return[spaceToBatchND(getParamValue("x",node2,tensorMap,context),blockShape,paddings)]}case"BatchToSpaceND":{let blockShape=getParamValue("blockShape",node2,tensorMap,context),crops=getParamValue("crops",node2,tensorMap,context);return[batchToSpaceND(getParamValue("x",node2,tensorMap,context),blockShape,crops)]}case"DepthToSpace":{let blockSize=getParamValue("blockSize",node2,tensorMap,context),dataFormat=getParamValue("dataFormat",node2,tensorMap,context).toUpperCase();return[depthToSpace(getParamValue("x",node2,tensorMap,context),blockSize,dataFormat)]}case"BroadcastTo":return[broadcastTo(getParamValue("x",node2,tensorMap,context),getParamValue("shape",node2,tensorMap,context))];default:throw TypeError(`Node type ${node2.op} is not implemented`)}};function executeOp18(node2,tensorMap,context,resourceManager){let value=((node22,tensorMap2,context2)=>{switch(node22.category){case"arithmetic":return tidy(()=>executeOp(node22,tensorMap2,context2));case"basic_math":return tidy(()=>executeOp2(node22,tensorMap2,context2));case"control":return executeOp3(node22,tensorMap2,context2);case"convolution":return tidy(()=>executeOp4(node22,tensorMap2,context2));case"creation":return tidy(()=>executeOp5(node22,tensorMap2,context2));case"dynamic":return executeOp6(node22,tensorMap2,context2);case"evaluation":return tidy(()=>executeOp7(node22,tensorMap2,context2));case"image":return tidy(()=>executeOp10(node22,tensorMap2,context2));case"graph":return tidy(()=>executeOp8(node22,tensorMap2,context2));case"logical":return tidy(()=>executeOp11(node22,tensorMap2,context2));case"matrices":return tidy(()=>executeOp12(node22,tensorMap2,context2));case"normalization":return tidy(()=>executeOp13(node22,tensorMap2,context2));case"reduction":return tidy(()=>executeOp14(node22,tensorMap2,context2));case"slice_join":return tidy(()=>executeOp15(node22,tensorMap2,context2));case"spectral":return tidy(()=>executeOp16(node22,tensorMap2,context2));case"transformation":return tidy(()=>executeOp17(node22,tensorMap2,context2));case"hash_table":return executeOp9(node22,tensorMap2,context2,resourceManager);case"custom":let opMapper=getRegisteredOp(node22.op);if(opMapper&&opMapper.customExecutor)return opMapper.customExecutor(new NodeValueImpl(node22,tensorMap2,context2));throw TypeError(`Custom op ${node22.op} is not registered.`);default:throw TypeError(`Unknown op '${node22.op}'. File an issue at https://github.com/tensorflow/tfjs/issues so we can add it, or register a custom execution with tf.registerOp()`)}})(node2,tensorMap,context);return util_exports.isPromise(value)?value.then(data=>[].concat(data)):[].concat(value)}var ExecutionContext=class{constructor(weightMap={},tensorArrayMap={},tensorListMap={},functionMap={}){this.weightMap=weightMap,this.tensorArrayMap=tensorArrayMap,this.tensorListMap=tensorListMap,this.functionMap=functionMap,this.rootContext={id:0,frameName:"",iterationId:0},this.contexts=[this.rootContext],this.lastId=0,this.generateCurrentContextIds()}newFrame(id,frameName){return{id,frameName,iterationId:0}}set currentContext(contexts2){this.contexts!==contexts2&&(this.contexts=contexts2,this.generateCurrentContextIds())}get currentContext(){return this.contexts}get currentContextId(){return this._currentContextIds[0]}get currentContextIds(){return this._currentContextIds}generateCurrentContextIds(){let names=[];for(let i=0;icontext.id===0&&context.iterationId===0?"":`${context.frameName}-${context.iterationId}`).join("/"):""}enterFrame(frameId){this.contexts&&(this.lastId++,this.contexts=this.contexts.slice(),this.contexts.push(this.newFrame(this.lastId,frameId)),this._currentContextIds.unshift(this.contextIdforContexts(this.contexts)))}exitFrame(){if(this.contexts&&this.contexts.length>1)this.contexts=this.contexts.slice(),this.contexts.splice(-1),this.currentContextIds.shift();else throw new Error("Cannot exit frame, the context is empty")}nextIteration(){if(this.contexts&&this.contexts.length>0){this.contexts=this.contexts.slice(),this.lastId++;let context=Object.assign({},this.contexts[this.contexts.length-1]);context.iterationId+=1,context.id=this.lastId,this.contexts.splice(-1,1,context),this._currentContextIds.splice(0,1,this.contextIdforContexts(this.contexts))}else throw new Error("Cannot increase frame iteration, the context is empty")}getWeight(name){return this.weightMap[name]}addTensorArray(tensorArray){this.tensorArrayMap[tensorArray.id]=tensorArray}getTensorArray(id){return this.tensorArrayMap[id]}addTensorList(tensorList){this.tensorListMap[tensorList.id]=tensorList}getTensorList(id){return this.tensorListMap[id]}dispose(keepIds){for(let key in this.tensorArrayMap)this.tensorArrayMap[key].clearAndClose(keepIds);for(let key in this.tensorListMap)this.tensorListMap[key].clearAndClose(keepIds)}};function getExecutionSubgraph(inputs,outputs,weightMap,initNodes){let usedNodes=new Set,missingInputs=[],dynamicNode=null,syncInputs=null,seen=new Set,inputNodeNames=Object.keys(inputs).map(name=>parseNodeName(name)[0]),initNodeNames=[];initNodes!=null&&(initNodeNames=initNodes.map(node2=>parseNodeName(node2.name)[0]));let frontier=[...outputs];for(;frontier.length>0;){let node2=frontier.pop();if((isControlFlow(node2)||isDynamicShape(node2)||isHashTable(node2))&&dynamicNode==null&&(dynamicNode=node2,syncInputs=dynamicNode.children.map(child=>child.name).filter(name=>usedNodes.has(name))),usedNodes.add(node2.name),weightMap[node2.name]==null&&inputNodeNames.indexOf(node2.name)===-1&&initNodeNames.indexOf(node2.name)===-1){if(node2.inputs.length===0){missingInputs.push(node2.name);continue}node2.inputs.forEach(input2=>{seen.has(input2.name)||(seen.add(input2.name),frontier.push(input2))})}}return{inputs,outputs,usedNodes,missingInputs,dynamicNode,syncInputs}}function getNodesInTopologicalOrder(graph2,weightMap,executionInfo){let{usedNodes,inputs}=executionInfo,frontier=[],inputNodes=Object.keys(inputs).map(name=>parseNodeName(name)[0]).map(name=>graph2.nodes[name]),initNodes=graph2.initNodes;inputNodes.forEach(input2=>{usedNodes.has(input2.name)&&frontier.push(input2)}),graph2.weights.forEach(weight=>{usedNodes.has(weight.name)&&frontier.push(weight)}),initNodes!=null&&initNodes.forEach(node2=>{usedNodes.has(node2.name)&&frontier.push(node2)});let seen=new Set,orderedNodes=[];for(;frontier.length>0;){let node2=frontier.pop();seen.add(node2.name),weightMap[node2.name]||orderedNodes.push(node2),node2.children.forEach(child=>{!seen.has(child.name)&&usedNodes.has(child.name)&&child.inputs.every(input2=>seen.has(input2.name))&&frontier.push(child)})}return orderedNodes}var CONTROL_FLOW_OPS=["Switch","Merge","Enter","Exit","NextIteration","StatelessIf","StatelessWhile","if","While"],DYNAMIC_SHAPE_OPS=["NonMaxSuppressionV2","NonMaxSuppressionV3","NonMaxSuppressionV5","Where"],HASH_TABLE_OPS=["HashTable","HashTableV2","LookupTableImport","LookupTableImportV2","LookupTableFind","LookupTableFindV2"];function isControlFlow(node2){return CONTROL_FLOW_OPS.indexOf(node2.op)>=0}function isDynamicShape(node2){return DYNAMIC_SHAPE_OPS.indexOf(node2.op)>=0}function isHashTable(node2){return HASH_TABLE_OPS.indexOf(node2.op)>=0}var GraphExecutor=class{constructor(graph2,parent){this.graph=graph2,this.parent=parent,this.compiledMap=new Map,this._weightMap={},this.SEPERATOR=",",this._functions={},this._functionExecutorMap={},this._outputs=graph2.outputs,this._inputs=graph2.inputs,this._initNodes=graph2.initNodes,this._signature=graph2.signature,this._functions=graph2.functions,graph2.functions!=null&&Object.keys(graph2.functions).forEach(name=>{this._functionExecutorMap[name]=new GraphExecutor(graph2.functions[name],this)})}get weightIds(){return this.parent?this.parent.weightIds:this._weightIds}get functionExecutorMap(){return this.parent?this.parent.functionExecutorMap:this._functionExecutorMap}get weightMap(){return this.parent?this.parent.weightMap:this._weightMap}set weightMap(weightMap){let weightIds=Object.keys(weightMap).map(key=>weightMap[key].map(tensor2=>tensor2.id));this._weightIds=[].concat(...weightIds),this._weightMap=weightMap}set resourceManager(resourceManager){this._resourceManager=resourceManager}get inputs(){return this._inputs.map(node2=>({name:node2.name,shape:node2.attrParams.shape?node2.attrParams.shape.value:void 0,dtype:node2.attrParams.dtype?node2.attrParams.dtype.value:void 0}))}get outputs(){return this._outputs.map(node2=>({name:node2.name,shape:node2.attrParams.shape?node2.attrParams.shape.value:void 0,dtype:node2.attrParams.dtype?node2.attrParams.dtype.value:void 0}))}get inputNodes(){return this._inputs.map(node2=>node2.signatureKey||node2.name)}get outputNodes(){return this._outputs.map(node2=>{let name=node2.signatureKey||node2.name;return node2.defaultOutput?`${name}:${node2.defaultOutput}`:name})}get functions(){return Object.keys(this._functions).reduce((map,key)=>(map[key]=this._functions[key].signature,map),{})}getCompilationKey(inputs,outputs){let sortedInputs=inputs.map(node2=>node2.name).sort(),sortedOutputs=outputs.map(node2=>node2.name).sort();return sortedInputs.join(this.SEPERATOR)+"--"+sortedOutputs.join(this.SEPERATOR)}compile(inputs,outputs){let executionInfo=getExecutionSubgraph(inputs,outputs,this.weightMap,this._initNodes),{missingInputs,dynamicNode,syncInputs}=executionInfo;if(dynamicNode!=null)throw new Error(`This execution contains the node '${dynamicNode.name}', which has the dynamic op '${dynamicNode.op}'. Please use model.executeAsync() instead. Alternatively, to avoid the dynamic ops, specify the inputs [${syncInputs}]`);if(missingInputs.length>0){let outNames=outputs.map(n=>n.name),inNames=Object.keys(inputs);throw new Error(`Cannot compute the outputs [${outNames}] from the provided inputs [${inNames}]. Missing the following inputs: [${missingInputs}]`)}return getNodesInTopologicalOrder(this.graph,this.weightMap,executionInfo)}execute(inputs,outputs){inputs=this.mapInputs(inputs);let names=Object.keys(inputs).sort();this.checkInputs(inputs),this.checkInputShapeAndType(inputs),outputs=this.mapOutputs(outputs),this.checkOutputs(outputs);let inputNodes=names.map(name=>this.graph.nodes[parseNodeName(name)[0]]),outputNodeNames=outputs.map(name=>parseNodeName(name)[0]),outputNodes=outputNodeNames.map(name=>this.graph.nodes[name]);outputNodes.length===0&&(outputNodes=this._outputs);let compilationKey=this.getCompilationKey(inputNodes,outputNodes),orderedNodes=this.compiledMap.get(compilationKey);orderedNodes==null&&(orderedNodes=this.compile(inputs,outputNodes),this.compiledMap.set(compilationKey,orderedNodes));let tensorArrayMap={},tensorListMap={};return tidy(()=>{let context=new ExecutionContext(this.weightMap,tensorArrayMap,tensorListMap,this.functionExecutorMap),tensorsMap=Object.assign({},this.weightMap);Object.keys(inputs).forEach(name=>{let[nodeName,index]=parseNodeName(name),tensors=[];tensors[index]=inputs[name],tensorsMap[nodeName]=tensors});let tensorsToKeep=this.getFrozenTensorIds(tensorsMap),intermediateTensorConsumerCount={};for(let i=0;igetTensor(name,tensorsMap,context))})}getFrozenTensorIds(tensorMap){let ids=[].concat.apply([],Object.keys(tensorMap).map(key=>tensorMap[key]).map(tensors=>tensors.map(tensor2=>tensor2.id)));return new Set(ids)}checkTensorForDisposal(nodeName,node2,tensorMap,context,tensorsToKeep,outputNames,intermediateTensorConsumerCount){node2.category==="control"||outputNames.indexOf(nodeName)!==-1||(tensorMap[nodeName].forEach(tensor2=>{tensor2!=null&&(intermediateTensorConsumerCount[tensor2.id]=(intermediateTensorConsumerCount[tensor2.id]||0)+node2.children.length)}),node2.inputs.forEach(input2=>{if(input2.category!=="control"){let tensors=getTensorsForCurrentContenxt(input2.name,tensorMap,context);tensors!=null&&tensors.forEach(tensor2=>{if(tensor2&&!tensorsToKeep.has(tensor2.id)){let count2=intermediateTensorConsumerCount[tensor2.id];count2===1?(tensor2.dispose(),delete intermediateTensorConsumerCount[tensor2.id]):count2!=null&&intermediateTensorConsumerCount[tensor2.id]--}})}}))}async executeAsync(inputs,outputs){return this._executeAsync(inputs,outputs)}async _executeAsync(inputs,outputs,isFunctionExecution=!1,tensorArrayMap={},tensorListMap={}){isFunctionExecution||(inputs=this.mapInputs(inputs),this.checkInputs(inputs),this.checkInputShapeAndType(inputs),outputs=this.mapOutputs(outputs),this.checkOutputs(outputs));let context=new ExecutionContext(this.weightMap,tensorArrayMap,tensorListMap,this.functionExecutorMap),tensorMap=await this.executeWithControlFlow(inputs,context,outputs,isFunctionExecution),results=outputs.map(name=>getTensor(name,tensorMap,context)),outputIds=results.map(t=>t.id),inputIds=Object.keys(inputs).map(name=>inputs[name].id),keepIds=new Set([...outputIds,...inputIds,...this.weightIds]);return Object.keys(tensorMap).forEach(key=>{tensorMap[key].forEach(tensor2=>{tensor2&&!tensor2.isDisposed&&!keepIds.has(tensor2.id)&&tensor2.dispose()})}),this.parent==null&&context.dispose(keepIds),results}async executeFunctionAsync(inputs,tensorArrayMap,tensorListMap){let mappedInputs=inputs.reduce((map,tensor2,index)=>(map[this.inputs[index].name]=tensor2,map),{});return this._executeAsync(mappedInputs,this.outputNodes,!0,tensorArrayMap,tensorListMap)}async executeWithControlFlow(inputs,context,outputNames,isFunctionExecution){let names=Object.keys(inputs),inputNodes=names.map(name=>this.graph.nodes[parseNodeName(name)[0]]),outputNodeNames=outputNames.map(name=>parseNodeName(name)[0]),outputNodes=outputNodeNames.map(name=>this.graph.nodes[name]);outputNodes.length===0&&(outputNodes=this._outputs);let{usedNodes,missingInputs,dynamicNode,syncInputs}=getExecutionSubgraph(inputs,outputNodes,this.weightMap,this._initNodes),stack2=[...inputNodes,...this.graph.weights,...this._initNodes||[]].map(node2=>({node:node2,contexts:context.currentContext})),tensorsMap=Object.assign({},this.weightMap);Object.keys(inputs).forEach(name=>{let[nodeName,index]=parseNodeName(name),tensors=[];tensors[index]=inputs[name],tensorsMap[nodeName]=tensors});let intermediateTensorConsumerCount={},tensorsToKeep=this.getFrozenTensorIds(tensorsMap),added={};for(;stack2.length>0;){let promises=this.processStack(inputNodes,stack2,context,tensorsMap,added,tensorsToKeep,outputNodeNames,intermediateTensorConsumerCount,usedNodes);await Promise.all(promises)}dynamicNode==null&&!isFunctionExecution&&console.warn("This model execution did not contain any nodes with control flow or dynamic output shapes. You can use model.execute() instead.");let missingOutputs=outputNodes.filter(node2=>!isControlFlow(node2)&&!getTensor(node2.name,tensorsMap,context)).map(node2=>node2.name);if(missingOutputs.length>0){let alternativeMsg="";throw dynamicNode!=null&&(alternativeMsg=`Alternatively, to avoid the dynamic ops, use model.execute() and specify the inputs [${syncInputs}]`),new Error(`Cannot compute the outputs [${missingOutputs}] from the provided inputs [${names}]. Consider providing the following inputs: [${missingInputs}]. ${alternativeMsg}`)}return tensorsMap}processStack(inputNodes,stack2,context,tensorMap,added,tensorsToKeep,outputNames,intermediateTensorConsumerCount,usedNodes){let promises=[];for(;stack2.length>0;){let item=stack2.pop();context.currentContext=item.contexts;let nodeName="";if(item.node.op==="Enter"&&getParamValue("isConstant",item.node,tensorMap,context)&&([nodeName]=getNodeNameAndIndex(item.node.name,context)),tensorMap[item.node.name]==null){let tensors=executeOp18(item.node,tensorMap,context,this._resourceManager);nodeName||([nodeName]=getNodeNameAndIndex(item.node.name,context));let currentContext=context.currentContext;util_exports.isPromise(tensors)?promises.push(tensors.then(t=>(tensorMap[nodeName]=t,context.currentContext=currentContext,this.checkTensorForDisposal(nodeName,item.node,tensorMap,context,tensorsToKeep,outputNames,intermediateTensorConsumerCount),this.processChildNodes(item.node,stack2,context,tensorMap,added,usedNodes),t))):(tensorMap[nodeName]=tensors,this.checkTensorForDisposal(nodeName,item.node,tensorMap,context,tensorsToKeep,outputNames,intermediateTensorConsumerCount),this.processChildNodes(item.node,stack2,context,tensorMap,added,usedNodes))}else this.processChildNodes(item.node,stack2,context,tensorMap,added,usedNodes)}return promises}processChildNodes(node2,stack2,context,tensorMap,added,usedNodes){node2.children.forEach(childNode=>{let[nodeName]=getNodeNameAndIndex(childNode.name,context);added[nodeName]||!usedNodes.has(childNode.name)||(childNode.op==="Merge"?childNode.inputNames.some(name=>!!getTensor(name,tensorMap,context))&&(added[nodeName]=!0,stack2.push({contexts:context.currentContext,node:childNode})):childNode.inputNames.every(name=>!!getTensor(name,tensorMap,context))&&(added[nodeName]=!0,stack2.push({contexts:context.currentContext,node:childNode})))})}dispose(){Object.keys(this.weightMap).forEach(key=>this.weightMap[key].forEach(tensor2=>tensor2.dispose()))}checkInputShapeAndType(inputs){Object.keys(inputs).forEach(name=>{let input2=inputs[name],[nodeName]=parseNodeName(name),node2=this.graph.nodes[nodeName];if(node2.attrParams.shape&&node2.attrParams.shape.value){let shape=node2.attrParams.shape.value,match=shape.length===input2.shape.length&&input2.shape.every((dim,index)=>shape[index]===-1||shape[index]===dim);util_exports.assert(match,()=>`The shape of dict['${node2.name}'] provided in model.execute(dict) must be [${shape}], but was [${input2.shape}]`)}node2.attrParams.dtype&&node2.attrParams.dtype.value&&util_exports.assert(input2.dtype===node2.attrParams.dtype.value,()=>`The dtype of dict['${node2.name}'] provided in model.execute(dict) must be ${node2.attrParams.dtype.value}, but was ${input2.dtype}`)})}mapInputs(inputs){let result={};for(let inputName in inputs)if(this._signature!=null&&this._signature.inputs!=null&&this._signature.inputs[inputName]!=null){let tensor2=this._signature.inputs[inputName];result[tensor2.name]=inputs[inputName]}else result[inputName]=inputs[inputName];return result}checkInputs(inputs){let notInGraph=Object.keys(inputs).filter(name=>{let[nodeName]=parseNodeName(name);return this.graph.nodes[nodeName]==null});if(notInGraph.length>0)throw new Error(`The dict provided in model.execute(dict) has keys: [${notInGraph}] that are not part of graph`)}mapOutputs(outputs){return outputs.map(name=>this._signature!=null&&this._signature.outputs!=null&&this._signature.outputs[name]!=null?this._signature.outputs[name].name:name,{})}checkOutputs(outputs){outputs.forEach(name=>{let[normalizedName]=parseNodeName(name);if(!this.graph.nodes[normalizedName])throw new Error(`The output '${name}' is not found in the graph`)})}},ResourceManager=class{constructor(hashTableNameToHandle={},hashTableMap={}){this.hashTableNameToHandle=hashTableNameToHandle,this.hashTableMap=hashTableMap}addHashTable(name,hashTable2){this.hashTableNameToHandle[name]=hashTable2.handle,this.hashTableMap[hashTable2.id]=hashTable2}getHashTableHandleByName(name){return this.hashTableNameToHandle[name]}getHashTableById(id){return this.hashTableMap[id]}dispose(){for(let key in this.hashTableMap)this.hashTableMap[key].clearAndClose(),delete this.hashTableMap[key];for(let name in this.hashTableNameToHandle)this.hashTableNameToHandle[name].dispose(),delete this.hashTableNameToHandle[name]}},TFHUB_SEARCH_PARAM="?tfjs-format=file",DEFAULT_MODEL_NAME="model.json",GraphModel=class{constructor(modelUrl,loadOptions={}){this.modelUrl=modelUrl,this.loadOptions=loadOptions,this.version="n/a",loadOptions==null&&(this.loadOptions={}),this.resourceManager=new ResourceManager}get modelVersion(){return this.version}get inputNodes(){return this.executor.inputNodes}get outputNodes(){return this.executor.outputNodes}get inputs(){return this.executor.inputs}get outputs(){return this.executor.outputs}get weights(){return this.executor.weightMap}get metadata(){return this.artifacts.userDefinedMetadata}get modelSignature(){return this.signature}findIOHandler(){let path=this.modelUrl;if(path.load!=null)this.handler=path;else if(this.loadOptions.requestInit!=null)this.handler=io_exports.browserHTTPRequest(path,this.loadOptions);else{let handlers=io_exports.getLoadHandlers(path,this.loadOptions);if(handlers.length===0)handlers.push(io_exports.browserHTTPRequest(path,this.loadOptions));else if(handlers.length>1)throw new Error(`Found more than one (${handlers.length}) load handlers for URL '${[path]}'`);this.handler=handlers[0]}}async load(){if(this.findIOHandler(),this.handler.load==null)throw new Error("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let artifacts=await this.handler.load();return this.loadSync(artifacts)}loadSync(artifacts){this.artifacts=artifacts;let graph2=this.artifacts.modelTopology,signature;this.artifacts.userDefinedMetadata!=null&&this.artifacts.userDefinedMetadata.signature!=null?signature=this.artifacts.userDefinedMetadata.signature:signature=this.artifacts.signature,this.signature=signature,this.version=`${graph2.versions.producer}.${graph2.versions.minConsumer}`;let weightMap=io_exports.decodeWeights(this.artifacts.weightData,this.artifacts.weightSpecs);if(this.executor=new GraphExecutor(OperationMapper.Instance.transformGraph(graph2,this.signature)),this.executor.weightMap=this.convertTensorMapToTensorsMap(weightMap),this.executor.resourceManager=this.resourceManager,artifacts.modelInitializer!=null&&artifacts.modelInitializer.node!=null){let initializer=OperationMapper.Instance.transformGraph(artifacts.modelInitializer);this.initializer=new GraphExecutor(initializer),this.initializer.weightMap=this.executor.weightMap,this.initializer.resourceManager=this.resourceManager,this.initializer.executeAsync({},[])}return!0}async save(handlerOrURL,config){if(typeof handlerOrURL=="string"){let handlers=io_exports.getSaveHandlers(handlerOrURL);if(handlers.length===0)throw new Error(`Cannot find any save handlers for URL '${handlerOrURL}'`);if(handlers.length>1)throw new Error(`Found more than one (${handlers.length}) save handlers for URL '${handlerOrURL}'`);handlerOrURL=handlers[0]}if(handlerOrURL.save==null)throw new Error("GraphModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");return handlerOrURL.save(this.artifacts)}predict(inputs,config){return this.execute(inputs,this.outputNodes)}normalizeInputs(inputs){if(!(inputs instanceof Tensor)&&!Array.isArray(inputs))return inputs;if(inputs=Array.isArray(inputs)?inputs:[inputs],inputs.length!==this.inputNodes.length)throw new Error(`Input tensor count mismatch,the graph model has ${this.inputNodes.length} placeholders, while there are ${inputs.length} input tensors.`);return this.inputNodes.reduce((map,inputName,i)=>(map[inputName]=inputs[i],map),{})}normalizeOutputs(outputs){return outputs=outputs||this.outputNodes,Array.isArray(outputs)?outputs:[outputs]}execute(inputs,outputs){inputs=this.normalizeInputs(inputs),outputs=this.normalizeOutputs(outputs);let result=this.executor.execute(inputs,outputs);return result.length>1?result:result[0]}async executeAsync(inputs,outputs){inputs=this.normalizeInputs(inputs),outputs=this.normalizeOutputs(outputs);let result=await this.executor.executeAsync(inputs,outputs);return result.length>1?result:result[0]}convertTensorMapToTensorsMap(map){return Object.keys(map).reduce((newMap,key)=>(newMap[key]=[map[key]],newMap),{})}dispose(){this.executor.dispose(),this.initializer&&this.initializer.dispose(),this.resourceManager.dispose()}};async function loadGraphModel(modelUrl,options={}){if(modelUrl==null)throw new Error("modelUrl in loadGraphModel() cannot be null. Please provide a url or an IOHandler that loads the model");options==null&&(options={}),options.fromTFHub&&modelUrl.load==null&&(modelUrl.endsWith("/")||(modelUrl=modelUrl+"/"),modelUrl=`${modelUrl}${DEFAULT_MODEL_NAME}${TFHUB_SEARCH_PARAM}`);let model2=new GraphModel(modelUrl,options);return await model2.load(),model2}var version3="2.8.3",dist_exports={};__export2(dist_exports,{CSVDataset:()=>CSVDataset,Dataset:()=>Dataset,FileDataSource:()=>FileDataSource,TextLineDataset:()=>TextLineDataset,URLDataSource:()=>URLDataSource,array:()=>array,csv:()=>csv,func:()=>func,generator:()=>generator,microphone:()=>microphone,version_data:()=>version4,webcam:()=>webcam,zip:()=>zip});var seedrandom3=__toModule2(require_seedrandom2()),seedrandom2=__toModule2(require_seedrandom2());function deepMap(input2,mapFn){return deepMapInternal(input2,mapFn)}function deepMapInternal(input2,mapFn,seen=new Map,containedIn=new Set){if(input2==null)return null;if(containedIn.has(input2))throw new Error("Circular references are not supported.");if(seen.has(input2))return seen.get(input2);let result=mapFn(input2);if(result.recurse&&result.value!==null)throw new Error("A deep map function may not return both a value and recurse=true.");if(result.recurse)if(isIterable2(input2)){let mappedIterable=Array.isArray(input2)?[]:{};containedIn.add(input2);for(let k in input2){let child=input2[k],childResult=deepMapInternal(child,mapFn,seen,containedIn);mappedIterable[k]=childResult}return containedIn.delete(input2),mappedIterable}else throw new Error(`Can't recurse into non-iterable type: ${input2}`);else return seen.set(input2,result.value),result.value}function deepZip(inputs,zipFn=zipToList){return deepZipInternal(inputs,zipFn)}function deepZipInternal(inputs,zipFn,containedIn=new Set){let input2=inputs[0];if(containedIn.has(input2))throw new Error("Circular references are not supported.");let result=zipFn(inputs);if(result.recurse&&result.value!==null)throw new Error("A deep zip function may not return both a value and recurse=true.");if(result.recurse)if(isIterable2(input2)){let mappedIterable=Array.isArray(input2)?[]:{};containedIn.add(input2);for(let k in input2){let children=inputs.map(x=>x[k]),childResult=deepZipInternal(children,zipFn,containedIn);mappedIterable[k]=childResult}return containedIn.delete(input2),mappedIterable}else throw new Error(`Can't recurse into non-iterable type: ${input2}`);else return result.value}function zipToList(x){return x===null?null:isIterable2(x[0])?{value:null,recurse:!0}:{value:x,recurse:!1}}async function deepMapAndAwaitAll(input2,mapFn){let seen=new Map;deepMapInternal(input2,mapFn,seen);for(let key of Array.from(seen.keys())){let value=seen.get(key);if(util_exports.isPromise(value)){let mappedValue=await value;seen.set(key,mappedValue)}}return deepMapInternal(input2,mapFn,seen)}function isIterable2(obj){return obj!=null&&!ArrayBuffer.isView(obj)&&(Array.isArray(obj)||typeof obj=="object"&&!(obj instanceof Tensor))}function canTensorify(obj){return obj==null||isPrimitive(obj)||Array.isArray(obj)||typeof obj=="object"&&obj instanceof Tensor||util_exports.isTypedArray(obj)}function isPrimitive(value){return value===null||typeof value!="object"&&typeof value!="function"}function deepClone(container){return deepMap(container,cloneIfTensor)}function cloneIfTensor(item){return item instanceof Tensor?{value:item.clone(),recurse:!1}:isIterable2(item)?{value:null,recurse:!0}:{value:item,recurse:!1}}var RingBuffer=class{constructor(capacity){if(this.capacity=capacity,this.begin=0,this.end=0,capacity==null)throw new RangeError("Can't create a ring buffer of unknown capacity.");if(capacity<1)throw new RangeError("Can't create ring buffer of capacity < 1.");this.data=new Array(capacity),this.doubledCapacity=2*capacity}wrap(index){for(;index<0;)index+=this.doubledCapacity;return index%this.doubledCapacity}get(index){if(index<0)throw new RangeError("Can't get item at a negative index.");return this.data[index%this.capacity]}set(index,value){if(index<0)throw new RangeError("Can't set item at a negative index.");this.data[index%this.capacity]=value}length(){let length=this.end-this.begin;return length<0&&(length=this.doubledCapacity+length),length}isFull(){return this.length()===this.capacity}isEmpty(){return this.length()===0}push(value){if(this.isFull())throw new RangeError("Ring buffer is full.");this.set(this.end,value),this.end=this.wrap(this.end+1)}pushAll(values){for(let value of values)this.push(value)}pop(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");this.end=this.wrap(this.end-1);let result=this.get(this.end);return this.set(this.end,void 0),result}unshift(value){if(this.isFull())throw new RangeError("Ring buffer is full.");this.begin=this.wrap(this.begin-1),this.set(this.begin,value)}shift(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let result=this.get(this.begin);return this.set(this.begin,void 0),this.begin=this.wrap(this.begin+1),result}shuffleExcise(relativeIndex){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let index=this.wrap(this.begin+relativeIndex),result=this.get(index);return this.set(index,this.pop()),result}},GrowingRingBuffer=class extends RingBuffer{constructor(){super(GrowingRingBuffer.INITIAL_CAPACITY)}isFull(){return!1}push(value){super.isFull()&&this.expand(),super.push(value)}unshift(value){super.isFull()&&this.expand(),super.unshift(value)}expand(){let newCapacity=this.capacity*2,newData=new Array(newCapacity),len=this.length();for(let i=0;ix===!0)}rowMajorBatch(batchSize,smallLastBatch=!0){return new RowMajorBatchIterator(this,batchSize,smallLastBatch)}columnMajorBatch(batchSize,smallLastBatch=!0,zipFn=zipToList){return this.rowMajorBatch(batchSize,smallLastBatch).map(x=>deepZip(x,zipFn))}concatenate(iterator,baseErrorHandler){return new ChainedIterator(iteratorFromItems([this,iterator]),baseErrorHandler)}take(count2){return count2<0||count2==null?this:new TakeIterator(this,count2)}skip(count2){return count2<0||count2==null?this:new SkipIterator(this,count2)}prefetch(bufferSize){return new PrefetchIterator(this,bufferSize)}shuffle(windowSize,seed){return new ShuffleIterator(this,windowSize,seed)}serial(){return new SerialIterator(this)}},ArrayIterator=class extends LazyIterator{constructor(items){super();this.items=items,this.trav=0}summary(){return`Array of ${this.items.length} items`}async next(){if(this.trav>=this.items.length)return{value:null,done:!0};let item=this.items[this.trav];return this.trav++,{value:deepClone(item),done:!1}}},FunctionCallIterator=class extends LazyIterator{constructor(nextFn){super();this.nextFn=nextFn}summary(){return"Function call"}async next(){try{return this.nextFn()}catch(e){throw e.message=`Error thrown while iterating through a dataset: ${e.message}`,e}}},SerialIterator=class extends LazyIterator{constructor(upstream){super();this.upstream=upstream,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Serial`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){return this.upstream.next()}},SkipIterator=class extends LazyIterator{constructor(upstream,maxCount){super();this.upstream=upstream,this.maxCount=maxCount,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Skip`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.count++ Take`}async next(){return this.count++>=this.maxCount?{value:null,done:!0}:this.upstream.next()}},RowMajorBatchIterator=class extends LazyIterator{constructor(upstream,batchSize,enableSmallLastBatch=!0){super();this.upstream=upstream,this.batchSize=batchSize,this.enableSmallLastBatch=enableSmallLastBatch,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> RowMajorBatch`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){let batch=[];for(;batch.length0?{value:batch,done:!1}:{value:null,done:!0};batch.push(item.value)}return{value:batch,done:!1}}},FilterIterator=class extends LazyIterator{constructor(upstream,predicate){super();this.upstream=upstream,this.predicate=predicate,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Filter`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;){let item=await this.upstream.next();if(item.done||this.predicate(item.value))return item;dispose(item.value)}}},MapIterator=class extends LazyIterator{constructor(upstream,transform){super();this.upstream=upstream,this.transform=transform}summary(){return`${this.upstream.summary()} -> Map`}async next(){let item=await this.upstream.next();if(item.done)return{value:null,done:!0};let inputTensors=tensor_util_exports.getTensorsInContainer(item.value),mapped=this.transform(item.value),outputTensors=tensor_util_exports.getTensorsInContainer(mapped);for(let t of inputTensors)tensor_util_exports.isTensorInList(t,outputTensors)||t.dispose();return{value:mapped,done:!1}}},ErrorHandlingLazyIterator=class extends LazyIterator{constructor(upstream,handler){super();this.upstream=upstream,this.handler=handler,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> handleErrors`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;)try{return await this.upstream.next()}catch(e){if(!this.handler(e))return{value:null,done:!0}}}},AsyncMapIterator=class extends LazyIterator{constructor(upstream,transform){super();this.upstream=upstream,this.transform=transform}summary(){return`${this.upstream.summary()} -> AsyncMap`}async next(){let item=await this.upstream.next();if(item.done)return{value:null,done:!0};let inputTensors=tensor_util_exports.getTensorsInContainer(item.value),mapped=await this.transform(item.value),outputTensors=tensor_util_exports.getTensorsInContainer(mapped);for(let t of inputTensors)tensor_util_exports.isTensorInList(t,outputTensors)||t.dispose();return{value:mapped,done:!1}}},OneToManyIterator=class extends LazyIterator{constructor(){super();this.outputQueue=new GrowingRingBuffer,this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.outputQueue.length()===0;)if(!await this.pump())return{value:null,done:!0};return{value:this.outputQueue.shift(),done:!1}}},FlatmapIterator=class extends OneToManyIterator{constructor(upstream,transform){super();this.upstream=upstream,this.transform=transform}summary(){return`${this.upstream.summary()} -> Flatmap`}async pump(){let item=await this.upstream.next();if(item.done)return!1;let inputTensors=tensor_util_exports.getTensorsInContainer(item.value),mappedArray=this.transform(item.value),outputTensors=tensor_util_exports.getTensorsInContainer(mappedArray);this.outputQueue.pushAll(mappedArray);for(let t of inputTensors)tensor_util_exports.isTensorInList(t,outputTensors)||t.dispose();return!0}},ChainedIterator=class extends LazyIterator{constructor(iterators,baseErrorHandler){super();this.baseErrorHandler=baseErrorHandler,this.lastRead=null,this.iterator=null,this.moreIterators=iterators}summary(){return"TODO: fill in upstream of chained summaries -> Chained"}async next(){return this.lastRead=this.readFromChain(this.lastRead),this.lastRead}async readFromChain(lastRead){if(await lastRead,this.iterator==null){let iteratorResult=await this.moreIterators.next();if(iteratorResult.done)return{value:null,done:!0};this.iterator=iteratorResult.value,this.baseErrorHandler!=null&&(this.iterator=this.iterator.handleErrors(this.baseErrorHandler))}let itemResult=await this.iterator.next();return itemResult.done?(this.iterator=null,this.readFromChain(lastRead)):itemResult}},ZipMismatchMode;(function(ZipMismatchMode2){ZipMismatchMode2[ZipMismatchMode2.FAIL=0]="FAIL",ZipMismatchMode2[ZipMismatchMode2.SHORTEST=1]="SHORTEST",ZipMismatchMode2[ZipMismatchMode2.LONGEST=2]="LONGEST"})(ZipMismatchMode||(ZipMismatchMode={}));var ZipIterator=class extends LazyIterator{constructor(iterators,mismatchMode=ZipMismatchMode.FAIL){super();this.iterators=iterators,this.mismatchMode=mismatchMode,this.count=0,this.currentPromise=null}summary(){return"{TODO: fill in upstream of zip summaries} -> Zip"}async nextState(afterState){await afterState;let numIterators=0,iteratorsDone=0;function getNext(container){return container instanceof LazyIterator?{value:container.next().then(x=>(numIterators++,x.done&&iteratorsDone++,x.value)),recurse:!1}:{value:null,recurse:!0}}let mapped=await deepMapAndAwaitAll(this.iterators,getNext);if(numIterators===iteratorsDone)return{value:null,done:!0};if(iteratorsDone>0)switch(this.mismatchMode){case ZipMismatchMode.FAIL:throw new Error(`Zipped streams should have the same length. Mismatched at element ${this.count}.`);case ZipMismatchMode.SHORTEST:return{value:null,done:!0};case ZipMismatchMode.LONGEST:default:}return this.count++,{value:mapped,done:!1}}async next(){return this.currentPromise=this.nextState(this.currentPromise),this.currentPromise}},PrefetchIterator=class extends LazyIterator{constructor(upstream,bufferSize){super();this.upstream=upstream,this.bufferSize=bufferSize,this.buffer=new RingBuffer(bufferSize)}summary(){return`${this.upstream.summary()} -> Prefetch`}refill(){for(;!this.buffer.isFull();){let v=this.upstream.next();this.buffer.push(v)}}next(){return this.refill(),this.buffer.shift()}},ShuffleIterator=class extends PrefetchIterator{constructor(upstream,windowSize,seed){super(upstream,windowSize);this.upstream=upstream,this.windowSize=windowSize,this.upstreamExhausted=!1,this.random=seedrandom2.alea(seed||util_exports.now().toString()),this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}randomInt(max6){return Math.floor(this.random()*max6)}chooseIndex(){return this.randomInt(this.buffer.length())}async serialNext(){for(this.upstreamExhausted||this.refill();!this.buffer.isEmpty();){let chosenIndex=this.chooseIndex(),result=await this.buffer.shuffleExcise(chosenIndex);if(result.done)this.upstreamExhausted=!0;else return this.refill(),result}return{value:null,done:!0}}},Dataset=class{constructor(){this.size=null}batch(batchSize,smallLastBatch=!0){let base2=this;util_exports.assert(batchSize>0,()=>`batchSize needs to be positive, but it is - ${batchSize}`);let size;return this.size===Infinity||this.size==null?size=this.size:smallLastBatch?size=Math.ceil(this.size/batchSize):size=Math.floor(this.size/batchSize),datasetFromIteratorFn(async()=>(await base2.iterator()).columnMajorBatch(batchSize,smallLastBatch,deepBatchConcat),size)}concatenate(dataset){let base2=this,size;return this.size===Infinity||dataset.size===Infinity?size=Infinity:this.size!=null&&dataset.size!=null?size=this.size+dataset.size:size=null,datasetFromIteratorFn(async()=>(await base2.iterator()).concatenate(await dataset.iterator()),size)}filter(predicate){let base2=this,size;return this.size===Infinity?size=Infinity:size=null,datasetFromIteratorFn(async()=>(await base2.iterator()).filter(x=>tidy(()=>predicate(x))),size)}async forEachAsync(f){return(await this.iterator()).forEachAsync(f)}map(transform){let base2=this;return datasetFromIteratorFn(async()=>(await base2.iterator()).map(x=>tidy(()=>transform(x))),this.size)}mapAsync(transform){let base2=this;return datasetFromIteratorFn(async()=>(await base2.iterator()).mapAsync(transform),this.size)}prefetch(bufferSize){if(bufferSize==null)throw new RangeError("`Dataset.prefetch()` requires bufferSize to be specified.");let base2=this;return datasetFromIteratorFn(async()=>(await base2.iterator()).prefetch(bufferSize),this.size)}repeat(count2){let base2=this,size;return this.size!=null&&count2>0?size=this.size*count2:count2===0?size=0:this.size!=null&&(count2===void 0||count2<0)?size=Infinity:size=null,datasetFromIteratorFn(async()=>{let iteratorIterator=iteratorFromFunction(async()=>({value:await base2.iterator(),done:!1}));return iteratorFromConcatenated(iteratorIterator.take(count2))},size)}skip(count2){let base2=this,size;return this.size!=null&&count2>=0&&this.size>=count2?size=this.size-count2:this.size!=null&&(this.size(await base2.iterator()).skip(count2),size)}shuffle(bufferSize,seed,reshuffleEachIteration=!0){if(bufferSize==null||bufferSize<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)`);let base2=this,random=seedrandom3.alea(seed||util_exports.now().toString());return datasetFromIteratorFn(async()=>{let seed2=random.int32();return reshuffleEachIteration&&(seed2+=random.int32()),(await base2.iterator()).shuffle(bufferSize,seed2.toString())},this.size)}take(count2){let base2=this,size;return this.size!=null&&this.size>count2?size=count2:this.size!=null&&this.size<=count2?size=this.size:size=null,datasetFromIteratorFn(async()=>(await base2.iterator()).take(count2),size)}async toArray(){if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArray()}async toArrayForTest(){if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArrayForTest()}};Dataset.MAX_BUFFER_SIZE=1e4;function datasetFromIteratorFn(iteratorFn,size=null){return new class extends Dataset{constructor(){super(...arguments);this.size=size}async iterator(){return iteratorFn()}}}function array(items){return datasetFromIteratorFn(async()=>iteratorFromItems(items),items.length)}function zip(datasets){if(!isIterable2(datasets))throw new Error("The argument to zip() must be an object or array.");let size;if(Array.isArray(datasets))for(let i=0;i{let streams=await deepMapAndAwaitAll(datasets,d=>{if(d instanceof Dataset)return{value:d.iterator(),recurse:!1};if(isIterable2(d))return{value:null,recurse:!0};throw new Error("Leaves of the structure passed to zip() must be Datasets, not primitives.")});return iteratorFromZipped(streams,ZipMismatchMode.SHORTEST)},size)}function deepBatchConcat(rows){if(rows===null)return null;let exampleRow=rows[0];return canTensorify(exampleRow)?{value:batchConcat(rows),recurse:!1}:{value:null,recurse:!0}}function batchConcat(arrays){if(arrays.length===0)throw new Error("Can't make a batch of zero elements.");return arrays[0]instanceof Tensor?stack(arrays):tensor(arrays)}var TextLineDataset=class extends Dataset{constructor(input2){super();this.input=input2}async iterator(){return(await this.input.iterator()).decodeUTF8().split(` -`).map(line=>(line.endsWith("\r")&&(line=line.slice(0,-1)),line))}},CODE_QUOTE='"',STATE_OUT=Symbol("out"),STATE_FIELD=Symbol("field"),STATE_QUOTE=Symbol("quote"),STATE_QUOTE_AFTER_QUOTE=Symbol("quoteafterquote"),STATE_WITHIN_QUOTE_IN_QUOTE=Symbol("quoteinquote"),CSVDataset=class extends Dataset{constructor(input2,csvConfig){super();this.input=input2,this.hasHeader=!0,this.fullColumnNames=null,this.columnNamesValidated=!1,this.columnConfigs=null,this.configuredColumnsOnly=!1,this.delimiter=",",this.delimWhitespace=!1,this.base=new TextLineDataset(input2),csvConfig||(csvConfig={}),this.hasHeader=csvConfig.hasHeader!==!1,this.fullColumnNames=csvConfig.columnNames,this.columnConfigs=csvConfig.columnConfigs,this.configuredColumnsOnly=csvConfig.configuredColumnsOnly,csvConfig.delimWhitespace?(util_exports.assert(csvConfig.delimiter==null,()=>"Delimiter should not be provided when delimWhitespace is true."),this.delimWhitespace=!0,this.delimiter=" "):this.delimiter=csvConfig.delimiter?csvConfig.delimiter:","}async columnNames(){return this.columnNamesValidated||await this.setColumnNames(),this.configuredColumnsOnly?Object.keys(this.columnConfigs):this.fullColumnNames}async setColumnNames(){let columnNamesFromFile=await this.maybeReadHeaderLine();if(!this.fullColumnNames&&!columnNamesFromFile)throw new Error("Column names must be provided if there is no header line.");this.fullColumnNames&&columnNamesFromFile&&util_exports.assert(columnNamesFromFile.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 ("+columnNamesFromFile.length.toString()+")."),this.fullColumnNames||(this.fullColumnNames=columnNamesFromFile);let counts=this.fullColumnNames.reduce((countAcc,name)=>(countAcc[name]=countAcc[name]+1||1,countAcc),{}),duplicateNames=Object.keys(counts).filter(name=>counts[name]>1);if(util_exports.assert(duplicateNames.length===0,()=>"Duplicate column names found: "+duplicateNames.toString()),this.columnConfigs){for(let key of Object.keys(this.columnConfigs))if(this.fullColumnNames.indexOf(key)===-1)throw new Error('The key "'+key+'" provided in columnConfigs does not match any of the column names ('+this.fullColumnNames.toString()+").")}this.columnNamesValidated=!0}async maybeReadHeaderLine(){if(this.hasHeader){let firstElement=await(await this.base.iterator()).next();if(firstElement.done)throw new Error("No data was found for CSV parsing.");let firstLine=firstElement.value;return this.parseRow(firstLine,!1)}else return null}async iterator(){this.columnNamesValidated||await this.setColumnNames();let lines=await this.base.iterator();return this.hasHeader&&(lines=lines.skip(1)),lines.map(x=>this.makeDataElement(x))}makeDataElement(line){let values=this.parseRow(line),features={},labels={};for(let i=0;i14||!Number.isInteger(fftSizeLog2))throw new Error(`Invalid fftSize: it must be a power of 2 between 2 to 4 and 2 to 14, but got ${this.fftSize}`);if(this.numFrames=microphoneConfig.numFramesPerSpectrogram||43,this.sampleRateHz=microphoneConfig.sampleRateHz,this.columnTruncateLength=microphoneConfig.columnTruncateLength||this.fftSize,this.audioTrackConstraints=microphoneConfig.audioTrackConstraints,this.smoothingTimeConstant=microphoneConfig.smoothingTimeConstant||0,this.includeSpectrogram=microphoneConfig.includeSpectrogram!==!1,this.includeWaveform=microphoneConfig.includeWaveform===!0,!this.includeSpectrogram&&!this.includeWaveform)throw new Error("Both includeSpectrogram and includeWaveform are false. At least one type of data should be returned.")}summary(){return"microphone"}static async create(microphoneConfig={}){if(env().get("IS_NODE"))throw new Error("microphone API is only supported in browser environment.");let microphoneIterator=new MicrophoneIterator(microphoneConfig);return await microphoneIterator.start(),microphoneIterator}async start(){try{this.stream=await navigator.mediaDevices.getUserMedia({audio:this.audioTrackConstraints==null?!0:this.audioTrackConstraints,video:!1})}catch(e){throw new Error(`Error thrown while initializing video stream: ${e.message}`)}if(!this.stream)throw new Error("Could not obtain audio from microphone.");let ctxConstructor=window.AudioContext||window.webkitAudioContext;if(this.audioContext=new ctxConstructor,!this.sampleRateHz)this.sampleRateHz=this.audioContext.sampleRate;else if(this.audioContext.sampleRate!==this.sampleRateHz)throw new Error(`Mismatch in sampling rate: Expected: ${this.sampleRateHz}; Actual: ${this.audioContext.sampleRate}`);let streamSource=this.audioContext.createMediaStreamSource(this.stream);this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=this.fftSize*2,this.analyser.smoothingTimeConstant=this.smoothingTimeConstant,streamSource.connect(this.analyser),this.freqData=new Float32Array(this.fftSize),this.timeData=new Float32Array(this.fftSize)}async next(){if(this.isClosed)return{value:null,done:!0};let spectrogramTensor,waveformTensor,audioDataQueue=await this.getAudioData();if(this.includeSpectrogram){let freqData=this.flattenQueue(audioDataQueue.freqDataQueue);spectrogramTensor=this.getTensorFromAudioDataArray(freqData,[this.numFrames,this.columnTruncateLength,1])}if(this.includeWaveform){let timeData=this.flattenQueue(audioDataQueue.timeDataQueue);waveformTensor=this.getTensorFromAudioDataArray(timeData,[this.numFrames*this.fftSize,1])}return{value:{spectrogram:spectrogramTensor,waveform:waveformTensor},done:!1}}async capture(){return(await this.next()).value}async getAudioData(){let freqDataQueue=[],timeDataQueue=[],currentFrames=0;return new Promise(resolve=>{let intervalID=setInterval(()=>{this.includeSpectrogram&&(this.analyser.getFloatFrequencyData(this.freqData),this.freqData[0]===-Infinity&&resolve({freqDataQueue,timeDataQueue}),freqDataQueue.push(this.freqData.slice(0,this.columnTruncateLength))),this.includeWaveform&&(this.analyser.getFloatTimeDomainData(this.timeData),timeDataQueue.push(this.timeData.slice())),++currentFrames===this.numFrames&&(clearInterval(intervalID),resolve({freqDataQueue,timeDataQueue}))},this.fftSize/this.sampleRateHz*1e3)})}stop(){this.isClosed||(this.isClosed=!0,this.analyser.disconnect(),this.audioContext.close(),this.stream!=null&&this.stream.getTracks().length>0&&this.stream.getTracks()[0].stop())}toArray(){throw new Error("Can not convert infinite audio stream to array.")}getSampleRate(){return this.sampleRateHz}flattenQueue(queue){let frameSize=queue[0].length,freqData=new Float32Array(queue.length*frameSize);return queue.forEach((data,i)=>freqData.set(data,i*frameSize)),freqData}getTensorFromAudioDataArray(freqData,shape){let vals=new Float32Array(util_exports.sizeFromShape(shape));return vals.set(freqData,vals.length-freqData.length),tensor(vals,shape)}},WebcamIterator=class extends LazyIterator{constructor(webcamVideoElement,webcamConfig){super();if(this.webcamVideoElement=webcamVideoElement,this.webcamConfig=webcamConfig,this.isClosed=!0,this.resize=!1,this.needToResize())if(this.resize=!0,this.cropSize=[this.webcamConfig.resizeHeight,this.webcamConfig.resizeWidth],this.cropBoxInd=tensor1d([0],"int32"),this.webcamConfig.centerCrop){let widthCroppingRatio=this.webcamConfig.resizeWidth*1/this.webcamVideoElement.width,heightCroppingRatio=this.webcamConfig.resizeHeight*1/this.webcamVideoElement.height,widthCropStart=(1-widthCroppingRatio)/2,heightCropStart=(1-heightCroppingRatio)/2,widthCropEnd=widthCropStart+widthCroppingRatio,heightCropEnd=heightCroppingRatio+heightCropStart;this.cropBox=tensor2d([heightCropStart,widthCropStart,heightCropEnd,widthCropEnd],[1,4])}else this.cropBox=tensor2d([0,0,1,1],[1,4])}summary(){return"webcam"}static async create(webcamVideoElement,webcamConfig={}){if(env().get("IS_NODE"))throw new Error("tf.data.webcam is only supported in browser environment.");if(!webcamVideoElement){if(webcamVideoElement=document.createElement("video"),!webcamConfig.resizeWidth||!webcamConfig.resizeHeight)throw new Error("Please provide webcam video element, or resizeWidth and resizeHeight to create a hidden video element.");webcamVideoElement.width=webcamConfig.resizeWidth,webcamVideoElement.height=webcamConfig.resizeHeight}let webcamIterator=new WebcamIterator(webcamVideoElement,webcamConfig);return await webcamIterator.start(),webcamIterator}async start(){this.webcamConfig.facingMode&&util_exports.assert(this.webcamConfig.facingMode==="user"||this.webcamConfig.facingMode==="environment",()=>`Invalid webcam facing mode: ${this.webcamConfig.facingMode}. Please provide 'user' or 'environment'`);try{this.stream=await navigator.mediaDevices.getUserMedia({video:{deviceId:this.webcamConfig.deviceId,facingMode:this.webcamConfig.facingMode?this.webcamConfig.facingMode:"user",width:this.webcamVideoElement.width,height:this.webcamVideoElement.height}})}catch(e){throw e.message=`Error thrown while initializing video stream: ${e.message}`,e}if(!this.stream)throw new Error("Could not obtain video from webcam.");try{this.webcamVideoElement.srcObject=this.stream}catch(error){console.log(error),this.webcamVideoElement.src=window.URL.createObjectURL(this.stream)}return this.webcamVideoElement.play(),this.isClosed=!1,new Promise(resolve=>{this.webcamVideoElement.onloadedmetadata=()=>{resolve()}})}async next(){if(this.isClosed)return{value:null,done:!0};let img;try{img=browser_exports.fromPixels(this.webcamVideoElement)}catch(e){throw new Error(`Error thrown converting video to pixels: ${JSON.stringify(e)}`)}if(this.resize)try{return{value:this.cropAndResizeFrame(img),done:!1}}catch(e){throw new Error(`Error thrown cropping the video: ${e.message}`)}finally{img.dispose()}else return{value:img,done:!1}}needToResize(){return!!(this.webcamConfig.resizeWidth&&this.webcamConfig.resizeHeight&&(this.webcamVideoElement.width!==this.webcamConfig.resizeWidth||this.webcamVideoElement.height!==this.webcamConfig.resizeHeight))}cropAndResizeFrame(img){return tidy(()=>{let expandedImage=img.toFloat().expandDims(0),resizedImage;resizedImage=image.cropAndResize(expandedImage,this.cropBox,this.cropBoxInd,this.cropSize,"bilinear");let shape=resizedImage.shape;return resizedImage.reshape(shape.slice(1))})}async capture(){return(await this.next()).value}stop(){this.stream.getTracks().forEach(track=>track.stop());try{this.webcamVideoElement.srcObject=null}catch(error){console.log(error),this.webcamVideoElement.src=null}this.isClosed=!0}toArray(){throw new Error("Can not convert infinite video stream to array.")}},DataSource=class{},StringIterator=class extends LazyIterator{split(separator){return new SplitIterator(this,separator)}},SplitIterator=class extends StringIterator{constructor(upstream,separator){super();this.upstream=upstream,this.impl=new SplitIteratorImpl(upstream,separator)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},SplitIteratorImpl=class extends OneToManyIterator{constructor(upstream,separator){super();this.upstream=upstream,this.separator=separator,this.carryover=""}summary(){return`${this.upstream.summary()} -> Split('${this.separator}')`}async pump(){let chunkResult=await this.upstream.next();if(chunkResult.done)return this.carryover===""?!1:(this.outputQueue.push(this.carryover),this.carryover="",!0);let lines=chunkResult.value.split(this.separator);lines[0]=this.carryover+lines[0];for(let line of lines.slice(0,-1))this.outputQueue.push(line);return this.carryover=lines[lines.length-1],!0}},ByteChunkIterator=class extends LazyIterator{decodeUTF8(){return new Utf8Iterator(this)}},Utf8Iterator=class extends StringIterator{constructor(upstream){super();this.upstream=upstream,this.impl=new Utf8IteratorImpl(upstream)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},Utf8IteratorImpl=class extends OneToManyIterator{constructor(upstream){super();if(this.upstream=upstream,env().get("IS_BROWSER"))this.decoder=new TextDecoder("utf-8");else{let{StringDecoder}=require_string_decoder();this.decoder=new StringDecoder("utf8")}}summary(){return`${this.upstream.summary()} -> Utf8`}async pump(){let chunkResult=await this.upstream.next(),chunk;if(chunkResult.done)return!1;chunk=chunkResult.value;let text;return env().get("IS_BROWSER")?text=this.decoder.decode(chunk,{stream:!0}):text=this.decoder.write(Buffer.from(chunk.buffer)),this.outputQueue.push(text),!0}},FileChunkIterator=class extends ByteChunkIterator{constructor(file,options={}){super();this.file=file,this.options=options,util_exports.assert(file instanceof Uint8Array||(env().get("IS_BROWSER")?file instanceof File||file instanceof Blob:!1),()=>"FileChunkIterator only supports File, Blob and Uint8Array right now."),this.offset=options.offset||0,this.chunkSize=options.chunkSize||1024*1024}summary(){return`FileChunks ${this.file}`}async next(){return this.offset>=(this.file instanceof Uint8Array?this.file.byteLength:this.file.size)?{value:null,done:!0}:{value:await new Promise((resolve,reject)=>{let end=this.offset+this.chunkSize;if(this.file instanceof Uint8Array)resolve(new Uint8Array(this.file.slice(this.offset,end)));else{let fileReader=new FileReader;fileReader.onload=event=>{let data=fileReader.result;if(data instanceof ArrayBuffer&&(data=new Uint8Array(data)),!(data instanceof Uint8Array))return reject(new TypeError("FileReader returned unknown type."));resolve(data)},fileReader.onabort=event=>reject(new Error("Aborted")),fileReader.onerror=event=>reject(new Error(event.type));let slice5=this.file.slice(this.offset,end);fileReader.readAsArrayBuffer(slice5)}this.offset=end}),done:!1}}};async function urlChunkIterator(url,options={}){let urlString,requestInit;typeof url=="string"?urlString=url:(urlString=url.url,requestInit=getRequestInitFromRequest(url));let response=await util_exports.fetch(urlString,requestInit);if(response.ok){let uint8Array=new Uint8Array(await response.arrayBuffer());return new FileChunkIterator(uint8Array,options)}else throw new Error(response.statusText)}var getRequestInitFromRequest=request=>({method:request.method,headers:request.headers,body:request.body,mode:request.mode,credentials:request.credentials,cache:request.cache,redirect:request.redirect,referrer:request.referrer,integrity:request.integrity});function isLocalPath(source){return typeof source=="string"&&source.substr(0,7)==="file://"}var FileDataSource=class extends DataSource{constructor(input2,options={}){super();this.input=input2,this.options=options}async iterator(){if(isLocalPath(this.input)&&env().get("IS_NODE")){let fs=require("fs");this.input=fs.readFileSync(this.input.substr(7))}return new FileChunkIterator(this.input,this.options)}},URLDataSource=class extends DataSource{constructor(url,fileOptions={}){super();this.url=url,this.fileOptions=fileOptions}async iterator(){return isLocalPath(this.url)?new FileDataSource(this.url,this.fileOptions).iterator():urlChunkIterator(this.url,this.fileOptions)}};function csv(source,csvConfig={}){return new CSVDataset(new URLDataSource(source),csvConfig)}function func(f){let iter=iteratorFromFunction(f);return datasetFromIteratorFn(async()=>iter)}function generator(generator2){return datasetFromIteratorFn(async()=>{let gen=await generator2();return iteratorFromFunction(()=>gen.next())})}async function webcam(webcamVideoElement,webcamConfig){return WebcamIterator.create(webcamVideoElement,webcamConfig)}async function microphone(microphoneConfig){return MicrophoneIterator.create(microphoneConfig)}var version4="2.8.3";function assertNotComplex(tensor2,opName){Array.isArray(tensor2)||(tensor2=[tensor2]),tensor2.forEach(t=>{t!=null&&util_exports.assert(t.dtype!=="complex64",()=>`${opName} does not support complex64 tensors in the CPU backend.`)})}var whereImpl2=kernel_impls_exports.whereImpl,MathBackendCPU=class extends KernelBackend{constructor(){super();this.blockSize=48,this.firstUse=!0,this.data=new DataStorage(this,engine())}write(values,shape,dtype){this.firstUse&&(this.firstUse=!1,env().get("IS_NODE")&&backend_util_exports.warn(` + ${a}, and tensor's shape is: ${e.shape}`);let s=a===0?0:e.size/a,i=D(()=>{let l=[];e=j(e,[1,a,s]);for(let c=0;c{switch(e.op){case"If":case"StatelessIf":{let a=I("thenBranch",e,t,n),r=I("elseBranch",e,t,n),s=I("cond",e,t,n),i=I("args",e,t,n);return(await s.data())[0]?n.functionMap[a].executeFunctionAsync(i,n.tensorArrayMap,n.tensorListMap):n.functionMap[r].executeFunctionAsync(i,n.tensorArrayMap,n.tensorListMap)}case"While":case"StatelessWhile":{let a=I("body",e,t,n),r=I("cond",e,t,n),s=I("args",e,t,n),i=await n.functionMap[r].executeFunctionAsync(s,n.tensorArrayMap,n.tensorListMap),o=s.map(u=>u.id),l=await i[0].data();i.forEach(u=>{!u.kept&&o.indexOf(u.id)===-1&&u.dispose()});let c=s;for(;l[0];){let u=c;c=await n.functionMap[a].executeFunctionAsync(c,n.tensorArrayMap,n.tensorListMap);let p=c.map(h=>h.id);u.forEach(h=>{!h.kept&&o.indexOf(h.id)===-1&&p.indexOf(h.id)===-1&&h.dispose()});let d=await n.functionMap[r].executeFunctionAsync(c,n.tensorArrayMap,n.tensorListMap);l=await d[0].data(),d.forEach(h=>{!h.kept&&o.indexOf(h.id)===-1&&p.indexOf(h.id)===-1&&h.dispose()})}return c}case"LoopCond":{let a=I("pred",e,t,n);return[Ar(a)]}case"Switch":{let a=I("pred",e,t,n),r=I("data",e,t,n);return r.kept||(r=Ar(r)),(await a.data())[0]?[void 0,r]:[r,void 0]}case"Merge":{let a=e.inputNames.find(r=>Cn(r,t,n)!==void 0);if(a){let r=Cn(a,t,n);return[Ar(r)]}return}case"Enter":{let a=I("frameName",e,t,n),r=I("tensor",e,t,n);return n.enterFrame(a),[Ar(r)]}case"Exit":{let a=I("tensor",e,t,n);return n.exitFrame(),[Ar(a)]}case"NextIteration":{let a=I("tensor",e,t,n);return n.nextIteration(),[Ar(a)]}case"TensorArrayV3":{let a=I("size",e,t,n),r=I("dtype",e,t,n),s=I("elementShape",e,t,n),i=I("dynamicSize",e,t,n),o=I("clearAfterRead",e,t,n),l=I("identicalElementShapes",e,t,n),c=I("name",e,t,n),u=new zV(c,r,a,s,l,i,o);return n.addTensorArray(u),[u.idTensor,de(1)]}case"TensorArrayWriteV3":{let a=I("tensorArrayId",e,t,n),r=I("index",e,t,n),s=I("tensor",e,t,n),i=n.getTensorArray(a.id);return i.write(r,s),[i.idTensor]}case"TensorArrayReadV3":{let a=I("tensorArrayId",e,t,n),r=I("index",e,t,n);return[n.getTensorArray(a.id).read(r)]}case"TensorArrayGatherV3":{let a=I("tensorArrayId",e,t,n),r=I("indices",e,t,n),s=I("dtype",e,t,n);return[n.getTensorArray(a.id).gather(r,s)]}case"TensorArrayScatterV3":{let a=I("tensorArrayId",e,t,n),r=I("indices",e,t,n),s=I("tensor",e,t,n),i=n.getTensorArray(a.id);return i.scatter(r,s),[i.idTensor]}case"TensorArrayConcatV3":{let a=I("tensorArrayId",e,t,n),r=n.getTensorArray(a.id),s=I("dtype",e,t,n);return[r.concat(s)]}case"TensorArraySplitV3":{let a=I("tensorArrayId",e,t,n),r=I("tensor",e,t,n),s=I("lengths",e,t,n),i=n.getTensorArray(a.id);return i.split(s,r),[i.idTensor]}case"TensorArraySizeV3":{let a=I("tensorArrayId",e,t,n),r=n.getTensorArray(a.id);return[de(r.size(),"int32")]}case"TensorArrayCloseV3":{let a=I("tensorArrayId",e,t,n),r=n.getTensorArray(a.id);return r.clearAndClose(),[r.idTensor]}case"TensorListSetItem":{let a=I("tensorListId",e,t,n),r=I("index",e,t,n),s=I("tensor",e,t,n),i=n.getTensorList(a.id);return i.setItem(r,s),[i.idTensor]}case"TensorListGetItem":{let a=I("tensorListId",e,t,n),r=I("index",e,t,n),s=I("elementShape",e,t,n),i=I("elementDType",e,t,n);return[n.getTensorList(a.id).getItem(r,s,i)]}case"TensorListScatterV2":case"TensorListScatter":{let a=I("indices",e,t,n),r=I("tensor",e,t,n),s=I("elementShape",e,t,n),i=I("numElements",e,t,n),o=VV(r,a,s,i);return n.addTensorList(o),[o.idTensor]}case"TensorListReserve":case"EmptyTensorList":{let a=I("elementShape",e,t,n),r=I("elementDType",e,t,n),s;e.op==="TensorListReserve"?s="numElements":s="maxNumElements";let i=I(s,e,t,n),o=WV(a,r,i);return n.addTensorList(o),[o.idTensor]}case"TensorListGather":{let a=I("tensorListId",e,t,n),r=I("indices",e,t,n),s=I("elementShape",e,t,n),i=I("elementDType",e,t,n);return[n.getTensorList(a.id).gather(r,i,s)]}case"TensorListStack":{let a=I("tensorListId",e,t,n),r=I("elementShape",e,t,n),s=I("elementDType",e,t,n),i=I("numElements",e,t,n);return[n.getTensorList(a.id).stack(r,s,i)]}case"TensorListFromTensor":{let a=I("tensor",e,t,n),r=I("elementShape",e,t,n),s=I("elementDType",e,t,n),i=BV(a,r,s);return n.addTensorList(i),[i.idTensor]}case"TensorListConcat":{let a=I("tensorListId",e,t,n),r=n.getTensorList(a.id),s=I("dtype",e,t,n),i=I("elementShape",e,t,n);return[r.concat(s,i)]}case"TensorListPushBack":{let a=I("tensorListId",e,t,n),r=I("tensor",e,t,n),s=n.getTensorList(a.id);return s.pushBack(r),[s.idTensor]}case"TensorListPopBack":{let a=I("tensorListId",e,t,n),r=I("elementShape",e,t,n),s=I("elementDType",e,t,n);return[n.getTensorList(a.id).popBack(r,s)]}case"TensorListSplit":{let a=I("tensor",e,t,n),r=I("elementShape",e,t,n),s=I("lengths",e,t,n),i=UV(a,s,r);return n.addTensorList(i),[i.idTensor]}default:throw TypeError(`Node type ${e.op} is not implemented`)}};function DN(e,t,n){let[a,r]=I("fusedOps",e,t,n),s=a==="biasadd",i=r==="prelu",o=a==="fusedbatchnorm",l=I("numArgs",e,t,n);if(s){if(i&&l!==2)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!i&&l!==1)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd must have one extra argument: bias.")}if(o)throw new Error("FusedConv2d and DepthwiseConv2d with FusedBatchNorm is not supported.");let c=I("strides",e,t,n),u=Hm(e,t,n),p=I("dataFormat",e,t,n).toUpperCase(),d=I("dilations",e,t,n),[h,m]=I("args",e,t,n),f=I("leakyreluAlpha",e,t,n);return{stride:c,pad:u,dataFormat:p,dilations:d,biasArg:h,preluArg:m,activationFunc:r,leakyreluAlpha:f}}var HV=(e,t,n)=>{switch(e.op){case"Conv1D":{let a=I("stride",e,t,n),r=I("pad",e,t,n),s=I("dataFormat",e,t,n).toUpperCase(),i=I("dilation",e,t,n);return[Fh(I("x",e,t,n),I("filter",e,t,n),a,r,s,i)]}case"Conv2D":{let a=I("strides",e,t,n),r=Hm(e,t,n),s=I("dataFormat",e,t,n).toUpperCase(),i=I("dilations",e,t,n);return[$t(I("x",e,t,n),I("filter",e,t,n),[a[1],a[2]],r,s,[i[1],i[2]])]}case"_FusedConv2D":{let{stride:a,pad:r,dataFormat:s,dilations:i,biasArg:o,preluArg:l,activationFunc:c,leakyreluAlpha:u}=DN(e,t,n);return[os.conv2d({x:I("x",e,t,n),filter:I("filter",e,t,n),strides:[a[1],a[2]],pad:r,dataFormat:s,dilations:[i[1],i[2]],bias:o,activation:c,preluActivationWeights:l,leakyreluAlpha:u})]}case"FusedDepthwiseConv2dNative":{let{stride:a,pad:r,dataFormat:s,dilations:i,biasArg:o,preluArg:l,activationFunc:c,leakyreluAlpha:u}=DN(e,t,n);return[os.depthwiseConv2d({x:I("x",e,t,n),filter:I("filter",e,t,n),strides:[a[1],a[2]],pad:r,dataFormat:s,dilations:[i[1],i[2]],bias:o,activation:c,preluActivationWeights:l,leakyreluAlpha:u})]}case"Conv2DBackpropInput":case"Conv2dTranspose":{let a=I("outputShape",e,t,n),r=I("strides",e,t,n),s=Hm(e,t,n);return[Ah(I("x",e,t,n),I("filter",e,t,n),a,[r[1],r[2]],s)]}case"DepthwiseConv2dNative":case"DepthwiseConv2d":{let a=I("strides",e,t,n),r=Hm(e,t,n),s=I("dilations",e,t,n),i=I("dataFormat",e,t,n).toUpperCase();return[kr(I("input",e,t,n),I("filter",e,t,n),[a[1],a[2]],r,i,[s[1],s[2]])]}case"Conv3D":{let a=I("strides",e,t,n),r=I("pad",e,t,n),s=I("dataFormat",e,t,n).toUpperCase(),i=I("dilations",e,t,n);return[Xy(I("x",e,t,n),I("filter",e,t,n),[a[1],a[2],a[3]],r,s,[i[1],i[2],i[3]])]}case"AvgPool":{let a=I("strides",e,t,n),r=I("pad",e,t,n),s=I("kernelSize",e,t,n);return[Zn(I("x",e,t,n),[s[1],s[2]],[a[1],a[2]],r)]}case"MaxPool":{let a=I("strides",e,t,n),r=I("pad",e,t,n),s=I("kernelSize",e,t,n);return[Dt(I("x",e,t,n),[s[1],s[2]],[a[1],a[2]],r)]}case"MaxPoolWithArgmax":{let a=I("strides",e,t,n),r=I("pad",e,t,n),s=I("kernelSize",e,t,n),i=I("includeBatchInIndex",e,t,n),{result:o,indexes:l}=Ak(I("x",e,t,n),[s[1],s[2]],[a[1],a[2]],r,i);return[o,l]}case"AvgPool3D":{let a=I("strides",e,t,n),r=I("pad",e,t,n),s=I("kernelSize",e,t,n);return[jy(I("x",e,t,n),[s[1],s[2],s[3]],[a[1],a[2],a[3]],r)]}case"MaxPool3D":{let a=I("strides",e,t,n),r=I("pad",e,t,n),s=I("kernelSize",e,t,n);return[ib(I("x",e,t,n),[s[1],s[2],s[3]],[a[1],a[2],a[3]],r)]}case"Dilation2D":{let a=I("strides",e,t,n),r=I("pad",e,t,n),s=I("dilations",e,t,n),i=a[1],o=a[2],l=s[1],c=s[2];return[Jy(I("x",e,t,n),I("filter",e,t,n),[i,o],r,[l,c],"NHWC")]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},jV=(e,t,n)=>{switch(e.op){case"Fill":{let a=I("shape",e,t,n),r=I("dtype",e,t,n),s=I("value",e,t,n);return[Nn(a,s,r)]}case"LinSpace":{let a=I("start",e,t,n),r=I("stop",e,t,n),s=I("num",e,t,n);return[Nk(a,r,s)]}case"Multinomial":{let a=I("logits",e,t,n),r=I("numSamples",e,t,n),s=I("seed",e,t,n);return[$k(a,r,s)]}case"OneHot":{let a=I("indices",e,t,n),r=I("depth",e,t,n),s=I("onValue",e,t,n),i=I("offValue",e,t,n);return[Hl(a,r,s,i)]}case"Ones":return[Ya(I("shape",e,t,n),I("dtype",e,t,n))];case"OnesLike":return[Mn(I("x",e,t,n))];case"RandomUniform":return[Ql(I("shape",e,t,n),I("minval",e,t,n),I("maxval",e,t,n),I("dtype",e,t,n))];case"Range":{let a=I("start",e,t,n),r=I("stop",e,t,n),s=I("step",e,t,n);return[Vh(a,r,s,I("dtype",e,t,n))]}case"TruncatedNormal":{let a=I("shape",e,t,n),r=I("mean",e,t,n),s=I("stdDev",e,t,n),i=I("seed",e,t,n);return[Yh(a,r,s,I("dtype",e,t,n),i)]}case"Zeros":return[bt(I("shape",e,t,n),I("dtype",e,t,n))];case"ZerosLike":return[He(I("x",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};function vv(e,t,n){let a=I("boxes",e,t,n),r=I("scores",e,t,n),s=I("maxOutputSize",e,t,n),i=I("iouThreshold",e,t,n),o=I("scoreThreshold",e,t,n),l=I("softNmsSigma",e,t,n);return{boxes:a,scores:r,maxOutputSize:s,iouThreshold:i,scoreThreshold:o,softNmsSigma:l}}var qV=async(e,t,n)=>{switch(e.op){case"NonMaxSuppressionV5":{let{boxes:a,scores:r,maxOutputSize:s,iouThreshold:i,scoreThreshold:o,softNmsSigma:l}=vv(e,t,n),c=await Za.nonMaxSuppressionWithScoreAsync(a,r,s,i,o,l);return[c.selectedIndices,c.selectedScores]}case"NonMaxSuppressionV4":{let{boxes:a,scores:r,maxOutputSize:s,iouThreshold:i,scoreThreshold:o}=vv(e,t,n),l=I("padToMaxOutputSize",e,t,n),c=await Za.nonMaxSuppressionPaddedAsync(a,r,s,i,o,l);return[c.selectedIndices,c.validOutputs]}case"NonMaxSuppressionV3":case"NonMaxSuppressionV2":{let{boxes:a,scores:r,maxOutputSize:s,iouThreshold:i,scoreThreshold:o}=vv(e,t,n);return[await Za.nonMaxSuppressionAsync(a,r,s,i,o)]}case"Where":{let a=pe(I("condition",e,t,n),"bool"),r=[await bb(a)];return a.dispose(),r}case"ListDiff":return Rk(I("x",e,t,n),I("y",e,t,n));default:throw TypeError(`Node type ${e.op} is not implemented`)}},KV=(e,t,n)=>{switch(e.op){case"TopKV2":{let a=I("x",e,t,n),r=I("k",e,t,n),s=I("sorted",e,t,n),i=gb(a,r,s);return[i.values,i.indices]}case"Unique":{let a=I("x",e,t,n),r=Jh(a);return[r.values,r.indices]}case"UniqueV2":{let a=I("x",e,t,n),r=I("axis",e,t,n),s=Jh(a,r);return[s.values,s.indices]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},XV=(e,t,n)=>{switch(e.op){case"Const":return t[e.name];case"PlaceholderWithDefault":let a=I("default",e,t,n);return[Cn(e.name,t,n)||a];case"Placeholder":return[Cn(e.name,t,n)];case"Identity":case"StopGradient":case"FakeQuantWithMinMaxVars":{let c=I("x",e,t,n);return[Ar(c)]}case"IdentityN":return I("x",e,t,n).map(c=>Ar(c));case"Snapshot":let r=I("x",e,t,n);return[Ar(r)];case"Shape":return[tt(I("x",e,t,n).shape,"int32")];case"ShapeN":return I("x",e,t,n).map(c=>tt(c.shape));case"Size":return[de(I("x",e,t,n).size,"int32")];case"Rank":return[de(I("x",e,t,n).rank,"int32")];case"NoOp":return[de(1)];case"Print":let s=I("x",e,t,n),i=I("data",e,t,n),o=I("message",e,t,n),l=I("summarize",e,t,n);console.warn("The graph has a tf.print() operation,usually used for debugging, which slows down performance."),console.log(o);for(let c=0;ce.dispose()),this.tensorMap.clear(),this.handle.dispose()}size(){return this.tensorMap.size}async import(e,t){this.checkKeyAndValueTensor(e,t);let n=await e.data();return this.tensorMap.forEach(a=>a.dispose()),this.tensorMap.clear(),D(()=>{let a=pt(t),r=n.length,s=a.length;k.assert(r===s,()=>`The number of elements doesn't match, keys has ${r} elements, the values has ${s} elements.`);for(let i=0;i{let a=[];for(let r=0;r{switch(e.op){case"HashTable":case"HashTableV2":{let r=I("keyDType",e,t,n),s=I("valueDType",e,t,n),i=new YV(r,s);return a.addHashTable(e.name,i),[i.handle]}case"LookupTableImport":case"LookupTableImportV2":{let r=I("tableHandle",e,t,n,a),s=I("keys",e,t,n),i=I("values",e,t,n);return[await a.getHashTableById(r.id).import(s,i)]}case"LookupTableFind":case"LookupTableFindV2":{let r=I("tableHandle",e,t,n,a),s=I("keys",e,t,n),i=I("defaultValue",e,t,n);return[await a.getHashTableById(r.id).find(s,i)]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},ZV=(e,t,n)=>{switch(e.op){case"ResizeBilinear":{let a=I("images",e,t,n),r=I("size",e,t,n),s=I("alignCorners",e,t,n),i=I("halfPixelCenters",e,t,n);return[Za.resizeBilinear(a,[r[0],r[1]],s,i)]}case"ResizeNearestNeighbor":{let a=I("images",e,t,n),r=I("size",e,t,n),s=I("alignCorners",e,t,n),i=I("halfPixelCenters",e,t,n);return[Za.resizeNearestNeighbor(a,[r[0],r[1]],s,i)]}case"CropAndResize":{let a=I("image",e,t,n),r=I("boxes",e,t,n),s=I("boxInd",e,t,n),i=I("cropSize",e,t,n),o=I("method",e,t,n),l=I("extrapolationValue",e,t,n);return[Za.cropAndResize(a,r,s,i,o,l)]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},QV=(e,t,n)=>{switch(e.op){case"Equal":return[Ir(I("a",e,t,n),I("b",e,t,n))];case"NotEqual":return[ss(I("a",e,t,n),I("b",e,t,n))];case"Greater":return[ea(I("a",e,t,n),I("b",e,t,n))];case"GreaterEqual":return[Nr(I("a",e,t,n),I("b",e,t,n))];case"Less":return[Hc(I("a",e,t,n),I("b",e,t,n))];case"LessEqual":return[rs(I("a",e,t,n),I("b",e,t,n))];case"LogicalAnd":return[ha(I("a",e,t,n),I("b",e,t,n))];case"LogicalNot":return[jc(I("a",e,t,n))];case"LogicalOr":return[Lh(I("a",e,t,n),I("b",e,t,n))];case"Select":case"SelectV2":return[In(I("condition",e,t,n),I("a",e,t,n),I("b",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},eU=(e,t,n)=>{switch(e.op){case"BatchMatMul":case"BatchMatMulV2":case"MatMul":return[ze(I("a",e,t,n),I("b",e,t,n),I("transposeA",e,t,n),I("transposeB",e,t,n))];case"Transpose":return[Ue(I("x",e,t,n),I("perm",e,t,n))];case"_FusedMatMul":let[a,r]=I("fusedOps",e,t,n),s=a==="biasadd",i=r==="prelu",o=I("numArgs",e,t,n),l=I("leakyreluAlpha",e,t,n);if(s){if(i&&o!==2)throw new Error("Fused MatMul with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!i&&o!==1)throw new Error("Fused MatMul with BiasAdd must have one extra argument: bias.")}let[c,u]=I("args",e,t,n);return[os.matMul({a:I("a",e,t,n),b:I("b",e,t,n),transposeA:I("transposeA",e,t,n),transposeB:I("transposeB",e,t,n),bias:c,activation:r,preluActivationWeights:u,leakyreluAlpha:l})];default:throw TypeError(`Node type ${e.op} is not implemented`)}},tU=(e,t,n)=>{switch(e.op){case"FusedBatchNorm":case"FusedBatchNormV2":return[wr(I("x",e,t,n),I("mean",e,t,n),I("variance",e,t,n),I("offset",e,t,n),I("scale",e,t,n),I("epsilon",e,t,n))];case"FusedBatchNormV3":return[wr(I("x",e,t,n),I("mean",e,t,n),I("variance",e,t,n),I("offset",e,t,n),I("scale",e,t,n),I("epsilon",e,t,n))];case"LRN":return[nb(I("x",e,t,n),I("radius",e,t,n),I("bias",e,t,n),I("alpha",e,t,n),I("beta",e,t,n))];case"Softmax":return[Ca(I("x",e,t,n))];case"LogSoftmax":return[Oh(I("x",e,t,n))];case"SparseToDense":return[xb(I("sparseIndices",e,t,n),I("outputShape",e,t,n),I("sparseValues",e,t,n),I("defaultValue",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},nU=(e,t,n)=>{switch(e.op){case"Max":{let i=I("axis",e,t,n),o=I("keepDims",e,t,n);return[ta(I("x",e,t,n),i,o)]}case"Mean":{let i=I("axis",e,t,n),o=I("keepDims",e,t,n);return[Ct(I("x",e,t,n),i,o)]}case"Min":{let i=I("axis",e,t,n),o=I("keepDims",e,t,n);return[Zl(I("x",e,t,n),i,o)]}case"Sum":{let i=I("axis",e,t,n),o=I("keepDims",e,t,n);return[Ce(I("x",e,t,n),i,o)]}case"All":{let i=I("axis",e,t,n),o=I("keepDims",e,t,n);return[Eh(I("x",e,t,n),i,o)]}case"Any":{let i=I("axis",e,t,n),o=I("keepDims",e,t,n);return[Lc(I("x",e,t,n),i,o)]}case"ArgMax":{let i=I("axis",e,t,n);return[zc(I("x",e,t,n),i)]}case"ArgMin":{let i=I("axis",e,t,n);return[Ly(I("x",e,t,n),i)]}case"Prod":{let i=I("axis",e,t,n),o=I("keepDims",e,t,n);return[Wh(I("x",e,t,n),i,o)]}case"Cumsum":{let i=I("axis",e,t,n),o=I("exclusive",e,t,n),l=I("reverse",e,t,n);return[Dh(I("x",e,t,n),i,o,l)]}case"Bincount":let a=I("x",e,t,n),r=I("weights",e,t,n),s=I("size",e,t,n);return[hk(a,r,s)];case"DenseBincount":{let i=I("x",e,t,n),o=I("weights",e,t,n),l=I("size",e,t,n),c=I("binaryOutput",e,t,n);return[xk(i,o,l,c)]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},aU=(e,t,n)=>{switch(e.op){case"ConcatV2":case"Concat":{let a=I("n",e,t,n),r=I("axis",e,t,n),s=I("tensors",e,t,n);return s=s.slice(0,a),[Ze(s,r)]}case"Gather":{let a=I("x",e,t,n),r=I("indices",e,t,n);return[Mi(a,pe(r,"int32"),0)]}case"GatherV2":{let a=I("axis",e,t,n),r=I("batchDims",e,t,n),s=I("x",e,t,n),i=I("indices",e,t,n);return[Mi(s,pe(i,"int32"),a,r)]}case"Reverse":{let a=I("dims",e,t,n),r=[];for(let i=0;i{let a=I("axis",e,t,n),r=I("tensors",e,t,n),s=r[0].shape,i=is(r[0]).shape,o=r.map(l=>{let c=k.arraysEqual(l.shape,s);if(!c&&!k.arraysEqual(is(l).shape,i))throw new Error("the input tensors shape does not match");return c?l:j(l,s)});return[Mt(o,a)]});case"Unpack":{let a=I("axis",e,t,n),r=I("tensor",e,t,n);return pt(r,a)}case"Tile":{let a=I("reps",e,t,n);return[Ka(I("x",e,t,n),a)]}case"Split":case"SplitV":{let a=I("axis",e,t,n),r=I("numOrSizeSplits",e,t,n),s=I("x",e,t,n);return Pn(s,r,a)}case"ScatterNd":{let a=I("indices",e,t,n),r=I("values",e,t,n),s=I("shape",e,t,n);return[e1(a,r,s)]}case"GatherNd":{let a=I("x",e,t,n),r=I("indices",e,t,n);return[t1(a,r)]}case"SparseToDense":{let a=I("sparseIndices",e,t,n),r=I("outputShape",e,t,n),s=I("sparseValues",e,t,n),i=I("defaultValue",e,t,n);return[xb(a,s,r,s.dtype===i.dtype?i:pe(i,s.dtype))]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},rU=(e,t,n)=>{switch(e.op){case"FFT":return[Jc(I("x",e,t,n))];case"IFFT":return[tu(I("x",e,t,n))];case"RFFT":return[Zc(I("x",e,t,n))];case"IRFFT":return[Xh(I("x",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},sU=(e,t,n)=>{switch(e.op){case"Cast":return[pe(I("x",e,t,n),I("dtype",e,t,n))];case"ExpandDims":{let a=I("axis",e,t,n);return[Qn(I("x",e,t,n),a)]}case"Squeeze":{let a=I("axis",e,t,n);return[is(I("x",e,t,n),a)]}case"Reshape":return[j(I("x",e,t,n),I("shape",e,t,n))];case"MirrorPad":return[ob(I("x",e,t,n),I("padding",e,t,n),I("mode",e,t,n))];case"PadV2":case"Pad":return[na(I("x",e,t,n),I("padding",e,t,n),I("constantValue",e,t,n))];case"SpaceToBatchND":{let a=I("blockShape",e,t,n),r=I("paddings",e,t,n);return[qc(I("x",e,t,n),a,r)]}case"BatchToSpaceND":{let a=I("blockShape",e,t,n),r=I("crops",e,t,n);return[Wc(I("x",e,t,n),a,r)]}case"DepthToSpace":{let a=I("blockSize",e,t,n),r=I("dataFormat",e,t,n).toUpperCase();return[Yy(I("x",e,t,n),a,r)]}case"BroadcastTo":return[Vc(I("x",e,t,n),I("shape",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};function MN(e,t,n,a){let r=((s,i,o)=>{switch(s.category){case"arithmetic":return D(()=>PV(s,i,o));case"basic_math":return D(()=>OV(s,i,o));case"control":return GV(s,i,o);case"convolution":return D(()=>HV(s,i,o));case"creation":return D(()=>jV(s,i,o));case"dynamic":return qV(s,i,o);case"evaluation":return D(()=>KV(s,i,o));case"image":return D(()=>ZV(s,i,o));case"graph":return D(()=>XV(s,i,o));case"logical":return D(()=>QV(s,i,o));case"matrices":return D(()=>eU(s,i,o));case"normalization":return D(()=>tU(s,i,o));case"reduction":return D(()=>nU(s,i,o));case"slice_join":return D(()=>aU(s,i,o));case"spectral":return D(()=>rU(s,i,o));case"transformation":return D(()=>sU(s,i,o));case"hash_table":return JV(s,i,o,a);case"custom":let l=pN(s.op);if(l&&l.customExecutor)return l.customExecutor(new RV(s,i,o));throw TypeError(`Custom op ${s.op} is not registered.`);default:throw TypeError(`Unknown op '${s.op}'. File an issue at https://github.com/tensorflow/tfjs/issues so we can add it, or register a custom execution with tf.registerOp()`)}})(e,t,n);return k.isPromise(r)?r.then(s=>[].concat(s)):[].concat(r)}var RN=class{constructor(e={},t={},n={},a={}){this.weightMap=e,this.tensorArrayMap=t,this.tensorListMap=n,this.functionMap=a,this.rootContext={id:0,frameName:"",iterationId:0},this.contexts=[this.rootContext],this.lastId=0,this.generateCurrentContextIds()}newFrame(e,t){return{id:e,frameName:t,iterationId:0}}set currentContext(e){this.contexts!==e&&(this.contexts=e,this.generateCurrentContextIds())}get currentContext(){return this.contexts}get currentContextId(){return this._currentContextIds[0]}get currentContextIds(){return this._currentContextIds}generateCurrentContextIds(){let e=[];for(let t=0;tt.id===0&&t.iterationId===0?"":`${t.frameName}-${t.iterationId}`).join("/"):""}enterFrame(e){this.contexts&&(this.lastId++,this.contexts=this.contexts.slice(),this.contexts.push(this.newFrame(this.lastId,e)),this._currentContextIds.unshift(this.contextIdforContexts(this.contexts)))}exitFrame(){if(this.contexts&&this.contexts.length>1)this.contexts=this.contexts.slice(),this.contexts.splice(-1),this.currentContextIds.shift();else throw new Error("Cannot exit frame, the context is empty")}nextIteration(){if(this.contexts&&this.contexts.length>0){this.contexts=this.contexts.slice(),this.lastId++;let e=Object.assign({},this.contexts[this.contexts.length-1]);e.iterationId+=1,e.id=this.lastId,this.contexts.splice(-1,1,e),this._currentContextIds.splice(0,1,this.contextIdforContexts(this.contexts))}else throw new Error("Cannot increase frame iteration, the context is empty")}getWeight(e){return this.weightMap[e]}addTensorArray(e){this.tensorArrayMap[e.id]=e}getTensorArray(e){return this.tensorArrayMap[e]}addTensorList(e){this.tensorListMap[e.id]=e}getTensorList(e){return this.tensorListMap[e]}dispose(e){for(let t in this.tensorArrayMap)this.tensorArrayMap[t].clearAndClose(e);for(let t in this.tensorListMap)this.tensorListMap[t].clearAndClose(e)}};function ON(e,t,n,a){let r=new Set,s=[],i=null,o=null,l=new Set,c=Object.keys(e).map(d=>Ln(d)[0]),u=[];a!=null&&(u=a.map(d=>Ln(d.name)[0]));let p=[...t];for(;p.length>0;){let d=p.pop();if((PN(d)||iU(d)||oU(d))&&i==null&&(i=d,o=i.children.map(h=>h.name).filter(h=>r.has(h))),r.add(d.name),n[d.name]==null&&c.indexOf(d.name)===-1&&u.indexOf(d.name)===-1){if(d.inputs.length===0){s.push(d.name);continue}d.inputs.forEach(h=>{l.has(h.name)||(l.add(h.name),p.push(h))})}}return{inputs:e,outputs:t,usedNodes:r,missingInputs:s,dynamicNode:i,syncInputs:o}}function lU(e,t,n){let{usedNodes:a,inputs:r}=n,s=[],i=Object.keys(r).map(u=>Ln(u)[0]).map(u=>e.nodes[u]),o=e.initNodes;i.forEach(u=>{a.has(u.name)&&s.push(u)}),e.weights.forEach(u=>{a.has(u.name)&&s.push(u)}),o!=null&&o.forEach(u=>{a.has(u.name)&&s.push(u)});let l=new Set,c=[];for(;s.length>0;){let u=s.pop();l.add(u.name),t[u.name]||c.push(u),u.children.forEach(p=>{!l.has(p.name)&&a.has(p.name)&&p.inputs.every(d=>l.has(d.name))&&s.push(p)})}return c}var uU=["Switch","Merge","Enter","Exit","NextIteration","StatelessIf","StatelessWhile","if","While"],cU=["NonMaxSuppressionV2","NonMaxSuppressionV3","NonMaxSuppressionV5","Where"],pU=["HashTable","HashTableV2","LookupTableImport","LookupTableImportV2","LookupTableFind","LookupTableFindV2"];function PN(e){return uU.indexOf(e.op)>=0}function iU(e){return cU.indexOf(e.op)>=0}function oU(e){return pU.indexOf(e.op)>=0}var wv=class{constructor(e,t){this.graph=e,this.parent=t,this.compiledMap=new Map,this._weightMap={},this.SEPERATOR=",",this._functions={},this._functionExecutorMap={},this._outputs=e.outputs,this._inputs=e.inputs,this._initNodes=e.initNodes,this._signature=e.signature,this._functions=e.functions,e.functions!=null&&Object.keys(e.functions).forEach(n=>{this._functionExecutorMap[n]=new wv(e.functions[n],this)})}get weightIds(){return this.parent?this.parent.weightIds:this._weightIds}get functionExecutorMap(){return this.parent?this.parent.functionExecutorMap:this._functionExecutorMap}get weightMap(){return this.parent?this.parent.weightMap:this._weightMap}set weightMap(e){let t=Object.keys(e).map(n=>e[n].map(a=>a.id));this._weightIds=[].concat(...t),this._weightMap=e}set resourceManager(e){this._resourceManager=e}get inputs(){return this._inputs.map(e=>({name:e.name,shape:e.attrParams.shape?e.attrParams.shape.value:void 0,dtype:e.attrParams.dtype?e.attrParams.dtype.value:void 0}))}get outputs(){return this._outputs.map(e=>({name:e.name,shape:e.attrParams.shape?e.attrParams.shape.value:void 0,dtype:e.attrParams.dtype?e.attrParams.dtype.value:void 0}))}get inputNodes(){return this._inputs.map(e=>e.signatureKey||e.name)}get outputNodes(){return this._outputs.map(e=>{let t=e.signatureKey||e.name;return e.defaultOutput?`${t}:${e.defaultOutput}`:t})}get functions(){return Object.keys(this._functions).reduce((e,t)=>(e[t]=this._functions[t].signature,e),{})}getCompilationKey(e,t){let n=e.map(r=>r.name).sort(),a=t.map(r=>r.name).sort();return n.join(this.SEPERATOR)+"--"+a.join(this.SEPERATOR)}compile(e,t){let n=ON(e,t,this.weightMap,this._initNodes),{missingInputs:a,dynamicNode:r,syncInputs:s}=n;if(r!=null)throw new Error(`This execution contains the node '${r.name}', which has the dynamic op '${r.op}'. Please use model.executeAsync() instead. Alternatively, to avoid the dynamic ops, specify the inputs [${s}]`);if(a.length>0){let i=t.map(l=>l.name),o=Object.keys(e);throw new Error(`Cannot compute the outputs [${i}] from the provided inputs [${o}]. Missing the following inputs: [${a}]`)}return lU(this.graph,this.weightMap,n)}execute(e,t){e=this.mapInputs(e);let n=Object.keys(e).sort();this.checkInputs(e),this.checkInputShapeAndType(e),t=this.mapOutputs(t),this.checkOutputs(t);let a=n.map(u=>this.graph.nodes[Ln(u)[0]]),r=t.map(u=>Ln(u)[0]),s=r.map(u=>this.graph.nodes[u]);s.length===0&&(s=this._outputs);let i=this.getCompilationKey(a,s),o=this.compiledMap.get(i);o==null&&(o=this.compile(e,s),this.compiledMap.set(i,o));let l={},c={};return D(()=>{let u=new RN(this.weightMap,l,c,this.functionExecutorMap),p=Object.assign({},this.weightMap);Object.keys(e).forEach(m=>{let[f,g]=Ln(m),y=[];y[g]=e[m],p[f]=y});let d=this.getFrozenTensorIds(p),h={};for(let m=0;mCn(m,p,u))})}getFrozenTensorIds(e){let t=[].concat.apply([],Object.keys(e).map(n=>e[n]).map(n=>n.map(a=>a.id)));return new Set(t)}checkTensorForDisposal(e,t,n,a,r,s,i){t.category==="control"||s.indexOf(e)!==-1||(n[e].forEach(o=>{o!=null&&(i[o.id]=(i[o.id]||0)+t.children.length)}),t.inputs.forEach(o=>{if(o.category!=="control"){let l=gV(o.name,n,a);l!=null&&l.forEach(c=>{if(c&&!r.has(c.id)){let u=i[c.id];u===1?(c.dispose(),delete i[c.id]):u!=null&&i[c.id]--}})}}))}async executeAsync(e,t){return this._executeAsync(e,t)}async _executeAsync(e,t,n=!1,a={},r={}){n||(e=this.mapInputs(e),this.checkInputs(e),this.checkInputShapeAndType(e),t=this.mapOutputs(t),this.checkOutputs(t));let s=new RN(this.weightMap,a,r,this.functionExecutorMap),i=await this.executeWithControlFlow(e,s,t,n),o=t.map(p=>Cn(p,i,s)),l=o.map(p=>p.id),c=Object.keys(e).map(p=>e[p].id),u=new Set([...l,...c,...this.weightIds]);return Object.keys(i).forEach(p=>{i[p].forEach(d=>{d&&!d.isDisposed&&!u.has(d.id)&&d.dispose()})}),this.parent==null&&s.dispose(u),o}async executeFunctionAsync(e,t,n){let a=e.reduce((r,s,i)=>(r[this.inputs[i].name]=s,r),{});return this._executeAsync(a,this.outputNodes,!0,t,n)}async executeWithControlFlow(e,t,n,a){let r=Object.keys(e),s=r.map(b=>this.graph.nodes[Ln(b)[0]]),i=n.map(b=>Ln(b)[0]),o=i.map(b=>this.graph.nodes[b]);o.length===0&&(o=this._outputs);let{usedNodes:l,missingInputs:c,dynamicNode:u,syncInputs:p}=ON(e,o,this.weightMap,this._initNodes),d=[...s,...this.graph.weights,...this._initNodes||[]].map(b=>({node:b,contexts:t.currentContext})),h=Object.assign({},this.weightMap);Object.keys(e).forEach(b=>{let[x,v]=Ln(b),N=[];N[v]=e[b],h[x]=N});let m={},f=this.getFrozenTensorIds(h),g={};for(;d.length>0;){let b=this.processStack(s,d,t,h,g,f,i,m,l);await Promise.all(b)}u==null&&!a&&console.warn("This model execution did not contain any nodes with control flow or dynamic output shapes. You can use model.execute() instead.");let y=o.filter(b=>!PN(b)&&!Cn(b.name,h,t)).map(b=>b.name);if(y.length>0){let b="";throw u!=null&&(b=`Alternatively, to avoid the dynamic ops, use model.execute() and specify the inputs [${p}]`),new Error(`Cannot compute the outputs [${y}] from the provided inputs [${r}]. Consider providing the following inputs: [${c}]. ${b}`)}return h}processStack(e,t,n,a,r,s,i,o,l){let c=[];for(;t.length>0;){let u=t.pop();n.currentContext=u.contexts;let p="";if(u.node.op==="Enter"&&I("isConstant",u.node,a,n)&&([p]=Fr(u.node.name,n)),a[u.node.name]==null){let d=MN(u.node,a,n,this._resourceManager);p||([p]=Fr(u.node.name,n));let h=n.currentContext;k.isPromise(d)?c.push(d.then(m=>(a[p]=m,n.currentContext=h,this.checkTensorForDisposal(p,u.node,a,n,s,i,o),this.processChildNodes(u.node,t,n,a,r,l),m))):(a[p]=d,this.checkTensorForDisposal(p,u.node,a,n,s,i,o),this.processChildNodes(u.node,t,n,a,r,l))}else this.processChildNodes(u.node,t,n,a,r,l)}return c}processChildNodes(e,t,n,a,r,s){e.children.forEach(i=>{let[o]=Fr(i.name,n);r[o]||!s.has(i.name)||(i.op==="Merge"?i.inputNames.some(l=>!!Cn(l,a,n))&&(r[o]=!0,t.push({contexts:n.currentContext,node:i})):i.inputNames.every(l=>!!Cn(l,a,n))&&(r[o]=!0,t.push({contexts:n.currentContext,node:i})))})}dispose(){Object.keys(this.weightMap).forEach(e=>this.weightMap[e].forEach(t=>t.dispose()))}checkInputShapeAndType(e){Object.keys(e).forEach(t=>{let n=e[t],[a]=Ln(t),r=this.graph.nodes[a];if(r.attrParams.shape&&r.attrParams.shape.value){let s=r.attrParams.shape.value,i=s.length===n.shape.length&&n.shape.every((o,l)=>s[l]===-1||s[l]===o);k.assert(i,()=>`The shape of dict['${r.name}'] provided in model.execute(dict) must be [${s}], but was [${n.shape}]`)}r.attrParams.dtype&&r.attrParams.dtype.value&&k.assert(n.dtype===r.attrParams.dtype.value,()=>`The dtype of dict['${r.name}'] provided in model.execute(dict) must be ${r.attrParams.dtype.value}, but was ${n.dtype}`)})}mapInputs(e){let t={};for(let n in e)if(this._signature!=null&&this._signature.inputs!=null&&this._signature.inputs[n]!=null){let a=this._signature.inputs[n];t[a.name]=e[n]}else t[n]=e[n];return t}checkInputs(e){let t=Object.keys(e).filter(n=>{let[a]=Ln(n);return this.graph.nodes[a]==null});if(t.length>0)throw new Error(`The dict provided in model.execute(dict) has keys: [${t}] that are not part of graph`)}mapOutputs(e){return e.map(t=>this._signature!=null&&this._signature.outputs!=null&&this._signature.outputs[t]!=null?this._signature.outputs[t].name:t,{})}checkOutputs(e){e.forEach(t=>{let[n]=Ln(t);if(!this.graph.nodes[n])throw new Error(`The output '${t}' is not found in the graph`)})}},dU=class{constructor(e={},t={}){this.hashTableNameToHandle=e,this.hashTableMap=t}addHashTable(e,t){this.hashTableNameToHandle[e]=t.handle,this.hashTableMap[t.id]=t}getHashTableHandleByName(e){return this.hashTableNameToHandle[e]}getHashTableById(e){return this.hashTableMap[e]}dispose(){for(let e in this.hashTableMap)this.hashTableMap[e].clearAndClose(),delete this.hashTableMap[e];for(let e in this.hashTableNameToHandle)this.hashTableNameToHandle[e].dispose(),delete this.hashTableNameToHandle[e]}},hU="?tfjs-format=file",mU="model.json",LN=class{constructor(e,t={}){this.modelUrl=e,this.loadOptions=t,this.version="n/a",t==null&&(this.loadOptions={}),this.resourceManager=new dU}get modelVersion(){return this.version}get inputNodes(){return this.executor.inputNodes}get outputNodes(){return this.executor.outputNodes}get inputs(){return this.executor.inputs}get outputs(){return this.executor.outputs}get weights(){return this.executor.weightMap}get metadata(){return this.artifacts.userDefinedMetadata}get modelSignature(){return this.signature}findIOHandler(){let e=this.modelUrl;if(e.load!=null)this.handler=e;else if(this.loadOptions.requestInit!=null)this.handler=Kt.browserHTTPRequest(e,this.loadOptions);else{let t=Kt.getLoadHandlers(e,this.loadOptions);if(t.length===0)t.push(Kt.browserHTTPRequest(e,this.loadOptions));else if(t.length>1)throw new Error(`Found more than one (${t.length}) load handlers for URL '${[e]}'`);this.handler=t[0]}}async load(){if(this.findIOHandler(),this.handler.load==null)throw new Error("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let e=await this.handler.load();return this.loadSync(e)}loadSync(e){this.artifacts=e;let t=this.artifacts.modelTopology,n;this.artifacts.userDefinedMetadata!=null&&this.artifacts.userDefinedMetadata.signature!=null?n=this.artifacts.userDefinedMetadata.signature:n=this.artifacts.signature,this.signature=n,this.version=`${t.versions.producer}.${t.versions.minConsumer}`;let a=Kt.decodeWeights(this.artifacts.weightData,this.artifacts.weightSpecs);if(this.executor=new wv(FN.Instance.transformGraph(t,this.signature)),this.executor.weightMap=this.convertTensorMapToTensorsMap(a),this.executor.resourceManager=this.resourceManager,e.modelInitializer!=null&&e.modelInitializer.node!=null){let r=FN.Instance.transformGraph(e.modelInitializer);this.initializer=new wv(r),this.initializer.weightMap=this.executor.weightMap,this.initializer.resourceManager=this.resourceManager,this.initializer.executeAsync({},[])}return!0}async save(e,t){if(typeof e=="string"){let n=Kt.getSaveHandlers(e);if(n.length===0)throw new Error(`Cannot find any save handlers for URL '${e}'`);if(n.length>1)throw new Error(`Found more than one (${n.length}) save handlers for URL '${e}'`);e=n[0]}if(e.save==null)throw new Error("GraphModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");return e.save(this.artifacts)}predict(e,t){return this.execute(e,this.outputNodes)}normalizeInputs(e){if(!(e instanceof z)&&!Array.isArray(e))return e;if(e=Array.isArray(e)?e:[e],e.length!==this.inputNodes.length)throw new Error(`Input tensor count mismatch,the graph model has ${this.inputNodes.length} placeholders, while there are ${e.length} input tensors.`);return this.inputNodes.reduce((t,n,a)=>(t[n]=e[a],t),{})}normalizeOutputs(e){return e=e||this.outputNodes,Array.isArray(e)?e:[e]}execute(e,t){e=this.normalizeInputs(e),t=this.normalizeOutputs(t);let n=this.executor.execute(e,t);return n.length>1?n:n[0]}async executeAsync(e,t){e=this.normalizeInputs(e),t=this.normalizeOutputs(t);let n=await this.executor.executeAsync(e,t);return n.length>1?n:n[0]}convertTensorMapToTensorsMap(e){return Object.keys(e).reduce((t,n)=>(t[n]=[e[n]],t),{})}dispose(){this.executor.dispose(),this.initializer&&this.initializer.dispose(),this.resourceManager.dispose()}};async function fU(e,t={}){if(e==null)throw new Error("modelUrl in loadGraphModel() cannot be null. Please provide a url or an IOHandler that loads the model");t==null&&(t={}),t.fromTFHub&&e.load==null&&(e.endsWith("/")||(e=e+"/"),e=`${e}${mU}${hU}`);let n=new LN(e,t);return await n.load(),n}var zN="2.8.3",BN={};Oe(BN,{CSVDataset:()=>VN,Dataset:()=>pu,FileDataSource:()=>UN,TextLineDataset:()=>WN,URLDataSource:()=>GN,array:()=>gU,csv:()=>bU,func:()=>xU,generator:()=>vU,microphone:()=>kU,version_data:()=>HN,webcam:()=>wU,zip:()=>yU});var IU=Ro(Dd()),NU=Ro(Dd());function TU(e,t){return jm(e,t)}function jm(e,t,n=new Map,a=new Set){if(e==null)return null;if(a.has(e))throw new Error("Circular references are not supported.");if(n.has(e))return n.get(e);let r=t(e);if(r.recurse&&r.value!==null)throw new Error("A deep map function may not return both a value and recurse=true.");if(r.recurse)if(du(e)){let s=Array.isArray(e)?[]:{};a.add(e);for(let i in e){let o=e[i],l=jm(o,t,n,a);s[i]=l}return a.delete(e),s}else throw new Error(`Can't recurse into non-iterable type: ${e}`);else return n.set(e,r.value),r.value}function SU(e,t=qN){return jN(e,t)}function jN(e,t,n=new Set){let a=e[0];if(n.has(a))throw new Error("Circular references are not supported.");let r=t(e);if(r.recurse&&r.value!==null)throw new Error("A deep zip function may not return both a value and recurse=true.");if(r.recurse)if(du(a)){let s=Array.isArray(a)?[]:{};n.add(a);for(let i in a){let o=e.map(c=>c[i]),l=jN(o,t,n);s[i]=l}return n.delete(a),s}else throw new Error(`Can't recurse into non-iterable type: ${a}`);else return r.value}function qN(e){return e===null?null:du(e[0])?{value:null,recurse:!0}:{value:e,recurse:!1}}async function KN(e,t){let n=new Map;jm(e,t,n);for(let a of Array.from(n.keys())){let r=n.get(a);if(k.isPromise(r)){let s=await r;n.set(a,s)}}return jm(e,t,n)}function du(e){return e!=null&&!ArrayBuffer.isView(e)&&(Array.isArray(e)||typeof e=="object"&&!(e instanceof z))}function EU(e){return e==null||CU(e)||Array.isArray(e)||typeof e=="object"&&e instanceof z||k.isTypedArray(e)}function CU(e){return e===null||typeof e!="object"&&typeof e!="function"}function FU(e){return TU(e,_U)}function _U(e){return e instanceof z?{value:e.clone(),recurse:!1}:du(e)?{value:null,recurse:!0}:{value:e,recurse:!1}}var XN=class{constructor(e){if(this.capacity=e,this.begin=0,this.end=0,e==null)throw new RangeError("Can't create a ring buffer of unknown capacity.");if(e<1)throw new RangeError("Can't create ring buffer of capacity < 1.");this.data=new Array(e),this.doubledCapacity=2*e}wrap(e){for(;e<0;)e+=this.doubledCapacity;return e%this.doubledCapacity}get(e){if(e<0)throw new RangeError("Can't get item at a negative index.");return this.data[e%this.capacity]}set(e,t){if(e<0)throw new RangeError("Can't set item at a negative index.");this.data[e%this.capacity]=t}length(){let e=this.end-this.begin;return e<0&&(e=this.doubledCapacity+e),e}isFull(){return this.length()===this.capacity}isEmpty(){return this.length()===0}push(e){if(this.isFull())throw new RangeError("Ring buffer is full.");this.set(this.end,e),this.end=this.wrap(this.end+1)}pushAll(e){for(let t of e)this.push(t)}pop(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");this.end=this.wrap(this.end-1);let e=this.get(this.end);return this.set(this.end,void 0),e}unshift(e){if(this.isFull())throw new RangeError("Ring buffer is full.");this.begin=this.wrap(this.begin-1),this.set(this.begin,e)}shift(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let e=this.get(this.begin);return this.set(this.begin,void 0),this.begin=this.wrap(this.begin+1),e}shuffleExcise(e){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let t=this.wrap(this.begin+e),n=this.get(t);return this.set(t,this.pop()),n}},kv=class extends XN{constructor(){super(kv.INITIAL_CAPACITY)}isFull(){return!1}push(e){super.isFull()&&this.expand(),super.push(e)}unshift(e){super.isFull()&&this.expand(),super.unshift(e)}expand(){let e=this.capacity*2,t=new Array(e),n=this.length();for(let a=0;at===!0)}rowMajorBatch(e,t=!0){return new zU(this,e,t)}columnMajorBatch(e,t=!0,n=qN){return this.rowMajorBatch(e,t).map(a=>SU(a,n))}concatenate(e,t){return new JN(YN([this,e]),t)}take(e){return e<0||e==null?this:new LU(this,e)}skip(e){return e<0||e==null?this:new OU(this,e)}prefetch(e){return new QN(this,e)}shuffle(e,t){return new GU(this,e,t)}serial(){return new PU(this)}},AU=class extends Qt{constructor(e){super();this.items=e,this.trav=0}summary(){return`Array of ${this.items.length} items`}async next(){if(this.trav>=this.items.length)return{value:null,done:!0};let e=this.items[this.trav];return this.trav++,{value:FU(e),done:!1}}},$U=class extends Qt{constructor(e){super();this.nextFn=e}summary(){return"Function call"}async next(){try{return this.nextFn()}catch(e){throw e.message=`Error thrown while iterating through a dataset: ${e.message}`,e}}},PU=class extends Qt{constructor(e){super();this.upstream=e,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Serial`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){return this.upstream.next()}},OU=class extends Qt{constructor(e,t){super();this.upstream=e,this.maxCount=t,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Skip`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.count++ Take`}async next(){return this.count++>=this.maxCount?{value:null,done:!0}:this.upstream.next()}},zU=class extends Qt{constructor(e,t,n=!0){super();this.upstream=e,this.batchSize=t,this.enableSmallLastBatch=n,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> RowMajorBatch`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){let e=[];for(;e.length0?{value:e,done:!1}:{value:null,done:!0};e.push(t.value)}return{value:e,done:!1}}},BU=class extends Qt{constructor(e,t){super();this.upstream=e,this.predicate=t,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Filter`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;){let e=await this.upstream.next();if(e.done||this.predicate(e.value))return e;Ae(e.value)}}},WU=class extends Qt{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> Map`}async next(){let e=await this.upstream.next();if(e.done)return{value:null,done:!0};let t=Ta.getTensorsInContainer(e.value),n=this.transform(e.value),a=Ta.getTensorsInContainer(n);for(let r of t)Ta.isTensorInList(r,a)||r.dispose();return{value:n,done:!1}}},VU=class extends Qt{constructor(e,t){super();this.upstream=e,this.handler=t,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> handleErrors`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;)try{return await this.upstream.next()}catch(e){if(!this.handler(e))return{value:null,done:!0}}}},ZN=class extends Qt{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> AsyncMap`}async next(){let e=await this.upstream.next();if(e.done)return{value:null,done:!0};let t=Ta.getTensorsInContainer(e.value),n=await this.transform(e.value),a=Ta.getTensorsInContainer(n);for(let r of t)Ta.isTensorInList(r,a)||r.dispose();return{value:n,done:!1}}},Nv=class extends Qt{constructor(){super();this.outputQueue=new kv,this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.outputQueue.length()===0;)if(!await this.pump())return{value:null,done:!0};return{value:this.outputQueue.shift(),done:!1}}},UU=class extends Nv{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> Flatmap`}async pump(){let e=await this.upstream.next();if(e.done)return!1;let t=Ta.getTensorsInContainer(e.value),n=this.transform(e.value),a=Ta.getTensorsInContainer(n);this.outputQueue.pushAll(n);for(let r of t)Ta.isTensorInList(r,a)||r.dispose();return!0}},JN=class extends Qt{constructor(e,t){super();this.baseErrorHandler=t,this.lastRead=null,this.iterator=null,this.moreIterators=e}summary(){return"TODO: fill in upstream of chained summaries -> Chained"}async next(){return this.lastRead=this.readFromChain(this.lastRead),this.lastRead}async readFromChain(e){if(await e,this.iterator==null){let n=await this.moreIterators.next();if(n.done)return{value:null,done:!0};this.iterator=n.value,this.baseErrorHandler!=null&&(this.iterator=this.iterator.handleErrors(this.baseErrorHandler))}let t=await this.iterator.next();return t.done?(this.iterator=null,this.readFromChain(e)):t}},fs;(function(e){e[e.FAIL=0]="FAIL",e[e.SHORTEST=1]="SHORTEST",e[e.LONGEST=2]="LONGEST"})(fs||(fs={}));var MU=class extends Qt{constructor(e,t=fs.FAIL){super();this.iterators=e,this.mismatchMode=t,this.count=0,this.currentPromise=null}summary(){return"{TODO: fill in upstream of zip summaries} -> Zip"}async nextState(e){await e;let t=0,n=0;function a(s){return s instanceof Qt?{value:s.next().then(i=>(t++,i.done&&n++,i.value)),recurse:!1}:{value:null,recurse:!0}}let r=await KN(this.iterators,a);if(t===n)return{value:null,done:!0};if(n>0)switch(this.mismatchMode){case fs.FAIL:throw new Error(`Zipped streams should have the same length. Mismatched at element ${this.count}.`);case fs.SHORTEST:return{value:null,done:!0};case fs.LONGEST:default:}return this.count++,{value:r,done:!1}}async next(){return this.currentPromise=this.nextState(this.currentPromise),this.currentPromise}},QN=class extends Qt{constructor(e,t){super();this.upstream=e,this.bufferSize=t,this.buffer=new XN(t)}summary(){return`${this.upstream.summary()} -> Prefetch`}refill(){for(;!this.buffer.isFull();){let e=this.upstream.next();this.buffer.push(e)}}next(){return this.refill(),this.buffer.shift()}},GU=class extends QN{constructor(e,t,n){super(e,t);this.upstream=e,this.windowSize=t,this.upstreamExhausted=!1,this.random=NU.alea(n||k.now().toString()),this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}randomInt(e){return Math.floor(this.random()*e)}chooseIndex(){return this.randomInt(this.buffer.length())}async serialNext(){for(this.upstreamExhausted||this.refill();!this.buffer.isEmpty();){let e=this.chooseIndex(),t=await this.buffer.shuffleExcise(e);if(t.done)this.upstreamExhausted=!0;else return this.refill(),t}return{value:null,done:!0}}},pu=class{constructor(){this.size=null}batch(e,t=!0){let n=this;k.assert(e>0,()=>`batchSize needs to be positive, but it is + ${e}`);let a;return this.size===Infinity||this.size==null?a=this.size:t?a=Math.ceil(this.size/e):a=Math.floor(this.size/e),zn(async()=>(await n.iterator()).columnMajorBatch(e,t,HU),a)}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,zn(async()=>(await t.iterator()).concatenate(await e.iterator()),n)}filter(e){let t=this,n;return this.size===Infinity?n=Infinity:n=null,zn(async()=>(await t.iterator()).filter(a=>D(()=>e(a))),n)}async forEachAsync(e){return(await this.iterator()).forEachAsync(e)}map(e){let t=this;return zn(async()=>(await t.iterator()).map(n=>D(()=>e(n))),this.size)}mapAsync(e){let t=this;return zn(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 zn(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,zn(async()=>{let a=Iv(async()=>({value:await t.iterator(),done:!1}));return DU(a.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(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)`);let a=this,r=IU.alea(t||k.now().toString());return zn(async()=>{let s=r.int32();return n&&(s+=r.int32()),(await a.iterator()).shuffle(e,s.toString())},this.size)}take(e){let t=this,n;return this.size!=null&&this.size>e?n=e:this.size!=null&&this.size<=e?n=this.size:n=null,zn(async()=>(await t.iterator()).take(e),n)}async toArray(){if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArray()}async toArrayForTest(){if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArrayForTest()}};pu.MAX_BUFFER_SIZE=1e4;function zn(e,t=null){return new class extends pu{constructor(){super(...arguments);this.size=t}async iterator(){return e()}}}function gU(e){return zn(async()=>YN(e),e.length)}function yU(e){if(!du(e))throw new Error("The argument to zip() must be an object or array.");let t;if(Array.isArray(e))for(let n=0;n{let n=await KN(e,a=>{if(a instanceof pu)return{value:a.iterator(),recurse:!1};if(du(a))return{value:null,recurse:!0};throw new Error("Leaves of the structure passed to zip() must be Datasets, not primitives.")});return RU(n,fs.SHORTEST)},t)}function HU(e){if(e===null)return null;let t=e[0];return EU(t)?{value:jU(e),recurse:!1}:{value:null,recurse:!0}}function jU(e){if(e.length===0)throw new Error("Can't make a batch of zero elements.");return e[0]instanceof z?Mt(e):Yn(e)}var WN=class extends pu{constructor(e){super();this.input=e}async iterator(){return(await this.input.iterator()).decodeUTF8().split(` +`).map(e=>(e.endsWith("\r")&&(e=e.slice(0,-1)),e))}},qm='"',vp=Symbol("out"),eT=Symbol("field"),Km=Symbol("quote"),Tv=Symbol("quoteafterquote"),tT=Symbol("quoteinquote"),VN=class extends pu{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 WN(e),t||(t={}),this.hasHeader=t.hasHeader!==!1,this.fullColumnNames=t.columnNames,this.columnConfigs=t.columnConfigs,this.configuredColumnsOnly=t.configuredColumnsOnly,t.delimWhitespace?(k.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&&k.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((a,r)=>(a[r]=a[r]+1||1,a),{}),n=Object.keys(t).filter(a=>t[a]>1);if(k.assert(n.length===0,()=>"Duplicate column names found: "+n.toString()),this.columnConfigs){for(let a of Object.keys(this.columnConfigs))if(this.fullColumnNames.indexOf(a)===-1)throw new Error('The key "'+a+'" provided in columnConfigs does not match any of the column names ('+this.fullColumnNames.toString()+").")}this.columnNamesValidated=!0}async maybeReadHeaderLine(){if(this.hasHeader){let e=await(await this.base.iterator()).next();if(e.done)throw new Error("No data was found for CSV parsing.");let t=e.value;return this.parseRow(t,!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={},a={};for(let r=0;r14||!Number.isInteger(t))throw new Error(`Invalid fftSize: it must be a power of 2 between 2 to 4 and 2 to 14, but got ${this.fftSize}`);if(this.numFrames=e.numFramesPerSpectrogram||43,this.sampleRateHz=e.sampleRateHz,this.columnTruncateLength=e.columnTruncateLength||this.fftSize,this.audioTrackConstraints=e.audioTrackConstraints,this.smoothingTimeConstant=e.smoothingTimeConstant||0,this.includeSpectrogram=e.includeSpectrogram!==!1,this.includeWaveform=e.includeWaveform===!0,!this.includeSpectrogram&&!this.includeWaveform)throw new Error("Both includeSpectrogram and includeWaveform are false. At least one type of data should be returned.")}summary(){return"microphone"}static async create(e={}){if(ee().get("IS_NODE"))throw new Error("microphone API is only supported in browser environment.");let t=new nT(e);return await t.start(),t}async start(){try{this.stream=await navigator.mediaDevices.getUserMedia({audio:this.audioTrackConstraints==null?!0:this.audioTrackConstraints,video:!1})}catch(n){throw new Error(`Error thrown while initializing video stream: ${n.message}`)}if(!this.stream)throw new Error("Could not obtain audio from microphone.");let e=window.AudioContext||window.webkitAudioContext;if(this.audioContext=new e,!this.sampleRateHz)this.sampleRateHz=this.audioContext.sampleRate;else if(this.audioContext.sampleRate!==this.sampleRateHz)throw new Error(`Mismatch in sampling rate: Expected: ${this.sampleRateHz}; Actual: ${this.audioContext.sampleRate}`);let t=this.audioContext.createMediaStreamSource(this.stream);this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=this.fftSize*2,this.analyser.smoothingTimeConstant=this.smoothingTimeConstant,t.connect(this.analyser),this.freqData=new Float32Array(this.fftSize),this.timeData=new Float32Array(this.fftSize)}async next(){if(this.isClosed)return{value:null,done:!0};let e,t,n=await this.getAudioData();if(this.includeSpectrogram){let a=this.flattenQueue(n.freqDataQueue);e=this.getTensorFromAudioDataArray(a,[this.numFrames,this.columnTruncateLength,1])}if(this.includeWaveform){let a=this.flattenQueue(n.timeDataQueue);t=this.getTensorFromAudioDataArray(a,[this.numFrames*this.fftSize,1])}return{value:{spectrogram:e,waveform:t},done:!1}}async capture(){return(await this.next()).value}async getAudioData(){let e=[],t=[],n=0;return new Promise(a=>{let r=setInterval(()=>{this.includeSpectrogram&&(this.analyser.getFloatFrequencyData(this.freqData),this.freqData[0]===-Infinity&&a({freqDataQueue:e,timeDataQueue:t}),e.push(this.freqData.slice(0,this.columnTruncateLength))),this.includeWaveform&&(this.analyser.getFloatTimeDomainData(this.timeData),t.push(this.timeData.slice())),++n===this.numFrames&&(clearInterval(r),a({freqDataQueue:e,timeDataQueue:t}))},this.fftSize/this.sampleRateHz*1e3)})}stop(){this.isClosed||(this.isClosed=!0,this.analyser.disconnect(),this.audioContext.close(),this.stream!=null&&this.stream.getTracks().length>0&&this.stream.getTracks()[0].stop())}toArray(){throw new Error("Can not convert infinite audio stream to array.")}getSampleRate(){return this.sampleRateHz}flattenQueue(e){let t=e[0].length,n=new Float32Array(e.length*t);return e.forEach((a,r)=>n.set(a,r*t)),n}getTensorFromAudioDataArray(e,t){let n=new Float32Array(k.sizeFromShape(t));return n.set(e,n.length-e.length),Yn(n,t)}},aT=class extends Qt{constructor(e,t){super();if(this.webcamVideoElement=e,this.webcamConfig=t,this.isClosed=!0,this.resize=!1,this.needToResize())if(this.resize=!0,this.cropSize=[this.webcamConfig.resizeHeight,this.webcamConfig.resizeWidth],this.cropBoxInd=tt([0],"int32"),this.webcamConfig.centerCrop){let n=this.webcamConfig.resizeWidth*1/this.webcamVideoElement.width,a=this.webcamConfig.resizeHeight*1/this.webcamVideoElement.height,r=(1-n)/2,s=(1-a)/2,i=r+n,o=a+s;this.cropBox=Ea([s,r,o,i],[1,4])}else this.cropBox=Ea([0,0,1,1],[1,4])}summary(){return"webcam"}static async create(e,t={}){if(ee().get("IS_NODE"))throw new Error("tf.data.webcam is only supported in browser environment.");if(!e){if(e=document.createElement("video"),!t.resizeWidth||!t.resizeHeight)throw new Error("Please provide webcam video element, or resizeWidth and resizeHeight to create a hidden video element.");e.width=t.resizeWidth,e.height=t.resizeHeight}let n=new aT(e,t);return await n.start(),n}async start(){this.webcamConfig.facingMode&&k.assert(this.webcamConfig.facingMode==="user"||this.webcamConfig.facingMode==="environment",()=>`Invalid webcam facing mode: ${this.webcamConfig.facingMode}. Please provide 'user' or 'environment'`);try{this.stream=await navigator.mediaDevices.getUserMedia({video:{deviceId:this.webcamConfig.deviceId,facingMode:this.webcamConfig.facingMode?this.webcamConfig.facingMode:"user",width:this.webcamVideoElement.width,height:this.webcamVideoElement.height}})}catch(e){throw e.message=`Error thrown while initializing video stream: ${e.message}`,e}if(!this.stream)throw new Error("Could not obtain video from webcam.");try{this.webcamVideoElement.srcObject=this.stream}catch(e){console.log(e),this.webcamVideoElement.src=window.URL.createObjectURL(this.stream)}return this.webcamVideoElement.play(),this.isClosed=!1,new Promise(e=>{this.webcamVideoElement.onloadedmetadata=()=>{e()}})}async next(){if(this.isClosed)return{value:null,done:!0};let e;try{e=Ai.fromPixels(this.webcamVideoElement)}catch(t){throw new Error(`Error thrown converting video to pixels: ${JSON.stringify(t)}`)}if(this.resize)try{return{value:this.cropAndResizeFrame(e),done:!1}}catch(t){throw new Error(`Error thrown cropping the video: ${t.message}`)}finally{e.dispose()}else return{value:e,done:!1}}needToResize(){return!!(this.webcamConfig.resizeWidth&&this.webcamConfig.resizeHeight&&(this.webcamVideoElement.width!==this.webcamConfig.resizeWidth||this.webcamVideoElement.height!==this.webcamConfig.resizeHeight))}cropAndResizeFrame(e){return D(()=>{let t=e.toFloat().expandDims(0),n;n=Za.cropAndResize(t,this.cropBox,this.cropBoxInd,this.cropSize,"bilinear");let a=n.shape;return n.reshape(a.slice(1))})}async capture(){return(await this.next()).value}stop(){this.stream.getTracks().forEach(e=>e.stop());try{this.webcamVideoElement.srcObject=null}catch(e){console.log(e),this.webcamVideoElement.src=null}this.isClosed=!0}toArray(){throw new Error("Can not convert infinite video stream to array.")}},rT=class{},sT=class extends Qt{split(e){return new qU(this,e)}},qU=class extends sT{constructor(e,t){super();this.upstream=e,this.impl=new KU(e,t)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},KU=class extends Nv{constructor(e,t){super();this.upstream=e,this.separator=t,this.carryover=""}summary(){return`${this.upstream.summary()} -> Split('${this.separator}')`}async pump(){let e=await this.upstream.next();if(e.done)return this.carryover===""?!1:(this.outputQueue.push(this.carryover),this.carryover="",!0);let t=e.value.split(this.separator);t[0]=this.carryover+t[0];for(let n of t.slice(0,-1))this.outputQueue.push(n);return this.carryover=t[t.length-1],!0}},YU=class extends Qt{decodeUTF8(){return new XU(this)}},XU=class extends sT{constructor(e){super();this.upstream=e,this.impl=new JU(e)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},JU=class extends Nv{constructor(e){super();if(this.upstream=e,ee().get("IS_BROWSER"))this.decoder=new TextDecoder("utf-8");else{let{StringDecoder:t}=rF();this.decoder=new t("utf8")}}summary(){return`${this.upstream.summary()} -> Utf8`}async pump(){let e=await this.upstream.next(),t;if(e.done)return!1;t=e.value;let n;return ee().get("IS_BROWSER")?n=this.decoder.decode(t,{stream:!0}):n=this.decoder.write(Buffer.from(t.buffer)),this.outputQueue.push(n),!0}},iT=class extends YU{constructor(e,t={}){super();this.file=e,this.options=t,k.assert(e instanceof Uint8Array||(ee().get("IS_BROWSER")?e instanceof File||e instanceof Blob:!1),()=>"FileChunkIterator only supports File, Blob and Uint8Array right now."),this.offset=t.offset||0,this.chunkSize=t.chunkSize||1024*1024}summary(){return`FileChunks ${this.file}`}async next(){return this.offset>=(this.file instanceof Uint8Array?this.file.byteLength:this.file.size)?{value:null,done:!0}:{value:await new Promise((e,t)=>{let n=this.offset+this.chunkSize;if(this.file instanceof Uint8Array)e(new Uint8Array(this.file.slice(this.offset,n)));else{let a=new FileReader;a.onload=s=>{let i=a.result;if(i instanceof ArrayBuffer&&(i=new Uint8Array(i)),!(i instanceof Uint8Array))return t(new TypeError("FileReader returned unknown type."));e(i)},a.onabort=s=>t(new Error("Aborted")),a.onerror=s=>t(new Error(s.type));let r=this.file.slice(this.offset,n);a.readAsArrayBuffer(r)}this.offset=n}),done:!1}}};async function QU(e,t={}){let n,a;typeof e=="string"?n=e:(n=e.url,a=ZU(e));let r=await k.fetch(n,a);if(r.ok){let s=new Uint8Array(await r.arrayBuffer());return new iT(s,t)}else throw new Error(r.statusText)}var ZU=e=>({method:e.method,headers:e.headers,body:e.body,mode:e.mode,credentials:e.credentials,cache:e.cache,redirect:e.redirect,referrer:e.referrer,integrity:e.integrity});function oT(e){return typeof e=="string"&&e.substr(0,7)==="file://"}var UN=class extends rT{constructor(e,t={}){super();this.input=e,this.options=t}async iterator(){if(oT(this.input)&&ee().get("IS_NODE")){let e=require("fs");this.input=e.readFileSync(this.input.substr(7))}return new iT(this.input,this.options)}},GN=class extends rT{constructor(e,t={}){super();this.url=e,this.fileOptions=t}async iterator(){return oT(this.url)?new UN(this.url,this.fileOptions).iterator():QU(this.url,this.fileOptions)}};function bU(e,t={}){return new VN(new GN(e),t)}function xU(e){let t=Iv(e);return zn(async()=>t)}function vU(e){return zn(async()=>{let t=await e();return Iv(()=>t.next())})}async function wU(e,t){return aT.create(e,t)}async function kU(e){return nT.create(e)}var HN="2.8.3";function ke(e,t){Array.isArray(e)||(e=[e]),e.forEach(n=>{n!=null&&k.assert(n.dtype!=="complex64",()=>`${t} does not support complex64 tensors in the CPU backend.`)})}var eG=Qa.whereImpl,tG=class extends uc{constructor(){super();this.blockSize=48,this.firstUse=!0,this.data=new Md(this,ns())}write(e,t,n){this.firstUse&&(this.firstUse=!1,ee().get("IS_NODE")&&_.warn(` ============================ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To speed things up dramatically, install our node backend, which binds to TensorFlow C++, by running npm i @tensorflow/tfjs-node, or npm i @tensorflow/tfjs-node-gpu if you have CUDA. Then call require('@tensorflow/tfjs-node'); (-gpu suffix for CUDA) at the start of your program. Visit https://github.com/tensorflow/tfjs-node for more details. -============================`));let dataId={};return this.data.set(dataId,{values,dtype,refCount:1}),dataId}makeTensorInfo(shape,dtype,values){let outId;if(dtype==="string"&&values!=null&&values.length>0&&util_exports.isString(values[0])){let encodedValues=values.map(d=>util_exports.encodeString(d));outId=this.write(encodedValues,shape,dtype)}else outId=this.write(values,shape,dtype);return{dataId:outId,shape,dtype}}incRef(dataId){let tensorData=this.data.get(dataId);tensorData.refCount++}decRef(dataId){if(this.data.has(dataId)){let tensorData=this.data.get(dataId);tensorData.refCount--}}move(dataId,values,shape,dtype){this.data.set(dataId,{values,dtype,refCount:1})}numDataIds(){return this.data.numDataIds()}async read(dataId){return this.readSync(dataId)}readSync(dataId){let{dtype,complexTensorInfos}=this.data.get(dataId);if(dtype==="complex64"){let realValues=this.readSync(complexTensorInfos.real.dataId),imagValues=this.readSync(complexTensorInfos.imag.dataId);return backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}return this.data.get(dataId).values}bufferSync(t){let data=this.readSync(t.dataId),decodedData=data;if(t.dtype==="string")try{decodedData=data.map(d=>util_exports.decodeString(d))}catch(_a){throw new Error("Failed to decode encoded string bytes into utf-8")}return buffer(t.shape,t.dtype,decodedData)}makeOutput(values,shape,dtype){let dataId=this.write(values,shape,dtype);return engine().makeTensorFromDataId(dataId,shape,dtype,this)}disposeData(dataId){if(this.data.has(dataId)){let{complexTensorInfos}=this.data.get(dataId);complexTensorInfos!=null&&(this.disposeData(complexTensorInfos.real.dataId),this.disposeData(complexTensorInfos.imag.dataId)),this.data.delete(dataId)}}disposeIntermediateTensorInfo(tensorInfo){let dataId=tensorInfo.dataId;if(this.data.has(dataId)){let tensorData=this.data.get(dataId);tensorData.refCount--,tensorData.refCount<1&&this.disposeData(dataId)}}async time(f){let start=util_exports.now();return f(),{kernelMs:util_exports.now()-start}}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(condition){assertNotComplex([condition],"where");let condVals=this.readSync(condition.dataId);return whereImpl2(condition.shape,condVals)}dispose(){}floatPrecision(){return 32}epsilon(){return super.epsilon()}},shared_exports={};__export2(shared_exports,{addImpl:()=>addImpl,bincountImpl:()=>bincountImpl,bincountReduceImpl:()=>bincountReduceImpl,ceilImpl:()=>ceilImpl,concatImpl:()=>concatImpl,expImpl:()=>expImpl,expm1Impl:()=>expm1Impl,floorImpl:()=>floorImpl,gatherV2Impl:()=>gatherV2Impl,greaterImpl:()=>greaterImpl,lessImpl:()=>lessImpl,linSpaceImpl:()=>linSpaceImpl,logImpl:()=>logImpl,maxImpl:()=>maxImpl,maximumImpl:()=>maximumImpl,minimumImpl:()=>minimumImpl,multiplyImpl:()=>multiplyImpl,negImpl:()=>negImpl,notEqualImpl:()=>notEqualImpl,prodImpl:()=>prodImpl,rangeImpl:()=>rangeImpl,rsqrtImpl:()=>rsqrtImpl,simpleAbsImpl:()=>simpleAbsImpl,sliceImpl:()=>sliceImpl,squaredDifferenceImpl:()=>squaredDifferenceImpl,stridedSliceImpl:()=>stridedSliceImpl,subImpl:()=>subImpl,tileImpl:()=>tileImpl,topKImpl:()=>topKImpl,transposeImpl:()=>transposeImpl,uniqueImpl:()=>uniqueImpl});function simpleAbsImpl(vals){let resultValues=new Float32Array(vals.length);for(let i=0;i{let{x}=args.inputs,cpuBackend=args.backend;assertNotComplex(x,"abs");let resultValues=new Float32Array(util_exports.sizeFromShape(x.shape)),values=cpuBackend.data.get(x.dataId).values;return resultValues=simpleAbsImpl(values),cpuBackend.makeOutput(resultValues,x.shape,"float32")},absConfig={kernelName:Abs,backendName:"cpu",kernelFunc:abs2};function createSimpleBinaryKernelImpl(op2){return(aShape,bShape,aVals,bVals,dtype)=>{let newShape=backend_util_exports.assertAndGetBroadcastShape(aShape,bShape),resultRank=newShape.length,resultStrides=util_exports.computeStrides(newShape),resultSize=util_exports.sizeFromShape(newShape),result=util_exports.getTypedArrayFromDType(dtype,resultSize),aRank=aShape.length,bRank=bShape.length,aStrides=util_exports.computeStrides(aShape),bStrides=util_exports.computeStrides(bShape),aBroadcastDims=backend_util_exports.getBroadcastDims(aShape,newShape),bBroadcastDims=backend_util_exports.getBroadcastDims(bShape,newShape);if(aBroadcastDims.length+bBroadcastDims.length===0)for(let i=0;iaLoc[d]=0);let aIndex=util_exports.locToIndex(aLoc,aRank,aStrides),bLoc=loc.slice(-bRank);bBroadcastDims.forEach(d=>bLoc[d]=0);let bIndex=util_exports.locToIndex(bLoc,bRank,bStrides);result[i]=op2(aVals[aIndex],bVals[bIndex])}return[result,newShape]}}function complex2(args){let{inputs,backend:backend2}=args,{real:real4,imag:imag4}=inputs,realVals=backend2.data.get(real4.dataId).values,imagVals=backend2.data.get(imag4.dataId).values,complexInfo=backend2.makeTensorInfo(real4.shape,"complex64"),complex4=backend2.data.get(complexInfo.dataId);return complex4.complexTensorInfos={real:backend2.makeTensorInfo(real4.shape,"float32",realVals),imag:backend2.makeTensorInfo(imag4.shape,"float32",imagVals)},complexInfo}var complexConfig={kernelName:Complex,backendName:"cpu",kernelFunc:complex2};function zeros3(backend2,shape,dtype="float32"){if(dtype==="complex64"){let real4=zeros3(backend2,shape,"float32"),imag4=zeros3(backend2,shape,"float32");return complex2({inputs:{real:real4,imag:imag4},backend:backend2})}let values=util_exports.makeZerosTypedArray(util_exports.sizeFromShape(shape),dtype);return backend2.makeTensorInfo(shape,dtype,values)}function identity2(args){let{inputs,backend:backend2}=args,{x}=inputs;return backend2.incRef(x.dataId),{dataId:x.dataId,shape:x.shape,dtype:x.dtype}}var identityConfig={kernelName:Identity,backendName:"cpu",kernelFunc:identity2};function real2(args){let{inputs,backend:backend2}=args,{input:input2}=inputs,real4=backend2.data.get(input2.dataId).complexTensorInfos.real,realVal=backend2.data.get(real4.dataId).values;return backend2.makeTensorInfo(real4.shape,real4.dtype,realVal)}var realConfig={kernelName:Real,backendName:"cpu",kernelFunc:real2};function cast3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{dtype}=attrs;if(dtype==="complex64"){if(x.dtype==="complex64")return identity2({inputs:{x},backend:backend2});let zerosTensorInfo=zeros3(backend2,x.shape,x.dtype),floatX=cast3({inputs:{x},backend:backend2,attrs:{dtype:"float32"}}),result=complex2({inputs:{real:floatX,imag:zerosTensorInfo},backend:backend2});return backend2.disposeIntermediateTensorInfo(zerosTensorInfo),backend2.disposeIntermediateTensorInfo(floatX),result}if(x.dtype==="complex64"){let realPart=real2({inputs:{input:x},backend:backend2}),result=cast3({inputs:{x:realPart},backend:backend2,attrs:{dtype}});return backend2.disposeIntermediateTensorInfo(realPart),result}if(!util_exports.hasEncodingLoss(x.dtype,dtype)){let result=identity2({inputs:{x},backend:backend2});return{dataId:result.dataId,shape:result.shape,dtype}}if(dtype==="int32"){let values=backend2.data.get(x.dataId).values,resultValues=Int32Array.from(values);return backend2.makeTensorInfo(x.shape,"int32",resultValues)}if(dtype==="bool"){let xVals=backend2.data.get(x.dataId).values,zero=util_exports.toTypedArray([0],x.dtype),[resultData,resultShape]=createSimpleBinaryKernelImpl((a,b)=>a!==b?1:0)(x.shape,[],xVals,zero,"bool");return backend2.makeTensorInfo(resultShape,"bool",resultData)}throw new Error(`Error in Cast: failed to cast ${x.dtype} to ${dtype}`)}var castConfig={kernelName:Cast,backendName:"cpu",kernelFunc:cast3};function binaryKernelFunc(name,simpleImpl,complexImpl,dtype){return complexImpl==null?({inputs,backend:backend2})=>{let{a,b}=inputs,cpuBackend=backend2;assertNotComplex([a,b],name);let aVals=cpuBackend.data.get(a.dataId).values,bVals=cpuBackend.data.get(b.dataId).values,$dtype=dtype||a.dtype,[resultData,resultShape]=simpleImpl(a.shape,b.shape,aVals,bVals,$dtype);return cpuBackend.makeTensorInfo(resultShape,$dtype,resultData)}:({inputs,backend:backend2})=>{let{a,b}=inputs,cpuBackend=backend2;if(a.dtype==="complex64"||b.dtype==="complex64"){let $aComplex=cast3({inputs:{x:a},backend:cpuBackend,attrs:{dtype:"complex64"}}),$aComplexVals=cpuBackend.data.get($aComplex.dataId),aReal=$aComplexVals.complexTensorInfos.real,aImag=$aComplexVals.complexTensorInfos.imag,aRealVals=cpuBackend.data.get(aReal.dataId).values,aImagVals=cpuBackend.data.get(aImag.dataId).values,$bComplex=cast3({inputs:{x:b},backend:cpuBackend,attrs:{dtype:"complex64"}}),$bComplexVals=cpuBackend.data.get($bComplex.dataId),bReal=$bComplexVals.complexTensorInfos.real,bImag=$bComplexVals.complexTensorInfos.imag,bRealVals=cpuBackend.data.get(bReal.dataId).values,bImagVals=cpuBackend.data.get(bImag.dataId).values,[resultRealData,resultImagData,resultShape]=complexImpl(a.shape,b.shape,aRealVals,aImagVals,bRealVals,bImagVals),resultReal=cpuBackend.makeTensorInfo(resultShape,"float32",resultRealData),resultImag=cpuBackend.makeTensorInfo(resultShape,"float32",resultImagData),result=complex2({inputs:{real:resultReal,imag:resultImag},backend:cpuBackend});return cpuBackend.disposeIntermediateTensorInfo($aComplex),cpuBackend.disposeIntermediateTensorInfo($bComplex),cpuBackend.disposeIntermediateTensorInfo(resultReal),cpuBackend.disposeIntermediateTensorInfo(resultImag),result}else{let aVals=cpuBackend.data.get(a.dataId).values,bVals=cpuBackend.data.get(b.dataId).values,$dtype=dtype||a.dtype,[resultData,resultShape]=simpleImpl(a.shape,b.shape,aVals,bVals,$dtype);return cpuBackend.makeTensorInfo(resultShape,$dtype,resultData)}}}function createComplexBinaryKernelImpl(op2){return(aShape,bShape,aRealVals,aImagVals,bRealVals,bImagVals)=>{let resultShape=backend_util_exports.assertAndGetBroadcastShape(aShape,bShape),resultSize=util_exports.sizeFromShape(resultShape),resultRank=resultShape.length,resultStrides=util_exports.computeStrides(resultShape),resultRealVals=util_exports.getTypedArrayFromDType("float32",resultSize),resultImagVals=util_exports.getTypedArrayFromDType("float32",resultSize),aBroadcastDims=backend_util_exports.getBroadcastDims(aShape,resultShape),bBroadcastDims=backend_util_exports.getBroadcastDims(bShape,resultShape),aVals=backend_util_exports.mergeRealAndImagArrays(aRealVals,aImagVals),bVals=backend_util_exports.mergeRealAndImagArrays(bRealVals,bImagVals),aRank=aShape.length,aStrides=util_exports.computeStrides(aShape),bRank=bShape.length,bStrides=util_exports.computeStrides(bShape);if(aBroadcastDims.length+bBroadcastDims.length===0)for(let i=0;iaLoc[d]=0);let aIndex=util_exports.locToIndex(aLoc,aRank,aStrides),bLoc=loc.slice(-bRank);bBroadcastDims.forEach(d=>bLoc[d]=0);let bIndex=util_exports.locToIndex(bLoc,bRank,bStrides),opResult=op2(aVals[aIndex*2],aVals[aIndex*2+1],bVals[bIndex*2],bVals[bIndex*2+1]);resultRealVals[i]=opResult.real,resultImagVals[i]=opResult.imag}return[resultRealVals,resultImagVals,resultShape]}}var addImpl=createSimpleBinaryKernelImpl((a,b)=>a+b),addComplexImpl=createComplexBinaryKernelImpl((aReal,aImag,bReal,bImag)=>({real:aReal+bReal,imag:aImag+bImag})),add4=binaryKernelFunc(Add,addImpl,addComplexImpl),addConfig={kernelName:Add,backendName:"cpu",kernelFunc:add4};function bincountImpl(xVals,weightsVals,weightsDtype,weightsShape,size){let weightsSize=util_exports.sizeFromShape(weightsShape),outVals=util_exports.makeZerosTypedArray(size,weightsDtype);for(let i=0;i=size||(weightsSize>0?outVals[value]+=weightsVals[i]:outVals[value]+=1)}return outVals}function bincountReduceImpl(xBuf,weightsBuf,size,binaryOutput=!1){let numRows=xBuf.shape[0],numCols=xBuf.shape[1],outBuf=buffer([numRows,size],weightsBuf.dtype);for(let i=0;i=size||(binaryOutput?outBuf.set(1,i,value):weightsBuf.size>0?outBuf.set(outBuf.get(i,value)+weightsBuf.get(i,j),i,value):outBuf.set(outBuf.get(i,value)+1,i,value))}return outBuf}function createSimpleUnaryImpl(op2){return(values,dtype,attrs)=>{let newValues=util_exports.getTypedArrayFromDType(dtype,values.length);for(let i=0;i{let{x}=inputs;if(assertNotComplex(x,name),x.dtype==="string"||dtype==="string")throw new Error("unaryKernelFunc does not support string input/output");let cpuBackend=backend2,values=cpuBackend.data.get(x.dataId).values,xSize=util_exports.sizeFromShape(x.shape),$dtype=dtype||x.dtype,newValues=util_exports.getArrayFromDType($dtype,xSize);for(let i=0;i{let{x}=inputs;if(assertNotComplex(x,name),x.dtype==="string"||dtype==="string")throw new Error("unaryKernelFunc does not support string input/output");let cpuBackend=backend2,values=cpuBackend.data.get(x.dataId).values,$dtype=dtype||x.dtype,newValues=unaryImpl(values,$dtype,attrs);return cpuBackend.makeTensorInfo(x.shape,$dtype,newValues)}}var ceilImpl=createSimpleUnaryImpl(xi=>Math.ceil(xi)),ceil2=unaryKernelFuncFromImpl(Ceil,ceilImpl),ceilConfig={kernelName:Ceil,backendName:"cpu",kernelFunc:ceil2};function concatImpl(inputs,outShape,dtype,simplyConcat){let outVals=util_exports.getArrayFromDType(dtype,util_exports.sizeFromShape(outShape));if(simplyConcat&&dtype!=="string"){let offset=0;inputs.forEach(input2=>{let size=util_exports.sizeFromShape(input2.shape);outVals.set(input2.vals,offset),offset+=size})}else{let colOffset=0;inputs.forEach(input2=>{let decodedData=dtype==="string"?backend_util_exports.fromUint8ToStringArray(input2.vals):input2.vals,tIdx=0;for(let row=0;rowMath.exp(xi)),exp2=unaryKernelFuncFromImpl(Exp,expImpl),expConfig={kernelName:Exp,backendName:"cpu",kernelFunc:exp2},expm1Impl=createSimpleUnaryImpl(xi=>Math.expm1(xi)),expm12=unaryKernelFuncFromImpl(Expm1,expm1Impl),expm1Config={kernelName:Expm1,backendName:"cpu",kernelFunc:expm12},floorImpl=createSimpleUnaryImpl(xi=>Math.floor(xi)),floor2=unaryKernelFuncFromImpl(Floor,floorImpl),floorConfig={kernelName:Floor,backendName:"cpu",kernelFunc:floor2};function gatherV2Impl(xBuf,indicesBuf,flattenOutputShape){let outBuf=buffer(flattenOutputShape,xBuf.dtype);for(let i=0;ia>b?1:0),greater3=binaryKernelFunc(Greater,greaterImpl,null,"bool"),greaterConfig={kernelName:Greater,backendName:"cpu",kernelFunc:greater3},lessImpl=createSimpleBinaryKernelImpl((a,b)=>aMath.log(xi)),log3=unaryKernelFuncFromImpl(Log,logImpl),logConfig={kernelName:Log,backendName:"cpu",kernelFunc:log3};function maxImpl(aVals,reduceSize,outShape,dtype){let vals=util_exports.getTypedArrayFromDType(dtype,util_exports.sizeFromShape(outShape));for(let i=0;imax6&&(max6=value)}vals[i]=max6}return vals}var maximumImpl=createSimpleBinaryKernelImpl((aValue,bValue)=>Math.max(aValue,bValue)),maximum3=binaryKernelFunc(Maximum,maximumImpl),maximumConfig={kernelName:Maximum,backendName:"cpu",kernelFunc:maximum3},minimumImpl=createSimpleBinaryKernelImpl((aValue,bValue)=>Math.min(aValue,bValue)),minimum3=binaryKernelFunc(Minimum,minimumImpl),minimumConfig={kernelName:Minimum,backendName:"cpu",kernelFunc:minimum3},multiplyImpl=createSimpleBinaryKernelImpl((aValue,bValue)=>aValue*bValue),multiplyComplexImpl=createComplexBinaryKernelImpl((aReal,aImag,bReal,bImag)=>({real:aReal*bReal-aImag*bImag,imag:aReal*bImag+aImag*bReal})),multiply2=binaryKernelFunc(Multiply,multiplyImpl,multiplyComplexImpl),multiplyConfig={kernelName:Multiply,backendName:"cpu",kernelFunc:multiply2};function negImpl(xVals,xShape,xDtype){let minusOne=util_exports.createScalarValue(-1,xDtype);return multiplyImpl([],xShape,minusOne,xVals,xDtype)}function neg2(args){let{inputs,backend:backend2}=args,{x}=inputs;assertNotComplex(x,"neg");let xVals=backend2.data.get(x.dataId).values,[res,newShape]=negImpl(xVals,x.shape,x.dtype);return backend2.makeTensorInfo(newShape,x.dtype,res)}var negConfig={kernelName:Neg,backendName:"cpu",kernelFunc:neg2},notEqualImpl=createSimpleBinaryKernelImpl((a,b)=>a!==b?1:0),notEqual2=binaryKernelFunc(NotEqual,notEqualImpl,null,"bool"),notEqualConfig={kernelName:NotEqual,backendName:"cpu",kernelFunc:notEqual2};function transposeImpl(xVals,xShape,dtype,perm,newShape){let xRank=xShape.length,xSize=util_exports.sizeFromShape(xShape),xStrides=util_exports.computeStrides(xShape),newStrides=util_exports.computeStrides(newShape),result=util_exports.getTypedArrayFromDType(dtype,util_exports.sizeFromShape(newShape));for(let i=0;ibackend2.disposeIntermediateTensorInfo(t)),backend2.makeTensorInfo(resultShape,outDtype,outVals)}var prodConfig={kernelName:Prod,backendName:"cpu",kernelFunc:prod2};function rangeImpl(start,stop,step4,dtype){let sameStartStop=start===stop,increasingRangeNegativeStep=start1;if(sameStartStop||increasingRangeNegativeStep||decreasingRangePositiveStep)return util_exports.makeZerosTypedArray(0,dtype);let numElements=Math.abs(Math.ceil((stop-start)/step4)),values=util_exports.makeZerosTypedArray(numElements,dtype);stop1/Math.sqrt(xi)),rsqrt2=unaryKernelFuncFromImpl(Rsqrt,rsqrtImpl),rsqrtConfig={kernelName:Rsqrt,backendName:"cpu",kernelFunc:rsqrt2};function sliceImpl(vals,begin,size,shape,dtype){let isContinous=slice_util_exports.isSliceContinous(shape,begin,size),length=util_exports.sizeFromShape(size),xStrides=util_exports.computeStrides(shape);if(isContinous){let flatOffset=slice_util_exports.computeFlatOffset(begin,xStrides);return dtype==="string"?vals.slice(flatOffset,flatOffset+length):vals.subarray(flatOffset,flatOffset+length)}let decodedData=dtype==="string"?backend_util_exports.fromUint8ToStringArray(vals):vals,inBuf=buffer(shape,dtype,decodedData),outBuf=buffer(size,dtype);for(let i=0;iidx+begin[j]);outBuf.set(inBuf.get(...inLoc),...outLoc)}return dtype==="string"?backend_util_exports.fromStringArrayToUint8(outBuf.values):outBuf.values}function slice2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{begin,size}=attrs;assertNotComplex(x,"slice");let[$begin,$size]=slice_util_exports.parseSliceParams(x,begin,size);slice_util_exports.assertParamsValid(x,$begin,$size);let vals=backend2.data.get(x.dataId).values,outVals=sliceImpl(vals,$begin,$size,x.shape,x.dtype);return backend2.makeTensorInfo($size,x.dtype,outVals)}var sliceConfig={kernelName:Slice,backendName:"cpu",kernelFunc:slice2},squaredDifferenceImpl=createSimpleBinaryKernelImpl((a,b)=>{let diff=a-b;return diff*diff}),squaredDifference2=binaryKernelFunc(SquaredDifference,squaredDifferenceImpl),squaredDifferenceConfig={kernelName:SquaredDifference,backendName:"cpu",kernelFunc:squaredDifference2};function stridedSliceImpl(outShape,xBuf,strides,begin){let outBuf=buffer(outShape,xBuf.dtype);for(let i=0;iaValue-bValue),subComplexImpl=createComplexBinaryKernelImpl((aReal,aImag,bReal,bImag)=>({real:aReal-bReal,imag:aImag-bImag})),sub2=binaryKernelFunc(Sub,subImpl,subComplexImpl),subConfig={kernelName:Sub,backendName:"cpu",kernelFunc:sub2};function tileImpl(xBuf,reps){let newShape=new Array(xBuf.rank);for(let i=0;ib2.value-a.value);let outOffset=b*k,topKVals=allTopKVals.subarray(outOffset,outOffset+k),topKIndices=allTopKIndices.subarray(outOffset,outOffset+k);for(let i=0;i{for(let m=0;mnew MathBackendCPU,1);var elu4=unaryKernelFunc(Elu,xi=>xi>=0?xi:Math.exp(xi)-1),eluConfig={kernelName:Elu,backendName:"cpu",kernelFunc:elu4};function leakyRelu2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{alpha}=attrs;assertNotComplex([x],"leakyRelu");let xSize=util_exports.sizeFromShape(x.shape),xVals=backend2.data.get(x.dataId).values,outVals=util_exports.getTypedArrayFromDType("float32",xSize);for(let i=0;ixValue<0?aValue*xValue:xValue);function prelu3(args){let{inputs,backend:backend2}=args,{x,alpha}=inputs;assertNotComplex([x,alpha],"prelu");let aVals=backend2.data.get(x.dataId).values,bVals=backend2.data.get(alpha.dataId).values,[resultData,resultShape]=preluImpl(x.shape,alpha.shape,aVals,bVals,x.dtype);return backend2.makeTensorInfo(resultShape,x.dtype,resultData)}var preluConfig={kernelName:Prelu,backendName:"cpu",kernelFunc:prelu3},relu2=unaryKernelFunc(Relu,xi=>Math.max(0,xi)),reluConfig={kernelName:Relu,backendName:"cpu",kernelFunc:relu2},relu62=unaryKernelFunc(Relu6,xi=>Math.min(Math.max(0,xi),6)),relu6Config={kernelName:Relu6,backendName:"cpu",kernelFunc:relu62};function applyActivation2(backend2,x,activation2,preluActivationWeights,leakyreluAlpha){if(activation2==="linear")return identity2({inputs:{x},backend:backend2});if(activation2==="relu")return relu2({inputs:{x},backend:backend2});if(activation2==="elu")return elu4({inputs:{x},backend:backend2});if(activation2==="relu6")return relu62({inputs:{x},backend:backend2});if(activation2==="prelu")return prelu3({inputs:{x,alpha:preluActivationWeights},backend:backend2});if(activation2==="leakyrelu")return leakyRelu2({inputs:{x},backend:backend2,attrs:{alpha:leakyreluAlpha}});throw new Error(`Activation ${activation2} has not been implemented for the CPU backend.`)}function reshape3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{shape}=attrs,xSize=util_exports.sizeFromShape(x.shape),$shape=util_exports.inferFromImplicitShape(shape,xSize),$xSize=util_exports.sizeFromShape($shape);util_exports.assert(xSize===$xSize,()=>`The new shape (${$shape}) has ${$xSize} elements and the old shape (${x.shape}) has ${xSize} elements. The new shape and old shape must have the same number of elements.`),backend2.incRef(x.dataId);let xData=backend2.data.get(x.dataId);if(xData.complexTensorInfos!=null){let real4=xData.complexTensorInfos.real,imag4=xData.complexTensorInfos.imag;real4.shape=$shape,imag4.shape=$shape}return{dataId:x.dataId,shape:$shape,dtype:x.dtype}}var reshapeConfig={kernelName:Reshape,backendName:"cpu",kernelFunc:reshape3};function batchMatMul(args){let{inputs,backend:backend2,attrs}=args,{a,b}=inputs,{transposeA,transposeB}=attrs;assertNotComplex([a,b],"matMul");let aRank=a.shape.length,bRank=b.shape.length,innerShapeA=transposeA?a.shape[aRank-2]:a.shape[aRank-1],innerShapeB=transposeB?b.shape[bRank-1]:b.shape[bRank-2],outerShapeA=transposeA?a.shape[aRank-1]:a.shape[aRank-2],outerShapeB=transposeB?b.shape[bRank-2]:b.shape[bRank-1],outerDimsA=a.shape.slice(0,-2),outerDimsB=b.shape.slice(0,-2),batchDimA=util_exports.sizeFromShape(outerDimsA),batchDimB=util_exports.sizeFromShape(outerDimsB),batchDimsCompatible=batchDimA===batchDimB||batchDimA===1||batchDimB===1;util_exports.assert(aRank>=2&&bRank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`);let outShape=(batchDimA>batchDimB?a.shape.slice(0,-2):b.shape.slice(0,-2)).concat([outerShapeA,outerShapeB]);util_exports.assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${a.shape} and ${b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let a3dShape=transposeA?[batchDimA,innerShapeA,outerShapeA]:[batchDimA,outerShapeA,innerShapeA],b3dShape=transposeB?[batchDimB,outerShapeB,innerShapeB]:[batchDimB,innerShapeB,outerShapeB],a3d=reshape3({inputs:{x:a},backend:backend2,attrs:{shape:a3dShape}}),b3d=reshape3({inputs:{x:b},backend:backend2,attrs:{shape:b3dShape}}),sharedDim=transposeA?a3d.shape[1]:a3d.shape[2],leftDim=transposeA?a3d.shape[2]:a3d.shape[1],rightDim=transposeB?b3d.shape[1]:b3d.shape[2],batchDim=Math.max(batchDimA,batchDimB),a3dValues=backend2.data.get(a3d.dataId).values,b3dValues=backend2.data.get(b3d.dataId).values,a3dStrides=util_exports.computeStrides(a3d.shape),b3dStrides=util_exports.computeStrides(b3d.shape),[aBatch,aOuterStep,aInnerStep]=transposeA?[a3dStrides[0],1,a3dStrides[1]]:[a3dStrides[0],a3dStrides[1],1],[bInnerStep,bOuterStep,bBatch]=transposeB?[1,b3dStrides[1],b3dStrides[0]]:[b3dStrides[1],1,b3dStrides[0]],size=leftDim*rightDim,result=buffer([batchDim,leftDim,rightDim],a3d.dtype),resVals=result.values,blockSize=backend2.blockSize;for(let bi=0;biMath.acos(xi)),acosConfig={kernelName:Acos,backendName:"cpu",kernelFunc:acos2},acosh2=unaryKernelFunc(Acosh,xi=>Math.acosh(xi)),acoshConfig={kernelName:Acosh,backendName:"cpu",kernelFunc:acosh2};function addN2(args){let{inputs,backend:backend2}=args,tensors=inputs;assertNotComplex(inputs,"addN");let vals=tensors.map(t=>backend2.data.get(t.dataId).values),outBuf=buffer(tensors[0].shape,tensors[0].dtype),outVals=outBuf.values;for(let i=0;imax6&&(max6=value,maxIndex=j)}vals[i]=maxIndex}return intermediateTensorInfos.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),backend2.makeTensorInfo(outShape,"int32",vals)}var argMaxConfig={kernelName:ArgMax,backendName:"cpu",kernelFunc:argMax2};function argMin2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{axis}=attrs;assertNotComplex(x,"argMin");let axes=util_exports.parseAxisParam(axis,x.shape),permutedAxes=backend_util_exports.getAxesPermutation(axes,x.shape.length),$x=x,intermediateTensorInfos=[];permutedAxes!=null&&($x=transpose2({inputs:{x},backend:backend2,attrs:{perm:permutedAxes}}),intermediateTensorInfos.push($x),axes=backend_util_exports.getInnerMostAxes(axes.length,$x.shape.length)),axes=[axes[0]],backend_util_exports.assertAxesAreInnerMostDims("argMin",axes,$x.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes($x.shape,axes),outSize=util_exports.sizeFromShape(outShape),vals=util_exports.makeZerosTypedArray(outSize,"int32"),reduceSize=util_exports.sizeFromShape(reduceShape),aVals=backend2.data.get($x.dataId).values;for(let i=0;ibackend2.disposeIntermediateTensorInfo(t)),backend2.makeTensorInfo(outShape,"int32",vals)}var argMinConfig={kernelName:ArgMin,backendName:"cpu",kernelFunc:argMin2},asin2=unaryKernelFunc(Asin,xi=>Math.asin(xi)),asinConfig={kernelName:Asin,backendName:"cpu",kernelFunc:asin2},asinh2=unaryKernelFunc(Asinh,xi=>Math.asinh(xi)),asinhConfig={kernelName:Asinh,backendName:"cpu",kernelFunc:asinh2},atan3=unaryKernelFunc(Atan,xi=>Math.atan(xi)),atanConfig={kernelName:Atan,backendName:"cpu",kernelFunc:atan3},atan2Impl=createSimpleBinaryKernelImpl((aValue,bValue)=>Math.atan2(aValue,bValue)),atan22=binaryKernelFunc(Atan2,atan2Impl),atan2Config={kernelName:Atan2,backendName:"cpu",kernelFunc:atan22},atanh2=unaryKernelFunc(Atanh,xi=>Math.atanh(xi)),atanhConfig={kernelName:Atanh,backendName:"cpu",kernelFunc:atanh2};function pool2(xValues,xShape,dtype,strides,convInfo,poolType){let strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,initialValue=poolType==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,output=buffer(convInfo.outShape,dtype),outputVals=output.values,outputBatchStrides=convInfo.outShape[1]*convInfo.outShape[2]*convInfo.outShape[3],outputRowStrides=convInfo.outShape[2]*convInfo.outShape[3],outputColStrides=convInfo.outShape[3];for(let b=0;bminMaxValue?minMaxValue=pixel:poolType==="avg"&&(avgValue+=pixel,count2++)}if(isNaN(minMaxValue))break}let outputOffset=outputRowOffset+yC*outputColStrides+d;outputVals[outputOffset]=poolType==="avg"?avgValue/count2:minMaxValue}}}return output}function maxPoolPositions(xValues,xShape,dtype,convInfo,flattenPositions=!1,includeBatchInIndex=!1){let maxPositions=buffer(convInfo.outShape,"int32"),strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,xBuf=buffer(xShape,dtype,xValues);for(let b=0;bmaxValue&&(maxValue=pixel,flattenPositions?maxPosition=includeBatchInIndex?((b*convInfo.inHeight+xR)*convInfo.inWidth+xC)*convInfo.inChannels+d:(xR*convInfo.inWidth+xC)*convInfo.inChannels+d:maxPosition=wR*effectiveFilterWidth+wC)}}maxPositions.set(maxPosition,b,yR,yC,d)}}return maxPositions}function pool3d2(xValues,xShape,dtype,strides,convInfo,poolType){let strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=convInfo.padInfo.front,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,initialValue=poolType==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,output=buffer(convInfo.outShape,dtype),outputVals=output.values,outputBatchStrides=convInfo.outShape[1]*convInfo.outShape[2]*convInfo.outShape[3]*convInfo.outShape[4],outputDepthStrides=convInfo.outShape[2]*convInfo.outShape[3]*convInfo.outShape[4],outputRowStrides=convInfo.outShape[3]*convInfo.outShape[4],outputColStrides=convInfo.outShape[4];for(let batch=0;batchminMaxValue?minMaxValue=pixel:poolType==="avg"&&(avgValue+=pixel,count2++),isNaN(minMaxValue))break}if(isNaN(minMaxValue))break}if(isNaN(minMaxValue))break}let outputOffset=outputColOffset+channel;outputVals[outputOffset]=poolType==="avg"?avgValue/count2:minMaxValue}}}}return output}function maxPool3dPositions(xBuf,convInfo){let maxPositions=buffer(convInfo.outShape,"int32"),strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=convInfo.padInfo.front,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left;for(let batch=0;batch=maxValue&&(maxValue=pixel,maxPosition=wDepth*effectiveFilterHeight*effectiveFilterWidth+wRow*effectiveFilterHeight+wCol)}}}maxPositions.set(maxPosition,batch,yDepth,yRow,yCol,channel)}}}return maxPositions}function avgPool2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs;assertNotComplex(x,"avgPool");let{filterSize,strides,pad:pad3,dimRoundingMode}=attrs,dilations=1;util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad3,dimRoundingMode),res;if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))res=identity2({inputs:{x},backend:backend2});else{let xValues=backend2.data.get(x.dataId).values,strides2=util_exports.computeStrides(x.shape),buffer2=pool2(xValues,x.shape,x.dtype,strides2,convInfo,"avg");res=backend2.makeTensorInfo(convInfo.outShape,x.dtype,buffer2.values)}return res}var avgPoolConfig={kernelName:AvgPool,backendName:"cpu",kernelFunc:avgPool2};function avgPool3D(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{filterSize,strides,pad:pad3,dimRoundingMode,dataFormat,dilations}=attrs;assertNotComplex(x,"avgPool3d");let $dilations=dilations;$dilations==null&&($dilations=[1,1,1]);let convInfo=backend_util_exports.computePool3DInfo(x.shape,filterSize,strides,$dilations,pad3,dimRoundingMode,dataFormat),xValues=backend2.data.get(x.dataId).values,outBuf=pool3d2(xValues,x.shape,x.dtype,util_exports.computeStrides(x.shape),convInfo,"avg");return backend2.makeTensorInfo(outBuf.shape,"float32",outBuf.values)}var avgPool3DConfig={kernelName:AvgPool3D,backendName:"cpu",kernelFunc:avgPool3D};function avgPool3DGrad(args){let{inputs,backend:backend2,attrs}=args,{dy,input:input2}=inputs,{filterSize,strides,pad:pad3,dilations,dimRoundingMode}=attrs;assertNotComplex([dy,input2],"avgPool3DGrad");let convInfo=backend_util_exports.computePool3DInfo(input2.shape,filterSize,strides,dilations,pad3,dimRoundingMode),strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,filterDepth=convInfo.filterDepth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=effectiveFilterDepth-1-convInfo.padInfo.front,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(input2.shape,"float32"),avgMultiplier=1/(filterDepth*filterHeight*filterWidth),dyBuf=backend2.bufferSync(dy);for(let batch=0;batch=convInfo.outDepth||Math.floor(dyDepth)!==dyDepth))for(let wRow=0;wRow=convInfo.outHeight||Math.floor(dyRow)!==dyRow))for(let wCol=0;wCol=convInfo.outWidth||Math.floor(dyCol)!==dyCol||(dotProd+=dyBuf.get(batch,dyDepth,dyRow,dyCol,channel))}}}dx.set(dotProd*avgMultiplier,batch,dxDepth,dxRow,dxCol,channel)}return backend2.makeTensorInfo(dx.shape,dx.dtype,dx.values)}var avgPool3DGradConfig2={kernelName:AvgPool3DGrad,backendName:"cpu",kernelFunc:avgPool3DGrad};function avgPoolGrad2(args){let{inputs,backend:backend2,attrs}=args,{dy,input:input2}=inputs,x=input2;assertNotComplex([dy,input2],"avgPoolGrad");let{filterSize,strides,pad:pad3}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad3),strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),avgMultiplier=1/(filterHeight*filterWidth),dyData=backend2.data.get(dy.dataId).values,dyBuf=buffer(dy.shape,"float32",dyData);for(let b=0;b=convInfo.outHeight||Math.floor(dyR)!==dyR))for(let wC=0;wC=convInfo.outWidth||Math.floor(dyC)!==dyC||(dotProd+=dyBuf.get(b,dyR,dyC,d))}}dx.set(dotProd*avgMultiplier,b,dxR,dxC,d)}return backend2.makeTensorInfo(dx.shape,dx.dtype,dx.values)}var avgPoolGradConfig2={kernelName:AvgPoolGrad,backendName:"cpu",kernelFunc:avgPoolGrad2};function batchNorm2(args){let{inputs,backend:backend2,attrs}=args,{x,scale:scale22,offset,mean:mean4,variance}=inputs;util_exports.assert(mean4.shape.length===variance.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),util_exports.assert(offset==null||mean4.shape.length===offset.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),util_exports.assert(scale22==null||mean4.shape.length===scale22.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks."),assertNotComplex([x,mean4,variance,scale22,offset],"batchNorm");let{varianceEpsilon}=attrs;varianceEpsilon==null&&(varianceEpsilon=.001);let xVals=backend2.data.get(x.dataId).values,mVals=backend2.data.get(mean4.dataId).values,varVals=backend2.data.get(variance.dataId).values,sVals=scale22?backend2.data.get(scale22.dataId).values:new Float32Array([1]),offVals=offset?backend2.data.get(offset.dataId).values:new Float32Array([0]),outVals=new Float32Array(xVals.length),offValsLength=offVals.length,sValsLength=sVals.length,varValsLength=varVals.length,mValsLength=mVals.length,offi=0,mi=0,si=0,vi=0;for(let i=0;i=offValsLength&&(offi=0),mi>=mValsLength&&(mi=0),si>=sValsLength&&(si=0),vi>=varValsLength&&(vi=0);return backend2.makeTensorInfo(x.shape,x.dtype,outVals)}var batchNormConfig={kernelName:FusedBatchNorm,backendName:"cpu",kernelFunc:batchNorm2};function batchToSpaceND2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{blockShape,crops}=attrs;assertNotComplex([x],"batchToSpaceND");let prod5=blockShape.reduce((a,b)=>a*b),reshaped=backend_util_exports.getReshaped(x.shape,blockShape,prod5),permuted=backend_util_exports.getPermuted(reshaped.length,blockShape.length),reshapedPermuted=backend_util_exports.getReshapedPermuted(x.shape,blockShape,prod5),sliceBeginCoords=backend_util_exports.getSliceBeginCoords(crops,blockShape.length),sliceSize=backend_util_exports.getSliceSize(reshapedPermuted,crops,blockShape.length),xReshaped=reshape3({inputs:{x},backend:backend2,attrs:{shape:reshaped}}),xTransposed=transpose2({inputs:{x:xReshaped},backend:backend2,attrs:{perm:permuted}}),xTransposedReshaped=reshape3({inputs:{x:xTransposed},backend:backend2,attrs:{shape:reshapedPermuted}}),result=slice2({inputs:{x:xTransposedReshaped},backend:backend2,attrs:{begin:sliceBeginCoords,size:sliceSize}});return backend2.disposeIntermediateTensorInfo(xReshaped),backend2.disposeIntermediateTensorInfo(xTransposed),backend2.disposeIntermediateTensorInfo(xTransposedReshaped),result}var batchToSpaceNDConfig={kernelName:BatchToSpaceND,backendName:"cpu",kernelFunc:batchToSpaceND2};function bincount2(args){let{inputs,backend:backend2,attrs}=args,{x,weights}=inputs,{size}=attrs,xVals=backend2.data.get(x.dataId).values,weightsVals=backend2.data.get(weights.dataId).values,outVals=bincountImpl(xVals,weightsVals,weights.dtype,weights.shape,size);return backend2.makeTensorInfo([size],weights.dtype,outVals)}var bincountConfig={kernelName:Bincount,backendName:"cpu",kernelFunc:bincount2},clip=unaryKernelFunc(ClipByValue,(xi,attrs)=>{let clipAttrs=attrs;return xi>clipAttrs.clipValueMax?clipAttrs.clipValueMax:xi{let{x}=args.inputs,cpuBackend=args.backend,resultValues=new Float32Array(util_exports.sizeFromShape(x.shape)),complexVals=cpuBackend.data.get(x.dataId),real4=complexVals.complexTensorInfos.real,imag4=complexVals.complexTensorInfos.imag,realVals=cpuBackend.data.get(real4.dataId).values,imagVals=cpuBackend.data.get(imag4.dataId).values;for(let i=0;it.shape),$axis);if(util_exports.sizeFromShape(outShape)===0)return backend2.makeTensorInfo(outShape,inputs[0].dtype,[]);let $inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return identity2({inputs:{x:$inputs[0]},backend:backend2});let shapes=$inputs.map(t=>t.shape);if(backend_util_exports.assertParamsConsistent(shapes,$axis),$inputs[0].dtype==="complex64"){let reals=$inputs.map(t=>real2({inputs:{input:t},backend:backend2})),imags=$inputs.map(t=>imag2({inputs:{input:t},backend:backend2})),realConcated=concat2({inputs:reals,backend:backend2,attrs:{axis:$axis}}),imagConcated=concat2({inputs:imags,backend:backend2,attrs:{axis:$axis}}),result=complex2({inputs:{real:realConcated,imag:imagConcated},backend:backend2});return reals.forEach(r=>backend2.disposeIntermediateTensorInfo(r)),imags.forEach(i=>backend2.disposeIntermediateTensorInfo(i)),backend2.disposeIntermediateTensorInfo(realConcated),backend2.disposeIntermediateTensorInfo(imagConcated),result}let inputs2D=$inputs.map(t=>{let innerSize=util_exports.sizeFromShape(t.shape.slice($axis));return reshape3({inputs:{x:t},backend:backend2,attrs:{shape:[-1,innerSize]}})}),inputsValShapes=inputs2D.map(t=>({vals:backend2.data.get(t.dataId).values,shape:t.shape}));outShape=backend_util_exports.computeOutShape(inputs2D.map(t=>t.shape),1);let simplyConcat=inputs2D[0].shape[0]===1,outVals=concatImpl(inputsValShapes,outShape,inputs[0].dtype,simplyConcat),finalOutShape=backend_util_exports.computeOutShape($inputs.map(t=>t.shape),$axis),outInfo=backend2.makeTensorInfo(finalOutShape,inputs[0].dtype,outVals);return inputs2D.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),outInfo}var concatConfig={kernelName:Concat,backendName:"cpu",kernelFunc:concat2};function conv2D(args){let{inputs,backend:backend2,attrs}=args,{x,filter}=inputs,{strides,pad:pad3,dataFormat,dilations,dimRoundingMode}=attrs;assertNotComplex([x,filter],"conv2d");let $dataFormat=backend_util_exports.convertConv2DDataFormat(dataFormat),convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad3,dimRoundingMode,!1,$dataFormat),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,padLeft=convInfo.padInfo.left,padTop=convInfo.padInfo.top,isChannelsLast=convInfo.dataFormat==="channelsLast",y=new TensorBuffer(convInfo.outShape,x.dtype),xStrides=util_exports.computeStrides(x.shape),filterStrides=util_exports.computeStrides(filter.shape),xBatchStride=xStrides[0],xRowStride=isChannelsLast?xStrides[1]:xStrides[2],xColStride=isChannelsLast?xStrides[2]:1,xChannelStride=isChannelsLast?1:xStrides[1],yBatchStride=y.strides[0],yRowStride=isChannelsLast?y.strides[1]:y.strides[2],yColStride=isChannelsLast?y.strides[2]:1,yChannelStride=isChannelsLast?1:y.strides[1],xVals=backend2.data.get(x.dataId).values,wVals=backend2.data.get(filter.dataId).values,yVals=y.values;for(let b=0;b=convInfo.inHeight)continue;let wOffset1=wR*filterStrides[0],xOffset2=xOffset1+xR*xRowStride;for(let yC=0;yC=convInfo.inWidth)continue;let wOffset2=wOffset1+wC*filterStrides[1],xOffset3=xOffset2+xC*xColStride,wOffset3=wOffset2;for(let d1=0;d1=convInfo.inDepth)continue;let wOffset1=wF*filterStrides[0],xOffset2=xOffset1+xF*xStrides[1];for(let yR=0;yR=convInfo.inHeight)continue;let wOffset2=wOffset1+wR*filterStrides[1],xOffset3=xOffset2+xR*xStrides[2];for(let yC=0;yC=convInfo.inWidth)continue;let wOffset3=wOffset2+wC*filterStrides[2],xOffset4=xOffset3+xC*convInfo.inChannels,wOffset4=wOffset3;for(let d1=0;d1Math.cos(xi)),cosConfig={kernelName:Cos,backendName:"cpu",kernelFunc:cos2},cosh2=unaryKernelFunc(Cosh,xi=>Math.cosh(xi)),coshConfig={kernelName:Cosh,backendName:"cpu",kernelFunc:cosh2};function cropAndResize2(args){let{inputs,backend:backend2,attrs}=args,{image:image3,boxes,boxInd}=inputs,{cropSize,method,extrapolationValue}=attrs,[batch,imageHeight,imageWidth,numChannels]=image3.shape,numBoxes=boxes.shape[0],[cropHeight,cropWidth]=cropSize,output=buffer([numBoxes,cropHeight,cropWidth,numChannels],"float32"),boxVals=backend2.data.get(boxes.dataId).values,boxIndVals=backend2.data.get(boxInd.dataId).values,imageVals=backend2.data.get(image3.dataId).values,inStride=util_exports.computeStrides(image3.shape),outStride=util_exports.computeStrides(output.shape);for(let b=0;b=batch)continue;let heightScale=cropHeight>1?(y2-y1)*(imageHeight-1)/(cropHeight-1):0,widthScale=cropWidth>1?(x2-x1)*(imageWidth-1)/(cropWidth-1):0;for(let y=0;y1?y1*(imageHeight-1)+y*heightScale:.5*(y1+y2)*(imageHeight-1);if(yInd<0||yInd>imageHeight-1){for(let x=0;x1?x1*(imageWidth-1)+x*widthScale:.5*(x1+x2)*(imageWidth-1);if(xInd<0||xInd>imageWidth-1){for(let c=0;c1?x1*(imageWidth-1)+x*widthScale:.5*(x1+x2)*(imageWidth-1);if(xInd<0||xInd>imageWidth-1){for(let c=0;ci+finalDim-j-1:(i,j)=>i+j;for(let i=0;i`Only NHWC dataFormat supported on CPU for depthToSpace. Got ${dataFormat}`),util_exports.assert(blockSize>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=x.shape[1],inputWidth=x.shape[2],inputDepth=x.shape[3],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),xValues=backend2.data.get(x.dataId).values,result=new Float32Array(batchSize*outputHeight*outputWidth*outputDepth),outputIdx=0;for(let b=0;b`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${$dilations}'`);let convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,$dilations,pad3,dimRoundingMode,!0),{filterHeight,filterWidth,dilationHeight,dilationWidth,padInfo}=convInfo,padLeft=padInfo.left,padTop=padInfo.top,chMul=convInfo.outChannels/convInfo.inChannels,y=new TensorBuffer(convInfo.outShape,x.dtype),xVals=backend2.data.get(x.dataId).values,wVals=backend2.data.get(filter.dataId).values,yVals=y.values;for(let b=0;b=convInfo.inHeight)continue;let wOffset1=wR*filterStrides[0],xOffset2=xOffset1+xR*xStrides[1];for(let yC=0;yC=convInfo.inWidth)continue;let wOffset2=wOffset1+wC*filterStrides[1],xOffset3=xOffset2+xC*convInfo.inChannels,yOffset4=yOffset3,wOffset3=wOffset2;for(let d1=0;d1{let{x,filter}=inputs,{strides,pad:pad3,dilations}=attrs,cpuBackend=backend2,xVals=cpuBackend.data.get(x.dataId).values,xRank=x.shape.length,filterVals=cpuBackend.data.get(filter.dataId).values,filterRank=filter.shape.length,{batchSize,inHeight,inWidth,inChannels,outHeight,outWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth,outShape}=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad3,"NHWC",dilations),outSize=util_exports.sizeFromShape(outShape),outRank=outShape.length,outputVals=util_exports.getArrayFromDType(x.dtype,outSize);for(let b=0;b=0&&hIn=0&&wIncurVal&&(curVal=val)}}}let outputIndex=util_exports.locToIndex([b,hOut,wOut,d],outRank,util_exports.computeStrides(outShape));outputVals[outputIndex]=curVal}}}return{dataId:cpuBackend.write(util_exports.toTypedArray(outputVals,x.dtype),outShape,x.dtype),shape:outShape,dtype:x.dtype}}},dilation2dBackpropFilterConfig={kernelName:Dilation2DBackpropFilter,backendName:"cpu",kernelFunc:({inputs,backend:backend2,attrs})=>{let{x,filter,dy}=inputs,{strides,pad:pad3,dilations}=attrs,cpuBackend=backend2,$x=util_exports.toNestedArray(x.shape,cpuBackend.data.get(x.dataId).values),$filter=util_exports.toNestedArray(filter.shape,cpuBackend.data.get(filter.dataId).values),{batchSize,inHeight,inWidth,inChannels,outHeight,outWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth,outShape}=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad3,"NHWC",dilations);util_exports.assert(dy.rank===outShape.length,()=>`Error in ${Dilation2DBackpropFilter}, dy must have the same rank as output ${outShape.length}, but got ${dy.rank}`);let $dy=util_exports.toNestedArray(outShape,cpuBackend.data.get(dy.dataId).values),gradients=util_exports.makeZerosNestedTypedArray(filter.shape,filter.dtype);for(let b=0;b=0&&hIn=0&&wIncurVal&&(curVal=val,hMax=h,wMax=w)}}}gradients[hMax][wMax][d]+=$dy[b][hOut][wOut][d]}}}return{dataId:cpuBackend.write(util_exports.toTypedArray(gradients,x.dtype),filter.shape,filter.dtype),shape:filter.shape,dtype:filter.dtype}}},dilation2dBackpropInputConfig={kernelName:Dilation2DBackpropInput,backendName:"cpu",kernelFunc:({inputs,backend:backend2,attrs})=>{let{x,filter,dy}=inputs,{strides,pad:pad3,dilations}=attrs,cpuBackend=backend2,$x=util_exports.toNestedArray(x.shape,cpuBackend.data.get(x.dataId).values),$filter=util_exports.toNestedArray(filter.shape,cpuBackend.data.get(filter.dataId).values),{batchSize,inHeight,inWidth,inChannels,outHeight,outWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth,outShape}=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad3,"NHWC",dilations);util_exports.assert(dy.rank===outShape.length,()=>`Error in ${Dilation2DBackpropInput}, dy must have the same rank as output ${outShape.length}, but got ${dy.rank}`);let $dy=util_exports.toNestedArray(outShape,cpuBackend.data.get(dy.dataId).values),gradients=util_exports.makeZerosNestedTypedArray(x.shape,x.dtype);for(let b=0;b=0&&hIn=0&&wIncurVal&&(curVal=val,hInMax=hIn,wInMax=wIn)}}}gradients[b][hInMax][wInMax][d]+=$dy[b][hOut][wOut][d]}}}return{dataId:cpuBackend.write(util_exports.toTypedArray(gradients,x.dtype),x.shape,x.dtype),shape:x.shape,dtype:x.dtype}}};function eluGrad(args){let{inputs,backend:backend2}=args,{dy,y}=inputs;assertNotComplex([dy,y],"eluGrad");let resultValues=new Float32Array(util_exports.sizeFromShape(y.shape)),values=backend2.data.get(y.dataId).values,dyValues=backend2.data.get(dy.dataId).values;for(let i=0;i=1?resultValues[i]=dyValues[i]:resultValues[i]=dyValues[i]*(v+1)}return backend2.makeTensorInfo(y.shape,"float32",resultValues)}var eluGradConfig2={kernelName:EluGrad,backendName:"cpu",kernelFunc:eluGrad},equalImpl=createSimpleBinaryKernelImpl((a,b)=>a===b?1:0),equal2=binaryKernelFunc(Equal,equalImpl,null,"bool"),equalConfig={kernelName:Equal,backendName:"cpu",kernelFunc:equal2},p=backend_util_exports.ERF_P,a1=backend_util_exports.ERF_A1,a2=backend_util_exports.ERF_A2,a3=backend_util_exports.ERF_A3,a4=backend_util_exports.ERF_A4,a5=backend_util_exports.ERF_A5,erf2=unaryKernelFunc(Erf,xi=>{let sign4=Math.sign(xi),v=Math.abs(xi),t=1/(1+p*v);return sign4*(1-((((a5*t+a4)*t+a3)*t+a2)*t+a1)*t*Math.exp(-v*v))}),erfConfig={kernelName:Erf,backendName:"cpu",kernelFunc:erf2};function expandDims3(args){let{inputs,backend:backend2,attrs}=args,{input:input2}=inputs,{dim}=attrs,inputRank=input2.shape.length,newShape=input2.shape.slice(),$dim=dim;return dim<0&&(util_exports.assert(-(inputRank+1)<=dim,()=>`Axis must be in the interval [${-(inputRank+1)}, ${inputRank}]`),$dim=inputRank+dim+1),newShape.splice($dim,0,1),reshape3({inputs:{x:input2},backend:backend2,attrs:{shape:newShape}})}var expandDimsConfig={kernelName:ExpandDims,backendName:"cpu",kernelFunc:expandDims3},realDivImpl=createSimpleBinaryKernelImpl((a,b)=>a/b),div2=binaryKernelFunc(RealDiv,realDivImpl),realDivConfig={kernelName:RealDiv,backendName:"cpu",kernelFunc:div2};function fftBatch(input2,inverse,cpuBackend){let inputShape=input2.shape,batch=inputShape[0],innerDim=inputShape[1],inputVals=cpuBackend.data.get(input2.dataId),real2D=inputVals.complexTensorInfos.real,imag2D=inputVals.complexTensorInfos.imag,resultShape=[batch,innerDim],resultSize=util_exports.sizeFromShape(resultShape),resultReal=util_exports.getTypedArrayFromDType("float32",resultSize),resultImag=util_exports.getTypedArrayFromDType("float32",resultSize);for(let b=0;b{let{image:image3}=inputs,cpuBackend=backend2,output=util_exports.getTypedArrayFromDType(image3.dtype,util_exports.sizeFromShape(image3.shape)),[batch,imageHeight,imageWidth,numChannels]=image3.shape,imageVals=cpuBackend.data.get(image3.dataId).values;for(let batchIdx=0;batchIdx=0&&coordXMath.floor(a/b)),floorDiv2=binaryKernelFunc(FloorDiv,floorDivImpl,null,"int32"),floorDivConfig={kernelName:FloorDiv,backendName:"cpu",kernelFunc:floorDiv2};function fusedConv2D(args){let{inputs,backend:backend2,attrs}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad3,dataFormat,dilations,dimRoundingMode,activation:activation2,leakyreluAlpha}=attrs,result=conv2D({inputs:{x,filter},backend:backend2,attrs:{strides,pad:pad3,dataFormat,dilations,dimRoundingMode}});if(bias){let resultOld=result;result=add4({inputs:{a:result,b:bias},backend:backend2}),backend2.disposeIntermediateTensorInfo(resultOld)}if(activation2){let resultOld=result;result=applyActivation2(backend2,result,activation2,preluActivationWeights,leakyreluAlpha),backend2.disposeIntermediateTensorInfo(resultOld)}return result}var fusedConv2DConfig={kernelName:FusedConv2D,backendName:"cpu",kernelFunc:fusedConv2D};function fusedDepthwiseConv2D(args){let{inputs,backend:backend2,attrs}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad3,dataFormat,dilations,dimRoundingMode,activation:activation2,leakyreluAlpha}=attrs,result=depthwiseConv2dNative({inputs:{x,filter},backend:backend2,attrs:{strides,pad:pad3,dataFormat,dilations,dimRoundingMode}});if(bias){let oldResult=result;result=add4({inputs:{a:result,b:bias},backend:backend2}),backend2.disposeIntermediateTensorInfo(oldResult)}if(activation2){let oldResult=result;result=applyActivation2(backend2,result,activation2,preluActivationWeights,leakyreluAlpha),backend2.disposeIntermediateTensorInfo(oldResult)}return result}var fusedDepthwiseConv2DConfig={kernelName:FusedDepthwiseConv2D,backendName:"cpu",kernelFunc:fusedDepthwiseConv2D};function gatherNd(args){let{inputs,backend:backend2}=args,{params,indices}=inputs,paramsSize=util_exports.sizeFromShape(params.shape),indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],[resultShape,numSlices,sliceSize,strides]=backend_util_exports.prepareAndValidate(params,indices);if(numSlices===0)return backend2.makeTensorInfo(resultShape,params.dtype,[]);let outBuf=buffer([numSlices,sliceSize],params.dtype),indicesData=backend2.data.get(indices.dataId).values,paramsData=backend2.data.get(params.dataId).values;for(let i=0;i=paramsSize/sliceSize)throw new Error(`Invalid indices: ${index} does not index into ${params.shape}`);for(let k=0;ka>=b?1:0),greaterEqual2=binaryKernelFunc(GreaterEqual,greaterEqualImpl,null,"bool"),greaterEqualConfig={kernelName:GreaterEqual,backendName:"cpu",kernelFunc:greaterEqual2};function ifft2(args){let{inputs,backend:backend2}=args,{input:input2}=inputs,inputSize=util_exports.sizeFromShape(input2.shape),innerDimensionSize=input2.shape[input2.shape.length-1],batch=inputSize/innerDimensionSize,input2D=reshape3({inputs:{x:input2},backend:backend2,attrs:{shape:[batch,innerDimensionSize]}}),result=fftBatch(input2D,!0,backend2),resultReshaped=reshape3({inputs:{x:result},backend:backend2,attrs:{shape:input2.shape}});return backend2.disposeIntermediateTensorInfo(input2D),backend2.disposeIntermediateTensorInfo(result),resultReshaped}var ifftConfig={kernelName:IFFT,backendName:"cpu",kernelFunc:ifft2},isFinite3=unaryKernelFunc(IsFinite,xi=>Number.isFinite(xi)?1:0,"bool"),isFiniteConfig={kernelName:IsFinite,backendName:"cpu",kernelFunc:isFinite3},isInf2=unaryKernelFunc(IsInf,xi=>Math.abs(xi)===Infinity?1:0,"bool"),isInfConfig={kernelName:IsInf,backendName:"cpu",kernelFunc:isInf2},isNaN3=unaryKernelFunc(IsNan,xi=>Number.isNaN(xi)?1:0,"bool"),isNaNConfig={kernelName:IsNan,backendName:"cpu",kernelFunc:isNaN3},lessEqualImpl=createSimpleBinaryKernelImpl((a,b)=>a<=b?1:0),lessEqual2=binaryKernelFunc(LessEqual,lessEqualImpl,null,"bool"),lessEqualConfig={kernelName:LessEqual,backendName:"cpu",kernelFunc:lessEqual2};function linSpace(args){let{backend:backend2,attrs}=args,{start,stop,num}=attrs,outVals=linSpaceImpl(start,stop,num);return backend2.makeTensorInfo([outVals.length],"float32",outVals)}var linSpaceConfig={kernelName:LinSpace,backendName:"cpu",kernelFunc:linSpace},log1p2=unaryKernelFunc(Log1p,xi=>Math.log1p(xi)),log1pConfig={kernelName:Log1p,backendName:"cpu",kernelFunc:log1p2},logicalAndImpl=createSimpleBinaryKernelImpl((a,b)=>a&&b),logicalAnd2=binaryKernelFunc(LogicalAnd,logicalAndImpl,null,"bool"),logicalAndConfig={kernelName:LogicalAnd,backendName:"cpu",kernelFunc:logicalAnd2},logicalNot2=unaryKernelFunc(LogicalNot,xi=>xi?0:1,"bool"),logicalNotConfig={kernelName:LogicalNot,backendName:"cpu",kernelFunc:logicalNot2},logicalOrImpl=createSimpleBinaryKernelImpl((a,b)=>a||b),logicalOr2=binaryKernelFunc(LogicalOr,logicalOrImpl,null,"bool"),logicalOrConfig={kernelName:LogicalOr,backendName:"cpu",kernelFunc:logicalOr2};function lRN(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{depthRadius,bias,alpha,beta}=attrs;assertNotComplex(x,"LRN");let channels=x.shape[3],maxD=channels-1,xValues=backend2.data.get(x.dataId).values,size=util_exports.sizeFromShape(x.shape),result=new Float32Array(size);function sumAcrossChannels(offset){let currentChannel=offset%channels,beginSumOffset=offset-currentChannel+Math.max(0,currentChannel-depthRadius),endSumOffset=offset-currentChannel+Math.min(currentChannel+depthRadius,maxD),sum6=0;for(;beginSumOffset<=endSumOffset;beginSumOffset++){let z=xValues[beginSumOffset];sum6+=z*z}return sum6}for(let offset=0;offset`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad3,dimRoundingMode),res;if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))res=identity2({inputs:{x},backend:backend2});else{let xValues=backend2.data.get(x.dataId).values,strides2=util_exports.computeStrides(x.shape),buffer2=pool2(xValues,x.shape,x.dtype,strides2,convInfo,"max");res=backend2.makeTensorInfo(convInfo.outShape,x.dtype,buffer2.values)}return res}var maxPoolConfig={kernelName:MaxPool,backendName:"cpu",kernelFunc:maxPool2};function maxPool3D(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{filterSize,strides,pad:pad3,dimRoundingMode,dataFormat,dilations}=attrs;assertNotComplex(x,"maxPool3d");let $dilations=dilations;$dilations==null&&($dilations=[1,1,1]);let convInfo=backend_util_exports.computePool3DInfo(x.shape,filterSize,strides,$dilations,pad3,dimRoundingMode,dataFormat),xValues=backend2.data.get(x.dataId).values,outBuf=pool3d2(xValues,x.shape,x.dtype,util_exports.computeStrides(x.shape),convInfo,"max");return backend2.makeTensorInfo(outBuf.shape,"float32",outBuf.values)}var maxPool3DConfig={kernelName:MaxPool3D,backendName:"cpu",kernelFunc:maxPool3D};function maxPool3DGrad(args){let{inputs,backend:backend2,attrs}=args,{dy,input:input2}=inputs,{filterSize,strides,pad:pad3,dilations,dimRoundingMode}=attrs;assertNotComplex([dy,input2],"maxPool3DGrad");let convInfo=backend_util_exports.computePool3DInfo(input2.shape,filterSize,strides,dilations,pad3,dimRoundingMode),inputBuf=backend2.bufferSync(input2),maxPosBuf=maxPool3dPositions(inputBuf,convInfo),strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=effectiveFilterDepth-1-convInfo.padInfo.front,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(input2.shape,"float32"),dyBuf=backend2.bufferSync(dy);for(let batch=0;batch=convInfo.outDepth||Math.floor(dyDepth)!==dyDepth))for(let wRow=0;wRow=convInfo.outHeight||Math.floor(dyRow)!==dyRow))for(let wCol=0;wCol=convInfo.outWidth||Math.floor(dyCol)!==dyCol)continue;let maxPos=effectiveFilterDepth*effectiveFilterHeight*effectiveFilterWidth-1-maxPosBuf.get(batch,dyDepth,dyRow,dyCol,channel),curPos=wDepth*effectiveFilterHeight*effectiveFilterWidth+wRow*effectiveFilterWidth+wCol,mask=maxPos===curPos?1:0;mask!==0&&(dotProd+=dyBuf.get(batch,dyDepth,dyRow,dyCol,channel)*mask)}}}dx.set(dotProd,batch,dxDepth,dxRow,dxCol,channel)}return backend2.makeTensorInfo(dx.shape,dx.dtype,dx.values)}var maxPool3DGradConfig2={kernelName:MaxPool3DGrad,backendName:"cpu",kernelFunc:maxPool3DGrad};function maxPoolGrad2(args){let{inputs,backend:backend2,attrs}=args,{dy,input:input2,output}=inputs,x=input2;assertNotComplex([input2,output],"maxPoolGrad");let{filterSize,strides,pad:pad3,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad3,dimRoundingMode),xValues=backend2.data.get(x.dataId).values,maxPosBuf=buffer(convInfo.outShape,x.dtype,maxPoolPositions(xValues,x.shape,x.dtype,convInfo).values),strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),dyData=backend2.data.get(dy.dataId).values,dyBuf=buffer(dy.shape,"float32",dyData);for(let b=0;b=convInfo.outHeight||Math.floor(dyR)!==dyR))for(let wC=0;wC=convInfo.outWidth||Math.floor(dyC)!==dyC)continue;let maxPos=effectiveFilterHeight*effectiveFilterWidth-1-maxPosBuf.get(b,dyR,dyC,d),curPos=wR*effectiveFilterWidth+wC,mask=maxPos===curPos?1:0;mask!==0&&(dotProd+=dyBuf.get(b,dyR,dyC,d)*mask)}}dx.set(dotProd,b,dxR,dxC,d)}return backend2.makeTensorInfo(dx.shape,dx.dtype,dx.values)}var maxPoolGradConfig2={kernelName:MaxPoolGrad,backendName:"cpu",kernelFunc:maxPoolGrad2};function maxPoolWithArgmaxImpl(xValues,xShape,dtype,includeBatchInIndex,convInfo){let strides=util_exports.computeStrides(xShape),maxPools=pool2(xValues,xShape,dtype,strides,convInfo,"max"),maxPositions=maxPoolPositions(xValues,xShape,dtype,convInfo,!0,includeBatchInIndex);return[maxPools.values,maxPositions.values]}var maxPoolWithArgmaxConfig={kernelName:MaxPoolWithArgmax,backendName:"cpu",kernelFunc:({inputs,attrs,backend:backend2})=>{let{x}=inputs,{filterSize,strides,pad:pad3,includeBatchInIndex}=attrs,cpuBackend=backend2;assertNotComplex(x,"MaxPoolWithArgmax");let values=cpuBackend.data.get(x.dataId).values,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,[1,1],pad3),[pooled,indexes]=maxPoolWithArgmaxImpl(values,x.shape,x.dtype,includeBatchInIndex,convInfo),pooledDataId=cpuBackend.write(pooled,convInfo.outShape,x.dtype),indexesDataId=cpuBackend.write(indexes,convInfo.outShape,x.dtype);return[{dataId:pooledDataId,shape:convInfo.outShape,dtype:x.dtype},{dataId:indexesDataId,shape:convInfo.outShape,dtype:"int32"}]}};function sum3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{axis,keepDims}=attrs;assertNotComplex(x,"sum");let $x;x.dtype==="bool"?$x=cast3({inputs:{x},backend:backend2,attrs:{dtype:"int32"}}):$x=identity2({inputs:{x},backend:backend2});let xRank=$x.shape.length,axes=util_exports.parseAxisParam(axis,$x.shape),permutation=backend_util_exports.getAxesPermutation(axes,xRank),reductionAxes=axes,permutedX=$x;permutation!=null&&(permutedX=transpose2({inputs:{x:$x},backend:backend2,attrs:{perm:permutation}}),reductionAxes=backend_util_exports.getInnerMostAxes(reductionAxes.length,xRank)),backend_util_exports.assertAxesAreInnerMostDims("sum",reductionAxes,permutedX.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(permutedX.shape,reductionAxes),resultDtype=backend_util_exports.upcastType(permutedX.dtype,"int32"),result=zeros3(backend2,outShape,resultDtype),reduceSize=util_exports.sizeFromShape(reduceShape),vals=backend2.data.get(result.dataId).values,aVals=backend2.data.get(permutedX.dataId).values;for(let i=0;ibackend2.disposeIntermediateTensorInfo(t)),result}var meanConfig={kernelName:Mean,backendName:"cpu",kernelFunc:mean2};function min3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{axis,keepDims}=attrs;assertNotComplex(x,"min");let origAxes=util_exports.parseAxisParam(axis,x.shape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,x.shape.length),$x=x;permutedAxes!=null&&($x=transpose2({inputs:{x},backend:backend2,attrs:{perm:permutedAxes}}),axes=backend_util_exports.getInnerMostAxes(axes.length,x.shape.length)),backend_util_exports.assertAxesAreInnerMostDims("min",axes,$x.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes($x.shape,axes),reduceSize=util_exports.sizeFromShape(reduceShape),vals=util_exports.makeZerosTypedArray(util_exports.sizeFromShape(outShape),$x.dtype),aVals=backend2.data.get($x.dataId).values;for(let i=0;ip2[0]+x.shape[i]+p2[1]),start=paddings.map(p2=>p2[0]),end=paddings.map((p2,i)=>p2[0]+x.shape[i]),offset=mode==="reflect"?0:1,xVals=backend2.data.get(x.dataId).values,xRank=x.shape.length,xStrides=util_exports.computeStrides(x.shape),resultSize=util_exports.sizeFromShape(outShape),resultRank=outShape.length,resultStrides=util_exports.computeStrides(outShape),resVals=util_exports.getTypedArrayFromDType(x.dtype,resultSize);for(let i=0;i=end[i2]&&(coords2[i2]=(end[i2]-1)*2-coords2[i2]+offset);coords2=coords2.map((c,i2)=>c-start[i2]);let inIndex=util_exports.locToIndex(coords2,xRank,xStrides);resVals[i]=xVals[inIndex]}return{dataId:backend2.write(resVals,outShape,x.dtype),shape:outShape,dtype:x.dtype}}var mirrorPadConfig={kernelName:MirrorPad,backendName:"cpu",kernelFunc:mirrorPad2},modImpl=createSimpleBinaryKernelImpl((aValue,bValue)=>{let rem=aValue%bValue;return aValue<0&&bValue<0||aValue>=0&&bValue>=0?rem:(rem+bValue)%bValue}),mod2=binaryKernelFunc(Mod,modImpl),modConfig={kernelName:Mod,backendName:"cpu",kernelFunc:mod2},seedrandom4=__toModule2(require_seedrandom2());function softmax3(args){let{inputs,backend:backend2,attrs}=args,{logits}=inputs,{dim}=attrs,logitsRank=logits.shape.length,$dim=dim;if($dim===-1&&($dim=logitsRank-1),$dim!==logitsRank-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${logitsRank} and dim was ${$dim}`);let axes=util_exports.parseAxisParam([$dim],logits.shape),maxLogit=max3({inputs:{x:logits},backend:backend2,attrs:{reductionIndices:axes,keepDims:!1}}),expandedShape=backend_util_exports.expandShapeToKeepDim(maxLogit.shape,axes),maxLogitReshaped=reshape3({inputs:{x:maxLogit},backend:backend2,attrs:{shape:expandedShape}}),a=sub2({inputs:{a:logits,b:maxLogitReshaped},backend:backend2}),b=exp2({inputs:{x:a},backend:backend2}),sumExp=sum3({inputs:{x:b},backend:backend2,attrs:{axis:axes,keepDims:!1}}),sumReshaped=reshape3({inputs:{x:sumExp},backend:backend2,attrs:{shape:expandedShape}}),result=div2({inputs:{a:b,b:sumReshaped},backend:backend2});return backend2.disposeIntermediateTensorInfo(maxLogit),backend2.disposeIntermediateTensorInfo(maxLogitReshaped),backend2.disposeIntermediateTensorInfo(a),backend2.disposeIntermediateTensorInfo(b),backend2.disposeIntermediateTensorInfo(sumExp),backend2.disposeIntermediateTensorInfo(sumReshaped),result}var softmaxConfig={kernelName:Softmax,backendName:"cpu",kernelFunc:softmax3};function multinomial2(args){let{inputs,backend:backend2,attrs}=args,{logits}=inputs,{numSamples,seed,normalized}=attrs;assertNotComplex(logits,"multinomial");let probabilities=normalized?logits:softmax3({inputs:{logits},backend:backend2,attrs:{dim:-1}}),batchSize=probabilities.shape[0],numEvents=probabilities.shape[1],probVals=backend2.data.get(probabilities.dataId).values,resShape=[batchSize,numSamples],resVals=util_exports.makeZerosTypedArray(util_exports.sizeFromShape(resShape),"int32");for(let b=0;b=0&&indicesVal[event]{util_exports.assertShapesMatch(shape,t.shape,"All tensors passed to stack must have matching shapes"),util_exports.assert(dtype===t.dtype,()=>"All tensors passed to stack must have matching dtypes")});let intermediateTensorInfos=[],expandedTensors=inputs.map(t=>{let expandedT=expandDims3({inputs:{input:t},backend:backend2,attrs:{dim:axis}});return intermediateTensorInfos.push(expandedT),expandedT}),result=concat2({inputs:expandedTensors,backend:backend2,attrs:{axis}});return intermediateTensorInfos.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),result}var packConfig={kernelName:Pack,backendName:"cpu",kernelFunc:pack};function padV2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{paddings,constantValue}=attrs;assertNotComplex(x,"pad");let outShape=paddings.map((p2,i)=>p2[0]+x.shape[i]+p2[1]),start=paddings.map(p2=>p2[0]),xVals=backend2.data.get(x.dataId).values,xSize=util_exports.sizeFromShape(x.shape),xRank=x.shape.length,xStrides=util_exports.computeStrides(x.shape),resultSize=util_exports.sizeFromShape(outShape),resultRank=outShape.length,resultStrides=util_exports.computeStrides(outShape),resVals=util_exports.getTypedArrayFromDType(x.dtype,resultSize);constantValue!==0&&resVals.fill(constantValue);for(let i=0;ic+start[i2]),outIndex=util_exports.locToIndex(outCoords,resultRank,resultStrides);resVals[outIndex]=xVals[i]}return{dataId:backend2.write(resVals,outShape,x.dtype),shape:outShape,dtype:x.dtype}}var padV2Config={kernelName:PadV2,backendName:"cpu",kernelFunc:padV2},powImpl=createSimpleBinaryKernelImpl((a,b)=>Math.pow(a,b)),pow2=binaryKernelFunc(Pow,powImpl),powConfig={kernelName:Pow,backendName:"cpu",kernelFunc:pow2};function range3(args){let{backend:backend2,attrs}=args,{start,stop,dtype,step:step4}=attrs,values=rangeImpl(start,stop,step4,dtype);return backend2.makeTensorInfo([values.length],dtype,values)}var rangeConfig={kernelName:Range,backendName:"cpu",kernelFunc:range3},reciprocal2=unaryKernelFunc(Reciprocal,xi=>1/xi),reciprocalConfig={kernelName:Reciprocal,backendName:"cpu",kernelFunc:reciprocal2};function resizeBilinear2(args){let{inputs,backend:backend2,attrs}=args,{images}=inputs,{alignCorners,halfPixelCenters,size}=attrs;assertNotComplex(images,"resizeBilinear");let imagesStrides=util_exports.computeStrides(images.shape),[newHeight,newWidth]=size,[batch,oldHeight,oldWidth,numChannels]=images.shape,xValues=backend2.data.get(images.dataId).values,result=new Float32Array(util_exports.sizeFromShape([batch,newHeight,newWidth,numChannels])),effectiveInputSize=[alignCorners&&newHeight>1?oldHeight-1:oldHeight,alignCorners&&newWidth>1?oldWidth-1:oldWidth],effectiveOutputSize=[alignCorners&&newHeight>1?newHeight-1:newHeight,alignCorners&&newWidth>1?newWidth-1:newWidth],outputIdx=0,effectiveRowSizeRatio=effectiveInputSize[0]/effectiveOutputSize[0],effectiveColSizeRatio=effectiveInputSize[1]/effectiveOutputSize[1];for(let b=0;b1?xHeight-1:xHeight,alignCorners&&yWidth>1?xWidth-1:xWidth],effectiveYSize=[alignCorners&&yHeight>1?yHeight-1:yHeight,alignCorners&&yWidth>1?yWidth-1:yWidth],heightScale=effectiveXSize[0]/effectiveYSize[0],widthScale=effectiveXSize[1]/effectiveYSize[1],dyValues=backend2.data.get(dy.dataId).values,offset=0;for(let b=0;b1?oldHeight-1:oldHeight,alignCorners&&newWidth>1?oldWidth-1:oldWidth],effectiveOutputSize=[alignCorners&&newHeight>1?newHeight-1:newHeight,alignCorners&&newWidth>1?newWidth-1:newWidth],effectiveRowSizeRatio=effectiveInputSize[0]/effectiveOutputSize[0],effectiveColSizeRatio=effectiveInputSize[1]/effectiveOutputSize[1],outputOffset=0;for(let b=0;b1?xHeight-1:xHeight,alignCorners&&yWidth>1?xWidth-1:xWidth],effectiveYSize=[alignCorners&&yHeight>1?yHeight-1:yHeight,alignCorners&&yWidth>1?yWidth-1:yWidth],heightScale=effectiveXSize[0]/effectiveYSize[0],widthScale=effectiveXSize[1]/effectiveYSize[1],invHeightScale=1/heightScale,invWidthScale=1/widthScale,winHeight=Math.ceil(invHeightScale)*2+2,winWidth=Math.ceil(invWidthScale)*2+2;for(let b=0;b=yHeight)continue;let dyROffset=batchOffset+dyR*dyStrides[1],sourceFracRow=dyR*heightScale,sourceNearestRow=Math.min(xHeight-1,alignCorners?Math.round(sourceFracRow):Math.floor(sourceFracRow));if(r===sourceNearestRow)for(let dyCIndex=0;dyCIndex=yWidth)continue;let dyCOffset=dyROffset+dyC*dyStrides[2],sourceFracCol=dyC*widthScale,sourceNearestCol=Math.min(xWidth-1,alignCorners?Math.round(sourceFracCol):Math.floor(sourceFracCol));c===sourceNearestCol&&(accum+=dyValues[dyCOffset+d])}}output[colOffset+d]=accum}}}}return backend2.makeTensorInfo(images.shape,images.dtype,output)}var resizeNearestNeighborGradConfig2={kernelName:ResizeNearestNeighborGrad,backendName:"cpu",kernelFunc:resizeNearestNeighborGrad};function reverse2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{dims}=attrs;assertNotComplex(x,"reverse");let xRank=x.shape.length,$dims=util_exports.parseAxisParam(dims,x.shape);if(xRank===0)return identity2({inputs:{x},backend:backend2});let outBuf=new TensorBuffer(x.shape,x.dtype),xBuf=backend2.bufferSync(x);for(let i=0;iinLoc[d]=x.shape[d]-1-inLoc[d]),outBuf.set(xBuf.get(...inLoc),...outLoc)}return backend2.makeTensorInfo(outBuf.shape,outBuf.dtype,outBuf.values)}var reverseConfig={kernelName:Reverse,backendName:"cpu",kernelFunc:reverse2},rotateWithOffsetConfig={kernelName:RotateWithOffset,backendName:"cpu",kernelFunc:({inputs,attrs,backend:backend2})=>{let{image:image3}=inputs,{radians,fillValue,center}=attrs,cpuBackend=backend2,output=util_exports.getTypedArrayFromDType(image3.dtype,util_exports.sizeFromShape(image3.shape)),[batch,imageHeight,imageWidth,numChannels]=image3.shape,[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),fullOpacityValue=255,sinFactor=Math.sin(radians),cosFactor=Math.cos(radians),imageVals=cpuBackend.data.get(image3.dataId).values;for(let batchIdx=0;batchIdx=0&&coordX=0&&coordY{let base2=Math.floor(xi);return xi-base2<.5?Math.floor(xi):xi-base2>.5?Math.ceil(xi):base2%2==0?base2:base2+1}),roundConfig={kernelName:Round,backendName:"cpu",kernelFunc:round3};function scatterImpl(indices,updates,shape,outputSize,sliceSize,numUpdates,sliceRank,strides,defaultValue,sumDupeIndices){let flattenShape=[outputSize/sliceSize,sliceSize],indicesData=indices.values,updatesData=updates.values;if(outputSize===0)return buffer(shape,updates.dtype);let outBuf=buffer(flattenShape,updates.dtype);outBuf.values.fill(defaultValue);for(let i=0;i=outputSize/sliceSize)throw new Error(`Invalid indices: ${index} does not index into ${shape}`);for(let k=0;k1||t.shape.length===1?1:util_exports.sizeFromShape(t.shape.slice(1));for(let i=0;ixi>=0?scale*xi:scaleAlpha*(Math.exp(xi)-1)),seluConfig={kernelName:Selu,backendName:"cpu",kernelFunc:selu2},sigmoid2=unaryKernelFunc(Sigmoid,xi=>1/(1+Math.exp(-xi))),sigmoidConfig={kernelName:Sigmoid,backendName:"cpu",kernelFunc:sigmoid2},sign2=unaryKernelFunc(Sign,xi=>xi<0?-1:xi>0?1:0),signConfig={kernelName:Sign,backendName:"cpu",kernelFunc:sign2},sin2=unaryKernelFunc(Sin,xi=>Math.sin(xi)),sinConfig={kernelName:Sin,backendName:"cpu",kernelFunc:sin2},sinh2=unaryKernelFunc(Sinh,xi=>Math.sinh(xi)),sinhConfig={kernelName:Sinh,backendName:"cpu",kernelFunc:sinh2},epsilon2=11920928955078125e-23,threshold=Math.log(epsilon2)+2,softplus2=unaryKernelFunc(Softplus,xi=>{let tooLarge=xi>-threshold,tooSmall=xi{let sliceSize=[...size];sliceSize[$axis]=s;let sliceT=slice2({inputs:{x},backend:backend2,attrs:{begin,size:sliceSize}});return begin[$axis]+=s,sliceT})}var splitVConfig={kernelName:SplitV,backendName:"cpu",kernelFunc:splitV},sqrt2=unaryKernelFunc(Sqrt,xi=>Math.sqrt(xi)),sqrtConfig={kernelName:Sqrt,backendName:"cpu",kernelFunc:sqrt2},squareConfig={kernelName:Square,backendName:"cpu",kernelFunc:({inputs,backend:backend2})=>{let{x}=inputs,cpuBackend=backend2;assertNotComplex(x,"square");let values=cpuBackend.data.get(x.dataId).values,newValues=new Float32Array(values.length);for(let i=0;i{let stepAttrs=attrs;return isNaN(xi)?NaN:xi>0?1:stepAttrs.alpha}),stepConfig={kernelName:Step,backendName:"cpu",kernelFunc:step2};function stridedSlice2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask}=attrs;assertNotComplex(x,"stridedSlice");let{nonStrided,$begin,$strides,size,newShape,outShape}=slice_util_exports.sliceInfo(x.shape,begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask),$x=reshape3({inputs:{x},backend:backend2,attrs:{shape:newShape}}),result;if(nonStrided){let sliced=slice2({inputs:{x:$x},backend:backend2,attrs:{begin:$begin,size}});result=reshape3({inputs:{x:sliced},backend:backend2,attrs:{shape:outShape}}),backend2.disposeIntermediateTensorInfo(sliced)}else if(outShape.some(axis=>axis===0))result=backend2.makeTensorInfo(outShape,x.dtype,[]);else{let xBuf=backend2.bufferSync($x),outBuf=stridedSliceImpl(outShape,xBuf,$strides,$begin);result=backend2.makeTensorInfo(outBuf.shape,outBuf.dtype,outBuf.values)}let resultReshaped=reshape3({inputs:{x:result},backend:backend2,attrs:{shape:outShape}});return backend2.disposeIntermediateTensorInfo($x),backend2.disposeIntermediateTensorInfo(result),resultReshaped}var stridedSliceConfig={kernelName:StridedSlice,backendName:"cpu",kernelFunc:stridedSlice2},tan2=unaryKernelFunc(Tan,xi=>Math.tan(xi)),tanConfig={kernelName:Tan,backendName:"cpu",kernelFunc:tan2},tanh3=unaryKernelFunc(Tanh,xi=>Math.tanh(xi)),tanhConfig={kernelName:Tanh,backendName:"cpu",kernelFunc:tanh3};function tile3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{reps}=attrs;assertNotComplex(x,"tile");let outBuf=tileImpl(backend2.bufferSync(x),reps);return backend2.makeTensorInfo(outBuf.shape,outBuf.dtype,outBuf.values)}var tileConfig={kernelName:Tile,backendName:"cpu",kernelFunc:tile3};function topK(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{k,sorted}=attrs;assertNotComplex(x,"topk");let xVals=backend2.data.get(x.dataId).values,[allTopKVals,allTopKIndices]=topKImpl(xVals,x.shape,x.dtype,k,sorted);return[backend2.makeTensorInfo(allTopKVals.shape,allTopKVals.dtype,allTopKVals.values),backend2.makeTensorInfo(allTopKIndices.shape,allTopKIndices.dtype,allTopKIndices.values)]}var topKConfig={kernelName:TopK,backendName:"cpu",kernelFunc:topK};function unique3(args){let{inputs,attrs,backend:backend2}=args,{axis}=attrs,{x}=inputs;assertNotComplex(x,"unique");let values=backend2.data.get(x.dataId).values,{outputValues,outputShape,indices}=uniqueImpl(values,axis,x.shape,x.dtype);return[backend2.makeTensorInfo(outputShape,x.dtype,outputValues),backend2.makeTensorInfo([indices.length],"int32",indices)]}var uniqueConfig={kernelName:Unique,backendName:"cpu",kernelFunc:unique3};function unpack(args){let{inputs,backend:backend2,attrs}=args,{value}=inputs,{axis}=attrs;axis<0&&(axis+=value.shape.length);let valueRank=value.shape.length,num=value.shape[axis],outShape=new Array(valueRank-1),outIndex=0;for(let i=0;ibackend2.disposeIntermediateTensorInfo(t)),result}var unsortedSegmentSumConfig={kernelName:UnsortedSegmentSum,backendName:"cpu",kernelFunc:unsortedSegmentSum2},kernelConfigs=[_fusedMatMulConfig,absConfig,acosConfig,acoshConfig,addConfig,addNConfig,allConfig,anyConfig,argMaxConfig,argMinConfig,asinConfig,asinhConfig,atanConfig,atan2Config,atanhConfig,avgPoolConfig,avgPool3DConfig,avgPool3DGradConfig2,avgPoolGradConfig2,batchMatMulConfig,batchNormConfig,batchToSpaceNDConfig,bincountConfig,castConfig,ceilConfig,clipConfig,complexConfig,complexAbsConfig,concatConfig,conv2DBackpropFilterConfig,conv2DBackpropInputConfig,conv2DConfig,conv3DBackpropFilterV2Config,conv3DBackpropInputV2Config,conv3DConfig,cosConfig,coshConfig,cropAndResizeConfig,cumsumConfig,denseBincountConfig,depthToSpaceConfig,depthwiseConv2dNativeConfig,depthwiseConv2dNativeBackpropFilterConfig,depthwiseConv2dNativeBackpropInputConfig,diagConfig,dilation2dConfig,dilation2dBackpropInputConfig,dilation2dBackpropFilterConfig,realDivConfig,eluConfig,eluGradConfig2,equalConfig,erfConfig,expConfig,expandDimsConfig,expm1Config,fftConfig,fillConfig,flipLeftRightConfig,floorConfig,floorDivConfig,fusedConv2DConfig,fusedDepthwiseConv2DConfig,gatherNdConfig,gatherV2Config,greaterConfig,greaterEqualConfig,identityConfig,ifftConfig,imagConfig,isFiniteConfig,isInfConfig,isNaNConfig,leakyReluConfig,lessConfig,lessEqualConfig,linSpaceConfig,logConfig,log1pConfig,logicalAndConfig,logicalNotConfig,logicalOrConfig,lRNConfig,lRNGradConfig,maximumConfig,maxPoolConfig,maxPool3DConfig,maxPool3DGradConfig2,maxPoolGradConfig2,maxPoolWithArgmaxConfig,maxConfig,meanConfig,minConfig,minimumConfig,mirrorPadConfig,modConfig,multinomialConfig,multiplyConfig,negConfig,nonMaxSuppressionV3Config,nonMaxSuppressionV4Config,nonMaxSuppressionV5Config,notEqualConfig,oneHotConfig,onesLikeConfig,packConfig,padV2Config,powConfig,preluConfig,prodConfig,rangeConfig,realConfig,reciprocalConfig,reluConfig,relu6Config,reshapeConfig,resizeBilinearConfig,resizeBilinearGradConfig2,resizeNearestNeighborConfig,resizeNearestNeighborGradConfig2,reverseConfig,rotateWithOffsetConfig,roundConfig,rsqrtConfig,scatterNdConfig,selectConfig,seluConfig,sigmoidConfig,signConfig,sinConfig,sinhConfig,sliceConfig,softmaxConfig,softplusConfig,spaceToBatchNDConfig,sparseToDenseConfig,splitVConfig,sqrtConfig,squareConfig,squaredDifferenceConfig,stepConfig,stridedSliceConfig,subConfig,sumConfig,tanConfig,tanhConfig,tileConfig,topKConfig,transposeConfig,uniqueConfig,unpackConfig,unsortedSegmentSumConfig,zerosLikeConfig];for(let kernelConfig of kernelConfigs)registerKernel(kernelConfig);var contexts={},WEBGL_ATTRIBUTES={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function setWebGLContext(webGLVersion,gl){contexts[webGLVersion]=gl}function getWebGLContext(webGLVersion){if(!(webGLVersion in contexts)){let newCtx=getWebGLRenderingContext(webGLVersion);if(newCtx!==null)contexts[webGLVersion]=newCtx;else return console.log("Could not get context for WebGL version",webGLVersion),null}let gl=contexts[webGLVersion];return gl.isContextLost()?(delete contexts[webGLVersion],getWebGLContext(webGLVersion)):(gl.disable(gl.DEPTH_TEST),gl.disable(gl.STENCIL_TEST),gl.disable(gl.BLEND),gl.disable(gl.DITHER),gl.disable(gl.POLYGON_OFFSET_FILL),gl.disable(gl.SAMPLE_COVERAGE),gl.enable(gl.SCISSOR_TEST),gl.enable(gl.CULL_FACE),gl.cullFace(gl.BACK),contexts[webGLVersion])}function createCanvas(webGLVersion){if(typeof OffscreenCanvas!="undefined"&&webGLVersion===2)return new OffscreenCanvas(300,150);if(typeof document!="undefined")return document.createElement("canvas");throw new Error("Cannot create a canvas in this context")}function getWebGLRenderingContext(webGLVersion){if(webGLVersion!==1&&webGLVersion!==2)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");let canvas=createCanvas(webGLVersion);return canvas.addEventListener("webglcontextlost",ev=>{ev.preventDefault(),delete contexts[webGLVersion]},!1),webGLVersion===1?canvas.getContext("webgl",WEBGL_ATTRIBUTES)||canvas.getContext("experimental-webgl",WEBGL_ATTRIBUTES):canvas.getContext("webgl2",WEBGL_ATTRIBUTES)}var PackingScheme;(function(PackingScheme2){PackingScheme2[PackingScheme2.DENSE=0]="DENSE",PackingScheme2[PackingScheme2.SHARED_BATCH=1]="SHARED_BATCH"})(PackingScheme||(PackingScheme={}));var TextureUsage;(function(TextureUsage2){TextureUsage2[TextureUsage2.RENDER=0]="RENDER",TextureUsage2[TextureUsage2.UPLOAD=1]="UPLOAD",TextureUsage2[TextureUsage2.PIXELS=2]="PIXELS",TextureUsage2[TextureUsage2.DOWNLOAD=3]="DOWNLOAD"})(TextureUsage||(TextureUsage={}));var PhysicalTextureType;(function(PhysicalTextureType2){PhysicalTextureType2[PhysicalTextureType2.UNPACKED_FLOAT16=0]="UNPACKED_FLOAT16",PhysicalTextureType2[PhysicalTextureType2.UNPACKED_FLOAT32=1]="UNPACKED_FLOAT32",PhysicalTextureType2[PhysicalTextureType2.PACKED_4X1_UNSIGNED_BYTE=2]="PACKED_4X1_UNSIGNED_BYTE",PhysicalTextureType2[PhysicalTextureType2.PACKED_2X2_FLOAT32=3]="PACKED_2X2_FLOAT32",PhysicalTextureType2[PhysicalTextureType2.PACKED_2X2_FLOAT16=4]="PACKED_2X2_FLOAT16"})(PhysicalTextureType||(PhysicalTextureType={}));function getUnpackedMatrixTextureShapeWidthHeight(rows,columns){return[columns,rows]}function getUnpackedArraySizeFromMatrixSize(matrixSize,channelsPerTexture){return matrixSize*channelsPerTexture}function getDenseTexShape(shape){let size=util_exports.sizeFromShape(shape),texelsNeeded=Math.ceil(size/4);return util_exports.sizeToSquarishShape(texelsNeeded)}function getPackedMatrixTextureShapeWidthHeight(rows,columns){return[Math.max(1,Math.ceil(columns/2)),Math.max(1,Math.ceil(rows/2))]}function getPackedRGBAArraySizeFromMatrixShape(rows,columns){let[w,h]=getPackedMatrixTextureShapeWidthHeight(rows,columns);return w*h*4}function getTextureConfig(gl,textureHalfFloatExtension){let glany=gl,internalFormatFloat,internalFormatHalfFloat,internalFormatPackedHalfFloat,internalFormatPackedFloat,textureFormatFloat,downloadTextureFormat,downloadUnpackNumChannels,defaultNumChannels,textureTypeHalfFloat,textureTypeFloat;return env().getNumber("WEBGL_VERSION")===2?(internalFormatFloat=glany.R32F,internalFormatHalfFloat=glany.R16F,internalFormatPackedHalfFloat=glany.RGBA16F,internalFormatPackedFloat=glany.RGBA32F,textureFormatFloat=glany.RED,downloadUnpackNumChannels=4,defaultNumChannels=1,textureTypeHalfFloat=glany.HALF_FLOAT,textureTypeFloat=glany.FLOAT):(internalFormatFloat=gl.RGBA,internalFormatHalfFloat=gl.RGBA,internalFormatPackedHalfFloat=gl.RGBA,internalFormatPackedFloat=glany.RGBA,textureFormatFloat=gl.RGBA,downloadUnpackNumChannels=4,defaultNumChannels=4,textureTypeHalfFloat=textureHalfFloatExtension!=null?textureHalfFloatExtension.HALF_FLOAT_OES:null,textureTypeFloat=gl.FLOAT),downloadTextureFormat=gl.RGBA,{internalFormatFloat,internalFormatHalfFloat,internalFormatPackedHalfFloat,internalFormatPackedFloat,textureFormatFloat,downloadTextureFormat,downloadUnpackNumChannels,defaultNumChannels,textureTypeHalfFloat,textureTypeFloat}}function callAndCheck(gl,func2){let returnValue=func2();return env().getBool("DEBUG")&&checkWebGLError(gl),returnValue}function checkWebGLError(gl){let error=gl.getError();if(error!==gl.NO_ERROR)throw new Error("WebGL Error: "+getWebGLErrorMessage(gl,error))}var MIN_FLOAT16=596e-10,MAX_FLOAT16=65504;function canBeRepresented(num){return!!(env().getBool("WEBGL_RENDER_FLOAT32_ENABLED")||num===0||MIN_FLOAT16gl.getExtension(extensionName),'Extension "'+extensionName+'" not supported on this browser.')}function createVertexShader(gl,vertexShaderSource){let vertexShader=throwIfNull(gl,()=>gl.createShader(gl.VERTEX_SHADER),"Unable to create vertex WebGLShader.");if(callAndCheck(gl,()=>gl.shaderSource(vertexShader,vertexShaderSource)),callAndCheck(gl,()=>gl.compileShader(vertexShader)),gl.getShaderParameter(vertexShader,gl.COMPILE_STATUS)===!1)throw console.log(gl.getShaderInfoLog(vertexShader)),new Error("Failed to compile vertex shader.");return vertexShader}function createFragmentShader(gl,fragmentShaderSource){let fragmentShader=throwIfNull(gl,()=>gl.createShader(gl.FRAGMENT_SHADER),"Unable to create fragment WebGLShader.");if(callAndCheck(gl,()=>gl.shaderSource(fragmentShader,fragmentShaderSource)),callAndCheck(gl,()=>gl.compileShader(fragmentShader)),gl.getShaderParameter(fragmentShader,gl.COMPILE_STATUS)===!1)throw logShaderSourceAndInfoLog(fragmentShaderSource,gl.getShaderInfoLog(fragmentShader)),new Error("Failed to compile fragment shader.");return fragmentShader}var lineNumberRegex=/ERROR: [0-9]+:([0-9]+):/g;function logShaderSourceAndInfoLog(shaderSource,shaderInfoLog){let lineNumberRegexResult=lineNumberRegex.exec(shaderInfoLog);if(lineNumberRegexResult==null){console.log(`Couldn't parse line number in error: ${shaderInfoLog}`),console.log(shaderSource);return}let lineNumber=+lineNumberRegexResult[1],shaderLines=shaderSource.split(` -`),pad3=shaderLines.length.toString().length+2,linesWithLineNumbers=shaderLines.map((line,lineNumber2)=>util_exports.rightPad((lineNumber2+1).toString(),pad3)+line),maxLineLength=0;for(let i=0;igl.createProgram(),"Unable to create WebGLProgram.")}function linkProgram(gl,program){if(callAndCheck(gl,()=>gl.linkProgram(program)),gl.getProgramParameter(program,gl.LINK_STATUS)===!1)throw console.log(gl.getProgramInfoLog(program)),new Error("Failed to link vertex and fragment shaders.")}function validateProgram(gl,program){if(callAndCheck(gl,()=>gl.validateProgram(program)),gl.getProgramParameter(program,gl.VALIDATE_STATUS)===!1)throw console.log(gl.getProgramInfoLog(program)),new Error("Shader program validation failed.")}function createStaticVertexBuffer(gl,data){let buffer2=throwIfNull(gl,()=>gl.createBuffer(),"Unable to create WebGLBuffer");return callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,buffer2)),callAndCheck(gl,()=>gl.bufferData(gl.ARRAY_BUFFER,data,gl.STATIC_DRAW)),buffer2}function createStaticIndexBuffer(gl,data){let buffer2=throwIfNull(gl,()=>gl.createBuffer(),"Unable to create WebGLBuffer");return callAndCheck(gl,()=>gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,buffer2)),callAndCheck(gl,()=>gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,data,gl.STATIC_DRAW)),buffer2}function createTexture(gl){return throwIfNull(gl,()=>gl.createTexture(),"Unable to create WebGLTexture.")}function validateTextureSize(width,height){let maxTextureSize=env().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(width<=0||height<=0){let requested=`[${width}x${height}]`;throw new Error("Requested texture size "+requested+" is invalid.")}if(width>maxTextureSize||height>maxTextureSize){let requested=`[${width}x${height}]`,max6=`[${maxTextureSize}x${maxTextureSize}]`;throw new Error("Requested texture size "+requested+" greater than WebGL maximum on this browser / GPU "+max6+".")}}function createFramebuffer(gl){return throwIfNull(gl,()=>gl.createFramebuffer(),"Unable to create WebGLFramebuffer.")}function bindVertexBufferToProgramAttribute(gl,program,attribute,buffer2,arrayEntriesPerItem,itemStrideInBytes,itemOffsetInBytes){let loc=gl.getAttribLocation(program,attribute);return loc===-1?!1:(callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,buffer2)),callAndCheck(gl,()=>gl.vertexAttribPointer(loc,arrayEntriesPerItem,gl.FLOAT,!1,itemStrideInBytes,itemOffsetInBytes)),callAndCheck(gl,()=>gl.enableVertexAttribArray(loc)),!0)}function bindTextureUnit(gl,texture,textureUnit){validateTextureUnit(gl,textureUnit),callAndCheck(gl,()=>gl.activeTexture(gl.TEXTURE0+textureUnit)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,texture))}function getProgramUniformLocationOrThrow(gl,program,uniformName){return throwIfNull(gl,()=>gl.getUniformLocation(program,uniformName),'uniform "'+uniformName+'" not present in program.')}function getProgramUniformLocation(gl,program,uniformName){return gl.getUniformLocation(program,uniformName)}function bindTextureToProgramUniformSampler(gl,texture,uniformSamplerLocation,textureUnit){callAndCheck(gl,()=>bindTextureUnit(gl,texture,textureUnit)),callAndCheck(gl,()=>gl.uniform1i(uniformSamplerLocation,textureUnit))}function bindColorTextureToFramebuffer(gl,texture,framebuffer){callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,framebuffer)),callAndCheck(gl,()=>gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0))}function unbindColorTextureFromFramebuffer(gl,framebuffer){callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,framebuffer)),callAndCheck(gl,()=>gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,null,0))}function validateFramebuffer(gl){let status=gl.checkFramebufferStatus(gl.FRAMEBUFFER);if(status!==gl.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+getFramebufferErrorMessage(gl,status))}function getFramebufferErrorMessage(gl,status){switch(status){case gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case gl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case gl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case gl.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return`unknown error ${status}`}}function throwIfNull(gl,returnTOrNull,failureMessage){let tOrNull=callAndCheck(gl,()=>returnTOrNull());if(tOrNull==null)throw new Error(failureMessage);return tOrNull}function validateTextureUnit(gl,textureUnit){let maxTextureUnit=gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,glTextureUnit=textureUnit+gl.TEXTURE0;if(glTextureUnitmaxTextureUnit){let textureUnitRange=`[gl.TEXTURE0, gl.TEXTURE${maxTextureUnit}]`;throw new Error(`textureUnit must be in ${textureUnitRange}.`)}}function getBatchDim(shape,dimsToSkip=2){return util_exports.sizeFromShape(shape.slice(0,shape.length-dimsToSkip))}function getRowsCols(shape){if(shape.length===0)throw Error("Cannot get rows and columns of an empty shape array.");return[shape.length>1?shape[shape.length-2]:1,shape[shape.length-1]]}function getShapeAs3D(shape){let shapeAs3D=[1,1,1];return shape.length===0||shape.length===1&&shape[0]===1||(shapeAs3D=[getBatchDim(shape),...getRowsCols(shape)]),shapeAs3D}function getTextureShapeFromLogicalShape(logShape,isPacked=!1){let maxTexSize=env().getNumber("WEBGL_MAX_TEXTURE_SIZE");isPacked&&(maxTexSize=maxTexSize*2,logShape=logShape.map((d,i)=>i>=logShape.length-2?util_exports.nearestLargerEven(logShape[i]):logShape[i]),logShape.length===1&&(logShape=[2,logShape[0]])),logShape.length!==2&&(logShape=util_exports.squeezeShape(logShape).newShape);let size=util_exports.sizeFromShape(logShape);if(logShape.length<=1&&size<=maxTexSize)return[1,size];if(logShape.length===2&&logShape[0]<=maxTexSize&&logShape[1]<=maxTexSize)return logShape;if(logShape.length===3&&logShape[0]*logShape[1]<=maxTexSize&&logShape[2]<=maxTexSize)return[logShape[0]*logShape[1],logShape[2]];if(logShape.length===3&&logShape[0]<=maxTexSize&&logShape[1]*logShape[2]<=maxTexSize)return[logShape[0],logShape[1]*logShape[2]];if(logShape.length===4&&logShape[0]*logShape[1]*logShape[2]<=maxTexSize&&logShape[3]<=maxTexSize)return[logShape[0]*logShape[1]*logShape[2],logShape[3]];if(logShape.length===4&&logShape[0]<=maxTexSize&&logShape[1]*logShape[2]*logShape[3]<=maxTexSize)return[logShape[0],logShape[1]*logShape[2]*logShape[3]];if(isPacked){let batchDim=getBatchDim(logShape),rows=2,cols=2;return logShape.length&&([rows,cols]=getRowsCols(logShape)),size=batchDim*(rows/2)*(cols/2),util_exports.sizeToSquarishShape(size).map(d=>d*2)}return util_exports.sizeToSquarishShape(size)}function isEven(n){return n%2==0}function isReshapeFree(shape1,shape2){if(shape1=shape1.slice(-2),shape2=shape2.slice(-2),util_exports.arraysEqual(shape1,shape2)||!shape1.length||!shape2.length||shape1[0]===0||shape1[1]===0||shape2[0]===0||shape2[1]===0)return!0;if(shape1.length!==shape2.length){let shape1Cols=shape1.slice(-1)[0],shape2Cols=shape2.slice(-1)[0];if(shape1Cols===shape2Cols||isEven(shape1Cols)&&isEven(shape2Cols)&&(shape1[0]===1||shape2[0]===1))return!0}return shape1[1]===shape2[1]&&isEven(shape1[0])&&isEven(shape2[0])}var MAX_TEXTURE_SIZE,MAX_TEXTURES_IN_SHADER;function getWebGLMaxTextureSize(webGLVersion){if(MAX_TEXTURE_SIZE==null){let gl=getWebGLContext(webGLVersion);MAX_TEXTURE_SIZE=gl.getParameter(gl.MAX_TEXTURE_SIZE)}return MAX_TEXTURE_SIZE}function getMaxTexturesInShader(webGLVersion){if(MAX_TEXTURES_IN_SHADER==null){let gl=getWebGLContext(webGLVersion);MAX_TEXTURES_IN_SHADER=gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,MAX_TEXTURES_IN_SHADER)}function getWebGLDisjointQueryTimerVersion(webGLVersion){if(webGLVersion===0)return 0;let queryTimerVersion,gl=getWebGLContext(webGLVersion);return hasExtension(gl,"EXT_disjoint_timer_query_webgl2")&&webGLVersion===2?queryTimerVersion=2:hasExtension(gl,"EXT_disjoint_timer_query")?queryTimerVersion=1:queryTimerVersion=0,queryTimerVersion}function hasExtension(gl,extensionName){return gl.getExtension(extensionName)!=null}function isWebGLVersionEnabled(webGLVersion){try{if(getWebGLContext(webGLVersion)!=null)return!0}catch(e){return console.log("Error when getting WebGL context: ",e),!1}return!1}function isCapableOfRenderingToFloatTexture(webGLVersion){if(webGLVersion===0)return!1;let gl=getWebGLContext(webGLVersion);if(webGLVersion===1){if(!hasExtension(gl,"OES_texture_float"))return!1}else if(!hasExtension(gl,"EXT_color_buffer_float"))return!1;return createFloatTextureAndBindToFramebuffer(gl)}function isDownloadFloatTextureEnabled(webGLVersion){if(webGLVersion===0)return!1;let gl=getWebGLContext(webGLVersion);if(webGLVersion===1){if(!hasExtension(gl,"OES_texture_float")||!hasExtension(gl,"WEBGL_color_buffer_float"))return!1}else{if(hasExtension(gl,"EXT_color_buffer_float"))return createFloatTextureAndBindToFramebuffer(gl);let COLOR_BUFFER_HALF_FLOAT="EXT_color_buffer_half_float";if(hasExtension(gl,COLOR_BUFFER_HALF_FLOAT)){let textureHalfFloatExtension=gl.getExtension(COLOR_BUFFER_HALF_FLOAT);return createHalfFloatTextureAndBindToFramebuffer(gl,textureHalfFloatExtension)}return!1}return createFloatTextureAndBindToFramebuffer(gl)}function createFloatTextureAndBindToFramebuffer(gl){let texConfig=getTextureConfig(gl),texture=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,texture);let width=1,height=1;gl.texImage2D(gl.TEXTURE_2D,0,texConfig.internalFormatFloat,width,height,0,texConfig.textureFormatFloat,texConfig.textureTypeFloat,null);let frameBuffer=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,frameBuffer),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0);let isFrameBufferComplete=gl.checkFramebufferStatus(gl.FRAMEBUFFER)===gl.FRAMEBUFFER_COMPLETE;return gl.bindTexture(gl.TEXTURE_2D,null),gl.bindFramebuffer(gl.FRAMEBUFFER,null),gl.deleteTexture(texture),gl.deleteFramebuffer(frameBuffer),isFrameBufferComplete}function createHalfFloatTextureAndBindToFramebuffer(gl,textureHalfFloatExtension){let texConfig=getTextureConfig(gl,textureHalfFloatExtension),texture=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,texture);let width=1,height=1;gl.texImage2D(gl.TEXTURE_2D,0,texConfig.internalFormatHalfFloat,width,height,0,texConfig.textureFormatFloat,texConfig.textureTypeHalfFloat,null);let frameBuffer=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,frameBuffer),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0);let isFrameBufferComplete=gl.checkFramebufferStatus(gl.FRAMEBUFFER)===gl.FRAMEBUFFER_COMPLETE;return gl.bindTexture(gl.TEXTURE_2D,null),gl.bindFramebuffer(gl.FRAMEBUFFER,null),gl.deleteTexture(texture),gl.deleteFramebuffer(frameBuffer),isFrameBufferComplete}function isWebGLFenceEnabled(webGLVersion){return webGLVersion!==2?!1:getWebGLContext(webGLVersion).fenceSync!=null}function assertNotComplex2(tensor2,opName){Array.isArray(tensor2)||(tensor2=[tensor2]),tensor2.forEach(t=>{t!=null&&util_exports.assert(t.dtype!=="complex64",()=>`${opName} does not support complex64 tensors in the WebGL backend.`)})}var ENV3=env();ENV3.registerFlag("HAS_WEBGL",()=>ENV3.getNumber("WEBGL_VERSION")>0);ENV3.registerFlag("WEBGL_VERSION",()=>isWebGLVersionEnabled(2)?2:isWebGLVersionEnabled(1)?1:0);ENV3.registerFlag("WEBGL_CHECK_NUMERICAL_PROBLEMS",()=>!1);ENV3.registerFlag("WEBGL_BUFFER_SUPPORTED",()=>ENV3.get("WEBGL_VERSION")===2);ENV3.registerFlag("WEBGL_CPU_FORWARD",()=>!0);ENV3.registerFlag("WEBGL_FORCE_F16_TEXTURES",()=>!1);ENV3.registerFlag("WEBGL_PACK",()=>ENV3.getBool("HAS_WEBGL"));ENV3.registerFlag("WEBGL_PACK_NORMALIZATION",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_CLIP",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_DEPTHWISECONV",()=>!1);ENV3.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_REDUCE",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_LAZILY_UNPACK",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_CONV_IM2COL",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_MAX_TEXTURE_SIZE",()=>getWebGLMaxTextureSize(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",()=>getMaxTexturesInShader(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",()=>{let webGLVersion=ENV3.getNumber("WEBGL_VERSION");return webGLVersion===0?0:getWebGLDisjointQueryTimerVersion(webGLVersion)});ENV3.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",()=>ENV3.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!device_util_exports.isMobile());ENV3.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",()=>isCapableOfRenderingToFloatTexture(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",()=>ENV3.getBool("WEBGL_FORCE_F16_TEXTURES")?!1:ENV3.getBool("WEBGL_RENDER_FLOAT32_CAPABLE"));ENV3.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",()=>isDownloadFloatTextureEnabled(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_FENCE_API_ENABLED",()=>isWebGLFenceEnabled(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",()=>ENV3.getBool("WEBGL_RENDER_FLOAT32_ENABLED")?4:0);ENV3.registerFlag("WEBGL_DELETE_TEXTURE_THRESHOLD",()=>-1,threshold2=>{if(threshold2<0&&threshold2!==-1)throw new Error(`WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never delete) or at least 0, but got ${threshold2}.`)});function getGlslDifferences(){let version102,attribute,varyingVs,varyingFs,texture2D,output,defineOutput,defineSpecialNaN,defineSpecialInf,defineRound;return env().getNumber("WEBGL_VERSION")===2?(version102="#version 300 es",attribute="in",varyingVs="out",varyingFs="in",texture2D="texture",output="outputColor",defineOutput="out vec4 outputColor;",defineSpecialNaN=` +============================`));let a={};return this.data.set(a,{values:e,dtype:n,refCount:1}),a}makeTensorInfo(e,t,n){let a;if(t==="string"&&n!=null&&n.length>0&&k.isString(n[0])){let r=n.map(s=>k.encodeString(s));a=this.write(r,e,t)}else a=this.write(n,e,t);return{dataId:a,shape:e,dtype:t}}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,a){this.data.set(e,{values:t,dtype:a,refCount:1})}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 a=this.readSync(n.real.dataId),r=this.readSync(n.imag.dataId);return _.mergeRealAndImagArrays(a,r)}return this.data.get(e).values}bufferSync(e){let t=this.readSync(e.dataId),n=t;if(e.dtype==="string")try{n=t.map(a=>k.decodeString(a))}catch(a){throw new Error("Failed to decode encoded string bytes into utf-8")}return Le(e.shape,e.dtype,n)}makeOutput(e,t,n){let a=this.write(e,t,n);return ns().makeTensorFromDataId(a,t,n,this)}disposeData(e){if(this.data.has(e)){let{complexTensorInfos:t}=this.data.get(e);t!=null&&(this.disposeData(t.real.dataId),this.disposeData(t.imag.dataId)),this.data.delete(e)}}disposeIntermediateTensorInfo(e){let t=e.dataId;if(this.data.has(t)){let n=this.data.get(t);n.refCount--,n.refCount<1&&this.disposeData(t)}}async time(e){let t=k.now();return e(),{kernelMs:k.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){ke([e],"where");let t=this.readSync(e.dataId);return eG(e.shape,t)}dispose(){}floatPrecision(){return 32}epsilon(){return super.epsilon()}},lT={};Oe(lT,{addImpl:()=>cT,bincountImpl:()=>Sv,bincountReduceImpl:()=>pT,ceilImpl:()=>dT,concatImpl:()=>Cv,expImpl:()=>hT,expm1Impl:()=>mT,floorImpl:()=>fT,gatherV2Impl:()=>gT,greaterImpl:()=>yT,lessImpl:()=>bT,linSpaceImpl:()=>xT,logImpl:()=>vT,maxImpl:()=>wT,maximumImpl:()=>kT,minimumImpl:()=>IT,multiplyImpl:()=>Ev,negImpl:()=>NT,notEqualImpl:()=>TT,prodImpl:()=>ST,rangeImpl:()=>Fv,rsqrtImpl:()=>CT,simpleAbsImpl:()=>uT,sliceImpl:()=>Xm,squaredDifferenceImpl:()=>ET,stridedSliceImpl:()=>_T,subImpl:()=>FT,tileImpl:()=>AT,topKImpl:()=>$T,transposeImpl:()=>_v,uniqueImpl:()=>DT});function uT(e){let t=new Float32Array(e.length);for(let n=0;n{let{x:t}=e.inputs,n=e.backend;ke(t,"abs");let a=new Float32Array(k.sizeFromShape(t.shape)),r=n.data.get(t.dataId).values;return a=uT(r),n.makeOutput(a,t.shape,"float32")},aG={kernelName:Lo,backendName:"cpu",kernelFunc:nG};function Ot(e){return(t,n,a,r,s)=>{let i=_.assertAndGetBroadcastShape(t,n),o=i.length,l=k.computeStrides(i),c=k.sizeFromShape(i),u=k.getTypedArrayFromDType(s,c),p=t.length,d=n.length,h=k.computeStrides(t),m=k.computeStrides(n),f=_.getBroadcastDims(t,i),g=_.getBroadcastDims(n,i);if(f.length+g.length===0)for(let y=0;yx[E]=0);let v=k.locToIndex(x,p,h),N=b.slice(-d);g.forEach(E=>N[E]=0);let T=k.locToIndex(N,d,m);u[y]=e(a[v],r[T])}return[u,i]}}function Bn(e){let{inputs:t,backend:n}=e,{real:a,imag:r}=t,s=n.data.get(a.dataId).values,i=n.data.get(r.dataId).values,o=n.makeTensorInfo(a.shape,"complex64"),l=n.data.get(o.dataId);return l.complexTensorInfos={real:n.makeTensorInfo(a.shape,"float32",s),imag:n.makeTensorInfo(r.shape,"float32",i)},o}var rG={kernelName:Ud,backendName:"cpu",kernelFunc:Bn};function Ym(e,t,n="float32"){if(n==="complex64"){let r=Ym(e,t,"float32"),s=Ym(e,t,"float32");return Bn({inputs:{real:r,imag:s},backend:e})}let a=k.makeZerosTypedArray(k.sizeFromShape(t),n);return e.makeTensorInfo(t,n,a)}function sr(e){let{inputs:t,backend:n}=e,{x:a}=t;return n.incRef(a.dataId),{dataId:a.dataId,shape:a.shape,dtype:a.dtype}}var sG={kernelName:il,backendName:"cpu",kernelFunc:sr};function Xi(e){let{inputs:t,backend:n}=e,{input:a}=t,r=n.data.get(a.dataId).complexTensorInfos.real,s=n.data.get(r.dataId).values;return n.makeTensorInfo(r.shape,r.dtype,s)}var iG={kernelName:uh,backendName:"cpu",kernelFunc:Xi};function gs(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{dtype:s}=a;if(s==="complex64"){if(r.dtype==="complex64")return sr({inputs:{x:r},backend:n});let i=Ym(n,r.shape,r.dtype),o=gs({inputs:{x:r},backend:n,attrs:{dtype:"float32"}}),l=Bn({inputs:{real:o,imag:i},backend:n});return n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(o),l}if(r.dtype==="complex64"){let i=Xi({inputs:{input:r},backend:n}),o=gs({inputs:{x:i},backend:n,attrs:{dtype:s}});return n.disposeIntermediateTensorInfo(i),o}if(!k.hasEncodingLoss(r.dtype,s)){let i=sr({inputs:{x:r},backend:n});return{dataId:i.dataId,shape:i.shape,dtype:s}}if(s==="int32"){let i=n.data.get(r.dataId).values,o=Int32Array.from(i);return n.makeTensorInfo(r.shape,"int32",o)}if(s==="bool"){let i=n.data.get(r.dataId).values,o=k.toTypedArray([0],r.dtype),[l,c]=Ot((u,p)=>u!==p?1:0)(r.shape,[],i,o,"bool");return n.makeTensorInfo(c,"bool",l)}throw new Error(`Error in Cast: failed to cast ${r.dtype} to ${s}`)}var oG={kernelName:zs,backendName:"cpu",kernelFunc:gs};function en(e,t,n,a){return n==null?({inputs:r,backend:s})=>{let{a:i,b:o}=r,l=s;ke([i,o],e);let c=l.data.get(i.dataId).values,u=l.data.get(o.dataId).values,p=a||i.dtype,[d,h]=t(i.shape,o.shape,c,u,p);return l.makeTensorInfo(h,p,d)}:({inputs:r,backend:s})=>{let{a:i,b:o}=r,l=s;if(i.dtype==="complex64"||o.dtype==="complex64"){let c=gs({inputs:{x:i},backend:l,attrs:{dtype:"complex64"}}),u=l.data.get(c.dataId),p=u.complexTensorInfos.real,d=u.complexTensorInfos.imag,h=l.data.get(p.dataId).values,m=l.data.get(d.dataId).values,f=gs({inputs:{x:o},backend:l,attrs:{dtype:"complex64"}}),g=l.data.get(f.dataId),y=g.complexTensorInfos.real,b=g.complexTensorInfos.imag,x=l.data.get(y.dataId).values,v=l.data.get(b.dataId).values,[N,T,E]=n(i.shape,o.shape,h,m,x,v),A=l.makeTensorInfo(E,"float32",N),$=l.makeTensorInfo(E,"float32",T),O=Bn({inputs:{real:A,imag:$},backend:l});return l.disposeIntermediateTensorInfo(c),l.disposeIntermediateTensorInfo(f),l.disposeIntermediateTensorInfo(A),l.disposeIntermediateTensorInfo($),O}else{let c=l.data.get(i.dataId).values,u=l.data.get(o.dataId).values,p=a||i.dtype,[d,h]=t(i.shape,o.shape,c,u,p);return l.makeTensorInfo(h,p,d)}}}function Av(e){return(t,n,a,r,s,i)=>{let o=_.assertAndGetBroadcastShape(t,n),l=k.sizeFromShape(o),c=o.length,u=k.computeStrides(o),p=k.getTypedArrayFromDType("float32",l),d=k.getTypedArrayFromDType("float32",l),h=_.getBroadcastDims(t,o),m=_.getBroadcastDims(n,o),f=_.mergeRealAndImagArrays(a,r),g=_.mergeRealAndImagArrays(s,i),y=t.length,b=k.computeStrides(t),x=n.length,v=k.computeStrides(n);if(h.length+m.length===0)for(let N=0;NE[W]=0);let A=k.locToIndex(E,y,b),$=T.slice(-x);m.forEach(W=>$[W]=0);let O=k.locToIndex($,x,v),V=e(f[A*2],f[A*2+1],g[O*2],g[O*2+1]);p[N]=V.real,d[N]=V.imag}return[p,d,o]}}var cT=Ot((e,t)=>e+t),lG=Av((e,t,n,a)=>({real:e+n,imag:t+a})),wp=en(qr,cT,lG),uG={kernelName:qr,backendName:"cpu",kernelFunc:wp};function Sv(e,t,n,a,r){let s=k.sizeFromShape(a),i=k.makeZerosTypedArray(r,n);for(let o=0;o=r||(s>0?i[l]+=t[o]:i[l]+=1)}return i}function pT(e,t,n,a=!1){let r=e.shape[0],s=e.shape[1],i=Le([r,n],t.dtype);for(let o=0;o=n||(a?i.set(1,o,c):t.size>0?i.set(i.get(o,c)+t.get(o,l),o,c):i.set(i.get(o,c)+1,o,c))}return i}function hu(e){return(t,n,a)=>{let r=k.getTypedArrayFromDType(n,t.length);for(let s=0;s{let{x:i}=a;if(ke(i,e),i.dtype==="string"||n==="string")throw new Error("unaryKernelFunc does not support string input/output");let o=s,l=o.data.get(i.dataId).values,c=k.sizeFromShape(i.shape),u=n||i.dtype,p=k.getArrayFromDType(u,c);for(let d=0;d{let{x:i}=a;if(ke(i,e),i.dtype==="string"||n==="string")throw new Error("unaryKernelFunc does not support string input/output");let o=s,l=o.data.get(i.dataId).values,c=n||i.dtype,u=t(l,c,r);return o.makeTensorInfo(i.shape,c,u)}}var dT=hu(e=>Math.ceil(e)),cG=mu(jo,dT),pG={kernelName:jo,backendName:"cpu",kernelFunc:cG};function Cv(e,t,n,a){let r=k.getArrayFromDType(n,k.sizeFromShape(t));if(a&&n!=="string"){let s=0;e.forEach(i=>{let o=k.sizeFromShape(i.shape);r.set(i.vals,s),s+=o})}else{let s=0;e.forEach(i=>{let o=n==="string"?_.fromUint8ToStringArray(i.vals):i.vals,l=0;for(let c=0;cMath.exp(e)),MT=mu(js,hT),dG={kernelName:js,backendName:"cpu",kernelFunc:MT},mT=hu(e=>Math.expm1(e)),hG=mu(tl,mT),mG={kernelName:tl,backendName:"cpu",kernelFunc:hG},fT=hu(e=>Math.floor(e)),fG=mu(qs,fT),gG={kernelName:qs,backendName:"cpu",kernelFunc:fG};function gT(e,t,n){let a=Le(n,e.dtype);for(let r=0;re>t?1:0),yG=en(sl,yT,null,"bool"),bG={kernelName:sl,backendName:"cpu",kernelFunc:yG},bT=Ot((e,t)=>eMath.log(e)),wG=mu(Zs,vT),kG={kernelName:Zs,backendName:"cpu",kernelFunc:wG};function wT(e,t,n,a){let r=k.getTypedArrayFromDType(a,k.sizeFromShape(n));for(let s=0;so&&(o=c)}r[s]=o}return r}var kT=Ot((e,t)=>Math.max(e,t)),IG=en(ei,kT),NG={kernelName:ei,backendName:"cpu",kernelFunc:IG},IT=Ot((e,t)=>Math.min(e,t)),TG=en(ri,IT),SG={kernelName:ri,backendName:"cpu",kernelFunc:TG},Ev=Ot((e,t)=>e*t),CG=Av((e,t,n,a)=>({real:e*n-t*a,imag:e*a+t*n})),$v=en(si,Ev,CG),EG={kernelName:si,backendName:"cpu",kernelFunc:$v};function NT(e,t,n){let a=k.createScalarValue(-1,n);return Ev([],t,a,e,n)}function _G(e){let{inputs:t,backend:n}=e,{x:a}=t;ke(a,"neg");let r=n.data.get(a.dataId).values,[s,i]=NT(r,a.shape,a.dtype);return n.makeTensorInfo(i,a.dtype,s)}var FG={kernelName:fl,backendName:"cpu",kernelFunc:_G},TT=Ot((e,t)=>e!==t?1:0),AG=en(gl,TT,null,"bool"),$G={kernelName:gl,backendName:"cpu",kernelFunc:AG};function _v(e,t,n,a,r){let s=t.length,i=k.sizeFromShape(t),o=k.computeStrides(t),l=k.computeStrides(r),c=k.getTypedArrayFromDType(n,k.sizeFromShape(r));for(let u=0;un.disposeIntermediateTensorInfo(b)),n.makeTensorInfo(y,g,m)}var RG={kernelName:kl,backendName:"cpu",kernelFunc:MG};function Fv(e,t,n,a){let r=e===t,s=e1;if(r||s||i)return k.makeZerosTypedArray(0,a);let o=Math.abs(Math.ceil((t-e)/n)),l=k.makeZerosTypedArray(o,a);t1/Math.sqrt(e)),PG=mu(fi,CT),OG={kernelName:fi,backendName:"cpu",kernelFunc:PG};function Xm(e,t,n,a,r){let s=hn.isSliceContinous(a,t,n),i=k.sizeFromShape(n),o=k.computeStrides(a);if(s){let p=hn.computeFlatOffset(t,o);return r==="string"?e.slice(p,p+i):e.subarray(p,p+i)}let l=r==="string"?_.fromUint8ToStringArray(e):e,c=Le(a,r,l),u=Le(n,r);for(let p=0;pm+t[f]);u.set(c.get(...h),...d)}return r==="string"?_.fromStringArrayToUint8(u.values):u.values}function Yi(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{begin:s,size:i}=a;ke(r,"slice");let[o,l]=hn.parseSliceParams(r,s,i);hn.assertParamsValid(r,o,l);let c=n.data.get(r.dataId).values,u=Xm(c,o,l,r.shape,r.dtype);return n.makeTensorInfo(l,r.dtype,u)}var LG={kernelName:El,backendName:"cpu",kernelFunc:Yi},ET=Ot((e,t)=>{let n=e-t;return n*n}),zG=en(wi,ET),BG={kernelName:wi,backendName:"cpu",kernelFunc:zG};function _T(e,t,n,a){let r=Le(e,t.dtype);for(let s=0;se-t),WG=Av((e,t,n,a)=>({real:e-n,imag:t-a})),Dv=en(ki,FT,WG),VG={kernelName:ki,backendName:"cpu",kernelFunc:Dv};function AT(e,t){let n=new Array(e.rank);for(let r=0;rx.value-b.value);let f=p*a,g=l.subarray(f,f+a),y=c.subarray(f,f+a);for(let b=0;b{for(let g=0;gnew tG,1);var RT=it(Jo,e=>e>=0?e:Math.exp(e)-1),GG={kernelName:Jo,backendName:"cpu",kernelFunc:RT};function PT(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{alpha:s}=a;ke([r],"leakyRelu");let i=k.sizeFromShape(r.shape),o=n.data.get(r.dataId).values,l=k.getTypedArrayFromDType("float32",i);for(let c=0;ce<0?t*e:e);function OT(e){let{inputs:t,backend:n}=e,{x:a,alpha:r}=t;ke([a,r],"prelu");let s=n.data.get(a.dataId).values,i=n.data.get(r.dataId).values,[o,l]=jG(a.shape,r.shape,s,i,a.dtype);return n.makeTensorInfo(l,a.dtype,o)}var qG={kernelName:ui,backendName:"cpu",kernelFunc:OT},LT=it(ci,e=>Math.max(0,e)),KG={kernelName:ci,backendName:"cpu",kernelFunc:LT},zT=it(di,e=>Math.min(Math.max(0,e),6)),XG={kernelName:di,backendName:"cpu",kernelFunc:zT};function Mv(e,t,n,a,r){if(n==="linear")return sr({inputs:{x:t},backend:e});if(n==="relu")return LT({inputs:{x:t},backend:e});if(n==="elu")return RT({inputs:{x:t},backend:e});if(n==="relu6")return zT({inputs:{x:t},backend:e});if(n==="prelu")return OT({inputs:{x:t,alpha:a},backend:e});if(n==="leakyrelu")return PT({inputs:{x:t},backend:e,attrs:{alpha:r}});throw new Error(`Activation ${n} has not been implemented for the CPU backend.`)}function It(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{shape:s}=a,i=k.sizeFromShape(r.shape),o=k.inferFromImplicitShape(s,i),l=k.sizeFromShape(o);k.assert(i===l,()=>`The new shape (${o}) has ${l} elements and the old shape (${r.shape}) has ${i} elements. The new shape and old shape must have the same number of elements.`),n.incRef(r.dataId);let c=n.data.get(r.dataId);if(c.complexTensorInfos!=null){let u=c.complexTensorInfos.real,p=c.complexTensorInfos.imag;u.shape=o,p.shape=o}return{dataId:r.dataId,shape:o,dtype:r.dtype}}var YG={kernelName:Nl,backendName:"cpu",kernelFunc:It};function BT(e){let{inputs:t,backend:n,attrs:a}=e,{a:r,b:s}=t,{transposeA:i,transposeB:o}=a;ke([r,s],"matMul");let l=r.shape.length,c=s.shape.length,u=i?r.shape[l-2]:r.shape[l-1],p=o?s.shape[c-1]:s.shape[c-2],d=i?r.shape[l-1]:r.shape[l-2],h=o?s.shape[c-2]:s.shape[c-1],m=r.shape.slice(0,-2),f=s.shape.slice(0,-2),g=k.sizeFromShape(m),y=k.sizeFromShape(f),b=g===y||g===1||y===1;k.assert(l>=2&&c>=2&&b,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${m}) and (${f}).`);let x=(g>y?r.shape.slice(0,-2):s.shape.slice(0,-2)).concat([d,h]);k.assert(u===p,()=>`Error in matMul: inner shapes (${u}) and (${p}) of Tensors with shapes ${r.shape} and ${s.shape} and transposeA=${i} and transposeB=${o} must match.`);let v=i?[g,u,d]:[g,d,u],N=o?[y,h,p]:[y,p,h],T=It({inputs:{x:r},backend:n,attrs:{shape:v}}),E=It({inputs:{x:s},backend:n,attrs:{shape:N}}),A=i?T.shape[1]:T.shape[2],$=i?T.shape[2]:T.shape[1],O=o?E.shape[1]:E.shape[2],V=Math.max(g,y),W=n.data.get(T.dataId).values,H=n.data.get(E.dataId).values,X=k.computeStrides(T.shape),q=k.computeStrides(E.shape),[K,J,te]=i?[X[0],1,X[1]]:[X[0],X[1],1],[Q,ie,re]=o?[1,q[1],q[0]]:[q[1],1,q[0]],ae=$*O,oe=Le([V,$,O],T.dtype),he=oe.values,ce=n.blockSize;for(let ge=0;geMath.acos(e)),tH={kernelName:zo,backendName:"cpu",kernelFunc:eH},nH=it(Bo,e=>Math.acosh(e)),aH={kernelName:Bo,backendName:"cpu",kernelFunc:nH};function rH(e){let{inputs:t,backend:n}=e,a=t;ke(t,"addN");let r=a.map(o=>n.data.get(o.dataId).values),s=Le(a[0].shape,a[0].dtype),i=s.values;for(let o=0;ob&&(b=N,x=v)}h[g]=x}return c.forEach(g=>n.disposeIntermediateTensorInfo(g)),n.makeTensorInfo(u,"int32",h)}var pH={kernelName:Ps,backendName:"cpu",kernelFunc:cH};function dH(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{axis:s}=a;ke(r,"argMin");let i=k.parseAxisParam(s,r.shape),o=_.getAxesPermutation(i,r.shape.length),l=r,c=[];o!=null&&(l=ba({inputs:{x:r},backend:n,attrs:{perm:o}}),c.push(l),i=_.getInnerMostAxes(i.length,l.shape.length)),i=[i[0]],_.assertAxesAreInnerMostDims("argMin",i,l.shape.length);let[u,p]=_.computeOutAndReduceShapes(l.shape,i),d=k.sizeFromShape(u),h=k.makeZerosTypedArray(d,"int32"),m=k.sizeFromShape(p),f=n.data.get(l.dataId).values;for(let g=0;gn.disposeIntermediateTensorInfo(g)),n.makeTensorInfo(u,"int32",h)}var hH={kernelName:dc,backendName:"cpu",kernelFunc:dH},mH=it(Wo,e=>Math.asin(e)),fH={kernelName:Wo,backendName:"cpu",kernelFunc:mH},gH=it(Vo,e=>Math.asinh(e)),yH={kernelName:Vo,backendName:"cpu",kernelFunc:gH},bH=it(Uo,e=>Math.atan(e)),xH={kernelName:Uo,backendName:"cpu",kernelFunc:bH},vH=Ot((e,t)=>Math.atan2(e,t)),wH=en(Ho,vH),kH={kernelName:Ho,backendName:"cpu",kernelFunc:wH},IH=it(Go,e=>Math.atanh(e)),NH={kernelName:Go,backendName:"cpu",kernelFunc:IH};function Rv(e,t,n,a,r,s){let i=r.strideHeight,o=r.strideWidth,l=r.dilationHeight,c=r.dilationWidth,u=r.effectiveFilterHeight,p=r.effectiveFilterWidth,d=r.padInfo.top,h=r.padInfo.left,m=s==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,f=Le(r.outShape,n),g=f.values,y=r.outShape[1]*r.outShape[2]*r.outShape[3],b=r.outShape[2]*r.outShape[3],x=r.outShape[3];for(let v=0;vJ?J=ce:s==="avg"&&(te+=ce,Q++)}if(isNaN(J))break}let ie=W+H*x+E;g[ie]=s==="avg"?te/Q:J}}}return f}function WT(e,t,n,a,r=!1,s=!1){let i=Le(a.outShape,"int32"),o=a.strideHeight,l=a.strideWidth,c=a.dilationHeight,u=a.dilationWidth,p=a.effectiveFilterHeight,d=a.effectiveFilterWidth,h=a.padInfo.top,m=a.padInfo.left,f=Le(t,n,e);for(let g=0;gO&&(O=K,r?V=s?((g*a.inHeight+W)*a.inWidth+X)*a.inChannels+y:(W*a.inWidth+X)*a.inChannels+y:V=H*d+q)}}i.set(V,g,b,T,y)}}return i}function VT(e,t,n,a,r,s){let i=r.strideDepth,o=r.strideHeight,l=r.strideWidth,c=r.dilationDepth,u=r.dilationHeight,p=r.dilationWidth,d=r.effectiveFilterDepth,h=r.effectiveFilterHeight,m=r.effectiveFilterWidth,f=r.padInfo.front,g=r.padInfo.top,y=r.padInfo.left,b=s==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,x=Le(r.outShape,n),v=x.values,N=r.outShape[1]*r.outShape[2]*r.outShape[3]*r.outShape[4],T=r.outShape[2]*r.outShape[3]*r.outShape[4],E=r.outShape[3]*r.outShape[4],A=r.outShape[4];for(let $=0;$Ie?Ie=gt:s==="avg"&&(Te+=gt,Ee++),isNaN(Ie))break}if(isNaN(Ie))break}if(isNaN(Ie))break}let Me=be+W;v[Me]=s==="avg"?Te/Ee:Ie}}}}return x}function TH(e,t){let n=Le(t.outShape,"int32"),a=t.strideDepth,r=t.strideHeight,s=t.strideWidth,i=t.dilationDepth,o=t.dilationHeight,l=t.dilationWidth,c=t.effectiveFilterDepth,u=t.effectiveFilterHeight,p=t.effectiveFilterWidth,d=t.padInfo.front,h=t.padInfo.top,m=t.padInfo.left;for(let f=0;f=H&&(H=re,X=K*u*p+te*u+ie)}}}n.set(X,f,y,N,$,g)}}}return n}function SH(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t;ke(r,"avgPool");let{filterSize:s,strides:i,pad:o,dimRoundingMode:l}=a,c=1;k.assert(_.eitherStridesOrDilationsAreOne(i,c),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${c}'`);let u=_.computePool2DInfo(r.shape,s,i,c,o,l),p;if(u.filterWidth===1&&u.filterHeight===1&&k.arraysEqual(u.inShape,u.outShape))p=sr({inputs:{x:r},backend:n});else{let d=n.data.get(r.dataId).values,h=k.computeStrides(r.shape),m=Rv(d,r.shape,r.dtype,h,u,"avg");p=n.makeTensorInfo(u.outShape,r.dtype,m.values)}return p}var CH={kernelName:Os,backendName:"cpu",kernelFunc:SH};function EH(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{filterSize:s,strides:i,pad:o,dimRoundingMode:l,dataFormat:c,dilations:u}=a;ke(r,"avgPool3d");let p=u;p==null&&(p=[1,1,1]);let d=_.computePool3DInfo(r.shape,s,i,p,o,l,c),h=n.data.get(r.dataId).values,m=VT(h,r.shape,r.dtype,k.computeStrides(r.shape),d,"avg");return n.makeTensorInfo(m.shape,"float32",m.values)}var _H={kernelName:hc,backendName:"cpu",kernelFunc:EH};function FH(e){let{inputs:t,backend:n,attrs:a}=e,{dy:r,input:s}=t,{filterSize:i,strides:o,pad:l,dilations:c,dimRoundingMode:u}=a;ke([r,s],"avgPool3DGrad");let p=_.computePool3DInfo(s.shape,i,o,c,l,u),d=p.strideDepth,h=p.strideHeight,m=p.strideWidth,f=p.filterDepth,g=p.filterHeight,y=p.filterWidth,b=p.dilationDepth,x=p.dilationHeight,v=p.dilationWidth,N=p.effectiveFilterDepth,T=p.effectiveFilterHeight,E=p.effectiveFilterWidth,A=N-1-p.padInfo.front,$=E-1-p.padInfo.left,O=T-1-p.padInfo.top,V=Le(s.shape,"float32"),W=1/(f*g*y),H=n.bufferSync(r);for(let X=0;X=p.outDepth||Math.floor(he)!==he))for(let ce=0;ce=p.outHeight||Math.floor(ge)!==ge))for(let be=0;be=p.outWidth||Math.floor(Ie)!==Ie||(ae+=H.get(X,he,ge,Ie,q))}}}V.set(ae*W,X,K,J,te,q)}return n.makeTensorInfo(V.shape,V.dtype,V.values)}var AH={kernelName:Wd,backendName:"cpu",kernelFunc:FH};function $H(e){let{inputs:t,backend:n,attrs:a}=e,{dy:r,input:s}=t,i=s;ke([r,s],"avgPoolGrad");let{filterSize:o,strides:l,pad:c}=a,u=_.computePool2DInfo(i.shape,o,l,1,c),p=u.strideHeight,d=u.strideWidth,h=u.filterHeight,m=u.filterWidth,f=u.dilationHeight,g=u.dilationWidth,y=u.effectiveFilterHeight,b=u.effectiveFilterWidth,x=b-1-u.padInfo.left,v=y-1-u.padInfo.top,N=Le(i.shape,"float32"),T=1/(h*m),E=n.data.get(r.dataId).values,A=Le(r.shape,"float32",E);for(let $=0;$=u.outHeight||Math.floor(J)!==J))for(let te=0;te=u.outWidth||Math.floor(Q)!==Q||(q+=A.get($,J,Q,O))}}N.set(q*T,$,V,W,O)}return n.makeTensorInfo(N.shape,N.dtype,N.values)}var DH={kernelName:Bd,backendName:"cpu",kernelFunc:$H};function MH(e){let{inputs:t,backend:n,attrs:a}=e,{x:r,scale:s,offset:i,mean:o,variance:l}=t;k.assert(o.shape.length===l.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),k.assert(i==null||o.shape.length===i.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),k.assert(s==null||o.shape.length===s.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks."),ke([r,o,l,s,i],"batchNorm");let{varianceEpsilon:c}=a;c==null&&(c=.001);let u=n.data.get(r.dataId).values,p=n.data.get(o.dataId).values,d=n.data.get(l.dataId).values,h=s?n.data.get(s.dataId).values:new Float32Array([1]),m=i?n.data.get(i.dataId).values:new Float32Array([0]),f=new Float32Array(u.length),g=m.length,y=h.length,b=d.length,x=p.length,v=0,N=0,T=0,E=0;for(let A=0;A=g&&(v=0),N>=x&&(N=0),T>=y&&(T=0),E>=b&&(E=0);return n.makeTensorInfo(r.shape,r.dtype,f)}var RH={kernelName:Xs,backendName:"cpu",kernelFunc:MH};function PH(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{blockShape:s,crops:i}=a;ke([r],"batchToSpaceND");let o=s.reduce((y,b)=>y*b),l=_.getReshaped(r.shape,s,o),c=_.getPermuted(l.length,s.length),u=_.getReshapedPermuted(r.shape,s,o),p=_.getSliceBeginCoords(i,s.length),d=_.getSliceSize(u,i,s.length),h=It({inputs:{x:r},backend:n,attrs:{shape:l}}),m=ba({inputs:{x:h},backend:n,attrs:{perm:c}}),f=It({inputs:{x:m},backend:n,attrs:{shape:u}}),g=Yi({inputs:{x:f},backend:n,attrs:{begin:p,size:d}});return n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(m),n.disposeIntermediateTensorInfo(f),g}var OH={kernelName:mc,backendName:"cpu",kernelFunc:PH};function LH(e){let{inputs:t,backend:n,attrs:a}=e,{x:r,weights:s}=t,{size:i}=a,o=n.data.get(r.dataId).values,l=n.data.get(s.dataId).values,c=Sv(o,l,s.dtype,s.shape,i);return n.makeTensorInfo([i],s.dtype,c)}var zH={kernelName:Vd,backendName:"cpu",kernelFunc:LH},BH=it(Kr,(e,t)=>{let n=t;return e>n.clipValueMax?n.clipValueMax:e{let{x:t}=e.inputs,n=e.backend,a=new Float32Array(k.sizeFromShape(t.shape)),r=n.data.get(t.dataId),s=r.complexTensorInfos.real,i=r.complexTensorInfos.imag,o=n.data.get(s.dataId).values,l=n.data.get(i.dataId).values;for(let c=0;cf.shape),s);if(k.sizeFromShape(i)===0)return n.makeTensorInfo(i,t[0].dtype,[]);let o=t.filter(f=>k.sizeFromShape(f.shape)>0);if(o.length===1)return sr({inputs:{x:o[0]},backend:n});let l=o.map(f=>f.shape);if(_.assertParamsConsistent(l,s),o[0].dtype==="complex64"){let f=o.map(v=>Xi({inputs:{input:v},backend:n})),g=o.map(v=>fu({inputs:{input:v},backend:n})),y=gu({inputs:f,backend:n,attrs:{axis:s}}),b=gu({inputs:g,backend:n,attrs:{axis:s}}),x=Bn({inputs:{real:y,imag:b},backend:n});return f.forEach(v=>n.disposeIntermediateTensorInfo(v)),g.forEach(v=>n.disposeIntermediateTensorInfo(v)),n.disposeIntermediateTensorInfo(y),n.disposeIntermediateTensorInfo(b),x}let c=o.map(f=>{let g=k.sizeFromShape(f.shape.slice(s));return It({inputs:{x:f},backend:n,attrs:{shape:[-1,g]}})}),u=c.map(f=>({vals:n.data.get(f.dataId).values,shape:f.shape}));i=_.computeOutShape(c.map(f=>f.shape),1);let p=c[0].shape[0]===1,d=Cv(u,i,t[0].dtype,p),h=_.computeOutShape(o.map(f=>f.shape),s),m=n.makeTensorInfo(h,t[0].dtype,d);return c.forEach(f=>n.disposeIntermediateTensorInfo(f)),m}var HH={kernelName:qo,backendName:"cpu",kernelFunc:gu};function UT(e){let{inputs:t,backend:n,attrs:a}=e,{x:r,filter:s}=t,{strides:i,pad:o,dataFormat:l,dilations:c,dimRoundingMode:u}=a;ke([r,s],"conv2d");let p=_.convertConv2DDataFormat(l),d=_.computeConv2DInfo(r.shape,s.shape,i,c,o,u,!1,p),h=d.filterHeight,m=d.filterWidth,f=d.dilationHeight,g=d.dilationWidth,y=d.padInfo.left,b=d.padInfo.top,x=d.dataFormat==="channelsLast",v=new Bt(d.outShape,r.dtype),N=k.computeStrides(r.shape),T=k.computeStrides(s.shape),E=N[0],A=x?N[1]:N[2],$=x?N[2]:1,O=x?1:N[1],V=v.strides[0],W=x?v.strides[1]:v.strides[2],H=x?v.strides[2]:1,X=x?1:v.strides[1],q=n.data.get(r.dataId).values,K=n.data.get(s.dataId).values,J=v.values;for(let te=0;te=d.inHeight)continue;let ge=he*T[0],be=Q+ce*A;for(let Ie=0;Ie=d.inWidth)continue;let nt=ge+Me*T[1],Ve=be+Je*$,ut=nt;for(let Ge=0;Ge=c.inDepth)continue;let te=K*$[0],Q=V+J*A[1];for(let ie=0;ie=c.inHeight)continue;let ce=te+oe*$[1],ge=Q+he*A[2];for(let be=0;be=c.inWidth)continue;let Je=ce+Ee*$[2],nt=ge+Me*c.inChannels,Ve=Je;for(let ut=0;utMath.cos(e)),r6={kernelName:Vs,backendName:"cpu",kernelFunc:a6},s6=it(Ko,e=>Math.cosh(e)),i6={kernelName:Ko,backendName:"cpu",kernelFunc:s6};function o6(e){let{inputs:t,backend:n,attrs:a}=e,{image:r,boxes:s,boxInd:i}=t,{cropSize:o,method:l,extrapolationValue:c}=a,[u,p,d,h]=r.shape,m=s.shape[0],[f,g]=o,y=Le([m,f,g,h],"float32"),b=n.data.get(s.dataId).values,x=n.data.get(i.dataId).values,v=n.data.get(r.dataId).values,N=k.computeStrides(r.shape),T=k.computeStrides(y.shape);for(let E=0;E=u)continue;let X=f>1?(V-$)*(p-1)/(f-1):0,q=g>1?(W-O)*(d-1)/(g-1):0;for(let K=0;K1?$*(p-1)+K*X:.5*($+V)*(p-1);if(J<0||J>p-1){for(let te=0;te1?O*(d-1)+re*q:.5*(O+W)*(d-1);if(ae<0||ae>d-1){for(let ge=0;ge1?O*(d-1)+te*q:.5*(O+W)*(d-1);if(Q<0||Q>d-1){for(let ae=0;aey+m-b-1:(y,b)=>y+b;for(let y=0;y`Only NHWC dataFormat supported on CPU for depthToSpace. Got ${i}`),k.assert(s>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${s}`);let o=r.shape[0],l=r.shape[1],c=r.shape[2],u=r.shape[3],p=l*s,d=c*s,h=u/(s*s),m=n.data.get(r.dataId).values,f=new Float32Array(o*p*d*h),g=0;for(let y=0;y`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${i} and dilations '${d}'`);let h=_.computeConv2DInfo(r.shape,s.shape,i,d,o,c,!0),{filterHeight:m,filterWidth:f,dilationHeight:g,dilationWidth:y,padInfo:b}=h,x=b.left,v=b.top,N=h.outChannels/h.inChannels,T=new Bt(h.outShape,r.dtype),E=n.data.get(r.dataId).values,A=n.data.get(s.dataId).values,$=T.values;for(let O=0;O=h.inHeight)continue;let te=K*p[0],Q=V+J*u[1];for(let ie=0;ie=h.inWidth)continue;let ce=te+oe*p[1],ge=Q+he*h.inChannels,be=re,Ie=ce;for(let Te=0;Te{let{x:a,filter:r}=e,{strides:s,pad:i,dilations:o}=n,l=t,c=l.data.get(a.dataId).values,u=a.shape.length,p=l.data.get(r.dataId).values,d=r.shape.length,{batchSize:h,inHeight:m,inWidth:f,inChannels:g,outHeight:y,outWidth:b,padInfo:x,strideHeight:v,strideWidth:N,filterHeight:T,filterWidth:E,dilationHeight:A,dilationWidth:$,outShape:O}=_.computeDilation2DInfo(a.shape,r.shape,s,i,"NHWC",o),V=k.sizeFromShape(O),W=O.length,H=k.getArrayFromDType(a.dtype,V);for(let X=0;X=0&&oe=0&&ceie&&(ie=Ie)}}}let re=k.locToIndex([X,q,J,Q],W,k.computeStrides(O));H[re]=ie}}}return{dataId:l.write(k.toTypedArray(H,a.dtype),O,a.dtype),shape:O,dtype:a.dtype}}},I6={kernelName:Zd,backendName:"cpu",kernelFunc:({inputs:e,backend:t,attrs:n})=>{let{x:a,filter:r,dy:s}=e,{strides:i,pad:o,dilations:l}=n,c=t,u=k.toNestedArray(a.shape,c.data.get(a.dataId).values),p=k.toNestedArray(r.shape,c.data.get(r.dataId).values),{batchSize:d,inHeight:h,inWidth:m,inChannels:f,outHeight:g,outWidth:y,padInfo:b,strideHeight:x,strideWidth:v,filterHeight:N,filterWidth:T,dilationHeight:E,dilationWidth:A,outShape:$}=_.computeDilation2DInfo(a.shape,r.shape,i,o,"NHWC",l);k.assert(s.rank===$.length,()=>`Error in ${Zd}, dy must have the same rank as output ${$.length}, but got ${s.rank}`);let O=k.toNestedArray($,c.data.get(s.dataId).values),V=k.makeZerosNestedTypedArray(r.shape,r.dtype);for(let W=0;W=0&&ae=0&&hete&&(te=ce,Q=re,ie=oe)}}}V[Q][ie][J]+=O[W][H][q][J]}}}return{dataId:c.write(k.toTypedArray(V,a.dtype),r.shape,r.dtype),shape:r.shape,dtype:r.dtype}}},N6={kernelName:Jd,backendName:"cpu",kernelFunc:({inputs:e,backend:t,attrs:n})=>{let{x:a,filter:r,dy:s}=e,{strides:i,pad:o,dilations:l}=n,c=t,u=k.toNestedArray(a.shape,c.data.get(a.dataId).values),p=k.toNestedArray(r.shape,c.data.get(r.dataId).values),{batchSize:d,inHeight:h,inWidth:m,inChannels:f,outHeight:g,outWidth:y,padInfo:b,strideHeight:x,strideWidth:v,filterHeight:N,filterWidth:T,dilationHeight:E,dilationWidth:A,outShape:$}=_.computeDilation2DInfo(a.shape,r.shape,i,o,"NHWC",l);k.assert(s.rank===$.length,()=>`Error in ${Jd}, dy must have the same rank as output ${$.length}, but got ${s.rank}`);let O=k.toNestedArray($,c.data.get(s.dataId).values),V=k.makeZerosNestedTypedArray(a.shape,a.dtype);for(let W=0;W=0&&ae=0&&hete&&(te=ce,Q=ae,ie=he)}}}V[W][Q][ie][J]+=O[W][H][q][J]}}}return{dataId:c.write(k.toTypedArray(V,a.dtype),a.shape,a.dtype),shape:a.shape,dtype:a.dtype}}};function T6(e){let{inputs:t,backend:n}=e,{dy:a,y:r}=t;ke([a,r],"eluGrad");let s=new Float32Array(k.sizeFromShape(r.shape)),i=n.data.get(r.dataId).values,o=n.data.get(a.dataId).values;for(let l=0;l=1?s[l]=o[l]:s[l]=o[l]*(c+1)}return n.makeTensorInfo(r.shape,"float32",s)}var S6={kernelName:Qd,backendName:"cpu",kernelFunc:T6},C6=Ot((e,t)=>e===t?1:0),HT=en(Qo,C6,null,"bool"),E6={kernelName:Qo,backendName:"cpu",kernelFunc:HT},_6=_.ERF_P,F6=_.ERF_A1,A6=_.ERF_A2,$6=_.ERF_A3,D6=_.ERF_A4,M6=_.ERF_A5,R6=it(Zo,e=>{let t=Math.sign(e),n=Math.abs(e),a=1/(1+_6*n);return t*(1-((((M6*a+D6)*a+$6)*a+A6)*a+F6)*a*Math.exp(-n*n))}),P6={kernelName:Zo,backendName:"cpu",kernelFunc:R6};function Jm(e){let{inputs:t,backend:n,attrs:a}=e,{input:r}=t,{dim:s}=a,i=r.shape.length,o=r.shape.slice(),l=s;return s<0&&(k.assert(-(i+1)<=s,()=>`Axis must be in the interval [${-(i+1)}, ${i}]`),l=i+s+1),o.splice(l,0,1),It({inputs:{x:r},backend:n,attrs:{shape:o}})}var O6={kernelName:el,backendName:"cpu",kernelFunc:Jm},L6=Ot((e,t)=>e/t),Pv=en(Hs,L6),Ov={kernelName:Hs,backendName:"cpu",kernelFunc:Pv};function jT(e,t,n){let a=e.shape,r=a[0],s=a[1],i=n.data.get(e.dataId),o=i.complexTensorInfos.real,l=i.complexTensorInfos.imag,c=[r,s],u=k.sizeFromShape(c),p=k.getTypedArrayFromDType("float32",u),d=k.getTypedArrayFromDType("float32",u);for(let g=0;g{let{image:a}=e,r=n,s=k.getTypedArrayFromDType(a.dtype,k.sizeFromShape(a.shape)),[i,o,l,c]=a.shape,u=r.data.get(a.dataId).values;for(let p=0;p=0&&xMath.floor(e/t)),K6=en(Ks,q6,null,"int32"),X6={kernelName:Ks,backendName:"cpu",kernelFunc:K6};function Y6(e){let{inputs:t,backend:n,attrs:a}=e,{x:r,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:c,dataFormat:u,dilations:p,dimRoundingMode:d,activation:h,leakyreluAlpha:m}=a,f=UT({inputs:{x:r,filter:s},backend:n,attrs:{strides:l,pad:c,dataFormat:u,dilations:p,dimRoundingMode:d}});if(i){let g=f;f=wp({inputs:{a:f,b:i},backend:n}),n.disposeIntermediateTensorInfo(g)}if(h){let g=f;f=Mv(n,f,h,o,m),n.disposeIntermediateTensorInfo(g)}return f}var J6={kernelName:Si,backendName:"cpu",kernelFunc:Y6};function Z6(e){let{inputs:t,backend:n,attrs:a}=e,{x:r,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:c,dataFormat:u,dilations:p,dimRoundingMode:d,activation:h,leakyreluAlpha:m}=a,f=GT({inputs:{x:r,filter:s},backend:n,attrs:{strides:l,pad:c,dataFormat:u,dilations:p,dimRoundingMode:d}});if(i){let g=f;f=wp({inputs:{a:f,b:i},backend:n}),n.disposeIntermediateTensorInfo(g)}if(h){let g=f;f=Mv(n,f,h,o,m),n.disposeIntermediateTensorInfo(g)}return f}var Q6={kernelName:Ci,backendName:"cpu",kernelFunc:Z6};function ej(e){let{inputs:t,backend:n}=e,{params:a,indices:r}=t,s=k.sizeFromShape(a.shape),i=r.shape,o=i[i.length-1],[l,c,u,p]=_.prepareAndValidate(a,r);if(c===0)return n.makeTensorInfo(l,a.dtype,[]);let d=Le([c,u],a.dtype),h=n.data.get(r.dataId).values,m=n.data.get(a.dataId).values;for(let f=0;f=s/u)throw new Error(`Invalid indices: ${g} does not index into ${a.shape}`);for(let b=0;be>=t?1:0),sj=en(Ys,rj,null,"bool"),ij={kernelName:Ys,backendName:"cpu",kernelFunc:sj};function oj(e){let{inputs:t,backend:n}=e,{input:a}=t,r=k.sizeFromShape(a.shape),s=a.shape[a.shape.length-1],i=r/s,o=It({inputs:{x:a},backend:n,attrs:{shape:[i,s]}}),l=jT(o,!0,n),c=It({inputs:{x:l},backend:n,attrs:{shape:a.shape}});return n.disposeIntermediateTensorInfo(o),n.disposeIntermediateTensorInfo(l),c}var lj={kernelName:th,backendName:"cpu",kernelFunc:oj},uj=it(ol,e=>Number.isFinite(e)?1:0,"bool"),cj={kernelName:ol,backendName:"cpu",kernelFunc:uj},pj=it(ll,e=>Math.abs(e)===Infinity?1:0,"bool"),dj={kernelName:ll,backendName:"cpu",kernelFunc:pj},hj=it(ul,e=>Number.isNaN(e)?1:0,"bool"),mj={kernelName:ul,backendName:"cpu",kernelFunc:hj},fj=Ot((e,t)=>e<=t?1:0),gj=en(pl,fj,null,"bool"),yj={kernelName:pl,backendName:"cpu",kernelFunc:gj};function bj(e){let{backend:t,attrs:n}=e,{start:a,stop:r,num:s}=n,i=xT(a,r,s);return t.makeTensorInfo([i.length],"float32",i)}var xj={kernelName:ah,backendName:"cpu",kernelFunc:bj},vj=it(dl,e=>Math.log1p(e)),wj={kernelName:dl,backendName:"cpu",kernelFunc:vj},kj=Ot((e,t)=>e&&t),Ij=en(hl,kj,null,"bool"),Nj={kernelName:hl,backendName:"cpu",kernelFunc:Ij},Tj=it(xc,e=>e?0:1,"bool"),Sj={kernelName:xc,backendName:"cpu",kernelFunc:Tj},Cj=Ot((e,t)=>e||t),Ej=en(vc,Cj,null,"bool"),_j={kernelName:vc,backendName:"cpu",kernelFunc:Ej};function Fj(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{depthRadius:s,bias:i,alpha:o,beta:l}=a;ke(r,"LRN");let c=r.shape[3],u=c-1,p=n.data.get(r.dataId).values,d=k.sizeFromShape(r.shape),h=new Float32Array(d);function m(f){let g=f%c,y=f-g+Math.max(0,g-s),b=f-g+Math.min(g+s,u),x=0;for(;y<=b;y++){let v=p[y];x+=v*v}return x}for(let f=0;f`Error in maxPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${c}'`);let u=_.computePool2DInfo(r.shape,s,i,c,o,l),p;if(u.filterWidth===1&&u.filterHeight===1&&k.arraysEqual(u.inShape,u.outShape))p=sr({inputs:{x:r},backend:n});else{let d=n.data.get(r.dataId).values,h=k.computeStrides(r.shape),m=Rv(d,r.shape,r.dtype,h,u,"max");p=n.makeTensorInfo(u.outShape,r.dtype,m.values)}return p}var Pj={kernelName:ti,backendName:"cpu",kernelFunc:Rj};function Oj(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{filterSize:s,strides:i,pad:o,dimRoundingMode:l,dataFormat:c,dilations:u}=a;ke(r,"maxPool3d");let p=u;p==null&&(p=[1,1,1]);let d=_.computePool3DInfo(r.shape,s,i,p,o,l,c),h=n.data.get(r.dataId).values,m=VT(h,r.shape,r.dtype,k.computeStrides(r.shape),d,"max");return n.makeTensorInfo(m.shape,"float32",m.values)}var Lj={kernelName:kc,backendName:"cpu",kernelFunc:Oj};function zj(e){let{inputs:t,backend:n,attrs:a}=e,{dy:r,input:s}=t,{filterSize:i,strides:o,pad:l,dilations:c,dimRoundingMode:u}=a;ke([r,s],"maxPool3DGrad");let p=_.computePool3DInfo(s.shape,i,o,c,l,u),d=n.bufferSync(s),h=TH(d,p),m=p.strideDepth,f=p.strideHeight,g=p.strideWidth,y=p.dilationDepth,b=p.dilationHeight,x=p.dilationWidth,v=p.effectiveFilterDepth,N=p.effectiveFilterHeight,T=p.effectiveFilterWidth,E=v-1-p.padInfo.front,A=T-1-p.padInfo.left,$=N-1-p.padInfo.top,O=Le(s.shape,"float32"),V=n.bufferSync(r);for(let W=0;W=p.outDepth||Math.floor(ae)!==ae))for(let oe=0;oe=p.outHeight||Math.floor(he)!==he))for(let ce=0;ce=p.outWidth||Math.floor(ge)!==ge)continue;let be=v*N*T-1-h.get(W,ae,he,ge,H),Ie=re*N*T+oe*T+ce,Te=be===Ie?1:0;Te!==0&&(ie+=V.get(W,ae,he,ge,H)*Te)}}}O.set(ie,W,X,q,K,H)}return n.makeTensorInfo(O.shape,O.dtype,O.values)}var Bj={kernelName:ih,backendName:"cpu",kernelFunc:zj};function Wj(e){let{inputs:t,backend:n,attrs:a}=e,{dy:r,input:s,output:i}=t,o=s;ke([s,i],"maxPoolGrad");let{filterSize:l,strides:c,pad:u,dimRoundingMode:p}=a,d=_.computePool2DInfo(o.shape,l,c,1,u,p),h=n.data.get(o.dataId).values,m=Le(d.outShape,o.dtype,WT(h,o.shape,o.dtype,d).values),f=d.strideHeight,g=d.strideWidth,y=d.dilationHeight,b=d.dilationWidth,x=d.effectiveFilterHeight,v=d.effectiveFilterWidth,N=v-1-d.padInfo.left,T=x-1-d.padInfo.top,E=Le(o.shape,"float32"),A=n.data.get(r.dataId).values,$=Le(r.shape,"float32",A);for(let O=0;O=d.outHeight||Math.floor(te)!==te))for(let Q=0;Q=d.outWidth||Math.floor(ie)!==ie)continue;let re=x*v-1-m.get(O,te,ie,V),ae=J*v+Q,oe=re===ae?1:0;oe!==0&&(K+=$.get(O,te,ie,V)*oe)}}E.set(K,O,W,H,V)}return n.makeTensorInfo(E.shape,E.dtype,E.values)}var Vj={kernelName:sh,backendName:"cpu",kernelFunc:Wj};function Uj(e,t,n,a,r){let s=k.computeStrides(t),i=Rv(e,t,n,s,r,"max"),o=WT(e,t,n,r,!0,a);return[i.values,o.values]}var Gj={kernelName:oh,backendName:"cpu",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{x:a}=e,{filterSize:r,strides:s,pad:i,includeBatchInIndex:o}=t,l=n;ke(a,"MaxPoolWithArgmax");let c=l.data.get(a.dataId).values,u=_.computePool2DInfo(a.shape,r,s,[1,1],i),[p,d]=Uj(c,a.shape,a.dtype,o,u),h=l.write(p,u.outShape,a.dtype),m=l.write(d,u.outShape,a.dtype);return[{dataId:h,shape:u.outShape,dtype:a.dtype},{dataId:m,shape:u.outShape,dtype:"int32"}]}};function Zm(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{axis:s,keepDims:i}=a;ke(r,"sum");let o;r.dtype==="bool"?o=gs({inputs:{x:r},backend:n,attrs:{dtype:"int32"}}):o=sr({inputs:{x:r},backend:n});let l=o.shape.length,c=k.parseAxisParam(s,o.shape),u=_.getAxesPermutation(c,l),p=c,d=o;u!=null&&(d=ba({inputs:{x:o},backend:n,attrs:{perm:u}}),p=_.getInnerMostAxes(p.length,l)),_.assertAxesAreInnerMostDims("sum",p,d.shape.length);let[h,m]=_.computeOutAndReduceShapes(d.shape,p),f=_.upcastType(d.dtype,"int32"),g=Ym(n,h,f),y=k.sizeFromShape(m),b=n.data.get(g.dataId).values,x=n.data.get(d.dataId).values;for(let v=0;vn.disposeIntermediateTensorInfo(f)),m}var qj={kernelName:ni,backendName:"cpu",kernelFunc:jj};function Kj(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{axis:s,keepDims:i}=a;ke(r,"min");let o=k.parseAxisParam(s,r.shape),l=o,c=_.getAxesPermutation(l,r.shape.length),u=r;c!=null&&(u=ba({inputs:{x:r},backend:n,attrs:{perm:c}}),l=_.getInnerMostAxes(l.length,r.shape.length)),_.assertAxesAreInnerMostDims("min",l,u.shape.length);let[p,d]=_.computeOutAndReduceShapes(u.shape,l),h=k.sizeFromShape(d),m=k.makeZerosTypedArray(k.sizeFromShape(p),u.dtype),f=n.data.get(u.dataId).values;for(let y=0;yb[0]+r.shape[x]+b[1]),l=s.map(b=>b[0]),c=s.map((b,x)=>b[0]+r.shape[x]),u=i==="reflect"?0:1,p=n.data.get(r.dataId).values,d=r.shape.length,h=k.computeStrides(r.shape),m=k.sizeFromShape(o),f=o.length,g=k.computeStrides(o),y=k.getTypedArrayFromDType(r.dtype,m);for(let b=0;b=c[N]&&(x[N]=(c[N]-1)*2-x[N]+u);x=x.map((N,T)=>N-l[T]);let v=k.locToIndex(x,d,h);y[b]=p[v]}return{dataId:n.write(y,o,r.dtype),shape:o,dtype:r.dtype}}var Jj={kernelName:Ic,backendName:"cpu",kernelFunc:Yj},Zj=Ot((e,t)=>{let n=e%t;return e<0&&t<0||e>=0&&t>=0?n:(n+t)%t}),Qj=en(ml,Zj),e5={kernelName:ml,backendName:"cpu",kernelFunc:Qj},t5=Ro(Dd());function KT(e){let{inputs:t,backend:n,attrs:a}=e,{logits:r}=t,{dim:s}=a,i=r.shape.length,o=s;if(o===-1&&(o=i-1),o!==i-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${i} and dim was ${o}`);let l=k.parseAxisParam([o],r.shape),c=qT({inputs:{x:r},backend:n,attrs:{reductionIndices:l,keepDims:!1}}),u=_.expandShapeToKeepDim(c.shape,l),p=It({inputs:{x:c},backend:n,attrs:{shape:u}}),d=Dv({inputs:{a:r,b:p},backend:n}),h=MT({inputs:{x:d},backend:n}),m=Zm({inputs:{x:h},backend:n,attrs:{axis:l,keepDims:!1}}),f=It({inputs:{x:m},backend:n,attrs:{shape:u}}),g=Pv({inputs:{a:h,b:f},backend:n});return n.disposeIntermediateTensorInfo(c),n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(m),n.disposeIntermediateTensorInfo(f),g}var n5={kernelName:vi,backendName:"cpu",kernelFunc:KT};function a5(e){let{inputs:t,backend:n,attrs:a}=e,{logits:r}=t,{numSamples:s,seed:i,normalized:o}=a;ke(r,"multinomial");let l=o?r:KT({inputs:{logits:r},backend:n,attrs:{dim:-1}}),c=l.shape[0],u=l.shape[1],p=n.data.get(l.dataId).values,d=[c,s],h=k.makeZerosTypedArray(k.sizeFromShape(d),"int32");for(let m=0;m=0&&u[p]{k.assertShapesMatch(s,u.shape,"All tensors passed to stack must have matching shapes"),k.assert(i===u.dtype,()=>"All tensors passed to stack must have matching dtypes")});let o=[],l=t.map(u=>{let p=Jm({inputs:{input:u},backend:n,attrs:{dim:r}});return o.push(p),p}),c=gu({inputs:l,backend:n,attrs:{axis:r}});return o.forEach(u=>n.disposeIntermediateTensorInfo(u)),c}var b5={kernelName:wl,backendName:"cpu",kernelFunc:YT};function x5(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{paddings:s,constantValue:i}=a;ke(r,"pad");let o=s.map((y,b)=>y[0]+r.shape[b]+y[1]),l=s.map(y=>y[0]),c=n.data.get(r.dataId).values,u=k.sizeFromShape(r.shape),p=r.shape.length,d=k.computeStrides(r.shape),h=k.sizeFromShape(o),m=o.length,f=k.computeStrides(o),g=k.getTypedArrayFromDType(r.dtype,h);i!==0&&g.fill(i);for(let y=0;yv+l[N]),x=k.locToIndex(b,m,f);g[x]=c[y]}return{dataId:n.write(g,o,r.dtype),shape:o,dtype:r.dtype}}var JT={kernelName:oi,backendName:"cpu",kernelFunc:x5},v5=Ot((e,t)=>Math.pow(e,t)),w5=en(li,v5),k5={kernelName:li,backendName:"cpu",kernelFunc:w5};function I5(e){let{backend:t,attrs:n}=e,{start:a,stop:r,dtype:s,step:i}=n,o=Fv(a,r,i,s);return t.makeTensorInfo([o.length],s,o)}var N5={kernelName:Nc,backendName:"cpu",kernelFunc:I5},T5=it(Il,e=>1/e),S5={kernelName:Il,backendName:"cpu",kernelFunc:T5};function C5(e){let{inputs:t,backend:n,attrs:a}=e,{images:r}=t,{alignCorners:s,halfPixelCenters:i,size:o}=a;ke(r,"resizeBilinear");let l=k.computeStrides(r.shape),[c,u]=o,[p,d,h,m]=r.shape,f=n.data.get(r.dataId).values,g=new Float32Array(k.sizeFromShape([p,c,u,m])),y=[s&&c>1?d-1:d,s&&u>1?h-1:h],b=[s&&c>1?c-1:c,s&&u>1?u-1:u],x=0,v=y[0]/b[0],N=y[1]/b[1];for(let T=0;T1?c-1:c,i&&h>1?u-1:u],g=[i&&d>1?d-1:d,i&&h>1?h-1:h],y=f[0]/g[0],b=f[1]/g[1],x=n.data.get(s.dataId).values,v=0;for(let N=0;N1?d-1:d,s&&u>1?h-1:h],b=[s&&c>1?c-1:c,s&&u>1?u-1:u],x=y[0]/b[0],v=y[1]/b[1],N=0;for(let T=0;T1?u-1:u,i&&m>1?p-1:p],b=[i&&h>1?h-1:h,i&&m>1?m-1:m],x=y[0]/b[0],v=y[1]/b[1],N=1/x,T=1/v,E=Math.ceil(N)*2+2,A=Math.ceil(T)*2+2;for(let $=0;$=h)continue;let oe=O+ae*l[1],he=ae*x,ce=Math.min(u-1,i?Math.round(he):Math.floor(he));if(V===ce)for(let ge=0;ge=m)continue;let Ie=oe+be*l[2],Te=be*v,Ee=Math.min(p-1,i?Math.round(Te):Math.floor(Te));q===Ee&&(ie+=g[Ie+Q])}}f[K+Q]=ie}}}}return n.makeTensorInfo(r.shape,r.dtype,f)}var M5={kernelName:ch,backendName:"cpu",kernelFunc:D5};function R5(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{dims:s}=a;ke(r,"reverse");let i=r.shape.length,o=k.parseAxisParam(s,r.shape);if(i===0)return sr({inputs:{x:r},backend:n});let l=new Bt(r.shape,r.dtype),c=n.bufferSync(r);for(let u=0;ud[h]=r.shape[h]-1-d[h]),l.set(c.get(...d),...p)}return n.makeTensorInfo(l.shape,l.dtype,l.values)}var P5={kernelName:hi,backendName:"cpu",kernelFunc:R5},O5={kernelName:zl,backendName:"cpu",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{image:a}=e,{radians:r,fillValue:s,center:i}=t,o=n,l=k.getTypedArrayFromDType(a.dtype,k.sizeFromShape(a.shape)),[c,u,p,d]=a.shape,[h,m]=_.getImageCenter(i,u,p),f=255,g=Math.sin(r),y=Math.cos(r),b=o.data.get(a.dataId).values;for(let x=0;x=0&&H=0&&X{let t=Math.floor(e);return e-t<.5?Math.floor(e):e-t>.5?Math.ceil(e):t%2==0?t:t+1}),z5={kernelName:mi,backendName:"cpu",kernelFunc:L5};function ZT(e,t,n,a,r,s,i,o,l,c){let u=[a/r,r],p=e.values,d=t.values;if(a===0)return Le(n,t.dtype);let h=Le(u,t.dtype);h.values.fill(l);for(let m=0;m=a/r)throw new Error(`Invalid indices: ${f} does not index into ${n}`);for(let y=0;y1||r.shape.length===1?1:k.sizeFromShape(r.shape.slice(1));for(let m=0;me>=0?H5*e:G5*(Math.exp(e)-1)),q5={kernelName:Cl,backendName:"cpu",kernelFunc:j5},K5=it(yi,e=>1/(1+Math.exp(-e))),X5={kernelName:yi,backendName:"cpu",kernelFunc:K5},Y5=it(Fl,e=>e<0?-1:e>0?1:0),J5={kernelName:Fl,backendName:"cpu",kernelFunc:Y5},Z5=it(gi,e=>Math.sin(e)),Q5={kernelName:gi,backendName:"cpu",kernelFunc:Z5},eq=it(_l,e=>Math.sinh(e)),tq={kernelName:_l,backendName:"cpu",kernelFunc:eq},nq=11920928955078125e-23,QT=Math.log(nq)+2,aq=it(Al,e=>{let t=e>-QT,n=e{let d=[...u];d[o]=p;let h=Yi({inputs:{x:r},backend:n,attrs:{begin:c,size:d}});return c[o]+=p,h})}var cq={kernelName:$l,backendName:"cpu",kernelFunc:uq},pq=it(bi,e=>Math.sqrt(e)),dq={kernelName:bi,backendName:"cpu",kernelFunc:pq},hq={kernelName:Cc,backendName:"cpu",kernelFunc:({inputs:e,backend:t})=>{let{x:n}=e,a=t;ke(n,"square");let r=a.data.get(n.dataId).values,s=new Float32Array(r.length);for(let i=0;i{let n=t;return isNaN(e)?NaN:e>0?1:n.alpha}),fq={kernelName:Ll,backendName:"cpu",kernelFunc:mq};function gq(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{begin:s,end:i,strides:o,beginMask:l,endMask:c,ellipsisMask:u,newAxisMask:p,shrinkAxisMask:d}=a;ke(r,"stridedSlice");let{nonStrided:h,$begin:m,$strides:f,size:g,newShape:y,outShape:b}=hn.sliceInfo(r.shape,s,i,o,l,c,u,p,d),x=It({inputs:{x:r},backend:n,attrs:{shape:y}}),v;if(h){let T=Yi({inputs:{x},backend:n,attrs:{begin:m,size:g}});v=It({inputs:{x:T},backend:n,attrs:{shape:b}}),n.disposeIntermediateTensorInfo(T)}else if(b.some(T=>T===0))v=n.makeTensorInfo(b,r.dtype,[]);else{let T=n.bufferSync(x),E=_T(b,T,f,m);v=n.makeTensorInfo(E.shape,E.dtype,E.values)}let N=It({inputs:{x:v},backend:n,attrs:{shape:b}});return n.disposeIntermediateTensorInfo(x),n.disposeIntermediateTensorInfo(v),N}var yq={kernelName:Dl,backendName:"cpu",kernelFunc:gq},bq=it(Ml,e=>Math.tan(e)),xq={kernelName:Ml,backendName:"cpu",kernelFunc:bq},vq=it(Ii,e=>Math.tanh(e)),wq={kernelName:Ii,backendName:"cpu",kernelFunc:vq};function kq(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{reps:s}=a;ke(r,"tile");let i=AT(n.bufferSync(r),s);return n.makeTensorInfo(i.shape,i.dtype,i.values)}var Iq={kernelName:Xr,backendName:"cpu",kernelFunc:kq};function Nq(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{k:s,sorted:i}=a;ke(r,"topk");let o=n.data.get(r.dataId).values,[l,c]=$T(o,r.shape,r.dtype,s,i);return[n.makeTensorInfo(l.shape,l.dtype,l.values),n.makeTensorInfo(c.shape,c.dtype,c.values)]}var Tq={kernelName:Rl,backendName:"cpu",kernelFunc:Nq};function Sq(e){let{inputs:t,attrs:n,backend:a}=e,{axis:r}=n,{x:s}=t;ke(s,"unique");let i=a.data.get(s.dataId).values,{outputValues:o,outputShape:l,indices:c}=DT(i,r,s.shape,s.dtype);return[a.makeTensorInfo(l,s.dtype,o),a.makeTensorInfo([c.length],"int32",c)]}var Cq={kernelName:hh,backendName:"cpu",kernelFunc:Sq};function Eq(e){let{inputs:t,backend:n,attrs:a}=e,{value:r}=t,{axis:s}=a;s<0&&(s+=r.shape.length);let i=r.shape.length,o=r.shape[s],l=new Array(i-1),c=0;for(let h=0;hn.disposeIntermediateTensorInfo(m)),h}var Aq={kernelName:Ec,backendName:"cpu",kernelFunc:Fq},$q=[QG,aG,tH,aH,uG,sH,oH,uH,pH,hH,fH,yH,xH,kH,NH,CH,_H,AH,DH,JG,RH,OH,zH,oG,pG,WH,rG,UH,HH,KH,YH,jH,e6,n6,ZH,r6,i6,l6,c6,d6,m6,f6,y6,x6,w6,k6,N6,I6,Ov,GG,S6,E6,P6,dG,O6,mG,U6,H6,j6,gG,X6,J6,Q6,tj,aj,bG,ij,sG,lj,GH,cj,dj,mj,HG,vG,yj,xj,kG,wj,Nj,Sj,_j,Aj,Dj,NG,Pj,Lj,Bj,Vj,Gj,Mj,qj,Xj,SG,Jj,e5,r5,EG,FG,o5,c5,h5,$G,f5,y5,b5,JT,k5,qG,RG,N5,iG,S5,KG,XG,YG,E5,F5,$5,M5,P5,O5,z5,OG,W5,U5,q5,X5,J5,Q5,tq,LG,n5,rq,iq,lq,cq,dq,hq,BG,fq,yq,VG,Hj,xq,wq,Iq,Tq,DG,Cq,_q,Aq,g5];for(let e of $q)Fc(e);var Ji={},Bv={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function Dq(e,t){Ji[e]=t}function ir(e){if(!(e in Ji)){let n=Mq(e);if(n!==null)Ji[e]=n;else return console.log("Could not get context for WebGL version",e),null}let t=Ji[e];return t.isContextLost()?(delete Ji[e],ir(e)):(t.disable(t.DEPTH_TEST),t.disable(t.STENCIL_TEST),t.disable(t.BLEND),t.disable(t.DITHER),t.disable(t.POLYGON_OFFSET_FILL),t.disable(t.SAMPLE_COVERAGE),t.enable(t.SCISSOR_TEST),t.enable(t.CULL_FACE),t.cullFace(t.BACK),Ji[e])}function Rq(e){if(typeof OffscreenCanvas!="undefined"&&e===2)return new OffscreenCanvas(300,150);if(typeof document!="undefined")return document.createElement("canvas");throw new Error("Cannot create a canvas in this context")}function Mq(e){if(e!==1&&e!==2)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");let t=Rq(e);return t.addEventListener("webglcontextlost",n=>{n.preventDefault(),delete Ji[e]},!1),e===1?t.getContext("webgl",Bv)||t.getContext("experimental-webgl",Bv):t.getContext("webgl2",Bv)}var kp;(function(e){e[e.DENSE=0]="DENSE",e[e.SHARED_BATCH=1]="SHARED_BATCH"})(kp||(kp={}));var ra;(function(e){e[e.RENDER=0]="RENDER",e[e.UPLOAD=1]="UPLOAD",e[e.PIXELS=2]="PIXELS",e[e.DOWNLOAD=3]="DOWNLOAD"})(ra||(ra={}));var sn;(function(e){e[e.UNPACKED_FLOAT16=0]="UNPACKED_FLOAT16",e[e.UNPACKED_FLOAT32=1]="UNPACKED_FLOAT32",e[e.PACKED_4X1_UNSIGNED_BYTE=2]="PACKED_4X1_UNSIGNED_BYTE",e[e.PACKED_2X2_FLOAT32=3]="PACKED_2X2_FLOAT32",e[e.PACKED_2X2_FLOAT16=4]="PACKED_2X2_FLOAT16"})(sn||(sn={}));function Ip(e,t){return[t,e]}function Pq(e,t){return e*t}function Np(e){let t=k.sizeFromShape(e),n=Math.ceil(t/4);return k.sizeToSquarishShape(n)}function yu(e,t){return[Math.max(1,Math.ceil(t/2)),Math.max(1,Math.ceil(e/2))]}function Oq(e,t){let[n,a]=yu(e,t);return n*a*4}function Wv(e,t){let n=e,a,r,s,i,o,l,c,u,p,d;return ee().getNumber("WEBGL_VERSION")===2?(a=n.R32F,r=n.R16F,s=n.RGBA16F,i=n.RGBA32F,o=n.RED,c=4,u=1,p=n.HALF_FLOAT,d=n.FLOAT):(a=e.RGBA,r=e.RGBA,s=e.RGBA,i=n.RGBA,o=e.RGBA,c=4,u=4,p=t!=null?t.HALF_FLOAT_OES:null,d=e.FLOAT),l=e.RGBA,{internalFormatFloat:a,internalFormatHalfFloat:r,internalFormatPackedHalfFloat:s,internalFormatPackedFloat:i,textureFormatFloat:o,downloadTextureFormat:l,downloadUnpackNumChannels:c,defaultNumChannels:u,textureTypeHalfFloat:p,textureTypeFloat:d}}function Se(e,t){let n=t();return ee().getBool("DEBUG")&&Lq(e),n}function Lq(e){let t=e.getError();if(t!==e.NO_ERROR)throw new Error("WebGL Error: "+zq(e,t))}var Bq=596e-10,Wq=65504;function Vq(e){return!!(ee().getBool("WEBGL_RENDER_FLOAT32_ENABLED")||e===0||Bqe.getExtension(t),'Extension "'+t+'" not supported on this browser.')}function Uq(e,t){let n=$r(e,()=>e.createShader(e.VERTEX_SHADER),"Unable to create vertex WebGLShader.");if(Se(e,()=>e.shaderSource(n,t)),Se(e,()=>e.compileShader(n)),e.getShaderParameter(n,e.COMPILE_STATUS)===!1)throw console.log(e.getShaderInfoLog(n)),new Error("Failed to compile vertex shader.");return n}function Hq(e,t){let n=$r(e,()=>e.createShader(e.FRAGMENT_SHADER),"Unable to create fragment WebGLShader.");if(Se(e,()=>e.shaderSource(n,t)),Se(e,()=>e.compileShader(n)),e.getShaderParameter(n,e.COMPILE_STATUS)===!1)throw Gq(t,e.getShaderInfoLog(n)),new Error("Failed to compile fragment shader.");return n}var jq=/ERROR: [0-9]+:([0-9]+):/g;function Gq(e,t){let n=jq.exec(t);if(n==null){console.log(`Couldn't parse line number in error: ${t}`),console.log(e);return}let a=+n[1],r=e.split(` +`),s=r.length.toString().length+2,i=r.map((p,d)=>k.rightPad((d+1).toString(),s)+p),o=0;for(let p=0;pe.createProgram(),"Unable to create WebGLProgram.")}function Kq(e,t){if(Se(e,()=>e.linkProgram(t)),e.getProgramParameter(t,e.LINK_STATUS)===!1)throw console.log(e.getProgramInfoLog(t)),new Error("Failed to link vertex and fragment shaders.")}function Vv(e,t){if(Se(e,()=>e.validateProgram(t)),e.getProgramParameter(t,e.VALIDATE_STATUS)===!1)throw console.log(e.getProgramInfoLog(t)),new Error("Shader program validation failed.")}function Xq(e,t){let n=$r(e,()=>e.createBuffer(),"Unable to create WebGLBuffer");return Se(e,()=>e.bindBuffer(e.ARRAY_BUFFER,n)),Se(e,()=>e.bufferData(e.ARRAY_BUFFER,t,e.STATIC_DRAW)),n}function Yq(e,t){let n=$r(e,()=>e.createBuffer(),"Unable to create WebGLBuffer");return Se(e,()=>e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n)),Se(e,()=>e.bufferData(e.ELEMENT_ARRAY_BUFFER,t,e.STATIC_DRAW)),n}function Jq(e){return $r(e,()=>e.createTexture(),"Unable to create WebGLTexture.")}function Zq(e,t){let n=ee().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(e<=0||t<=0){let a=`[${e}x${t}]`;throw new Error("Requested texture size "+a+" is invalid.")}if(e>n||t>n){let a=`[${e}x${t}]`,r=`[${n}x${n}]`;throw new Error("Requested texture size "+a+" greater than WebGL maximum on this browser / GPU "+r+".")}}function Qq(e){return $r(e,()=>e.createFramebuffer(),"Unable to create WebGLFramebuffer.")}function eS(e,t,n,a,r,s,i){let o=e.getAttribLocation(t,n);return o===-1?!1:(Se(e,()=>e.bindBuffer(e.ARRAY_BUFFER,a)),Se(e,()=>e.vertexAttribPointer(o,r,e.FLOAT,!1,s,i)),Se(e,()=>e.enableVertexAttribArray(o)),!0)}function t8(e,t,n){e8(e,n),Se(e,()=>e.activeTexture(e.TEXTURE0+n)),Se(e,()=>e.bindTexture(e.TEXTURE_2D,t))}function n8(e,t,n){return $r(e,()=>e.getUniformLocation(t,n),'uniform "'+n+'" not present in program.')}function a8(e,t,n){return e.getUniformLocation(t,n)}function r8(e,t,n,a){Se(e,()=>t8(e,t,a)),Se(e,()=>e.uniform1i(n,a))}function Uv(e,t,n){Se(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,n)),Se(e,()=>e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0))}function tS(e,t){Se(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,t)),Se(e,()=>e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,null,0))}function tf(e){let t=e.checkFramebufferStatus(e.FRAMEBUFFER);if(t!==e.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+s8(e,t))}function s8(e,t){switch(t){case e.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case e.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return`unknown error ${t}`}}function $r(e,t,n){let a=Se(e,()=>t());if(a==null)throw new Error(n);return a}function e8(e,t){let n=e.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,a=t+e.TEXTURE0;if(an){let r=`[gl.TEXTURE0, gl.TEXTURE${n}]`;throw new Error(`textureUnit must be in ${r}.`)}}function bu(e,t=2){return k.sizeFromShape(e.slice(0,e.length-t))}function xu(e){if(e.length===0)throw Error("Cannot get rows and columns of an empty shape array.");return[e.length>1?e[e.length-2]:1,e[e.length-1]]}function Gv(e){let t=[1,1,1];return e.length===0||e.length===1&&e[0]===1||(t=[bu(e),...xu(e)]),t}function i8(e,t=!1){let n=ee().getNumber("WEBGL_MAX_TEXTURE_SIZE");t&&(n=n*2,e=e.map((r,s)=>s>=e.length-2?k.nearestLargerEven(e[s]):e[s]),e.length===1&&(e=[2,e[0]])),e.length!==2&&(e=k.squeezeShape(e).newShape);let a=k.sizeFromShape(e);if(e.length<=1&&a<=n)return[1,a];if(e.length===2&&e[0]<=n&&e[1]<=n)return e;if(e.length===3&&e[0]*e[1]<=n&&e[2]<=n)return[e[0]*e[1],e[2]];if(e.length===3&&e[0]<=n&&e[1]*e[2]<=n)return[e[0],e[1]*e[2]];if(e.length===4&&e[0]*e[1]*e[2]<=n&&e[3]<=n)return[e[0]*e[1]*e[2],e[3]];if(e.length===4&&e[0]<=n&&e[1]*e[2]*e[3]<=n)return[e[0],e[1]*e[2]*e[3]];if(t){let r=bu(e),s=2,i=2;return e.length&&([s,i]=xu(e)),a=r*(s/2)*(i/2),k.sizeToSquarishShape(a).map(o=>o*2)}return k.sizeToSquarishShape(a)}function nf(e){return e%2==0}function af(e,t){if(e=e.slice(-2),t=t.slice(-2),k.arraysEqual(e,t)||!e.length||!t.length||e[0]===0||e[1]===0||t[0]===0||t[1]===0)return!0;if(e.length!==t.length){let n=e.slice(-1)[0],a=t.slice(-1)[0];if(n===a||nf(n)&&nf(a)&&(e[0]===1||t[0]===1))return!0}return e[1]===t[1]&&nf(e[0])&&nf(t[0])}var Hv,jv;function o8(e){if(Hv==null){let t=ir(e);Hv=t.getParameter(t.MAX_TEXTURE_SIZE)}return Hv}function l8(e){if(jv==null){let t=ir(e);jv=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,jv)}function u8(e){if(e===0)return 0;let t,n=ir(e);return xa(n,"EXT_disjoint_timer_query_webgl2")&&e===2?t=2:xa(n,"EXT_disjoint_timer_query")?t=1:t=0,t}function xa(e,t){return e.getExtension(t)!=null}function nS(e){try{if(ir(e)!=null)return!0}catch(t){return console.log("Error when getting WebGL context: ",t),!1}return!1}function c8(e){if(e===0)return!1;let t=ir(e);if(e===1){if(!xa(t,"OES_texture_float"))return!1}else if(!xa(t,"EXT_color_buffer_float"))return!1;return qv(t)}function d8(e){if(e===0)return!1;let t=ir(e);if(e===1){if(!xa(t,"OES_texture_float")||!xa(t,"WEBGL_color_buffer_float"))return!1}else{if(xa(t,"EXT_color_buffer_float"))return qv(t);let n="EXT_color_buffer_half_float";if(xa(t,n)){let a=t.getExtension(n);return p8(t,a)}return!1}return qv(t)}function qv(e){let t=Wv(e),n=e.createTexture();e.bindTexture(e.TEXTURE_2D,n);let a=1,r=1;e.texImage2D(e.TEXTURE_2D,0,t.internalFormatFloat,a,r,0,t.textureFormatFloat,t.textureTypeFloat,null);let s=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,s),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,n,0);let i=e.checkFramebufferStatus(e.FRAMEBUFFER)===e.FRAMEBUFFER_COMPLETE;return e.bindTexture(e.TEXTURE_2D,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.deleteTexture(n),e.deleteFramebuffer(s),i}function p8(e,t){let n=Wv(e,t),a=e.createTexture();e.bindTexture(e.TEXTURE_2D,a);let r=1,s=1;e.texImage2D(e.TEXTURE_2D,0,n.internalFormatHalfFloat,r,s,0,n.textureFormatFloat,n.textureTypeHalfFloat,null);let i=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,i),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,a,0);let o=e.checkFramebufferStatus(e.FRAMEBUFFER)===e.FRAMEBUFFER_COMPLETE;return e.bindTexture(e.TEXTURE_2D,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.deleteTexture(a),e.deleteFramebuffer(i),o}function h8(e){return e!==2?!1:ir(e).fenceSync!=null}function Tp(e,t){Array.isArray(e)||(e=[e]),e.forEach(n=>{n!=null&&k.assert(n.dtype!=="complex64",()=>`${t} does not support complex64 tensors in the WebGL backend.`)})}var Fe=ee();Fe.registerFlag("HAS_WEBGL",()=>Fe.getNumber("WEBGL_VERSION")>0);Fe.registerFlag("WEBGL_VERSION",()=>nS(2)?2:nS(1)?1:0);Fe.registerFlag("WEBGL_CHECK_NUMERICAL_PROBLEMS",()=>!1);Fe.registerFlag("WEBGL_BUFFER_SUPPORTED",()=>Fe.get("WEBGL_VERSION")===2);Fe.registerFlag("WEBGL_CPU_FORWARD",()=>!0);Fe.registerFlag("WEBGL_FORCE_F16_TEXTURES",()=>!1);Fe.registerFlag("WEBGL_PACK",()=>Fe.getBool("HAS_WEBGL"));Fe.registerFlag("WEBGL_PACK_NORMALIZATION",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_CLIP",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_DEPTHWISECONV",()=>!1);Fe.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_REDUCE",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_LAZILY_UNPACK",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_CONV_IM2COL",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_MAX_TEXTURE_SIZE",()=>o8(Fe.getNumber("WEBGL_VERSION")));Fe.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",()=>l8(Fe.getNumber("WEBGL_VERSION")));Fe.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",()=>{let e=Fe.getNumber("WEBGL_VERSION");return e===0?0:u8(e)});Fe.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",()=>Fe.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!vh.isMobile());Fe.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",()=>c8(Fe.getNumber("WEBGL_VERSION")));Fe.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",()=>Fe.getBool("WEBGL_FORCE_F16_TEXTURES")?!1:Fe.getBool("WEBGL_RENDER_FLOAT32_CAPABLE"));Fe.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",()=>d8(Fe.getNumber("WEBGL_VERSION")));Fe.registerFlag("WEBGL_FENCE_API_ENABLED",()=>h8(Fe.getNumber("WEBGL_VERSION")));Fe.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",()=>Fe.getBool("WEBGL_RENDER_FLOAT32_ENABLED")?4:0);Fe.registerFlag("WEBGL_DELETE_TEXTURE_THRESHOLD",()=>-1,e=>{if(e<0&&e!==-1)throw new Error(`WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never delete) or at least 0, but got ${e}.`)});function gn(){let e,t,n,a,r,s,i,o,l,c;return ee().getNumber("WEBGL_VERSION")===2?(e="#version 300 es",t="in",n="out",a="in",r="texture",s="outputColor",i="out vec4 outputColor;",o=` bool isnan_custom(float val) { return (val > 0.0 || val < 0.0) ? false : val != 0.0; } @@ -52,7 +52,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee } #define isnan(value) isnan_custom(value) - `,defineSpecialInf="",defineRound=` + `,l="",c=` #define round(value) newRound(value) int newRound(float value) { return int(floor(value + 0.5)); @@ -61,7 +61,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee ivec4 newRound(vec4 value) { return ivec4(floor(value + vec4(0.5))); } - `):(version102="",attribute="attribute",varyingVs="varying",varyingFs="varying",texture2D="texture2D",output="gl_FragColor",defineOutput="",defineSpecialNaN=` + `):(e="",t="attribute",n="varying",a="varying",r="texture2D",s="gl_FragColor",i="",o=` #define isnan(value) isnan_custom(value) bool isnan_custom(float val) { return (val > 0. || val < 1. || val == 0.) ? false : true; @@ -69,7 +69,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee bvec4 isnan_custom(vec4 val) { return bvec4(isnan(val.x), isnan(val.y), isnan(val.z), isnan(val.w)); } - `,defineSpecialInf=` + `,l=` uniform float INFINITY; bool isinf(float val) { @@ -78,7 +78,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee bvec4 isinf(vec4 val) { return equal(abs(val), vec4(INFINITY)); } - `,defineRound=` + `,c=` int round(float value) { return int(floor(value + 0.5)); } @@ -86,11 +86,11 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee ivec4 round(vec4 value) { return ivec4(floor(value + vec4(0.5))); } - `),{version:version102,attribute,varyingVs,varyingFs,texture2D,output,defineOutput,defineSpecialNaN,defineSpecialInf,defineRound}}function getLogicalCoordinatesFromFlatIndex(coords2,shape,index="index"){let strides=util_exports.computeStrides(shape);return strides.map((stride,i)=>{let line1=`int ${coords2[i]} = ${index} / ${stride}`,line2=i===strides.length-1?`int ${coords2[i+1]} = ${index} - ${coords2[i]} * ${stride}`:`index -= ${coords2[i]} * ${stride}`;return`${line1}; ${line2};`}).join("")}function getFlatIndexFrom3D(shape){let strides=util_exports.computeStrides(shape).map(d=>d.toString());return` + `),{version:e,attribute:t,varyingVs:n,varyingFs:a,texture2D:r,output:s,defineOutput:i,defineSpecialNaN:o,defineSpecialInf:l,defineRound:c}}function Zi(e,t,n="index"){let a=k.computeStrides(t);return a.map((r,s)=>{let i=`int ${e[s]} = ${n} / ${r}`,o=s===a.length-1?`int ${e[s+1]} = ${n} - ${e[s]} * ${r}`:`index -= ${e[s]} * ${r}`;return`${i}; ${o};`}).join("")}function Kv(e){let t=k.computeStrides(e).map(n=>n.toString());return` int getFlatIndex(ivec3 coords) { - return coords.x * ${strides[0]} + coords.y * ${strides[1]} + coords.z; + return coords.x * ${t[0]} + coords.y * ${t[1]} + coords.z; } -`}var ENCODE_FLOAT_SNIPPET=` +`}var aS=` const float FLOAT_MAX = 1.70141184e38; const float FLOAT_MIN = 1.17549435e-38; @@ -129,16 +129,16 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee return c / 255.0; } -`,DecodeMatrixProgram=class{constructor(outputShape){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0,this.outPackingScheme=PackingScheme.DENSE;let texShape=getDenseTexShape(outputShape),glsl=getGlslDifferences();this.outputShape=outputShape,this.userCode=` +`,m8=class{constructor(e){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0,this.outPackingScheme=kp.DENSE;let t=Np(e),n=gn();this.outputShape=e,this.userCode=` ivec3 outCoordsFromFlatIndex(int index) { - ${getLogicalCoordinatesFromFlatIndex(["r","c","d"],outputShape)} + ${Zi(["r","c","d"],e)} return ivec3(r, c, d); } void main() { ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${texShape[0]}, ${texShape[1]})); - int index = 4 * (resTexRC.x * ${texShape[1]} + resTexRC.y); + vec2(${t[0]}, ${t[1]})); + int index = 4 * (resTexRC.x * ${t[1]} + resTexRC.y); vec4 result = vec4(0.); @@ -148,18 +148,18 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee result[i] = getA(rc.x, rc.y, rc.z); } - ${glsl.output} = result; + ${n.output} = result; } - `}},DecodeMatrixPackedProgram=class{constructor(outputShape){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outPackingScheme=PackingScheme.DENSE;let texShape=getDenseTexShape(outputShape),glsl=getGlslDifferences();this.outputShape=outputShape,this.userCode=` + `}},f8=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outPackingScheme=kp.DENSE;let t=Np(e),n=gn();this.outputShape=e,this.userCode=` ivec3 outCoordsFromFlatIndex(int index) { - ${getLogicalCoordinatesFromFlatIndex(["r","c","d"],outputShape)} + ${Zi(["r","c","d"],e)} return ivec3(r, c, d); } void main() { ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${texShape[0]}, ${texShape[1]})); - int index = 4 * (resTexRC.x * ${texShape[1]} + resTexRC.y); + vec2(${t[0]}, ${t[1]})); + int index = 4 * (resTexRC.x * ${t[1]} + resTexRC.y); vec4 result = vec4(0.); @@ -169,25 +169,25 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee result[i] = getChannel(getA(rc.x, rc.y, rc.z), vec2(rc.y, rc.z)); } - ${glsl.output} = result; + ${n.output} = result; } - `}},EncodeFloatProgram=class{constructor(outputShape){this.variableNames=["A"],this.outTexUsage=TextureUsage.DOWNLOAD;let glsl=getGlslDifferences();this.outputShape=outputShape,this.userCode=` - ${ENCODE_FLOAT_SNIPPET} + `}},g8=class{constructor(e){this.variableNames=["A"],this.outTexUsage=ra.DOWNLOAD;let t=gn();this.outputShape=e,this.userCode=` + ${aS} void main() { float x = getAAtOutCoords(); - ${glsl.output} = encode_float(x); + ${t.output} = encode_float(x); } - `}},EncodeFloatPackedProgram=class{constructor(outputShape){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outTexUsage=TextureUsage.DOWNLOAD;let glsl=getGlslDifferences();this.outputShape=outputShape,this.userCode=` - ${ENCODE_FLOAT_SNIPPET} + `}},y8=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outTexUsage=ra.DOWNLOAD;let t=gn();this.outputShape=e,this.userCode=` + ${aS} void main() { ivec3 coords = getOutputCoords(); float x = getChannel(getAAtOutCoords(), vec2(coords.y, coords.z)); - ${glsl.output} = encode_float(x); + ${t.output} = encode_float(x); } - `}},EncodeMatrixProgram=class{constructor(outputShape,texShape,inputIsUnsignedByte=!1){this.variableNames=["A"];let glsl=getGlslDifferences(),[height,width]=texShape;this.outputShape=outputShape;let output="result";inputIsUnsignedByte&&(output="floor(result * 255. + 0.5)"),this.userCode=` - ${getFlatIndexFrom3D(outputShape)} + `}},b8=class{constructor(e,t,n=!1){this.variableNames=["A"];let a=gn(),[r,s]=t;this.outputShape=e;let i="result";n&&(i="floor(result * 255. + 0.5)"),this.userCode=` + ${Kv(e)} void main() { ivec3 coords = getOutputCoords(); @@ -197,10 +197,10 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee flatIndex = idiv(flatIndex, 4, 1.); - int r = flatIndex / ${width}; - int c = imod(flatIndex, ${width}); - vec2 uv = (vec2(c, r) + halfCR) / vec2(${width}.0, ${height}.0); - vec4 values = ${glsl.texture2D}(A, uv); + int r = flatIndex / ${s}; + int c = imod(flatIndex, ${s}); + vec2 uv = (vec2(c, r) + halfCR) / vec2(${s}.0, ${r}.0); + vec4 values = ${a.texture2D}(A, uv); float result; @@ -214,38 +214,38 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee result = values[3]; } - ${glsl.output} = vec4(${output}, 0., 0., 0.); + ${a.output} = vec4(${i}, 0., 0., 0.); } - `}},EncodeMatrixPackedProgram=class{constructor(outputShape,texShape,inputIsUnsignedByte=!1){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;let glsl=getGlslDifferences(),[height,width]=texShape;this.outputShape=outputShape;let mainLoop="",output="result";inputIsUnsignedByte&&(output="floor(result * 255. + 0.5)");for(let row=0;row<=1;row++)for(let col=0;col<=1;col++){let channel=row*2+col;mainLoop+=` + `}},x8=class{constructor(e,t,n=!1){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;let a=gn(),[r,s]=t;this.outputShape=e;let i="",o="result";n&&(o="floor(result * 255. + 0.5)");for(let l=0;l<=1;l++)for(let c=0;c<=1;c++){let u=l*2+c;i+=` localCoords = coords; - if(localCoords[2] + ${col} < ${outputShape[2]}) { - localCoords[2] += ${col}; - if(localCoords[1] + ${row} < ${outputShape[1]}) { - localCoords[1] += ${row}; + if(localCoords[2] + ${c} < ${e[2]}) { + localCoords[2] += ${c}; + if(localCoords[1] + ${l} < ${e[1]}) { + localCoords[1] += ${l}; flatIndex = getFlatIndex(localCoords); offset = imod(flatIndex, 4); flatIndex = idiv(flatIndex, 4, 1.); - r = flatIndex / ${width}; - c = imod(flatIndex, ${width}); - uv = (vec2(c, r) + halfCR) / vec2(${width}.0, ${height}.0); - values = ${glsl.texture2D}(A, uv); + r = flatIndex / ${s}; + c = imod(flatIndex, ${s}); + uv = (vec2(c, r) + halfCR) / vec2(${s}.0, ${r}.0); + values = ${a.texture2D}(A, uv); if(offset == 0) { - result[${channel}] = values[0]; + result[${u}] = values[0]; } else if(offset == 1) { - result[${channel}] = values[1]; + result[${u}] = values[1]; } else if(offset == 2) { - result[${channel}] = values[2]; + result[${u}] = values[2]; } else { - result[${channel}] = values[3]; + result[${u}] = values[3]; } } } `}this.userCode=` - ${getFlatIndexFrom3D(outputShape)} + ${Kv(e)} void main() { ivec3 coords = getOutputCoords(); @@ -256,40 +256,40 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee vec2 uv; vec4 values; - ${mainLoop} + ${i} - ${glsl.output} = ${output}; + ${a.output} = ${o}; } - `}};function createVertexShader2(gl){let glsl=getGlslDifferences(),vertexShaderSource=`${glsl.version} + `}};function v8(e){let t=gn(),n=`${t.version} precision highp float; - ${glsl.attribute} vec3 clipSpacePos; - ${glsl.attribute} vec2 uv; - ${glsl.varyingVs} vec2 resultUV; + ${t.attribute} vec3 clipSpacePos; + ${t.attribute} vec2 uv; + ${t.varyingVs} vec2 resultUV; void main() { gl_Position = vec4(clipSpacePos, 1); resultUV = uv; - }`;return createVertexShader(gl,vertexShaderSource)}function createVertexBuffer(gl){let vertexArray=new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]);return createStaticVertexBuffer(gl,vertexArray)}function createIndexBuffer(gl){let triangleVertexIndices=new Uint16Array([0,1,2,2,1,3]);return createStaticIndexBuffer(gl,triangleVertexIndices)}function createAndConfigureTexture(gl,width,height,internalFormat,textureFormat,textureType){validateTextureSize(width,height);let texture=createTexture(gl),tex2d=gl.TEXTURE_2D;return callAndCheck(gl,()=>gl.bindTexture(tex2d,texture)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_MIN_FILTER,gl.NEAREST)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_MAG_FILTER,gl.NEAREST)),callAndCheck(gl,()=>gl.texImage2D(tex2d,0,internalFormat,width,height,0,textureFormat,textureType,null)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null)),texture}function getInternalFormatForFloat32MatrixTexture(textureConfig){return textureConfig.internalFormatFloat}function createFloat32MatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForFloat32MatrixTexture(textureConfig),textureConfig.textureFormatFloat,gl.FLOAT)}function getInternalFormatForFloat16MatrixTexture(textureConfig){return textureConfig.internalFormatHalfFloat}function createFloat16MatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForFloat16MatrixTexture(textureConfig),textureConfig.textureFormatFloat,textureConfig.textureTypeHalfFloat)}function getInternalFormatForUnsignedBytesMatrixTexture(textureConfig){return textureConfig.downloadTextureFormat}function createUnsignedBytesMatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForUnsignedBytesMatrixTexture(textureConfig),gl.RGBA,gl.UNSIGNED_BYTE)}function getInternalFormatForPackedMatrixTexture(textureConfig){return textureConfig.internalFormatPackedFloat}function createPackedMatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getPackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForPackedMatrixTexture(textureConfig),gl.RGBA,gl.FLOAT)}function getInternalFormatForFloat16PackedMatrixTexture(textureConfig){return textureConfig.internalFormatPackedHalfFloat}function createFloat16PackedMatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getPackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForFloat16PackedMatrixTexture(textureConfig),gl.RGBA,textureConfig.textureTypeHalfFloat)}function bindVertexProgramAttributeStreams(gl,program,vertexBuffer){let posOffset=0,uvOffset=3*4,stride=3*4+2*4;return callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,vertexBuffer)),bindVertexBufferToProgramAttribute(gl,program,"clipSpacePos",vertexBuffer,3,stride,posOffset)&&bindVertexBufferToProgramAttribute(gl,program,"uv",vertexBuffer,2,stride,uvOffset)}function uploadDenseMatrixToTexture(gl,texture,width,height,data,textureConfig){callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,texture));let dataForUpload,texelDataType,internalFormat;data instanceof Uint8Array?(dataForUpload=new Uint8Array(width*height*4),texelDataType=gl.UNSIGNED_BYTE,internalFormat=gl.RGBA):(dataForUpload=new Float32Array(width*height*4),texelDataType=gl.FLOAT,internalFormat=textureConfig.internalFormatPackedFloat),dataForUpload.set(data),callAndCheck(gl,()=>gl.texImage2D(gl.TEXTURE_2D,0,internalFormat,width,height,0,gl.RGBA,texelDataType,dataForUpload)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null))}function uploadPixelDataToTexture(gl,texture,pixels){callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,texture)),pixels.data instanceof Uint8Array?callAndCheck(gl,()=>gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,pixels.width,pixels.height,0,gl.RGBA,gl.UNSIGNED_BYTE,pixels.data)):callAndCheck(gl,()=>gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,pixels)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null))}function createBufferFromOutputTexture(gl2,rows,columns,textureConfig){let buffer2=gl2.createBuffer();callAndCheck(gl2,()=>gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,buffer2));let bufferSizeBytes=4*4*rows*columns;return callAndCheck(gl2,()=>gl2.bufferData(gl2.PIXEL_PACK_BUFFER,bufferSizeBytes,gl2.STREAM_READ)),callAndCheck(gl2,()=>gl2.readPixels(0,0,columns,rows,gl2.RGBA,gl2.FLOAT,0)),callAndCheck(gl2,()=>gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,null)),buffer2}function downloadFloat32MatrixFromBuffer(gl,buffer2,size){let gl2=gl,downloadTarget=new Float32Array(size);return gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,buffer2),gl2.getBufferSubData(gl2.PIXEL_PACK_BUFFER,0,downloadTarget),gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,null),downloadTarget}function downloadByteEncodedFloatMatrixFromOutputTexture(gl,rows,columns,textureConfig){let[w,h]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns),numChannels=4,downloadTarget=new Uint8Array(getUnpackedArraySizeFromMatrixSize(rows*columns,numChannels));return callAndCheck(gl,()=>gl.readPixels(0,0,w,h,textureConfig.downloadTextureFormat,gl.UNSIGNED_BYTE,downloadTarget)),new Float32Array(downloadTarget.buffer)}function downloadPackedMatrixFromBuffer(gl,buffer2,batch,rows,cols,physicalRows,physicalCols,textureConfig){let gl2=gl,downloadTarget=new Float32Array(getPackedRGBAArraySizeFromMatrixShape(physicalRows,physicalCols));return gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,buffer2),gl2.getBufferSubData(gl2.PIXEL_PACK_BUFFER,0,downloadTarget),gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,null),downloadTarget}function downloadMatrixFromPackedOutputTexture(gl,physicalRows,physicalCols){let packedRGBA=new Float32Array(physicalRows*physicalCols*4);return callAndCheck(gl,()=>gl.readPixels(0,0,physicalCols,physicalRows,gl.RGBA,gl.FLOAT,packedRGBA)),packedRGBA}var GPGPUContext=class{constructor(gl){this.outputTexture=null,this.program=null,this.disposed=!1,this.vertexAttrsAreBound=!1,this.itemsToPoll=[];let glVersion=env().getNumber("WEBGL_VERSION");gl!=null?(this.gl=gl,setWebGLContext(glVersion,gl)):this.gl=getWebGLContext(glVersion);let COLOR_BUFFER_FLOAT="WEBGL_color_buffer_float",COLOR_BUFFER_HALF_FLOAT="EXT_color_buffer_half_float";if(env().getNumber("WEBGL_VERSION")===1){let TEXTURE_FLOAT="OES_texture_float",TEXTURE_HALF_FLOAT="OES_texture_half_float";if(this.textureFloatExtension=getExtensionOrThrow(this.gl,TEXTURE_FLOAT),hasExtension(this.gl,TEXTURE_HALF_FLOAT))this.textureHalfFloatExtension=getExtensionOrThrow(this.gl,TEXTURE_HALF_FLOAT);else if(env().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.");if(this.colorBufferFloatExtension=this.gl.getExtension(COLOR_BUFFER_FLOAT),hasExtension(this.gl,COLOR_BUFFER_HALF_FLOAT))this.colorBufferHalfFloatExtension=getExtensionOrThrow(this.gl,COLOR_BUFFER_HALF_FLOAT);else if(env().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.")}else if(COLOR_BUFFER_FLOAT="EXT_color_buffer_float",hasExtension(this.gl,COLOR_BUFFER_FLOAT))this.colorBufferFloatExtension=this.gl.getExtension(COLOR_BUFFER_FLOAT);else if(hasExtension(this.gl,COLOR_BUFFER_HALF_FLOAT))this.colorBufferHalfFloatExtension=this.gl.getExtension(COLOR_BUFFER_HALF_FLOAT);else throw new Error("GL context does not support color renderable floats");this.vertexBuffer=createVertexBuffer(this.gl),this.indexBuffer=createIndexBuffer(this.gl),this.framebuffer=createFramebuffer(this.gl),this.textureConfig=getTextureConfig(this.gl,this.textureHalfFloatExtension)}get debug(){return env().getBool("DEBUG")}dispose(){if(this.disposed)return;this.program!=null&&console.warn("Disposing a GPGPUContext that still has a bound WebGLProgram. This is probably a resource leak, delete the program with GPGPUContext.deleteProgram before disposing."),this.outputTexture!=null&&console.warn("Disposing a GPGPUContext that still has a bound output matrix texture. This is probably a resource leak, delete the output matrix texture with GPGPUContext.deleteMatrixTexture before disposing.");let gl=this.gl;callAndCheck(gl,()=>gl.finish()),callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,null)),callAndCheck(gl,()=>gl.deleteFramebuffer(this.framebuffer)),callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,null)),callAndCheck(gl,()=>gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,null)),callAndCheck(gl,()=>gl.deleteBuffer(this.indexBuffer)),this.disposed=!0}createFloat32MatrixTexture(rows,columns){return this.throwIfDisposed(),createFloat32MatrixTexture(this.gl,rows,columns,this.textureConfig)}createFloat16MatrixTexture(rows,columns){return this.throwIfDisposed(),createFloat16MatrixTexture(this.gl,rows,columns,this.textureConfig)}createUnsignedBytesMatrixTexture(rows,columns){return this.throwIfDisposed(),createUnsignedBytesMatrixTexture(this.gl,rows,columns,this.textureConfig)}uploadPixelDataToTexture(texture,pixels){this.throwIfDisposed(),uploadPixelDataToTexture(this.gl,texture,pixels)}uploadDenseMatrixToTexture(texture,width,height,data){this.throwIfDisposed(),uploadDenseMatrixToTexture(this.gl,texture,width,height,data,this.textureConfig)}createFloat16PackedMatrixTexture(rows,columns){return this.throwIfDisposed(),createFloat16PackedMatrixTexture(this.gl,rows,columns,this.textureConfig)}createPackedMatrixTexture(rows,columns){return this.throwIfDisposed(),createPackedMatrixTexture(this.gl,rows,columns,this.textureConfig)}deleteMatrixTexture(texture){this.throwIfDisposed(),this.outputTexture===texture&&(unbindColorTextureFromFramebuffer(this.gl,this.framebuffer),this.outputTexture=null),callAndCheck(this.gl,()=>this.gl.deleteTexture(texture))}downloadByteEncodedFloatMatrixFromOutputTexture(texture,rows,columns){return this.downloadMatrixDriver(texture,()=>downloadByteEncodedFloatMatrixFromOutputTexture(this.gl,rows,columns,this.textureConfig))}downloadPackedMatrixFromBuffer(buffer2,batch,rows,columns,physicalRows,physicalCols){return downloadPackedMatrixFromBuffer(this.gl,buffer2,batch,rows,columns,physicalRows,physicalCols,this.textureConfig)}downloadFloat32MatrixFromBuffer(buffer2,size){return downloadFloat32MatrixFromBuffer(this.gl,buffer2,size)}createBufferFromTexture(texture,rows,columns){this.bindTextureToFrameBuffer(texture);let result=createBufferFromOutputTexture(this.gl,rows,columns,this.textureConfig);return this.unbindTextureToFrameBuffer(),result}createAndWaitForFence(){let fenceContext=this.createFence(this.gl);return this.pollFence(fenceContext)}createFence(gl){let query,isFencePassed;if(env().getBool("WEBGL_FENCE_API_ENABLED")){let gl2=gl,sync=gl2.fenceSync(gl2.SYNC_GPU_COMMANDS_COMPLETE,0);gl.flush(),isFencePassed=()=>{let status=gl2.clientWaitSync(sync,0,0);return status===gl2.ALREADY_SIGNALED||status===gl2.CONDITION_SATISFIED},query=sync}else env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(query=this.beginQuery(),this.endQuery(),isFencePassed=()=>this.isQueryAvailable(query,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))):isFencePassed=()=>!0;return{query,isFencePassed}}downloadMatrixFromPackedTexture(texture,physicalRows,physicalCols){return this.downloadMatrixDriver(texture,()=>downloadMatrixFromPackedOutputTexture(this.gl,physicalRows,physicalCols))}createProgram(fragmentShaderSource){this.throwIfDisposed();let gl=this.gl,fragmentShader=createFragmentShader(gl,fragmentShaderSource),vertexShader=createVertexShader2(gl),program=createProgram(gl);return callAndCheck(gl,()=>gl.attachShader(program,vertexShader)),callAndCheck(gl,()=>gl.attachShader(program,fragmentShader)),linkProgram(gl,program),this.debug&&validateProgram(gl,program),this.vertexAttrsAreBound||(this.setProgram(program),this.vertexAttrsAreBound=bindVertexProgramAttributeStreams(gl,this.program,this.vertexBuffer)),program}deleteProgram(program){this.throwIfDisposed(),program===this.program&&(this.program=null),program!=null&&callAndCheck(this.gl,()=>this.gl.deleteProgram(program))}setProgram(program){this.throwIfDisposed(),this.program=program,this.program!=null&&this.debug&&validateProgram(this.gl,this.program),callAndCheck(this.gl,()=>this.gl.useProgram(program))}getUniformLocation(program,uniformName,shouldThrow=!0){return this.throwIfDisposed(),shouldThrow?getProgramUniformLocationOrThrow(this.gl,program,uniformName):getProgramUniformLocation(this.gl,program,uniformName)}getAttributeLocation(program,attribute){return this.throwIfDisposed(),callAndCheck(this.gl,()=>this.gl.getAttribLocation(program,attribute))}getUniformLocationNoThrow(program,uniformName){return this.throwIfDisposed(),this.gl.getUniformLocation(program,uniformName)}setInputMatrixTexture(inputMatrixTexture,uniformLocation,textureUnit){this.throwIfDisposed(),this.throwIfNoProgram(),bindTextureToProgramUniformSampler(this.gl,inputMatrixTexture,uniformLocation,textureUnit)}setOutputMatrixTexture(outputMatrixTexture,rows,columns){this.setOutputMatrixTextureDriver(outputMatrixTexture,columns,rows)}setOutputPackedMatrixTexture(outputPackedMatrixTexture,rows,columns){this.throwIfDisposed();let[width,height]=getPackedMatrixTextureShapeWidthHeight(rows,columns);this.setOutputMatrixTextureDriver(outputPackedMatrixTexture,width,height)}setOutputMatrixWriteRegion(startRow,numRows,startColumn,numColumns){this.setOutputMatrixWriteRegionDriver(startColumn,startRow,numColumns,numRows)}setOutputPackedMatrixWriteRegion(startRow,numRows,startColumn,numColumns){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")}debugValidate(){this.program!=null&&validateProgram(this.gl,this.program),validateFramebuffer(this.gl)}executeProgram(){this.throwIfDisposed(),this.throwIfNoProgram();let gl=this.gl;this.debug&&this.debugValidate(),callAndCheck(gl,()=>gl.drawElements(gl.TRIANGLES,6,gl.UNSIGNED_SHORT,0))}blockUntilAllProgramsCompleted(){this.throwIfDisposed(),callAndCheck(this.gl,()=>this.gl.finish())}getQueryTimerExtension(){return this.disjointQueryTimerExtension==null&&(this.disjointQueryTimerExtension=getExtensionOrThrow(this.gl,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension}getQueryTimerExtensionWebGL2(){return this.getQueryTimerExtension()}getQueryTimerExtensionWebGL1(){return this.getQueryTimerExtension()}beginQuery(){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let gl2=this.gl,ext2=this.getQueryTimerExtensionWebGL2(),query2=gl2.createQuery();return gl2.beginQuery(ext2.TIME_ELAPSED_EXT,query2),query2}let ext=this.getQueryTimerExtensionWebGL1(),query=ext.createQueryEXT();return ext.beginQueryEXT(ext.TIME_ELAPSED_EXT,query),query}endQuery(){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let gl2=this.gl,ext2=this.getQueryTimerExtensionWebGL2();gl2.endQuery(ext2.TIME_ELAPSED_EXT);return}let ext=this.getQueryTimerExtensionWebGL1();ext.endQueryEXT(ext.TIME_ELAPSED_EXT)}async waitForQueryAndGetTime(query){return await util_exports.repeatedTry(()=>this.disposed||this.isQueryAvailable(query,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))),this.getQueryTime(query,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}getQueryTime(query,queryTimerVersion){if(queryTimerVersion===0)return null;if(queryTimerVersion===2){let gl2=this.gl;return gl2.getQueryParameter(query,gl2.QUERY_RESULT)/1e6}else{let ext=this.getQueryTimerExtensionWebGL1();return ext.getQueryObjectEXT(query,ext.QUERY_RESULT_EXT)/1e6}}isQueryAvailable(query,queryTimerVersion){if(queryTimerVersion===0)return!0;if(queryTimerVersion===2){let gl2=this.gl,ext=this.getQueryTimerExtensionWebGL2(),available=gl2.getQueryParameter(query,gl2.QUERY_RESULT_AVAILABLE);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(ext.GPU_DISJOINT_EXT)),available&&!this.disjoint}else{let ext=this.getQueryTimerExtensionWebGL1(),available=ext.getQueryObjectEXT(query,ext.QUERY_RESULT_AVAILABLE_EXT);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(ext.GPU_DISJOINT_EXT)),available&&!this.disjoint}}pollFence(fenceContext){return new Promise(resolve=>{this.addItemToPoll(()=>fenceContext.isFencePassed(),()=>resolve())})}pollItems(){let index=linearSearchLastTrue(this.itemsToPoll.map(x=>x.isDoneFn));for(let i=0;i<=index;++i){let{resolveFn}=this.itemsToPoll[i];resolveFn()}this.itemsToPoll=this.itemsToPoll.slice(index+1)}addItemToPoll(isDoneFn,resolveFn){this.itemsToPoll.push({isDoneFn,resolveFn}),!(this.itemsToPoll.length>1)&&util_exports.repeatedTry(()=>(this.pollItems(),this.itemsToPoll.length===0))}bindTextureToFrameBuffer(texture){this.throwIfDisposed(),bindColorTextureToFramebuffer(this.gl,texture,this.framebuffer),this.debug&&validateFramebuffer(this.gl)}unbindTextureToFrameBuffer(){this.outputTexture!=null?(bindColorTextureToFramebuffer(this.gl,this.outputTexture,this.framebuffer),this.debug&&validateFramebuffer(this.gl)):unbindColorTextureFromFramebuffer(this.gl,this.framebuffer)}downloadMatrixDriver(texture,downloadAndDecode){this.bindTextureToFrameBuffer(texture);let result=downloadAndDecode();return this.unbindTextureToFrameBuffer(),result}setOutputMatrixTextureDriver(outputMatrixTextureMaybePacked,width,height){this.throwIfDisposed();let gl=this.gl;bindColorTextureToFramebuffer(gl,outputMatrixTextureMaybePacked,this.framebuffer),this.debug&&validateFramebuffer(gl),this.outputTexture=outputMatrixTextureMaybePacked,callAndCheck(gl,()=>gl.viewport(0,0,width,height)),callAndCheck(gl,()=>gl.scissor(0,0,width,height))}setOutputMatrixWriteRegionDriver(x,y,width,height){this.throwIfDisposed(),callAndCheck(this.gl,()=>this.gl.scissor(x,y,width,height))}throwIfDisposed(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")}throwIfNoProgram(){if(this.program==null)throw new Error("No GPU program is currently set.")}};function linearSearchLastTrue(arr){let i=0;for(;i{let size=util_exports.sizeFromShape(x.shapeInfo.logicalShape);x.shapeInfo.isUniform?prefixSnippets.push(`uniform float ${x.name}${size>1?`[${size}]`:""};`):(prefixSnippets.push(`uniform sampler2D ${x.name};`),prefixSnippets.push(`uniform int offset${x.name};`))});let inputPrefixSnippet=prefixSnippets.join(` -`),inputSamplingSnippet=inputsInfo.map(x=>getInputSamplingSnippet(x,outputShape,usesPackedTextures)).join(` -`),outTexShape=outputShape.texShape,glsl=getGlslDifferences(),floatTextureSampleSnippet=getFloatTextureSampleSnippet(glsl),outputSamplingSnippet,floatTextureSetOutputSnippet,shaderPrefix=getShaderPrefix(glsl);return outputShape.isPacked?(outputSamplingSnippet=getPackedOutputSamplingSnippet(outputShape.logicalShape,outTexShape),floatTextureSetOutputSnippet=getFloatTextureSetRGBASnippet(glsl)):(outputSamplingSnippet=getOutputSamplingSnippet(outputShape.logicalShape,outTexShape),floatTextureSetOutputSnippet=getFloatTextureSetRSnippet(glsl)),usesPackedTextures&&(shaderPrefix+=SHADER_PACKED_PREFIX),[shaderPrefix,floatTextureSampleSnippet,floatTextureSetOutputSnippet,inputPrefixSnippet,outputSamplingSnippet,inputSamplingSnippet,userCode].join(` -`)}function getSamplerFromInInfo(inInfo){let shape=inInfo.shapeInfo.logicalShape;switch(shape.length){case 0:return getSamplerScalar(inInfo);case 1:return getSampler1D(inInfo);case 2:return getSampler2D(inInfo);case 3:return getSampler3D(inInfo);case 4:return getSampler4D(inInfo);case 5:return getSampler5D(inInfo);case 6:return getSampler6D(inInfo);default:throw new Error(`${shape.length}-D input sampling is not yet supported`)}}function getPackedSamplerFromInInfo(inInfo){switch(inInfo.shapeInfo.logicalShape.length){case 0:return getPackedSamplerScalar(inInfo);case 1:return getPackedSampler1D(inInfo);case 2:return getPackedSampler2D(inInfo);case 3:return getPackedSampler3D(inInfo);default:return getPackedSamplerND(inInfo)}}function getInputSamplingSnippet(inInfo,outShapeInfo,usesPackedTextures=!1){let res="";usesPackedTextures?res+=getPackedSamplerFromInInfo(inInfo):res+=getSamplerFromInInfo(inInfo);let inShape=inInfo.shapeInfo.logicalShape,outShape=outShapeInfo.logicalShape;return inShape.length<=outShape.length&&(usesPackedTextures?res+=getPackedSamplerAtOutputCoords(inInfo,outShapeInfo):res+=getSamplerAtOutputCoords(inInfo,outShapeInfo)),res}function getPackedOutputSamplingSnippet(outShape,outTexShape){switch(outShape.length){case 0:return getOutputScalarCoords();case 1:return getOutputPacked1DCoords(outShape,outTexShape);case 2:return getOutputPacked2DCoords(outShape,outTexShape);case 3:return getOutputPacked3DCoords(outShape,outTexShape);default:return getOutputPackedNDCoords(outShape,outTexShape)}}function getOutputSamplingSnippet(outShape,outTexShape){switch(outShape.length){case 0:return getOutputScalarCoords();case 1:return getOutput1DCoords(outShape,outTexShape);case 2:return getOutput2DCoords(outShape,outTexShape);case 3:return getOutput3DCoords(outShape,outTexShape);case 4:return getOutput4DCoords(outShape,outTexShape);case 5:return getOutput5DCoords(outShape,outTexShape);case 6:return getOutput6DCoords(outShape,outTexShape);default:throw new Error(`${outShape.length}-D output sampling is not yet supported`)}}function getFloatTextureSampleSnippet(glsl){return` + }`;return Uq(e,n)}function w8(e){let t=new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]);return Xq(e,t)}function k8(e){let t=new Uint16Array([0,1,2,2,1,3]);return Yq(e,t)}function Sp(e,t,n,a,r,s){Zq(t,n);let i=Jq(e),o=e.TEXTURE_2D;return Se(e,()=>e.bindTexture(o,i)),Se(e,()=>e.texParameteri(o,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE)),Se(e,()=>e.texParameteri(o,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),Se(e,()=>e.texParameteri(o,e.TEXTURE_MIN_FILTER,e.NEAREST)),Se(e,()=>e.texParameteri(o,e.TEXTURE_MAG_FILTER,e.NEAREST)),Se(e,()=>e.texImage2D(o,0,a,t,n,0,r,s,null)),Se(e,()=>e.bindTexture(e.TEXTURE_2D,null)),i}function rS(e){return e.internalFormatFloat}function I8(e,t,n,a){let[r,s]=Ip(t,n);return Sp(e,r,s,rS(a),a.textureFormatFloat,e.FLOAT)}function sS(e){return e.internalFormatHalfFloat}function N8(e,t,n,a){let[r,s]=Ip(t,n);return Sp(e,r,s,sS(a),a.textureFormatFloat,a.textureTypeHalfFloat)}function iS(e){return e.downloadTextureFormat}function T8(e,t,n,a){let[r,s]=Ip(t,n);return Sp(e,r,s,iS(a),e.RGBA,e.UNSIGNED_BYTE)}function oS(e){return e.internalFormatPackedFloat}function S8(e,t,n,a){let[r,s]=yu(t,n);return Sp(e,r,s,oS(a),e.RGBA,e.FLOAT)}function lS(e){return e.internalFormatPackedHalfFloat}function C8(e,t,n,a){let[r,s]=yu(t,n);return Sp(e,r,s,lS(a),e.RGBA,a.textureTypeHalfFloat)}function E8(e,t,n){let a=0,r=3*4,s=3*4+2*4;return Se(e,()=>e.bindBuffer(e.ARRAY_BUFFER,n)),eS(e,t,"clipSpacePos",n,3,s,a)&&eS(e,t,"uv",n,2,s,r)}function _8(e,t,n,a,r,s){Se(e,()=>e.bindTexture(e.TEXTURE_2D,t));let i,o,l;r instanceof Uint8Array?(i=new Uint8Array(n*a*4),o=e.UNSIGNED_BYTE,l=e.RGBA):(i=new Float32Array(n*a*4),o=e.FLOAT,l=s.internalFormatPackedFloat),i.set(r),Se(e,()=>e.texImage2D(e.TEXTURE_2D,0,l,n,a,0,e.RGBA,o,i)),Se(e,()=>e.bindTexture(e.TEXTURE_2D,null))}function F8(e,t,n){Se(e,()=>e.bindTexture(e.TEXTURE_2D,t)),n.data instanceof Uint8Array?Se(e,()=>e.texImage2D(e.TEXTURE_2D,0,e.RGBA,n.width,n.height,0,e.RGBA,e.UNSIGNED_BYTE,n.data)):Se(e,()=>e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,n)),Se(e,()=>e.bindTexture(e.TEXTURE_2D,null))}function A8(e,t,n,a){let r=e.createBuffer();Se(e,()=>e.bindBuffer(e.PIXEL_PACK_BUFFER,r));let s=4*4*t*n;return Se(e,()=>e.bufferData(e.PIXEL_PACK_BUFFER,s,e.STREAM_READ)),Se(e,()=>e.readPixels(0,0,n,t,e.RGBA,e.FLOAT,0)),Se(e,()=>e.bindBuffer(e.PIXEL_PACK_BUFFER,null)),r}function $8(e,t,n){let a=e,r=new Float32Array(n);return a.bindBuffer(a.PIXEL_PACK_BUFFER,t),a.getBufferSubData(a.PIXEL_PACK_BUFFER,0,r),a.bindBuffer(a.PIXEL_PACK_BUFFER,null),r}function D8(e,t,n,a){let[r,s]=Ip(t,n),i=4,o=new Uint8Array(Pq(t*n,i));return Se(e,()=>e.readPixels(0,0,r,s,a.downloadTextureFormat,e.UNSIGNED_BYTE,o)),new Float32Array(o.buffer)}function M8(e,t,n,a,r,s,i,o){let l=e,c=new Float32Array(Oq(s,i));return l.bindBuffer(l.PIXEL_PACK_BUFFER,t),l.getBufferSubData(l.PIXEL_PACK_BUFFER,0,c),l.bindBuffer(l.PIXEL_PACK_BUFFER,null),c}function R8(e,t,n){let a=new Float32Array(t*n*4);return Se(e,()=>e.readPixels(0,0,n,t,e.RGBA,e.FLOAT,a)),a}var O8=class{constructor(e){this.outputTexture=null,this.program=null,this.disposed=!1,this.vertexAttrsAreBound=!1,this.itemsToPoll=[];let t=ee().getNumber("WEBGL_VERSION");e!=null?(this.gl=e,Dq(t,e)):this.gl=ir(t);let n="WEBGL_color_buffer_float",a="EXT_color_buffer_half_float";if(ee().getNumber("WEBGL_VERSION")===1){let r="OES_texture_float",s="OES_texture_half_float";if(this.textureFloatExtension=ef(this.gl,r),xa(this.gl,s))this.textureHalfFloatExtension=ef(this.gl,s);else if(ee().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.");if(this.colorBufferFloatExtension=this.gl.getExtension(n),xa(this.gl,a))this.colorBufferHalfFloatExtension=ef(this.gl,a);else if(ee().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.")}else if(n="EXT_color_buffer_float",xa(this.gl,n))this.colorBufferFloatExtension=this.gl.getExtension(n);else if(xa(this.gl,a))this.colorBufferHalfFloatExtension=this.gl.getExtension(a);else throw new Error("GL context does not support color renderable floats");this.vertexBuffer=w8(this.gl),this.indexBuffer=k8(this.gl),this.framebuffer=Qq(this.gl),this.textureConfig=Wv(this.gl,this.textureHalfFloatExtension)}get debug(){return ee().getBool("DEBUG")}dispose(){if(this.disposed)return;this.program!=null&&console.warn("Disposing a GPGPUContext that still has a bound WebGLProgram. This is probably a resource leak, delete the program with GPGPUContext.deleteProgram before disposing."),this.outputTexture!=null&&console.warn("Disposing a GPGPUContext that still has a bound output matrix texture. This is probably a resource leak, delete the output matrix texture with GPGPUContext.deleteMatrixTexture before disposing.");let e=this.gl;Se(e,()=>e.finish()),Se(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,null)),Se(e,()=>e.deleteFramebuffer(this.framebuffer)),Se(e,()=>e.bindBuffer(e.ARRAY_BUFFER,null)),Se(e,()=>e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null)),Se(e,()=>e.deleteBuffer(this.indexBuffer)),this.disposed=!0}createFloat32MatrixTexture(e,t){return this.throwIfDisposed(),I8(this.gl,e,t,this.textureConfig)}createFloat16MatrixTexture(e,t){return this.throwIfDisposed(),N8(this.gl,e,t,this.textureConfig)}createUnsignedBytesMatrixTexture(e,t){return this.throwIfDisposed(),T8(this.gl,e,t,this.textureConfig)}uploadPixelDataToTexture(e,t){this.throwIfDisposed(),F8(this.gl,e,t)}uploadDenseMatrixToTexture(e,t,n,a){this.throwIfDisposed(),_8(this.gl,e,t,n,a,this.textureConfig)}createFloat16PackedMatrixTexture(e,t){return this.throwIfDisposed(),C8(this.gl,e,t,this.textureConfig)}createPackedMatrixTexture(e,t){return this.throwIfDisposed(),S8(this.gl,e,t,this.textureConfig)}deleteMatrixTexture(e){this.throwIfDisposed(),this.outputTexture===e&&(tS(this.gl,this.framebuffer),this.outputTexture=null),Se(this.gl,()=>this.gl.deleteTexture(e))}downloadByteEncodedFloatMatrixFromOutputTexture(e,t,n){return this.downloadMatrixDriver(e,()=>D8(this.gl,t,n,this.textureConfig))}downloadPackedMatrixFromBuffer(e,t,n,a,r,s){return M8(this.gl,e,t,n,a,r,s,this.textureConfig)}downloadFloat32MatrixFromBuffer(e,t){return $8(this.gl,e,t)}createBufferFromTexture(e,t,n){this.bindTextureToFrameBuffer(e);let a=A8(this.gl,t,n,this.textureConfig);return this.unbindTextureToFrameBuffer(),a}createAndWaitForFence(){let e=this.createFence(this.gl);return this.pollFence(e)}createFence(e){let t,n;if(ee().getBool("WEBGL_FENCE_API_ENABLED")){let a=e,r=a.fenceSync(a.SYNC_GPU_COMMANDS_COMPLETE,0);e.flush(),n=()=>{let s=a.clientWaitSync(r,0,0);return s===a.ALREADY_SIGNALED||s===a.CONDITION_SATISFIED},t=r}else ee().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(t=this.beginQuery(),this.endQuery(),n=()=>this.isQueryAvailable(t,ee().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))):n=()=>!0;return{query:t,isFencePassed:n}}downloadMatrixFromPackedTexture(e,t,n){return this.downloadMatrixDriver(e,()=>R8(this.gl,t,n))}createProgram(e){this.throwIfDisposed();let t=this.gl,n=Hq(t,e),a=v8(t),r=qq(t);return Se(t,()=>t.attachShader(r,a)),Se(t,()=>t.attachShader(r,n)),Kq(t,r),this.debug&&Vv(t,r),this.vertexAttrsAreBound||(this.setProgram(r),this.vertexAttrsAreBound=E8(t,this.program,this.vertexBuffer)),r}deleteProgram(e){this.throwIfDisposed(),e===this.program&&(this.program=null),e!=null&&Se(this.gl,()=>this.gl.deleteProgram(e))}setProgram(e){this.throwIfDisposed(),this.program=e,this.program!=null&&this.debug&&Vv(this.gl,this.program),Se(this.gl,()=>this.gl.useProgram(e))}getUniformLocation(e,t,n=!0){return this.throwIfDisposed(),n?n8(this.gl,e,t):a8(this.gl,e,t)}getAttributeLocation(e,t){return this.throwIfDisposed(),Se(this.gl,()=>this.gl.getAttribLocation(e,t))}getUniformLocationNoThrow(e,t){return this.throwIfDisposed(),this.gl.getUniformLocation(e,t)}setInputMatrixTexture(e,t,n){this.throwIfDisposed(),this.throwIfNoProgram(),r8(this.gl,e,t,n)}setOutputMatrixTexture(e,t,n){this.setOutputMatrixTextureDriver(e,n,t)}setOutputPackedMatrixTexture(e,t,n){this.throwIfDisposed();let[a,r]=yu(t,n);this.setOutputMatrixTextureDriver(e,a,r)}setOutputMatrixWriteRegion(e,t,n,a){this.setOutputMatrixWriteRegionDriver(n,e,a,t)}setOutputPackedMatrixWriteRegion(e,t,n,a){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")}debugValidate(){this.program!=null&&Vv(this.gl,this.program),tf(this.gl)}executeProgram(){this.throwIfDisposed(),this.throwIfNoProgram();let e=this.gl;this.debug&&this.debugValidate(),Se(e,()=>e.drawElements(e.TRIANGLES,6,e.UNSIGNED_SHORT,0))}blockUntilAllProgramsCompleted(){this.throwIfDisposed(),Se(this.gl,()=>this.gl.finish())}getQueryTimerExtension(){return this.disjointQueryTimerExtension==null&&(this.disjointQueryTimerExtension=ef(this.gl,ee().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension}getQueryTimerExtensionWebGL2(){return this.getQueryTimerExtension()}getQueryTimerExtensionWebGL1(){return this.getQueryTimerExtension()}beginQuery(){if(ee().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let n=this.gl,a=this.getQueryTimerExtensionWebGL2(),r=n.createQuery();return n.beginQuery(a.TIME_ELAPSED_EXT,r),r}let e=this.getQueryTimerExtensionWebGL1(),t=e.createQueryEXT();return e.beginQueryEXT(e.TIME_ELAPSED_EXT,t),t}endQuery(){if(ee().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let t=this.gl,n=this.getQueryTimerExtensionWebGL2();t.endQuery(n.TIME_ELAPSED_EXT);return}let e=this.getQueryTimerExtensionWebGL1();e.endQueryEXT(e.TIME_ELAPSED_EXT)}async waitForQueryAndGetTime(e){return await k.repeatedTry(()=>this.disposed||this.isQueryAvailable(e,ee().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))),this.getQueryTime(e,ee().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}getQueryTime(e,t){if(t===0)return null;if(t===2){let n=this.gl;return n.getQueryParameter(e,n.QUERY_RESULT)/1e6}else{let n=this.getQueryTimerExtensionWebGL1();return n.getQueryObjectEXT(e,n.QUERY_RESULT_EXT)/1e6}}isQueryAvailable(e,t){if(t===0)return!0;if(t===2){let n=this.gl,a=this.getQueryTimerExtensionWebGL2(),r=n.getQueryParameter(e,n.QUERY_RESULT_AVAILABLE);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(a.GPU_DISJOINT_EXT)),r&&!this.disjoint}else{let n=this.getQueryTimerExtensionWebGL1(),a=n.getQueryObjectEXT(e,n.QUERY_RESULT_AVAILABLE_EXT);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(n.GPU_DISJOINT_EXT)),a&&!this.disjoint}}pollFence(e){return new Promise(t=>{this.addItemToPoll(()=>e.isFencePassed(),()=>t())})}pollItems(){let e=P8(this.itemsToPoll.map(t=>t.isDoneFn));for(let t=0;t<=e;++t){let{resolveFn:n}=this.itemsToPoll[t];n()}this.itemsToPoll=this.itemsToPoll.slice(e+1)}addItemToPoll(e,t){this.itemsToPoll.push({isDoneFn:e,resolveFn:t}),!(this.itemsToPoll.length>1)&&k.repeatedTry(()=>(this.pollItems(),this.itemsToPoll.length===0))}bindTextureToFrameBuffer(e){this.throwIfDisposed(),Uv(this.gl,e,this.framebuffer),this.debug&&tf(this.gl)}unbindTextureToFrameBuffer(){this.outputTexture!=null?(Uv(this.gl,this.outputTexture,this.framebuffer),this.debug&&tf(this.gl)):tS(this.gl,this.framebuffer)}downloadMatrixDriver(e,t){this.bindTextureToFrameBuffer(e);let n=t();return this.unbindTextureToFrameBuffer(),n}setOutputMatrixTextureDriver(e,t,n){this.throwIfDisposed();let a=this.gl;Uv(a,e,this.framebuffer),this.debug&&tf(a),this.outputTexture=e,Se(a,()=>a.viewport(0,0,t,n)),Se(a,()=>a.scissor(0,0,t,n))}setOutputMatrixWriteRegionDriver(e,t,n,a){this.throwIfDisposed(),Se(this.gl,()=>this.gl.scissor(e,t,n,a))}throwIfDisposed(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")}throwIfNoProgram(){if(this.program==null)throw new Error("No GPU program is currently set.")}};function P8(e){let t=0;for(;t{let m=k.sizeFromShape(h.shapeInfo.logicalShape);h.shapeInfo.isUniform?r.push(`uniform float ${h.name}${m>1?`[${m}]`:""};`):(r.push(`uniform sampler2D ${h.name};`),r.push(`uniform int offset${h.name};`))});let s=r.join(` +`),i=e.map(h=>L8(h,t,a)).join(` +`),o=t.texShape,l=gn(),c=W8(l),u,p,d=G8(l);return t.isPacked?(u=z8(t.logicalShape,o),p=U8(l)):(u=B8(t.logicalShape,o),p=V8(l)),a&&(d+=H8),[d,c,p,s,u,i,n].join(` +`)}function vu(e){let t=e.shapeInfo.logicalShape;switch(t.length){case 0:return q8(e);case 1:return K8(e);case 2:return X8(e);case 3:return Y8(e);case 4:return J8(e);case 5:return Z8(e);case 6:return Q8(e);default:throw new Error(`${t.length}-D input sampling is not yet supported`)}}function cS(e){switch(e.shapeInfo.logicalShape.length){case 0:return eK(e);case 1:return tK(e);case 2:return nK(e);case 3:return aK(e);default:return rK(e)}}function L8(e,t,n=!1){let a="";n?a+=cS(e):a+=vu(e);let r=e.shapeInfo.logicalShape,s=t.logicalShape;return r.length<=s.length&&(n?a+=sK(e,t):a+=iK(e,t)),a}function z8(e,t){switch(e.length){case 0:return pS();case 1:return oK(e,t);case 2:return cK(e,t);case 3:return lK(e,t);default:return uK(e,t)}}function B8(e,t){switch(e.length){case 0:return pS();case 1:return pK(e,t);case 2:return gK(e,t);case 3:return dK(e,t);case 4:return hK(e,t);case 5:return mK(e,t);case 6:return fK(e,t);default:throw new Error(`${e.length}-D output sampling is not yet supported`)}}function W8(e){return` float sampleTexture(sampler2D textureSampler, vec2 uv) { - return ${glsl.texture2D}(textureSampler, uv).r; + return ${e.texture2D}(textureSampler, uv).r; } - `}function getFloatTextureSetRSnippet(glsl){return` + `}function V8(e){return` void setOutput(float val) { - ${glsl.output} = vec4(val, 0, 0, 0); + ${e.output} = vec4(val, 0, 0, 0); } - `}function getFloatTextureSetRGBASnippet(glsl){return` + `}function U8(e){return` void setOutput(vec4 val) { - ${glsl.output} = val; + ${e.output} = val; } - `}function getShaderPrefix(glsl){return`${glsl.version} + `}function G8(e){return`${e.version} precision highp float; precision highp int; precision highp sampler2D; - ${glsl.varyingFs} vec2 resultUV; - ${glsl.defineOutput} + ${e.varyingFs} vec2 resultUV; + ${e.defineOutput} const vec2 halfCR = vec2(0.5, 0.5); struct ivec5 @@ -312,9 +312,9 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee }; uniform float NAN; - ${glsl.defineSpecialNaN} - ${glsl.defineSpecialInf} - ${glsl.defineRound} + ${e.defineSpecialNaN} + ${e.defineSpecialInf} + ${e.defineRound} int imod(int x, int y) { return x - y * (x / y); @@ -339,10 +339,10 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee return fract((p3.x + p3.y) * p3.z); } - ${SAMPLE_1D_SNIPPET} - ${SAMPLE_2D_SNIPPET} - ${SAMPLE_3D_SNIPPET} - `}var SAMPLE_1D_SNIPPET=` + ${yK} + ${bK} + ${xK} + `}var yK=` vec2 uvFromFlat(int texNumR, int texNumC, int index) { int texR = index / texNumC; int texC = index - texR * texNumC; @@ -354,7 +354,7 @@ vec2 packedUVfrom1D(int texNumR, int texNumC, int index) { int texC = texelIndex - texR * texNumC; return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); } -`,SAMPLE_2D_SNIPPET=` +`,bK=` vec2 packedUVfrom2D(int texelsInLogicalRow, int texNumR, int texNumC, int row, int col) { int texelIndex = (row / 2) * texelsInLogicalRow + (col / 2); @@ -362,7 +362,7 @@ vec2 packedUVfrom2D(int texelsInLogicalRow, int texNumR, int texC = texelIndex - texR * texNumC; return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); } -`,SAMPLE_3D_SNIPPET=` +`,xK=` vec2 packedUVfrom3D(int texNumR, int texNumC, int texelsInBatch, int texelsInLogicalRow, int b, int row, int col) { @@ -371,7 +371,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, int texC = index - texR * texNumC; return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); } -`,SHADER_PACKED_PREFIX=` +`,H8=` float getChannel(vec4 frag, vec2 innerDims) { vec2 modCoord = mod(innerDims, 2.); return modCoord.x == 0. ? @@ -382,494 +382,494 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, float modCoord = mod(float(dim), 2.); return modCoord == 0. ? frag.r : frag.g; } -`;function getOutputScalarCoords(){return` +`;function pS(){return` int getOutputCoords() { return 0; } - `}function getOutputPacked1DCoords(shape,texShape){let packedTexShape=[Math.ceil(texShape[0]/2),Math.ceil(texShape[1]/2)];return packedTexShape[0]===1?` + `}function oK(e,t){let n=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)];return n[0]===1?` int getOutputCoords() { - return 2 * int(resultUV.x * ${packedTexShape[1]}.0); + return 2 * int(resultUV.x * ${n[1]}.0); } - `:packedTexShape[1]===1?` + `:n[1]===1?` int getOutputCoords() { - return 2 * int(resultUV.y * ${packedTexShape[0]}.0); + return 2 * int(resultUV.y * ${n[0]}.0); } `:` int getOutputCoords() { ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${packedTexShape[0]}, ${packedTexShape[1]})); - return 2 * (resTexRC.x * ${packedTexShape[1]} + resTexRC.y); + vec2(${n[0]}, ${n[1]})); + return 2 * (resTexRC.x * ${n[1]} + resTexRC.y); } - `}function getOutput1DCoords(shape,texShape){return texShape[0]===1?` + `}function pK(e,t){return t[0]===1?` int getOutputCoords() { - return int(resultUV.x * ${texShape[1]}.0); + return int(resultUV.x * ${t[1]}.0); } - `:texShape[1]===1?` + `:t[1]===1?` int getOutputCoords() { - return int(resultUV.y * ${texShape[0]}.0); + return int(resultUV.y * ${t[0]}.0); } `:` int getOutputCoords() { ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${texShape[0]}, ${texShape[1]})); - return resTexRC.x * ${texShape[1]} + resTexRC.y; + vec2(${t[0]}, ${t[1]})); + return resTexRC.x * ${t[1]} + resTexRC.y; } - `}function getOutputPacked3DCoords(shape,texShape){let packedTexShape=[Math.ceil(texShape[0]/2),Math.ceil(texShape[1]/2)],texelsInLogicalRow=Math.ceil(shape[2]/2),texelsInBatch=texelsInLogicalRow*Math.ceil(shape[1]/2);return` + `}function lK(e,t){let n=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)],a=Math.ceil(e[2]/2),r=a*Math.ceil(e[1]/2);return` ivec3 getOutputCoords() { ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${packedTexShape[0]}, ${packedTexShape[1]})); - int index = resTexRC.x * ${packedTexShape[1]} + resTexRC.y; + vec2(${n[0]}, ${n[1]})); + int index = resTexRC.x * ${n[1]} + resTexRC.y; - int b = index / ${texelsInBatch}; - index -= b * ${texelsInBatch}; + int b = index / ${r}; + index -= b * ${r}; - int r = 2 * (index / ${texelsInLogicalRow}); - int c = imod(index, ${texelsInLogicalRow}) * 2; + int r = 2 * (index / ${a}); + int c = imod(index, ${a}) * 2; return ivec3(b, r, c); } - `}function getOutput3DCoords(shape,texShape){let coordsFromIndexSnippet=getLogicalCoordinatesFromFlatIndex(["r","c","d"],shape);return` + `}function dK(e,t){let n=Zi(["r","c","d"],e);return` ivec3 getOutputCoords() { ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${texShape[0]}, ${texShape[1]})); - int index = resTexRC.x * ${texShape[1]} + resTexRC.y; - ${coordsFromIndexSnippet} + vec2(${t[0]}, ${t[1]})); + int index = resTexRC.x * ${t[1]} + resTexRC.y; + ${n} return ivec3(r, c, d); } - `}function getOutputPackedNDCoords(shape,texShape){let packedTexShape=[Math.ceil(texShape[0]/2),Math.ceil(texShape[1]/2)],texelsInLogicalRow=Math.ceil(shape[shape.length-1]/2),texelsInBatch=texelsInLogicalRow*Math.ceil(shape[shape.length-2]/2),texelsInBatchN=texelsInBatch,batches="",coords2="b, r, c";for(let b=2;b=1?coordsSnippet="coords = 0;":coordsSnippet=broadcastDims.map(d=>`coords.${fields[d+rankDiff]} = 0;`).join(` -`);let unpackedCoordsSnippet="";outRank<2&&inRank>0?unpackedCoordsSnippet="coords":unpackedCoordsSnippet=inputInfo.shapeInfo.logicalShape.map((s,i)=>`coords.${fields[i+rankDiff]}`).join(", ");let output="return outputValue;",isInputScalar=util_exports.sizeFromShape(inputInfo.shapeInfo.logicalShape)===1,isOutputScalar=util_exports.sizeFromShape(outShapeInfo.logicalShape)===1;if(inRank===1&&!isInputScalar&&!isOutputScalar)output=` + `}function sK(e,t){let n=e.name,a=n.charAt(0).toUpperCase()+n.slice(1),r="get"+a+"AtOutCoords",s=e.shapeInfo.logicalShape.length,i=t.logicalShape.length,o=uS(e.shapeInfo.logicalShape,t.logicalShape),l=mt(i),c=i-s,u,p=["x","y","z","w","u","v"];s===0?u="":i<2&&o.length>=1?u="coords = 0;":u=o.map(g=>`coords.${p[g+c]} = 0;`).join(` +`);let d="";i<2&&s>0?d="coords":d=e.shapeInfo.logicalShape.map((g,y)=>`coords.${p[y+c]}`).join(", ");let h="return outputValue;",m=k.sizeFromShape(e.shapeInfo.logicalShape)===1,f=k.sizeFromShape(t.logicalShape)===1;if(s===1&&!m&&!f)h=` return vec4(outputValue.xy, outputValue.xy); - `;else if(isInputScalar&&!isOutputScalar)outRank===1?output=` + `;else if(m&&!f)i===1?h=` return vec4(outputValue.x, outputValue.x, 0., 0.); - `:output=` + `:h=` return vec4(outputValue.x); - `;else if(broadcastDims.length){let rows=inRank-2,cols=inRank-1;broadcastDims.indexOf(rows)>-1&&broadcastDims.indexOf(cols)>-1?output="return vec4(outputValue.x);":broadcastDims.indexOf(rows)>-1?output="return vec4(outputValue.x, outputValue.y, outputValue.x, outputValue.y);":broadcastDims.indexOf(cols)>-1&&(output="return vec4(outputValue.xx, outputValue.zz);")}return` - vec4 ${funcName}() { - ${type} coords = getOutputCoords(); - ${coordsSnippet} - vec4 outputValue = get${texFuncSnippet}(${unpackedCoordsSnippet}); - ${output} + `;else if(o.length){let g=s-2,y=s-1;o.indexOf(g)>-1&&o.indexOf(y)>-1?h="return vec4(outputValue.x);":o.indexOf(g)>-1?h="return vec4(outputValue.x, outputValue.y, outputValue.x, outputValue.y);":o.indexOf(y)>-1&&(h="return vec4(outputValue.xx, outputValue.zz);")}return` + vec4 ${r}() { + ${l} coords = getOutputCoords(); + ${u} + vec4 outputValue = get${a}(${d}); + ${h} } - `}function getSamplerAtOutputCoords(inputInfo,outShapeInfo){let texName=inputInfo.name,texFuncSnippet=texName.charAt(0).toUpperCase()+texName.slice(1),funcName="get"+texFuncSnippet+"AtOutCoords",outTexShape=outShapeInfo.texShape,inTexShape=inputInfo.shapeInfo.texShape,inRank=inputInfo.shapeInfo.logicalShape.length,outRank=outShapeInfo.logicalShape.length;if(!inputInfo.shapeInfo.isUniform&&inRank===outRank&&inputInfo.shapeInfo.flatOffset==null&&util_exports.arraysEqual(inTexShape,outTexShape))return` - float ${funcName}() { - return sampleTexture(${texName}, resultUV); + `}function iK(e,t){let n=e.name,a=n.charAt(0).toUpperCase()+n.slice(1),r="get"+a+"AtOutCoords",s=t.texShape,i=e.shapeInfo.texShape,o=e.shapeInfo.logicalShape.length,l=t.logicalShape.length;if(!e.shapeInfo.isUniform&&o===l&&e.shapeInfo.flatOffset==null&&k.arraysEqual(i,s))return` + float ${r}() { + return sampleTexture(${n}, resultUV); } - `;let type=getCoordsDataType(outRank),broadcastDims=getBroadcastDims2(inputInfo.shapeInfo.logicalShape,outShapeInfo.logicalShape),rankDiff=outRank-inRank,coordsSnippet,fields=["x","y","z","w","u","v"];inRank===0?coordsSnippet="":outRank<2&&broadcastDims.length>=1?coordsSnippet="coords = 0;":coordsSnippet=broadcastDims.map(d=>`coords.${fields[d+rankDiff]} = 0;`).join(` -`);let unpackedCoordsSnippet="";return outRank<2&&inRank>0?unpackedCoordsSnippet="coords":unpackedCoordsSnippet=inputInfo.shapeInfo.logicalShape.map((s,i)=>`coords.${fields[i+rankDiff]}`).join(", "),` - float ${funcName}() { - ${type} coords = getOutputCoords(); - ${coordsSnippet} - return get${texFuncSnippet}(${unpackedCoordsSnippet}); + `;let c=mt(l),u=uS(e.shapeInfo.logicalShape,t.logicalShape),p=l-o,d,h=["x","y","z","w","u","v"];o===0?d="":l<2&&u.length>=1?d="coords = 0;":d=u.map(f=>`coords.${h[f+p]} = 0;`).join(` +`);let m="";return l<2&&o>0?m="coords":m=e.shapeInfo.logicalShape.map((f,g)=>`coords.${h[g+p]}`).join(", "),` + float ${r}() { + ${c} coords = getOutputCoords(); + ${d} + return get${a}(${m}); } - `}function getCoordsDataType(rank){if(rank<=1)return"int";if(rank===2)return"ivec2";if(rank===3)return"ivec3";if(rank===4)return"ivec4";if(rank===5)return"ivec5";if(rank===6)return"ivec6";throw Error(`GPU for rank ${rank} is not yet supported`)}function squeezeInputInfo(inInfo,squeezedShape){let newInputInfo=JSON.parse(JSON.stringify(inInfo));return newInputInfo.shapeInfo.logicalShape=squeezedShape,newInputInfo}function getSqueezedParams(params,keptDims){return keptDims.map(d=>params[d]).join(", ")}function compileProgram(gpgpu,program,inputs,output){let userCode=program.userCode,inputInfos=inputs.map((input2,i)=>{let shapeInfo={logicalShape:input2.shape,texShape:input2.isUniform?null:input2.texData.texShape,isUniform:input2.isUniform,isPacked:input2.isUniform?!1:input2.texData.isPacked,flatOffset:null};return input2.texData!=null&&input2.texData.slice!=null&&input2.texData.slice.flatOffset>0&&(shapeInfo.flatOffset=input2.texData.slice.flatOffset),{name:program.variableNames[i],shapeInfo}}),inShapeInfos=inputInfos.map(x=>x.shapeInfo),outShapeInfo={logicalShape:output.shape,texShape:output.texData.texShape,isUniform:!1,isPacked:output.texData.isPacked,flatOffset:null},source=makeShader(inputInfos,outShapeInfo,userCode,program.packedInputs),webGLProgram=gpgpu.createProgram(source),infLoc=null,nanLoc=gpgpu.getUniformLocation(webGLProgram,"NAN",!1);env().getNumber("WEBGL_VERSION")===1&&(infLoc=gpgpu.getUniformLocation(webGLProgram,"INFINITY",!1));let uniformLocations={};for(let i=0;i{let shapeA=s.logicalShape,input2=inputs[i],shapeB=input2.shape;if(!util_exports.arraysEqual(shapeA,shapeB))throw Error(`Binary was compiled with different shapes than the current args. Shapes ${shapeA} and ${shapeB} must match`);if(s.isUniform&&input2.isUniform)return;let texShapeA=s.texShape,texShapeB=input2.isUniform?null:input2.texData.texShape;if(!util_exports.arraysEqual(texShapeA,texShapeB))throw Error(`Binary was compiled with different texture shapes than the current args. Shape ${texShapeA} and ${texShapeB} must match`)})}function runProgram(gpgpu,binary,inputs,output,customSetup){validateBinaryAndProgram(binary.inShapeInfos,inputs),validateBinaryAndProgram([binary.outShapeInfo],[output]);let outTex=output.texData.texture,outTexShape=output.texData.texShape;output.texData.isPacked?gpgpu.setOutputPackedMatrixTexture(outTex,outTexShape[0],outTexShape[1]):gpgpu.setOutputMatrixTexture(outTex,outTexShape[0],outTexShape[1]),gpgpu.setProgram(binary.webGLProgram),env().getNumber("WEBGL_VERSION")===1&&binary.infLoc!==null&&gpgpu.gl.uniform1f(binary.infLoc,Infinity),binary.nanLoc!==null&&gpgpu.gl.uniform1f(binary.nanLoc,NaN),inputs.forEach((input2,i)=>{let varName=binary.program.variableNames[i],varLoc=binary.uniformLocations[varName],varOffsetLoc=binary.uniformLocations[`offset${varName}`];if(varLoc!=null){if(input2.isUniform){if(util_exports.sizeFromShape(input2.shape)<2)gpgpu.gl.uniform1f(varLoc,input2.uniformValues[0]);else{let vals=input2.uniformValues;vals instanceof Float32Array||(vals=new Float32Array(vals)),gpgpu.gl.uniform1fv(varLoc,vals)}return}input2.texData.slice!=null&&varOffsetLoc!=null&&gpgpu.gl.uniform1i(varOffsetLoc,input2.texData.slice.flatOffset),gpgpu.setInputMatrixTexture(input2.texData.texture,varLoc,i)}}),customSetup!=null&&customSetup(gpgpu,binary.webGLProgram),gpgpu.executeProgram()}function makeShaderKey(program,inputs,output){let keyInputs="";inputs.concat(output).forEach(x=>{let hasOffset=x.texData!=null&&x.texData.slice!=null&&x.texData.slice.flatOffset>0,texShape=x.isUniform?"uniform":x.texData.texShape;keyInputs+=`${x.shape}_${texShape}_${hasOffset}`});let keyUserCode=program.userCode,key=program.constructor.name;return key+="_"+keyInputs+"_"+keyUserCode,key}var{addImpl:addImplCPU,bincountImpl:bincountImplCPU,bincountReduceImpl:bincountReduceImplCPU,ceilImpl:ceilImplCPU,concatImpl:concatImplCPU,expImpl:expImplCPU,expm1Impl:expm1ImplCPU,floorImpl:floorImplCPU,gatherV2Impl:gatherV2ImplCPU,greaterImpl:greaterImplCPU,lessImpl:lessImplCPU,linSpaceImpl:linSpaceImplCPU,logImpl:logImplCPU,maxImpl:maxImplCPU,maximumImpl:maximumImplCPU,minimumImpl:minimumImplCPU,multiplyImpl:multiplyImplCPU,negImpl:negImplCPU,prodImpl:prodImplCPU,rangeImpl:rangeImplCPU,rsqrtImpl:rsqrtImplCPU,simpleAbsImpl:simpleAbsImplCPU,sliceImpl:sliceImplCPU,stridedSliceImpl:stridedSliceImplCPU,subImpl:subImplCPU,tileImpl:tileImplCPU,topKImpl:topKImplCPU,transposeImpl:transposeImplCPU,uniqueImpl:uniqueImplCPU}=shared_exports;function getVecChannels(name,rank){return["x","y","z","w","u","v"].slice(0,rank).map(d=>`${name}.${d}`)}function getChannels(name,rank){return rank===1?[name]:getVecChannels(name,rank)}function getSourceCoords(rank,dims){if(rank===1)return"rc";let coords2="";for(let i=0;ie[n]).join(", ")}function vK(e,t,n,a){let r=t.userCode,s=n.map((h,m)=>{let f={logicalShape:h.shape,texShape:h.isUniform?null:h.texData.texShape,isUniform:h.isUniform,isPacked:h.isUniform?!1:h.texData.isPacked,flatOffset:null};return h.texData!=null&&h.texData.slice!=null&&h.texData.slice.flatOffset>0&&(f.flatOffset=h.texData.slice.flatOffset),{name:t.variableNames[m],shapeInfo:f}}),i=s.map(h=>h.shapeInfo),o={logicalShape:a.shape,texShape:a.texData.texShape,isUniform:!1,isPacked:a.texData.isPacked,flatOffset:null},l=j8(s,o,r,t.packedInputs),c=e.createProgram(l),u=null,p=e.getUniformLocation(c,"NAN",!1);ee().getNumber("WEBGL_VERSION")===1&&(u=e.getUniformLocation(c,"INFINITY",!1));let d={};for(let h=0;h{let r=n.logicalShape,s=t[a],i=s.shape;if(!k.arraysEqual(r,i))throw Error(`Binary was compiled with different shapes than the current args. Shapes ${r} and ${i} must match`);if(n.isUniform&&s.isUniform)return;let o=n.texShape,l=s.isUniform?null:s.texData.texShape;if(!k.arraysEqual(o,l))throw Error(`Binary was compiled with different texture shapes than the current args. Shape ${o} and ${l} must match`)})}function wK(e,t,n,a,r){dS(t.inShapeInfos,n),dS([t.outShapeInfo],[a]);let s=a.texData.texture,i=a.texData.texShape;a.texData.isPacked?e.setOutputPackedMatrixTexture(s,i[0],i[1]):e.setOutputMatrixTexture(s,i[0],i[1]),e.setProgram(t.webGLProgram),ee().getNumber("WEBGL_VERSION")===1&&t.infLoc!==null&&e.gl.uniform1f(t.infLoc,Infinity),t.nanLoc!==null&&e.gl.uniform1f(t.nanLoc,NaN),n.forEach((o,l)=>{let c=t.program.variableNames[l],u=t.uniformLocations[c],p=t.uniformLocations[`offset${c}`];if(u!=null){if(o.isUniform){if(k.sizeFromShape(o.shape)<2)e.gl.uniform1f(u,o.uniformValues[0]);else{let d=o.uniformValues;d instanceof Float32Array||(d=new Float32Array(d)),e.gl.uniform1fv(u,d)}return}o.texData.slice!=null&&p!=null&&e.gl.uniform1i(p,o.texData.slice.flatOffset),e.setInputMatrixTexture(o.texData.texture,u,l)}}),r!=null&&r(e,t.webGLProgram),e.executeProgram()}function kK(e,t,n){let a="";t.concat(n).forEach(i=>{let o=i.texData!=null&&i.texData.slice!=null&&i.texData.slice.flatOffset>0,l=i.isUniform?"uniform":i.texData.texShape;a+=`${i.shape}_${l}_${o}`});let r=e.userCode,s=e.constructor.name;return s+="_"+a+"_"+r,s}var{addImpl:IK,bincountImpl:hS,bincountReduceImpl:NK,ceilImpl:TK,concatImpl:SK,expImpl:CK,expm1Impl:EK,floorImpl:_K,gatherV2Impl:FK,greaterImpl:AK,lessImpl:$K,linSpaceImpl:DK,logImpl:MK,maxImpl:RK,maximumImpl:PK,minimumImpl:OK,multiplyImpl:LK,negImpl:zK,prodImpl:BK,rangeImpl:WK,rsqrtImpl:VK,simpleAbsImpl:mS,sliceImpl:UK,stridedSliceImpl:GK,subImpl:HK,tileImpl:jK,topKImpl:qK,transposeImpl:Xv,uniqueImpl:KK}=lT;function fS(e,t){return["x","y","z","w","u","v"].slice(0,t).map(n=>`${e}.${n}`)}function yn(e,t){return t===1?[e]:fS(e,t)}function XK(e,t){if(e===1)return"rc";let n="";for(let a=0;a ${shape[0]}`;let cond="";for(let i=rank-2;i= ${shape[i]}`,i ${t[0]}`;let a="";for(let r=e-2;r= ${t[r]}`,r= ${cols}; - bool rEdge = rp1 >= ${rows}; - `}function getOutput(shape,dims){let rank=shape.length,sourceCoords=getSourceCoordsArr(rank,dims);return rank===1?`getA(rc), - rc + 1 >= ${shape[0]} ? 0. : getA(rc + 1), - 0, 0`:`getA(${sourceCoords[0]}), - cEdge ? 0. : getA(${sourceCoords[1]}), - rEdge ? 0. : getA(${sourceCoords[2]}), - rEdge || cEdge ? 0. : getA(${sourceCoords[3]})`}var ReshapePackedProgram=class{constructor(outputShape,inputShape){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=outputShape;let mainLoop="";for(let i=0;i<4;i++){let thisRC="thisRC = rc;";i%2==1&&(thisRC+="thisRC.z += 1;"),i>1&&(thisRC+="thisRC.y += 1;"),mainLoop+=` - ${thisRC} - ${i>0?"if(thisRC.y < rows && thisRC.z < cols){":""} + bool cEdge = cp1 >= ${t}; + bool rEdge = rp1 >= ${n}; + `}function ZK(e,t){let n=e.length,a=eX(n,t);return n===1?`getA(rc), + rc + 1 >= ${e[0]} ? 0. : getA(rc + 1), + 0, 0`:`getA(${a[0]}), + cEdge ? 0. : getA(${a[1]}), + rEdge ? 0. : getA(${a[2]}), + rEdge || cEdge ? 0. : getA(${a[3]})`}var gS=class{constructor(e,t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e;let n="";for(let a=0;a<4;a++){let r="thisRC = rc;";a%2==1&&(r+="thisRC.z += 1;"),a>1&&(r+="thisRC.y += 1;"),n+=` + ${r} + ${a>0?"if(thisRC.y < rows && thisRC.z < cols){":""} int flatIndex = getFlatIndex(thisRC); ivec3 inputRC = inputCoordsFromReshapedOutCoords(flatIndex); vec2 inputRCInnerDims = vec2(float(inputRC.y),float(inputRC.z)); - result[${i}] = + result[${a}] = getChannel(getA(inputRC.x, inputRC.y, inputRC.z), inputRCInnerDims); - ${i>0?"}":""} + ${a>0?"}":""} `}this.userCode=` - ${getReshapedInputCoords(inputShape)} - ${getFlatIndexFrom3D(outputShape)} + ${tX(t)} + ${Kv(e)} void main() { ivec3 rc = getOutputCoords(); @@ -877,21 +877,21 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, vec4 result = vec4(0.); ivec3 thisRC; - int rows = ${outputShape[1]}; - int cols = ${outputShape[2]}; + int rows = ${e[1]}; + int cols = ${e[2]}; - ${mainLoop} + ${n} setOutput(result); } - `}};function getReshapedInputCoords(shape){return` + `}};function tX(e){return` ivec3 inputCoordsFromReshapedOutCoords(int index) { - ${getLogicalCoordinatesFromFlatIndex(["r","c","d"],shape)} + ${Zi(["r","c","d"],e)} return ivec3(r, c, d); } - `}var TextureManager=class{constructor(gpgpu){this.gpgpu=gpgpu,this.numUsedTextures=0,this.numFreeTextures=0,this._numBytesAllocated=0,this._numBytesFree=0,this.freeTextures={},this.logEnabled=!1,this.usedTextures={}}acquireTexture(shapeRC,usage,isPacked){let physicalTexType=getPhysicalFromLogicalTextureType(usage,isPacked),shapeKey=getKeyFromTextureShape(shapeRC,physicalTexType,isPacked);shapeKey in this.freeTextures||(this.freeTextures[shapeKey]=[]),shapeKey in this.usedTextures||(this.usedTextures[shapeKey]=[]);let texBytes=computeBytes(shapeRC,physicalTexType,this.gpgpu.gl,this.gpgpu.textureConfig,isPacked);if(this.freeTextures[shapeKey].length>0){this.numFreeTextures--,this.numUsedTextures++,this._numBytesFree-=texBytes,this.log();let newTexture2=this.freeTextures[shapeKey].shift();return this.usedTextures[shapeKey].push(newTexture2),newTexture2}let newTexture;return physicalTexType===PhysicalTextureType.PACKED_2X2_FLOAT32?newTexture=this.gpgpu.createPackedMatrixTexture(shapeRC[0],shapeRC[1]):physicalTexType===PhysicalTextureType.PACKED_2X2_FLOAT16?newTexture=this.gpgpu.createFloat16PackedMatrixTexture(shapeRC[0],shapeRC[1]):physicalTexType===PhysicalTextureType.UNPACKED_FLOAT32?newTexture=this.gpgpu.createFloat32MatrixTexture(shapeRC[0],shapeRC[1]):physicalTexType===PhysicalTextureType.UNPACKED_FLOAT16?newTexture=this.gpgpu.createFloat16MatrixTexture(shapeRC[0],shapeRC[1]):physicalTexType===PhysicalTextureType.PACKED_4X1_UNSIGNED_BYTE&&(newTexture=this.gpgpu.createUnsignedBytesMatrixTexture(shapeRC[0],shapeRC[1])),this.usedTextures[shapeKey].push(newTexture),this.numUsedTextures++,this._numBytesAllocated+=texBytes,this.log(),newTexture}releaseTexture(texture,shape,logicalTexType,isPacked){if(this.freeTextures==null)return;let physicalTexType=getPhysicalFromLogicalTextureType(logicalTexType,isPacked),shapeKey=getKeyFromTextureShape(shape,physicalTexType,isPacked);shapeKey in this.freeTextures||(this.freeTextures[shapeKey]=[]);let texBytes=computeBytes(shape,physicalTexType,this.gpgpu.gl,this.gpgpu.textureConfig,isPacked),deleteTexThreshold=env().get("WEBGL_DELETE_TEXTURE_THRESHOLD");deleteTexThreshold!==-1&&this._numBytesAllocated>deleteTexThreshold?(this.gpgpu.deleteMatrixTexture(texture),this._numBytesAllocated-=texBytes):(this.freeTextures[shapeKey].push(texture),this.numFreeTextures++,this._numBytesFree+=texBytes),this.numUsedTextures--;let texList=this.usedTextures[shapeKey],texIndex=texList.indexOf(texture);if(texIndex<0)throw new Error("Cannot release a texture that was never provided by this texture manager");texList.splice(texIndex,1),this.log()}log(){if(!this.logEnabled)return;let total=this.numFreeTextures+this.numUsedTextures;console.log("Free/Used",`${this.numFreeTextures} / ${this.numUsedTextures}`,`(${total})`);let freeRatio=this._numBytesFree/this._numBytesAllocated;console.log(`Bytes allocated: ${this._numBytesAllocated}`),console.log(`Bytes unused: ${this._numBytesFree} (${Math.round(100*freeRatio)}%)`)}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 texShape in this.freeTextures)this.freeTextures[texShape].forEach(tex=>{this.gpgpu.deleteMatrixTexture(tex)});for(let texShape in this.usedTextures)this.usedTextures[texShape].forEach(tex=>{this.gpgpu.deleteMatrixTexture(tex)});this.freeTextures=null,this.usedTextures=null,this.numUsedTextures=0,this.numFreeTextures=0,this._numBytesAllocated=0,this._numBytesFree=0}}};function numBytesForInternalFormat(gl,internalFormat){let glany=gl;if(internalFormat===glany.R32F)return 4;if(internalFormat===glany.R16F)return 2;if(internalFormat===glany.RGBA32F||internalFormat===gl.RGBA)return 16;if(internalFormat===glany.RGBA16F)return 8;throw new Error(`Unknown internal format ${internalFormat}`)}function computeBytes(shape,physicalTexType,gl,textureConfig,isPacked){let internalFormat=internalFormatForPhysicalTexType(physicalTexType,textureConfig),numElements;if(isPacked){let[packedWidth,packedHeight]=getPackedMatrixTextureShapeWidthHeight(shape[0],shape[1]);numElements=packedWidth*packedHeight}else{let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(shape[0],shape[1]);numElements=width*height}let bytesPerElement2=numBytesForInternalFormat(gl,internalFormat);return numElements*bytesPerElement2}function internalFormatForPhysicalTexType(physicalTexType,textureConfig){switch(physicalTexType){case PhysicalTextureType.PACKED_2X2_FLOAT32:return getInternalFormatForPackedMatrixTexture(textureConfig);case PhysicalTextureType.PACKED_2X2_FLOAT16:return getInternalFormatForFloat16PackedMatrixTexture(textureConfig);case PhysicalTextureType.UNPACKED_FLOAT32:return getInternalFormatForFloat32MatrixTexture(textureConfig);case PhysicalTextureType.UNPACKED_FLOAT16:return getInternalFormatForFloat16MatrixTexture(textureConfig);case PhysicalTextureType.PACKED_4X1_UNSIGNED_BYTE:return getInternalFormatForUnsignedBytesMatrixTexture(textureConfig);default:throw new Error(`Unknown physical texture type ${physicalTexType}`)}}function getPhysicalTextureForRendering(isPacked){return env().getBool("WEBGL_RENDER_FLOAT32_ENABLED")?isPacked?PhysicalTextureType.PACKED_2X2_FLOAT32:PhysicalTextureType.UNPACKED_FLOAT32:isPacked?PhysicalTextureType.PACKED_2X2_FLOAT16:PhysicalTextureType.UNPACKED_FLOAT16}function getPhysicalFromLogicalTextureType(logicalTexType,isPacked){if(logicalTexType===TextureUsage.UPLOAD)return PhysicalTextureType.PACKED_2X2_FLOAT32;if(logicalTexType===TextureUsage.RENDER||logicalTexType==null)return getPhysicalTextureForRendering(isPacked);if(logicalTexType===TextureUsage.DOWNLOAD||logicalTexType===TextureUsage.PIXELS)return PhysicalTextureType.PACKED_4X1_UNSIGNED_BYTE;throw new Error(`Unknown logical texture type ${logicalTexType}`)}function getKeyFromTextureShape(shapeRowsCol,physicalTexType,isPacked){return`${shapeRowsCol[0]}_${shapeRowsCol[1]}_${physicalTexType}_${isPacked}`}var UnaryOpProgram=class{constructor(aShape,opSnippet){this.variableNames=["A"],this.outputShape=aShape,this.userCode=` + `}var nX=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 a=bS(t,n),r=xS(e,a,n);r in this.freeTextures||(this.freeTextures[r]=[]),r in this.usedTextures||(this.usedTextures[r]=[]);let s=yS(e,a,this.gpgpu.gl,this.gpgpu.textureConfig,n);if(this.freeTextures[r].length>0){this.numFreeTextures--,this.numUsedTextures++,this._numBytesFree-=s,this.log();let o=this.freeTextures[r].shift();return this.usedTextures[r].push(o),o}let i;return a===sn.PACKED_2X2_FLOAT32?i=this.gpgpu.createPackedMatrixTexture(e[0],e[1]):a===sn.PACKED_2X2_FLOAT16?i=this.gpgpu.createFloat16PackedMatrixTexture(e[0],e[1]):a===sn.UNPACKED_FLOAT32?i=this.gpgpu.createFloat32MatrixTexture(e[0],e[1]):a===sn.UNPACKED_FLOAT16?i=this.gpgpu.createFloat16MatrixTexture(e[0],e[1]):a===sn.PACKED_4X1_UNSIGNED_BYTE&&(i=this.gpgpu.createUnsignedBytesMatrixTexture(e[0],e[1])),this.usedTextures[r].push(i),this.numUsedTextures++,this._numBytesAllocated+=s,this.log(),i}releaseTexture(e,t,n,a){if(this.freeTextures==null)return;let r=bS(n,a),s=xS(t,r,a);s in this.freeTextures||(this.freeTextures[s]=[]);let i=yS(t,r,this.gpgpu.gl,this.gpgpu.textureConfig,a),o=ee().get("WEBGL_DELETE_TEXTURE_THRESHOLD");o!==-1&&this._numBytesAllocated>o?(this.gpgpu.deleteMatrixTexture(e),this._numBytesAllocated-=i):(this.freeTextures[s].push(e),this.numFreeTextures++,this._numBytesFree+=i),this.numUsedTextures--;let l=this.usedTextures[s],c=l.indexOf(e);if(c<0)throw new Error("Cannot release a texture that was never provided by this texture manager");l.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(`Bytes allocated: ${this._numBytesAllocated}`),console.log(`Bytes unused: ${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 aX(e,t){let n=e;if(t===n.R32F)return 4;if(t===n.R16F)return 2;if(t===n.RGBA32F||t===e.RGBA)return 16;if(t===n.RGBA16F)return 8;throw new Error(`Unknown internal format ${t}`)}function yS(e,t,n,a,r){let s=rX(t,a),i;if(r){let[l,c]=yu(e[0],e[1]);i=l*c}else{let[l,c]=Ip(e[0],e[1]);i=l*c}let o=aX(n,s);return i*o}function rX(e,t){switch(e){case sn.PACKED_2X2_FLOAT32:return oS(t);case sn.PACKED_2X2_FLOAT16:return lS(t);case sn.UNPACKED_FLOAT32:return rS(t);case sn.UNPACKED_FLOAT16:return sS(t);case sn.PACKED_4X1_UNSIGNED_BYTE:return iS(t);default:throw new Error(`Unknown physical texture type ${e}`)}}function sX(e){return ee().getBool("WEBGL_RENDER_FLOAT32_ENABLED")?e?sn.PACKED_2X2_FLOAT32:sn.UNPACKED_FLOAT32:e?sn.PACKED_2X2_FLOAT16:sn.UNPACKED_FLOAT16}function bS(e,t){if(e===ra.UPLOAD)return sn.PACKED_2X2_FLOAT32;if(e===ra.RENDER||e==null)return sX(t);if(e===ra.DOWNLOAD||e===ra.PIXELS)return sn.PACKED_4X1_UNSIGNED_BYTE;throw new Error(`Unknown logical texture type ${e}`)}function xS(e,t,n){return`${e[0]}_${e[1]}_${t}_${n}`}var ys=class{constructor(e,t){this.variableNames=["A"],this.outputShape=e,this.userCode=` float unaryOperation(float x) { - ${opSnippet} + ${t} } void main() { @@ -900,11 +900,11 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, setOutput(y); } - `}},CHECK_NAN_SNIPPET="if (isnan(x)) return x;",LINEAR="return x;",ABS="return abs(x);",ELU2="return (x >= 0.0) ? x : (exp(x) - 1.0);",RELU=CHECK_NAN_SNIPPET+` + `}},Oa="if (isnan(x)) return x;",iX="return x;",vS="return abs(x);",oX="return (x >= 0.0) ? x : (exp(x) - 1.0);",lX=Oa+` return (x < 0.0) ? 0.0 : x; -`,RELU6=CHECK_NAN_SNIPPET+` +`,uX=Oa+` return (x < 0.0) ? 0.0 : min(6.0, x); -`,CLONE="return x;",LINEAR2="return x;",ELU3=` +`,rf="return x;",cX="return x;",pX=` vec4 result; result.r = (x.r >= 0.0) ? x.r : (exp(x.r) - 1.0); @@ -913,7 +913,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, result.a = (x.a >= 0.0) ? x.a : (exp(x.a) - 1.0); return result; -`,RELU2=` +`,dX=` vec4 result = x * vec4(greaterThanEqual(x, vec4(0.0))); bvec4 isNaN = isnan(x); @@ -923,7 +923,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, result.a = isNaN.a ? x.a : result.a; return result; -`,RELU62=` +`,hX=` vec4 result = min(x, vec4(6.)) * vec4(greaterThanEqual(x, vec4(0.0))); bvec4 isNaN = isnan(x); @@ -933,9 +933,9 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, result.a = isNaN.a ? x.a : result.a; return result; -`,UnaryOpPackedProgram=class{constructor(aShape,opSnippet){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=aShape,this.userCode=` +`,Nu=class{constructor(e,t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.userCode=` vec4 unaryOperation(vec4 x) { - ${opSnippet} + ${t} } void main() { @@ -944,19 +944,19 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, setOutput(y); } - `}},UnpackProgram=class{constructor(outputShape){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outputShape=outputShape;let rank=outputShape.length,channels=getChannels("rc",rank),dtype=getCoordsDataType(rank),sourceCoords=getSourceCoords(rank,channels),innerDims=channels.slice(-2),coords2=rank<=1?"rc":`vec2(${innerDims.join(",")})`;this.userCode=` + `}},mX=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outputShape=e;let t=e.length,n=yn("rc",t),a=mt(t),r=XK(t,n),s=n.slice(-2),i=t<=1?"rc":`vec2(${s.join(",")})`;this.userCode=` void main() { - ${dtype} rc = getOutputCoords(); - vec4 packedInput = getA(${sourceCoords}); + ${a} rc = getOutputCoords(); + vec4 packedInput = getA(${r}); - setOutput(getChannel(packedInput, ${coords2})); + setOutput(getChannel(packedInput, ${i})); } - `}},whereImpl3=kernel_impls_exports.whereImpl,EPSILON_FLOAT322=1e-7,EPSILON_FLOAT162=1e-4,binaryCaches={};function getBinaryCache(webGLVersion){return webGLVersion in binaryCaches||(binaryCaches[webGLVersion]={}),binaryCaches[webGLVersion]}var CPU_HANDOFF_SIZE_THRESHOLD=128,BEFORE_PAGING_CONSTANT=600;function numMBBeforeWarning(){return env().global.screen==null?1024:env().global.screen.height*env().global.screen.width*window.devicePixelRatio*BEFORE_PAGING_CONSTANT/1024/1024}var MathBackendWebGL=class extends KernelBackend{constructor(gpgpu){super();if(this.pendingRead=new WeakMap,this.pendingDisposal=new WeakSet,this.dataRefCount=new WeakMap,this.numBytesInGPU=0,this.uploadWaitMs=0,this.downloadWaitMs=0,this.warnedAboutMemory=!1,this.warnedAboutCPUBackend=!1,this.pendingDeletes=0,this.disposed=!1,!env().getBool("HAS_WEBGL"))throw new Error("WebGL is not supported on this device");if(gpgpu==null){let gl=getWebGLContext(env().getNumber("WEBGL_VERSION"));this.binaryCache=getBinaryCache(env().getNumber("WEBGL_VERSION")),this.gpgpu=new GPGPUContext(gl),this.canvas=gl.canvas,this.gpgpuCreatedLocally=!0}else this.gpgpu=gpgpu,this.binaryCache={},this.gpgpuCreatedLocally=!1,this.canvas=gpgpu.gl.canvas;this.textureManager=new TextureManager(this.gpgpu),this.numMBBeforeWarning=numMBBeforeWarning(),this.texData=new DataStorage(this,engine())}numDataIds(){return this.texData.numDataIds()+(this.cpuBackend?this.cpuBackend.numDataIds():0)-this.pendingDeletes}write(values,shape,dtype){if((env().getBool("WEBGL_CHECK_NUMERICAL_PROBLEMS")||env().getBool("DEBUG"))&&this.checkNumericalProblems(values),dtype==="complex64"&&values!=null)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");let dataId={};return this.texData.set(dataId,{shape,dtype,values,usage:TextureUsage.UPLOAD,refCount:1,complexParentRefCount:0}),dataId}incRef(dataId){let texData=this.texData.get(dataId);texData.refCount++}decRef(dataId){if(this.texData.has(dataId)){let texData=this.texData.get(dataId);texData.refCount--}}move(dataId,values,shape,dtype){if(env().getBool("DEBUG")&&this.checkNumericalProblems(values),dtype==="complex64")throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");this.texData.set(dataId,{shape,dtype,values,usage:TextureUsage.UPLOAD,refCount:1,complexParentRefCount:0})}disposeIntermediateTensorInfo(tensorInfo){let dataId=tensorInfo.dataId;if(this.texData.has(dataId)){let textureData=this.texData.get(dataId);textureData.refCount--,textureData.refCount<1&&this.disposeData(dataId)}}readSync(dataId){let texData=this.texData.get(dataId),{values,dtype,complexTensorInfos,slice:slice5,shape,isPacked}=texData;if(slice5!=null){let program;isPacked?program=new UnaryOpPackedProgram(shape,CLONE):program=new UnaryOpProgram(shape,CLONE);let res=this.runWebGLProgram(program,[{dataId,shape,dtype}],dtype),data=this.readSync(res.dataId);return this.disposeIntermediateTensorInfo(res),data}if(values!=null)return this.convertAndCacheOnCPU(dataId);if(dtype==="string")return values;let shouldTimeProgram=this.activeTimers!=null,start;shouldTimeProgram&&(start=util_exports.now());let result;if(dtype==="complex64"){let realValues=this.readSync(complexTensorInfos.real.dataId),imagValues=this.readSync(complexTensorInfos.imag.dataId);result=backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}else result=this.getValuesFromTexture(dataId);return shouldTimeProgram&&(this.downloadWaitMs+=util_exports.now()-start),this.convertAndCacheOnCPU(dataId,result)}async read(dataId){if(this.pendingRead.has(dataId)){let subscribers2=this.pendingRead.get(dataId);return new Promise(resolve=>subscribers2.push(resolve))}let texData=this.texData.get(dataId),{values,shape,slice:slice5,dtype,complexTensorInfos,isPacked}=texData;if(slice5!=null){let program;isPacked?program=new UnaryOpPackedProgram(shape,CLONE):program=new UnaryOpProgram(shape,CLONE);let res=this.runWebGLProgram(program,[{dataId,shape,dtype}],dtype),data=this.read(res.dataId);return this.disposeIntermediateTensorInfo(res),data}if(values!=null)return this.convertAndCacheOnCPU(dataId);if(!env().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")&&env().getNumber("WEBGL_VERSION")===2)throw new Error("tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.");let buffer2=null,tmpDownloadTarget;if(dtype!=="complex64"&&env().get("WEBGL_BUFFER_SUPPORTED")){tmpDownloadTarget=this.decode(dataId);let tmpData=this.texData.get(tmpDownloadTarget.dataId);buffer2=this.gpgpu.createBufferFromTexture(tmpData.texture,...getDenseTexShape(shape))}this.pendingRead.set(dataId,[]),dtype!=="complex64"&&await this.gpgpu.createAndWaitForFence();let vals;if(dtype==="complex64"){let ps=await Promise.all([this.read(complexTensorInfos.real.dataId),this.read(complexTensorInfos.imag.dataId)]),realValues=ps[0],imagValues=ps[1];vals=backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}else if(buffer2==null)vals=this.getValuesFromTexture(dataId);else{let size=util_exports.sizeFromShape(shape);vals=this.gpgpu.downloadFloat32MatrixFromBuffer(buffer2,size)}tmpDownloadTarget!=null&&this.disposeIntermediateTensorInfo(tmpDownloadTarget);let dTypeVals=this.convertAndCacheOnCPU(dataId,vals),subscribers=this.pendingRead.get(dataId);return this.pendingRead.delete(dataId),subscribers.forEach(resolve=>resolve(dTypeVals)),this.pendingDisposal.has(dataId)&&(this.pendingDisposal.delete(dataId),this.disposeData(dataId),this.pendingDeletes--),dTypeVals}bufferSync(t){let data=this.readSync(t.dataId),decodedData=data;if(t.dtype==="string")try{decodedData=data.map(d=>util_exports.decodeString(d))}catch(_a){throw new Error("Failed to decode encoded string bytes into utf-8")}return buffer(t.shape,t.dtype,decodedData)}checkNumericalProblems(values){if(values!=null)for(let i=0;id.query)).filter(d=>d!=null),flattenedActiveTimerNames=util_exports.flatten(this.activeTimers.map(d=>d.name)).filter(d=>d!=null);this.activeTimers=oldActiveTimers,outerMostTime&&(this.programTimersStack=null);let res={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null};if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0){let kernelMs=await Promise.all(flattenedActiveTimerQueries);res.kernelMs=util_exports.sum(kernelMs),res.getExtraProfileInfo=()=>kernelMs.map((d,i)=>({name:flattenedActiveTimerNames[i],ms:d})).map(d=>`${d.name}: ${d.ms}`).join(", ")}else res.kernelMs={error:"WebGL query timers are not supported in this environment."};return this.uploadWaitMs=0,this.downloadWaitMs=0,res}memory(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU,numBytesInGPUAllocated:this.textureManager.numBytesAllocated,numBytesInGPUFree:this.textureManager.numBytesFree}}startTimer(){return env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?this.gpgpu.beginQuery():{startMs:util_exports.now(),endMs:null}}endTimer(query){return env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?(this.gpgpu.endQuery(),query):(query.endMs=util_exports.now(),query)}async getQueryTime(query){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0)return this.gpgpu.waitForQueryAndGetTime(query);let timerQuery=query;return timerQuery.endMs-timerQuery.startMs}disposeData(dataId){if(this.pendingDisposal.has(dataId))return;if(this.pendingRead.has(dataId)){this.pendingDisposal.add(dataId),this.pendingDeletes++;return}if(!this.texData.has(dataId))return;if(this.texData.get(dataId).complexParentRefCount>0){this.texData.get(dataId).refCount--;return}this.releaseGPUData(dataId);let{complexTensorInfos}=this.texData.get(dataId);complexTensorInfos!=null&&(this.texData.get(complexTensorInfos.real.dataId).complexParentRefCount--,this.disposeIntermediateTensorInfo(complexTensorInfos.real),this.texData.get(complexTensorInfos.imag.dataId).complexParentRefCount--,this.disposeIntermediateTensorInfo(complexTensorInfos.imag)),this.texData.delete(dataId)}releaseGPUData(dataId){let{texture,dtype,texShape,usage,isPacked,slice:slice5}=this.texData.get(dataId),key=slice5&&slice5.origDataId||dataId,refCount=this.dataRefCount.get(key);refCount>1?this.dataRefCount.set(key,refCount-1):(this.dataRefCount.delete(key),texture!=null&&(this.numBytesInGPU-=this.computeBytes(texShape,dtype),this.textureManager.releaseTexture(texture,texShape,usage,isPacked)));let texData=this.texData.get(dataId);texData.texture=null,texData.texShape=null,texData.isPacked=!1,texData.slice=null}getTexture(dataId){return this.uploadToGPU(dataId),this.texData.get(dataId).texture}getDataInfo(dataId){return this.texData.get(dataId)}getCPUBackend(){return env().getBool("WEBGL_CPU_FORWARD")?(this.cpuBackend==null&&(this.cpuBackend=engine().findBackend("cpu")),this.cpuBackend):null}shouldExecuteOnCPU(inputs,sizeThreshold=CPU_HANDOFF_SIZE_THRESHOLD){let cpuBackend=this.getCPUBackend();return!env().getBool("IS_TEST")&&!this.warnedAboutCPUBackend&&cpuBackend==null&&(console.warn("Your application contains ops that are small enough to be executed on the CPU backend, however the CPU backend cannot be found. Consider importing the CPU backend (@tensorflow/tfjs-backend-cpu) for better performance."),this.warnedAboutCPUBackend=!0),cpuBackend!=null&&inputs.every(input2=>this.texData.get(input2.dataId).texture==null&&util_exports.sizeFromShape(input2.shape)0&&util_exports.isString(values[0])){let encodedValues=values.map(d=>util_exports.encodeString(d));dataId=this.write(encodedValues,shape,dtype)}else dataId=this.write(values,shape,dtype);return this.texData.get(dataId).usage=null,{dataId,shape,dtype}}makeOutput(shape,dtype,values){let{dataId}=this.makeTensorInfo(shape,dtype,values);return engine().makeTensorFromDataId(dataId,shape,dtype,this)}unpackTensor(input2){let program=new UnpackProgram(input2.shape);return this.runWebGLProgram(program,[input2],input2.dtype)}packTensor(input2){let program=new PackProgram(input2.shape),preventEagerUnpackingOutput=!0;return this.runWebGLProgram(program,[input2],input2.dtype,null,preventEagerUnpackingOutput)}packedReshape(input2,afterShape){let input3DShape=[getBatchDim(input2.shape),...getRowsCols(input2.shape)],input3D={dtype:input2.dtype,shape:input3DShape,dataId:input2.dataId},afterShapeAs3D=[getBatchDim(afterShape),...getRowsCols(afterShape)],program=new ReshapePackedProgram(afterShapeAs3D,input3DShape),preventEagerUnpackingOfOutput=!0,output=this.runWebGLProgram(program,[input3D],input2.dtype,null,preventEagerUnpackingOfOutput);return{dataId:output.dataId,shape:afterShape,dtype:output.dtype}}decode(dataId){let texData=this.texData.get(dataId),{isPacked,shape,dtype}=texData,shapeAs3D=getShapeAs3D(shape),program;isPacked?program=new DecodeMatrixPackedProgram(shapeAs3D):program=new DecodeMatrixProgram(shapeAs3D);let preventEagerUnpackingOfOutput=!0,out=this.runWebGLProgram(program,[{shape:shapeAs3D,dtype,dataId}],dtype,null,preventEagerUnpackingOfOutput);return{dtype,shape,dataId:out.dataId}}runWebGLProgram(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput=!1){let output=this.makeTensorInfo(program.outputShape,outputDtype),outData=this.texData.get(output.dataId);if(program.packedOutput&&(outData.isPacked=!0),program.outPackingScheme===PackingScheme.DENSE){let texelShape=getDenseTexShape(program.outputShape);outData.texShape=texelShape.map(d=>d*2)}if(program.outTexUsage!=null&&(outData.usage=program.outTexUsage),util_exports.sizeFromShape(output.shape)===0)return outData.values=util_exports.getTypedArrayFromDType(output.dtype,0),output;let dataToDispose=[],inputsData=inputs.map(input2=>{if(input2.dtype==="complex64")throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");let texData=this.texData.get(input2.dataId);if(texData.texture==null){if(!program.packedInputs&&util_exports.sizeFromShape(input2.shape)<=env().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:input2.shape,texData:null,isUniform:!0,uniformValues:texData.values};program.packedInputs&&(texData.isPacked=!0,texData.shape=input2.shape)}else if(!!texData.isPacked!=!!program.packedInputs)input2=texData.isPacked?this.unpackTensor(input2):this.packTensor(input2),dataToDispose.push(input2),texData=this.texData.get(input2.dataId);else if(texData.isPacked&&!isReshapeFree(texData.shape,input2.shape)){let savedInput=input2,targetShape=input2.shape;input2.shape=texData.shape,input2=this.packedReshape(input2,targetShape),dataToDispose.push(input2),texData=this.texData.get(input2.dataId),savedInput.shape=targetShape}return this.uploadToGPU(input2.dataId),{shape:input2.shape,texData,isUniform:!1}});this.uploadToGPU(output.dataId);let outputData={shape:output.shape,texData:outData,isUniform:!1},key=makeShaderKey(program,inputsData,outputData),binary=this.getAndSaveBinary(key,()=>compileProgram(this.gpgpu,program,inputsData,outputData)),shouldTimeProgram=this.activeTimers!=null,query;if(shouldTimeProgram&&(query=this.startTimer()),runProgram(this.gpgpu,binary,inputsData,outputData,customSetup),dataToDispose.forEach(info=>this.disposeIntermediateTensorInfo(info)),shouldTimeProgram&&(query=this.endTimer(query),this.activeTimers.push({name:program.constructor.name,query:this.getQueryTime(query)})),!env().getBool("WEBGL_LAZILY_UNPACK")&&outData.isPacked&&preventEagerUnpackingOfOutput===!1){let unpacked=this.unpackTensor(output);return this.disposeIntermediateTensorInfo(output),unpacked}return output}compileAndRun(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput=!1){outputDtype=outputDtype||inputs[0].dtype;let outInfo=this.runWebGLProgram(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput);return engine().makeTensorFromDataId(outInfo.dataId,outInfo.shape,outInfo.dtype)}getAndSaveBinary(key,getBinary){return key in this.binaryCache||(this.binaryCache[key]=getBinary()),this.binaryCache[key]}getTextureManager(){return this.textureManager}dispose(){this.disposed||(env().getBool("IS_TEST")||Object.keys(this.binaryCache).forEach(key=>{this.gpgpu.deleteProgram(this.binaryCache[key].webGLProgram),delete this.binaryCache[key]}),this.textureManager.dispose(),this.canvas!=null&&typeof HTMLCanvasElement!="undefined"&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0)}floatPrecision(){return this.floatPrecisionValue==null&&(this.floatPrecisionValue=tidy(()=>{if(!env().get("WEBGL_RENDER_FLOAT32_ENABLED")){let debugFlag=env().getBool("DEBUG");env().set("DEBUG",!1);let underflowCheckValue=this.abs(scalar(1e-8)).dataSync()[0];if(env().set("DEBUG",debugFlag),underflowCheckValue>0)return 32}return 16})),this.floatPrecisionValue}epsilon(){return this.floatPrecision()===32?EPSILON_FLOAT322:EPSILON_FLOAT162}uploadToGPU(dataId){let texData=this.texData.get(dataId),{shape,dtype,values,texture,usage,isPacked}=texData;if(texture!=null)return;let shouldTimeProgram=this.activeTimers!=null,start;shouldTimeProgram&&(start=util_exports.now());let texShape=texData.texShape;if(texShape==null&&(texShape=getTextureShapeFromLogicalShape(shape,isPacked),texData.texShape=texShape),values!=null){let shapeAs3D=getShapeAs3D(shape),program,width=texShape[1],height=texShape[0],isByteArray=values instanceof Uint8Array;isPacked?([width,height]=getPackedMatrixTextureShapeWidthHeight(texShape[0],texShape[1]),program=new EncodeMatrixPackedProgram(shapeAs3D,[height,width],isByteArray)):program=new EncodeMatrixProgram(shapeAs3D,[height,width],isByteArray);let tempDenseInputHandle=this.makeTensorInfo([height,width],dtype);isByteArray?this.texData.get(tempDenseInputHandle.dataId).usage=TextureUsage.PIXELS:this.texData.get(tempDenseInputHandle.dataId).usage=TextureUsage.UPLOAD,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(tempDenseInputHandle.dataId),width,height,values);let preventEagerUnpacking=!0,encodedOutputTarget=this.runWebGLProgram(program,[tempDenseInputHandle],dtype,null,preventEagerUnpacking),outputTexData=this.texData.get(encodedOutputTarget.dataId);texData.texture=outputTexData.texture,texData.texShape=outputTexData.texShape,texData.isPacked=outputTexData.isPacked,texData.usage=outputTexData.usage,this.disposeIntermediateTensorInfo(tempDenseInputHandle),this.texData.delete(encodedOutputTarget.dataId),texData.values=null,shouldTimeProgram&&(this.uploadWaitMs+=util_exports.now()-start)}else{let newTexture=this.acquireTexture(texShape,usage,dtype,isPacked);texData.texture=newTexture}}convertAndCacheOnCPU(dataId,float32Values){let texData=this.texData.get(dataId),{dtype}=texData;return this.releaseGPUData(dataId),float32Values!=null&&(texData.values=float32ToTypedArray(float32Values,dtype)),texData.values}acquireTexture(texShape,texType,dtype,isPacked){if(this.numBytesInGPU+=this.computeBytes(texShape,dtype),!this.warnedAboutMemory&&this.numBytesInGPU>this.numMBBeforeWarning*1024*1024){let mb=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn(`High memory usage in GPU: ${mb} MB, most likely due to a memory leak`)}return this.textureManager.acquireTexture(texShape,texType,isPacked)}computeBytes(shape,dtype){return shape[0]*shape[1]*util_exports.bytesPerElement(dtype)}};function float32ToTypedArray(a,dtype){if(dtype==="float32"||dtype==="complex64")return a;if(dtype==="int32"||dtype==="bool"){let result=dtype==="int32"?new Int32Array(a.length):new Uint8Array(a.length);for(let i=0;inew MathBackendWebGL,2);var CHECK_NAN_SNIPPET2=` + `}},fX=Qa.whereImpl,gX=1e-7,yX=1e-4,Yv={};function bX(e){return e in Yv||(Yv[e]={}),Yv[e]}var xX=128,vX=600;function wX(){return ee().global.screen==null?1024:ee().global.screen.height*ee().global.screen.width*window.devicePixelRatio*vX/1024/1024}var IX=class extends uc{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.warnedAboutMemory=!1,this.warnedAboutCPUBackend=!1,this.pendingDeletes=0,this.disposed=!1,!ee().getBool("HAS_WEBGL"))throw new Error("WebGL is not supported on this device");if(e==null){let t=ir(ee().getNumber("WEBGL_VERSION"));this.binaryCache=bX(ee().getNumber("WEBGL_VERSION")),this.gpgpu=new O8(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 nX(this.gpgpu),this.numMBBeforeWarning=wX(),this.texData=new Md(this,ns())}numDataIds(){return this.texData.numDataIds()+(this.cpuBackend?this.cpuBackend.numDataIds():0)-this.pendingDeletes}write(e,t,n){if((ee().getBool("WEBGL_CHECK_NUMERICAL_PROBLEMS")||ee().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 a={};return this.texData.set(a,{shape:t,dtype:n,values:e,usage:ra.UPLOAD,refCount:1,complexParentRefCount:0}),a}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,a){if(ee().getBool("DEBUG")&&this.checkNumericalProblems(t),a==="complex64")throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");this.texData.set(e,{shape:n,dtype:a,values:t,usage:ra.UPLOAD,refCount:1,complexParentRefCount:0})}disposeIntermediateTensorInfo(e){let t=e.dataId;if(this.texData.has(t)){let n=this.texData.get(t);n.refCount--,n.refCount<1&&this.disposeData(t)}}readSync(e){let t=this.texData.get(e),{values:n,dtype:a,complexTensorInfos:r,slice:s,shape:i,isPacked:o}=t;if(s!=null){let p;o?p=new Nu(i,rf):p=new ys(i,rf);let d=this.runWebGLProgram(p,[{dataId:e,shape:i,dtype:a}],a),h=this.readSync(d.dataId);return this.disposeIntermediateTensorInfo(d),h}if(n!=null)return this.convertAndCacheOnCPU(e);if(a==="string")return n;let l=this.activeTimers!=null,c;l&&(c=k.now());let u;if(a==="complex64"){let p=this.readSync(r.real.dataId),d=this.readSync(r.imag.dataId);u=_.mergeRealAndImagArrays(p,d)}else u=this.getValuesFromTexture(e);return l&&(this.downloadWaitMs+=k.now()-c),this.convertAndCacheOnCPU(e,u)}async read(e){if(this.pendingRead.has(e)){let h=this.pendingRead.get(e);return new Promise(m=>h.push(m))}let t=this.texData.get(e),{values:n,shape:a,slice:r,dtype:s,complexTensorInfos:i,isPacked:o}=t;if(r!=null){let h;o?h=new Nu(a,rf):h=new ys(a,rf);let m=this.runWebGLProgram(h,[{dataId:e,shape:a,dtype:s}],s),f=this.read(m.dataId);return this.disposeIntermediateTensorInfo(m),f}if(n!=null)return this.convertAndCacheOnCPU(e);if(!ee().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")&&ee().getNumber("WEBGL_VERSION")===2)throw new Error("tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.");let l=null,c;if(s!=="complex64"&&ee().get("WEBGL_BUFFER_SUPPORTED")){c=this.decode(e);let h=this.texData.get(c.dataId);l=this.gpgpu.createBufferFromTexture(h.texture,...Np(a))}this.pendingRead.set(e,[]),s!=="complex64"&&await this.gpgpu.createAndWaitForFence();let u;if(s==="complex64"){let h=await Promise.all([this.read(i.real.dataId),this.read(i.imag.dataId)]),m=h[0],f=h[1];u=_.mergeRealAndImagArrays(m,f)}else if(l==null)u=this.getValuesFromTexture(e);else{let h=k.sizeFromShape(a);u=this.gpgpu.downloadFloat32MatrixFromBuffer(l,h)}c!=null&&this.disposeIntermediateTensorInfo(c);let p=this.convertAndCacheOnCPU(e,u),d=this.pendingRead.get(e);return this.pendingRead.delete(e),d.forEach(h=>h(p)),this.pendingDisposal.has(e)&&(this.pendingDisposal.delete(e),this.disposeData(e),this.pendingDeletes--),p}bufferSync(e){let t=this.readSync(e.dataId),n=t;if(e.dtype==="string")try{n=t.map(a=>k.decodeString(a))}catch(a){throw new Error("Failed to decode encoded string bytes into utf-8")}return Le(e.shape,e.dtype,n)}checkNumericalProblems(e){if(e!=null)for(let t=0;to.query)).filter(o=>o!=null),s=k.flatten(this.activeTimers.map(o=>o.name)).filter(o=>o!=null);this.activeTimers=t,a&&(this.programTimersStack=null);let i={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null};if(ee().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0){let o=await Promise.all(r);i.kernelMs=k.sum(o),i.getExtraProfileInfo=()=>o.map((l,c)=>({name:s[c],ms:l})).map(l=>`${l.name}: ${l.ms}`).join(", ")}else i.kernelMs={error:"WebGL query timers are not supported in this environment."};return this.uploadWaitMs=0,this.downloadWaitMs=0,i}memory(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU,numBytesInGPUAllocated:this.textureManager.numBytesAllocated,numBytesInGPUFree:this.textureManager.numBytesFree}}startTimer(){return ee().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?this.gpgpu.beginQuery():{startMs:k.now(),endMs:null}}endTimer(e){return ee().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?(this.gpgpu.endQuery(),e):(e.endMs=k.now(),e)}async getQueryTime(e){if(ee().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0)return this.gpgpu.waitForQueryAndGetTime(e);let t=e;return t.endMs-t.startMs}disposeData(e){if(this.pendingDisposal.has(e))return;if(this.pendingRead.has(e)){this.pendingDisposal.add(e),this.pendingDeletes++;return}if(!this.texData.has(e))return;if(this.texData.get(e).complexParentRefCount>0){this.texData.get(e).refCount--;return}this.releaseGPUData(e);let{complexTensorInfos:t}=this.texData.get(e);t!=null&&(this.texData.get(t.real.dataId).complexParentRefCount--,this.disposeIntermediateTensorInfo(t.real),this.texData.get(t.imag.dataId).complexParentRefCount--,this.disposeIntermediateTensorInfo(t.imag)),this.texData.delete(e)}releaseGPUData(e){let{texture:t,dtype:n,texShape:a,usage:r,isPacked:s,slice:i}=this.texData.get(e),o=i&&i.origDataId||e,l=this.dataRefCount.get(o);l>1?this.dataRefCount.set(o,l-1):(this.dataRefCount.delete(o),t!=null&&(this.numBytesInGPU-=this.computeBytes(a,n),this.textureManager.releaseTexture(t,a,r,s)));let c=this.texData.get(e);c.texture=null,c.texShape=null,c.isPacked=!1,c.slice=null}getTexture(e){return this.uploadToGPU(e),this.texData.get(e).texture}getDataInfo(e){return this.texData.get(e)}getCPUBackend(){return ee().getBool("WEBGL_CPU_FORWARD")?(this.cpuBackend==null&&(this.cpuBackend=ns().findBackend("cpu")),this.cpuBackend):null}shouldExecuteOnCPU(e,t=xX){let n=this.getCPUBackend();return!ee().getBool("IS_TEST")&&!this.warnedAboutCPUBackend&&n==null&&(console.warn("Your application contains ops that are small enough to be executed on the CPU backend, however the CPU backend cannot be found. Consider importing the CPU backend (@tensorflow/tfjs-backend-cpu) for better performance."),this.warnedAboutCPUBackend=!0),n!=null&&e.every(a=>this.texData.get(a.dataId).texture==null&&k.sizeFromShape(a.shape)0&&k.isString(n[0])){let r=n.map(s=>k.encodeString(s));a=this.write(r,e,t)}else a=this.write(n,e,t);return this.texData.get(a).usage=null,{dataId:a,shape:e,dtype:t}}makeOutput(e,t,n){let{dataId:a}=this.makeTensorInfo(e,t,n);return ns().makeTensorFromDataId(a,e,t,this)}unpackTensor(e){let t=new mX(e.shape);return this.runWebGLProgram(t,[e],e.dtype)}packTensor(e){let t=new QK(e.shape),n=!0;return this.runWebGLProgram(t,[e],e.dtype,null,n)}packedReshape(e,t){let n=[bu(e.shape),...xu(e.shape)],a={dtype:e.dtype,shape:n,dataId:e.dataId},r=[bu(t),...xu(t)],s=new gS(r,n),i=!0,o=this.runWebGLProgram(s,[a],e.dtype,null,i);return{dataId:o.dataId,shape:t,dtype:o.dtype}}decode(e){let t=this.texData.get(e),{isPacked:n,shape:a,dtype:r}=t,s=Gv(a),i;n?i=new f8(s):i=new m8(s);let o=!0,l=this.runWebGLProgram(i,[{shape:s,dtype:r,dataId:e}],r,null,o);return{dtype:r,shape:a,dataId:l.dataId}}runWebGLProgram(e,t,n,a,r=!1){let s=this.makeTensorInfo(e.outputShape,n),i=this.texData.get(s.dataId);if(e.packedOutput&&(i.isPacked=!0),e.outPackingScheme===kp.DENSE){let m=Np(e.outputShape);i.texShape=m.map(f=>f*2)}if(e.outTexUsage!=null&&(i.usage=e.outTexUsage),k.sizeFromShape(s.shape)===0)return i.values=k.getTypedArrayFromDType(s.dtype,0),s;let o=[],l=t.map(m=>{if(m.dtype==="complex64")throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");let f=this.texData.get(m.dataId);if(f.texture==null){if(!e.packedInputs&&k.sizeFromShape(m.shape)<=ee().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:m.shape,texData:null,isUniform:!0,uniformValues:f.values};e.packedInputs&&(f.isPacked=!0,f.shape=m.shape)}else if(!!f.isPacked!=!!e.packedInputs)m=f.isPacked?this.unpackTensor(m):this.packTensor(m),o.push(m),f=this.texData.get(m.dataId);else if(f.isPacked&&!af(f.shape,m.shape)){let g=m,y=m.shape;m.shape=f.shape,m=this.packedReshape(m,y),o.push(m),f=this.texData.get(m.dataId),g.shape=y}return this.uploadToGPU(m.dataId),{shape:m.shape,texData:f,isUniform:!1}});this.uploadToGPU(s.dataId);let c={shape:s.shape,texData:i,isUniform:!1},u=kK(e,l,c),p=this.getAndSaveBinary(u,()=>vK(this.gpgpu,e,l,c)),d=this.activeTimers!=null,h;if(d&&(h=this.startTimer()),wK(this.gpgpu,p,l,c,a),o.forEach(m=>this.disposeIntermediateTensorInfo(m)),d&&(h=this.endTimer(h),this.activeTimers.push({name:e.constructor.name,query:this.getQueryTime(h)})),!ee().getBool("WEBGL_LAZILY_UNPACK")&&i.isPacked&&r===!1){let m=this.unpackTensor(s);return this.disposeIntermediateTensorInfo(s),m}return s}compileAndRun(e,t,n,a,r=!1){n=n||t[0].dtype;let s=this.runWebGLProgram(e,t,n,a,r);return ns().makeTensorFromDataId(s.dataId,s.shape,s.dtype)}getAndSaveBinary(e,t){return e in this.binaryCache||(this.binaryCache[e]=t()),this.binaryCache[e]}getTextureManager(){return this.textureManager}dispose(){this.disposed||(ee().getBool("IS_TEST")||Object.keys(this.binaryCache).forEach(e=>{this.gpgpu.deleteProgram(this.binaryCache[e].webGLProgram),delete this.binaryCache[e]}),this.textureManager.dispose(),this.canvas!=null&&typeof HTMLCanvasElement!="undefined"&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0)}floatPrecision(){return this.floatPrecisionValue==null&&(this.floatPrecisionValue=D(()=>{if(!ee().get("WEBGL_RENDER_FLOAT32_ENABLED")){let e=ee().getBool("DEBUG");ee().set("DEBUG",!1);let t=this.abs(de(1e-8)).dataSync()[0];if(ee().set("DEBUG",e),t>0)return 32}return 16})),this.floatPrecisionValue}epsilon(){return this.floatPrecision()===32?gX:yX}uploadToGPU(e){let t=this.texData.get(e),{shape:n,dtype:a,values:r,texture:s,usage:i,isPacked:o}=t;if(s!=null)return;let l=this.activeTimers!=null,c;l&&(c=k.now());let u=t.texShape;if(u==null&&(u=i8(n,o),t.texShape=u),r!=null){let p=Gv(n),d,h=u[1],m=u[0],f=r instanceof Uint8Array;o?([h,m]=yu(u[0],u[1]),d=new x8(p,[m,h],f)):d=new b8(p,[m,h],f);let g=this.makeTensorInfo([m,h],a);f?this.texData.get(g.dataId).usage=ra.PIXELS:this.texData.get(g.dataId).usage=ra.UPLOAD,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(g.dataId),h,m,r);let y=!0,b=this.runWebGLProgram(d,[g],a,null,y),x=this.texData.get(b.dataId);t.texture=x.texture,t.texShape=x.texShape,t.isPacked=x.isPacked,t.usage=x.usage,this.disposeIntermediateTensorInfo(g),this.texData.delete(b.dataId),t.values=null,l&&(this.uploadWaitMs+=k.now()-c)}else{let p=this.acquireTexture(u,i,a,o);t.texture=p}}convertAndCacheOnCPU(e,t){let n=this.texData.get(e),{dtype:a}=n;return this.releaseGPUData(e),t!=null&&(n.values=kX(t,a)),n.values}acquireTexture(e,t,n,a){if(this.numBytesInGPU+=this.computeBytes(e,n),!this.warnedAboutMemory&&this.numBytesInGPU>this.numMBBeforeWarning*1024*1024){let r=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn(`High memory usage in GPU: ${r} MB, most likely due to a memory leak`)}return this.textureManager.acquireTexture(e,t,a)}computeBytes(e,t){return e[0]*e[1]*k.bytesPerElement(t)}};function kX(e,t){if(t==="float32"||t==="complex64")return e;if(t==="int32"||t==="bool"){let n=t==="int32"?new Int32Array(e.length):new Uint8Array(e.length);for(let a=0;anew IX,2);var wS=` if (isnan(a)) return a; if (isnan(b)) return b; -`,BinaryOpProgram=class{constructor(op2,aShape,bShape){this.variableNames=["A","B"],this.outputShape=backend_util_exports.assertAndGetBroadcastShape(aShape,bShape),this.userCode=` +`,Tu=class{constructor(e,t,n){this.variableNames=["A","B"],this.outputShape=_.assertAndGetBroadcastShape(t,n),this.userCode=` float binaryOperation(float a, float b) { - ${op2} + ${e} } void main() { @@ -964,32 +964,32 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, float b = getBAtOutCoords(); setOutput(binaryOperation(a, b)); } - `}},CHECK_NAN_SNIPPET3=` + `}},sf=` result.r = isNaN.r > 0. ? NAN : result.r; result.g = isNaN.g > 0. ? NAN : result.g; result.b = isNaN.b > 0. ? NAN : result.b; result.a = isNaN.a > 0. ? NAN : result.a; -`,BinaryOpPackedProgram=class{constructor(op2,aShape,bShape,checkOutOfBounds=!1){this.variableNames=["A","B"],this.supportsBroadcasting=!0,this.packedInputs=!0,this.packedOutput=!0,this.outputShape=backend_util_exports.assertAndGetBroadcastShape(aShape,bShape);let rank=this.outputShape.length,checkOutOfBoundsString="";if(checkOutOfBounds)if(rank===0||util_exports.sizeFromShape(this.outputShape)===1)checkOutOfBoundsString=` +`,Cp=class{constructor(e,t,n,a=!1){this.variableNames=["A","B"],this.supportsBroadcasting=!0,this.packedInputs=!0,this.packedOutput=!0,this.outputShape=_.assertAndGetBroadcastShape(t,n);let r=this.outputShape.length,s="";if(a)if(r===0||k.sizeFromShape(this.outputShape)===1)s=` result.y = 0.; result.z = 0.; result.w = 0.; - `;else if(checkOutOfBoundsString=` - ${getCoordsDataType(rank)} coords = getOutputCoords(); - `,rank===1)checkOutOfBoundsString+=` + `;else if(s=` + ${mt(r)} coords = getOutputCoords(); + `,r===1)s+=` result.y = (coords + 1) >= ${this.outputShape[0]} ? 0. : result.y; result.z = 0.; result.w = 0.; - `;else{let channels=getChannels("coords",rank);checkOutOfBoundsString+=` + `;else{let i=yn("coords",r);s+=` bool nextRowOutOfBounds = - (${channels[rank-2]} + 1) >= ${this.outputShape[rank-2]}; + (${i[r-2]} + 1) >= ${this.outputShape[r-2]}; bool nextColOutOfBounds = - (${channels[rank-1]} + 1) >= ${this.outputShape[rank-1]}; + (${i[r-1]} + 1) >= ${this.outputShape[r-1]}; result.y = nextColOutOfBounds ? 0. : result.y; result.z = nextRowOutOfBounds ? 0. : result.z; result.w = nextColOutOfBounds || nextRowOutOfBounds ? 0. : result.w; `}this.userCode=` vec4 binaryOperation(vec4 a, vec4 b) { - ${op2} + ${e} } void main() { @@ -997,49 +997,49 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, vec4 b = getBAtOutCoords(); vec4 result = binaryOperation(a, b); - ${checkOutOfBoundsString} + ${s} setOutput(result); } - `}};function identity3(args){let{inputs,backend:backend2}=args,{x}=inputs;return backend2.incRef(x.dataId),{dataId:x.dataId,shape:x.shape,dtype:x.dtype}}var identityConfig2={kernelName:Identity,backendName:"webgl",kernelFunc:identity3};function complex3(args){let{inputs,backend:backend2}=args,{real:real4,imag:imag4}=inputs,complexInfo=backend2.makeTensorInfo(real4.shape,"complex64"),complex4=backend2.texData.get(complexInfo.dataId),realTensorInfo=identity3({inputs:{x:real4},backend:backend2}),realData=backend2.texData.get(realTensorInfo.dataId);realData.complexParentRefCount++;let imagTensorInfo=identity3({inputs:{x:imag4},backend:backend2}),imagData=backend2.texData.get(imagTensorInfo.dataId);return imagData.complexParentRefCount++,complex4.complexTensorInfos={real:realTensorInfo,imag:imagTensorInfo},complexInfo}var complexConfig2={kernelName:Complex,backendName:"webgl",kernelFunc:complex3},LEAKYRELU="return (a < 0.) ? b * a : a;",LEAKYRELU_PACKED=` + `}};function Wn(e){let{inputs:t,backend:n}=e,{x:a}=t;return n.incRef(a.dataId),{dataId:a.dataId,shape:a.shape,dtype:a.dtype}}var TX={kernelName:il,backendName:"webgl",kernelFunc:Wn};function bs(e){let{inputs:t,backend:n}=e,{real:a,imag:r}=t,s=n.makeTensorInfo(a.shape,"complex64"),i=n.texData.get(s.dataId),o=Wn({inputs:{x:a},backend:n}),l=n.texData.get(o.dataId);l.complexParentRefCount++;let c=Wn({inputs:{x:r},backend:n}),u=n.texData.get(c.dataId);return u.complexParentRefCount++,i.complexTensorInfos={real:o,imag:c},s}var SX={kernelName:Ud,backendName:"webgl",kernelFunc:bs},kS="return (a < 0.) ? b * a : a;",IS=` vec4 aLessThanZero = vec4(lessThan(a, vec4(0.))); return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a); -`;function leakyRelu3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{alpha}=attrs,$alpha=backend2.makeTensorInfo([],"float32",util_exports.createScalarValue(alpha,"float32")),program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(LEAKYRELU_PACKED,x.shape,$alpha.shape):new BinaryOpProgram(LEAKYRELU,x.shape,$alpha.shape),result=backend2.runWebGLProgram(program,[x,$alpha],x.dtype);return backend2.disposeIntermediateTensorInfo($alpha),result}var leakyReluConfig2={kernelName:LeakyRelu,backendName:"webgl",kernelFunc:leakyRelu3},PRELU="return (a < 0.) ? b * a : a;",PRELU_PACKED=` +`;function CX(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{alpha:s}=a,i=n.makeTensorInfo([],"float32",k.createScalarValue(s,"float32")),o=ee().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Cp(IS,r.shape,i.shape):new Tu(kS,r.shape,i.shape),l=n.runWebGLProgram(o,[r,i],r.dtype);return n.disposeIntermediateTensorInfo(i),l}var EX={kernelName:Js,backendName:"webgl",kernelFunc:CX},NS="return (a < 0.) ? b * a : a;",TS=` vec4 aLessThanZero = vec4(lessThan(a, vec4(0.))); return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a); -`;function prelu4(args){let{inputs,backend:backend2}=args,{x,alpha}=inputs,program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(PRELU_PACKED,x.shape,alpha.shape):new BinaryOpProgram(PRELU,x.shape,alpha.shape);return backend2.runWebGLProgram(program,[x,alpha],x.dtype)}var preluConfig2={kernelName:Prelu,backendName:"webgl",kernelFunc:prelu4},CHECK_NAN_SNIPPET_UNARY="if (isnan(x)) return x;",CHECK_NAN_SNIPPET_BINARY=` +`;function _X(e){let{inputs:t,backend:n}=e,{x:a,alpha:r}=t,s=ee().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Cp(TS,a.shape,r.shape):new Tu(NS,a.shape,r.shape);return n.runWebGLProgram(s,[a,r],a.dtype)}var FX={kernelName:ui,backendName:"webgl",kernelFunc:_X},SS="if (isnan(x)) return x;",AX=` if (isnan(a)) return a; if (isnan(b)) return b; -`,CHECK_NAN_SNIPPET_BINARY_PACKED=` +`,$X=` result.r = isNaN.r > 0. ? NAN : result.r; result.g = isNaN.g > 0. ? NAN : result.g; result.b = isNaN.b > 0. ? NAN : result.b; result.a = isNaN.a > 0. ? NAN : result.a; -`;function unaryKernelFunc2({opSnippet,packedOpSnippet,cpuKernelImpl,dtype}){return({inputs,backend:backend2})=>{let{x}=inputs,webglBackend=backend2,$dtype=dtype||x.dtype;if(webglBackend.shouldExecuteOnCPU([x])&&cpuKernelImpl!=null){let xData=webglBackend.texData.get(x.dataId),outValues=cpuKernelImpl(xData.values,$dtype);return webglBackend.makeTensorInfo(x.shape,$dtype,outValues)}let shouldUsePackedProgram=env().getBool("WEBGL_PACK_UNARY_OPERATIONS")&&packedOpSnippet!=null,program;return shouldUsePackedProgram?program=new UnaryOpPackedProgram(x.shape,packedOpSnippet):program=new UnaryOpProgram(x.shape,opSnippet),webglBackend.runWebGLProgram(program,[x],$dtype)}}function binaryKernelFunc2({opSnippet,packedOpSnippet,checkOutOfBounds=!1,supportsComplex=!1,cpuKernelImpl,dtype}){return({inputs,backend:backend2})=>{let{a,b}=inputs,webglBackend=backend2;if(supportsComplex&&a.dtype==="complex64"){let aData=webglBackend.texData.get(a.dataId),bData=webglBackend.texData.get(b.dataId),[real4,imag4]=[[aData.complexTensorInfos.real,bData.complexTensorInfos.real],[aData.complexTensorInfos.imag,bData.complexTensorInfos.imag]].map(complexParts=>{let[aPart,bPart]=complexParts,aHandle={dataId:aPart.dataId,dtype:aPart.dtype,shape:a.shape},bHandle={dataId:bPart.dataId,dtype:bPart.dtype,shape:b.shape},program2=new BinaryOpProgram(opSnippet,a.shape,b.shape);return webglBackend.runWebGLProgram(program2,[aHandle,bHandle],upcastType(aPart.dtype,bPart.dtype))}),complexOutput=complex3({inputs:{real:real4,imag:imag4},backend:webglBackend});return webglBackend.disposeIntermediateTensorInfo(real4),webglBackend.disposeIntermediateTensorInfo(imag4),complexOutput}let $dtype=dtype||upcastType(a.dtype,b.dtype);if(webglBackend.shouldExecuteOnCPU([a,b])&&cpuKernelImpl!=null){let aData=webglBackend.texData.get(a.dataId),bData=webglBackend.texData.get(b.dataId),[outValues,outShape]=cpuKernelImpl(a.shape,b.shape,aData.values,bData.values,$dtype),out=webglBackend.makeTensorInfo(outShape,$dtype),outData=webglBackend.texData.get(out.dataId);return outData.values=outValues,out}let shouldUsePackedProgram=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")&&packedOpSnippet!=null,program;return shouldUsePackedProgram?program=new BinaryOpPackedProgram(packedOpSnippet,a.shape,b.shape,checkOutOfBounds):program=new BinaryOpProgram(opSnippet,a.shape,b.shape),webglBackend.runWebGLProgram(program,[a,b],$dtype)}}function mapActivationToShaderProgram(activation2,packed=!1){if(activation2==="linear")return packed?LINEAR2:LINEAR;if(activation2==="relu")return packed?RELU2:RELU;if(activation2==="elu")return packed?ELU3:ELU2;if(activation2==="relu6")return packed?RELU62:RELU6;if(activation2==="prelu")return packed?PRELU_PACKED:PRELU;if(activation2==="leakyrelu")return packed?LEAKYRELU_PACKED:LEAKYRELU;throw new Error(`Activation ${activation2} has not been implemented for the WebGL backend.`)}var MatMulPackedProgram=class{constructor(aShape,bShape,outputShape,transposeA=!1,transposeB=!1,addBias=!1,activation2=null,hasPreluActivation=!1,hasLeakyreluActivation=!1){this.variableNames=["matrixA","matrixB"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=outputShape;let sharedDim=transposeA?aShape[1]:aShape[2],sharedDimensionPacked=Math.ceil(sharedDim/2),aSample=transposeA?"i * 2, rc.y":"rc.y, i * 2",bSample=transposeB?"rc.z, i * 2":"i * 2, rc.z",aSwizzle=transposeA?["a.xxyy","a.zzww"]:["a.xxzz","a.yyww"],bSwizzle=transposeB?["b.xzxz","b.ywyw"]:["b.xyxy","b.zwzw"],activationSnippet="",applyActivationSnippet="";activation2&&(hasPreluActivation?activationSnippet=`vec4 activation(vec4 a) { +`;function Ye({opSnippet:e,packedOpSnippet:t,cpuKernelImpl:n,dtype:a}){return({inputs:r,backend:s})=>{let{x:i}=r,o=s,l=a||i.dtype;if(o.shouldExecuteOnCPU([i])&&n!=null){let p=o.texData.get(i.dataId),d=n(p.values,l);return o.makeTensorInfo(i.shape,l,d)}let c=ee().getBool("WEBGL_PACK_UNARY_OPERATIONS")&&t!=null,u;return c?u=new Nu(i.shape,t):u=new ys(i.shape,e),o.runWebGLProgram(u,[i],l)}}function on({opSnippet:e,packedOpSnippet:t,checkOutOfBounds:n=!1,supportsComplex:a=!1,cpuKernelImpl:r,dtype:s}){return({inputs:i,backend:o})=>{let{a:l,b:c}=i,u=o;if(a&&l.dtype==="complex64"){let m=u.texData.get(l.dataId),f=u.texData.get(c.dataId),[g,y]=[[m.complexTensorInfos.real,f.complexTensorInfos.real],[m.complexTensorInfos.imag,f.complexTensorInfos.imag]].map(x=>{let[v,N]=x,T={dataId:v.dataId,dtype:v.dtype,shape:l.shape},E={dataId:N.dataId,dtype:N.dtype,shape:c.shape},A=new Tu(e,l.shape,c.shape);return u.runWebGLProgram(A,[T,E],pa(v.dtype,N.dtype))}),b=bs({inputs:{real:g,imag:y},backend:u});return u.disposeIntermediateTensorInfo(g),u.disposeIntermediateTensorInfo(y),b}let p=s||pa(l.dtype,c.dtype);if(u.shouldExecuteOnCPU([l,c])&&r!=null){let m=u.texData.get(l.dataId),f=u.texData.get(c.dataId),[g,y]=r(l.shape,c.shape,m.values,f.values,p),b=u.makeTensorInfo(y,p),x=u.texData.get(b.dataId);return x.values=g,b}let d=ee().getBool("WEBGL_PACK_BINARY_OPERATIONS")&&t!=null,h;return d?h=new Cp(t,l.shape,c.shape,n):h=new Tu(e,l.shape,c.shape),u.runWebGLProgram(h,[l,c],p)}}function of(e,t=!1){if(e==="linear")return t?cX:iX;if(e==="relu")return t?dX:lX;if(e==="elu")return t?pX:oX;if(e==="relu6")return t?hX:uX;if(e==="prelu")return t?TS:NS;if(e==="leakyrelu")return t?IS:kS;throw new Error(`Activation ${e} has not been implemented for the WebGL backend.`)}var CS=class{constructor(e,t,n,a=!1,r=!1,s=!1,i=null,o=!1,l=!1){this.variableNames=["matrixA","matrixB"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=n;let c=a?e[1]:e[2],u=Math.ceil(c/2),p=a?"i * 2, rc.y":"rc.y, i * 2",d=r?"rc.z, i * 2":"i * 2, rc.z",h=a?["a.xxyy","a.zzww"]:["a.xxzz","a.yyww"],m=r?["b.xzxz","b.ywyw"]:["b.xyxy","b.zwzw"],f="",g="";i&&(o?f=`vec4 activation(vec4 a) { vec4 b = getPreluActivationWeightsAtOutCoords(); - ${activation2} - }`:hasLeakyreluActivation?activationSnippet=`vec4 activation(vec4 a) { + ${i} + }`:l?f=`vec4 activation(vec4 a) { vec4 b = getLeakyreluAlphaAtOutCoords(); - ${activation2} - }`:activationSnippet=`vec4 activation(vec4 x) { - ${activation2} - }`,applyActivationSnippet="result = activation(result);");let addBiasSnippet=addBias?"result += getBiasAtOutCoords();":"";addBias&&this.variableNames.push("bias"),hasPreluActivation&&this.variableNames.push("preluActivationWeights"),hasLeakyreluActivation&&this.variableNames.push("leakyreluAlpha");let batchASnippet="rc.x",batchBSnippet="rc.x";aShape[0]`The new shape (${$shape}) has ${$xSize} elements and the old shape (${x.shape}) has ${xSize} elements. The new shape and old shape must have the same number of elements.`);let xTexData=webglBackend.texData.get(x.dataId);return xTexData.isPacked&&!isReshapeFree(x.shape,$shape)&&!(xTexData.texture!==null&&isReshapeFree(xTexData.shape,$shape))?packedReshape(x,$shape,webglBackend):(webglBackend.incRef(x.dataId),{dataId:x.dataId,shape:$shape,dtype:x.dtype})}var reshapeConfig2={kernelName:Reshape,backendName:"webgl",kernelFunc:reshape4},MeanProgram=class{constructor(reduceInfo,divisor){this.variableNames=["x"];let{windowSize,batchSize,inSize,outSize}=reduceInfo;this.outputShape=[batchSize,outSize];let windowSizeNearestVec4=Math.floor(windowSize/4)*4,windowSizeVec4Remainder=windowSize%4,updateSnippet="sumValue += dot(values, ones);";if(divisor!=null){let denominator=1/divisor;updateSnippet=`sumValue += dot(values * ${util_exports.isInt(denominator)?denominator.toPrecision(2):denominator}, ones);`}let checkOutOfBounds="";inSize%windowSize>0&&(checkOutOfBounds=` - if (inIdx < 0 || inIdx >= ${inSize}) { + `}},FS="return a * b;";function AS(e){let{inputs:t,backend:n}=e,{a,b:r}=t,s=_.upcastType(a.dtype,r.dtype);if(a.dtype==="complex64"){let o=n.texData.get(a.dataId),l=n.texData.get(r.dataId),c=new _S(ES.REAL,a.shape,r.shape),u=new _S(ES.IMAG,a.shape,r.shape),p=[{dataId:o.complexTensorInfos.real.dataId,dtype:o.complexTensorInfos.real.dtype,shape:a.shape},{dataId:o.complexTensorInfos.imag.dataId,dtype:o.complexTensorInfos.imag.dtype,shape:a.shape},{dataId:l.complexTensorInfos.real.dataId,dtype:l.complexTensorInfos.real.dtype,shape:r.shape},{dataId:l.complexTensorInfos.imag.dataId,dtype:l.complexTensorInfos.imag.dtype,shape:r.shape}],d=n.runWebGLProgram(c,p,"float32"),h=n.runWebGLProgram(u,p,"float32"),m=bs({inputs:{real:d,imag:h},backend:n});return n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(h),m}if(n.shouldExecuteOnCPU([a,r])){let o=n.texData.get(a.dataId),l=n.texData.get(r.dataId),[c,u]=LK(a.shape,r.shape,o.values,l.values,s),p=n.makeTensorInfo(u,s),d=n.texData.get(p.dataId);return d.values=c,p}let i;return ee().getBool("WEBGL_PACK_BINARY_OPERATIONS")?i=new Cp(FS,a.shape,r.shape):i=new Tu(FS,a.shape,r.shape),n.runWebGLProgram(i,[a,r],s)}var DX={kernelName:si,backendName:"webgl",kernelFunc:AS};function MX(e,t,n){let a=[bu(e.shape),...xu(e.shape)],r={dtype:e.dtype,shape:a,dataId:e.dataId},s=[bu(t),...xu(t)],i=new gS(s,a),o=!0,l=n.runWebGLProgram(i,[r],e.dtype,null,o);return{dataId:l.dataId,shape:t,dtype:l.dtype}}function xe(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{shape:s}=a,i=n,o=k.sizeFromShape(r.shape),l=k.inferFromImplicitShape(s,o),c=k.sizeFromShape(l);k.assert(o===c,()=>`The new shape (${l}) has ${c} elements and the old shape (${r.shape}) has ${o} elements. The new shape and old shape must have the same number of elements.`);let u=i.texData.get(r.dataId);return u.isPacked&&!af(r.shape,l)&&!(u.texture!==null&&af(u.shape,l))?MX(r,l,i):(i.incRef(r.dataId),{dataId:r.dataId,shape:l,dtype:r.dtype})}var RX={kernelName:Nl,backendName:"webgl",kernelFunc:xe},$S=class{constructor(e,t){this.variableNames=["x"];let{windowSize:n,batchSize:a,inSize:r,outSize:s}=e;this.outputShape=[a,s];let i=Math.floor(n/4)*4,o=n%4,l="sumValue += dot(values, ones);";if(t!=null){let u=1/t;l=`sumValue += dot(values * ${k.isInt(u)?u.toPrecision(2):u}, ones);`}let c="";r%n>0&&(c=` + if (inIdx < 0 || inIdx >= ${r}) { return 0.0; } `),this.userCode=` const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0); float getValue(int batch, int inIdx) { - ${checkOutOfBounds} + ${c} return getX(batch, inIdx); } @@ -1083,11 +1083,11 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, ivec2 coords = getOutputCoords(); int batch = coords[0]; int outIdx = coords[1]; - int inOffset = outIdx * ${windowSize}; + int inOffset = outIdx * ${n}; float sumValue = 0.0; - for (int i = 0; i < ${windowSizeNearestVec4}; i += 4) { + for (int i = 0; i < ${i}; i += 4) { int inIdx = inOffset + i; vec4 values = vec4( getValue(batch, inIdx), @@ -1096,57 +1096,57 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, getValue(batch, inIdx + 3) ); - ${updateSnippet} + ${l} } - int inIdx = inOffset + ${windowSizeNearestVec4}; - if (${windowSizeVec4Remainder===1}) { + int inIdx = inOffset + ${i}; + if (${o===1}) { vec4 values = vec4(getValue(batch, inIdx), 0.0, 0.0, 0.0); - ${updateSnippet} - } else if (${windowSizeVec4Remainder===2}) { + ${l} + } else if (${o===2}) { vec4 values = vec4( getValue(batch, inIdx), getValue(batch, inIdx + 1), 0.0, 0.0); - ${updateSnippet} - } else if (${windowSizeVec4Remainder===3}) { + ${l} + } else if (${o===3}) { vec4 values = vec4( getValue(batch, inIdx), getValue(batch, inIdx + 1), getValue(batch, inIdx + 2), 0.0); - ${updateSnippet} + ${l} } setOutput(sumValue); } - `}},ReduceProgram=class{constructor(reduceInfo,reduceType){this.variableNames=["x"];let{windowSize,batchSize,inSize,outSize}=reduceInfo;this.outputShape=[batchSize,outSize];let initializationValue="0.0",compareOp="";reduceType==="prod"?initializationValue="1.0":reduceType==="min"?(initializationValue="1.0 / 1e-20",compareOp="min"):reduceType==="max"&&(initializationValue="-1.0 / 1e-20",compareOp="max");let returnValue=`${reduceType}(${reduceType}(${reduceType}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;reduceType==="sum"?returnValue="sumValue":reduceType==="prod"?returnValue="prodValue":reduceType==="all"?returnValue="allValue":reduceType==="any"&&(returnValue="anyValue");let windowSizeNearestVec4=Math.floor(windowSize/4)*4,windowSizeVec4Remainder=windowSize%4,updateSnippet=` - if (${reduceType==="sum"}) { + `}},PX=class{constructor(e,t){this.variableNames=["x"];let{windowSize:n,batchSize:a,inSize:r,outSize:s}=e;this.outputShape=[a,s];let i="0.0",o="";t==="prod"?i="1.0":t==="min"?(i="1.0 / 1e-20",o="min"):t==="max"&&(i="-1.0 / 1e-20",o="max");let l=`${t}(${t}(${t}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;t==="sum"?l="sumValue":t==="prod"?l="prodValue":t==="all"?l="allValue":t==="any"&&(l="anyValue");let c=Math.floor(n/4)*4,u=n%4,p=` + if (${t==="sum"}) { sumValue += dot(values, ones); - } else if (${reduceType==="prod"}) { + } else if (${t==="prod"}) { vec2 tmp = vec2(values[0], values[1]) * vec2(values[2], values[3]); prodValue *= tmp[0] * tmp[1]; } else { - minMaxValue = ${compareOp}(values, minMaxValue); + minMaxValue = ${o}(values, minMaxValue); } - `,vecType="vec4";reduceType==="all"?(initializationValue="1.0",updateSnippet=` + `,d="vec4";t==="all"?(i="1.0",p=` bool reducedAllValue = all(values); float floatedReducedAllValue = float(reducedAllValue); allValue = float(allValue >= 1.0 && floatedReducedAllValue >= 1.0); - `,vecType="bvec4"):reduceType==="any"&&(initializationValue="0.0",updateSnippet=` + `,d="bvec4"):t==="any"&&(i="0.0",p=` bool reducedAnyValue = any(values); float floatedReducedAnyValue = float(reducedAnyValue); anyValue = float(anyValue >= 1.0 || floatedReducedAnyValue >= 1.0); - `,vecType="bvec4");let checkOutOfBounds="";inSize%windowSize>0&&(checkOutOfBounds=` - if (inIdx < 0 || inIdx >= ${inSize}) { + `,d="bvec4");let h="";r%n>0&&(h=` + if (inIdx < 0 || inIdx >= ${r}) { return initializationValue; } `),this.userCode=` - const float initializationValue = ${initializationValue}; + const float initializationValue = ${i}; const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0); float getValue(int batch, int inIdx) { - ${checkOutOfBounds} + ${h} return getX(batch, inIdx); } @@ -1154,174 +1154,174 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, ivec2 coords = getOutputCoords(); int batch = coords[0]; int outIdx = coords[1]; - int inOffset = outIdx * ${windowSize}; + int inOffset = outIdx * ${n}; - vec4 minMaxValue = vec4(${initializationValue}); + vec4 minMaxValue = vec4(${i}); float prodValue = 1.0; float sumValue = 0.0; float allValue = 1.0; float anyValue = 0.0; - for (int i = 0; i < ${windowSizeNearestVec4}; i += 4) { + for (int i = 0; i < ${c}; i += 4) { int inIdx = inOffset + i; - ${vecType} values = ${vecType}( + ${d} values = ${d}( getValue(batch, inIdx), getValue(batch, inIdx + 1), getValue(batch, inIdx + 2), getValue(batch, inIdx + 3) ); - ${updateSnippet} + ${p} } - int inIdx = inOffset + ${windowSizeNearestVec4}; - if (${windowSizeVec4Remainder===1}) { - ${vecType} values = ${vecType}( + int inIdx = inOffset + ${c}; + if (${u===1}) { + ${d} values = ${d}( getValue(batch, inIdx), initializationValue, initializationValue, initializationValue ); - ${updateSnippet} - } else if (${windowSizeVec4Remainder===2}) { - ${vecType} values = ${vecType}( + ${p} + } else if (${u===2}) { + ${d} values = ${d}( getValue(batch, inIdx), getValue(batch, inIdx + 1), initializationValue, initializationValue ); - ${updateSnippet} - } else if (${windowSizeVec4Remainder===3}) { - ${vecType} values = ${vecType}( + ${p} + } else if (${u===3}) { + ${d} values = ${d}( getValue(batch, inIdx), getValue(batch, inIdx + 1), getValue(batch, inIdx + 2), initializationValue ); - ${updateSnippet} + ${p} } - setOutput(${returnValue}); + setOutput(${l}); } - `}};function getReductionStages(inShape){let stages=[];for(;stages.length===0||stages[stages.length-1].outSize!==1;){let outSize=stages.length?stages[stages.length-1].outSize:inShape[1],windowSize=backend_util_exports.computeOptimalWindowSize(outSize);stages.push({inSize:outSize,windowSize,outSize:Math.ceil(outSize/windowSize)})}return stages}function reduce(x,dtype,reductionType,backend2){let reductionStages=getReductionStages(x.shape),result=x;for(let i=0;i6)throw Error(`Transpose for rank ${rank} is not yet supported`);let originalOrder=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u","resRC.v"],switchedCoords=new Array(rank);for(let i=0;i6)throw Error(`Packed transpose for rank ${this.rank} is not yet supported.`);let dtype=getCoordsDataType(this.rank),outputOrder=getVecChannels("rc",this.rank),switchedOrder=new Array(this.rank);for(let i=0;i6)throw Error(`Transpose for rank ${t} is not yet supported`);let n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u","resRC.v"],a=new Array(t);for(let r=0;r6)throw Error(`Packed transpose for rank ${this.rank} is not yet supported.`);let a=mt(this.rank),r=fS("rc",this.rank),s=new Array(this.rank);for(let c=0;c=2&&bRank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`);let outShape=(batchDimA>batchDimB?a.shape.slice(0,-2):b.shape.slice(0,-2)).concat([outerShapeA,outerShapeB]);util_exports.assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${a.shape} and ${b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let a3dShape=transposeA?[batchDimA,innerShapeA,outerShapeA]:[batchDimA,outerShapeA,innerShapeA],b3dShape=transposeB?[batchDimB,outerShapeB,innerShapeB]:[batchDimB,innerShapeB,outerShapeB],a3d=reshape4({inputs:{x:a},backend:backend2,attrs:{shape:a3dShape}}),b3d=reshape4({inputs:{x:b},backend:backend2,attrs:{shape:b3dShape}}),intermediates=[a3d,b3d],batchDim=Math.max(batchDimA,batchDimB),sharedDim=transposeA?a3d.shape[1]:a3d.shape[2],hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,hasLeakyreluAlpha=activation2==="leakyrelu",fusedActivation=activation2!=null?mapActivationToShaderProgram(activation2,!0):null,containsFusedOps=hasBias||hasPreluActivationWeights||hasLeakyreluAlpha||fusedActivation!=null,out;if((outerShapeA===1||outerShapeB===1)&&sharedDim>MATMUL_SHARED_DIM_THRESHOLD&&containsFusedOps===!1){let aVec=a3d,bVec=b3d;transposeA&&(aVec=transpose3({inputs:{x:a3d},backend:backend2,attrs:{perm:[0,2,1]}}),intermediates.push(aVec)),transposeB&&(bVec=transpose3({inputs:{x:b3d},backend:backend2,attrs:{perm:[0,2,1]}}),intermediates.push(bVec));let shouldReshapeA=outerShapeB!==1,shouldReshapeB=outerShapeB===1,aVec3d=aVec;shouldReshapeA&&(aVec3d=reshape4({inputs:{x:aVec},backend:backend2,attrs:{shape:[batchDim,sharedDim,1]}}),intermediates.push(aVec3d));let axis=outerShapeB===1?2:1,bVec3d=bVec;shouldReshapeB&&(bVec3d=reshape4({inputs:{x:bVec},backend:backend2,attrs:{shape:[batchDim,1,sharedDim]}}),intermediates.push(bVec3d));let product=multiply3({inputs:{a:aVec3d,b:bVec3d},backend:backend2});out=sum4({inputs:{x:product},backend:backend2,attrs:{axis,keepDims:!0}}),intermediates.push(product)}else{let dtype=upcastType(a.dtype,b.dtype),program=new MatMulPackedProgram(a3dShape,b3dShape,[batchDim,outerShapeA,outerShapeB],transposeA,transposeB,hasBias,fusedActivation,hasPreluActivationWeights,hasLeakyreluAlpha),inputs=[a3d,b3d];if(bias!=null&&inputs.push(bias),hasPreluActivationWeights&&inputs.push(preluActivationWeights),hasLeakyreluAlpha){let $leakyreluAlpha=backend2.makeTensorInfo([],"float32",util_exports.createScalarValue(leakyreluAlpha,"float32"));inputs.push($leakyreluAlpha),intermediates.push($leakyreluAlpha)}out=backend2.runWebGLProgram(program,inputs,dtype)}let outReshaped=reshape4({inputs:{x:out},backend:backend2,attrs:{shape:outShape}});intermediates.push(out);for(let i of intermediates)backend2.disposeIntermediateTensorInfo(i);return outReshaped}function _fusedMatMul2(args){let{inputs,backend:backend2,attrs}=args,{a,b,bias,preluActivationWeights}=inputs,{transposeA,transposeB,activation:activation2,leakyreluAlpha}=attrs;return batchMatMulImpl({a,b,transposeA,transposeB,backend:backend2,bias,preluActivationWeights,leakyreluAlpha,activation:activation2})}var _fusedMatMulConfig2={kernelName:_FusedMatMul,backendName:"webgl",kernelFunc:_fusedMatMul2},ABS2="return abs(x);";function abs3(args){let{inputs,backend:backend2}=args,{x}=inputs;if(backend2.shouldExecuteOnCPU([x])&&x.dtype!=="complex64"){let xData=backend2.texData.get(x.dataId),outValues=simpleAbsImplCPU(xData.values);return backend2.makeTensorInfo(x.shape,x.dtype,outValues)}let program;return env().getBool("WEBGL_PACK_UNARY_OPERATIONS")?program=new UnaryOpPackedProgram(x.shape,ABS2):program=new UnaryOpProgram(x.shape,ABS2),backend2.runWebGLProgram(program,[x],x.dtype)}var absConfig2={kernelName:Abs,backendName:"webgl",kernelFunc:abs3},ACOS=CHECK_NAN_SNIPPET+` + `}};function lf(e,t,n){let a=ee().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new BX(e.shape,t):new zX(e.shape,t);return n.runWebGLProgram(a,[e],e.dtype)}function WX(e,t,n,a){let r=t,s=e.shape.length,i=k.parseAxisParam(r,e.shape),o=i,l=_.getAxesPermutation(o,s),c=l!=null,u=e;c&&(u=lf(e,l,a),o=_.getInnerMostAxes(o.length,s)),_.assertAxesAreInnerMostDims("sum",o,s);let[p,d]=_.computeOutAndReduceShapes(u.shape,o),h=p;n&&(h=_.expandShapeToKeepDim(p,i));let m=k.sizeFromShape(d),f=k.sizeFromShape(e.shape)/m,g=xe({inputs:{x:u},attrs:{shape:[f,m]},backend:a}),y=xh(e.dtype),b=eo(g,y,"sum",a),x=xe({inputs:{x:b},attrs:{shape:h},backend:a});return a.disposeIntermediateTensorInfo(g),a.disposeIntermediateTensorInfo(b),c&&a.disposeIntermediateTensorInfo(u),x}function Jv(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{axis:s,keepDims:i}=a;return WX(r,s,i,n)}var VX={kernelName:xi,backendName:"webgl",kernelFunc:Jv};function En(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{perm:s}=a,i=n,o=r.shape.length,l=new Array(o);for(let u=0;u=2&&u>=2&&x,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${f}) and (${g}).`);let v=(y>b?e.shape.slice(0,-2):t.shape.slice(0,-2)).concat([h,m]);k.assert(p===d,()=>`Error in matMul: inner shapes (${p}) and (${d}) of Tensors with shapes ${e.shape} and ${t.shape} and transposeA=${n} and transposeB=${a} must match.`);let N=n?[y,p,h]:[y,h,p],T=a?[b,m,d]:[b,d,m],E=xe({inputs:{x:e},backend:r,attrs:{shape:N}}),A=xe({inputs:{x:t},backend:r,attrs:{shape:T}}),$=[E,A],O=Math.max(y,b),V=n?E.shape[1]:E.shape[2],W=s!=null,H=i!=null,X=l==="leakyrelu",q=l!=null?of(l,!0):null,K=W||H||X||q!=null,J;if((h===1||m===1)&&V>DS&&K===!1){let Q=E,ie=A;n&&(Q=En({inputs:{x:E},backend:r,attrs:{perm:[0,2,1]}}),$.push(Q)),a&&(ie=En({inputs:{x:A},backend:r,attrs:{perm:[0,2,1]}}),$.push(ie));let re=m!==1,ae=m===1,oe=Q;re&&(oe=xe({inputs:{x:Q},backend:r,attrs:{shape:[O,V,1]}}),$.push(oe));let he=m===1?2:1,ce=ie;ae&&(ce=xe({inputs:{x:ie},backend:r,attrs:{shape:[O,1,V]}}),$.push(ce));let ge=AS({inputs:{a:oe,b:ce},backend:r});J=Jv({inputs:{x:ge},backend:r,attrs:{axis:he,keepDims:!0}}),$.push(ge)}else{let Q=pa(e.dtype,t.dtype),ie=new CS(N,T,[O,h,m],n,a,W,q,H,X),re=[E,A];if(s!=null&&re.push(s),H&&re.push(i),X){let ae=r.makeTensorInfo([],"float32",k.createScalarValue(o,"float32"));re.push(ae),$.push(ae)}J=r.runWebGLProgram(ie,re,Q)}let te=xe({inputs:{x:J},backend:r,attrs:{shape:v}});$.push(J);for(let Q of $)r.disposeIntermediateTensorInfo(Q);return te}function GX(e){let{inputs:t,backend:n,attrs:a}=e,{a:r,b:s,bias:i,preluActivationWeights:o}=t,{transposeA:l,transposeB:c,activation:u,leakyreluAlpha:p}=a;return uf({a:r,b:s,transposeA:l,transposeB:c,backend:n,bias:i,preluActivationWeights:o,leakyreluAlpha:p,activation:u})}var HX={kernelName:Ti,backendName:"webgl",kernelFunc:GX},MS="return abs(x);";function jX(e){let{inputs:t,backend:n}=e,{x:a}=t;if(n.shouldExecuteOnCPU([a])&&a.dtype!=="complex64"){let s=n.texData.get(a.dataId),i=mS(s.values);return n.makeTensorInfo(a.shape,a.dtype,i)}let r;return ee().getBool("WEBGL_PACK_UNARY_OPERATIONS")?r=new Nu(a.shape,MS):r=new ys(a.shape,MS),n.runWebGLProgram(r,[a],a.dtype)}var qX={kernelName:Lo,backendName:"webgl",kernelFunc:jX},KX=Oa+` if (abs(x) > 1.) { return NAN; } return acos(x); -`,acos3=unaryKernelFunc2({opSnippet:ACOS}),acosConfig2={kernelName:Acos,backendName:"webgl",kernelFunc:acos3},ACOSH=CHECK_NAN_SNIPPET+` +`,XX=Ye({opSnippet:KX}),YX={kernelName:zo,backendName:"webgl",kernelFunc:XX},JX=Oa+` if (x < 1.0) return NAN; -return log(x + sqrt(x * x - 1.0));`,acosh3=unaryKernelFunc2({opSnippet:ACOSH}),acoshConfig2={kernelName:Acosh,backendName:"webgl",kernelFunc:acosh3},ADD="return a + b;",addKernelFunc=binaryKernelFunc2({opSnippet:ADD,packedOpSnippet:ADD,supportsComplex:!0,cpuKernelImpl:addImplCPU}),addConfig2={kernelName:Add,backendName:"webgl",kernelFunc:addKernelFunc},AddNProgram=class{constructor(outputShape,shapes){this.outputShape=[],this.outputShape=outputShape,this.variableNames=shapes.map((_,i)=>`T${i}`);let snippets=[];this.variableNames.forEach(variable2=>{snippets.push(`float v${variable2} = get${variable2}AtOutCoords();`)});let operation=this.variableNames.map(variable2=>`v${variable2}`).join(" + ");this.userCode=` +return log(x + sqrt(x * x - 1.0));`,ZX=Ye({opSnippet:JX}),QX={kernelName:Bo,backendName:"webgl",kernelFunc:ZX},RS="return a + b;",eY=on({opSnippet:RS,packedOpSnippet:RS,supportsComplex:!0,cpuKernelImpl:IK}),tY={kernelName:qr,backendName:"webgl",kernelFunc:eY},nY=class{constructor(e,t){this.outputShape=[],this.outputShape=e,this.variableNames=t.map((r,s)=>`T${s}`);let n=[];this.variableNames.forEach(r=>{n.push(`float v${r} = get${r}AtOutCoords();`)});let a=this.variableNames.map(r=>`v${r}`).join(" + ");this.userCode=` void main() { - ${snippets.join(` + ${n.join(` `)} - float result = ${operation}; + float result = ${a}; setOutput(result); } - `}},AddNPackedProgram=class{constructor(outputShape,shapes){this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=outputShape,this.variableNames=shapes.map((_,i)=>`T${i}`);let snippets=[];this.variableNames.forEach(variable2=>{snippets.push(`vec4 v${variable2} = get${variable2}AtOutCoords();`)});let operation=this.variableNames.map(variable2=>`v${variable2}`).join(" + ");this.userCode=` + `}},aY=class{constructor(e,t){this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.variableNames=t.map((r,s)=>`T${s}`);let n=[];this.variableNames.forEach(r=>{n.push(`vec4 v${r} = get${r}AtOutCoords();`)});let a=this.variableNames.map(r=>`v${r}`).join(" + ");this.userCode=` void main() { - ${snippets.join(` + ${n.join(` `)} - vec4 result = ${operation}; + vec4 result = ${a}; setOutput(result); } - `}};function addN3(args){let{inputs,backend:backend2}=args,tensors=inputs;if(tensors.length===1)return identity3({inputs:{x:tensors[0]},backend:backend2});if(tensors.length>env().get("WEBGL_MAX_TEXTURES_IN_SHADER")){let midIndex=Math.floor(tensors.length/2),leftSide=addN3({inputs:tensors.slice(0,midIndex),backend:backend2}),rightSide=addN3({inputs:tensors.slice(midIndex),backend:backend2});return addN3({inputs:[leftSide,rightSide],backend:backend2})}let dtype=tensors.map(t=>t.dtype).reduce((d1,d2)=>upcastType(d1,d2)),shapes=tensors.map(t=>t.shape),program=env().getBool("WEBGL_PACK")?new AddNPackedProgram(tensors[0].shape,shapes):new AddNProgram(tensors[0].shape,shapes);return backend2.runWebGLProgram(program,tensors,dtype)}var addNConfig2={kernelName:AddN,backendName:"webgl",kernelFunc:addN3};function all3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{axis,keepDims}=attrs,xRank=x.shape.length,origAxes=util_exports.parseAxisParam(axis,x.shape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),permutedX=x;permutedAxes!=null&&(permutedX=transpose3({inputs:{x},backend:backend2,attrs:{perm:permutedAxes}}),axes=backend_util_exports.getInnerMostAxes(axes.length,xRank)),backend_util_exports.assertAxesAreInnerMostDims("all",axes,xRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(permutedX.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=reshape4({inputs:{x:permutedX},backend:backend2,attrs:{shape:[-1,inSize]}}),reduced=reduce(a2D,a2D.dtype,"all",backend2),res;if(keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(outShape,origAxes);res=reshape4({inputs:{x:reduced},backend:backend2,attrs:{shape:newShape}})}else res=reshape4({inputs:{x:reduced},backend:backend2,attrs:{shape:outShape}});return backend2.disposeIntermediateTensorInfo(a2D),backend2.disposeIntermediateTensorInfo(reduced),permutedAxes!=null&&backend2.disposeIntermediateTensorInfo(permutedX),res}var allConfig2={kernelName:All,backendName:"webgl",kernelFunc:all3};function any3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{axis,keepDims}=attrs,xRank=x.shape.length,origAxes=util_exports.parseAxisParam(axis,x.shape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),permutedX=x;permutedAxes!=null&&(permutedX=transpose3({inputs:{x},backend:backend2,attrs:{perm:permutedAxes}}),axes=backend_util_exports.getInnerMostAxes(axes.length,xRank)),backend_util_exports.assertAxesAreInnerMostDims("any",axes,xRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(permutedX.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=reshape4({inputs:{x:permutedX},backend:backend2,attrs:{shape:[-1,inSize]}}),reduced=reduce(a2D,a2D.dtype,"any",backend2),res;if(keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(outShape,origAxes);res=reshape4({inputs:{x:reduced},backend:backend2,attrs:{shape:newShape}})}else res=reshape4({inputs:{x:reduced},backend:backend2,attrs:{shape:outShape}});return backend2.disposeIntermediateTensorInfo(a2D),backend2.disposeIntermediateTensorInfo(reduced),permutedAxes!=null&&backend2.disposeIntermediateTensorInfo(permutedX),res}var anyConfig2={kernelName:Any,backendName:"webgl",kernelFunc:any3},ArgMinMaxProgram=class{constructor(reduceInfo,op2,firstPass){this.variableNames=["A"];let{windowSize,batchSize,outSize}=reduceInfo;firstPass||this.variableNames.push("bestIndicesA"),this.outputShape=[batchSize,outSize];let compOp=op2==="max"?">":"<",indexSnippet=firstPass?"inOffset + i;":"round(getBestIndicesA(batch, inOffset + i));";this.userCode=` + `}};function cf(e){let{inputs:t,backend:n}=e,a=t;if(a.length===1)return Wn({inputs:{x:a[0]},backend:n});if(a.length>ee().get("WEBGL_MAX_TEXTURES_IN_SHADER")){let o=Math.floor(a.length/2),l=cf({inputs:a.slice(0,o),backend:n}),c=cf({inputs:a.slice(o),backend:n});return cf({inputs:[l,c],backend:n})}let r=a.map(o=>o.dtype).reduce((o,l)=>pa(o,l)),s=a.map(o=>o.shape),i=ee().getBool("WEBGL_PACK")?new aY(a[0].shape,s):new nY(a[0].shape,s);return n.runWebGLProgram(i,a,r)}var rY={kernelName:Rs,backendName:"webgl",kernelFunc:cf};function sY(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{axis:s,keepDims:i}=a,o=r.shape.length,l=k.parseAxisParam(s,r.shape),c=l,u=_.getAxesPermutation(c,o),p=r;u!=null&&(p=En({inputs:{x:r},backend:n,attrs:{perm:u}}),c=_.getInnerMostAxes(c.length,o)),_.assertAxesAreInnerMostDims("all",c,o);let[d,h]=_.computeOutAndReduceShapes(p.shape,c),m=k.sizeFromShape(h),f=xe({inputs:{x:p},backend:n,attrs:{shape:[-1,m]}}),g=eo(f,f.dtype,"all",n),y;if(i){let b=_.expandShapeToKeepDim(d,l);y=xe({inputs:{x:g},backend:n,attrs:{shape:b}})}else y=xe({inputs:{x:g},backend:n,attrs:{shape:d}});return n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(g),u!=null&&n.disposeIntermediateTensorInfo(p),y}var iY={kernelName:Ld,backendName:"webgl",kernelFunc:sY};function oY(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{axis:s,keepDims:i}=a,o=r.shape.length,l=k.parseAxisParam(s,r.shape),c=l,u=_.getAxesPermutation(c,o),p=r;u!=null&&(p=En({inputs:{x:r},backend:n,attrs:{perm:u}}),c=_.getInnerMostAxes(c.length,o)),_.assertAxesAreInnerMostDims("any",c,o);let[d,h]=_.computeOutAndReduceShapes(p.shape,c),m=k.sizeFromShape(h),f=xe({inputs:{x:p},backend:n,attrs:{shape:[-1,m]}}),g=eo(f,f.dtype,"any",n),y;if(i){let b=_.expandShapeToKeepDim(d,l);y=xe({inputs:{x:g},backend:n,attrs:{shape:b}})}else y=xe({inputs:{x:g},backend:n,attrs:{shape:d}});return n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(g),u!=null&&n.disposeIntermediateTensorInfo(p),y}var lY={kernelName:zd,backendName:"webgl",kernelFunc:oY},uY=class{constructor(e,t,n){this.variableNames=["A"];let{windowSize:a,batchSize:r,outSize:s}=e;n||this.variableNames.push("bestIndicesA"),this.outputShape=[r,s];let i=t==="max"?">":"<",o=n?"inOffset + i;":"round(getBestIndicesA(batch, inOffset + i));";this.userCode=` void main() { ivec2 coords = getOutputCoords(); int batch = coords[0]; int outIdx = coords[1]; - int inOffset = outIdx * ${windowSize}; + int inOffset = outIdx * ${a}; int bestIndex = inOffset; float bestValue = getA(batch, bestIndex); - for (int i = 0; i < ${windowSize}; i++) { - int inIdx = ${indexSnippet}; + for (int i = 0; i < ${a}; i++) { + int inIdx = ${o}; float candidate = getA(batch, inIdx); - if (candidate ${compOp} bestValue) { + if (candidate ${i} bestValue) { bestValue = candidate; bestIndex = inIdx; } } setOutput(float(bestIndex)); } - `}},ArgMinMaxPackedProgram=class{constructor(shape,windowSize,op2,firstPass){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,util_exports.assert(shape.length>2,()=>`Packed arg${op2.charAt(0).toUpperCase()+op2.slice(1)} supports only inputs with rank above 2.`);let inSize=shape[shape.length-1],outSize=Math.ceil(inSize/windowSize);this.outputShape=shape.slice(0,-1),outSize>1&&this.outputShape.push(outSize),firstPass||this.variableNames.push("bestIndicesA");let outShape=this.outputShape,rank=outShape.length,dtype=getCoordsDataType(rank),coords2=getChannels("coords",rank),sourceLocSetup,sourceRank;if(outSize===1){sourceRank=rank+1;let sourceLocDType=getCoordsDataType(sourceRank);sourceLocSetup=` - ${sourceLocDType} sourceLocR = ${sourceLocDType}(${coords2.join()}, 0); - ++${coords2[rank-1]}; - ${sourceLocDType} sourceLocG = ${sourceLocDType}(${coords2.join()}, 0); - ++${coords2[rank-2]}; - ${sourceLocDType} sourceLocA = ${sourceLocDType}(${coords2.join()}, 0); - --${coords2[rank-1]}; - ${sourceLocDType} sourceLocB = ${sourceLocDType}(${coords2.join()}, 0); - --${coords2[rank-2]};`}else sourceRank=rank,sourceLocSetup=` - ${dtype} sourceLocR = coords; - ++${coords2[rank-1]}; - ${dtype} sourceLocG = coords; - ++${coords2[rank-2]}; - ${dtype} sourceLocA = coords; - --${coords2[rank-1]}; - ${dtype} sourceLocB = coords; - --${coords2[rank-2]};`;let channels=["x","y","z","w","u","v"].slice(0,sourceRank),inChannel="."+channels[sourceRank-1],intChannels=channels.map(x=>"int "+x),srcRCoords=getChannels("sourceLocR",sourceRank-1).concat("inIdx.r"),srcGCoords=getChannels("sourceLocG",sourceRank-1).concat("inIdx.g"),srcBCoords=getChannels("sourceLocB",sourceRank-1).concat("inIdx.b"),srcACoords=getChannels("sourceLocA",sourceRank-1).concat("inIdx.a"),compOp=op2==="max"?"greaterThan":"lessThan",fetchCandidateIdx=firstPass?"":` - inIdx = round(vec4(getBestIndicesAChannel(${srcRCoords.join()}), - getBestIndicesAChannel(${srcGCoords.join()}), - getBestIndicesAChannel(${srcBCoords.join()}), - getBestIndicesAChannel(${srcACoords.join()})));`,fetchValue=`vec4( - getAChannel(${srcRCoords.join()}), - hasNextCol ? getAChannel(${srcGCoords.join()}) : 0., - hasNextRow ? getAChannel(${srcBCoords.join()}) : 0., - hasNextRow && hasNextCol ? getAChannel(${srcACoords.join()}) : 0.)`,getBestIndicesAChannelSnippet=firstPass?"":` - float getBestIndicesAChannel(${intChannels.join()}) { - return getChannel(getBestIndicesA(${channels.join()}), - vec2(${channels.slice(-2).join()})); + `}},cY=class{constructor(e,t,n,a){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,k.assert(e.length>2,()=>`Packed arg${n.charAt(0).toUpperCase()+n.slice(1)} supports only inputs with rank above 2.`);let r=e[e.length-1],s=Math.ceil(r/t);this.outputShape=e.slice(0,-1),s>1&&this.outputShape.push(s),a||this.variableNames.push("bestIndicesA");let i=this.outputShape,o=i.length,l=mt(o),c=yn("coords",o),u,p;if(s===1){p=o+1;let E=mt(p);u=` + ${E} sourceLocR = ${E}(${c.join()}, 0); + ++${c[o-1]}; + ${E} sourceLocG = ${E}(${c.join()}, 0); + ++${c[o-2]}; + ${E} sourceLocA = ${E}(${c.join()}, 0); + --${c[o-1]}; + ${E} sourceLocB = ${E}(${c.join()}, 0); + --${c[o-2]};`}else p=o,u=` + ${l} sourceLocR = coords; + ++${c[o-1]}; + ${l} sourceLocG = coords; + ++${c[o-2]}; + ${l} sourceLocA = coords; + --${c[o-1]}; + ${l} sourceLocB = coords; + --${c[o-2]};`;let d=["x","y","z","w","u","v"].slice(0,p),h="."+d[p-1],m=d.map(E=>"int "+E),f=yn("sourceLocR",p-1).concat("inIdx.r"),g=yn("sourceLocG",p-1).concat("inIdx.g"),y=yn("sourceLocB",p-1).concat("inIdx.b"),b=yn("sourceLocA",p-1).concat("inIdx.a"),x=n==="max"?"greaterThan":"lessThan",v=a?"":` + inIdx = round(vec4(getBestIndicesAChannel(${f.join()}), + getBestIndicesAChannel(${g.join()}), + getBestIndicesAChannel(${y.join()}), + getBestIndicesAChannel(${b.join()})));`,N=`vec4( + getAChannel(${f.join()}), + hasNextCol ? getAChannel(${g.join()}) : 0., + hasNextRow ? getAChannel(${y.join()}) : 0., + hasNextRow && hasNextCol ? getAChannel(${b.join()}) : 0.)`,T=a?"":` + float getBestIndicesAChannel(${m.join()}) { + return getChannel(getBestIndicesA(${d.join()}), + vec2(${d.slice(-2).join()})); }`;this.userCode=` - float getAChannel(${intChannels.join()}) { - return getChannel(getA(${channels.join()}), - vec2(${channels.slice(-2).join()})); + float getAChannel(${m.join()}) { + return getChannel(getA(${d.join()}), + vec2(${d.slice(-2).join()})); } - ${getBestIndicesAChannelSnippet} + ${T} void main() { - ${dtype} coords = getOutputCoords(); - bool hasNextCol = ${coords2[rank-1]} < ${outShape[rank-1]-1}; - bool hasNextRow = ${coords2[rank-2]} < ${outShape[rank-2]-1}; - ${sourceLocSetup} - ivec4 srcIdx = ivec4(sourceLocR${inChannel}, sourceLocG${inChannel}, - sourceLocB${inChannel}, sourceLocA${inChannel}) * ${windowSize}; + ${l} coords = getOutputCoords(); + bool hasNextCol = ${c[o-1]} < ${i[o-1]-1}; + bool hasNextRow = ${c[o-2]} < ${i[o-2]-1}; + ${u} + ivec4 srcIdx = ivec4(sourceLocR${h}, sourceLocG${h}, + sourceLocB${h}, sourceLocA${h}) * ${t}; ivec4 inIdx = srcIdx; vec4 bestIndex = vec4(inIdx); - vec4 bestValue = ${fetchValue}; + vec4 bestValue = ${N}; - for (int i = 0; i < ${windowSize}; i++) { + for (int i = 0; i < ${t}; i++) { inIdx = srcIdx; - ${fetchCandidateIdx} - vec4 candidate = ${fetchValue}; + ${v} + vec4 candidate = ${N}; bvec4 nan = isnan(candidate); bvec4 replace = bvec4( - vec4(${compOp}(candidate, bestValue)) * (vec4(1.0) - vec4(nan))); + vec4(${x}(candidate, bestValue)) * (vec4(1.0) - vec4(nan))); bestValue = vec4(replace.x ? candidate.x : bestValue.x, replace.y ? candidate.y : bestValue.y, @@ -1332,25 +1332,25 @@ return log(x + sqrt(x * x - 1.0));`,acosh3=unaryKernelFunc2({opSnippet:ACOSH}),a } setOutput(bestIndex); } - `}};function argReduce(backend2,x,reduceType,bestIndicesA=null){let batchSize=x.shape[0],inSize=x.shape[1];bestIndicesA!=null&&(batchSize=bestIndicesA.shape[0],inSize=bestIndicesA.shape[1]);let windowSize=backend_util_exports.computeOptimalWindowSize(inSize),reduceInfo={windowSize,inSize,batchSize,outSize:Math.ceil(inSize/windowSize)},program=new ArgMinMaxProgram(reduceInfo,reduceType,bestIndicesA==null),inputs=[x];bestIndicesA!=null&&inputs.push(bestIndicesA);let output=backend2.runWebGLProgram(program,inputs,"int32");if(output.shape[1]===1)return output;let result=argReduce(backend2,x,reduceType,output);return backend2.disposeIntermediateTensorInfo(output),result}function argReducePacked(backend2,x,reduceType,bestIndicesA=null){let inShape=bestIndicesA!=null?bestIndicesA.shape:x.shape,inSize=inShape[inShape.length-1],windowSize=backend_util_exports.computeOptimalWindowSize(inSize),program=new ArgMinMaxPackedProgram(inShape,windowSize,reduceType,bestIndicesA==null),inputs=bestIndicesA==null?[x]:[x,bestIndicesA],output=backend2.runWebGLProgram(program,inputs,"int32");if(output.shape.length===x.shape.length){let result=argReducePacked(backend2,x,reduceType,output);return backend2.disposeIntermediateTensorInfo(output),result}return output}function argMinMaxReduce(backend2,x,axis,reduceType){let axes=[axis];if(backend_util_exports.assertAxesAreInnerMostDims("arg"+reduceType.charAt(0).toUpperCase()+reduceType.slice(1),axes,x.shape.length),!env().getBool("WEBGL_PACK_REDUCE")||x.shape.length<=2){let intermediateTensorInfos=[],[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=reshape4({inputs:{x},backend:backend2,attrs:{shape:[-1,inSize]}});intermediateTensorInfos.push(a2D);let reduced=argReduce(backend2,a2D,reduceType);intermediateTensorInfos.push(reduced);let reshaped=reshape4({inputs:{x:reduced},backend:backend2,attrs:{shape:outShape}});return intermediateTensorInfos.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),reshaped}return argReducePacked(backend2,x,reduceType)}function argMax3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{axis}=attrs,axes=util_exports.parseAxisParam(axis,x.shape),permutedAxes=backend_util_exports.getAxesPermutation(axes,x.shape.length),$x=x,intermediateTensorInfos=[];permutedAxes!=null&&($x=transpose3({inputs:{x},backend:backend2,attrs:{perm:permutedAxes}}),intermediateTensorInfos.push($x),axes=backend_util_exports.getInnerMostAxes(axes.length,$x.shape.length)),backend_util_exports.assertAxesAreInnerMostDims("argMax",[axes[0]],$x.shape.length);let out=argMinMaxReduce(backend2,$x,axes[0],"max");return intermediateTensorInfos.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),out}var argMaxConfig2={kernelName:ArgMax,backendName:"webgl",kernelFunc:argMax3};function argMin3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{axis}=attrs,axes=util_exports.parseAxisParam(axis,x.shape),permutedAxes=backend_util_exports.getAxesPermutation(axes,x.shape.length),$x=x,intermediateTensorInfos=[];permutedAxes!=null&&($x=transpose3({inputs:{x},backend:backend2,attrs:{perm:permutedAxes}}),intermediateTensorInfos.push($x),axes=backend_util_exports.getInnerMostAxes(axes.length,$x.shape.length)),backend_util_exports.assertAxesAreInnerMostDims("argMin",[axes[0]],$x.shape.length);let out=argMinMaxReduce(backend2,$x,axes[0],"min");return intermediateTensorInfos.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),out}var argMinConfig2={kernelName:ArgMin,backendName:"webgl",kernelFunc:argMin3},ASIN=CHECK_NAN_SNIPPET+` + `}};function PS(e,t,n,a=null){let r=t.shape[0],s=t.shape[1];a!=null&&(r=a.shape[0],s=a.shape[1]);let i=_.computeOptimalWindowSize(s),o={windowSize:i,inSize:s,batchSize:r,outSize:Math.ceil(s/i)},l=new uY(o,n,a==null),c=[t];a!=null&&c.push(a);let u=e.runWebGLProgram(l,c,"int32");if(u.shape[1]===1)return u;let p=PS(e,t,n,u);return e.disposeIntermediateTensorInfo(u),p}function OS(e,t,n,a=null){let r=a!=null?a.shape:t.shape,s=r[r.length-1],i=_.computeOptimalWindowSize(s),o=new cY(r,i,n,a==null),l=a==null?[t]:[t,a],c=e.runWebGLProgram(o,l,"int32");if(c.shape.length===t.shape.length){let u=OS(e,t,n,c);return e.disposeIntermediateTensorInfo(c),u}return c}function LS(e,t,n,a){let r=[n];if(_.assertAxesAreInnerMostDims("arg"+a.charAt(0).toUpperCase()+a.slice(1),r,t.shape.length),!ee().getBool("WEBGL_PACK_REDUCE")||t.shape.length<=2){let s=[],[i,o]=_.computeOutAndReduceShapes(t.shape,r),l=k.sizeFromShape(o),c=xe({inputs:{x:t},backend:e,attrs:{shape:[-1,l]}});s.push(c);let u=PS(e,c,a);s.push(u);let p=xe({inputs:{x:u},backend:e,attrs:{shape:i}});return s.forEach(d=>e.disposeIntermediateTensorInfo(d)),p}return OS(e,t,a)}function pY(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{axis:s}=a,i=k.parseAxisParam(s,r.shape),o=_.getAxesPermutation(i,r.shape.length),l=r,c=[];o!=null&&(l=En({inputs:{x:r},backend:n,attrs:{perm:o}}),c.push(l),i=_.getInnerMostAxes(i.length,l.shape.length)),_.assertAxesAreInnerMostDims("argMax",[i[0]],l.shape.length);let u=LS(n,l,i[0],"max");return c.forEach(p=>n.disposeIntermediateTensorInfo(p)),u}var dY={kernelName:Ps,backendName:"webgl",kernelFunc:pY};function hY(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{axis:s}=a,i=k.parseAxisParam(s,r.shape),o=_.getAxesPermutation(i,r.shape.length),l=r,c=[];o!=null&&(l=En({inputs:{x:r},backend:n,attrs:{perm:o}}),c.push(l),i=_.getInnerMostAxes(i.length,l.shape.length)),_.assertAxesAreInnerMostDims("argMin",[i[0]],l.shape.length);let u=LS(n,l,i[0],"min");return c.forEach(p=>n.disposeIntermediateTensorInfo(p)),u}var mY={kernelName:dc,backendName:"webgl",kernelFunc:hY},fY=Oa+` if (abs(x) > 1.) { return NAN; } return asin(x); -`,asin3=unaryKernelFunc2({opSnippet:ASIN}),asinConfig2={kernelName:Asin,backendName:"webgl",kernelFunc:asin3},ASINH=CHECK_NAN_SNIPPET+"return log(x + sqrt(x * x + 1.0));",asinh3=unaryKernelFunc2({opSnippet:ASINH}),asinhConfig2={kernelName:Asinh,backendName:"webgl",kernelFunc:asinh3},ATAN=CHECK_NAN_SNIPPET+` +`,gY=Ye({opSnippet:fY}),yY={kernelName:Wo,backendName:"webgl",kernelFunc:gY},bY=Oa+"return log(x + sqrt(x * x + 1.0));",xY=Ye({opSnippet:bY}),vY={kernelName:Vo,backendName:"webgl",kernelFunc:xY},wY=Oa+` return atan(x); -`,atan4=unaryKernelFunc2({opSnippet:ATAN}),atanConfig2={kernelName:Atan,backendName:"webgl",kernelFunc:atan4},ATAN2=CHECK_NAN_SNIPPET_BINARY+` +`,kY=Ye({opSnippet:wY}),IY={kernelName:Uo,backendName:"webgl",kernelFunc:kY},NY=AX+` return atan(a, b); -`,ATAN2_PACKED=` +`,TY=` vec4 result = atan(a, b); vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0)); - `+CHECK_NAN_SNIPPET_BINARY_PACKED+` + `+$X+` return result; -`,atan23=binaryKernelFunc2({opSnippet:ATAN2,packedOpSnippet:ATAN2_PACKED}),atan2Config2={kernelName:Atan2,backendName:"webgl",kernelFunc:atan23},ATANH=CHECK_NAN_SNIPPET+` +`,SY=on({opSnippet:NY,packedOpSnippet:TY}),CY={kernelName:Ho,backendName:"webgl",kernelFunc:SY},EY=Oa+` if ((x < -1.0) || (x > 1.0)) return NAN; -return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet:ATANH}),atanhConfig2={kernelName:Atanh,backendName:"webgl",kernelFunc:atanh3},Pool2DProgram=class{constructor(convInfo,poolType,computePositions,flattenPositions=!1,includeBatchInIndex=!1){if(this.variableNames=["x"],poolType==="avg"&&computePositions)throw new Error("Cannot compute positions for average pool.");let filterWidth=convInfo.filterWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left;this.outputShape=convInfo.outShape;let isAvgPool=poolType==="avg",batchFlattenPositionStr=`((batch * ${convInfo.inHeight} + xR) * ${convInfo.inWidth} + xC) * ${convInfo.inChannels} + d`,flattenPositionStr=`(xR * ${convInfo.inWidth} + xC) * ${convInfo.inChannels} + d`,initializationValue="0.0";if(isAvgPool||(initializationValue="-1.0 / 1e-20"),computePositions){let compareOp2=">=";this.userCode=` - const ivec2 strides = ivec2(${strideHeight}, ${strideWidth}); - const ivec2 pads = ivec2(${padTop}, ${padLeft}); +return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,_Y=Ye({opSnippet:EY}),FY={kernelName:Go,backendName:"webgl",kernelFunc:_Y},Ep=class{constructor(e,t,n,a=!1,r=!1){if(this.variableNames=["x"],t==="avg"&&n)throw new Error("Cannot compute positions for average pool.");let s=e.filterWidth,i=e.strideHeight,o=e.strideWidth,l=e.dilationHeight,c=e.dilationWidth,u=e.effectiveFilterHeight,p=e.effectiveFilterWidth,d=e.padInfo.top,h=e.padInfo.left;this.outputShape=e.outShape;let m=t==="avg",f=`((batch * ${e.inHeight} + xR) * ${e.inWidth} + xC) * ${e.inChannels} + d`,g=`(xR * ${e.inWidth} + xC) * ${e.inChannels} + d`,y="0.0";if(m||(y="-1.0 / 1e-20"),n){let E=">=";this.userCode=` + const ivec2 strides = ivec2(${i}, ${o}); + const ivec2 pads = ivec2(${d}, ${h}); void main() { ivec4 coords = getOutputCoords(); @@ -1368,19 +1368,19 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: int minMaxPosition = 0; float avgValue = 0.0; - for (int wR = 0; wR < ${effectiveFilterHeight}; - wR += ${dilationHeight}) { + for (int wR = 0; wR < ${u}; + wR += ${l}) { int xR = xRCorner + wR; - if (xR < 0 || xR >= ${convInfo.inHeight}) { + if (xR < 0 || xR >= ${e.inHeight}) { continue; } - for (int wC = 0; wC < ${effectiveFilterWidth}; - wC += ${dilationWidth}) { + for (int wC = 0; wC < ${p}; + wC += ${c}) { int xC = xCCorner + wC; - if (xC < 0 || xC >= ${convInfo.inWidth}) { + if (xC < 0 || xC >= ${e.inWidth}) { continue; } @@ -1390,31 +1390,31 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // use the current value. float currMinMaxValue = mix( value, minMaxValue, minMaxValueFound); - if (value ${compareOp2} currMinMaxValue) { + if (value ${E} currMinMaxValue) { minMaxValue = value; minMaxValueFound = 1.0; - minMaxPosition = ${flattenPositions?includeBatchInIndex?batchFlattenPositionStr:flattenPositionStr:`wR * ${effectiveFilterWidth} + wC`}; + minMaxPosition = ${a?r?f:g:`wR * ${p} + wC`}; } } } setOutput(float(minMaxPosition)); } - `;return}let compareOp="max",returnValue=`${poolType}(${poolType}(${poolType}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;poolType==="avg"&&(returnValue="avgValue / count");let filterWidthNearestVec4=Math.floor(filterWidth/4)*4,filterWidthVec4Remainder=filterWidth%4,updateSnippet=` - if (${isAvgPool}) { + `;return}let b="max",x=`${t}(${t}(${t}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;t==="avg"&&(x="avgValue / count");let v=Math.floor(s/4)*4,N=s%4,T=` + if (${m}) { avgValue += dot(values, ones); } else { - minMaxValue = ${compareOp}(values, minMaxValue); + minMaxValue = ${b}(values, minMaxValue); } `;this.userCode=` - const ivec2 strides = ivec2(${strideHeight}, ${strideWidth}); - const ivec2 pads = ivec2(${padTop}, ${padLeft}); - const float initializationValue = ${initializationValue}; + const ivec2 strides = ivec2(${i}, ${o}); + const ivec2 pads = ivec2(${d}, ${h}); + const float initializationValue = ${y}; const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0); float count = 0.0; float getValue(int batch, int xR, int xC, int d) { - if (xC < 0 || xC >= ${convInfo.inWidth}) { + if (xC < 0 || xC >= ${e.inWidth}) { return initializationValue; } count += 1.0; @@ -1432,33 +1432,33 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // max/min x(?, ?, d) to get y(yR, yC, d). // ? = to be determined - vec4 minMaxValue = vec4(${initializationValue}); + vec4 minMaxValue = vec4(${y}); float avgValue = 0.0; count = 0.0; - for (int wR = 0; wR < ${effectiveFilterHeight}; - wR += ${dilationHeight}) { + for (int wR = 0; wR < ${u}; + wR += ${l}) { int xR = xRCorner + wR; - if (xR < 0 || xR >= ${convInfo.inHeight}) { + if (xR < 0 || xR >= ${e.inHeight}) { continue; } - for (int wC = 0; wC < ${filterWidthNearestVec4}; wC += 4) { - int xC = xCCorner + wC * ${dilationWidth}; + for (int wC = 0; wC < ${v}; wC += 4) { + int xC = xCCorner + wC * ${c}; vec4 values = vec4( getValue(batch, xR, xC, d), - getValue(batch, xR, xC + ${dilationWidth}, d), - getValue(batch, xR, xC + 2 * ${dilationWidth}, d), - getValue(batch, xR, xC + 3 * ${dilationWidth}, d) + getValue(batch, xR, xC + ${c}, d), + getValue(batch, xR, xC + 2 * ${c}, d), + getValue(batch, xR, xC + 3 * ${c}, d) ); - ${updateSnippet} + ${T} } - int xC = xCCorner + ${filterWidthNearestVec4}; - if (${filterWidthVec4Remainder===1}) { + int xC = xCCorner + ${v}; + if (${N===1}) { vec4 values = vec4( getValue(batch, xR, xC, d), initializationValue, @@ -1466,33 +1466,33 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: initializationValue ); - ${updateSnippet} - } else if (${filterWidthVec4Remainder===2}) { + ${T} + } else if (${N===2}) { vec4 values = vec4( getValue(batch, xR, xC, d), - getValue(batch, xR, xC + ${dilationWidth}, d), + getValue(batch, xR, xC + ${c}, d), initializationValue, initializationValue ); - ${updateSnippet} - } else if (${filterWidthVec4Remainder===3}) { + ${T} + } else if (${N===3}) { vec4 values = vec4( getValue(batch, xR, xC, d), - getValue(batch, xR, xC + ${dilationWidth}, d), - getValue(batch, xR, xC + 2 * ${dilationWidth}, d), + getValue(batch, xR, xC + ${c}, d), + getValue(batch, xR, xC + 2 * ${c}, d), initializationValue ); - ${updateSnippet} + ${T} } } - setOutput(${returnValue}); + setOutput(${x}); } - `}},Pool3DProgram=class{constructor(convInfo,poolType,computePositions,flattenPositions=!1,includeBatchInIndex=!1){if(this.variableNames=["x"],poolType==="avg"&&computePositions)throw new Error("Cannot compute positions for average pool.");let filterWidth=convInfo.filterWidth,strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=convInfo.padInfo.front,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left;this.outputShape=convInfo.outShape;let isAvgPool=poolType==="avg",initializationValue="0.0";if(isAvgPool||(initializationValue="-1.0 / 1e-20"),computePositions){let compareOp2=">=";this.userCode=` + `}},Zv=class{constructor(e,t,n,a=!1,r=!1){if(this.variableNames=["x"],t==="avg"&&n)throw new Error("Cannot compute positions for average pool.");let s=e.filterWidth,i=e.strideDepth,o=e.strideHeight,l=e.strideWidth,c=e.dilationDepth,u=e.dilationHeight,p=e.dilationWidth,d=e.effectiveFilterDepth,h=e.effectiveFilterHeight,m=e.effectiveFilterWidth,f=e.padInfo.front,g=e.padInfo.top,y=e.padInfo.left;this.outputShape=e.outShape;let b=t==="avg",x="0.0";if(b||(x="-1.0 / 1e-20"),n){let $=">=";this.userCode=` const ivec3 strides = - ivec3(${strideDepth}, ${strideHeight}, ${strideWidth}); - const ivec3 pads = ivec3(${padFront}, ${padTop}, ${padLeft}); + ivec3(${i}, ${o}, ${l}); + const ivec3 pads = ivec3(${f}, ${g}, ${y}); void main() { ivec5 coords = getOutputCoords(); @@ -1510,27 +1510,27 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: float minMaxValueFound = 0.0; int minMaxPosition = 0; - for (int wD = 0; wD < ${effectiveFilterDepth}; - wD += ${dilationDepth}) { + for (int wD = 0; wD < ${d}; + wD += ${c}) { int xD = xDCorner + wD; - if (xD < 0 || xD >= ${convInfo.inDepth}) { + if (xD < 0 || xD >= ${e.inDepth}) { continue; } - for (int wR = 0; wR < ${effectiveFilterHeight}; - wR += ${dilationHeight}) { + for (int wR = 0; wR < ${h}; + wR += ${u}) { int xR = xRCorner + wR; - if (xR < 0 || xR >= ${convInfo.inHeight}) { + if (xR < 0 || xR >= ${e.inHeight}) { continue; } - for (int wC = 0; wC < ${effectiveFilterWidth}; - wC += ${dilationWidth}) { + for (int wC = 0; wC < ${m}; + wC += ${p}) { int xC = xCCorner + wC; - if (xC < 0 || xC >= ${convInfo.inWidth}) { + if (xC < 0 || xC >= ${e.inWidth}) { continue; } @@ -1540,34 +1540,34 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // use the current value. float currMinMaxValue = mix( value, minMaxValue, minMaxValueFound); - if (value ${compareOp2} currMinMaxValue) { + if (value ${$} currMinMaxValue) { minMaxValue = value; minMaxValueFound = 1.0; - minMaxPosition = ${flattenPositions?includeBatchInIndex?`(((batch * ${convInfo.inDepth} + xD) * ${convInfo.inHeight} + xR) * ${convInfo.inWidth} + xC) * ${convInfo.inChannels} + ch`:`((xD * ${convInfo.inHeight} + xR) * ${convInfo.inWidth} + xC) * ${convInfo.inChannels} + ch`:`wD * ${effectiveFilterHeight} * ${effectiveFilterWidth} + - wR * ${effectiveFilterWidth} + wC`}; + minMaxPosition = ${a?r?`(((batch * ${e.inDepth} + xD) * ${e.inHeight} + xR) * ${e.inWidth} + xC) * ${e.inChannels} + ch`:`((xD * ${e.inHeight} + xR) * ${e.inWidth} + xC) * ${e.inChannels} + ch`:`wD * ${h} * ${m} + + wR * ${m} + wC`}; } } } } setOutput(float(minMaxPosition)); } - `;return}let compareOp="max",returnValue=`${poolType}(${poolType}(${poolType}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;poolType==="avg"&&(returnValue="avgValue / count");let filterWidthNearestVec4=Math.floor(filterWidth/4)*4,filterWidthVec4Remainder=filterWidth%4,updateSnippet=` - if (${isAvgPool}) { + `;return}let v="max",N=`${t}(${t}(${t}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;t==="avg"&&(N="avgValue / count");let T=Math.floor(s/4)*4,E=s%4,A=` + if (${b}) { avgValue += dot(values, ones); } else { - minMaxValue = ${compareOp}(values, minMaxValue); + minMaxValue = ${v}(values, minMaxValue); } `;this.userCode=` const ivec3 strides = - ivec3(${strideDepth}, ${strideHeight}, ${strideWidth}); - const ivec3 pads = ivec3(${padFront}, ${padTop}, ${padLeft}); - const float initializationValue = ${initializationValue}; + ivec3(${i}, ${o}, ${l}); + const ivec3 pads = ivec3(${f}, ${g}, ${y}); + const float initializationValue = ${x}; const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0); float count = 0.0; float getValue(int batch, int xD, int xR, int xC, int ch) { - if (xC < 0 || xC >= ${convInfo.inWidth}) { + if (xC < 0 || xC >= ${e.inWidth}) { return initializationValue; } count += 1.0; @@ -1586,41 +1586,41 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // max/min x(?, ?, ?, d) to get y(yD, yR, yC, ch). // ? = to be determined - vec4 minMaxValue = vec4(${initializationValue}); + vec4 minMaxValue = vec4(${x}); float avgValue = 0.0; count = 0.0; - for (int wD = 0; wD < ${effectiveFilterDepth}; - wD += ${dilationDepth}) { + for (int wD = 0; wD < ${d}; + wD += ${c}) { int xD = xDCorner + wD; - if (xD < 0 || xD >= ${convInfo.inDepth}) { + if (xD < 0 || xD >= ${e.inDepth}) { continue; } - for (int wR = 0; wR < ${effectiveFilterHeight}; - wR += ${dilationHeight}) { + for (int wR = 0; wR < ${h}; + wR += ${u}) { int xR = xRCorner + wR; - if (xR < 0 || xR >= ${convInfo.inHeight}) { + if (xR < 0 || xR >= ${e.inHeight}) { continue; } - for (int wC = 0; wC < ${filterWidthNearestVec4}; wC += 4) { - int xC = xCCorner + wC * ${dilationWidth}; + for (int wC = 0; wC < ${T}; wC += 4) { + int xC = xCCorner + wC * ${p}; vec4 values = vec4( getValue(batch, xD, xR, xC, ch), - getValue(batch, xD, xR, xC + ${dilationWidth}, ch), - getValue(batch, xD, xR, xC + 2 * ${dilationWidth}, ch), - getValue(batch, xD, xR, xC + 3 * ${dilationWidth}, ch) + getValue(batch, xD, xR, xC + ${p}, ch), + getValue(batch, xD, xR, xC + 2 * ${p}, ch), + getValue(batch, xD, xR, xC + 3 * ${p}, ch) ); - ${updateSnippet} + ${A} } - int xC = xCCorner + ${filterWidthNearestVec4}; - if (${filterWidthVec4Remainder===1}) { + int xC = xCCorner + ${T}; + if (${E===1}) { vec4 values = vec4( getValue(batch, xD, xR, xC, ch), initializationValue, @@ -1628,33 +1628,33 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: initializationValue ); - ${updateSnippet} - } else if (${filterWidthVec4Remainder===2}) { + ${A} + } else if (${E===2}) { vec4 values = vec4( getValue(batch, xD, xR, xC, ch), - getValue(batch, xD, xR, xC + ${dilationWidth}, ch), + getValue(batch, xD, xR, xC + ${p}, ch), initializationValue, initializationValue ); - ${updateSnippet} - } else if (${filterWidthVec4Remainder===3}) { + ${A} + } else if (${E===3}) { vec4 values = vec4( getValue(batch, xD, xR, xC, ch), - getValue(batch, xD, xR, xC + ${dilationWidth}, ch), - getValue(batch, xD, xR, xC + 2 * ${dilationWidth}, ch), + getValue(batch, xD, xR, xC + ${p}, ch), + getValue(batch, xD, xR, xC + 2 * ${p}, ch), initializationValue ); - ${updateSnippet} + ${A} } } - setOutput(${returnValue}); + setOutput(${N}); } } - `}};function avgPool3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs;assertNotComplex2(x,"avgPool");let{filterSize,strides,pad:pad3,dimRoundingMode}=attrs,dilations=1;util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad3,dimRoundingMode);if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))return identity3({inputs:{x},backend:backend2});let avgPoolProgram=new Pool2DProgram(convInfo,"avg",!1);return backend2.runWebGLProgram(avgPoolProgram,[x],"float32")}var avgPoolConfig2={kernelName:AvgPool,backendName:"webgl",kernelFunc:avgPool3};function avgPool3D2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{filterSize,strides,pad:pad3,dimRoundingMode,dataFormat}=attrs,dilations=[1,1,1],convInfo=backend_util_exports.computePool3DInfo(x.shape,filterSize,strides,dilations,pad3,dimRoundingMode,dataFormat),avgPoolProgram=new Pool3DProgram(convInfo,"avg",!1);return backend2.runWebGLProgram(avgPoolProgram,[x],"float32")}var avgPool3DConfig2={kernelName:AvgPool3D,backendName:"webgl",kernelFunc:avgPool3D2},AvgPool2DBackpropProgram=class{constructor(convInfo){this.variableNames=["dy"],this.outputShape=convInfo.inShape;let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,avgMultiplier=1/(filterHeight*filterWidth);this.userCode=` - const ivec2 pads = ivec2(${padTop}, ${padLeft}); - const float avgMultiplier = float(${avgMultiplier}); + `}};function AY(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t;Tp(r,"avgPool");let{filterSize:s,strides:i,pad:o,dimRoundingMode:l}=a,c=1;k.assert(_.eitherStridesOrDilationsAreOne(i,c),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${c}'`);let u=_.computePool2DInfo(r.shape,s,i,c,o,l);if(u.filterWidth===1&&u.filterHeight===1&&k.arraysEqual(u.inShape,u.outShape))return Wn({inputs:{x:r},backend:n});let p=new Ep(u,"avg",!1);return n.runWebGLProgram(p,[r],"float32")}var $Y={kernelName:Os,backendName:"webgl",kernelFunc:AY};function DY(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{filterSize:s,strides:i,pad:o,dimRoundingMode:l,dataFormat:c}=a,u=[1,1,1],p=_.computePool3DInfo(r.shape,s,i,u,o,l,c),d=new Zv(p,"avg",!1);return n.runWebGLProgram(d,[r],"float32")}var MY={kernelName:hc,backendName:"webgl",kernelFunc:DY},RY=class{constructor(e){this.variableNames=["dy"],this.outputShape=e.inShape;let t=e.filterHeight,n=e.filterWidth,a=e.strideHeight,r=e.strideWidth,s=e.dilationHeight,i=e.dilationWidth,o=e.effectiveFilterHeight,l=e.effectiveFilterWidth,c=o-1-e.padInfo.top,u=l-1-e.padInfo.left,p=1/(t*n);this.userCode=` + const ivec2 pads = ivec2(${c}, ${u}); + const float avgMultiplier = float(${p}); void main() { ivec4 coords = getOutputCoords(); @@ -1668,20 +1668,20 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d). // ? = to be determined. : = across all values in that axis. float dotProd = 0.0; - for (int wR = 0; wR < ${effectiveFilterHeight}; - wR += ${dilationHeight}) { - float dyR = float(dyRCorner + wR) / ${strideHeight}.0; + for (int wR = 0; wR < ${o}; + wR += ${s}) { + float dyR = float(dyRCorner + wR) / ${a}.0; - if (dyR < 0.0 || dyR >= ${convInfo.outHeight}.0 || fract(dyR) > 0.0) { + if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || fract(dyR) > 0.0) { continue; } int idyR = int(dyR); - for (int wC = 0; wC < ${effectiveFilterWidth}; - wC+= ${dilationWidth}) { - float dyC = float(dyCCorner + wC) / ${strideWidth}.0; + for (int wC = 0; wC < ${l}; + wC+= ${i}) { + float dyC = float(dyCCorner + wC) / ${r}.0; - if (dyC < 0.0 || dyC >= ${convInfo.outWidth}.0 || + if (dyC < 0.0 || dyC >= ${e.outWidth}.0 || fract(dyC) > 0.0) { continue; } @@ -1694,9 +1694,9 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(dotProd); } - `}},AvgPool3DBackpropProgram=class{constructor(convInfo){this.variableNames=["dy"],this.outputShape=convInfo.inShape;let filterDepth=convInfo.filterDepth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=effectiveFilterDepth-1-convInfo.padInfo.front,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,avgMultiplier=1/(filterDepth*filterHeight*filterWidth);this.userCode=` - const ivec3 pads = ivec3(${padFront}, ${padTop}, ${padLeft}); - const float avgMultiplier = float(${avgMultiplier}); + `}},PY=class{constructor(e){this.variableNames=["dy"],this.outputShape=e.inShape;let t=e.filterDepth,n=e.filterHeight,a=e.filterWidth,r=e.strideDepth,s=e.strideHeight,i=e.strideWidth,o=e.dilationDepth,l=e.dilationHeight,c=e.dilationWidth,u=e.effectiveFilterDepth,p=e.effectiveFilterHeight,d=e.effectiveFilterWidth,h=u-1-e.padInfo.front,m=p-1-e.padInfo.top,f=d-1-e.padInfo.left,g=1/(t*n*a);this.userCode=` + const ivec3 pads = ivec3(${h}, ${m}, ${f}); + const float avgMultiplier = float(${g}); void main() { ivec5 coords = getOutputCoords(); @@ -1713,30 +1713,30 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // ? = to be determined. : = across all values in that axis. float dotProd = 0.0; - for (int wD = 0; wD < ${effectiveFilterDepth}; - wD += ${dilationDepth}) { - float dyD = float(dyDCorner + wD) / ${strideDepth}.0; + for (int wD = 0; wD < ${u}; + wD += ${o}) { + float dyD = float(dyDCorner + wD) / ${r}.0; - if (dyD < 0.0 || dyD >= ${convInfo.outDepth}.0 || fract(dyD) > 0.0) { + if (dyD < 0.0 || dyD >= ${e.outDepth}.0 || fract(dyD) > 0.0) { continue; } int idyD = int(dyD); - for (int wR = 0; wR < ${effectiveFilterHeight}; - wR += ${dilationHeight}) { - float dyR = float(dyRCorner + wR) / ${strideHeight}.0; + for (int wR = 0; wR < ${p}; + wR += ${l}) { + float dyR = float(dyRCorner + wR) / ${s}.0; - if (dyR < 0.0 || dyR >= ${convInfo.outHeight}.0 || + if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || fract(dyR) > 0.0) { continue; } int idyR = int(dyR); - for (int wC = 0; wC < ${effectiveFilterWidth}; - wC += ${dilationWidth}) { - float dyC = float(dyCCorner + wC) / ${strideWidth}.0; + for (int wC = 0; wC < ${d}; + wC += ${c}) { + float dyC = float(dyCCorner + wC) / ${i}.0; - if (dyC < 0.0 || dyC >= ${convInfo.outWidth}.0 || + if (dyC < 0.0 || dyC >= ${e.outWidth}.0 || fract(dyC) > 0.0) { continue; } @@ -1750,71 +1750,71 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(dotProd); } - `}};function avgPool3DGrad2(args){let{inputs,backend:backend2,attrs}=args,{dy,input:input2}=inputs,x=input2,{filterSize,strides,pad:pad3,dimRoundingMode}=attrs,dilations=[1,1,1],convInfo=backend_util_exports.computePool3DInfo(x.shape,filterSize,strides,dilations,pad3,dimRoundingMode),avgPoolBackpropProgram=new AvgPool3DBackpropProgram(convInfo);return backend2.runWebGLProgram(avgPoolBackpropProgram,[dy],x.dtype)}var avgPoolGrad3DConfig={kernelName:AvgPool3DGrad,backendName:"webgl",kernelFunc:avgPool3DGrad2};function avgPoolGrad3(args){let{inputs,backend:backend2,attrs}=args,{dy,input:input2}=inputs,x=input2;assertNotComplex2([dy,input2],"avgPoolGrad");let{filterSize,strides,pad:pad3}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad3),avgPoolBackpropProgram=new AvgPool2DBackpropProgram(convInfo);return backend2.runWebGLProgram(avgPoolBackpropProgram,[dy],x.dtype)}var avgPoolGradConfig3={kernelName:AvgPoolGrad,backendName:"webgl",kernelFunc:avgPoolGrad3};function batchMatMul2(args){let{inputs,backend:backend2,attrs}=args,{a,b}=inputs,{transposeA,transposeB}=attrs;return batchMatMulImpl({a,b,transposeA,transposeB,backend:backend2})}var batchMatMulConfig2={kernelName:BatchMatMul,backendName:"webgl",kernelFunc:batchMatMul2},BatchNormProgram=class{constructor(xShape,meanShape,varianceShape,offsetShape,scaleShape,varianceEpsilon){this.outputShape=[],this.variableNames=["x","mean","variance"],backend_util_exports.assertAndGetBroadcastShape(xShape,meanShape),backend_util_exports.assertAndGetBroadcastShape(xShape,varianceShape);let offsetSnippet="0.0";offsetShape!=null&&(backend_util_exports.assertAndGetBroadcastShape(xShape,offsetShape),this.variableNames.push("offset"),offsetSnippet="getOffsetAtOutCoords()");let scaleSnippet="1.0";scaleShape!=null&&(backend_util_exports.assertAndGetBroadcastShape(xShape,scaleShape),this.variableNames.push("scale"),scaleSnippet="getScaleAtOutCoords()"),this.outputShape=xShape,this.userCode=` + `}};function OY(e){let{inputs:t,backend:n,attrs:a}=e,{dy:r,input:s}=t,i=s,{filterSize:o,strides:l,pad:c,dimRoundingMode:u}=a,p=[1,1,1],d=_.computePool3DInfo(i.shape,o,l,p,c,u),h=new PY(d);return n.runWebGLProgram(h,[r],i.dtype)}var LY={kernelName:Wd,backendName:"webgl",kernelFunc:OY};function zY(e){let{inputs:t,backend:n,attrs:a}=e,{dy:r,input:s}=t,i=s;Tp([r,s],"avgPoolGrad");let{filterSize:o,strides:l,pad:c}=a,u=_.computePool2DInfo(i.shape,o,l,1,c),p=new RY(u);return n.runWebGLProgram(p,[r],i.dtype)}var BY={kernelName:Bd,backendName:"webgl",kernelFunc:zY};function WY(e){let{inputs:t,backend:n,attrs:a}=e,{a:r,b:s}=t,{transposeA:i,transposeB:o}=a;return uf({a:r,b:s,transposeA:i,transposeB:o,backend:n})}var VY={kernelName:Ls,backendName:"webgl",kernelFunc:WY},UY=class{constructor(e,t,n,a,r,s){this.outputShape=[],this.variableNames=["x","mean","variance"],_.assertAndGetBroadcastShape(e,t),_.assertAndGetBroadcastShape(e,n);let i="0.0";a!=null&&(_.assertAndGetBroadcastShape(e,a),this.variableNames.push("offset"),i="getOffsetAtOutCoords()");let o="1.0";r!=null&&(_.assertAndGetBroadcastShape(e,r),this.variableNames.push("scale"),o="getScaleAtOutCoords()"),this.outputShape=e,this.userCode=` void main() { float x = getXAtOutCoords(); float mean = getMeanAtOutCoords(); float variance = getVarianceAtOutCoords(); - float offset = ${offsetSnippet}; - float scale = ${scaleSnippet}; - float inv = scale * inversesqrt(variance + float(${varianceEpsilon})); + float offset = ${i}; + float scale = ${o}; + float inv = scale * inversesqrt(variance + float(${s})); setOutput(dot(vec3(x, -mean, offset), vec3(inv, inv, 1))); } - `}},BatchNormPackedProgram=class{constructor(xShape,meanShape,varianceShape,offsetShape,scaleShape,varianceEpsilon){this.packedInputs=!0,this.packedOutput=!0,this.variableNames=["x","mean","variance"],backend_util_exports.assertAndGetBroadcastShape(xShape,meanShape),backend_util_exports.assertAndGetBroadcastShape(xShape,varianceShape);let offsetSnippet="vec4(0.0)";offsetShape!=null&&(backend_util_exports.assertAndGetBroadcastShape(xShape,offsetShape),this.variableNames.push("offset"),offsetSnippet="getOffsetAtOutCoords()");let scaleSnippet="vec4(1.0)";scaleShape!=null&&(backend_util_exports.assertAndGetBroadcastShape(xShape,scaleShape),this.variableNames.push("scale"),scaleSnippet="getScaleAtOutCoords()"),this.outputShape=xShape,this.userCode=` + `}},GY=class{constructor(e,t,n,a,r,s){this.packedInputs=!0,this.packedOutput=!0,this.variableNames=["x","mean","variance"],_.assertAndGetBroadcastShape(e,t),_.assertAndGetBroadcastShape(e,n);let i="vec4(0.0)";a!=null&&(_.assertAndGetBroadcastShape(e,a),this.variableNames.push("offset"),i="getOffsetAtOutCoords()");let o="vec4(1.0)";r!=null&&(_.assertAndGetBroadcastShape(e,r),this.variableNames.push("scale"),o="getScaleAtOutCoords()"),this.outputShape=e,this.userCode=` void main() { - vec4 offset = ${offsetSnippet}; - vec4 scale = ${scaleSnippet}; + vec4 offset = ${i}; + vec4 scale = ${o}; vec4 x = getXAtOutCoords(); vec4 mean = getMeanAtOutCoords(); vec4 variance = getVarianceAtOutCoords(); - vec4 inv = scale * inversesqrt(variance + vec4(${varianceEpsilon})); + vec4 inv = scale * inversesqrt(variance + vec4(${s})); setOutput((x - mean) * inv + offset); } - `}},batchNorm3=({inputs,backend:backend2,attrs})=>{let{x,mean:mean4,variance,offset,scale:scale22}=inputs;util_exports.assert(mean4.shape.length===variance.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),util_exports.assert(offset==null||mean4.shape.length===offset.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),util_exports.assert(scale22==null||mean4.shape.length===scale22.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let{varianceEpsilon}=attrs;varianceEpsilon==null&&(varianceEpsilon=.001);let finalInputs=[x,mean4,variance],offsetShape=null;offset!=null&&(offsetShape=offset.shape,finalInputs.push(offset));let scaleShape=null;scale22!=null&&(scaleShape=scale22.shape,finalInputs.push(scale22));let program=env().getBool("WEBGL_PACK_NORMALIZATION")?new BatchNormPackedProgram(x.shape,mean4.shape,variance.shape,offsetShape,scaleShape,varianceEpsilon):new BatchNormProgram(x.shape,mean4.shape,variance.shape,offsetShape,scaleShape,varianceEpsilon);return backend2.runWebGLProgram(program,finalInputs,finalInputs[0].dtype)},batchNormConfig2={kernelName:FusedBatchNorm,backendName:"webgl",kernelFunc:batchNorm3},SliceProgram=class{constructor(destSize){this.variableNames=["source"],this.outputShape=destSize,this.rank=destSize.length;let dtype=getCoordsDataType(this.rank),uniformPart=`uniform int start[${this.rank}];`,sourceCoords=getCoords(this.rank),body,coordSum=destSize.map((_,i)=>`sourceLoc.${coords[i]} = start[${i}] + coords.${coords[i]};`);body=` - ${dtype} sourceLoc; - ${dtype} coords = getOutputCoords(); - ${coordSum.join(` + `}},HY=({inputs:e,backend:t,attrs:n})=>{let{x:a,mean:r,variance:s,offset:i,scale:o}=e;k.assert(r.shape.length===s.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),k.assert(i==null||r.shape.length===i.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),k.assert(o==null||r.shape.length===o.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let{varianceEpsilon:l}=n;l==null&&(l=.001);let c=[a,r,s],u=null;i!=null&&(u=i.shape,c.push(i));let p=null;o!=null&&(p=o.shape,c.push(o));let d=ee().getBool("WEBGL_PACK_NORMALIZATION")?new GY(a.shape,r.shape,s.shape,u,p,l):new UY(a.shape,r.shape,s.shape,u,p,l);return t.runWebGLProgram(d,c,c[0].dtype)},jY={kernelName:Xs,backendName:"webgl",kernelFunc:HY},KY=class{constructor(e){this.variableNames=["source"],this.outputShape=e,this.rank=e.length;let t=mt(this.rank),n=`uniform int start[${this.rank}];`,a=qY(this.rank),r,s=e.map((i,o)=>`sourceLoc.${Qv[o]} = start[${o}] + coords.${Qv[o]};`);r=` + ${t} sourceLoc; + ${t} coords = getOutputCoords(); + ${s.join(` `)} `,this.userCode=` - ${uniformPart} + ${n} void main() { - ${body} - setOutput(getSource(${sourceCoords})); + ${r} + setOutput(getSource(${a})); } - `}getCustomSetupFunc(start){if(start.length!==this.rank)throw Error(`The rank (${this.rank}) of the program must match the length of start (${start.length})`);return(gpgpu,webGLProgram)=>{this.startLoc==null&&(this.startLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"start"),this.startLoc==null)||gpgpu.gl.uniform1iv(this.startLoc,start)}}},coords=["x","y","z","w","u","v"];function getCoords(rank){if(rank===1)return"sourceLoc";if(rank<=6)return coords.slice(0,rank).map(x=>"sourceLoc."+x).join(",");throw Error(`Slicing for rank ${rank} is not yet supported`)}var SlicePackedProgram=class{constructor(destSize){this.variableNames=["source"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=destSize,this.rank=destSize.length;let dtype=getCoordsDataType(this.rank),coords2=getChannels("coords",this.rank),sourceLoc=getChannels("sourceLoc",this.rank),innerDims=this.rank===1?"sourceLoc":`vec2(${sourceLoc.slice(-2).join()})`,getChannel=`getChannel(getSource(${sourceLoc.join()}), ${innerDims})`,upperRow=` - result.x = ${getChannel}; - if (++${coords2[this.rank-1]} < ${destSize[this.rank-1]}) { - ++${sourceLoc[this.rank-1]}; - result.y = ${getChannel}; - --${sourceLoc[this.rank-1]}; + `}getCustomSetupFunc(e){if(e.length!==this.rank)throw Error(`The rank (${this.rank}) of the program must match the length of start (${e.length})`);return(t,n)=>{this.startLoc==null&&(this.startLoc=t.getUniformLocationNoThrow(n,"start"),this.startLoc==null)||t.gl.uniform1iv(this.startLoc,e)}}},Qv=["x","y","z","w","u","v"];function qY(e){if(e===1)return"sourceLoc";if(e<=6)return Qv.slice(0,e).map(t=>"sourceLoc."+t).join(",");throw Error(`Slicing for rank ${e} is not yet supported`)}var XY=class{constructor(e){this.variableNames=["source"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.rank=e.length;let t=mt(this.rank),n=yn("coords",this.rank),a=yn("sourceLoc",this.rank),r=this.rank===1?"sourceLoc":`vec2(${a.slice(-2).join()})`,s=`getChannel(getSource(${a.join()}), ${r})`,i=` + result.x = ${s}; + if (++${n[this.rank-1]} < ${e[this.rank-1]}) { + ++${a[this.rank-1]}; + result.y = ${s}; + --${a[this.rank-1]}; } - `,lowerRow=this.rank===1?"":` - --${coords2[this.rank-1]}; - if (++${coords2[this.rank-2]} < ${destSize[this.rank-2]}) { - ++${sourceLoc[this.rank-2]}; - result.z = ${getChannel}; - if (++${coords2[this.rank-1]} < ${destSize[this.rank-1]}) { - ++${sourceLoc[this.rank-1]}; - result.w = ${getChannel}; + `,o=this.rank===1?"":` + --${n[this.rank-1]}; + if (++${n[this.rank-2]} < ${e[this.rank-2]}) { + ++${a[this.rank-2]}; + result.z = ${s}; + if (++${n[this.rank-1]} < ${e[this.rank-1]}) { + ++${a[this.rank-1]}; + result.w = ${s}; } } - `,sourceLocSetup=this.rank<=4?`sourceLoc = coords + - ${dtype}(${destSize.map((_,i)=>`start[${i}]`).join()});`:destSize.map((_,i)=>`${sourceLoc[i]} = ${coords2[i]} + start[${i}];`).join(` + `,l=this.rank<=4?`sourceLoc = coords + + ${t}(${e.map((c,u)=>`start[${u}]`).join()});`:e.map((c,u)=>`${a[u]} = ${n[u]} + start[${u}];`).join(` `);this.userCode=` uniform int start[${this.rank}]; void main() { - ${dtype} coords = getOutputCoords(); - ${dtype} sourceLoc; - ${sourceLocSetup} + ${t} coords = getOutputCoords(); + ${t} sourceLoc; + ${l} vec4 result = vec4(0.); - ${upperRow} - ${lowerRow} + ${i} + ${o} setOutput(result); } - `}getCustomSetupFunc(start){if(start.length!==this.rank)throw Error(`The rank (${this.rank}) of the program must match the length of start (${start.length})`);return(gpgpu,webGLProgram)=>{this.startLoc==null&&(this.startLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"start"),this.startLoc==null)||gpgpu.gl.uniform1iv(this.startLoc,start)}}};function shallowSlice(x,begin,size,backend2){let xTexData=backend2.texData.get(x.dataId),t=backend2.makeTensorInfo(size,x.dtype),newTexData=backend2.texData.get(t.dataId);Object.assign(newTexData,xTexData),newTexData.shape=size,newTexData.dtype=x.dtype;let flatOffset=slice_util_exports.computeFlatOffset(begin,util_exports.computeStrides(x.shape));xTexData.slice&&(flatOffset+=xTexData.slice.flatOffset),newTexData.slice={flatOffset,origDataId:xTexData.slice&&xTexData.slice.origDataId||x.dataId};let refCount=backend2.dataRefCount.get(newTexData.slice.origDataId)||1;return backend2.dataRefCount.set(newTexData.slice.origDataId,refCount+1),t}function slice3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{begin,size}=attrs,[$begin,$size]=slice_util_exports.parseSliceParams(x,begin,size);if(slice_util_exports.assertParamsValid(x,$begin,$size),util_exports.sizeFromShape($size)===0)return backend2.makeTensorInfo($size,x.dtype,[]);if(backend2.shouldExecuteOnCPU([x])||x.dtype==="string"){let xTexData=backend2.texData.get(x.dataId),outValues=sliceImplCPU(xTexData.values,$begin,$size,x.shape,x.dtype);return backend2.makeTensorInfo($size,x.dtype,outValues)}let{isPacked}=backend2.texData.get(x.dataId),isContinous=slice_util_exports.isSliceContinous(x.shape,$begin,$size);if(isPacked||!isContinous){let program=env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new SlicePackedProgram($size):new SliceProgram($size),customSetup=program.getCustomSetupFunc($begin);return backend2.runWebGLProgram(program,[x],x.dtype,customSetup)}return backend2.uploadToGPU(x.dataId),shallowSlice(x,$begin,$size,backend2)}var sliceConfig2={kernelName:Slice,backendName:"webgl",kernelFunc:slice3},batchToSpaceND3=args=>{let{inputs,backend:backend2,attrs}=args,{x}=inputs,{blockShape,crops}=attrs;util_exports.assert(x.shape.length<=4,()=>"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet");let prod5=blockShape.reduce((a,b)=>a*b),reshaped=backend_util_exports.getReshaped(x.shape,blockShape,prod5),permuted=backend_util_exports.getPermuted(reshaped.length,blockShape.length),reshapedPermuted=backend_util_exports.getReshapedPermuted(x.shape,blockShape,prod5),sliceBeginCoords=backend_util_exports.getSliceBeginCoords(crops,blockShape.length),sliceSize=backend_util_exports.getSliceSize(reshapedPermuted,crops,blockShape.length),toDispose=[],reshapedIntermediate=reshape4({inputs:{x},backend:backend2,attrs:{shape:reshaped}}),transposedIntermediate=transpose3({inputs:{x:reshapedIntermediate},backend:backend2,attrs:{perm:permuted}}),reshapedIntermediate2=reshape4({inputs:{x:transposedIntermediate},backend:backend2,attrs:{shape:reshapedPermuted}}),sliced=slice3({inputs:{x:reshapedIntermediate2},backend:backend2,attrs:{begin:sliceBeginCoords,size:sliceSize}});return toDispose.push(reshapedIntermediate),toDispose.push(transposedIntermediate),toDispose.push(reshapedIntermediate2),toDispose.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),sliced},batchToSpaceNDConfig2={kernelName:BatchToSpaceND,backendName:"webgl",kernelFunc:batchToSpaceND3};function bincount3(args){let{inputs,backend:backend2,attrs}=args,{x,weights}=inputs,{size}=attrs,xVals=backend2.readSync(x.dataId),weightsVals=backend2.readSync(weights.dataId),outVals=bincountImplCPU(xVals,weightsVals,weights.dtype,weights.shape,size);return backend2.makeTensorInfo([size],weights.dtype,outVals)}var bincountConfig2={kernelName:Bincount,backendName:"webgl",kernelFunc:bincount3},NOT_EQUAL="return float(a != b);",notEqual3=binaryKernelFunc2({opSnippet:NOT_EQUAL,dtype:"bool"}),notEqualConfig2={kernelName:NotEqual,backendName:"webgl",kernelFunc:notEqual3};function real3(args){let{inputs,backend:backend2}=args,{input:input2}=inputs,inputData=backend2.texData.get(input2.dataId);return identity3({inputs:{x:inputData.complexTensorInfos.real},backend:backend2})}var realConfig2={kernelName:Real,backendName:"webgl",kernelFunc:real3},TO_INT="return float(int(x));";function int(input2,backend2){let program=new UnaryOpProgram(input2.shape,TO_INT),output=backend2.runWebGLProgram(program,[input2],"int32");return{dataId:output.dataId,shape:output.shape,dtype:output.dtype}}function cast4(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{dtype}=attrs;if(dtype==="complex64"){if(x.dtype==="complex64")return identity3({inputs:{x},backend:backend2});let zerosTensor=zeros(x.shape),floatX=cast4({inputs:{x},backend:backend2,attrs:{dtype:"float32"}}),result=complex3({inputs:{real:floatX,imag:zerosTensor},backend:backend2});return zerosTensor.dispose(),backend2.disposeIntermediateTensorInfo(floatX),result}if(x.dtype==="complex64"){let realPart=real3({inputs:{input:x},backend:backend2}),result=cast4({inputs:{x:realPart},backend:backend2,attrs:{dtype}});return backend2.disposeIntermediateTensorInfo(realPart),result}if(!util_exports.hasEncodingLoss(x.dtype,dtype)){let result=identity3({inputs:{x},backend:backend2});return{dataId:result.dataId,shape:result.shape,dtype}}if(dtype==="int32")return int(x,backend2);if(dtype==="bool"){let zerosTensorInfo=backend2.makeTensorInfo([],"bool",util_exports.getTypedArrayFromDType("bool",1)),result=notEqual3({inputs:{a:x,b:zerosTensorInfo},backend:backend2});return backend2.disposeIntermediateTensorInfo(zerosTensorInfo),result}throw new Error(`Error in Cast: failed to cast ${x.dtype} to ${dtype}`)}var castConfig2={kernelName:Cast,backendName:"webgl",kernelFunc:cast4},CEIL="return ceil(x);",ceil3=unaryKernelFunc2({opSnippet:CEIL,packedOpSnippet:CEIL,cpuKernelImpl:ceilImplCPU}),ceilConfig2={kernelName:Ceil,backendName:"webgl",kernelFunc:ceil3},ClipProgram=class{constructor(aShape){this.variableNames=["A"],this.outputShape=aShape,this.userCode=` + `}getCustomSetupFunc(e){if(e.length!==this.rank)throw Error(`The rank (${this.rank}) of the program must match the length of start (${e.length})`);return(t,n)=>{this.startLoc==null&&(this.startLoc=t.getUniformLocationNoThrow(n,"start"),this.startLoc==null)||t.gl.uniform1iv(this.startLoc,e)}}};function YY(e,t,n,a){let r=a.texData.get(e.dataId),s=a.makeTensorInfo(n,e.dtype),i=a.texData.get(s.dataId);Object.assign(i,r),i.shape=n,i.dtype=e.dtype;let o=hn.computeFlatOffset(t,k.computeStrides(e.shape));r.slice&&(o+=r.slice.flatOffset),i.slice={flatOffset:o,origDataId:r.slice&&r.slice.origDataId||e.dataId};let l=a.dataRefCount.get(i.slice.origDataId)||1;return a.dataRefCount.set(i.slice.origDataId,l+1),s}function _p(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{begin:s,size:i}=a,[o,l]=hn.parseSliceParams(r,s,i);if(hn.assertParamsValid(r,o,l),k.sizeFromShape(l)===0)return n.makeTensorInfo(l,r.dtype,[]);if(n.shouldExecuteOnCPU([r])||r.dtype==="string"){let p=n.texData.get(r.dataId),d=UK(p.values,o,l,r.shape,r.dtype);return n.makeTensorInfo(l,r.dtype,d)}let{isPacked:c}=n.texData.get(r.dataId),u=hn.isSliceContinous(r.shape,o,l);if(c||!u){let p=ee().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new XY(l):new KY(l),d=p.getCustomSetupFunc(o);return n.runWebGLProgram(p,[r],r.dtype,d)}return n.uploadToGPU(r.dataId),YY(r,o,l,n)}var JY={kernelName:El,backendName:"webgl",kernelFunc:_p},ZY=e=>{let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{blockShape:s,crops:i}=a;k.assert(r.shape.length<=4,()=>"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet");let o=s.reduce((b,x)=>b*x),l=_.getReshaped(r.shape,s,o),c=_.getPermuted(l.length,s.length),u=_.getReshapedPermuted(r.shape,s,o),p=_.getSliceBeginCoords(i,s.length),d=_.getSliceSize(u,i,s.length),h=[],m=xe({inputs:{x:r},backend:n,attrs:{shape:l}}),f=En({inputs:{x:m},backend:n,attrs:{perm:c}}),g=xe({inputs:{x:f},backend:n,attrs:{shape:u}}),y=_p({inputs:{x:g},backend:n,attrs:{begin:p,size:d}});return h.push(m),h.push(f),h.push(g),h.forEach(b=>n.disposeIntermediateTensorInfo(b)),y},QY={kernelName:mc,backendName:"webgl",kernelFunc:ZY};function e7(e){let{inputs:t,backend:n,attrs:a}=e,{x:r,weights:s}=t,{size:i}=a,o=n.readSync(r.dataId),l=n.readSync(s.dataId),c=hS(o,l,s.dtype,s.shape,i);return n.makeTensorInfo([i],s.dtype,c)}var t7={kernelName:Vd,backendName:"webgl",kernelFunc:e7},n7="return float(a != b);",zS=on({opSnippet:n7,dtype:"bool"}),a7={kernelName:gl,backendName:"webgl",kernelFunc:zS};function Fp(e){let{inputs:t,backend:n}=e,{input:a}=t,r=n.texData.get(a.dataId);return Wn({inputs:{x:r.complexTensorInfos.real},backend:n})}var r7={kernelName:uh,backendName:"webgl",kernelFunc:Fp},s7="return float(int(x));";function i7(e,t){let n=new ys(e.shape,s7),a=t.runWebGLProgram(n,[e],"int32");return{dataId:a.dataId,shape:a.shape,dtype:a.dtype}}function ew(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{dtype:s}=a;if(s==="complex64"){if(r.dtype==="complex64")return Wn({inputs:{x:r},backend:n});let i=bt(r.shape),o=ew({inputs:{x:r},backend:n,attrs:{dtype:"float32"}}),l=bs({inputs:{real:o,imag:i},backend:n});return i.dispose(),n.disposeIntermediateTensorInfo(o),l}if(r.dtype==="complex64"){let i=Fp({inputs:{input:r},backend:n}),o=ew({inputs:{x:i},backend:n,attrs:{dtype:s}});return n.disposeIntermediateTensorInfo(i),o}if(!k.hasEncodingLoss(r.dtype,s)){let i=Wn({inputs:{x:r},backend:n});return{dataId:i.dataId,shape:i.shape,dtype:s}}if(s==="int32")return i7(r,n);if(s==="bool"){let i=n.makeTensorInfo([],"bool",k.getTypedArrayFromDType("bool",1)),o=zS({inputs:{a:r,b:i},backend:n});return n.disposeIntermediateTensorInfo(i),o}throw new Error(`Error in Cast: failed to cast ${r.dtype} to ${s}`)}var o7={kernelName:zs,backendName:"webgl",kernelFunc:ew},BS="return ceil(x);",l7=Ye({opSnippet:BS,packedOpSnippet:BS,cpuKernelImpl:TK}),u7={kernelName:jo,backendName:"webgl",kernelFunc:l7},c7=class{constructor(e){this.variableNames=["A"],this.outputShape=e,this.userCode=` uniform float minVal; uniform float maxVal; @@ -1827,7 +1827,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: setOutput(clamp(value, minVal, maxVal)); } - `}getCustomSetupFunc(min6,max6){return(gpgpu,webGLProgram)=>{this.minLoc==null&&(this.minLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"minVal"),this.maxLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"maxVal")),gpgpu.gl.uniform1f(this.minLoc,min6),gpgpu.gl.uniform1f(this.maxLoc,max6)}}},ClipPackedProgram=class{constructor(aShape){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=aShape,this.userCode=` + `}getCustomSetupFunc(e,t){return(n,a)=>{this.minLoc==null&&(this.minLoc=n.getUniformLocationNoThrow(a,"minVal"),this.maxLoc=n.getUniformLocationNoThrow(a,"maxVal")),n.gl.uniform1f(this.minLoc,e),n.gl.uniform1f(this.maxLoc,t)}}},p7=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.userCode=` uniform float minVal; uniform float maxVal; @@ -1841,7 +1841,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: setOutput(clamp(value, vec4(minVal), vec4(maxVal))); } - `}getCustomSetupFunc(min6,max6){return(gpgpu,webGLProgram)=>{this.minLoc==null&&(this.minLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"minVal"),this.maxLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"maxVal")),gpgpu.gl.uniform1f(this.minLoc,min6),gpgpu.gl.uniform1f(this.maxLoc,max6)}}};function clipByValue2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{clipValueMin,clipValueMax}=attrs,program;env().getBool("WEBGL_PACK_CLIP")?program=new ClipPackedProgram(x.shape):program=new ClipProgram(x.shape);let customSetup=program.getCustomSetupFunc(clipValueMin,clipValueMax);return backend2.runWebGLProgram(program,[x],x.dtype,customSetup)}var clipByValueConfig={kernelName:ClipByValue,backendName:"webgl",kernelFunc:clipByValue2},ComplexAbsProgram=class{constructor(shape){this.variableNames=["real","imag"],this.outputShape=shape,this.userCode=` + `}getCustomSetupFunc(e,t){return(n,a)=>{this.minLoc==null&&(this.minLoc=n.getUniformLocationNoThrow(a,"minVal"),this.maxLoc=n.getUniformLocationNoThrow(a,"maxVal")),n.gl.uniform1f(this.minLoc,e),n.gl.uniform1f(this.maxLoc,t)}}};function d7(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{clipValueMin:s,clipValueMax:i}=a,o;ee().getBool("WEBGL_PACK_CLIP")?o=new p7(r.shape):o=new c7(r.shape);let l=o.getCustomSetupFunc(s,i);return n.runWebGLProgram(o,[r],r.dtype,l)}var h7={kernelName:Kr,backendName:"webgl",kernelFunc:d7},m7=class{constructor(e){this.variableNames=["real","imag"],this.outputShape=e,this.userCode=` void main() { float re = abs(getRealAtOutCoords()); float im = abs(getImagAtOutCoords()); @@ -1854,96 +1854,96 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: mx == 0.0 ? 0.0 : mx * length(vec2(1, min(re, im)/mx)) ); } - `}};function makeComplexComponentTensorInfo(complexTensor,complexPart){return{dataId:complexPart.dataId,dtype:complexPart.dtype,shape:complexTensor.shape}}function complexAbs2(args){let{inputs,backend:backend2}=args,{x}=inputs,xData=backend2.texData.get(x.dataId),program=new ComplexAbsProgram(x.shape),programInputs=[makeComplexComponentTensorInfo(x,xData.complexTensorInfos.real),makeComplexComponentTensorInfo(x,xData.complexTensorInfos.imag)];return backend2.runWebGLProgram(program,programInputs,programInputs[0].dtype)}var complexAbsConfig2={kernelName:ComplexAbs,backendName:"webgl",kernelFunc:complexAbs2},ConcatProgram=class{constructor(shapes){this.outputShape=[],this.outputShape=backend_util_exports.computeOutShape(shapes,1),this.variableNames=shapes.map((_,i)=>`T${i}`);let offsets=new Array(shapes.length-1);offsets[0]=shapes[0][1];for(let i=1;i`T${i}`);let t=new Array(e.length-1);t[0]=e[0][1];for(let s=1;s`T${i}`);let offsets=new Array(shapes.length-1);offsets[0]=shapes[0][axis];for(let i=1;i`T${f}`);let o=new Array(e.length-1);o[0]=e[0][t];for(let m=1;m= ${offsets[i-1]}) { + getT0(${u}), vec2(${c.join()})); + }`;for(let m=1;m= ${o[m-1]}) { return getChannel( - getT${i}(${shiftedChannels(channels,channel,shift2)}), - vec2(${shiftedChannels(lastChannels,channel,shift2)})); - }`}let lastIndex=offsets.length,shift=offsets[offsets.length-1];getValueSnippet+=` + getT${m}(${pf(i,l,f)}), + vec2(${pf(c,l,f)})); + }`}let d=o.length,h=o[o.length-1];p+=` return getChannel( - getT${lastIndex}(${shiftedChannels(channels,channel,shift)}), - vec2(${shiftedChannels(lastChannels,channel,shift)}));`,this.userCode=` - float getValue(${channels.map(x=>"int "+x)}) { - ${getValueSnippet} + getT${d}(${pf(i,l,h)}), + vec2(${pf(c,l,h)}));`,this.userCode=` + float getValue(${i.map(m=>"int "+m)}) { + ${p} } void main() { - ${dtype} coords = getOutputCoords(); - vec4 result = vec4(getValue(${coords2}), 0., 0., 0.); + ${r} coords = getOutputCoords(); + vec4 result = vec4(getValue(${s}), 0., 0., 0.); - ${coords2[rank-1]} = ${coords2[rank-1]} + 1; - if (${coords2[rank-1]} < ${shape[rank-1]}) { - result.g = getValue(${coords2}); + ${s[a-1]} = ${s[a-1]} + 1; + if (${s[a-1]} < ${n[a-1]}) { + result.g = getValue(${s}); } - ${coords2[rank-2]} = ${coords2[rank-2]} + 1; - if (${coords2[rank-2]} < ${shape[rank-2]}) { - result.a = getValue(${coords2}); + ${s[a-2]} = ${s[a-2]} + 1; + if (${s[a-2]} < ${n[a-2]}) { + result.a = getValue(${s}); } - ${coords2[rank-1]} = ${coords2[rank-1]} - 1; - if (${coords2[rank-2]} < ${shape[rank-2]} && - ${coords2[rank-1]} < ${shape[rank-1]}) { - result.b = getValue(${coords2}); + ${s[a-1]} = ${s[a-1]} - 1; + if (${s[a-2]} < ${n[a-2]} && + ${s[a-1]} < ${n[a-1]}) { + result.b = getValue(${s}); } setOutput(result); } - `}};function shiftedChannels(channels,channel,shift){let channelIdx=channels.indexOf(channel);return channels.map((c,idx)=>idx===channelIdx?`${c} - ${shift}`:c).join()}function imag3(args){let{inputs,backend:backend2}=args,{input:input2}=inputs,inputData=backend2.texData.get(input2.dataId);return identity3({inputs:{x:inputData.complexTensorInfos.imag},backend:backend2})}var imagConfig2={kernelName:Imag,backendName:"webgl",kernelFunc:imag3};function concatImpl2(inputs,axis,backend2){let dtype=inputs[0].dtype;if(dtype==="complex64"){let reals=inputs.map(t=>real3({inputs:{input:t},backend:backend2})),imags=inputs.map(t=>imag3({inputs:{input:t},backend:backend2})),realConcated=concatImpl2(reals,axis,backend2),imagConcated=concatImpl2(imags,axis,backend2),result2=complex3({inputs:{real:realConcated,imag:imagConcated},backend:backend2});return reals.forEach(r=>backend2.disposeIntermediateTensorInfo(r)),imags.forEach(i=>backend2.disposeIntermediateTensorInfo(i)),backend2.disposeIntermediateTensorInfo(realConcated),backend2.disposeIntermediateTensorInfo(imagConcated),result2}if(dtype==="string"){let{tensors2D:tensors2D2,outShape:outShape2}=computeTensors2D(inputs,axis,backend2),inputsValShapes=tensors2D2.map(t=>({vals:backend2.readSync(t.dataId),shape:t.shape})),simplyConcat=tensors2D2[0].shape[0]===1,outVals=concatImplCPU(inputsValShapes,outShape2,dtype,simplyConcat),finalOutShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),axis),outInfo=backend2.makeTensorInfo(finalOutShape,dtype,outVals);return tensors2D2.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),outInfo}if(inputs.length>env().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER")){let midIndex=Math.floor(inputs.length/2),leftSide=concatImpl2(inputs.slice(0,midIndex),axis,backend2),rightSide=concatImpl2(inputs.slice(midIndex),axis,backend2),result2=concatImpl2([leftSide,rightSide],axis,backend2);return backend2.disposeIntermediateTensorInfo(leftSide),backend2.disposeIntermediateTensorInfo(rightSide),result2}if(env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")&&inputs[0].shape.length>1){let program2=new ConcatPackedProgram(inputs.map(t=>t.shape),axis);return backend2.runWebGLProgram(program2,inputs,dtype)}let{tensors2D,outShape}=computeTensors2D(inputs,axis,backend2),program=new ConcatProgram(tensors2D.map(t=>t.shape)),result=backend2.runWebGLProgram(program,tensors2D,dtype);tensors2D.forEach(r=>backend2.disposeIntermediateTensorInfo(r));let reshapedResult=reshape4({inputs:{x:result},attrs:{shape:outShape},backend:backend2});return backend2.disposeIntermediateTensorInfo(result),reshapedResult}function computeTensors2D(inputs,axis,backend2){let outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),axis);return{tensors2D:inputs.map(x=>reshape4({inputs:{x},attrs:{shape:[-1,util_exports.sizeFromShape(x.shape.slice(axis))]},backend:backend2})),outShape}}function concat3(args){let{inputs,backend:backend2,attrs}=args,{axis}=attrs,$axis=util_exports.parseAxisParam(axis,inputs[0].shape)[0],outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),$axis);if(util_exports.sizeFromShape(outShape)===0)return backend2.makeTensorInfo(outShape,inputs[0].dtype,[]);let $inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return identity3({inputs:{x:$inputs[0]},backend:backend2});let shapes=$inputs.map(t=>t.shape);return backend_util_exports.assertParamsConsistent(shapes,$axis),concatImpl2($inputs,$axis,backend2)}var concatConfig2={kernelName:Concat,backendName:"webgl",kernelFunc:concat3},Conv2DProgram=class{constructor(convInfo,addBias=!1,activation2=null,hasPreluActivationWeights=!1,hasLeakyreluAlpha=!1){this.variableNames=["x","W"],this.outputShape=convInfo.outShape;let padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,inputDepthNearestVec4=Math.floor(convInfo.inChannels/4)*4,inputDepthVec4Remainder=convInfo.inChannels%4,isChannelsLast=convInfo.dataFormat==="channelsLast",rowDim=isChannelsLast?1:2,colDim=isChannelsLast?2:3,channelDim=isChannelsLast?3:1,activationSnippet="",applyActivationSnippet="";activation2&&(hasPreluActivationWeights?activationSnippet=`float activation(float a) { + `}};function pf(e,t,n){let a=e.indexOf(t);return e.map((r,s)=>s===a?`${r} - ${n}`:r).join()}function df(e){let{inputs:t,backend:n}=e,{input:a}=t,r=n.texData.get(a.dataId);return Wn({inputs:{x:r.complexTensorInfos.imag},backend:n})}var x7={kernelName:nh,backendName:"webgl",kernelFunc:df};function Su(e,t,n){let a=e[0].dtype;if(a==="complex64"){let c=e.map(m=>Fp({inputs:{input:m},backend:n})),u=e.map(m=>df({inputs:{input:m},backend:n})),p=Su(c,t,n),d=Su(u,t,n),h=bs({inputs:{real:p,imag:d},backend:n});return c.forEach(m=>n.disposeIntermediateTensorInfo(m)),u.forEach(m=>n.disposeIntermediateTensorInfo(m)),n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(d),h}if(a==="string"){let{tensors2D:c,outShape:u}=VS(e,t,n),p=c.map(g=>({vals:n.readSync(g.dataId),shape:g.shape})),d=c[0].shape[0]===1,h=SK(p,u,a,d),m=_.computeOutShape(e.map(g=>g.shape),t),f=n.makeTensorInfo(m,a,h);return c.forEach(g=>n.disposeIntermediateTensorInfo(g)),f}if(e.length>ee().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER")){let c=Math.floor(e.length/2),u=Su(e.slice(0,c),t,n),p=Su(e.slice(c),t,n),d=Su([u,p],t,n);return n.disposeIntermediateTensorInfo(u),n.disposeIntermediateTensorInfo(p),d}if(ee().getBool("WEBGL_PACK_ARRAY_OPERATIONS")&&e[0].shape.length>1){let c=new b7(e.map(u=>u.shape),t);return n.runWebGLProgram(c,e,a)}let{tensors2D:r,outShape:s}=VS(e,t,n),i=new y7(r.map(c=>c.shape)),o=n.runWebGLProgram(i,r,a);r.forEach(c=>n.disposeIntermediateTensorInfo(c));let l=xe({inputs:{x:o},attrs:{shape:s},backend:n});return n.disposeIntermediateTensorInfo(o),l}function VS(e,t,n){let a=_.computeOutShape(e.map(r=>r.shape),t);return{tensors2D:e.map(r=>xe({inputs:{x:r},attrs:{shape:[-1,k.sizeFromShape(r.shape.slice(t))]},backend:n})),outShape:a}}function US(e){let{inputs:t,backend:n,attrs:a}=e,{axis:r}=a,s=k.parseAxisParam(r,t[0].shape)[0],i=_.computeOutShape(t.map(c=>c.shape),s);if(k.sizeFromShape(i)===0)return n.makeTensorInfo(i,t[0].dtype,[]);let o=t.filter(c=>k.sizeFromShape(c.shape)>0);if(o.length===1)return Wn({inputs:{x:o[0]},backend:n});let l=o.map(c=>c.shape);return _.assertParamsConsistent(l,s),Su(o,s,n)}var v7={kernelName:qo,backendName:"webgl",kernelFunc:US},GS=class{constructor(e,t=!1,n=null,a=!1,r=!1){this.variableNames=["x","W"],this.outputShape=e.outShape;let s=e.padInfo.top,i=e.padInfo.left,o=e.strideHeight,l=e.strideWidth,c=e.dilationHeight,u=e.dilationWidth,p=e.filterHeight,d=e.filterWidth,h=Math.floor(e.inChannels/4)*4,m=e.inChannels%4,f=e.dataFormat==="channelsLast",g=f?1:2,y=f?2:3,b=f?3:1,x="",v="";n&&(a?x=`float activation(float a) { float b = getPreluActivationWeightsAtOutCoords(); - ${activation2} - }`:hasLeakyreluAlpha?activationSnippet=`float activation(float a) { + ${n} + }`:r?x=`float activation(float a) { float b = getLeakyreluAlphaAtOutCoords(); - ${activation2} - }`:activationSnippet=` + ${n} + }`:x=` float activation(float x) { - ${activation2} + ${n} } - `,applyActivationSnippet="result = activation(result);");let addBiasSnippet=addBias?"result += getBiasAtOutCoords();":"";addBias&&this.variableNames.push("bias"),hasPreluActivationWeights&&this.variableNames.push("preluActivationWeights"),hasLeakyreluAlpha&&this.variableNames.push("leakyreluAlpha"),this.userCode=` - ${activationSnippet} + `,v="result = activation(result);");let N=t?"result += getBiasAtOutCoords();":"";t&&this.variableNames.push("bias"),a&&this.variableNames.push("preluActivationWeights"),r&&this.variableNames.push("leakyreluAlpha"),this.userCode=` + ${x} - const ivec2 strides = ivec2(${strideHeight}, ${strideWidth}); - const ivec2 pads = ivec2(${padTop}, ${padLeft}); + const ivec2 strides = ivec2(${o}, ${l}); + const ivec2 pads = ivec2(${s}, ${i}); void main() { ivec4 coords = getOutputCoords(); int batch = coords[0]; - int d2 = coords[${channelDim}]; + int d2 = coords[${b}]; ivec2 xRCCorner = - ivec2(coords[${rowDim}], coords[${colDim}]) * strides - pads; + ivec2(coords[${g}], coords[${y}]) * strides - pads; int xRCorner = xRCCorner.x; int xCCorner = xRCCorner.y; // Convolve x(?, ?, d1) with w(:, :, d1, d2) to get y(yR, yC, d2). // ? = to be determined. : = across all values in that axis. float dotProd = 0.0; - for (int wR = 0; wR < ${filterHeight}; wR++) { - int xR = xRCorner + wR * ${dilationHeight}; + for (int wR = 0; wR < ${p}; wR++) { + int xR = xRCorner + wR * ${c}; - if (xR < 0 || xR >= ${convInfo.inHeight}) { + if (xR < 0 || xR >= ${e.inHeight}) { continue; } - for (int wC = 0; wC < ${filterWidth}; wC++) { - int xC = xCCorner + wC * ${dilationWidth}; + for (int wC = 0; wC < ${d}; wC++) { + int xC = xCCorner + wC * ${u}; - if (xC < 0 || xC >= ${convInfo.inWidth}) { + if (xC < 0 || xC >= ${e.inWidth}) { continue; } - for (int d1 = 0; d1 < ${inputDepthNearestVec4}; d1 += 4) { + for (int d1 = 0; d1 < ${h}; d1 += 4) { vec4 wValues = vec4( getW(wR, wC, d1, d2), getW(wR, wC, d1 + 1, d2), @@ -1951,7 +1951,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: getW(wR, wC, d1 + 3, d2) ); - if (${isChannelsLast}) { + if (${f}) { vec4 xValues = vec4( getX(batch, xR, xC, d1), getX(batch, xR, xC, d1 + 1), @@ -1970,57 +1970,57 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } } - if (${inputDepthVec4Remainder===1}) { + if (${m===1}) { - if (${isChannelsLast}) { + if (${f}) { dotProd += - getX(batch, xR, xC, ${inputDepthNearestVec4}) * - getW(wR, wC, ${inputDepthNearestVec4}, d2); + getX(batch, xR, xC, ${h}) * + getW(wR, wC, ${h}, d2); } else { dotProd += - getX(batch, ${inputDepthNearestVec4}, xR, xC) * - getW(wR, wC, ${inputDepthNearestVec4}, d2); + getX(batch, ${h}, xR, xC) * + getW(wR, wC, ${h}, d2); } - } else if (${inputDepthVec4Remainder===2}) { + } else if (${m===2}) { vec2 wValues = vec2( - getW(wR, wC, ${inputDepthNearestVec4}, d2), - getW(wR, wC, ${inputDepthNearestVec4} + 1, d2) + getW(wR, wC, ${h}, d2), + getW(wR, wC, ${h} + 1, d2) ); - if (${isChannelsLast}) { + if (${f}) { vec2 xValues = vec2( - getX(batch, xR, xC, ${inputDepthNearestVec4}), - getX(batch, xR, xC, ${inputDepthNearestVec4} + 1) + getX(batch, xR, xC, ${h}), + getX(batch, xR, xC, ${h} + 1) ); dotProd += dot(xValues, wValues); } else { vec2 xValues = vec2( - getX(batch, ${inputDepthNearestVec4}, xR, xC), - getX(batch, ${inputDepthNearestVec4} + 1, xR, xC) + getX(batch, ${h}, xR, xC), + getX(batch, ${h} + 1, xR, xC) ); dotProd += dot(xValues, wValues); } - } else if (${inputDepthVec4Remainder===3}) { + } else if (${m===3}) { vec3 wValues = vec3( - getW(wR, wC, ${inputDepthNearestVec4}, d2), - getW(wR, wC, ${inputDepthNearestVec4} + 1, d2), - getW(wR, wC, ${inputDepthNearestVec4} + 2, d2) + getW(wR, wC, ${h}, d2), + getW(wR, wC, ${h} + 1, d2), + getW(wR, wC, ${h} + 2, d2) ); - if (${isChannelsLast}) { + if (${f}) { vec3 xValues = vec3( - getX(batch, xR, xC, ${inputDepthNearestVec4}), - getX(batch, xR, xC, ${inputDepthNearestVec4} + 1), - getX(batch, xR, xC, ${inputDepthNearestVec4} + 2) + getX(batch, xR, xC, ${h}), + getX(batch, xR, xC, ${h} + 1), + getX(batch, xR, xC, ${h} + 2) ); dotProd += dot(xValues, wValues); } else { vec3 xValues = vec3( - getX(batch, ${inputDepthNearestVec4}, xR, xC), - getX(batch, ${inputDepthNearestVec4} + 1, xR, xC), - getX(batch, ${inputDepthNearestVec4} + 2, xR, xC) + getX(batch, ${h}, xR, xC), + getX(batch, ${h} + 1, xR, xC), + getX(batch, ${h} + 2, xR, xC) ); dotProd += dot(xValues, wValues); } @@ -2030,13 +2030,13 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } float result = dotProd; - ${addBiasSnippet} - ${applyActivationSnippet} + ${N} + ${v} setOutput(result); } - `}},Conv3DProgram=class{constructor(convInfo){this.variableNames=["x","W"],this.outputShape=convInfo.outShape;let padFront=convInfo.padInfo.front,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,filterDepth=convInfo.filterDepth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,inputDepthNearestVec4=Math.floor(convInfo.inChannels/4)*4,inputDepthVec4Remainder=convInfo.inChannels%4;this.userCode=` - const ivec3 strides = ivec3(${strideDepth}, ${strideHeight}, ${strideWidth}); - const ivec3 pads = ivec3(${padFront}, ${padTop}, ${padLeft}); + `}},w7=class{constructor(e){this.variableNames=["x","W"],this.outputShape=e.outShape;let t=e.padInfo.front,n=e.padInfo.top,a=e.padInfo.left,r=e.strideDepth,s=e.strideHeight,i=e.strideWidth,o=e.dilationDepth,l=e.dilationHeight,c=e.dilationWidth,u=e.filterDepth,p=e.filterHeight,d=e.filterWidth,h=Math.floor(e.inChannels/4)*4,m=e.inChannels%4;this.userCode=` + const ivec3 strides = ivec3(${r}, ${s}, ${i}); + const ivec3 pads = ivec3(${t}, ${n}, ${a}); void main() { ivec5 coords = getOutputCoords(); @@ -2052,28 +2052,28 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // y(yF, yR, yC, d2). ? = to be determined. : = across all // values in that axis. float dotProd = 0.0; - for (int wF = 0; wF < ${filterDepth}; wF++) { - int xF = xFCorner + wF * ${dilationDepth}; + for (int wF = 0; wF < ${u}; wF++) { + int xF = xFCorner + wF * ${o}; - if (xF < 0 || xF >= ${convInfo.inDepth}) { + if (xF < 0 || xF >= ${e.inDepth}) { continue; } - for (int wR = 0; wR < ${filterHeight}; wR++) { - int xR = xRCorner + wR * ${dilationHeight}; + for (int wR = 0; wR < ${p}; wR++) { + int xR = xRCorner + wR * ${l}; - if (xR < 0 || xR >= ${convInfo.inHeight}) { + if (xR < 0 || xR >= ${e.inHeight}) { continue; } - for (int wC = 0; wC < ${filterWidth}; wC++) { - int xC = xCCorner + wC * ${dilationWidth}; + for (int wC = 0; wC < ${d}; wC++) { + int xC = xCCorner + wC * ${c}; - if (xC < 0 || xC >= ${convInfo.inWidth}) { + if (xC < 0 || xC >= ${e.inWidth}) { continue; } - for (int d1 = 0; d1 < ${inputDepthNearestVec4}; d1 += 4) { + for (int d1 = 0; d1 < ${h}; d1 += 4) { vec4 xValues = vec4( getX(batch, xF, xR, xC, d1), getX(batch, xF, xR, xC, d1 + 1), @@ -2090,30 +2090,30 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: dotProd += dot(xValues, wValues); } - if (${inputDepthVec4Remainder===1}) { + if (${m===1}) { dotProd += - getX(batch, xF, xR, xC, ${inputDepthNearestVec4}) * - getW(wF, wR, wC, ${inputDepthNearestVec4}, d2); - } else if (${inputDepthVec4Remainder===2}) { + getX(batch, xF, xR, xC, ${h}) * + getW(wF, wR, wC, ${h}, d2); + } else if (${m===2}) { vec2 xValues = vec2( - getX(batch, xF, xR, xC, ${inputDepthNearestVec4}), - getX(batch, xF, xR, xC, ${inputDepthNearestVec4} + 1) + getX(batch, xF, xR, xC, ${h}), + getX(batch, xF, xR, xC, ${h} + 1) ); vec2 wValues = vec2( - getW(wF, wR, wC, ${inputDepthNearestVec4}, d2), - getW(wF, wR, wC, ${inputDepthNearestVec4} + 1, d2) + getW(wF, wR, wC, ${h}, d2), + getW(wF, wR, wC, ${h} + 1, d2) ); dotProd += dot(xValues, wValues); - } else if (${inputDepthVec4Remainder===3}) { + } else if (${m===3}) { vec3 xValues = vec3( - getX(batch, xF, xR, xC, ${inputDepthNearestVec4}), - getX(batch, xF, xR, xC, ${inputDepthNearestVec4} + 1), - getX(batch, xF, xR, xC, ${inputDepthNearestVec4} + 2) + getX(batch, xF, xR, xC, ${h}), + getX(batch, xF, xR, xC, ${h} + 1), + getX(batch, xF, xR, xC, ${h} + 2) ); vec3 wValues = vec3( - getW(wF, wR, wC, ${inputDepthNearestVec4}, d2), - getW(wF, wR, wC, ${inputDepthNearestVec4} + 1, d2), - getW(wF, wR, wC, ${inputDepthNearestVec4} + 2, d2) + getW(wF, wR, wC, ${h}, d2), + getW(wF, wR, wC, ${h} + 1, d2), + getW(wF, wR, wC, ${h} + 2, d2) ); dotProd += dot(xValues, wValues); } @@ -2122,31 +2122,31 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(dotProd); } - `}},Im2ColPackedProgram=class{constructor(outputShape,inputShape,convInfo){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=outputShape;let{filterWidth,inChannels,strideWidth,strideHeight,padInfo,outWidth,dilationWidth,dilationHeight,dataFormat}=convInfo,{left,top}=padInfo,itemsPerBlockRow=inChannels*filterWidth,glsl=getGlslDifferences(),isChannelsLast=dataFormat==="channelsLast",rowDim=isChannelsLast?0:1,colDim=isChannelsLast?1:2,unrolled="";for(let row=0;row<=1;row++)for(let col=0;col<=1;col++)unrolled+=` - blockIndex = rc.y + ${col}; - pos = rc.x + ${row}; + `}},k7=class{constructor(e,t,n){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e;let{filterWidth:a,inChannels:r,strideWidth:s,strideHeight:i,padInfo:o,outWidth:l,dilationWidth:c,dilationHeight:u,dataFormat:p}=n,{left:d,top:h}=o,m=r*a,f=gn(),g=p==="channelsLast",y=g?0:1,b=g?1:2,x="";for(let v=0;v<=1;v++)for(let N=0;N<=1;N++)x+=` + blockIndex = rc.y + ${N}; + pos = rc.x + ${v}; - if(blockIndex < ${outputShape[1]} && pos < ${outputShape[0]}) { - offsetY = int(blockIndex / (${outWidth})) * ${strideHeight} - ${top}; - d0 = offsetY + ${dilationHeight} * (pos / ${itemsPerBlockRow}); + if(blockIndex < ${e[1]} && pos < ${e[0]}) { + offsetY = int(blockIndex / (${l})) * ${i} - ${h}; + d0 = offsetY + ${u} * (pos / ${m}); - if(d0 < ${inputShape[rowDim]} && d0 >= 0) { + if(d0 < ${t[y]} && d0 >= 0) { - offsetX = int(mod(float(blockIndex), ${outWidth}.) * ${strideWidth}. - ${left}.); - d1 = offsetX + ${dilationWidth} * (int(mod(float(pos), ${itemsPerBlockRow}.) / ${inChannels}.)); + offsetX = int(mod(float(blockIndex), ${l}.) * ${s}. - ${d}.); + d1 = offsetX + ${c} * (int(mod(float(pos), ${m}.) / ${r}.)); - if(d1 < ${inputShape[colDim]} && d1 >= 0) { + if(d1 < ${t[b]} && d1 >= 0) { - ch = int(mod(float(pos), ${inChannels}.)); + ch = int(mod(float(pos), ${r}.)); - if (${isChannelsLast}) { + if (${g}) { innerDims = vec2(d1, ch); - result[${row*2+col}] = getChannel( + result[${v*2+N}] = getChannel( getA(d0, int(innerDims.x), int(innerDims.y)), innerDims); } else { innerDims = vec2(d0, d1); - result[${row*2+col}] = getChannel( + result[${v*2+N}] = getChannel( getA(ch, int(innerDims.x), int(innerDims.y)), innerDims); } @@ -2162,11 +2162,11 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: int blockIndex, pos, offsetY, d0, offsetX, d1, ch; vec2 innerDims; - ${unrolled} + ${x} - ${glsl.output} = result; + ${f.output} = result; } - `}};function conv2dByMatMul({x,filter,convInfo,backend:backend2,bias=null,preluActivationWeights=null,leakyreluAlpha=0,activation:activation2=null}){let xShape=x.shape,xTexData=backend2.texData.get(x.dataId),sharedMatMulDim=convInfo.inChannels,outerShapeX=xShape[0]*xShape[1]*xShape[2],outerShapeFilter=convInfo.outChannels,isChannelsLast=convInfo.dataFormat==="channelsLast",transposeA=!1,transposeB=!1,out,intermediates=[],batchMatMulWillBeUnpacked=(outerShapeX===1||outerShapeFilter===1)&&sharedMatMulDim>MATMUL_SHARED_DIM_THRESHOLD,reshapeWillBeExpensive=xShape[2]%2!=0&&!!xTexData.isPacked;if(batchMatMulWillBeUnpacked||!env().getBool("WEBGL_LAZILY_UNPACK")||!env().getBool("WEBGL_PACK_BINARY_OPERATIONS")||!reshapeWillBeExpensive){let targetShape=isChannelsLast?xShape[0]*xShape[1]*xShape[2]:xShape[0]*xShape[2]*xShape[3],xReshaped=reshape4({inputs:{x},backend:backend2,attrs:{shape:[1,targetShape,convInfo.inChannels]}}),filterReshaped=reshape4({inputs:{x:filter},backend:backend2,attrs:{shape:[1,convInfo.inChannels,convInfo.outChannels]}}),result=batchMatMulImpl({a:xReshaped,b:filterReshaped,transposeA,transposeB,backend:backend2,bias,activation:activation2,preluActivationWeights,leakyreluAlpha});out=reshape4({inputs:{x:result},backend:backend2,attrs:{shape:convInfo.outShape}}),intermediates.push(xReshaped),intermediates.push(filterReshaped),intermediates.push(result)}else{let targetShape=isChannelsLast?xShape[0]*xShape[1]*(xShape[2]+1):xShape[0]*xShape[2]*(xShape[3]+1),xReshaped={dataId:x.dataId,shape:[1,targetShape,convInfo.inChannels],dtype:x.dtype},originalXTexDataShape=xTexData.shape;xTexData.shape=xTexData.shape.slice(),xTexData.shape[xTexData.shape.length-2]++,util_exports.assert(isReshapeFree(xTexData.shape,xReshaped.shape),()=>`packed reshape ${xTexData.shape} to ${xReshaped.shape} isn't free`);let filterReshaped=reshape4({inputs:{x:filter},backend:backend2,attrs:{shape:[1,convInfo.inChannels,convInfo.outChannels]}});intermediates.push(filterReshaped);let pointwiseConv=batchMatMulImpl({a:xReshaped,b:filterReshaped,backend:backend2,transposeA,transposeB,bias,activation:activation2,preluActivationWeights,leakyreluAlpha}),pointwiseConvTexData=backend2.texData.get(pointwiseConv.dataId);util_exports.assert(pointwiseConvTexData.isPacked,()=>"batchMatMul result is expected to be packed"),xTexData.shape=originalXTexDataShape,pointwiseConvTexData.shape=convInfo.outShape,out=identity3({inputs:{x:pointwiseConv},backend:backend2}),out.shape=convInfo.outShape,intermediates.push(pointwiseConv)}for(let i of intermediates)backend2.disposeIntermediateTensorInfo(i);return out}function conv2dWithIm2Row({x,filter,convInfo,backend:backend2,bias=null,preluActivationWeights=null,leakyreluAlpha=0,activation:activation2=null}){let{filterWidth,filterHeight,inChannels,outWidth,outHeight,dataFormat}=convInfo,isChannelsLast=dataFormat==="channelsLast",sharedDim=filterWidth*filterHeight*inChannels,numCols=outHeight*outWidth,x2ColShape=[sharedDim,numCols],transposeA=!0,transposeB=!1,intermediates=[],xSqueezed=reshape4({inputs:{x},backend:backend2,attrs:{shape:x.shape.slice(1)}}),w2Row=reshape4({inputs:{x:filter},backend:backend2,attrs:{shape:[1,sharedDim,util_exports.sizeFromShape(filter.shape)/sharedDim]}});intermediates.push(xSqueezed),intermediates.push(w2Row);let im2ColProgram=new Im2ColPackedProgram(x2ColShape,xSqueezed.shape,convInfo),im2Col=backend2.runWebGLProgram(im2ColProgram,[xSqueezed],"float32"),im2ColReshaped=reshape4({inputs:{x:im2Col},backend:backend2,attrs:{shape:[1,x2ColShape[0],x2ColShape[1]]}});intermediates.push(im2Col),intermediates.push(im2ColReshaped);let hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,hasLeakyreluAlpha=activation2==="leakyrelu",fusedActivation=activation2?mapActivationToShaderProgram(activation2,!0):null,matmulProgram=new MatMulPackedProgram(im2ColReshaped.shape,w2Row.shape,[1,numCols,convInfo.outChannels],transposeA,transposeB,hasBias,fusedActivation,hasPreluActivationWeights,hasLeakyreluAlpha),inputs=[im2ColReshaped,w2Row];if(bias&&inputs.push(bias),hasPreluActivationWeights&&inputs.push(preluActivationWeights),hasLeakyreluAlpha){let $leakyreluAlpha=backend2.makeTensorInfo([],"float32",util_exports.createScalarValue(leakyreluAlpha,"float32"));inputs.push($leakyreluAlpha),intermediates.push($leakyreluAlpha)}let product=backend2.runWebGLProgram(matmulProgram,inputs,"float32"),outShape=isChannelsLast?[1,outHeight,outWidth,convInfo.outChannels]:[1,convInfo.outChannels,outHeight,outWidth],out=reshape4({inputs:{x:product},backend:backend2,attrs:{shape:outShape}});intermediates.push(product);for(let i of intermediates)backend2.disposeIntermediateTensorInfo(i);return out}function conv2d4(args){let{inputs,backend:backend2,attrs}=args,{x,filter}=inputs,{strides,pad:pad3,dataFormat,dilations,dimRoundingMode}=attrs,$dataFormat=backend_util_exports.convertConv2DDataFormat(dataFormat),convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad3,dimRoundingMode,!1,$dataFormat),out;if(convInfo.filterHeight===1&&convInfo.filterWidth===1&&convInfo.dilationHeight===1&&convInfo.dilationWidth===1&&convInfo.strideHeight===1&&convInfo.strideWidth===1&&(convInfo.padInfo.type==="SAME"||convInfo.padInfo.type==="VALID"))out=conv2dByMatMul({x,filter,convInfo,backend:backend2});else if(env().getBool("WEBGL_CONV_IM2COL")&&x.shape[0]===1)out=conv2dWithIm2Row({x,filter,convInfo,backend:backend2});else{let program=new Conv2DProgram(convInfo);out=backend2.runWebGLProgram(program,[x,filter],"float32")}let outReshaped=reshape4({inputs:{x:out},backend:backend2,attrs:{shape:convInfo.outShape}});return backend2.disposeIntermediateTensorInfo(out),outReshaped}var conv2DConfig2={kernelName:Conv2D,backendName:"webgl",kernelFunc:conv2d4},Conv2DDerFilterProgram=class{constructor(convInfo){this.variableNames=["x","dy"],this.outputShape=convInfo.filterShape;let strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,isChannelsLast=convInfo.dataFormat==="channelsLast";this.userCode=` + `}};function HS({x:e,filter:t,convInfo:n,backend:a,bias:r=null,preluActivationWeights:s=null,leakyreluAlpha:i=0,activation:o=null}){let l=e.shape,c=a.texData.get(e.dataId),u=n.inChannels,p=l[0]*l[1]*l[2],d=n.outChannels,h=n.dataFormat==="channelsLast",m=!1,f=!1,g,y=[],b=(p===1||d===1)&&u>DS,x=l[2]%2!=0&&!!c.isPacked;if(b||!ee().getBool("WEBGL_LAZILY_UNPACK")||!ee().getBool("WEBGL_PACK_BINARY_OPERATIONS")||!x){let v=h?l[0]*l[1]*l[2]:l[0]*l[2]*l[3],N=xe({inputs:{x:e},backend:a,attrs:{shape:[1,v,n.inChannels]}}),T=xe({inputs:{x:t},backend:a,attrs:{shape:[1,n.inChannels,n.outChannels]}}),E=uf({a:N,b:T,transposeA:m,transposeB:f,backend:a,bias:r,activation:o,preluActivationWeights:s,leakyreluAlpha:i});g=xe({inputs:{x:E},backend:a,attrs:{shape:n.outShape}}),y.push(N),y.push(T),y.push(E)}else{let v=h?l[0]*l[1]*(l[2]+1):l[0]*l[2]*(l[3]+1),N={dataId:e.dataId,shape:[1,v,n.inChannels],dtype:e.dtype},T=c.shape;c.shape=c.shape.slice(),c.shape[c.shape.length-2]++,k.assert(af(c.shape,N.shape),()=>`packed reshape ${c.shape} to ${N.shape} isn't free`);let E=xe({inputs:{x:t},backend:a,attrs:{shape:[1,n.inChannels,n.outChannels]}});y.push(E);let A=uf({a:N,b:E,backend:a,transposeA:m,transposeB:f,bias:r,activation:o,preluActivationWeights:s,leakyreluAlpha:i}),$=a.texData.get(A.dataId);k.assert($.isPacked,()=>"batchMatMul result is expected to be packed"),c.shape=T,$.shape=n.outShape,g=Wn({inputs:{x:A},backend:a}),g.shape=n.outShape,y.push(A)}for(let v of y)a.disposeIntermediateTensorInfo(v);return g}function jS({x:e,filter:t,convInfo:n,backend:a,bias:r=null,preluActivationWeights:s=null,leakyreluAlpha:i=0,activation:o=null}){let{filterWidth:l,filterHeight:c,inChannels:u,outWidth:p,outHeight:d,dataFormat:h}=n,m=h==="channelsLast",f=l*c*u,g=d*p,y=[f,g],b=!0,x=!1,v=[],N=xe({inputs:{x:e},backend:a,attrs:{shape:e.shape.slice(1)}}),T=xe({inputs:{x:t},backend:a,attrs:{shape:[1,f,k.sizeFromShape(t.shape)/f]}});v.push(N),v.push(T);let E=new k7(y,N.shape,n),A=a.runWebGLProgram(E,[N],"float32"),$=xe({inputs:{x:A},backend:a,attrs:{shape:[1,y[0],y[1]]}});v.push(A),v.push($);let O=r!=null,V=s!=null,W=o==="leakyrelu",H=o?of(o,!0):null,X=new CS($.shape,T.shape,[1,g,n.outChannels],b,x,O,H,V,W),q=[$,T];if(r&&q.push(r),V&&q.push(s),W){let Q=a.makeTensorInfo([],"float32",k.createScalarValue(i,"float32"));q.push(Q),v.push(Q)}let K=a.runWebGLProgram(X,q,"float32"),J=m?[1,d,p,n.outChannels]:[1,n.outChannels,d,p],te=xe({inputs:{x:K},backend:a,attrs:{shape:J}});v.push(K);for(let Q of v)a.disposeIntermediateTensorInfo(Q);return te}function I7(e){let{inputs:t,backend:n,attrs:a}=e,{x:r,filter:s}=t,{strides:i,pad:o,dataFormat:l,dilations:c,dimRoundingMode:u}=a,p=_.convertConv2DDataFormat(l),d=_.computeConv2DInfo(r.shape,s.shape,i,c,o,u,!1,p),h;if(d.filterHeight===1&&d.filterWidth===1&&d.dilationHeight===1&&d.dilationWidth===1&&d.strideHeight===1&&d.strideWidth===1&&(d.padInfo.type==="SAME"||d.padInfo.type==="VALID"))h=HS({x:r,filter:s,convInfo:d,backend:n});else if(ee().getBool("WEBGL_CONV_IM2COL")&&r.shape[0]===1)h=jS({x:r,filter:s,convInfo:d,backend:n});else{let f=new GS(d);h=n.runWebGLProgram(f,[r,s],"float32")}let m=xe({inputs:{x:h},backend:n,attrs:{shape:d.outShape}});return n.disposeIntermediateTensorInfo(h),m}var N7={kernelName:Bs,backendName:"webgl",kernelFunc:I7},T7=class{constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;let t=e.strideHeight,n=e.strideWidth,a=e.padInfo.top,r=e.padInfo.left,s=e.dataFormat==="channelsLast";this.userCode=` void main() { ivec4 coords = getOutputCoords(); int wR = coords.x; @@ -2178,22 +2178,22 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // ? = to be determined. : = across all values in that axis. float dotProd = 0.0; - for (int b = 0; b < ${convInfo.batchSize}; b++) { - for (int yR = 0; yR < ${convInfo.outHeight}; yR++) { - int xR = wR + yR * ${strideHeight} - ${padTop}; + for (int b = 0; b < ${e.batchSize}; b++) { + for (int yR = 0; yR < ${e.outHeight}; yR++) { + int xR = wR + yR * ${t} - ${a}; - if (xR < 0 || xR >= ${convInfo.inHeight}) { + if (xR < 0 || xR >= ${e.inHeight}) { continue; } - for (int yC = 0; yC < ${convInfo.outWidth}; yC++) { - int xC = wC + yC * ${strideWidth} - ${padLeft}; + for (int yC = 0; yC < ${e.outWidth}; yC++) { + int xC = wC + yC * ${n} - ${r}; - if (xC < 0 || xC >= ${convInfo.inWidth}) { + if (xC < 0 || xC >= ${e.inWidth}) { continue; } - if (${isChannelsLast}) { + if (${s}) { float dyValue = getDy(b, yR, yC, d2); float xValue = getX(b, xR, xC, d1); dotProd += (xValue * dyValue); @@ -2208,45 +2208,45 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(dotProd); } - `}},Conv2DDerInputProgram=class{constructor(convInfo){this.variableNames=["dy","W"],this.outputShape=convInfo.inShape;let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,isChannelsLast=convInfo.dataFormat==="channelsLast",padTop=filterHeight-1-convInfo.padInfo.top,padLeft=filterWidth-1-convInfo.padInfo.left,rowDim=isChannelsLast?1:2,colDim=isChannelsLast?2:3,channelDim=isChannelsLast?3:1;this.userCode=` - const ivec2 pads = ivec2(${padTop}, ${padLeft}); + `}},S7=class{constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;let t=e.filterHeight,n=e.filterWidth,a=e.strideHeight,r=e.strideWidth,s=e.dataFormat==="channelsLast",i=t-1-e.padInfo.top,o=n-1-e.padInfo.left,l=s?1:2,c=s?2:3,u=s?3:1;this.userCode=` + const ivec2 pads = ivec2(${i}, ${o}); void main() { ivec4 coords = getOutputCoords(); int batch = coords[0]; - int d1 = coords[${channelDim}]; + int d1 = coords[${u}]; - ivec2 dyCorner = ivec2(coords[${rowDim}], coords[${colDim}]) - pads; + ivec2 dyCorner = ivec2(coords[${l}], coords[${c}]) - pads; int dyRCorner = dyCorner.x; int dyCCorner = dyCorner.y; // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1). // ? = to be determined. : = across all values in that axis. float dotProd = 0.0; - for (int wR = 0; wR < ${filterHeight}; wR++) { - float dyR = float(dyRCorner + wR) / ${strideHeight}.0; + for (int wR = 0; wR < ${t}; wR++) { + float dyR = float(dyRCorner + wR) / ${a}.0; - if (dyR < 0.0 || dyR >= ${convInfo.outHeight}.0 || fract(dyR) > 0.0) { + if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || fract(dyR) > 0.0) { continue; } int idyR = int(dyR); - int wRPerm = ${filterHeight} - 1 - wR; + int wRPerm = ${t} - 1 - wR; - for (int wC = 0; wC < ${filterWidth}; wC++) { - float dyC = float(dyCCorner + wC) / ${strideWidth}.0; + for (int wC = 0; wC < ${n}; wC++) { + float dyC = float(dyCCorner + wC) / ${r}.0; - if (dyC < 0.0 || dyC >= ${convInfo.outWidth}.0 || + if (dyC < 0.0 || dyC >= ${e.outWidth}.0 || fract(dyC) > 0.0) { continue; } int idyC = int(dyC); - int wCPerm = ${filterWidth} - 1 - wC; + int wCPerm = ${n} - 1 - wC; - for (int d2 = 0; d2 < ${convInfo.outChannels}; d2++) { + for (int d2 = 0; d2 < ${e.outChannels}; d2++) { - if (${isChannelsLast}) { + if (${s}) { float xValue = getDy(batch, idyR, idyC, d2); float wValue = getW(wRPerm, wCPerm, d1, d2); dotProd += xValue * wValue; @@ -2261,7 +2261,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(dotProd); } - `}},Conv3DDerFilterProgram=class{constructor(convInfo){this.variableNames=["x","dy"],this.outputShape=convInfo.filterShape;let strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,padFront=convInfo.padInfo.front,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left;this.userCode=` + `}},C7=class{constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;let t=e.strideDepth,n=e.strideHeight,a=e.strideWidth,r=e.padInfo.front,s=e.padInfo.top,i=e.padInfo.left;this.userCode=` void main() { ivec5 coords = getOutputCoords(); int wF = coords.x; @@ -2272,25 +2272,25 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: float dotProd = 0.0; - for (int b = 0; b < ${convInfo.batchSize}; b++) { - for (int yF = 0; yF < ${convInfo.outDepth}; yF++) { - int xF = wF + yF * ${strideDepth} - ${padFront}; + for (int b = 0; b < ${e.batchSize}; b++) { + for (int yF = 0; yF < ${e.outDepth}; yF++) { + int xF = wF + yF * ${t} - ${r}; - if (xF < 0 || xF >= ${convInfo.inDepth}) { + if (xF < 0 || xF >= ${e.inDepth}) { continue; } - for (int yR = 0; yR < ${convInfo.outHeight}; yR++) { - int xR = wR + yR * ${strideHeight} - ${padTop}; + for (int yR = 0; yR < ${e.outHeight}; yR++) { + int xR = wR + yR * ${n} - ${s}; - if (xR < 0 || xR >= ${convInfo.inHeight}) { + if (xR < 0 || xR >= ${e.inHeight}) { continue; } - for (int yC = 0; yC < ${convInfo.outWidth}; yC++) { - int xC = wC + yC * ${strideWidth} - ${padLeft}; + for (int yC = 0; yC < ${e.outWidth}; yC++) { + int xC = wC + yC * ${a} - ${i}; - if (xC < 0 || xC >= ${convInfo.inWidth}) { + if (xC < 0 || xC >= ${e.inWidth}) { continue; } @@ -2303,8 +2303,8 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(dotProd); } - `}},Conv3DDerInputProgram=class{constructor(convInfo){this.variableNames=["dy","W"],this.outputShape=convInfo.inShape;let filterDepth=convInfo.filterDepth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,padFront=filterDepth-1-convInfo.padInfo.front,padTop=filterHeight-1-convInfo.padInfo.top,padLeft=filterWidth-1-convInfo.padInfo.left;this.userCode=` - const ivec3 pads = ivec3(${padFront}, ${padTop}, ${padLeft}); + `}},E7=class{constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;let t=e.filterDepth,n=e.filterHeight,a=e.filterWidth,r=e.strideDepth,s=e.strideHeight,i=e.strideWidth,o=t-1-e.padInfo.front,l=n-1-e.padInfo.top,c=a-1-e.padInfo.left;this.userCode=` + const ivec3 pads = ivec3(${o}, ${l}, ${c}); void main() { ivec5 coords = getOutputCoords(); @@ -2318,39 +2318,39 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: int dyCCorner = dyCorner.z; float dotProd = 0.0; - for (int wF = 0; wF < ${filterDepth}; wF++) { - float dyF = float(dyFCorner + wF) / ${strideDepth}.0; + for (int wF = 0; wF < ${t}; wF++) { + float dyF = float(dyFCorner + wF) / ${r}.0; - if (dyF < 0.0 || dyF >= ${convInfo.outDepth}.0 || fract(dyF) > 0.0) { + if (dyF < 0.0 || dyF >= ${e.outDepth}.0 || fract(dyF) > 0.0) { continue; } int idyF = int(dyF); - int wFPerm = ${filterDepth} - 1 - wF; + int wFPerm = ${t} - 1 - wF; - for (int wR = 0; wR < ${filterHeight}; wR++) { - float dyR = float(dyRCorner + wR) / ${strideHeight}.0; + for (int wR = 0; wR < ${n}; wR++) { + float dyR = float(dyRCorner + wR) / ${s}.0; - if (dyR < 0.0 || dyR >= ${convInfo.outHeight}.0 || + if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || fract(dyR) > 0.0) { continue; } int idyR = int(dyR); - int wRPerm = ${filterHeight} - 1 - wR; + int wRPerm = ${n} - 1 - wR; - for (int wC = 0; wC < ${filterWidth}; wC++) { - float dyC = float(dyCCorner + wC) / ${strideWidth}.0; + for (int wC = 0; wC < ${a}; wC++) { + float dyC = float(dyCCorner + wC) / ${i}.0; - if (dyC < 0.0 || dyC >= ${convInfo.outWidth}.0 || + if (dyC < 0.0 || dyC >= ${e.outWidth}.0 || fract(dyC) > 0.0) { continue; } int idyC = int(dyC); - int wCPerm = ${filterWidth} - 1 - wC; + int wCPerm = ${a} - 1 - wC; - for (int d2 = 0; d2 < ${convInfo.outChannels}; d2++) { + for (int d2 = 0; d2 < ${e.outChannels}; d2++) { float xValue = getDy(batch, idyF, idyR, idyC, d2); float wValue = getW(wFPerm, wRPerm, wCPerm, d1, d2); dotProd += xValue * wValue; @@ -2360,14 +2360,14 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(dotProd); } - `}};function conv2DBackpropFilter3(args){let{inputs,backend:backend2,attrs}=args,{x,dy}=inputs,{strides,pad:pad3,dataFormat,dimRoundingMode,filterShape}=attrs,$dataFormat=backend_util_exports.convertConv2DDataFormat(dataFormat),convInfo=backend_util_exports.computeConv2DInfo(x.shape,filterShape,strides,1,pad3,dimRoundingMode,!1,$dataFormat),program=new Conv2DDerFilterProgram(convInfo);return backend2.runWebGLProgram(program,[x,dy],"float32")}var conv2DBackpropFilterConfig2={kernelName:Conv2DBackpropFilter,backendName:"webgl",kernelFunc:conv2DBackpropFilter3};function conv2DBackpropInput3(args){let{inputs,backend:backend2,attrs}=args,{dy,filter}=inputs,{inputShape,strides,pad:pad3,dataFormat,dimRoundingMode}=attrs,$dataFormat=backend_util_exports.convertConv2DDataFormat(dataFormat),convInfo=backend_util_exports.computeConv2DInfo(inputShape,filter.shape,strides,1,pad3,dimRoundingMode,!1,$dataFormat),program=new Conv2DDerInputProgram(convInfo);return backend2.runWebGLProgram(program,[dy,filter],"float32")}var conv2DBackpropInputConfig2={kernelName:Conv2DBackpropInput,backendName:"webgl",kernelFunc:conv2DBackpropInput3};function conv3D2(args){let{inputs,backend:backend2,attrs}=args,{x,filter}=inputs,{strides,pad:pad3,dilations}=attrs,convInfo=backend_util_exports.computeConv3DInfo(x.shape,filter.shape,strides,dilations,pad3),program=new Conv3DProgram(convInfo);return backend2.runWebGLProgram(program,[x,filter],"float32")}var conv3DConfig2={kernelName:Conv3D,backendName:"webgl",kernelFunc:conv3D2};function conv3DBackpropFilterV22(args){let{inputs,backend:backend2,attrs}=args,{x,dy}=inputs,{strides,pad:pad3,filterShape}=attrs,convInfo=backend_util_exports.computeConv3DInfo(x.shape,filterShape,strides,1,pad3),program=new Conv3DDerFilterProgram(convInfo);return backend2.runWebGLProgram(program,[x,dy],"float32")}var conv3DBackpropFilterV2Config2={kernelName:Conv3DBackpropFilterV2,backendName:"webgl",kernelFunc:conv3DBackpropFilterV22};function conv3DBackpropInput2(args){let{inputs,backend:backend2,attrs}=args,{dy,filter}=inputs,{pad:pad3,strides,inputShape}=attrs,convInfo=backend_util_exports.computeConv3DInfo(inputShape,filter.shape,strides,1,pad3),program=new Conv3DDerInputProgram(convInfo);return backend2.runWebGLProgram(program,[dy,filter],"float32")}var conv3DBackpropInputConfig={kernelName:Conv3DBackpropInputV2,backendName:"webgl",kernelFunc:conv3DBackpropInput2},COS=CHECK_NAN_SNIPPET_UNARY+` + `}};function _7(e){let{inputs:t,backend:n,attrs:a}=e,{x:r,dy:s}=t,{strides:i,pad:o,dataFormat:l,dimRoundingMode:c,filterShape:u}=a,p=_.convertConv2DDataFormat(l),d=_.computeConv2DInfo(r.shape,u,i,1,o,c,!1,p),h=new T7(d);return n.runWebGLProgram(h,[r,s],"float32")}var F7={kernelName:Gd,backendName:"webgl",kernelFunc:_7};function A7(e){let{inputs:t,backend:n,attrs:a}=e,{dy:r,filter:s}=t,{inputShape:i,strides:o,pad:l,dataFormat:c,dimRoundingMode:u}=a,p=_.convertConv2DDataFormat(c),d=_.computeConv2DInfo(i,s.shape,o,1,l,u,!1,p),h=new S7(d);return n.runWebGLProgram(h,[r,s],"float32")}var $7={kernelName:Ws,backendName:"webgl",kernelFunc:A7};function D7(e){let{inputs:t,backend:n,attrs:a}=e,{x:r,filter:s}=t,{strides:i,pad:o,dilations:l}=a,c=_.computeConv3DInfo(r.shape,s.shape,i,l,o),u=new w7(c);return n.runWebGLProgram(u,[r,s],"float32")}var M7={kernelName:gc,backendName:"webgl",kernelFunc:D7};function R7(e){let{inputs:t,backend:n,attrs:a}=e,{x:r,dy:s}=t,{strides:i,pad:o,filterShape:l}=a,c=_.computeConv3DInfo(r.shape,l,i,1,o),u=new C7(c);return n.runWebGLProgram(u,[r,s],"float32")}var P7={kernelName:Hd,backendName:"webgl",kernelFunc:R7};function O7(e){let{inputs:t,backend:n,attrs:a}=e,{dy:r,filter:s}=t,{pad:i,strides:o,inputShape:l}=a,c=_.computeConv3DInfo(l,s.shape,o,1,i),u=new E7(c);return n.runWebGLProgram(u,[r,s],"float32")}var L7={kernelName:jd,backendName:"webgl",kernelFunc:O7},z7=SS+` return cos(x); -`,cos3=unaryKernelFunc2({opSnippet:COS}),cosConfig2={kernelName:Cos,backendName:"webgl",kernelFunc:cos3},COSH=` +`,B7=Ye({opSnippet:z7}),W7={kernelName:Vs,backendName:"webgl",kernelFunc:B7},V7=` float e2x = exp(-x); return (e2x + 1.0 / e2x) / 2.0; -`,cosh3=unaryKernelFunc2({opSnippet:COSH}),coshConfig2={kernelName:Cosh,backendName:"webgl",kernelFunc:cosh3},CropAndResizeProgram=class{constructor(imageShape,boxShape,cropSize,method,extrapolationValue){this.variableNames=["Image","Boxes","BoxInd"],this.outputShape=[];let[batch,imageHeight,imageWidth,depth]=imageShape,[numBoxes]=boxShape,[cropHeight,cropWidth]=cropSize;this.outputShape=[numBoxes,cropHeight,cropWidth,depth];let methodId=method==="bilinear"?1:0,[inputHeightFloat,inputWidthFloat]=[`${imageHeight-1}.0`,`${imageWidth-1}.0`],[heightRatio,heightScale,inY]=cropHeight>1?[`${(imageHeight-1)/(cropHeight-1)}`,"(y2-y1) * height_ratio",`y1*${inputHeightFloat} + float(y)*(height_scale)`]:["0.0","0.0",`0.5 * (y1+y2) * ${inputHeightFloat}`],[widthRatio,widthScale,inX]=cropWidth>1?[`${(imageWidth-1)/(cropWidth-1)}`,"(x2-x1) * width_ratio",`x1*${inputWidthFloat} + float(x)*(width_scale)`]:["0.0","0.0",`0.5 * (x1+x2) * ${inputWidthFloat}`];this.userCode=` - const float height_ratio = float(${heightRatio}); - const float width_ratio = float(${widthRatio}); +`,U7=Ye({opSnippet:V7}),G7={kernelName:Ko,backendName:"webgl",kernelFunc:U7},H7=class{constructor(e,t,n,a,r){this.variableNames=["Image","Boxes","BoxInd"],this.outputShape=[];let[s,i,o,l]=e,[c]=t,[u,p]=n;this.outputShape=[c,u,p,l];let d=a==="bilinear"?1:0,[h,m]=[`${i-1}.0`,`${o-1}.0`],[f,g,y]=u>1?[`${(i-1)/(u-1)}`,"(y2-y1) * height_ratio",`y1*${h} + float(y)*(height_scale)`]:["0.0","0.0",`0.5 * (y1+y2) * ${h}`],[b,x,v]=p>1?[`${(o-1)/(p-1)}`,"(x2-x1) * width_ratio",`x1*${m} + float(x)*(width_scale)`]:["0.0","0.0",`0.5 * (x1+x2) * ${m}`];this.userCode=` + const float height_ratio = float(${f}); + const float width_ratio = float(${b}); void main() { ivec4 coords = getOutputCoords(); int b = coords[0]; @@ -2383,26 +2383,26 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // get image in batch index int bInd = round(getBoxInd(b)); - if(bInd < 0 || bInd >= ${batch}) { + if(bInd < 0 || bInd >= ${s}) { return; } - float height_scale = ${heightScale}; - float width_scale = ${widthScale}; + float height_scale = ${g}; + float width_scale = ${x}; - float in_y = ${inY}; - if( in_y < 0.0 || in_y > ${inputHeightFloat} ) { - setOutput(float(${extrapolationValue})); + float in_y = ${y}; + if( in_y < 0.0 || in_y > ${h} ) { + setOutput(float(${r})); return; } - float in_x = ${inX}; - if( in_x < 0.0 || in_x > ${inputWidthFloat} ) { - setOutput(float(${extrapolationValue})); + float in_x = ${v}; + if( in_x < 0.0 || in_x > ${m} ) { + setOutput(float(${r})); return; } vec2 sourceFracIndexCR = vec2(in_x,in_y); - if(${methodId} == 1) { + if(${d} == 1) { // Compute the four integer indices. ivec2 sourceFloorCR = ivec2(sourceFracIndexCR); ivec2 sourceCeilCR = ivec2(ceil(sourceFracIndexCR)); @@ -2426,21 +2426,21 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: setOutput(newValue); } } - `}},cropAndResize3=args=>{let{inputs,backend:backend2,attrs}=args,{image:image3,boxes,boxInd}=inputs,{cropSize,method,extrapolationValue}=attrs,program=new CropAndResizeProgram(image3.shape,boxes.shape,cropSize,method,extrapolationValue);return backend2.runWebGLProgram(program,[image3,boxes,boxInd],"float32")},cropAndResizeConfig2={kernelName:CropAndResize,backendName:"webgl",kernelFunc:cropAndResize3},CumSumProgram=class{constructor(shape,exclusive,reverse5){this.variableNames=["x"],this.outputShape=shape;let rank=shape.length,val=exclusive?"0.0":`getX(${getCoords2(rank,"coords")})`,length=shape[shape.length-1],condition="",idxString="";exclusive?(condition=reverse5?`end != ${length-1}`:"end != 0",idxString=reverse5?"end + 1":"end - 1"):(condition=reverse5?`end + pow2 < ${length}`:"end >= pow2",idxString=reverse5?"end + pow2":"end - pow2"),this.userCode=` + `}},j7=e=>{let{inputs:t,backend:n,attrs:a}=e,{image:r,boxes:s,boxInd:i}=t,{cropSize:o,method:l,extrapolationValue:c}=a,u=new H7(r.shape,s.shape,o,l,c);return n.runWebGLProgram(u,[r,s,i],"float32")},q7={kernelName:Xo,backendName:"webgl",kernelFunc:j7},XS=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=e;let a=e.length,r=t?"0.0":`getX(${qS(a,"coords")})`,s=e[e.length-1],i="",o="";t?(i=n?`end != ${s-1}`:"end != 0",o=n?"end + 1":"end - 1"):(i=n?`end + pow2 < ${s}`:"end >= pow2",o=n?"end + pow2":"end - pow2"),this.userCode=` uniform float index; void main() { - ${getCoordsDataType(rank)} coords = getOutputCoords(); - int end = ${getFinalCoord(rank,"coords")}; - float val = ${val}; + ${mt(a)} coords = getOutputCoords(); + int end = ${KS(a,"coords")}; + float val = ${r}; int pow2 = int(pow(2.0, index)); - if (${condition}) { - int idx = ${idxString}; - ${getFinalCoord(rank,"coords")} = idx; - val += getX(${getCoords2(rank,"coords")}); + if (${i}) { + int idx = ${o}; + ${KS(a,"coords")} = idx; + val += getX(${qS(a,"coords")}); } setOutput(val); } - `}getCustomSetupFunc(index){return(gpgpu,webGLProgram)=>{this.index==null&&(this.index=gpgpu.getUniformLocation(webGLProgram,"index")),gpgpu.gl.uniform1f(this.index,index)}}};function getCoords2(rank,name){if(rank===1)return`${name}`;if(rank===2)return`${name}.x, ${name}.y`;if(rank===3)return`${name}.x, ${name}.y, ${name}.z`;if(rank===4)return`${name}.x, ${name}.y, ${name}.z, ${name}.w`;throw Error(`Cumulative sum for rank ${rank} is not yet supported`)}function getFinalCoord(rank,name){if(rank===1)return`${name}`;if(rank===2)return`${name}.y`;if(rank===3)return`${name}.z`;if(rank===4)return`${name}.w`;throw Error(`Cumulative sum for rank ${rank} is not yet supported`)}function cumsum3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{axis,exclusive,reverse:reverse5}=attrs,xRank=x.shape.length,permutation=backend_util_exports.getAxesPermutation([axis],xRank),permutedX=x;permutation!=null&&(permutedX=transpose3({inputs:{x},backend:backend2,attrs:{perm:permutation}}));let permutedAxis=backend_util_exports.getInnerMostAxes(1,xRank)[0];if(permutedAxis!==xRank-1)throw new Error(`WebGL cumsum shader expects an inner-most axis=${x.shape.length-1} but got axis=${axis}`);let size=x.shape[permutedAxis],result=identity3({inputs:{x:permutedX},backend:backend2});for(let i=0;i<=Math.ceil(Math.log2(size))-1;i++){let program=new CumSumProgram(permutedX.shape,!1,reverse5),customSetup=program.getCustomSetupFunc(i),prevResult=result;result=backend2.runWebGLProgram(program,[result],result.dtype,customSetup),backend2.disposeIntermediateTensorInfo(prevResult)}if(exclusive){let program=new CumSumProgram(permutedX.shape,exclusive,reverse5),prevResult=result;result=backend2.runWebGLProgram(program,[result],result.dtype),backend2.disposeIntermediateTensorInfo(prevResult)}if(permutation!=null){let reversePermutation=backend_util_exports.getUndoAxesPermutation(permutation),reverseTransposedResult=transpose3({inputs:{x:result},backend:backend2,attrs:{perm:reversePermutation}});return backend2.disposeIntermediateTensorInfo(result),backend2.disposeIntermediateTensorInfo(permutedX),reverseTransposedResult}return result}var cumsumConfig2={kernelName:Cumsum,backendName:"webgl",kernelFunc:cumsum3};function denseBincount3(args){let{inputs,backend:backend2,attrs}=args,{x,weights}=inputs,{size,binaryOutput}=attrs;if(x.shape.length===1){let xVals=backend2.readSync(x.dataId),weightsVals=backend2.readSync(weights.dataId),outVals=bincountImplCPU(xVals,weightsVals,weights.dtype,weights.shape,size);return backend2.makeTensorInfo([size],weights.dtype,outVals)}else if(x.shape.length===2){let xBuf=backend2.bufferSync(x),weightsBuf=backend2.bufferSync(weights),outBuf=bincountReduceImplCPU(xBuf,weightsBuf,size,binaryOutput);return backend2.makeTensorInfo(outBuf.shape,weights.dtype,outBuf.values)}throw new Error(`Error in denseBincount: input must be at most rank 2, but got rank${x.shape.length}.`)}var denseBincountConfig2={kernelName:DenseBincount,backendName:"webgl",kernelFunc:denseBincount3},DepthToSpaceProgram=class{constructor(outputShape,blockSize,dataFormat){this.variableNames=["x"],this.outputShape=[],this.outputShape=outputShape,this.blockSize=blockSize,this.dataFormat=dataFormat,this.userCode=` + `}getCustomSetupFunc(e){return(t,n)=>{this.index==null&&(this.index=t.getUniformLocation(n,"index")),t.gl.uniform1f(this.index,e)}}};function qS(e,t){if(e===1)return`${t}`;if(e===2)return`${t}.x, ${t}.y`;if(e===3)return`${t}.x, ${t}.y, ${t}.z`;if(e===4)return`${t}.x, ${t}.y, ${t}.z, ${t}.w`;throw Error(`Cumulative sum for rank ${e} is not yet supported`)}function KS(e,t){if(e===1)return`${t}`;if(e===2)return`${t}.y`;if(e===3)return`${t}.z`;if(e===4)return`${t}.w`;throw Error(`Cumulative sum for rank ${e} is not yet supported`)}function K7(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{axis:s,exclusive:i,reverse:o}=a,l=r.shape.length,c=_.getAxesPermutation([s],l),u=r;c!=null&&(u=En({inputs:{x:r},backend:n,attrs:{perm:c}}));let p=_.getInnerMostAxes(1,l)[0];if(p!==l-1)throw new Error(`WebGL cumsum shader expects an inner-most axis=${r.shape.length-1} but got axis=${s}`);let d=r.shape[p],h=Wn({inputs:{x:u},backend:n});for(let m=0;m<=Math.ceil(Math.log2(d))-1;m++){let f=new XS(u.shape,!1,o),g=f.getCustomSetupFunc(m),y=h;h=n.runWebGLProgram(f,[h],h.dtype,g),n.disposeIntermediateTensorInfo(y)}if(i){let m=new XS(u.shape,i,o),f=h;h=n.runWebGLProgram(m,[h],h.dtype),n.disposeIntermediateTensorInfo(f)}if(c!=null){let m=_.getUndoAxesPermutation(c),f=En({inputs:{x:h},backend:n,attrs:{perm:m}});return n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(u),f}return h}var X7={kernelName:Us,backendName:"webgl",kernelFunc:K7};function Y7(e){let{inputs:t,backend:n,attrs:a}=e,{x:r,weights:s}=t,{size:i,binaryOutput:o}=a;if(r.shape.length===1){let l=n.readSync(r.dataId),c=n.readSync(s.dataId),u=hS(l,c,s.dtype,s.shape,i);return n.makeTensorInfo([i],s.dtype,u)}else if(r.shape.length===2){let l=n.bufferSync(r),c=n.bufferSync(s),u=NK(l,c,i,o);return n.makeTensorInfo(u.shape,s.dtype,u.values)}throw new Error(`Error in denseBincount: input must be at most rank 2, but got rank${r.shape.length}.`)}var J7={kernelName:qd,backendName:"webgl",kernelFunc:Y7},Z7=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=[],this.outputShape=e,this.blockSize=t,this.dataFormat=n,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords[0]; @@ -2448,40 +2448,40 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: int w = ${this.getWidthCoordString()}; int d = ${this.getDepthCoordString()}; - int in_h = h / ${blockSize}; - int offset_h = imod(h, ${blockSize}); - int in_w = w / ${blockSize}; - int offset_w = imod(w, ${blockSize}); - int offset_d = (offset_h * ${blockSize} + offset_w) * + int in_h = h / ${t}; + int offset_h = imod(h, ${t}); + int in_w = w / ${t}; + int offset_w = imod(w, ${t}); + int offset_d = (offset_h * ${t} + offset_w) * ${this.getOutputDepthSize()}; int in_d = d + offset_d; float result = ${this.getInputSamplingString()}; setOutput(result); } - `}getHeightCoordString(){return this.dataFormat==="NHWC"?"coords[1]":"coords[2]"}getWidthCoordString(){return this.dataFormat==="NHWC"?"coords[2]":"coords[3]"}getDepthCoordString(){return this.dataFormat==="NHWC"?"coords[3]":"coords[1]"}getOutputDepthSize(){return this.dataFormat==="NHWC"?this.outputShape[3]:this.outputShape[1]}getInputSamplingString(){return this.dataFormat==="NHWC"?"getX(b, in_h, in_w, in_d)":"getX(b, in_d, in_h, in_w)"}};function depthToSpace3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{blockSize,dataFormat}=attrs;util_exports.assert(blockSize>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=dataFormat==="NHWC"?x.shape[1]:x.shape[2],inputWidth=dataFormat==="NHWC"?x.shape[2]:x.shape[3],inputDepth=dataFormat==="NHWC"?x.shape[3]:x.shape[1],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),outputShape=dataFormat==="NHWC"?[batchSize,outputHeight,outputWidth,outputDepth]:[batchSize,outputDepth,outputHeight,outputWidth],program=new DepthToSpaceProgram(outputShape,blockSize,dataFormat);return backend2.runWebGLProgram(program,[x],x.dtype)}var depthToSpaceConfig2={kernelName:DepthToSpace,backendName:"webgl",kernelFunc:depthToSpace3},DepthwiseConv2DProgram=class{constructor(convInfo,addBias=!1,activation2=null,hasPreluActivation=!1,hasLeakyReluAlpha=!1){this.variableNames=["x","W"],this.outputShape=convInfo.outShape;let xNumRows=convInfo.inHeight,xNumCols=convInfo.inWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,channelMul=convInfo.outChannels/convInfo.inChannels,activationSnippet="",applyActivationSnippet="";activation2&&(hasPreluActivation?activationSnippet=`float activation(float a) { + `}getHeightCoordString(){return this.dataFormat==="NHWC"?"coords[1]":"coords[2]"}getWidthCoordString(){return this.dataFormat==="NHWC"?"coords[2]":"coords[3]"}getDepthCoordString(){return this.dataFormat==="NHWC"?"coords[3]":"coords[1]"}getOutputDepthSize(){return this.dataFormat==="NHWC"?this.outputShape[3]:this.outputShape[1]}getInputSamplingString(){return this.dataFormat==="NHWC"?"getX(b, in_h, in_w, in_d)":"getX(b, in_d, in_h, in_w)"}};function Q7(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{blockSize:s,dataFormat:i}=a;k.assert(s>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${s}`);let o=r.shape[0],l=i==="NHWC"?r.shape[1]:r.shape[2],c=i==="NHWC"?r.shape[2]:r.shape[3],u=i==="NHWC"?r.shape[3]:r.shape[1],p=l*s,d=c*s,h=u/(s*s),m=i==="NHWC"?[o,p,d,h]:[o,h,p,d],f=new Z7(m,s,i);return n.runWebGLProgram(f,[r],r.dtype)}var eJ={kernelName:Yo,backendName:"webgl",kernelFunc:Q7},YS=class{constructor(e,t=!1,n=null,a=!1,r=!1){this.variableNames=["x","W"],this.outputShape=e.outShape;let s=e.inHeight,i=e.inWidth,o=e.padInfo.top,l=e.padInfo.left,c=e.strideHeight,u=e.strideWidth,p=e.dilationHeight,d=e.dilationWidth,h=e.filterHeight,m=e.filterWidth,f=e.outChannels/e.inChannels,g="",y="";n&&(a?g=`float activation(float a) { float b = getPreluActivationWeightsAtOutCoords(); - ${activation2} - }`:hasLeakyReluAlpha?activationSnippet=`float activation(float a) { + ${n} + }`:r?g=`float activation(float a) { float b = getLeakyreluAlphaAtOutCoords(); - ${activation2} - }`:activationSnippet=` + ${n} + }`:g=` float activation(float x) { - ${activation2} + ${n} } - `,applyActivationSnippet="result = activation(result);");let addBiasSnippet=addBias?"result += getBiasAtOutCoords();":"";addBias&&this.variableNames.push("bias"),hasPreluActivation&&this.variableNames.push("preluActivationWeights"),hasLeakyReluAlpha&&this.variableNames.push("leakyreluAlpha"),this.userCode=` - ${activationSnippet} + `,y="result = activation(result);");let b=t?"result += getBiasAtOutCoords();":"";t&&this.variableNames.push("bias"),a&&this.variableNames.push("preluActivationWeights"),r&&this.variableNames.push("leakyreluAlpha"),this.userCode=` + ${g} - const ivec2 strides = ivec2(${strideHeight}, ${strideWidth}); - const ivec2 pads = ivec2(${padTop}, ${padLeft}); + const ivec2 strides = ivec2(${c}, ${u}); + const ivec2 pads = ivec2(${o}, ${l}); void main() { ivec4 coords = getOutputCoords(); int batch = coords.x; ivec2 xRCCorner = coords.yz * strides - pads; int d2 = coords.w; - int d1 = d2 / ${channelMul}; - int q = d2 - d1 * ${channelMul}; + int d1 = d2 / ${f}; + int q = d2 - d1 * ${f}; int xRCorner = xRCCorner.x; int xCCorner = xRCCorner.y; @@ -2490,17 +2490,17 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // ? = to be determined. : = across all values in that axis. float dotProd = 0.0; // TO DO(dsmilkov): Flatten the two for loops and vec4 the operations. - for (int wR = 0; wR < ${filterHeight}; wR++) { - int xR = xRCorner + wR * ${dilationHeight}; + for (int wR = 0; wR < ${h}; wR++) { + int xR = xRCorner + wR * ${p}; - if (xR < 0 || xR >= ${xNumRows}) { + if (xR < 0 || xR >= ${s}) { continue; } - for (int wC = 0; wC < ${filterWidth}; wC++) { - int xC = xCCorner + wC * ${dilationWidth}; + for (int wC = 0; wC < ${m}; wC++) { + int xC = xCCorner + wC * ${d}; - if (xC < 0 || xC >= ${xNumCols}) { + if (xC < 0 || xC >= ${i}) { continue; } @@ -2511,142 +2511,142 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } float result = dotProd; - ${addBiasSnippet} - ${applyActivationSnippet} + ${b} + ${y} setOutput(result); } - `}},DepthwiseConvPacked2DProgram=class{constructor(convInfo,addBias=!1,activation2=null,hasPreluActivation=!1,hasLeakyReluAlpha=!1){this.variableNames=["x","W"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=convInfo.outShape;let xNumRows=convInfo.inHeight,xNumCols=convInfo.inWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,texelsAcross=filterWidth,mainLoop="int xR; int xC; int xCOffset;";for(let r=0;r= 0 && xR < ${xNumRows} && xCOffset >= 0 && xCOffset < ${xNumCols}) { - xTexelR${r}C${c} = getX(batch, xR, xCOffset, d1); + if(xR >= 0 && xR < ${s} && xCOffset >= 0 && xCOffset < ${i}) { + xTexelR${v}C${T} = getX(batch, xR, xCOffset, d1); // Need to manually clear unused channels in case // we're reading from recycled texture. - if(xCOffset + 1 >= ${xNumCols}) { - xTexelR${r}C${c}.zw = vec2(0.); + if(xCOffset + 1 >= ${i}) { + xTexelR${v}C${T}.zw = vec2(0.); } } else { - xTexelR${r}C${c} = vec4(0.); + xTexelR${v}C${T} = vec4(0.); } xCOffset = xC + 1 - 2; - if(xR >= 0 && xR < ${xNumRows} && xCOffset >= 0 && xCOffset < ${xNumCols}) { + if(xR >= 0 && xR < ${s} && xCOffset >= 0 && xCOffset < ${i}) { vec4 previous = getX(batch, xR, xCOffset, d1); // Need to manually clear unused channels in case // we're reading from recycled texture. - if(xCOffset + 1 >= ${xNumCols}) { + if(xCOffset + 1 >= ${i}) { previous.zw = vec2(0.); } - xR${r}C${c} = vec4(previous.zw, xTexelR${r}C${c}.xy); + xR${v}C${T} = vec4(previous.zw, xTexelR${v}C${T}.xy); } else { - xR${r}C${c} = vec4(0, 0, xTexelR${r}C${c}.xy); + xR${v}C${T} = vec4(0, 0, xTexelR${v}C${T}.xy); } - `:mainLoop+=` - if(xR >= 0 && xR < ${xNumRows} && xC >= 0 && xC < ${xNumCols}) { - xTexelR${r}C${c} = getX(batch, xR, xC, d1); + `:g+=` + if(xR >= 0 && xR < ${s} && xC >= 0 && xC < ${i}) { + xTexelR${v}C${T} = getX(batch, xR, xC, d1); } else { - xTexelR${r}C${c} = vec4(0.); + xTexelR${v}C${T} = vec4(0.); } - xR${r}C${c} = xTexelR${r}C${c}; - `,c+1= 0 && xR < ${xNumRows} && - xCOffset >= 0 && xCOffset < ${xNumCols}) { - xTexelR${r}C${c+2} = getX(batch, xR, xCOffset, d1); + if(xR >= 0 && xR < ${s} && + xCOffset >= 0 && xCOffset < ${i}) { + xTexelR${v}C${T+2} = getX(batch, xR, xCOffset, d1); } - `,dilationWidth>1&&(mainLoop+=` + `,d>1&&(g+=` xCOffset -= 2; - if(xR >= 0 && xR < ${xNumRows} && - xCOffset >= 0 && xCOffset < ${xNumCols}) { - xTexelR${r}C${c} = getX(batch, xR, xCOffset, d1); + if(xR >= 0 && xR < ${s} && + xCOffset >= 0 && xCOffset < ${i}) { + xTexelR${v}C${T} = getX(batch, xR, xCOffset, d1); } else { - xTexelR${r}C${c} = vec4(0.); + xTexelR${v}C${T} = vec4(0.); } - `),mainLoop+=` - xR${r}C${c+1} = vec4( - xTexelR${r}C${c}.zw, xTexelR${r}C${c+2}.xy); - `):mainLoop+=` - xCOffset = xC + ${nextTexelOffset}; + `),g+=` + xR${v}C${T+1} = vec4( + xTexelR${v}C${T}.zw, xTexelR${v}C${T+2}.xy); + `):g+=` + xCOffset = xC + ${E}; - if(xR >= 0 && xR < ${xNumRows} && - xCOffset >= 0 && xCOffset < ${xNumCols}) { - xTexelR${r}C${c+2} = getX(batch, xR, xCOffset, d1); + if(xR >= 0 && xR < ${s} && + xCOffset >= 0 && xCOffset < ${i}) { + xTexelR${v}C${T+2} = getX(batch, xR, xCOffset, d1); } - xR${r}C${c+1} = xTexelR${r}C${c+2}; - `}}else c= 0 && xR < ${xNumRows}) { - `,padLeft%2==1?(mainLoop+=` - xCOffset = xC + 1 - ${strideWidth}; - if(xCOffset >= 0 && xCOffset < ${xNumCols}) { - xTexelR${r}C${c} = getX(batch, xR, xCOffset, d1); + xR${v}C${T+1} = xTexelR${v}C${T+2}; + `}}else T= 0 && xR < ${s}) { + `,l%2==1?(g+=` + xCOffset = xC + 1 - ${u}; + if(xCOffset >= 0 && xCOffset < ${i}) { + xTexelR${v}C${T} = getX(batch, xR, xCOffset, d1); } else { - xTexelR${r}C${c} = vec4(0.); + xTexelR${v}C${T} = vec4(0.); } - if(xC + 1 >= 0 && xC + 1 < ${xNumCols}) { - xTexelR${r}C${c+2} = getX(batch, xR, xC + 1, d1); + if(xC + 1 >= 0 && xC + 1 < ${i}) { + xTexelR${v}C${T+2} = getX(batch, xR, xC + 1, d1); } else { - xTexelR${r}C${c+2} = vec4(0.); + xTexelR${v}C${T+2} = vec4(0.); } - xR${r}C${c} = vec4( - xTexelR${r}C${c}.zw, xTexelR${r}C${c+2}.zw); - `,c+1= 0 && xCOffset < ${xNumCols}) { + xCOffset = xC + 1 + ${u}; + if(xCOffset >= 0 && xCOffset < ${i}) { final = getX(batch, xR, xCOffset, d1); } - xR${r}C${c+1} = vec4(xTexelR${r}C${c+2}.xy, final.xy); - `)):(mainLoop+=` - if(xC >= 0 && xC < ${xNumCols}) { - xTexelR${r}C${c} = getX(batch, xR, xC, d1); + xR${v}C${T+1} = vec4(xTexelR${v}C${T+2}.xy, final.xy); + `)):(g+=` + if(xC >= 0 && xC < ${i}) { + xTexelR${v}C${T} = getX(batch, xR, xC, d1); } else { - xTexelR${r}C${c} = vec4(0.); + xTexelR${v}C${T} = vec4(0.); } - xCOffset = xC + ${strideWidth}; - if(xCOffset >= 0 && xCOffset < ${xNumCols}) { - xTexelR${r}C${c+2} = getX(batch, xR, xCOffset, d1); + xCOffset = xC + ${u}; + if(xCOffset >= 0 && xCOffset < ${i}) { + xTexelR${v}C${T+2} = getX(batch, xR, xCOffset, d1); } else { - xTexelR${r}C${c+2} = vec4(0.); + xTexelR${v}C${T+2} = vec4(0.); } - xR${r}C${c} = vec4( - xTexelR${r}C${c}.xy, xTexelR${r}C${c+2}.xy); - `,c+1`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${$dilations}'`);let convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,$dilations,pad3,dimRoundingMode,!0),program;return env().getBool("WEBGL_PACK_DEPTHWISECONV")&&convInfo.strideWidth<=2&&convInfo.outChannels/convInfo.inChannels==1?program=new DepthwiseConvPacked2DProgram(convInfo):program=new DepthwiseConv2DProgram(convInfo),backend2.runWebGLProgram(program,[x,filter],"float32")}var depthwiseConv2dNativeConfig2={kernelName:DepthwiseConv2dNative,backendName:"webgl",kernelFunc:depthwiseConv2dNative2},DepthwiseConv2DDerFilterProgram=class{constructor(convInfo){this.variableNames=["x","dy"],this.outputShape=convInfo.filterShape;let strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,channelMul=convInfo.outChannels/convInfo.inChannels;this.userCode=` + `}};function tJ(e){let{inputs:t,backend:n,attrs:a}=e,{x:r,filter:s}=t,{strides:i,pad:o,dilations:l,dimRoundingMode:c}=a,u=l;u==null&&(u=[1,1]),k.assert(_.eitherStridesOrDilationsAreOne(i,u),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${i} and dilations '${u}'`);let p=_.computeConv2DInfo(r.shape,s.shape,i,u,o,c,!0),d;return ee().getBool("WEBGL_PACK_DEPTHWISECONV")&&p.strideWidth<=2&&p.outChannels/p.inChannels==1?d=new JS(p):d=new YS(p),n.runWebGLProgram(d,[r,s],"float32")}var nJ={kernelName:Gs,backendName:"webgl",kernelFunc:tJ},aJ=class{constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;let t=e.strideHeight,n=e.strideWidth,a=e.padInfo.top,r=e.padInfo.left,s=e.outChannels/e.inChannels;this.userCode=` void main() { ivec4 coords = getOutputCoords(); int wR = coords.x; int wC = coords.y; int d1 = coords.z; int dm = coords.w; - int d2 = d1 * ${channelMul} + dm; + int d2 = d1 * ${s} + dm; float dotProd = 0.0; // TO DO: Vec4 over the batch size - for (int b = 0; b < ${convInfo.batchSize}; b++) { - for (int yR = 0; yR < ${convInfo.outHeight}; yR++) { - int xR = wR + yR * ${strideHeight} - ${padTop}; + for (int b = 0; b < ${e.batchSize}; b++) { + for (int yR = 0; yR < ${e.outHeight}; yR++) { + int xR = wR + yR * ${t} - ${a}; - if (xR < 0 || xR >= ${convInfo.inHeight}) { + if (xR < 0 || xR >= ${e.inHeight}) { continue; } - for (int yC = 0; yC < ${convInfo.outWidth}; yC++) { - int xC = wC + yC * ${strideWidth} - ${padLeft}; + for (int yC = 0; yC < ${e.outWidth}; yC++) { + int xC = wC + yC * ${n} - ${r}; - if (xC < 0 || xC >= ${convInfo.inWidth}) { + if (xC < 0 || xC >= ${e.inWidth}) { continue; } @@ -2703,8 +2703,8 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(dotProd); } - `}},DepthwiseConv2DDerInputProgram=class{constructor(convInfo){this.variableNames=["dy","W"],this.outputShape=convInfo.inShape;let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,padTop=filterHeight-1-convInfo.padInfo.top,padLeft=filterWidth-1-convInfo.padInfo.left,channelMul=convInfo.outChannels/convInfo.inChannels;this.userCode=` - const ivec2 pads = ivec2(${padTop}, ${padLeft}); + `}},rJ=class{constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;let t=e.filterHeight,n=e.filterWidth,a=e.strideHeight,r=e.strideWidth,s=t-1-e.padInfo.top,i=n-1-e.padInfo.left,o=e.outChannels/e.inChannels;this.userCode=` + const ivec2 pads = ivec2(${s}, ${i}); void main() { ivec4 coords = getOutputCoords(); @@ -2716,30 +2716,30 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: float dotProd = 0.0; - for (int wR = 0; wR < ${filterHeight}; wR++) { - float dyR = float(dyRCorner + wR) / ${strideHeight}.0; + for (int wR = 0; wR < ${t}; wR++) { + float dyR = float(dyRCorner + wR) / ${a}.0; - if (dyR < 0.0 || dyR >= ${convInfo.outHeight}.0 || fract(dyR) > 0.0) { + if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || fract(dyR) > 0.0) { continue; } int idyR = int(dyR); - int wRPerm = ${filterHeight} - 1 - wR; + int wRPerm = ${t} - 1 - wR; - for (int wC = 0; wC < ${filterWidth}; wC++) { - float dyC = float(dyCCorner + wC) / ${strideWidth}.0; + for (int wC = 0; wC < ${n}; wC++) { + float dyC = float(dyCCorner + wC) / ${r}.0; - if (dyC < 0.0 || dyC >= ${convInfo.outWidth}.0 || + if (dyC < 0.0 || dyC >= ${e.outWidth}.0 || fract(dyC) > 0.0) { continue; } int idyC = int(dyC); - int wCPerm = ${filterWidth} - 1 - wC; + int wCPerm = ${n} - 1 - wC; // TO DO: Vec4 over the channelMul - for (int dm = 0; dm < ${channelMul}; dm++) { - int d2 = d1 * ${channelMul} + dm; + for (int dm = 0; dm < ${o}; dm++) { + int d2 = d1 * ${o} + dm; float xValue = getDy(batch, idyR, idyC, d2); float wValue = getW(wRPerm, wCPerm, d1, dm); dotProd += xValue * wValue; @@ -2748,15 +2748,15 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(dotProd); } - `}};function depthwiseConv2dNativeBackpropFilter3(args){let{inputs,backend:backend2,attrs}=args,{x,dy}=inputs,{strides,dilations,pad:pad3,dimRoundingMode,filterShape}=attrs,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filterShape,strides,dilations,pad3,dimRoundingMode,!0),program=new DepthwiseConv2DDerFilterProgram(convInfo);return backend2.runWebGLProgram(program,[x,dy],"float32")}var depthwiseConv2dNativeBackpropFilterConfig2={kernelName:DepthwiseConv2dNativeBackpropFilter,backendName:"webgl",kernelFunc:depthwiseConv2dNativeBackpropFilter3};function depthwiseConv2dNativeBackpropInput3(args){let{inputs,backend:backend2,attrs}=args,{dy,filter}=inputs,{strides,dilations,pad:pad3,dimRoundingMode,inputShape}=attrs,convInfo=backend_util_exports.computeConv2DInfo(inputShape,filter.shape,strides,dilations,pad3,dimRoundingMode,!0),program=new DepthwiseConv2DDerInputProgram(convInfo);return backend2.runWebGLProgram(program,[dy,filter],"float32")}var depthwiseConv2dNativeBackpropInputConfig2={kernelName:DepthwiseConv2dNativeBackpropInput,backendName:"webgl",kernelFunc:depthwiseConv2dNativeBackpropInput3},DiagProgram=class{constructor(size){this.variableNames=["X"],this.outputShape=[size,size],this.userCode=` + `}};function sJ(e){let{inputs:t,backend:n,attrs:a}=e,{x:r,dy:s}=t,{strides:i,dilations:o,pad:l,dimRoundingMode:c,filterShape:u}=a,p=_.computeConv2DInfo(r.shape,u,i,o,l,c,!0),d=new aJ(p);return n.runWebGLProgram(d,[r,s],"float32")}var iJ={kernelName:Kd,backendName:"webgl",kernelFunc:sJ};function oJ(e){let{inputs:t,backend:n,attrs:a}=e,{dy:r,filter:s}=t,{strides:i,dilations:o,pad:l,dimRoundingMode:c,inputShape:u}=a,p=_.computeConv2DInfo(u,s.shape,i,o,l,c,!0),d=new rJ(p);return n.runWebGLProgram(d,[r,s],"float32")}var lJ={kernelName:Xd,backendName:"webgl",kernelFunc:oJ},uJ=class{constructor(e){this.variableNames=["X"],this.outputShape=[e,e],this.userCode=` void main() { ivec2 coords = getOutputCoords(); float val = coords[0] == coords[1] ? getX(coords[0]) : 0.0; setOutput(val); } - `}};function diag3(args){let{inputs,backend:backend2}=args,{x}=inputs,outShape=[...x.shape,...x.shape],xSize=util_exports.sizeFromShape(x.shape),flat=reshape4({inputs:{x},backend:backend2,attrs:{shape:[xSize]}}),program=new DiagProgram(xSize),res=backend2.runWebGLProgram(program,[flat],flat.dtype),out=reshape4({inputs:{x:res},backend:backend2,attrs:{shape:outShape}});return backend2.disposeIntermediateTensorInfo(flat),backend2.disposeIntermediateTensorInfo(res),out}var diagConfig2={kernelName:Diag,backendName:"webgl",kernelFunc:diag3},Dilation2DProgram=class{constructor(convInfo){this.variableNames=["x","W"],this.outputShape=convInfo.outShape;let{inHeight,inWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth}=convInfo,{top:padTop,left:padLeft}=padInfo;this.userCode=` - const ivec2 strides = ivec2(${strideHeight}, ${strideWidth}); - const ivec2 pads = ivec2(${padTop}, ${padLeft}); + `}};function cJ(e){let{inputs:t,backend:n}=e,{x:a}=t,r=[...a.shape,...a.shape],s=k.sizeFromShape(a.shape),i=xe({inputs:{x:a},backend:n,attrs:{shape:[s]}}),o=new uJ(s),l=n.runWebGLProgram(o,[i],i.dtype),c=xe({inputs:{x:l},backend:n,attrs:{shape:r}});return n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(l),c}var pJ={kernelName:Yd,backendName:"webgl",kernelFunc:cJ},dJ=class{constructor(e){this.variableNames=["x","W"],this.outputShape=e.outShape;let{inHeight:t,inWidth:n,padInfo:a,strideHeight:r,strideWidth:s,filterHeight:i,filterWidth:o,dilationHeight:l,dilationWidth:c}=e,{top:u,left:p}=a;this.userCode=` + const ivec2 strides = ivec2(${r}, ${s}); + const ivec2 pads = ivec2(${u}, ${p}); const float neg_infinity = -3.4e38; void main() { @@ -2769,14 +2769,14 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: int wBeg = outTopLeftCorner.y; float curVal = neg_infinity; - for (int h = 0; h < ${filterHeight}; h++) { - int hIn = hBeg + h * ${dilationHeight}; + for (int h = 0; h < ${i}; h++) { + int hIn = hBeg + h * ${l}; - if (hIn >= 0 && hIn < ${inHeight}) { - for (int w = 0; w < ${filterWidth}; w++) { - int wIn = wBeg + w * ${dilationWidth}; + if (hIn >= 0 && hIn < ${t}) { + for (int w = 0; w < ${o}; w++) { + int wIn = wBeg + w * ${c}; - if (wIn >= 0 && wIn < ${inWidth}) { + if (wIn >= 0 && wIn < ${n}) { float xVal = getX(batch, hIn, wIn, d1); float wVal = getW(h, w, d1); @@ -2792,7 +2792,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: float result = curVal; setOutput(result); } - `}};function dilation2D(args){let{inputs,backend:backend2,attrs}=args,{x,filter}=inputs,{strides,pad:pad3,dilations}=attrs,convInfo=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad3,"NHWC",dilations),out,program=new Dilation2DProgram(convInfo);out=backend2.runWebGLProgram(program,[x,filter],"float32");let outReshaped=reshape4({inputs:{x:out},backend:backend2,attrs:{shape:convInfo.outShape}});return backend2.disposeIntermediateTensorInfo(out),outReshaped}var dilation2DConfig={kernelName:Dilation2D,backendName:"webgl",kernelFunc:dilation2D},ELU4="return (x >= 0.0) ? x : (exp(x) - 1.0);",ELU_PACKED=` + `}};function hJ(e){let{inputs:t,backend:n,attrs:a}=e,{x:r,filter:s}=t,{strides:i,pad:o,dilations:l}=a,c=_.computeDilation2DInfo(r.shape,s.shape,i,o,"NHWC",l),u,p=new dJ(c);u=n.runWebGLProgram(p,[r,s],"float32");let d=xe({inputs:{x:u},backend:n,attrs:{shape:c.outShape}});return n.disposeIntermediateTensorInfo(u),d}var mJ={kernelName:yc,backendName:"webgl",kernelFunc:hJ},fJ="return (x >= 0.0) ? x : (exp(x) - 1.0);",gJ=` vec4 result; result.r = (x.r >= 0.0) ? x.r : (exp(x.r) - 1.0); @@ -2801,41 +2801,41 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: result.a = (x.a >= 0.0) ? x.a : (exp(x.a) - 1.0); return result; -`,elu5=unaryKernelFunc2({opSnippet:ELU4,packedOpSnippet:ELU_PACKED}),eluConfig2={kernelName:Elu,backendName:"webgl",kernelFunc:elu5},ELU_DER="return (b >= 1.0) ? a : a * (b + 1.0);",ELU_DER_PACKED=` +`,yJ=Ye({opSnippet:fJ,packedOpSnippet:gJ}),bJ={kernelName:Jo,backendName:"webgl",kernelFunc:yJ},xJ="return (b >= 1.0) ? a : a * (b + 1.0);",vJ=` vec4 bGTEZero = vec4(greaterThanEqual(b, vec4(0.))); return (bGTEZero * a) + ((vec4(1.0) - bGTEZero) * (a * (b + vec4(1.0)))); -`,eluGrad2=args=>{let{inputs,backend:backend2}=args,{dy,y}=inputs,program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(ELU_DER_PACKED,dy.shape,y.shape):new BinaryOpProgram(ELU_DER,dy.shape,y.shape);return backend2.runWebGLProgram(program,[dy,y],dy.dtype)},eluGradConfig3={kernelName:EluGrad,backendName:"webgl",kernelFunc:eluGrad2},PACKED_EQUAL=` +`,wJ=e=>{let{inputs:t,backend:n}=e,{dy:a,y:r}=t,s=ee().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Cp(vJ,a.shape,r.shape):new Tu(xJ,a.shape,r.shape);return n.runWebGLProgram(s,[a,r],a.dtype)},kJ={kernelName:Qd,backendName:"webgl",kernelFunc:wJ},IJ=` return vec4(equal(a, b)); -`,EQUAL="return float(a == b);",equal3=binaryKernelFunc2({opSnippet:EQUAL,packedOpSnippet:PACKED_EQUAL,dtype:"bool"}),equalConfig2={kernelName:Equal,backendName:"webgl",kernelFunc:equal3},ERF=` +`,NJ="return float(a == b);",TJ=on({opSnippet:NJ,packedOpSnippet:IJ,dtype:"bool"}),SJ={kernelName:Qo,backendName:"webgl",kernelFunc:TJ},CJ=` // Error function is calculated approximately with elementary function. // See "Handbook of Mathematical Functions with Formulas, // Graphs, and Mathematical Tables", Abramowitz and Stegun. - float p = ${backend_util_exports.ERF_P}; - float a1 = ${backend_util_exports.ERF_A1}; - float a2 = ${backend_util_exports.ERF_A2}; - float a3 = ${backend_util_exports.ERF_A3}; - float a4 = ${backend_util_exports.ERF_A4}; - float a5 = ${backend_util_exports.ERF_A5}; + float p = ${_.ERF_P}; + float a1 = ${_.ERF_A1}; + float a2 = ${_.ERF_A2}; + float a3 = ${_.ERF_A3}; + float a4 = ${_.ERF_A4}; + float a5 = ${_.ERF_A5}; float sign = sign(x); x = abs(x); float t = 1.0 / (1.0 + p * x); return sign * (1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*exp(-x*x)); -`,erf3=unaryKernelFunc2({opSnippet:ERF}),erfConfig2={kernelName:Erf,backendName:"webgl",kernelFunc:erf3},EXP="return exp(x);",exp3=unaryKernelFunc2({opSnippet:EXP,packedOpSnippet:EXP,cpuKernelImpl:expImplCPU}),expConfig2={kernelName:Exp,backendName:"webgl",kernelFunc:exp3};function expandDims4(args){let{inputs,attrs,backend:backend2}=args,{dim}=attrs,{input:input2}=inputs,inputRank=input2.shape.length,newShape=input2.shape.slice(),$dim=dim;return dim<0&&(util_exports.assert(-(inputRank+1)<=dim,()=>`Axis must be in the interval [${-(inputRank+1)}, ${inputRank}]`),$dim=inputRank+dim+1),newShape.splice($dim,0,1),reshape4({inputs:{x:input2},backend:backend2,attrs:{shape:newShape}})}var expandDimsConfig2={kernelName:ExpandDims,backendName:"webgl",kernelFunc:expandDims4},EXPM1="return exp(x) - 1.0;",expm13=unaryKernelFunc2({opSnippet:EXPM1,packedOpSnippet:EXPM1,cpuKernelImpl:expm1ImplCPU}),expm1Config2={kernelName:Expm1,backendName:"webgl",kernelFunc:expm13},FFTProgram=class{constructor(component,inputShape,inverse){this.variableNames=["real","imag"];let innerDim=inputShape[1];this.outputShape=inputShape;let exponentMultiplierSnippet=inverse?`2.0 * ${Math.PI}`:`-2.0 * ${Math.PI}`,resultDenominator=inverse?`${innerDim}.0`:"1.0",opString;if(component==="real")opString="return real * expR - imag * expI;";else if(component==="imag")opString="return real * expI + imag * expR;";else throw new Error(`FFT component must be either "real" or "imag", got ${component}.`);this.userCode=` - const float exponentMultiplier = ${exponentMultiplierSnippet}; +`,EJ=Ye({opSnippet:CJ}),_J={kernelName:Zo,backendName:"webgl",kernelFunc:EJ},ZS="return exp(x);",QS=Ye({opSnippet:ZS,packedOpSnippet:ZS,cpuKernelImpl:CK}),FJ={kernelName:js,backendName:"webgl",kernelFunc:QS};function tw(e){let{inputs:t,attrs:n,backend:a}=e,{dim:r}=n,{input:s}=t,i=s.shape.length,o=s.shape.slice(),l=r;return r<0&&(k.assert(-(i+1)<=r,()=>`Axis must be in the interval [${-(i+1)}, ${i}]`),l=i+r+1),o.splice(l,0,1),xe({inputs:{x:s},backend:a,attrs:{shape:o}})}var AJ={kernelName:el,backendName:"webgl",kernelFunc:tw},e2="return exp(x) - 1.0;",$J=Ye({opSnippet:e2,packedOpSnippet:e2,cpuKernelImpl:EK}),DJ={kernelName:tl,backendName:"webgl",kernelFunc:$J},t2=class{constructor(e,t,n){this.variableNames=["real","imag"];let a=t[1];this.outputShape=t;let r=n?`2.0 * ${Math.PI}`:`-2.0 * ${Math.PI}`,s=n?`${a}.0`:"1.0",i;if(e==="real")i="return real * expR - imag * expI;";else if(e==="imag")i="return real * expI + imag * expR;";else throw new Error(`FFT component must be either "real" or "imag", got ${e}.`);this.userCode=` + const float exponentMultiplier = ${r}; float unaryOpComplex(float real, float expR, float imag, float expI) { - ${opString} + ${i} } float mulMatDFT(int batch, int index) { - float indexRatio = float(index) / float(${innerDim}); + float indexRatio = float(index) / float(${a}); float exponentMultiplierTimesIndexRatio = exponentMultiplier * indexRatio; float result = 0.0; - for (int i = 0; i < ${innerDim}; i++) { + for (int i = 0; i < ${a}; i++) { // x = (-2|2 * PI / N) * index * i; float x = exponentMultiplierTimesIndexRatio * float(i); float expR = cos(x); @@ -2844,7 +2844,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: float imag = getImag(batch, i); result += - unaryOpComplex(real, expR, imag, expI) / ${resultDenominator}; + unaryOpComplex(real, expR, imag, expI) / ${s}; } return result; @@ -2854,27 +2854,27 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: ivec2 coords = getOutputCoords(); setOutput(mulMatDFT(coords[0], coords[1])); } - `}};function fftImpl2(x,inverse,backend2){let xData=backend2.texData.get(x.dataId),inputSize=util_exports.sizeFromShape(x.shape),innerDimensionSize=x.shape[x.shape.length-1],batch=inputSize/innerDimensionSize,xShape=reshape4({inputs:{x},backend:backend2,attrs:{shape:[batch,innerDimensionSize]}}).shape,realProgram=new FFTProgram("real",xShape,inverse),imagProgram=new FFTProgram("imag",xShape,inverse),inputs=[{dataId:xData.complexTensorInfos.real.dataId,dtype:xData.complexTensorInfos.real.dtype,shape:xShape},{dataId:xData.complexTensorInfos.imag.dataId,dtype:xData.complexTensorInfos.imag.dtype,shape:xShape}],realPart=backend2.runWebGLProgram(realProgram,inputs,"float32"),imagPart=backend2.runWebGLProgram(imagProgram,inputs,"float32"),complexOutput=complex3({inputs:{real:realPart,imag:imagPart},backend:backend2});backend2.disposeIntermediateTensorInfo(realPart),backend2.disposeIntermediateTensorInfo(imagPart);let complexOutputReshaped=reshape4({inputs:{x:complexOutput},backend:backend2,attrs:{shape:x.shape}});return backend2.disposeIntermediateTensorInfo(complexOutputReshaped),complexOutputReshaped}function fft3(args){let{inputs,backend:backend2}=args,{input:input2}=inputs;return fftImpl2(input2,!1,backend2)}var fftConfig2={kernelName:FFT,backendName:"webgl",kernelFunc:fft3},FillProgram=class{constructor(shape,value){this.outputShape=[],this.variableNames=["x"],this.outputShape=shape,this.userCode=` + `}};function n2(e,t,n){let a=n.texData.get(e.dataId),r=k.sizeFromShape(e.shape),s=e.shape[e.shape.length-1],i=r/s,o=xe({inputs:{x:e},backend:n,attrs:{shape:[i,s]}}).shape,l=new t2("real",o,t),c=new t2("imag",o,t),u=[{dataId:a.complexTensorInfos.real.dataId,dtype:a.complexTensorInfos.real.dtype,shape:o},{dataId:a.complexTensorInfos.imag.dataId,dtype:a.complexTensorInfos.imag.dtype,shape:o}],p=n.runWebGLProgram(l,u,"float32"),d=n.runWebGLProgram(c,u,"float32"),h=bs({inputs:{real:p,imag:d},backend:n});n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(d);let m=xe({inputs:{x:h},backend:n,attrs:{shape:e.shape}});return n.disposeIntermediateTensorInfo(m),m}function MJ(e){let{inputs:t,backend:n}=e,{input:a}=t;return n2(a,!1,n)}var RJ={kernelName:eh,backendName:"webgl",kernelFunc:MJ},PJ=class{constructor(e,t){this.outputShape=[],this.variableNames=["x"],this.outputShape=e,this.userCode=` uniform float value; void main() { // Input can be obtained from uniform value. setOutput(value); } - `}getCustomSetupFunc(value){return(gpgpu,webGLProgram)=>{this.valueLoc==null&&(this.valueLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"value")),gpgpu.gl.uniform1f(this.valueLoc,value)}}};function fill3(args){let{backend:backend2,attrs}=args,{shape,value}=attrs,{dtype}=attrs;if(dtype=dtype||util_exports.inferDtype(value),dtype==="string"){let values=util_exports.getArrayFromDType(dtype,util_exports.sizeFromShape(shape));return values.fill(value),backend2.makeTensorInfo(shape,dtype,values)}else{let program=new FillProgram(shape,value),customSetup=program.getCustomSetupFunc(value);return backend2.runWebGLProgram(program,[],dtype,customSetup)}}var fillConfig2={kernelName:Fill,backendName:"webgl",kernelFunc:fill3},FlipLeftRightProgram=class{constructor(imageShape){this.variableNames=["Image"],this.outputShape=[];let imageWidth=imageShape[2];this.outputShape=imageShape,this.userCode=` + `}getCustomSetupFunc(e){return(t,n)=>{this.valueLoc==null&&(this.valueLoc=t.getUniformLocationNoThrow(n,"value")),t.gl.uniform1f(this.valueLoc,e)}}};function nw(e){let{backend:t,attrs:n}=e,{shape:a,value:r}=n,{dtype:s}=n;if(s=s||k.inferDtype(r),s==="string"){let i=k.getArrayFromDType(s,k.sizeFromShape(a));return i.fill(r),t.makeTensorInfo(a,s,i)}else{let i=new PJ(a,r),o=i.getCustomSetupFunc(r);return t.runWebGLProgram(i,[],s,o)}}var OJ={kernelName:bc,backendName:"webgl",kernelFunc:nw},LJ=class{constructor(e){this.variableNames=["Image"],this.outputShape=[];let t=e[2];this.outputShape=e,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int x = coords[2]; - int coordX = ${imageWidth} - x; + int coordX = ${t} - x; float outputValue; - if(coordX >= 0 && coordX < ${imageWidth}) { + if(coordX >= 0 && coordX < ${t}) { outputValue = getImage(coords[0], coords[1], coordX, coords[3]); } else { outputValue = getImage(coords[0], coords[1], coords[2], coords[3]); } setOutput(outputValue); } - `}},flipLeftRightConfig2={kernelName:FlipLeftRight,backendName:"webgl",kernelFunc:({inputs,backend:backend2})=>{let{image:image3}=inputs,webglBackend=backend2,program=new FlipLeftRightProgram(image3.shape);return webglBackend.runWebGLProgram(program,[image3],image3.dtype)}},FLOOR="return floor(x);",floor3=unaryKernelFunc2({opSnippet:FLOOR,packedOpSnippet:FLOOR,cpuKernelImpl:floorImplCPU}),floorConfig2={kernelName:Floor,backendName:"webgl",kernelFunc:floor3},INT_DIV=` + `}},zJ={kernelName:nl,backendName:"webgl",kernelFunc:({inputs:e,backend:t})=>{let{image:n}=e,a=t,r=new LJ(n.shape);return a.runWebGLProgram(r,[n],n.dtype)}},a2="return floor(x);",BJ=Ye({opSnippet:a2,packedOpSnippet:a2,cpuKernelImpl:_K}),WJ={kernelName:qs,backendName:"webgl",kernelFunc:BJ},VJ=` float s = sign(a) * sign(b); int ia = round(a); int ib = round(b); @@ -2884,7 +2884,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } else { return NAN; } -`,INT_DIV_PACKED=` +`,UJ=` ivec4 ia = round(a); ivec4 ib = round(b); bvec4 cond = notEqual(ib, ivec4(0)); @@ -2905,15 +2905,15 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: result[3] = idiv(ia[3], ib[3], s[3]); } return vec4(result); -`,floorDiv3=binaryKernelFunc2({opSnippet:INT_DIV,packedOpSnippet:INT_DIV_PACKED,dtype:"int32"}),floorDivConfig2={kernelName:FloorDiv,backendName:"webgl",kernelFunc:floorDiv3},FromPixelsProgram=class{constructor(outputShape){this.variableNames=["A"];let glsl=getGlslDifferences(),[height,width]=outputShape;this.outputShape=outputShape,this.userCode=` +`,GJ=on({opSnippet:VJ,packedOpSnippet:UJ,dtype:"int32"}),HJ={kernelName:Ks,backendName:"webgl",kernelFunc:GJ},jJ=class{constructor(e){this.variableNames=["A"];let t=gn(),[n,a]=e;this.outputShape=e,this.userCode=` void main() { ivec3 coords = getOutputCoords(); int texR = coords[0]; int texC = coords[1]; int depth = coords[2]; - vec2 uv = (vec2(texC, texR) + halfCR) / vec2(${width}.0, ${height}.0); + vec2 uv = (vec2(texC, texR) + halfCR) / vec2(${a}.0, ${n}.0); - vec4 values = ${glsl.texture2D}(A, uv); + vec4 values = ${t.texture2D}(A, uv); float value; if (depth == 0) { value = values.r; @@ -2927,7 +2927,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: setOutput(floor(value * 255.0 + 0.5)); } - `}},FromPixelsPackedProgram=class{constructor(outputShape){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;let glsl=getGlslDifferences(),[height,width]=outputShape;this.outputShape=outputShape,this.userCode=` + `}},qJ=class{constructor(e){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;let t=gn(),[n,a]=e;this.outputShape=e,this.userCode=` void main() { ivec3 coords = getOutputCoords(); int texR = coords[0]; @@ -2942,8 +2942,8 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: depth = coords[2] + col; vec2 uv = (vec2(texC, texR) + halfCR) / - vec2(${width}.0, ${height}.0); - vec4 values = ${glsl.texture2D}(A, uv); + vec2(${a}.0, ${n}.0); + vec4 values = ${t.texture2D}(A, uv); float value; if (depth == 0) { value = values.r; @@ -2959,34 +2959,34 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } } - ${glsl.output} = result; + ${t.output} = result; } - `}},fromPixelsConfig={kernelName:FromPixels,backendName:"webgl",kernelFunc:fromPixels2},fromPixels2DContext2;function fromPixels2(args){let{inputs,backend:backend2,attrs}=args,{pixels}=inputs,{numChannels}=attrs,isVideo=typeof HTMLVideoElement!="undefined"&&pixels instanceof HTMLVideoElement,isImage=typeof HTMLImageElement!="undefined"&&pixels instanceof HTMLImageElement,isImageBitmap=typeof ImageBitmap!="undefined"&&pixels instanceof ImageBitmap,[width,height]=isVideo?[pixels.videoWidth,pixels.videoHeight]:[pixels.width,pixels.height],texShape=[height,width],outShape=[height,width,numChannels];(isImage||isVideo||isImageBitmap)&&(fromPixels2DContext2==null&&(fromPixels2DContext2=document.createElement("canvas").getContext("2d")),fromPixels2DContext2.canvas.width=width,fromPixels2DContext2.canvas.height=height,fromPixels2DContext2.drawImage(pixels,0,0,width,height),pixels=fromPixels2DContext2.canvas);let tempPixelHandle=backend2.makeTensorInfo(texShape,"int32");backend2.texData.get(tempPixelHandle.dataId).usage=TextureUsage.PIXELS,backend2.gpgpu.uploadPixelDataToTexture(backend2.getTexture(tempPixelHandle.dataId),pixels);let program=env().getBool("WEBGL_PACK")?new FromPixelsPackedProgram(outShape):new FromPixelsProgram(outShape),res=backend2.runWebGLProgram(program,[tempPixelHandle],"int32");return backend2.disposeData(tempPixelHandle.dataId),res}function fusedConv2d(args){let{inputs,backend:backend2,attrs}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad3,dataFormat,dilations,dimRoundingMode,activation:activation2,leakyreluAlpha}=attrs,$dataFormat=backend_util_exports.convertConv2DDataFormat(dataFormat),convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad3,dimRoundingMode,!1,$dataFormat),out,intermediates=[];if(convInfo.filterHeight===1&&convInfo.filterWidth===1&&convInfo.dilationHeight===1&&convInfo.dilationWidth===1&&convInfo.strideHeight===1&&convInfo.strideWidth===1&&(convInfo.padInfo.type==="SAME"||convInfo.padInfo.type==="VALID"))out=conv2dByMatMul({x,filter,convInfo,backend:backend2,bias,activation:activation2,preluActivationWeights,leakyreluAlpha});else if(env().getBool("WEBGL_CONV_IM2COL")&&x.shape[0]===1)out=conv2dWithIm2Row({x,filter,convInfo,backend:backend2,bias,activation:activation2,preluActivationWeights,leakyreluAlpha});else{let hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,hasLeakyreluAlpha=activation2==="leakyrelu",fusedActivation=activation2?mapActivationToShaderProgram(activation2,!1):null,program=new Conv2DProgram(convInfo,hasBias,fusedActivation,hasPreluActivationWeights,hasLeakyreluAlpha),inputs2=[x,filter];if(bias&&inputs2.push(bias),preluActivationWeights&&inputs2.push(preluActivationWeights),hasLeakyreluAlpha){let $leakyreluAlpha=backend2.makeTensorInfo([],"float32",util_exports.createScalarValue(leakyreluAlpha,"float32"));inputs2.push($leakyreluAlpha),intermediates.push($leakyreluAlpha)}out=backend2.runWebGLProgram(program,inputs2,"float32")}let outReshaped=reshape4({inputs:{x:out},backend:backend2,attrs:{shape:convInfo.outShape}});return intermediates.push(out),intermediates.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),outReshaped}var fusedConv2DConfig2={kernelName:FusedConv2D,backendName:"webgl",kernelFunc:fusedConv2d};function fusedDepthwiseConv2D2(args){let{inputs,backend:backend2,attrs}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad3,dilations,dimRoundingMode,activation:activation2,leakyreluAlpha}=attrs,intermediates=[],$dilations=dilations;$dilations==null&&($dilations=[1,1]),util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,$dilations),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${$dilations}'`);let convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,$dilations,pad3,dimRoundingMode,!0),shouldPackDepthwiseConv=env().getBool("WEBGL_PACK_DEPTHWISECONV")&&convInfo.strideWidth<=2&&convInfo.outChannels/convInfo.inChannels==1,fusedActivation=activation2?mapActivationToShaderProgram(activation2,shouldPackDepthwiseConv):null,programInputs=[x,filter],hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,hasLeakyreluAlpha=activation2==="leakyrelu";if(hasBias&&programInputs.push(bias),hasPreluActivationWeights&&programInputs.push(preluActivationWeights),hasLeakyreluAlpha){let $leakyreluAlpha=backend2.makeTensorInfo([],"float32",util_exports.createScalarValue(leakyreluAlpha,"float32"));programInputs.push($leakyreluAlpha),intermediates.push($leakyreluAlpha)}let program;shouldPackDepthwiseConv?program=new DepthwiseConvPacked2DProgram(convInfo,hasBias,fusedActivation,hasPreluActivationWeights,hasLeakyreluAlpha):program=new DepthwiseConv2DProgram(convInfo,hasBias,fusedActivation,hasPreluActivationWeights,hasLeakyreluAlpha);let result=backend2.runWebGLProgram(program,programInputs,"float32");return intermediates.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),result}var fusedDepthwiseConv2DConfig2={kernelName:FusedDepthwiseConv2D,backendName:"webgl",kernelFunc:fusedDepthwiseConv2D2},GatherNDProgram=class{constructor(sliceDim,strides,shape){this.sliceDim=sliceDim,this.strides=strides,this.variableNames=["x","indices"],this.outputShape=shape;let stridesType=getCoordsDataType(strides.length),dtype=getCoordsDataType(shape.length),strideString=this.sliceDim>1?"strides[j]":"strides";this.userCode=` - ${stridesType} strides = ${stridesType}(${this.strides}); + `}},XJ={kernelName:mh,backendName:"webgl",kernelFunc:KJ},Cu;function KJ(e){let{inputs:t,backend:n,attrs:a}=e,{pixels:r}=t,{numChannels:s}=a,i=typeof HTMLVideoElement!="undefined"&&r instanceof HTMLVideoElement,o=typeof HTMLImageElement!="undefined"&&r instanceof HTMLImageElement,l=typeof ImageBitmap!="undefined"&&r instanceof ImageBitmap,[c,u]=i?[r.videoWidth,r.videoHeight]:[r.width,r.height],p=[u,c],d=[u,c,s];(o||i||l)&&(Cu==null&&(Cu=document.createElement("canvas").getContext("2d")),Cu.canvas.width=c,Cu.canvas.height=u,Cu.drawImage(r,0,0,c,u),r=Cu.canvas);let h=n.makeTensorInfo(p,"int32");n.texData.get(h.dataId).usage=ra.PIXELS,n.gpgpu.uploadPixelDataToTexture(n.getTexture(h.dataId),r);let m=ee().getBool("WEBGL_PACK")?new qJ(d):new jJ(d),f=n.runWebGLProgram(m,[h],"int32");return n.disposeData(h.dataId),f}function YJ(e){let{inputs:t,backend:n,attrs:a}=e,{x:r,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:c,dataFormat:u,dilations:p,dimRoundingMode:d,activation:h,leakyreluAlpha:m}=a,f=_.convertConv2DDataFormat(u),g=_.computeConv2DInfo(r.shape,s.shape,l,p,c,d,!1,f),y,b=[];if(g.filterHeight===1&&g.filterWidth===1&&g.dilationHeight===1&&g.dilationWidth===1&&g.strideHeight===1&&g.strideWidth===1&&(g.padInfo.type==="SAME"||g.padInfo.type==="VALID"))y=HS({x:r,filter:s,convInfo:g,backend:n,bias:i,activation:h,preluActivationWeights:o,leakyreluAlpha:m});else if(ee().getBool("WEBGL_CONV_IM2COL")&&r.shape[0]===1)y=jS({x:r,filter:s,convInfo:g,backend:n,bias:i,activation:h,preluActivationWeights:o,leakyreluAlpha:m});else{let v=i!=null,N=o!=null,T=h==="leakyrelu",E=h?of(h,!1):null,A=new GS(g,v,E,N,T),$=[r,s];if(i&&$.push(i),o&&$.push(o),T){let O=n.makeTensorInfo([],"float32",k.createScalarValue(m,"float32"));$.push(O),b.push(O)}y=n.runWebGLProgram(A,$,"float32")}let x=xe({inputs:{x:y},backend:n,attrs:{shape:g.outShape}});return b.push(y),b.forEach(v=>n.disposeIntermediateTensorInfo(v)),x}var JJ={kernelName:Si,backendName:"webgl",kernelFunc:YJ};function ZJ(e){let{inputs:t,backend:n,attrs:a}=e,{x:r,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:c,dilations:u,dimRoundingMode:p,activation:d,leakyreluAlpha:h}=a,m=[],f=u;f==null&&(f=[1,1]),k.assert(_.eitherStridesOrDilationsAreOne(l,f),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${l} and dilations '${f}'`);let g=_.computeConv2DInfo(r.shape,s.shape,l,f,c,p,!0),y=ee().getBool("WEBGL_PACK_DEPTHWISECONV")&&g.strideWidth<=2&&g.outChannels/g.inChannels==1,b=d?of(d,y):null,x=[r,s],v=i!=null,N=o!=null,T=d==="leakyrelu";if(v&&x.push(i),N&&x.push(o),T){let $=n.makeTensorInfo([],"float32",k.createScalarValue(h,"float32"));x.push($),m.push($)}let E;y?E=new JS(g,v,b,N,T):E=new YS(g,v,b,N,T);let A=n.runWebGLProgram(E,x,"float32");return m.forEach($=>n.disposeIntermediateTensorInfo($)),A}var QJ={kernelName:Ci,backendName:"webgl",kernelFunc:ZJ},eZ=class{constructor(e,t,n){this.sliceDim=e,this.strides=t,this.variableNames=["x","indices"],this.outputShape=n;let a=mt(t.length),r=mt(n.length),s=this.sliceDim>1?"strides[j]":"strides";this.userCode=` + ${a} strides = ${a}(${this.strides}); void main() { - ${dtype} coords = getOutputCoords(); + ${r} coords = getOutputCoords(); int flattenIndex = 0; for (int j = 0; j < ${this.sliceDim}; j++) { int index = round(getIndices(coords[0], j)); - flattenIndex += index * ${strideString}; + flattenIndex += index * ${s}; } setOutput(getX(flattenIndex, coords[1])); } - `}};function gatherNd2(args){let{inputs,backend:backend2}=args,{params,indices}=inputs,indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],[resultShape,numSlices,sliceSize,strides]=backend_util_exports.prepareAndValidate(params,indices),flattenIndices=reshape4({inputs:{x:indices},backend:backend2,attrs:{shape:[numSlices,sliceRank]}}),flattenX=reshape4({inputs:{x:params},backend:backend2,attrs:{shape:[util_exports.sizeFromShape(params.shape)/sliceSize,sliceSize]}}),program=new GatherNDProgram(sliceRank,strides,[numSlices,sliceSize]),res=backend2.runWebGLProgram(program,[flattenX,flattenIndices],flattenX.dtype),reshaped=reshape4({inputs:{x:res},backend:backend2,attrs:{shape:resultShape}});return backend2.disposeIntermediateTensorInfo(flattenIndices),backend2.disposeIntermediateTensorInfo(flattenX),backend2.disposeIntermediateTensorInfo(res),reshaped}var gatherNdConfig2={kernelName:GatherNd,backendName:"webgl",kernelFunc:gatherNd2},GatherProgram=class{constructor(aShape,outputShape){this.variableNames=["A","indices"],this.outputShape=outputShape,this.rank=outputShape.length;let dtype=getCoordsDataType(this.rank),sourceCoords=getSourceCoords2(aShape,2);this.userCode=` + `}};function tZ(e){let{inputs:t,backend:n}=e,{params:a,indices:r}=t,s=r.shape,i=s[s.length-1],[o,l,c,u]=_.prepareAndValidate(a,r),p=xe({inputs:{x:r},backend:n,attrs:{shape:[l,i]}}),d=xe({inputs:{x:a},backend:n,attrs:{shape:[k.sizeFromShape(a.shape)/c,c]}}),h=new eZ(i,u,[l,c]),m=n.runWebGLProgram(h,[d,p],d.dtype),f=xe({inputs:{x:m},backend:n,attrs:{shape:o}});return n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(m),f}var nZ={kernelName:rl,backendName:"webgl",kernelFunc:tZ},rZ=class{constructor(e,t){this.variableNames=["A","indices"],this.outputShape=t,this.rank=t.length;let n=mt(this.rank),a=aZ(e,2);this.userCode=` void main() { - ${dtype} resRC = getOutputCoords(); - setOutput(getA(${sourceCoords})); + ${n} resRC = getOutputCoords(); + setOutput(getA(${a})); } - `}};function getSourceCoords2(aShape,axis){let currentCoords=["resRC.x","resRC.y","resRC.z","resRC.w"],sourceCoords=[];for(let i=0;ibackend2.disposeIntermediateTensorInfo(t)),backend2.makeTensorInfo(shapeInfo.outputShape,outBuf.dtype,outBuf.values)}let program=new GatherProgram(flattenX.shape,flattenOutputShape),res=backend2.runWebGLProgram(program,[flattenX,flattenIndex],flattenX.dtype);toDispose.push(res);let reshaped=reshape4({inputs:{x:res},backend:backend2,attrs:{shape:shapeInfo.outputShape}});return toDispose.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),reshaped}var gatherV2Config2={kernelName:GatherV2,backendName:"webgl",kernelFunc:gatherV22},GREATER="return float(a > b);",GREATER_PACKED=` + `}};function aZ(e,t){let n=["resRC.x","resRC.y","resRC.z","resRC.w"],a=[];for(let r=0;rn.disposeIntermediateTensorInfo(N)),n.makeTensorInfo(c.outputShape,v.dtype,v.values)}let f=new rZ(d.shape,m),g=n.runWebGLProgram(f,[d,h],d.dtype);p.push(g);let y=xe({inputs:{x:g},backend:n,attrs:{shape:c.outputShape}});return p.forEach(b=>n.disposeIntermediateTensorInfo(b)),y}var iZ={kernelName:al,backendName:"webgl",kernelFunc:sZ},oZ="return float(a > b);",lZ=` return vec4(greaterThan(a, b)); -`,greater4=binaryKernelFunc2({opSnippet:GREATER,packedOpSnippet:GREATER_PACKED,cpuKernelImpl:greaterImplCPU,dtype:"bool"}),greaterConfig2={kernelName:Greater,backendName:"webgl",kernelFunc:greater4},GREATER_EQUAL="return float(a >= b);",GREATER_EQUAL_PACKED=` +`,uZ=on({opSnippet:oZ,packedOpSnippet:lZ,cpuKernelImpl:AK,dtype:"bool"}),cZ={kernelName:sl,backendName:"webgl",kernelFunc:uZ},pZ="return float(a >= b);",dZ=` return vec4(greaterThanEqual(a, b)); -`,greaterEqual3=binaryKernelFunc2({opSnippet:GREATER_EQUAL,packedOpSnippet:GREATER_EQUAL_PACKED,dtype:"bool"}),greaterEqualConfig2={kernelName:GreaterEqual,backendName:"webgl",kernelFunc:greaterEqual3};function ifft3(args){let{inputs,backend:backend2}=args,{input:input2}=inputs;return fftImpl2(input2,!0,backend2)}var ifftConfig2={kernelName:IFFT,backendName:"webgl",kernelFunc:ifft3},IS_FINITE="return float(!isnan(x) && !isinf(x));",isFinite4=unaryKernelFunc2({opSnippet:IS_FINITE,dtype:"bool"}),isFiniteConfig2={kernelName:IsFinite,backendName:"webgl",kernelFunc:isFinite4},IS_INF="return float(isinf(x));",isInf3=unaryKernelFunc2({opSnippet:IS_INF,dtype:"bool"}),isInfConfig2={kernelName:IsInf,backendName:"webgl",kernelFunc:isInf3},IS_NAN="return float(isnan(x));",isNaN4=unaryKernelFunc2({opSnippet:IS_NAN,dtype:"bool"}),isNaNConfig2={kernelName:IsNan,backendName:"webgl",kernelFunc:isNaN4},LESS="return float(a < b);",LESS_PACKED=` +`,hZ=on({opSnippet:pZ,packedOpSnippet:dZ,dtype:"bool"}),mZ={kernelName:Ys,backendName:"webgl",kernelFunc:hZ};function fZ(e){let{inputs:t,backend:n}=e,{input:a}=t;return n2(a,!0,n)}var gZ={kernelName:th,backendName:"webgl",kernelFunc:fZ},yZ="return float(!isnan(x) && !isinf(x));",bZ=Ye({opSnippet:yZ,dtype:"bool"}),xZ={kernelName:ol,backendName:"webgl",kernelFunc:bZ},vZ="return float(isinf(x));",wZ=Ye({opSnippet:vZ,dtype:"bool"}),kZ={kernelName:ll,backendName:"webgl",kernelFunc:wZ},IZ="return float(isnan(x));",NZ=Ye({opSnippet:IZ,dtype:"bool"}),TZ={kernelName:ul,backendName:"webgl",kernelFunc:NZ},SZ="return float(a < b);",CZ=` return vec4(lessThan(a, b)); -`,less4=binaryKernelFunc2({opSnippet:LESS,packedOpSnippet:LESS_PACKED,cpuKernelImpl:lessImplCPU,dtype:"bool"}),lessConfig2={kernelName:Less,backendName:"webgl",kernelFunc:less4},LESS_EQUAL="return float(a <= b);",LESS_EQUAL_PACKED=` +`,EZ=on({opSnippet:SZ,packedOpSnippet:CZ,cpuKernelImpl:$K,dtype:"bool"}),_Z={kernelName:cl,backendName:"webgl",kernelFunc:EZ},FZ="return float(a <= b);",AZ=` return vec4(lessThanEqual(a, b)); -`,lessEqual3=binaryKernelFunc2({opSnippet:LESS_EQUAL,packedOpSnippet:LESS_EQUAL_PACKED,dtype:"bool"}),lessEqualConfig2={kernelName:LessEqual,backendName:"webgl",kernelFunc:lessEqual3};function linSpace2(args){let{backend:backend2,attrs}=args,{start,stop,num}=attrs,outVals=linSpaceImplCPU(start,stop,num);return backend2.makeTensorInfo([outVals.length],"float32",outVals)}var linSpaceConfig2={kernelName:LinSpace,backendName:"webgl",kernelFunc:linSpace2},LOG=`if (x < 0.0) return NAN; - return log(x);`,LOG_PACKED=` +`,$Z=on({opSnippet:FZ,packedOpSnippet:AZ,dtype:"bool"}),DZ={kernelName:pl,backendName:"webgl",kernelFunc:$Z};function MZ(e){let{backend:t,attrs:n}=e,{start:a,stop:r,num:s}=n,i=DK(a,r,s);return t.makeTensorInfo([i.length],"float32",i)}var RZ={kernelName:ah,backendName:"webgl",kernelFunc:MZ},PZ=`if (x < 0.0) return NAN; + return log(x);`,OZ=` vec4 result = log(x); vec4 isNaN = vec4(lessThan(x, vec4(0.0))); result.r = isNaN.r == 1.0 ? NAN : result.r; @@ -2995,16 +2995,16 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: result.a = isNaN.a == 1.0 ? NAN : result.a; return result; -`,log4=unaryKernelFunc2({opSnippet:LOG,packedOpSnippet:LOG_PACKED,cpuKernelImpl:logImplCPU}),logConfig2={kernelName:Log,backendName:"webgl",kernelFunc:log4},LOG1P="return log(1.0 + x);",log1p3=unaryKernelFunc2({opSnippet:LOG1P}),log1pConfig2={kernelName:Log1p,backendName:"webgl",kernelFunc:log1p3},LOGICAL_AND="return float(a >= 1.0 && b >= 1.0);",LOGICAL_AND_PACKED=` +`,LZ=Ye({opSnippet:PZ,packedOpSnippet:OZ,cpuKernelImpl:MK}),zZ={kernelName:Zs,backendName:"webgl",kernelFunc:LZ},BZ="return log(1.0 + x);",WZ=Ye({opSnippet:BZ}),VZ={kernelName:dl,backendName:"webgl",kernelFunc:WZ},UZ="return float(a >= 1.0 && b >= 1.0);",GZ=` return vec4( vec4(greaterThanEqual(a, vec4(1.0))) * vec4(greaterThanEqual(b, vec4(1.0)))); -`,logicalAnd3=binaryKernelFunc2({opSnippet:LOGICAL_AND,packedOpSnippet:LOGICAL_AND_PACKED,dtype:"bool"}),logicalAndConfig2={kernelName:LogicalAnd,backendName:"webgl",kernelFunc:logicalAnd3},LOGICAL_NOT="return float(!(x >= 1.0));",logicalNot3=unaryKernelFunc2({opSnippet:LOGICAL_NOT}),logicalNotConfig2={kernelName:LogicalNot,backendName:"webgl",kernelFunc:logicalNot3},LOGICAL_OR="return float(a >= 1.0 || b >= 1.0);",LOGICAL_OR_PACKED=` +`,HZ=on({opSnippet:UZ,packedOpSnippet:GZ,dtype:"bool"}),jZ={kernelName:hl,backendName:"webgl",kernelFunc:HZ},qZ="return float(!(x >= 1.0));",KZ=Ye({opSnippet:qZ}),XZ={kernelName:xc,backendName:"webgl",kernelFunc:KZ},YZ="return float(a >= 1.0 || b >= 1.0);",JZ=` return min( vec4(greaterThanEqual(a, vec4(1.0))) + vec4(greaterThanEqual(b, vec4(1.0))), vec4(1.0)); -`,logicalOr3=binaryKernelFunc2({opSnippet:LOGICAL_OR,packedOpSnippet:LOGICAL_OR_PACKED,dtype:"bool"}),logicalOrConfig2={kernelName:LogicalOr,backendName:"webgl",kernelFunc:logicalOr3},LRNProgram=class{constructor(xShape,radius,bias,alpha,beta){this.variableNames=["x"],this.outputShape=[];let rad=radius,maxD=xShape[3]-1;this.outputShape=xShape;let powOperator,basis=`float(${bias}) + float(${alpha}) * sum`;beta===.5?powOperator=`inversesqrt(${basis})`:beta===1?powOperator=`1.0/(${basis})`:powOperator=`exp(log(${basis}) * float(-${beta}));`,this.userCode=` +`,ZZ=on({opSnippet:YZ,packedOpSnippet:JZ,dtype:"bool"}),QZ={kernelName:vc,backendName:"webgl",kernelFunc:ZZ},e9=class{constructor(e,t,n,a,r){this.variableNames=["x"],this.outputShape=[];let s=t,i=e[3]-1;this.outputShape=e;let o,l=`float(${n}) + float(${a}) * sum`;r===.5?o=`inversesqrt(${l})`:r===1?o=`1.0/(${l})`:o=`exp(log(${l}) * float(-${r}));`,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords[0]; @@ -3013,17 +3013,17 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: int d = coords[3]; float x = getX(b, r, c, d); float sum = 0.0; - for (int j = -${rad}; j <= ${rad}; j++) { + for (int j = -${s}; j <= ${s}; j++) { int idx = d + j; - if (idx >= 0 && idx <= ${maxD}) { + if (idx >= 0 && idx <= ${i}) { float z = getX(b, r, c, idx); sum += z * z; } } - float val = x * ${powOperator}; + float val = x * ${o}; setOutput(val); } - `}},LRNPackedProgram=class{constructor(xShape,radius,bias,alpha,beta){this.variableNames=["x"],this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0;let rad=radius,maxD=xShape[3]-1;this.outputShape=xShape;let powOperator,basis=`float(${bias}) + float(${alpha}) * sum`;beta===.5?powOperator=`inversesqrt(${basis})`:beta===1?powOperator=`1.0/(${basis})`:powOperator=`exp(log(${basis}) * float(-${beta}));`,this.userCode=` + `}},t9=class{constructor(e,t,n,a,r){this.variableNames=["x"],this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0;let s=t,i=e[3]-1;this.outputShape=e;let o,l=`float(${n}) + float(${a}) * sum`;r===.5?o=`inversesqrt(${l})`:r===1?o=`1.0/(${l})`:o=`exp(log(${l}) * float(-${r}));`,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords.x; @@ -3047,7 +3047,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: getChannel(xFragAtOutputCoords, vec2(c + 1, d + 1)) : 0.0 ); - int firstChannel = d - ${rad}; + int firstChannel = d - ${s}; vec2 cache = vec2(0.); if(firstChannel >= 0){ vec4 firstChannelFrag = getX(b, r, c, firstChannel); @@ -3058,10 +3058,10 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } ivec2 depth = ivec2(d, d + 1); - for (int j = - ${rad}; j <= ${rad}; j++) { + for (int j = - ${s}; j <= ${s}; j++) { ivec2 idx = depth + j; bvec2 aboveLowerBound = greaterThanEqual(idx, ivec2(0)); - bvec2 belowUpperBound = lessThanEqual(idx, ivec2(${maxD})); + bvec2 belowUpperBound = lessThanEqual(idx, ivec2(${i})); bool depthInRange = aboveLowerBound.x && belowUpperBound.x; bool depthPlusOneInRange = aboveLowerBound.y && belowUpperBound.y; @@ -3082,10 +3082,10 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: sum += z * z; } } - vec4 result = xAtOutputCoords * ${powOperator}; + vec4 result = xAtOutputCoords * ${o}; setOutput(result); } - `}},lrn=args=>{let{inputs,backend:backend2,attrs}=args,{x}=inputs,{depthRadius,bias,alpha,beta}=attrs,program=env().getBool("WEBGL_PACK_NORMALIZATION")?new LRNPackedProgram(x.shape,depthRadius,bias,alpha,beta):new LRNProgram(x.shape,depthRadius,bias,alpha,beta);return backend2.runWebGLProgram(program,[x],x.dtype)},LRNConfig={kernelName:LRN,backendName:"webgl",kernelFunc:lrn},LRNGradProgram=class{constructor(inputShape,depthRadius,bias,alpha,beta){this.variableNames=["inputImage","outputImage","dy"],this.outputShape=[],this.outputShape=inputShape,this.depth=inputShape[3],this.depthRadius=depthRadius,this.bias=bias,this.alpha=alpha,this.beta=beta,this.userCode=` + `}},n9=e=>{let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{depthRadius:s,bias:i,alpha:o,beta:l}=a,c=ee().getBool("WEBGL_PACK_NORMALIZATION")?new t9(r.shape,s,i,o,l):new e9(r.shape,s,i,o,l);return n.runWebGLProgram(c,[r],r.dtype)},a9={kernelName:wc,backendName:"webgl",kernelFunc:n9},r9=class{constructor(e,t,n,a,r){this.variableNames=["inputImage","outputImage","dy"],this.outputShape=[],this.outputShape=e,this.depth=e[3],this.depthRadius=t,this.bias=n,this.alpha=a,this.beta=r,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords[0]; @@ -3094,9 +3094,9 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: float result = 0.0; for (int d = 0; d < ${this.depth}; ++d) { - int depthBegin = int(max(0.0, float(d - ${depthRadius}))); + int depthBegin = int(max(0.0, float(d - ${t}))); int depthEnd = int(min(float(${this.depth}), - float(d + ${depthRadius} + 1))); + float(d + ${t} + 1))); const int MIN_DEPTH_BEGIN = 0; const int MAX_DEPTH_END = ${this.depth}; @@ -3114,19 +3114,19 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } } - norm = float(${alpha}) * norm + float(${bias}); + norm = float(${a}) * norm + float(${n}); for(int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k){ if (k < depthBegin){ continue; } else if (k >= depthBegin && k < depthEnd){ - float dyi = -2.0 * float(${alpha}) - * float(${beta}) + float dyi = -2.0 * float(${a}) + * float(${r}) * getInputImage(b ,r ,c, k) * getOutputImage(b, r, c, d) / norm; if (k == d) { - dyi += pow(norm, -1.0 * ${beta}); + dyi += pow(norm, -1.0 * ${r}); } if (k == coords[3]) { dyi *= getDy(b, r, c, d); @@ -3140,15 +3140,15 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(result); } - `}},lrnGrad=args=>{let{inputs,backend:backend2,attrs}=args,{x,y,dy}=inputs,{depthRadius,bias,alpha,beta}=attrs,program=new LRNGradProgram(x.shape,depthRadius,bias,alpha,beta);return backend2.runWebGLProgram(program,[x,y,dy],x.dtype)},LRNGradConfig={kernelName:LRNGrad,backendName:"webgl",kernelFunc:lrnGrad};function maxImpl2(x,reduceShape,outShape,backend2){let inSize=util_exports.sizeFromShape(reduceShape),batchSize=util_exports.sizeFromShape(x.shape)/inSize,reshapedInput=reshape4({inputs:{x},attrs:{shape:[batchSize,inSize]},backend:backend2}),reduced=reduce(reshapedInput,x.dtype,"max",backend2),reshapedOutput=reshape4({inputs:{x:reduced},attrs:{shape:outShape},backend:backend2});return backend2.disposeIntermediateTensorInfo(reshapedInput),backend2.disposeIntermediateTensorInfo(reduced),reshapedOutput}function max4(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{reductionIndices,keepDims}=attrs,xRank=x.shape.length,origAxes=util_exports.parseAxisParam(reductionIndices,x.shape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),maxInputIsTransposed=permutedAxes!=null,shouldExecuteOnCPU=backend2.shouldExecuteOnCPU([x]),maxInput=x;if(maxInputIsTransposed){if(shouldExecuteOnCPU){let values=backend2.texData.get(maxInput.dataId).values,newShape=new Array(xRank);for(let i=0;i{let{inputs:t,backend:n,attrs:a}=e,{x:r,y:s,dy:i}=t,{depthRadius:o,bias:l,alpha:c,beta:u}=a,p=new r9(r.shape,o,l,c,u);return n.runWebGLProgram(p,[r,s,i],r.dtype)},i9={kernelName:rh,backendName:"webgl",kernelFunc:s9};function o9(e,t,n,a){let r=k.sizeFromShape(t),s=k.sizeFromShape(e.shape)/r,i=xe({inputs:{x:e},attrs:{shape:[s,r]},backend:a}),o=eo(i,e.dtype,"max",a),l=xe({inputs:{x:o},attrs:{shape:n},backend:a});return a.disposeIntermediateTensorInfo(i),a.disposeIntermediateTensorInfo(o),l}function r2(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{reductionIndices:s,keepDims:i}=a,o=r.shape.length,l=k.parseAxisParam(s,r.shape),c=l,u=_.getAxesPermutation(c,o),p=u!=null,d=n.shouldExecuteOnCPU([r]),h=r;if(p){if(d){let b=n.texData.get(h.dataId).values,x=new Array(o);for(let T=0;T`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad3,dimRoundingMode);if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))return identity3({inputs:{x},backend:backend2});let maxPoolProgram=new Pool2DProgram(convInfo,"max",!1);return backend2.runWebGLProgram(maxPoolProgram,[x],x.dtype)}var maxPoolConfig2={kernelName:MaxPool,backendName:"webgl",kernelFunc:maxPool3};function maxPool3d2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{filterSize,strides,pad:pad3,dataFormat,dimRoundingMode}=attrs,dilations=[1,1,1],convInfo=backend_util_exports.computePool3DInfo(x.shape,filterSize,strides,dilations,pad3,dimRoundingMode,dataFormat),maxPoolProgram=new Pool3DProgram(convInfo,"max",!1);return backend2.runWebGLProgram(maxPoolProgram,[x],x.dtype)}var maxPool3DConfig2={kernelName:MaxPool3D,backendName:"webgl",kernelFunc:maxPool3d2},MaxPool2DBackpropProgram=class{constructor(convInfo){this.variableNames=["dy","maxPos"],this.outputShape=convInfo.inShape;let strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,lastIndex=effectiveFilterHeight*effectiveFilterWidth-1;this.userCode=` - const ivec2 pads = ivec2(${padTop}, ${padLeft}); +`,p9=on({opSnippet:u9,packedOpSnippet:c9,cpuKernelImpl:PK}),d9={kernelName:ei,backendName:"webgl",kernelFunc:p9};function h9(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t;Tp(r,"maxPool");let{filterSize:s,strides:i,pad:o,dimRoundingMode:l}=a,c=1;k.assert(_.eitherStridesOrDilationsAreOne(i,c),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${c}'`);let u=_.computePool2DInfo(r.shape,s,i,c,o,l);if(u.filterWidth===1&&u.filterHeight===1&&k.arraysEqual(u.inShape,u.outShape))return Wn({inputs:{x:r},backend:n});let p=new Ep(u,"max",!1);return n.runWebGLProgram(p,[r],r.dtype)}var m9={kernelName:ti,backendName:"webgl",kernelFunc:h9};function f9(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{filterSize:s,strides:i,pad:o,dataFormat:l,dimRoundingMode:c}=a,u=[1,1,1],p=_.computePool3DInfo(r.shape,s,i,u,o,c,l),d=new Zv(p,"max",!1);return n.runWebGLProgram(d,[r],r.dtype)}var g9={kernelName:kc,backendName:"webgl",kernelFunc:f9},y9=class{constructor(e){this.variableNames=["dy","maxPos"],this.outputShape=e.inShape;let t=e.strideHeight,n=e.strideWidth,a=e.dilationHeight,r=e.effectiveFilterHeight,s=e.effectiveFilterWidth,i=r-1-e.padInfo.top,o=s-1-e.padInfo.left,l=r*s-1;this.userCode=` + const ivec2 pads = ivec2(${i}, ${o}); void main() { ivec4 coords = getOutputCoords(); @@ -3162,30 +3162,30 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d). // ? = to be determined. : = across all values in that axis. float dotProd = 0.0; - for (int wR = 0; wR < ${effectiveFilterHeight}; - wR += ${dilationHeight}) { - float dyR = float(dyRCorner + wR) / ${strideHeight}.0; + for (int wR = 0; wR < ${r}; + wR += ${a}) { + float dyR = float(dyRCorner + wR) / ${t}.0; - if (dyR < 0.0 || dyR >= ${convInfo.outHeight}.0 || fract(dyR) > 0.0) { + if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || fract(dyR) > 0.0) { continue; } int idyR = int(dyR); - for (int wC = 0; wC < ${effectiveFilterWidth}; wC++) { - float dyC = float(dyCCorner + wC) / ${strideWidth}.0; + for (int wC = 0; wC < ${s}; wC++) { + float dyC = float(dyCCorner + wC) / ${n}.0; - if (dyC < 0.0 || dyC >= ${convInfo.outWidth}.0 || + if (dyC < 0.0 || dyC >= ${e.outWidth}.0 || fract(dyC) > 0.0) { continue; } int idyC = int(dyC); float dyValue = getDy(b, idyR, idyC, d); - int maxPosValue = ${lastIndex} - int(getMaxPos(b, idyR, idyC, d)); + int maxPosValue = ${l} - int(getMaxPos(b, idyR, idyC, d)); // Get the current value, check it against the value from the // position matrix. - int curPosValue = wR * ${effectiveFilterWidth} + wC; + int curPosValue = wR * ${s} + wC; float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0); dotProd += dyValue * mask; @@ -3193,8 +3193,8 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(dotProd); } - `}},MaxPool3DBackpropProgram=class{constructor(convInfo){this.variableNames=["dy","maxPos"],this.outputShape=convInfo.inShape;let strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=effectiveFilterDepth-1-convInfo.padInfo.front,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,lastIndex=effectiveFilterDepth*effectiveFilterHeight*effectiveFilterWidth-1;this.userCode=` - const ivec3 pads = ivec3(${padFront}, ${padTop}, ${padLeft}); + `}},b9=class{constructor(e){this.variableNames=["dy","maxPos"],this.outputShape=e.inShape;let t=e.strideDepth,n=e.strideHeight,a=e.strideWidth,r=e.dilationDepth,s=e.dilationHeight,i=e.dilationWidth,o=e.effectiveFilterDepth,l=e.effectiveFilterHeight,c=e.effectiveFilterWidth,u=o-1-e.padInfo.front,p=l-1-e.padInfo.top,d=c-1-e.padInfo.left,h=o*l*c-1;this.userCode=` + const ivec3 pads = ivec3(${u}, ${p}, ${d}); void main() { ivec5 coords = getOutputCoords(); @@ -3211,44 +3211,44 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // ? = to be determined. : = across all values in that axis. float dotProd = 0.0; - for (int wD = 0; wD < ${effectiveFilterDepth}; - wD += ${dilationDepth}) { - float dyD = float(dyDCorner + wD) / ${strideDepth}.0; + for (int wD = 0; wD < ${o}; + wD += ${r}) { + float dyD = float(dyDCorner + wD) / ${t}.0; - if (dyD < 0.0 || dyD >= ${convInfo.outDepth}.0 || fract(dyD) > 0.0) { + if (dyD < 0.0 || dyD >= ${e.outDepth}.0 || fract(dyD) > 0.0) { continue; } int idyD = int(dyD); - for (int wR = 0; wR < ${effectiveFilterHeight}; - wR += ${dilationHeight}) { - float dyR = float(dyRCorner + wR) / ${strideHeight}.0; + for (int wR = 0; wR < ${l}; + wR += ${s}) { + float dyR = float(dyRCorner + wR) / ${n}.0; - if (dyR < 0.0 || dyR >= ${convInfo.outHeight}.0 || + if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || fract(dyR) > 0.0) { continue; } int idyR = int(dyR); - for (int wC = 0; wC < ${effectiveFilterWidth}; - wC += ${dilationWidth}) { - float dyC = float(dyCCorner + wC) / ${strideWidth}.0; + for (int wC = 0; wC < ${c}; + wC += ${i}) { + float dyC = float(dyCCorner + wC) / ${a}.0; - if (dyC < 0.0 || dyC >= ${convInfo.outWidth}.0 || + if (dyC < 0.0 || dyC >= ${e.outWidth}.0 || fract(dyC) > 0.0) { continue; } int idyC = int(dyC); float dyValue = getDy(batch, idyD, idyR, idyC, ch); - int maxPosValue = ${lastIndex} - + int maxPosValue = ${h} - int(getMaxPos(batch, idyD, idyR, idyC, ch)); // Get the current value, check it against the value from the // position matrix. int curPosValue = - wD * ${effectiveFilterHeight} * ${effectiveFilterWidth} + - wR * ${effectiveFilterWidth} + wC; + wD * ${l} * ${c} + + wR * ${c} + wC; float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0); dotProd += dyValue * mask; @@ -3257,105 +3257,105 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(dotProd); } - `}};function maxPool3DGrad2(args){let{inputs,backend:backend2,attrs}=args,{dy,input:input2}=inputs,x=input2,{filterSize,strides,pad:pad3,dimRoundingMode}=attrs,dilations=[1,1,1],convInfo=backend_util_exports.computePool3DInfo(x.shape,filterSize,strides,dilations,pad3,dimRoundingMode),maxPool3dPositionsProgram=new Pool3DProgram(convInfo,"max",!0),maxPool3dPositions2=backend2.runWebGLProgram(maxPool3dPositionsProgram,[x],x.dtype),maxPoolBackpropProgram=new MaxPool3DBackpropProgram(convInfo),result=backend2.runWebGLProgram(maxPoolBackpropProgram,[dy,maxPool3dPositions2],x.dtype);return backend2.disposeIntermediateTensorInfo(maxPool3dPositions2),result}var maxPoolGrad3DConfig={kernelName:MaxPool3DGrad,backendName:"webgl",kernelFunc:maxPool3DGrad2};function maxPoolGrad3(args){let{inputs,backend:backend2,attrs}=args,{dy,input:input2,output}=inputs,x=input2;assertNotComplex2([input2,output],"maxPoolGrad");let{filterSize,strides,pad:pad3,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad3,dimRoundingMode),getPositions=!0,maxPoolPositionsProgram=new Pool2DProgram(convInfo,"max",getPositions),maxPoolPositions2=backend2.runWebGLProgram(maxPoolPositionsProgram,[x],x.dtype),maxPoolBackPropProgram=new MaxPool2DBackpropProgram(convInfo),result=backend2.runWebGLProgram(maxPoolBackPropProgram,[dy,maxPoolPositions2],x.dtype);return backend2.disposeIntermediateTensorInfo(maxPoolPositions2),result}var maxPoolGradConfig3={kernelName:MaxPoolGrad,backendName:"webgl",kernelFunc:maxPoolGrad3};function maxPoolWithArgmaxImpl2(x,includeBatchInIndex,convInfo,backend2){let program=new Pool2DProgram(convInfo,"max",!1),poolOutput=backend2.runWebGLProgram(program,[x],"float32");program=new Pool2DProgram(convInfo,"max",!0,!0,includeBatchInIndex);let indexOutput=backend2.runWebGLProgram(program,[x],"float32");return[poolOutput,indexOutput]}var maxPoolWithArgmaxConfig2={kernelName:MaxPoolWithArgmax,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend2})=>{let{x}=inputs,{filterSize,strides,pad:pad3,includeBatchInIndex}=attrs,webglBackend=backend2;util_exports.assert(x.shape.length===4,()=>`Error in maxPool: input must be rank 4 but got rank ${x.shape.length}.`);let dilations=[1,1];util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad3),[result,indexes]=maxPoolWithArgmaxImpl2(x,includeBatchInIndex,convInfo,webglBackend);return[result,indexes]}};function meanImpl(x,reduceShape,outShape,backend2){let inSize=util_exports.sizeFromShape(reduceShape),batchSize=util_exports.sizeFromShape(x.shape)/inSize,reshapedInput=reshape4({inputs:{x},attrs:{shape:[batchSize,inSize]},backend:backend2}),reduced=reduce(reshapedInput,"float32","mean",backend2),reshapedOutput=reshape4({inputs:{x:reduced},attrs:{shape:outShape},backend:backend2});return backend2.disposeIntermediateTensorInfo(reshapedInput),backend2.disposeIntermediateTensorInfo(reduced),reshapedOutput}var meanConfig2={kernelName:Mean,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend2})=>{let{x}=inputs,{keepDims,axis}=attrs,webglBackend=backend2,xRank=x.shape.length,origAxes=util_exports.parseAxisParam(axis,x.shape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),meanInputIsTransposed=permutedAxes!=null,shouldExecuteOnCPU=webglBackend.shouldExecuteOnCPU([x]),intermediates=[],meanInput=x;if(meanInputIsTransposed){if(shouldExecuteOnCPU){let values=webglBackend.texData.get(meanInput.dataId).values,newShape=new Array(xRank);for(let i=0;i{let{x:a}=e,{filterSize:r,strides:s,pad:i,includeBatchInIndex:o}=t,l=n;k.assert(a.shape.length===4,()=>`Error in maxPool: input must be rank 4 but got rank ${a.shape.length}.`);let c=[1,1];k.assert(_.eitherStridesOrDilationsAreOne(s,c),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${s} and dilations '${c}'`);let u=_.computePool2DInfo(a.shape,r,s,c,i),[p,d]=I9(a,o,u,l);return[p,d]}};function T9(e,t,n,a){let r=k.sizeFromShape(t),s=k.sizeFromShape(e.shape)/r,i=xe({inputs:{x:e},attrs:{shape:[s,r]},backend:a}),o=eo(i,"float32","mean",a),l=xe({inputs:{x:o},attrs:{shape:n},backend:a});return a.disposeIntermediateTensorInfo(i),a.disposeIntermediateTensorInfo(o),l}var S9={kernelName:ni,backendName:"webgl",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{x:a}=e,{keepDims:r,axis:s}=t,i=n,o=a.shape.length,l=k.parseAxisParam(s,a.shape),c=l,u=_.getAxesPermutation(c,o),p=u!=null,d=i.shouldExecuteOnCPU([a]),h=[],m=a;if(p){if(d){let x=i.texData.get(m.dataId).values,v=new Array(o);for(let E=0;Ep2[0]+xShape[i]+p2[1]);let rank=xShape.length,dtype=getCoordsDataType(rank),start=paddings.map(p2=>p2[0]).join(","),end=paddings.map((p2,i)=>p2[0]+xShape[i]).join(","),unpackedCoords=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,rank),offset=mode==="reflect"?0:1;if(rank===1){this.userCode=` - int start = ${start}; - int end = ${end}; +`,A9=on({opSnippet:_9,packedOpSnippet:F9,cpuKernelImpl:OK}),$9={kernelName:ri,backendName:"webgl",kernelFunc:A9},D9=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=t.map((c,u)=>c[0]+e[u]+c[1]);let a=e.length,r=mt(a),s=t.map(c=>c[0]).join(","),i=t.map((c,u)=>c[0]+e[u]).join(","),o=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,a),l=n==="reflect"?0:1;if(a===1){this.userCode=` + int start = ${s}; + int end = ${i}; void main() { int outC = getOutputCoords(); if (outC < start) { - outC = start * 2 - outC - ${offset}; + outC = start * 2 - outC - ${l}; } else if(outC >= end) { - outC = (end - 1) * 2 - outC + ${offset}; + outC = (end - 1) * 2 - outC + ${l}; } setOutput(getX(outC - start)); } `;return}this.userCode=` - ${dtype} start = ${dtype}(${start}); - ${dtype} end = ${dtype}(${end}); + ${r} start = ${r}(${s}); + ${r} end = ${r}(${i}); void main() { - ${dtype} outC = getOutputCoords(); - for (int i = 0; i < ${rank}; i++) { + ${r} outC = getOutputCoords(); + for (int i = 0; i < ${a}; i++) { if (outC[i] < start[i]) { - outC[i] = start[i] * 2 - outC[i] - ${offset}; + outC[i] = start[i] * 2 - outC[i] - ${l}; } else if(outC[i] >= end[i]) { - outC[i] = (end[i] - 1) * 2 - outC[i] + ${offset}; + outC[i] = (end[i] - 1) * 2 - outC[i] + ${l}; } } - ${dtype} coords = outC - start; - setOutput(getX(${unpackedCoords})); + ${r} coords = outC - start; + setOutput(getX(${o})); } - `}},MirrorPadPackedProgram=class{constructor(xShape,paddings,mode){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=paddings.map((p2,i)=>p2[0]+xShape[i]+p2[1]);let rank=xShape.length,dtype=getCoordsDataType(rank),start=paddings.map(p2=>p2[0]).join(","),end=paddings.map((p2,i)=>p2[0]+xShape[i]).join(","),coords2=getChannels("rc",rank),source=getChannels("source",rank),cLimit=`${coords2[rank-1]} < ${this.outputShape[rank-1]}`,innerDims=rank===1?"source":`vec2(${source.slice(-2).join()})`,offset=mode==="reflect"?0:1,mainLoop="";if(rank===1){let padSetup=` - ${dtype} source = rc; + `}},M9=class{constructor(e,t,n){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t.map((h,m)=>h[0]+e[m]+h[1]);let a=e.length,r=mt(a),s=t.map(h=>h[0]).join(","),i=t.map((h,m)=>h[0]+e[m]).join(","),o=yn("rc",a),l=yn("source",a),c=`${o[a-1]} < ${this.outputShape[a-1]}`,u=a===1?"source":`vec2(${l.slice(-2).join()})`,p=n==="reflect"?0:1,d="";if(a===1){let h=` + ${r} source = rc; if (source < start) { - source = start * 2 - source - ${offset}; + source = start * 2 - source - ${p}; } else if (source >= end) { - source = (end - 1) * 2 - source + ${offset}; + source = (end - 1) * 2 - source + ${p}; } source -= start; - `;mainLoop=` - ${dtype} rc = outputLoc; - ${padSetup} - result[0] = getChannel(getX(${source.join()}), ${innerDims}); - ${coords2[rank-1]} += 1; - if(${cLimit}) { - ${padSetup} - result[1] = getChannel(getX(${source.join()}), ${innerDims}); + `;d=` + ${r} rc = outputLoc; + ${h} + result[0] = getChannel(getX(${l.join()}), ${u}); + ${o[a-1]} += 1; + if(${c}) { + ${h} + result[1] = getChannel(getX(${l.join()}), ${u}); } - `}else{let padSetup=` - ${dtype} source = rc; - ${dtype} lt = ${dtype}(lessThan(source, start)); - ${dtype} gte = ${dtype}(greaterThanEqual(source, end)); - ${dtype} orig = 1 - (lt + gte); + `}else{let h=` + ${r} source = rc; + ${r} lt = ${r}(lessThan(source, start)); + ${r} gte = ${r}(greaterThanEqual(source, end)); + ${r} orig = 1 - (lt + gte); source = orig * source + - lt * (start * 2 - source - ${offset}) + - gte * ((end - 1) * 2 - source + ${offset}); + lt * (start * 2 - source - ${p}) + + gte * ((end - 1) * 2 - source + ${p}); source -= start; - `;mainLoop=` - ${dtype} rc = outputLoc; - ${padSetup} - result[0] = getChannel(getX(${source.join()}), ${innerDims}); - ${coords2[rank-1]} += 1; - if(${cLimit}) { - ${padSetup} - result[1] = getChannel(getX(${source.join()}), ${innerDims}); + `;d=` + ${r} rc = outputLoc; + ${h} + result[0] = getChannel(getX(${l.join()}), ${u}); + ${o[a-1]} += 1; + if(${c}) { + ${h} + result[1] = getChannel(getX(${l.join()}), ${u}); } rc = outputLoc; - ${coords2[rank-2]} += 1; - if(${coords2[rank-2]} < ${this.outputShape[rank-2]}) { - ${padSetup} - result[2] = getChannel(getX(${source.join()}), ${innerDims}); - ${coords2[rank-1]} += 1; - if(${cLimit}) { - ${padSetup} - result[3] = getChannel(getX(${source.join()}), ${innerDims}); + ${o[a-2]} += 1; + if(${o[a-2]} < ${this.outputShape[a-2]}) { + ${h} + result[2] = getChannel(getX(${l.join()}), ${u}); + ${o[a-1]} += 1; + if(${c}) { + ${h} + result[3] = getChannel(getX(${l.join()}), ${u}); } } `}this.userCode=` - const ${dtype} start = ${dtype}(${start}); - const ${dtype} end = ${dtype}(${end}); + const ${r} start = ${r}(${s}); + const ${r} end = ${r}(${i}); void main() { - ${dtype} outputLoc = getOutputCoords(); + ${r} outputLoc = getOutputCoords(); vec4 result = vec4(0.); - ${mainLoop} + ${d} setOutput(result); } - `}},mirrorPadKernelFunc=({inputs,backend:backend2,attrs})=>{let{x}=inputs,{paddings,mode}=attrs,program=env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new MirrorPadPackedProgram(x.shape,paddings,mode):new MirrorPadProgram(x.shape,paddings,mode);return backend2.runWebGLProgram(program,[x],x.dtype)},mirrorPadConfig2={kernelName:MirrorPad,backendName:"webgl",kernelFunc:mirrorPadKernelFunc},MOD=`if (b == 0.0) return NAN; - return mod(a, b);`,MOD_PACKED=` + `}},R9=({inputs:e,backend:t,attrs:n})=>{let{x:a}=e,{paddings:r,mode:s}=n,i=ee().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new M9(a.shape,r,s):new D9(a.shape,r,s);return t.runWebGLProgram(i,[a],a.dtype)},P9={kernelName:Ic,backendName:"webgl",kernelFunc:R9},O9=`if (b == 0.0) return NAN; + return mod(a, b);`,L9=` vec4 result = mod(a, b); vec4 isNaN = vec4(equal(b, vec4(0.0))); - `+CHECK_NAN_SNIPPET3+` + `+sf+` return result; -`,mod3=binaryKernelFunc2({opSnippet:MOD,packedOpSnippet:MOD_PACKED}),modConfig2={kernelName:Mod,backendName:"webgl",kernelFunc:mod3},MultinomialProgram=class{constructor(batchSize,numOutcomes,numSamples){this.variableNames=["probs"],this.outputShape=[batchSize,numSamples],this.userCode=` +`,z9=on({opSnippet:O9,packedOpSnippet:L9}),B9={kernelName:ml,backendName:"webgl",kernelFunc:z9},W9=class{constructor(e,t,n){this.variableNames=["probs"],this.outputShape=[e,n],this.userCode=` uniform float seed; void main() { @@ -3365,7 +3365,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: float r = random(seed); float cdf = 0.0; - for (int i = 0; i < ${numOutcomes-1}; i++) { + for (int i = 0; i < ${t-1}; i++) { cdf += getProbs(batch, i); if (r < cdf) { @@ -3375,13 +3375,13 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } // If no other event happened, last event happened. - setOutput(float(${numOutcomes-1})); + setOutput(float(${t-1})); } - `}getCustomSetupFunc(seed){return(gpgpu,webGLProgram)=>{this.seedLoc==null&&(this.seedLoc=gpgpu.getUniformLocation(webGLProgram,"seed")),gpgpu.gl.uniform1f(this.seedLoc,seed)}}},DIV=` + `}getCustomSetupFunc(e){return(t,n)=>{this.seedLoc==null&&(this.seedLoc=t.getUniformLocation(n,"seed")),t.gl.uniform1f(this.seedLoc,e)}}},V9=` if (a == b) { return 1.0; }; -return a / b;`,DIV_PACKED=` +return a / b;`,U9=` // vec4 one = vec4(equal(a, b)); // return one + (vec4(1.0) - one) * a / b; vec4 result = a / b; @@ -3399,63 +3399,63 @@ return a / b;`,DIV_PACKED=` } return result; -`,realDiv=binaryKernelFunc2({opSnippet:DIV,packedOpSnippet:DIV_PACKED,checkOutOfBounds:!0}),realDivConfig2={kernelName:RealDiv,backendName:"webgl",kernelFunc:realDiv},SUB="return a - b;",sub3=binaryKernelFunc2({opSnippet:SUB,packedOpSnippet:SUB,supportsComplex:!0,cpuKernelImpl:subImplCPU}),subConfig2={kernelName:Sub,backendName:"webgl",kernelFunc:sub3};function softmax4(args){let{inputs,backend:backend2,attrs}=args,{logits}=inputs,{dim}=attrs,axes=util_exports.parseAxisParam([dim],logits.shape),maxLogit=max4({inputs:{x:logits},backend:backend2,attrs:{reductionIndices:axes,keepDims:!1}}),expandedShape=backend_util_exports.expandShapeToKeepDim(maxLogit.shape,axes),maxLogitsReshaped=reshape4({inputs:{x:maxLogit},backend:backend2,attrs:{shape:expandedShape}}),a=sub3({inputs:{a:logits,b:maxLogitsReshaped},backend:backend2}),b=exp3({inputs:{x:a},backend:backend2}),sumExp=sum4({inputs:{x:b},backend:backend2,attrs:{axis:axes,keepDims:!1}}),sumExpReshaped=reshape4({inputs:{x:sumExp},backend:backend2,attrs:{shape:expandedShape}}),res=realDiv({inputs:{a:b,b:sumExpReshaped},backend:backend2});return backend2.disposeIntermediateTensorInfo(maxLogit),backend2.disposeIntermediateTensorInfo(maxLogitsReshaped),backend2.disposeIntermediateTensorInfo(a),backend2.disposeIntermediateTensorInfo(b),backend2.disposeIntermediateTensorInfo(sumExp),backend2.disposeIntermediateTensorInfo(sumExpReshaped),res}var softmaxConfig2={kernelName:Softmax,backendName:"webgl",kernelFunc:softmax4};function multinomial3(args){let{inputs,backend:backend2,attrs}=args,{logits}=inputs,{numSamples,seed,normalized}=attrs,probs=normalized?logits:softmax4({inputs:{logits},backend:backend2,attrs:{dim:logits.shape.length-1}}),batchSize=probs.shape[0],numOutcomes=probs.shape[1],program=new MultinomialProgram(batchSize,numOutcomes,numSamples),customSetup=program.getCustomSetupFunc(seed),res=backend2.runWebGLProgram(program,[probs],"int32",customSetup);return normalized||backend2.disposeIntermediateTensorInfo(probs),res}var multinomialConfig2={kernelName:Multinomial,backendName:"webgl",kernelFunc:multinomial3},NEG="return -x;";function neg3(args){let{inputs,backend:backend2}=args,{x}=inputs;if(backend2.shouldExecuteOnCPU([x])){let xData=backend2.texData.get(x.dataId),[outValues,newShape]=negImplCPU(xData.values,x.shape,x.dtype);return backend2.makeTensorInfo(newShape,x.dtype,outValues)}let program;return env().getBool("WEBGL_PACK_UNARY_OPERATIONS")?program=new UnaryOpPackedProgram(x.shape,NEG):program=new UnaryOpProgram(x.shape,NEG),backend2.runWebGLProgram(program,[x],x.dtype)}var negConfig2={kernelName:Neg,backendName:"webgl",kernelFunc:neg3},nonMaxSuppressionV3Impl3=kernel_impls_exports.nonMaxSuppressionV3Impl;function nonMaxSuppressionV32(args){backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs,backend:backend2,attrs}=args,{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold}=attrs,boxesVals=backend2.readSync(boxes.dataId),scoresVals=backend2.readSync(scores.dataId),{selectedIndices}=nonMaxSuppressionV3Impl3(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold);return backend2.makeTensorInfo([selectedIndices.length],"int32",new Int32Array(selectedIndices))}var nonMaxSuppressionV3Config2={kernelName:NonMaxSuppressionV3,backendName:"webgl",kernelFunc:nonMaxSuppressionV32},nonMaxSuppressionV4Impl3=kernel_impls_exports.nonMaxSuppressionV4Impl;function nonMaxSuppressionV42(args){backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs,backend:backend2,attrs}=args,{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize}=attrs,boxesVals=backend2.readSync(boxes.dataId),scoresVals=backend2.readSync(scores.dataId),{selectedIndices,validOutputs}=nonMaxSuppressionV4Impl3(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize);return[backend2.makeTensorInfo([selectedIndices.length],"int32",new Int32Array(selectedIndices)),backend2.makeTensorInfo([],"int32",new Int32Array([validOutputs]))]}var nonMaxSuppressionV4Config2={kernelName:NonMaxSuppressionV4,backendName:"webgl",kernelFunc:nonMaxSuppressionV42},nonMaxSuppressionV5Impl3=kernel_impls_exports.nonMaxSuppressionV5Impl;function nonMaxSuppressionV52(args){backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs,backend:backend2,attrs}=args,{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}=attrs,boxesVals=backend2.readSync(boxes.dataId),scoresVals=backend2.readSync(scores.dataId),maxOutputSizeVal=maxOutputSize,iouThresholdVal=iouThreshold,scoreThresholdVal=scoreThreshold,softNmsSigmaVal=softNmsSigma,{selectedIndices,selectedScores}=nonMaxSuppressionV5Impl3(boxesVals,scoresVals,maxOutputSizeVal,iouThresholdVal,scoreThresholdVal,softNmsSigmaVal);return[backend2.makeTensorInfo([selectedIndices.length],"int32",new Int32Array(selectedIndices)),backend2.makeTensorInfo([selectedScores.length],"float32",new Float32Array(selectedScores))]}var nonMaxSuppressionV5Config2={kernelName:NonMaxSuppressionV5,backendName:"webgl",kernelFunc:nonMaxSuppressionV52},OneHotProgram=class{constructor(numIndices,depth,onValue,offValue){this.variableNames=["indices"],this.outputShape=[numIndices,depth],this.userCode=` +`,s2=on({opSnippet:V9,packedOpSnippet:U9,checkOutOfBounds:!0}),G9={kernelName:Hs,backendName:"webgl",kernelFunc:s2},i2="return a - b;",o2=on({opSnippet:i2,packedOpSnippet:i2,supportsComplex:!0,cpuKernelImpl:HK}),H9={kernelName:ki,backendName:"webgl",kernelFunc:o2};function l2(e){let{inputs:t,backend:n,attrs:a}=e,{logits:r}=t,{dim:s}=a,i=k.parseAxisParam([s],r.shape),o=r2({inputs:{x:r},backend:n,attrs:{reductionIndices:i,keepDims:!1}}),l=_.expandShapeToKeepDim(o.shape,i),c=xe({inputs:{x:o},backend:n,attrs:{shape:l}}),u=o2({inputs:{a:r,b:c},backend:n}),p=QS({inputs:{x:u},backend:n}),d=Jv({inputs:{x:p},backend:n,attrs:{axis:i,keepDims:!1}}),h=xe({inputs:{x:d},backend:n,attrs:{shape:l}}),m=s2({inputs:{a:p,b:h},backend:n});return n.disposeIntermediateTensorInfo(o),n.disposeIntermediateTensorInfo(c),n.disposeIntermediateTensorInfo(u),n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(h),m}var j9={kernelName:vi,backendName:"webgl",kernelFunc:l2};function q9(e){let{inputs:t,backend:n,attrs:a}=e,{logits:r}=t,{numSamples:s,seed:i,normalized:o}=a,l=o?r:l2({inputs:{logits:r},backend:n,attrs:{dim:r.shape.length-1}}),c=l.shape[0],u=l.shape[1],p=new W9(c,u,s),d=p.getCustomSetupFunc(i),h=n.runWebGLProgram(p,[l],"int32",d);return o||n.disposeIntermediateTensorInfo(l),h}var K9={kernelName:lh,backendName:"webgl",kernelFunc:q9},u2="return -x;";function X9(e){let{inputs:t,backend:n}=e,{x:a}=t;if(n.shouldExecuteOnCPU([a])){let s=n.texData.get(a.dataId),[i,o]=zK(s.values,a.shape,a.dtype);return n.makeTensorInfo(o,a.dtype,i)}let r;return ee().getBool("WEBGL_PACK_UNARY_OPERATIONS")?r=new Nu(a.shape,u2):r=new ys(a.shape,u2),n.runWebGLProgram(r,[a],a.dtype)}var Y9={kernelName:fl,backendName:"webgl",kernelFunc:X9},J9=Qa.nonMaxSuppressionV3Impl;function Z9(e){_.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs:t,backend:n,attrs:a}=e,{boxes:r,scores:s}=t,{maxOutputSize:i,iouThreshold:o,scoreThreshold:l}=a,c=n.readSync(r.dataId),u=n.readSync(s.dataId),{selectedIndices:p}=J9(c,u,i,o,l);return n.makeTensorInfo([p.length],"int32",new Int32Array(p))}var Q9={kernelName:yl,backendName:"webgl",kernelFunc:Z9},eQ=Qa.nonMaxSuppressionV4Impl;function tQ(e){_.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs:t,backend:n,attrs:a}=e,{boxes:r,scores:s}=t,{maxOutputSize:i,iouThreshold:o,scoreThreshold:l,padToMaxOutputSize:c}=a,u=n.readSync(r.dataId),p=n.readSync(s.dataId),{selectedIndices:d,validOutputs:h}=eQ(u,p,i,o,l,c);return[n.makeTensorInfo([d.length],"int32",new Int32Array(d)),n.makeTensorInfo([],"int32",new Int32Array([h]))]}var nQ={kernelName:bl,backendName:"webgl",kernelFunc:tQ},aQ=Qa.nonMaxSuppressionV5Impl;function rQ(e){_.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs:t,backend:n,attrs:a}=e,{boxes:r,scores:s}=t,{maxOutputSize:i,iouThreshold:o,scoreThreshold:l,softNmsSigma:c}=a,u=n.readSync(r.dataId),p=n.readSync(s.dataId),d=i,h=o,m=l,f=c,{selectedIndices:g,selectedScores:y}=aQ(u,p,d,h,m,f);return[n.makeTensorInfo([g.length],"int32",new Int32Array(g)),n.makeTensorInfo([y.length],"float32",new Float32Array(y))]}var sQ={kernelName:xl,backendName:"webgl",kernelFunc:rQ},iQ=class{constructor(e,t,n,a){this.variableNames=["indices"],this.outputShape=[e,t],this.userCode=` void main() { ivec2 coords = getOutputCoords(); int index = round(getIndices(coords.x)); - setOutput(mix(float(${offValue}), float(${onValue}), + setOutput(mix(float(${a}), float(${n}), float(index == coords.y))); } - `}},oneHot3=args=>{let{inputs,backend:backend2,attrs}=args,{indices}=inputs,{depth,onValue,offValue}=attrs,indicesSize=util_exports.sizeFromShape(indices.shape),program=new OneHotProgram(indicesSize,depth,onValue,offValue),reshaped=reshape4({inputs:{x:indices},backend:backend2,attrs:{shape:[indicesSize]}}),result=backend2.runWebGLProgram(program,[reshaped],indices.dtype);backend2.disposeIntermediateTensorInfo(reshaped);let outShape=[...indices.shape,depth],out=reshape4({inputs:{x:result},backend:backend2,attrs:{shape:outShape}});return backend2.disposeIntermediateTensorInfo(result),out},oneHotConfig2={kernelName:OneHot,backendName:"webgl",kernelFunc:oneHot3};function zerosLike3(args){let{inputs,backend:backend2}=args,{x}=inputs;if(x.dtype==="complex64"){let realPart=real3({inputs:{input:x},backend:backend2}),r=zerosLike3({inputs:{x:realPart},backend:backend2}),imagPart=imag3({inputs:{input:x},backend:backend2}),i=zerosLike3({inputs:{x:imagPart},backend:backend2}),result=complex3({inputs:{real:r,imag:i},backend:backend2});return backend2.disposeIntermediateTensorInfo(realPart),backend2.disposeIntermediateTensorInfo(r),backend2.disposeIntermediateTensorInfo(imagPart),backend2.disposeIntermediateTensorInfo(i),result}else return fill3({attrs:{shape:x.shape,dtype:x.dtype,value:x.dtype==="string"?"":0},backend:backend2})}var zerosLikeConfig2={kernelName:ZerosLike,backendName:"webgl",kernelFunc:zerosLike3};function onesLike3(args){let{inputs,backend:backend2}=args,{x}=inputs;if(x.dtype==="string")throw new Error("onesLike is not supported under string dtype");if(x.dtype==="complex64"){let realPart=real3({inputs:{input:x},backend:backend2}),r=onesLike3({inputs:{x:realPart},backend:backend2}),imagPart=imag3({inputs:{input:x},backend:backend2}),i=zerosLike3({inputs:{x:imagPart},backend:backend2}),result=complex3({inputs:{real:r,imag:i},backend:backend2});return backend2.disposeIntermediateTensorInfo(realPart),backend2.disposeIntermediateTensorInfo(r),backend2.disposeIntermediateTensorInfo(imagPart),backend2.disposeIntermediateTensorInfo(i),result}else return fill3({attrs:{shape:x.shape,dtype:x.dtype,value:1},backend:backend2})}var onesLikeConfig2={kernelName:OnesLike,backendName:"webgl",kernelFunc:onesLike3};function pack2(args){let{inputs,backend:backend2,attrs}=args,{axis}=attrs;if(inputs.length===1)return expandDims4({inputs:{input:inputs[0]},backend:backend2,attrs:{dim:axis}});let shape=inputs[0].shape,dtype=inputs[0].dtype;inputs.forEach(t=>{util_exports.assertShapesMatch(shape,t.shape,"All tensors passed to stack must have matching shapes"),util_exports.assert(dtype===t.dtype,()=>"All tensors passed to stack must have matching dtypes")});let intermediateTensorInfos=[],expandedTensors=inputs.map(t=>{let expandedT=expandDims4({inputs:{input:t},backend:backend2,attrs:{dim:axis}});return intermediateTensorInfos.push(expandedT),expandedT}),result=concat3({inputs:expandedTensors,backend:backend2,attrs:{axis}});return intermediateTensorInfos.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),result}var packConfig2={kernelName:Pack,backendName:"webgl",kernelFunc:pack2},PadProgram=class{constructor(xShape,paddings,constantValue){this.variableNames=["x"],this.outputShape=paddings.map((p2,i)=>p2[0]+xShape[i]+p2[1]);let rank=xShape.length,type=getCoordsDataType(rank),start=paddings.map(p2=>p2[0]).join(","),end=paddings.map((p2,i)=>p2[0]+xShape[i]).join(","),unpackedCoords=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,rank);if(rank===1){this.userCode=` - int start = ${start}; - int end = ${end}; + `}},oQ=e=>{let{inputs:t,backend:n,attrs:a}=e,{indices:r}=t,{depth:s,onValue:i,offValue:o}=a,l=k.sizeFromShape(r.shape),c=new iQ(l,s,i,o),u=xe({inputs:{x:r},backend:n,attrs:{shape:[l]}}),p=n.runWebGLProgram(c,[u],r.dtype);n.disposeIntermediateTensorInfo(u);let d=[...r.shape,s],h=xe({inputs:{x:p},backend:n,attrs:{shape:d}});return n.disposeIntermediateTensorInfo(p),h},lQ={kernelName:ii,backendName:"webgl",kernelFunc:oQ};function hf(e){let{inputs:t,backend:n}=e,{x:a}=t;if(a.dtype==="complex64"){let r=Fp({inputs:{input:a},backend:n}),s=hf({inputs:{x:r},backend:n}),i=df({inputs:{input:a},backend:n}),o=hf({inputs:{x:i},backend:n}),l=bs({inputs:{real:s,imag:o},backend:n});return n.disposeIntermediateTensorInfo(r),n.disposeIntermediateTensorInfo(s),n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(o),l}else return nw({attrs:{shape:a.shape,dtype:a.dtype,value:a.dtype==="string"?"":0},backend:n})}var uQ={kernelName:Ol,backendName:"webgl",kernelFunc:hf};function c2(e){let{inputs:t,backend:n}=e,{x:a}=t;if(a.dtype==="string")throw new Error("onesLike is not supported under string dtype");if(a.dtype==="complex64"){let r=Fp({inputs:{input:a},backend:n}),s=c2({inputs:{x:r},backend:n}),i=df({inputs:{input:a},backend:n}),o=hf({inputs:{x:i},backend:n}),l=bs({inputs:{real:s,imag:o},backend:n});return n.disposeIntermediateTensorInfo(r),n.disposeIntermediateTensorInfo(s),n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(o),l}else return nw({attrs:{shape:a.shape,dtype:a.dtype,value:1},backend:n})}var cQ={kernelName:vl,backendName:"webgl",kernelFunc:c2};function pQ(e){let{inputs:t,backend:n,attrs:a}=e,{axis:r}=a;if(t.length===1)return tw({inputs:{input:t[0]},backend:n,attrs:{dim:r}});let s=t[0].shape,i=t[0].dtype;t.forEach(u=>{k.assertShapesMatch(s,u.shape,"All tensors passed to stack must have matching shapes"),k.assert(i===u.dtype,()=>"All tensors passed to stack must have matching dtypes")});let o=[],l=t.map(u=>{let p=tw({inputs:{input:u},backend:n,attrs:{dim:r}});return o.push(p),p}),c=US({inputs:l,backend:n,attrs:{axis:r}});return o.forEach(u=>n.disposeIntermediateTensorInfo(u)),c}var dQ={kernelName:wl,backendName:"webgl",kernelFunc:pQ},hQ=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=t.map((l,c)=>l[0]+e[c]+l[1]);let a=e.length,r=mt(a),s=t.map(l=>l[0]).join(","),i=t.map((l,c)=>l[0]+e[c]).join(","),o=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,a);if(a===1){this.userCode=` + int start = ${s}; + int end = ${i}; void main() { int outC = getOutputCoords(); if (outC < start || outC >= end) { - setOutput(float(${constantValue})); + setOutput(float(${n})); } else { setOutput(getX(outC - start)); } } `;return}this.userCode=` - ${type} start = ${type}(${start}); - ${type} end = ${type}(${end}); + ${r} start = ${r}(${s}); + ${r} end = ${r}(${i}); void main() { - ${type} outC = getOutputCoords(); + ${r} outC = getOutputCoords(); if (any(lessThan(outC, start)) || any(greaterThanEqual(outC, end))) { - setOutput(float(${constantValue})); + setOutput(float(${n})); } else { - ${type} coords = outC - start; - setOutput(getX(${unpackedCoords})); + ${r} coords = outC - start; + setOutput(getX(${o})); } } - `}},PadPackedProgram=class{constructor(xShape,paddings,constantValue){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=paddings.map((p2,i)=>p2[0]+xShape[i]+p2[1]);let rank=xShape.length,dtype=getCoordsDataType(rank),start=paddings.map(p2=>p2[0]).join(","),end=paddings.map((p2,i)=>p2[0]+xShape[i]).join(","),coords2=getChannels("rc",rank),source=getChannels("source",rank),cLimit=`${coords2[rank-1]} < ${this.outputShape[rank-1]}`,innerDims=rank===1?"source":`vec2(${source.slice(-2).join()})`,componentSetup=[`${dtype} rc = outputLoc;`,`${coords2[rank-1]} += 1; - if(${cLimit}) { - `,rank===1?"":`} + `}},mQ=class{constructor(e,t,n){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t.map((m,f)=>m[0]+e[f]+m[1]);let a=e.length,r=mt(a),s=t.map(m=>m[0]).join(","),i=t.map((m,f)=>m[0]+e[f]).join(","),o=yn("rc",a),l=yn("source",a),c=`${o[a-1]} < ${this.outputShape[a-1]}`,u=a===1?"source":`vec2(${l.slice(-2).join()})`,p=[`${r} rc = outputLoc;`,`${o[a-1]} += 1; + if(${c}) { + `,a===1?"":`} rc = outputLoc; - ${coords2[rank-2]} += 1; - if(${coords2[rank-2]} < ${this.outputShape[rank-2]}) {`,rank===1?"":` ${coords2[rank-1]} += 1; - if(${cLimit}) {`],paddingArea=rank===1?"rc < start || rc >= end":"any(lessThan(rc, start)) || any(greaterThanEqual(rc, end))",mainLoop="";for(let i=0,j=rank===1?2:4;i= end":"any(lessThan(rc, start)) || any(greaterThanEqual(rc, end))",h="";for(let m=0,f=a===1?2:4;m{let{inputs,backend:backend2,attrs}=args,{x}=inputs,{paddings,constantValue}=attrs,program=env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new PadPackedProgram(x.shape,paddings,constantValue):new PadProgram(x.shape,paddings,constantValue);return backend2.runWebGLProgram(program,[x],x.dtype)},padV2Config2={kernelName:PadV2,backendName:"webgl",kernelFunc:padV22},POW=` + `}},p2=e=>{let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{paddings:s,constantValue:i}=a,o=ee().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new mQ(r.shape,s,i):new hQ(r.shape,s,i);return n.runWebGLProgram(o,[r],r.dtype)},fQ={kernelName:oi,backendName:"webgl",kernelFunc:p2},gQ=` if(a < 0.0 && floor(b) < b){ return NAN; } @@ -3464,7 +3464,7 @@ return a / b;`,DIV_PACKED=` } return (round(mod(b, 2.0)) != 1) ? pow(abs(a), b) : sign(a) * pow(abs(a), b); -`,POW_PACKED=` +`,yQ=` // isModRound1 has 1 for components with round(mod(b, 2.0)) == 1, 0 otherwise. vec4 isModRound1 = vec4(equal(round(mod(b, 2.0)), ivec4(1))); vec4 multiplier = sign(a) * isModRound1 + (vec4(1.0) - isModRound1); @@ -3478,11 +3478,11 @@ return a / b;`,DIV_PACKED=` result.a = isExpZero.a ? 1.0 : result.a; vec4 isNaN = vec4(lessThan(a, vec4(0.0))) * vec4(lessThan(floor(b), b)); - `+CHECK_NAN_SNIPPET3+` + `+sf+` return result; -`,pow3=binaryKernelFunc2({opSnippet:POW,packedOpSnippet:POW_PACKED}),powConfig2={kernelName:Pow,backendName:"webgl",kernelFunc:pow3};function prod3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{axis,keepDims}=attrs,xRank=x.shape.length,toDispose=[],origAxes=util_exports.parseAxisParam(axis,x.shape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),permutedX=x;permutedAxes!=null&&(permutedX=transpose3({inputs:{x},backend:backend2,attrs:{perm:permutedAxes}}),axes=backend_util_exports.getInnerMostAxes(axes.length,xRank),toDispose.push(permutedX)),backend_util_exports.assertAxesAreInnerMostDims("prod",axes,xRank);let res;if(backend2.shouldExecuteOnCPU([permutedX])){let xVals=backend2.texData.get(permutedX.dataId).values,{outVals,outShape,outDtype}=prodImplCPU(permutedX.shape,permutedX.dtype,xVals,axes);res=backend2.makeTensorInfo(outShape,outDtype,outVals)}else{let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(permutedX.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=reshape4({inputs:{x:permutedX},backend:backend2,attrs:{shape:[-1,inSize]}}),outputDType=sumOutType(x.dtype),reduced=reduce(a2D,outputDType,"prod",backend2);res=reshape4({inputs:{x:reduced},backend:backend2,attrs:{shape:outShape}}),toDispose.push(a2D),toDispose.push(reduced)}if(keepDims){toDispose.push(res);let newShape=backend_util_exports.expandShapeToKeepDim(res.shape,origAxes);res=reshape4({inputs:{x:res},backend:backend2,attrs:{shape:newShape}})}return toDispose.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),res}var prodConfig2={kernelName:Prod,backendName:"webgl",kernelFunc:prod3},range4=args=>{let{backend:backend2,attrs}=args,{start,stop,step:step4,dtype}=attrs,values=rangeImplCPU(start,stop,step4,dtype);return backend2.makeTensorInfo([values.length],dtype,values)},rangeConfig2={kernelName:Range,backendName:"webgl",kernelFunc:range4},RECIPROCAL="return 1.0 / x;",reciprocal3=unaryKernelFunc2({opSnippet:RECIPROCAL}),reciprocalConfig2={kernelName:Reciprocal,backendName:"webgl",kernelFunc:reciprocal3},RELU3=CHECK_NAN_SNIPPET+` +`,bQ=on({opSnippet:gQ,packedOpSnippet:yQ}),xQ={kernelName:li,backendName:"webgl",kernelFunc:bQ};function vQ(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{axis:s,keepDims:i}=a,o=r.shape.length,l=[],c=k.parseAxisParam(s,r.shape),u=c,p=_.getAxesPermutation(u,o),d=r;p!=null&&(d=En({inputs:{x:r},backend:n,attrs:{perm:p}}),u=_.getInnerMostAxes(u.length,o),l.push(d)),_.assertAxesAreInnerMostDims("prod",u,o);let h;if(n.shouldExecuteOnCPU([d])){let m=n.texData.get(d.dataId).values,{outVals:f,outShape:g,outDtype:y}=BK(d.shape,d.dtype,m,u);h=n.makeTensorInfo(g,y,f)}else{let[m,f]=_.computeOutAndReduceShapes(d.shape,u),g=k.sizeFromShape(f),y=xe({inputs:{x:d},backend:n,attrs:{shape:[-1,g]}}),b=xh(r.dtype),x=eo(y,b,"prod",n);h=xe({inputs:{x},backend:n,attrs:{shape:m}}),l.push(y),l.push(x)}if(i){l.push(h);let m=_.expandShapeToKeepDim(h.shape,c);h=xe({inputs:{x:h},backend:n,attrs:{shape:m}})}return l.forEach(m=>n.disposeIntermediateTensorInfo(m)),h}var wQ={kernelName:kl,backendName:"webgl",kernelFunc:vQ},d2=e=>{let{backend:t,attrs:n}=e,{start:a,stop:r,step:s,dtype:i}=n,o=WK(a,r,s,i);return t.makeTensorInfo([o.length],i,o)},kQ={kernelName:Nc,backendName:"webgl",kernelFunc:d2},IQ="return 1.0 / x;",NQ=Ye({opSnippet:IQ}),TQ={kernelName:Il,backendName:"webgl",kernelFunc:NQ},SQ=Oa+` return (x < 0.0) ? 0.0 : x; -`,RELU_PACKED=` +`,CQ=` vec4 result = x * vec4(greaterThanEqual(x, vec4(0.0))); bvec4 isNaN = isnan(x); @@ -3492,9 +3492,9 @@ return a / b;`,DIV_PACKED=` result.a = isNaN.a ? x.a : result.a; return result; -`,relu3=unaryKernelFunc2({opSnippet:RELU3,packedOpSnippet:RELU_PACKED}),reluConfig2={kernelName:Relu,backendName:"webgl",kernelFunc:relu3},RELU63=CHECK_NAN_SNIPPET+` +`,EQ=Ye({opSnippet:SQ,packedOpSnippet:CQ}),_Q={kernelName:ci,backendName:"webgl",kernelFunc:EQ},FQ=Oa+` return (x < 0.0) ? 0.0 : min(6.0, x); -`,RELU6_PACKED=` +`,AQ=` vec4 result = min(x, vec4(6.)) * vec4(greaterThanEqual(x, vec4(0.0))); bvec4 isNaN = isnan(x); @@ -3504,11 +3504,11 @@ return a / b;`,DIV_PACKED=` result.a = isNaN.a ? x.a : result.a; return result; -`,relu63=unaryKernelFunc2({opSnippet:RELU63,packedOpSnippet:RELU6_PACKED}),relu6Config2={kernelName:Relu6,backendName:"webgl",kernelFunc:relu63},ResizeBilinearProgram=class{constructor(inputShape,newHeight,newWidth,alignCorners,halfPixelCenters){this.variableNames=["A"],this.outputShape=[];let[batch,oldHeight,oldWidth,depth]=inputShape;this.outputShape=[batch,newHeight,newWidth,depth];let effectiveInSize=[alignCorners&&newHeight>1?oldHeight-1:oldHeight,alignCorners&&newWidth>1?oldWidth-1:oldWidth],effectiveOutSize=[alignCorners&&newHeight>1?newHeight-1:newHeight,alignCorners&&newWidth>1?newWidth-1:newWidth],sourceFracIndexRC;halfPixelCenters?sourceFracIndexRC="(vec2(yRC) + vec2(0.5)) * effectiveInputOverOutputRatioRC - vec2(0.5)":sourceFracIndexRC="vec2(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` +`,$Q=Ye({opSnippet:FQ,packedOpSnippet:AQ}),DQ={kernelName:di,backendName:"webgl",kernelFunc:$Q},MQ=class{constructor(e,t,n,a,r){this.variableNames=["A"],this.outputShape=[];let[s,i,o,l]=e;this.outputShape=[s,t,n,l];let c=[a&&t>1?i-1:i,a&&n>1?o-1:o],u=[a&&t>1?t-1:t,a&&n>1?n-1:n],p;r?p="(vec2(yRC) + vec2(0.5)) * effectiveInputOverOutputRatioRC - vec2(0.5)":p="vec2(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` const vec2 effectiveInputOverOutputRatioRC = vec2( - ${effectiveInSize[0]/effectiveOutSize[0]}, - ${effectiveInSize[1]/effectiveOutSize[1]}); - const vec2 inputShapeRC = vec2(${oldHeight}.0, ${oldWidth}.0); + ${c[0]/u[0]}, + ${c[1]/u[1]}); + const vec2 inputShapeRC = vec2(${i}.0, ${o}.0); void main() { ivec4 coords = getOutputCoords(); @@ -3517,7 +3517,7 @@ return a / b;`,DIV_PACKED=` ivec2 yRC = coords.yz; // Fractional source index. - vec2 sourceFracIndexRC = ${sourceFracIndexRC}; + vec2 sourceFracIndexRC = ${p}; // Compute the four integer indices. ivec2 sourceFloorRC = ivec2(max(sourceFracIndexRC, vec2(0.0))); @@ -3537,13 +3537,13 @@ return a / b;`,DIV_PACKED=` setOutput(newValue); } - `}},ResizeBilinearPackedProgram=class{constructor(inputShape,newHeight,newWidth,alignCorners,halfPixelCenters){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[];let[batch,oldHeight,oldWidth,depth]=inputShape;this.outputShape=[batch,newHeight,newWidth,depth];let effectiveInSize=[alignCorners&&newHeight>1?oldHeight-1:oldHeight,alignCorners&&newWidth>1?oldWidth-1:oldWidth],effectiveOutSize=[alignCorners&&newHeight>1?newHeight-1:newHeight,alignCorners&&newWidth>1?newWidth-1:newWidth],sourceFracIndexRC;halfPixelCenters?sourceFracIndexRC="(vec3(yRC) + vec3(0.5)) * effectiveInputOverOutputRatioRC - vec3(0.5)":sourceFracIndexRC="vec3(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` + `}},RQ=class{constructor(e,t,n,a,r){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[];let[s,i,o,l]=e;this.outputShape=[s,t,n,l];let c=[a&&t>1?i-1:i,a&&n>1?o-1:o],u=[a&&t>1?t-1:t,a&&n>1?n-1:n],p;r?p="(vec3(yRC) + vec3(0.5)) * effectiveInputOverOutputRatioRC - vec3(0.5)":p="vec3(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` const vec3 effectiveInputOverOutputRatioRC = vec3( - ${effectiveInSize[0]/effectiveOutSize[0]}, - ${effectiveInSize[1]/effectiveOutSize[1]}, - ${effectiveInSize[1]/effectiveOutSize[1]}); - const vec3 inputShapeRC = vec3(${oldHeight}.0, ${oldWidth}.0, - ${oldWidth}.0); + ${c[0]/u[0]}, + ${c[1]/u[1]}, + ${c[1]/u[1]}); + const vec3 inputShapeRC = vec3(${i}.0, ${o}.0, + ${o}.0); float getAValue(int b, int r, int c, int d) { return getChannel(getA(b, r, c, d), vec2(c, d)); @@ -3557,7 +3557,7 @@ return a / b;`,DIV_PACKED=` ivec3 yRC = coords.yzz + ivec3(0, 0, 1); // Fractional source index. - vec3 sourceFracIndexRC = ${sourceFracIndexRC}; + vec3 sourceFracIndexRC = ${p}; // Compute the four integer indices. ivec3 sourceFloorRC = ivec3(max(sourceFracIndexRC, vec3(0.0))); @@ -3565,8 +3565,8 @@ return a / b;`,DIV_PACKED=` min(inputShapeRC - 1.0, ceil(sourceFracIndexRC))); // Should we calculate next column and row elements in 2x2 packed cell. - bool hasNextCol = d < ${depth-1}; - bool hasNextRow = coords.z < ${newWidth-1}; + bool hasNextCol = d < ${l-1}; + bool hasNextRow = coords.z < ${n-1}; // In parallel, construct four corners for all four components in // packed 2x2 cell. @@ -3614,7 +3614,7 @@ return a / b;`,DIV_PACKED=` setOutput(newValue); } - `}};function resizeBilinear3(args){let{inputs,backend:backend2,attrs}=args,{images}=inputs,{alignCorners,halfPixelCenters,size}=attrs,[newHeight,newWidth]=size,program=env().getBool("WEBGL_PACK_IMAGE_OPERATIONS")?new ResizeBilinearPackedProgram(images.shape,newHeight,newWidth,alignCorners,halfPixelCenters):new ResizeBilinearProgram(images.shape,newHeight,newWidth,alignCorners,halfPixelCenters);return backend2.runWebGLProgram(program,[images],"float32")}var resizeBilinearConfig2={kernelName:ResizeBilinear,backendName:"webgl",kernelFunc:resizeBilinear3},ResizeBilinearBackpropProgram=class{constructor(dyShape,inputShape,alignCorners){this.variableNames=["dy"],this.outputShape=[],this.outputShape=inputShape;let[,xHeight,xWidth]=inputShape,[,yHeight,yWidth]=dyShape,effectiveXSize=[alignCorners&&yHeight>1?xHeight-1:xHeight,alignCorners&&yWidth>1?xWidth-1:xWidth],effectiveYSize=[alignCorners&&yHeight>1?yHeight-1:yHeight,alignCorners&&yWidth>1?yWidth-1:yWidth],heightScale=effectiveXSize[0]/effectiveYSize[0],widthScale=effectiveXSize[1]/effectiveYSize[1],invHeightScale=1/heightScale,invWidthScale=1/widthScale,winHeight=Math.ceil(invHeightScale)*2+2,winWidth=Math.ceil(invWidthScale)*2+2;this.userCode=` + `}};function PQ(e){let{inputs:t,backend:n,attrs:a}=e,{images:r}=t,{alignCorners:s,halfPixelCenters:i,size:o}=a,[l,c]=o,u=ee().getBool("WEBGL_PACK_IMAGE_OPERATIONS")?new RQ(r.shape,l,c,s,i):new MQ(r.shape,l,c,s,i);return n.runWebGLProgram(u,[r],"float32")}var OQ={kernelName:pi,backendName:"webgl",kernelFunc:PQ},LQ=class{constructor(e,t,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=t;let[,a,r]=t,[,s,i]=e,o=[n&&s>1?a-1:a,n&&i>1?r-1:r],l=[n&&s>1?s-1:s,n&&i>1?i-1:i],c=o[0]/l[0],u=o[1]/l[1],p=1/c,d=1/u,h=Math.ceil(p)*2+2,m=Math.ceil(d)*2+2;this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords[0]; @@ -3624,14 +3624,14 @@ return a / b;`,DIV_PACKED=` float accumulator = 0.0; - const float heightScale = float(${heightScale}); - const float widthScale = float(${widthScale}); + const float heightScale = float(${c}); + const float widthScale = float(${u}); - const float invHeightScale = float(${invHeightScale}); - const float invWidthScale = float(${invWidthScale}); + const float invHeightScale = float(${p}); + const float invWidthScale = float(${d}); - const int winHeight = int(${winHeight}); - const int winWidth = int(${winWidth}); + const int winHeight = int(${h}); + const int winWidth = int(${m}); // Compute bounds for where in dy we will look float startRLerp = floor(float(r) * invHeightScale); @@ -3645,7 +3645,7 @@ return a / b;`,DIV_PACKED=` int dyR = dyROffset + startDyR; // Guard against the window exceeding the bounds of dy - if (dyR < 0 || dyR >= ${yHeight}) { + if (dyR < 0 || dyR >= ${s}) { continue; } @@ -3653,19 +3653,19 @@ return a / b;`,DIV_PACKED=` int dyC = dyCOffset + startDyC; // Guard against the window exceeding the bounds of dy - if (dyC < 0 || dyC >= ${yWidth}) { + if (dyC < 0 || dyC >= ${i}) { continue; } float dxR = float(dyR) * heightScale; int topDxRIndex = int(floor(dxR)); - int bottomDxRIndex = int(min(ceil(dxR), ${xHeight-1}.0)); + int bottomDxRIndex = int(min(ceil(dxR), ${a-1}.0)); float dxRLerp = dxR - float(topDxRIndex); float inverseDxRLerp = 1.0 - dxRLerp; float dxC = float(dyC) * widthScale; int leftDxCIndex = int(floor(dxC)); - int rightDxCIndex = int(min(ceil(dxC), ${xWidth-1}.0)); + int rightDxCIndex = int(min(ceil(dxC), ${r-1}.0)); float dxCLerp = dxC - float(leftDxCIndex); float inverseDxCLerp = 1.0 - dxCLerp; @@ -3695,11 +3695,11 @@ return a / b;`,DIV_PACKED=` setOutput(accumulator); } - `}};function resizeBilinearGrad2(args){let{inputs,backend:backend2,attrs}=args,{images,dy}=inputs,{alignCorners}=attrs,program=new ResizeBilinearBackpropProgram(dy.shape,images.shape,alignCorners);return backend2.runWebGLProgram(program,[dy],dy.dtype)}var resizeBilinearGradConfig3={kernelName:ResizeBilinearGrad,backendName:"webgl",kernelFunc:resizeBilinearGrad2},ResizeNearestNeighborProgram=class{constructor(inputShape,newHeight,newWidth,alignCorners,halfPixelCenters){this.variableNames=["A"],this.outputShape=[];let[batch,oldHeight,oldWidth,depth]=inputShape;this.outputShape=[batch,newHeight,newWidth,depth];let effectiveInSize=[alignCorners&&newHeight>1?oldHeight-1:oldHeight,alignCorners&&newWidth>1?oldWidth-1:oldWidth],effectiveOutSize=[alignCorners&&newHeight>1?newHeight-1:newHeight,alignCorners&&newWidth>1?newWidth-1:newWidth],roundBase=alignCorners?"0.5":"0.0",sourceFracIndexRC;halfPixelCenters?sourceFracIndexRC="max((vec2(yRC) + vec2(0.5)) * effectiveInputOverOutputRatioRC, vec2(0.0))":sourceFracIndexRC="vec2(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` + `}};function zQ(e){let{inputs:t,backend:n,attrs:a}=e,{images:r,dy:s}=t,{alignCorners:i}=a,o=new LQ(s.shape,r.shape,i);return n.runWebGLProgram(o,[s],s.dtype)}var BQ={kernelName:ph,backendName:"webgl",kernelFunc:zQ},WQ=class{constructor(e,t,n,a,r){this.variableNames=["A"],this.outputShape=[];let[s,i,o,l]=e;this.outputShape=[s,t,n,l];let c=[a&&t>1?i-1:i,a&&n>1?o-1:o],u=[a&&t>1?t-1:t,a&&n>1?n-1:n],p=a?"0.5":"0.0",d;r?d="max((vec2(yRC) + vec2(0.5)) * effectiveInputOverOutputRatioRC, vec2(0.0))":d="vec2(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` const vec2 effectiveInputOverOutputRatioRC = vec2( - ${effectiveInSize[0]/effectiveOutSize[0]}, - ${effectiveInSize[1]/effectiveOutSize[1]}); - const vec2 inputShapeRC = vec2(${oldHeight}.0, ${oldWidth}.0); + ${c[0]/u[0]}, + ${c[1]/u[1]}); + const vec2 inputShapeRC = vec2(${i}.0, ${o}.0); void main() { ivec4 coords = getOutputCoords(); @@ -3708,16 +3708,16 @@ return a / b;`,DIV_PACKED=` ivec2 yRC = coords.yz; // Fractional source index. - vec2 sourceFracIndexRC = ${sourceFracIndexRC}; + vec2 sourceFracIndexRC = ${d}; // Compute the coordinators of nearest neighbor point. ivec2 sourceNearestRC = ivec2( - min(inputShapeRC - 1.0, floor(sourceFracIndexRC + ${roundBase}))); + min(inputShapeRC - 1.0, floor(sourceFracIndexRC + ${p}))); float newValue = getA(b, sourceNearestRC.x, sourceNearestRC.y, d); setOutput(newValue); } - `}};function resizeNearestNeighbor3(args){let{inputs,backend:backend2,attrs}=args,{images}=inputs,{alignCorners,halfPixelCenters,size}=attrs,[newHeight,newWidth]=size,program=new ResizeNearestNeighborProgram(images.shape,newHeight,newWidth,alignCorners,halfPixelCenters);return backend2.runWebGLProgram(program,[images],images.dtype)}var resizeNearestNeighborConfig2={kernelName:ResizeNearestNeighbor,backendName:"webgl",kernelFunc:resizeNearestNeighbor3},ResizeNearestNeigborBackpropProgram=class{constructor(dyShape,inputShape,alignCorners){this.variableNames=["dy"],this.outputShape=[],this.outputShape=inputShape;let[,xHeight,xWidth]=inputShape,[,yHeight,yWidth]=dyShape,effectiveXSize=[alignCorners&&yHeight>1?xHeight-1:xHeight,alignCorners&&yWidth>1?xWidth-1:xWidth],effectiveYSize=[alignCorners&&yHeight>1?yHeight-1:yHeight,alignCorners&&yWidth>1?yWidth-1:yWidth],heightScale=effectiveXSize[0]/effectiveYSize[0],widthScale=effectiveXSize[1]/effectiveYSize[1],invHeightScale=1/heightScale,invWidthScale=1/widthScale,winHeight=Math.ceil(invHeightScale)*2+2,winWidth=Math.ceil(invWidthScale)*2+2;this.userCode=` + `}};function VQ(e){let{inputs:t,backend:n,attrs:a}=e,{images:r}=t,{alignCorners:s,halfPixelCenters:i,size:o}=a,[l,c]=o,u=new WQ(r.shape,l,c,s,i);return n.runWebGLProgram(u,[r],r.dtype)}var UQ={kernelName:Tc,backendName:"webgl",kernelFunc:VQ},GQ=class{constructor(e,t,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=t;let[,a,r]=t,[,s,i]=e,o=[n&&s>1?a-1:a,n&&i>1?r-1:r],l=[n&&s>1?s-1:s,n&&i>1?i-1:i],c=o[0]/l[0],u=o[1]/l[1],p=1/c,d=1/u,h=Math.ceil(p)*2+2,m=Math.ceil(d)*2+2;this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords[0]; @@ -3727,14 +3727,14 @@ return a / b;`,DIV_PACKED=` float accumulator = 0.0; - const float heightScale = float(${heightScale}); - const float widthScale = float(${widthScale}); + const float heightScale = float(${c}); + const float widthScale = float(${u}); - const float invHeightScale = float(${invHeightScale}); - const float invWidthScale = float(${invWidthScale}); + const float invHeightScale = float(${p}); + const float invWidthScale = float(${d}); - const int winHeight = int(${winHeight}); - const int winWidth = int(${winWidth}); + const int winHeight = int(${h}); + const int winWidth = int(${m}); // Compute bounds for where in dy we will look float startRLerp = floor(float(r) * invHeightScale); @@ -3748,7 +3748,7 @@ return a / b;`,DIV_PACKED=` int dyR = dyROffset + startDyR; // Guard against the window exceeding the bounds of dy - if (dyR < 0 || dyR >= ${yHeight}) { + if (dyR < 0 || dyR >= ${s}) { continue; } @@ -3756,26 +3756,26 @@ return a / b;`,DIV_PACKED=` int dyC = dyCOffset + startDyC; // Guard against the window exceeding the bounds of dy - if (dyC < 0 || dyC >= ${yWidth}) { + if (dyC < 0 || dyC >= ${i}) { continue; } float sourceFracRow = - float(${effectiveXSize[0]}) * - (float(dyR) / float(${effectiveYSize[0]})); + float(${o[0]}) * + (float(dyR) / float(${l[0]})); float sourceFracCol = - float(${effectiveXSize[1]}) * - (float(dyC) / float(${effectiveYSize[1]})); + float(${o[1]}) * + (float(dyC) / float(${l[1]})); int sourceNearestRow = int(min( - float(int(${xHeight}) - 1), - ${alignCorners} ? float(round(sourceFracRow)) : + float(int(${a}) - 1), + ${n} ? float(round(sourceFracRow)) : float(floor(sourceFracRow)))); int sourceNearestCol = int(min( - float(int(${xWidth}) - 1), - ${alignCorners} ? float(round(sourceFracCol)) : + float(int(${r}) - 1), + ${n} ? float(round(sourceFracCol)) : float(floor(sourceFracCol)))); if (r == sourceNearestRow && c == sourceNearestCol) { @@ -3787,62 +3787,62 @@ return a / b;`,DIV_PACKED=` setOutput(accumulator); } - `}};function resizeNearestNeighborGrad2(args){let{inputs,backend:backend2,attrs}=args,{images,dy}=inputs,{alignCorners}=attrs,program=new ResizeNearestNeigborBackpropProgram(dy.shape,images.shape,alignCorners);return backend2.runWebGLProgram(program,[dy],dy.dtype)}var resizeNearestNeighborGradConfig3={kernelName:ResizeNearestNeighborGrad,backendName:"webgl",kernelFunc:resizeNearestNeighborGrad2},ReverseProgram=class{constructor(xShape,axis){this.variableNames=["x"];let rank=xShape.length;if(rank>4)throw new Error(`WebGL backend: Reverse of rank-${rank} tensor is not yet supported`);if(this.outputShape=xShape,rank===1){this.userCode=` + `}};function HQ(e){let{inputs:t,backend:n,attrs:a}=e,{images:r,dy:s}=t,{alignCorners:i}=a,o=new GQ(s.shape,r.shape,i);return n.runWebGLProgram(o,[s],s.dtype)}var jQ={kernelName:ch,backendName:"webgl",kernelFunc:HQ},qQ=class{constructor(e,t){this.variableNames=["x"];let n=e.length;if(n>4)throw new Error(`WebGL backend: Reverse of rank-${n} tensor is not yet supported`);if(this.outputShape=e,n===1){this.userCode=` void main() { int coord = getOutputCoords(); - setOutput(getX(${xShape[0]} - coord - 1)); + setOutput(getX(${e[0]} - coord - 1)); } - `;return}let getInCoord=i=>axis.indexOf(i)!==-1&&xShape[i]!==1?`${xShape[i]} - coords[${i}] - 1`:`coords[${i}]`,inCoords=xShape.map((_,i)=>getInCoord(i)).join(","),type=getCoordsDataType(rank);this.userCode=` + `;return}let a=i=>t.indexOf(i)!==-1&&e[i]!==1?`${e[i]} - coords[${i}] - 1`:`coords[${i}]`,r=e.map((i,o)=>a(o)).join(","),s=mt(n);this.userCode=` void main() { - ${type} coords = getOutputCoords(); - setOutput(getX(${inCoords})); + ${s} coords = getOutputCoords(); + setOutput(getX(${r})); } - `}},ReversePackedProgram=class{constructor(xShape,axis){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0;let rank=xShape.length;if(rank>4)throw new Error(`WebGL backend: Reverse of rank-${rank} tensor is not yet supported`);this.outputShape=xShape;let channels=getChannels("rc",rank),nextColumn=`${channels[rank-1]} + 1 < ${this.outputShape[rank-1]}`,nextRow=`${channels[rank-2]} + 1 < ${this.outputShape[rank-2]}`,type=getCoordsDataType(rank);rank===1?this.userCode=` + `}},KQ=class{constructor(e,t){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0;let n=e.length;if(n>4)throw new Error(`WebGL backend: Reverse of rank-${n} tensor is not yet supported`);this.outputShape=e;let a=yn("rc",n),r=`${a[n-1]} + 1 < ${this.outputShape[n-1]}`,s=`${a[n-2]} + 1 < ${this.outputShape[n-2]}`,i=mt(n);n===1?this.userCode=` void main(){ int rc = getOutputCoords(); vec4 result = vec4(0.); - result.r = getChannel(getX(${xShape[0]} - rc - 1), - ${xShape[0]} - rc - 1); - if(${nextColumn}){ - result.g = getChannel(getX(${xShape[0]} - (rc + 1) - 1), - ${xShape[0]} - (rc + 1) - 1); + result.r = getChannel(getX(${e[0]} - rc - 1), + ${e[0]} - rc - 1); + if(${r}){ + result.g = getChannel(getX(${e[0]} - (rc + 1) - 1), + ${e[0]} - (rc + 1) - 1); } setOutput(result); } `:this.userCode=` void main() { - ${type} rc = getOutputCoords(); + ${i} rc = getOutputCoords(); vec4 result = vec4(0.); - result.r = ${getR(channels.slice())}; - if(${nextColumn}){ - result.g = ${getG(channels.slice())}; + result.r = ${o(a.slice())}; + if(${r}){ + result.g = ${l(a.slice())}; } - if(${nextRow}) { - result.b = ${getB(channels.slice())}; - if(${nextColumn}) { - result.a = ${getA(channels.slice())}; + if(${s}) { + result.b = ${c(a.slice())}; + if(${r}) { + result.a = ${u(a.slice())}; } } setOutput(result); } - `;function getR(channels2){return getChannel(channels2)}function getG(channels2){return channels2[rank-1]="("+channels2[rank-1]+" + 1)",getChannel(channels2)}function getB(channels2){return channels2[rank-2]="("+channels2[rank-2]+" + 1)",getChannel(channels2)}function getA(channels2){return channels2[rank-1]="("+channels2[rank-1]+" + 1)",channels2[rank-2]="("+channels2[rank-2]+" + 1)",getChannel(channels2)}function getChannel(channels2){let inCoordsArray=xShape.map((_,i)=>getInCoord(i,channels2)),inCoords=inCoordsArray.join(","),innerDims=inCoordsArray.slice(-2).join(",");return`getChannel(getX(${inCoords}), vec2(${innerDims}))`}function getInCoord(i,channels1){return axis.indexOf(i)!==-1&&xShape[i]!==1?`${xShape[i]} - ${channels1[i]} - 1`:`${channels1[i]}`}}};function reverse3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{dims}=attrs,xRank=x.shape.length,$dims=util_exports.parseAxisParam(dims,x.shape);if(xRank===0)return identity3({inputs:{x},backend:backend2});let program=env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new ReversePackedProgram(x.shape,$dims):new ReverseProgram(x.shape,$dims);return backend2.runWebGLProgram(program,[x],x.dtype)}var reverseConfig2={kernelName:Reverse,backendName:"webgl",kernelFunc:reverse3},RotateProgram=class{constructor(imageShape,radians,fillValue,center){this.variableNames=["Image"],this.outputShape=[];let imageHeight=imageShape[1],imageWidth=imageShape[2],sinFactor=Math.sin(radians).toFixed(3),cosFactor=Math.cos(radians).toFixed(3);this.outputShape=imageShape;let[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),centerXString=centerX.toFixed(3),centerYString=centerY.toFixed(3),fillSnippet="";typeof fillValue=="number"?fillSnippet=`float outputValue = ${fillValue.toFixed(2)};`:fillSnippet=` - vec3 fill = vec3(${fillValue.join(",")}); + `;function o(h){return p(h)}function l(h){return h[n-1]="("+h[n-1]+" + 1)",p(h)}function c(h){return h[n-2]="("+h[n-2]+" + 1)",p(h)}function u(h){return h[n-1]="("+h[n-1]+" + 1)",h[n-2]="("+h[n-2]+" + 1)",p(h)}function p(h){let m=e.map((y,b)=>d(b,h)),f=m.join(","),g=m.slice(-2).join(",");return`getChannel(getX(${f}), vec2(${g}))`}function d(h,m){return t.indexOf(h)!==-1&&e[h]!==1?`${e[h]} - ${m[h]} - 1`:`${m[h]}`}}};function XQ(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{dims:s}=a,i=r.shape.length,o=k.parseAxisParam(s,r.shape);if(i===0)return Wn({inputs:{x:r},backend:n});let l=ee().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new KQ(r.shape,o):new qQ(r.shape,o);return n.runWebGLProgram(l,[r],r.dtype)}var YQ={kernelName:hi,backendName:"webgl",kernelFunc:XQ},JQ=class{constructor(e,t,n,a){this.variableNames=["Image"],this.outputShape=[];let r=e[1],s=e[2],i=Math.sin(t).toFixed(3),o=Math.cos(t).toFixed(3);this.outputShape=e;let[l,c]=_.getImageCenter(a,r,s),u=l.toFixed(3),p=c.toFixed(3),d="";typeof n=="number"?d=`float outputValue = ${n.toFixed(2)};`:d=` + vec3 fill = vec3(${n.join(",")}); float outputValue = fill[coords[3]];`,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int x = coords[2]; int y = coords[1]; - float coordXFloat = (float(x) - ${centerXString}) * ${cosFactor} - (float(y) - ${centerYString}) * ${sinFactor}; - float coordYFloat = (float(x) - ${centerXString}) * ${sinFactor} + (float(y) - ${centerYString}) * ${cosFactor}; - int coordX = int(round(coordXFloat + ${centerXString})); - int coordY = int(round(coordYFloat + ${centerYString})); - ${fillSnippet} - if(coordX >= 0 && coordX < ${imageWidth} && coordY >= 0 && coordY < ${imageHeight}) { + float coordXFloat = (float(x) - ${u}) * ${o} - (float(y) - ${p}) * ${i}; + float coordYFloat = (float(x) - ${u}) * ${i} + (float(y) - ${p}) * ${o}; + int coordX = int(round(coordXFloat + ${u})); + int coordY = int(round(coordYFloat + ${p})); + ${d} + if(coordX >= 0 && coordX < ${s} && coordY >= 0 && coordY < ${r}) { outputValue = getImage(coords[0], coordY, coordX, coords[3]); } setOutput(outputValue); } - `}},rotateWithOffsetConfig2={kernelName:RotateWithOffset,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend2})=>{let{image:image3}=inputs,{radians,fillValue,center}=attrs,webglBackend=backend2,program=new RotateProgram(image3.shape,radians,fillValue,center);return webglBackend.runWebGLProgram(program,[image3],image3.dtype)}},ROUND=` + `}},ZQ={kernelName:zl,backendName:"webgl",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{image:a}=e,{radians:r,fillValue:s,center:i}=t,o=n,l=new JQ(a.shape,r,s,i);return o.runWebGLProgram(l,[a],a.dtype)}},QQ=` // OpenGL ES does not support round function. // The algorithm is based on banker's rounding. float base = floor(x); @@ -3857,51 +3857,51 @@ return a / b;`,DIV_PACKED=` return base + 1.0; } } -`,round4=unaryKernelFunc2({opSnippet:ROUND}),roundConfig2={kernelName:Round,backendName:"webgl",kernelFunc:round4},RSQRT="return inversesqrt(x);",rsqrt3=unaryKernelFunc2({opSnippet:RSQRT,cpuKernelImpl:rsqrtImplCPU}),rsqrtConfig2={kernelName:Rsqrt,backendName:"webgl",kernelFunc:rsqrt3},ScatterProgram=class{constructor(updateSize,sliceDim,indicesRank,updatesRank,strides,shape,summingDupeIndex=!0){this.variableNames=["updates","indices","defaultValue"],this.outputShape=shape;let stridesType=getCoordsDataType(strides.length),dtype=getCoordsDataType(shape.length),indicesString="";indicesRank===1?indicesString="i":indicesRank===2&&(indicesString="i, j");let indicesSnippet=`getIndices(${indicesString})`,updatesString="";updatesRank===1?updatesString="i":updatesRank===2&&(updatesString="i, coords[1]");let updatesSnippet=`getUpdates(${updatesString})`,strideString=sliceDim>1?"strides[j]":"strides";this.userCode=` - ${stridesType} strides = ${stridesType}(${strides}); +`,eee=Ye({opSnippet:QQ}),tee={kernelName:mi,backendName:"webgl",kernelFunc:eee},nee="return inversesqrt(x);",aee=Ye({opSnippet:nee,cpuKernelImpl:VK}),ree={kernelName:fi,backendName:"webgl",kernelFunc:aee},h2=class{constructor(e,t,n,a,r,s,i=!0){this.variableNames=["updates","indices","defaultValue"],this.outputShape=s;let o=mt(r.length),l=mt(s.length),c="";n===1?c="i":n===2&&(c="i, j");let u=`getIndices(${c})`,p="";a===1?p="i":a===2&&(p="i, coords[1]");let d=`getUpdates(${p})`,h=t>1?"strides[j]":"strides";this.userCode=` + ${o} strides = ${o}(${r}); void main() { - ${dtype} coords = getOutputCoords(); + ${l} coords = getOutputCoords(); float sum = 0.0; bool found = false; - for (int i = 0; i < ${updateSize}; i++) { + for (int i = 0; i < ${e}; i++) { int flattenedIndex = 0; - for (int j = 0; j < ${sliceDim}; j++) { - int index = round(${indicesSnippet}); - flattenedIndex += index * ${strideString}; + for (int j = 0; j < ${t}; j++) { + int index = round(${u}); + flattenedIndex += index * ${h}; } if (flattenedIndex == coords[0]) { - sum += ${updatesSnippet}; + sum += ${d}; found = true; } } setOutput(mix(getDefaultValue(), sum, float(found))); } - `}};function scatterNd2(args){let{inputs,backend:backend2,attrs}=args,{indices,updates}=inputs,{shape}=attrs,{sliceRank,numUpdates,sliceSize,strides,outputSize}=backend_util_exports.calculateShapes(updates,indices,shape),flattenShape=[outputSize/sliceSize,sliceSize];if(outputSize===0)return backend2.makeTensorInfo(shape,indices.dtype);let flattenIndices=reshape4({inputs:{x:indices},backend:backend2,attrs:{shape:[numUpdates,sliceRank]}}),flattenX=reshape4({inputs:{x:updates},backend:backend2,attrs:{shape:[numUpdates,sliceSize]}}),defaultValue=backend2.makeTensorInfo([],"float32",new Float32Array([0])),program=new ScatterProgram(numUpdates,sliceRank,flattenIndices.shape.length,flattenX.shape.length,strides,flattenShape),res=backend2.runWebGLProgram(program,[flattenX,flattenIndices,defaultValue],flattenX.dtype),reshaped=reshape4({inputs:{x:res},backend:backend2,attrs:{shape}});return backend2.disposeIntermediateTensorInfo(flattenIndices),backend2.disposeIntermediateTensorInfo(flattenX),backend2.disposeIntermediateTensorInfo(res),backend2.disposeIntermediateTensorInfo(defaultValue),reshaped}var scatterNdConfig2={kernelName:ScatterNd,backendName:"webgl",kernelFunc:scatterNd2},SelectProgram=class{constructor(cRank,shape,rank){this.variableNames=["c","a","b"],this.outputShape=shape;let cCoords,abCoords;if(rank>4)throw Error(`Where for rank ${rank} is not yet supported`);if(rank===1)abCoords="resRC",cCoords="resRC";else{let currentCoords=["resRC.x","resRC.y","resRC.z","resRC.w"],cCoordVars=[],abCoordVars=[];for(let i=0;i4)throw Error(`Where for rank ${n} is not yet supported`);if(n===1)r="resRC",a="resRC";else{let i=["resRC.x","resRC.y","resRC.z","resRC.w"],o=[],l=[];for(let c=0;c= 1.0) { - setOutput(getA(${abCoords})); + setOutput(getA(${r})); } else { - setOutput(getB(${abCoords})); + setOutput(getB(${r})); } } - `}};function select2(args){let{inputs,backend:backend2}=args,{condition,t,e}=inputs,program=new SelectProgram(condition.shape.length,t.shape,t.shape.length);return backend2.runWebGLProgram(program,[condition,t,e],upcastType(t.dtype,e.dtype))}var selectConfig2={kernelName:Select,backendName:"webgl",kernelFunc:select2},SELU=` + `}};function lee(e){let{inputs:t,backend:n}=e,{condition:a,t:r,e:s}=t,i=new oee(a.shape.length,r.shape,r.shape.length);return n.runWebGLProgram(i,[a,r,s],pa(r.dtype,s.dtype))}var uee={kernelName:Sl,backendName:"webgl",kernelFunc:lee},cee=` // Stable and Attracting Fixed Point (0, 1) for Normalized Weights. // see: https://arxiv.org/abs/1706.02515 - float scaleAlpha = ${backend_util_exports.SELU_SCALEALPHA}; - float scale = ${backend_util_exports.SELU_SCALE}; + float scaleAlpha = ${_.SELU_SCALEALPHA}; + float scale = ${_.SELU_SCALE}; return (x >= 0.0) ? scale * x : scaleAlpha * (exp(x) - 1.0); -`,selu3=unaryKernelFunc2({opSnippet:SELU}),seluConfig2={kernelName:Selu,backendName:"webgl",kernelFunc:selu3},SIGMOID="return 1.0 / (1.0 + exp(-1.0 * x));",sigmoid3=unaryKernelFunc2({opSnippet:SIGMOID}),sigmoidConfig2={kernelName:Sigmoid,backendName:"webgl",kernelFunc:sigmoid3},SIGN=` +`,pee=Ye({opSnippet:cee}),dee={kernelName:Cl,backendName:"webgl",kernelFunc:pee},hee="return 1.0 / (1.0 + exp(-1.0 * x));",mee=Ye({opSnippet:hee}),fee={kernelName:yi,backendName:"webgl",kernelFunc:mee},gee=` if (isnan(x)) { return 0.0; } return sign(x); -`,sign3=unaryKernelFunc2({opSnippet:SIGN}),signConfig2={kernelName:Sign,backendName:"webgl",kernelFunc:sign3},SIN=CHECK_NAN_SNIPPET_UNARY+` +`,yee=Ye({opSnippet:gee}),bee={kernelName:Fl,backendName:"webgl",kernelFunc:yee},xee=SS+` return sin(x); -`,sin3=unaryKernelFunc2({opSnippet:SIN}),sinConfig2={kernelName:Sin,backendName:"webgl",kernelFunc:sin3},SINH=` +`,vee=Ye({opSnippet:xee}),wee={kernelName:gi,backendName:"webgl",kernelFunc:vee},kee=` float e2x = exp(x); return (e2x - 1.0 / e2x) / 2.0; -`,sinh3=unaryKernelFunc2({opSnippet:SINH}),sinhConfig2={kernelName:Sinh,backendName:"webgl",kernelFunc:sinh3},SOFTPLUS=` +`,Iee=Ye({opSnippet:kee}),Nee={kernelName:_l,backendName:"webgl",kernelFunc:Iee},Tee=` float epsilon = 1.1920928955078125e-7; float threshold = log(epsilon) + 2.0; @@ -3921,44 +3921,44 @@ return a / b;`,DIV_PACKED=` result = log(exp_x + 1.0); } return result; -`,softplus3=unaryKernelFunc2({opSnippet:SOFTPLUS}),softplusConfig2={kernelName:Softplus,backendName:"webgl",kernelFunc:softplus3},spaceToBatchND3=args=>{let{inputs,backend:backend2,attrs}=args,{x}=inputs,{blockShape,paddings}=attrs;util_exports.assert(x.shape.length<=4,()=>"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet");let prod5=blockShape.reduce((a,b)=>a*b),completePaddings=[[0,0]];completePaddings.push(...paddings);for(let i=1+blockShape.length;ibackend2.disposeIntermediateTensorInfo(t)),result},spaceToBatchNDConfig2={kernelName:SpaceToBatchND,backendName:"webgl",kernelFunc:spaceToBatchND3};function sparseToDense3(args){let{inputs,backend:backend2,attrs}=args,{sparseIndices,sparseValues,defaultValue}=inputs,{outputShape}=attrs,{sliceRank,numUpdates,strides,outputSize}=backend_util_exports.calculateShapes(sparseValues,sparseIndices,outputShape),sumDupeIndices=!1,program=new ScatterProgram(numUpdates,sliceRank,sparseIndices.shape.length,sparseValues.shape.length,strides,[outputSize,1],sumDupeIndices),res=backend2.runWebGLProgram(program,[sparseValues,sparseIndices,defaultValue],sparseValues.dtype),reshaped=reshape4({inputs:{x:res},backend:backend2,attrs:{shape:outputShape}});return backend2.disposeIntermediateTensorInfo(res),reshaped}var sparseToDenseConfig2={kernelName:SparseToDense,backendName:"webgl",kernelFunc:sparseToDense3};function splitV2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{numOrSizeSplits,axis}=attrs,$axis=util_exports.parseAxisParam(axis,x.shape)[0],splitSizes=backend_util_exports.prepareSplitSize(x,numOrSizeSplits,$axis),xRank=x.shape.length,begin=new Array(xRank).fill(0),size=x.shape.slice();return splitSizes.map(s=>{let sliceSize=[...size];sliceSize[$axis]=s;let sliceT=slice3({inputs:{x},backend:backend2,attrs:{begin,size:sliceSize}});return begin[$axis]+=s,sliceT})}var splitVConfig2={kernelName:SplitV,backendName:"webgl",kernelFunc:splitV2},SQRT="return sqrt(x);",sqrt3=unaryKernelFunc2({opSnippet:SQRT}),sqrtConfig2={kernelName:Sqrt,backendName:"webgl",kernelFunc:sqrt3},SQUARE="return x * x;",square3=unaryKernelFunc2({opSnippet:SQUARE}),squareConfig2={kernelName:Square,backendName:"webgl",kernelFunc:square3},SQUARED_DIFFERENCE="return (a - b) * (a - b);",squaredDifference3=binaryKernelFunc2({opSnippet:SQUARED_DIFFERENCE,packedOpSnippet:SQUARED_DIFFERENCE}),squaredDifferenceConfig2={kernelName:SquaredDifference,backendName:"webgl",kernelFunc:squaredDifference3};function step3({inputs,attrs,backend:backend2}){let{x}=inputs,opSnippet=CHECK_NAN_SNIPPET+` - return x > 0.0 ? 1.0 : float(${attrs.alpha}); - `,program=new UnaryOpProgram(x.shape,opSnippet);return backend2.runWebGLProgram(program,[x],x.dtype)}var stepConfig2={kernelName:Step,backendName:"webgl",kernelFunc:step3},StridedSliceProgram=class{constructor(begin,strides,size){this.variableNames=["x"],this.outputShape=size;let rank=size.length,inputDtype=getCoordsDataType(size.length),dtype=getCoordsDataType(size.length),newCoords="";if(rank===1)newCoords="coords * strides + begin";else{let outputAxis=0;newCoords=size.map((_,i)=>(outputAxis++,size.length===1?`coords * strides[${i}] + begin[${i}]`:`coords[${outputAxis-1}] * strides[${i}] + begin[${i}]`)).join(",")}this.userCode=` - ${inputDtype} begin = ${inputDtype}(${begin}); - ${inputDtype} strides = ${inputDtype}(${strides}); +`,See=Ye({opSnippet:Tee}),Cee={kernelName:Al,backendName:"webgl",kernelFunc:See},Eee=e=>{let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{blockShape:s,paddings:i}=a;k.assert(r.shape.length<=4,()=>"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet");let o=s.reduce((y,b)=>y*b),l=[[0,0]];l.push(...i);for(let y=1+s.length;yn.disposeIntermediateTensorInfo(y)),g},_ee={kernelName:Sc,backendName:"webgl",kernelFunc:Eee};function Fee(e){let{inputs:t,backend:n,attrs:a}=e,{sparseIndices:r,sparseValues:s,defaultValue:i}=t,{outputShape:o}=a,{sliceRank:l,numUpdates:c,strides:u,outputSize:p}=_.calculateShapes(s,r,o),d=!1,h=new h2(c,l,r.shape.length,s.shape.length,u,[p,1],d),m=n.runWebGLProgram(h,[s,r,i],s.dtype),f=xe({inputs:{x:m},backend:n,attrs:{shape:o}});return n.disposeIntermediateTensorInfo(m),f}var Aee={kernelName:dh,backendName:"webgl",kernelFunc:Fee};function $ee(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{numOrSizeSplits:s,axis:i}=a,o=k.parseAxisParam(i,r.shape)[0],l=_.prepareSplitSize(r,s,o),c=r.shape.length,u=new Array(c).fill(0),p=r.shape.slice();return l.map(d=>{let h=[...p];h[o]=d;let m=_p({inputs:{x:r},backend:n,attrs:{begin:u,size:h}});return u[o]+=d,m})}var Dee={kernelName:$l,backendName:"webgl",kernelFunc:$ee},Mee="return sqrt(x);",Ree=Ye({opSnippet:Mee}),Pee={kernelName:bi,backendName:"webgl",kernelFunc:Ree},Oee="return x * x;",Lee=Ye({opSnippet:Oee}),zee={kernelName:Cc,backendName:"webgl",kernelFunc:Lee},m2="return (a - b) * (a - b);",Bee=on({opSnippet:m2,packedOpSnippet:m2}),Wee={kernelName:wi,backendName:"webgl",kernelFunc:Bee};function Vee({inputs:e,attrs:t,backend:n}){let{x:a}=e,r=Oa+` + return x > 0.0 ? 1.0 : float(${t.alpha}); + `,s=new ys(a.shape,r);return n.runWebGLProgram(s,[a],a.dtype)}var Uee={kernelName:Ll,backendName:"webgl",kernelFunc:Vee},Gee=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=n;let a=n.length,r=mt(n.length),s=mt(n.length),i="";if(a===1)i="coords * strides + begin";else{let o=0;i=n.map((l,c)=>(o++,n.length===1?`coords * strides[${c}] + begin[${c}]`:`coords[${o-1}] * strides[${c}] + begin[${c}]`)).join(",")}this.userCode=` + ${r} begin = ${r}(${e}); + ${r} strides = ${r}(${t}); void main() { - ${dtype} coords = getOutputCoords(); - setOutput(getX(${newCoords})); + ${s} coords = getOutputCoords(); + setOutput(getX(${i})); } - `}};function stridedSlice3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask}=attrs,{nonStrided,$begin,$strides,size,newShape,outShape}=slice_util_exports.sliceInfo(x.shape,begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask),$x=reshape4({inputs:{x},backend:backend2,attrs:{shape:newShape}}),result;if(nonStrided){let sliced=slice3({inputs:{x:$x},backend:backend2,attrs:{begin:$begin,size}});result=reshape4({inputs:{x:sliced},backend:backend2,attrs:{shape:outShape}}),backend2.disposeIntermediateTensorInfo(sliced)}else if(outShape.some(axis=>axis===0))result=backend2.makeTensorInfo(outShape,x.dtype,[]);else if(backend2.shouldExecuteOnCPU([$x])){let values=backend2.texData.get($x.dataId).values,xBuf=buffer($x.shape,$x.dtype,values),resultValues=stridedSliceImplCPU(outShape,xBuf,$strides,$begin);result=backend2.makeTensorInfo(outShape,$x.dtype,resultValues.values)}else{let program=new StridedSliceProgram($begin,$strides,outShape);result=backend2.runWebGLProgram(program,[$x],$x.dtype)}let resultReshaped=reshape4({inputs:{x:result},backend:backend2,attrs:{shape:outShape}});return backend2.disposeIntermediateTensorInfo($x),backend2.disposeIntermediateTensorInfo(result),resultReshaped}var stridedSliceConfig2={kernelName:StridedSlice,backendName:"webgl",kernelFunc:stridedSlice3},TAN="return tan(x);",tan3=unaryKernelFunc2({opSnippet:TAN}),tanConfig2={kernelName:Tan,backendName:"webgl",kernelFunc:tan3},TANH=` + `}};function Hee(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{begin:s,end:i,strides:o,beginMask:l,endMask:c,ellipsisMask:u,newAxisMask:p,shrinkAxisMask:d}=a,{nonStrided:h,$begin:m,$strides:f,size:g,newShape:y,outShape:b}=hn.sliceInfo(r.shape,s,i,o,l,c,u,p,d),x=xe({inputs:{x:r},backend:n,attrs:{shape:y}}),v;if(h){let T=_p({inputs:{x},backend:n,attrs:{begin:m,size:g}});v=xe({inputs:{x:T},backend:n,attrs:{shape:b}}),n.disposeIntermediateTensorInfo(T)}else if(b.some(T=>T===0))v=n.makeTensorInfo(b,r.dtype,[]);else if(n.shouldExecuteOnCPU([x])){let T=n.texData.get(x.dataId).values,E=Le(x.shape,x.dtype,T),A=GK(b,E,f,m);v=n.makeTensorInfo(b,x.dtype,A.values)}else{let T=new Gee(m,f,b);v=n.runWebGLProgram(T,[x],x.dtype)}let N=xe({inputs:{x:v},backend:n,attrs:{shape:b}});return n.disposeIntermediateTensorInfo(x),n.disposeIntermediateTensorInfo(v),N}var jee={kernelName:Dl,backendName:"webgl",kernelFunc:Hee},qee="return tan(x);",Kee=Ye({opSnippet:qee}),Xee={kernelName:Ml,backendName:"webgl",kernelFunc:Kee},Yee=` float e2x = exp(-2.0 * abs(x)); return sign(x) * (1.0 - e2x) / (1.0 + e2x); -`,tanh4=unaryKernelFunc2({opSnippet:TANH}),tanhConfig2={kernelName:Tanh,backendName:"webgl",kernelFunc:tanh4},TileProgram=class{constructor(aShape,reps){this.variableNames=["A"];let outputShape=new Array(aShape.length);for(let i=0;i5)throw Error(`Tile for rank ${rank} is not yet supported`);if(rank===1)return`imod(resRC, ${aShape[0]})`;let currentCoords=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u"],sourceCoords=[];for(let i=0;iutil_exports.decodeString(d)),buf=buffer(x.shape,x.dtype,decodedData),outBuf=tileImplCPU(buf,reps);return backend2.makeTensorInfo(outBuf.shape,outBuf.dtype,outBuf.values)}let program=new TileProgram(x.shape,reps);return backend2.runWebGLProgram(program,[x],x.dtype)}var tileConfig2={kernelName:Tile,backendName:"webgl",kernelFunc:tile4};function topK2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{k,sorted}=attrs,xVals=backend2.readSync(x.dataId),[allTopKVals,allTopKIndices]=topKImplCPU(xVals,x.shape,x.dtype,k,sorted);return[backend2.makeTensorInfo(allTopKVals.shape,allTopKVals.dtype,allTopKVals.values),backend2.makeTensorInfo(allTopKIndices.shape,allTopKIndices.dtype,allTopKIndices.values)]}var topKConfig2={kernelName:TopK,backendName:"webgl",kernelFunc:topK2};function unique4(args){let{inputs,attrs,backend:backend2}=args,{axis}=attrs,{x}=inputs;assertNotComplex2(x,"unique"),console.warn("WARNING: ","UI might be locked temporarily as data is being downloaded");let values=backend2.readSync(x.dataId),{outputValues,outputShape,indices}=uniqueImplCPU(values,axis,x.shape,x.dtype);return[backend2.makeTensorInfo(outputShape,x.dtype,outputValues),backend2.makeTensorInfo([indices.length],"int32",indices)]}var uniqueConfig2={kernelName:Unique,backendName:"webgl",kernelFunc:unique4};function unpack2(args){let{inputs,backend:backend2,attrs}=args,{value}=inputs,{axis}=attrs;axis<0&&(axis+=value.shape.length);let x=value,xRank=x.shape.length,num=value.shape[axis],outShape=new Array(xRank-1),outIndex=0;for(let i=0;ibackend2.disposeIntermediateTensorInfo(t)),res}var unpackConfig2={kernelName:Unpack,backendName:"webgl",kernelFunc:unpack2},SegmentOpProgram=class{constructor(segOpInfo,segOpType){this.variableNames=["x","segmentIds"];let windowSize=segOpInfo.windowSize,batchSize=segOpInfo.batchSize,inSize=segOpInfo.inSize,numSegments=segOpInfo.numSegments,outSize=numSegments*Math.ceil(inSize/windowSize);this.outputShape=[batchSize,outSize];let initializationValue="0.0",returnValue="sumValue",windowSizeNearestVec4=Math.floor(windowSize/4)*4,windowSizeVec4Remainder=windowSize%4,updateSnippet=` + `}};function Qee(e){let t=e.length;if(t>5)throw Error(`Tile for rank ${t} is not yet supported`);if(t===1)return`imod(resRC, ${e[0]})`;let n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u"],a=[];for(let r=0;rk.decodeString(u)),l=Le(r.shape,r.dtype,o),c=jK(l,s);return n.makeTensorInfo(c.shape,c.dtype,c.values)}let i=new ete(r.shape,s);return n.runWebGLProgram(i,[r],r.dtype)}var tte={kernelName:Xr,backendName:"webgl",kernelFunc:f2};function nte(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{k:s,sorted:i}=a,o=n.readSync(r.dataId),[l,c]=qK(o,r.shape,r.dtype,s,i);return[n.makeTensorInfo(l.shape,l.dtype,l.values),n.makeTensorInfo(c.shape,c.dtype,c.values)]}var ate={kernelName:Rl,backendName:"webgl",kernelFunc:nte};function rte(e){let{inputs:t,attrs:n,backend:a}=e,{axis:r}=n,{x:s}=t;Tp(s,"unique"),console.warn("WARNING: ","UI might be locked temporarily as data is being downloaded");let i=a.readSync(s.dataId),{outputValues:o,outputShape:l,indices:c}=KK(i,r,s.shape,s.dtype);return[a.makeTensorInfo(l,s.dtype,o),a.makeTensorInfo([c.length],"int32",c)]}var ste={kernelName:hh,backendName:"webgl",kernelFunc:rte};function ite(e){let{inputs:t,backend:n,attrs:a}=e,{value:r}=t,{axis:s}=a;s<0&&(s+=r.shape.length);let i=r,o=i.shape.length,l=r.shape[s],c=new Array(o-1),u=0;for(let f=0;fn.disposeIntermediateTensorInfo(f)),m}var ote={kernelName:Pl,backendName:"webgl",kernelFunc:ite},lte=class{constructor(e,t){this.variableNames=["x","segmentIds"];let n=e.windowSize,a=e.batchSize,r=e.inSize,s=e.numSegments,i=s*Math.ceil(r/n);this.outputShape=[a,i];let o="0.0",l="sumValue",c=Math.floor(n/4)*4,u=n%4,p=` sumValue += dot(values, segFilter); - `,checkValueOutOfBounds="";inSize%windowSize>0&&(checkValueOutOfBounds=` - if (inIdx < 0 || inIdx >= ${inSize}) { + `,d="";r%n>0&&(d=` + if (inIdx < 0 || inIdx >= ${r}) { return initializationValue; } - `);let checkSegmentIdOutOfBounds="";inSize%windowSize>0&&(checkSegmentIdOutOfBounds=` - if (inIdx < 0 || inIdx >= ${inSize}) { + `);let h="";r%n>0&&(h=` + if (inIdx < 0 || inIdx >= ${r}) { return -1.0; } `),this.userCode=` - const float initializationValue = ${initializationValue}; + const float initializationValue = ${o}; float getValue(int batch, int inIdx) { - ${checkValueOutOfBounds} + ${d} return getX(batch, inIdx); } float getSegmentIdAtIndex(int inIdx) { - ${checkSegmentIdOutOfBounds} + ${h} return getSegmentIds(inIdx); } @@ -3967,12 +3967,12 @@ return a / b;`,DIV_PACKED=` int batch = coords[0]; int outIdx = coords[1]; int inOffset = int(floor(float(outIdx) / float( - ${numSegments})) * float(${windowSize})); - int currentSeg = int(mod(float(outIdx), float(${numSegments}))); + ${s})) * float(${n})); + int currentSeg = int(mod(float(outIdx), float(${s}))); float sumValue = 0.0; - for (int i = 0; i < ${windowSizeNearestVec4}; i += 4) { + for (int i = 0; i < ${c}; i += 4) { int inIdx = inOffset + i; vec4 values = vec4( getValue(batch, inIdx), @@ -3988,11 +3988,11 @@ return a / b;`,DIV_PACKED=` int(getSegmentIdAtIndex(inIdx + 3)) == currentSeg ? 1 : 0 ); - ${updateSnippet} + ${p} } - int inIdx = inOffset + ${windowSizeNearestVec4}; - if (${windowSizeVec4Remainder===1}) { + int inIdx = inOffset + ${c}; + if (${u===1}) { vec4 values = vec4( getValue(batch, inIdx), initializationValue, @@ -4009,8 +4009,8 @@ return a / b;`,DIV_PACKED=` 0 ); - ${updateSnippet} - } else if (${windowSizeVec4Remainder===2}) { + ${p} + } else if (${u===2}) { vec4 values = vec4( getValue(batch, inIdx), getValue(batch, inIdx + 1), @@ -4025,8 +4025,8 @@ return a / b;`,DIV_PACKED=` 0 ); - ${updateSnippet} - } else if (${windowSizeVec4Remainder===3}) { + ${p} + } else if (${u===3}) { vec4 values = vec4( getValue(batch, inIdx), getValue(batch, inIdx + 1), @@ -4041,11 +4041,11 @@ return a / b;`,DIV_PACKED=` 0 ); - ${updateSnippet} + ${p} } - setOutput(${returnValue}); + setOutput(${l}); } - `}};function unsortedSegmentSum3(args){let{inputs,backend:backend2,attrs}=args,{x,segmentIds}=inputs,{numSegments}=attrs,xRank=x.shape.length,toDispose=[],axis=0,permutation=backend_util_exports.getAxesPermutation([axis],xRank),permutedX=x;permutation!=null&&(permutedX=transpose3({inputs:{x},backend:backend2,attrs:{perm:permutation}}),toDispose.push(permutedX),axis=backend_util_exports.getInnerMostAxes(1,xRank)[0]);let outShape=backend_util_exports.segment_util.computeOutShape(permutedX.shape,axis,numSegments),inSize=util_exports.sizeFromShape([permutedX.shape[axis]]),a2D=reshape4({inputs:{x:permutedX},backend:backend2,attrs:{shape:[-1,inSize]}});toDispose.push(a2D);let outputDType=sumOutType(x.dtype),segOpCompute=(x2,segOpType,segmentIds2,dtype,numSegments2)=>{let batchSize=x2.shape[0],inSize2=x2.shape[1],windowSize=backend_util_exports.segment_util.segOpComputeOptimalWindowSize(inSize2,numSegments2),segOpInfo={windowSize,inSize:inSize2,batchSize,numSegments:numSegments2},program=new SegmentOpProgram(segOpInfo,segOpType),output=backend2.compileAndRun(program,[x2,segmentIds2],dtype);if(toDispose.push(output),output.shape[1]===numSegments2)return output;let rangeInfo=range4({backend:backend2,attrs:{start:0,stop:numSegments2,step:1,dtype:"float32"}}),tileInfo=tile4({inputs:{x:rangeInfo},backend:backend2,attrs:{reps:[inSize2/windowSize]}});return toDispose.push(rangeInfo),toDispose.push(tileInfo),segOpCompute(output,segOpType,tileInfo,dtype,numSegments2)},segOpResult=segOpCompute(a2D,"unsortedSegmentSum",segmentIds,outputDType,numSegments),reshaped=reshape4({inputs:{x:segOpResult},backend:backend2,attrs:{shape:outShape}}),result=reshaped;if(permutation!=null){toDispose.push(reshaped);let perm=backend_util_exports.getUndoAxesPermutation(permutation);result=transpose3({inputs:{x:result},backend:backend2,attrs:{perm}})}return toDispose.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),result}var unsortedSegmentSumConfig2={kernelName:UnsortedSegmentSum,backendName:"webgl",kernelFunc:unsortedSegmentSum3},kernelConfigs2=[LRNConfig,LRNGradConfig,_fusedMatMulConfig2,absConfig2,acosConfig2,acoshConfig2,addConfig2,addNConfig2,allConfig2,anyConfig2,argMaxConfig2,argMinConfig2,asinConfig2,asinhConfig2,atan2Config2,atanConfig2,atanhConfig2,avgPool3DConfig2,avgPoolConfig2,avgPoolGrad3DConfig,avgPoolGradConfig3,batchMatMulConfig2,batchNormConfig2,batchToSpaceNDConfig2,bincountConfig2,castConfig2,ceilConfig2,clipByValueConfig,complexAbsConfig2,complexConfig2,concatConfig2,conv2DBackpropFilterConfig2,conv2DBackpropInputConfig2,conv2DConfig2,conv3DBackpropFilterV2Config2,conv3DBackpropInputConfig,conv3DConfig2,cosConfig2,coshConfig2,cropAndResizeConfig2,cumsumConfig2,denseBincountConfig2,depthToSpaceConfig2,depthwiseConv2dNativeBackpropFilterConfig2,depthwiseConv2dNativeBackpropInputConfig2,depthwiseConv2dNativeConfig2,diagConfig2,dilation2DConfig,eluConfig2,eluGradConfig3,equalConfig2,erfConfig2,expConfig2,expandDimsConfig2,expm1Config2,fftConfig2,fillConfig2,flipLeftRightConfig2,floorConfig2,floorDivConfig2,fromPixelsConfig,fusedConv2DConfig2,fusedDepthwiseConv2DConfig2,gatherNdConfig2,gatherV2Config2,greaterConfig2,greaterEqualConfig2,identityConfig2,ifftConfig2,imagConfig2,isFiniteConfig2,isInfConfig2,isNaNConfig2,leakyReluConfig2,lessConfig2,lessEqualConfig2,linSpaceConfig2,log1pConfig2,logConfig2,logicalAndConfig2,logicalNotConfig2,logicalOrConfig2,maxConfig2,maxPool3DConfig2,maxPoolConfig2,maxPoolGrad3DConfig,maxPoolGradConfig3,maxPoolWithArgmaxConfig2,maximumConfig2,meanConfig2,minConfig2,minimumConfig2,mirrorPadConfig2,modConfig2,multinomialConfig2,multiplyConfig2,negConfig2,nonMaxSuppressionV3Config2,nonMaxSuppressionV4Config2,nonMaxSuppressionV5Config2,notEqualConfig2,oneHotConfig2,onesLikeConfig2,packConfig2,padV2Config2,powConfig2,preluConfig2,prodConfig2,rangeConfig2,realConfig2,realDivConfig2,reciprocalConfig2,relu6Config2,reluConfig2,reshapeConfig2,resizeBilinearConfig2,resizeBilinearGradConfig3,resizeNearestNeighborConfig2,resizeNearestNeighborGradConfig3,reverseConfig2,rotateWithOffsetConfig2,roundConfig2,rsqrtConfig2,scatterNdConfig2,selectConfig2,seluConfig2,sigmoidConfig2,signConfig2,sinConfig2,sinhConfig2,sliceConfig2,softmaxConfig2,softplusConfig2,spaceToBatchNDConfig2,sparseToDenseConfig2,splitVConfig2,sqrtConfig2,squareConfig2,squaredDifferenceConfig2,stepConfig2,stridedSliceConfig2,subConfig2,sumConfig2,tanConfig2,tanhConfig2,tileConfig2,topKConfig2,transposeConfig2,uniqueConfig2,unpackConfig2,unsortedSegmentSumConfig2,zerosLikeConfig2];for(let kernelConfig of kernelConfigs2)registerKernel(kernelConfig);var version7="2.8.3",version8={"tfjs-core":version,"tfjs-backend-cpu":version5,"tfjs-backend-webgl":version6,"tfjs-data":version4,"tfjs-layers":version2,"tfjs-converter":version3,tfjs:version7},CppDType;(function(CppDType2){CppDType2[CppDType2.float32=0]="float32",CppDType2[CppDType2.int32=1]="int32",CppDType2[CppDType2.bool=2]="bool",CppDType2[CppDType2.string=3]="string",CppDType2[CppDType2.complex64=4]="complex64"})(CppDType||(CppDType={}));var FusableActivation;(function(FusableActivation2){FusableActivation2[FusableActivation2.linear=0]="linear",FusableActivation2[FusableActivation2.relu=1]="relu",FusableActivation2[FusableActivation2.relu6=2]="relu6",FusableActivation2[FusableActivation2.prelu=3]="prelu",FusableActivation2[FusableActivation2.leakyrelu=4]="leakyrelu"})(FusableActivation||(FusableActivation={}));var wasmFusedMatMul;function setup(backend2){wasmFusedMatMul=backend2.wasm.cwrap(_FusedMatMul,null,["number","array","number","number","array","number","number","number","number","number","number","number","number"])}function fusedBatchMatMul(args){let{inputs,backend:backend2,attrs}=args,{a,b,bias,preluActivationWeights}=inputs;if(a.dtype!=="float32"||b.dtype!=="float32")throw new Error("_FusedMatMul for non non-float32 tensors not yet supported.");let{transposeA,transposeB,activation:activation2,leakyreluAlpha}=attrs,aId=backend2.dataIdMap.get(a.dataId).id,bId=backend2.dataIdMap.get(b.dataId).id,biasId=0;if(bias!=null){let biasData=backend2.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`_FusedMatMul only supports rank-1 bias but got rank ${biasData.shape.length}.`);biasId=biasData.id}let preluActivationWeightsId=preluActivationWeights==null?0:backend2.dataIdMap.get(preluActivationWeights.dataId).id,fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedConv2D in the wasm backend.`);let leftDim=transposeA?a.shape[2]:a.shape[1],rightDim=transposeB?b.shape[1]:b.shape[2],batchDim=a.shape[0],out=backend2.makeOutput([batchDim,leftDim,rightDim],a.dtype),outId=backend2.dataIdMap.get(out.dataId).id,aShapeBytes=new Uint8Array(new Int32Array(a.shape).buffer),bShapeBytes=new Uint8Array(new Int32Array(b.shape).buffer);return wasmFusedMatMul(aId,aShapeBytes,a.shape.length,bId,bShapeBytes,b.shape.length,transposeA,transposeB,fusedActivation,biasId,preluActivationWeightsId,leakyreluAlpha||0,outId),out}var fusedMatMulConfig={kernelName:_FusedMatMul,backendName:"wasm",setupFunc:setup,kernelFunc:fusedBatchMatMul};function createUnaryKernelConfig(kernelName){let wasmFunc9;function setupFunc3(backend2){wasmFunc9=backend2.wasm.cwrap(kernelName,null,["number","number"])}function kernelFunc3(args){let{backend:backend2,inputs:{x}}=args,xId=backend2.dataIdMap.get(x.dataId).id,out=backend2.makeOutput(x.shape,x.dtype),outId=backend2.dataIdMap.get(out.dataId).id;return util_exports.sizeFromShape(out.shape)===0||wasmFunc9(xId,outId),out}return{kernelName,backendName:"wasm",setupFunc:setupFunc3,kernelFunc:kernelFunc3}}var absConfig3=createUnaryKernelConfig(Abs);function createBinaryKernelConfig(kernelName,supportsFullBroadcast17,dtype){let wasmFunc9;function setupFunc3(backend2){wasmFunc9=backend2.wasm.cwrap(kernelName,null,["number","array","number","number","array","number","number","number"])}function kernelFunc3(args){let{backend:backend2,inputs}=args,{a,b}=inputs,aId=backend2.dataIdMap.get(a.dataId).id,bId=backend2.dataIdMap.get(b.dataId).id,outputType=dtype!=null?dtype:a.dtype,newShape=backend_util_exports.assertAndGetBroadcastShape(a.shape,b.shape),out=backend2.makeOutput(newShape,outputType);if(util_exports.sizeFromShape(newShape)===0)return out;let aShapeBytes=new Uint8Array(new Int32Array(a.shape).buffer),bShapeBytes=new Uint8Array(new Int32Array(b.shape).buffer),outId=backend2.dataIdMap.get(out.dataId).id,kernelFunc4=()=>wasmFunc9(aId,aShapeBytes,a.shape.length,bId,bShapeBytes,b.shape.length,CppDType[a.dtype],outId);if(supportsFullBroadcast17&&a.dtype==="float32")return kernelFunc4(),out;let aBroadcastDims=backend_util_exports.getBroadcastDims(a.shape,newShape),bBroadcastDims=backend_util_exports.getBroadcastDims(b.shape,newShape),loopsOverAllOfA=aBroadcastDims.every((v,i)=>v===i),loopsOverAllOfB=bBroadcastDims.every((v,i)=>v===i);if(loopsOverAllOfA&&loopsOverAllOfB)return kernelFunc4(),out;throw new Error(`Broadcasting along outer dims is not yet supported for ${a.dtype} ${kernelName}.`)}return{kernelName,backendName:"wasm",setupFunc:setupFunc3,kernelFunc:kernelFunc3}}var supportsFullBroadcast=!0,addConfig3=createBinaryKernelConfig(Add,supportsFullBroadcast),wasmFunc;function setupFunc(backend2){wasmFunc=backend2.wasm.cwrap(AddN,null,["array","number","number","number"])}function addn(args){let{inputs,backend:backend2}=args,out=backend2.makeOutput(inputs[0].shape,inputs[0].dtype);if(util_exports.sizeFromShape(out.shape)===0)return out;let inputIds=inputs.map(x=>backend2.dataIdMap.get(x.dataId).id),inputIdsBytes=new Uint8Array(new Int32Array(inputIds).buffer),outId=backend2.dataIdMap.get(out.dataId).id;return wasmFunc(inputIdsBytes,inputIds.length,CppDType[out.dtype],outId),out}var addNConfig3={kernelName:AddN,backendName:"wasm",setupFunc,kernelFunc:addn};function identity4(args){let{inputs:{x},backend:backend2}=args,out=backend2.makeOutput(x.shape,x.dtype),inVals=backend2.typedArrayFromHeap(x);return backend2.typedArrayFromHeap(out).set(inVals),out}var identityConfig3={kernelName:Identity,backendName:"wasm",kernelFunc:identity4},wasmTranspose;function setup2(backend2){wasmTranspose=backend2.wasm.cwrap(Transpose,null,["number","array","number","number","number","array","number"])}function transpose4(args){let{inputs,backend:backend2,attrs}=args,[reducedShape,perm]=removeOneSizeDims(inputs.x.shape,attrs.perm),permIsNoOp=!0;for(let i=0;i=i&&(minValIdx===-1||newPerm[minValIdx]>newPerm[j])&&(minValIdx=j);newPerm[minValIdx]=i}return[newShape,newPerm]}var transposeConfig3={kernelName:Transpose,backendName:"wasm",kernelFunc:transpose4,setupFunc:setup2};function permuteAxesAndTranspose(x,axis,backend2){let xShape=x.shape,xRank=x.shape.length,originalAxes=util_exports.parseAxisParam(axis,xShape),axes=originalAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),xTransposed=null,inputWasTransposed=!1;if(permutedAxes!=null){let newShape=new Array(xRank);for(let i=0;i`new shape: ${$shape}, old shape: ${x.shape}. New shape and old shape must have the same number of elements.`),{dataId:x.dataId,shape:$shape,dtype:x.dtype}}var reshapeConfig3={kernelName:Reshape,backendName:"wasm",kernelFunc:reshape5},wasmBatchMatMul;function setup5(backend2){wasmBatchMatMul=backend2.wasm.cwrap(BatchMatMul,null,["number","array","number","number","array","number","number","number","number"])}function batchMatMul3(args){let{inputs,backend:backend2,attrs}=args,{a,b}=inputs,{transposeA,transposeB}=attrs;if(a.dtype!=="float32"||b.dtype!=="float32")throw new Error("BatchMatMul for non non-float32 tensors not yet supported.");let aRank=a.shape.length,bRank=b.shape.length,innerShapeA=transposeA?a.shape[aRank-2]:a.shape[aRank-1],innerShapeB=transposeB?b.shape[bRank-1]:b.shape[bRank-2],outerShapeA=transposeA?a.shape[aRank-1]:a.shape[aRank-2],outerShapeB=transposeB?b.shape[bRank-2]:b.shape[bRank-1],outerDimsA=a.shape.slice(0,-2),outerDimsB=b.shape.slice(0,-2),batchDimA=util_exports.sizeFromShape(outerDimsA),batchDimB=util_exports.sizeFromShape(outerDimsB),batchDimsCompatible=batchDimA===batchDimB||batchDimA===1||batchDimB===1;util_exports.assert(aRank>=2&&bRank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`);let outShape=(batchDimA>batchDimB?a.shape.slice(0,-2):b.shape.slice(0,-2)).concat([outerShapeA,outerShapeB]);util_exports.assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${a.shape} and ${b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let a3dShape=transposeA?[batchDimA,innerShapeA,outerShapeA]:[batchDimA,outerShapeA,innerShapeA],b3dShape=transposeB?[batchDimB,outerShapeB,innerShapeB]:[batchDimB,innerShapeB,outerShapeB],a3d=reshape5({inputs:{x:a},backend:backend2,attrs:{shape:a3dShape}}),b3d=reshape5({inputs:{x:b},backend:backend2,attrs:{shape:b3dShape}}),a3dId=backend2.dataIdMap.get(a3d.dataId).id,b3dId=backend2.dataIdMap.get(b3d.dataId).id,leftDim=transposeA?a3d.shape[2]:a3d.shape[1],rightDim=transposeB?b3d.shape[1]:b3d.shape[2],batchDim=Math.max(batchDimA,batchDimB),out=backend2.makeOutput([batchDim,leftDim,rightDim],a3d.dtype),outId=backend2.dataIdMap.get(out.dataId).id,aShapeBytes=new Uint8Array(new Int32Array(a3d.shape).buffer),bShapeBytes=new Uint8Array(new Int32Array(b3d.shape).buffer);return wasmBatchMatMul(a3dId,aShapeBytes,a3d.shape.length,b3dId,bShapeBytes,b3d.shape.length,transposeA,transposeB,outId),out.shape=outShape,out}var batchMatMulConfig3={kernelName:BatchMatMul,backendName:"wasm",setupFunc:setup5,kernelFunc:batchMatMul3};function cast5(args){let{inputs:{x},attrs:{dtype},backend:backend2}=args,out=backend2.makeOutput(x.shape,dtype),inVals=backend2.typedArrayFromHeap(x);return backend2.typedArrayFromHeap(out).set(inVals),out}var castConfig3={kernelName:Cast,backendName:"wasm",kernelFunc:cast5},wasmClip;function setup6(backend2){wasmClip=backend2.wasm.cwrap(ClipByValue,null,["number","number","number","number"])}function clip2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{clipValueMin,clipValueMax}=attrs,xId=backend2.dataIdMap.get(x.dataId).id,out=backend2.makeOutput(x.shape,x.dtype),outId=backend2.dataIdMap.get(out.dataId).id;return wasmClip(xId,clipValueMin,clipValueMax,outId),out}var clipByValueConfig2={kernelName:ClipByValue,backendName:"wasm",setupFunc:setup6,kernelFunc:clip2};function concat4(args){let{inputs,backend:backend2}=args,axis=util_exports.parseAxisParam(args.attrs.axis,inputs[0].shape)[0],outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),axis),$inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return identity4({inputs:{x:$inputs[0]},backend:backend2});let out=backend2.makeOutput(outShape,inputs[0].dtype);if(util_exports.sizeFromShape(outShape)===0)return out;let shapes=$inputs.map(t=>t.shape);if(backend_util_exports.assertParamsConsistent(shapes,axis),$inputs[0].dtype==="string"){let inputs2D=$inputs.map(t=>{let innerSize=util_exports.sizeFromShape(t.shape.slice(axis));return reshape5({inputs:{x:t},backend:backend2,attrs:{shape:[-1,innerSize]}})}),inputsValShapes=inputs2D.map(t=>({vals:backend2.readSync(t.dataId),shape:t.shape}));outShape=backend_util_exports.computeOutShape(inputs2D.map(t=>t.shape),1);let simplyConcat=inputs2D[0].shape[0]===1,outVals2=concatImpl(inputsValShapes,outShape,inputs[0].dtype,simplyConcat),finalOutShape=backend_util_exports.computeOutShape($inputs.map(t=>t.shape),axis);out.shape=finalOutShape;let outData=backend2.dataIdMap.get(out.dataId);return outData.stringBytes=backend_util_exports.fromStringArrayToUint8(outVals2),out}let batchDim=util_exports.sizeFromShape($inputs[0].shape.slice(0,axis)),sumInnerDims=0,innerDims=$inputs.map(input2=>{let innerDim=util_exports.sizeFromShape(input2.shape.slice(axis));return sumInnerDims+=innerDim,innerDim}),inVals=$inputs.map(input2=>backend2.typedArrayFromHeap(input2)),outVals=backend2.typedArrayFromHeap(out);for(let b=0;b`cumsum does not support ${x.dtype} tensors in the WASM backend`);let permutation=backend_util_exports.getAxesPermutation([axis],xRank),permutedX=x;permutation!==null&&(permutedX=transpose4({inputs:{x},attrs:{perm:permutation},backend:backend2}));let permutedAxis=backend_util_exports.getInnerMostAxes(1,xRank)[0];backend_util_exports.assertAxesAreInnerMostDims("cumsum",[permutedAxis],xRank);let permutedOut=backend2.makeOutput(permutedX.shape,permutedX.dtype),finalDim=permutedX.shape[permutedAxis],permutedXId=backend2.dataIdMap.get(permutedX.dataId).id,permutedOutId=backend2.dataIdMap.get(permutedOut.dataId).id;wasmCumsum(permutedXId,exclusive?1:0,reverse5?1:0,finalDim,permutedOutId,CppDType[x.dtype]);let out=permutedOut;if(permutation!==null){let undoPermutation=backend_util_exports.getUndoAxesPermutation(permutation);out=transpose4({inputs:{x:permutedOut},attrs:{perm:undoPermutation},backend:backend2}),backend2.disposeData(permutedX.dataId),backend2.disposeData(permutedOut.dataId)}return out}var cumsumConfig3={kernelName:Cumsum,backendName:"wasm",setupFunc:setup10,kernelFunc:cumsum4},wasmDepthToSpace;function setup11(backend2){wasmDepthToSpace=backend2.wasm.cwrap(DepthToSpace,null,["number","number","number","array","number","array","array","number","number"])}function depthToSpace4(args){let{backend:backend2,inputs,attrs}=args,{x}=inputs,{blockSize,dataFormat}=attrs;util_exports.assert(blockSize>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=dataFormat==="NHWC"?x.shape[1]:x.shape[2],inputWidth=dataFormat==="NHWC"?x.shape[2]:x.shape[3],inputDepth=dataFormat==="NHWC"?x.shape[3]:x.shape[1],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),outputShape=dataFormat==="NHWC"?[batchSize,outputHeight,outputWidth,outputDepth]:[batchSize,outputDepth,outputHeight,outputWidth],out=backend2.makeOutput(outputShape,"float32"),xId=backend2.dataIdMap.get(x.dataId).id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(x.shape)).buffer),outputShapeBytes=new Uint8Array(new Int32Array(outputShape).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(outputShape)).buffer),outId=backend2.dataIdMap.get(out.dataId).id;return wasmDepthToSpace(xId,blockSize,dataFormat==="NHWC"?1:0,xStridesBytes,x.shape.length-1,outputShapeBytes,outStridesBytes,outputShape.length,outId),out}var depthToSpaceConfig3={kernelName:DepthToSpace,backendName:"wasm",setupFunc:setup11,kernelFunc:depthToSpace4},wasmDepthwiseConv2d;function setup12(backend2){wasmDepthwiseConv2d=backend2.wasm.cwrap(DepthwiseConv2dNative,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function depthwiseConv2d5(args){let{inputs,attrs,backend:backend2}=args,{x,filter}=inputs,xId=backend2.dataIdMap.get(x.dataId).id,filterId=backend2.dataIdMap.get(filter.dataId).id,{strides,dilations,pad:pad3,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1]:dilations,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,$dilations,pad3,dimRoundingMode,!0),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,outputChannels=convInfo.outChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0;if(convInfo.dataFormat!=="channelsLast")throw new Error(`wasm backend DepthwiseConv2dNative does not support dataFormat:'${convInfo.dataFormat}'. Please use 'channelsLast'.`);let out=backend2.makeOutput(convInfo.outShape,"float32"),outId=backend2.dataIdMap.get(out.dataId).id;return wasmDepthwiseConv2d(xId,x.shape[0],x.shape[1],x.shape[2],filterId,filterHeight,filterWidth,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,outId),out}var depthwiseConv2dNativeConfig3={kernelName:DepthwiseConv2dNative,backendName:"wasm",setupFunc:setup12,kernelFunc:depthwiseConv2d5},supportsFullBroadcast2=!1,equalConfig3=createBinaryKernelConfig(Equal,supportsFullBroadcast2,"bool"),expConfig3=createUnaryKernelConfig(Exp);function expandDims5(args){let{inputs,attrs,backend:backend2}=args,{input:input2}=inputs,{dim}=attrs,inputRank=input2.shape.length,newShape=input2.shape.slice(),$dim=dim;return dim<0&&(util_exports.assert(-(inputRank+1)<=dim,()=>`Axis must be in the interval [${-(inputRank+1)}, ${inputRank}]`),$dim=inputRank+dim+1),newShape.splice($dim,0,1),reshape5({inputs:{x:input2},backend:backend2,attrs:{shape:newShape}})}var expandDimsConfig3={kernelName:ExpandDims,backendName:"wasm",kernelFunc:expandDims5};function fill4(args){let{attrs:{shape,value,dtype},backend:backend2}=args,out=backend2.makeOutput(shape,dtype);return backend2.typedArrayFromHeap(out).fill(value),out}var fillConfig3={kernelName:Fill,backendName:"wasm",kernelFunc:fill4},wasmFlipLeftRight;function setup13(backend2){wasmFlipLeftRight=backend2.wasm.cwrap(FlipLeftRight,null,["number","number","number","number","number","number"])}function flipLeftRight2(args){let{inputs,backend:backend2}=args,{image:image3}=inputs,out=backend2.makeOutput(image3.shape,image3.dtype),imageId=backend2.dataIdMap.get(image3.dataId).id,outId=backend2.dataIdMap.get(out.dataId).id,[batch,imageHeight,imageWidth,numChannels]=image3.shape;return wasmFlipLeftRight(imageId,batch,imageHeight,imageWidth,numChannels,outId),out}var flipLeftRightConfig3={kernelName:FlipLeftRight,backendName:"wasm",kernelFunc:flipLeftRight2,setupFunc:setup13},floorConfig3=createUnaryKernelConfig(Floor),supportsFullBroadcast3=!1,floorDivConfig3=createBinaryKernelConfig(FloorDiv,supportsFullBroadcast3),wasmBatchNorm;function setup14(backend2){wasmBatchNorm=backend2.wasm.cwrap(FusedBatchNorm,null,["number","number","number","number","number","number","number"])}function fusedBatchNorm(args){let{backend:backend2,inputs,attrs}=args,{varianceEpsilon}=attrs,{x,mean:mean4,variance,offset,scale:scale22}=inputs,xId=backend2.dataIdMap.get(x.dataId).id,meanId=backend2.dataIdMap.get(mean4.dataId).id,varianceId=backend2.dataIdMap.get(variance.dataId).id,offsetId=offset!=null?backend2.dataIdMap.get(offset.dataId).id:0,scaleId=scale22!=null?backend2.dataIdMap.get(scale22.dataId).id:0,out=backend2.makeOutput(x.shape,x.dtype);if(util_exports.sizeFromShape(x.shape)===0)return out;let outId=backend2.dataIdMap.get(out.dataId).id;return wasmBatchNorm(xId,meanId,varianceId,offsetId,scaleId,varianceEpsilon,outId),out}var fusedBatchNormConfig={kernelName:FusedBatchNorm,backendName:"wasm",setupFunc:setup14,kernelFunc:fusedBatchNorm},wasmFusedConv2d;function setup15(backend2){wasmFusedConv2d=backend2.wasm.cwrap(FusedConv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function fusedConv2d2(args){let{inputs,attrs,backend:backend2}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad3,dilations,dataFormat,dimRoundingMode,activation:activation2,leakyreluAlpha}=attrs,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad3,dimRoundingMode),fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedConv2D in the wasm backend.`);let xId=backend2.dataIdMap.get(x.dataId).id,filterId=backend2.dataIdMap.get(filter.dataId).id,outputChannels=convInfo.outChannels,biasId=0;if(bias!=null){let biasData=backend2.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`FusedConv2D only supports rank-1 bias but got rank ${biasData.shape.length}.`);if(biasData.shape[0]!==outputChannels)throw new Error(`FusedConv2D bias shape (${biasData.shape}) does not match the number of output channels (${outputChannels})`);biasId=biasData.id}let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0,batchSize=convInfo.batchSize,inHeight=convInfo.inHeight,inWidth=convInfo.inWidth;if(dataFormat!=="NHWC")throw new Error(`wasm backend FusedConv2D does not support dataFormat:'${dataFormat}'. Please use 'NHWC'.`);let out=backend2.makeOutput(convInfo.outShape,"float32"),outId=backend2.dataIdMap.get(out.dataId).id,preluActivationWeightsId=preluActivationWeights==null?0:backend2.dataIdMap.get(preluActivationWeights.dataId).id;return wasmFusedConv2d(xId,batchSize,inHeight,inWidth,filterId,filterHeight,filterWidth,biasId,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,fusedActivation,preluActivationWeightsId,leakyreluAlpha||0,outId),out}var fusedConv2DConfig3={kernelName:FusedConv2D,backendName:"wasm",setupFunc:setup15,kernelFunc:fusedConv2d2},wasmFusedDepthwiseConv2d;function setup16(backend2){wasmFusedDepthwiseConv2d=backend2.wasm.cwrap(FusedDepthwiseConv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function fusedDepthwiseConv2d(args){let{inputs,attrs,backend:backend2}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad3,dilations,dataFormat,dimRoundingMode,activation:activation2,leakyreluAlpha}=attrs,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad3,dimRoundingMode,!0),fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedDepthwiseConv2D in the wasm backend.`);let xId=backend2.dataIdMap.get(x.dataId).id,filterId=backend2.dataIdMap.get(filter.dataId).id,outputChannels=convInfo.outChannels,biasId=0;if(bias!=null){let biasData=backend2.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`FusedDepthwiseConv2D only supports rank-1 bias but got rank ${biasData.shape.length}.`);if(biasData.shape[0]!==outputChannels)throw new Error(`FusedDepthwiseConv2D bias shape (${biasData.shape}) does not match the number of output channels (${outputChannels})`);biasId=biasData.id}let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0,batchSize=convInfo.batchSize,inHeight=convInfo.inHeight,inWidth=convInfo.inWidth;if(dataFormat!=="NHWC")throw new Error(`wasm backend FusedDepthwiseConv2D does not support dataFormat:'${dataFormat}'. Please use 'NHWC'.`);let out=backend2.makeOutput(convInfo.outShape,"float32"),outId=backend2.dataIdMap.get(out.dataId).id,preluActivationWeightsId=preluActivationWeights==null?0:backend2.dataIdMap.get(preluActivationWeights.dataId).id;return wasmFusedDepthwiseConv2d(xId,batchSize,inHeight,inWidth,filterId,filterHeight,filterWidth,biasId,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,fusedActivation,preluActivationWeightsId,leakyreluAlpha||0,outId),out}var fusedDepthwiseConv2DConfig3={kernelName:FusedDepthwiseConv2D,backendName:"wasm",setupFunc:setup16,kernelFunc:fusedDepthwiseConv2d},wasmGatherNd;function setup17(backend2){wasmGatherNd=backend2.wasm.cwrap(GatherNd,null,["number","number","number","number","number","number","array","number"])}function gatherNd3(args){let{backend:backend2,inputs}=args,{params,indices}=inputs,[resultShape,numSlices,sliceSize,strides]=gather_nd_util_exports.prepareAndValidate(params,indices),out=backend2.makeOutput(resultShape,params.dtype);if(numSlices===0)return out;let indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],xId=backend2.dataIdMap.get(params.dataId).id,indicesId=backend2.dataIdMap.get(indices.dataId).id,stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outId=backend2.dataIdMap.get(out.dataId).id;return wasmGatherNd(xId,CppDType[params.dtype],indicesId,numSlices,sliceRank,sliceSize,stridesBytes,outId),out}var gatherNdConfig3={kernelName:GatherNd,backendName:"wasm",setupFunc:setup17,kernelFunc:gatherNd3},wasmGather;function setup18(backend2){wasmGather=backend2.wasm.cwrap("Gather",null,["number","number","array","number","number","number","array","number"])}function gatherV23(args){let{backend:backend2,inputs,attrs}=args,{x,indices}=inputs,{axis,batchDims}=attrs,parsedAxis=util_exports.parseAxisParam(axis,x.shape)[0],shapeInfo=backend_util_exports.segment_util.collectGatherOpShapeInfo(x,indices,parsedAxis,batchDims),flattenX=reshape5({inputs:{x},attrs:{shape:[shapeInfo.batchSize,shapeInfo.outerSize,shapeInfo.dimSize,shapeInfo.sliceSize]},backend:backend2}),indicesSize=util_exports.sizeFromShape(indices.shape),flattenIndex=reshape5({inputs:{x:indices},attrs:{shape:[shapeInfo.batchSize,indicesSize/shapeInfo.batchSize]},backend:backend2}),flattenOutputShape=[shapeInfo.batchSize,shapeInfo.outerSize,indicesSize/shapeInfo.batchSize,shapeInfo.sliceSize],out=backend2.makeOutput(flattenOutputShape,x.dtype);if(util_exports.sizeFromShape(x.shape)===0)return out;let stridesSize=flattenX.shape.length-1,xId=backend2.dataIdMap.get(flattenX.dataId).id,indicesId=backend2.dataIdMap.get(flattenIndex.dataId).id,outId=backend2.dataIdMap.get(out.dataId).id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(flattenX.shape)).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(flattenOutputShape)).buffer);return wasmGather(xId,CppDType[x.dtype],xStridesBytes,stridesSize,indicesId,shapeInfo.batchSize,outStridesBytes,outId),out.shape=shapeInfo.outputShape,out}var gatherV2Config3={kernelName:GatherV2,backendName:"wasm",setupFunc:setup18,kernelFunc:gatherV23},supportsFullBroadcast4=!1,greaterConfig3=createBinaryKernelConfig(Greater,supportsFullBroadcast4,"bool"),supportsFullBroadcast5=!1,greaterEqualConfig3=createBinaryKernelConfig(GreaterEqual,supportsFullBroadcast5,"bool"),wasmFunc3;function setupFunc2(backend2){wasmFunc3=backend2.wasm.cwrap(LeakyRelu,null,["number","number","number"])}function leakyRelu4(args){let{inputs:{x},attrs:{alpha},backend:backend2}=args,xId=backend2.dataIdMap.get(x.dataId).id,out=backend2.makeOutput(x.shape,x.dtype);if(util_exports.sizeFromShape(x.shape)!==0){let outId=backend2.dataIdMap.get(out.dataId).id;wasmFunc3(xId,alpha,outId)}return out}var leakyReluConfig3={kernelName:LeakyRelu,backendName:"wasm",setupFunc:setupFunc2,kernelFunc:leakyRelu4},supportsFullBroadcast6=!1,lessConfig3=createBinaryKernelConfig(Less,supportsFullBroadcast6,"bool"),supportsFullBroadcast7=!1,lessEqualConfig3=createBinaryKernelConfig(LessEqual,supportsFullBroadcast7,"bool"),logConfig3=createUnaryKernelConfig(Log),supportsFullBroadcast8=!1,logicalAndConfig3=createBinaryKernelConfig(LogicalAnd,supportsFullBroadcast8,"bool"),wasmMax;function setup19(backend2){wasmMax=backend2.wasm.cwrap(Max,null,["number, number, number"])}function max5(args){let{backend:backend2,inputs,attrs}=args,{reductionIndices:axis,keepDims}=attrs,{x}=inputs,inputId=backend2.dataIdMap.get(x.dataId).id,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend2);if(inputWasTransposed){let transposedId=backend2.dataIdMap.get(transposed.dataId).id;input2=transposed,inputId=transposedId}let inputRank=input2.shape.length;backend_util_exports.assertAxesAreInnerMostDims("max",axes,inputRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,axes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend2.makeOutput(outShape,x.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend2.dataIdMap.get(out.dataId).id;wasmMax(inputId,reduceSize,outId)}if(inputWasTransposed&&backend2.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var maxConfig3={kernelName:Max,backendName:"wasm",setupFunc:setup19,kernelFunc:max5},supportsFullBroadcast9=!1,maximumConfig3=createBinaryKernelConfig(Maximum,supportsFullBroadcast9),wasmMaxPool;function setup20(backend2){wasmMaxPool=backend2.wasm.cwrap(MaxPool,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function maxPool4(args){let{inputs,attrs,backend:backend2}=args,x=inputs.x,xId=backend2.dataIdMap.get(x.dataId).id,{filterSize,strides,pad:pad3,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad3,dimRoundingMode),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,outputChannels=convInfo.outChannels;if(convInfo.dataFormat!=="channelsLast")throw new Error(`wasm backend does not support dataFormat:'${convInfo.dataFormat}'. Please use 'channelsLast'.`);let out=backend2.makeOutput(convInfo.outShape,"float32"),outId=backend2.dataIdMap.get(out.dataId).id;return wasmMaxPool(xId,x.shape[0],x.shape[1],x.shape[2],filterHeight,filterWidth,padTop,padRight,padBottom,padLeft,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,outId),out}var maxPoolConfig3={kernelName:MaxPool,backendName:"wasm",setupFunc:setup20,kernelFunc:maxPool4},wasmMean;function setup21(backend2){wasmMean=backend2.wasm.cwrap(Mean,null,["number, number, number"])}function mean3(args){let{backend:backend2,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend2.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend2),reductionAxes=axes;if(inputWasTransposed){let transposedId=backend2.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId,reductionAxes=backend_util_exports.getInnerMostAxes(reductionAxes.length,input2.shape.length))}backend_util_exports.assertAxesAreInnerMostDims("mean",reductionAxes,input2.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,reductionAxes),reduceSize=util_exports.sizeFromShape(reduceShape),castedInput=input2;input2.dtype!=="float32"&&(castedInput=cast5({backend:backend2,inputs:{x:input2},attrs:{dtype:"float32"}}),inputId=backend2.dataIdMap.get(castedInput.dataId).id);let out=backend2.makeOutput(outShape,"float32");if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend2.dataIdMap.get(out.dataId).id;wasmMean(inputId,reduceSize,outId)}if(inputWasTransposed&&backend2.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return input2.dtype!=="float32"&&backend2.disposeData(castedInput.dataId),out}var meanConfig3={kernelName:Mean,backendName:"wasm",setupFunc:setup21,kernelFunc:mean3},wasmMin;function setup22(backend2){wasmMin=backend2.wasm.cwrap(Min,null,["number, number, number"])}function min5(args){let{backend:backend2,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend2.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend2);if(inputWasTransposed){let transposedId=backend2.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId)}let inputRank=input2.shape.length;backend_util_exports.assertAxesAreInnerMostDims("min",axes,inputRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,axes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend2.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend2.dataIdMap.get(out.dataId).id;wasmMin(inputId,reduceSize,outId)}if(inputWasTransposed&&backend2.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var minConfig3={kernelName:Min,backendName:"wasm",setupFunc:setup22,kernelFunc:min5},supportsFullBroadcast10=!1,minimumConfig3=createBinaryKernelConfig(Minimum,supportsFullBroadcast10),supportsFullBroadcast11=!0,multiplyConfig3=createBinaryKernelConfig(Multiply,supportsFullBroadcast11),negConfig3=createUnaryKernelConfig(Neg);function parseResultStruct(backend2,resOffset){let result=new Int32Array(backend2.wasm.HEAPU8.buffer,resOffset,4),pSelectedIndices=result[0],selectedSize=result[1],pSelectedScores=result[2],pValidOutputs=result[3];return backend2.wasm._free(resOffset),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}}var wasmFunc4;function setup23(backend2){wasmFunc4=backend2.wasm.cwrap(NonMaxSuppressionV3,"number",["number","number","number","number","number"])}function kernelFunc(args){let{backend:backend2,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold}=attrs,{boxes,scores}=inputs,boxesId=backend2.dataIdMap.get(boxes.dataId).id,scoresId=backend2.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc4(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend2,resOffset);return backend2.wasm._free(pSelectedScores),backend2.wasm._free(pValidOutputs),backend2.makeOutput([selectedSize],"int32",pSelectedIndices)}var nonMaxSuppressionV3Config3={kernelName:NonMaxSuppressionV3,backendName:"wasm",setupFunc:setup23,kernelFunc},wasmFunc5;function setup24(backend2){wasmFunc5=backend2.wasm.cwrap(NonMaxSuppressionV4,"number",["number","number","number","number","number","bool"])}function nonMaxSuppressionV43(args){let{backend:backend2,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold,padToMaxOutputSize}=attrs,{boxes,scores}=inputs,boxesId=backend2.dataIdMap.get(boxes.dataId).id,scoresId=backend2.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc5(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend2,resOffset);backend2.wasm._free(pSelectedScores);let selectedIndicesTensor=backend2.makeOutput([selectedSize],"int32",pSelectedIndices),validOutputsTensor=backend2.makeOutput([],"int32",pValidOutputs);return[selectedIndicesTensor,validOutputsTensor]}var nonMaxSuppressionV4Config3={kernelName:NonMaxSuppressionV4,backendName:"wasm",setupFunc:setup24,kernelFunc:nonMaxSuppressionV43},wasmFunc6;function setup25(backend2){wasmFunc6=backend2.wasm.cwrap(NonMaxSuppressionV5,"number",["number","number","number","number","number","number"])}function kernelFunc2(args){let{backend:backend2,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold,softNmsSigma}=attrs,{boxes,scores}=inputs,boxesId=backend2.dataIdMap.get(boxes.dataId).id,scoresId=backend2.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc6(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend2,resOffset);backend2.wasm._free(pValidOutputs);let selectedIndicesTensor=backend2.makeOutput([selectedSize],"int32",pSelectedIndices),selectedScoresTensor=backend2.makeOutput([selectedSize],"float32",pSelectedScores);return[selectedIndicesTensor,selectedScoresTensor]}var nonMaxSuppressionV5Config3={kernelName:NonMaxSuppressionV5,backendName:"wasm",setupFunc:setup25,kernelFunc:kernelFunc2},supportsFullBroadcast12=!1,notEqualConfig3=createBinaryKernelConfig(NotEqual,supportsFullBroadcast12,"bool"),wasmOneHot;function setup26(backend2){wasmOneHot=backend2.wasm.cwrap(OneHot,null,["number","number","number","number","number"])}function oneHot4(args){let{inputs,backend:backend2,attrs}=args,{indices}=inputs,{depth,onValue,offValue}=attrs,out=backend2.makeOutput([...indices.shape,depth],"int32"),outId=backend2.dataIdMap.get(out.dataId).id,indicesId=backend2.dataIdMap.get(indices.dataId).id;return wasmOneHot(indicesId,depth,onValue,offValue,outId),out}var oneHotConfig3={kernelName:OneHot,backendName:"wasm",setupFunc:setup26,kernelFunc:oneHot4};function onesLike4(args){let{inputs:{x},backend:backend2}=args,out=backend2.makeOutput(x.shape,x.dtype);return backend2.typedArrayFromHeap(out).fill(1),out}var onesLikeConfig3={kernelName:OnesLike,backendName:"wasm",kernelFunc:onesLike4};function pack3(args){let{inputs,backend:backend2,attrs}=args,{axis}=attrs;if(inputs.length===1)return expandDims5({inputs:{input:inputs[0]},backend:backend2,attrs:{dim:axis}});let shape=inputs[0].shape,dtype=inputs[0].dtype;inputs.forEach(t=>{util_exports.assertShapesMatch(shape,t.shape,"All tensors passed to stack must have matching shapes"),util_exports.assert(dtype===t.dtype,()=>"All tensors passed to stack must have matching dtypes")});let expandedTensors=inputs.map(t=>expandDims5({inputs:{input:t},backend:backend2,attrs:{dim:axis}}));return concat4({inputs:expandedTensors,backend:backend2,attrs:{axis}})}var packConfig3={kernelName:Pack,backendName:"wasm",kernelFunc:pack3},wasmPadV2;function setup27(backend2){wasmPadV2=backend2.wasm.cwrap(PadV2,null,["number","array","number","number","array","array","number","number"])}function pad2(args){let{inputs:{x},backend:backend2,attrs:{paddings,constantValue}}=args,outShape=paddings.map((p2,i)=>p2[0]+x.shape[i]+p2[1]),xId=backend2.dataIdMap.get(x.dataId).id,out=backend2.makeOutput(outShape,x.dtype),outId=backend2.dataIdMap.get(out.dataId).id,xShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer),prePaddingsFlat=paddings.map(padTuple=>padTuple[0]),postPaddingsFlat=paddings.map(padTuple=>padTuple[1]),prePaddingsBytes=new Uint8Array(new Int32Array(prePaddingsFlat).buffer),postPaddingsBytes=new Uint8Array(new Int32Array(postPaddingsFlat).buffer);return wasmPadV2(xId,xShapeBytes,x.shape.length,CppDType[x.dtype],prePaddingsBytes,postPaddingsBytes,constantValue,outId),out}var padV2Config3={kernelName:PadV2,backendName:"wasm",kernelFunc:pad2,setupFunc:setup27},supportsFullBroadcast13=!1,powConfig3=createBinaryKernelConfig(Pow,supportsFullBroadcast13),wasmPrelu;function setup28(backend2){wasmPrelu=backend2.wasm.cwrap(Prelu,null,["number","number","number"])}function prelu5(args){let{inputs,backend:backend2}=args,{x,alpha}=inputs,xId=backend2.dataIdMap.get(x.dataId).id,weightsId=backend2.dataIdMap.get(alpha.dataId).id,out=backend2.makeOutput(x.shape,"float32"),outId=backend2.dataIdMap.get(out.dataId).id;return wasmPrelu(xId,weightsId,outId),out}var preluConfig3={kernelName:Prelu,backendName:"wasm",setupFunc:setup28,kernelFunc:prelu5},wasmProd;function setup29(backend2){wasmProd=backend2.wasm.cwrap(Prod,null,["number","number","number","number"])}function prod4(args){let{backend:backend2,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend2.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend2),reductionAxes=axes;if(inputWasTransposed){let transposedId=backend2.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId,reductionAxes=backend_util_exports.getInnerMostAxes(reductionAxes.length,input2.shape.length))}backend_util_exports.assertAxesAreInnerMostDims("prod",reductionAxes,input2.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,reductionAxes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend2.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend2.dataIdMap.get(out.dataId).id;wasmProd(inputId,reduceSize,CppDType[out.dtype],outId)}if(inputWasTransposed&&backend2.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var prodConfig3={kernelName:Prod,backendName:"wasm",setupFunc:setup29,kernelFunc:prod4},range5=args=>{let{backend:backend2,attrs}=args,{start,stop,step:step4,dtype}=attrs,values=rangeImpl(start,stop,step4,dtype),out=backend2.makeOutput([values.length],dtype);return backend2.typedArrayFromHeap(out).set(values),out},rangeConfig3={kernelName:Range,backendName:"wasm",kernelFunc:range5},supportsFullBroadcast14=!0,realDivConfig3=createBinaryKernelConfig(RealDiv,supportsFullBroadcast14),reluConfig3=createUnaryKernelConfig(Relu),relu6Config3=createUnaryKernelConfig(Relu6),wasmResizeBilinear;function setup30(backend2){wasmResizeBilinear=backend2.wasm.cwrap(ResizeBilinear,null,["number","number","number","number","number","number","number","number","number","number"])}function resizeBilinear4(args){let{backend:backend2,inputs,attrs}=args,{images}=inputs,{alignCorners,halfPixelCenters,size}=attrs,[newHeight,newWidth]=size,[batch,oldHeight,oldWidth,numChannels]=images.shape,outShape=[batch,newHeight,newWidth,numChannels],xData=backend2.dataIdMap.get(images.dataId),castedData;xData.dtype!=="float32"&&(castedData=cast5({backend:backend2,inputs:{x:images},attrs:{dtype:"float32"}}),xData=backend2.dataIdMap.get(castedData.dataId));let xId=xData.id,out=backend2.makeOutput(outShape,"float32");if(util_exports.sizeFromShape(images.shape)===0)return out;let outId=backend2.dataIdMap.get(out.dataId).id;return wasmResizeBilinear(xId,batch,oldHeight,oldWidth,numChannels,newHeight,newWidth,alignCorners?1:0,halfPixelCenters?1:0,outId),castedData!=null&&backend2.disposeData(castedData.dataId),out}var resizeBilinearConfig3={kernelName:ResizeBilinear,backendName:"wasm",setupFunc:setup30,kernelFunc:resizeBilinear4},wasmReverse;function setup31(backend2){wasmReverse=backend2.wasm.cwrap(Reverse,null,["number","array","number","array","number","number"])}function reverse4(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{dims}=attrs,axes=util_exports.parseAxisParam(dims,x.shape);if(x.shape.length===0)return identity4({inputs:{x},backend:backend2});let out=backend2.makeOutput(x.shape,x.dtype),xId=backend2.dataIdMap.get(x.dataId).id,outId=backend2.dataIdMap.get(out.dataId).id,axesBytes=new Uint8Array(new Int32Array(axes).buffer),outShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer);return wasmReverse(xId,axesBytes,axes.length,outShapeBytes,x.shape.length,outId),reshape5({inputs:{x:out},attrs:{shape:x.shape},backend:backend2})}var reverseConfig3={kernelName:Reverse,backendName:"wasm",kernelFunc:reverse4,setupFunc:setup31},wasmRotate;function setup32(backend2){wasmRotate=backend2.wasm.cwrap(RotateWithOffset,null,["number","number","number","number","number","number","number","number","array","number","number"])}function rotateWithOffset2(args){let{inputs,backend:backend2,attrs}=args,{image:image3}=inputs,{radians,fillValue,center}=attrs,out=backend2.makeOutput(image3.shape,image3.dtype),imageId=backend2.dataIdMap.get(image3.dataId).id,outId=backend2.dataIdMap.get(out.dataId).id,[batch,imageHeight,imageWidth,numChannels]=image3.shape,[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),fillIsBlack=fillValue===0,fullOpacityValue=255,fillValues2=typeof fillValue=="number"?[fillValue,fillValue,fillValue,fillIsBlack?0:fullOpacityValue]:[...fillValue,fullOpacityValue],fillBytes=new Uint8Array(new Int32Array(fillValues2).buffer);return wasmRotate(imageId,batch,imageHeight,imageWidth,numChannels,radians,centerX,centerY,fillBytes,fillValues2.length,outId),out}var rotateWithOffsetConfig3={kernelName:RotateWithOffset,backendName:"wasm",kernelFunc:rotateWithOffset2,setupFunc:setup32},roundConfig3=createUnaryKernelConfig(Round),rsqrtConfig3=createUnaryKernelConfig(Rsqrt),wasmScatterNd;function setup33(backend2){wasmScatterNd=backend2.wasm.cwrap(ScatterNd,null,["number","number","number","number","number","number","array","number","number"])}function scatterNd3(args){let{backend:backend2,inputs,attrs}=args,{indices,updates}=inputs,{shape}=attrs,out=backend2.makeOutput(shape,updates.dtype);if(util_exports.sizeFromShape(shape)===0)return out;let{sliceRank,numUpdates,sliceSize,strides,outputSize}=scatter_nd_util_exports.calculateShapes(updates,indices,shape),indicesId=backend2.dataIdMap.get(indices.dataId).id,updatesId=backend2.dataIdMap.get(updates.dataId).id,stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outId=backend2.dataIdMap.get(out.dataId).id;return wasmScatterNd(indicesId,updatesId,CppDType[updates.dtype],sliceRank,numUpdates,sliceSize,stridesBytes,outputSize,outId),out}var scatterNdConfig3={kernelName:ScatterNd,backendName:"wasm",setupFunc:setup33,kernelFunc:scatterNd3},wasmSelect;function setup34(backend2){wasmSelect=backend2.wasm.cwrap("SelectV2",null,["number","number","number","number","number"])}function select3(args){let{inputs,backend:backend2}=args,{condition,t,e}=inputs,conditionId=backend2.dataIdMap.get(condition.dataId).id,tId=backend2.dataIdMap.get(t.dataId).id,eId=backend2.dataIdMap.get(e.dataId).id,out=backend2.makeOutput(t.shape,t.dtype),outId=backend2.dataIdMap.get(out.dataId).id,cRank=condition.shape.length,tRank=t.shape.length,offset=cRank===0||cRank>1||tRank===1?1:util_exports.sizeFromShape(t.shape.slice(1));return wasmSelect(conditionId,tId,eId,offset,outId),out}var selectConfig3={kernelName:Select,backendName:"wasm",kernelFunc:select3,setupFunc:setup34},wasmFunc7;function setup35(backend2){wasmFunc7=backend2.wasm.cwrap(Sigmoid,null,["number","number"])}function sigmoid4(args){let{backend:backend2,inputs:{x}}=args,xId=backend2.dataIdMap.get(x.dataId).id,out=backend2.makeOutput(x.shape,x.dtype),outId=backend2.dataIdMap.get(out.dataId).id;return util_exports.sizeFromShape(out.shape)===0||wasmFunc7(xId,outId),out}var sigmoidConfig3={kernelName:"Sigmoid",backendName:"wasm",setupFunc:setup35,kernelFunc:sigmoid4},sinConfig3=createUnaryKernelConfig(Sin);function slice4(args){let{inputs:{x},attrs:{begin,size},backend:backend2}=args,[begin_,size_]=slice_util_exports.parseSliceParams(x,begin,size),isContinous=slice_util_exports.isSliceContinous(x.shape,begin_,size_),xVals=backend2.readSync(x.dataId),out=backend2.makeOutput(size_,x.dtype),xStrides=util_exports.computeStrides(x.shape),outData=backend2.dataIdMap.get(out.dataId);if(isContinous){let flatOffset=slice_util_exports.computeFlatOffset(begin_,xStrides);return x.dtype==="string"?outData.stringBytes=xVals.slice(flatOffset,flatOffset+util_exports.sizeFromShape(size_)):backend2.typedArrayFromHeap(out).set(xVals.subarray(flatOffset,flatOffset+util_exports.sizeFromShape(size_))),out}if(x.dtype==="string"){let res=sliceImpl(xVals,begin_,size_,x.shape,x.dtype);return outData.stringBytes=res,out}let outVals=backend2.typedArrayFromHeap(out),rank=x.shape.length;if(rank===2)slice2d2(xVals,xStrides[0],outVals,begin_,size_);else if(rank===3)slice3d2(xVals,xStrides[0],xStrides[1],outVals,begin_,size_);else if(rank===4)slice4d2(xVals,xStrides[0],xStrides[1],xStrides[2],outVals,begin_,size_);else{let res=sliceImpl(xVals,begin_,size_,x.shape,x.dtype);outVals.set(res)}return out}function slice2d2(xVals,xStride,outVals,begin,size){let outOffset=0,beginI=begin[0],beginJ=begin[1],endI=beginI+size[0];for(let i=beginI;i{let xSliceSize=[...size];xSliceSize[$axis]=s;let xSlice=slice4({inputs:{x},attrs:{begin,size:xSliceSize},backend:backend2});return begin[$axis]+=s,xSlice})}var splitVConfig3={kernelName:SplitV,backendName:"wasm",kernelFunc:splitV3},sqrtConfig3=createUnaryKernelConfig(Sqrt),squareConfig3=createUnaryKernelConfig(Square),supportsFullBroadcast15=!0,squaredDifferenceConfig3=createBinaryKernelConfig(SquaredDifference,supportsFullBroadcast15),wasmStridedSlice;function setup37(backend2){wasmStridedSlice=backend2.wasm.cwrap(StridedSlice,null,["number","array","number","array","array","array","array","array","number","number"])}function stridedSlice4(args){let{backend:backend2,inputs,attrs}=args,{x}=inputs,{begin,end,strides}=attrs;strides==null&&(strides=new Array(begin.length));let{beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask}=attrs,ellipsisAxes=backend_util_exports.slice_util.maskToAxes(ellipsisMask);if(ellipsisAxes.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(ellipsisMask!==0&&newAxisMask!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(ellipsisMask!==0&&shrinkAxisMask!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let numInterpolatedAxes=x.shape.length-begin.length,expandAxes=backend_util_exports.slice_util.maskToAxes(newAxisMask),newShape=x.shape.slice();expandAxes.forEach(axis=>{begin[axis]=0,end[axis]=1,newShape.splice(axis,0,1)});let xReshaped=reshape5({inputs:{x},attrs:{shape:newShape},backend:backend2}),{begin:normalizedBegin,end:normalizedEnd,strides:normalizedStrides}=backend_util_exports.slice_util.getNormalizedAxes(xReshaped.shape,ellipsisAxes,numInterpolatedAxes,begin,end,strides,beginMask,endMask,ellipsisMask);begin=normalizedBegin,end=normalizedEnd,strides=normalizedStrides;let shrinkAxes=backend_util_exports.slice_util.maskToAxes(shrinkAxisMask);shrinkAxes.forEach(axis=>{end[axis]=begin[axis]+1,strides[axis]=1});let size=backend_util_exports.slice_util.computeOutShape(begin,end,strides),outShape=size.filter((_,axis)=>shrinkAxes.indexOf(axis)===-1);if(strides.every(v=>v===1)){let xSliced=slice4({inputs:{x},attrs:{begin,size},backend:backend2});return reshape5({inputs:{x:xSliced},attrs:{shape:outShape},backend:backend2})}let out=backend2.makeOutput(outShape,"float32");if(!outShape.some(axis=>axis===0)){let xId=backend2.dataIdMap.get(xReshaped.dataId).id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(xReshaped.shape)).buffer),beginBytes=new Uint8Array(new Int32Array(begin).buffer),endBytes=new Uint8Array(new Int32Array(end).buffer),stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outputShapeBytes=new Uint8Array(new Int32Array(outShape).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(outShape)).buffer),outId=backend2.dataIdMap.get(out.dataId).id;wasmStridedSlice(xId,xStridesBytes,xReshaped.shape.length,beginBytes,endBytes,stridesBytes,outputShapeBytes,outStridesBytes,outShape.length,outId)}return reshape5({inputs:{x:out},attrs:{shape:outShape},backend:backend2})}var stridedSliceConfig3={kernelName:StridedSlice,backendName:"wasm",setupFunc:setup37,kernelFunc:stridedSlice4},supportsFullBroadcast16=!0,subConfig3=createBinaryKernelConfig(Sub,supportsFullBroadcast16),wasmSum;function setup38(backend2){wasmSum=backend2.wasm.cwrap(Sum,null,["number, number, number"])}function sum5(args){let{backend:backend2,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend2.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend2),reductionAxes=axes;if(inputWasTransposed){let transposedId=backend2.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId,reductionAxes=backend_util_exports.getInnerMostAxes(reductionAxes.length,input2.shape.length))}backend_util_exports.assertAxesAreInnerMostDims("sum",reductionAxes,input2.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,reductionAxes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend2.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend2.dataIdMap.get(out.dataId).id;wasmSum(inputId,reduceSize,outId)}if(inputWasTransposed&&backend2.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var sumConfig3={kernelName:Sum,backendName:"wasm",setupFunc:setup38,kernelFunc:sum5},tanhConfig3=createUnaryKernelConfig(Tanh),wasmTile;function setup39(backend2){wasmTile=backend2.wasm.cwrap(Tile,null,["number","array","number","array","number","number"])}function tile5(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,xId=backend2.dataIdMap.get(x.dataId).id,{reps}=attrs,newShape=new Array(x.shape.length);for(let i=0;i{let{x}=inputs,{k,sorted}=attrs,xId=backend2.dataIdMap.get(x.dataId).id,xShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer),outputShape=x.shape.slice();outputShape[outputShape.length-1]=k;let outValues=backend2.makeOutput(outputShape,x.dtype),outValuesId=backend2.dataIdMap.get(outValues.dataId).id,outIndices=backend2.makeOutput(outputShape,"int32"),outIndicesId=backend2.dataIdMap.get(outIndices.dataId).id;return wasmTopK(xId,xShapeBytes,x.shape.length,CppDType[x.dtype],k,sorted,outValuesId,outIndicesId),[outValues,outIndices]},topKConfig3={kernelName:TopK,backendName:"wasm",setupFunc:setup40,kernelFunc:topk2};function unpack3(args){let{inputs,backend:backend2,attrs}=args,{value}=inputs,{axis}=attrs;axis<0&&(axis+=value.shape.length);let numOutputs=value.shape[axis],rank=value.shape.length,outShape=new Array(rank-1),outIndex=0;for(let i=0;i({dataId,dtype,shape:outShape}))}var unpackConfig3={kernelName:Unpack,backendName:"wasm",kernelFunc:unpack3};function zerosLike4(args){let{inputs:{x},backend:backend2}=args,out=backend2.makeOutput(x.shape,x.dtype);return backend2.typedArrayFromHeap(out).fill(0),out}var zerosLikeConfig3={kernelName:ZerosLike,backendName:"wasm",kernelFunc:zerosLike4},kernelConfigs3=[absConfig3,addConfig3,addNConfig3,argMaxConfig3,avgPoolConfig3,batchMatMulConfig3,castConfig3,clipByValueConfig2,concatConfig3,conv2DConfig3,conv2DBackpropInputConfig3,cosConfig3,cropAndResizeConfig3,cumsumConfig3,depthToSpaceConfig3,depthwiseConv2dNativeConfig3,equalConfig3,expConfig3,expandDimsConfig3,fillConfig3,flipLeftRightConfig3,floorConfig3,floorDivConfig3,fusedMatMulConfig,fusedBatchNormConfig,fusedConv2DConfig3,fusedDepthwiseConv2DConfig3,gatherNdConfig3,gatherV2Config3,greaterConfig3,greaterEqualConfig3,identityConfig3,leakyReluConfig3,lessConfig3,lessEqualConfig3,logConfig3,logicalAndConfig3,maxConfig3,maximumConfig3,maxPoolConfig3,meanConfig3,minConfig3,minimumConfig3,multiplyConfig3,negConfig3,nonMaxSuppressionV3Config3,nonMaxSuppressionV4Config3,nonMaxSuppressionV5Config3,notEqualConfig3,oneHotConfig3,onesLikeConfig3,packConfig3,padV2Config3,powConfig3,preluConfig3,prodConfig3,rangeConfig3,realDivConfig3,reluConfig3,relu6Config3,reshapeConfig3,resizeBilinearConfig3,reverseConfig3,rotateWithOffsetConfig3,rsqrtConfig3,roundConfig3,scatterNdConfig3,selectConfig3,sigmoidConfig3,sinConfig3,sliceConfig3,softmaxConfig3,splitVConfig3,sqrtConfig3,squareConfig3,squaredDifferenceConfig3,stridedSliceConfig3,subConfig3,sumConfig3,tanhConfig3,tileConfig3,topKConfig3,transposeConfig3,unpackConfig3,zerosLikeConfig3];for(let kernelConfig of kernelConfigs3)registerKernel(kernelConfig);var ENV4=env();ENV4.registerFlag("WASM_HAS_SIMD_SUPPORT",async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,9,1,7,0,65,0,253,15,26,11])));ENV4.registerFlag("WASM_HAS_MULTITHREAD_SUPPORT",async()=>{if(ENV4.get("IS_NODE"))return!1;try{return new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch(e){return!1}});var import_tfjs_backend_wasm_threaded_simd=__toModule2(require_tfjs_backend_wasm_threaded_simd()),wasmWorkerContents='var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module["instantiateWasm"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module["wasmModule"],info);Module["wasmModule"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd==="load"){Module["DYNAMIC_BASE"]=e.data.DYNAMIC_BASE;Module["DYNAMICTOP_PTR"]=e.data.DYNAMICTOP_PTR;Module["wasmModule"]=e.data.wasmModule;Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;if(typeof e.data.urlOrBlob==="string"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({"cmd":"loaded"})}else if(e.data.cmd==="objectTransfer"){Module["PThread"].receiveObjectTransfer(e.data)}else if(e.data.cmd==="run"){Module["__performance_now_clock_drift"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module["__register_pthread_ptr"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module["establishStackSpace"](top,max);Module["_emscripten_tls_init"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].setThreadStatus(Module["_pthread_self"](),1);try{var result=Module["dynCall_ii"](e.data.start_routine,e.data.arg);if(!Module["getNoExitRuntime"]())Module["PThread"].threadExit(result)}catch(ex){if(ex==="Canceled!"){Module["PThread"].threadCancel()}else if(ex!="unwind"){Atomics.store(Module["HEAPU32"],threadInfoStruct+4>>2,ex instanceof Module["ExitStatus"]?ex.status:-2);Atomics.store(Module["HEAPU32"],threadInfoStruct+0>>2,1);Module["_emscripten_futex_wake"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module["ExitStatus"]))throw ex}}}else if(e.data.cmd==="cancel"){if(threadInfoStruct){Module["PThread"].threadCancel()}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processThreadQueue"){if(threadInfoStruct){Module["_emscripten_current_thread_process_queued_calls"]()}}else{err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){err("worker.js onmessage() captured an uncaught exception: "+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require("worker_threads");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",function(data){onmessage({data:data})});var nodeFS=require("fs");var nodeRead=function(filename){return nodeFS.readFileSync(filename,"utf8")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance==="undefined"){performance={now:function(){return Date.now()}}}}',import_tfjs_backend_wasm=__toModule2(require_tfjs_backend_wasm()),BackendWasm=class extends KernelBackend{constructor(wasm){super();this.wasm=wasm,this.dataIdNextNumber=1,this.wasm.tfjs.init(),this.dataIdMap=new DataStorage(this,engine())}write(values,shape,dtype){let dataId={};return this.move(dataId,values,shape,dtype),dataId}numDataIds(){return this.dataIdMap.numDataIds()}async time(f){let start=util_exports.now();return f(),{kernelMs:util_exports.now()-start}}move(dataId,values,shape,dtype){let id=this.dataIdNextNumber++;if(dtype==="string"){let stringBytes=values;this.dataIdMap.set(dataId,{id,stringBytes,shape,dtype,memoryOffset:null});return}let size=util_exports.sizeFromShape(shape),numBytes=size*util_exports.bytesPerElement(dtype),memoryOffset=this.wasm._malloc(numBytes);this.dataIdMap.set(dataId,{id,memoryOffset,shape,dtype}),this.wasm.tfjs.registerTensor(id,size,memoryOffset),values!=null&&this.wasm.HEAPU8.set(new Uint8Array(values.buffer,values.byteOffset,numBytes),memoryOffset)}async read(dataId){return this.readSync(dataId)}readSync(dataId){let{memoryOffset,dtype,shape,stringBytes}=this.dataIdMap.get(dataId);if(dtype==="string")return stringBytes;let bytes=this.wasm.HEAPU8.slice(memoryOffset,memoryOffset+util_exports.sizeFromShape(shape)*util_exports.bytesPerElement(dtype));return typedArrayFromBuffer(bytes.buffer,dtype)}disposeData(dataId){let data=this.dataIdMap.get(dataId);this.wasm._free(data.memoryOffset),this.wasm.tfjs.disposeData(data.id),this.dataIdMap.delete(dataId)}floatPrecision(){return 32}getMemoryOffset(dataId){return this.dataIdMap.get(dataId).memoryOffset}dispose(){this.wasm.tfjs.dispose(),this.wasm=null}memory(){return{unreliable:!1}}makeOutput(shape,dtype,memoryOffset){let dataId;if(memoryOffset==null)dataId=this.write(null,shape,dtype);else{dataId={};let id=this.dataIdNextNumber++;this.dataIdMap.set(dataId,{id,memoryOffset,shape,dtype});let size=util_exports.sizeFromShape(shape);this.wasm.tfjs.registerTensor(id,size,memoryOffset)}return{dataId,shape,dtype}}typedArrayFromHeap({shape,dtype,dataId}){let buffer2=this.wasm.HEAPU8.buffer,{memoryOffset}=this.dataIdMap.get(dataId),size=util_exports.sizeFromShape(shape);switch(dtype){case"float32":return new Float32Array(buffer2,memoryOffset,size);case"int32":return new Int32Array(buffer2,memoryOffset,size);case"bool":return new Uint8Array(buffer2,memoryOffset,size);default:throw new Error(`Unknown dtype ${dtype}`)}}};function createInstantiateWasmFunc(path){return(imports,callback)=>(util_exports.fetch(path,{credentials:"same-origin"}).then(response=>{response.ok||imports.env.a(`failed to load wasm binary file at '${path}'`),response.arrayBuffer().then(binary=>{WebAssembly.instantiate(binary,imports).then(output=>{callback(output.instance)})})}),{})}function getPathToWasmBinary(simdSupported,threadsSupported,wasmModuleFolder){if(wasmPath!=null)return wasmPath;let path="tfjs-backend-wasm.wasm";return simdSupported&&threadsSupported?path="tfjs-backend-wasm-threaded-simd.wasm":simdSupported&&(path="tfjs-backend-wasm-simd.wasm"),wasmFileMap!=null&&wasmFileMap[path]!=null?wasmFileMap[path]:wasmModuleFolder+path}async function init(){let[simdSupported,threadsSupported]=await Promise.all([env().getAsync("WASM_HAS_SIMD_SUPPORT"),env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT")]);return new Promise((resolve,reject)=>{let factoryConfig={};factoryConfig.locateFile=(path,prefix)=>{if(path.endsWith(".worker.js")){let response=wasmWorkerContents,blob=new Blob([response],{type:"application/javascript"});return URL.createObjectURL(blob)}return path.endsWith(".wasm")?getPathToWasmBinary(simdSupported,threadsSupported,wasmPathPrefix!=null?wasmPathPrefix:prefix):prefix+path},customFetch&&(factoryConfig.instantiateWasm=createInstantiateWasmFunc(getPathToWasmBinary(simdSupported,threadsSupported,wasmPathPrefix!=null?wasmPathPrefix:"")));let wasm;threadsSupported&&simdSupported&&wasmPath==null?(wasm=import_tfjs_backend_wasm_threaded_simd.default(factoryConfig),wasm.mainScriptUrlOrBlob=new Blob(["var WasmBackendModuleThreadedSimd = "+import_tfjs_backend_wasm_threaded_simd.default.toString()],{type:"text/javascript"})):wasm=import_tfjs_backend_wasm.default(factoryConfig);let voidReturnType=null;wasm.tfjs={init:wasm.cwrap("init",null,[]),registerTensor:wasm.cwrap("register_tensor",null,["number","number","number"]),disposeData:wasm.cwrap("dispose_data",voidReturnType,["number"]),dispose:wasm.cwrap("dispose",voidReturnType,[])};let initialized=!1;wasm.onRuntimeInitialized=()=>{initialized=!0,initAborted=!1,resolve({wasm})},wasm.onAbort=()=>{initialized||initAborted||(initAborted=!0,reject({message:"Make sure the server can serve the `.wasm` file relative to the bundled js file. For more details see https://github.com/tensorflow/tfjs/blob/master/tfjs-backend-wasm/README.md#using-bundlers"}))}})}function typedArrayFromBuffer(buffer2,dtype){switch(dtype){case"float32":return new Float32Array(buffer2);case"int32":return new Int32Array(buffer2);case"bool":return new Uint8Array(buffer2);default:throw new Error(`Unknown dtype ${dtype}`)}}var wasmBinaryNames=["tfjs-backend-wasm.wasm","tfjs-backend-wasm-simd.wasm","tfjs-backend-wasm-threaded-simd.wasm"],wasmPath=null,wasmPathPrefix=null,wasmFileMap={},initAborted=!1,customFetch=!1;function setWasmPath(path,usePlatformFetch=!1){if(deprecationWarn("setWasmPath has been deprecated in favor of setWasmPaths and will be removed in a future release."),initAborted)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPath()` before you call `tf.setBackend()` or `tf.ready()`");wasmPath=path,customFetch=usePlatformFetch}function setWasmPaths(prefixOrFileMap,usePlatformFetch=!1){if(initAborted)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPaths()` before you call `tf.setBackend()` or `tf.ready()`");if(typeof prefixOrFileMap=="string")wasmPathPrefix=prefixOrFileMap;else{wasmFileMap=prefixOrFileMap;let missingPaths=wasmBinaryNames.filter(name=>wasmFileMap[name]==null);if(missingPaths.length>0)throw new Error(`There were no entries found for the following binaries: ${missingPaths.join(",")}. Please either call setWasmPaths with a map providing a path for each binary, or with a string indicating the directory where all the binaries can be found.`)}customFetch=usePlatformFetch}var version9="2.8.3",WASM_PRIORITY=2;registerBackend("wasm",async()=>{let{wasm}=await init();return new BackendWasm(wasm)},WASM_PRIORITY);var draw_exports={};__export(draw_exports,{AnchorPosition:()=>AnchorPosition,DrawBox:()=>DrawBox,DrawBoxOptions:()=>DrawBoxOptions,DrawFaceLandmarks:()=>DrawFaceLandmarks,DrawFaceLandmarksOptions:()=>DrawFaceLandmarksOptions,DrawTextField:()=>DrawTextField,DrawTextFieldOptions:()=>DrawTextFieldOptions,drawContour:()=>drawContour,drawDetections:()=>drawDetections,drawFaceExpressions:()=>drawFaceExpressions,drawFaceLandmarks:()=>drawFaceLandmarks});function drawContour(ctx,points,isClosed=!1){if(ctx.beginPath(),points.slice(1).forEach(({x,y},prevIdx)=>{let from=points[prevIdx];ctx.moveTo(from.x,from.y),ctx.lineTo(x,y)}),isClosed){let from=points[points.length-1],to=points[0];if(!from||!to)return;ctx.moveTo(from.x,from.y),ctx.lineTo(to.x,to.y)}ctx.stroke()}var utils_exports={};__export(utils_exports,{computeReshapedDimensions:()=>computeReshapedDimensions,getCenterPoint:()=>getCenterPoint,isDimensions:()=>isDimensions,isEven:()=>isEven2,isFloat:()=>isFloat,isTensor:()=>isTensor,isTensor1D:()=>isTensor1D,isTensor2D:()=>isTensor2D,isTensor3D:()=>isTensor3D,isTensor4D:()=>isTensor4D,isValidNumber:()=>isValidNumber,isValidProbablitiy:()=>isValidProbablitiy,range:()=>range6,round:()=>round5});var Dimensions=class{constructor(width,height){if(!isValidNumber(width)||!isValidNumber(height))throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({width,height})}`);this._width=width,this._height=height}get width(){return this._width}get height(){return this._height}reverse(){return new Dimensions(1/this.width,1/this.height)}};function isTensor(tensor2,dim){return tensor2 instanceof Tensor&&tensor2.shape.length===dim}function isTensor1D(tensor2){return isTensor(tensor2,1)}function isTensor2D(tensor2){return isTensor(tensor2,2)}function isTensor3D(tensor2){return isTensor(tensor2,3)}function isTensor4D(tensor2){return isTensor(tensor2,4)}function isFloat(num){return num%1!=0}function isEven2(num){return num%2==0}function round5(num,prec=2){let f=10**prec;return Math.floor(num*f)/f}function isDimensions(obj){return obj&&obj.width&&obj.height}function computeReshapedDimensions({width,height},inputSize){let scale3=inputSize/Math.max(height,width);return new Dimensions(Math.round(width*scale3),Math.round(height*scale3))}function getCenterPoint(pts){return pts.reduce((sum6,pt)=>sum6.add(pt),new Point(0,0)).div(new Point(pts.length,pts.length))}function range6(num,start,step4){return Array(num).fill(0).map((_,i)=>start+i*step4)}function isValidNumber(num){return!!num&&num!==Infinity&&num!==-Infinity&&!Number.isNaN(num)||num===0}function isValidProbablitiy(num){return isValidNumber(num)&&num>=0&&num<=1}var Point=class{constructor(x,y){this._x=x,this._y=y}get x(){return this._x}get y(){return this._y}add(pt){return new Point(this.x+pt.x,this.y+pt.y)}sub(pt){return new Point(this.x-pt.x,this.y-pt.y)}mul(pt){return new Point(this.x*pt.x,this.y*pt.y)}div(pt){return new Point(this.x/pt.x,this.y/pt.y)}abs(){return new Point(Math.abs(this.x),Math.abs(this.y))}magnitude(){return Math.sqrt(this.x**2+this.y**2)}floor(){return new Point(Math.floor(this.x),Math.floor(this.y))}};var Box=class{static isRect(rect){return!!rect&&[rect.x,rect.y,rect.width,rect.height].every(isValidNumber)}static assertIsValidBox(box,callee,allowNegativeDimensions=!1){if(!Box.isRect(box))throw new Error(`${callee} - invalid box: ${JSON.stringify(box)}, expected object with properties x, y, width, height`);if(!allowNegativeDimensions&&(box.width<0||box.height<0))throw new Error(`${callee} - width (${box.width}) and height (${box.height}) must be positive numbers`)}constructor(_box,allowNegativeDimensions=!0){let box=_box||{},isBbox=[box.left,box.top,box.right,box.bottom].every(isValidNumber),isRect=[box.x,box.y,box.width,box.height].every(isValidNumber);if(!isRect&&!isBbox)throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(box)}`);let[x,y,width,height]=isRect?[box.x,box.y,box.width,box.height]:[box.left,box.top,box.right-box.left,box.bottom-box.top];Box.assertIsValidBox({x,y,width,height},"Box.constructor",allowNegativeDimensions),this._x=x,this._y=y,this._width=width,this._height=height}get x(){return this._x}get y(){return this._y}get width(){return this._width}get height(){return this._height}get left(){return this.x}get top(){return this.y}get right(){return this.x+this.width}get bottom(){return this.y+this.height}get area(){return this.width*this.height}get topLeft(){return new Point(this.left,this.top)}get topRight(){return new Point(this.right,this.top)}get bottomLeft(){return new Point(this.left,this.bottom)}get bottomRight(){return new Point(this.right,this.bottom)}round(){let[x,y,width,height]=[this.x,this.y,this.width,this.height].map(val=>Math.round(val));return new Box({x,y,width,height})}floor(){let[x,y,width,height]=[this.x,this.y,this.width,this.height].map(val=>Math.floor(val));return new Box({x,y,width,height})}toSquare(){let{x,y,width,height}=this,diff=Math.abs(width-height);return widthimageWidth&&(edx=-ex+imageWidth+w,ex=imageWidth),ey>imageHeight&&(edy=-ey+imageHeight+h,ey=imageHeight),x<1&&(edy=2-x,x=1),y<1&&(edy=2-y,y=1),{dy,edy,dx,edx,y,ey,x,ex,w,h}}calibrate(region){return new Box({left:this.left+region.left*this.width,top:this.top+region.top*this.height,right:this.right+region.right*this.width,bottom:this.bottom+region.bottom*this.height}).toSquare().round()}};var BoundingBox=class extends Box{constructor(left,top,right,bottom,allowNegativeDimensions=!1){super({left,top,right,bottom},allowNegativeDimensions)}};var ObjectDetection=class{constructor(score,classScore,className,relativeBox,imageDims){this._imageDims=new Dimensions(imageDims.width,imageDims.height),this._score=score,this._classScore=classScore,this._className=className,this._box=new Box(relativeBox).rescale(this._imageDims)}get score(){return this._score}get classScore(){return this._classScore}get className(){return this._className}get box(){return this._box}get imageDims(){return this._imageDims}get imageWidth(){return this.imageDims.width}get imageHeight(){return this.imageDims.height}get relativeBox(){return new Box(this._box).rescale(this.imageDims.reverse())}forSize(width,height){return new ObjectDetection(this.score,this.classScore,this.className,this.relativeBox,{width,height})}};var FaceDetection=class extends ObjectDetection{constructor(score,relativeBox,imageDims){super(score,score,"",relativeBox,imageDims)}forSize(width,height){let{score,relativeBox,imageDims}=super.forSize(width,height);return new FaceDetection(score,relativeBox,imageDims)}};function iou(box1,box2,isIOU=!0){let width=Math.max(0,Math.min(box1.right,box2.right)-Math.max(box1.left,box2.left)),height=Math.max(0,Math.min(box1.bottom,box2.bottom)-Math.max(box1.top,box2.top)),interSection=width*height;return isIOU?interSection/(box1.area+box2.area-interSection):interSection/Math.min(box1.area,box2.area)}function minBbox(pts){let xs=pts.map(pt=>pt.x),ys=pts.map(pt=>pt.y),minX=xs.reduce((min6,x)=>xymax6max6({score,boxIndex})).sort((c1,c2)=>c1.score-c2.score).map(c=>c.boxIndex),pick=[];for(;indicesSortedByScore.length>0;){let curr=indicesSortedByScore.pop();pick.push(curr);let indices=indicesSortedByScore,outputs=[];for(let i=0;ioutputs[j]<=iouThreshold)}return pick}function normalize(x,meanRgb){return tidy(()=>{let[r,g,b]=meanRgb,avg_r=fill([...x.shape.slice(0,3),1],r,"float32"),avg_g=fill([...x.shape.slice(0,3),1],g,"float32"),avg_b=fill([...x.shape.slice(0,3),1],b,"float32"),avg_rgb=concat([avg_r,avg_g,avg_b],3);return sub(x,avg_rgb)})}function padToSquare(imgTensor,isCenterImage=!1){return tidy(()=>{let[height,width]=imgTensor.shape.slice(1);if(height===width)return imgTensor;let dimDiff=Math.abs(height-width),paddingAmount=Math.round(dimDiff*(isCenterImage?.5:1)),paddingAxis=height>width?2:1,createPaddingTensor=paddingAmountLocal=>{let paddingTensorShape=imgTensor.shape.slice();return paddingTensorShape[paddingAxis]=paddingAmountLocal,fill(paddingTensorShape,0,"float32")},paddingTensorAppend=createPaddingTensor(paddingAmount),remainingPaddingAmount=dimDiff-paddingTensorAppend.shape[paddingAxis],tensorsToStack=[isCenterImage&&remainingPaddingAmount?createPaddingTensor(remainingPaddingAmount):null,imgTensor,paddingTensorAppend].filter(t=>!!t).map(t=>cast(t,"float32"));return concat(tensorsToStack,paddingAxis)})}function shuffleArray(inputArray){let array2=inputArray.slice();for(let i=array2.length-1;i>0;i--){let j=Math.floor(Math.random()*(i+1)),x=array2[i];array2[i]=array2[j],array2[j]=x}return array2}function sigmoid5(x){return 1/(1+Math.exp(-x))}function inverseSigmoid(x){return Math.log(x/(1-x))}var Rect=class extends Box{constructor(x,y,width,height,allowNegativeDimensions=!1){super({x,y,width,height},allowNegativeDimensions)}};var relX=.5,relY=.43,relScale=.45,FaceLandmarks=class{constructor(relativeFaceLandmarkPositions,imgDims,shift=new Point(0,0)){let{width,height}=imgDims;this._imgDims=new Dimensions(width,height),this._shift=shift,this._positions=relativeFaceLandmarkPositions.map(pt=>pt.mul(new Point(width,height)).add(shift))}get shift(){return new Point(this._shift.x,this._shift.y)}get imageWidth(){return this._imgDims.width}get imageHeight(){return this._imgDims.height}get positions(){return this._positions}get relativePositions(){return this._positions.map(pt=>pt.sub(this._shift).div(new Point(this.imageWidth,this.imageHeight)))}forSize(width,height){return new this.constructor(this.relativePositions,{width,height})}shiftBy(x,y){return new this.constructor(this.relativePositions,this._imgDims,new Point(x,y))}shiftByPoint(pt){return this.shiftBy(pt.x,pt.y)}align(detection,options={}){if(detection){let box=detection instanceof FaceDetection?detection.box.floor():new Box(detection);return this.shiftBy(box.x,box.y).align(null,options)}let{useDlibAlignment,minBoxPadding}={useDlibAlignment:!1,minBoxPadding:.2,...options};return useDlibAlignment?this.alignDlib():this.alignMinBbox(minBoxPadding)}alignDlib(){let centers=this.getRefPointsForAlignment(),[leftEyeCenter,rightEyeCenter,mouthCenter]=centers,distToMouth=pt=>mouthCenter.sub(pt).magnitude(),eyeToMouthDist=(distToMouth(leftEyeCenter)+distToMouth(rightEyeCenter))/2,size=Math.floor(eyeToMouthDist/relScale),refPoint=getCenterPoint(centers),x=Math.floor(Math.max(0,refPoint.x-relX*size)),y=Math.floor(Math.max(0,refPoint.y-relY*size));return new Rect(x,y,Math.min(size,this.imageWidth+x),Math.min(size,this.imageHeight+y))}alignMinBbox(padding){let box=minBbox(this.positions);return box.pad(box.width*padding,box.height*padding)}getRefPointsForAlignment(){throw new Error("getRefPointsForAlignment not implemented by base class")}};var FaceLandmarks5=class extends FaceLandmarks{getRefPointsForAlignment(){let pts=this.positions;return[pts[0],pts[1],getCenterPoint([pts[3],pts[4]])]}};var FaceLandmarks68=class extends FaceLandmarks{getJawOutline(){return this.positions.slice(0,17)}getLeftEyeBrow(){return this.positions.slice(17,22)}getRightEyeBrow(){return this.positions.slice(22,27)}getNose(){return this.positions.slice(27,36)}getLeftEye(){return this.positions.slice(36,42)}getRightEye(){return this.positions.slice(42,48)}getMouth(){return this.positions.slice(48,68)}getRefPointsForAlignment(){return[this.getLeftEye(),this.getRightEye(),this.getMouth()].map(getCenterPoint)}};var FaceMatch=class{constructor(label,distance){this._label=label,this._distance=distance}get label(){return this._label}get distance(){return this._distance}toString(withDistance=!0){return`${this.label}${withDistance?` (${round5(this.distance)})`:""}`}};var LabeledBox=class extends Box{static assertIsValidLabeledBox(box,callee){if(Box.assertIsValidBox(box,callee),!isValidNumber(box.label))throw new Error(`${callee} - expected property label (${box.label}) to be a number`)}constructor(box,label){super(box);this._label=label}get label(){return this._label}};var LabeledFaceDescriptors=class{constructor(label,descriptors){if(typeof label!="string")throw new Error("LabeledFaceDescriptors - constructor expected label to be a string");if(!Array.isArray(descriptors)||descriptors.some(desc=>!(desc instanceof Float32Array)))throw new Error("LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array");this._label=label,this._descriptors=descriptors}get label(){return this._label}get descriptors(){return this._descriptors}toJSON(){return{label:this.label,descriptors:this.descriptors.map(d=>Array.from(d))}}static fromJSON(json18){let descriptors=json18.descriptors.map(d=>new Float32Array(d));return new LabeledFaceDescriptors(json18.label,descriptors)}};var PredictedBox=class extends LabeledBox{static assertIsValidPredictedBox(box,callee){if(LabeledBox.assertIsValidLabeledBox(box,callee),!isValidProbablitiy(box.score)||!isValidProbablitiy(box.classScore))throw new Error(`${callee} - expected properties score (${box.score}) and (${box.classScore}) to be a number between [0, 1]`)}constructor(box,label,score,classScore){super(box,label);this._score=score,this._classScore=classScore}get score(){return this._score}get classScore(){return this._classScore}};function isWithFaceDetection(obj){return obj.detection instanceof FaceDetection}function extendWithFaceDetection(sourceObj,detection){return{...sourceObj,...{detection}}}function createBrowserEnv(){let fetch3=window.fetch;if(!fetch3)throw new Error("fetch - missing fetch implementation for browser environment");let readFile=()=>{throw new Error("readFile - filesystem not available for browser environment")};return{Canvas:HTMLCanvasElement,CanvasRenderingContext2D,Image:HTMLImageElement,ImageData,Video:HTMLVideoElement,createCanvasElement:()=>document.createElement("canvas"),createImageElement:()=>document.createElement("img"),fetch:fetch3,readFile}}function createFileSystem(fs){let requireFsError="";if(!fs)try{fs=require("fs")}catch(err){requireFsError=err.toString()}return{readFile:fs?filePath=>new Promise((resolve,reject)=>{fs.readFile(filePath,(err,buffer2)=>err?reject(err):resolve(buffer2))}):()=>{throw new Error(`readFile - failed to require fs in nodejs environment with error: ${requireFsError}`)}}}function createNodejsEnv(){let Canvas=global.Canvas||global.HTMLCanvasElement,Image=global.Image||global.HTMLImageElement,createCanvasElement=()=>{if(Canvas)return new Canvas;throw new Error("createCanvasElement - missing Canvas implementation for nodejs environment")},createImageElement=()=>{if(Image)return new Image;throw new Error("createImageElement - missing Image implementation for nodejs environment")},fetch3=global.fetch,fileSystem=createFileSystem();return{Canvas:Canvas||class{},CanvasRenderingContext2D:global.CanvasRenderingContext2D||class{},Image:Image||class{},ImageData:global.ImageData||class{},Video:global.HTMLVideoElement||class{},createCanvasElement,createImageElement,fetch:fetch3,...fileSystem}}function isBrowser2(){return typeof window=="object"&&typeof document!="undefined"&&typeof HTMLImageElement!="undefined"&&typeof HTMLCanvasElement!="undefined"&&typeof HTMLVideoElement!="undefined"&&typeof ImageData!="undefined"&&typeof CanvasRenderingContext2D!="undefined"}var import_isNodejs=__toModule(require_isNodejs()),environment;function getEnv(){if(!environment)throw new Error("getEnv - environment is not defined, check isNodejs() and isBrowser()");return environment}function setEnv(env3){environment=env3}function initialize(){return isBrowser2()?setEnv(createBrowserEnv()):import_isNodejs.isNodejs()?setEnv(createNodejsEnv()):null}function monkeyPatch(env3){if(environment||initialize(),!environment)throw new Error("monkeyPatch - environment is not defined, check isNodejs() and isBrowser()");let{Canvas=environment.Canvas,Image=environment.Image}=env3;environment.Canvas=Canvas,environment.Image=Image,environment.createCanvasElement=env3.createCanvasElement||(()=>new Canvas),environment.createImageElement=env3.createImageElement||(()=>new Image),environment.ImageData=env3.ImageData||environment.ImageData,environment.Video=env3.Video||environment.Video,environment.fetch=env3.fetch||environment.fetch,environment.readFile=env3.readFile||environment.readFile}var env2={getEnv,setEnv,initialize,createBrowserEnv,createFileSystem,createNodejsEnv,monkeyPatch,isBrowser:isBrowser2,isNodejs:import_isNodejs.isNodejs};initialize();function resolveInput(arg){return!env2.isNodejs()&&typeof arg=="string"?document.getElementById(arg):arg}function getContext2dOrThrow(canvasArg){let{Canvas,CanvasRenderingContext2D:CanvasRenderingContext2D2}=env2.getEnv();if(canvasArg instanceof CanvasRenderingContext2D2)return canvasArg;let canvas=resolveInput(canvasArg);if(!(canvas instanceof Canvas))throw new Error("resolveContext2d - expected canvas to be of instance of Canvas");let ctx=canvas.getContext("2d");if(!ctx)throw new Error("resolveContext2d - canvas 2d context is null");return ctx}var AnchorPosition;(function(AnchorPosition2){AnchorPosition2.TOP_LEFT="TOP_LEFT",AnchorPosition2.TOP_RIGHT="TOP_RIGHT",AnchorPosition2.BOTTOM_LEFT="BOTTOM_LEFT",AnchorPosition2.BOTTOM_RIGHT="BOTTOM_RIGHT"})(AnchorPosition||(AnchorPosition={}));var DrawTextFieldOptions=class{constructor(options={}){let{anchorPosition,backgroundColor,fontColor,fontSize,fontStyle,padding}=options;this.anchorPosition=anchorPosition||AnchorPosition.TOP_LEFT,this.backgroundColor=backgroundColor||"rgba(0, 0, 0, 0.5)",this.fontColor=fontColor||"rgba(255, 255, 255, 1)",this.fontSize=fontSize||14,this.fontStyle=fontStyle||"Georgia",this.padding=padding||4}},DrawTextField=class{constructor(text,anchor,options={}){this.text=typeof text=="string"?[text]:text instanceof DrawTextField?text.text:text,this.anchor=anchor,this.options=new DrawTextFieldOptions(options)}measureWidth(ctx){let{padding}=this.options;return this.text.map(l=>ctx.measureText(l).width).reduce((w0,w1)=>w0{let x=padding+upperLeft.x,y=padding+upperLeft.y+(i+1)*fontSize;ctx.fillText(textLine,x,y)})}};var DrawBoxOptions=class{constructor(options={}){let{boxColor,lineWidth,label,drawLabelOptions}=options;this.boxColor=boxColor||"rgba(0, 0, 255, 1)",this.lineWidth=lineWidth||2,this.label=label;let defaultDrawLabelOptions={anchorPosition:AnchorPosition.BOTTOM_LEFT,backgroundColor:this.boxColor};this.drawLabelOptions=new DrawTextFieldOptions({...defaultDrawLabelOptions,...drawLabelOptions})}},DrawBox=class{constructor(box,options={}){this.box=new Box(box),this.options=new DrawBoxOptions(options)}draw(canvasArg){let ctx=getContext2dOrThrow(canvasArg),{boxColor,lineWidth}=this.options,{x,y,width,height}=this.box;ctx.strokeStyle=boxColor,ctx.lineWidth=lineWidth,ctx.strokeRect(x,y,width,height);let{label}=this.options;label&&new DrawTextField([label],{x:x-lineWidth/2,y},this.options.drawLabelOptions).draw(canvasArg)}};function drawDetections(canvasArg,detections){(Array.isArray(detections)?detections:[detections]).forEach(det=>{let score=det instanceof FaceDetection?det.score:isWithFaceDetection(det)?det.detection.score:void 0,box=det instanceof FaceDetection?det.box:isWithFaceDetection(det)?det.detection.box:new Box(det),label=score?`${round5(score)}`:void 0;new DrawBox(box,{label}).draw(canvasArg)})}function isMediaLoaded(media){let{Image,Video}=env2.getEnv();return media instanceof Image&&media.complete||media instanceof Video&&media.readyState>=3}function awaitMediaLoaded(media){return new Promise((resolve,reject)=>{if(media instanceof env2.getEnv().Canvas||isMediaLoaded(media))return resolve(null);function onError(e){!e.currentTarget||(e.currentTarget.removeEventListener("load",onLoad),e.currentTarget.removeEventListener("error",onError),reject(e))}function onLoad(e){!e.currentTarget||(e.currentTarget.removeEventListener("load",onLoad),e.currentTarget.removeEventListener("error",onError),resolve(e))}media.addEventListener("load",onLoad),media.addEventListener("error",onError)})}function bufferToImage(buf){return new Promise((resolve,reject)=>{buf instanceof Blob||reject(new Error("bufferToImage - expected buf to be of type: Blob"));let reader=new FileReader;reader.onload=()=>{typeof reader.result!="string"&&reject(new Error("bufferToImage - expected reader.result to be a string, in onload"));let img=env2.getEnv().createImageElement();img.onload=()=>resolve(img),img.onerror=reject,img.src=reader.result},reader.onerror=reject,reader.readAsDataURL(buf)})}function getMediaDimensions(input2){let{Image,Video}=env2.getEnv();return input2 instanceof Image?new Dimensions(input2.naturalWidth,input2.naturalHeight):input2 instanceof Video?new Dimensions(input2.videoWidth,input2.videoHeight):new Dimensions(input2.width,input2.height)}function createCanvas2({width,height}){let{createCanvasElement}=env2.getEnv(),canvas=createCanvasElement();return canvas.width=width,canvas.height=height,canvas}function createCanvasFromMedia(media,dims){let{ImageData:ImageData2}=env2.getEnv();if(!(media instanceof ImageData2)&&!isMediaLoaded(media))throw new Error("createCanvasFromMedia - media has not finished loading yet");let{width,height}=dims||getMediaDimensions(media),canvas=createCanvas2({width,height});return media instanceof ImageData2?getContext2dOrThrow(canvas).putImageData(media,0,0):getContext2dOrThrow(canvas).drawImage(media,0,0,width,height),canvas}async function imageTensorToCanvas(imgTensor,canvas){let targetCanvas=canvas||env2.getEnv().createCanvasElement(),[height,width,numChannels]=imgTensor.shape.slice(isTensor4D(imgTensor)?1:0),imgTensor3D=tidy(()=>imgTensor.as3D(height,width,numChannels).toInt());return await browser_exports.toPixels(imgTensor3D,targetCanvas),imgTensor3D.dispose(),targetCanvas}function isMediaElement(input2){let{Image,Canvas,Video}=env2.getEnv();return input2 instanceof Image||input2 instanceof Canvas||input2 instanceof Video}function imageToSquare(input2,inputSize,centerImage=!1){let{Image,Canvas}=env2.getEnv();if(!(input2 instanceof Image||input2 instanceof Canvas))throw new Error("imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement");let dims=getMediaDimensions(input2),scale3=inputSize/Math.max(dims.height,dims.width),width=scale3*dims.width,height=scale3*dims.height,targetCanvas=createCanvas2({width:inputSize,height:inputSize}),inputCanvas=input2 instanceof Canvas?input2:createCanvasFromMedia(input2),offset=Math.abs(width-height)/2,dx=centerImage&&width{if(isTensor3D(input2)){this._imageTensors[idx]=input2,this._inputDimensions[idx]=input2.shape;return}if(isTensor4D(input2)){let batchSize=input2.shape[0];if(batchSize!==1)throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);this._imageTensors[idx]=input2,this._inputDimensions[idx]=input2.shape.slice(1);return}let canvas=input2 instanceof env2.getEnv().Canvas?input2:createCanvasFromMedia(input2);this._canvases[idx]=canvas,this._inputDimensions[idx]=[canvas.height,canvas.width,3]})}get imageTensors(){return this._imageTensors}get canvases(){return this._canvases}get isBatchInput(){return this.batchSize>1||this._treatAsBatchInput}get batchSize(){return this._batchSize}get inputDimensions(){return this._inputDimensions}get inputSize(){return this._inputSize}get reshapedInputDimensions(){return range6(this.batchSize,0,1).map((_,batchIdx)=>this.getReshapedInputDimensions(batchIdx))}getInput(batchIdx){return this.canvases[batchIdx]||this.imageTensors[batchIdx]}getInputDimensions(batchIdx){return this._inputDimensions[batchIdx]}getInputHeight(batchIdx){return this._inputDimensions[batchIdx][0]}getInputWidth(batchIdx){return this._inputDimensions[batchIdx][1]}getReshapedInputDimensions(batchIdx){if(typeof this.inputSize!="number")throw new Error("getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet");let width=this.getInputWidth(batchIdx),height=this.getInputHeight(batchIdx);return computeReshapedDimensions({width,height},this.inputSize)}toBatchTensor(inputSize,isCenterInputs=!0){return this._inputSize=inputSize,tidy(()=>{let inputTensors=range6(this.batchSize,0,1).map(batchIdx=>{let input2=this.getInput(batchIdx);if(input2 instanceof Tensor){let imgTensor=isTensor4D(input2)?input2:input2.expandDims();return imgTensor=padToSquare(imgTensor,isCenterInputs),(imgTensor.shape[1]!==inputSize||imgTensor.shape[2]!==inputSize)&&(imgTensor=image.resizeBilinear(imgTensor,[inputSize,inputSize])),imgTensor.as3D(inputSize,inputSize,3)}if(input2 instanceof env2.getEnv().Canvas)return browser_exports.fromPixels(imageToSquare(input2,inputSize,isCenterInputs));throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input2}`)});return stack(inputTensors.map(t=>cast(t,"float32"))).as4D(this.batchSize,inputSize,inputSize,3)})}};async function toNetInput(inputs){if(inputs instanceof NetInput)return inputs;let inputArgArray=Array.isArray(inputs)?inputs:[inputs];if(!inputArgArray.length)throw new Error("toNetInput - empty array passed as input");let getIdxHint=idx=>Array.isArray(inputs)?` at input index ${idx}:`:"",inputArray=inputArgArray.map(resolveInput);return inputArray.forEach((input2,i)=>{if(!isMediaElement(input2)&&!isTensor3D(input2)&&!isTensor4D(input2))throw typeof inputArgArray[i]=="string"?new Error(`toNetInput -${getIdxHint(i)} string passed, but could not resolve HTMLElement for element id ${inputArgArray[i]}`):new Error(`toNetInput -${getIdxHint(i)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`);if(isTensor4D(input2)){let batchSize=input2.shape[0];if(batchSize!==1)throw new Error(`toNetInput -${getIdxHint(i)} tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`)}}),await Promise.all(inputArray.map(input2=>isMediaElement(input2)&&awaitMediaLoaded(input2))),new NetInput(inputArray,Array.isArray(inputs))}async function extractFaces(input2,detections){let{Canvas}=env2.getEnv(),canvas=input2;if(!(input2 instanceof Canvas)){let netInput=await toNetInput(input2);if(netInput.batchSize>1)throw new Error("extractFaces - batchSize > 1 not supported");let tensorOrCanvas=netInput.getInput(0);canvas=tensorOrCanvas instanceof Canvas?tensorOrCanvas:await imageTensorToCanvas(tensorOrCanvas)}let ctx=getContext2dOrThrow(canvas);return detections.map(det=>det instanceof FaceDetection?det.forSize(canvas.width,canvas.height).box.floor():det).map(box=>box.clipAtImageBorders(canvas.width,canvas.height)).map(({x,y,width,height})=>{let faceImg=createCanvas2({width,height});return getContext2dOrThrow(faceImg).putImageData(ctx.getImageData(x,y,width,height),0,0),faceImg})}async function extractFaceTensors(imageTensor,detections){if(!isTensor3D(imageTensor)&&!isTensor4D(imageTensor))throw new Error("extractFaceTensors - expected image tensor to be 3D or 4D");if(isTensor4D(imageTensor)&&imageTensor.shape[0]>1)throw new Error("extractFaceTensors - batchSize > 1 not supported");return tidy(()=>{let[imgHeight,imgWidth,numChannels]=imageTensor.shape.slice(isTensor4D(imageTensor)?1:0);return detections.map(det=>det instanceof FaceDetection?det.forSize(imgWidth,imgHeight).box:det).map(box=>box.clipAtImageBorders(imgWidth,imgHeight)).map(({x,y,width,height})=>slice3d(imageTensor.as3D(imgHeight,imgWidth,numChannels),[y,x,0],[height,width,numChannels]))})}async function fetchOrThrow(url,init2){let{fetch:fetch3}=env2.getEnv(),res=await fetch3(url,init2);if(!(res.status<400))throw new Error(`failed to fetch: (${res.status}) ${res.statusText}, from url: ${res.url}`);return res}async function fetchImage(uri){let res=await fetchOrThrow(uri),blob=await res.blob();if(!blob.type.startsWith("image/"))throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${blob.type}, for url: ${res.url}`);return bufferToImage(blob)}async function fetchJson(uri){return(await fetchOrThrow(uri)).json()}async function fetchNetWeights(uri){return new Float32Array(await(await fetchOrThrow(uri)).arrayBuffer())}function getModelUris(uri,defaultModelName){let defaultManifestFilename=`${defaultModelName}-weights_manifest.json`;if(!uri)return{modelBaseUri:"",manifestUri:defaultManifestFilename};if(uri==="/")return{modelBaseUri:"/",manifestUri:`/${defaultManifestFilename}`};let protocol=uri.startsWith("http://")?"http://":uri.startsWith("https://")?"https://":"";uri=uri.replace(protocol,"");let parts=uri.split("/").filter(s=>s),manifestFile=uri.endsWith(".json")?parts[parts.length-1]:defaultManifestFilename,modelBaseUri=protocol+(uri.endsWith(".json")?parts.slice(0,parts.length-1):parts).join("/");return modelBaseUri=uri.startsWith("/")?`/${modelBaseUri}`:modelBaseUri,{modelBaseUri,manifestUri:modelBaseUri==="/"?`/${manifestFile}`:`${modelBaseUri}/${manifestFile}`}}async function loadWeightMap(uri,defaultModelName){let{manifestUri,modelBaseUri}=getModelUris(uri,defaultModelName),manifest=await fetchJson(manifestUri);return io_exports.loadWeights(manifest,modelBaseUri)}function matchDimensions(input2,reference,useMediaDimensions=!1){let{width,height}=useMediaDimensions?getMediaDimensions(reference):reference;return input2.width=width,input2.height=height,{width,height}}var NeuralNetwork=class{constructor(){this._params=void 0;this._paramMappings=[]}get params(){return this._params}get paramMappings(){return this._paramMappings}get isLoaded(){return!!this.params}getParamFromPath(paramPath){let{obj,objProp}=this.traversePropertyPath(paramPath);return obj[objProp]}reassignParamFromPath(paramPath,tensor2){let{obj,objProp}=this.traversePropertyPath(paramPath);obj[objProp].dispose(),obj[objProp]=tensor2}getParamList(){return this._paramMappings.map(({paramPath})=>({path:paramPath,tensor:this.getParamFromPath(paramPath)}))}getTrainableParams(){return this.getParamList().filter(param=>param.tensor instanceof Variable)}getFrozenParams(){return this.getParamList().filter(param=>!(param.tensor instanceof Variable))}variable(){this.getFrozenParams().forEach(({path,tensor:tensor2})=>{this.reassignParamFromPath(path,tensor2.variable())})}freeze(){this.getTrainableParams().forEach(({path,tensor:variable2})=>{let tensor2=tensor(variable2.dataSync());variable2.dispose(),this.reassignParamFromPath(path,tensor2)})}dispose(throwOnRedispose=!0){this.getParamList().forEach(param=>{if(throwOnRedispose&¶m.tensor.isDisposed)throw new Error(`param tensor has already been disposed for path ${param.path}`);param.tensor.dispose()}),this._params=void 0}serializeParams(){return new Float32Array(this.getParamList().map(({tensor:tensor2})=>Array.from(tensor2.dataSync())).reduce((flat,arr)=>flat.concat(arr)))}async load(weightsOrUrl){if(weightsOrUrl instanceof Float32Array){this.extractWeights(weightsOrUrl);return}await this.loadFromUri(weightsOrUrl)}async loadFromUri(uri){if(uri&&typeof uri!="string")throw new Error(`${this._name}.loadFromUri - expected model uri`);let weightMap=await loadWeightMap(uri,this.getDefaultModelName());this.loadFromWeightMap(weightMap)}async loadFromDisk(filePath){if(filePath&&typeof filePath!="string")throw new Error(`${this._name}.loadFromDisk - expected model file path`);let{readFile}=env2.getEnv(),{manifestUri,modelBaseUri}=getModelUris(filePath,this.getDefaultModelName()),fetchWeightsFromDisk=filePaths=>Promise.all(filePaths.map(fp=>readFile(fp).then(buf=>buf.buffer))),loadWeights2=io_exports.weightsLoaderFactory(fetchWeightsFromDisk),manifest=JSON.parse((await readFile(manifestUri)).toString()),weightMap=await loadWeights2(manifest,modelBaseUri);this.loadFromWeightMap(weightMap)}loadFromWeightMap(weightMap){let{paramMappings,params}=this.extractParamsFromWeigthMap(weightMap);this._paramMappings=paramMappings,this._params=params}extractWeights(weights){let{paramMappings,params}=this.extractParams(weights);this._paramMappings=paramMappings,this._params=params}traversePropertyPath(paramPath){if(!this.params)throw new Error("traversePropertyPath - model has no loaded params");let result=paramPath.split("/").reduce((res,objProp2)=>{if(!res.nextObj.hasOwnProperty(objProp2))throw new Error(`traversePropertyPath - object does not have property ${objProp2}, for path ${paramPath}`);return{obj:res.nextObj,objProp:objProp2,nextObj:res.nextObj[objProp2]}},{nextObj:this.params}),{obj,objProp}=result;if(!obj||!objProp||!(obj[objProp]instanceof Tensor))throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${paramPath}`);return{obj,objProp}}};function depthwiseSeparableConv(x,params,stride){return tidy(()=>{let out=separableConv2d(x,params.depthwise_filter,params.pointwise_filter,stride,"same");return out=add2(out,params.bias),out})}function denseBlock3(x,denseBlockParams,isFirstLayer=!1){return tidy(()=>{let out1=relu(isFirstLayer?add2(conv2d(x,denseBlockParams.conv0.filters,[2,2],"same"),denseBlockParams.conv0.bias):depthwiseSeparableConv(x,denseBlockParams.conv0,[2,2])),out2=depthwiseSeparableConv(out1,denseBlockParams.conv1,[1,1]),in3=relu(add2(out1,out2)),out3=depthwiseSeparableConv(in3,denseBlockParams.conv2,[1,1]);return relu(add2(out1,add2(out2,out3)))})}function denseBlock4(x,denseBlockParams,isFirstLayer=!1,isScaleDown=!0){return tidy(()=>{let out1=relu(isFirstLayer?add2(conv2d(x,denseBlockParams.conv0.filters,isScaleDown?[2,2]:[1,1],"same"),denseBlockParams.conv0.bias):depthwiseSeparableConv(x,denseBlockParams.conv0,isScaleDown?[2,2]:[1,1])),out2=depthwiseSeparableConv(out1,denseBlockParams.conv1,[1,1]),in3=relu(add2(out1,out2)),out3=depthwiseSeparableConv(in3,denseBlockParams.conv2,[1,1]),in4=relu(add2(out1,add2(out2,out3))),out4=depthwiseSeparableConv(in4,denseBlockParams.conv3,[1,1]);return relu(add2(out1,add2(out2,add2(out3,out4))))})}function convLayer(x,params,padding="same",withRelu=!1){return tidy(()=>{let out=add2(conv2d(x,params.filters,[1,1],padding),params.bias);return withRelu?relu(out):out})}function disposeUnusedWeightTensors(weightMap,paramMappings){Object.keys(weightMap).forEach(path=>{paramMappings.some(pm=>pm.originalPath===path)||weightMap[path].dispose()})}function extractConvParamsFactory(extractWeights,paramMappings){return(channelsIn,channelsOut,filterSize,mappedPrefix)=>{let filters=tensor4d(extractWeights(channelsIn*channelsOut*filterSize*filterSize),[filterSize,filterSize,channelsIn,channelsOut]),bias=tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/bias`}),{filters,bias}}}function extractFCParamsFactory(extractWeights,paramMappings){return(channelsIn,channelsOut,mappedPrefix)=>{let fc_weights=tensor2d(extractWeights(channelsIn*channelsOut),[channelsIn,channelsOut]),fc_bias=tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/weights`},{paramPath:`${mappedPrefix}/bias`}),{weights:fc_weights,bias:fc_bias}}}var SeparableConvParams=class{constructor(depthwise_filter,pointwise_filter,bias){this.depthwise_filter=depthwise_filter;this.pointwise_filter=pointwise_filter;this.bias=bias}};function extractSeparableConvParamsFactory(extractWeights,paramMappings){return(channelsIn,channelsOut,mappedPrefix)=>{let depthwise_filter=tensor4d(extractWeights(3*3*channelsIn),[3,3,channelsIn,1]),pointwise_filter=tensor4d(extractWeights(channelsIn*channelsOut),[1,1,channelsIn,channelsOut]),bias=tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/depthwise_filter`},{paramPath:`${mappedPrefix}/pointwise_filter`},{paramPath:`${mappedPrefix}/bias`}),new SeparableConvParams(depthwise_filter,pointwise_filter,bias)}}function loadSeparableConvParamsFactory(extractWeightEntry){return prefix=>{let depthwise_filter=extractWeightEntry(`${prefix}/depthwise_filter`,4),pointwise_filter=extractWeightEntry(`${prefix}/pointwise_filter`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return new SeparableConvParams(depthwise_filter,pointwise_filter,bias)}}function extractWeightEntryFactory(weightMap,paramMappings){return(originalPath,paramRank,mappedPath)=>{let tensor2=weightMap[originalPath];if(!isTensor(tensor2,paramRank))throw new Error(`expected weightMap[${originalPath}] to be a Tensor${paramRank}D, instead have ${tensor2}`);return paramMappings.push({originalPath,paramPath:mappedPath||originalPath}),tensor2}}function extractWeightsFactory(weights){let remainingWeights=weights;function extractWeights(numWeights){let ret=remainingWeights.slice(0,numWeights);return remainingWeights=remainingWeights.slice(numWeights),ret}function getRemainingWeights(){return remainingWeights}return{extractWeights,getRemainingWeights}}function extractorsFactory(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings),extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);function extractDenseBlock3Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(channelsIn,channelsOut,3,`${mappedPrefix}/conv0`):extractSeparableConvParams(channelsIn,channelsOut,`${mappedPrefix}/conv0`),conv1=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv1`),conv22=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv2`);return{conv0,conv1,conv2:conv22}}function extractDenseBlock4Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer=!1){let{conv0,conv1,conv2:conv22}=extractDenseBlock3Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer),conv3=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv3`);return{conv0,conv1,conv2:conv22,conv3}}return{extractDenseBlock3Params,extractDenseBlock4Params}}function extractParams(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractDenseBlock4Params}=extractorsFactory(extractWeights,paramMappings),dense0=extractDenseBlock4Params(3,32,"dense0",!0),dense1=extractDenseBlock4Params(32,64,"dense1"),dense2=extractDenseBlock4Params(64,128,"dense2"),dense3=extractDenseBlock4Params(128,256,"dense3");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{dense0,dense1,dense2,dense3}}}function loadConvParamsFactory(extractWeightEntry){return prefix=>{let filters=extractWeightEntry(`${prefix}/filters`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return{filters,bias}}}function loadParamsFactory(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings),extractConvParams=loadConvParamsFactory(extractWeightEntry),extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);function extractDenseBlock3Params(prefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(`${prefix}/conv0`):extractSeparableConvParams(`${prefix}/conv0`),conv1=extractSeparableConvParams(`${prefix}/conv1`),conv22=extractSeparableConvParams(`${prefix}/conv2`);return{conv0,conv1,conv2:conv22}}function extractDenseBlock4Params(prefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(`${prefix}/conv0`):extractSeparableConvParams(`${prefix}/conv0`),conv1=extractSeparableConvParams(`${prefix}/conv1`),conv22=extractSeparableConvParams(`${prefix}/conv2`),conv3=extractSeparableConvParams(`${prefix}/conv3`);return{conv0,conv1,conv2:conv22,conv3}}return{extractDenseBlock3Params,extractDenseBlock4Params}}function extractParamsFromWeigthMap(weightMap){let paramMappings=[],{extractDenseBlock4Params}=loadParamsFactory(weightMap,paramMappings),params={dense0:extractDenseBlock4Params("dense0",!0),dense1:extractDenseBlock4Params("dense1"),dense2:extractDenseBlock4Params("dense2"),dense3:extractDenseBlock4Params("dense3")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var FaceFeatureExtractor=class extends NeuralNetwork{constructor(){super("FaceFeatureExtractor")}forwardInput(input2){let{params}=this;if(!params)throw new Error("FaceFeatureExtractor - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(112,!0),"float32"),normalized=normalize(batchTensor,[122.782,117.001,104.298]).div(scalar(255)),out=denseBlock4(normalized,params.dense0,!0);return out=denseBlock4(out,params.dense1),out=denseBlock4(out,params.dense2),out=denseBlock4(out,params.dense3),out=avgPool(out,[7,7],[2,2],"valid"),out})}async forward(input2){return this.forwardInput(await toNetInput(input2))}getDefaultModelName(){return"face_feature_extractor_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap(weightMap)}extractParams(weights){return extractParams(weights)}};function fullyConnectedLayer(x,params){return tidy(()=>add2(matMul(x,params.weights),params.bias))}function extractParams2(weights,channelsIn,channelsOut){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),fc=extractFCParamsFactory(extractWeights,paramMappings)(channelsIn,channelsOut,"fc");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{fc}}}function extractParamsFromWeigthMap2(weightMap){let paramMappings=[],extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractFcParams(prefix){let weights=extractWeightEntry(`${prefix}/weights`,2),bias=extractWeightEntry(`${prefix}/bias`,1);return{weights,bias}}let params={fc:extractFcParams("fc")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function seperateWeightMaps(weightMap){let featureExtractorMap={},classifierMap={};return Object.keys(weightMap).forEach(key=>{let map=key.startsWith("fc")?classifierMap:featureExtractorMap;map[key]=weightMap[key]}),{featureExtractorMap,classifierMap}}var FaceProcessor=class extends NeuralNetwork{constructor(_name,faceFeatureExtractor){super(_name);this._faceFeatureExtractor=faceFeatureExtractor}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(input2){let{params}=this;if(!params)throw new Error(`${this._name} - load model before inference`);return tidy(()=>{let bottleneckFeatures=input2 instanceof NetInput?this.faceFeatureExtractor.forwardInput(input2):input2;return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0],-1),params.fc)})}dispose(throwOnRedispose=!0){this.faceFeatureExtractor.dispose(throwOnRedispose),super.dispose(throwOnRedispose)}loadClassifierParams(weights){let{params,paramMappings}=this.extractClassifierParams(weights);this._params=params,this._paramMappings=paramMappings}extractClassifierParams(weights){return extractParams2(weights,this.getClassifierChannelsIn(),this.getClassifierChannelsOut())}extractParamsFromWeigthMap(weightMap){let{featureExtractorMap,classifierMap}=seperateWeightMaps(weightMap);return this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap),extractParamsFromWeigthMap2(classifierMap)}extractParams(weights){let cIn=this.getClassifierChannelsIn(),cOut=this.getClassifierChannelsOut(),classifierWeightSize=cOut*cIn+cOut,featureExtractorWeights=weights.slice(0,weights.length-classifierWeightSize),classifierWeights=weights.slice(weights.length-classifierWeightSize);return this.faceFeatureExtractor.extractWeights(featureExtractorWeights),this.extractClassifierParams(classifierWeights)}};var FACE_EXPRESSION_LABELS=["neutral","happy","sad","angry","fearful","disgusted","surprised"],FaceExpressions=class{constructor(probabilities){if(probabilities.length!==7)throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${probabilities.length}`);FACE_EXPRESSION_LABELS.forEach((expression,idx)=>{this[expression]=probabilities[idx]})}asSortedArray(){return FACE_EXPRESSION_LABELS.map(expression=>({expression,probability:this[expression]})).sort((e0,e1)=>e1.probability-e0.probability)}};var FaceExpressionNet=class extends FaceProcessor{constructor(faceFeatureExtractor=new FaceFeatureExtractor){super("FaceExpressionNet",faceFeatureExtractor)}forwardInput(input2){return tidy(()=>softmax(this.runNet(input2)))}async forward(input2){return this.forwardInput(await toNetInput(input2))}async predictExpressions(input2){let netInput=await toNetInput(input2),out=await this.forwardInput(netInput),probabilitesByBatch=await Promise.all(unstack(out).map(async t=>{let data=await t.data();return t.dispose(),data}));out.dispose();let predictionsByBatch=probabilitesByBatch.map(probabilites=>new FaceExpressions(probabilites));return netInput.isBatchInput?predictionsByBatch:predictionsByBatch[0]}getDefaultModelName(){return"face_expression_model"}getClassifierChannelsIn(){return 256}getClassifierChannelsOut(){return 7}};function isWithFaceExpressions(obj){return obj.expressions instanceof FaceExpressions}function extendWithFaceExpressions(sourceObj,expressions){return{...sourceObj,...{expressions}}}function drawFaceExpressions(canvasArg,faceExpressions,minConfidence=.1,textFieldAnchor){(Array.isArray(faceExpressions)?faceExpressions:[faceExpressions]).forEach(e=>{let expr=e instanceof FaceExpressions?e:isWithFaceExpressions(e)?e.expressions:void 0;if(!expr)throw new Error("drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof");let resultsToDisplay=expr.asSortedArray().filter(exprLocal=>exprLocal.probability>minConfidence),anchor=isWithFaceDetection(e)?e.detection.box.bottomLeft:textFieldAnchor||new Point(0,0);new DrawTextField(resultsToDisplay.map(exprLocal=>`${exprLocal.expression} (${round5(exprLocal.probability)})`),anchor).draw(canvasArg)})}function isWithFaceLandmarks(obj){return isWithFaceDetection(obj)&&obj.landmarks instanceof FaceLandmarks&&obj.unshiftedLandmarks instanceof FaceLandmarks&&obj.alignedRect instanceof FaceDetection}function extendWithFaceLandmarks(sourceObj,unshiftedLandmarks){let{box:shift}=sourceObj.detection,landmarks=unshiftedLandmarks.shiftBy(shift.x,shift.y),rect=landmarks.align(),{imageDims}=sourceObj.detection,alignedRect=new FaceDetection(sourceObj.detection.score,rect.rescale(imageDims.reverse()),imageDims);return{...sourceObj,...{landmarks,unshiftedLandmarks,alignedRect}}}var DrawFaceLandmarksOptions=class{constructor(options={}){let{drawLines=!0,drawPoints=!0,lineWidth,lineColor,pointSize,pointColor}=options;this.drawLines=drawLines,this.drawPoints=drawPoints,this.lineWidth=lineWidth||1,this.pointSize=pointSize||2,this.lineColor=lineColor||"rgba(0, 255, 255, 1)",this.pointColor=pointColor||"rgba(255, 0, 255, 1)"}},DrawFaceLandmarks=class{constructor(faceLandmarks,options={}){this.faceLandmarks=faceLandmarks,this.options=new DrawFaceLandmarksOptions(options)}draw(canvasArg){let ctx=getContext2dOrThrow(canvasArg),{drawLines,drawPoints,lineWidth,lineColor,pointSize,pointColor}=this.options;if(drawLines&&this.faceLandmarks instanceof FaceLandmarks68&&(ctx.strokeStyle=lineColor,ctx.lineWidth=lineWidth,drawContour(ctx,this.faceLandmarks.getJawOutline()),drawContour(ctx,this.faceLandmarks.getLeftEyeBrow()),drawContour(ctx,this.faceLandmarks.getRightEyeBrow()),drawContour(ctx,this.faceLandmarks.getNose()),drawContour(ctx,this.faceLandmarks.getLeftEye(),!0),drawContour(ctx,this.faceLandmarks.getRightEye(),!0),drawContour(ctx,this.faceLandmarks.getMouth(),!0)),drawPoints){ctx.strokeStyle=pointColor,ctx.fillStyle=pointColor;let drawPoint=pt=>{ctx.beginPath(),ctx.arc(pt.x,pt.y,pointSize,0,2*Math.PI),ctx.fill()};this.faceLandmarks.positions.forEach(drawPoint)}}};function drawFaceLandmarks(canvasArg,faceLandmarks){(Array.isArray(faceLandmarks)?faceLandmarks:[faceLandmarks]).forEach(f=>{let landmarks=f instanceof FaceLandmarks?f:isWithFaceLandmarks(f)?f.landmarks:void 0;if(!landmarks)throw new Error("drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof");new DrawFaceLandmarks(landmarks).draw(canvasArg)})}var version10="0.11.1";function extractorsFactory2(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings),extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);function extractReductionBlockParams(channelsIn,channelsOut,mappedPrefix){let separable_conv0=extractSeparableConvParams(channelsIn,channelsOut,`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/separable_conv1`),expansion_conv=extractConvParams(channelsIn,channelsOut,1,`${mappedPrefix}/expansion_conv`);return{separable_conv0,separable_conv1,expansion_conv}}function extractMainBlockParams(channels,mappedPrefix){let separable_conv0=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv1`),separable_conv2=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv2`);return{separable_conv0,separable_conv1,separable_conv2}}return{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}}function extractParams3(weights,numMainBlocks){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}=extractorsFactory2(extractWeights,paramMappings),entry_flow_conv_in=extractConvParams(3,32,3,"entry_flow/conv_in"),entry_flow_reduction_block_0=extractReductionBlockParams(32,64,"entry_flow/reduction_block_0"),entry_flow_reduction_block_1=extractReductionBlockParams(64,128,"entry_flow/reduction_block_1"),entry_flow={conv_in:entry_flow_conv_in,reduction_block_0:entry_flow_reduction_block_0,reduction_block_1:entry_flow_reduction_block_1},middle_flow={};range6(numMainBlocks,0,1).forEach(idx=>{middle_flow[`main_block_${idx}`]=extractMainBlockParams(128,`middle_flow/main_block_${idx}`)});let exit_flow_reduction_block=extractReductionBlockParams(128,256,"exit_flow/reduction_block"),exit_flow_separable_conv=extractSeparableConvParams(256,512,"exit_flow/separable_conv"),exit_flow={reduction_block:exit_flow_reduction_block,separable_conv:exit_flow_separable_conv};if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{entry_flow,middle_flow,exit_flow}}}function loadParamsFactory2(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings),extractConvParams=loadConvParamsFactory(extractWeightEntry),extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);function extractReductionBlockParams(mappedPrefix){let separable_conv0=extractSeparableConvParams(`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(`${mappedPrefix}/separable_conv1`),expansion_conv=extractConvParams(`${mappedPrefix}/expansion_conv`);return{separable_conv0,separable_conv1,expansion_conv}}function extractMainBlockParams(mappedPrefix){let separable_conv0=extractSeparableConvParams(`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(`${mappedPrefix}/separable_conv1`),separable_conv2=extractSeparableConvParams(`${mappedPrefix}/separable_conv2`);return{separable_conv0,separable_conv1,separable_conv2}}return{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}}function extractParamsFromWeigthMap3(weightMap,numMainBlocks){let paramMappings=[],{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}=loadParamsFactory2(weightMap,paramMappings),entry_flow_conv_in=extractConvParams("entry_flow/conv_in"),entry_flow_reduction_block_0=extractReductionBlockParams("entry_flow/reduction_block_0"),entry_flow_reduction_block_1=extractReductionBlockParams("entry_flow/reduction_block_1"),entry_flow={conv_in:entry_flow_conv_in,reduction_block_0:entry_flow_reduction_block_0,reduction_block_1:entry_flow_reduction_block_1},middle_flow={};range6(numMainBlocks,0,1).forEach(idx=>{middle_flow[`main_block_${idx}`]=extractMainBlockParams(`middle_flow/main_block_${idx}`)});let exit_flow_reduction_block=extractReductionBlockParams("exit_flow/reduction_block"),exit_flow_separable_conv=extractSeparableConvParams("exit_flow/separable_conv"),exit_flow={reduction_block:exit_flow_reduction_block,separable_conv:exit_flow_separable_conv};return disposeUnusedWeightTensors(weightMap,paramMappings),{params:{entry_flow,middle_flow,exit_flow},paramMappings}}function conv(x,params,stride){return add2(conv2d(x,params.filters,stride,"same"),params.bias)}function reductionBlock(x,params,isActivateInput=!0){let out=isActivateInput?relu(x):x;return out=depthwiseSeparableConv(out,params.separable_conv0,[1,1]),out=depthwiseSeparableConv(relu(out),params.separable_conv1,[1,1]),out=maxPool(out,[3,3],[2,2],"same"),out=add2(out,conv(x,params.expansion_conv,[2,2])),out}function mainBlock(x,params){let out=depthwiseSeparableConv(relu(x),params.separable_conv0,[1,1]);return out=depthwiseSeparableConv(relu(out),params.separable_conv1,[1,1]),out=depthwiseSeparableConv(relu(out),params.separable_conv2,[1,1]),out=add2(out,x),out}var TinyXception=class extends NeuralNetwork{constructor(numMainBlocks){super("TinyXception");this._numMainBlocks=numMainBlocks}forwardInput(input2){let{params}=this;if(!params)throw new Error("TinyXception - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(112,!0),"float32"),normalized=normalize(batchTensor,[122.782,117.001,104.298]).div(scalar(256)),out=relu(conv(normalized,params.entry_flow.conv_in,[2,2]));return out=reductionBlock(out,params.entry_flow.reduction_block_0,!1),out=reductionBlock(out,params.entry_flow.reduction_block_1),range6(this._numMainBlocks,0,1).forEach(idx=>{out=mainBlock(out,params.middle_flow[`main_block_${idx}`])}),out=reductionBlock(out,params.exit_flow.reduction_block),out=relu(depthwiseSeparableConv(out,params.exit_flow.separable_conv,[1,1])),out})}async forward(input2){return this.forwardInput(await toNetInput(input2))}getDefaultModelName(){return"tiny_xception_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap3(weightMap,this._numMainBlocks)}extractParams(weights){return extractParams3(weights,this._numMainBlocks)}};function extractParams4(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),extractFCParams=extractFCParamsFactory(extractWeights,paramMappings),age=extractFCParams(512,1,"fc/age"),gender=extractFCParams(512,2,"fc/gender");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{fc:{age,gender}}}}function extractParamsFromWeigthMap4(weightMap){let paramMappings=[],extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractFcParams(prefix){let weights=extractWeightEntry(`${prefix}/weights`,2),bias=extractWeightEntry(`${prefix}/bias`,1);return{weights,bias}}let params={fc:{age:extractFcParams("fc/age"),gender:extractFcParams("fc/gender")}};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var Gender;(function(Gender2){Gender2.FEMALE="female",Gender2.MALE="male"})(Gender||(Gender={}));var AgeGenderNet=class extends NeuralNetwork{constructor(faceFeatureExtractor=new TinyXception(2)){super("AgeGenderNet");this._faceFeatureExtractor=faceFeatureExtractor}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(input2){let{params}=this;if(!params)throw new Error(`${this._name} - load model before inference`);return tidy(()=>{let bottleneckFeatures=input2 instanceof NetInput?this.faceFeatureExtractor.forwardInput(input2):input2,pooled=avgPool(bottleneckFeatures,[7,7],[2,2],"valid").as2D(bottleneckFeatures.shape[0],-1),age=fullyConnectedLayer(pooled,params.fc.age).as1D(),gender=fullyConnectedLayer(pooled,params.fc.gender);return{age,gender}})}forwardInput(input2){return tidy(()=>{let{age,gender}=this.runNet(input2);return{age,gender:softmax(gender)}})}async forward(input2){return this.forwardInput(await toNetInput(input2))}async predictAgeAndGender(input2){let netInput=await toNetInput(input2),out=await this.forwardInput(netInput),ages=unstack(out.age),genders=unstack(out.gender),ageAndGenderTensors=ages.map((ageTensor,i)=>({ageTensor,genderTensor:genders[i]})),predictionsByBatch=await Promise.all(ageAndGenderTensors.map(async({ageTensor,genderTensor})=>{let age=(await ageTensor.data())[0],probMale=(await genderTensor.data())[0],isMale=probMale>.5,gender=isMale?Gender.MALE:Gender.FEMALE,genderProbability=isMale?probMale:1-probMale;return ageTensor.dispose(),genderTensor.dispose(),{age,gender,genderProbability}}));return out.age.dispose(),out.gender.dispose(),netInput.isBatchInput?predictionsByBatch:predictionsByBatch[0]}getDefaultModelName(){return"age_gender_model"}dispose(throwOnRedispose=!0){this.faceFeatureExtractor.dispose(throwOnRedispose),super.dispose(throwOnRedispose)}loadClassifierParams(weights){let{params,paramMappings}=this.extractClassifierParams(weights);this._params=params,this._paramMappings=paramMappings}extractClassifierParams(weights){return extractParams4(weights)}extractParamsFromWeigthMap(weightMap){let{featureExtractorMap,classifierMap}=seperateWeightMaps(weightMap);return this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap),extractParamsFromWeigthMap4(classifierMap)}extractParams(weights){let classifierWeightSize=512*1+1+(512*2+2),featureExtractorWeights=weights.slice(0,weights.length-classifierWeightSize),classifierWeights=weights.slice(weights.length-classifierWeightSize);return this.faceFeatureExtractor.extractWeights(featureExtractorWeights),this.extractClassifierParams(classifierWeights)}};var FaceLandmark68NetBase=class extends FaceProcessor{postProcess(output,inputSize,originalDimensions){let inputDimensions=originalDimensions.map(({width,height})=>{let scale3=inputSize/Math.max(height,width);return{width:width*scale3,height:height*scale3}}),batchSize=inputDimensions.length;return tidy(()=>{let createInterleavedTensor=(fillX,fillY)=>stack([fill([68],fillX,"float32"),fill([68],fillY,"float32")],1).as2D(1,136).as1D(),getPadding2=(batchIdx,cond)=>{let{width,height}=inputDimensions[batchIdx];return cond(width,height)?Math.abs(width-height)/2:0},getPaddingX=batchIdx=>getPadding2(batchIdx,(w,h)=>wgetPadding2(batchIdx,(w,h)=>hcreateInterleavedTensor(getPaddingX(batchIdx),getPaddingY(batchIdx))))).div(stack(Array.from(Array(batchSize),(_,batchIdx)=>createInterleavedTensor(inputDimensions[batchIdx].width,inputDimensions[batchIdx].height))))})}forwardInput(input2){return tidy(()=>{let out=this.runNet(input2);return this.postProcess(out,input2.inputSize,input2.inputDimensions.map(([height,width])=>({height,width})))})}async forward(input2){return this.forwardInput(await toNetInput(input2))}async detectLandmarks(input2){let netInput=await toNetInput(input2),landmarkTensors=tidy(()=>unstack(this.forwardInput(netInput))),landmarksForBatch=await Promise.all(landmarkTensors.map(async(landmarkTensor,batchIdx)=>{let landmarksArray=Array.from(await landmarkTensor.data()),xCoords=landmarksArray.filter((_,i)=>isEven2(i)),yCoords=landmarksArray.filter((_,i)=>!isEven2(i));return new FaceLandmarks68(Array(68).fill(0).map((_,i)=>new Point(xCoords[i],yCoords[i])),{height:netInput.getInputHeight(batchIdx),width:netInput.getInputWidth(batchIdx)})}));return landmarkTensors.forEach(t=>t.dispose()),netInput.isBatchInput?landmarksForBatch:landmarksForBatch[0]}getClassifierChannelsOut(){return 136}};var FaceLandmark68Net=class extends FaceLandmark68NetBase{constructor(faceFeatureExtractor=new FaceFeatureExtractor){super("FaceLandmark68Net",faceFeatureExtractor)}getDefaultModelName(){return"face_landmark_68_model"}getClassifierChannelsIn(){return 256}};function extractParamsFromWeigthMapTiny(weightMap){let paramMappings=[],{extractDenseBlock3Params}=loadParamsFactory(weightMap,paramMappings),params={dense0:extractDenseBlock3Params("dense0",!0),dense1:extractDenseBlock3Params("dense1"),dense2:extractDenseBlock3Params("dense2")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function extractParamsTiny(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractDenseBlock3Params}=extractorsFactory(extractWeights,paramMappings),dense0=extractDenseBlock3Params(3,32,"dense0",!0),dense1=extractDenseBlock3Params(32,64,"dense1"),dense2=extractDenseBlock3Params(64,128,"dense2");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{dense0,dense1,dense2}}}var TinyFaceFeatureExtractor=class extends NeuralNetwork{constructor(){super("TinyFaceFeatureExtractor")}forwardInput(input2){let{params}=this;if(!params)throw new Error("TinyFaceFeatureExtractor - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(112,!0),"float32"),normalized=normalize(batchTensor,[122.782,117.001,104.298]).div(scalar(255)),out=denseBlock3(normalized,params.dense0,!0);return out=denseBlock3(out,params.dense1),out=denseBlock3(out,params.dense2),out=avgPool(out,[14,14],[2,2],"valid"),out})}async forward(input2){return this.forwardInput(await toNetInput(input2))}getDefaultModelName(){return"face_feature_extractor_tiny_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMapTiny(weightMap)}extractParams(weights){return extractParamsTiny(weights)}};var FaceLandmark68TinyNet=class extends FaceLandmark68NetBase{constructor(faceFeatureExtractor=new TinyFaceFeatureExtractor){super("FaceLandmark68TinyNet",faceFeatureExtractor)}getDefaultModelName(){return"face_landmark_68_tiny_model"}getClassifierChannelsIn(){return 128}};var FaceLandmarkNet=class extends FaceLandmark68Net{};function scale2(x,params){return add2(mul(x,params.weights),params.biases)}function convLayer2(x,params,strides,withRelu,padding="same"){let{filters,bias}=params.conv,out=conv2d(x,filters,strides,padding);return out=add2(out,bias),out=scale2(out,params.scale),withRelu?relu(out):out}function conv2(x,params){return convLayer2(x,params,[1,1],!0)}function convNoRelu(x,params){return convLayer2(x,params,[1,1],!1)}function convDown(x,params){return convLayer2(x,params,[2,2],!0,"valid")}function extractorsFactory3(extractWeights,paramMappings){function extractFilterValues(numFilterValues,numFilters,filterSize){let weights=extractWeights(numFilterValues),depth=weights.length/(numFilters*filterSize*filterSize);if(isFloat(depth))throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`);return tidy(()=>transpose(tensor4d(weights,[numFilters,depth,filterSize,filterSize]),[2,3,1,0]))}function extractConvParams(numFilterValues,numFilters,filterSize,mappedPrefix){let filters=extractFilterValues(numFilterValues,numFilters,filterSize),bias=tensor1d(extractWeights(numFilters));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/bias`}),{filters,bias}}function extractScaleLayerParams(numWeights,mappedPrefix){let weights=tensor1d(extractWeights(numWeights)),biases=tensor1d(extractWeights(numWeights));return paramMappings.push({paramPath:`${mappedPrefix}/weights`},{paramPath:`${mappedPrefix}/biases`}),{weights,biases}}function extractConvLayerParams(numFilterValues,numFilters,filterSize,mappedPrefix){let conv3=extractConvParams(numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv`),scale3=extractScaleLayerParams(numFilters,`${mappedPrefix}/scale`);return{conv:conv3,scale:scale3}}function extractResidualLayerParams(numFilterValues,numFilters,filterSize,mappedPrefix,isDown=!1){let conv1=extractConvLayerParams((isDown?.5:1)*numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv1`),conv22=extractConvLayerParams(numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv2`);return{conv1,conv2:conv22}}return{extractConvLayerParams,extractResidualLayerParams}}function extractParams5(weights){let{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),paramMappings=[],{extractConvLayerParams,extractResidualLayerParams}=extractorsFactory3(extractWeights,paramMappings),conv32_down=extractConvLayerParams(4704,32,7,"conv32_down"),conv32_1=extractResidualLayerParams(9216,32,3,"conv32_1"),conv32_2=extractResidualLayerParams(9216,32,3,"conv32_2"),conv32_3=extractResidualLayerParams(9216,32,3,"conv32_3"),conv64_down=extractResidualLayerParams(36864,64,3,"conv64_down",!0),conv64_1=extractResidualLayerParams(36864,64,3,"conv64_1"),conv64_2=extractResidualLayerParams(36864,64,3,"conv64_2"),conv64_3=extractResidualLayerParams(36864,64,3,"conv64_3"),conv128_down=extractResidualLayerParams(147456,128,3,"conv128_down",!0),conv128_1=extractResidualLayerParams(147456,128,3,"conv128_1"),conv128_2=extractResidualLayerParams(147456,128,3,"conv128_2"),conv256_down=extractResidualLayerParams(589824,256,3,"conv256_down",!0),conv256_1=extractResidualLayerParams(589824,256,3,"conv256_1"),conv256_2=extractResidualLayerParams(589824,256,3,"conv256_2"),conv256_down_out=extractResidualLayerParams(589824,256,3,"conv256_down_out"),fc=tidy(()=>transpose(tensor2d(extractWeights(256*128),[128,256]),[1,0]));if(paramMappings.push({paramPath:"fc"}),getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params:{conv32_down,conv32_1,conv32_2,conv32_3,conv64_down,conv64_1,conv64_2,conv64_3,conv128_down,conv128_1,conv128_2,conv256_down,conv256_1,conv256_2,conv256_down_out,fc},paramMappings}}function extractorsFactory4(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractScaleLayerParams(prefix){let weights=extractWeightEntry(`${prefix}/scale/weights`,1),biases=extractWeightEntry(`${prefix}/scale/biases`,1);return{weights,biases}}function extractConvLayerParams(prefix){let filters=extractWeightEntry(`${prefix}/conv/filters`,4),bias=extractWeightEntry(`${prefix}/conv/bias`,1),scale3=extractScaleLayerParams(prefix);return{conv:{filters,bias},scale:scale3}}function extractResidualLayerParams(prefix){return{conv1:extractConvLayerParams(`${prefix}/conv1`),conv2:extractConvLayerParams(`${prefix}/conv2`)}}return{extractConvLayerParams,extractResidualLayerParams}}function extractParamsFromWeigthMap5(weightMap){let paramMappings=[],{extractConvLayerParams,extractResidualLayerParams}=extractorsFactory4(weightMap,paramMappings),conv32_down=extractConvLayerParams("conv32_down"),conv32_1=extractResidualLayerParams("conv32_1"),conv32_2=extractResidualLayerParams("conv32_2"),conv32_3=extractResidualLayerParams("conv32_3"),conv64_down=extractResidualLayerParams("conv64_down"),conv64_1=extractResidualLayerParams("conv64_1"),conv64_2=extractResidualLayerParams("conv64_2"),conv64_3=extractResidualLayerParams("conv64_3"),conv128_down=extractResidualLayerParams("conv128_down"),conv128_1=extractResidualLayerParams("conv128_1"),conv128_2=extractResidualLayerParams("conv128_2"),conv256_down=extractResidualLayerParams("conv256_down"),conv256_1=extractResidualLayerParams("conv256_1"),conv256_2=extractResidualLayerParams("conv256_2"),conv256_down_out=extractResidualLayerParams("conv256_down_out"),{fc}=weightMap;if(paramMappings.push({originalPath:"fc",paramPath:"fc"}),!isTensor2D(fc))throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${fc}`);let params={conv32_down,conv32_1,conv32_2,conv32_3,conv64_down,conv64_1,conv64_2,conv64_3,conv128_down,conv128_1,conv128_2,conv256_down,conv256_1,conv256_2,conv256_down_out,fc};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function residual(x,params){let out=conv2(x,params.conv1);return out=convNoRelu(out,params.conv2),out=add2(out,x),out=relu(out),out}function residualDown(x,params){let out=convDown(x,params.conv1);out=convNoRelu(out,params.conv2);let pooled=avgPool(x,2,2,"valid"),zeros4=zeros(pooled.shape),isPad=pooled.shape[3]!==out.shape[3];if(pooled.shape[1]!==out.shape[1]||pooled.shape[2]!==out.shape[2]){let padShapeX=[...out.shape];padShapeX[1]=1;let zerosW=zeros(padShapeX);out=concat([out,zerosW],1);let padShapeY=[...out.shape];padShapeY[2]=1;let zerosH=zeros(padShapeY);out=concat([out,zerosH],2)}return pooled=isPad?concat([pooled,zeros4],3):pooled,out=add2(pooled,out),out=relu(out),out}var FaceRecognitionNet=class extends NeuralNetwork{constructor(){super("FaceRecognitionNet")}forwardInput(input2){let{params}=this;if(!params)throw new Error("FaceRecognitionNet - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(150,!0),"float32"),normalized=normalize(batchTensor,[122.782,117.001,104.298]).div(scalar(256)),out=convDown(normalized,params.conv32_down);out=maxPool(out,3,2,"valid"),out=residual(out,params.conv32_1),out=residual(out,params.conv32_2),out=residual(out,params.conv32_3),out=residualDown(out,params.conv64_down),out=residual(out,params.conv64_1),out=residual(out,params.conv64_2),out=residual(out,params.conv64_3),out=residualDown(out,params.conv128_down),out=residual(out,params.conv128_1),out=residual(out,params.conv128_2),out=residualDown(out,params.conv256_down),out=residual(out,params.conv256_1),out=residual(out,params.conv256_2),out=residualDown(out,params.conv256_down_out);let globalAvg=out.mean([1,2]);return matMul(globalAvg,params.fc)})}async forward(input2){return this.forwardInput(await toNetInput(input2))}async computeFaceDescriptor(input2){let netInput=await toNetInput(input2),faceDescriptorTensors=tidy(()=>unstack(this.forwardInput(netInput))),faceDescriptorsForBatch=await Promise.all(faceDescriptorTensors.map(t=>t.data()));return faceDescriptorTensors.forEach(t=>t.dispose()),netInput.isBatchInput?faceDescriptorsForBatch:faceDescriptorsForBatch[0]}getDefaultModelName(){return"face_recognition_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap5(weightMap)}extractParams(weights){return extractParams5(weights)}};function createFaceRecognitionNet(weights){let net=new FaceRecognitionNet;return net.extractWeights(weights),net}function extendWithFaceDescriptor(sourceObj,descriptor){return{...sourceObj,...{descriptor}}}function isWithAge(obj){return typeof obj.age=="number"}function extendWithAge(sourceObj,age){return{...sourceObj,...{age}}}function isWithGender(obj){return(obj.gender===Gender.MALE||obj.gender===Gender.FEMALE)&&isValidProbablitiy(obj.genderProbability)}function extendWithGender(sourceObj,gender,genderProbability){return{...sourceObj,...{gender,genderProbability}}}function extractorsFactory5(extractWeights,paramMappings){function extractDepthwiseConvParams(numChannels,mappedPrefix){let filters=tensor4d(extractWeights(3*3*numChannels),[3,3,numChannels,1]),batch_norm_scale=tensor1d(extractWeights(numChannels)),batch_norm_offset=tensor1d(extractWeights(numChannels)),batch_norm_mean=tensor1d(extractWeights(numChannels)),batch_norm_variance=tensor1d(extractWeights(numChannels));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/batch_norm_scale`},{paramPath:`${mappedPrefix}/batch_norm_offset`},{paramPath:`${mappedPrefix}/batch_norm_mean`},{paramPath:`${mappedPrefix}/batch_norm_variance`}),{filters,batch_norm_scale,batch_norm_offset,batch_norm_mean,batch_norm_variance}}function extractConvParams(channelsIn,channelsOut,filterSize,mappedPrefix,isPointwiseConv){let filters=tensor4d(extractWeights(channelsIn*channelsOut*filterSize*filterSize),[filterSize,filterSize,channelsIn,channelsOut]),bias=tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/${isPointwiseConv?"batch_norm_offset":"bias"}`}),{filters,bias}}function extractPointwiseConvParams(channelsIn,channelsOut,filterSize,mappedPrefix){let{filters,bias}=extractConvParams(channelsIn,channelsOut,filterSize,mappedPrefix,!0);return{filters,batch_norm_offset:bias}}function extractConvPairParams(channelsIn,channelsOut,mappedPrefix){let depthwise_conv=extractDepthwiseConvParams(channelsIn,`${mappedPrefix}/depthwise_conv`),pointwise_conv=extractPointwiseConvParams(channelsIn,channelsOut,1,`${mappedPrefix}/pointwise_conv`);return{depthwise_conv,pointwise_conv}}function extractMobilenetV1Params(){let conv_0=extractPointwiseConvParams(3,32,3,"mobilenetv1/conv_0"),conv_1=extractConvPairParams(32,64,"mobilenetv1/conv_1"),conv_2=extractConvPairParams(64,128,"mobilenetv1/conv_2"),conv_3=extractConvPairParams(128,128,"mobilenetv1/conv_3"),conv_4=extractConvPairParams(128,256,"mobilenetv1/conv_4"),conv_5=extractConvPairParams(256,256,"mobilenetv1/conv_5"),conv_6=extractConvPairParams(256,512,"mobilenetv1/conv_6"),conv_7=extractConvPairParams(512,512,"mobilenetv1/conv_7"),conv_8=extractConvPairParams(512,512,"mobilenetv1/conv_8"),conv_9=extractConvPairParams(512,512,"mobilenetv1/conv_9"),conv_10=extractConvPairParams(512,512,"mobilenetv1/conv_10"),conv_11=extractConvPairParams(512,512,"mobilenetv1/conv_11"),conv_12=extractConvPairParams(512,1024,"mobilenetv1/conv_12"),conv_13=extractConvPairParams(1024,1024,"mobilenetv1/conv_13");return{conv_0,conv_1,conv_2,conv_3,conv_4,conv_5,conv_6,conv_7,conv_8,conv_9,conv_10,conv_11,conv_12,conv_13}}function extractPredictionLayerParams(){let conv_0=extractPointwiseConvParams(1024,256,1,"prediction_layer/conv_0"),conv_1=extractPointwiseConvParams(256,512,3,"prediction_layer/conv_1"),conv_2=extractPointwiseConvParams(512,128,1,"prediction_layer/conv_2"),conv_3=extractPointwiseConvParams(128,256,3,"prediction_layer/conv_3"),conv_4=extractPointwiseConvParams(256,128,1,"prediction_layer/conv_4"),conv_5=extractPointwiseConvParams(128,256,3,"prediction_layer/conv_5"),conv_6=extractPointwiseConvParams(256,64,1,"prediction_layer/conv_6"),conv_7=extractPointwiseConvParams(64,128,3,"prediction_layer/conv_7"),box_encoding_0_predictor=extractConvParams(512,12,1,"prediction_layer/box_predictor_0/box_encoding_predictor"),class_predictor_0=extractConvParams(512,9,1,"prediction_layer/box_predictor_0/class_predictor"),box_encoding_1_predictor=extractConvParams(1024,24,1,"prediction_layer/box_predictor_1/box_encoding_predictor"),class_predictor_1=extractConvParams(1024,18,1,"prediction_layer/box_predictor_1/class_predictor"),box_encoding_2_predictor=extractConvParams(512,24,1,"prediction_layer/box_predictor_2/box_encoding_predictor"),class_predictor_2=extractConvParams(512,18,1,"prediction_layer/box_predictor_2/class_predictor"),box_encoding_3_predictor=extractConvParams(256,24,1,"prediction_layer/box_predictor_3/box_encoding_predictor"),class_predictor_3=extractConvParams(256,18,1,"prediction_layer/box_predictor_3/class_predictor"),box_encoding_4_predictor=extractConvParams(256,24,1,"prediction_layer/box_predictor_4/box_encoding_predictor"),class_predictor_4=extractConvParams(256,18,1,"prediction_layer/box_predictor_4/class_predictor"),box_encoding_5_predictor=extractConvParams(128,24,1,"prediction_layer/box_predictor_5/box_encoding_predictor"),class_predictor_5=extractConvParams(128,18,1,"prediction_layer/box_predictor_5/class_predictor");return{conv_0,conv_1,conv_2,conv_3,conv_4,conv_5,conv_6,conv_7,box_predictor_0:{box_encoding_predictor:box_encoding_0_predictor,class_predictor:class_predictor_0},box_predictor_1:{box_encoding_predictor:box_encoding_1_predictor,class_predictor:class_predictor_1},box_predictor_2:{box_encoding_predictor:box_encoding_2_predictor,class_predictor:class_predictor_2},box_predictor_3:{box_encoding_predictor:box_encoding_3_predictor,class_predictor:class_predictor_3},box_predictor_4:{box_encoding_predictor:box_encoding_4_predictor,class_predictor:class_predictor_4},box_predictor_5:{box_encoding_predictor:box_encoding_5_predictor,class_predictor:class_predictor_5}}}return{extractMobilenetV1Params,extractPredictionLayerParams}}function extractParams6(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractMobilenetV1Params,extractPredictionLayerParams}=extractorsFactory5(extractWeights,paramMappings),mobilenetv1=extractMobilenetV1Params(),prediction_layer=extractPredictionLayerParams(),output_layer={extra_dim:tensor3d(extractWeights(5118*4),[1,5118,4])};if(paramMappings.push({paramPath:"output_layer/extra_dim"}),getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params:{mobilenetv1,prediction_layer,output_layer},paramMappings}}function extractorsFactory6(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractPointwiseConvParams(prefix,idx,mappedPrefix){let filters=extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`,4,`${mappedPrefix}/filters`),batch_norm_offset=extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`,1,`${mappedPrefix}/batch_norm_offset`);return{filters,batch_norm_offset}}function extractConvPairParams(idx){let mappedPrefix=`mobilenetv1/conv_${idx}`,prefixDepthwiseConv=`MobilenetV1/Conv2d_${idx}_depthwise`,mappedPrefixDepthwiseConv=`${mappedPrefix}/depthwise_conv`,mappedPrefixPointwiseConv=`${mappedPrefix}/pointwise_conv`,filters=extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`,4,`${mappedPrefixDepthwiseConv}/filters`),batch_norm_scale=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`,1,`${mappedPrefixDepthwiseConv}/batch_norm_scale`),batch_norm_offset=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`,1,`${mappedPrefixDepthwiseConv}/batch_norm_offset`),batch_norm_mean=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`,1,`${mappedPrefixDepthwiseConv}/batch_norm_mean`),batch_norm_variance=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`,1,`${mappedPrefixDepthwiseConv}/batch_norm_variance`);return{depthwise_conv:{filters,batch_norm_scale,batch_norm_offset,batch_norm_mean,batch_norm_variance},pointwise_conv:extractPointwiseConvParams("MobilenetV1",idx,mappedPrefixPointwiseConv)}}function extractMobilenetV1Params(){return{conv_0:extractPointwiseConvParams("MobilenetV1",0,"mobilenetv1/conv_0"),conv_1:extractConvPairParams(1),conv_2:extractConvPairParams(2),conv_3:extractConvPairParams(3),conv_4:extractConvPairParams(4),conv_5:extractConvPairParams(5),conv_6:extractConvPairParams(6),conv_7:extractConvPairParams(7),conv_8:extractConvPairParams(8),conv_9:extractConvPairParams(9),conv_10:extractConvPairParams(10),conv_11:extractConvPairParams(11),conv_12:extractConvPairParams(12),conv_13:extractConvPairParams(13)}}function extractConvParams(prefix,mappedPrefix){let filters=extractWeightEntry(`${prefix}/weights`,4,`${mappedPrefix}/filters`),bias=extractWeightEntry(`${prefix}/biases`,1,`${mappedPrefix}/bias`);return{filters,bias}}function extractBoxPredictorParams(idx){let box_encoding_predictor=extractConvParams(`Prediction/BoxPredictor_${idx}/BoxEncodingPredictor`,`prediction_layer/box_predictor_${idx}/box_encoding_predictor`),class_predictor=extractConvParams(`Prediction/BoxPredictor_${idx}/ClassPredictor`,`prediction_layer/box_predictor_${idx}/class_predictor`);return{box_encoding_predictor,class_predictor}}function extractPredictionLayerParams(){return{conv_0:extractPointwiseConvParams("Prediction",0,"prediction_layer/conv_0"),conv_1:extractPointwiseConvParams("Prediction",1,"prediction_layer/conv_1"),conv_2:extractPointwiseConvParams("Prediction",2,"prediction_layer/conv_2"),conv_3:extractPointwiseConvParams("Prediction",3,"prediction_layer/conv_3"),conv_4:extractPointwiseConvParams("Prediction",4,"prediction_layer/conv_4"),conv_5:extractPointwiseConvParams("Prediction",5,"prediction_layer/conv_5"),conv_6:extractPointwiseConvParams("Prediction",6,"prediction_layer/conv_6"),conv_7:extractPointwiseConvParams("Prediction",7,"prediction_layer/conv_7"),box_predictor_0:extractBoxPredictorParams(0),box_predictor_1:extractBoxPredictorParams(1),box_predictor_2:extractBoxPredictorParams(2),box_predictor_3:extractBoxPredictorParams(3),box_predictor_4:extractBoxPredictorParams(4),box_predictor_5:extractBoxPredictorParams(5)}}return{extractMobilenetV1Params,extractPredictionLayerParams}}function extractParamsFromWeigthMap6(weightMap){let paramMappings=[],{extractMobilenetV1Params,extractPredictionLayerParams}=extractorsFactory6(weightMap,paramMappings),extra_dim=weightMap["Output/extra_dim"];if(paramMappings.push({originalPath:"Output/extra_dim",paramPath:"output_layer/extra_dim"}),!isTensor3D(extra_dim))throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`);let params={mobilenetv1:extractMobilenetV1Params(),prediction_layer:extractPredictionLayerParams(),output_layer:{extra_dim}};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function pointwiseConvLayer(x,params,strides){return tidy(()=>{let out=conv2d(x,params.filters,strides,"same");return out=add2(out,params.batch_norm_offset),clipByValue(out,0,6)})}var epsilon3=.0010000000474974513;function depthwiseConvLayer(x,params,strides){return tidy(()=>{let out=depthwiseConv2d(x,params.filters,strides,"same");return out=batchNorm(out,params.batch_norm_mean,params.batch_norm_variance,params.batch_norm_offset,params.batch_norm_scale,epsilon3),clipByValue(out,0,6)})}function getStridesForLayerIdx(layerIdx){return[2,4,6,12].some(idx=>idx===layerIdx)?[2,2]:[1,1]}function mobileNetV1(x,params){return tidy(()=>{let conv11,out=pointwiseConvLayer(x,params.conv_0,[2,2]);if([params.conv_1,params.conv_2,params.conv_3,params.conv_4,params.conv_5,params.conv_6,params.conv_7,params.conv_8,params.conv_9,params.conv_10,params.conv_11,params.conv_12,params.conv_13].forEach((param,i)=>{let layerIdx=i+1,depthwiseConvStrides=getStridesForLayerIdx(layerIdx);out=depthwiseConvLayer(out,param.depthwise_conv,depthwiseConvStrides),out=pointwiseConvLayer(out,param.pointwise_conv,[1,1]),layerIdx===11&&(conv11=out)}),conv11===null)throw new Error("mobileNetV1 - output of conv layer 11 is null");return{out,conv11}})}function IOU(boxes,i,j){let boxesData=boxes.arraySync(),yminI=Math.min(boxesData[i][0],boxesData[i][2]),xminI=Math.min(boxesData[i][1],boxesData[i][3]),ymaxI=Math.max(boxesData[i][0],boxesData[i][2]),xmaxI=Math.max(boxesData[i][1],boxesData[i][3]),yminJ=Math.min(boxesData[j][0],boxesData[j][2]),xminJ=Math.min(boxesData[j][1],boxesData[j][3]),ymaxJ=Math.max(boxesData[j][0],boxesData[j][2]),xmaxJ=Math.max(boxesData[j][1],boxesData[j][3]),areaI=(ymaxI-yminI)*(xmaxI-xminI),areaJ=(ymaxJ-yminJ)*(xmaxJ-xminJ);if(areaI<=0||areaJ<=0)return 0;let intersectionYmin=Math.max(yminI,yminJ),intersectionXmin=Math.max(xminI,xminJ),intersectionYmax=Math.min(ymaxI,ymaxJ),intersectionXmax=Math.min(xmaxI,xmaxJ),intersectionArea=Math.max(intersectionYmax-intersectionYmin,0)*Math.max(intersectionXmax-intersectionXmin,0);return intersectionArea/(areaI+areaJ-intersectionArea)}function nonMaxSuppression3(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){let numBoxes=boxes.shape[0],outputSize=Math.min(maxOutputSize,numBoxes),candidates=scores.map((score,boxIndex)=>({score,boxIndex})).filter(c=>c.score>scoreThreshold).sort((c1,c2)=>c2.score-c1.score),suppressFunc=x=>x<=iouThreshold?1:0,selected=[];return candidates.forEach(c=>{if(selected.length>=outputSize)return;let originalScore=c.score;for(let j=selected.length-1;j>=0;--j){let iou2=IOU(boxes,c.boxIndex,selected[j]);if(iou2!==0&&(c.score*=suppressFunc(iou2),c.score<=scoreThreshold))break}originalScore===c.score&&selected.push(c.boxIndex)}),selected}function getCenterCoordinatesAndSizesLayer(x){let vec=unstack(transpose(x,[1,0])),sizes=[sub(vec[2],vec[0]),sub(vec[3],vec[1])],centers=[add2(vec[0],div(sizes[0],scalar(2))),add2(vec[1],div(sizes[1],scalar(2)))];return{sizes,centers}}function decodeBoxesLayer(x0,x1){let{sizes,centers}=getCenterCoordinatesAndSizesLayer(x0),vec=unstack(transpose(x1,[1,0])),div0_out=div(mul(exp(div(vec[2],scalar(5))),sizes[0]),scalar(2)),add0_out=add2(mul(div(vec[0],scalar(10)),sizes[0]),centers[0]),div1_out=div(mul(exp(div(vec[3],scalar(5))),sizes[1]),scalar(2)),add1_out=add2(mul(div(vec[1],scalar(10)),sizes[1]),centers[1]);return transpose(stack([sub(add0_out,div0_out),sub(add1_out,div1_out),add2(add0_out,div0_out),add2(add1_out,div1_out)]),[1,0])}function outputLayer(boxPredictions,classPredictions,params){return tidy(()=>{let batchSize=boxPredictions.shape[0],boxes=decodeBoxesLayer(reshape(tile(params.extra_dim,[batchSize,1,1]),[-1,4]),reshape(boxPredictions,[-1,4]));boxes=reshape(boxes,[batchSize,boxes.shape[0]/batchSize,4]);let scoresAndClasses=sigmoid(slice(classPredictions,[0,0,1],[-1,-1,-1])),scores=slice(scoresAndClasses,[0,0,0],[-1,-1,1]);scores=reshape(scores,[batchSize,scores.shape[1]]);let boxesByBatch=unstack(boxes),scoresByBatch=unstack(scores);return{boxes:boxesByBatch,scores:scoresByBatch}})}function boxPredictionLayer(x,params){return tidy(()=>{let batchSize=x.shape[0],boxPredictionEncoding=reshape(convLayer(x,params.box_encoding_predictor),[batchSize,-1,1,4]),classPrediction=reshape(convLayer(x,params.class_predictor),[batchSize,-1,3]);return{boxPredictionEncoding,classPrediction}})}function predictionLayer(x,conv11,params){return tidy(()=>{let conv0=pointwiseConvLayer(x,params.conv_0,[1,1]),conv1=pointwiseConvLayer(conv0,params.conv_1,[2,2]),conv22=pointwiseConvLayer(conv1,params.conv_2,[1,1]),conv3=pointwiseConvLayer(conv22,params.conv_3,[2,2]),conv4=pointwiseConvLayer(conv3,params.conv_4,[1,1]),conv5=pointwiseConvLayer(conv4,params.conv_5,[2,2]),conv6=pointwiseConvLayer(conv5,params.conv_6,[1,1]),conv7=pointwiseConvLayer(conv6,params.conv_7,[2,2]),boxPrediction0=boxPredictionLayer(conv11,params.box_predictor_0),boxPrediction1=boxPredictionLayer(x,params.box_predictor_1),boxPrediction2=boxPredictionLayer(conv1,params.box_predictor_2),boxPrediction3=boxPredictionLayer(conv3,params.box_predictor_3),boxPrediction4=boxPredictionLayer(conv5,params.box_predictor_4),boxPrediction5=boxPredictionLayer(conv7,params.box_predictor_5),boxPredictions=concat([boxPrediction0.boxPredictionEncoding,boxPrediction1.boxPredictionEncoding,boxPrediction2.boxPredictionEncoding,boxPrediction3.boxPredictionEncoding,boxPrediction4.boxPredictionEncoding,boxPrediction5.boxPredictionEncoding],1),classPredictions=concat([boxPrediction0.classPrediction,boxPrediction1.classPrediction,boxPrediction2.classPrediction,boxPrediction3.classPrediction,boxPrediction4.classPrediction,boxPrediction5.classPrediction],1);return{boxPredictions,classPredictions}})}var SsdMobilenetv1Options=class{constructor({minConfidence,maxResults}={}){this._name="SsdMobilenetv1Options";if(this._minConfidence=minConfidence||.5,this._maxResults=maxResults||100,typeof this._minConfidence!="number"||this._minConfidence<=0||this._minConfidence>=1)throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`);if(typeof this._maxResults!="number")throw new Error(`${this._name} - expected maxResults to be a number`)}get minConfidence(){return this._minConfidence}get maxResults(){return this._maxResults}};var SsdMobilenetv1=class extends NeuralNetwork{constructor(){super("SsdMobilenetv1")}forwardInput(input2){let{params}=this;if(!params)throw new Error("SsdMobilenetv1 - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(512,!1),"float32"),x=sub(mul(batchTensor,scalar(.007843137718737125)),scalar(1)),features=mobileNetV1(x,params.mobilenetv1),{boxPredictions,classPredictions}=predictionLayer(features.out,features.conv11,params.prediction_layer);return outputLayer(boxPredictions,classPredictions,params.output_layer)})}async forward(input2){return this.forwardInput(await toNetInput(input2))}async locateFaces(input2,options={}){let{maxResults,minConfidence}=new SsdMobilenetv1Options(options),netInput=await toNetInput(input2),{boxes:_boxes,scores:_scores}=this.forwardInput(netInput),boxes=_boxes[0],scores=_scores[0];for(let i=1;i<_boxes.length;i++)_boxes[i].dispose(),_scores[i].dispose();let scoresData=Array.from(await scores.data()),indices=nonMaxSuppression3(boxes,scoresData,maxResults,.5,minConfidence),reshapedDims=netInput.getReshapedInputDimensions(0),inputSize=netInput.inputSize,padX=inputSize/reshapedDims.width,padY=inputSize/reshapedDims.height,boxesData=boxes.arraySync(),results=indices.map(idx=>{let[top,bottom]=[Math.max(0,boxesData[idx][0]),Math.min(1,boxesData[idx][2])].map(val=>val*padY),[left,right]=[Math.max(0,boxesData[idx][1]),Math.min(1,boxesData[idx][3])].map(val=>val*padX);return new FaceDetection(scoresData[idx],new Rect(left,top,right-left,bottom-top),{height:netInput.getInputHeight(0),width:netInput.getInputWidth(0)})});return boxes.dispose(),scores.dispose(),results}getDefaultModelName(){return"ssd_mobilenetv1_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap6(weightMap)}extractParams(weights){return extractParams6(weights)}};function createSsdMobilenetv1(weights){let net=new SsdMobilenetv1;return net.extractWeights(weights),net}function createFaceDetectionNet(weights){return createSsdMobilenetv1(weights)}var FaceDetectionNet=class extends SsdMobilenetv1{};var IOU_THRESHOLD=.4,BOX_ANCHORS=[new Point(.738768,.874946),new Point(2.42204,2.65704),new Point(4.30971,7.04493),new Point(10.246,4.59428),new Point(12.6868,11.8741)],BOX_ANCHORS_SEPARABLE=[new Point(1.603231,2.094468),new Point(6.041143,7.080126),new Point(2.882459,3.518061),new Point(4.266906,5.178857),new Point(9.041765,10.66308)],MEAN_RGB_SEPARABLE=[117.001,114.697,97.404],DEFAULT_MODEL_NAME2="tiny_yolov2_model",DEFAULT_MODEL_NAME_SEPARABLE_CONV="tiny_yolov2_separable_conv_model";var isNumber2=arg=>typeof arg=="number";function validateConfig(config){if(!config)throw new Error(`invalid config: ${config}`);if(typeof config.withSeparableConvs!="boolean")throw new Error(`config.withSeparableConvs has to be a boolean, have: ${config.withSeparableConvs}`);if(!isNumber2(config.iouThreshold)||config.iouThreshold<0||config.iouThreshold>1)throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${config.iouThreshold}`);if(!Array.isArray(config.classes)||!config.classes.length||!config.classes.every(c=>typeof c=="string"))throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(config.classes)}`);if(!Array.isArray(config.anchors)||!config.anchors.length||!config.anchors.map(a=>a||{}).every(a=>isNumber2(a.x)&&isNumber2(a.y)))throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(config.anchors)}`);if(config.meanRgb&&(!Array.isArray(config.meanRgb)||config.meanRgb.length!==3||!config.meanRgb.every(isNumber2)))throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(config.meanRgb)}`)}function leaky(x){return tidy(()=>{let min6=mul(x,scalar(.10000000149011612));return add2(relu(sub(x,min6)),min6)})}function convWithBatchNorm(x,params){return tidy(()=>{let out=pad(x,[[0,0],[1,1],[1,1],[0,0]]);return out=conv2d(out,params.conv.filters,[1,1],"valid"),out=sub(out,params.bn.sub),out=mul(out,params.bn.truediv),out=add2(out,params.conv.bias),leaky(out)})}function depthwiseSeparableConv2(x,params){return tidy(()=>{let out=pad(x,[[0,0],[1,1],[1,1],[0,0]]);return out=separableConv2d(out,params.depthwise_filter,params.pointwise_filter,[1,1],"valid"),out=add2(out,params.bias),leaky(out)})}function extractorsFactory7(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings);function extractBatchNormParams(size,mappedPrefix){let sub4=tensor1d(extractWeights(size)),truediv=tensor1d(extractWeights(size));return paramMappings.push({paramPath:`${mappedPrefix}/sub`},{paramPath:`${mappedPrefix}/truediv`}),{sub:sub4,truediv}}function extractConvWithBatchNormParams(channelsIn,channelsOut,mappedPrefix){let conv3=extractConvParams(channelsIn,channelsOut,3,`${mappedPrefix}/conv`),bn=extractBatchNormParams(channelsOut,`${mappedPrefix}/bn`);return{conv:conv3,bn}}let extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);return{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}}function extractParams7(weights,config,boxEncodingSize,filterSizes){let{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),paramMappings=[],{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}=extractorsFactory7(extractWeights,paramMappings),params;if(config.withSeparableConvs){let[s0,s1,s2,s3,s4,s5,s6,s7,s8]=filterSizes,conv0=config.isFirstLayerConv2d?extractConvParams(s0,s1,3,"conv0"):extractSeparableConvParams(s0,s1,"conv0"),conv1=extractSeparableConvParams(s1,s2,"conv1"),conv22=extractSeparableConvParams(s2,s3,"conv2"),conv3=extractSeparableConvParams(s3,s4,"conv3"),conv4=extractSeparableConvParams(s4,s5,"conv4"),conv5=extractSeparableConvParams(s5,s6,"conv5"),conv6=s7?extractSeparableConvParams(s6,s7,"conv6"):void 0,conv7=s8?extractSeparableConvParams(s7,s8,"conv7"):void 0,conv8=extractConvParams(s8||s7||s6,5*boxEncodingSize,1,"conv8");params={conv0,conv1,conv2:conv22,conv3,conv4,conv5,conv6,conv7,conv8}}else{let[s0,s1,s2,s3,s4,s5,s6,s7,s8]=filterSizes,conv0=extractConvWithBatchNormParams(s0,s1,"conv0"),conv1=extractConvWithBatchNormParams(s1,s2,"conv1"),conv22=extractConvWithBatchNormParams(s2,s3,"conv2"),conv3=extractConvWithBatchNormParams(s3,s4,"conv3"),conv4=extractConvWithBatchNormParams(s4,s5,"conv4"),conv5=extractConvWithBatchNormParams(s5,s6,"conv5"),conv6=extractConvWithBatchNormParams(s6,s7,"conv6"),conv7=extractConvWithBatchNormParams(s7,s8,"conv7"),conv8=extractConvParams(s8,5*boxEncodingSize,1,"conv8");params={conv0,conv1,conv2:conv22,conv3,conv4,conv5,conv6,conv7,conv8}}if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params,paramMappings}}function extractorsFactory8(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractBatchNormParams(prefix){let sub4=extractWeightEntry(`${prefix}/sub`,1),truediv=extractWeightEntry(`${prefix}/truediv`,1);return{sub:sub4,truediv}}function extractConvParams(prefix){let filters=extractWeightEntry(`${prefix}/filters`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return{filters,bias}}function extractConvWithBatchNormParams(prefix){let conv3=extractConvParams(`${prefix}/conv`),bn=extractBatchNormParams(`${prefix}/bn`);return{conv:conv3,bn}}let extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);return{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}}function extractParamsFromWeigthMap7(weightMap,config){let paramMappings=[],{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}=extractorsFactory8(weightMap,paramMappings),params;if(config.withSeparableConvs){let numFilters=config.filterSizes&&config.filterSizes.length||9;params={conv0:config.isFirstLayerConv2d?extractConvParams("conv0"):extractSeparableConvParams("conv0"),conv1:extractSeparableConvParams("conv1"),conv2:extractSeparableConvParams("conv2"),conv3:extractSeparableConvParams("conv3"),conv4:extractSeparableConvParams("conv4"),conv5:extractSeparableConvParams("conv5"),conv6:numFilters>7?extractSeparableConvParams("conv6"):void 0,conv7:numFilters>8?extractSeparableConvParams("conv7"):void 0,conv8:extractConvParams("conv8")}}else params={conv0:extractConvWithBatchNormParams("conv0"),conv1:extractConvWithBatchNormParams("conv1"),conv2:extractConvWithBatchNormParams("conv2"),conv3:extractConvWithBatchNormParams("conv3"),conv4:extractConvWithBatchNormParams("conv4"),conv5:extractConvWithBatchNormParams("conv5"),conv6:extractConvWithBatchNormParams("conv6"),conv7:extractConvWithBatchNormParams("conv7"),conv8:extractConvParams("conv8")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var TinyYolov2Options=class{constructor({inputSize,scoreThreshold}={}){this._name="TinyYolov2Options";if(this._inputSize=inputSize||416,this._scoreThreshold=scoreThreshold||.5,typeof this._inputSize!="number"||this._inputSize%32!=0)throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`);if(typeof this._scoreThreshold!="number"||this._scoreThreshold<=0||this._scoreThreshold>=1)throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`)}get inputSize(){return this._inputSize}get scoreThreshold(){return this._scoreThreshold}};var TinyYolov2Base2=class extends NeuralNetwork{constructor(config){super("TinyYolov2");validateConfig(config),this._config=config}get config(){return this._config}get withClassScores(){return this.config.withClassScores||this.config.classes.length>1}get boxEncodingSize(){return 5+(this.withClassScores?this.config.classes.length:0)}runTinyYolov2(x,params){let out=convWithBatchNorm(x,params.conv0);return out=maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv1),out=maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv2),out=maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv3),out=maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv4),out=maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv5),out=maxPool(out,[2,2],[1,1],"same"),out=convWithBatchNorm(out,params.conv6),out=convWithBatchNorm(out,params.conv7),convLayer(out,params.conv8,"valid",!1)}runMobilenet(x,params){let out=this.config.isFirstLayerConv2d?leaky(convLayer(x,params.conv0,"valid",!1)):depthwiseSeparableConv2(x,params.conv0);return out=maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv2(out,params.conv1),out=maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv2(out,params.conv2),out=maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv2(out,params.conv3),out=maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv2(out,params.conv4),out=maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv2(out,params.conv5),out=maxPool(out,[2,2],[1,1],"same"),out=params.conv6?depthwiseSeparableConv2(out,params.conv6):out,out=params.conv7?depthwiseSeparableConv2(out,params.conv7):out,convLayer(out,params.conv8,"valid",!1)}forwardInput(input2,inputSize){let{params}=this;if(!params)throw new Error("TinyYolov2 - load model before inference");return tidy(()=>{let batchTensor=cast(input2.toBatchTensor(inputSize,!1),"float32");return batchTensor=this.config.meanRgb?normalize(batchTensor,this.config.meanRgb):batchTensor,batchTensor=batchTensor.div(scalar(256)),this.config.withSeparableConvs?this.runMobilenet(batchTensor,params):this.runTinyYolov2(batchTensor,params)})}async forward(input2,inputSize){return this.forwardInput(await toNetInput(input2),inputSize)}async detect(input2,forwardParams={}){let{inputSize,scoreThreshold}=new TinyYolov2Options(forwardParams),netInput=await toNetInput(input2),out=await this.forwardInput(netInput,inputSize),out0=tidy(()=>unstack(out)[0].expandDims()),inputDimensions={width:netInput.getInputWidth(0),height:netInput.getInputHeight(0)},results=await this.extractBoxes(out0,netInput.getReshapedInputDimensions(0),scoreThreshold);out.dispose(),out0.dispose();let boxes=results.map(res=>res.box),scores=results.map(res=>res.score),classScores=results.map(res=>res.classScore),classNames=results.map(res=>this.config.classes[res.label]);return nonMaxSuppression2(boxes.map(box=>box.rescale(inputSize)),scores,this.config.iouThreshold,!0).map(idx=>new ObjectDetection(scores[idx],classScores[idx],classNames[idx],boxes[idx],inputDimensions))}getDefaultModelName(){return""}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap7(weightMap,this.config)}extractParams(weights){let filterSizes=this.config.filterSizes||TinyYolov2Base2.DEFAULT_FILTER_SIZES,numFilters=filterSizes?filterSizes.length:void 0;if(numFilters!==7&&numFilters!==8&&numFilters!==9)throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`);return extractParams7(weights,this.config,this.boxEncodingSize,filterSizes)}async extractBoxes(outputTensor,inputBlobDimensions,scoreThreshold){let{width,height}=inputBlobDimensions,inputSize=Math.max(width,height),correctionFactorX=inputSize/width,correctionFactorY=inputSize/height,numCells=outputTensor.shape[1],numBoxes=this.config.anchors.length,[boxesTensor,scoresTensor,classScoresTensor]=tidy(()=>{let reshaped=outputTensor.reshape([numCells,numCells,numBoxes,this.boxEncodingSize]),boxes=reshaped.slice([0,0,0,0],[numCells,numCells,numBoxes,4]),scores=reshaped.slice([0,0,0,4],[numCells,numCells,numBoxes,1]),classScores=this.withClassScores?softmax(reshaped.slice([0,0,0,5],[numCells,numCells,numBoxes,this.config.classes.length]),3):scalar(0);return[boxes,scores,classScores]}),results=[],scoresData=await scoresTensor.array(),boxesData=await boxesTensor.array();for(let row=0;rowscoreThreshold){let ctX=(col+sigmoid5(boxesData[row][col][anchor][0]))/numCells*correctionFactorX,ctY=(row+sigmoid5(boxesData[row][col][anchor][1]))/numCells*correctionFactorY,widthLocal=Math.exp(boxesData[row][col][anchor][2])*this.config.anchors[anchor].x/numCells*correctionFactorX,heightLocal=Math.exp(boxesData[row][col][anchor][3])*this.config.anchors[anchor].y/numCells*correctionFactorY,x=ctX-widthLocal/2,y=ctY-heightLocal/2,pos={row,col,anchor},{classScore,label}=this.withClassScores?await this.extractPredictedClass(classScoresTensor,pos):{classScore:1,label:0};results.push({box:new BoundingBox(x,y,x+widthLocal,y+heightLocal),score,classScore:score*classScore,label,...pos})}}return boxesTensor.dispose(),scoresTensor.dispose(),classScoresTensor.dispose(),results}async extractPredictedClass(classesTensor,pos){let{row,col,anchor}=pos,classesData=await classesTensor.array();return Array(this.config.classes.length).fill(0).map((_,i)=>classesData[row][col][anchor][i]).map((classScore,label)=>({classScore,label})).reduce((max6,curr)=>max6.classScore>curr.classScore?max6:curr)}},TinyYolov2Base=TinyYolov2Base2;TinyYolov2Base.DEFAULT_FILTER_SIZES=[3,16,32,64,128,256,512,1024,1024];var TinyYolov2=class extends TinyYolov2Base{constructor(withSeparableConvs=!0){let config={withSeparableConvs,iouThreshold:IOU_THRESHOLD,classes:["face"],...withSeparableConvs?{anchors:BOX_ANCHORS_SEPARABLE,meanRgb:MEAN_RGB_SEPARABLE}:{anchors:BOX_ANCHORS,withClassScores:!0}};super(config)}get withSeparableConvs(){return this.config.withSeparableConvs}get anchors(){return this.config.anchors}async locateFaces(input2,forwardParams){return(await this.detect(input2,forwardParams)).map(det=>new FaceDetection(det.score,det.relativeBox,{width:det.imageWidth,height:det.imageHeight}))}getDefaultModelName(){return this.withSeparableConvs?DEFAULT_MODEL_NAME_SEPARABLE_CONV:DEFAULT_MODEL_NAME2}extractParamsFromWeigthMap(weightMap){return super.extractParamsFromWeigthMap(weightMap)}};function createTinyYolov2(weights,withSeparableConvs=!0){let net=new TinyYolov2(withSeparableConvs);return net.extractWeights(weights),net}var TinyFaceDetectorOptions=class extends TinyYolov2Options{constructor(){super(...arguments);this._name="TinyFaceDetectorOptions"}};var ComposableTask=class{async then(onfulfilled){return onfulfilled(await this.run())}async run(){throw new Error("ComposableTask - run is not implemented")}};async function extractAllFacesAndComputeResults(parentResults,input2,computeResults,extractedFaces,getRectForAlignment=({alignedRect})=>alignedRect){let faceBoxes=parentResults.map(parentResult=>isWithFaceLandmarks(parentResult)?getRectForAlignment(parentResult):parentResult.detection),faces=extractedFaces||(input2 instanceof Tensor?await extractFaceTensors(input2,faceBoxes):await extractFaces(input2,faceBoxes)),results=await computeResults(faces);return faces.forEach(f=>f instanceof Tensor&&f.dispose()),results}async function extractSingleFaceAndComputeResult(parentResult,input2,computeResult,extractedFaces,getRectForAlignment){return extractAllFacesAndComputeResults([parentResult],input2,async faces=>computeResult(faces[0]),extractedFaces,getRectForAlignment)}var IOU_THRESHOLD2=.4,BOX_ANCHORS2=[new Point(1.603231,2.094468),new Point(6.041143,7.080126),new Point(2.882459,3.518061),new Point(4.266906,5.178857),new Point(9.041765,10.66308)],MEAN_RGB=[117.001,114.697,97.404];var TinyFaceDetector=class extends TinyYolov2Base{constructor(){let config={withSeparableConvs:!0,iouThreshold:IOU_THRESHOLD2,classes:["face"],anchors:BOX_ANCHORS2,meanRgb:MEAN_RGB,isFirstLayerConv2d:!0,filterSizes:[3,16,32,64,128,256,512]};super(config)}get anchors(){return this.config.anchors}async locateFaces(input2,forwardParams){return(await this.detect(input2,forwardParams)).map(det=>new FaceDetection(det.score,det.relativeBox,{width:det.imageWidth,height:det.imageHeight}))}getDefaultModelName(){return"tiny_face_detector_model"}extractParamsFromWeigthMap(weightMap){return super.extractParamsFromWeigthMap(weightMap)}};var nets={ssdMobilenetv1:new SsdMobilenetv1,tinyFaceDetector:new TinyFaceDetector,tinyYolov2:new TinyYolov2,faceLandmark68Net:new FaceLandmark68Net,faceLandmark68TinyNet:new FaceLandmark68TinyNet,faceRecognitionNet:new FaceRecognitionNet,faceExpressionNet:new FaceExpressionNet,ageGenderNet:new AgeGenderNet},ssdMobilenetv1=(input2,options)=>nets.ssdMobilenetv1.locateFaces(input2,options),tinyFaceDetector=(input2,options)=>nets.tinyFaceDetector.locateFaces(input2,options),tinyYolov2=(input2,options)=>nets.tinyYolov2.locateFaces(input2,options),detectFaceLandmarks=input2=>nets.faceLandmark68Net.detectLandmarks(input2),detectFaceLandmarksTiny=input2=>nets.faceLandmark68TinyNet.detectLandmarks(input2),computeFaceDescriptor=input2=>nets.faceRecognitionNet.computeFaceDescriptor(input2),recognizeFaceExpressions=input2=>nets.faceExpressionNet.predictExpressions(input2),predictAgeAndGender=input2=>nets.ageGenderNet.predictAgeAndGender(input2),loadSsdMobilenetv1Model=url=>nets.ssdMobilenetv1.load(url),loadTinyFaceDetectorModel=url=>nets.tinyFaceDetector.load(url),loadTinyYolov2Model=url=>nets.tinyYolov2.load(url),loadFaceLandmarkModel=url=>nets.faceLandmark68Net.load(url),loadFaceLandmarkTinyModel=url=>nets.faceLandmark68TinyNet.load(url),loadFaceRecognitionModel=url=>nets.faceRecognitionNet.load(url),loadFaceExpressionModel=url=>nets.faceExpressionNet.load(url),loadAgeGenderModel=url=>nets.ageGenderNet.load(url),loadFaceDetectionModel=loadSsdMobilenetv1Model,locateFaces=ssdMobilenetv1,detectLandmarks=detectFaceLandmarks;var PredictFaceExpressionsTaskBase=class extends ComposableTask{constructor(parentTask,input2,extractedFaces){super();this.parentTask=parentTask;this.input=input2;this.extractedFaces=extractedFaces}},PredictAllFaceExpressionsTask=class extends PredictFaceExpressionsTaskBase{async run(){let parentResults=await this.parentTask,faceExpressionsByFace=await extractAllFacesAndComputeResults(parentResults,this.input,async faces=>Promise.all(faces.map(face=>nets.faceExpressionNet.predictExpressions(face))),this.extractedFaces);return parentResults.map((parentResult,i)=>extendWithFaceExpressions(parentResult,faceExpressionsByFace[i]))}withAgeAndGender(){return new PredictAllAgeAndGenderTask(this,this.input)}},PredictSingleFaceExpressionsTask=class extends PredictFaceExpressionsTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let faceExpressions=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.faceExpressionNet.predictExpressions(face),this.extractedFaces);return extendWithFaceExpressions(parentResult,faceExpressions)}withAgeAndGender(){return new PredictSingleAgeAndGenderTask(this,this.input)}},PredictAllFaceExpressionsWithFaceAlignmentTask=class extends PredictAllFaceExpressionsTask{withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},PredictSingleFaceExpressionsWithFaceAlignmentTask=class extends PredictSingleFaceExpressionsTask{withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}};var PredictAgeAndGenderTaskBase=class extends ComposableTask{constructor(parentTask,input2,extractedFaces){super();this.parentTask=parentTask;this.input=input2;this.extractedFaces=extractedFaces}},PredictAllAgeAndGenderTask=class extends PredictAgeAndGenderTaskBase{async run(){let parentResults=await this.parentTask,ageAndGenderByFace=await extractAllFacesAndComputeResults(parentResults,this.input,async faces=>Promise.all(faces.map(face=>nets.ageGenderNet.predictAgeAndGender(face))),this.extractedFaces);return parentResults.map((parentResult,i)=>{let{age,gender,genderProbability}=ageAndGenderByFace[i];return extendWithAge(extendWithGender(parentResult,gender,genderProbability),age)})}withFaceExpressions(){return new PredictAllFaceExpressionsTask(this,this.input)}},PredictSingleAgeAndGenderTask=class extends PredictAgeAndGenderTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let{age,gender,genderProbability}=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.ageGenderNet.predictAgeAndGender(face),this.extractedFaces);return extendWithAge(extendWithGender(parentResult,gender,genderProbability),age)}withFaceExpressions(){return new PredictSingleFaceExpressionsTask(this,this.input)}},PredictAllAgeAndGenderWithFaceAlignmentTask=class extends PredictAllAgeAndGenderTask{withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},PredictSingleAgeAndGenderWithFaceAlignmentTask=class extends PredictSingleAgeAndGenderTask{withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}};var ComputeFaceDescriptorsTaskBase=class extends ComposableTask{constructor(parentTask,input2){super();this.parentTask=parentTask;this.input=input2}},ComputeAllFaceDescriptorsTask=class extends ComputeFaceDescriptorsTaskBase{async run(){let parentResults=await this.parentTask;return(await extractAllFacesAndComputeResults(parentResults,this.input,faces=>Promise.all(faces.map(face=>nets.faceRecognitionNet.computeFaceDescriptor(face))),null,parentResult=>parentResult.landmarks.align(null,{useDlibAlignment:!0}))).map((descriptor,i)=>extendWithFaceDescriptor(parentResults[i],descriptor))}withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}},ComputeSingleFaceDescriptorTask=class extends ComputeFaceDescriptorsTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let descriptor=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.faceRecognitionNet.computeFaceDescriptor(face),null,parentResult2=>parentResult2.landmarks.align(null,{useDlibAlignment:!0}));return extendWithFaceDescriptor(parentResult,descriptor)}withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}};var DetectFaceLandmarksTaskBase=class extends ComposableTask{constructor(parentTask,input2,useTinyLandmarkNet){super();this.parentTask=parentTask;this.input=input2;this.useTinyLandmarkNet=useTinyLandmarkNet}get landmarkNet(){return this.useTinyLandmarkNet?nets.faceLandmark68TinyNet:nets.faceLandmark68Net}},DetectAllFaceLandmarksTask=class extends DetectFaceLandmarksTaskBase{async run(){let parentResults=await this.parentTask,detections=parentResults.map(res=>res.detection),faces=this.input instanceof Tensor?await extractFaceTensors(this.input,detections):await extractFaces(this.input,detections),faceLandmarksByFace=await Promise.all(faces.map(face=>this.landmarkNet.detectLandmarks(face)));return faces.forEach(f=>f instanceof Tensor&&f.dispose()),parentResults.map((parentResult,i)=>extendWithFaceLandmarks(parentResult,faceLandmarksByFace[i]))}withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},DetectSingleFaceLandmarksTask=class extends DetectFaceLandmarksTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let{detection}=parentResult,faces=this.input instanceof Tensor?await extractFaceTensors(this.input,[detection]):await extractFaces(this.input,[detection]),landmarks=await this.landmarkNet.detectLandmarks(faces[0]);return faces.forEach(f=>f instanceof Tensor&&f.dispose()),extendWithFaceLandmarks(parentResult,landmarks)}withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}};var DetectFacesTaskBase=class extends ComposableTask{constructor(input2,options=new SsdMobilenetv1Options){super();this.input=input2;this.options=options}},DetectAllFacesTask=class extends DetectFacesTaskBase{async run(){let{input:input2,options}=this,faceDetectionFunction=options instanceof TinyFaceDetectorOptions?input3=>nets.tinyFaceDetector.locateFaces(input3,options):options instanceof SsdMobilenetv1Options?input3=>nets.ssdMobilenetv1.locateFaces(input3,options):options instanceof TinyYolov2Options?input3=>nets.tinyYolov2.locateFaces(input3,options):null;if(!faceDetectionFunction)throw new Error("detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options");return faceDetectionFunction(input2)}runAndExtendWithFaceDetections(){return new Promise(async resolve=>{let detections=await this.run();resolve(detections.map(detection=>extendWithFaceDetection({},detection)))})}withFaceLandmarks(useTinyLandmarkNet=!1){return new DetectAllFaceLandmarksTask(this.runAndExtendWithFaceDetections(),this.input,useTinyLandmarkNet)}withFaceExpressions(){return new PredictAllFaceExpressionsTask(this.runAndExtendWithFaceDetections(),this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderTask(this.runAndExtendWithFaceDetections(),this.input)}},DetectSingleFaceTask=class extends DetectFacesTaskBase{async run(){let faceDetections=await new DetectAllFacesTask(this.input,this.options),faceDetectionWithHighestScore=faceDetections[0];return faceDetections.forEach(faceDetection=>{faceDetection.score>faceDetectionWithHighestScore.score&&(faceDetectionWithHighestScore=faceDetection)}),faceDetectionWithHighestScore}runAndExtendWithFaceDetection(){return new Promise(async resolve=>{let detection=await this.run();resolve(detection?extendWithFaceDetection({},detection):void 0)})}withFaceLandmarks(useTinyLandmarkNet=!1){return new DetectSingleFaceLandmarksTask(this.runAndExtendWithFaceDetection(),this.input,useTinyLandmarkNet)}withFaceExpressions(){return new PredictSingleFaceExpressionsTask(this.runAndExtendWithFaceDetection(),this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderTask(this.runAndExtendWithFaceDetection(),this.input)}};function detectSingleFace(input2,options=new SsdMobilenetv1Options){return new DetectSingleFaceTask(input2,options)}function detectAllFaces(input2,options=new SsdMobilenetv1Options){return new DetectAllFacesTask(input2,options)}async function allFacesSsdMobilenetv1(input2,minConfidence){return detectAllFaces(input2,new SsdMobilenetv1Options(minConfidence?{minConfidence}:{})).withFaceLandmarks().withFaceDescriptors()}async function allFacesTinyYolov2(input2,forwardParams={}){return detectAllFaces(input2,new TinyYolov2Options(forwardParams)).withFaceLandmarks().withFaceDescriptors()}var allFaces=allFacesSsdMobilenetv1;function euclideanDistance(arr1,arr2){if(arr1.length!==arr2.length)throw new Error("euclideanDistance: arr1.length !== arr2.length");let desc1=Array.from(arr1),desc2=Array.from(arr2);return Math.sqrt(desc1.map((val,i)=>val-desc2[i]).reduce((res,diff)=>res+diff**2,0))}var FaceMatcher=class{constructor(inputs,distanceThreshold=.6){this._distanceThreshold=distanceThreshold;let inputArray=Array.isArray(inputs)?inputs:[inputs];if(!inputArray.length)throw new Error("FaceRecognizer.constructor - expected atleast one input");let count2=1,createUniqueLabel=()=>`person ${count2++}`;this._labeledDescriptors=inputArray.map(desc=>{if(desc instanceof LabeledFaceDescriptors)return desc;if(desc instanceof Float32Array)return new LabeledFaceDescriptors(createUniqueLabel(),[desc]);if(desc.descriptor&&desc.descriptor instanceof Float32Array)return new LabeledFaceDescriptors(createUniqueLabel(),[desc.descriptor]);throw new Error("FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>")})}get labeledDescriptors(){return this._labeledDescriptors}get distanceThreshold(){return this._distanceThreshold}computeMeanDistance(queryDescriptor,descriptors){return descriptors.map(d=>euclideanDistance(d,queryDescriptor)).reduce((d1,d2)=>d1+d2,0)/(descriptors.length||1)}matchDescriptor(queryDescriptor){return this.labeledDescriptors.map(({descriptors,label})=>new FaceMatch(label,this.computeMeanDistance(queryDescriptor,descriptors))).reduce((best,curr)=>best.distanceld.toJSON())}}static fromJSON(json18){let labeledDescriptors=json18.labeledDescriptors.map(ld=>LabeledFaceDescriptors.fromJSON(ld));return new FaceMatcher(labeledDescriptors,json18.distanceThreshold)}};function createTinyFaceDetector(weights){let net=new TinyFaceDetector;return net.extractWeights(weights),net}function resizeResults(results,dimensions){let{width,height}=new Dimensions(dimensions.width,dimensions.height);if(width<=0||height<=0)throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({width,height})}`);if(Array.isArray(results))return results.map(obj=>resizeResults(obj,{width,height}));if(isWithFaceLandmarks(results)){let resizedDetection=results.detection.forSize(width,height),resizedLandmarks=results.unshiftedLandmarks.forSize(resizedDetection.box.width,resizedDetection.box.height);return extendWithFaceLandmarks(extendWithFaceDetection(results,resizedDetection),resizedLandmarks)}return isWithFaceDetection(results)?extendWithFaceDetection(results,results.detection.forSize(width,height)):results instanceof FaceLandmarks||results instanceof FaceDetection?results.forSize(width,height):results}var node=typeof process!="undefined",browser=typeof navigator!="undefined"&&typeof navigator.userAgent!="undefined",version11={faceapi:version10,node,browser};return src_exports;})(); + `}};function ute(e){let{inputs:t,backend:n,attrs:a}=e,{x:r,segmentIds:s}=t,{numSegments:i}=a,o=r.shape.length,l=[],c=0,u=_.getAxesPermutation([c],o),p=r;u!=null&&(p=En({inputs:{x:r},backend:n,attrs:{perm:u}}),l.push(p),c=_.getInnerMostAxes(1,o)[0]);let d=_.segment_util.computeOutShape(p.shape,c,i),h=k.sizeFromShape([p.shape[c]]),m=xe({inputs:{x:p},backend:n,attrs:{shape:[-1,h]}});l.push(m);let f=xh(r.dtype),g=(v,N,T,E,A)=>{let $=v.shape[0],O=v.shape[1],V=_.segment_util.segOpComputeOptimalWindowSize(O,A),W={windowSize:V,inSize:O,batchSize:$,numSegments:A},H=new lte(W,N),X=n.compileAndRun(H,[v,T],E);if(l.push(X),X.shape[1]===A)return X;let q=d2({backend:n,attrs:{start:0,stop:A,step:1,dtype:"float32"}}),K=f2({inputs:{x:q},backend:n,attrs:{reps:[O/V]}});return l.push(q),l.push(K),g(X,N,K,E,A)},y=g(m,"unsortedSegmentSum",s,f,i),b=xe({inputs:{x:y},backend:n,attrs:{shape:d}}),x=b;if(u!=null){l.push(b);let v=_.getUndoAxesPermutation(u);x=En({inputs:{x},backend:n,attrs:{perm:v}})}return l.forEach(v=>n.disposeIntermediateTensorInfo(v)),x}var cte={kernelName:Ec,backendName:"webgl",kernelFunc:ute},pte=[a9,i9,HX,qX,YX,QX,tY,rY,iY,lY,dY,mY,yY,vY,CY,IY,FY,MY,$Y,LY,BY,VY,jY,QY,t7,o7,u7,h7,g7,SX,v7,F7,$7,N7,P7,L7,M7,W7,G7,q7,X7,J7,eJ,iJ,lJ,nJ,pJ,mJ,bJ,kJ,SJ,_J,FJ,AJ,DJ,RJ,OJ,zJ,WJ,HJ,XJ,JJ,QJ,nZ,iZ,cZ,mZ,TX,gZ,x7,xZ,kZ,TZ,EX,_Z,DZ,RZ,VZ,zZ,jZ,XZ,QZ,l9,g9,m9,v9,k9,N9,d9,S9,E9,$9,P9,B9,K9,DX,Y9,Q9,nQ,sQ,a7,lQ,cQ,dQ,fQ,xQ,FX,wQ,kQ,r7,G9,TQ,DQ,_Q,RX,OQ,BQ,UQ,jQ,YQ,ZQ,tee,ree,iee,uee,dee,fee,bee,wee,Nee,JY,j9,Cee,_ee,Aee,Dee,Pee,zee,Wee,Uee,jee,H9,VX,Xee,Zee,tte,ate,UX,ste,ote,cte,uQ];for(let e of pte)Fc(e);var dte="2.8.3",hte={"tfjs-core":rk,"tfjs-backend-cpu":UG,"tfjs-backend-webgl":NX,"tfjs-data":HN,"tfjs-layers":Dm,"tfjs-converter":zN,tfjs:dte},Vn;(function(e){e[e.float32=0]="float32",e[e.int32=1]="int32",e[e.bool=2]="bool",e[e.string=3]="string",e[e.complex64=4]="complex64"})(Vn||(Vn={}));var Ap;(function(e){e[e.linear=0]="linear",e[e.relu=1]="relu",e[e.relu6=2]="relu6",e[e.prelu=3]="prelu",e[e.leakyrelu=4]="leakyrelu"})(Ap||(Ap={}));var g2;function mte(e){g2=e.wasm.cwrap(Ti,null,["number","array","number","number","array","number","number","number","number","number","number","number","number"])}function fte(e){let{inputs:t,backend:n,attrs:a}=e,{a:r,b:s,bias:i,preluActivationWeights:o}=t;if(r.dtype!=="float32"||s.dtype!=="float32")throw new Error("_FusedMatMul for non non-float32 tensors not yet supported.");let{transposeA:l,transposeB:c,activation:u,leakyreluAlpha:p}=a,d=n.dataIdMap.get(r.dataId).id,h=n.dataIdMap.get(s.dataId).id,m=0;if(i!=null){let A=n.dataIdMap.get(i.dataId);if(A.shape.length!==1)throw new Error(`_FusedMatMul only supports rank-1 bias but got rank ${A.shape.length}.`);m=A.id}let f=o==null?0:n.dataIdMap.get(o.dataId).id,g=Ap[u];if(g==null)throw new Error(`${u} activation not yet supported for FusedConv2D in the wasm backend.`);let y=l?r.shape[2]:r.shape[1],b=c?s.shape[1]:s.shape[2],x=r.shape[0],v=n.makeOutput([x,y,b],r.dtype),N=n.dataIdMap.get(v.dataId).id,T=new Uint8Array(new Int32Array(r.shape).buffer),E=new Uint8Array(new Int32Array(s.shape).buffer);return g2(d,T,r.shape.length,h,E,s.shape.length,l,c,g,m,f,p||0,N),v}var gte={kernelName:Ti,backendName:"wasm",setupFunc:mte,kernelFunc:fte};function Un(e){let t;function n(r){t=r.wasm.cwrap(e,null,["number","number"])}function a(r){let{backend:s,inputs:{x:i}}=r,o=s.dataIdMap.get(i.dataId).id,l=s.makeOutput(i.shape,i.dtype),c=s.dataIdMap.get(l.dataId).id;return k.sizeFromShape(l.shape)===0||t(o,c),l}return{kernelName:e,backendName:"wasm",setupFunc:n,kernelFunc:a}}var yte=Un(Lo);function bn(e,t,n){let a;function r(i){a=i.wasm.cwrap(e,null,["number","array","number","number","array","number","number","number"])}function s(i){let{backend:o,inputs:l}=i,{a:c,b:u}=l,p=o.dataIdMap.get(c.dataId).id,d=o.dataIdMap.get(u.dataId).id,h=n!=null?n:c.dtype,m=_.assertAndGetBroadcastShape(c.shape,u.shape),f=o.makeOutput(m,h);if(k.sizeFromShape(m)===0)return f;let g=new Uint8Array(new Int32Array(c.shape).buffer),y=new Uint8Array(new Int32Array(u.shape).buffer),b=o.dataIdMap.get(f.dataId).id,x=()=>a(p,g,c.shape.length,d,y,u.shape.length,Vn[c.dtype],b);if(t&&c.dtype==="float32")return x(),f;let v=_.getBroadcastDims(c.shape,m),N=_.getBroadcastDims(u.shape,m),T=v.every((A,$)=>A===$),E=N.every((A,$)=>A===$);if(T&&E)return x(),f;throw new Error(`Broadcasting along outer dims is not yet supported for ${c.dtype} ${e}.`)}return{kernelName:e,backendName:"wasm",setupFunc:r,kernelFunc:s}}var bte=!0,xte=bn(qr,bte),y2;function vte(e){y2=e.wasm.cwrap(Rs,null,["array","number","number","number"])}function wte(e){let{inputs:t,backend:n}=e,a=n.makeOutput(t[0].shape,t[0].dtype);if(k.sizeFromShape(a.shape)===0)return a;let r=t.map(o=>n.dataIdMap.get(o.dataId).id),s=new Uint8Array(new Int32Array(r).buffer),i=n.dataIdMap.get(a.dataId).id;return y2(s,r.length,Vn[a.dtype],i),a}var kte={kernelName:Rs,backendName:"wasm",setupFunc:vte,kernelFunc:wte};function mf(e){let{inputs:{x:t},backend:n}=e,a=n.makeOutput(t.shape,t.dtype),r=n.typedArrayFromHeap(t);return n.typedArrayFromHeap(a).set(r),a}var Ite={kernelName:il,backendName:"wasm",kernelFunc:mf},b2;function Nte(e){b2=e.wasm.cwrap(Ni,null,["number","array","number","number","number","array","number"])}function ff(e){let{inputs:t,backend:n,attrs:a}=e,[r,s]=Ste(t.x.shape,a.perm),i=!0;for(let m=0;m=r&&(s===-1||a[s]>a[i])&&(s=i);a[s]=r}return[n,a]}var Cte={kernelName:Ni,backendName:"wasm",kernelFunc:ff,setupFunc:Nte};function Eu(e,t,n){let a=e.shape,r=e.shape.length,s=k.parseAxisParam(t,a),i=s,o=_.getAxesPermutation(i,r),l=null,c=!1;if(o!=null){let u=new Array(r);for(let d=0;d`new shape: ${i}, old shape: ${a.shape}. New shape and old shape must have the same number of elements.`),{dataId:a.dataId,shape:i,dtype:a.dtype}}var Mte={kernelName:Nl,backendName:"wasm",kernelFunc:La},w2;function Rte(e){w2=e.wasm.cwrap(Ls,null,["number","array","number","number","array","number","number","number","number"])}function Pte(e){let{inputs:t,backend:n,attrs:a}=e,{a:r,b:s}=t,{transposeA:i,transposeB:o}=a;if(r.dtype!=="float32"||s.dtype!=="float32")throw new Error("BatchMatMul for non non-float32 tensors not yet supported.");let l=r.shape.length,c=s.shape.length,u=i?r.shape[l-2]:r.shape[l-1],p=o?s.shape[c-1]:s.shape[c-2],d=i?r.shape[l-1]:r.shape[l-2],h=o?s.shape[c-2]:s.shape[c-1],m=r.shape.slice(0,-2),f=s.shape.slice(0,-2),g=k.sizeFromShape(m),y=k.sizeFromShape(f),b=g===y||g===1||y===1;k.assert(l>=2&&c>=2&&b,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${m}) and (${f}).`);let x=(g>y?r.shape.slice(0,-2):s.shape.slice(0,-2)).concat([d,h]);k.assert(u===p,()=>`Error in matMul: inner shapes (${u}) and (${p}) of Tensors with shapes ${r.shape} and ${s.shape} and transposeA=${i} and transposeB=${o} must match.`);let v=i?[g,u,d]:[g,d,u],N=o?[y,h,p]:[y,p,h],T=La({inputs:{x:r},backend:n,attrs:{shape:v}}),E=La({inputs:{x:s},backend:n,attrs:{shape:N}}),A=n.dataIdMap.get(T.dataId).id,$=n.dataIdMap.get(E.dataId).id,O=i?T.shape[2]:T.shape[1],V=o?E.shape[1]:E.shape[2],W=Math.max(g,y),H=n.makeOutput([W,O,V],T.dtype),X=n.dataIdMap.get(H.dataId).id,q=new Uint8Array(new Int32Array(T.shape).buffer),K=new Uint8Array(new Int32Array(E.shape).buffer);return w2(A,q,T.shape.length,$,K,E.shape.length,i,o,X),H.shape=x,H}var Ote={kernelName:Ls,backendName:"wasm",setupFunc:Rte,kernelFunc:Pte};function gf(e){let{inputs:{x:t},attrs:{dtype:n},backend:a}=e,r=a.makeOutput(t.shape,n),s=a.typedArrayFromHeap(t);return a.typedArrayFromHeap(r).set(s),r}var Lte={kernelName:zs,backendName:"wasm",kernelFunc:gf},k2;function zte(e){k2=e.wasm.cwrap(Kr,null,["number","number","number","number"])}function Bte(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{clipValueMin:s,clipValueMax:i}=a,o=n.dataIdMap.get(r.dataId).id,l=n.makeOutput(r.shape,r.dtype),c=n.dataIdMap.get(l.dataId).id;return k2(o,s,i,c),l}var Wte={kernelName:Kr,backendName:"wasm",setupFunc:zte,kernelFunc:Bte};function I2(e){let{inputs:t,backend:n}=e,a=k.parseAxisParam(e.attrs.axis,t[0].shape)[0],r=_.computeOutShape(t.map(h=>h.shape),a),s=t.filter(h=>k.sizeFromShape(h.shape)>0);if(s.length===1)return mf({inputs:{x:s[0]},backend:n});let i=n.makeOutput(r,t[0].dtype);if(k.sizeFromShape(r)===0)return i;let o=s.map(h=>h.shape);if(_.assertParamsConsistent(o,a),s[0].dtype==="string"){let h=s.map(x=>{let v=k.sizeFromShape(x.shape.slice(a));return La({inputs:{x},backend:n,attrs:{shape:[-1,v]}})}),m=h.map(x=>({vals:n.readSync(x.dataId),shape:x.shape}));r=_.computeOutShape(h.map(x=>x.shape),1);let f=h[0].shape[0]===1,g=Cv(m,r,t[0].dtype,f),y=_.computeOutShape(s.map(x=>x.shape),a);i.shape=y;let b=n.dataIdMap.get(i.dataId);return b.stringBytes=_.fromStringArrayToUint8(g),i}let l=k.sizeFromShape(s[0].shape.slice(0,a)),c=0,u=s.map(h=>{let m=k.sizeFromShape(h.shape.slice(a));return c+=m,m}),p=s.map(h=>n.typedArrayFromHeap(h)),d=n.typedArrayFromHeap(i);for(let h=0;h`cumsum does not support ${r.dtype} tensors in the WASM backend`);let c=_.getAxesPermutation([s],l),u=r;c!==null&&(u=ff({inputs:{x:r},attrs:{perm:c},backend:n}));let p=_.getInnerMostAxes(1,l)[0];_.assertAxesAreInnerMostDims("cumsum",[p],l);let d=n.makeOutput(u.shape,u.dtype),h=u.shape[p],m=n.dataIdMap.get(u.dataId).id,f=n.dataIdMap.get(d.dataId).id;C2(m,i?1:0,o?1:0,h,f,Vn[r.dtype]);let g=d;if(c!==null){let y=_.getUndoAxesPermutation(c);g=ff({inputs:{x:d},attrs:{perm:y},backend:n}),n.disposeData(u.dataId),n.disposeData(d.dataId)}return g}var tne={kernelName:Us,backendName:"wasm",setupFunc:Qte,kernelFunc:ene},E2;function nne(e){E2=e.wasm.cwrap(Yo,null,["number","number","number","array","number","array","array","number","number"])}function ane(e){let{backend:t,inputs:n,attrs:a}=e,{x:r}=n,{blockSize:s,dataFormat:i}=a;k.assert(s>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${s}`);let o=r.shape[0],l=i==="NHWC"?r.shape[1]:r.shape[2],c=i==="NHWC"?r.shape[2]:r.shape[3],u=i==="NHWC"?r.shape[3]:r.shape[1],p=l*s,d=c*s,h=u/(s*s),m=i==="NHWC"?[o,p,d,h]:[o,h,p,d],f=t.makeOutput(m,"float32"),g=t.dataIdMap.get(r.dataId).id,y=new Uint8Array(new Int32Array(k.computeStrides(r.shape)).buffer),b=new Uint8Array(new Int32Array(m).buffer),x=new Uint8Array(new Int32Array(k.computeStrides(m)).buffer),v=t.dataIdMap.get(f.dataId).id;return E2(g,s,i==="NHWC"?1:0,y,r.shape.length-1,b,x,m.length,v),f}var rne={kernelName:Yo,backendName:"wasm",setupFunc:nne,kernelFunc:ane},_2;function sne(e){_2=e.wasm.cwrap(Gs,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function ine(e){let{inputs:t,attrs:n,backend:a}=e,{x:r,filter:s}=t,i=a.dataIdMap.get(r.dataId).id,o=a.dataIdMap.get(s.dataId).id,{strides:l,dilations:c,pad:u,dimRoundingMode:p}=n,d=c==null?[1,1]:c,h=_.computeConv2DInfo(r.shape,s.shape,l,d,u,p,!0),m=h.filterHeight,f=h.filterWidth,g=h.padInfo.top,y=h.padInfo.right,b=h.padInfo.bottom,x=h.padInfo.left,v=h.dilationHeight,N=h.dilationWidth,T=h.strideHeight,E=h.strideWidth,A=h.inChannels,$=h.outChannels,O=h.padInfo.type==="SAME"?1:0;if(h.dataFormat!=="channelsLast")throw new Error(`wasm backend DepthwiseConv2dNative does not support dataFormat:'${h.dataFormat}'. Please use 'channelsLast'.`);let V=a.makeOutput(h.outShape,"float32"),W=a.dataIdMap.get(V.dataId).id;return _2(i,r.shape[0],r.shape[1],r.shape[2],o,m,f,g,y,b,x,O,v,N,T,E,A,$,W),V}var one={kernelName:Gs,backendName:"wasm",setupFunc:sne,kernelFunc:ine},lne=!1,une=bn(Qo,lne,"bool"),cne=Un(js);function rw(e){let{inputs:t,attrs:n,backend:a}=e,{input:r}=t,{dim:s}=n,i=r.shape.length,o=r.shape.slice(),l=s;return s<0&&(k.assert(-(i+1)<=s,()=>`Axis must be in the interval [${-(i+1)}, ${i}]`),l=i+s+1),o.splice(l,0,1),La({inputs:{x:r},backend:a,attrs:{shape:o}})}var pne={kernelName:el,backendName:"wasm",kernelFunc:rw};function dne(e){let{attrs:{shape:t,value:n,dtype:a},backend:r}=e,s=r.makeOutput(t,a);return r.typedArrayFromHeap(s).fill(n),s}var hne={kernelName:bc,backendName:"wasm",kernelFunc:dne},F2;function mne(e){F2=e.wasm.cwrap(nl,null,["number","number","number","number","number","number"])}function fne(e){let{inputs:t,backend:n}=e,{image:a}=t,r=n.makeOutput(a.shape,a.dtype),s=n.dataIdMap.get(a.dataId).id,i=n.dataIdMap.get(r.dataId).id,[o,l,c,u]=a.shape;return F2(s,o,l,c,u,i),r}var gne={kernelName:nl,backendName:"wasm",kernelFunc:fne,setupFunc:mne},yne=Un(qs),bne=!1,xne=bn(Ks,bne),A2;function vne(e){A2=e.wasm.cwrap(Xs,null,["number","number","number","number","number","number","number"])}function wne(e){let{backend:t,inputs:n,attrs:a}=e,{varianceEpsilon:r}=a,{x:s,mean:i,variance:o,offset:l,scale:c}=n,u=t.dataIdMap.get(s.dataId).id,p=t.dataIdMap.get(i.dataId).id,d=t.dataIdMap.get(o.dataId).id,h=l!=null?t.dataIdMap.get(l.dataId).id:0,m=c!=null?t.dataIdMap.get(c.dataId).id:0,f=t.makeOutput(s.shape,s.dtype);if(k.sizeFromShape(s.shape)===0)return f;let g=t.dataIdMap.get(f.dataId).id;return A2(u,p,d,h,m,r,g),f}var kne={kernelName:Xs,backendName:"wasm",setupFunc:vne,kernelFunc:wne},$2;function Ine(e){$2=e.wasm.cwrap(Si,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function Nne(e){let{inputs:t,attrs:n,backend:a}=e,{x:r,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:c,dilations:u,dataFormat:p,dimRoundingMode:d,activation:h,leakyreluAlpha:m}=n,f=_.computeConv2DInfo(r.shape,s.shape,l,u,c,d),g=Ap[h];if(g==null)throw new Error(`${h} activation not yet supported for FusedConv2D in the wasm backend.`);let y=a.dataIdMap.get(r.dataId).id,b=a.dataIdMap.get(s.dataId).id,x=f.outChannels,v=0;if(i!=null){let oe=a.dataIdMap.get(i.dataId);if(oe.shape.length!==1)throw new Error(`FusedConv2D only supports rank-1 bias but got rank ${oe.shape.length}.`);if(oe.shape[0]!==x)throw new Error(`FusedConv2D bias shape (${oe.shape}) does not match the number of output channels (${x})`);v=oe.id}let N=f.filterHeight,T=f.filterWidth,E=f.padInfo.top,A=f.padInfo.right,$=f.padInfo.bottom,O=f.padInfo.left,V=f.dilationHeight,W=f.dilationWidth,H=f.strideHeight,X=f.strideWidth,q=f.inChannels,K=f.padInfo.type==="SAME"?1:0,J=f.batchSize,te=f.inHeight,Q=f.inWidth;if(p!=="NHWC")throw new Error(`wasm backend FusedConv2D does not support dataFormat:'${p}'. Please use 'NHWC'.`);let ie=a.makeOutput(f.outShape,"float32"),re=a.dataIdMap.get(ie.dataId).id,ae=o==null?0:a.dataIdMap.get(o.dataId).id;return $2(y,J,te,Q,b,N,T,v,E,A,$,O,K,V,W,H,X,q,x,g,ae,m||0,re),ie}var Tne={kernelName:Si,backendName:"wasm",setupFunc:Ine,kernelFunc:Nne},D2;function Sne(e){D2=e.wasm.cwrap(Ci,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function Cne(e){let{inputs:t,attrs:n,backend:a}=e,{x:r,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:c,dilations:u,dataFormat:p,dimRoundingMode:d,activation:h,leakyreluAlpha:m}=n,f=_.computeConv2DInfo(r.shape,s.shape,l,u,c,d,!0),g=Ap[h];if(g==null)throw new Error(`${h} activation not yet supported for FusedDepthwiseConv2D in the wasm backend.`);let y=a.dataIdMap.get(r.dataId).id,b=a.dataIdMap.get(s.dataId).id,x=f.outChannels,v=0;if(i!=null){let oe=a.dataIdMap.get(i.dataId);if(oe.shape.length!==1)throw new Error(`FusedDepthwiseConv2D only supports rank-1 bias but got rank ${oe.shape.length}.`);if(oe.shape[0]!==x)throw new Error(`FusedDepthwiseConv2D bias shape (${oe.shape}) does not match the number of output channels (${x})`);v=oe.id}let N=f.filterHeight,T=f.filterWidth,E=f.padInfo.top,A=f.padInfo.right,$=f.padInfo.bottom,O=f.padInfo.left,V=f.dilationHeight,W=f.dilationWidth,H=f.strideHeight,X=f.strideWidth,q=f.inChannels,K=f.padInfo.type==="SAME"?1:0,J=f.batchSize,te=f.inHeight,Q=f.inWidth;if(p!=="NHWC")throw new Error(`wasm backend FusedDepthwiseConv2D does not support dataFormat:'${p}'. Please use 'NHWC'.`);let ie=a.makeOutput(f.outShape,"float32"),re=a.dataIdMap.get(ie.dataId).id,ae=o==null?0:a.dataIdMap.get(o.dataId).id;return D2(y,J,te,Q,b,N,T,v,E,A,$,O,K,V,W,H,X,q,x,g,ae,m||0,re),ie}var Ene={kernelName:Ci,backendName:"wasm",setupFunc:Sne,kernelFunc:Cne},M2;function _ne(e){M2=e.wasm.cwrap(rl,null,["number","number","number","number","number","number","array","number"])}function Fne(e){let{backend:t,inputs:n}=e,{params:a,indices:r}=n,[s,i,o,l]=_y.prepareAndValidate(a,r),c=t.makeOutput(s,a.dtype);if(i===0)return c;let u=r.shape,p=u[u.length-1],d=t.dataIdMap.get(a.dataId).id,h=t.dataIdMap.get(r.dataId).id,m=new Uint8Array(new Int32Array(l).buffer),f=t.dataIdMap.get(c.dataId).id;return M2(d,Vn[a.dtype],h,i,p,o,m,f),c}var Ane={kernelName:rl,backendName:"wasm",setupFunc:_ne,kernelFunc:Fne},R2;function $ne(e){R2=e.wasm.cwrap("Gather",null,["number","number","array","number","number","number","array","number"])}function Dne(e){let{backend:t,inputs:n,attrs:a}=e,{x:r,indices:s}=n,{axis:i,batchDims:o}=a,l=k.parseAxisParam(i,r.shape)[0],c=_.segment_util.collectGatherOpShapeInfo(r,s,l,o),u=La({inputs:{x:r},attrs:{shape:[c.batchSize,c.outerSize,c.dimSize,c.sliceSize]},backend:t}),p=k.sizeFromShape(s.shape),d=La({inputs:{x:s},attrs:{shape:[c.batchSize,p/c.batchSize]},backend:t}),h=[c.batchSize,c.outerSize,p/c.batchSize,c.sliceSize],m=t.makeOutput(h,r.dtype);if(k.sizeFromShape(r.shape)===0)return m;let f=u.shape.length-1,g=t.dataIdMap.get(u.dataId).id,y=t.dataIdMap.get(d.dataId).id,b=t.dataIdMap.get(m.dataId).id,x=new Uint8Array(new Int32Array(k.computeStrides(u.shape)).buffer),v=new Uint8Array(new Int32Array(k.computeStrides(h)).buffer);return R2(g,Vn[r.dtype],x,f,y,c.batchSize,v,b),m.shape=c.outputShape,m}var Mne={kernelName:al,backendName:"wasm",setupFunc:$ne,kernelFunc:Dne},Rne=!1,Pne=bn(sl,Rne,"bool"),One=!1,Lne=bn(Ys,One,"bool"),P2;function zne(e){P2=e.wasm.cwrap(Js,null,["number","number","number"])}function Bne(e){let{inputs:{x:t},attrs:{alpha:n},backend:a}=e,r=a.dataIdMap.get(t.dataId).id,s=a.makeOutput(t.shape,t.dtype);if(k.sizeFromShape(t.shape)!==0){let i=a.dataIdMap.get(s.dataId).id;P2(r,n,i)}return s}var Wne={kernelName:Js,backendName:"wasm",setupFunc:zne,kernelFunc:Bne},Vne=!1,Une=bn(cl,Vne,"bool"),Gne=!1,Hne=bn(pl,Gne,"bool"),jne=Un(Zs),qne=!1,Kne=bn(hl,qne,"bool"),O2;function Xne(e){O2=e.wasm.cwrap(Qs,null,["number, number, number"])}function Yne(e){let{backend:t,inputs:n,attrs:a}=e,{reductionIndices:r,keepDims:s}=a,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=i,{transposed:c,axes:u,originalAxes:p,inputWasTransposed:d}=Eu(i,r,t);if(d){let b=t.dataIdMap.get(c.dataId).id;l=c,o=b}let h=l.shape.length;_.assertAxesAreInnerMostDims("max",u,h);let[m,f]=_.computeOutAndReduceShapes(l.shape,u),g=k.sizeFromShape(f),y=t.makeOutput(m,i.dtype);if(k.sizeFromShape(l.shape)!==0){let b=t.dataIdMap.get(y.dataId).id;O2(o,g,b)}if(d&&t.disposeData(c.dataId),s){let b=_.expandShapeToKeepDim(y.shape,p);y.shape=b}return y}var Jne={kernelName:Qs,backendName:"wasm",setupFunc:Xne,kernelFunc:Yne},Zne=!1,Qne=bn(ei,Zne),L2;function eae(e){L2=e.wasm.cwrap(ti,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function tae(e){let{inputs:t,attrs:n,backend:a}=e,r=t.x,s=a.dataIdMap.get(r.dataId).id,{filterSize:i,strides:o,pad:l,dimRoundingMode:c}=n,u=_.computePool2DInfo(r.shape,i,o,1,l,c),p=u.filterHeight,d=u.filterWidth,h=u.padInfo.top,m=u.padInfo.right,f=u.padInfo.bottom,g=u.padInfo.left,y=u.dilationHeight,b=u.dilationWidth,x=u.strideHeight,v=u.strideWidth,N=u.inChannels,T=u.outChannels;if(u.dataFormat!=="channelsLast")throw new Error(`wasm backend does not support dataFormat:'${u.dataFormat}'. Please use 'channelsLast'.`);let E=a.makeOutput(u.outShape,"float32"),A=a.dataIdMap.get(E.dataId).id;return L2(s,r.shape[0],r.shape[1],r.shape[2],p,d,h,m,f,g,y,b,x,v,N,T,A),E}var nae={kernelName:ti,backendName:"wasm",setupFunc:eae,kernelFunc:tae},z2;function aae(e){z2=e.wasm.cwrap(ni,null,["number, number, number"])}function rae(e){let{backend:t,inputs:n,attrs:a}=e,{axis:r,keepDims:s}=a,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=o,c=i,{transposed:u,axes:p,originalAxes:d,inputWasTransposed:h}=Eu(i,r,t),m=p;if(h){let v=t.dataIdMap.get(u.dataId).id;v!==o&&(c=u,l=v,m=_.getInnerMostAxes(m.length,c.shape.length))}_.assertAxesAreInnerMostDims("mean",m,c.shape.length);let[f,g]=_.computeOutAndReduceShapes(c.shape,m),y=k.sizeFromShape(g),b=c;c.dtype!=="float32"&&(b=gf({backend:t,inputs:{x:c},attrs:{dtype:"float32"}}),l=t.dataIdMap.get(b.dataId).id);let x=t.makeOutput(f,"float32");if(k.sizeFromShape(c.shape)!==0){let v=t.dataIdMap.get(x.dataId).id;z2(l,y,v)}if(h&&t.disposeData(u.dataId),s){let v=_.expandShapeToKeepDim(x.shape,d);x.shape=v}return c.dtype!=="float32"&&t.disposeData(b.dataId),x}var sae={kernelName:ni,backendName:"wasm",setupFunc:aae,kernelFunc:rae},B2;function iae(e){B2=e.wasm.cwrap(ai,null,["number, number, number"])}function oae(e){let{backend:t,inputs:n,attrs:a}=e,{axis:r,keepDims:s}=a,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=o,c=i,{transposed:u,axes:p,originalAxes:d,inputWasTransposed:h}=Eu(i,r,t);if(h){let x=t.dataIdMap.get(u.dataId).id;x!==o&&(c=u,l=x)}let m=c.shape.length;_.assertAxesAreInnerMostDims("min",p,m);let[f,g]=_.computeOutAndReduceShapes(c.shape,p),y=k.sizeFromShape(g),b=t.makeOutput(f,c.dtype);if(k.sizeFromShape(c.shape)!==0){let x=t.dataIdMap.get(b.dataId).id;B2(l,y,x)}if(h&&t.disposeData(u.dataId),s){let x=_.expandShapeToKeepDim(b.shape,d);b.shape=x}return b}var lae={kernelName:ai,backendName:"wasm",setupFunc:iae,kernelFunc:oae},uae=!1,cae=bn(ri,uae),pae=!0,dae=bn(si,pae),hae=Un(fl);function sw(e,t){let n=new Int32Array(e.wasm.HEAPU8.buffer,t,4),a=n[0],r=n[1],s=n[2],i=n[3];return e.wasm._free(t),{pSelectedIndices:a,selectedSize:r,pSelectedScores:s,pValidOutputs:i}}var W2;function mae(e){W2=e.wasm.cwrap(yl,"number",["number","number","number","number","number"])}function fae(e){let{backend:t,inputs:n,attrs:a}=e,{iouThreshold:r,maxOutputSize:s,scoreThreshold:i}=a,{boxes:o,scores:l}=n,c=t.dataIdMap.get(o.dataId).id,u=t.dataIdMap.get(l.dataId).id,p=W2(c,u,s,r,i),{pSelectedIndices:d,selectedSize:h,pSelectedScores:m,pValidOutputs:f}=sw(t,p);return t.wasm._free(m),t.wasm._free(f),t.makeOutput([h],"int32",d)}var gae={kernelName:yl,backendName:"wasm",setupFunc:mae,kernelFunc:fae},V2;function yae(e){V2=e.wasm.cwrap(bl,"number",["number","number","number","number","number","bool"])}function bae(e){let{backend:t,inputs:n,attrs:a}=e,{iouThreshold:r,maxOutputSize:s,scoreThreshold:i,padToMaxOutputSize:o}=a,{boxes:l,scores:c}=n,u=t.dataIdMap.get(l.dataId).id,p=t.dataIdMap.get(c.dataId).id,d=V2(u,p,s,r,i,o),{pSelectedIndices:h,selectedSize:m,pSelectedScores:f,pValidOutputs:g}=sw(t,d);t.wasm._free(f);let y=t.makeOutput([m],"int32",h),b=t.makeOutput([],"int32",g);return[y,b]}var xae={kernelName:bl,backendName:"wasm",setupFunc:yae,kernelFunc:bae},U2;function vae(e){U2=e.wasm.cwrap(xl,"number",["number","number","number","number","number","number"])}function wae(e){let{backend:t,inputs:n,attrs:a}=e,{iouThreshold:r,maxOutputSize:s,scoreThreshold:i,softNmsSigma:o}=a,{boxes:l,scores:c}=n,u=t.dataIdMap.get(l.dataId).id,p=t.dataIdMap.get(c.dataId).id,d=U2(u,p,s,r,i,o),{pSelectedIndices:h,selectedSize:m,pSelectedScores:f,pValidOutputs:g}=sw(t,d);t.wasm._free(g);let y=t.makeOutput([m],"int32",h),b=t.makeOutput([m],"float32",f);return[y,b]}var kae={kernelName:xl,backendName:"wasm",setupFunc:vae,kernelFunc:wae},Iae=!1,Nae=bn(gl,Iae,"bool"),G2;function Tae(e){G2=e.wasm.cwrap(ii,null,["number","number","number","number","number"])}function Sae(e){let{inputs:t,backend:n,attrs:a}=e,{indices:r}=t,{depth:s,onValue:i,offValue:o}=a,l=n.makeOutput([...r.shape,s],"int32"),c=n.dataIdMap.get(l.dataId).id,u=n.dataIdMap.get(r.dataId).id;return G2(u,s,i,o,c),l}var Cae={kernelName:ii,backendName:"wasm",setupFunc:Tae,kernelFunc:Sae};function Eae(e){let{inputs:{x:t},backend:n}=e,a=n.makeOutput(t.shape,t.dtype);return n.typedArrayFromHeap(a).fill(1),a}var _ae={kernelName:vl,backendName:"wasm",kernelFunc:Eae};function Fae(e){let{inputs:t,backend:n,attrs:a}=e,{axis:r}=a;if(t.length===1)return rw({inputs:{input:t[0]},backend:n,attrs:{dim:r}});let s=t[0].shape,i=t[0].dtype;t.forEach(l=>{k.assertShapesMatch(s,l.shape,"All tensors passed to stack must have matching shapes"),k.assert(i===l.dtype,()=>"All tensors passed to stack must have matching dtypes")});let o=t.map(l=>rw({inputs:{input:l},backend:n,attrs:{dim:r}}));return I2({inputs:o,backend:n,attrs:{axis:r}})}var Aae={kernelName:wl,backendName:"wasm",kernelFunc:Fae},H2;function $ae(e){H2=e.wasm.cwrap(oi,null,["number","array","number","number","array","array","number","number"])}function Dae(e){let{inputs:{x:t},backend:n,attrs:{paddings:a,constantValue:r}}=e,s=a.map((m,f)=>m[0]+t.shape[f]+m[1]),i=n.dataIdMap.get(t.dataId).id,o=n.makeOutput(s,t.dtype),l=n.dataIdMap.get(o.dataId).id,c=new Uint8Array(new Int32Array(t.shape).buffer),u=a.map(m=>m[0]),p=a.map(m=>m[1]),d=new Uint8Array(new Int32Array(u).buffer),h=new Uint8Array(new Int32Array(p).buffer);return H2(i,c,t.shape.length,Vn[t.dtype],d,h,r,l),o}var Mae={kernelName:oi,backendName:"wasm",kernelFunc:Dae,setupFunc:$ae},Rae=!1,Pae=bn(li,Rae),j2;function Oae(e){j2=e.wasm.cwrap(ui,null,["number","number","number"])}function Lae(e){let{inputs:t,backend:n}=e,{x:a,alpha:r}=t,s=n.dataIdMap.get(a.dataId).id,i=n.dataIdMap.get(r.dataId).id,o=n.makeOutput(a.shape,"float32"),l=n.dataIdMap.get(o.dataId).id;return j2(s,i,l),o}var zae={kernelName:ui,backendName:"wasm",setupFunc:Oae,kernelFunc:Lae},q2;function Bae(e){q2=e.wasm.cwrap(kl,null,["number","number","number","number"])}function Wae(e){let{backend:t,inputs:n,attrs:a}=e,{axis:r,keepDims:s}=a,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=o,c=i,{transposed:u,axes:p,originalAxes:d,inputWasTransposed:h}=Eu(i,r,t),m=p;if(h){let x=t.dataIdMap.get(u.dataId).id;x!==o&&(c=u,l=x,m=_.getInnerMostAxes(m.length,c.shape.length))}_.assertAxesAreInnerMostDims("prod",m,c.shape.length);let[f,g]=_.computeOutAndReduceShapes(c.shape,m),y=k.sizeFromShape(g),b=t.makeOutput(f,c.dtype);if(k.sizeFromShape(c.shape)!==0){let x=t.dataIdMap.get(b.dataId).id;q2(l,y,Vn[b.dtype],x)}if(h&&t.disposeData(u.dataId),s){let x=_.expandShapeToKeepDim(b.shape,d);b.shape=x}return b}var Vae={kernelName:kl,backendName:"wasm",setupFunc:Bae,kernelFunc:Wae},Uae=e=>{let{backend:t,attrs:n}=e,{start:a,stop:r,step:s,dtype:i}=n,o=Fv(a,r,s,i),l=t.makeOutput([o.length],i);return t.typedArrayFromHeap(l).set(o),l},Gae={kernelName:Nc,backendName:"wasm",kernelFunc:Uae},Hae=!0,jae=bn(Hs,Hae),qae=Un(ci),Kae=Un(di),K2;function Xae(e){K2=e.wasm.cwrap(pi,null,["number","number","number","number","number","number","number","number","number","number"])}function Yae(e){let{backend:t,inputs:n,attrs:a}=e,{images:r}=n,{alignCorners:s,halfPixelCenters:i,size:o}=a,[l,c]=o,[u,p,d,h]=r.shape,m=[u,l,c,h],f=t.dataIdMap.get(r.dataId),g;f.dtype!=="float32"&&(g=gf({backend:t,inputs:{x:r},attrs:{dtype:"float32"}}),f=t.dataIdMap.get(g.dataId));let y=f.id,b=t.makeOutput(m,"float32");if(k.sizeFromShape(r.shape)===0)return b;let x=t.dataIdMap.get(b.dataId).id;return K2(y,u,p,d,h,l,c,s?1:0,i?1:0,x),g!=null&&t.disposeData(g.dataId),b}var Jae={kernelName:pi,backendName:"wasm",setupFunc:Xae,kernelFunc:Yae},X2;function Zae(e){X2=e.wasm.cwrap(hi,null,["number","array","number","array","number","number"])}function Qae(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,{dims:s}=a,i=k.parseAxisParam(s,r.shape);if(r.shape.length===0)return mf({inputs:{x:r},backend:n});let o=n.makeOutput(r.shape,r.dtype),l=n.dataIdMap.get(r.dataId).id,c=n.dataIdMap.get(o.dataId).id,u=new Uint8Array(new Int32Array(i).buffer),p=new Uint8Array(new Int32Array(r.shape).buffer);return X2(l,u,i.length,p,r.shape.length,c),La({inputs:{x:o},attrs:{shape:r.shape},backend:n})}var ere={kernelName:hi,backendName:"wasm",kernelFunc:Qae,setupFunc:Zae},Y2;function tre(e){Y2=e.wasm.cwrap(zl,null,["number","number","number","number","number","number","number","number","array","number","number"])}function nre(e){let{inputs:t,backend:n,attrs:a}=e,{image:r}=t,{radians:s,fillValue:i,center:o}=a,l=n.makeOutput(r.shape,r.dtype),c=n.dataIdMap.get(r.dataId).id,u=n.dataIdMap.get(l.dataId).id,[p,d,h,m]=r.shape,[f,g]=_.getImageCenter(o,d,h),y=i===0,b=255,x=typeof i=="number"?[i,i,i,y?0:b]:[...i,b],v=new Uint8Array(new Int32Array(x).buffer);return Y2(c,p,d,h,m,s,f,g,v,x.length,u),l}var are={kernelName:zl,backendName:"wasm",kernelFunc:nre,setupFunc:tre},rre=Un(mi),sre=Un(fi),J2;function ire(e){J2=e.wasm.cwrap(Tl,null,["number","number","number","number","number","number","array","number","number"])}function ore(e){let{backend:t,inputs:n,attrs:a}=e,{indices:r,updates:s}=n,{shape:i}=a,o=t.makeOutput(i,s.dtype);if(k.sizeFromShape(i)===0)return o;let{sliceRank:l,numUpdates:c,sliceSize:u,strides:p,outputSize:d}=Fy.calculateShapes(s,r,i),h=t.dataIdMap.get(r.dataId).id,m=t.dataIdMap.get(s.dataId).id,f=new Uint8Array(new Int32Array(p).buffer),g=t.dataIdMap.get(o.dataId).id;return J2(h,m,Vn[s.dtype],l,c,u,f,d,g),o}var lre={kernelName:Tl,backendName:"wasm",setupFunc:ire,kernelFunc:ore},Z2;function ure(e){Z2=e.wasm.cwrap("SelectV2",null,["number","number","number","number","number"])}function cre(e){let{inputs:t,backend:n}=e,{condition:a,t:r,e:s}=t,i=n.dataIdMap.get(a.dataId).id,o=n.dataIdMap.get(r.dataId).id,l=n.dataIdMap.get(s.dataId).id,c=n.makeOutput(r.shape,r.dtype),u=n.dataIdMap.get(c.dataId).id,p=a.shape.length,d=r.shape.length,h=p===0||p>1||d===1?1:k.sizeFromShape(r.shape.slice(1));return Z2(i,o,l,h,u),c}var pre={kernelName:Sl,backendName:"wasm",kernelFunc:cre,setupFunc:ure},Q2;function dre(e){Q2=e.wasm.cwrap(yi,null,["number","number"])}function hre(e){let{backend:t,inputs:{x:n}}=e,a=t.dataIdMap.get(n.dataId).id,r=t.makeOutput(n.shape,n.dtype),s=t.dataIdMap.get(r.dataId).id;return k.sizeFromShape(r.shape)===0||Q2(a,s),r}var mre={kernelName:"Sigmoid",backendName:"wasm",setupFunc:dre,kernelFunc:hre},fre=Un(gi);function yf(e){let{inputs:{x:t},attrs:{begin:n,size:a},backend:r}=e,[s,i]=hn.parseSliceParams(t,n,a),o=hn.isSliceContinous(t.shape,s,i),l=r.readSync(t.dataId),c=r.makeOutput(i,t.dtype),u=k.computeStrides(t.shape),p=r.dataIdMap.get(c.dataId);if(o){let m=hn.computeFlatOffset(s,u);return t.dtype==="string"?p.stringBytes=l.slice(m,m+k.sizeFromShape(i)):r.typedArrayFromHeap(c).set(l.subarray(m,m+k.sizeFromShape(i))),c}if(t.dtype==="string"){let m=Xm(l,s,i,t.shape,t.dtype);return p.stringBytes=m,c}let d=r.typedArrayFromHeap(c),h=t.shape.length;if(h===2)gre(l,u[0],d,s,i);else if(h===3)yre(l,u[0],u[1],d,s,i);else if(h===4)bre(l,u[0],u[1],u[2],d,s,i);else{let m=Xm(l,s,i,t.shape,t.dtype);d.set(m)}return c}function gre(e,t,n,a,r){let s=0,i=a[0],o=a[1],l=i+r[0];for(let c=i;c{let d=[...u];d[o]=p;let h=yf({inputs:{x:r},attrs:{begin:c,size:d},backend:a});return c[o]+=p,h})}var Nre={kernelName:$l,backendName:"wasm",kernelFunc:Ire},Tre=Un(bi),Sre=Un(Cc),Cre=!0,Ere=bn(wi,Cre),tC;function _re(e){tC=e.wasm.cwrap(Dl,null,["number","array","number","array","array","array","array","array","number","number"])}function Fre(e){let{backend:t,inputs:n,attrs:a}=e,{x:r}=n,{begin:s,end:i,strides:o}=a;o==null&&(o=new Array(s.length));let{beginMask:l,endMask:c,ellipsisMask:u,newAxisMask:p,shrinkAxisMask:d}=a,h=_.slice_util.maskToAxes(u);if(h.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(u!==0&&p!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(u!==0&&d!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let m=r.shape.length-s.length,f=_.slice_util.maskToAxes(p),g=r.shape.slice();f.forEach($=>{s[$]=0,i[$]=1,g.splice($,0,1)});let y=La({inputs:{x:r},attrs:{shape:g},backend:t}),{begin:b,end:x,strides:v}=_.slice_util.getNormalizedAxes(y.shape,h,m,s,i,o,l,c,u);s=b,i=x,o=v;let N=_.slice_util.maskToAxes(d);N.forEach($=>{i[$]=s[$]+1,o[$]=1});let T=_.slice_util.computeOutShape(s,i,o),E=T.filter(($,O)=>N.indexOf(O)===-1);if(o.every($=>$===1)){let $=yf({inputs:{x:r},attrs:{begin:s,size:T},backend:t});return La({inputs:{x:$},attrs:{shape:E},backend:t})}let A=t.makeOutput(E,"float32");if(!E.some($=>$===0)){let $=t.dataIdMap.get(y.dataId).id,O=new Uint8Array(new Int32Array(k.computeStrides(y.shape)).buffer),V=new Uint8Array(new Int32Array(s).buffer),W=new Uint8Array(new Int32Array(i).buffer),H=new Uint8Array(new Int32Array(o).buffer),X=new Uint8Array(new Int32Array(E).buffer),q=new Uint8Array(new Int32Array(k.computeStrides(E)).buffer),K=t.dataIdMap.get(A.dataId).id;tC($,O,y.shape.length,V,W,H,X,q,E.length,K)}return La({inputs:{x:A},attrs:{shape:E},backend:t})}var Are={kernelName:Dl,backendName:"wasm",setupFunc:_re,kernelFunc:Fre},$re=!0,Dre=bn(ki,$re),nC;function Mre(e){nC=e.wasm.cwrap(xi,null,["number, number, number"])}function Rre(e){let{backend:t,inputs:n,attrs:a}=e,{axis:r,keepDims:s}=a,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=o,c=i,{transposed:u,axes:p,originalAxes:d,inputWasTransposed:h}=Eu(i,r,t),m=p;if(h){let x=t.dataIdMap.get(u.dataId).id;x!==o&&(c=u,l=x,m=_.getInnerMostAxes(m.length,c.shape.length))}_.assertAxesAreInnerMostDims("sum",m,c.shape.length);let[f,g]=_.computeOutAndReduceShapes(c.shape,m),y=k.sizeFromShape(g),b=t.makeOutput(f,c.dtype);if(k.sizeFromShape(c.shape)!==0){let x=t.dataIdMap.get(b.dataId).id;nC(l,y,x)}if(h&&t.disposeData(u.dataId),s){let x=_.expandShapeToKeepDim(b.shape,d);b.shape=x}return b}var Pre={kernelName:xi,backendName:"wasm",setupFunc:Mre,kernelFunc:Rre},Ore=Un(Ii),aC;function Lre(e){aC=e.wasm.cwrap(Xr,null,["number","array","number","array","number","number"])}function zre(e){let{inputs:t,backend:n,attrs:a}=e,{x:r}=t,s=n.dataIdMap.get(r.dataId).id,{reps:i}=a,o=new Array(r.shape.length);for(let d=0;d{let{x:a}=e,{k:r,sorted:s}=n,i=t.dataIdMap.get(a.dataId).id,o=new Uint8Array(new Int32Array(a.shape).buffer),l=a.shape.slice();l[l.length-1]=r;let c=t.makeOutput(l,a.dtype),u=t.dataIdMap.get(c.dataId).id,p=t.makeOutput(l,"int32"),d=t.dataIdMap.get(p.dataId).id;return rC(i,o,a.shape.length,Vn[a.dtype],r,s,u,d),[c,p]},Ure={kernelName:Rl,backendName:"wasm",setupFunc:Wre,kernelFunc:Vre};function Gre(e){let{inputs:t,backend:n,attrs:a}=e,{value:r}=t,{axis:s}=a;s<0&&(s+=r.shape.length);let i=r.shape[s],o=r.shape.length,l=new Array(o-1),c=0;for(let h=0;h({dataId:h,dtype:m,shape:l}))}var Hre={kernelName:Pl,backendName:"wasm",kernelFunc:Gre};function jre(e){let{inputs:{x:t},backend:n}=e,a=n.makeOutput(t.shape,t.dtype);return n.typedArrayFromHeap(a).fill(0),a}var qre={kernelName:Ol,backendName:"wasm",kernelFunc:jre},Kre=[yte,xte,kte,Fte,Dte,Ote,Lte,Wte,Vte,Hte,Kte,Xte,Zte,tne,rne,one,une,cne,pne,hne,gne,yne,xne,gte,kne,Tne,Ene,Ane,Mne,Pne,Lne,Ite,Wne,Une,Hne,jne,Kne,Jne,Qne,nae,sae,lae,cae,dae,hae,gae,xae,kae,Nae,Cae,_ae,Aae,Mae,Pae,zae,Vae,Gae,jae,qae,Kae,Mte,Jae,ere,are,sre,rre,lre,pre,mre,fre,xre,kre,Nre,Tre,Sre,Ere,Are,Dre,Pre,Ore,Bre,Ure,Cte,Hre,qre];for(let e of Kre)Fc(e);var iw=ee();iw.registerFlag("WASM_HAS_SIMD_SUPPORT",async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,9,1,7,0,65,0,253,15,26,11])));iw.registerFlag("WASM_HAS_MULTITHREAD_SUPPORT",async()=>{if(iw.get("IS_NODE"))return!1;try{return new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch(e){return!1}});var sC=Ro(oF()),Xre='var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module["instantiateWasm"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module["wasmModule"],info);Module["wasmModule"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd==="load"){Module["DYNAMIC_BASE"]=e.data.DYNAMIC_BASE;Module["DYNAMICTOP_PTR"]=e.data.DYNAMICTOP_PTR;Module["wasmModule"]=e.data.wasmModule;Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;if(typeof e.data.urlOrBlob==="string"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({"cmd":"loaded"})}else if(e.data.cmd==="objectTransfer"){Module["PThread"].receiveObjectTransfer(e.data)}else if(e.data.cmd==="run"){Module["__performance_now_clock_drift"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module["__register_pthread_ptr"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module["establishStackSpace"](top,max);Module["_emscripten_tls_init"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].setThreadStatus(Module["_pthread_self"](),1);try{var result=Module["dynCall_ii"](e.data.start_routine,e.data.arg);if(!Module["getNoExitRuntime"]())Module["PThread"].threadExit(result)}catch(ex){if(ex==="Canceled!"){Module["PThread"].threadCancel()}else if(ex!="unwind"){Atomics.store(Module["HEAPU32"],threadInfoStruct+4>>2,ex instanceof Module["ExitStatus"]?ex.status:-2);Atomics.store(Module["HEAPU32"],threadInfoStruct+0>>2,1);Module["_emscripten_futex_wake"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module["ExitStatus"]))throw ex}}}else if(e.data.cmd==="cancel"){if(threadInfoStruct){Module["PThread"].threadCancel()}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processThreadQueue"){if(threadInfoStruct){Module["_emscripten_current_thread_process_queued_calls"]()}}else{err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){err("worker.js onmessage() captured an uncaught exception: "+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require("worker_threads");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",function(data){onmessage({data:data})});var nodeFS=require("fs");var nodeRead=function(filename){return nodeFS.readFileSync(filename,"utf8")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance==="undefined"){performance={now:function(){return Date.now()}}}}',Yre=Ro(lF()),iC=class extends uc{constructor(e){super();this.wasm=e,this.dataIdNextNumber=1,this.wasm.tfjs.init(),this.dataIdMap=new Md(this,ns())}write(e,t,n){let a={};return this.move(a,e,t,n),a}numDataIds(){return this.dataIdMap.numDataIds()}async time(e){let t=k.now();return e(),{kernelMs:k.now()-t}}move(e,t,n,a){let r=this.dataIdNextNumber++;if(a==="string"){let l=t;this.dataIdMap.set(e,{id:r,stringBytes:l,shape:n,dtype:a,memoryOffset:null});return}let s=k.sizeFromShape(n),i=s*k.bytesPerElement(a),o=this.wasm._malloc(i);this.dataIdMap.set(e,{id:r,memoryOffset:o,shape:n,dtype:a}),this.wasm.tfjs.registerTensor(r,s,o),t!=null&&this.wasm.HEAPU8.set(new Uint8Array(t.buffer,t.byteOffset,i),o)}async read(e){return this.readSync(e)}readSync(e){let{memoryOffset:t,dtype:n,shape:a,stringBytes:r}=this.dataIdMap.get(e);if(n==="string")return r;let s=this.wasm.HEAPU8.slice(t,t+k.sizeFromShape(a)*k.bytesPerElement(n));return Jre(s.buffer,n)}disposeData(e){let t=this.dataIdMap.get(e);this.wasm._free(t.memoryOffset),this.wasm.tfjs.disposeData(t.id),this.dataIdMap.delete(e)}floatPrecision(){return 32}getMemoryOffset(e){return this.dataIdMap.get(e).memoryOffset}dispose(){this.wasm.tfjs.dispose(),this.wasm=null}memory(){return{unreliable:!1}}makeOutput(e,t,n){let a;if(n==null)a=this.write(null,e,t);else{a={};let r=this.dataIdNextNumber++;this.dataIdMap.set(a,{id:r,memoryOffset:n,shape:e,dtype:t});let s=k.sizeFromShape(e);this.wasm.tfjs.registerTensor(r,s,n)}return{dataId:a,shape:e,dtype:t}}typedArrayFromHeap({shape:e,dtype:t,dataId:n}){let a=this.wasm.HEAPU8.buffer,{memoryOffset:r}=this.dataIdMap.get(n),s=k.sizeFromShape(e);switch(t){case"float32":return new Float32Array(a,r,s);case"int32":return new Int32Array(a,r,s);case"bool":return new Uint8Array(a,r,s);default:throw new Error(`Unknown dtype ${t}`)}}};function Zre(e){return(t,n)=>(k.fetch(e,{credentials:"same-origin"}).then(a=>{a.ok||t.env.a(`failed to load wasm binary file at '${e}'`),a.arrayBuffer().then(r=>{WebAssembly.instantiate(r,t).then(s=>{n(s.instance)})})}),{})}function oC(e,t,n){if(bf!=null)return bf;let a="tfjs-backend-wasm.wasm";return e&&t?a="tfjs-backend-wasm-threaded-simd.wasm":e&&(a="tfjs-backend-wasm-simd.wasm"),$p!=null&&$p[a]!=null?$p[a]:n+a}async function Qre(){let[e,t]=await Promise.all([ee().getAsync("WASM_HAS_SIMD_SUPPORT"),ee().getAsync("WASM_HAS_MULTITHREAD_SUPPORT")]);return new Promise((n,a)=>{let r={};r.locateFile=(l,c)=>{if(l.endsWith(".worker.js")){let u=Xre,p=new Blob([u],{type:"application/javascript"});return URL.createObjectURL(p)}return l.endsWith(".wasm")?oC(e,t,Dp!=null?Dp:c):c+l},ow&&(r.instantiateWasm=Zre(oC(e,t,Dp!=null?Dp:"")));let s;t&&e&&bf==null?(s=sC.default(r),s.mainScriptUrlOrBlob=new Blob(["var WasmBackendModuleThreadedSimd = "+sC.default.toString()],{type:"text/javascript"})):s=Yre.default(r);let i=null;s.tfjs={init:s.cwrap("init",null,[]),registerTensor:s.cwrap("register_tensor",null,["number","number","number"]),disposeData:s.cwrap("dispose_data",i,["number"]),dispose:s.cwrap("dispose",i,[])};let o=!1;s.onRuntimeInitialized=()=>{o=!0,Mp=!1,n({wasm:s})},s.onAbort=()=>{o||Mp||(Mp=!0,a({message:"Make sure the server can serve the `.wasm` file relative to the bundled js file. For more details see https://github.com/tensorflow/tfjs/blob/master/tfjs-backend-wasm/README.md#using-bundlers"}))}})}function Jre(e,t){switch(t){case"float32":return new Float32Array(e);case"int32":return new Int32Array(e);case"bool":return new Uint8Array(e);default:throw new Error(`Unknown dtype ${t}`)}}var ese=["tfjs-backend-wasm.wasm","tfjs-backend-wasm-simd.wasm","tfjs-backend-wasm-threaded-simd.wasm"],bf=null,Dp=null,$p={},Mp=!1,ow=!1;function tse(e,t=!1){if(Pt("setWasmPath has been deprecated in favor of setWasmPaths and will be removed in a future release."),Mp)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPath()` before you call `tf.setBackend()` or `tf.ready()`");bf=e,ow=t}function nse(e,t=!1){if(Mp)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPaths()` before you call `tf.setBackend()` or `tf.ready()`");if(typeof e=="string")Dp=e;else{$p=e;let n=ese.filter(a=>$p[a]==null);if(n.length>0)throw new Error(`There were no entries found for the following binaries: ${n.join(",")}. Please either call setWasmPaths with a map providing a path for each binary, or with a string indicating the directory where all the binaries can be found.`)}ow=t}var ase="2.8.3",rse=2;Sh("wasm",async()=>{let{wasm:e}=await Qre();return new iC(e)},rse);var Gf={};oc(Gf,{AnchorPosition:()=>ur,DrawBox:()=>Cf,DrawBoxOptions:()=>xw,DrawFaceLandmarks:()=>ww,DrawFaceLandmarksOptions:()=>vw,DrawTextField:()=>ws,DrawTextFieldOptions:()=>Rp,drawContour:()=>Dr,drawDetections:()=>hse,drawFaceExpressions:()=>mse,drawFaceLandmarks:()=>fse});function Dr(e,t,n=!1){if(e.beginPath(),t.slice(1).forEach(({x:a,y:r},s)=>{let i=t[s];e.moveTo(i.x,i.y),e.lineTo(a,r)}),n){let a=t[t.length-1],r=t[0];if(!a||!r)return;e.moveTo(a.x,a.y),e.lineTo(r.x,r.y)}e.stroke()}var xf={};oc(xf,{computeReshapedDimensions:()=>cw,getCenterPoint:()=>ao,isDimensions:()=>wf,isEven:()=>vf,isFloat:()=>uw,isTensor:()=>to,isTensor1D:()=>sse,isTensor2D:()=>lw,isTensor3D:()=>Mr,isTensor4D:()=>sa,isValidNumber:()=>za,isValidProbablitiy:()=>_u,range:()=>or,round:()=>no});var cn=class{constructor(t,n){if(!za(t)||!za(n))throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({width:t,height:n})}`);this._width=t,this._height=n}get width(){return this._width}get height(){return this._height}reverse(){return new cn(1/this.width,1/this.height)}};function to(e,t){return e instanceof z&&e.shape.length===t}function sse(e){return to(e,1)}function lw(e){return to(e,2)}function Mr(e){return to(e,3)}function sa(e){return to(e,4)}function uw(e){return e%1!=0}function vf(e){return e%2==0}function no(e,t=2){let n=10**t;return Math.floor(e*n)/n}function wf(e){return e&&e.width&&e.height}function cw({width:e,height:t},n){let a=n/Math.max(t,e);return new cn(Math.round(e*a),Math.round(t*a))}function ao(e){return e.reduce((t,n)=>t.add(n),new De(0,0)).div(new De(e.length,e.length))}function or(e,t,n){return Array(e).fill(0).map((a,r)=>t+r*n)}function za(e){return!!e&&e!==Infinity&&e!==-Infinity&&!Number.isNaN(e)||e===0}function _u(e){return za(e)&&e>=0&&e<=1}var De=class{constructor(t,n){this._x=t,this._y=n}get x(){return this._x}get y(){return this._y}add(t){return new De(this.x+t.x,this.y+t.y)}sub(t){return new De(this.x-t.x,this.y-t.y)}mul(t){return new De(this.x*t.x,this.y*t.y)}div(t){return new De(this.x/t.x,this.y/t.y)}abs(){return new De(Math.abs(this.x),Math.abs(this.y))}magnitude(){return Math.sqrt(this.x**2+this.y**2)}floor(){return new De(Math.floor(this.x),Math.floor(this.y))}};var ot=class{static isRect(t){return!!t&&[t.x,t.y,t.width,t.height].every(za)}static assertIsValidBox(t,n,a=!1){if(!ot.isRect(t))throw new Error(`${n} - invalid box: ${JSON.stringify(t)}, expected object with properties x, y, width, height`);if(!a&&(t.width<0||t.height<0))throw new Error(`${n} - width (${t.width}) and height (${t.height}) must be positive numbers`)}constructor(t,n=!0){let a=t||{},r=[a.left,a.top,a.right,a.bottom].every(za),s=[a.x,a.y,a.width,a.height].every(za);if(!s&&!r)throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(a)}`);let[i,o,l,c]=s?[a.x,a.y,a.width,a.height]:[a.left,a.top,a.right-a.left,a.bottom-a.top];ot.assertIsValidBox({x:i,y:o,width:l,height:c},"Box.constructor",n),this._x=i,this._y=o,this._width=l,this._height=c}get x(){return this._x}get y(){return this._y}get width(){return this._width}get height(){return this._height}get left(){return this.x}get top(){return this.y}get right(){return this.x+this.width}get bottom(){return this.y+this.height}get area(){return this.width*this.height}get topLeft(){return new De(this.left,this.top)}get topRight(){return new De(this.right,this.top)}get bottomLeft(){return new De(this.left,this.bottom)}get bottomRight(){return new De(this.right,this.bottom)}round(){let[t,n,a,r]=[this.x,this.y,this.width,this.height].map(s=>Math.round(s));return new ot({x:t,y:n,width:a,height:r})}floor(){let[t,n,a,r]=[this.x,this.y,this.width,this.height].map(s=>Math.floor(s));return new ot({x:t,y:n,width:a,height:r})}toSquare(){let{x:t,y:n,width:a,height:r}=this,s=Math.abs(a-r);return an&&(o=-p+n+a,p=n),d>t&&(l=-d+t+r,d=t),c<1&&(l=2-c,c=1),u<1&&(l=2-u,u=1),{dy:i,edy:l,dx:s,edx:o,y:u,ey:d,x:c,ex:p,w:a,h:r}}calibrate(t){return new ot({left:this.left+t.left*this.width,top:this.top+t.top*this.height,right:this.right+t.right*this.width,bottom:this.bottom+t.bottom*this.height}).toSquare().round()}};var ro=class extends ot{constructor(t,n,a,r,s=!1){super({left:t,top:n,right:a,bottom:r},s)}};var Rr=class{constructor(t,n,a,r,s){this._imageDims=new cn(s.width,s.height),this._score=t,this._classScore=n,this._className=a,this._box=new ot(r).rescale(this._imageDims)}get score(){return this._score}get classScore(){return this._classScore}get className(){return this._className}get box(){return this._box}get imageDims(){return this._imageDims}get imageWidth(){return this.imageDims.width}get imageHeight(){return this.imageDims.height}get relativeBox(){return new ot(this._box).rescale(this.imageDims.reverse())}forSize(t,n){return new Rr(this.score,this.classScore,this.className,this.relativeBox,{width:t,height:n})}};var yt=class extends Rr{constructor(t,n,a){super(t,t,"",n,a)}forSize(t,n){let{score:a,relativeBox:r,imageDims:s}=super.forSize(t,n);return new yt(a,r,s)}};function kf(e,t,n=!0){let a=Math.max(0,Math.min(e.right,t.right)-Math.max(e.left,t.left)),r=Math.max(0,Math.min(e.bottom,t.bottom)-Math.max(e.top,t.top)),s=a*r;return n?s/(e.area+t.area-s):s/Math.min(e.area,t.area)}function If(e){let t=e.map(o=>o.x),n=e.map(o=>o.y),a=t.reduce((o,l)=>lloo({score:i,boxIndex:o})).sort((i,o)=>i.score-o.score).map(i=>i.boxIndex),s=[];for(;r.length>0;){let i=r.pop();s.push(i);let o=r,l=[];for(let c=0;cl[u]<=n)}return s}function va(e,t){return D(()=>{let[n,a,r]=t,s=Nn([...e.shape.slice(0,3),1],n,"float32"),i=Nn([...e.shape.slice(0,3),1],a,"float32"),o=Nn([...e.shape.slice(0,3),1],r,"float32"),l=Ze([s,i,o],3);return fe(e,l)})}function Tf(e,t=!1){return D(()=>{let[n,a]=e.shape.slice(1);if(n===a)return e;let r=Math.abs(n-a),s=Math.round(r*(t?.5:1)),i=n>a?2:1,o=d=>{let h=e.shape.slice();return h[i]=d,Nn(h,0,"float32")},l=o(s),c=r-l.shape[i],p=[t&&c?o(c):null,e,l].filter(d=>!!d).map(d=>pe(d,"float32"));return Ze(p,i)})}function lC(e){let t=e.slice();for(let n=t.length-1;n>0;n--){let a=Math.floor(Math.random()*(n+1)),r=t[n];t[n]=t[a],t[a]=r}return t}function Fu(e){return 1/(1+Math.exp(-e))}function uC(e){return Math.log(e/(1-e))}var so=class extends ot{constructor(t,n,a,r,s=!1){super({x:t,y:n,width:a,height:r},s)}};var ise=.5,ose=.43,lse=.45,Gn=class{constructor(t,n,a=new De(0,0)){let{width:r,height:s}=n;this._imgDims=new cn(r,s),this._shift=a,this._positions=t.map(i=>i.mul(new De(r,s)).add(a))}get shift(){return new De(this._shift.x,this._shift.y)}get imageWidth(){return this._imgDims.width}get imageHeight(){return this._imgDims.height}get positions(){return this._positions}get relativePositions(){return this._positions.map(t=>t.sub(this._shift).div(new De(this.imageWidth,this.imageHeight)))}forSize(t,n){return new this.constructor(this.relativePositions,{width:t,height:n})}shiftBy(t,n){return new this.constructor(this.relativePositions,this._imgDims,new De(t,n))}shiftByPoint(t){return this.shiftBy(t.x,t.y)}align(t,n={}){if(t){let s=t instanceof yt?t.box.floor():new ot(t);return this.shiftBy(s.x,s.y).align(null,n)}let{useDlibAlignment:a,minBoxPadding:r}={useDlibAlignment:!1,minBoxPadding:.2,...n};return a?this.alignDlib():this.alignMinBbox(r)}alignDlib(){let t=this.getRefPointsForAlignment(),[n,a,r]=t,s=p=>r.sub(p).magnitude(),i=(s(n)+s(a))/2,o=Math.floor(i/lse),l=ao(t),c=Math.floor(Math.max(0,l.x-ise*o)),u=Math.floor(Math.max(0,l.y-ose*o));return new so(c,u,Math.min(o,this.imageWidth+c),Math.min(o,this.imageHeight+u))}alignMinBbox(t){let n=If(this.positions);return n.pad(n.width*t,n.height*t)}getRefPointsForAlignment(){throw new Error("getRefPointsForAlignment not implemented by base class")}};var pw=class extends Gn{getRefPointsForAlignment(){let t=this.positions;return[t[0],t[1],ao([t[3],t[4]])]}};var io=class extends Gn{getJawOutline(){return this.positions.slice(0,17)}getLeftEyeBrow(){return this.positions.slice(17,22)}getRightEyeBrow(){return this.positions.slice(22,27)}getNose(){return this.positions.slice(27,36)}getLeftEye(){return this.positions.slice(36,42)}getRightEye(){return this.positions.slice(42,48)}getMouth(){return this.positions.slice(48,68)}getRefPointsForAlignment(){return[this.getLeftEye(),this.getRightEye(),this.getMouth()].map(ao)}};var Au=class{constructor(t,n){this._label=t,this._distance=n}get label(){return this._label}get distance(){return this._distance}toString(t=!0){return`${this.label}${t?` (${no(this.distance)})`:""}`}};var $u=class extends ot{static assertIsValidLabeledBox(t,n){if(ot.assertIsValidBox(t,n),!za(t.label))throw new Error(`${n} - expected property label (${t.label}) to be a number`)}constructor(t,n){super(t);this._label=n}get label(){return this._label}};var lr=class{constructor(t,n){if(typeof t!="string")throw new Error("LabeledFaceDescriptors - constructor expected label to be a string");if(!Array.isArray(n)||n.some(a=>!(a instanceof Float32Array)))throw new Error("LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array");this._label=t,this._descriptors=n}get label(){return this._label}get descriptors(){return this._descriptors}toJSON(){return{label:this.label,descriptors:this.descriptors.map(t=>Array.from(t))}}static fromJSON(t){let n=t.descriptors.map(a=>new Float32Array(a));return new lr(t.label,n)}};var dw=class extends $u{static assertIsValidPredictedBox(t,n){if($u.assertIsValidLabeledBox(t,n),!_u(t.score)||!_u(t.classScore))throw new Error(`${n} - expected properties score (${t.score}) and (${t.classScore}) to be a number between [0, 1]`)}constructor(t,n,a,r){super(t,n);this._score=a,this._classScore=r}get score(){return this._score}get classScore(){return this._classScore}};function Ba(e){return e.detection instanceof yt}function xs(e,t){return{...e,...{detection:t}}}function hw(){let e=window.fetch;if(!e)throw new Error("fetch - missing fetch implementation for browser environment");let t=()=>{throw new Error("readFile - filesystem not available for browser environment")};return{Canvas:HTMLCanvasElement,CanvasRenderingContext2D,Image:HTMLImageElement,ImageData,Video:HTMLVideoElement,createCanvasElement:()=>document.createElement("canvas"),createImageElement:()=>document.createElement("img"),fetch:e,readFile:t}}function Sf(e){let t="";if(!e)try{e=require("fs")}catch(a){t=a.toString()}return{readFile:e?a=>new Promise((r,s)=>{e.readFile(a,(i,o)=>i?s(i):r(o))}):()=>{throw new Error(`readFile - failed to require fs in nodejs environment with error: ${t}`)}}}function mw(){let e=global.Canvas||global.HTMLCanvasElement,t=global.Image||global.HTMLImageElement,n=()=>{if(e)return new e;throw new Error("createCanvasElement - missing Canvas implementation for nodejs environment")},a=()=>{if(t)return new t;throw new Error("createImageElement - missing Image implementation for nodejs environment")},r=global.fetch,s=Sf();return{Canvas:e||class{},CanvasRenderingContext2D:global.CanvasRenderingContext2D||class{},Image:t||class{},ImageData:global.ImageData||class{},Video:global.HTMLVideoElement||class{},createCanvasElement:n,createImageElement:a,fetch:r,...s}}function fw(){return typeof window=="object"&&typeof document!="undefined"&&typeof HTMLImageElement!="undefined"&&typeof HTMLCanvasElement!="undefined"&&typeof HTMLVideoElement!="undefined"&&typeof ImageData!="undefined"&&typeof CanvasRenderingContext2D!="undefined"}var gw=V_(pC()),tn;function pse(){if(!tn)throw new Error("getEnv - environment is not defined, check isNodejs() and isBrowser()");return tn}function yw(e){tn=e}function bw(){return fw()?yw(hw()):gw.isNodejs()?yw(mw()):null}function dse(e){if(tn||bw(),!tn)throw new Error("monkeyPatch - environment is not defined, check isNodejs() and isBrowser()");let{Canvas:t=tn.Canvas,Image:n=tn.Image}=e;tn.Canvas=t,tn.Image=n,tn.createCanvasElement=e.createCanvasElement||(()=>new t),tn.createImageElement=e.createImageElement||(()=>new n),tn.ImageData=e.ImageData||tn.ImageData,tn.Video=e.Video||tn.Video,tn.fetch=e.fetch||tn.fetch,tn.readFile=e.readFile||tn.readFile}var st={getEnv:pse,setEnv:yw,initialize:bw,createBrowserEnv:hw,createFileSystem:Sf,createNodejsEnv:mw,monkeyPatch:dse,isBrowser:fw,isNodejs:gw.isNodejs};bw();function vs(e){return!st.isNodejs()&&typeof e=="string"?document.getElementById(e):e}function xn(e){let{Canvas:t,CanvasRenderingContext2D:n}=st.getEnv();if(e instanceof n)return e;let a=vs(e);if(!(a instanceof t))throw new Error("resolveContext2d - expected canvas to be of instance of Canvas");let r=a.getContext("2d");if(!r)throw new Error("resolveContext2d - canvas 2d context is null");return r}var ur;(function(e){e.TOP_LEFT="TOP_LEFT",e.TOP_RIGHT="TOP_RIGHT",e.BOTTOM_LEFT="BOTTOM_LEFT",e.BOTTOM_RIGHT="BOTTOM_RIGHT"})(ur||(ur={}));var Rp=class{constructor(t={}){let{anchorPosition:n,backgroundColor:a,fontColor:r,fontSize:s,fontStyle:i,padding:o}=t;this.anchorPosition=n||ur.TOP_LEFT,this.backgroundColor=a||"rgba(0, 0, 0, 0.5)",this.fontColor=r||"rgba(255, 255, 255, 1)",this.fontSize=s||14,this.fontStyle=i||"Georgia",this.padding=o||4}},ws=class{constructor(t,n,a={}){this.text=typeof t=="string"?[t]:t instanceof ws?t.text:t,this.anchor=n,this.options=new Rp(a)}measureWidth(t){let{padding:n}=this.options;return this.text.map(a=>t.measureText(a).width).reduce((a,r)=>a{let m=l+p.x,f=l+p.y+(h+1)*i;a.fillText(d,m,f)})}};var xw=class{constructor(t={}){let{boxColor:n,lineWidth:a,label:r,drawLabelOptions:s}=t;this.boxColor=n||"rgba(0, 0, 255, 1)",this.lineWidth=a||2,this.label=r;let i={anchorPosition:ur.BOTTOM_LEFT,backgroundColor:this.boxColor};this.drawLabelOptions=new Rp({...i,...s})}},Cf=class{constructor(t,n={}){this.box=new ot(t),this.options=new xw(n)}draw(t){let n=xn(t),{boxColor:a,lineWidth:r}=this.options,{x:s,y:i,width:o,height:l}=this.box;n.strokeStyle=a,n.lineWidth=r,n.strokeRect(s,i,o,l);let{label:c}=this.options;c&&new ws([c],{x:s-r/2,y:i},this.options.drawLabelOptions).draw(t)}};function hse(e,t){(Array.isArray(t)?t:[t]).forEach(a=>{let r=a instanceof yt?a.score:Ba(a)?a.detection.score:void 0,s=a instanceof yt?a.box:Ba(a)?a.detection.box:new ot(a),i=r?`${no(r)}`:void 0;new Cf(s,{label:i}).draw(e)})}function Du(e){let{Image:t,Video:n}=st.getEnv();return e instanceof t&&e.complete||e instanceof n&&e.readyState>=3}function Ef(e){return new Promise((t,n)=>{if(e instanceof st.getEnv().Canvas||Du(e))return t(null);function a(s){!s.currentTarget||(s.currentTarget.removeEventListener("load",r),s.currentTarget.removeEventListener("error",a),n(s))}function r(s){!s.currentTarget||(s.currentTarget.removeEventListener("load",r),s.currentTarget.removeEventListener("error",a),t(s))}e.addEventListener("load",r),e.addEventListener("error",a)})}function _f(e){return new Promise((t,n)=>{e instanceof Blob||n(new Error("bufferToImage - expected buf to be of type: Blob"));let a=new FileReader;a.onload=()=>{typeof a.result!="string"&&n(new Error("bufferToImage - expected reader.result to be a string, in onload"));let r=st.getEnv().createImageElement();r.onload=()=>t(r),r.onerror=n,r.src=a.result},a.onerror=n,a.readAsDataURL(e)})}function ks(e){let{Image:t,Video:n}=st.getEnv();return e instanceof t?new cn(e.naturalWidth,e.naturalHeight):e instanceof n?new cn(e.videoWidth,e.videoHeight):new cn(e.width,e.height)}function oo({width:e,height:t}){let{createCanvasElement:n}=st.getEnv(),a=n();return a.width=e,a.height=t,a}function Mu(e,t){let{ImageData:n}=st.getEnv();if(!(e instanceof n)&&!Du(e))throw new Error("createCanvasFromMedia - media has not finished loading yet");let{width:a,height:r}=t||ks(e),s=oo({width:a,height:r});return e instanceof n?xn(s).putImageData(e,0,0):xn(s).drawImage(e,0,0,a,r),s}async function Ff(e,t){let n=t||st.getEnv().createCanvasElement(),[a,r,s]=e.shape.slice(sa(e)?1:0),i=D(()=>e.as3D(a,r,s).toInt());return await Ai.toPixels(i,n),i.dispose(),n}function Pp(e){let{Image:t,Canvas:n,Video:a}=st.getEnv();return e instanceof t||e instanceof n||e instanceof a}function Af(e,t,n=!1){let{Image:a,Canvas:r}=st.getEnv();if(!(e instanceof a||e instanceof r))throw new Error("imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement");let s=ks(e),i=t/Math.max(s.height,s.width),o=i*s.width,l=i*s.height,c=oo({width:t,height:t}),u=e instanceof r?e:Mu(e),p=Math.abs(o-l)/2,d=n&&o{if(Mr(a)){this._imageTensors[r]=a,this._inputDimensions[r]=a.shape;return}if(sa(a)){let i=a.shape[0];if(i!==1)throw new Error(`NetInput - tf.Tensor4D with batchSize ${i} passed, but not supported in input array`);this._imageTensors[r]=a,this._inputDimensions[r]=a.shape.slice(1);return}let s=a instanceof st.getEnv().Canvas?a:Mu(a);this._canvases[r]=s,this._inputDimensions[r]=[s.height,s.width,3]})}get imageTensors(){return this._imageTensors}get canvases(){return this._canvases}get isBatchInput(){return this.batchSize>1||this._treatAsBatchInput}get batchSize(){return this._batchSize}get inputDimensions(){return this._inputDimensions}get inputSize(){return this._inputSize}get reshapedInputDimensions(){return or(this.batchSize,0,1).map((t,n)=>this.getReshapedInputDimensions(n))}getInput(t){return this.canvases[t]||this.imageTensors[t]}getInputDimensions(t){return this._inputDimensions[t]}getInputHeight(t){return this._inputDimensions[t][0]}getInputWidth(t){return this._inputDimensions[t][1]}getReshapedInputDimensions(t){if(typeof this.inputSize!="number")throw new Error("getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet");let n=this.getInputWidth(t),a=this.getInputHeight(t);return cw({width:n,height:a},this.inputSize)}toBatchTensor(t,n=!0){return this._inputSize=t,D(()=>{let a=or(this.batchSize,0,1).map(s=>{let i=this.getInput(s);if(i instanceof z){let o=sa(i)?i:i.expandDims();return o=Tf(o,n),(o.shape[1]!==t||o.shape[2]!==t)&&(o=Za.resizeBilinear(o,[t,t])),o.as3D(t,t,3)}if(i instanceof st.getEnv().Canvas)return Ai.fromPixels(Af(i,t,n));throw new Error(`toBatchTensor - at batchIdx ${s}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${i}`)});return Mt(a.map(s=>pe(s,"float32"))).as4D(this.batchSize,t,t,3)})}};async function ft(e){if(e instanceof cr)return e;let t=Array.isArray(e)?e:[e];if(!t.length)throw new Error("toNetInput - empty array passed as input");let n=r=>Array.isArray(e)?` at input index ${r}:`:"",a=t.map(vs);return a.forEach((r,s)=>{if(!Pp(r)&&!Mr(r)&&!sa(r))throw typeof t[s]=="string"?new Error(`toNetInput -${n(s)} string passed, but could not resolve HTMLElement for element id ${t[s]}`):new Error(`toNetInput -${n(s)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`);if(sa(r)){let i=r.shape[0];if(i!==1)throw new Error(`toNetInput -${n(s)} tf.Tensor4D with batchSize ${i} passed, but not supported in input array`)}}),await Promise.all(a.map(r=>Pp(r)&&Ef(r))),new cr(a,Array.isArray(e))}async function lo(e,t){let{Canvas:n}=st.getEnv(),a=e;if(!(e instanceof n)){let i=await ft(e);if(i.batchSize>1)throw new Error("extractFaces - batchSize > 1 not supported");let o=i.getInput(0);a=o instanceof n?o:await Ff(o)}let r=xn(a);return t.map(i=>i instanceof yt?i.forSize(a.width,a.height).box.floor():i).map(i=>i.clipAtImageBorders(a.width,a.height)).map(({x:i,y:o,width:l,height:c})=>{let u=oo({width:l,height:c});return xn(u).putImageData(r.getImageData(i,o,l,c),0,0),u})}async function uo(e,t){if(!Mr(e)&&!sa(e))throw new Error("extractFaceTensors - expected image tensor to be 3D or 4D");if(sa(e)&&e.shape[0]>1)throw new Error("extractFaceTensors - batchSize > 1 not supported");return D(()=>{let[n,a,r]=e.shape.slice(sa(e)?1:0);return t.map(o=>o instanceof yt?o.forSize(a,n).box:o).map(o=>o.clipAtImageBorders(a,n)).map(({x:o,y:l,width:c,height:u})=>eu(e.as3D(n,a,r),[l,o,0],[u,c,r]))})}async function Is(e,t){let{fetch:n}=st.getEnv(),a=await n(e,t);if(!(a.status<400))throw new Error(`failed to fetch: (${a.status}) ${a.statusText}, from url: ${a.url}`);return a}async function dC(e){let t=await Is(e),n=await t.blob();if(!n.type.startsWith("image/"))throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${n.type}, for url: ${t.url}`);return _f(n)}async function $f(e){return(await Is(e)).json()}async function hC(e){return new Float32Array(await(await Is(e)).arrayBuffer())}function Df(e,t){let n=`${t}-weights_manifest.json`;if(!e)return{modelBaseUri:"",manifestUri:n};if(e==="/")return{modelBaseUri:"/",manifestUri:`/${n}`};let a=e.startsWith("http://")?"http://":e.startsWith("https://")?"https://":"";e=e.replace(a,"");let r=e.split("/").filter(o=>o),s=e.endsWith(".json")?r[r.length-1]:n,i=a+(e.endsWith(".json")?r.slice(0,r.length-1):r).join("/");return i=e.startsWith("/")?`/${i}`:i,{modelBaseUri:i,manifestUri:i==="/"?`/${s}`:`${i}/${s}`}}async function Mf(e,t){let{manifestUri:n,modelBaseUri:a}=Df(e,t),r=await $f(n);return Kt.loadWeights(r,a)}function mC(e,t,n=!1){let{width:a,height:r}=n?ks(t):t;return e.width=a,e.height=r,{width:a,height:r}}var nn=class{constructor(){this._params=void 0;this._paramMappings=[]}get params(){return this._params}get paramMappings(){return this._paramMappings}get isLoaded(){return!!this.params}getParamFromPath(t){let{obj:n,objProp:a}=this.traversePropertyPath(t);return n[a]}reassignParamFromPath(t,n){let{obj:a,objProp:r}=this.traversePropertyPath(t);a[r].dispose(),a[r]=n}getParamList(){return this._paramMappings.map(({paramPath:t})=>({path:t,tensor:this.getParamFromPath(t)}))}getTrainableParams(){return this.getParamList().filter(t=>t.tensor instanceof Yr)}getFrozenParams(){return this.getParamList().filter(t=>!(t.tensor instanceof Yr))}variable(){this.getFrozenParams().forEach(({path:t,tensor:n})=>{this.reassignParamFromPath(t,n.variable())})}freeze(){this.getTrainableParams().forEach(({path:t,tensor:n})=>{let a=Yn(n.dataSync());n.dispose(),this.reassignParamFromPath(t,a)})}dispose(t=!0){this.getParamList().forEach(n=>{if(t&&n.tensor.isDisposed)throw new Error(`param tensor has already been disposed for path ${n.path}`);n.tensor.dispose()}),this._params=void 0}serializeParams(){return new Float32Array(this.getParamList().map(({tensor:t})=>Array.from(t.dataSync())).reduce((t,n)=>t.concat(n)))}async load(t){if(t instanceof Float32Array){this.extractWeights(t);return}await this.loadFromUri(t)}async loadFromUri(t){if(t&&typeof t!="string")throw new Error(`${this._name}.loadFromUri - expected model uri`);let n=await Mf(t,this.getDefaultModelName());this.loadFromWeightMap(n)}async loadFromDisk(t){if(t&&typeof t!="string")throw new Error(`${this._name}.loadFromDisk - expected model file path`);let{readFile:n}=st.getEnv(),{manifestUri:a,modelBaseUri:r}=Df(t,this.getDefaultModelName()),s=c=>Promise.all(c.map(u=>n(u).then(p=>p.buffer))),i=Kt.weightsLoaderFactory(s),o=JSON.parse((await n(a)).toString()),l=await i(o,r);this.loadFromWeightMap(l)}loadFromWeightMap(t){let{paramMappings:n,params:a}=this.extractParamsFromWeigthMap(t);this._paramMappings=n,this._params=a}extractWeights(t){let{paramMappings:n,params:a}=this.extractParams(t);this._paramMappings=n,this._params=a}traversePropertyPath(t){if(!this.params)throw new Error("traversePropertyPath - model has no loaded params");let n=t.split("/").reduce((s,i)=>{if(!s.nextObj.hasOwnProperty(i))throw new Error(`traversePropertyPath - object does not have property ${i}, for path ${t}`);return{obj:s.nextObj,objProp:i,nextObj:s.nextObj[i]}},{nextObj:this.params}),{obj:a,objProp:r}=n;if(!a||!r||!(a[r]instanceof z))throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${t}`);return{obj:a,objProp:r}}};function _n(e,t,n){return D(()=>{let a=Oi(e,t.depthwise_filter,t.pointwise_filter,n,"same");return a=Z(a,t.bias),a})}function Rf(e,t,n=!1){return D(()=>{let a=Xe(n?Z($t(e,t.conv0.filters,[2,2],"same"),t.conv0.bias):_n(e,t.conv0,[2,2])),r=_n(a,t.conv1,[1,1]),s=Xe(Z(a,r)),i=_n(s,t.conv2,[1,1]);return Xe(Z(a,Z(r,i)))})}function Op(e,t,n=!1,a=!0){return D(()=>{let r=Xe(n?Z($t(e,t.conv0.filters,a?[2,2]:[1,1],"same"),t.conv0.bias):_n(e,t.conv0,a?[2,2]:[1,1])),s=_n(r,t.conv1,[1,1]),i=Xe(Z(r,s)),o=_n(i,t.conv2,[1,1]),l=Xe(Z(r,Z(s,o))),c=_n(l,t.conv3,[1,1]);return Xe(Z(r,Z(s,Z(o,c))))})}function co(e,t,n="same",a=!1){return D(()=>{let r=Z($t(e,t.filters,[1,1],n),t.bias);return a?Xe(r):r})}function vn(e,t){Object.keys(e).forEach(n=>{t.some(a=>a.originalPath===n)||e[n].dispose()})}function Ru(e,t){return(n,a,r,s)=>{let i=_a(e(n*a*r*r),[r,r,n,a]),o=tt(e(a));return t.push({paramPath:`${s}/filters`},{paramPath:`${s}/bias`}),{filters:i,bias:o}}}function Pf(e,t){return(n,a,r)=>{let s=Ea(e(n*a),[n,a]),i=tt(e(a));return t.push({paramPath:`${r}/weights`},{paramPath:`${r}/bias`}),{weights:s,bias:i}}}var Of=class{constructor(t,n,a){this.depthwise_filter=t;this.pointwise_filter=n;this.bias=a}};function Pu(e,t){return(n,a,r)=>{let s=_a(e(3*3*n),[3,3,n,1]),i=_a(e(n*a),[1,1,n,a]),o=tt(e(a));return t.push({paramPath:`${r}/depthwise_filter`},{paramPath:`${r}/pointwise_filter`},{paramPath:`${r}/bias`}),new Of(s,i,o)}}function Ou(e){return t=>{let n=e(`${t}/depthwise_filter`,4),a=e(`${t}/pointwise_filter`,4),r=e(`${t}/bias`,1);return new Of(n,a,r)}}function Hn(e,t){return(n,a,r)=>{let s=e[n];if(!to(s,a))throw new Error(`expected weightMap[${n}] to be a Tensor${a}D, instead have ${s}`);return t.push({originalPath:n,paramPath:r||n}),s}}function wn(e){let t=e;function n(r){let s=t.slice(0,r);return t=t.slice(r),s}function a(){return t}return{extractWeights:n,getRemainingWeights:a}}function Lf(e,t){let n=Ru(e,t),a=Pu(e,t);function r(i,o,l,c=!1){let u=c?n(i,o,3,`${l}/conv0`):a(i,o,`${l}/conv0`),p=a(o,o,`${l}/conv1`),d=a(o,o,`${l}/conv2`);return{conv0:u,conv1:p,conv2:d}}function s(i,o,l,c=!1){let{conv0:u,conv1:p,conv2:d}=r(i,o,l,c),h=a(o,o,`${l}/conv3`);return{conv0:u,conv1:p,conv2:d,conv3:h}}return{extractDenseBlock3Params:r,extractDenseBlock4Params:s}}function fC(e){let t=[],{extractWeights:n,getRemainingWeights:a}=wn(e),{extractDenseBlock4Params:r}=Lf(n,t),s=r(3,32,"dense0",!0),i=r(32,64,"dense1"),o=r(64,128,"dense2"),l=r(128,256,"dense3");if(a().length!==0)throw new Error(`weights remaing after extract: ${a().length}`);return{paramMappings:t,params:{dense0:s,dense1:i,dense2:o,dense3:l}}}function zf(e){return t=>{let n=e(`${t}/filters`,4),a=e(`${t}/bias`,1);return{filters:n,bias:a}}}function Bf(e,t){let n=Hn(e,t),a=zf(n),r=Ou(n);function s(o,l=!1){let c=l?a(`${o}/conv0`):r(`${o}/conv0`),u=r(`${o}/conv1`),p=r(`${o}/conv2`);return{conv0:c,conv1:u,conv2:p}}function i(o,l=!1){let c=l?a(`${o}/conv0`):r(`${o}/conv0`),u=r(`${o}/conv1`),p=r(`${o}/conv2`),d=r(`${o}/conv3`);return{conv0:c,conv1:u,conv2:p,conv3:d}}return{extractDenseBlock3Params:s,extractDenseBlock4Params:i}}function gC(e){let t=[],{extractDenseBlock4Params:n}=Bf(e,t),a={dense0:n("dense0",!0),dense1:n("dense1"),dense2:n("dense2"),dense3:n("dense3")};return vn(e,t),{params:a,paramMappings:t}}var Lp=class extends nn{constructor(){super("FaceFeatureExtractor")}forwardInput(t){let{params:n}=this;if(!n)throw new Error("FaceFeatureExtractor - load model before inference");return D(()=>{let a=pe(t.toBatchTensor(112,!0),"float32"),s=va(a,[122.782,117.001,104.298]).div(de(255)),i=Op(s,n.dense0,!0);return i=Op(i,n.dense1),i=Op(i,n.dense2),i=Op(i,n.dense3),i=Zn(i,[7,7],[2,2],"valid"),i})}async forward(t){return this.forwardInput(await ft(t))}getDefaultModelName(){return"face_feature_extractor_model"}extractParamsFromWeigthMap(t){return gC(t)}extractParams(t){return fC(t)}};function zp(e,t){return D(()=>Z(ze(e,t.weights),t.bias))}function yC(e,t,n){let a=[],{extractWeights:r,getRemainingWeights:s}=wn(e),o=Pf(r,a)(t,n,"fc");if(s().length!==0)throw new Error(`weights remaing after extract: ${s().length}`);return{paramMappings:a,params:{fc:o}}}function bC(e){let t=[],n=Hn(e,t);function a(s){let i=n(`${s}/weights`,2),o=n(`${s}/bias`,1);return{weights:i,bias:o}}let r={fc:a("fc")};return vn(e,t),{params:r,paramMappings:t}}function Wf(e){let t={},n={};return Object.keys(e).forEach(a=>{let r=a.startsWith("fc")?n:t;r[a]=e[a]}),{featureExtractorMap:t,classifierMap:n}}var Bp=class extends nn{constructor(t,n){super(t);this._faceFeatureExtractor=n}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(t){let{params:n}=this;if(!n)throw new Error(`${this._name} - load model before inference`);return D(()=>{let a=t instanceof cr?this.faceFeatureExtractor.forwardInput(t):t;return zp(a.as2D(a.shape[0],-1),n.fc)})}dispose(t=!0){this.faceFeatureExtractor.dispose(t),super.dispose(t)}loadClassifierParams(t){let{params:n,paramMappings:a}=this.extractClassifierParams(t);this._params=n,this._paramMappings=a}extractClassifierParams(t){return yC(t,this.getClassifierChannelsIn(),this.getClassifierChannelsOut())}extractParamsFromWeigthMap(t){let{featureExtractorMap:n,classifierMap:a}=Wf(t);return this.faceFeatureExtractor.loadFromWeightMap(n),bC(a)}extractParams(t){let n=this.getClassifierChannelsIn(),a=this.getClassifierChannelsOut(),r=a*n+a,s=t.slice(0,t.length-r),i=t.slice(t.length-r);return this.faceFeatureExtractor.extractWeights(s),this.extractClassifierParams(i)}};var Vf=["neutral","happy","sad","angry","fearful","disgusted","surprised"],Pr=class{constructor(t){if(t.length!==7)throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${t.length}`);Vf.forEach((n,a)=>{this[n]=t[a]})}asSortedArray(){return Vf.map(t=>({expression:t,probability:this[t]})).sort((t,n)=>n.probability-t.probability)}};var Wp=class extends Bp{constructor(t=new Lp){super("FaceExpressionNet",t)}forwardInput(t){return D(()=>Ca(this.runNet(t)))}async forward(t){return this.forwardInput(await ft(t))}async predictExpressions(t){let n=await ft(t),a=await this.forwardInput(n),r=await Promise.all(pt(a).map(async i=>{let o=await i.data();return i.dispose(),o}));a.dispose();let s=r.map(i=>new Pr(i));return n.isBatchInput?s:s[0]}getDefaultModelName(){return"face_expression_model"}getClassifierChannelsIn(){return 256}getClassifierChannelsOut(){return 7}};function Uf(e){return e.expressions instanceof Pr}function Vp(e,t){return{...e,...{expressions:t}}}function mse(e,t,n=.1,a){(Array.isArray(t)?t:[t]).forEach(s=>{let i=s instanceof Pr?s:Uf(s)?s.expressions:void 0;if(!i)throw new Error("drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof");let l=i.asSortedArray().filter(p=>p.probability>n),c=Ba(s)?s.detection.box.bottomLeft:a||new De(0,0);new ws(l.map(p=>`${p.expression} (${no(p.probability)})`),c).draw(e)})}function Ns(e){return Ba(e)&&e.landmarks instanceof Gn&&e.unshiftedLandmarks instanceof Gn&&e.alignedRect instanceof yt}function po(e,t){let{box:n}=e.detection,a=t.shiftBy(n.x,n.y),r=a.align(),{imageDims:s}=e.detection,i=new yt(e.detection.score,r.rescale(s.reverse()),s);return{...e,...{landmarks:a,unshiftedLandmarks:t,alignedRect:i}}}var vw=class{constructor(t={}){let{drawLines:n=!0,drawPoints:a=!0,lineWidth:r,lineColor:s,pointSize:i,pointColor:o}=t;this.drawLines=n,this.drawPoints=a,this.lineWidth=r||1,this.pointSize=i||2,this.lineColor=s||"rgba(0, 255, 255, 1)",this.pointColor=o||"rgba(255, 0, 255, 1)"}},ww=class{constructor(t,n={}){this.faceLandmarks=t,this.options=new vw(n)}draw(t){let n=xn(t),{drawLines:a,drawPoints:r,lineWidth:s,lineColor:i,pointSize:o,pointColor:l}=this.options;if(a&&this.faceLandmarks instanceof io&&(n.strokeStyle=i,n.lineWidth=s,Dr(n,this.faceLandmarks.getJawOutline()),Dr(n,this.faceLandmarks.getLeftEyeBrow()),Dr(n,this.faceLandmarks.getRightEyeBrow()),Dr(n,this.faceLandmarks.getNose()),Dr(n,this.faceLandmarks.getLeftEye(),!0),Dr(n,this.faceLandmarks.getRightEye(),!0),Dr(n,this.faceLandmarks.getMouth(),!0)),r){n.strokeStyle=l,n.fillStyle=l;let c=u=>{n.beginPath(),n.arc(u.x,u.y,o,0,2*Math.PI),n.fill()};this.faceLandmarks.positions.forEach(c)}}};function fse(e,t){(Array.isArray(t)?t:[t]).forEach(a=>{let r=a instanceof Gn?a:Ns(a)?a.landmarks:void 0;if(!r)throw new Error("drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof");new ww(r).draw(e)})}var xC="0.11.2";function gse(e,t){let n=Ru(e,t),a=Pu(e,t);function r(i,o,l){let c=a(i,o,`${l}/separable_conv0`),u=a(o,o,`${l}/separable_conv1`),p=n(i,o,1,`${l}/expansion_conv`);return{separable_conv0:c,separable_conv1:u,expansion_conv:p}}function s(i,o){let l=a(i,i,`${o}/separable_conv0`),c=a(i,i,`${o}/separable_conv1`),u=a(i,i,`${o}/separable_conv2`);return{separable_conv0:l,separable_conv1:c,separable_conv2:u}}return{extractConvParams:n,extractSeparableConvParams:a,extractReductionBlockParams:r,extractMainBlockParams:s}}function vC(e,t){let n=[],{extractWeights:a,getRemainingWeights:r}=wn(e),{extractConvParams:s,extractSeparableConvParams:i,extractReductionBlockParams:o,extractMainBlockParams:l}=gse(a,n),c=s(3,32,3,"entry_flow/conv_in"),u=o(32,64,"entry_flow/reduction_block_0"),p=o(64,128,"entry_flow/reduction_block_1"),d={conv_in:c,reduction_block_0:u,reduction_block_1:p},h={};or(t,0,1).forEach(y=>{h[`main_block_${y}`]=l(128,`middle_flow/main_block_${y}`)});let m=o(128,256,"exit_flow/reduction_block"),f=i(256,512,"exit_flow/separable_conv"),g={reduction_block:m,separable_conv:f};if(r().length!==0)throw new Error(`weights remaing after extract: ${r().length}`);return{paramMappings:n,params:{entry_flow:d,middle_flow:h,exit_flow:g}}}function yse(e,t){let n=Hn(e,t),a=zf(n),r=Ou(n);function s(o){let l=r(`${o}/separable_conv0`),c=r(`${o}/separable_conv1`),u=a(`${o}/expansion_conv`);return{separable_conv0:l,separable_conv1:c,expansion_conv:u}}function i(o){let l=r(`${o}/separable_conv0`),c=r(`${o}/separable_conv1`),u=r(`${o}/separable_conv2`);return{separable_conv0:l,separable_conv1:c,separable_conv2:u}}return{extractConvParams:a,extractSeparableConvParams:r,extractReductionBlockParams:s,extractMainBlockParams:i}}function wC(e,t){let n=[],{extractConvParams:a,extractSeparableConvParams:r,extractReductionBlockParams:s,extractMainBlockParams:i}=yse(e,n),o=a("entry_flow/conv_in"),l=s("entry_flow/reduction_block_0"),c=s("entry_flow/reduction_block_1"),u={conv_in:o,reduction_block_0:l,reduction_block_1:c},p={};or(t,0,1).forEach(f=>{p[`main_block_${f}`]=i(`middle_flow/main_block_${f}`)});let d=s("exit_flow/reduction_block"),h=r("exit_flow/separable_conv"),m={reduction_block:d,separable_conv:h};return vn(e,n),{params:{entry_flow:u,middle_flow:p,exit_flow:m},paramMappings:n}}function kC(e,t,n){return Z($t(e,t.filters,n,"same"),t.bias)}function kw(e,t,n=!0){let a=n?Xe(e):e;return a=_n(a,t.separable_conv0,[1,1]),a=_n(Xe(a),t.separable_conv1,[1,1]),a=Dt(a,[3,3],[2,2],"same"),a=Z(a,kC(e,t.expansion_conv,[2,2])),a}function bse(e,t){let n=_n(Xe(e),t.separable_conv0,[1,1]);return n=_n(Xe(n),t.separable_conv1,[1,1]),n=_n(Xe(n),t.separable_conv2,[1,1]),n=Z(n,e),n}var Iw=class extends nn{constructor(t){super("TinyXception");this._numMainBlocks=t}forwardInput(t){let{params:n}=this;if(!n)throw new Error("TinyXception - load model before inference");return D(()=>{let a=pe(t.toBatchTensor(112,!0),"float32"),s=va(a,[122.782,117.001,104.298]).div(de(256)),i=Xe(kC(s,n.entry_flow.conv_in,[2,2]));return i=kw(i,n.entry_flow.reduction_block_0,!1),i=kw(i,n.entry_flow.reduction_block_1),or(this._numMainBlocks,0,1).forEach(o=>{i=bse(i,n.middle_flow[`main_block_${o}`])}),i=kw(i,n.exit_flow.reduction_block),i=Xe(_n(i,n.exit_flow.separable_conv,[1,1])),i})}async forward(t){return this.forwardInput(await ft(t))}getDefaultModelName(){return"tiny_xception_model"}extractParamsFromWeigthMap(t){return wC(t,this._numMainBlocks)}extractParams(t){return vC(t,this._numMainBlocks)}};function IC(e){let t=[],{extractWeights:n,getRemainingWeights:a}=wn(e),r=Pf(n,t),s=r(512,1,"fc/age"),i=r(512,2,"fc/gender");if(a().length!==0)throw new Error(`weights remaing after extract: ${a().length}`);return{paramMappings:t,params:{fc:{age:s,gender:i}}}}function NC(e){let t=[],n=Hn(e,t);function a(s){let i=n(`${s}/weights`,2),o=n(`${s}/bias`,1);return{weights:i,bias:o}}let r={fc:{age:a("fc/age"),gender:a("fc/gender")}};return vn(e,t),{params:r,paramMappings:t}}var pr;(function(e){e.FEMALE="female",e.MALE="male"})(pr||(pr={}));var Up=class extends nn{constructor(t=new Iw(2)){super("AgeGenderNet");this._faceFeatureExtractor=t}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(t){let{params:n}=this;if(!n)throw new Error(`${this._name} - load model before inference`);return D(()=>{let a=t instanceof cr?this.faceFeatureExtractor.forwardInput(t):t,r=Zn(a,[7,7],[2,2],"valid").as2D(a.shape[0],-1),s=zp(r,n.fc.age).as1D(),i=zp(r,n.fc.gender);return{age:s,gender:i}})}forwardInput(t){return D(()=>{let{age:n,gender:a}=this.runNet(t);return{age:n,gender:Ca(a)}})}async forward(t){return this.forwardInput(await ft(t))}async predictAgeAndGender(t){let n=await ft(t),a=await this.forwardInput(n),r=pt(a.age),s=pt(a.gender),i=r.map((l,c)=>({ageTensor:l,genderTensor:s[c]})),o=await Promise.all(i.map(async({ageTensor:l,genderTensor:c})=>{let u=(await l.data())[0],p=(await c.data())[0],d=p>.5,h=d?pr.MALE:pr.FEMALE,m=d?p:1-p;return l.dispose(),c.dispose(),{age:u,gender:h,genderProbability:m}}));return a.age.dispose(),a.gender.dispose(),n.isBatchInput?o:o[0]}getDefaultModelName(){return"age_gender_model"}dispose(t=!0){this.faceFeatureExtractor.dispose(t),super.dispose(t)}loadClassifierParams(t){let{params:n,paramMappings:a}=this.extractClassifierParams(t);this._params=n,this._paramMappings=a}extractClassifierParams(t){return IC(t)}extractParamsFromWeigthMap(t){let{featureExtractorMap:n,classifierMap:a}=Wf(t);return this.faceFeatureExtractor.loadFromWeightMap(n),NC(a)}extractParams(t){let n=512*1+1+(512*2+2),a=t.slice(0,t.length-n),r=t.slice(t.length-n);return this.faceFeatureExtractor.extractWeights(a),this.extractClassifierParams(r)}};var Gp=class extends Bp{postProcess(t,n,a){let r=a.map(({width:i,height:o})=>{let l=n/Math.max(o,i);return{width:i*l,height:o*l}}),s=r.length;return D(()=>{let i=(p,d)=>Mt([Nn([68],p,"float32"),Nn([68],d,"float32")],1).as2D(1,136).as1D(),o=(p,d)=>{let{width:h,height:m}=r[p];return d(h,m)?Math.abs(h-m)/2:0},l=p=>o(p,(d,h)=>do(p,(d,h)=>hi(l(d),c(d))))).div(Mt(Array.from(Array(s),(p,d)=>i(r[d].width,r[d].height))))})}forwardInput(t){return D(()=>{let n=this.runNet(t);return this.postProcess(n,t.inputSize,t.inputDimensions.map(([a,r])=>({height:a,width:r})))})}async forward(t){return this.forwardInput(await ft(t))}async detectLandmarks(t){let n=await ft(t),a=D(()=>pt(this.forwardInput(n))),r=await Promise.all(a.map(async(s,i)=>{let o=Array.from(await s.data()),l=o.filter((u,p)=>vf(p)),c=o.filter((u,p)=>!vf(p));return new io(Array(68).fill(0).map((u,p)=>new De(l[p],c[p])),{height:n.getInputHeight(i),width:n.getInputWidth(i)})}));return a.forEach(s=>s.dispose()),n.isBatchInput?r:r[0]}getClassifierChannelsOut(){return 136}};var ho=class extends Gp{constructor(t=new Lp){super("FaceLandmark68Net",t)}getDefaultModelName(){return"face_landmark_68_model"}getClassifierChannelsIn(){return 256}};function TC(e){let t=[],{extractDenseBlock3Params:n}=Bf(e,t),a={dense0:n("dense0",!0),dense1:n("dense1"),dense2:n("dense2")};return vn(e,t),{params:a,paramMappings:t}}function SC(e){let t=[],{extractWeights:n,getRemainingWeights:a}=wn(e),{extractDenseBlock3Params:r}=Lf(n,t),s=r(3,32,"dense0",!0),i=r(32,64,"dense1"),o=r(64,128,"dense2");if(a().length!==0)throw new Error(`weights remaing after extract: ${a().length}`);return{paramMappings:t,params:{dense0:s,dense1:i,dense2:o}}}var Nw=class extends nn{constructor(){super("TinyFaceFeatureExtractor")}forwardInput(t){let{params:n}=this;if(!n)throw new Error("TinyFaceFeatureExtractor - load model before inference");return D(()=>{let a=pe(t.toBatchTensor(112,!0),"float32"),s=va(a,[122.782,117.001,104.298]).div(de(255)),i=Rf(s,n.dense0,!0);return i=Rf(i,n.dense1),i=Rf(i,n.dense2),i=Zn(i,[14,14],[2,2],"valid"),i})}async forward(t){return this.forwardInput(await ft(t))}getDefaultModelName(){return"face_feature_extractor_tiny_model"}extractParamsFromWeigthMap(t){return TC(t)}extractParams(t){return SC(t)}};var Hp=class extends Gp{constructor(t=new Nw){super("FaceLandmark68TinyNet",t)}getDefaultModelName(){return"face_landmark_68_tiny_model"}getClassifierChannelsIn(){return 128}};var Tw=class extends ho{};function CC(e,t){return Z(L(e,t.weights),t.biases)}function Sw(e,t,n,a,r="same"){let{filters:s,bias:i}=t.conv,o=$t(e,s,n,r);return o=Z(o,i),o=CC(o,t.scale),a?Xe(o):o}function EC(e,t){return Sw(e,t,[1,1],!0)}function Cw(e,t){return Sw(e,t,[1,1],!1)}function Hf(e,t){return Sw(e,t,[2,2],!0,"valid")}function xse(e,t){function n(o,l,c){let u=e(o),p=u.length/(l*c*c);if(uw(p))throw new Error(`depth has to be an integer: ${p}, weights.length: ${u.length}, numFilters: ${l}, filterSize: ${c}`);return D(()=>Ue(_a(u,[l,p,c,c]),[2,3,1,0]))}function a(o,l,c,u){let p=n(o,l,c),d=tt(e(l));return t.push({paramPath:`${u}/filters`},{paramPath:`${u}/bias`}),{filters:p,bias:d}}function r(o,l){let c=tt(e(o)),u=tt(e(o));return t.push({paramPath:`${l}/weights`},{paramPath:`${l}/biases`}),{weights:c,biases:u}}function s(o,l,c,u){let p=a(o,l,c,`${u}/conv`),d=r(l,`${u}/scale`);return{conv:p,scale:d}}function i(o,l,c,u,p=!1){let d=s((p?.5:1)*o,l,c,`${u}/conv1`),h=s(o,l,c,`${u}/conv2`);return{conv1:d,conv2:h}}return{extractConvLayerParams:s,extractResidualLayerParams:i}}function _C(e){let{extractWeights:t,getRemainingWeights:n}=wn(e),a=[],{extractConvLayerParams:r,extractResidualLayerParams:s}=xse(t,a),i=r(4704,32,7,"conv32_down"),o=s(9216,32,3,"conv32_1"),l=s(9216,32,3,"conv32_2"),c=s(9216,32,3,"conv32_3"),u=s(36864,64,3,"conv64_down",!0),p=s(36864,64,3,"conv64_1"),d=s(36864,64,3,"conv64_2"),h=s(36864,64,3,"conv64_3"),m=s(147456,128,3,"conv128_down",!0),f=s(147456,128,3,"conv128_1"),g=s(147456,128,3,"conv128_2"),y=s(589824,256,3,"conv256_down",!0),b=s(589824,256,3,"conv256_1"),x=s(589824,256,3,"conv256_2"),v=s(589824,256,3,"conv256_down_out"),N=D(()=>Ue(Ea(t(256*128),[128,256]),[1,0]));if(a.push({paramPath:"fc"}),n().length!==0)throw new Error(`weights remaing after extract: ${n().length}`);return{params:{conv32_down:i,conv32_1:o,conv32_2:l,conv32_3:c,conv64_down:u,conv64_1:p,conv64_2:d,conv64_3:h,conv128_down:m,conv128_1:f,conv128_2:g,conv256_down:y,conv256_1:b,conv256_2:x,conv256_down_out:v,fc:N},paramMappings:a}}function vse(e,t){let n=Hn(e,t);function a(i){let o=n(`${i}/scale/weights`,1),l=n(`${i}/scale/biases`,1);return{weights:o,biases:l}}function r(i){let o=n(`${i}/conv/filters`,4),l=n(`${i}/conv/bias`,1),c=a(i);return{conv:{filters:o,bias:l},scale:c}}function s(i){return{conv1:r(`${i}/conv1`),conv2:r(`${i}/conv2`)}}return{extractConvLayerParams:r,extractResidualLayerParams:s}}function FC(e){let t=[],{extractConvLayerParams:n,extractResidualLayerParams:a}=vse(e,t),r=n("conv32_down"),s=a("conv32_1"),i=a("conv32_2"),o=a("conv32_3"),l=a("conv64_down"),c=a("conv64_1"),u=a("conv64_2"),p=a("conv64_3"),d=a("conv128_down"),h=a("conv128_1"),m=a("conv128_2"),f=a("conv256_down"),g=a("conv256_1"),y=a("conv256_2"),b=a("conv256_down_out"),{fc:x}=e;if(t.push({originalPath:"fc",paramPath:"fc"}),!lw(x))throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${x}`);let v={conv32_down:r,conv32_1:s,conv32_2:i,conv32_3:o,conv64_down:l,conv64_1:c,conv64_2:u,conv64_3:p,conv128_down:d,conv128_1:h,conv128_2:m,conv256_down:f,conv256_1:g,conv256_2:y,conv256_down_out:b,fc:x};return vn(e,t),{params:v,paramMappings:t}}function Wa(e,t){let n=EC(e,t.conv1);return n=Cw(n,t.conv2),n=Z(n,e),n=Xe(n),n}function jp(e,t){let n=Hf(e,t.conv1);n=Cw(n,t.conv2);let a=Zn(e,2,2,"valid"),r=bt(a.shape),s=a.shape[3]!==n.shape[3];if(a.shape[1]!==n.shape[1]||a.shape[2]!==n.shape[2]){let o=[...n.shape];o[1]=1;let l=bt(o);n=Ze([n,l],1);let c=[...n.shape];c[2]=1;let u=bt(c);n=Ze([n,u],2)}return a=s?Ze([a,r],3):a,n=Z(a,n),n=Xe(n),n}var mo=class extends nn{constructor(){super("FaceRecognitionNet")}forwardInput(t){let{params:n}=this;if(!n)throw new Error("FaceRecognitionNet - load model before inference");return D(()=>{let a=pe(t.toBatchTensor(150,!0),"float32"),s=va(a,[122.782,117.001,104.298]).div(de(256)),i=Hf(s,n.conv32_down);i=Dt(i,3,2,"valid"),i=Wa(i,n.conv32_1),i=Wa(i,n.conv32_2),i=Wa(i,n.conv32_3),i=jp(i,n.conv64_down),i=Wa(i,n.conv64_1),i=Wa(i,n.conv64_2),i=Wa(i,n.conv64_3),i=jp(i,n.conv128_down),i=Wa(i,n.conv128_1),i=Wa(i,n.conv128_2),i=jp(i,n.conv256_down),i=Wa(i,n.conv256_1),i=Wa(i,n.conv256_2),i=jp(i,n.conv256_down_out);let o=i.mean([1,2]);return ze(o,n.fc)})}async forward(t){return this.forwardInput(await ft(t))}async computeFaceDescriptor(t){let n=await ft(t),a=D(()=>pt(this.forwardInput(n))),r=await Promise.all(a.map(s=>s.data()));return a.forEach(s=>s.dispose()),n.isBatchInput?r:r[0]}getDefaultModelName(){return"face_recognition_model"}extractParamsFromWeigthMap(t){return FC(t)}extractParams(t){return _C(t)}};function AC(e){let t=new mo;return t.extractWeights(e),t}function qp(e,t){return{...e,...{descriptor:t}}}function $C(e){return typeof e.age=="number"}function Kp(e,t){return{...e,...{age:t}}}function DC(e){return(e.gender===pr.MALE||e.gender===pr.FEMALE)&&_u(e.genderProbability)}function Xp(e,t,n){return{...e,...{gender:t,genderProbability:n}}}function wse(e,t){function n(l,c){let u=_a(e(3*3*l),[3,3,l,1]),p=tt(e(l)),d=tt(e(l)),h=tt(e(l)),m=tt(e(l));return t.push({paramPath:`${c}/filters`},{paramPath:`${c}/batch_norm_scale`},{paramPath:`${c}/batch_norm_offset`},{paramPath:`${c}/batch_norm_mean`},{paramPath:`${c}/batch_norm_variance`}),{filters:u,batch_norm_scale:p,batch_norm_offset:d,batch_norm_mean:h,batch_norm_variance:m}}function a(l,c,u,p,d){let h=_a(e(l*c*u*u),[u,u,l,c]),m=tt(e(c));return t.push({paramPath:`${p}/filters`},{paramPath:`${p}/${d?"batch_norm_offset":"bias"}`}),{filters:h,bias:m}}function r(l,c,u,p){let{filters:d,bias:h}=a(l,c,u,p,!0);return{filters:d,batch_norm_offset:h}}function s(l,c,u){let p=n(l,`${u}/depthwise_conv`),d=r(l,c,1,`${u}/pointwise_conv`);return{depthwise_conv:p,pointwise_conv:d}}function i(){let l=r(3,32,3,"mobilenetv1/conv_0"),c=s(32,64,"mobilenetv1/conv_1"),u=s(64,128,"mobilenetv1/conv_2"),p=s(128,128,"mobilenetv1/conv_3"),d=s(128,256,"mobilenetv1/conv_4"),h=s(256,256,"mobilenetv1/conv_5"),m=s(256,512,"mobilenetv1/conv_6"),f=s(512,512,"mobilenetv1/conv_7"),g=s(512,512,"mobilenetv1/conv_8"),y=s(512,512,"mobilenetv1/conv_9"),b=s(512,512,"mobilenetv1/conv_10"),x=s(512,512,"mobilenetv1/conv_11"),v=s(512,1024,"mobilenetv1/conv_12"),N=s(1024,1024,"mobilenetv1/conv_13");return{conv_0:l,conv_1:c,conv_2:u,conv_3:p,conv_4:d,conv_5:h,conv_6:m,conv_7:f,conv_8:g,conv_9:y,conv_10:b,conv_11:x,conv_12:v,conv_13:N}}function o(){let l=r(1024,256,1,"prediction_layer/conv_0"),c=r(256,512,3,"prediction_layer/conv_1"),u=r(512,128,1,"prediction_layer/conv_2"),p=r(128,256,3,"prediction_layer/conv_3"),d=r(256,128,1,"prediction_layer/conv_4"),h=r(128,256,3,"prediction_layer/conv_5"),m=r(256,64,1,"prediction_layer/conv_6"),f=r(64,128,3,"prediction_layer/conv_7"),g=a(512,12,1,"prediction_layer/box_predictor_0/box_encoding_predictor"),y=a(512,9,1,"prediction_layer/box_predictor_0/class_predictor"),b=a(1024,24,1,"prediction_layer/box_predictor_1/box_encoding_predictor"),x=a(1024,18,1,"prediction_layer/box_predictor_1/class_predictor"),v=a(512,24,1,"prediction_layer/box_predictor_2/box_encoding_predictor"),N=a(512,18,1,"prediction_layer/box_predictor_2/class_predictor"),T=a(256,24,1,"prediction_layer/box_predictor_3/box_encoding_predictor"),E=a(256,18,1,"prediction_layer/box_predictor_3/class_predictor"),A=a(256,24,1,"prediction_layer/box_predictor_4/box_encoding_predictor"),$=a(256,18,1,"prediction_layer/box_predictor_4/class_predictor"),O=a(128,24,1,"prediction_layer/box_predictor_5/box_encoding_predictor"),V=a(128,18,1,"prediction_layer/box_predictor_5/class_predictor");return{conv_0:l,conv_1:c,conv_2:u,conv_3:p,conv_4:d,conv_5:h,conv_6:m,conv_7:f,box_predictor_0:{box_encoding_predictor:g,class_predictor:y},box_predictor_1:{box_encoding_predictor:b,class_predictor:x},box_predictor_2:{box_encoding_predictor:v,class_predictor:N},box_predictor_3:{box_encoding_predictor:T,class_predictor:E},box_predictor_4:{box_encoding_predictor:A,class_predictor:$},box_predictor_5:{box_encoding_predictor:O,class_predictor:V}}}return{extractMobilenetV1Params:i,extractPredictionLayerParams:o}}function MC(e){let t=[],{extractWeights:n,getRemainingWeights:a}=wn(e),{extractMobilenetV1Params:r,extractPredictionLayerParams:s}=wse(n,t),i=r(),o=s(),c={extra_dim:Ih(n(5118*4),[1,5118,4])};if(t.push({paramPath:"output_layer/extra_dim"}),a().length!==0)throw new Error(`weights remaing after extract: ${a().length}`);return{params:{mobilenetv1:i,prediction_layer:o,output_layer:c},paramMappings:t}}function kse(e,t){let n=Hn(e,t);function a(c,u,p){let d=n(`${c}/Conv2d_${u}_pointwise/weights`,4,`${p}/filters`),h=n(`${c}/Conv2d_${u}_pointwise/convolution_bn_offset`,1,`${p}/batch_norm_offset`);return{filters:d,batch_norm_offset:h}}function r(c){let u=`mobilenetv1/conv_${c}`,p=`MobilenetV1/Conv2d_${c}_depthwise`,d=`${u}/depthwise_conv`,h=`${u}/pointwise_conv`,m=n(`${p}/depthwise_weights`,4,`${d}/filters`),f=n(`${p}/BatchNorm/gamma`,1,`${d}/batch_norm_scale`),g=n(`${p}/BatchNorm/beta`,1,`${d}/batch_norm_offset`),y=n(`${p}/BatchNorm/moving_mean`,1,`${d}/batch_norm_mean`),b=n(`${p}/BatchNorm/moving_variance`,1,`${d}/batch_norm_variance`);return{depthwise_conv:{filters:m,batch_norm_scale:f,batch_norm_offset:g,batch_norm_mean:y,batch_norm_variance:b},pointwise_conv:a("MobilenetV1",c,h)}}function s(){return{conv_0:a("MobilenetV1",0,"mobilenetv1/conv_0"),conv_1:r(1),conv_2:r(2),conv_3:r(3),conv_4:r(4),conv_5:r(5),conv_6:r(6),conv_7:r(7),conv_8:r(8),conv_9:r(9),conv_10:r(10),conv_11:r(11),conv_12:r(12),conv_13:r(13)}}function i(c,u){let p=n(`${c}/weights`,4,`${u}/filters`),d=n(`${c}/biases`,1,`${u}/bias`);return{filters:p,bias:d}}function o(c){let u=i(`Prediction/BoxPredictor_${c}/BoxEncodingPredictor`,`prediction_layer/box_predictor_${c}/box_encoding_predictor`),p=i(`Prediction/BoxPredictor_${c}/ClassPredictor`,`prediction_layer/box_predictor_${c}/class_predictor`);return{box_encoding_predictor:u,class_predictor:p}}function l(){return{conv_0:a("Prediction",0,"prediction_layer/conv_0"),conv_1:a("Prediction",1,"prediction_layer/conv_1"),conv_2:a("Prediction",2,"prediction_layer/conv_2"),conv_3:a("Prediction",3,"prediction_layer/conv_3"),conv_4:a("Prediction",4,"prediction_layer/conv_4"),conv_5:a("Prediction",5,"prediction_layer/conv_5"),conv_6:a("Prediction",6,"prediction_layer/conv_6"),conv_7:a("Prediction",7,"prediction_layer/conv_7"),box_predictor_0:o(0),box_predictor_1:o(1),box_predictor_2:o(2),box_predictor_3:o(3),box_predictor_4:o(4),box_predictor_5:o(5)}}return{extractMobilenetV1Params:s,extractPredictionLayerParams:l}}function RC(e){let t=[],{extractMobilenetV1Params:n,extractPredictionLayerParams:a}=kse(e,t),r=e["Output/extra_dim"];if(t.push({originalPath:"Output/extra_dim",paramPath:"output_layer/extra_dim"}),!Mr(r))throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${r}`);let s={mobilenetv1:n(),prediction_layer:a(),output_layer:{extra_dim:r}};return vn(e,t),{params:s,paramMappings:t}}function wa(e,t,n){return D(()=>{let a=$t(e,t.filters,n,"same");return a=Z(a,t.batch_norm_offset),Yt(a,0,6)})}var Ise=.0010000000474974513;function Nse(e,t,n){return D(()=>{let a=kr(e,t.filters,n,"same");return a=wr(a,t.batch_norm_mean,t.batch_norm_variance,t.batch_norm_offset,t.batch_norm_scale,Ise),Yt(a,0,6)})}function Tse(e){return[2,4,6,12].some(t=>t===e)?[2,2]:[1,1]}function PC(e,t){return D(()=>{let n,a=wa(e,t.conv_0,[2,2]);if([t.conv_1,t.conv_2,t.conv_3,t.conv_4,t.conv_5,t.conv_6,t.conv_7,t.conv_8,t.conv_9,t.conv_10,t.conv_11,t.conv_12,t.conv_13].forEach((s,i)=>{let o=i+1,l=Tse(o);a=Nse(a,s.depthwise_conv,l),a=wa(a,s.pointwise_conv,[1,1]),o===11&&(n=a)}),n===null)throw new Error("mobileNetV1 - output of conv layer 11 is null");return{out:a,conv11:n}})}function Sse(e,t,n){let a=e.arraySync(),r=Math.min(a[t][0],a[t][2]),s=Math.min(a[t][1],a[t][3]),i=Math.max(a[t][0],a[t][2]),o=Math.max(a[t][1],a[t][3]),l=Math.min(a[n][0],a[n][2]),c=Math.min(a[n][1],a[n][3]),u=Math.max(a[n][0],a[n][2]),p=Math.max(a[n][1],a[n][3]),d=(i-r)*(o-s),h=(u-l)*(p-c);if(d<=0||h<=0)return 0;let m=Math.max(r,l),f=Math.max(s,c),g=Math.min(i,u),y=Math.min(o,p),b=Math.max(g-m,0)*Math.max(y-f,0);return b/(d+h-b)}function OC(e,t,n,a,r){let s=e.shape[0],i=Math.min(n,s),o=t.map((u,p)=>({score:u,boxIndex:p})).filter(u=>u.score>r).sort((u,p)=>p.score-u.score),l=u=>u<=a?1:0,c=[];return o.forEach(u=>{if(c.length>=i)return;let p=u.score;for(let d=c.length-1;d>=0;--d){let h=Sse(e,u.boxIndex,c[d]);if(h!==0&&(u.score*=l(h),u.score<=r))break}p===u.score&&c.push(u.boxIndex)}),c}function Cse(e){let t=pt(Ue(e,[1,0])),n=[fe(t[2],t[0]),fe(t[3],t[1])],a=[Z(t[0],ve(n[0],de(2))),Z(t[1],ve(n[1],de(2)))];return{sizes:n,centers:a}}function Ese(e,t){let{sizes:n,centers:a}=Cse(e),r=pt(Ue(t,[1,0])),s=ve(L(mn(ve(r[2],de(5))),n[0]),de(2)),i=Z(L(ve(r[0],de(10)),n[0]),a[0]),o=ve(L(mn(ve(r[3],de(5))),n[1]),de(2)),l=Z(L(ve(r[1],de(10)),n[1]),a[1]);return Ue(Mt([fe(i,s),fe(l,o),Z(i,s),Z(l,o)]),[1,0])}function LC(e,t,n){return D(()=>{let a=e.shape[0],r=Ese(j(Ka(n.extra_dim,[a,1,1]),[-1,4]),j(e,[-1,4]));r=j(r,[a,r.shape[0]/a,4]);let s=da(We(t,[0,0,1],[-1,-1,-1])),i=We(s,[0,0,0],[-1,-1,1]);i=j(i,[a,i.shape[1]]);let o=pt(r),l=pt(i);return{boxes:o,scores:l}})}function fo(e,t){return D(()=>{let n=e.shape[0],a=j(co(e,t.box_encoding_predictor),[n,-1,1,4]),r=j(co(e,t.class_predictor),[n,-1,3]);return{boxPredictionEncoding:a,classPrediction:r}})}function zC(e,t,n){return D(()=>{let a=wa(e,n.conv_0,[1,1]),r=wa(a,n.conv_1,[2,2]),s=wa(r,n.conv_2,[1,1]),i=wa(s,n.conv_3,[2,2]),o=wa(i,n.conv_4,[1,1]),l=wa(o,n.conv_5,[2,2]),c=wa(l,n.conv_6,[1,1]),u=wa(c,n.conv_7,[2,2]),p=fo(t,n.box_predictor_0),d=fo(e,n.box_predictor_1),h=fo(r,n.box_predictor_2),m=fo(i,n.box_predictor_3),f=fo(l,n.box_predictor_4),g=fo(u,n.box_predictor_5),y=Ze([p.boxPredictionEncoding,d.boxPredictionEncoding,h.boxPredictionEncoding,m.boxPredictionEncoding,f.boxPredictionEncoding,g.boxPredictionEncoding],1),b=Ze([p.classPrediction,d.classPrediction,h.classPrediction,m.classPrediction,f.classPrediction,g.classPrediction],1);return{boxPredictions:y,classPredictions:b}})}var ia=class{constructor({minConfidence:t,maxResults:n}={}){this._name="SsdMobilenetv1Options";if(this._minConfidence=t||.5,this._maxResults=n||100,typeof this._minConfidence!="number"||this._minConfidence<=0||this._minConfidence>=1)throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`);if(typeof this._maxResults!="number")throw new Error(`${this._name} - expected maxResults to be a number`)}get minConfidence(){return this._minConfidence}get maxResults(){return this._maxResults}};var Ts=class extends nn{constructor(){super("SsdMobilenetv1")}forwardInput(t){let{params:n}=this;if(!n)throw new Error("SsdMobilenetv1 - load model before inference");return D(()=>{let a=pe(t.toBatchTensor(512,!1),"float32"),r=fe(L(a,de(.007843137718737125)),de(1)),s=PC(r,n.mobilenetv1),{boxPredictions:i,classPredictions:o}=zC(s.out,s.conv11,n.prediction_layer);return LC(i,o,n.output_layer)})}async forward(t){return this.forwardInput(await ft(t))}async locateFaces(t,n={}){let{maxResults:a,minConfidence:r}=new ia(n),s=await ft(t),{boxes:i,scores:o}=this.forwardInput(s),l=i[0],c=o[0];for(let x=1;x{let[v,N]=[Math.max(0,y[x][0]),Math.min(1,y[x][2])].map(A=>A*g),[T,E]=[Math.max(0,y[x][1]),Math.min(1,y[x][3])].map(A=>A*f);return new yt(u[x],new so(T,v,E-T,N-v),{height:s.getInputHeight(0),width:s.getInputWidth(0)})});return l.dispose(),c.dispose(),b}getDefaultModelName(){return"ssd_mobilenetv1_model"}extractParamsFromWeigthMap(t){return RC(t)}extractParams(t){return MC(t)}};function Ew(e){let t=new Ts;return t.extractWeights(e),t}function BC(e){return Ew(e)}var _w=class extends Ts{};var WC=.4,VC=[new De(.738768,.874946),new De(2.42204,2.65704),new De(4.30971,7.04493),new De(10.246,4.59428),new De(12.6868,11.8741)],UC=[new De(1.603231,2.094468),new De(6.041143,7.080126),new De(2.882459,3.518061),new De(4.266906,5.178857),new De(9.041765,10.66308)],GC=[117.001,114.697,97.404],HC="tiny_yolov2_model",jC="tiny_yolov2_separable_conv_model";var jf=e=>typeof e=="number";function qf(e){if(!e)throw new Error(`invalid config: ${e}`);if(typeof e.withSeparableConvs!="boolean")throw new Error(`config.withSeparableConvs has to be a boolean, have: ${e.withSeparableConvs}`);if(!jf(e.iouThreshold)||e.iouThreshold<0||e.iouThreshold>1)throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${e.iouThreshold}`);if(!Array.isArray(e.classes)||!e.classes.length||!e.classes.every(t=>typeof t=="string"))throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(e.classes)}`);if(!Array.isArray(e.anchors)||!e.anchors.length||!e.anchors.map(t=>t||{}).every(t=>jf(t.x)&&jf(t.y)))throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(e.anchors)}`);if(e.meanRgb&&(!Array.isArray(e.meanRgb)||e.meanRgb.length!==3||!e.meanRgb.every(jf)))throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(e.meanRgb)}`)}function Lu(e){return D(()=>{let t=L(e,de(.10000000149011612));return Z(Xe(fe(e,t)),t)})}function Or(e,t){return D(()=>{let n=na(e,[[0,0],[1,1],[1,1],[0,0]]);return n=$t(n,t.conv.filters,[1,1],"valid"),n=fe(n,t.bn.sub),n=L(n,t.bn.truediv),n=Z(n,t.conv.bias),Lu(n)})}function Lr(e,t){return D(()=>{let n=na(e,[[0,0],[1,1],[1,1],[0,0]]);return n=Oi(n,t.depthwise_filter,t.pointwise_filter,[1,1],"valid"),n=Z(n,t.bias),Lu(n)})}function _se(e,t){let n=Ru(e,t);function a(i,o){let l=tt(e(i)),c=tt(e(i));return t.push({paramPath:`${o}/sub`},{paramPath:`${o}/truediv`}),{sub:l,truediv:c}}function r(i,o,l){let c=n(i,o,3,`${l}/conv`),u=a(o,`${l}/bn`);return{conv:c,bn:u}}let s=Pu(e,t);return{extractConvParams:n,extractConvWithBatchNormParams:r,extractSeparableConvParams:s}}function qC(e,t,n,a){let{extractWeights:r,getRemainingWeights:s}=wn(e),i=[],{extractConvParams:o,extractConvWithBatchNormParams:l,extractSeparableConvParams:c}=_se(r,i),u;if(t.withSeparableConvs){let[p,d,h,m,f,g,y,b,x]=a,v=t.isFirstLayerConv2d?o(p,d,3,"conv0"):c(p,d,"conv0"),N=c(d,h,"conv1"),T=c(h,m,"conv2"),E=c(m,f,"conv3"),A=c(f,g,"conv4"),$=c(g,y,"conv5"),O=b?c(y,b,"conv6"):void 0,V=x?c(b,x,"conv7"):void 0,W=o(x||b||y,5*n,1,"conv8");u={conv0:v,conv1:N,conv2:T,conv3:E,conv4:A,conv5:$,conv6:O,conv7:V,conv8:W}}else{let[p,d,h,m,f,g,y,b,x]=a,v=l(p,d,"conv0"),N=l(d,h,"conv1"),T=l(h,m,"conv2"),E=l(m,f,"conv3"),A=l(f,g,"conv4"),$=l(g,y,"conv5"),O=l(y,b,"conv6"),V=l(b,x,"conv7"),W=o(x,5*n,1,"conv8");u={conv0:v,conv1:N,conv2:T,conv3:E,conv4:A,conv5:$,conv6:O,conv7:V,conv8:W}}if(s().length!==0)throw new Error(`weights remaing after extract: ${s().length}`);return{params:u,paramMappings:i}}function Fse(e,t){let n=Hn(e,t);function a(o){let l=n(`${o}/sub`,1),c=n(`${o}/truediv`,1);return{sub:l,truediv:c}}function r(o){let l=n(`${o}/filters`,4),c=n(`${o}/bias`,1);return{filters:l,bias:c}}function s(o){let l=r(`${o}/conv`),c=a(`${o}/bn`);return{conv:l,bn:c}}let i=Ou(n);return{extractConvParams:r,extractConvWithBatchNormParams:s,extractSeparableConvParams:i}}function KC(e,t){let n=[],{extractConvParams:a,extractConvWithBatchNormParams:r,extractSeparableConvParams:s}=Fse(e,n),i;if(t.withSeparableConvs){let o=t.filterSizes&&t.filterSizes.length||9;i={conv0:t.isFirstLayerConv2d?a("conv0"):s("conv0"),conv1:s("conv1"),conv2:s("conv2"),conv3:s("conv3"),conv4:s("conv4"),conv5:s("conv5"),conv6:o>7?s("conv6"):void 0,conv7:o>8?s("conv7"):void 0,conv8:a("conv8")}}else i={conv0:r("conv0"),conv1:r("conv1"),conv2:r("conv2"),conv3:r("conv3"),conv4:r("conv4"),conv5:r("conv5"),conv6:r("conv6"),conv7:r("conv7"),conv8:a("conv8")};return vn(e,n),{params:i,paramMappings:n}}var Va=class{constructor({inputSize:t,scoreThreshold:n}={}){this._name="TinyYolov2Options";if(this._inputSize=t||416,this._scoreThreshold=n||.5,typeof this._inputSize!="number"||this._inputSize%32!=0)throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`);if(typeof this._scoreThreshold!="number"||this._scoreThreshold<=0||this._scoreThreshold>=1)throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`)}get inputSize(){return this._inputSize}get scoreThreshold(){return this._scoreThreshold}};var Fw=class extends nn{constructor(t){super("TinyYolov2");qf(t),this._config=t}get config(){return this._config}get withClassScores(){return this.config.withClassScores||this.config.classes.length>1}get boxEncodingSize(){return 5+(this.withClassScores?this.config.classes.length:0)}runTinyYolov2(t,n){let a=Or(t,n.conv0);return a=Dt(a,[2,2],[2,2],"same"),a=Or(a,n.conv1),a=Dt(a,[2,2],[2,2],"same"),a=Or(a,n.conv2),a=Dt(a,[2,2],[2,2],"same"),a=Or(a,n.conv3),a=Dt(a,[2,2],[2,2],"same"),a=Or(a,n.conv4),a=Dt(a,[2,2],[2,2],"same"),a=Or(a,n.conv5),a=Dt(a,[2,2],[1,1],"same"),a=Or(a,n.conv6),a=Or(a,n.conv7),co(a,n.conv8,"valid",!1)}runMobilenet(t,n){let a=this.config.isFirstLayerConv2d?Lu(co(t,n.conv0,"valid",!1)):Lr(t,n.conv0);return a=Dt(a,[2,2],[2,2],"same"),a=Lr(a,n.conv1),a=Dt(a,[2,2],[2,2],"same"),a=Lr(a,n.conv2),a=Dt(a,[2,2],[2,2],"same"),a=Lr(a,n.conv3),a=Dt(a,[2,2],[2,2],"same"),a=Lr(a,n.conv4),a=Dt(a,[2,2],[2,2],"same"),a=Lr(a,n.conv5),a=Dt(a,[2,2],[1,1],"same"),a=n.conv6?Lr(a,n.conv6):a,a=n.conv7?Lr(a,n.conv7):a,co(a,n.conv8,"valid",!1)}forwardInput(t,n){let{params:a}=this;if(!a)throw new Error("TinyYolov2 - load model before inference");return D(()=>{let r=pe(t.toBatchTensor(n,!1),"float32");return r=this.config.meanRgb?va(r,this.config.meanRgb):r,r=r.div(de(256)),this.config.withSeparableConvs?this.runMobilenet(r,a):this.runTinyYolov2(r,a)})}async forward(t,n){return this.forwardInput(await ft(t),n)}async detect(t,n={}){let{inputSize:a,scoreThreshold:r}=new Va(n),s=await ft(t),i=await this.forwardInput(s,a),o=D(()=>pt(i)[0].expandDims()),l={width:s.getInputWidth(0),height:s.getInputHeight(0)},c=await this.extractBoxes(o,s.getReshapedInputDimensions(0),r);i.dispose(),o.dispose();let u=c.map(g=>g.box),p=c.map(g=>g.score),d=c.map(g=>g.classScore),h=c.map(g=>this.config.classes[g.label]);return Nf(u.map(g=>g.rescale(a)),p,this.config.iouThreshold,!0).map(g=>new Rr(p[g],d[g],h[g],u[g],l))}getDefaultModelName(){return""}extractParamsFromWeigthMap(t){return KC(t,this.config)}extractParams(t){let n=this.config.filterSizes||Fw.DEFAULT_FILTER_SIZES,a=n?n.length:void 0;if(a!==7&&a!==8&&a!==9)throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${a} filterSizes in config`);return qC(t,this.config,this.boxEncodingSize,n)}async extractBoxes(t,n,a){let{width:r,height:s}=n,i=Math.max(r,s),o=i/r,l=i/s,c=t.shape[1],u=this.config.anchors.length,[p,d,h]=D(()=>{let y=t.reshape([c,c,u,this.boxEncodingSize]),b=y.slice([0,0,0,0],[c,c,u,4]),x=y.slice([0,0,0,4],[c,c,u,1]),v=this.withClassScores?Ca(y.slice([0,0,0,5],[c,c,u,this.config.classes.length]),3):de(0);return[b,x,v]}),m=[],f=await d.array(),g=await p.array();for(let y=0;ya){let N=(b+Fu(g[y][b][x][0]))/c*o,T=(y+Fu(g[y][b][x][1]))/c*l,E=Math.exp(g[y][b][x][2])*this.config.anchors[x].x/c*o,A=Math.exp(g[y][b][x][3])*this.config.anchors[x].y/c*l,$=N-E/2,O=T-A/2,V={row:y,col:b,anchor:x},{classScore:W,label:H}=this.withClassScores?await this.extractPredictedClass(h,V):{classScore:1,label:0};m.push({box:new ro($,O,$+E,O+A),score:v,classScore:v*W,label:H,...V})}}return p.dispose(),d.dispose(),h.dispose(),m}async extractPredictedClass(t,n){let{row:a,col:r,anchor:s}=n,i=await t.array();return Array(this.config.classes.length).fill(0).map((o,l)=>i[a][r][s][l]).map((o,l)=>({classScore:o,label:l})).reduce((o,l)=>o.classScore>l.classScore?o:l)}},zu=Fw;zu.DEFAULT_FILTER_SIZES=[3,16,32,64,128,256,512,1024,1024];var go=class extends zu{constructor(t=!0){let n={withSeparableConvs:t,iouThreshold:WC,classes:["face"],...t?{anchors:UC,meanRgb:GC}:{anchors:VC,withClassScores:!0}};super(n)}get withSeparableConvs(){return this.config.withSeparableConvs}get anchors(){return this.config.anchors}async locateFaces(t,n){return(await this.detect(t,n)).map(r=>new yt(r.score,r.relativeBox,{width:r.imageWidth,height:r.imageHeight}))}getDefaultModelName(){return this.withSeparableConvs?jC:HC}extractParamsFromWeigthMap(t){return super.extractParamsFromWeigthMap(t)}};function XC(e,t=!0){let n=new go(t);return n.extractWeights(e),n}var Yp=class extends Va{constructor(){super(...arguments);this._name="TinyFaceDetectorOptions"}};var oa=class{async then(t){return t(await this.run())}async run(){throw new Error("ComposableTask - run is not implemented")}};async function yo(e,t,n,a,r=({alignedRect:s})=>s){let s=e.map(l=>Ns(l)?r(l):l.detection),i=a||(t instanceof z?await uo(t,s):await lo(t,s)),o=await n(i);return i.forEach(l=>l instanceof z&&l.dispose()),o}async function Bu(e,t,n,a,r){return yo([e],t,async s=>n(s[0]),a,r)}var YC=.4,JC=[new De(1.603231,2.094468),new De(6.041143,7.080126),new De(2.882459,3.518061),new De(4.266906,5.178857),new De(9.041765,10.66308)],ZC=[117.001,114.697,97.404];var bo=class extends zu{constructor(){let t={withSeparableConvs:!0,iouThreshold:YC,classes:["face"],anchors:JC,meanRgb:ZC,isFirstLayerConv2d:!0,filterSizes:[3,16,32,64,128,256,512]};super(t)}get anchors(){return this.config.anchors}async locateFaces(t,n){return(await this.detect(t,n)).map(r=>new yt(r.score,r.relativeBox,{width:r.imageWidth,height:r.imageHeight}))}getDefaultModelName(){return"tiny_face_detector_model"}extractParamsFromWeigthMap(t){return super.extractParamsFromWeigthMap(t)}};var Qe={ssdMobilenetv1:new Ts,tinyFaceDetector:new bo,tinyYolov2:new go,faceLandmark68Net:new ho,faceLandmark68TinyNet:new Hp,faceRecognitionNet:new mo,faceExpressionNet:new Wp,ageGenderNet:new Up},Aw=(e,t)=>Qe.ssdMobilenetv1.locateFaces(e,t),QC=(e,t)=>Qe.tinyFaceDetector.locateFaces(e,t),eE=(e,t)=>Qe.tinyYolov2.locateFaces(e,t),$w=e=>Qe.faceLandmark68Net.detectLandmarks(e),tE=e=>Qe.faceLandmark68TinyNet.detectLandmarks(e),nE=e=>Qe.faceRecognitionNet.computeFaceDescriptor(e),aE=e=>Qe.faceExpressionNet.predictExpressions(e),rE=e=>Qe.ageGenderNet.predictAgeAndGender(e),Dw=e=>Qe.ssdMobilenetv1.load(e),sE=e=>Qe.tinyFaceDetector.load(e),iE=e=>Qe.tinyYolov2.load(e),oE=e=>Qe.faceLandmark68Net.load(e),lE=e=>Qe.faceLandmark68TinyNet.load(e),uE=e=>Qe.faceRecognitionNet.load(e),cE=e=>Qe.faceExpressionNet.load(e),pE=e=>Qe.ageGenderNet.load(e),dE=Dw,hE=Aw,mE=$w;var Mw=class extends oa{constructor(t,n,a){super();this.parentTask=t;this.input=n;this.extractedFaces=a}},Uu=class extends Mw{async run(){let t=await this.parentTask,n=await yo(t,this.input,async a=>Promise.all(a.map(r=>Qe.faceExpressionNet.predictExpressions(r))),this.extractedFaces);return t.map((a,r)=>Vp(a,n[r]))}withAgeAndGender(){return new Wu(this,this.input)}},Gu=class extends Mw{async run(){let t=await this.parentTask;if(!t)return;let n=await Bu(t,this.input,a=>Qe.faceExpressionNet.predictExpressions(a),this.extractedFaces);return Vp(t,n)}withAgeAndGender(){return new Vu(this,this.input)}},wo=class extends Uu{withAgeAndGender(){return new xo(this,this.input)}withFaceDescriptors(){return new zr(this,this.input)}},ko=class extends Gu{withAgeAndGender(){return new vo(this,this.input)}withFaceDescriptor(){return new Br(this,this.input)}};var Rw=class extends oa{constructor(t,n,a){super();this.parentTask=t;this.input=n;this.extractedFaces=a}},Wu=class extends Rw{async run(){let t=await this.parentTask,n=await yo(t,this.input,async a=>Promise.all(a.map(r=>Qe.ageGenderNet.predictAgeAndGender(r))),this.extractedFaces);return t.map((a,r)=>{let{age:s,gender:i,genderProbability:o}=n[r];return Kp(Xp(a,i,o),s)})}withFaceExpressions(){return new Uu(this,this.input)}},Vu=class extends Rw{async run(){let t=await this.parentTask;if(!t)return;let{age:n,gender:a,genderProbability:r}=await Bu(t,this.input,s=>Qe.ageGenderNet.predictAgeAndGender(s),this.extractedFaces);return Kp(Xp(t,a,r),n)}withFaceExpressions(){return new Gu(this,this.input)}},xo=class extends Wu{withFaceExpressions(){return new wo(this,this.input)}withFaceDescriptors(){return new zr(this,this.input)}},vo=class extends Vu{withFaceExpressions(){return new ko(this,this.input)}withFaceDescriptor(){return new Br(this,this.input)}};var Jp=class extends oa{constructor(t,n){super();this.parentTask=t;this.input=n}},zr=class extends Jp{async run(){let t=await this.parentTask;return(await yo(t,this.input,a=>Promise.all(a.map(r=>Qe.faceRecognitionNet.computeFaceDescriptor(r))),null,a=>a.landmarks.align(null,{useDlibAlignment:!0}))).map((a,r)=>qp(t[r],a))}withFaceExpressions(){return new wo(this,this.input)}withAgeAndGender(){return new xo(this,this.input)}},Br=class extends Jp{async run(){let t=await this.parentTask;if(!t)return;let n=await Bu(t,this.input,a=>Qe.faceRecognitionNet.computeFaceDescriptor(a),null,a=>a.landmarks.align(null,{useDlibAlignment:!0}));return qp(t,n)}withFaceExpressions(){return new ko(this,this.input)}withAgeAndGender(){return new vo(this,this.input)}};var Zp=class extends oa{constructor(t,n,a){super();this.parentTask=t;this.input=n;this.useTinyLandmarkNet=a}get landmarkNet(){return this.useTinyLandmarkNet?Qe.faceLandmark68TinyNet:Qe.faceLandmark68Net}},Qp=class extends Zp{async run(){let t=await this.parentTask,n=t.map(s=>s.detection),a=this.input instanceof z?await uo(this.input,n):await lo(this.input,n),r=await Promise.all(a.map(s=>this.landmarkNet.detectLandmarks(s)));return a.forEach(s=>s instanceof z&&s.dispose()),t.map((s,i)=>po(s,r[i]))}withFaceExpressions(){return new wo(this,this.input)}withAgeAndGender(){return new xo(this,this.input)}withFaceDescriptors(){return new zr(this,this.input)}},ed=class extends Zp{async run(){let t=await this.parentTask;if(!t)return;let{detection:n}=t,a=this.input instanceof z?await uo(this.input,[n]):await lo(this.input,[n]),r=await this.landmarkNet.detectLandmarks(a[0]);return a.forEach(s=>s instanceof z&&s.dispose()),po(t,r)}withFaceExpressions(){return new ko(this,this.input)}withAgeAndGender(){return new vo(this,this.input)}withFaceDescriptor(){return new Br(this,this.input)}};var td=class extends oa{constructor(t,n=new ia){super();this.input=t;this.options=n}},Hu=class extends td{async run(){let{input:t,options:n}=this,a=n instanceof Yp?r=>Qe.tinyFaceDetector.locateFaces(r,n):n instanceof ia?r=>Qe.ssdMobilenetv1.locateFaces(r,n):n instanceof Va?r=>Qe.tinyYolov2.locateFaces(r,n):null;if(!a)throw new Error("detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options");return a(t)}runAndExtendWithFaceDetections(){return new Promise(async t=>{let n=await this.run();t(n.map(a=>xs({},a)))})}withFaceLandmarks(t=!1){return new Qp(this.runAndExtendWithFaceDetections(),this.input,t)}withFaceExpressions(){return new Uu(this.runAndExtendWithFaceDetections(),this.input)}withAgeAndGender(){return new Wu(this.runAndExtendWithFaceDetections(),this.input)}},nd=class extends td{async run(){let t=await new Hu(this.input,this.options),n=t[0];return t.forEach(a=>{a.score>n.score&&(n=a)}),n}runAndExtendWithFaceDetection(){return new Promise(async t=>{let n=await this.run();t(n?xs({},n):void 0)})}withFaceLandmarks(t=!1){return new ed(this.runAndExtendWithFaceDetection(),this.input,t)}withFaceExpressions(){return new Gu(this.runAndExtendWithFaceDetection(),this.input)}withAgeAndGender(){return new Vu(this.runAndExtendWithFaceDetection(),this.input)}};function fE(e,t=new ia){return new nd(e,t)}function ad(e,t=new ia){return new Hu(e,t)}async function Pw(e,t){return ad(e,new ia(t?{minConfidence:t}:{})).withFaceLandmarks().withFaceDescriptors()}async function gE(e,t={}){return ad(e,new Va(t)).withFaceLandmarks().withFaceDescriptors()}var yE=Pw;function Kf(e,t){if(e.length!==t.length)throw new Error("euclideanDistance: arr1.length !== arr2.length");let n=Array.from(e),a=Array.from(t);return Math.sqrt(n.map((r,s)=>r-a[s]).reduce((r,s)=>r+s**2,0))}var rd=class{constructor(t,n=.6){this._distanceThreshold=n;let a=Array.isArray(t)?t:[t];if(!a.length)throw new Error("FaceRecognizer.constructor - expected atleast one input");let r=1,s=()=>`person ${r++}`;this._labeledDescriptors=a.map(i=>{if(i instanceof lr)return i;if(i instanceof Float32Array)return new lr(s(),[i]);if(i.descriptor&&i.descriptor instanceof Float32Array)return new lr(s(),[i.descriptor]);throw new Error("FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>")})}get labeledDescriptors(){return this._labeledDescriptors}get distanceThreshold(){return this._distanceThreshold}computeMeanDistance(t,n){return n.map(a=>Kf(a,t)).reduce((a,r)=>a+r,0)/(n.length||1)}matchDescriptor(t){return this.labeledDescriptors.map(({descriptors:n,label:a})=>new Au(a,this.computeMeanDistance(t,n))).reduce((n,a)=>n.distancet.toJSON())}}static fromJSON(t){let n=t.labeledDescriptors.map(a=>lr.fromJSON(a));return new rd(n,t.distanceThreshold)}};function bE(e){let t=new bo;return t.extractWeights(e),t}function Ow(e,t){let{width:n,height:a}=new cn(t.width,t.height);if(n<=0||a<=0)throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({width:n,height:a})}`);if(Array.isArray(e))return e.map(r=>Ow(r,{width:n,height:a}));if(Ns(e)){let r=e.detection.forSize(n,a),s=e.unshiftedLandmarks.forSize(r.box.width,r.box.height);return po(xs(e,r),s)}return Ba(e)?xs(e,e.detection.forSize(n,a)):e instanceof Gn||e instanceof yt?e.forSize(n,a):e}var $se=typeof process!="undefined",Dse=typeof navigator!="undefined"&&typeof navigator.userAgent!="undefined",xE={faceapi:xC,node:$se,browser:Dse};return Ase;})(); /** * @license * Copyright 2017 Google LLC. All Rights Reserved. diff --git a/dist/face-api.js.map b/dist/face-api.js.map index d9746c9..9a0eb11 100644 --- a/dist/face-api.js.map +++ b/dist/face-api.js.map @@ -2,6 +2,6 @@ "version": 3, "sources": ["../src/env/isNodejs.ts", "../src/index.ts", "empty:/home/vlado/dev/face-api/node_modules/node-fetch/browser.js", "../node_modules/seedrandom/lib/alea.js", "../node_modules/seedrandom/lib/xor128.js", "../node_modules/seedrandom/lib/xorwow.js", "../node_modules/seedrandom/lib/xorshift7.js", "../node_modules/seedrandom/lib/xor4096.js", "../node_modules/seedrandom/lib/tychei.js", "empty:crypto", "../node_modules/seedrandom/seedrandom.js", "../node_modules/seedrandom/index.js", "empty:/home/vlado/dev/face-api/node_modules/string_decoder/lib/string_decoder.js", "empty:path", "empty:worker_threads", "empty:perf_hooks", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.js", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js", "../node_modules/@tensorflow/tfjs-core/src/backends/backend.ts", "../node_modules/@tensorflow/tfjs-core/src/util_base.ts", "../node_modules/@tensorflow/tfjs-core/src/environment.ts", "../node_modules/@tensorflow/tfjs-core/src/global_util.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_names.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/profiler.ts", "../node_modules/@tensorflow/tfjs-core/src/tape.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_format.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/types.ts", "../node_modules/@tensorflow/tfjs-core/src/engine.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/flags.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util_env.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/operation.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/complex.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/io/types.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/io/router_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/model_management.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_browser.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/buffer.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clone.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/print.ts", "../node_modules/@tensorflow/tfjs-core/src/base_side_effects.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/io/browser_files.ts", "../node_modules/@tensorflow/tfjs-core/src/io/progress.ts", "../node_modules/@tensorflow/tfjs-core/src/io/weights_loader.ts", "../node_modules/@tensorflow/tfjs-core/src/io/http.ts", "../node_modules/@tensorflow/tfjs-core/src/io/passthrough.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/confusion_matrix.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/version.ts", "../node_modules/@tensorflow/tfjs-core/src/globals.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add_n.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/basic_lstm_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dense_bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/diag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/eye.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fill.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/imag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linspace.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/axis_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_with_argmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moments.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multi_rnn_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multinomial.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/outer_product.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_gamma.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_uniform.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/range.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/real.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/setdiff1d_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor5d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor6d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/truncated_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/variable.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/where_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/boolean_mask.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/compare.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/binary_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moving_average.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/in_top_k.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hamming_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hann_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/frame.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/stft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/crop_and_resize.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/flip_left_right.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/rotate_with_offset.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/nonmax_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/band_part.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/gram_schmidt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/qr.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/loss_ops_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/compute_weighted_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/absolute_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/cosine_distance.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/hinge_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/huber_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/log_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/mean_squared_error.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/sigmoid_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/softmax_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ops.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adadelta_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adagrad_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adam_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adamax_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/sgd_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/momentum_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/rmsprop_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer_constructors.ts", "../node_modules/@tensorflow/tfjs-core/src/train.ts", "../node_modules/@tensorflow/tfjs-core/src/browser_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reduce_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rotate_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/array_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf_util.ts", "../node_modules/@tensorflow/tfjs-core/src/log.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/complex_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Abs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Add_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AddN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchMatMul_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchToSpaceND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BroadcastTo_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cast_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Ceil_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ClipByValue_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ComplexAbs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Concat_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2DBackpropInput_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cumsum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/DepthwiseConv2dNative_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Dilation2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Elu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Erf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Exp_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ExpandDims_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Expm1_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Floor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FloorDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FusedBatchNorm_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GatherV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GreaterEqual_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Identity_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsFinite_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsInf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsNan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LeakyRelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log1p_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LogSoftmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LRN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/min_max_grad_util.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Max_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Maximum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mean_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Min_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Minimum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MirrorPad_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mod_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Multiply_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Neg_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OneHot_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OnesLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/PadV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pow_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Prelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/RealDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reciprocal_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu6_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reshape_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeBilinear_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeNearestNeighbor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reverse_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Round_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Rsqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Select_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Selu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sigmoid_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sign_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Slice_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softplus_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SpaceToBatchND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SplitV_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Square_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SquaredDifference_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Step_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sub_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tile_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Transpose_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Unpack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/UnsortedSegmentSum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ZerosLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/register_all_gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_type.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as3d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as4d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as5d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2D_deprecated.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/flatten.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape_as.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_bool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_float.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_int.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/register_all_chained_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/index.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/errors.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/initializer_config.ts", "../node_modules/@tensorflow/tfjs-layers/src/initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/state.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/types_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/variable_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/topology.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/input_layer.ts", "../node_modules/@tensorflow/tfjs-layers/src/logs.ts", "../node_modules/@tensorflow/tfjs-layers/src/base_callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/serialization.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/optimizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/user_defined_metadata.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/layer_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/serialization_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/version.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/executor.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/container.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_dataset.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_tensors.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training.ts", "../node_modules/@tensorflow/tfjs-layers/src/models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports.ts", "../node_modules/@tensorflow/tfjs-layers/src/activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/advanced_activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/conv_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_depthwise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/core.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/embeddings.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/noise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/normalization.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/pooling.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/wrappers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/index.ts", "../node_modules/@tensorflow/tfjs-converter/src/data/compiled_api.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/register.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_mapper.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/node_value_impl.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/arithmetic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/basic_math_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_array.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_list.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/control_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/convolution_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/creation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/dynamic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/evaluation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/hash_table_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/image_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/logical_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/matrices_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/normalization_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/reduction_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/slice_join_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/spectral_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/transformation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/execution_context.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/model_analysis.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/resource_manager.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_model.ts", "../node_modules/@tensorflow/tfjs-converter/src/version.ts", "../node_modules/@tensorflow/tfjs-converter/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_map.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_clone.ts", "../node_modules/@tensorflow/tfjs-data/src/util/ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/util/growing_ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/text_line_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/csv_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/microphone_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/webcam_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/datasource.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/string_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/byte_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/file_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/url_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/source_util.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/file_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/url_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/readers.ts", "../node_modules/@tensorflow/tfjs-data/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/cpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/zeros_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fused_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/pool_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Clip.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fft_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Scatter_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flags_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/glsl_version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_context.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_math.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/shared.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/packing_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reshape_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/texture_manager.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unpack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/backend_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mulmat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_complex_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mean_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reduce_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reduce.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/arg_min_max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pool_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/avg_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/int.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/complex_abs_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/im2col_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/crop_and_resize_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/cumsum_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/depth_to_space_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_packed_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/diag_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/dilation_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fft_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fill_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flip_left_right_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_nd_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_grad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/max_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/multinomial_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/onehot_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/rotate_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/scatter_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/select_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/strided_slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tile_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/segment_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/index.ts", "../node_modules/@tensorflow/tfjs/src/version.ts", "../node_modules/@tensorflow/tfjs/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/types.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/unary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/binary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedBatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppression_util.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/flags_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.worker.js", "../node_modules/@tensorflow/tfjs-backend-wasm/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/index.ts", "../src/draw/index.ts", "../src/draw/drawContour.ts", "../src/utils/index.ts", "../src/classes/Dimensions.ts", "../src/classes/Point.ts", "../src/classes/Box.ts", "../src/classes/BoundingBox.ts", "../src/classes/ObjectDetection.ts", "../src/classes/FaceDetection.ts", "../src/ops/iou.ts", "../src/ops/minBbox.ts", "../src/ops/nonMaxSuppression.ts", "../src/ops/normalize.ts", "../src/ops/padToSquare.ts", "../src/ops/shuffleArray.ts", "../src/ops/index.ts", "../src/classes/Rect.ts", "../src/classes/FaceLandmarks.ts", "../src/classes/FaceLandmarks5.ts", "../src/classes/FaceLandmarks68.ts", "../src/classes/FaceMatch.ts", "../src/classes/LabeledBox.ts", "../src/classes/LabeledFaceDescriptors.ts", "../src/classes/PredictedBox.ts", "../src/factories/WithFaceDetection.ts", "../src/env/createBrowserEnv.ts", "../src/env/createFileSystem.ts", "../src/env/createNodejsEnv.ts", "../src/env/isBrowser.ts", "../src/env/index.ts", "../src/dom/resolveInput.ts", "../src/dom/getContext2dOrThrow.ts", "../src/draw/DrawTextField.ts", "../src/draw/DrawBox.ts", "../src/draw/drawDetections.ts", "../src/dom/isMediaLoaded.ts", "../src/dom/awaitMediaLoaded.ts", "../src/dom/bufferToImage.ts", "../src/dom/getMediaDimensions.ts", "../src/dom/createCanvas.ts", "../src/dom/imageTensorToCanvas.ts", "../src/dom/isMediaElement.ts", "../src/dom/imageToSquare.ts", "../src/dom/NetInput.ts", "../src/dom/toNetInput.ts", "../src/dom/extractFaces.ts", "../src/dom/extractFaceTensors.ts", "../src/dom/fetchOrThrow.ts", "../src/dom/fetchImage.ts", "../src/dom/fetchJson.ts", "../src/dom/fetchNetWeights.ts", "../src/common/getModelUris.ts", "../src/dom/loadWeightMap.ts", "../src/dom/matchDimensions.ts", "../src/NeuralNetwork.ts", "../src/common/depthwiseSeparableConv.ts", "../src/faceFeatureExtractor/denseBlock.ts", "../src/common/convLayer.ts", "../src/common/disposeUnusedWeightTensors.ts", "../src/common/extractConvParamsFactory.ts", "../src/common/extractFCParamsFactory.ts", "../src/common/types.ts", "../src/common/extractSeparableConvParamsFactory.ts", "../src/common/extractWeightEntryFactory.ts", "../src/common/extractWeightsFactory.ts", "../src/faceFeatureExtractor/extractorsFactory.ts", "../src/faceFeatureExtractor/extractParams.ts", "../src/common/loadConvParamsFactory.ts", "../src/faceFeatureExtractor/loadParamsFactory.ts", "../src/faceFeatureExtractor/extractParamsFromWeigthMap.ts", "../src/faceFeatureExtractor/FaceFeatureExtractor.ts", "../src/common/fullyConnectedLayer.ts", "../src/faceProcessor/extractParams.ts", "../src/faceProcessor/extractParamsFromWeigthMap.ts", "../src/faceProcessor/util.ts", "../src/faceProcessor/FaceProcessor.ts", "../src/faceExpressionNet/FaceExpressions.ts", "../src/faceExpressionNet/FaceExpressionNet.ts", "../src/factories/WithFaceExpressions.ts", "../src/draw/drawFaceExpressions.ts", "../src/factories/WithFaceLandmarks.ts", "../src/draw/DrawFaceLandmarks.ts", "../src/xception/extractParams.ts", "../src/xception/extractParamsFromWeigthMap.ts", "../src/xception/TinyXception.ts", "../src/ageGenderNet/extractParams.ts", "../src/ageGenderNet/extractParamsFromWeigthMap.ts", "../src/ageGenderNet/types.ts", "../src/ageGenderNet/AgeGenderNet.ts", "../src/faceLandmarkNet/FaceLandmark68NetBase.ts", "../src/faceLandmarkNet/FaceLandmark68Net.ts", "../src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts", "../src/faceFeatureExtractor/extractParamsTiny.ts", "../src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts", "../src/faceLandmarkNet/FaceLandmark68TinyNet.ts", "../src/faceLandmarkNet/index.ts", "../src/faceRecognitionNet/scaleLayer.ts", "../src/faceRecognitionNet/convLayer.ts", "../src/faceRecognitionNet/extractParams.ts", "../src/faceRecognitionNet/extractParamsFromWeigthMap.ts", "../src/faceRecognitionNet/residualLayer.ts", "../src/faceRecognitionNet/FaceRecognitionNet.ts", "../src/faceRecognitionNet/index.ts", "../src/factories/WithFaceDescriptor.ts", "../src/factories/WithAge.ts", "../src/factories/WithGender.ts", "../src/ssdMobilenetv1/extractParams.ts", "../src/ssdMobilenetv1/extractParamsFromWeigthMap.ts", "../src/ssdMobilenetv1/pointwiseConvLayer.ts", "../src/ssdMobilenetv1/mobileNetV1.ts", "../src/ssdMobilenetv1/nonMaxSuppression.ts", "../src/ssdMobilenetv1/outputLayer.ts", "../src/ssdMobilenetv1/boxPredictionLayer.ts", "../src/ssdMobilenetv1/predictionLayer.ts", "../src/ssdMobilenetv1/SsdMobilenetv1Options.ts", "../src/ssdMobilenetv1/SsdMobilenetv1.ts", "../src/ssdMobilenetv1/index.ts", "../src/tinyYolov2/const.ts", "../src/tinyYolov2/config.ts", "../src/tinyYolov2/leaky.ts", "../src/tinyYolov2/convWithBatchNorm.ts", "../src/tinyYolov2/depthwiseSeparableConv.ts", "../src/tinyYolov2/extractParams.ts", "../src/tinyYolov2/extractParamsFromWeigthMap.ts", "../src/tinyYolov2/TinyYolov2Options.ts", "../src/tinyYolov2/TinyYolov2Base.ts", "../src/tinyYolov2/TinyYolov2.ts", "../src/tinyYolov2/index.ts", "../src/tinyFaceDetector/TinyFaceDetectorOptions.ts", "../src/globalApi/ComposableTask.ts", "../src/globalApi/extractFacesAndComputeResults.ts", "../src/tinyFaceDetector/const.ts", "../src/tinyFaceDetector/TinyFaceDetector.ts", "../src/globalApi/nets.ts", "../src/globalApi/PredictFaceExpressionsTask.ts", "../src/globalApi/PredictAgeAndGenderTask.ts", "../src/globalApi/ComputeFaceDescriptorsTasks.ts", "../src/globalApi/DetectFaceLandmarksTasks.ts", "../src/globalApi/DetectFacesTasks.ts", "../src/globalApi/detectFaces.ts", "../src/globalApi/allFaces.ts", "../src/euclideanDistance.ts", "../src/globalApi/FaceMatcher.ts", "../src/tinyFaceDetector/index.ts", "../src/resizeResults.ts"], "sourcesContent": ["export function isNodejs(): boolean {\n return typeof global === 'object'\n && typeof require === 'function'\n && typeof module !== 'undefined'\n // issues with gatsby.js: module.exports is undefined\n // && !!module.exports\n && typeof process !== 'undefined' && !!process.version;\n}\n", "import * as tf from '../dist/tfjs.esm';\nimport * as draw from './draw/index';\nimport * as utils from './utils/index';\nimport * as pkg from '../package.json';\n\nexport { tf, draw, utils };\n\nexport * from './ageGenderNet/index';\nexport * from './classes/index';\nexport * from './dom/index';\nexport * from './env/index';\nexport * from './faceExpressionNet/index';\nexport * from './faceLandmarkNet/index';\nexport * from './faceRecognitionNet/index';\nexport * from './factories/index';\nexport * from './globalApi/index';\nexport * from './ops/index';\nexport * from './ssdMobilenetv1/index';\nexport * from './tinyFaceDetector/index';\nexport * from './tinyYolov2/index';\nexport * from './euclideanDistance';\nexport * from './NeuralNetwork';\nexport * from './resizeResults';\n\nconst node = (typeof process !== 'undefined');\n// eslint-disable-next-line no-undef\nconst browser = (typeof navigator !== 'undefined') && (typeof navigator.userAgent !== 'undefined');\nexport const version = { faceapi: pkg.version as string, node, browser };\n", "", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", "", "", "\nvar WasmBackendModuleThreadedSimd = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModuleThreadedSimd) {\n WasmBackendModuleThreadedSimd = WasmBackendModuleThreadedSimd || {};\n\nfunction GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd!==\"undefined\"?WasmBackendModuleThreadedSimd:{};var _scriptDir=undefined;var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module[\"ENVIRONMENT_IS_PTHREAD\"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module[\"buffer\"];DYNAMIC_BASE=Module[\"DYNAMIC_BASE\"];DYNAMICTOP_PTR=Module[\"DYNAMICTOP_PTR\"]}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"};var nodeWorkerThreads;try{nodeWorkerThreads=require(\"worker_threads\")}catch(e){console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(ENVIRONMENT_IS_NODE){read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}}else{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance===\"undefined\"){performance=require(\"perf_hooks\").performance}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":169,\"maximum\":169+0,\"element\":\"anyfunc\"});var wasmModule;var threadInfoStruct=0;var selfThreadId=0;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256464,STACKTOP=STACK_BASE,STACK_MAX=13584,DYNAMIC_BASE=5256464,DYNAMICTOP_PTR=12656;if(ENVIRONMENT_IS_PTHREAD){}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module[\"wasmMemory\"];buffer=Module[\"buffer\"]}else{if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,\"maximum\":2147483648/WASM_PAGE_SIZE,\"shared\":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err(\"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\");if(ENVIRONMENT_IS_NODE){console.log(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)\")}throw Error(\"bad memory\")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);if(!ENVIRONMENT_IS_PTHREAD){GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,\"addRunDependency cannot be used in a pthread worker\");runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error(\"Pthread aborting at \"+(new Error).stack);what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm-threaded-simd.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency(\"wasm-instantiate\")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency(\"wasm-instantiate\")}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0;var __pthread_is_main_runtime_thread=0;var __pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0;isMainBrowserThread=isMainBrowserThread|0;isMainRuntimeThread=isMainRuntimeThread|0;__pthread_ptr=pthreadPtr;__pthread_is_main_browser_thread=isMainBrowserThread;__pthread_is_main_runtime_thread=isMainRuntimeThread}Module[\"__register_pthread_ptr\"]=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var __main_thread_futex_wait_address=13568;function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw\"Atomics.notify returned an unexpected value \"+ret}Module[\"_emscripten_futex_wake\"]=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _kill_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _kill_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cancel_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cancel_thread!\";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({\"cmd\":\"cancel\"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cleanup_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cleanup_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){var pthreadPoolSize=8;for(var i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var tlsMemory=13056;for(var i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){while(PThread.exitHandlers.length>0){PThread.exitHandlers.pop()()}PThread.exitHandlers=null}if(ENVIRONMENT_IS_PTHREAD&&threadInfoStruct)___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__register_pthread_ptr(0,0,0);threadInfoStruct=0;if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exit\"})}}},threadCancel:function(){PThread.runExitHandlers();Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1);Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1);_emscripten_futex_wake(threadInfoStruct+0,2147483647);threadInfoStruct=selfThreadId=0;__register_pthread_ptr(0,0,0);postMessage({\"cmd\":\"cancelDone\"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e[\"data\"];var cmd=d[\"cmd\"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d[\"targetThread\"]&&d[\"targetThread\"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d[\"transferList\"])}else{console.error('Internal error! Worker sent a message \"'+cmd+'\" to target pthread '+d[\"targetThread\"]+\", but that thread no longer exists!\")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd===\"processQueuedMainThreadWork\"){_emscripten_main_thread_process_queued_calls()}else if(cmd===\"spawnThread\"){__spawn_thread(e.data)}else if(cmd===\"cleanupThread\"){__cleanup_thread(d[\"thread\"])}else if(cmd===\"killThread\"){__kill_thread(d[\"thread\"])}else if(cmd===\"cancelThread\"){__cancel_thread(d[\"thread\"])}else if(cmd===\"loaded\"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd===\"print\"){out(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"printErr\"){err(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"alert\"){alert(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"exit\"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd===\"cancelDone\"){PThread.returnWorkerToPool(worker)}else if(cmd===\"objectTransfer\"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target===\"setimmediate\"){worker.postMessage(e.data)}else{err(\"worker sent an unknown command \"+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err(\"pthread sent an error! \"+e.filename+\":\"+e.lineno+\": \"+e.message)};if(ENVIRONMENT_IS_NODE){worker.on(\"message\",function(data){worker.onmessage({data:data})});worker.on(\"error\",function(data){worker.onerror(data)});worker.on(\"exit\",function(data){console.log(\"worker exited - TODO: update the worker queue?\")})}worker.postMessage({\"cmd\":\"load\",\"urlOrBlob\":Module[\"mainScriptUrlOrBlob\"]||_scriptDir,\"wasmMemory\":wasmMemory,\"wasmModule\":wasmModule,\"DYNAMIC_BASE\":DYNAMIC_BASE,\"DYNAMICTOP_PTR\":DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile(\"tfjs-backend-wasm-threaded-simd.worker.js\");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()>2]=value;return value}function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func,arg);__ATEXIT__.unshift({func:func,arg:arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({\"cmd\":\"processQueuedMainThreadWork\"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({\"targetThread\":targetThreadId,\"cmd\":\"processThreadQueue\"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({\"cmd\":\"processThreadQueue\"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0;newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret===\"timed-out\")return-73;if(ret===\"not-equal\")return-6;if(ret===\"ok\")return 0;throw\"Atomics.wait returned an unexpected value \"+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now();var tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);var ourWaitAddress=addr;while(addr==ourWaitAddress){tNow=performance.now();if(tNow>tEnd){return-73}_emscripten_main_thread_process_queued_calls();addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator[\"hardwareConcurrency\"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var args=stackAlloc(numCallArgs*8);var b=args>>3;for(var i=0;i>3]);buf+=8}else{buf=buf+3&~3;args.push(GROWABLE_HEAP_I32()[buf>>2]);buf+=4}}return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize){return false}var PAGE_MULTIPLE=65536;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}var minHeapSize=16777216;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:false,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return\"\";if(target==window)return\"#window\";if(target==screen)return\"#screen\";return target&&target.nodeName?target.nodeName:\"\"},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):\"\";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!==\"undefined\"?document:0,typeof window!==\"undefined\"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!==\"undefined\"?document.querySelector(target):undefined);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0;name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=function(index,divisor){ext[\"vertexAttribDivisorANGLE\"](index,divisor)};ctx[\"drawArraysInstanced\"]=function(mode,first,count,primcount){ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount)};ctx[\"drawElementsInstanced\"]=function(mode,count,type,indices,primcount){ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=function(){return ext[\"createVertexArrayOES\"]()};ctx[\"deleteVertexArray\"]=function(vao){ext[\"deleteVertexArrayOES\"](vao)};ctx[\"bindVertexArray\"]=function(vao){ext[\"bindVertexArrayOES\"](vao)};ctx[\"isVertexArray\"]=function(vao){return ext[\"isVertexArrayOES\"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=function(n,bufs){ext[\"drawBuffersWEBGL\"](n,bufs)};return 1}}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE);for(var i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault===\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents===\"object\")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\");var automaticallyEnabledExtensions=[\"OES_texture_float\",\"OES_texture_half_float\",\"OES_standard_derivatives\",\"OES_vertex_array_object\",\"WEBGL_compressed_texture_s3tc\",\"WEBGL_depth_texture\",\"OES_element_index_uint\",\"EXT_texture_filter_anisotropic\",\"EXT_frag_depth\",\"WEBGL_draw_buffers\",\"ANGLE_instanced_arrays\",\"OES_texture_float_linear\",\"OES_texture_half_float_linear\",\"EXT_blend_minmax\",\"EXT_shader_texture_lod\",\"EXT_texture_norm16\",\"WEBGL_compressed_texture_pvrtc\",\"EXT_color_buffer_half_float\",\"WEBGL_color_buffer_float\",\"EXT_sRGB\",\"WEBGL_compressed_texture_etc1\",\"EXT_disjoint_timer_query\",\"WEBGL_compressed_texture_etc\",\"WEBGL_compressed_texture_astc\",\"EXT_color_buffer_float\",\"WEBGL_compressed_texture_s3tc_srgb\",\"EXT_disjoint_timer_query_webgl2\",\"WEBKIT_WEBGL_compressed_texture_pvrtc\"];var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(automaticallyEnabledExtensions.indexOf(ext)!=-1){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>2;contextAttributes[\"alpha\"]=!!GROWABLE_HEAP_I32()[a+(0>>2)];contextAttributes[\"depth\"]=!!GROWABLE_HEAP_I32()[a+(4>>2)];contextAttributes[\"stencil\"]=!!GROWABLE_HEAP_I32()[a+(8>>2)];contextAttributes[\"antialias\"]=!!GROWABLE_HEAP_I32()[a+(12>>2)];contextAttributes[\"premultipliedAlpha\"]=!!GROWABLE_HEAP_I32()[a+(16>>2)];contextAttributes[\"preserveDrawingBuffer\"]=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes[\"powerPreference\"]=__emscripten_webgl_power_preferences[powerPreference];contextAttributes[\"failIfMajorPerformanceCaveat\"]=!!GROWABLE_HEAP_I32()[a+(28>>2)];contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)];contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)];contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)];contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)];contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)];contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas){return-4}if(contextAttributes.explicitSwapControl){return-1}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,fd);return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _pthread_cleanup_pop(execute){var routine=PThread.exitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){if(PThread.exitHandlers===null){PThread.exitHandlers=[]}PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _spawn_thread() can only ever be called from main application thread!\";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw\"Internal error!\";if(!threadParams.pthread_ptr)throw\"Internal error, no pthread ptr!\";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct);Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42);Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale);worker.pthread=pthread;var msg={\"cmd\":\"run\",\"start_routine\":threadParams.startRoutine,\"arg\":threadParams.arg,\"threadInfoStruct\":threadParams.pthread_ptr,\"selfThreadId\":threadParams.pthread_ptr,\"parentThreadId\":threadParams.parent_pthread_ptr,\"stackBase\":threadParams.stackBase,\"stackSize\":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread){err(\"pthread_getschedparam called with a null thread pointer!\");return ERRNO_CODES.ESRCH}var self=GROWABLE_HEAP_I32()[thread+12>>2];if(self!==thread){err(\"pthread_getschedparam attempted on thread \"+thread+\", which does not point to a valid thread, or does not exist anymore!\");return ERRNO_CODES.ESRCH}var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2);var schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);if(policy)GROWABLE_HEAP_I32()[policy>>2]=schedPolicy;if(schedparam)GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio;return 0}function _pthread_self(){return __pthread_ptr|0}Module[\"_pthread_self\"]=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer===\"undefined\"){err(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\");return 6}if(!pthread_ptr){err(\"pthread_create called with a null thread pointer!\");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;var schedPolicy=0;var schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=81920;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];var prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2];var parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24);schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2];GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy;GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else{schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(232);for(var i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct;GROWABLE_HEAP_I32()[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,schedPolicy:schedPolicy,schedPrio:schedPrio,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,parent_pthread_ptr:_pthread_self(),arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd=\"spawnThread\";postMessage(threadParams,transferList)}else{__spawn_thread(threadParams)}return 0}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();else PThread.initWorker();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf];var asmLibraryArg={\"e\":___assert_fail,\"r\":___call_main,\"w\":__emscripten_notify_thread_queue,\"a\":_abort,\"l\":_emscripten_conditional_set_current_thread_status,\"d\":_emscripten_futex_wait,\"c\":_emscripten_futex_wake,\"h\":_emscripten_get_now,\"g\":_emscripten_is_main_browser_thread,\"x\":_emscripten_is_main_runtime_thread,\"q\":_emscripten_memcpy_big,\"B\":_emscripten_num_logical_cores,\"t\":_emscripten_receive_on_main_thread_js,\"A\":_emscripten_resize_heap,\"u\":_emscripten_set_canvas_element_size,\"k\":_emscripten_set_current_thread_status,\"s\":_emscripten_set_thread_name,\"v\":_emscripten_webgl_create_context,\"m\":_fd_close,\"o\":_fd_seek,\"i\":_fd_write,\"p\":initPthreadsJS,\"memory\":wasmMemory||Module[\"wasmMemory\"],\"y\":_pthread_cleanup_pop,\"z\":_pthread_cleanup_push,\"j\":_pthread_create,\"b\":_pthread_self,\"f\":_roundf,\"n\":_sysconf,\"table\":wasmTable};var asm=createWasm();Module[\"asm\"]=asm;var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"F\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _Round=Module[\"_Round\"]=function(){return(_Round=Module[\"_Round\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=function(){return(_emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var ___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=function(){return(___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var _memalign=Module[\"_memalign\"]=function(){return(_memalign=Module[\"_memalign\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=function(){return(___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=function(){return(_emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=function(){return(_emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=function(){return(_emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var _emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=function(){return(_emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};var _emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=function(){return(_emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=Module[\"asm\"][\"ib\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=function(){return(_emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=Module[\"asm\"][\"jb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=function(){return(_emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=Module[\"asm\"][\"kb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=function(){return(_emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=Module[\"asm\"][\"lb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=function(){return(_emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=Module[\"asm\"][\"mb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=Module[\"asm\"][\"nb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=function(){return(_emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=Module[\"asm\"][\"ob\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=Module[\"asm\"][\"pb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=function(){return(_emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=Module[\"asm\"][\"qb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=function(){return(_emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=Module[\"asm\"][\"rb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=function(){return(_emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=Module[\"asm\"][\"sb\"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=Module[\"asm\"][\"tb\"]).apply(null,arguments)};var _emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=function(){return(_emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=Module[\"asm\"][\"ub\"]).apply(null,arguments)};var _emscripten_tls_init=Module[\"_emscripten_tls_init\"]=function(){return(_emscripten_tls_init=Module[\"_emscripten_tls_init\"]=Module[\"asm\"][\"vb\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"wb\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"xb\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"yb\"]).apply(null,arguments)};var dynCall_vi=Module[\"dynCall_vi\"]=function(){return(dynCall_vi=Module[\"dynCall_vi\"]=Module[\"asm\"][\"zb\"]).apply(null,arguments)};var dynCall_v=Module[\"dynCall_v\"]=function(){return(dynCall_v=Module[\"dynCall_v\"]=Module[\"asm\"][\"Ab\"]).apply(null,arguments)};var dynCall_ii=Module[\"dynCall_ii\"]=function(){return(dynCall_ii=Module[\"dynCall_ii\"]=Module[\"asm\"][\"Bb\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;Module[\"PThread\"]=PThread;Module[\"PThread\"]=PThread;Module[\"_pthread_self\"]=_pthread_self;Module[\"wasmMemory\"]=wasmMemory;Module[\"ExitStatus\"]=ExitStatus;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}if(!ENVIRONMENT_IS_PTHREAD)noExitRuntime=true;if(!ENVIRONMENT_IS_PTHREAD)run();\n\n\n return WasmBackendModuleThreadedSimd\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModuleThreadedSimd;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModuleThreadedSimd; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModuleThreadedSimd\"] = WasmBackendModuleThreadedSimd;\n ", "\nvar WasmBackendModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModule) {\n WasmBackendModule = WasmBackendModule || {};\n\nvar Module=typeof WasmBackendModule!==\"undefined\"?WasmBackendModule:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":151,\"maximum\":151+0,\"element\":\"anyfunc\"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"env\":asmLibraryArg,\"wasi_snapshot_preview1\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=exports[\"memory\"];updateGlobalBufferAndViews(wasmMemory.buffer);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}var asmLibraryArg={\"emscripten_notify_memory_growth\":_emscripten_notify_memory_growth,\"fd_close\":_fd_close,\"fd_seek\":_fd_seek,\"fd_write\":_fd_write,\"proc_exit\":_proc_exit,\"roundf\":_roundf};var asm=createWasm();Module[\"asm\"]=asm;var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"init\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"register_tensor\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"dispose_data\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"dispose\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"Abs\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"Add\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"AddN\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"ArgMax\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"AvgPool\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"BatchMatMul\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"ClipByValue\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"Conv2D\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"Conv2DBackpropInput\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Cos\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"CropAndResize\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"Cumsum\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"DepthToSpace\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"DepthwiseConv2dNative\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"Equal\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"Exp\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"FlipLeftRight\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Floor\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"FloorDiv\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"FusedBatchNorm\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"FusedConv2D\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"FusedDepthwiseConv2D\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"Gather\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"GatherNd\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"Greater\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"GreaterEqual\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"LeakyRelu\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"Less\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"LessEqual\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"Log\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"LogicalAnd\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"Max\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"MaxPool\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"Maximum\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"Mean\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"Min\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"Minimum\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"Multiply\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"Neg\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"NonMaxSuppressionV3\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"NonMaxSuppressionV4\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"NonMaxSuppressionV5\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"NotEqual\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"OneHot\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"PadV2\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"Pow\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"Prelu\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Prod\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"RealDiv\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Relu\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Relu6\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"ResizeBilinear\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Reverse\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"RotateWithOffset\"]).apply(null,arguments)};var _Round=Module[\"_Round\"]=function(){return(_Round=Module[\"_Round\"]=Module[\"asm\"][\"Round\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Rsqrt\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"ScatterNd\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"SelectV2\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Sigmoid\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Sin\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Softmax\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Sqrt\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Square\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"SquaredDifference\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"StridedSlice\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Sub\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sum\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Tanh\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Tile\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"TopK\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Transpose\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"_FusedMatMul\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"malloc\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"free\"]).apply(null,arguments)};var __start=Module[\"__start\"]=function(){return(__start=Module[\"__start\"]=Module[\"asm\"][\"_start\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"stackSave\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"stackAlloc\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"stackRestore\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module[\"__start\"];try{entryFunction();var ret=0;exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e==\"unwind\"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e===\"object\"&&e.stack){toLog=[e,e.stack]}err(\"exception thrown: \"+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(shouldRunNow)callMain(args);postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}quit_(status,new ExitStatus(status))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}var shouldRunNow=true;if(Module[\"noInitialRun\"])shouldRunNow=false;noExitRuntime=true;run();\n\n\n return WasmBackendModule\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModule;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModule; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModule\"] = WasmBackendModule;\n ", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export const wasmWorkerContents = 'var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module[\"instantiateWasm\"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);Module[\"wasmModule\"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd===\"load\"){Module[\"DYNAMIC_BASE\"]=e.data.DYNAMIC_BASE;Module[\"DYNAMICTOP_PTR\"]=e.data.DYNAMICTOP_PTR;Module[\"wasmModule\"]=e.data.wasmModule;Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob===\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({\"cmd\":\"loaded\"})}else if(e.data.cmd===\"objectTransfer\"){Module[\"PThread\"].receiveObjectTransfer(e.data)}else if(e.data.cmd===\"run\"){Module[\"__performance_now_clock_drift\"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module[\"__register_pthread_ptr\"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module[\"establishStackSpace\"](top,max);Module[\"_emscripten_tls_init\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].setThreadStatus(Module[\"_pthread_self\"](),1);try{var result=Module[\"dynCall_ii\"](e.data.start_routine,e.data.arg);if(!Module[\"getNoExitRuntime\"]())Module[\"PThread\"].threadExit(result)}catch(ex){if(ex===\"Canceled!\"){Module[\"PThread\"].threadCancel()}else if(ex!=\"unwind\"){Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+4>>2,ex instanceof Module[\"ExitStatus\"]?ex.status:-2);Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+0>>2,1);Module[\"_emscripten_futex_wake\"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module[\"ExitStatus\"]))throw ex}}}else if(e.data.cmd===\"cancel\"){if(threadInfoStruct){Module[\"PThread\"].threadCancel()}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processThreadQueue\"){if(threadInfoStruct){Module[\"_emscripten_current_thread_process_queued_calls\"]()}}else{err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){err(\"worker.js onmessage() captured an uncaught exception: \"+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require(\"worker_threads\");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",function(data){onmessage({data:data})});var nodeFS=require(\"fs\");var nodeRead=function(filename){return nodeFS.readFileSync(filename,\"utf8\")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance===\"undefined\"){performance={now:function(){return Date.now()}}}}';", null, null, null, "export * from './drawContour';\nexport * from './drawDetections';\nexport * from './drawFaceExpressions';\nexport * from './DrawBox';\nexport * from './DrawFaceLandmarks';\nexport * from './DrawTextField';\n", "import { Point } from '../classes/index';\n\nexport function drawContour(\n ctx: CanvasRenderingContext2D,\n points: Point[],\n isClosed: boolean = false,\n) {\n ctx.beginPath();\n\n points.slice(1).forEach(({ x, y }, prevIdx) => {\n const from = points[prevIdx];\n ctx.moveTo(from.x, from.y);\n ctx.lineTo(x, y);\n });\n\n if (isClosed) {\n const from = points[points.length - 1];\n const to = points[0];\n if (!from || !to) {\n return;\n }\n\n ctx.moveTo(from.x, from.y);\n ctx.lineTo(to.x, to.y);\n }\n\n ctx.stroke();\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { Point } from '../classes/index';\nimport { Dimensions, IDimensions } from '../classes/Dimensions';\n\nexport function isTensor(tensor: any, dim: number) {\n return tensor instanceof tf.Tensor && tensor.shape.length === dim;\n}\n\nexport function isTensor1D(tensor: any): tensor is tf.Tensor1D {\n return isTensor(tensor, 1);\n}\n\nexport function isTensor2D(tensor: any): tensor is tf.Tensor2D {\n return isTensor(tensor, 2);\n}\n\nexport function isTensor3D(tensor: any): tensor is tf.Tensor3D {\n return isTensor(tensor, 3);\n}\n\nexport function isTensor4D(tensor: any): tensor is tf.Tensor4D {\n return isTensor(tensor, 4);\n}\n\nexport function isFloat(num: number) {\n return num % 1 !== 0;\n}\n\nexport function isEven(num: number) {\n return num % 2 === 0;\n}\n\nexport function round(num: number, prec: number = 2) {\n const f = 10 ** prec;\n return Math.floor(num * f) / f;\n}\n\nexport function isDimensions(obj: any): boolean {\n return obj && obj.width && obj.height;\n}\n\nexport function computeReshapedDimensions({ width, height }: IDimensions, inputSize: number) {\n const scale = inputSize / Math.max(height, width);\n return new Dimensions(Math.round(width * scale), Math.round(height * scale));\n}\n\nexport function getCenterPoint(pts: Point[]): Point {\n return pts.reduce((sum, pt) => sum.add(pt), new Point(0, 0))\n .div(new Point(pts.length, pts.length));\n}\n\nexport function range(num: number, start: number, step: number): number[] {\n return Array(num).fill(0).map((_, i) => start + (i * step));\n}\n\nexport function isValidNumber(num: any) {\n // eslint-disable-next-line no-mixed-operators\n return !!num && (num !== Infinity) && (num !== -Infinity) && !Number.isNaN(num) || num === 0;\n}\n\nexport function isValidProbablitiy(num: any) {\n return isValidNumber(num) && num >= 0 && num <= 1.0;\n}\n", "import { isValidNumber } from '../utils/index';\n\nexport interface IDimensions {\n width: number\n height: number\n}\n\nexport class Dimensions implements IDimensions {\n private _width: number\n\n private _height: number\n\n constructor(width: number, height: number) {\n if (!isValidNumber(width) || !isValidNumber(height)) {\n throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({ width, height })}`);\n }\n\n this._width = width;\n this._height = height;\n }\n\n public get width(): number { return this._width; }\n\n public get height(): number { return this._height; }\n\n public reverse(): Dimensions {\n return new Dimensions(1 / this.width, 1 / this.height);\n }\n}\n", "export interface IPoint {\n x: number\n y: number\n}\n\nexport class Point implements IPoint {\n private _x: number\n\n private _y: number\n\n constructor(x: number, y: number) {\n this._x = x;\n this._y = y;\n }\n\n get x(): number { return this._x; }\n\n get y(): number { return this._y; }\n\n public add(pt: IPoint): Point {\n return new Point(this.x + pt.x, this.y + pt.y);\n }\n\n public sub(pt: IPoint): Point {\n return new Point(this.x - pt.x, this.y - pt.y);\n }\n\n public mul(pt: IPoint): Point {\n return new Point(this.x * pt.x, this.y * pt.y);\n }\n\n public div(pt: IPoint): Point {\n return new Point(this.x / pt.x, this.y / pt.y);\n }\n\n public abs(): Point {\n return new Point(Math.abs(this.x), Math.abs(this.y));\n }\n\n public magnitude(): number {\n return Math.sqrt((this.x ** 2) + (this.y ** 2));\n }\n\n public floor(): Point {\n return new Point(Math.floor(this.x), Math.floor(this.y));\n }\n}\n", "import { isDimensions, isValidNumber } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { IDimensions } from './Dimensions';\nimport { Point } from './Point';\nimport { IRect } from './Rect';\n\nexport class Box implements IBoundingBox, IRect {\n public static isRect(rect: any): boolean {\n return !!rect && [rect.x, rect.y, rect.width, rect.height].every(isValidNumber);\n }\n\n public static assertIsValidBox(box: any, callee: string, allowNegativeDimensions: boolean = false) {\n if (!Box.isRect(box)) {\n throw new Error(`${callee} - invalid box: ${JSON.stringify(box)}, expected object with properties x, y, width, height`);\n }\n\n if (!allowNegativeDimensions && (box.width < 0 || box.height < 0)) {\n throw new Error(`${callee} - width (${box.width}) and height (${box.height}) must be positive numbers`);\n }\n }\n\n private _x: number\n\n private _y: number\n\n private _width: number\n\n private _height: number\n\n constructor(_box: IBoundingBox | IRect, allowNegativeDimensions: boolean = true) {\n const box = (_box || {}) as any;\n\n const isBbox = [box.left, box.top, box.right, box.bottom].every(isValidNumber);\n const isRect = [box.x, box.y, box.width, box.height].every(isValidNumber);\n\n if (!isRect && !isBbox) {\n throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(box)}`);\n }\n\n const [x, y, width, height] = isRect\n ? [box.x, box.y, box.width, box.height]\n : [box.left, box.top, box.right - box.left, box.bottom - box.top];\n\n Box.assertIsValidBox({\n x, y, width, height,\n }, 'Box.constructor', allowNegativeDimensions);\n\n this._x = x;\n this._y = y;\n this._width = width;\n this._height = height;\n }\n\n public get x(): number { return this._x; }\n\n public get y(): number { return this._y; }\n\n public get width(): number { return this._width; }\n\n public get height(): number { return this._height; }\n\n public get left(): number { return this.x; }\n\n public get top(): number { return this.y; }\n\n public get right(): number { return this.x + this.width; }\n\n public get bottom(): number { return this.y + this.height; }\n\n public get area(): number { return this.width * this.height; }\n\n public get topLeft(): Point { return new Point(this.left, this.top); }\n\n public get topRight(): Point { return new Point(this.right, this.top); }\n\n public get bottomLeft(): Point { return new Point(this.left, this.bottom); }\n\n public get bottomRight(): Point { return new Point(this.right, this.bottom); }\n\n public round(): Box {\n const [x, y, width, height] = [this.x, this.y, this.width, this.height]\n .map((val) => Math.round(val));\n return new Box({\n x, y, width, height,\n });\n }\n\n public floor(): Box {\n const [x, y, width, height] = [this.x, this.y, this.width, this.height]\n .map((val) => Math.floor(val));\n return new Box({\n x, y, width, height,\n });\n }\n\n public toSquare(): Box {\n let {\n x, y, width, height,\n } = this;\n const diff = Math.abs(width - height);\n if (width < height) {\n x -= (diff / 2);\n width += diff;\n }\n if (height < width) {\n y -= (diff / 2);\n height += diff;\n }\n\n return new Box({\n x, y, width, height,\n });\n }\n\n public rescale(s: IDimensions | number): Box {\n const scaleX = isDimensions(s) ? (s as IDimensions).width : s as number;\n const scaleY = isDimensions(s) ? (s as IDimensions).height : s as number;\n return new Box({\n x: this.x * scaleX,\n y: this.y * scaleY,\n width: this.width * scaleX,\n height: this.height * scaleY,\n });\n }\n\n public pad(padX: number, padY: number): Box {\n const [x, y, width, height] = [\n this.x - (padX / 2),\n this.y - (padY / 2),\n this.width + padX,\n this.height + padY,\n ];\n return new Box({\n x, y, width, height,\n });\n }\n\n public clipAtImageBorders(imgWidth: number, imgHeight: number): Box {\n const {\n x, y, right, bottom,\n } = this;\n const clippedX = Math.max(x, 0);\n const clippedY = Math.max(y, 0);\n\n const newWidth = right - clippedX;\n const newHeight = bottom - clippedY;\n const clippedWidth = Math.min(newWidth, imgWidth - clippedX);\n const clippedHeight = Math.min(newHeight, imgHeight - clippedY);\n\n return (new Box({\n x: clippedX, y: clippedY, width: clippedWidth, height: clippedHeight,\n })).floor();\n }\n\n public shift(sx: number, sy: number): Box {\n const { width, height } = this;\n const x = this.x + sx;\n const y = this.y + sy;\n\n return new Box({\n x, y, width, height,\n });\n }\n\n public padAtBorders(imageHeight: number, imageWidth: number) {\n const w = this.width + 1;\n const h = this.height + 1;\n\n const dx = 1;\n const dy = 1;\n let edx = w;\n let edy = h;\n\n let x = this.left;\n let y = this.top;\n let ex = this.right;\n let ey = this.bottom;\n\n if (ex > imageWidth) {\n edx = -ex + imageWidth + w;\n ex = imageWidth;\n }\n if (ey > imageHeight) {\n edy = -ey + imageHeight + h;\n ey = imageHeight;\n }\n if (x < 1) {\n edy = 2 - x;\n x = 1;\n }\n if (y < 1) {\n edy = 2 - y;\n y = 1;\n }\n\n return {\n dy, edy, dx, edx, y, ey, x, ex, w, h,\n };\n }\n\n public calibrate(region: Box) {\n return new Box({\n left: this.left + (region.left * this.width),\n top: this.top + (region.top * this.height),\n right: this.right + (region.right * this.width),\n bottom: this.bottom + (region.bottom * this.height),\n }).toSquare().round();\n }\n}\n", "import { Box } from './Box';\n\nexport interface IBoundingBox {\n left: number\n top: number\n right: number\n bottom: number\n}\n\nexport class BoundingBox extends Box implements IBoundingBox {\n constructor(left: number, top: number, right: number, bottom: number, allowNegativeDimensions: boolean = false) {\n super({\n left, top, right, bottom,\n }, allowNegativeDimensions);\n }\n}\n", "import { Box } from './Box';\nimport { Dimensions, IDimensions } from './Dimensions';\nimport { IRect, Rect } from './Rect';\n\nexport class ObjectDetection {\n private _score: number\n\n private _classScore: number\n\n private _className: string\n\n private _box: Rect\n\n private _imageDims: Dimensions\n\n constructor(\n score: number,\n classScore: number,\n className: string,\n relativeBox: IRect,\n imageDims: IDimensions,\n ) {\n this._imageDims = new Dimensions(imageDims.width, imageDims.height);\n this._score = score;\n this._classScore = classScore;\n this._className = className;\n this._box = new Box(relativeBox).rescale(this._imageDims);\n }\n\n public get score(): number { return this._score; }\n\n public get classScore(): number { return this._classScore; }\n\n public get className(): string { return this._className; }\n\n public get box(): Box { return this._box; }\n\n public get imageDims(): Dimensions { return this._imageDims; }\n\n public get imageWidth(): number { return this.imageDims.width; }\n\n public get imageHeight(): number { return this.imageDims.height; }\n\n public get relativeBox(): Box { return new Box(this._box).rescale(this.imageDims.reverse()); }\n\n public forSize(width: number, height: number): ObjectDetection {\n return new ObjectDetection(\n this.score,\n this.classScore,\n this.className,\n this.relativeBox,\n { width, height },\n );\n }\n}\n", "import { Box } from './Box';\nimport { IDimensions } from './Dimensions';\nimport { ObjectDetection } from './ObjectDetection';\nimport { Rect } from './Rect';\n\nexport interface IFaceDetecion {\n score: number\n box: Box\n}\n\nexport class FaceDetection extends ObjectDetection implements IFaceDetecion {\n constructor(\n score: number,\n relativeBox: Rect,\n imageDims: IDimensions,\n ) {\n super(score, score, '', relativeBox, imageDims);\n }\n\n public forSize(width: number, height: number): FaceDetection {\n const { score, relativeBox, imageDims } = super.forSize(width, height);\n return new FaceDetection(score, relativeBox, imageDims);\n }\n}\n", "import { Box } from '../classes/Box';\n\nexport function iou(box1: Box, box2: Box, isIOU: boolean = true) {\n const width = Math.max(0.0, Math.min(box1.right, box2.right) - Math.max(box1.left, box2.left));\n const height = Math.max(0.0, Math.min(box1.bottom, box2.bottom) - Math.max(box1.top, box2.top));\n const interSection = width * height;\n\n return isIOU\n ? interSection / (box1.area + box2.area - interSection)\n : interSection / Math.min(box1.area, box2.area);\n}\n", "import { BoundingBox, IPoint } from '../classes/index';\n\nexport function minBbox(pts: IPoint[]): BoundingBox {\n const xs = pts.map((pt) => pt.x);\n const ys = pts.map((pt) => pt.y);\n const minX = xs.reduce((min, x) => (x < min ? x : min), Infinity);\n const minY = ys.reduce((min, y) => (y < min ? y : min), Infinity);\n const maxX = xs.reduce((max, x) => (max < x ? x : max), 0);\n const maxY = ys.reduce((max, y) => (max < y ? y : max), 0);\n\n return new BoundingBox(minX, minY, maxX, maxY);\n}\n", "import { Box } from '../classes/Box';\nimport { iou } from './iou';\n\nexport function nonMaxSuppression(\n boxes: Box[],\n scores: number[],\n iouThreshold: number,\n isIOU: boolean = true,\n): number[] {\n let indicesSortedByScore = scores\n .map((score, boxIndex) => ({ score, boxIndex }))\n .sort((c1, c2) => c1.score - c2.score)\n .map((c) => c.boxIndex);\n\n const pick: number[] = [];\n\n while (indicesSortedByScore.length > 0) {\n const curr = indicesSortedByScore.pop() as number;\n pick.push(curr);\n\n const indices = indicesSortedByScore;\n\n const outputs: number[] = [];\n for (let i = 0; i < indices.length; i++) {\n const idx = indices[i];\n\n const currBox = boxes[curr];\n const idxBox = boxes[idx];\n\n outputs.push(iou(currBox, idxBox, isIOU));\n }\n\n indicesSortedByScore = indicesSortedByScore.filter(\n (_, j) => outputs[j] <= iouThreshold,\n );\n }\n\n return pick;\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nexport function normalize(x: tf.Tensor4D, meanRgb: number[]): tf.Tensor4D {\n return tf.tidy(() => {\n const [r, g, b] = meanRgb;\n const avg_r = tf.fill([...x.shape.slice(0, 3), 1], r, 'float32');\n const avg_g = tf.fill([...x.shape.slice(0, 3), 1], g, 'float32');\n const avg_b = tf.fill([...x.shape.slice(0, 3), 1], b, 'float32');\n const avg_rgb = tf.concat([avg_r, avg_g, avg_b], 3);\n\n return tf.sub(x, avg_rgb);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\n/**\n * Pads the smaller dimension of an image tensor with zeros, such that width === height.\n *\n * @param imgTensor The image tensor.\n * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on\n * both sides of the minor dimension oof the image.\n * @returns The padded tensor with width === height.\n */\nexport function padToSquare(\n imgTensor: tf.Tensor4D,\n isCenterImage: boolean = false,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const [height, width] = imgTensor.shape.slice(1);\n if (height === width) {\n return imgTensor;\n }\n\n const dimDiff = Math.abs(height - width);\n const paddingAmount = Math.round(dimDiff * (isCenterImage ? 0.5 : 1));\n const paddingAxis = height > width ? 2 : 1;\n\n const createPaddingTensor = (paddingAmountLocal: number): tf.Tensor => {\n const paddingTensorShape = imgTensor.shape.slice();\n paddingTensorShape[paddingAxis] = paddingAmountLocal;\n return tf.fill(paddingTensorShape, 0, 'float32');\n };\n\n const paddingTensorAppend = createPaddingTensor(paddingAmount);\n const remainingPaddingAmount = dimDiff - (paddingTensorAppend.shape[paddingAxis] as number);\n\n const paddingTensorPrepend = isCenterImage && remainingPaddingAmount\n ? createPaddingTensor(remainingPaddingAmount)\n : null;\n\n const tensorsToStack = [\n paddingTensorPrepend,\n imgTensor,\n paddingTensorAppend,\n ]\n .filter((t) => !!t)\n // .map((t: tf.Tensor) => t.toFloat()) as tf.Tensor4D[]\n .map((t: tf.Tensor) => tf.cast(t, 'float32')) as tf.Tensor4D[];\n return tf.concat(tensorsToStack, paddingAxis);\n });\n}\n", "export function shuffleArray(inputArray: any[]) {\n const array = inputArray.slice();\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const x = array[i];\n array[i] = array[j];\n array[j] = x;\n }\n return array;\n}\n", "export * from './iou';\nexport * from './minBbox';\nexport * from './nonMaxSuppression';\nexport * from './normalize';\nexport * from './padToSquare';\nexport * from './shuffleArray';\n\nexport function sigmoid(x: number) {\n return 1 / (1 + Math.exp(-x));\n}\n\nexport function inverseSigmoid(x: number) {\n return Math.log(x / (1 - x));\n}\n", "import { Box } from './Box';\n\nexport interface IRect {\n x: number\n y: number\n width: number\n height: number\n}\n\nexport class Rect extends Box implements IRect {\n constructor(x: number, y: number, width: number, height: number, allowNegativeDimensions: boolean = false) {\n super({\n x, y, width, height,\n }, allowNegativeDimensions);\n }\n}\n", "import { minBbox } from '../ops/index';\nimport { getCenterPoint } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { Box } from './Box';\nimport { Dimensions, IDimensions } from './Dimensions';\nimport { FaceDetection } from './FaceDetection';\nimport { Point } from './Point';\nimport { IRect, Rect } from './Rect';\n\n// face alignment constants\nconst relX = 0.5;\nconst relY = 0.43;\nconst relScale = 0.45;\n\nexport interface IFaceLandmarks {\n positions: Point[]\n shift: Point\n}\n\nexport class FaceLandmarks implements IFaceLandmarks {\n protected _shift: Point\n\n protected _positions: Point[]\n\n protected _imgDims: Dimensions\n\n constructor(\n relativeFaceLandmarkPositions: Point[],\n imgDims: IDimensions,\n shift: Point = new Point(0, 0),\n ) {\n const { width, height } = imgDims;\n this._imgDims = new Dimensions(width, height);\n this._shift = shift;\n this._positions = relativeFaceLandmarkPositions.map(\n (pt) => pt.mul(new Point(width, height)).add(shift),\n );\n }\n\n public get shift(): Point { return new Point(this._shift.x, this._shift.y); }\n\n public get imageWidth(): number { return this._imgDims.width; }\n\n public get imageHeight(): number { return this._imgDims.height; }\n\n public get positions(): Point[] { return this._positions; }\n\n public get relativePositions(): Point[] {\n return this._positions.map(\n (pt) => pt.sub(this._shift).div(new Point(this.imageWidth, this.imageHeight)),\n );\n }\n\n public forSize(width: number, height: number): T {\n return new (this.constructor as any)(\n this.relativePositions,\n { width, height },\n );\n }\n\n public shiftBy(x: number, y: number): T {\n return new (this.constructor as any)(\n this.relativePositions,\n this._imgDims,\n new Point(x, y),\n );\n }\n\n public shiftByPoint(pt: Point): T {\n return this.shiftBy(pt.x, pt.y);\n }\n\n /**\n * Aligns the face landmarks after face detection from the relative positions of the faces\n * bounding box, or it's current shift. This function should be used to align the face images\n * after face detection has been performed, before they are passed to the face recognition net.\n * This will make the computed face descriptor more accurate.\n *\n * @param detection (optional) The bounding box of the face or the face detection result. If\n * no argument was passed the position of the face landmarks are assumed to be relative to\n * it's current shift.\n * @returns The bounding box of the aligned face.\n */\n public align(\n detection?: FaceDetection | IRect | IBoundingBox | null,\n options: { useDlibAlignment?: boolean, minBoxPadding?: number } = { },\n ): Box {\n if (detection) {\n const box = detection instanceof FaceDetection\n ? detection.box.floor()\n : new Box(detection);\n\n return this.shiftBy(box.x, box.y).align(null, options);\n }\n\n const { useDlibAlignment, minBoxPadding } = { useDlibAlignment: false, minBoxPadding: 0.2, ...options };\n\n if (useDlibAlignment) {\n return this.alignDlib();\n }\n\n return this.alignMinBbox(minBoxPadding);\n }\n\n private alignDlib(): Box {\n const centers = this.getRefPointsForAlignment();\n\n const [leftEyeCenter, rightEyeCenter, mouthCenter] = centers;\n const distToMouth = (pt: Point) => mouthCenter.sub(pt).magnitude();\n const eyeToMouthDist = (distToMouth(leftEyeCenter) + distToMouth(rightEyeCenter)) / 2;\n\n const size = Math.floor(eyeToMouthDist / relScale);\n\n const refPoint = getCenterPoint(centers);\n // TODO: pad in case rectangle is out of image bounds\n const x = Math.floor(Math.max(0, refPoint.x - (relX * size)));\n const y = Math.floor(Math.max(0, refPoint.y - (relY * size)));\n\n return new Rect(x, y, Math.min(size, this.imageWidth + x), Math.min(size, this.imageHeight + y));\n }\n\n private alignMinBbox(padding: number): Box {\n const box = minBbox(this.positions);\n return box.pad(box.width * padding, box.height * padding);\n }\n\n protected getRefPointsForAlignment(): Point[] {\n throw new Error('getRefPointsForAlignment not implemented by base class');\n }\n}\n", "import { getCenterPoint } from '../utils/index';\nimport { FaceLandmarks } from './FaceLandmarks';\nimport { Point } from './Point';\n\nexport class FaceLandmarks5 extends FaceLandmarks {\n protected getRefPointsForAlignment(): Point[] {\n const pts = this.positions;\n return [\n pts[0],\n pts[1],\n getCenterPoint([pts[3], pts[4]]),\n ];\n }\n}\n", "import { getCenterPoint } from '../utils/index';\nimport { FaceLandmarks } from './FaceLandmarks';\nimport { Point } from './Point';\n\nexport class FaceLandmarks68 extends FaceLandmarks {\n public getJawOutline(): Point[] {\n return this.positions.slice(0, 17);\n }\n\n public getLeftEyeBrow(): Point[] {\n return this.positions.slice(17, 22);\n }\n\n public getRightEyeBrow(): Point[] {\n return this.positions.slice(22, 27);\n }\n\n public getNose(): Point[] {\n return this.positions.slice(27, 36);\n }\n\n public getLeftEye(): Point[] {\n return this.positions.slice(36, 42);\n }\n\n public getRightEye(): Point[] {\n return this.positions.slice(42, 48);\n }\n\n public getMouth(): Point[] {\n return this.positions.slice(48, 68);\n }\n\n protected getRefPointsForAlignment(): Point[] {\n return [\n this.getLeftEye(),\n this.getRightEye(),\n this.getMouth(),\n ].map(getCenterPoint);\n }\n}\n", "import { round } from '../utils/index';\n\nexport interface IFaceMatch {\n label: string\n distance: number\n}\n\nexport class FaceMatch implements IFaceMatch {\n private _label: string\n\n private _distance: number\n\n constructor(label: string, distance: number) {\n this._label = label;\n this._distance = distance;\n }\n\n public get label(): string { return this._label; }\n\n public get distance(): number { return this._distance; }\n\n public toString(withDistance: boolean = true): string {\n return `${this.label}${withDistance ? ` (${round(this.distance)})` : ''}`;\n }\n}\n", "import { isValidNumber } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { Box } from './Box';\nimport { IRect } from './Rect';\n\nexport class LabeledBox extends Box {\n public static assertIsValidLabeledBox(box: any, callee: string) {\n Box.assertIsValidBox(box, callee);\n\n if (!isValidNumber(box.label)) {\n throw new Error(`${callee} - expected property label (${box.label}) to be a number`);\n }\n }\n\n private _label: number\n\n constructor(box: IBoundingBox | IRect | any, label: number) {\n super(box);\n this._label = label;\n }\n\n public get label(): number { return this._label; }\n}\n", "export class LabeledFaceDescriptors {\n private _label: string\n\n private _descriptors: Float32Array[]\n\n constructor(label: string, descriptors: Float32Array[]) {\n if (!(typeof label === 'string')) {\n throw new Error('LabeledFaceDescriptors - constructor expected label to be a string');\n }\n\n if (!Array.isArray(descriptors) || descriptors.some((desc) => !(desc instanceof Float32Array))) {\n throw new Error('LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array');\n }\n\n this._label = label;\n this._descriptors = descriptors;\n }\n\n public get label(): string { return this._label; }\n\n public get descriptors(): Float32Array[] { return this._descriptors; }\n\n public toJSON(): any {\n return {\n label: this.label,\n descriptors: this.descriptors.map((d) => Array.from(d)),\n };\n }\n\n public static fromJSON(json: any): LabeledFaceDescriptors {\n const descriptors = json.descriptors.map((d: any) => new Float32Array(d));\n return new LabeledFaceDescriptors(json.label, descriptors);\n }\n}\n", "import { isValidProbablitiy } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { LabeledBox } from './LabeledBox';\nimport { IRect } from './Rect';\n\nexport class PredictedBox extends LabeledBox {\n public static assertIsValidPredictedBox(box: any, callee: string) {\n LabeledBox.assertIsValidLabeledBox(box, callee);\n\n if (\n !isValidProbablitiy(box.score)\n || !isValidProbablitiy(box.classScore)\n ) {\n throw new Error(`${callee} - expected properties score (${box.score}) and (${box.classScore}) to be a number between [0, 1]`);\n }\n }\n\n private _score: number\n\n private _classScore: number\n\n constructor(box: IBoundingBox | IRect | any, label: number, score: number, classScore: number) {\n super(box, label);\n this._score = score;\n this._classScore = classScore;\n }\n\n public get score(): number { return this._score; }\n\n public get classScore(): number { return this._classScore; }\n}\n", "import { FaceDetection } from '../classes/FaceDetection';\n\nexport type WithFaceDetection = TSource & {\n detection: FaceDetection\n}\n\nexport function isWithFaceDetection(obj: any): obj is WithFaceDetection<{}> {\n return obj.detection instanceof FaceDetection;\n}\n\nexport function extendWithFaceDetection<\n TSource\n>(\n sourceObj: TSource,\n detection: FaceDetection,\n): WithFaceDetection {\n const extension = { detection };\n return { ...sourceObj, ...extension };\n}\n", "import { Environment } from './types';\n\nexport function createBrowserEnv(): Environment {\n const fetch = window.fetch;\n if (!fetch) throw new Error('fetch - missing fetch implementation for browser environment');\n\n const readFile = () => {\n throw new Error('readFile - filesystem not available for browser environment');\n };\n\n return {\n Canvas: HTMLCanvasElement,\n CanvasRenderingContext2D,\n Image: HTMLImageElement,\n ImageData,\n Video: HTMLVideoElement,\n createCanvasElement: () => document.createElement('canvas'),\n createImageElement: () => document.createElement('img'),\n fetch,\n readFile,\n };\n}\n", "import { FileSystem } from './types';\n\nexport function createFileSystem(fs?: any): FileSystem {\n let requireFsError = '';\n\n if (!fs) {\n try {\n // eslint-disable-next-line global-require\n fs = require('fs');\n } catch (err) {\n requireFsError = err.toString();\n }\n }\n\n const readFile = fs\n ? (filePath: string) => new Promise((resolve, reject) => {\n fs.readFile(filePath, (err: any, buffer: Buffer) => (err ? reject(err) : resolve(buffer)));\n })\n : () => {\n throw new Error(`readFile - failed to require fs in nodejs environment with error: ${requireFsError}`);\n };\n\n return {\n readFile,\n };\n}\n", "/* eslint-disable max-classes-per-file */\nimport { createFileSystem } from './createFileSystem';\nimport { Environment } from './types';\n\nexport function createNodejsEnv(): Environment {\n // eslint-disable-next-line dot-notation\n const Canvas = global['Canvas'] || global.HTMLCanvasElement;\n const Image = global.Image || global.HTMLImageElement;\n\n const createCanvasElement = () => {\n if (Canvas) return new Canvas();\n throw new Error('createCanvasElement - missing Canvas implementation for nodejs environment');\n };\n\n const createImageElement = () => {\n if (Image) return new Image();\n throw new Error('createImageElement - missing Image implementation for nodejs environment');\n };\n\n const fetch = global.fetch;\n // if (!fetch) throw new Error('fetch - missing fetch implementation for nodejs environment');\n\n const fileSystem = createFileSystem();\n\n return {\n Canvas: Canvas || class {},\n CanvasRenderingContext2D: global.CanvasRenderingContext2D || class {},\n Image: Image || class {},\n ImageData: global.ImageData || class {},\n Video: global.HTMLVideoElement || class {},\n createCanvasElement,\n createImageElement,\n fetch,\n ...fileSystem,\n };\n}\n", "export function isBrowser(): boolean {\n return typeof window === 'object'\n && typeof document !== 'undefined'\n && typeof HTMLImageElement !== 'undefined'\n && typeof HTMLCanvasElement !== 'undefined'\n && typeof HTMLVideoElement !== 'undefined'\n && typeof ImageData !== 'undefined'\n && typeof CanvasRenderingContext2D !== 'undefined';\n}\n", "import { createBrowserEnv } from './createBrowserEnv';\nimport { createFileSystem } from './createFileSystem';\nimport { createNodejsEnv } from './createNodejsEnv';\nimport { isBrowser } from './isBrowser';\nimport { isNodejs } from './isNodejs';\nimport { Environment } from './types';\n\nlet environment: Environment | null;\n\nfunction getEnv(): Environment {\n if (!environment) {\n throw new Error('getEnv - environment is not defined, check isNodejs() and isBrowser()');\n }\n return environment;\n}\n\nfunction setEnv(env: Environment) {\n environment = env;\n}\n\nfunction initialize() {\n // check for isBrowser() first to prevent electron renderer process\n // to be initialized with wrong environment due to isNodejs() returning true\n if (isBrowser()) return setEnv(createBrowserEnv());\n if (isNodejs()) return setEnv(createNodejsEnv());\n return null;\n}\n\nfunction monkeyPatch(env: Partial) {\n if (!environment) {\n initialize();\n }\n\n if (!environment) {\n throw new Error('monkeyPatch - environment is not defined, check isNodejs() and isBrowser()');\n }\n\n const { Canvas = environment.Canvas, Image = environment.Image } = env;\n environment.Canvas = Canvas;\n environment.Image = Image;\n environment.createCanvasElement = env.createCanvasElement || (() => new Canvas());\n environment.createImageElement = env.createImageElement || (() => new Image());\n\n environment.ImageData = env.ImageData || environment.ImageData;\n environment.Video = env.Video || environment.Video;\n environment.fetch = env.fetch || environment.fetch;\n environment.readFile = env.readFile || environment.readFile;\n}\n\nexport const env = {\n getEnv,\n setEnv,\n initialize,\n createBrowserEnv,\n createFileSystem,\n createNodejsEnv,\n monkeyPatch,\n isBrowser,\n isNodejs,\n};\n\ninitialize();\n\nexport * from './types';\n", "import { env } from '../env/index';\n\nexport function resolveInput(arg: string | any) {\n if (!env.isNodejs() && typeof arg === 'string') {\n return document.getElementById(arg);\n }\n return arg;\n}\n", "import { env } from '../env/index';\nimport { resolveInput } from './resolveInput';\n\nexport function getContext2dOrThrow(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D): CanvasRenderingContext2D {\n const { Canvas, CanvasRenderingContext2D } = env.getEnv();\n\n if (canvasArg instanceof CanvasRenderingContext2D) {\n return canvasArg;\n }\n\n const canvas = resolveInput(canvasArg);\n\n if (!(canvas instanceof Canvas)) {\n throw new Error('resolveContext2d - expected canvas to be of instance of Canvas');\n }\n\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n throw new Error('resolveContext2d - canvas 2d context is null');\n }\n\n return ctx;\n}\n", "/* eslint-disable max-classes-per-file */\nimport { IDimensions, IPoint } from '../classes/index';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { resolveInput } from '../dom/resolveInput';\n\n// eslint-disable-next-line no-shadow\nexport enum AnchorPosition {\n // eslint-disable-next-line no-unused-vars\n TOP_LEFT = 'TOP_LEFT',\n // eslint-disable-next-line no-unused-vars\n TOP_RIGHT = 'TOP_RIGHT',\n // eslint-disable-next-line no-unused-vars\n BOTTOM_LEFT = 'BOTTOM_LEFT',\n // eslint-disable-next-line no-unused-vars\n BOTTOM_RIGHT = 'BOTTOM_RIGHT'\n}\n\nexport interface IDrawTextFieldOptions {\n anchorPosition?: AnchorPosition\n backgroundColor?: string\n fontColor?: string\n fontSize?: number\n fontStyle?: string\n padding?: number\n}\n\nexport class DrawTextFieldOptions implements IDrawTextFieldOptions {\n public anchorPosition: AnchorPosition\n\n public backgroundColor: string\n\n public fontColor: string\n\n public fontSize: number\n\n public fontStyle: string\n\n public padding: number\n\n constructor(options: IDrawTextFieldOptions = {}) {\n const {\n anchorPosition, backgroundColor, fontColor, fontSize, fontStyle, padding,\n } = options;\n this.anchorPosition = anchorPosition || AnchorPosition.TOP_LEFT;\n this.backgroundColor = backgroundColor || 'rgba(0, 0, 0, 0.5)';\n this.fontColor = fontColor || 'rgba(255, 255, 255, 1)';\n this.fontSize = fontSize || 14;\n this.fontStyle = fontStyle || 'Georgia';\n this.padding = padding || 4;\n }\n}\n\nexport class DrawTextField {\n public text: string[]\n\n public anchor : IPoint\n\n public options: DrawTextFieldOptions\n\n constructor(\n text: string | string[] | DrawTextField,\n anchor: IPoint,\n options: IDrawTextFieldOptions = {},\n ) {\n // eslint-disable-next-line no-nested-ternary\n this.text = typeof text === 'string'\n ? [text]\n : (text instanceof DrawTextField ? text.text : text);\n this.anchor = anchor;\n this.options = new DrawTextFieldOptions(options);\n }\n\n measureWidth(ctx: CanvasRenderingContext2D): number {\n const { padding } = this.options;\n return this.text.map((l) => ctx.measureText(l).width).reduce((w0, w1) => (w0 < w1 ? w1 : w0), 0) + (2 * padding);\n }\n\n measureHeight(): number {\n const { fontSize, padding } = this.options;\n return this.text.length * fontSize + (2 * padding);\n }\n\n getUpperLeft(ctx: CanvasRenderingContext2D, canvasDims?: IDimensions): IPoint {\n const { anchorPosition } = this.options;\n const isShiftLeft = anchorPosition === AnchorPosition.BOTTOM_RIGHT || anchorPosition === AnchorPosition.TOP_RIGHT;\n const isShiftTop = anchorPosition === AnchorPosition.BOTTOM_LEFT || anchorPosition === AnchorPosition.BOTTOM_RIGHT;\n\n const textFieldWidth = this.measureWidth(ctx);\n const textFieldHeight = this.measureHeight();\n const x = (isShiftLeft ? this.anchor.x - textFieldWidth : this.anchor.x);\n const y = isShiftTop ? this.anchor.y - textFieldHeight : this.anchor.y;\n\n // adjust anchor if text box exceeds canvas borders\n if (canvasDims) {\n const { width, height } = canvasDims;\n const newX = Math.max(Math.min(x, width - textFieldWidth), 0);\n const newY = Math.max(Math.min(y, height - textFieldHeight), 0);\n return { x: newX, y: newY };\n }\n return { x, y };\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const canvas = resolveInput(canvasArg);\n const ctx = getContext2dOrThrow(canvas);\n\n const {\n backgroundColor, fontColor, fontSize, fontStyle, padding,\n } = this.options;\n\n ctx.font = `${fontSize}px ${fontStyle}`;\n const maxTextWidth = this.measureWidth(ctx);\n const textHeight = this.measureHeight();\n\n ctx.fillStyle = backgroundColor;\n const upperLeft = this.getUpperLeft(ctx, canvas);\n ctx.fillRect(upperLeft.x, upperLeft.y, maxTextWidth, textHeight);\n\n ctx.fillStyle = fontColor;\n this.text.forEach((textLine, i) => {\n const x = padding + upperLeft.x;\n const y = padding + upperLeft.y + ((i + 1) * fontSize);\n ctx.fillText(textLine, x, y);\n });\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport { Box, IBoundingBox, IRect } from '../classes/index';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport {\n AnchorPosition, DrawTextField, DrawTextFieldOptions, IDrawTextFieldOptions,\n} from './DrawTextField';\n\nexport interface IDrawBoxOptions {\n boxColor?: string\n lineWidth?: number\n drawLabelOptions?: IDrawTextFieldOptions\n label?: string\n}\n\nexport class DrawBoxOptions {\n public boxColor: string\n\n public lineWidth: number\n\n public drawLabelOptions: DrawTextFieldOptions\n\n public label?: string\n\n constructor(options: IDrawBoxOptions = {}) {\n const {\n boxColor, lineWidth, label, drawLabelOptions,\n } = options;\n this.boxColor = boxColor || 'rgba(0, 0, 255, 1)';\n this.lineWidth = lineWidth || 2;\n this.label = label;\n\n const defaultDrawLabelOptions = {\n anchorPosition: AnchorPosition.BOTTOM_LEFT,\n backgroundColor: this.boxColor,\n };\n this.drawLabelOptions = new DrawTextFieldOptions({ ...defaultDrawLabelOptions, ...drawLabelOptions });\n }\n}\n\nexport class DrawBox {\n public box: Box\n\n public options: DrawBoxOptions\n\n constructor(\n box: IBoundingBox | IRect,\n options: IDrawBoxOptions = {},\n ) {\n this.box = new Box(box);\n this.options = new DrawBoxOptions(options);\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const ctx = getContext2dOrThrow(canvasArg);\n\n const { boxColor, lineWidth } = this.options;\n\n const {\n x, y, width, height,\n } = this.box;\n ctx.strokeStyle = boxColor;\n ctx.lineWidth = lineWidth;\n ctx.strokeRect(x, y, width, height);\n\n const { label } = this.options;\n if (label) {\n new DrawTextField([label], { x: x - (lineWidth / 2), y }, this.options.drawLabelOptions).draw(canvasArg);\n }\n }\n}\n", "import { Box, IBoundingBox, IRect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { isWithFaceDetection, WithFaceDetection } from '../factories/WithFaceDetection';\nimport { round } from '../utils/index';\nimport { DrawBox } from './DrawBox';\n\nexport type TDrawDetectionsInput = IRect | IBoundingBox | FaceDetection | WithFaceDetection<{}>\n\nexport function drawDetections(\n canvasArg: string | HTMLCanvasElement,\n detections: TDrawDetectionsInput | Array,\n) {\n const detectionsArray = Array.isArray(detections) ? detections : [detections];\n\n detectionsArray.forEach((det) => {\n // eslint-disable-next-line no-nested-ternary\n const score = det instanceof FaceDetection\n ? det.score\n : (isWithFaceDetection(det) ? det.detection.score : undefined);\n\n // eslint-disable-next-line no-nested-ternary\n const box = det instanceof FaceDetection\n ? det.box\n : (isWithFaceDetection(det) ? det.detection.box : new Box(det));\n\n const label = score ? `${round(score)}` : undefined;\n new DrawBox(box, { label }).draw(canvasArg);\n });\n}\n", "import { env } from '../env/index';\n\nexport function isMediaLoaded(media: HTMLImageElement | HTMLVideoElement) : boolean {\n const { Image, Video } = env.getEnv();\n\n return (media instanceof Image && media.complete)\n || (media instanceof Video && media.readyState >= 3);\n}\n", "import { env } from '../env/index';\nimport { isMediaLoaded } from './isMediaLoaded';\n\nexport function awaitMediaLoaded(media: HTMLImageElement | HTMLVideoElement | HTMLCanvasElement) {\n // eslint-disable-next-line consistent-return\n return new Promise((resolve, reject) => {\n if (media instanceof env.getEnv().Canvas || isMediaLoaded(media)) {\n return resolve(null);\n }\n\n function onError(e: Event) {\n if (!e.currentTarget) return;\n // eslint-disable-next-line no-use-before-define\n e.currentTarget.removeEventListener('load', onLoad);\n e.currentTarget.removeEventListener('error', onError);\n reject(e);\n }\n\n function onLoad(e: Event) {\n if (!e.currentTarget) return;\n e.currentTarget.removeEventListener('load', onLoad);\n e.currentTarget.removeEventListener('error', onError);\n resolve(e);\n }\n\n media.addEventListener('load', onLoad);\n media.addEventListener('error', onError);\n });\n}\n", "import { env } from '../env/index';\n\nexport function bufferToImage(buf: Blob): Promise {\n return new Promise((resolve, reject) => {\n if (!(buf instanceof Blob)) reject(new Error('bufferToImage - expected buf to be of type: Blob'));\n const reader = new FileReader();\n reader.onload = () => {\n if (typeof reader.result !== 'string') reject(new Error('bufferToImage - expected reader.result to be a string, in onload'));\n const img = env.getEnv().createImageElement();\n img.onload = () => resolve(img);\n img.onerror = reject;\n img.src = reader.result as string;\n };\n reader.onerror = reject;\n reader.readAsDataURL(buf);\n });\n}\n", "import { Dimensions, IDimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\n\nexport function getMediaDimensions(input: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | IDimensions): Dimensions {\n const { Image, Video } = env.getEnv();\n\n if (input instanceof Image) {\n return new Dimensions(input.naturalWidth, input.naturalHeight);\n }\n if (input instanceof Video) {\n return new Dimensions(input.videoWidth, input.videoHeight);\n }\n return new Dimensions(input.width, input.height);\n}\n", "import { IDimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { getMediaDimensions } from './getMediaDimensions';\nimport { isMediaLoaded } from './isMediaLoaded';\n\nexport function createCanvas({ width, height }: IDimensions): HTMLCanvasElement {\n const { createCanvasElement } = env.getEnv();\n const canvas = createCanvasElement();\n canvas.width = width;\n canvas.height = height;\n return canvas;\n}\n\nexport function createCanvasFromMedia(media: HTMLImageElement | HTMLVideoElement | ImageData, dims?: IDimensions): HTMLCanvasElement {\n const { ImageData } = env.getEnv();\n\n if (!(media instanceof ImageData) && !isMediaLoaded(media)) {\n throw new Error('createCanvasFromMedia - media has not finished loading yet');\n }\n\n const { width, height } = dims || getMediaDimensions(media);\n const canvas = createCanvas({ width, height });\n\n if (media instanceof ImageData) {\n getContext2dOrThrow(canvas).putImageData(media, 0, 0);\n } else {\n getContext2dOrThrow(canvas).drawImage(media, 0, 0, width, height);\n }\n return canvas;\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { env } from '../env/index';\nimport { isTensor4D } from '../utils/index';\n\nexport async function imageTensorToCanvas(\n imgTensor: tf.Tensor,\n canvas?: HTMLCanvasElement,\n): Promise {\n const targetCanvas = canvas || env.getEnv().createCanvasElement();\n\n const [height, width, numChannels] = imgTensor.shape.slice(isTensor4D(imgTensor) ? 1 : 0);\n const imgTensor3D = tf.tidy(() => imgTensor.as3D(height, width, numChannels).toInt());\n await tf.browser.toPixels(imgTensor3D, targetCanvas);\n\n imgTensor3D.dispose();\n\n return targetCanvas;\n}\n", "import { env } from '../env/index';\n\nexport function isMediaElement(input: any) {\n const { Image, Canvas, Video } = env.getEnv();\n\n return input instanceof Image\n || input instanceof Canvas\n || input instanceof Video;\n}\n", "import { env } from '../env/index';\nimport { createCanvas, createCanvasFromMedia } from './createCanvas';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { getMediaDimensions } from './getMediaDimensions';\n\nexport function imageToSquare(input: HTMLImageElement | HTMLCanvasElement, inputSize: number, centerImage: boolean = false) {\n const { Image, Canvas } = env.getEnv();\n\n if (!(input instanceof Image || input instanceof Canvas)) {\n throw new Error('imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement');\n }\n\n const dims = getMediaDimensions(input);\n const scale = inputSize / Math.max(dims.height, dims.width);\n const width = scale * dims.width;\n const height = scale * dims.height;\n\n const targetCanvas = createCanvas({ width: inputSize, height: inputSize });\n const inputCanvas = input instanceof Canvas ? input : createCanvasFromMedia(input);\n\n const offset = Math.abs(width - height) / 2;\n const dx = centerImage && width < height ? offset : 0;\n const dy = centerImage && height < width ? offset : 0;\n getContext2dOrThrow(targetCanvas).drawImage(inputCanvas, dx, dy, width, height);\n\n return targetCanvas;\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { Dimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\nimport { padToSquare } from '../ops/padToSquare';\nimport {\n computeReshapedDimensions, isTensor3D, isTensor4D, range,\n} from '../utils/index';\nimport { createCanvasFromMedia } from './createCanvas';\nimport { imageToSquare } from './imageToSquare';\nimport { TResolvedNetInput } from './types';\n\nexport class NetInput {\n private _imageTensors: Array = []\n\n private _canvases: HTMLCanvasElement[] = []\n\n private _batchSize: number\n\n private _treatAsBatchInput: boolean = false\n\n private _inputDimensions: number[][] = []\n\n private _inputSize: number\n\n constructor(\n inputs: Array,\n treatAsBatchInput: boolean = false,\n ) {\n if (!Array.isArray(inputs)) {\n throw new Error(`NetInput.constructor - expected inputs to be an Array of TResolvedNetInput or to be instanceof tf.Tensor4D, instead have ${inputs}`);\n }\n\n this._treatAsBatchInput = treatAsBatchInput;\n this._batchSize = inputs.length;\n\n inputs.forEach((input, idx) => {\n if (isTensor3D(input)) {\n this._imageTensors[idx] = input;\n this._inputDimensions[idx] = input.shape;\n return;\n }\n\n if (isTensor4D(input)) {\n const batchSize = (input as any).shape[0];\n if (batchSize !== 1) {\n throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);\n }\n\n this._imageTensors[idx] = input;\n this._inputDimensions[idx] = (input as any).shape.slice(1);\n return;\n }\n\n const canvas = (input as any) instanceof env.getEnv().Canvas ? input : createCanvasFromMedia(input);\n this._canvases[idx] = canvas;\n this._inputDimensions[idx] = [canvas.height, canvas.width, 3];\n });\n }\n\n public get imageTensors(): Array {\n return this._imageTensors;\n }\n\n public get canvases(): HTMLCanvasElement[] {\n return this._canvases;\n }\n\n public get isBatchInput(): boolean {\n return this.batchSize > 1 || this._treatAsBatchInput;\n }\n\n public get batchSize(): number {\n return this._batchSize;\n }\n\n public get inputDimensions(): number[][] {\n return this._inputDimensions;\n }\n\n public get inputSize(): number | undefined {\n return this._inputSize;\n }\n\n public get reshapedInputDimensions(): Dimensions[] {\n return range(this.batchSize, 0, 1).map(\n (_, batchIdx) => this.getReshapedInputDimensions(batchIdx),\n );\n }\n\n public getInput(batchIdx: number): tf.Tensor3D | tf.Tensor4D | HTMLCanvasElement {\n return this.canvases[batchIdx] || this.imageTensors[batchIdx];\n }\n\n public getInputDimensions(batchIdx: number): number[] {\n return this._inputDimensions[batchIdx];\n }\n\n public getInputHeight(batchIdx: number): number {\n return this._inputDimensions[batchIdx][0];\n }\n\n public getInputWidth(batchIdx: number): number {\n return this._inputDimensions[batchIdx][1];\n }\n\n public getReshapedInputDimensions(batchIdx: number): Dimensions {\n if (typeof this.inputSize !== 'number') {\n throw new Error('getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet');\n }\n\n const width = this.getInputWidth(batchIdx);\n const height = this.getInputHeight(batchIdx);\n return computeReshapedDimensions({ width, height }, this.inputSize);\n }\n\n /**\n * Create a batch tensor from all input canvases and tensors\n * with size [batchSize, inputSize, inputSize, 3].\n *\n * @param inputSize Height and width of the tensor.\n * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on\n * both sides of the minor dimension oof the image.\n * @returns The batch tensor.\n */\n public toBatchTensor(inputSize: number, isCenterInputs: boolean = true): tf.Tensor4D {\n this._inputSize = inputSize;\n\n return tf.tidy(() => {\n const inputTensors = range(this.batchSize, 0, 1).map((batchIdx) => {\n const input = this.getInput(batchIdx);\n\n if (input instanceof tf.Tensor) {\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n let imgTensor = isTensor4D(input) ? input : input.expandDims();\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n imgTensor = padToSquare(imgTensor, isCenterInputs);\n\n if (imgTensor.shape[1] !== inputSize || imgTensor.shape[2] !== inputSize) {\n imgTensor = tf.image.resizeBilinear(imgTensor, [inputSize, inputSize]);\n }\n\n return imgTensor.as3D(inputSize, inputSize, 3);\n }\n\n if (input instanceof env.getEnv().Canvas) {\n return tf.browser.fromPixels(imageToSquare(input, inputSize, isCenterInputs));\n }\n\n throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input}`);\n });\n\n // const batchTensor = tf.stack(inputTensors.map(t => t.toFloat())).as4D(this.batchSize, inputSize, inputSize, 3)\n const batchTensor = tf.stack(inputTensors.map((t) => tf.cast(t, 'float32'))).as4D(this.batchSize, inputSize, inputSize, 3);\n // const batchTensor = tf.stack(inputTensors.map(t => tf.Tensor.as4D(tf.cast(t, 'float32'))), this.batchSize, inputSize, inputSize, 3);\n\n return batchTensor;\n });\n }\n}\n", "import { isTensor3D, isTensor4D } from '../utils/index';\nimport { awaitMediaLoaded } from './awaitMediaLoaded';\nimport { isMediaElement } from './isMediaElement';\nimport { NetInput } from './NetInput';\nimport { resolveInput } from './resolveInput';\nimport { TNetInput } from './types';\n\n/**\n * Validates the input to make sure, they are valid net inputs and awaits all media elements\n * to be finished loading.\n *\n * @param input The input, which can be a media element or an array of different media elements.\n * @returns A NetInput instance, which can be passed into one of the neural networks.\n */\nexport async function toNetInput(inputs: TNetInput): Promise {\n if (inputs instanceof NetInput) {\n return inputs;\n }\n\n const inputArgArray = Array.isArray(inputs)\n ? inputs\n : [inputs];\n\n if (!inputArgArray.length) {\n throw new Error('toNetInput - empty array passed as input');\n }\n\n const getIdxHint = (idx: number) => (Array.isArray(inputs) ? ` at input index ${idx}:` : '');\n\n const inputArray = inputArgArray.map(resolveInput);\n\n inputArray.forEach((input, i) => {\n if (!isMediaElement(input) && !isTensor3D(input) && !isTensor4D(input)) {\n if (typeof inputArgArray[i] === 'string') {\n throw new Error(`toNetInput -${getIdxHint(i)} string passed, but could not resolve HTMLElement for element id ${inputArgArray[i]}`);\n }\n\n throw new Error(`toNetInput -${getIdxHint(i)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`);\n }\n\n if (isTensor4D(input)) {\n // if tf.Tensor4D is passed in the input array, the batch size has to be 1\n const batchSize = input.shape[0];\n if (batchSize !== 1) {\n throw new Error(`toNetInput -${getIdxHint(i)} tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);\n }\n }\n });\n\n // wait for all media elements being loaded\n await Promise.all(\n inputArray.map((input) => isMediaElement(input) && awaitMediaLoaded(input)),\n );\n\n return new NetInput(inputArray, Array.isArray(inputs));\n}\n", "import { FaceDetection } from '../classes/FaceDetection';\nimport { Rect } from '../classes/Rect';\nimport { env } from '../env/index';\nimport { createCanvas } from './createCanvas';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { imageTensorToCanvas } from './imageTensorToCanvas';\nimport { toNetInput } from './toNetInput';\nimport { TNetInput } from './types';\n\n/**\n * Extracts the image regions containing the detected faces.\n *\n * @param input The image that face detection has been performed on.\n * @param detections The face detection results or face bounding boxes for that image.\n * @returns The Canvases of the corresponding image region for each detected face.\n */\nexport async function extractFaces(\n input: TNetInput,\n detections: Array,\n): Promise {\n const { Canvas } = env.getEnv();\n\n let canvas = input as HTMLCanvasElement;\n\n if (!(input instanceof Canvas)) {\n const netInput = await toNetInput(input);\n\n if (netInput.batchSize > 1) {\n throw new Error('extractFaces - batchSize > 1 not supported');\n }\n\n const tensorOrCanvas = netInput.getInput(0);\n canvas = tensorOrCanvas instanceof Canvas\n ? tensorOrCanvas\n : await imageTensorToCanvas(tensorOrCanvas);\n }\n\n const ctx = getContext2dOrThrow(canvas);\n const boxes = detections.map(\n (det) => (det instanceof FaceDetection\n ? det.forSize(canvas.width, canvas.height).box.floor()\n : det),\n )\n .map((box) => box.clipAtImageBorders(canvas.width, canvas.height));\n\n return boxes.map(({\n x, y, width, height,\n }) => {\n const faceImg = createCanvas({ width, height });\n getContext2dOrThrow(faceImg)\n .putImageData(ctx.getImageData(x, y, width, height), 0, 0);\n return faceImg;\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { isTensor3D, isTensor4D } from '../utils/index';\n\n/**\n * Extracts the tensors of the image regions containing the detected faces.\n * Useful if you want to compute the face descriptors for the face images.\n * Using this method is faster then extracting a canvas for each face and\n * converting them to tensors individually.\n *\n * @param imageTensor The image tensor that face detection has been performed on.\n * @param detections The face detection results or face bounding boxes for that image.\n * @returns Tensors of the corresponding image region for each detected face.\n */\nexport async function extractFaceTensors(\n imageTensor: tf.Tensor3D | tf.Tensor4D,\n detections: Array,\n): Promise {\n if (!isTensor3D(imageTensor) && !isTensor4D(imageTensor)) {\n throw new Error('extractFaceTensors - expected image tensor to be 3D or 4D');\n }\n\n if (isTensor4D(imageTensor) && imageTensor.shape[0] > 1) {\n throw new Error('extractFaceTensors - batchSize > 1 not supported');\n }\n\n return tf.tidy(() => {\n const [imgHeight, imgWidth, numChannels] = imageTensor.shape.slice(isTensor4D(imageTensor) ? 1 : 0);\n\n const boxes = detections.map(\n (det) => (det instanceof FaceDetection\n ? det.forSize(imgWidth, imgHeight).box\n : det),\n )\n .map((box) => box.clipAtImageBorders(imgWidth, imgHeight));\n\n const faceTensors = boxes.map(({\n x, y, width, height,\n }) => tf.slice3d(imageTensor.as3D(imgHeight, imgWidth, numChannels), [y, x, 0], [height, width, numChannels]));\n\n return faceTensors;\n });\n}\n", "import { env } from '../env/index';\n\nexport async function fetchOrThrow(\n url: string,\n // eslint-disable-next-line no-undef\n init?: RequestInit,\n): Promise {\n const { fetch } = env.getEnv();\n const res = await fetch(url, init);\n if (!(res.status < 400)) {\n throw new Error(`failed to fetch: (${res.status}) ${res.statusText}, from url: ${res.url}`);\n }\n return res;\n}\n", "import { bufferToImage } from './bufferToImage';\nimport { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchImage(uri: string): Promise {\n const res = await fetchOrThrow(uri);\n const blob = await (res).blob();\n\n if (!blob.type.startsWith('image/')) {\n throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${blob.type}, for url: ${res.url}`);\n }\n return bufferToImage(blob);\n}\n", "import { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchJson(uri: string): Promise {\n return (await fetchOrThrow(uri)).json();\n}\n", "import { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchNetWeights(uri: string): Promise {\n return new Float32Array(await (await fetchOrThrow(uri)).arrayBuffer());\n}\n", "export function getModelUris(uri: string | undefined, defaultModelName: string) {\n const defaultManifestFilename = `${defaultModelName}-weights_manifest.json`;\n\n if (!uri) {\n return {\n modelBaseUri: '',\n manifestUri: defaultManifestFilename,\n };\n }\n\n if (uri === '/') {\n return {\n modelBaseUri: '/',\n manifestUri: `/${defaultManifestFilename}`,\n };\n }\n // eslint-disable-next-line no-nested-ternary\n const protocol = uri.startsWith('http://') ? 'http://' : uri.startsWith('https://') ? 'https://' : '';\n uri = uri.replace(protocol, '');\n\n const parts = uri.split('/').filter((s) => s);\n\n const manifestFile = uri.endsWith('.json')\n ? parts[parts.length - 1]\n : defaultManifestFilename;\n\n let modelBaseUri = protocol + (uri.endsWith('.json') ? parts.slice(0, parts.length - 1) : parts).join('/');\n modelBaseUri = uri.startsWith('/') ? `/${modelBaseUri}` : modelBaseUri;\n\n return {\n modelBaseUri,\n manifestUri: modelBaseUri === '/' ? `/${manifestFile}` : `${modelBaseUri}/${manifestFile}`,\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { getModelUris } from '../common/getModelUris';\nimport { fetchJson } from './fetchJson';\n\nexport async function loadWeightMap(\n uri: string | undefined,\n defaultModelName: string,\n): Promise {\n const { manifestUri, modelBaseUri } = getModelUris(uri, defaultModelName);\n const manifest = await fetchJson(manifestUri);\n // if (manifest['weightsManifest']) manifest = manifest['weightsManifest'];\n return tf.io.loadWeights(manifest, modelBaseUri);\n}\n", "import { IDimensions } from '../classes/index';\nimport { getMediaDimensions } from './getMediaDimensions';\n\nexport function matchDimensions(input: IDimensions, reference: IDimensions, useMediaDimensions: boolean = false) {\n const { width, height } = useMediaDimensions\n ? getMediaDimensions(reference)\n : reference;\n input.width = width;\n input.height = height;\n return { width, height };\n}\n", "import * as tf from '../dist/tfjs.esm';\n\nimport { ParamMapping } from './common/index';\nimport { getModelUris } from './common/getModelUris';\nimport { loadWeightMap } from './dom/index';\nimport { env } from './env/index';\n\nexport abstract class NeuralNetwork {\n protected _params: TNetParams | undefined = undefined\n\n protected _paramMappings: ParamMapping[] = []\n\n public _name: any;\n\n public get params(): TNetParams | undefined { return this._params; }\n\n public get paramMappings(): ParamMapping[] { return this._paramMappings; }\n\n public get isLoaded(): boolean { return !!this.params; }\n\n public getParamFromPath(paramPath: string): tf.Tensor {\n const { obj, objProp } = this.traversePropertyPath(paramPath);\n return obj[objProp];\n }\n\n public reassignParamFromPath(paramPath: string, tensor: tf.Tensor) {\n const { obj, objProp } = this.traversePropertyPath(paramPath);\n obj[objProp].dispose();\n obj[objProp] = tensor;\n }\n\n public getParamList() {\n return this._paramMappings.map(({ paramPath }) => ({\n path: paramPath,\n tensor: this.getParamFromPath(paramPath),\n }));\n }\n\n public getTrainableParams() {\n return this.getParamList().filter((param) => param.tensor instanceof tf.Variable);\n }\n\n public getFrozenParams() {\n return this.getParamList().filter((param) => !(param.tensor instanceof tf.Variable));\n }\n\n public variable() {\n this.getFrozenParams().forEach(({ path, tensor }) => {\n this.reassignParamFromPath(path, tensor.variable());\n });\n }\n\n public freeze() {\n this.getTrainableParams().forEach(({ path, tensor: variable }) => {\n const tensor = tf.tensor(variable.dataSync());\n variable.dispose();\n this.reassignParamFromPath(path, tensor);\n });\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.getParamList().forEach((param) => {\n if (throwOnRedispose && param.tensor.isDisposed) {\n throw new Error(`param tensor has already been disposed for path ${param.path}`);\n }\n param.tensor.dispose();\n });\n this._params = undefined;\n }\n\n public serializeParams(): Float32Array {\n return new Float32Array(\n this.getParamList()\n .map(({ tensor }) => Array.from(tensor.dataSync()) as number[])\n .reduce((flat, arr) => flat.concat(arr)),\n );\n }\n\n public async load(weightsOrUrl: Float32Array | string | undefined): Promise {\n if (weightsOrUrl instanceof Float32Array) {\n this.extractWeights(weightsOrUrl);\n return;\n }\n\n await this.loadFromUri(weightsOrUrl);\n }\n\n public async loadFromUri(uri: string | undefined) {\n if (uri && typeof uri !== 'string') {\n throw new Error(`${this._name}.loadFromUri - expected model uri`);\n }\n\n const weightMap = await loadWeightMap(uri, this.getDefaultModelName());\n this.loadFromWeightMap(weightMap);\n }\n\n public async loadFromDisk(filePath: string | undefined) {\n if (filePath && typeof filePath !== 'string') {\n throw new Error(`${this._name}.loadFromDisk - expected model file path`);\n }\n\n const { readFile } = env.getEnv();\n\n const { manifestUri, modelBaseUri } = getModelUris(filePath, this.getDefaultModelName());\n\n const fetchWeightsFromDisk = (filePaths: string[]) => Promise.all(\n filePaths.map((fp) => readFile(fp).then((buf) => buf.buffer)),\n );\n const loadWeights = tf.io.weightsLoaderFactory(fetchWeightsFromDisk);\n const manifest = JSON.parse((await readFile(manifestUri)).toString());\n const weightMap = await loadWeights(manifest, modelBaseUri);\n\n this.loadFromWeightMap(weightMap);\n }\n\n public loadFromWeightMap(weightMap: tf.NamedTensorMap) {\n const {\n paramMappings,\n params,\n } = this.extractParamsFromWeigthMap(weightMap);\n\n this._paramMappings = paramMappings;\n this._params = params;\n }\n\n public extractWeights(weights: Float32Array) {\n const {\n paramMappings,\n params,\n } = this.extractParams(weights);\n\n this._paramMappings = paramMappings;\n this._params = params;\n }\n\n private traversePropertyPath(paramPath: string) {\n if (!this.params) {\n throw new Error('traversePropertyPath - model has no loaded params');\n }\n\n const result = paramPath.split('/').reduce((res: { nextObj: any, obj?: any, objProp?: string }, objProp) => {\n // eslint-disable-next-line no-prototype-builtins\n if (!res.nextObj.hasOwnProperty(objProp)) {\n throw new Error(`traversePropertyPath - object does not have property ${objProp}, for path ${paramPath}`);\n }\n\n return { obj: res.nextObj, objProp, nextObj: res.nextObj[objProp] };\n }, { nextObj: this.params });\n\n const { obj, objProp } = result;\n if (!obj || !objProp || !(obj[objProp] instanceof tf.Tensor)) {\n throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${paramPath}`);\n }\n\n return { obj, objProp };\n }\n\n protected abstract getDefaultModelName(): string\n\n // eslint-disable-next-line no-unused-vars\n protected abstract extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TNetParams, paramMappings: ParamMapping[] }\n\n // eslint-disable-next-line no-unused-vars\n protected abstract extractParams(weights: Float32Array): { params: TNetParams, paramMappings: ParamMapping[] }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { SeparableConvParams } from './types';\n\nexport function depthwiseSeparableConv(\n x: tf.Tensor4D,\n params: SeparableConvParams,\n stride: [number, number],\n): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.separableConv2d(x, params.depthwise_filter, params.pointwise_filter, stride, 'same');\n out = tf.add(out, params.bias);\n return out;\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ConvParams, SeparableConvParams } from '../common/index';\nimport { depthwiseSeparableConv } from '../common/depthwiseSeparableConv';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function denseBlock3(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock3Params,\n isFirstLayer: boolean = false,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, [2, 2], 'same'),\n denseBlockParams.conv0.bias,\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, [2, 2]),\n ) as tf.Tensor4D;\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1]);\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D;\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1]);\n\n return tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D;\n });\n}\n\nexport function denseBlock4(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock4Params,\n isFirstLayer: boolean = false,\n isScaleDown: boolean = true,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, isScaleDown ? [2, 2] : [1, 1], 'same'),\n denseBlockParams.conv0.bias,\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, isScaleDown ? [2, 2] : [1, 1]),\n ) as tf.Tensor4D;\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1]);\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D;\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1]);\n\n const in4 = tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D;\n const out4 = depthwiseSeparableConv(in4, denseBlockParams.conv3, [1, 1]);\n\n return tf.relu(tf.add(out1, tf.add(out2, tf.add(out3, out4)))) as tf.Tensor4D;\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ConvParams } from './types';\n\nexport function convLayer(\n x: tf.Tensor4D,\n params: ConvParams,\n padding: 'valid' | 'same' = 'same',\n withRelu: boolean = false,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out = tf.add(\n tf.conv2d(x, params.filters, [1, 1], padding),\n params.bias,\n ) as tf.Tensor4D;\n\n return withRelu ? tf.relu(out) : out;\n });\n}\n", "import { ParamMapping } from './types';\n\nexport function disposeUnusedWeightTensors(weightMap: any, paramMappings: ParamMapping[]) {\n Object.keys(weightMap).forEach((path) => {\n if (!paramMappings.some((pm) => pm.originalPath === path)) {\n weightMap[path].dispose();\n }\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ConvParams, ExtractWeightsFunction, ParamMapping } from './types';\n\nexport function extractConvParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[],\n) {\n return (\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n ): ConvParams => {\n const filters = tf.tensor4d(\n extractWeights(channelsIn * channelsOut * filterSize * filterSize),\n [filterSize, filterSize, channelsIn, channelsOut],\n );\n const bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return { filters, bias };\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ExtractWeightsFunction, FCParams, ParamMapping } from './types';\n\nexport function extractFCParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[],\n) {\n return (\n channelsIn: number,\n channelsOut: number,\n mappedPrefix: string,\n ): FCParams => {\n const fc_weights = tf.tensor2d(extractWeights(channelsIn * channelsOut), [channelsIn, channelsOut]);\n const fc_bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/weights` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return {\n weights: fc_weights,\n bias: fc_bias,\n };\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\n// eslint-disable-next-line no-unused-vars\nexport type ExtractWeightsFunction = (numWeights: number) => Float32Array\n\nexport type ParamMapping = {\n originalPath?: string\n paramPath: string\n}\n\nexport type ConvParams = {\n filters: tf.Tensor4D\n bias: tf.Tensor1D\n}\n\nexport type FCParams = {\n weights: tf.Tensor2D\n bias: tf.Tensor1D\n}\n\nexport class SeparableConvParams {\n // eslint-disable-next-line no-useless-constructor\n constructor(\n // eslint-disable-next-line no-unused-vars\n public depthwise_filter: tf.Tensor4D,\n // eslint-disable-next-line no-unused-vars\n public pointwise_filter: tf.Tensor4D,\n // eslint-disable-next-line no-unused-vars\n public bias: tf.Tensor1D,\n // eslint-disable-next-line no-empty-function\n ) {}\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ExtractWeightsFunction, ParamMapping, SeparableConvParams } from './types';\n\nexport function extractSeparableConvParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[],\n) {\n return (channelsIn: number, channelsOut: number, mappedPrefix: string): SeparableConvParams => {\n const depthwise_filter = tf.tensor4d(extractWeights(3 * 3 * channelsIn), [3, 3, channelsIn, 1]);\n const pointwise_filter = tf.tensor4d(extractWeights(channelsIn * channelsOut), [1, 1, channelsIn, channelsOut]);\n const bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/depthwise_filter` },\n { paramPath: `${mappedPrefix}/pointwise_filter` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias,\n );\n };\n}\n\nexport function loadSeparableConvParamsFactory(\n // eslint-disable-next-line no-unused-vars\n extractWeightEntry: (originalPath: string, paramRank: number) => T,\n) {\n return (prefix: string): SeparableConvParams => {\n const depthwise_filter = extractWeightEntry(`${prefix}/depthwise_filter`, 4);\n const pointwise_filter = extractWeightEntry(`${prefix}/pointwise_filter`, 4);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias,\n );\n };\n}\n", "import { isTensor } from '../utils/index';\nimport { ParamMapping } from './types';\n\nexport function extractWeightEntryFactory(weightMap: any, paramMappings: ParamMapping[]) {\n return (originalPath: string, paramRank: number, mappedPath?: string) => {\n const tensor = weightMap[originalPath];\n\n if (!isTensor(tensor, paramRank)) {\n throw new Error(`expected weightMap[${originalPath}] to be a Tensor${paramRank}D, instead have ${tensor}`);\n }\n\n paramMappings.push(\n { originalPath, paramPath: mappedPath || originalPath },\n );\n\n return tensor;\n };\n}\n", "export function extractWeightsFactory(weights: Float32Array) {\n let remainingWeights = weights;\n\n function extractWeights(numWeights: number): Float32Array {\n const ret = remainingWeights.slice(0, numWeights);\n remainingWeights = remainingWeights.slice(numWeights);\n return ret;\n }\n\n function getRemainingWeights(): Float32Array {\n return remainingWeights;\n }\n\n return {\n extractWeights,\n getRemainingWeights,\n };\n}\n", "import {\n extractConvParamsFactory,\n extractSeparableConvParamsFactory,\n ExtractWeightsFunction,\n ParamMapping,\n} from '../common/index';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings);\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings);\n\n function extractDenseBlock3Params(channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer: boolean = false): DenseBlock3Params {\n const conv0 = isFirstLayer\n ? extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv0`)\n : extractSeparableConvParams(channelsIn, channelsOut, `${mappedPrefix}/conv0`);\n const conv1 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv1`);\n const conv2 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv2`);\n\n return { conv0, conv1, conv2 };\n }\n\n function extractDenseBlock4Params(channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer: boolean = false): DenseBlock4Params {\n const { conv0, conv1, conv2 } = extractDenseBlock3Params(channelsIn, channelsOut, mappedPrefix, isFirstLayer);\n const conv3 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv3`);\n\n return {\n conv0, conv1, conv2, conv3,\n };\n }\n\n return {\n extractDenseBlock3Params,\n extractDenseBlock4Params,\n };\n}\n", "import { extractWeightsFactory, ParamMapping } from '../common/index';\nimport { extractorsFactory } from './extractorsFactory';\nimport { FaceFeatureExtractorParams } from './types';\n\nexport function extractParams(weights: Float32Array): { params: FaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractDenseBlock4Params,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const dense0 = extractDenseBlock4Params(3, 32, 'dense0', true);\n const dense1 = extractDenseBlock4Params(32, 64, 'dense1');\n const dense2 = extractDenseBlock4Params(64, 128, 'dense2');\n const dense3 = extractDenseBlock4Params(128, 256, 'dense3');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: {\n dense0, dense1, dense2, dense3,\n },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ConvParams } from './types';\n\n// eslint-disable-next-line no-unused-vars\nexport function loadConvParamsFactory(extractWeightEntry: (originalPath: string, paramRank: number) => T) {\n return (prefix: string): ConvParams => {\n const filters = extractWeightEntry(`${prefix}/filters`, 4);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n\n return { filters, bias };\n };\n}\n", "import { extractWeightEntryFactory, loadSeparableConvParamsFactory, ParamMapping } from '../common/index';\nimport { loadConvParamsFactory } from '../common/loadConvParamsFactory';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function loadParamsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n const extractConvParams = loadConvParamsFactory(extractWeightEntry);\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry);\n\n function extractDenseBlock3Params(prefix: string, isFirstLayer: boolean = false): DenseBlock3Params {\n const conv0 = isFirstLayer\n ? extractConvParams(`${prefix}/conv0`)\n : extractSeparableConvParams(`${prefix}/conv0`);\n const conv1 = extractSeparableConvParams(`${prefix}/conv1`);\n const conv2 = extractSeparableConvParams(`${prefix}/conv2`);\n\n return { conv0, conv1, conv2 };\n }\n\n function extractDenseBlock4Params(prefix: string, isFirstLayer: boolean = false): DenseBlock4Params {\n const conv0 = isFirstLayer\n ? extractConvParams(`${prefix}/conv0`)\n : extractSeparableConvParams(`${prefix}/conv0`);\n const conv1 = extractSeparableConvParams(`${prefix}/conv1`);\n const conv2 = extractSeparableConvParams(`${prefix}/conv2`);\n const conv3 = extractSeparableConvParams(`${prefix}/conv3`);\n\n return {\n conv0, conv1, conv2, conv3,\n };\n }\n\n return {\n extractDenseBlock3Params,\n extractDenseBlock4Params,\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { disposeUnusedWeightTensors, ParamMapping } from '../common/index';\nimport { loadParamsFactory } from './loadParamsFactory';\nimport { FaceFeatureExtractorParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: FaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractDenseBlock4Params,\n } = loadParamsFactory(weightMap, paramMappings);\n\n const params = {\n dense0: extractDenseBlock4Params('dense0', true),\n dense1: extractDenseBlock4Params('dense1'),\n dense2: extractDenseBlock4Params('dense2'),\n dense3: extractDenseBlock4Params('dense3'),\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock4 } from './denseBlock';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { FaceFeatureExtractorParams, IFaceFeatureExtractor } from './types';\n\nexport class FaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n constructor() {\n super('FaceFeatureExtractor');\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('FaceFeatureExtractor - load model before inference');\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D;\n\n let out = denseBlock4(normalized, params.dense0, true);\n out = denseBlock4(out, params.dense1);\n out = denseBlock4(out, params.dense2);\n out = denseBlock4(out, params.dense3);\n out = tf.avgPool(out, [7, 7], [2, 2], 'valid');\n\n return out;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { FCParams } from './types';\n\nexport function fullyConnectedLayer(\n x: tf.Tensor2D,\n params: FCParams,\n): tf.Tensor2D {\n return tf.tidy(() => tf.add(\n tf.matMul(x, params.weights),\n params.bias,\n ));\n}\n", "import { extractFCParamsFactory, extractWeightsFactory, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParams(weights: Float32Array, channelsIn: number, channelsOut: number): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const extractFCParams = extractFCParamsFactory(extractWeights, paramMappings);\n\n const fc = extractFCParams(channelsIn, channelsOut, 'fc');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { fc },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport {\n disposeUnusedWeightTensors, extractWeightEntryFactory, FCParams, ParamMapping,\n} from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractFcParams(prefix: string): FCParams {\n const weights = extractWeightEntry(`${prefix}/weights`, 2);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n return { weights, bias };\n }\n\n const params = {\n fc: extractFcParams('fc'),\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nexport function seperateWeightMaps(weightMap: tf.NamedTensorMap) {\n const featureExtractorMap: tf.NamedTensorMap = {};\n const classifierMap: tf.NamedTensorMap = {};\n\n Object.keys(weightMap).forEach((key) => {\n const map = key.startsWith('fc') ? classifierMap : featureExtractorMap;\n map[key] = weightMap[key];\n });\n\n return { featureExtractorMap, classifierMap };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { NetInput } from '../dom/index';\nimport {\n FaceFeatureExtractorParams,\n IFaceFeatureExtractor,\n TinyFaceFeatureExtractorParams,\n} from '../faceFeatureExtractor/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { NetParams } from './types';\nimport { seperateWeightMaps } from './util';\n\nexport abstract class FaceProcessor<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends NeuralNetwork {\n protected _faceFeatureExtractor: IFaceFeatureExtractor\n\n constructor(_name: string, faceFeatureExtractor: IFaceFeatureExtractor) {\n super(_name);\n this._faceFeatureExtractor = faceFeatureExtractor;\n }\n\n public get faceFeatureExtractor(): IFaceFeatureExtractor {\n return this._faceFeatureExtractor;\n }\n\n protected abstract getDefaultModelName(): string\n\n protected abstract getClassifierChannelsIn(): number\n\n protected abstract getClassifierChannelsOut(): number\n\n public runNet(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n const { params } = this;\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`);\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input;\n return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0], -1), params.fc);\n });\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose);\n super.dispose(throwOnRedispose);\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights);\n this._params = params;\n this._paramMappings = paramMappings;\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights, this.getClassifierChannelsIn(), this.getClassifierChannelsOut());\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap);\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap);\n\n return extractParamsFromWeigthMap(classifierMap);\n }\n\n protected extractParams(weights: Float32Array) {\n const cIn = this.getClassifierChannelsIn();\n const cOut = this.getClassifierChannelsOut();\n const classifierWeightSize = (cOut * cIn) + cOut;\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize);\n const classifierWeights = weights.slice(weights.length - classifierWeightSize);\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights);\n return this.extractClassifierParams(classifierWeights);\n }\n}\n", "export const FACE_EXPRESSION_LABELS = ['neutral', 'happy', 'sad', 'angry', 'fearful', 'disgusted', 'surprised'];\n\nexport class FaceExpressions {\n public neutral: number\n\n public happy: number\n\n public sad: number\n\n public angry: number\n\n public fearful: number\n\n public disgusted: number\n\n public surprised: number\n\n constructor(probabilities: number[] | Float32Array) {\n if (probabilities.length !== 7) {\n throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${probabilities.length}`);\n }\n\n FACE_EXPRESSION_LABELS.forEach((expression, idx) => {\n this[expression] = probabilities[idx];\n });\n }\n\n asSortedArray() {\n return FACE_EXPRESSION_LABELS\n .map((expression) => ({ expression, probability: this[expression] as number }))\n .sort((e0, e1) => e1.probability - e0.probability);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';\nimport { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { FaceExpressions } from './FaceExpressions';\n\nexport class FaceExpressionNet extends FaceProcessor {\n constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) {\n super('FaceExpressionNet', faceFeatureExtractor);\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n return tf.tidy(() => tf.softmax(this.runNet(input)));\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async predictExpressions(input: TNetInput) {\n const netInput = await toNetInput(input);\n const out = await this.forwardInput(netInput);\n const probabilitesByBatch = await Promise.all(tf.unstack(out).map(async (t) => {\n const data = await t.data();\n t.dispose();\n return data;\n }));\n out.dispose();\n\n const predictionsByBatch = probabilitesByBatch\n .map((probabilites) => new FaceExpressions(probabilites as Float32Array));\n\n return netInput.isBatchInput\n ? predictionsByBatch\n : predictionsByBatch[0];\n }\n\n protected getDefaultModelName(): string {\n return 'face_expression_model';\n }\n\n protected getClassifierChannelsIn(): number {\n return 256;\n }\n\n protected getClassifierChannelsOut(): number {\n return 7;\n }\n}\n", "import { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\n\nexport type WithFaceExpressions = TSource & {\n expressions: FaceExpressions\n}\n\nexport function isWithFaceExpressions(obj: any): obj is WithFaceExpressions<{}> {\n return obj.expressions instanceof FaceExpressions;\n}\n\nexport function extendWithFaceExpressions<\n TSource\n>(\n sourceObj: TSource,\n expressions: FaceExpressions,\n): WithFaceExpressions {\n const extension = { expressions };\n return { ...sourceObj, ...extension };\n}\n", "import { IPoint, Point } from '../classes/index';\nimport { FaceExpressions } from '../faceExpressionNet/index';\nimport { isWithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceExpressions, WithFaceExpressions } from '../factories/WithFaceExpressions';\nimport { round } from '../utils/index';\nimport { DrawTextField } from './DrawTextField';\n\nexport type DrawFaceExpressionsInput = FaceExpressions | WithFaceExpressions<{}>\n\nexport function drawFaceExpressions(\n canvasArg: string | HTMLCanvasElement,\n faceExpressions: DrawFaceExpressionsInput | Array,\n minConfidence = 0.1,\n textFieldAnchor?: IPoint,\n) {\n const faceExpressionsArray = Array.isArray(faceExpressions) ? faceExpressions : [faceExpressions];\n\n faceExpressionsArray.forEach((e) => {\n // eslint-disable-next-line no-nested-ternary\n const expr = e instanceof FaceExpressions\n ? e\n : (isWithFaceExpressions(e) ? e.expressions : undefined);\n if (!expr) {\n throw new Error('drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof');\n }\n\n const sorted = expr.asSortedArray();\n const resultsToDisplay = sorted.filter((exprLocal) => exprLocal.probability > minConfidence);\n\n const anchor = isWithFaceDetection(e)\n ? e.detection.box.bottomLeft\n : (textFieldAnchor || new Point(0, 0));\n\n const drawTextField = new DrawTextField(\n resultsToDisplay.map((exprLocal) => `${exprLocal.expression} (${round(exprLocal.probability)})`),\n anchor,\n );\n drawTextField.draw(canvasArg);\n });\n}\n", "import { FaceDetection } from '../classes/FaceDetection';\nimport { FaceLandmarks } from '../classes/FaceLandmarks';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { isWithFaceDetection, WithFaceDetection } from './WithFaceDetection';\n\nexport type WithFaceLandmarks<\n TSource extends WithFaceDetection<{}>,\n TFaceLandmarks extends FaceLandmarks = FaceLandmarks68 > = TSource & {\n landmarks: TFaceLandmarks\n unshiftedLandmarks: TFaceLandmarks\n alignedRect: FaceDetection\n }\n\nexport function isWithFaceLandmarks(obj: any): obj is WithFaceLandmarks, FaceLandmarks> {\n return isWithFaceDetection(obj)\n // eslint-disable-next-line dot-notation\n && obj['landmarks'] instanceof FaceLandmarks\n // eslint-disable-next-line dot-notation\n && obj['unshiftedLandmarks'] instanceof FaceLandmarks\n // eslint-disable-next-line dot-notation\n && obj['alignedRect'] instanceof FaceDetection;\n}\n\nexport function extendWithFaceLandmarks<\n TSource extends WithFaceDetection<{}>,\n TFaceLandmarks extends FaceLandmarks = FaceLandmarks68 >(sourceObj: TSource, unshiftedLandmarks: TFaceLandmarks): WithFaceLandmarks {\n const { box: shift } = sourceObj.detection;\n const landmarks = unshiftedLandmarks.shiftBy(shift.x, shift.y);\n\n const rect = landmarks.align();\n const { imageDims } = sourceObj.detection;\n const alignedRect = new FaceDetection(sourceObj.detection.score, rect.rescale(imageDims.reverse()), imageDims);\n\n const extension = {\n landmarks,\n unshiftedLandmarks,\n alignedRect,\n };\n\n return { ...sourceObj, ...extension };\n}\n", "/* eslint-disable max-classes-per-file */\nimport { IPoint } from '../classes/index';\nimport { FaceLandmarks } from '../classes/FaceLandmarks';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { drawContour } from './drawContour';\n\nexport interface IDrawFaceLandmarksOptions {\n drawLines?: boolean\n drawPoints?: boolean\n lineWidth?: number\n pointSize?: number\n lineColor?: string\n pointColor?: string\n}\n\nexport class DrawFaceLandmarksOptions {\n public drawLines: boolean\n\n public drawPoints: boolean\n\n public lineWidth: number\n\n public pointSize: number\n\n public lineColor: string\n\n public pointColor: string\n\n constructor(options: IDrawFaceLandmarksOptions = {}) {\n const {\n drawLines = true, drawPoints = true, lineWidth, lineColor, pointSize, pointColor,\n } = options;\n this.drawLines = drawLines;\n this.drawPoints = drawPoints;\n this.lineWidth = lineWidth || 1;\n this.pointSize = pointSize || 2;\n this.lineColor = lineColor || 'rgba(0, 255, 255, 1)';\n this.pointColor = pointColor || 'rgba(255, 0, 255, 1)';\n }\n}\n\nexport class DrawFaceLandmarks {\n public faceLandmarks: FaceLandmarks\n\n public options: DrawFaceLandmarksOptions\n\n constructor(\n faceLandmarks: FaceLandmarks,\n options: IDrawFaceLandmarksOptions = {},\n ) {\n this.faceLandmarks = faceLandmarks;\n this.options = new DrawFaceLandmarksOptions(options);\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const ctx = getContext2dOrThrow(canvasArg);\n\n const {\n drawLines, drawPoints, lineWidth, lineColor, pointSize, pointColor,\n } = this.options;\n\n if (drawLines && this.faceLandmarks instanceof FaceLandmarks68) {\n ctx.strokeStyle = lineColor;\n ctx.lineWidth = lineWidth;\n drawContour(ctx, this.faceLandmarks.getJawOutline());\n drawContour(ctx, this.faceLandmarks.getLeftEyeBrow());\n drawContour(ctx, this.faceLandmarks.getRightEyeBrow());\n drawContour(ctx, this.faceLandmarks.getNose());\n drawContour(ctx, this.faceLandmarks.getLeftEye(), true);\n drawContour(ctx, this.faceLandmarks.getRightEye(), true);\n drawContour(ctx, this.faceLandmarks.getMouth(), true);\n }\n\n if (drawPoints) {\n ctx.strokeStyle = pointColor;\n ctx.fillStyle = pointColor;\n\n const drawPoint = (pt: IPoint) => {\n ctx.beginPath();\n ctx.arc(pt.x, pt.y, pointSize, 0, 2 * Math.PI);\n ctx.fill();\n };\n this.faceLandmarks.positions.forEach(drawPoint);\n }\n }\n}\n\nexport type DrawFaceLandmarksInput = FaceLandmarks | WithFaceLandmarks>\n\nexport function drawFaceLandmarks(\n canvasArg: string | HTMLCanvasElement,\n faceLandmarks: DrawFaceLandmarksInput | Array,\n) {\n const faceLandmarksArray = Array.isArray(faceLandmarks) ? faceLandmarks : [faceLandmarks];\n faceLandmarksArray.forEach((f) => {\n // eslint-disable-next-line no-nested-ternary\n const landmarks = f instanceof FaceLandmarks\n ? f\n : (isWithFaceLandmarks(f) ? f.landmarks : undefined);\n if (!landmarks) {\n throw new Error('drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof');\n }\n\n new DrawFaceLandmarks(landmarks).draw(canvasArg);\n });\n}\n", "import { extractConvParamsFactory, extractSeparableConvParamsFactory, extractWeightsFactory } from '../common/index';\nimport { ExtractWeightsFunction, ParamMapping } from '../common/types';\nimport { range } from '../utils/index';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings);\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings);\n\n function extractReductionBlockParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ReductionBlockParams {\n const separable_conv0 = extractSeparableConvParams(channelsIn, channelsOut, `${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/separable_conv1`);\n const expansion_conv = extractConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/expansion_conv`);\n\n return { separable_conv0, separable_conv1, expansion_conv };\n }\n\n function extractMainBlockParams(channels: number, mappedPrefix: string): MainBlockParams {\n const separable_conv0 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv1`);\n const separable_conv2 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv2`);\n\n return { separable_conv0, separable_conv1, separable_conv2 };\n }\n\n return {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n };\n}\n\nexport function extractParams(weights: Float32Array, numMainBlocks: number): { params: TinyXceptionParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const entry_flow_conv_in = extractConvParams(3, 32, 3, 'entry_flow/conv_in');\n const entry_flow_reduction_block_0 = extractReductionBlockParams(32, 64, 'entry_flow/reduction_block_0');\n const entry_flow_reduction_block_1 = extractReductionBlockParams(64, 128, 'entry_flow/reduction_block_1');\n\n const entry_flow = {\n conv_in: entry_flow_conv_in,\n reduction_block_0: entry_flow_reduction_block_0,\n reduction_block_1: entry_flow_reduction_block_1,\n };\n\n const middle_flow = {};\n range(numMainBlocks, 0, 1).forEach((idx) => {\n middle_flow[`main_block_${idx}`] = extractMainBlockParams(128, `middle_flow/main_block_${idx}`);\n });\n\n const exit_flow_reduction_block = extractReductionBlockParams(128, 256, 'exit_flow/reduction_block');\n const exit_flow_separable_conv = extractSeparableConvParams(256, 512, 'exit_flow/separable_conv');\n\n const exit_flow = {\n reduction_block: exit_flow_reduction_block,\n separable_conv: exit_flow_separable_conv,\n };\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { entry_flow, middle_flow, exit_flow },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport {\n disposeUnusedWeightTensors,\n extractWeightEntryFactory,\n loadSeparableConvParamsFactory,\n ParamMapping,\n} from '../common/index';\nimport { loadConvParamsFactory } from '../common/loadConvParamsFactory';\nimport { range } from '../utils/index';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction loadParamsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n const extractConvParams = loadConvParamsFactory(extractWeightEntry);\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry);\n\n function extractReductionBlockParams(mappedPrefix: string): ReductionBlockParams {\n const separable_conv0 = extractSeparableConvParams(`${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(`${mappedPrefix}/separable_conv1`);\n const expansion_conv = extractConvParams(`${mappedPrefix}/expansion_conv`);\n\n return { separable_conv0, separable_conv1, expansion_conv };\n }\n\n function extractMainBlockParams(mappedPrefix: string): MainBlockParams {\n const separable_conv0 = extractSeparableConvParams(`${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(`${mappedPrefix}/separable_conv1`);\n const separable_conv2 = extractSeparableConvParams(`${mappedPrefix}/separable_conv2`);\n\n return { separable_conv0, separable_conv1, separable_conv2 };\n }\n\n return {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n numMainBlocks: number,\n): { params: TinyXceptionParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n } = loadParamsFactory(weightMap, paramMappings);\n\n const entry_flow_conv_in = extractConvParams('entry_flow/conv_in');\n const entry_flow_reduction_block_0 = extractReductionBlockParams('entry_flow/reduction_block_0');\n const entry_flow_reduction_block_1 = extractReductionBlockParams('entry_flow/reduction_block_1');\n\n const entry_flow = {\n conv_in: entry_flow_conv_in,\n reduction_block_0: entry_flow_reduction_block_0,\n reduction_block_1: entry_flow_reduction_block_1,\n };\n\n const middle_flow = {};\n range(numMainBlocks, 0, 1).forEach((idx) => {\n middle_flow[`main_block_${idx}`] = extractMainBlockParams(`middle_flow/main_block_${idx}`);\n });\n\n const exit_flow_reduction_block = extractReductionBlockParams('exit_flow/reduction_block');\n const exit_flow_separable_conv = extractSeparableConvParams('exit_flow/separable_conv');\n\n const exit_flow = {\n reduction_block: exit_flow_reduction_block,\n separable_conv: exit_flow_separable_conv,\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params: { entry_flow, middle_flow, exit_flow }, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ConvParams, depthwiseSeparableConv } from '../common/index';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { range } from '../utils/index';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction conv(x: tf.Tensor4D, params: ConvParams, stride: [number, number]): tf.Tensor4D {\n return tf.add(tf.conv2d(x, params.filters, stride, 'same'), params.bias);\n}\n\nfunction reductionBlock(x: tf.Tensor4D, params: ReductionBlockParams, isActivateInput: boolean = true): tf.Tensor4D {\n let out = isActivateInput ? tf.relu(x) : x;\n out = depthwiseSeparableConv(out, params.separable_conv0, [1, 1]);\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1]);\n out = tf.maxPool(out, [3, 3], [2, 2], 'same');\n out = tf.add(out, conv(x, params.expansion_conv, [2, 2]));\n return out;\n}\n\nfunction mainBlock(x: tf.Tensor4D, params: MainBlockParams): tf.Tensor4D {\n let out = depthwiseSeparableConv(tf.relu(x), params.separable_conv0, [1, 1]);\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1]);\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv2, [1, 1]);\n out = tf.add(out, x);\n return out;\n}\n\nexport class TinyXception extends NeuralNetwork {\n private _numMainBlocks: number\n\n constructor(numMainBlocks: number) {\n super('TinyXception');\n this._numMainBlocks = numMainBlocks;\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('TinyXception - load model before inference');\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D;\n\n let out = tf.relu(conv(normalized, params.entry_flow.conv_in, [2, 2]));\n out = reductionBlock(out, params.entry_flow.reduction_block_0, false);\n out = reductionBlock(out, params.entry_flow.reduction_block_1);\n\n range(this._numMainBlocks, 0, 1).forEach((idx) => {\n out = mainBlock(out, params.middle_flow[`main_block_${idx}`]);\n });\n\n out = reductionBlock(out, params.exit_flow.reduction_block);\n out = tf.relu(depthwiseSeparableConv(out, params.exit_flow.separable_conv, [1, 1]));\n return out;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n protected getDefaultModelName(): string {\n return 'tiny_xception_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this._numMainBlocks);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights, this._numMainBlocks);\n }\n}\n", "import { extractFCParamsFactory, extractWeightsFactory, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const extractFCParams = extractFCParamsFactory(extractWeights, paramMappings);\n\n const age = extractFCParams(512, 1, 'fc/age');\n const gender = extractFCParams(512, 2, 'fc/gender');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { fc: { age, gender } },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport {\n disposeUnusedWeightTensors, extractWeightEntryFactory, FCParams, ParamMapping,\n} from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractFcParams(prefix: string): FCParams {\n const weights = extractWeightEntry(`${prefix}/weights`, 2);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n return { weights, bias };\n }\n\n const params = {\n fc: {\n age: extractFcParams('fc/age'),\n gender: extractFcParams('fc/gender'),\n },\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { FCParams } from '../common/index';\n\n// eslint-disable-next-line no-shadow\nexport enum Gender {\n // eslint-disable-next-line no-unused-vars\n FEMALE = 'female',\n // eslint-disable-next-line no-unused-vars\n MALE = 'male'\n}\n\nexport type AgeAndGenderPrediction = {\n age: number\n gender: Gender\n genderProbability: number\n}\n\nexport type NetOutput = { age: tf.Tensor1D, gender: tf.Tensor2D }\n\nexport type NetParams = {\n fc: {\n age: FCParams\n gender: FCParams\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { seperateWeightMaps } from '../faceProcessor/util';\nimport { TinyXception } from '../xception/TinyXception';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport {\n AgeAndGenderPrediction, Gender, NetOutput, NetParams,\n} from './types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\n\nexport class AgeGenderNet extends NeuralNetwork {\n private _faceFeatureExtractor: TinyXception\n\n constructor(faceFeatureExtractor: TinyXception = new TinyXception(2)) {\n super('AgeGenderNet');\n this._faceFeatureExtractor = faceFeatureExtractor;\n }\n\n public get faceFeatureExtractor(): TinyXception {\n return this._faceFeatureExtractor;\n }\n\n public runNet(input: NetInput | tf.Tensor4D): NetOutput {\n const { params } = this;\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`);\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input;\n\n const pooled = tf.avgPool(bottleneckFeatures, [7, 7], [2, 2], 'valid').as2D(bottleneckFeatures.shape[0], -1);\n const age = fullyConnectedLayer(pooled, params.fc.age).as1D();\n const gender = fullyConnectedLayer(pooled, params.fc.gender);\n return { age, gender };\n });\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): NetOutput {\n return tf.tidy(() => {\n const { age, gender } = this.runNet(input);\n return { age, gender: tf.softmax(gender) };\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async predictAgeAndGender(input: TNetInput): Promise {\n const netInput = await toNetInput(input);\n const out = await this.forwardInput(netInput);\n\n const ages = tf.unstack(out.age);\n const genders = tf.unstack(out.gender);\n const ageAndGenderTensors = ages.map((ageTensor, i) => ({\n ageTensor,\n genderTensor: genders[i],\n }));\n\n const predictionsByBatch = await Promise.all(\n ageAndGenderTensors.map(async ({ ageTensor, genderTensor }) => {\n const age = (await ageTensor.data())[0];\n const probMale = (await genderTensor.data())[0];\n const isMale = probMale > 0.5;\n const gender = isMale ? Gender.MALE : Gender.FEMALE;\n const genderProbability = isMale ? probMale : (1 - probMale);\n\n ageTensor.dispose();\n genderTensor.dispose();\n return { age, gender, genderProbability };\n }),\n );\n out.age.dispose();\n out.gender.dispose();\n\n return netInput.isBatchInput ? predictionsByBatch as AgeAndGenderPrediction[] : predictionsByBatch[0] as AgeAndGenderPrediction;\n }\n\n protected getDefaultModelName(): string {\n return 'age_gender_model';\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose);\n super.dispose(throwOnRedispose);\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights);\n this._params = params;\n this._paramMappings = paramMappings;\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights);\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap);\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap);\n\n return extractParamsFromWeigthMap(classifierMap);\n }\n\n protected extractParams(weights: Float32Array) {\n const classifierWeightSize = (512 * 1 + 1) + (512 * 2 + 2);\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize);\n const classifierWeights = weights.slice(weights.length - classifierWeightSize);\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights);\n return this.extractClassifierParams(classifierWeights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { IDimensions, Point } from '../classes/index';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractorParams, TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { isEven } from '../utils/index';\n\nexport abstract class FaceLandmark68NetBase<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends FaceProcessor {\n public postProcess(output: tf.Tensor2D, inputSize: number, originalDimensions: IDimensions[]): tf.Tensor2D {\n const inputDimensions = originalDimensions.map(({ width, height }) => {\n const scale = inputSize / Math.max(height, width);\n return {\n width: width * scale,\n height: height * scale,\n };\n });\n\n const batchSize = inputDimensions.length;\n\n return tf.tidy(() => {\n const createInterleavedTensor = (fillX: number, fillY: number) => tf.stack([tf.fill([68], fillX, 'float32'), tf.fill([68], fillY, 'float32')], 1).as2D(1, 136).as1D();\n\n // eslint-disable-next-line no-unused-vars\n const getPadding = (batchIdx: number, cond: (w: number, h: number) => boolean): number => {\n const { width, height } = inputDimensions[batchIdx];\n return cond(width, height) ? Math.abs(width - height) / 2 : 0;\n };\n\n const getPaddingX = (batchIdx: number) => getPadding(batchIdx, (w, h) => w < h);\n const getPaddingY = (batchIdx: number) => getPadding(batchIdx, (w, h) => h < w);\n\n const landmarkTensors = output\n .mul(tf.fill([batchSize, 136], inputSize, 'float32'))\n .sub(tf.stack(Array.from(Array(batchSize), (_, batchIdx) => createInterleavedTensor(\n getPaddingX(batchIdx),\n getPaddingY(batchIdx),\n ))))\n .div(tf.stack(Array.from(Array(batchSize), (_, batchIdx) => createInterleavedTensor(\n inputDimensions[batchIdx].width,\n inputDimensions[batchIdx].height,\n ))));\n\n return landmarkTensors as tf.Tensor2D;\n });\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n return tf.tidy(() => {\n const out = this.runNet(input);\n return this.postProcess(\n out,\n input.inputSize as number,\n input.inputDimensions.map(([height, width]) => ({ height, width })),\n );\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async detectLandmarks(input: TNetInput): Promise {\n const netInput = await toNetInput(input);\n const landmarkTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput)),\n );\n\n const landmarksForBatch = await Promise.all(landmarkTensors.map(\n async (landmarkTensor, batchIdx) => {\n const landmarksArray = Array.from(await landmarkTensor.data());\n const xCoords = landmarksArray.filter((_, i) => isEven(i));\n const yCoords = landmarksArray.filter((_, i) => !isEven(i));\n\n return new FaceLandmarks68(\n Array(68).fill(0).map((_, i) => new Point(xCoords[i] as number, yCoords[i] as number)),\n {\n height: netInput.getInputHeight(batchIdx),\n width: netInput.getInputWidth(batchIdx),\n },\n );\n },\n ));\n\n landmarkTensors.forEach((t) => t.dispose());\n\n return netInput.isBatchInput ? landmarksForBatch as FaceLandmarks68[] : landmarksForBatch[0] as FaceLandmarks68;\n }\n\n protected getClassifierChannelsOut(): number {\n return 136;\n }\n}\n", "import { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';\nimport { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceLandmark68NetBase } from './FaceLandmark68NetBase';\n\nexport class FaceLandmark68Net extends FaceLandmark68NetBase {\n constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) {\n super('FaceLandmark68Net', faceFeatureExtractor);\n }\n\n protected getDefaultModelName(): string {\n return 'face_landmark_68_model';\n }\n\n protected getClassifierChannelsIn(): number {\n return 256;\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { disposeUnusedWeightTensors, ParamMapping } from '../common/index';\nimport { loadParamsFactory } from './loadParamsFactory';\nimport { TinyFaceFeatureExtractorParams } from './types';\n\nexport function extractParamsFromWeigthMapTiny(\n weightMap: tf.NamedTensorMap,\n): { params: TinyFaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractDenseBlock3Params,\n } = loadParamsFactory(weightMap, paramMappings);\n\n const params = {\n dense0: extractDenseBlock3Params('dense0', true),\n dense1: extractDenseBlock3Params('dense1'),\n dense2: extractDenseBlock3Params('dense2'),\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import { extractWeightsFactory, ParamMapping } from '../common/index';\nimport { extractorsFactory } from './extractorsFactory';\nimport { TinyFaceFeatureExtractorParams } from './types';\n\nexport function extractParamsTiny(weights: Float32Array): { params: TinyFaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractDenseBlock3Params,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const dense0 = extractDenseBlock3Params(3, 32, 'dense0', true);\n const dense1 = extractDenseBlock3Params(32, 64, 'dense1');\n const dense2 = extractDenseBlock3Params(64, 128, 'dense2');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { dense0, dense1, dense2 },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock3 } from './denseBlock';\nimport { extractParamsFromWeigthMapTiny } from './extractParamsFromWeigthMapTiny';\nimport { extractParamsTiny } from './extractParamsTiny';\nimport { IFaceFeatureExtractor, TinyFaceFeatureExtractorParams } from './types';\n\nexport class TinyFaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n constructor() {\n super('TinyFaceFeatureExtractor');\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('TinyFaceFeatureExtractor - load model before inference');\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D;\n\n let out = denseBlock3(normalized, params.dense0, true);\n out = denseBlock3(out, params.dense1);\n out = denseBlock3(out, params.dense2);\n out = tf.avgPool(out, [14, 14], [2, 2], 'valid');\n\n return out;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_tiny_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMapTiny(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParamsTiny(weights);\n }\n}\n", "import { TinyFaceFeatureExtractor } from '../faceFeatureExtractor/TinyFaceFeatureExtractor';\nimport { TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceLandmark68NetBase } from './FaceLandmark68NetBase';\n\nexport class FaceLandmark68TinyNet extends FaceLandmark68NetBase {\n constructor(faceFeatureExtractor: TinyFaceFeatureExtractor = new TinyFaceFeatureExtractor()) {\n super('FaceLandmark68TinyNet', faceFeatureExtractor);\n }\n\n protected getDefaultModelName(): string {\n return 'face_landmark_68_tiny_model';\n }\n\n protected getClassifierChannelsIn(): number {\n return 128;\n }\n}\n", "import { FaceLandmark68Net } from './FaceLandmark68Net';\n\nexport * from './FaceLandmark68Net';\nexport * from './FaceLandmark68TinyNet';\n\nexport class FaceLandmarkNet extends FaceLandmark68Net {}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ScaleLayerParams } from './types';\n\nexport function scale(x: tf.Tensor4D, params: ScaleLayerParams): tf.Tensor4D {\n return tf.add(tf.mul(x, params.weights), params.biases);\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { scale } from './scaleLayer';\nimport { ConvLayerParams } from './types';\n\nfunction convLayer(\n x: tf.Tensor4D,\n params: ConvLayerParams,\n strides: [number, number],\n withRelu: boolean,\n padding: 'valid' | 'same' = 'same',\n): tf.Tensor4D {\n const { filters, bias } = params.conv;\n\n let out = tf.conv2d(x, filters, strides, padding);\n out = tf.add(out, bias);\n out = scale(out, params.scale);\n return withRelu ? tf.relu(out) : out;\n}\n\nexport function conv(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], true);\n}\n\nexport function convNoRelu(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], false);\n}\n\nexport function convDown(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [2, 2], true, 'valid');\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport {\n ConvParams, extractWeightsFactory, ExtractWeightsFunction, ParamMapping,\n} from '../common/index';\nimport { isFloat } from '../utils/index';\nimport {\n ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams,\n} from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n function extractFilterValues(numFilterValues: number, numFilters: number, filterSize: number): tf.Tensor4D {\n const weights = extractWeights(numFilterValues);\n const depth = weights.length / (numFilters * filterSize * filterSize);\n\n if (isFloat(depth)) {\n throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`);\n }\n\n return tf.tidy(\n () => tf.transpose(\n tf.tensor4d(weights, [numFilters, depth, filterSize, filterSize]),\n [2, 3, 1, 0],\n ),\n );\n }\n\n function extractConvParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n ): ConvParams {\n const filters = extractFilterValues(numFilterValues, numFilters, filterSize);\n const bias = tf.tensor1d(extractWeights(numFilters));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return { filters, bias };\n }\n\n function extractScaleLayerParams(numWeights: number, mappedPrefix: string): ScaleLayerParams {\n const weights = tf.tensor1d(extractWeights(numWeights));\n const biases = tf.tensor1d(extractWeights(numWeights));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/weights` },\n { paramPath: `${mappedPrefix}/biases` },\n );\n\n return {\n weights,\n biases,\n };\n }\n\n function extractConvLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n ): ConvLayerParams {\n const conv = extractConvParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv`);\n const scale = extractScaleLayerParams(numFilters, `${mappedPrefix}/scale`);\n\n return { conv, scale };\n }\n\n function extractResidualLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n isDown: boolean = false,\n ): ResidualLayerParams {\n const conv1 = extractConvLayerParams((isDown ? 0.5 : 1) * numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv1`);\n const conv2 = extractConvLayerParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv2`);\n\n return { conv1, conv2 };\n }\n\n return {\n extractConvLayerParams,\n extractResidualLayerParams,\n };\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvLayerParams,\n extractResidualLayerParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const conv32_down = extractConvLayerParams(4704, 32, 7, 'conv32_down');\n const conv32_1 = extractResidualLayerParams(9216, 32, 3, 'conv32_1');\n const conv32_2 = extractResidualLayerParams(9216, 32, 3, 'conv32_2');\n const conv32_3 = extractResidualLayerParams(9216, 32, 3, 'conv32_3');\n\n const conv64_down = extractResidualLayerParams(36864, 64, 3, 'conv64_down', true);\n const conv64_1 = extractResidualLayerParams(36864, 64, 3, 'conv64_1');\n const conv64_2 = extractResidualLayerParams(36864, 64, 3, 'conv64_2');\n const conv64_3 = extractResidualLayerParams(36864, 64, 3, 'conv64_3');\n\n const conv128_down = extractResidualLayerParams(147456, 128, 3, 'conv128_down', true);\n const conv128_1 = extractResidualLayerParams(147456, 128, 3, 'conv128_1');\n const conv128_2 = extractResidualLayerParams(147456, 128, 3, 'conv128_2');\n\n const conv256_down = extractResidualLayerParams(589824, 256, 3, 'conv256_down', true);\n const conv256_1 = extractResidualLayerParams(589824, 256, 3, 'conv256_1');\n const conv256_2 = extractResidualLayerParams(589824, 256, 3, 'conv256_2');\n const conv256_down_out = extractResidualLayerParams(589824, 256, 3, 'conv256_down_out');\n\n const fc = tf.tidy(\n () => tf.transpose(tf.tensor2d(extractWeights(256 * 128), [128, 256]), [1, 0]),\n );\n paramMappings.push({ paramPath: 'fc' });\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n const params = {\n conv32_down,\n conv32_1,\n conv32_2,\n conv32_3,\n conv64_down,\n conv64_1,\n conv64_2,\n conv64_3,\n conv128_down,\n conv128_1,\n conv128_2,\n conv256_down,\n conv256_1,\n conv256_2,\n conv256_down_out,\n fc,\n };\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { disposeUnusedWeightTensors, extractWeightEntryFactory, ParamMapping } from '../common/index';\nimport { isTensor2D } from '../utils/index';\nimport {\n ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams,\n} from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractScaleLayerParams(prefix: string): ScaleLayerParams {\n const weights = extractWeightEntry(`${prefix}/scale/weights`, 1);\n const biases = extractWeightEntry(`${prefix}/scale/biases`, 1);\n\n return { weights, biases };\n }\n\n function extractConvLayerParams(prefix: string): ConvLayerParams {\n const filters = extractWeightEntry(`${prefix}/conv/filters`, 4);\n const bias = extractWeightEntry(`${prefix}/conv/bias`, 1);\n const scale = extractScaleLayerParams(prefix);\n\n return { conv: { filters, bias }, scale };\n }\n\n function extractResidualLayerParams(prefix: string): ResidualLayerParams {\n return {\n conv1: extractConvLayerParams(`${prefix}/conv1`),\n conv2: extractConvLayerParams(`${prefix}/conv2`),\n };\n }\n\n return {\n extractConvLayerParams,\n extractResidualLayerParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvLayerParams,\n extractResidualLayerParams,\n } = extractorsFactory(weightMap, paramMappings);\n\n const conv32_down = extractConvLayerParams('conv32_down');\n const conv32_1 = extractResidualLayerParams('conv32_1');\n const conv32_2 = extractResidualLayerParams('conv32_2');\n const conv32_3 = extractResidualLayerParams('conv32_3');\n\n const conv64_down = extractResidualLayerParams('conv64_down');\n const conv64_1 = extractResidualLayerParams('conv64_1');\n const conv64_2 = extractResidualLayerParams('conv64_2');\n const conv64_3 = extractResidualLayerParams('conv64_3');\n\n const conv128_down = extractResidualLayerParams('conv128_down');\n const conv128_1 = extractResidualLayerParams('conv128_1');\n const conv128_2 = extractResidualLayerParams('conv128_2');\n\n const conv256_down = extractResidualLayerParams('conv256_down');\n const conv256_1 = extractResidualLayerParams('conv256_1');\n const conv256_2 = extractResidualLayerParams('conv256_2');\n const conv256_down_out = extractResidualLayerParams('conv256_down_out');\n\n const { fc } = weightMap;\n paramMappings.push({ originalPath: 'fc', paramPath: 'fc' });\n\n if (!isTensor2D(fc)) {\n throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${fc}`);\n }\n\n const params = {\n conv32_down,\n conv32_1,\n conv32_2,\n conv32_3,\n conv64_down,\n conv64_1,\n conv64_2,\n conv64_3,\n conv128_down,\n conv128_1,\n conv128_2,\n conv256_down,\n conv256_1,\n conv256_2,\n conv256_down_out,\n fc,\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { conv, convDown, convNoRelu } from './convLayer';\nimport { ResidualLayerParams } from './types';\n\nexport function residual(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = conv(x, params.conv1);\n out = convNoRelu(out, params.conv2);\n out = tf.add(out, x);\n out = tf.relu(out);\n return out;\n}\n\nexport function residualDown(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = convDown(x, params.conv1);\n out = convNoRelu(out, params.conv2);\n\n let pooled = tf.avgPool(x, 2, 2, 'valid') as tf.Tensor4D;\n const zeros = tf.zeros(pooled.shape);\n const isPad = pooled.shape[3] !== out.shape[3];\n const isAdjustShape = pooled.shape[1] !== out.shape[1] || pooled.shape[2] !== out.shape[2];\n\n if (isAdjustShape) {\n const padShapeX = [...out.shape] as [number, number, number, number];\n padShapeX[1] = 1;\n const zerosW = tf.zeros(padShapeX);\n out = tf.concat([out, zerosW], 1);\n\n const padShapeY = [...out.shape] as [number, number, number, number];\n padShapeY[2] = 1;\n const zerosH = tf.zeros(padShapeY);\n out = tf.concat([out, zerosH], 2);\n }\n\n pooled = isPad ? tf.concat([pooled, zeros], 3) : pooled;\n out = tf.add(pooled, out) as tf.Tensor4D;\n\n out = tf.relu(out);\n return out;\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { convDown } from './convLayer';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { residual, residualDown } from './residualLayer';\nimport { NetParams } from './types';\n\nexport class FaceRecognitionNet extends NeuralNetwork {\n constructor() {\n super('FaceRecognitionNet');\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n const { params } = this;\n\n if (!params) {\n throw new Error('FaceRecognitionNet - load model before inference');\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(150, true).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(150, true), 'float32');\n\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D;\n\n let out = convDown(normalized, params.conv32_down);\n out = tf.maxPool(out, 3, 2, 'valid');\n\n out = residual(out, params.conv32_1);\n out = residual(out, params.conv32_2);\n out = residual(out, params.conv32_3);\n\n out = residualDown(out, params.conv64_down);\n out = residual(out, params.conv64_1);\n out = residual(out, params.conv64_2);\n out = residual(out, params.conv64_3);\n\n out = residualDown(out, params.conv128_down);\n out = residual(out, params.conv128_1);\n out = residual(out, params.conv128_2);\n\n out = residualDown(out, params.conv256_down);\n out = residual(out, params.conv256_1);\n out = residual(out, params.conv256_2);\n out = residualDown(out, params.conv256_down_out);\n\n const globalAvg = out.mean([1, 2]) as tf.Tensor2D;\n const fullyConnected = tf.matMul(globalAvg, params.fc);\n\n return fullyConnected;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async computeFaceDescriptor(input: TNetInput): Promise {\n const netInput = await toNetInput(input);\n\n const faceDescriptorTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput)),\n );\n\n const faceDescriptorsForBatch = await Promise.all(faceDescriptorTensors.map(\n (t) => t.data(),\n )) as Float32Array[];\n\n faceDescriptorTensors.forEach((t) => t.dispose());\n\n return netInput.isBatchInput\n ? faceDescriptorsForBatch\n : faceDescriptorsForBatch[0];\n }\n\n protected getDefaultModelName(): string {\n return 'face_recognition_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights);\n }\n}\n", "import { FaceRecognitionNet } from './FaceRecognitionNet';\n\nexport * from './FaceRecognitionNet';\n\nexport function createFaceRecognitionNet(weights: Float32Array) {\n const net = new FaceRecognitionNet();\n net.extractWeights(weights);\n return net;\n}\n", "export type WithFaceDescriptor = TSource & {\n descriptor: Float32Array\n}\n\nexport function extendWithFaceDescriptor<\n TSource\n>(\n sourceObj: TSource,\n descriptor: Float32Array,\n): WithFaceDescriptor {\n const extension = { descriptor };\n return { ...sourceObj, ...extension };\n}\n", "export type WithAge = TSource & {\n age: number\n}\n\nexport function isWithAge(obj: any): obj is WithAge<{}> {\n return typeof obj.age === 'number';\n}\n\nexport function extendWithAge<\n TSource\n>(\n sourceObj: TSource,\n age: number,\n): WithAge {\n const extension = { age };\n return { ...sourceObj, ...extension };\n}\n", "import { Gender } from '../ageGenderNet/types';\nimport { isValidProbablitiy } from '../utils/index';\n\nexport type WithGender = TSource & {\n gender: Gender\n genderProbability: number\n}\n\nexport function isWithGender(obj: any): obj is WithGender<{}> {\n return (obj.gender === Gender.MALE || obj.gender === Gender.FEMALE)\n && isValidProbablitiy(obj.genderProbability);\n}\n\nexport function extendWithGender<\n TSource\n>(\n sourceObj: TSource,\n gender: Gender,\n genderProbability: number,\n): WithGender {\n const extension = { gender, genderProbability };\n return { ...sourceObj, ...extension };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport {\n ExtractWeightsFunction, ParamMapping, ConvParams, extractWeightsFactory,\n} from '../common/index';\nimport {\n MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams,\n} from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n function extractDepthwiseConvParams(numChannels: number, mappedPrefix: string): MobileNetV1.DepthwiseConvParams {\n const filters = tf.tensor4d(extractWeights(3 * 3 * numChannels), [3, 3, numChannels, 1]);\n const batch_norm_scale = tf.tensor1d(extractWeights(numChannels));\n const batch_norm_offset = tf.tensor1d(extractWeights(numChannels));\n const batch_norm_mean = tf.tensor1d(extractWeights(numChannels));\n const batch_norm_variance = tf.tensor1d(extractWeights(numChannels));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/batch_norm_scale` },\n { paramPath: `${mappedPrefix}/batch_norm_offset` },\n { paramPath: `${mappedPrefix}/batch_norm_mean` },\n { paramPath: `${mappedPrefix}/batch_norm_variance` },\n );\n\n return {\n filters,\n batch_norm_scale,\n batch_norm_offset,\n batch_norm_mean,\n batch_norm_variance,\n };\n }\n\n function extractConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n isPointwiseConv?: boolean,\n ): ConvParams {\n const filters = tf.tensor4d(\n extractWeights(channelsIn * channelsOut * filterSize * filterSize),\n [filterSize, filterSize, channelsIn, channelsOut],\n );\n const bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/${isPointwiseConv ? 'batch_norm_offset' : 'bias'}` },\n );\n\n return { filters, bias };\n }\n\n function extractPointwiseConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n ): PointwiseConvParams {\n const {\n filters,\n bias,\n } = extractConvParams(channelsIn, channelsOut, filterSize, mappedPrefix, true);\n\n return {\n filters,\n batch_norm_offset: bias,\n };\n }\n\n function extractConvPairParams(\n channelsIn: number,\n channelsOut: number,\n mappedPrefix: string,\n ): MobileNetV1.ConvPairParams {\n const depthwise_conv = extractDepthwiseConvParams(channelsIn, `${mappedPrefix}/depthwise_conv`);\n const pointwise_conv = extractPointwiseConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/pointwise_conv`);\n\n return { depthwise_conv, pointwise_conv };\n }\n\n function extractMobilenetV1Params(): MobileNetV1.Params {\n const conv_0 = extractPointwiseConvParams(3, 32, 3, 'mobilenetv1/conv_0');\n\n const conv_1 = extractConvPairParams(32, 64, 'mobilenetv1/conv_1');\n const conv_2 = extractConvPairParams(64, 128, 'mobilenetv1/conv_2');\n const conv_3 = extractConvPairParams(128, 128, 'mobilenetv1/conv_3');\n const conv_4 = extractConvPairParams(128, 256, 'mobilenetv1/conv_4');\n const conv_5 = extractConvPairParams(256, 256, 'mobilenetv1/conv_5');\n const conv_6 = extractConvPairParams(256, 512, 'mobilenetv1/conv_6');\n const conv_7 = extractConvPairParams(512, 512, 'mobilenetv1/conv_7');\n const conv_8 = extractConvPairParams(512, 512, 'mobilenetv1/conv_8');\n const conv_9 = extractConvPairParams(512, 512, 'mobilenetv1/conv_9');\n const conv_10 = extractConvPairParams(512, 512, 'mobilenetv1/conv_10');\n const conv_11 = extractConvPairParams(512, 512, 'mobilenetv1/conv_11');\n const conv_12 = extractConvPairParams(512, 1024, 'mobilenetv1/conv_12');\n const conv_13 = extractConvPairParams(1024, 1024, 'mobilenetv1/conv_13');\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n conv_8,\n conv_9,\n conv_10,\n conv_11,\n conv_12,\n conv_13,\n };\n }\n\n function extractPredictionLayerParams(): PredictionLayerParams {\n const conv_0 = extractPointwiseConvParams(1024, 256, 1, 'prediction_layer/conv_0');\n const conv_1 = extractPointwiseConvParams(256, 512, 3, 'prediction_layer/conv_1');\n const conv_2 = extractPointwiseConvParams(512, 128, 1, 'prediction_layer/conv_2');\n const conv_3 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_3');\n const conv_4 = extractPointwiseConvParams(256, 128, 1, 'prediction_layer/conv_4');\n const conv_5 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_5');\n const conv_6 = extractPointwiseConvParams(256, 64, 1, 'prediction_layer/conv_6');\n const conv_7 = extractPointwiseConvParams(64, 128, 3, 'prediction_layer/conv_7');\n\n const box_encoding_0_predictor = extractConvParams(512, 12, 1, 'prediction_layer/box_predictor_0/box_encoding_predictor');\n const class_predictor_0 = extractConvParams(512, 9, 1, 'prediction_layer/box_predictor_0/class_predictor');\n const box_encoding_1_predictor = extractConvParams(1024, 24, 1, 'prediction_layer/box_predictor_1/box_encoding_predictor');\n const class_predictor_1 = extractConvParams(1024, 18, 1, 'prediction_layer/box_predictor_1/class_predictor');\n const box_encoding_2_predictor = extractConvParams(512, 24, 1, 'prediction_layer/box_predictor_2/box_encoding_predictor');\n const class_predictor_2 = extractConvParams(512, 18, 1, 'prediction_layer/box_predictor_2/class_predictor');\n const box_encoding_3_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_3/box_encoding_predictor');\n const class_predictor_3 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_3/class_predictor');\n const box_encoding_4_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_4/box_encoding_predictor');\n const class_predictor_4 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_4/class_predictor');\n const box_encoding_5_predictor = extractConvParams(128, 24, 1, 'prediction_layer/box_predictor_5/box_encoding_predictor');\n const class_predictor_5 = extractConvParams(128, 18, 1, 'prediction_layer/box_predictor_5/class_predictor');\n\n const box_predictor_0 = {\n box_encoding_predictor: box_encoding_0_predictor,\n class_predictor: class_predictor_0,\n };\n const box_predictor_1 = {\n box_encoding_predictor: box_encoding_1_predictor,\n class_predictor: class_predictor_1,\n };\n const box_predictor_2 = {\n box_encoding_predictor: box_encoding_2_predictor,\n class_predictor: class_predictor_2,\n };\n const box_predictor_3 = {\n box_encoding_predictor: box_encoding_3_predictor,\n class_predictor: class_predictor_3,\n };\n const box_predictor_4 = {\n box_encoding_predictor: box_encoding_4_predictor,\n class_predictor: class_predictor_4,\n };\n const box_predictor_5 = {\n box_encoding_predictor: box_encoding_5_predictor,\n class_predictor: class_predictor_5,\n };\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n box_predictor_0,\n box_predictor_1,\n box_predictor_2,\n box_predictor_3,\n box_predictor_4,\n box_predictor_5,\n };\n }\n\n return {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n };\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const mobilenetv1 = extractMobilenetV1Params();\n const prediction_layer = extractPredictionLayerParams();\n const extra_dim = tf.tensor3d(\n extractWeights(5118 * 4),\n [1, 5118, 4],\n );\n const output_layer = {\n extra_dim,\n };\n\n paramMappings.push({ paramPath: 'output_layer/extra_dim' });\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n params: {\n mobilenetv1,\n prediction_layer,\n output_layer,\n },\n paramMappings,\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport {\n ConvParams, disposeUnusedWeightTensors, extractWeightEntryFactory, ParamMapping,\n} from '../common/index';\nimport { isTensor3D } from '../utils/index';\nimport {\n BoxPredictionParams, MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams,\n} from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractPointwiseConvParams(prefix: string, idx: number, mappedPrefix: string): PointwiseConvParams {\n const filters = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`, 4, `${mappedPrefix}/filters`);\n const batch_norm_offset = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`, 1, `${mappedPrefix}/batch_norm_offset`);\n\n return { filters, batch_norm_offset };\n }\n\n function extractConvPairParams(idx: number): MobileNetV1.ConvPairParams {\n const mappedPrefix = `mobilenetv1/conv_${idx}`;\n const prefixDepthwiseConv = `MobilenetV1/Conv2d_${idx}_depthwise`;\n const mappedPrefixDepthwiseConv = `${mappedPrefix}/depthwise_conv`;\n const mappedPrefixPointwiseConv = `${mappedPrefix}/pointwise_conv`;\n\n const filters = extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`, 4, `${mappedPrefixDepthwiseConv}/filters`);\n const batch_norm_scale = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_scale`);\n const batch_norm_offset = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_offset`);\n const batch_norm_mean = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_mean`);\n const batch_norm_variance = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_variance`);\n\n return {\n depthwise_conv: {\n filters,\n batch_norm_scale,\n batch_norm_offset,\n batch_norm_mean,\n batch_norm_variance,\n },\n pointwise_conv: extractPointwiseConvParams('MobilenetV1', idx, mappedPrefixPointwiseConv),\n };\n }\n\n function extractMobilenetV1Params(): MobileNetV1.Params {\n return {\n conv_0: extractPointwiseConvParams('MobilenetV1', 0, 'mobilenetv1/conv_0'),\n conv_1: extractConvPairParams(1),\n conv_2: extractConvPairParams(2),\n conv_3: extractConvPairParams(3),\n conv_4: extractConvPairParams(4),\n conv_5: extractConvPairParams(5),\n conv_6: extractConvPairParams(6),\n conv_7: extractConvPairParams(7),\n conv_8: extractConvPairParams(8),\n conv_9: extractConvPairParams(9),\n conv_10: extractConvPairParams(10),\n conv_11: extractConvPairParams(11),\n conv_12: extractConvPairParams(12),\n conv_13: extractConvPairParams(13),\n };\n }\n\n function extractConvParams(prefix: string, mappedPrefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/weights`, 4, `${mappedPrefix}/filters`);\n const bias = extractWeightEntry(`${prefix}/biases`, 1, `${mappedPrefix}/bias`);\n\n return { filters, bias };\n }\n\n function extractBoxPredictorParams(idx: number): BoxPredictionParams {\n const box_encoding_predictor = extractConvParams(\n `Prediction/BoxPredictor_${idx}/BoxEncodingPredictor`,\n `prediction_layer/box_predictor_${idx}/box_encoding_predictor`,\n );\n const class_predictor = extractConvParams(\n `Prediction/BoxPredictor_${idx}/ClassPredictor`,\n `prediction_layer/box_predictor_${idx}/class_predictor`,\n );\n\n return { box_encoding_predictor, class_predictor };\n }\n\n function extractPredictionLayerParams(): PredictionLayerParams {\n return {\n conv_0: extractPointwiseConvParams('Prediction', 0, 'prediction_layer/conv_0'),\n conv_1: extractPointwiseConvParams('Prediction', 1, 'prediction_layer/conv_1'),\n conv_2: extractPointwiseConvParams('Prediction', 2, 'prediction_layer/conv_2'),\n conv_3: extractPointwiseConvParams('Prediction', 3, 'prediction_layer/conv_3'),\n conv_4: extractPointwiseConvParams('Prediction', 4, 'prediction_layer/conv_4'),\n conv_5: extractPointwiseConvParams('Prediction', 5, 'prediction_layer/conv_5'),\n conv_6: extractPointwiseConvParams('Prediction', 6, 'prediction_layer/conv_6'),\n conv_7: extractPointwiseConvParams('Prediction', 7, 'prediction_layer/conv_7'),\n box_predictor_0: extractBoxPredictorParams(0),\n box_predictor_1: extractBoxPredictorParams(1),\n box_predictor_2: extractBoxPredictorParams(2),\n box_predictor_3: extractBoxPredictorParams(3),\n box_predictor_4: extractBoxPredictorParams(4),\n box_predictor_5: extractBoxPredictorParams(5),\n };\n }\n\n return {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n } = extractorsFactory(weightMap, paramMappings);\n\n const extra_dim = weightMap['Output/extra_dim'];\n paramMappings.push({ originalPath: 'Output/extra_dim', paramPath: 'output_layer/extra_dim' });\n\n if (!isTensor3D(extra_dim)) {\n throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`);\n }\n\n const params = {\n mobilenetv1: extractMobilenetV1Params(),\n prediction_layer: extractPredictionLayerParams(),\n output_layer: {\n extra_dim,\n },\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { PointwiseConvParams } from './types';\n\nexport function pointwiseConvLayer(\n x: tf.Tensor4D,\n params: PointwiseConvParams,\n strides: [number, number],\n) {\n return tf.tidy(() => {\n let out = tf.conv2d(x, params.filters, strides, 'same');\n out = tf.add(out, params.batch_norm_offset);\n return tf.clipByValue(out, 0, 6);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { MobileNetV1 } from './types';\n\nconst epsilon = 0.0010000000474974513;\n\nfunction depthwiseConvLayer(\n x: tf.Tensor4D,\n params: MobileNetV1.DepthwiseConvParams,\n strides: [number, number],\n) {\n return tf.tidy(() => {\n let out = tf.depthwiseConv2d(x, params.filters, strides, 'same');\n out = tf.batchNorm(\n out,\n params.batch_norm_mean,\n params.batch_norm_variance,\n params.batch_norm_offset,\n params.batch_norm_scale,\n epsilon,\n );\n return tf.clipByValue(out, 0, 6);\n });\n}\n\nfunction getStridesForLayerIdx(layerIdx: number): [number, number] {\n return [2, 4, 6, 12].some((idx) => idx === layerIdx) ? [2, 2] : [1, 1];\n}\n\nexport function mobileNetV1(x: tf.Tensor4D, params: MobileNetV1.Params) {\n return tf.tidy(() => {\n let conv11;\n let out = pointwiseConvLayer(x, params.conv_0, [2, 2]);\n\n const convPairParams = [\n params.conv_1,\n params.conv_2,\n params.conv_3,\n params.conv_4,\n params.conv_5,\n params.conv_6,\n params.conv_7,\n params.conv_8,\n params.conv_9,\n params.conv_10,\n params.conv_11,\n params.conv_12,\n params.conv_13,\n ];\n\n convPairParams.forEach((param, i) => {\n const layerIdx = i + 1;\n const depthwiseConvStrides = getStridesForLayerIdx(layerIdx);\n out = depthwiseConvLayer(out, param.depthwise_conv, depthwiseConvStrides);\n out = pointwiseConvLayer(out, param.pointwise_conv, [1, 1]);\n if (layerIdx === 11) {\n conv11 = out;\n }\n });\n\n if (conv11 === null) {\n throw new Error('mobileNetV1 - output of conv layer 11 is null');\n }\n\n return {\n out,\n conv11: conv11 as any,\n };\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nfunction IOU(boxes: tf.Tensor2D, i: number, j: number) {\n const boxesData = boxes.arraySync();\n const yminI = Math.min(boxesData[i][0], boxesData[i][2]);\n const xminI = Math.min(boxesData[i][1], boxesData[i][3]);\n const ymaxI = Math.max(boxesData[i][0], boxesData[i][2]);\n const xmaxI = Math.max(boxesData[i][1], boxesData[i][3]);\n const yminJ = Math.min(boxesData[j][0], boxesData[j][2]);\n const xminJ = Math.min(boxesData[j][1], boxesData[j][3]);\n const ymaxJ = Math.max(boxesData[j][0], boxesData[j][2]);\n const xmaxJ = Math.max(boxesData[j][1], boxesData[j][3]);\n const areaI = (ymaxI - yminI) * (xmaxI - xminI);\n const areaJ = (ymaxJ - yminJ) * (xmaxJ - xminJ);\n if (areaI <= 0 || areaJ <= 0) {\n return 0.0;\n }\n const intersectionYmin = Math.max(yminI, yminJ);\n const intersectionXmin = Math.max(xminI, xminJ);\n const intersectionYmax = Math.min(ymaxI, ymaxJ);\n const intersectionXmax = Math.min(xmaxI, xmaxJ);\n const intersectionArea = Math.max(intersectionYmax - intersectionYmin, 0.0)\n * Math.max(intersectionXmax - intersectionXmin, 0.0);\n return intersectionArea / (areaI + areaJ - intersectionArea);\n}\n\nexport function nonMaxSuppression(\n boxes: tf.Tensor2D,\n scores: number[],\n maxOutputSize: number,\n iouThreshold: number,\n scoreThreshold: number,\n): number[] {\n const numBoxes = boxes.shape[0];\n const outputSize = Math.min(\n maxOutputSize,\n numBoxes,\n );\n\n const candidates = scores\n .map((score, boxIndex) => ({ score, boxIndex }))\n .filter((c) => c.score > scoreThreshold)\n .sort((c1, c2) => c2.score - c1.score);\n\n const suppressFunc = (x: number) => (x <= iouThreshold ? 1 : 0);\n\n const selected: number[] = [];\n\n candidates.forEach((c) => {\n if (selected.length >= outputSize) {\n return;\n }\n const originalScore = c.score;\n\n for (let j = selected.length - 1; j >= 0; --j) {\n const iou = IOU(boxes, c.boxIndex, selected[j]);\n if (iou === 0.0) continue;\n c.score *= suppressFunc(iou);\n if (c.score <= scoreThreshold) break;\n }\n if (originalScore === c.score) {\n selected.push(c.boxIndex);\n }\n });\n\n return selected;\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { OutputLayerParams } from './types';\n\nfunction getCenterCoordinatesAndSizesLayer(x: tf.Tensor2D) {\n const vec = tf.unstack(tf.transpose(x, [1, 0]));\n\n const sizes = [\n tf.sub(vec[2], vec[0]),\n tf.sub(vec[3], vec[1]),\n ];\n\n const centers = [\n tf.add(vec[0], tf.div(sizes[0], tf.scalar(2))),\n tf.add(vec[1], tf.div(sizes[1], tf.scalar(2))),\n ];\n\n return {\n sizes,\n centers,\n };\n}\n\nfunction decodeBoxesLayer(x0: tf.Tensor2D, x1: tf.Tensor2D) {\n const {\n sizes,\n centers,\n } = getCenterCoordinatesAndSizesLayer(x0);\n\n const vec = tf.unstack(tf.transpose(x1, [1, 0]));\n\n const div0_out = tf.div(tf.mul(tf.exp(tf.div(vec[2], tf.scalar(5))), sizes[0]), tf.scalar(2));\n const add0_out = tf.add(tf.mul(tf.div(vec[0], tf.scalar(10)), sizes[0]), centers[0]);\n\n const div1_out = tf.div(tf.mul(tf.exp(tf.div(vec[3], tf.scalar(5))), sizes[1]), tf.scalar(2));\n const add1_out = tf.add(tf.mul(tf.div(vec[1], tf.scalar(10)), sizes[1]), centers[1]);\n\n return tf.transpose(\n tf.stack([\n tf.sub(add0_out, div0_out),\n tf.sub(add1_out, div1_out),\n tf.add(add0_out, div0_out),\n tf.add(add1_out, div1_out),\n ]),\n [1, 0],\n );\n}\n\nexport function outputLayer(\n boxPredictions: tf.Tensor4D,\n classPredictions: tf.Tensor4D,\n params: OutputLayerParams,\n) {\n return tf.tidy(() => {\n const batchSize = boxPredictions.shape[0];\n\n let boxes = decodeBoxesLayer(\n tf.reshape(tf.tile(params.extra_dim, [batchSize, 1, 1]), [-1, 4]) as tf.Tensor2D,\n tf.reshape(boxPredictions, [-1, 4]) as tf.Tensor2D,\n );\n boxes = tf.reshape(\n boxes,\n [batchSize, (boxes.shape[0] / batchSize), 4],\n );\n\n const scoresAndClasses = tf.sigmoid(tf.slice(classPredictions, [0, 0, 1], [-1, -1, -1]));\n let scores = tf.slice(scoresAndClasses, [0, 0, 0], [-1, -1, 1]) as tf.Tensor;\n\n scores = tf.reshape(\n scores,\n [batchSize, scores.shape[1] as number],\n );\n\n const boxesByBatch = tf.unstack(boxes) as tf.Tensor2D[];\n const scoresByBatch = tf.unstack(scores) as tf.Tensor1D[];\n\n return {\n boxes: boxesByBatch,\n scores: scoresByBatch,\n };\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { convLayer } from '../common/index';\nimport { BoxPredictionParams } from './types';\n\nexport function boxPredictionLayer(\n x: tf.Tensor4D,\n params: BoxPredictionParams,\n) {\n return tf.tidy(() => {\n const batchSize = x.shape[0];\n\n const boxPredictionEncoding = tf.reshape(\n convLayer(x, params.box_encoding_predictor),\n [batchSize, -1, 1, 4],\n );\n const classPrediction = tf.reshape(\n convLayer(x, params.class_predictor),\n [batchSize, -1, 3],\n );\n\n return {\n boxPredictionEncoding,\n classPrediction,\n };\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { boxPredictionLayer } from './boxPredictionLayer';\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { PredictionLayerParams } from './types';\n\nexport function predictionLayer(\n x: tf.Tensor4D,\n conv11: tf.Tensor4D,\n params: PredictionLayerParams,\n) {\n return tf.tidy(() => {\n const conv0 = pointwiseConvLayer(x, params.conv_0, [1, 1]);\n const conv1 = pointwiseConvLayer(conv0, params.conv_1, [2, 2]);\n const conv2 = pointwiseConvLayer(conv1, params.conv_2, [1, 1]);\n const conv3 = pointwiseConvLayer(conv2, params.conv_3, [2, 2]);\n const conv4 = pointwiseConvLayer(conv3, params.conv_4, [1, 1]);\n const conv5 = pointwiseConvLayer(conv4, params.conv_5, [2, 2]);\n const conv6 = pointwiseConvLayer(conv5, params.conv_6, [1, 1]);\n const conv7 = pointwiseConvLayer(conv6, params.conv_7, [2, 2]);\n\n const boxPrediction0 = boxPredictionLayer(conv11, params.box_predictor_0);\n const boxPrediction1 = boxPredictionLayer(x, params.box_predictor_1);\n const boxPrediction2 = boxPredictionLayer(conv1, params.box_predictor_2);\n const boxPrediction3 = boxPredictionLayer(conv3, params.box_predictor_3);\n const boxPrediction4 = boxPredictionLayer(conv5, params.box_predictor_4);\n const boxPrediction5 = boxPredictionLayer(conv7, params.box_predictor_5);\n\n const boxPredictions = tf.concat([\n boxPrediction0.boxPredictionEncoding,\n boxPrediction1.boxPredictionEncoding,\n boxPrediction2.boxPredictionEncoding,\n boxPrediction3.boxPredictionEncoding,\n boxPrediction4.boxPredictionEncoding,\n boxPrediction5.boxPredictionEncoding,\n ], 1) as tf.Tensor4D;\n\n const classPredictions = tf.concat([\n boxPrediction0.classPrediction,\n boxPrediction1.classPrediction,\n boxPrediction2.classPrediction,\n boxPrediction3.classPrediction,\n boxPrediction4.classPrediction,\n boxPrediction5.classPrediction,\n ], 1) as tf.Tensor4D;\n\n return {\n boxPredictions,\n classPredictions,\n };\n });\n}\n", "export interface ISsdMobilenetv1Options {\n minConfidence?: number\n maxResults?: number\n}\n\nexport class SsdMobilenetv1Options {\n protected _name: string = 'SsdMobilenetv1Options'\n\n private _minConfidence: number\n\n private _maxResults: number\n\n constructor({ minConfidence, maxResults }: ISsdMobilenetv1Options = {}) {\n this._minConfidence = minConfidence || 0.5;\n this._maxResults = maxResults || 100;\n\n if (typeof this._minConfidence !== 'number' || this._minConfidence <= 0 || this._minConfidence >= 1) {\n throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`);\n }\n\n if (typeof this._maxResults !== 'number') {\n throw new Error(`${this._name} - expected maxResults to be a number`);\n }\n }\n\n get minConfidence(): number { return this._minConfidence; }\n\n get maxResults(): number { return this._maxResults; }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { mobileNetV1 } from './mobileNetV1';\nimport { nonMaxSuppression } from './nonMaxSuppression';\nimport { outputLayer } from './outputLayer';\nimport { predictionLayer } from './predictionLayer';\nimport { ISsdMobilenetv1Options, SsdMobilenetv1Options } from './SsdMobilenetv1Options';\nimport { NetParams } from './types';\n\nexport class SsdMobilenetv1 extends NeuralNetwork {\n constructor() {\n super('SsdMobilenetv1');\n }\n\n public forwardInput(input: NetInput) {\n const { params } = this;\n\n if (!params) {\n throw new Error('SsdMobilenetv1 - load model before inference');\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(512, false).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(512, false), 'float32');\n\n const x = tf.sub(tf.mul(batchTensor, tf.scalar(0.007843137718737125)), tf.scalar(1)) as tf.Tensor4D;\n const features = mobileNetV1(x, params.mobilenetv1);\n\n const {\n boxPredictions,\n classPredictions,\n } = predictionLayer(features.out, features.conv11, params.prediction_layer);\n\n return outputLayer(boxPredictions, classPredictions, params.output_layer);\n });\n }\n\n public async forward(input: TNetInput) {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async locateFaces(\n input: TNetInput,\n options: ISsdMobilenetv1Options = {},\n ): Promise {\n const { maxResults, minConfidence } = new SsdMobilenetv1Options(options);\n\n const netInput = await toNetInput(input);\n\n const {\n boxes: _boxes,\n scores: _scores,\n } = this.forwardInput(netInput);\n\n // TODO batches\n const boxes = _boxes[0];\n const scores = _scores[0];\n for (let i = 1; i < _boxes.length; i++) {\n _boxes[i].dispose();\n _scores[i].dispose();\n }\n\n // TODO find a better way to filter by minConfidence\n const scoresData = Array.from(await scores.data());\n\n const iouThreshold = 0.5;\n const indices = nonMaxSuppression(\n boxes,\n scoresData as number[],\n maxResults,\n iouThreshold,\n minConfidence,\n );\n\n const reshapedDims = netInput.getReshapedInputDimensions(0);\n const inputSize = netInput.inputSize as number;\n const padX = inputSize / reshapedDims.width;\n const padY = inputSize / reshapedDims.height;\n\n const boxesData = boxes.arraySync();\n const results = indices\n .map((idx) => {\n const [top, bottom] = [\n Math.max(0, boxesData[idx][0]),\n Math.min(1.0, boxesData[idx][2]),\n ].map((val) => val * padY);\n const [left, right] = [\n Math.max(0, boxesData[idx][1]),\n Math.min(1.0, boxesData[idx][3]),\n ].map((val) => val * padX);\n return new FaceDetection(\n scoresData[idx] as number,\n new Rect(\n left,\n top,\n right - left,\n bottom - top,\n ),\n {\n height: netInput.getInputHeight(0),\n width: netInput.getInputWidth(0),\n },\n );\n });\n\n boxes.dispose();\n scores.dispose();\n\n return results;\n }\n\n protected getDefaultModelName(): string {\n return 'ssd_mobilenetv1_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights);\n }\n}\n", "import { SsdMobilenetv1 } from './SsdMobilenetv1';\n\nexport * from './SsdMobilenetv1';\nexport * from './SsdMobilenetv1Options';\n\nexport function createSsdMobilenetv1(weights: Float32Array) {\n const net = new SsdMobilenetv1();\n net.extractWeights(weights);\n return net;\n}\n\nexport function createFaceDetectionNet(weights: Float32Array) {\n return createSsdMobilenetv1(weights);\n}\n\n// alias for backward compatibily\nexport class FaceDetectionNet extends SsdMobilenetv1 {}\n", "import { Point } from '../classes/index';\n\nexport const IOU_THRESHOLD = 0.4;\n\nexport const BOX_ANCHORS = [\n new Point(0.738768, 0.874946),\n new Point(2.42204, 2.65704),\n new Point(4.30971, 7.04493),\n new Point(10.246, 4.59428),\n new Point(12.6868, 11.8741),\n];\n\nexport const BOX_ANCHORS_SEPARABLE = [\n new Point(1.603231, 2.094468),\n new Point(6.041143, 7.080126),\n new Point(2.882459, 3.518061),\n new Point(4.266906, 5.178857),\n new Point(9.041765, 10.66308),\n];\n\nexport const MEAN_RGB_SEPARABLE: [number, number, number] = [117.001, 114.697, 97.404];\n\nexport const DEFAULT_MODEL_NAME = 'tiny_yolov2_model';\nexport const DEFAULT_MODEL_NAME_SEPARABLE_CONV = 'tiny_yolov2_separable_conv_model';\n", "import { Point } from '../classes/Point';\n\nexport type TinyYolov2Config = {\n withSeparableConvs: boolean\n iouThreshold: number\n anchors: Point[]\n classes: string[]\n meanRgb?: [number, number, number]\n withClassScores?: boolean,\n filterSizes?: number[]\n isFirstLayerConv2d?: boolean\n}\n\nconst isNumber = (arg: any) => typeof arg === 'number';\n\nexport function validateConfig(config: any) {\n if (!config) {\n throw new Error(`invalid config: ${config}`);\n }\n\n if (typeof config.withSeparableConvs !== 'boolean') {\n throw new Error(`config.withSeparableConvs has to be a boolean, have: ${config.withSeparableConvs}`);\n }\n\n if (!isNumber(config.iouThreshold) || config.iouThreshold < 0 || config.iouThreshold > 1.0) {\n throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${config.iouThreshold}`);\n }\n\n if (\n !Array.isArray(config.classes)\n || !config.classes.length\n || !config.classes.every((c: any) => typeof c === 'string')\n ) {\n throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(config.classes)}`);\n }\n\n if (\n !Array.isArray(config.anchors)\n || !config.anchors.length\n || !config.anchors.map((a: any) => a || {}).every((a: any) => isNumber(a.x) && isNumber(a.y))\n ) {\n throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(config.anchors)}`);\n }\n\n if (config.meanRgb && (\n !Array.isArray(config.meanRgb)\n || config.meanRgb.length !== 3\n || !config.meanRgb.every(isNumber)\n )) {\n throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(config.meanRgb)}`);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nexport function leaky(x: tf.Tensor4D): tf.Tensor4D {\n return tf.tidy(() => {\n const min = tf.mul(x, tf.scalar(0.10000000149011612));\n return tf.add(tf.relu(tf.sub(x, min)), min);\n // return tf.maximum(x, min)\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { leaky } from './leaky';\nimport { ConvWithBatchNorm } from './types';\n\nexport function convWithBatchNorm(x: tf.Tensor4D, params: ConvWithBatchNorm): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D;\n\n out = tf.conv2d(out, params.conv.filters, [1, 1], 'valid');\n out = tf.sub(out, params.bn.sub);\n out = tf.mul(out, params.bn.truediv);\n out = tf.add(out, params.conv.bias);\n\n return leaky(out);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { SeparableConvParams } from '../common/types';\nimport { leaky } from './leaky';\n\nexport function depthwiseSeparableConv(x: tf.Tensor4D, params: SeparableConvParams): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D;\n\n out = tf.separableConv2d(out, params.depthwise_filter, params.pointwise_filter, [1, 1], 'valid');\n out = tf.add(out, params.bias);\n\n return leaky(out);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { extractConvParamsFactory } from '../common/index';\nimport { extractSeparableConvParamsFactory } from '../common/extractSeparableConvParamsFactory';\nimport { extractWeightsFactory } from '../common/extractWeightsFactory';\nimport { ExtractWeightsFunction, ParamMapping } from '../common/types';\nimport { TinyYolov2Config } from './config';\nimport { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings);\n\n function extractBatchNormParams(size: number, mappedPrefix: string): BatchNorm {\n const sub = tf.tensor1d(extractWeights(size));\n const truediv = tf.tensor1d(extractWeights(size));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/sub` },\n { paramPath: `${mappedPrefix}/truediv` },\n );\n\n return { sub, truediv };\n }\n\n function extractConvWithBatchNormParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ConvWithBatchNorm {\n const conv = extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv`);\n const bn = extractBatchNormParams(channelsOut, `${mappedPrefix}/bn`);\n\n return { conv, bn };\n }\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings);\n\n return {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n };\n}\n\nexport function extractParams(\n weights: Float32Array,\n config: TinyYolov2Config,\n boxEncodingSize: number,\n filterSizes: number[],\n): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n let params: TinyYolov2NetParams;\n\n if (config.withSeparableConvs) {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes;\n\n const conv0 = config.isFirstLayerConv2d\n ? extractConvParams(s0, s1, 3, 'conv0')\n : extractSeparableConvParams(s0, s1, 'conv0');\n const conv1 = extractSeparableConvParams(s1, s2, 'conv1');\n const conv2 = extractSeparableConvParams(s2, s3, 'conv2');\n const conv3 = extractSeparableConvParams(s3, s4, 'conv3');\n const conv4 = extractSeparableConvParams(s4, s5, 'conv4');\n const conv5 = extractSeparableConvParams(s5, s6, 'conv5');\n const conv6 = s7 ? extractSeparableConvParams(s6, s7, 'conv6') : undefined;\n const conv7 = s8 ? extractSeparableConvParams(s7, s8, 'conv7') : undefined;\n const conv8 = extractConvParams(s8 || s7 || s6, 5 * boxEncodingSize, 1, 'conv8');\n params = {\n conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8,\n };\n } else {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes;\n const conv0 = extractConvWithBatchNormParams(s0, s1, 'conv0');\n const conv1 = extractConvWithBatchNormParams(s1, s2, 'conv1');\n const conv2 = extractConvWithBatchNormParams(s2, s3, 'conv2');\n const conv3 = extractConvWithBatchNormParams(s3, s4, 'conv3');\n const conv4 = extractConvWithBatchNormParams(s4, s5, 'conv4');\n const conv5 = extractConvWithBatchNormParams(s5, s6, 'conv5');\n const conv6 = extractConvWithBatchNormParams(s6, s7, 'conv6');\n const conv7 = extractConvWithBatchNormParams(s7, s8, 'conv7');\n const conv8 = extractConvParams(s8, 5 * boxEncodingSize, 1, 'conv8');\n params = {\n conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8,\n };\n }\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ConvParams } from '../common/index';\nimport { disposeUnusedWeightTensors } from '../common/disposeUnusedWeightTensors';\nimport { loadSeparableConvParamsFactory } from '../common/extractSeparableConvParamsFactory';\nimport { extractWeightEntryFactory } from '../common/extractWeightEntryFactory';\nimport { ParamMapping } from '../common/types';\nimport { TinyYolov2Config } from './config';\nimport { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractBatchNormParams(prefix: string): BatchNorm {\n const sub = extractWeightEntry(`${prefix}/sub`, 1);\n const truediv = extractWeightEntry(`${prefix}/truediv`, 1);\n return { sub, truediv };\n }\n\n function extractConvParams(prefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/filters`, 4);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n return { filters, bias };\n }\n\n function extractConvWithBatchNormParams(prefix: string): ConvWithBatchNorm {\n const conv = extractConvParams(`${prefix}/conv`);\n const bn = extractBatchNormParams(`${prefix}/bn`);\n return { conv, bn };\n }\n\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry);\n\n return {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n config: TinyYolov2Config,\n): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n } = extractorsFactory(weightMap, paramMappings);\n\n let params: TinyYolov2NetParams;\n\n if (config.withSeparableConvs) {\n // eslint-disable-next-line no-mixed-operators\n const numFilters = (config.filterSizes && config.filterSizes.length || 9);\n params = {\n conv0: config.isFirstLayerConv2d ? extractConvParams('conv0') : extractSeparableConvParams('conv0'),\n conv1: extractSeparableConvParams('conv1'),\n conv2: extractSeparableConvParams('conv2'),\n conv3: extractSeparableConvParams('conv3'),\n conv4: extractSeparableConvParams('conv4'),\n conv5: extractSeparableConvParams('conv5'),\n conv6: numFilters > 7 ? extractSeparableConvParams('conv6') : undefined,\n conv7: numFilters > 8 ? extractSeparableConvParams('conv7') : undefined,\n conv8: extractConvParams('conv8'),\n };\n } else {\n params = {\n conv0: extractConvWithBatchNormParams('conv0'),\n conv1: extractConvWithBatchNormParams('conv1'),\n conv2: extractConvWithBatchNormParams('conv2'),\n conv3: extractConvWithBatchNormParams('conv3'),\n conv4: extractConvWithBatchNormParams('conv4'),\n conv5: extractConvWithBatchNormParams('conv5'),\n conv6: extractConvWithBatchNormParams('conv6'),\n conv7: extractConvWithBatchNormParams('conv7'),\n conv8: extractConvParams('conv8'),\n };\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "export interface ITinyYolov2Options {\n inputSize?: number\n scoreThreshold?: number\n}\n\nexport class TinyYolov2Options {\n protected _name: string = 'TinyYolov2Options'\n\n private _inputSize: number\n\n private _scoreThreshold: number\n\n constructor({ inputSize, scoreThreshold }: ITinyYolov2Options = {}) {\n this._inputSize = inputSize || 416;\n this._scoreThreshold = scoreThreshold || 0.5;\n\n if (typeof this._inputSize !== 'number' || this._inputSize % 32 !== 0) {\n throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`);\n }\n\n if (typeof this._scoreThreshold !== 'number' || this._scoreThreshold <= 0 || this._scoreThreshold >= 1) {\n throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`);\n }\n }\n\n get inputSize(): number { return this._inputSize; }\n\n get scoreThreshold(): number { return this._scoreThreshold; }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { BoundingBox } from '../classes/BoundingBox';\nimport { Dimensions } from '../classes/Dimensions';\nimport { ObjectDetection } from '../classes/ObjectDetection';\nimport { convLayer } from '../common/index';\nimport { ConvParams, SeparableConvParams } from '../common/types';\nimport { toNetInput } from '../dom/index';\nimport { NetInput } from '../dom/NetInput';\nimport { TNetInput } from '../dom/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { sigmoid } from '../ops/index';\nimport { nonMaxSuppression } from '../ops/nonMaxSuppression';\nimport { normalize } from '../ops/normalize';\nimport { TinyYolov2Config, validateConfig } from './config';\nimport { convWithBatchNorm } from './convWithBatchNorm';\nimport { depthwiseSeparableConv } from './depthwiseSeparableConv';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { leaky } from './leaky';\nimport { ITinyYolov2Options, TinyYolov2Options } from './TinyYolov2Options';\nimport { DefaultTinyYolov2NetParams, MobilenetParams, TinyYolov2NetParams } from './types';\n\nexport class TinyYolov2Base extends NeuralNetwork {\n public static DEFAULT_FILTER_SIZES = [\n 3, 16, 32, 64, 128, 256, 512, 1024, 1024,\n ]\n\n private _config: TinyYolov2Config\n\n constructor(config: TinyYolov2Config) {\n super('TinyYolov2');\n validateConfig(config);\n this._config = config;\n }\n\n public get config(): TinyYolov2Config {\n return this._config;\n }\n\n public get withClassScores(): boolean {\n return this.config.withClassScores || this.config.classes.length > 1;\n }\n\n public get boxEncodingSize(): number {\n return 5 + (this.withClassScores ? this.config.classes.length : 0);\n }\n\n public runTinyYolov2(x: tf.Tensor4D, params: DefaultTinyYolov2NetParams): tf.Tensor4D {\n let out = convWithBatchNorm(x, params.conv0);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv1);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv2);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv3);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv4);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv5);\n out = tf.maxPool(out, [2, 2], [1, 1], 'same');\n out = convWithBatchNorm(out, params.conv6);\n out = convWithBatchNorm(out, params.conv7);\n\n return convLayer(out, params.conv8, 'valid', false);\n }\n\n public runMobilenet(x: tf.Tensor4D, params: MobilenetParams): tf.Tensor4D {\n let out = this.config.isFirstLayerConv2d\n ? leaky(convLayer(x, params.conv0 as ConvParams, 'valid', false))\n : depthwiseSeparableConv(x, params.conv0 as SeparableConvParams);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv1);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv2);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv3);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv4);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv5);\n out = tf.maxPool(out, [2, 2], [1, 1], 'same');\n out = params.conv6 ? depthwiseSeparableConv(out, params.conv6) : out;\n out = params.conv7 ? depthwiseSeparableConv(out, params.conv7) : out;\n\n return convLayer(out, params.conv8, 'valid', false);\n }\n\n public forwardInput(input: NetInput, inputSize: number): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('TinyYolov2 - load model before inference');\n }\n\n return tf.tidy(() => {\n // let batchTensor = input.toBatchTensor(inputSize, false).toFloat()\n let batchTensor = tf.cast(input.toBatchTensor(inputSize, false), 'float32');\n batchTensor = this.config.meanRgb\n ? normalize(batchTensor, this.config.meanRgb)\n : batchTensor;\n batchTensor = batchTensor.div(tf.scalar(256)) as tf.Tensor4D;\n\n return this.config.withSeparableConvs\n ? this.runMobilenet(batchTensor, params as MobilenetParams)\n : this.runTinyYolov2(batchTensor, params as DefaultTinyYolov2NetParams);\n });\n }\n\n public async forward(input: TNetInput, inputSize: number): Promise {\n return this.forwardInput(await toNetInput(input), inputSize);\n }\n\n public async detect(input: TNetInput, forwardParams: ITinyYolov2Options = {}): Promise {\n const { inputSize, scoreThreshold } = new TinyYolov2Options(forwardParams);\n\n const netInput = await toNetInput(input);\n const out = await this.forwardInput(netInput, inputSize);\n const out0 = tf.tidy(() => tf.unstack(out)[0].expandDims()) as tf.Tensor4D;\n\n const inputDimensions = {\n width: netInput.getInputWidth(0),\n height: netInput.getInputHeight(0),\n };\n\n const results = await this.extractBoxes(out0, netInput.getReshapedInputDimensions(0), scoreThreshold);\n out.dispose();\n out0.dispose();\n\n const boxes = results.map((res) => res.box);\n const scores = results.map((res) => res.score);\n const classScores = results.map((res) => res.classScore);\n const classNames = results.map((res) => this.config.classes[res.label]);\n\n const indices = nonMaxSuppression(\n boxes.map((box) => box.rescale(inputSize)),\n scores,\n this.config.iouThreshold,\n true,\n );\n\n const detections = indices.map((idx) => new ObjectDetection(\n scores[idx],\n classScores[idx],\n classNames[idx],\n boxes[idx],\n inputDimensions,\n ));\n\n return detections;\n }\n\n protected getDefaultModelName(): string {\n return '';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this.config);\n }\n\n protected extractParams(weights: Float32Array) {\n const filterSizes = this.config.filterSizes || TinyYolov2Base.DEFAULT_FILTER_SIZES;\n\n const numFilters = filterSizes ? filterSizes.length : undefined;\n if (numFilters !== 7 && numFilters !== 8 && numFilters !== 9) {\n throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`);\n }\n return extractParams(weights, this.config, this.boxEncodingSize, filterSizes);\n }\n\n protected async extractBoxes(\n outputTensor: tf.Tensor4D,\n inputBlobDimensions: Dimensions,\n scoreThreshold?: number,\n ) {\n const { width, height } = inputBlobDimensions;\n const inputSize = Math.max(width, height);\n const correctionFactorX = inputSize / width;\n const correctionFactorY = inputSize / height;\n\n const numCells = outputTensor.shape[1];\n const numBoxes = this.config.anchors.length;\n\n const [boxesTensor, scoresTensor, classScoresTensor] = tf.tidy(() => {\n const reshaped = outputTensor.reshape([numCells, numCells, numBoxes, this.boxEncodingSize]);\n\n const boxes = reshaped.slice([0, 0, 0, 0], [numCells, numCells, numBoxes, 4]);\n const scores = reshaped.slice([0, 0, 0, 4], [numCells, numCells, numBoxes, 1]);\n const classScores = this.withClassScores\n ? tf.softmax(reshaped.slice([0, 0, 0, 5], [numCells, numCells, numBoxes, this.config.classes.length]), 3)\n : tf.scalar(0);\n return [boxes, scores, classScores];\n });\n\n const results = [] as any;\n\n const scoresData = await scoresTensor.array();\n const boxesData = await boxesTensor.array();\n for (let row = 0; row < numCells; row++) {\n for (let col = 0; col < numCells; col++) {\n for (let anchor = 0; anchor < numBoxes; anchor++) {\n const score = sigmoid(scoresData[row][col][anchor][0]);\n if (!scoreThreshold || score > scoreThreshold) {\n const ctX = ((col + sigmoid(boxesData[row][col][anchor][0])) / numCells) * correctionFactorX;\n const ctY = ((row + sigmoid(boxesData[row][col][anchor][1])) / numCells) * correctionFactorY;\n const widthLocal = ((Math.exp(boxesData[row][col][anchor][2]) * this.config.anchors[anchor].x) / numCells) * correctionFactorX;\n const heightLocal = ((Math.exp(boxesData[row][col][anchor][3]) * this.config.anchors[anchor].y) / numCells) * correctionFactorY;\n\n const x = (ctX - (widthLocal / 2));\n const y = (ctY - (heightLocal / 2));\n\n const pos = { row, col, anchor };\n const { classScore, label } = this.withClassScores\n ? await this.extractPredictedClass(classScoresTensor as tf.Tensor4D, pos)\n : { classScore: 1, label: 0 };\n\n results.push({\n box: new BoundingBox(x, y, x + widthLocal, y + heightLocal),\n score,\n classScore: score * classScore,\n label,\n ...pos,\n });\n }\n }\n }\n }\n\n boxesTensor.dispose();\n scoresTensor.dispose();\n classScoresTensor.dispose();\n\n return results;\n }\n\n private async extractPredictedClass(classesTensor: tf.Tensor4D, pos: { row: number, col: number, anchor: number }) {\n const { row, col, anchor } = pos;\n const classesData = await classesTensor.array();\n return Array(this.config.classes.length).fill(0)\n .map((_, i) => classesData[row][col][anchor][i])\n .map((classScore, label) => ({\n classScore,\n label,\n }))\n .reduce((max, curr) => (max.classScore > curr.classScore ? max : curr));\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { FaceDetection, Point } from '../classes/index';\nimport { ParamMapping } from '../common/types';\nimport { TNetInput } from '../dom/types';\nimport {\n BOX_ANCHORS,\n BOX_ANCHORS_SEPARABLE,\n DEFAULT_MODEL_NAME,\n DEFAULT_MODEL_NAME_SEPARABLE_CONV,\n IOU_THRESHOLD,\n MEAN_RGB_SEPARABLE,\n} from './const';\nimport { TinyYolov2Base } from './TinyYolov2Base';\nimport { ITinyYolov2Options } from './TinyYolov2Options';\nimport { TinyYolov2NetParams } from './types';\n\nexport class TinyYolov2 extends TinyYolov2Base {\n constructor(withSeparableConvs: boolean = true) {\n const config = {\n withSeparableConvs,\n iouThreshold: IOU_THRESHOLD,\n classes: ['face'],\n ...(withSeparableConvs\n ? {\n anchors: BOX_ANCHORS_SEPARABLE,\n meanRgb: MEAN_RGB_SEPARABLE,\n }\n : {\n anchors: BOX_ANCHORS,\n withClassScores: true,\n }),\n };\n\n super(config);\n }\n\n public get withSeparableConvs(): boolean {\n return this.config.withSeparableConvs;\n }\n\n public get anchors(): Point[] {\n return this.config.anchors;\n }\n\n public async locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise {\n const objectDetections = await this.detect(input, forwardParams);\n return objectDetections.map((det) => new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }));\n }\n\n protected getDefaultModelName(): string {\n return this.withSeparableConvs ? DEFAULT_MODEL_NAME_SEPARABLE_CONV : DEFAULT_MODEL_NAME;\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n return super.extractParamsFromWeigthMap(weightMap);\n }\n}\n", "import { TinyYolov2 } from './TinyYolov2';\n\nexport * from './TinyYolov2Options';\n\nexport * from './config';\nexport * from './types';\n\nexport { TinyYolov2 };\n\nexport function createTinyYolov2(weights: Float32Array, withSeparableConvs: boolean = true) {\n const net = new TinyYolov2(withSeparableConvs);\n net.extractWeights(weights);\n return net;\n}\n", "import { ITinyYolov2Options, TinyYolov2Options } from '../tinyYolov2/index';\n\nexport interface ITinyFaceDetectorOptions extends ITinyYolov2Options {}\n\nexport class TinyFaceDetectorOptions extends TinyYolov2Options {\n protected _name: string = 'TinyFaceDetectorOptions'\n}\n", "export class ComposableTask {\n public async then(\n // eslint-disable-next-line no-unused-vars\n onfulfilled: (value: T) => T | PromiseLike,\n ): Promise {\n return onfulfilled(await this.run());\n }\n\n public async run(): Promise {\n throw new Error('ComposableTask - run is not implemented');\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\n\nexport async function extractAllFacesAndComputeResults, TResult>(\n parentResults: TSource[],\n input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n computeResults: (faces: Array) => Promise,\n extractedFaces?: Array | null,\n // eslint-disable-next-line no-unused-vars\n getRectForAlignment: (parentResult: WithFaceLandmarks) => FaceDetection = ({ alignedRect }) => alignedRect,\n) {\n const faceBoxes = parentResults.map((parentResult) => (isWithFaceLandmarks(parentResult)\n ? getRectForAlignment(parentResult)\n : parentResult.detection));\n const faces: Array = extractedFaces || (\n input instanceof tf.Tensor\n ? await extractFaceTensors(input, faceBoxes)\n : await extractFaces(input, faceBoxes)\n );\n\n const results = await computeResults(faces);\n\n faces.forEach((f) => f instanceof tf.Tensor && f.dispose());\n\n return results;\n}\n\nexport async function extractSingleFaceAndComputeResult, TResult>(\n parentResult: TSource,\n input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n computeResult: (face: HTMLCanvasElement | tf.Tensor3D) => Promise,\n extractedFaces?: Array | null,\n // eslint-disable-next-line no-unused-vars\n getRectForAlignment?: (parentResultLocal: WithFaceLandmarks) => FaceDetection,\n) {\n return extractAllFacesAndComputeResults(\n [parentResult],\n input,\n async (faces) => computeResult(faces[0]),\n extractedFaces,\n getRectForAlignment,\n );\n}\n", "import { Point } from '../classes/index';\n\nexport const IOU_THRESHOLD = 0.4;\n\nexport const BOX_ANCHORS = [\n new Point(1.603231, 2.094468),\n new Point(6.041143, 7.080126),\n new Point(2.882459, 3.518061),\n new Point(4.266906, 5.178857),\n new Point(9.041765, 10.66308),\n];\n\nexport const MEAN_RGB: [number, number, number] = [117.001, 114.697, 97.404];\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { FaceDetection, Point } from '../classes/index';\nimport { ParamMapping } from '../common/index';\nimport { TNetInput } from '../dom/index';\nimport { ITinyYolov2Options } from '../tinyYolov2/index';\nimport { TinyYolov2Base } from '../tinyYolov2/TinyYolov2Base';\nimport { TinyYolov2NetParams } from '../tinyYolov2/types';\nimport { BOX_ANCHORS, IOU_THRESHOLD, MEAN_RGB } from './const';\n\nexport class TinyFaceDetector extends TinyYolov2Base {\n constructor() {\n const config = {\n withSeparableConvs: true,\n iouThreshold: IOU_THRESHOLD,\n classes: ['face'],\n anchors: BOX_ANCHORS,\n meanRgb: MEAN_RGB,\n isFirstLayerConv2d: true,\n filterSizes: [3, 16, 32, 64, 128, 256, 512],\n };\n\n super(config);\n }\n\n public get anchors(): Point[] {\n return this.config.anchors;\n }\n\n public async locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise {\n const objectDetections = await this.detect(input, forwardParams);\n return objectDetections.map((det) => new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }));\n }\n\n protected getDefaultModelName(): string {\n return 'tiny_face_detector_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n return super.extractParamsFromWeigthMap(weightMap);\n }\n}\n", "import { AgeGenderNet } from '../ageGenderNet/AgeGenderNet';\nimport { AgeAndGenderPrediction } from '../ageGenderNet/types';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { TNetInput } from '../dom/index';\nimport { FaceExpressionNet } from '../faceExpressionNet/FaceExpressionNet';\nimport { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\nimport { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';\nimport { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';\nimport { FaceRecognitionNet } from '../faceRecognitionNet/FaceRecognitionNet';\nimport { SsdMobilenetv1 } from '../ssdMobilenetv1/SsdMobilenetv1';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { TinyFaceDetector } from '../tinyFaceDetector/TinyFaceDetector';\nimport { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';\nimport { ITinyYolov2Options, TinyYolov2 } from '../tinyYolov2/index';\n\nexport const nets = {\n ssdMobilenetv1: new SsdMobilenetv1(),\n tinyFaceDetector: new TinyFaceDetector(),\n tinyYolov2: new TinyYolov2(),\n faceLandmark68Net: new FaceLandmark68Net(),\n faceLandmark68TinyNet: new FaceLandmark68TinyNet(),\n faceRecognitionNet: new FaceRecognitionNet(),\n faceExpressionNet: new FaceExpressionNet(),\n ageGenderNet: new AgeGenderNet(),\n};\n\n/**\n * Attempts to detect all faces in an image using SSD Mobilenetv1 Network.\n *\n * @param input The input image.\n * @param options (optional, default: see SsdMobilenetv1Options constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const ssdMobilenetv1 = (input: TNetInput, options: SsdMobilenetv1Options): Promise => nets.ssdMobilenetv1.locateFaces(input, options);\n\n/**\n * Attempts to detect all faces in an image using the Tiny Face Detector.\n *\n * @param input The input image.\n * @param options (optional, default: see TinyFaceDetectorOptions constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const tinyFaceDetector = (input: TNetInput, options: TinyFaceDetectorOptions): Promise => nets.tinyFaceDetector.locateFaces(input, options);\n\n/**\n * Attempts to detect all faces in an image using the Tiny Yolov2 Network.\n *\n * @param input The input image.\n * @param options (optional, default: see TinyYolov2Options constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const tinyYolov2 = (input: TNetInput, options: ITinyYolov2Options): Promise => nets.tinyYolov2.locateFaces(input, options);\n\n/**\n * Detects the 68 point face landmark positions of the face shown in an image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns 68 point face landmarks or array thereof in case of batch input.\n */\nexport const detectFaceLandmarks = (input: TNetInput): Promise => nets.faceLandmark68Net.detectLandmarks(input);\n\n/**\n * Detects the 68 point face landmark positions of the face shown in an image\n * using a tinier version of the 68 point face landmark model, which is slightly\n * faster at inference, but also slightly less accurate.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns 68 point face landmarks or array thereof in case of batch input.\n */\nexport const detectFaceLandmarksTiny = (input: TNetInput): Promise => nets.faceLandmark68TinyNet.detectLandmarks(input);\n\n/**\n * Computes a 128 entry vector (face descriptor / face embeddings) from the face shown in an image,\n * which uniquely represents the features of that persons face. The computed face descriptor can\n * be used to measure the similarity between faces, by computing the euclidean distance of two\n * face descriptors.\n *\n * @param inputs The face image extracted from the aligned bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Face descriptor with 128 entries or array thereof in case of batch input.\n */\nexport const computeFaceDescriptor = (input: TNetInput): Promise => nets.faceRecognitionNet.computeFaceDescriptor(input);\n\n/**\n * Recognizes the facial expressions from a face image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Facial expressions with corresponding probabilities or array thereof in case of batch input.\n */\nexport const recognizeFaceExpressions = (input: TNetInput): Promise => nets.faceExpressionNet.predictExpressions(input);\n\n/**\n * Predicts age and gender from a face image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Predictions with age, gender and gender probability or array thereof in case of batch input.\n */\nexport const predictAgeAndGender = (input: TNetInput): Promise => nets.ageGenderNet.predictAgeAndGender(input);\n\nexport const loadSsdMobilenetv1Model = (url: string) => nets.ssdMobilenetv1.load(url);\nexport const loadTinyFaceDetectorModel = (url: string) => nets.tinyFaceDetector.load(url);\nexport const loadTinyYolov2Model = (url: string) => nets.tinyYolov2.load(url);\nexport const loadFaceLandmarkModel = (url: string) => nets.faceLandmark68Net.load(url);\nexport const loadFaceLandmarkTinyModel = (url: string) => nets.faceLandmark68TinyNet.load(url);\nexport const loadFaceRecognitionModel = (url: string) => nets.faceRecognitionNet.load(url);\nexport const loadFaceExpressionModel = (url: string) => nets.faceExpressionNet.load(url);\nexport const loadAgeGenderModel = (url: string) => nets.ageGenderNet.load(url);\n\n// backward compatibility\nexport const loadFaceDetectionModel = loadSsdMobilenetv1Model;\nexport const locateFaces = ssdMobilenetv1;\nexport const detectLandmarks = detectFaceLandmarks;\n", "/* eslint-disable max-classes-per-file */\nimport * as tf from '../../dist/tfjs.esm';\n\nimport { TNetInput } from '../dom/index';\nimport { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { extendWithFaceExpressions, WithFaceExpressions } from '../factories/WithFaceExpressions';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderTask,\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\n\nexport class PredictFaceExpressionsTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected extractedFaces?: Array,\n ) {\n super();\n }\n}\n\nexport class PredictAllFaceExpressionsTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictFaceExpressionsTaskBase[], TSource[]> {\n public async run(): Promise[]> {\n const parentResults = await this.parentTask;\n\n const faceExpressionsByFace = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n async (faces) => Promise.all(faces.map(\n (face) => nets.faceExpressionNet.predictExpressions(face) as Promise,\n )),\n this.extractedFaces,\n );\n\n return parentResults.map(\n (parentResult, i) => extendWithFaceExpressions(parentResult, faceExpressionsByFace[i]),\n );\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderTask(this, this.input);\n }\n}\n\nexport class PredictSingleFaceExpressionsTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictFaceExpressionsTaskBase | undefined, TSource | undefined> {\n public async run(): Promise | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n\n const faceExpressions = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n (face) => nets.faceExpressionNet.predictExpressions(face) as Promise,\n this.extractedFaces,\n );\n\n return extendWithFaceExpressions(parentResult, faceExpressions);\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderTask(this, this.input);\n }\n}\n\nexport class PredictAllFaceExpressionsWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictAllFaceExpressionsTask {\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input);\n }\n}\n\nexport class PredictSingleFaceExpressionsWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictSingleFaceExpressionsTask {\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input);\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport * as tf from '../../dist/tfjs.esm';\n\nimport { AgeAndGenderPrediction } from '../ageGenderNet/types';\nimport { TNetInput } from '../dom/index';\nimport { extendWithAge, WithAge } from '../factories/WithAge';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { extendWithGender, WithGender } from '../factories/WithGender';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllFaceExpressionsTask,\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class PredictAgeAndGenderTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected extractedFaces?: Array,\n ) {\n super();\n }\n}\n\nexport class PredictAllAgeAndGenderTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictAgeAndGenderTaskBase>[], TSource[]> {\n public async run(): Promise>[]> {\n const parentResults = await this.parentTask;\n\n const ageAndGenderByFace = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n async (faces) => Promise.all(faces.map(\n (face) => nets.ageGenderNet.predictAgeAndGender(face) as Promise,\n )),\n this.extractedFaces,\n );\n\n return parentResults.map((parentResult, i) => {\n const { age, gender, genderProbability } = ageAndGenderByFace[i];\n return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age);\n });\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsTask(this, this.input);\n }\n}\n\nexport class PredictSingleAgeAndGenderTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictAgeAndGenderTaskBase> | undefined, TSource | undefined> {\n public async run(): Promise> | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n\n const { age, gender, genderProbability } = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n (face) => nets.ageGenderNet.predictAgeAndGender(face) as Promise,\n this.extractedFaces,\n );\n\n return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age);\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsTask(this, this.input);\n }\n}\n\nexport class PredictAllAgeAndGenderWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictAllAgeAndGenderTask {\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input);\n }\n}\n\nexport class PredictSingleAgeAndGenderWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictSingleAgeAndGenderTask {\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input);\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport { TNetInput } from '../dom/index';\nimport { extendWithFaceDescriptor, WithFaceDescriptor } from '../factories/WithFaceDescriptor';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\nimport {\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class ComputeFaceDescriptorsTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n ) {\n super();\n }\n}\n\nexport class ComputeAllFaceDescriptorsTask<\n TSource extends WithFaceLandmarks>\n> extends ComputeFaceDescriptorsTaskBase[], TSource[]> {\n public async run(): Promise[]> {\n const parentResults = await this.parentTask;\n\n const descriptors = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n (faces) => Promise.all(faces.map((face) => nets.faceRecognitionNet.computeFaceDescriptor(face) as Promise)),\n null,\n (parentResult) => parentResult.landmarks.align(null, { useDlibAlignment: true }),\n );\n\n return descriptors.map((descriptor, i) => extendWithFaceDescriptor(parentResults[i], descriptor));\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n}\n\nexport class ComputeSingleFaceDescriptorTask<\n TSource extends WithFaceLandmarks>\n> extends ComputeFaceDescriptorsTaskBase | undefined, TSource | undefined> {\n public async run(): Promise | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n const descriptor = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n (face) => nets.faceRecognitionNet.computeFaceDescriptor(face) as Promise,\n null,\n // eslint-disable-next-line no-shadow\n (parentResult) => parentResult.landmarks.align(null, { useDlibAlignment: true }),\n );\n\n return extendWithFaceDescriptor(parentResult, descriptor);\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport * as tf from '../../dist/tfjs.esm';\n\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';\nimport { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { extendWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\nimport {\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class DetectFaceLandmarksTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected useTinyLandmarkNet: boolean,\n ) {\n super();\n }\n\n protected get landmarkNet(): FaceLandmark68Net | FaceLandmark68TinyNet {\n return this.useTinyLandmarkNet\n ? nets.faceLandmark68TinyNet\n : nets.faceLandmark68Net;\n }\n}\n\nexport class DetectAllFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase[], TSource[]> {\n public async run(): Promise[]> {\n const parentResults = await this.parentTask;\n const detections = parentResults.map((res) => res.detection);\n\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, detections)\n : await extractFaces(this.input, detections);\n\n const faceLandmarksByFace = await Promise.all(faces.map(\n (face) => this.landmarkNet.detectLandmarks(face),\n )) as FaceLandmarks68[];\n\n faces.forEach((f) => f instanceof tf.Tensor && f.dispose());\n\n return parentResults.map((parentResult, i) => extendWithFaceLandmarks(parentResult, faceLandmarksByFace[i]));\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input);\n }\n}\n\nexport class DetectSingleFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase | undefined, TSource | undefined> {\n public async run(): Promise | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n\n const { detection } = parentResult;\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, [detection])\n : await extractFaces(this.input, [detection]);\n\n const landmarks = await this.landmarkNet.detectLandmarks(faces[0]) as FaceLandmarks68;\n\n faces.forEach((f) => f instanceof tf.Tensor && f.dispose());\n\n return extendWithFaceLandmarks(parentResult, landmarks);\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input);\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { TNetInput } from '../dom/index';\nimport { extendWithFaceDetection, WithFaceDetection } from '../factories/WithFaceDetection';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';\nimport { TinyYolov2Options } from '../tinyYolov2/index';\nimport { ComposableTask } from './ComposableTask';\nimport { DetectAllFaceLandmarksTask, DetectSingleFaceLandmarksTask } from './DetectFaceLandmarksTasks';\nimport { nets } from './nets';\nimport { PredictAllAgeAndGenderTask, PredictSingleAgeAndGenderTask } from './PredictAgeAndGenderTask';\nimport { PredictAllFaceExpressionsTask, PredictSingleFaceExpressionsTask } from './PredictFaceExpressionsTask';\nimport { FaceDetectionOptions } from './types';\n\nexport class DetectFacesTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected options: FaceDetectionOptions = new SsdMobilenetv1Options(),\n ) {\n super();\n }\n}\n\nexport class DetectAllFacesTask extends DetectFacesTaskBase {\n public async run(): Promise {\n const { input, options } = this;\n\n // eslint-disable-next-line no-nested-ternary\n const faceDetectionFunction = options instanceof TinyFaceDetectorOptions\n // eslint-disable-next-line no-shadow\n ? (input: TNetInput) => nets.tinyFaceDetector.locateFaces(input, options)\n : (\n // eslint-disable-next-line no-nested-ternary\n options instanceof SsdMobilenetv1Options\n // eslint-disable-next-line no-shadow\n ? (input: TNetInput) => nets.ssdMobilenetv1.locateFaces(input, options)\n : (\n options instanceof TinyYolov2Options\n // eslint-disable-next-line no-shadow\n ? (input: TNetInput) => nets.tinyYolov2.locateFaces(input, options)\n : null\n )\n );\n\n if (!faceDetectionFunction) {\n throw new Error('detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options');\n }\n\n return faceDetectionFunction(input);\n }\n\n private runAndExtendWithFaceDetections(): Promise[]> {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise[]>(async (resolve) => {\n const detections = await this.run();\n resolve(detections.map((detection) => extendWithFaceDetection({}, detection)));\n });\n }\n\n withFaceLandmarks(useTinyLandmarkNet: boolean = false) {\n return new DetectAllFaceLandmarksTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n useTinyLandmarkNet,\n );\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n );\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n );\n }\n}\n\nexport class DetectSingleFaceTask extends DetectFacesTaskBase {\n public async run(): Promise {\n const faceDetections = await new DetectAllFacesTask(this.input, this.options);\n let faceDetectionWithHighestScore = faceDetections[0];\n faceDetections.forEach((faceDetection) => {\n if (faceDetection.score > faceDetectionWithHighestScore.score) {\n faceDetectionWithHighestScore = faceDetection;\n }\n });\n return faceDetectionWithHighestScore;\n }\n\n private runAndExtendWithFaceDetection(): Promise | undefined> {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise | undefined>(async (resolve) => {\n const detection = await this.run();\n resolve(detection ? extendWithFaceDetection<{}>({}, detection) : undefined);\n });\n }\n\n withFaceLandmarks(useTinyLandmarkNet: boolean = false) {\n return new DetectSingleFaceLandmarksTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n useTinyLandmarkNet,\n );\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n );\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n );\n }\n}\n", "import { TNetInput } from '../dom/index';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { DetectAllFacesTask, DetectSingleFaceTask } from './DetectFacesTasks';\nimport { FaceDetectionOptions } from './types';\n\nexport function detectSingleFace(\n input: TNetInput,\n options: FaceDetectionOptions = new SsdMobilenetv1Options(),\n): DetectSingleFaceTask {\n return new DetectSingleFaceTask(input, options);\n}\n\nexport function detectAllFaces(\n input: TNetInput,\n options: FaceDetectionOptions = new SsdMobilenetv1Options(),\n): DetectAllFacesTask {\n return new DetectAllFacesTask(input, options);\n}\n", "import { TNetInput } from '../dom/index';\nimport { WithFaceDescriptor, WithFaceDetection, WithFaceLandmarks } from '../factories/index';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/index';\nimport { ITinyYolov2Options, TinyYolov2Options } from '../tinyYolov2/index';\nimport { detectAllFaces } from './detectFaces';\n\n// export allFaces API for backward compatibility\n\nexport async function allFacesSsdMobilenetv1(\n input: TNetInput,\n minConfidence?: number,\n): Promise>>[]> {\n return detectAllFaces(input, new SsdMobilenetv1Options(minConfidence ? { minConfidence } : {}))\n .withFaceLandmarks()\n .withFaceDescriptors();\n}\n\nexport async function allFacesTinyYolov2(\n input: TNetInput,\n forwardParams: ITinyYolov2Options = {},\n): Promise>>[]> {\n return detectAllFaces(input, new TinyYolov2Options(forwardParams))\n .withFaceLandmarks()\n .withFaceDescriptors();\n}\n\nexport const allFaces = allFacesSsdMobilenetv1;\n", "export function euclideanDistance(arr1: number[] | Float32Array, arr2: number[] | Float32Array) {\n if (arr1.length !== arr2.length) throw new Error('euclideanDistance: arr1.length !== arr2.length');\n\n const desc1 = Array.from(arr1);\n const desc2 = Array.from(arr2);\n\n return Math.sqrt(\n desc1\n .map((val, i) => val - desc2[i])\n .reduce((res, diff) => res + (diff ** 2), 0),\n );\n}\n", "import { FaceMatch } from '../classes/FaceMatch';\nimport { LabeledFaceDescriptors } from '../classes/LabeledFaceDescriptors';\nimport { euclideanDistance } from '../euclideanDistance';\nimport { WithFaceDescriptor } from '../factories/index';\n\nexport class FaceMatcher {\n private _labeledDescriptors: LabeledFaceDescriptors[]\n\n private _distanceThreshold: number\n\n constructor(\n inputs: LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>,\n distanceThreshold: number = 0.6,\n ) {\n this._distanceThreshold = distanceThreshold;\n\n const inputArray = Array.isArray(inputs) ? inputs : [inputs];\n\n if (!inputArray.length) {\n throw new Error('FaceRecognizer.constructor - expected atleast one input');\n }\n\n let count = 1;\n const createUniqueLabel = () => `person ${count++}`;\n\n this._labeledDescriptors = inputArray.map((desc) => {\n if (desc instanceof LabeledFaceDescriptors) {\n return desc;\n }\n\n if (desc instanceof Float32Array) {\n return new LabeledFaceDescriptors(createUniqueLabel(), [desc]);\n }\n\n if (desc.descriptor && desc.descriptor instanceof Float32Array) {\n return new LabeledFaceDescriptors(createUniqueLabel(), [desc.descriptor]);\n }\n\n throw new Error('FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>');\n });\n }\n\n public get labeledDescriptors(): LabeledFaceDescriptors[] { return this._labeledDescriptors; }\n\n public get distanceThreshold(): number { return this._distanceThreshold; }\n\n public computeMeanDistance(queryDescriptor: Float32Array, descriptors: Float32Array[]): number {\n return descriptors\n .map((d) => euclideanDistance(d, queryDescriptor))\n .reduce((d1, d2) => d1 + d2, 0)\n / (descriptors.length || 1);\n }\n\n public matchDescriptor(queryDescriptor: Float32Array): FaceMatch {\n return this.labeledDescriptors\n .map(({ descriptors, label }) => new FaceMatch(\n label,\n this.computeMeanDistance(queryDescriptor, descriptors),\n ))\n .reduce((best, curr) => (best.distance < curr.distance ? best : curr));\n }\n\n public findBestMatch(queryDescriptor: Float32Array): FaceMatch {\n const bestMatch = this.matchDescriptor(queryDescriptor);\n return bestMatch.distance < this.distanceThreshold\n ? bestMatch\n : new FaceMatch('unknown', bestMatch.distance);\n }\n\n public toJSON(): any {\n return {\n distanceThreshold: this.distanceThreshold,\n labeledDescriptors: this.labeledDescriptors.map((ld) => ld.toJSON()),\n };\n }\n\n public static fromJSON(json: any): FaceMatcher {\n const labeledDescriptors = json.labeledDescriptors\n .map((ld: any) => LabeledFaceDescriptors.fromJSON(ld));\n return new FaceMatcher(labeledDescriptors, json.distanceThreshold);\n }\n}\n", "import { TinyFaceDetector } from './TinyFaceDetector';\n\nexport * from './TinyFaceDetector';\nexport * from './TinyFaceDetectorOptions';\n\nexport function createTinyFaceDetector(weights: Float32Array) {\n const net = new TinyFaceDetector();\n net.extractWeights(weights);\n return net;\n}\n", "import { Dimensions, IDimensions } from './classes/index';\nimport { FaceDetection } from './classes/FaceDetection';\nimport { FaceLandmarks } from './classes/FaceLandmarks';\nimport { extendWithFaceDetection, isWithFaceDetection } from './factories/WithFaceDetection';\nimport { extendWithFaceLandmarks, isWithFaceLandmarks } from './factories/WithFaceLandmarks';\n\nexport function resizeResults(results: T, dimensions: IDimensions): T {\n const { width, height } = new Dimensions(dimensions.width, dimensions.height);\n\n if (width <= 0 || height <= 0) {\n throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({ width, height })}`);\n }\n\n if (Array.isArray(results)) {\n // return results.map(obj => resizeResults(obj, { width, height })) as any as T\n return (results as Array).map((obj) => resizeResults(obj, { width, height } as IDimensions)) as any as T;\n }\n\n if (isWithFaceLandmarks(results)) {\n const resizedDetection = results.detection.forSize(width, height);\n const resizedLandmarks = results.unshiftedLandmarks.forSize(resizedDetection.box.width, resizedDetection.box.height);\n return extendWithFaceLandmarks(extendWithFaceDetection(results, resizedDetection), resizedLandmarks);\n }\n\n if (isWithFaceDetection(results)) {\n return extendWithFaceDetection(results, results.detection.forSize(width, height));\n }\n\n if (results instanceof FaceLandmarks || results instanceof FaceDetection) {\n return (results as any).forSize(width, height);\n }\n\n return results;\n}\n"], - "mappings": "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eACA,iBACA,iBACA,eACA,gBACA,gBACA,eACA,gBACA,oBACA,kBACA,sBACA,yBACA,sBACA,eACA,eACA,sBACA,qBACA,iBACA,8BACA,iBACA,iBACA,cACA,eACA,iBACA,gCACA,qBACA,cACA,cACA,cACA,cACA,qBACA,gBACA,mBACA,gBACA,yBACA,iBACA,uBACA,mBACA,mBACA,gBACA,gBACA,oBACA,gBACA,cACA,qBACA,cACA,cACA,cACA,kBACA,oBACA,kBACA,eACA,cACA,kBACA,oBACA,cACA,mBACA,cACA,iBACA,mBACA,eACA,gBACA,gBACA,cACA,gBACA,qBACA,gBACA,eACA,kBACA,yBACA,gCACA,kBACA,gBACA,gBACA,iBACA,eACA,kBACA,eACA,cACA,eACA,gBACA,kBACA,mBACA,yBACA,yBACA,iBACA,iBACA,eACA,4BACA,iBACA,eACA,cACA,cACA,cACA,eACA,eACA,oBACA,iBACA,6BACA,qBAGF,OAAW,kBAAkB,aAC3B,iBAAiB,gBCxMnB,OAAO,UAAU,IAAM,WACrB,MAAA,MAAK,kBACE,IAAI,OCFb,OAAO,UAAU,KAAO,WACtB,MAAA,MAAK,kBACE,KAAK,OCFd,OAAO,UAAU,MAAQ,WACvB,MAAA,MAAK,kBACE,MAAM,OCCf,OAAO,UAAU,UAAY,SAChB,GACX,MAAA,MAAK,kBACE,UAAU,KAAM,ICRzB,OAAO,UAAU,IAAM,SAA2B,GAChD,MAAA,MAAK,kBACE,KAAI,KAAM,ICDnB,OAAO,UAAU,IAAM,SACV,KAAwB,UACnC,MAAA,MAAK,kBACE,IAAI,KAAM,KAAM,WCHzB,OAAO,UAAU,IAAM,SACV,KAAwB,UACnC,MAAA,MAAK,kBACE,IAAI,KAAM,KAAM,WCJzB,OAAO,UAAU,OAAS,SAA2B,MACnD,MAAA,MAAK,kBACE,OAAO,KAAM,OCFtB,OAAO,UAAU,OAAS,SAA2B,MACnD,MAAA,MAAK,kBACE,OAAO,KAAM,OCGtB,OAAO,UAAU,SAAW,WAC1B,MAAA,MAAK,kBACL,OAAO,KAAK,OAAS,EAAG,IAAM,uCACvB,QAAQ,KAAM,KCCvB,O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AAA,WACvC,cACF,KAAI,CAAC,OAAQ,CAAC,EAAG,MAAM,QAAA,SAAS,MAAO,CAAC,KAAM,EAAG,SAAU,MAC/D,IAAI,KAAK,eACT,cAAc,KAAK,WACnB,cAAc,KAAK,MACnB,cAAc,KAAK,YACnB,cAAc,KAAK,MACnB,cAAc,KAAK,eAGrB,GAAM,QAAS,KAAK,CAAC,OAAQ,IAAK,QAAA,SAAS,MAAO,CAAC,KAAM,KAEzD,MAAA,eAAc,QAAQ,GAAK,SAAQ,8BAA8B,IAE1D,OAGF,GAAM,0BAAyC,CACpD,WAAY,mBACZ,YAAa,MACb,WAAY,qBC2FR,cAAgC,CACpC,mBACA,UACA,WACA,YACA,UACA,WACA,UACA,UACA,aACA,aACA,WACA,YACA,WACA,YACA,YACA,cACA,gBACA,qBACA,mBACA,kBACA,gBACA,qBACA,eACA,WACA,WACA,WACA,cACA,iBACA,aACA,2BACA,0BACA,aACA,6BACA,4BACA,aACA,UACA,WACA,oBACA,aACA,oBACA,mBACA,4BACA,0CACA,yCACA,WACA,iBACA,8BACA,+BACA,cACA,UACA,eACA,YACA,UACA,UACA,iBACA,YACA,UACA,WACA,oBACA,YACA,eACA,kBACA,2BACA,eACA,eACA,cACA,mBACA,eACA,WACA,WACA,eACA,YACA,YACA,gBACA,WACA,gBACA,eACA,UACA,YACA,iBACA,iBACA,gBACA,UACA,cACA,cACA,cACA,gBACA,qBACA,mBACA,wBACA,UACA,WACA,UACA,cACA,gBACA,UACA,kBACA,eACA,UACA,0BACA,0BACA,0BACA,eACA,aACA,eACA,WACA,YACA,UACA,YACA,WACA,YACA,WACA,iBACA,WACA,YACA,cACA,qBACA,0BACA,4BACA,iCACA,cACA,uBACA,YACA,YACA,gBACA,aACA,WACA,cACA,WACA,UACA,WACA,YACA,cACA,eACA,qBACA,oBACA,aACA,WACA,aACA,wBACA,WACA,mBACA,UACA,UACA,UACA,WACA,WACA,WACA,gBACA,aACA,aACA,yBACA,iBAGF,OAAW,gBAAgB,eACzB,eAAe,cE5TjB,GAA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ACA,oBACA,gBACA,YACA,YACA,gBACA,aACA,aACA,iBACA,YACA,iBACA,gBACA,aACA,WACA,kBACA,kBACA,iBACA,WACA,iBACA,eACA,oBACA,mBACA,yBACA,eACA,YACA,WACA,eACA,iBACA,WACA,mBACA,gBACA,WACA,2BACA,2BACA,2BACA,gBACA,cACA,gBACA,YACA,aACA,WACA,aACA,YACA,aACA,YACA,eACA,kBACA,aACA,YACA,eACA,sBACA,0BACA,6BACA,iCACA,eACA,wBACA,aACA,aACA,iBACA,cACA,YACA,eACA,YACA,WACA,YACA,aACA,eACA,gBACA,sBACA,qBACA,cACA,YACA,cACA,yBACA,YACA,oBACA,WACA,WACA,WACA,YACA,YACA,YACA,iBACA,cACA,cACA,0BACA,kBAGF,OAAW,gBAAgB,gBACzB,eAAe,cErUjB,GAAM,UAAU,QCmCH,SAAU,CACrB,YAAa,QACb,mBAAoB,SACpB,qBAAsB,SACtB,YAAa,SACb,cAAe,SACf,iBAAkB,SAClB,KAAQ,UC3BE,SAAZ,AAAA,UAAY,WACV,UAAA,UAAA,QAAA,GAAA,UACA,UAAA,UAAA,MAAA,GAAA,QACA,UAAA,UAAA,KAAA,GAAA,OACA,UAAA,UAAA,OAAA,GAAA,SACA,UAAA,UAAA,UAAA,GAAA,cALU,UAAA,UAAQ,KASpB,GAAY,mBAAZ,AAAA,UAAY,oBACV,mBAAA,mBAAA,OAAA,GAAA,SACA,mBAAA,mBAAA,KAAA,GAAA,OACA,mBAAA,mBAAA,MAAA,GAAA,QACA,mBAAA,mBAAA,MAAA,GAAA,QACA,mBAAA,mBAAA,UAAA,GAAA,cALU,mBAAA,mBAAiB,KCJ7B,GAAI,iBAOJ,eAAe,UACb,gBAAkB,SAAQ,KAAK,MAAM,aAAc,KAAiB,CAClE,SACA,QACA,SACA,SACA,QACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,WAIJ,0BAA0B,MAKxB,GAAM,CAAC,OAAQ,QAAA,SAAS,OAAS,KAC3B,CAAC,EAAG,EAAG,KAAM,wBAA0B,OAE7C,GAAI,EAAE,QAAU,WAAa,EAAE,QAAU,UACvC,KAAM,IA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", + "mappings": "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AI,EAAG,EAAI,EAAU,EAAE,EAC9B,EAAa,GAAW,EAAY,EAAI,GAE1C,EAAa,GAAW,EAAY,GAAK,EAAS,MAAO,SACzD,GAAM,GAAY,GAAU,GAC5B,MAAO,IAAM,EAAY,EAAU,GClC9B,GAAM,IAAkC,CAC7C,WAAY,GACZ,SAAW,GACF,EAAC,EAAG,IAAM,GAAU,MC+FzB,GAA4B,CAChC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAGF,OAAW,KAAkB,IAC3B,GAAiB,GCxMnB,EAAO,UAAU,IAAM,WACrB,MAAA,MAAK,kBACE,GAAI,OCFb,EAAO,UAAU,KAAO,WACtB,MAAA,MAAK,kBACE,GAAK,OCFd,EAAO,UAAU,MAAQ,WACvB,MAAA,MAAK,kBACE,GAAM,OCCf,EAAO,UAAU,UAAY,SAChB,GACX,MAAA,MAAK,kBACE,GAAU,KAAM,ICRzB,EAAO,UAAU,IAAM,SAA2B,GAChD,MAAA,MAAK,kBACE,EAAI,KAAM,ICDnB,EAAO,UAAU,IAAM,SACV,EAAwB,GACnC,MAAA,MAAK,kBACE,GAAI,KAAM,EAAM,ICHzB,EAAO,UAAU,IAAM,SACV,EAAwB,GACnC,MAAA,MAAK,kBACE,GAAI,KAAM,EAAM,ICJzB,EAAO,UAAU,OAAS,SAA2B,GACnD,MAAA,MAAK,kB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GAAO,QAAA,EAAS,MAAO,CAAC,MAAO,aAC/C,EACF,GAAS,CAAC,OAAQ,CAAC,EAAG,EAAY,EAAG,GAAI,QAAA,IACvC,EACF,GAAI,CAAC,OAAQ,CAAC,GAAS,QAAA,EAAS,MAAO,CAAC,KAAM,EAAG,SAAU,MAC/D,EAAI,KAAK,GACT,EAAc,KAAK,GACnB,EAAc,KAAK,GACnB,EAAc,KAAK,GACnB,EAAc,KAAK,GACnB,EAAc,KAAK,GAGrB,GAAM,GAAS,GAAK,CAAC,OAAQ,EAAK,QAAA,EAAS,MAAO,CAAC,KAAM,KAEzD,MAAA,GAAc,QAAQ,GAAK,EAAQ,8BAA8B,IAE1D,EAGF,GAAM,IAAyC,CACpD,WAAY,GACZ,YAAa,MACb,WAAY,IC2FR,GAAgC,CACpC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAGF,OAAW,KAAgB,IA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EAAa,GAElD,EACF,GAAQ,CAAC,OAAQ,CAAC,EAAG,GAAc,QAAA,EAAS,MAAO,CAAC,MAAO,KAE3D,EAAS,EACb,GAAI,GAAe,MACjB,EAAU,KAAK,GACf,GAAM,GAAO,EAAa,uBAAuB,GACjD,EAAS,GAAU,CAAC,OAAQ,CAAC,GAAY,QAAA,EAAS,MAAO,CAAC,KAAA,KAG5D,MAAA,GAAU,QAAQ,GAAK,EAAQ,8BAA8B,IACtD,EAGF,GAAM,KAAyC,CACpD,WAAY,GACZ,YAAa,QACb,WAAY,KC4DR,IAAgC,CACpC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,IACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,IAGF,OAAW,KAAgB,KACzB,GAAe,GErUjB,GAAM,KAAU,QCmCH,IAAU,CACrB,YAAa,GACb,mBAAoB,GACpB,qBAAsB,GACtB,YAAa,GACb,cAAe,GACf,iBAAkB,GAClB,KAAQ,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", "names": [] } diff --git a/dist/face-api.json b/dist/face-api.json index 95fbfb5..6b41d40 100644 --- a/dist/face-api.json +++ b/dist/face-api.json @@ -1,7 +1,7 @@ { "inputs": { "dist/tfjs.esm.js": { - "bytes": 1566890, + "bytes": 1064181, "imports": [] }, "src/draw/drawContour.ts": { @@ -1077,7 +1077,7 @@ ] }, "package.json": { - "bytes": 1807, + "bytes": 1839, "imports": [] }, "src/xception/extractParams.ts": { @@ -2136,482 +2136,482 @@ "dist/face-api.js.map": { "imports": [], "inputs": {}, - "bytes": 1452603 + "bytes": 1455634 }, "dist/face-api.js": { "imports": [], "exports": [], "inputs": { "src/env/isNodejs.ts": { - "bytesInOutput": 229 + "bytesInOutput": 173 }, "src/index.ts": { - "bytesInOutput": 4722 + "bytesInOutput": 3011 }, "dist/tfjs.esm.js": { - "bytesInOutput": 1564739 + "bytesInOutput": 1055728 }, "src/draw/index.ts": { - "bytesInOutput": 451 + "bytesInOutput": 280 }, "src/draw/drawContour.ts": { - "bytesInOutput": 313 + "bytesInOutput": 213 }, "src/utils/index.ts": { - "bytesInOutput": 1529 + "bytesInOutput": 996 }, "src/classes/Dimensions.ts": { - "bytesInOutput": 398 + "bytesInOutput": 337 }, "src/classes/Point.ts": { - "bytesInOutput": 473 + "bytesInOutput": 440 }, "src/classes/Box.ts": { - "bytesInOutput": 3305 + "bytesInOutput": 2661 }, "src/classes/BoundingBox.ts": { - "bytesInOutput": 153 + "bytesInOutput": 93 }, "src/classes/index.ts": { "bytesInOutput": 0 }, "src/classes/ObjectDetection.ts": { - "bytesInOutput": 754 + "bytesInOutput": 627 }, "src/classes/FaceDetection.ts": { - "bytesInOutput": 272 + "bytesInOutput": 155 }, "src/ops/iou.ts": { - "bytesInOutput": 328 + "bytesInOutput": 215 }, "src/ops/index.ts": { - "bytesInOutput": 99 + "bytesInOutput": 81 }, "src/ops/minBbox.ts": { - "bytesInOutput": 294 + "bytesInOutput": 204 }, "src/ops/nonMaxSuppression.ts": { - "bytesInOutput": 556 + "bytesInOutput": 282 }, "src/ops/normalize.ts": { - "bytesInOutput": 278 + "bytesInOutput": 209 }, "src/ops/padToSquare.ts": { - "bytesInOutput": 791 + "bytesInOutput": 295 }, "src/ops/shuffleArray.ts": { - "bytesInOutput": 195 + "bytesInOutput": 132 }, "src/classes/Rect.ts": { - "bytesInOutput": 136 + "bytesInOutput": 88 }, "src/classes/FaceLandmarks.ts": { - "bytesInOutput": 1888 + "bytesInOutput": 1408 }, "src/classes/FaceLandmarks5.ts": { - "bytesInOutput": 153 + "bytesInOutput": 108 }, "src/classes/FaceLandmarks68.ts": { - "bytesInOutput": 501 + "bytesInOutput": 465 }, "src/classes/FaceMatch.ts": { - "bytesInOutput": 256 + "bytesInOutput": 201 }, "src/classes/LabeledBox.ts": { - "bytesInOutput": 308 + "bytesInOutput": 252 }, "src/classes/LabeledFaceDescriptors.ts": { - "bytesInOutput": 728 + "bytesInOutput": 595 }, "src/classes/PredictedBox.ts": { - "bytesInOutput": 508 + "bytesInOutput": 385 }, "src/factories/WithFaceDetection.ts": { - "bytesInOutput": 170 + "bytesInOutput": 95 }, "src/env/createBrowserEnv.ts": { - "bytesInOutput": 487 + "bytesInOutput": 453 }, "src/env/createFileSystem.ts": { - "bytesInOutput": 363 + "bytesInOutput": 247 }, "src/env/createNodejsEnv.ts": { - "bytesInOutput": 722 + "bytesInOutput": 600 }, "src/env/isBrowser.ts": { - "bytesInOutput": 275 + "bytesInOutput": 267 }, "src/env/index.ts": { - "bytesInOutput": 1170 + "bytesInOutput": 816 }, "src/dom/resolveInput.ts": { - "bytesInOutput": 105 + "bytesInOutput": 85 }, "src/dom/getContext2dOrThrow.ts": { - "bytesInOutput": 447 + "bytesInOutput": 314 }, "src/draw/DrawTextField.ts": { - "bytesInOutput": 2255 + "bytesInOutput": 1485 }, "src/draw/DrawBox.ts": { - "bytesInOutput": 825 + "bytesInOutput": 583 }, "src/draw/drawDetections.ts": { - "bytesInOutput": 391 + "bytesInOutput": 224 }, "src/dom/isMediaLoaded.ts": { - "bytesInOutput": 152 + "bytesInOutput": 115 }, "src/dom/awaitMediaLoaded.ts": { - "bytesInOutput": 543 + "bytesInOutput": 424 }, "src/dom/index.ts": { "bytesInOutput": 0 }, "src/dom/bufferToImage.ts": { - "bytesInOutput": 483 + "bytesInOutput": 387 }, "src/dom/getMediaDimensions.ts": { - "bytesInOutput": 275 + "bytesInOutput": 184 }, "src/dom/createCanvas.ts": { - "bytesInOutput": 622 + "bytesInOutput": 393 }, "src/dom/imageTensorToCanvas.ts": { - "bytesInOutput": 360 + "bytesInOutput": 174 }, "src/dom/isMediaElement.ts": { - "bytesInOutput": 152 + "bytesInOutput": 111 }, "src/dom/imageToSquare.ts": { - "bytesInOutput": 713 + "bytesInOutput": 383 }, "src/dom/NetInput.ts": { - "bytesInOutput": 2852 + "bytesInOutput": 2172 }, "src/dom/toNetInput.ts": { - "bytesInOutput": 1113 + "bytesInOutput": 776 }, "src/dom/extractFaces.ts": { - "bytesInOutput": 758 + "bytesInOutput": 480 }, "src/dom/extractFaceTensors.ts": { - "bytesInOutput": 686 + "bytesInOutput": 418 }, "src/dom/fetchOrThrow.ts": { - "bytesInOutput": 223 + "bytesInOutput": 177 }, "src/dom/fetchImage.ts": { - "bytesInOutput": 269 + "bytesInOutput": 218 }, "src/dom/fetchJson.ts": { - "bytesInOutput": 69 + "bytesInOutput": 48 }, "src/dom/fetchNetWeights.ts": { - "bytesInOutput": 106 + "bytesInOutput": 79 }, "src/common/getModelUris.ts": { - "bytesInOutput": 765 + "bytesInOutput": 473 }, "src/dom/loadWeightMap.ts": { - "bytesInOutput": 207 + "bytesInOutput": 106 }, "src/dom/matchDimensions.ts": { - "bytesInOutput": 204 + "bytesInOutput": 101 }, "src/NeuralNetwork.ts": { - "bytesInOutput": 3247 + "bytesInOutput": 2592 }, "src/common/depthwiseSeparableConv.ts": { - "bytesInOutput": 194 + "bytesInOutput": 117 }, "src/faceFeatureExtractor/denseBlock.ts": { - "bytesInOutput": 1037 + "bytesInOutput": 468 }, "src/common/convLayer.ts": { - "bytesInOutput": 170 + "bytesInOutput": 104 }, "src/common/index.ts": { "bytesInOutput": 0 }, "src/common/disposeUnusedWeightTensors.ts": { - "bytesInOutput": 175 + "bytesInOutput": 92 }, "src/common/extractConvParamsFactory.ts": { - "bytesInOutput": 410 + "bytesInOutput": 163 }, "src/common/extractFCParamsFactory.ts": { - "bytesInOutput": 378 + "bytesInOutput": 153 }, "src/common/types.ts": { - "bytesInOutput": 177 + "bytesInOutput": 94 }, "src/common/extractSeparableConvParamsFactory.ts": { - "bytesInOutput": 891 + "bytesInOutput": 355 }, "src/common/extractWeightEntryFactory.ts": { - "bytesInOutput": 366 + "bytesInOutput": 189 }, "src/common/extractWeightsFactory.ts": { - "bytesInOutput": 311 + "bytesInOutput": 147 }, "src/faceFeatureExtractor/extractorsFactory.ts": { - "bytesInOutput": 1047 + "bytesInOutput": 377 }, "src/faceFeatureExtractor/extractParams.ts": { - "bytesInOutput": 570 + "bytesInOutput": 344 }, "src/common/loadConvParamsFactory.ts": { - "bytesInOutput": 187 + "bytesInOutput": 97 }, "src/faceFeatureExtractor/loadParamsFactory.ts": { - "bytesInOutput": 984 + "bytesInOutput": 389 }, "src/faceFeatureExtractor/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 400 + "bytesInOutput": 186 }, "src/faceFeatureExtractor/FaceFeatureExtractor.ts": { - "bytesInOutput": 841 + "bytesInOutput": 583 }, "src/common/fullyConnectedLayer.ts": { - "bytesInOutput": 99 + "bytesInOutput": 57 }, "src/faceProcessor/extractParams.ts": { - "bytesInOutput": 382 + "bytesInOutput": 215 }, "src/faceProcessor/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 411 + "bytesInOutput": 179 }, "src/faceProcessor/util.ts": { - "bytesInOutput": 252 + "bytesInOutput": 144 }, "src/faceProcessor/FaceProcessor.ts": { - "bytesInOutput": 1544 + "bytesInOutput": 1018 }, "src/faceExpressionNet/FaceExpressions.ts": { - "bytesInOutput": 532 + "bytesInOutput": 369 }, "src/faceExpressionNet/FaceExpressionNet.ts": { - "bytesInOutput": 829 + "bytesInOutput": 533 }, "src/faceExpressionNet/index.ts": { "bytesInOutput": 0 }, "src/factories/WithFaceExpressions.ts": { - "bytesInOutput": 182 + "bytesInOutput": 99 }, "src/draw/drawFaceExpressions.ts": { - "bytesInOutput": 718 + "bytesInOutput": 422 }, "src/factories/WithFaceLandmarks.ts": { - "bytesInOutput": 572 + "bytesInOutput": 337 }, "src/draw/DrawFaceLandmarks.ts": { - "bytesInOutput": 1723 + "bytesInOutput": 1228 }, "package.json": { - "bytesInOutput": 23 + "bytesInOutput": 16 }, "src/xception/extractParams.ts": { - "bytesInOutput": 2444 + "bytesInOutput": 1237 }, "src/xception/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 2162 + "bytesInOutput": 1051 }, "src/xception/TinyXception.ts": { - "bytesInOutput": 1798 + "bytesInOutput": 1194 }, "src/ageGenderNet/extractParams.ts": { - "bytesInOutput": 434 + "bytesInOutput": 259 }, "src/ageGenderNet/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 457 + "bytesInOutput": 211 }, "src/ageGenderNet/types.ts": { - "bytesInOutput": 97 + "bytesInOutput": 67 }, "src/ageGenderNet/AgeGenderNet.ts": { - "bytesInOutput": 2499 + "bytesInOutput": 1633 }, "src/ageGenderNet/index.ts": { "bytesInOutput": 0 }, "src/faceLandmarkNet/FaceLandmark68NetBase.ts": { - "bytesInOutput": 1958 + "bytesInOutput": 1118 }, "src/faceLandmarkNet/FaceLandmark68Net.ts": { - "bytesInOutput": 257 + "bytesInOutput": 167 }, "src/faceLandmarkNet/index.ts": { - "bytesInOutput": 54 + "bytesInOutput": 26 }, "src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts": { - "bytesInOutput": 362 + "bytesInOutput": 167 }, "src/faceFeatureExtractor/extractParamsTiny.ts": { - "bytesInOutput": 517 + "bytesInOutput": 313 }, "src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts": { - "bytesInOutput": 833 + "bytesInOutput": 581 }, "src/faceLandmarkNet/FaceLandmark68TinyNet.ts": { - "bytesInOutput": 274 + "bytesInOutput": 176 }, "src/faceRecognitionNet/scaleLayer.ts": { - "bytesInOutput": 75 + "bytesInOutput": 51 }, "src/faceRecognitionNet/convLayer.ts": { - "bytesInOutput": 410 + "bytesInOutput": 246 }, "src/faceRecognitionNet/extractParams.ts": { - "bytesInOutput": 3320 + "bytesInOutput": 1725 }, "src/faceRecognitionNet/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 2099 + "bytesInOutput": 1117 }, "src/faceRecognitionNet/residualLayer.ts": { - "bytesInOutput": 685 + "bytesInOutput": 397 }, "src/faceRecognitionNet/FaceRecognitionNet.ts": { - "bytesInOutput": 1637 + "bytesInOutput": 1012 }, "src/faceRecognitionNet/index.ts": { - "bytesInOutput": 113 + "bytesInOutput": 57 }, "src/factories/WithFaceDescriptor.ts": { - "bytesInOutput": 93 + "bytesInOutput": 48 }, "src/factories/index.ts": { "bytesInOutput": 0 }, "src/factories/WithAge.ts": { - "bytesInOutput": 124 + "bytesInOutput": 86 }, "src/factories/WithGender.ts": { - "bytesInOutput": 244 + "bytesInOutput": 155 }, "src/ssdMobilenetv1/extractParams.ts": { - "bytesInOutput": 5887 + "bytesInOutput": 3495 }, "src/ssdMobilenetv1/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 4319 + "bytesInOutput": 2467 }, "src/ssdMobilenetv1/pointwiseConvLayer.ts": { - "bytesInOutput": 180 + "bytesInOutput": 110 }, "src/ssdMobilenetv1/mobileNetV1.ts": { - "bytesInOutput": 1048 + "bytesInOutput": 659 }, "src/ssdMobilenetv1/nonMaxSuppression.ts": { - "bytesInOutput": 1504 + "bytesInOutput": 794 }, "src/ssdMobilenetv1/outputLayer.ts": { - "bytesInOutput": 1311 + "bytesInOutput": 670 }, "src/ssdMobilenetv1/boxPredictionLayer.ts": { - "bytesInOutput": 299 + "bytesInOutput": 185 }, "src/ssdMobilenetv1/predictionLayer.ts": { - "bytesInOutput": 1364 + "bytesInOutput": 695 }, "src/ssdMobilenetv1/SsdMobilenetv1Options.ts": { - "bytesInOutput": 555 + "bytesInOutput": 519 }, "src/ssdMobilenetv1/SsdMobilenetv1.ts": { - "bytesInOutput": 1841 + "bytesInOutput": 1176 }, "src/ssdMobilenetv1/index.ts": { - "bytesInOutput": 235 + "bytesInOutput": 111 }, "src/tinyYolov2/const.ts": { - "bytesInOutput": 491 + "bytesInOutput": 358 }, "src/tinyYolov2/config.ts": { - "bytesInOutput": 1173 + "bytesInOutput": 1012 }, "src/tinyYolov2/leaky.ts": { - "bytesInOutput": 116 + "bytesInOutput": 89 }, "src/tinyYolov2/convWithBatchNorm.ts": { - "bytesInOutput": 254 + "bytesInOutput": 177 }, "src/tinyYolov2/depthwiseSeparableConv.ts": { - "bytesInOutput": 234 + "bytesInOutput": 158 }, "src/tinyYolov2/extractParams.ts": { - "bytesInOutput": 2501 + "bytesInOutput": 1237 }, "src/tinyYolov2/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 2034 + "bytesInOutput": 976 }, "src/tinyYolov2/TinyYolov2Options.ts": { - "bytesInOutput": 588 + "bytesInOutput": 556 }, "src/tinyYolov2/TinyYolov2Base.ts": { - "bytesInOutput": 5767 + "bytesInOutput": 3499 }, "src/tinyYolov2/TinyYolov2.ts": { - "bytesInOutput": 782 + "bytesInOutput": 546 }, "src/tinyYolov2/index.ts": { - "bytesInOutput": 139 + "bytesInOutput": 65 }, "src/tinyFaceDetector/TinyFaceDetectorOptions.ts": { - "bytesInOutput": 133 + "bytesInOutput": 97 }, "src/globalApi/ComposableTask.ts": { - "bytesInOutput": 159 + "bytesInOutput": 127 }, "src/globalApi/extractFacesAndComputeResults.ts": { - "bytesInOutput": 772 + "bytesInOutput": 270 }, "src/tinyFaceDetector/const.ts": { - "bytesInOutput": 216 + "bytesInOutput": 173 }, "src/tinyFaceDetector/TinyFaceDetector.ts": { - "bytesInOutput": 631 + "bytesInOutput": 496 }, "src/globalApi/nets.ts": { - "bytesInOutput": 1536 + "bytesInOutput": 861 }, "src/globalApi/PredictFaceExpressionsTask.ts": { - "bytesInOutput": 1702 + "bytesInOutput": 854 }, "src/globalApi/PredictAgeAndGenderTask.ts": { - "bytesInOutput": 1796 + "bytesInOutput": 959 }, "src/globalApi/ComputeFaceDescriptorsTasks.ts": { - "bytesInOutput": 1401 + "bytesInOutput": 754 }, "src/globalApi/DetectFaceLandmarksTasks.ts": { - "bytesInOutput": 1868 + "bytesInOutput": 1089 }, "src/globalApi/DetectFacesTasks.ts": { - "bytesInOutput": 2235 + "bytesInOutput": 1348 }, "src/globalApi/detectFaces.ts": { - "bytesInOutput": 228 + "bytesInOutput": 86 }, "src/globalApi/allFaces.ts": { - "bytesInOutput": 396 + "bytesInOutput": 210 }, "src/globalApi/index.ts": { "bytesInOutput": 0 }, "src/euclideanDistance.ts": { - "bytesInOutput": 268 + "bytesInOutput": 205 }, "src/globalApi/FaceMatcher.ts": { - "bytesInOutput": 1852 + "bytesInOutput": 1333 }, "src/tinyFaceDetector/index.ts": { - "bytesInOutput": 109 + "bytesInOutput": 57 }, "src/resizeResults.ts": { - "bytesInOutput": 824 + "bytesInOutput": 446 } }, - "bytes": 1700928 + "bytes": 1143126 } } } diff --git a/dist/face-api.node-gpu.js b/dist/face-api.node-gpu.js index 6593fcf..02c118c 100644 --- a/dist/face-api.node-gpu.js +++ b/dist/face-api.node-gpu.js @@ -5,5 +5,5 @@ author: ' */ -var __create=Object.create,__defProp=Object.defineProperty,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropDesc=Object.getOwnPropertyDescriptor;var __markAsModule=target=>__defProp(target,"__esModule",{value:!0});var __commonJS=(callback,module2)=>()=>(module2||(module2={exports:{}},callback(module2.exports,module2)),module2.exports),__export=(target,all)=>{__markAsModule(target);for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__exportStar=(target,module2,desc)=>{if(__markAsModule(target),module2&&typeof module2=="object"||typeof module2=="function")for(let key of __getOwnPropNames(module2))!__hasOwnProp.call(target,key)&&key!=="default"&&__defProp(target,key,{get:()=>module2[key],enumerable:!(desc=__getOwnPropDesc(module2,key))||desc.enumerable});return target},__toModule=module2=>module2&&module2.__esModule?module2:__exportStar(__defProp(module2!=null?__create(__getProtoOf(module2)):{},"default",{value:module2,enumerable:!0}),module2);var require_tfjs_esm=__commonJS(exports2=>{var __create2=Object.create,__defProp2=Object.defineProperty,__getProtoOf2=Object.getPrototypeOf,__hasOwnProp2=Object.prototype.hasOwnProperty,__getOwnPropNames2=Object.getOwnPropertyNames,__getOwnPropDesc2=Object.getOwnPropertyDescriptor,__markAsModule2=target=>__defProp2(target,"__esModule",{value:!0}),__exportStar2=(target,module22,desc)=>{if(__markAsModule2(target),module22&&typeof module22=="object"||typeof module22=="function")for(let key of __getOwnPropNames2(module22))!__hasOwnProp2.call(target,key)&&key!=="default"&&__defProp2(target,key,{get:()=>module22[key],enumerable:!(desc=__getOwnPropDesc2(module22,key))||desc.enumerable});return target},__toModule2=module22=>module22&&module22.__esModule?module22:__exportStar2(__defProp2(module22!=null?__create2(__getProtoOf2(module22)):{},"default",{value:module22,enumerable:!0}),module22);__exportStar2(exports2,__toModule2(require("@tensorflow/tfjs-node-gpu")))});var require_isNodejs=__commonJS((exports2,module2)=>{__export(exports2,{isNodejs:()=>isNodejs2});function isNodejs2(){return typeof global=="object"&&!0&&typeof module2!="undefined"&&typeof process!="undefined"&&!!process.version}});__export(exports,{AgeGenderNet:()=>AgeGenderNet,BoundingBox:()=>BoundingBox,Box:()=>Box,ComposableTask:()=>ComposableTask,ComputeAllFaceDescriptorsTask:()=>ComputeAllFaceDescriptorsTask,ComputeFaceDescriptorsTaskBase:()=>ComputeFaceDescriptorsTaskBase,ComputeSingleFaceDescriptorTask:()=>ComputeSingleFaceDescriptorTask,DetectAllFaceLandmarksTask:()=>DetectAllFaceLandmarksTask,DetectAllFacesTask:()=>DetectAllFacesTask,DetectFaceLandmarksTaskBase:()=>DetectFaceLandmarksTaskBase,DetectFacesTaskBase:()=>DetectFacesTaskBase,DetectSingleFaceLandmarksTask:()=>DetectSingleFaceLandmarksTask,DetectSingleFaceTask:()=>DetectSingleFaceTask,Dimensions:()=>Dimensions,FACE_EXPRESSION_LABELS:()=>FACE_EXPRESSION_LABELS,FaceDetection:()=>FaceDetection,FaceDetectionNet:()=>FaceDetectionNet,FaceExpressionNet:()=>FaceExpressionNet,FaceExpressions:()=>FaceExpressions,FaceLandmark68Net:()=>FaceLandmark68Net,FaceLandmark68TinyNet:()=>FaceLandmark68TinyNet,FaceLandmarkNet:()=>FaceLandmarkNet,FaceLandmarks:()=>FaceLandmarks,FaceLandmarks5:()=>FaceLandmarks5,FaceLandmarks68:()=>FaceLandmarks68,FaceMatch:()=>FaceMatch,FaceMatcher:()=>FaceMatcher,FaceRecognitionNet:()=>FaceRecognitionNet,Gender:()=>Gender,LabeledBox:()=>LabeledBox,LabeledFaceDescriptors:()=>LabeledFaceDescriptors,NetInput:()=>NetInput,NeuralNetwork:()=>NeuralNetwork,ObjectDetection:()=>ObjectDetection,Point:()=>Point,PredictedBox:()=>PredictedBox,Rect:()=>Rect,SsdMobilenetv1:()=>SsdMobilenetv1,SsdMobilenetv1Options:()=>SsdMobilenetv1Options,TinyFaceDetector:()=>TinyFaceDetector,TinyFaceDetectorOptions:()=>TinyFaceDetectorOptions,TinyYolov2:()=>TinyYolov2,TinyYolov2Options:()=>TinyYolov2Options,allFaces:()=>allFaces,allFacesSsdMobilenetv1:()=>allFacesSsdMobilenetv1,allFacesTinyYolov2:()=>allFacesTinyYolov2,awaitMediaLoaded:()=>awaitMediaLoaded,bufferToImage:()=>bufferToImage,computeFaceDescriptor:()=>computeFaceDescriptor,createCanvas:()=>createCanvas,createCanvasFromMedia:()=>createCanvasFromMedia,createFaceDetectionNet:()=>createFaceDetectionNet,createFaceRecognitionNet:()=>createFaceRecognitionNet,createSsdMobilenetv1:()=>createSsdMobilenetv1,createTinyFaceDetector:()=>createTinyFaceDetector,createTinyYolov2:()=>createTinyYolov2,detectAllFaces:()=>detectAllFaces,detectFaceLandmarks:()=>detectFaceLandmarks,detectFaceLandmarksTiny:()=>detectFaceLandmarksTiny,detectLandmarks:()=>detectLandmarks,detectSingleFace:()=>detectSingleFace,draw:()=>draw_exports,env:()=>env,euclideanDistance:()=>euclideanDistance,extendWithAge:()=>extendWithAge,extendWithFaceDescriptor:()=>extendWithFaceDescriptor,extendWithFaceDetection:()=>extendWithFaceDetection,extendWithFaceExpressions:()=>extendWithFaceExpressions,extendWithFaceLandmarks:()=>extendWithFaceLandmarks,extendWithGender:()=>extendWithGender,extractFaceTensors:()=>extractFaceTensors,extractFaces:()=>extractFaces,fetchImage:()=>fetchImage,fetchJson:()=>fetchJson,fetchNetWeights:()=>fetchNetWeights,fetchOrThrow:()=>fetchOrThrow,getContext2dOrThrow:()=>getContext2dOrThrow,getMediaDimensions:()=>getMediaDimensions,imageTensorToCanvas:()=>imageTensorToCanvas,imageToSquare:()=>imageToSquare,inverseSigmoid:()=>inverseSigmoid,iou:()=>iou,isMediaElement:()=>isMediaElement,isMediaLoaded:()=>isMediaLoaded,isWithAge:()=>isWithAge,isWithFaceDetection:()=>isWithFaceDetection,isWithFaceExpressions:()=>isWithFaceExpressions,isWithFaceLandmarks:()=>isWithFaceLandmarks,isWithGender:()=>isWithGender,loadAgeGenderModel:()=>loadAgeGenderModel,loadFaceDetectionModel:()=>loadFaceDetectionModel,loadFaceExpressionModel:()=>loadFaceExpressionModel,loadFaceLandmarkModel:()=>loadFaceLandmarkModel,loadFaceLandmarkTinyModel:()=>loadFaceLandmarkTinyModel,loadFaceRecognitionModel:()=>loadFaceRecognitionModel,loadSsdMobilenetv1Model:()=>loadSsdMobilenetv1Model,loadTinyFaceDetectorModel:()=>loadTinyFaceDetectorModel,loadTinyYolov2Model:()=>loadTinyYolov2Model,loadWeightMap:()=>loadWeightMap,locateFaces:()=>locateFaces,matchDimensions:()=>matchDimensions,minBbox:()=>minBbox,nets:()=>nets,nonMaxSuppression:()=>nonMaxSuppression,normalize:()=>normalize,padToSquare:()=>padToSquare,predictAgeAndGender:()=>predictAgeAndGender,recognizeFaceExpressions:()=>recognizeFaceExpressions,resizeResults:()=>resizeResults,resolveInput:()=>resolveInput,shuffleArray:()=>shuffleArray,sigmoid:()=>sigmoid,ssdMobilenetv1:()=>ssdMobilenetv1,tf:()=>tf42,tinyFaceDetector:()=>tinyFaceDetector,tinyYolov2:()=>tinyYolov2,toNetInput:()=>toNetInput,utils:()=>utils_exports,validateConfig:()=>validateConfig,version:()=>version2});var tf42=__toModule(require_tfjs_esm());var draw_exports={};__export(draw_exports,{AnchorPosition:()=>AnchorPosition,DrawBox:()=>DrawBox,DrawBoxOptions:()=>DrawBoxOptions,DrawFaceLandmarks:()=>DrawFaceLandmarks,DrawFaceLandmarksOptions:()=>DrawFaceLandmarksOptions,DrawTextField:()=>DrawTextField,DrawTextFieldOptions:()=>DrawTextFieldOptions,drawContour:()=>drawContour,drawDetections:()=>drawDetections,drawFaceExpressions:()=>drawFaceExpressions,drawFaceLandmarks:()=>drawFaceLandmarks});function drawContour(ctx,points,isClosed=!1){if(ctx.beginPath(),points.slice(1).forEach(({x,y},prevIdx)=>{let from=points[prevIdx];ctx.moveTo(from.x,from.y),ctx.lineTo(x,y)}),isClosed){let from=points[points.length-1],to=points[0];if(!from||!to)return;ctx.moveTo(from.x,from.y),ctx.lineTo(to.x,to.y)}ctx.stroke()}var utils_exports={};__export(utils_exports,{computeReshapedDimensions:()=>computeReshapedDimensions,getCenterPoint:()=>getCenterPoint,isDimensions:()=>isDimensions,isEven:()=>isEven,isFloat:()=>isFloat,isTensor:()=>isTensor,isTensor1D:()=>isTensor1D,isTensor2D:()=>isTensor2D,isTensor3D:()=>isTensor3D,isTensor4D:()=>isTensor4D,isValidNumber:()=>isValidNumber,isValidProbablitiy:()=>isValidProbablitiy,range:()=>range,round:()=>round});var tf=__toModule(require_tfjs_esm());var Dimensions=class{constructor(width,height){if(!isValidNumber(width)||!isValidNumber(height))throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({width,height})}`);this._width=width,this._height=height}get width(){return this._width}get height(){return this._height}reverse(){return new Dimensions(1/this.width,1/this.height)}};function isTensor(tensor2,dim){return tensor2 instanceof tf.Tensor&&tensor2.shape.length===dim}function isTensor1D(tensor2){return isTensor(tensor2,1)}function isTensor2D(tensor2){return isTensor(tensor2,2)}function isTensor3D(tensor2){return isTensor(tensor2,3)}function isTensor4D(tensor2){return isTensor(tensor2,4)}function isFloat(num){return num%1!=0}function isEven(num){return num%2==0}function round(num,prec=2){let f=10**prec;return Math.floor(num*f)/f}function isDimensions(obj){return obj&&obj.width&&obj.height}function computeReshapedDimensions({width,height},inputSize){let scale2=inputSize/Math.max(height,width);return new Dimensions(Math.round(width*scale2),Math.round(height*scale2))}function getCenterPoint(pts){return pts.reduce((sum,pt)=>sum.add(pt),new Point(0,0)).div(new Point(pts.length,pts.length))}function range(num,start,step){return Array(num).fill(0).map((_,i)=>start+i*step)}function isValidNumber(num){return!!num&&num!==Infinity&&num!==-Infinity&&!Number.isNaN(num)||num===0}function isValidProbablitiy(num){return isValidNumber(num)&&num>=0&&num<=1}var Point=class{constructor(x,y){this._x=x,this._y=y}get x(){return this._x}get y(){return this._y}add(pt){return new Point(this.x+pt.x,this.y+pt.y)}sub(pt){return new Point(this.x-pt.x,this.y-pt.y)}mul(pt){return new Point(this.x*pt.x,this.y*pt.y)}div(pt){return new Point(this.x/pt.x,this.y/pt.y)}abs(){return new Point(Math.abs(this.x),Math.abs(this.y))}magnitude(){return Math.sqrt(this.x**2+this.y**2)}floor(){return new Point(Math.floor(this.x),Math.floor(this.y))}};var Box=class{static isRect(rect){return!!rect&&[rect.x,rect.y,rect.width,rect.height].every(isValidNumber)}static assertIsValidBox(box,callee,allowNegativeDimensions=!1){if(!Box.isRect(box))throw new Error(`${callee} - invalid box: ${JSON.stringify(box)}, expected object with properties x, y, width, height`);if(!allowNegativeDimensions&&(box.width<0||box.height<0))throw new Error(`${callee} - width (${box.width}) and height (${box.height}) must be positive numbers`)}constructor(_box,allowNegativeDimensions=!0){let box=_box||{},isBbox=[box.left,box.top,box.right,box.bottom].every(isValidNumber),isRect=[box.x,box.y,box.width,box.height].every(isValidNumber);if(!isRect&&!isBbox)throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(box)}`);let[x,y,width,height]=isRect?[box.x,box.y,box.width,box.height]:[box.left,box.top,box.right-box.left,box.bottom-box.top];Box.assertIsValidBox({x,y,width,height},"Box.constructor",allowNegativeDimensions),this._x=x,this._y=y,this._width=width,this._height=height}get x(){return this._x}get y(){return this._y}get width(){return this._width}get height(){return this._height}get left(){return this.x}get top(){return this.y}get right(){return this.x+this.width}get bottom(){return this.y+this.height}get area(){return this.width*this.height}get topLeft(){return new Point(this.left,this.top)}get topRight(){return new Point(this.right,this.top)}get bottomLeft(){return new Point(this.left,this.bottom)}get bottomRight(){return new Point(this.right,this.bottom)}round(){let[x,y,width,height]=[this.x,this.y,this.width,this.height].map(val=>Math.round(val));return new Box({x,y,width,height})}floor(){let[x,y,width,height]=[this.x,this.y,this.width,this.height].map(val=>Math.floor(val));return new Box({x,y,width,height})}toSquare(){let{x,y,width,height}=this,diff=Math.abs(width-height);return widthimageWidth&&(edx=-ex+imageWidth+w,ex=imageWidth),ey>imageHeight&&(edy=-ey+imageHeight+h,ey=imageHeight),x<1&&(edy=2-x,x=1),y<1&&(edy=2-y,y=1),{dy,edy,dx,edx,y,ey,x,ex,w,h}}calibrate(region){return new Box({left:this.left+region.left*this.width,top:this.top+region.top*this.height,right:this.right+region.right*this.width,bottom:this.bottom+region.bottom*this.height}).toSquare().round()}};var BoundingBox=class extends Box{constructor(left,top,right,bottom,allowNegativeDimensions=!1){super({left,top,right,bottom},allowNegativeDimensions)}};var ObjectDetection=class{constructor(score,classScore,className,relativeBox,imageDims){this._imageDims=new Dimensions(imageDims.width,imageDims.height),this._score=score,this._classScore=classScore,this._className=className,this._box=new Box(relativeBox).rescale(this._imageDims)}get score(){return this._score}get classScore(){return this._classScore}get className(){return this._className}get box(){return this._box}get imageDims(){return this._imageDims}get imageWidth(){return this.imageDims.width}get imageHeight(){return this.imageDims.height}get relativeBox(){return new Box(this._box).rescale(this.imageDims.reverse())}forSize(width,height){return new ObjectDetection(this.score,this.classScore,this.className,this.relativeBox,{width,height})}};var FaceDetection=class extends ObjectDetection{constructor(score,relativeBox,imageDims){super(score,score,"",relativeBox,imageDims)}forSize(width,height){let{score,relativeBox,imageDims}=super.forSize(width,height);return new FaceDetection(score,relativeBox,imageDims)}};function iou(box1,box2,isIOU=!0){let width=Math.max(0,Math.min(box1.right,box2.right)-Math.max(box1.left,box2.left)),height=Math.max(0,Math.min(box1.bottom,box2.bottom)-Math.max(box1.top,box2.top)),interSection=width*height;return isIOU?interSection/(box1.area+box2.area-interSection):interSection/Math.min(box1.area,box2.area)}function minBbox(pts){let xs=pts.map(pt=>pt.x),ys=pts.map(pt=>pt.y),minX=xs.reduce((min,x)=>xymaxmax({score,boxIndex})).sort((c1,c2)=>c1.score-c2.score).map(c=>c.boxIndex),pick=[];for(;indicesSortedByScore.length>0;){let curr=indicesSortedByScore.pop();pick.push(curr);let indices=indicesSortedByScore,outputs=[];for(let i=0;ioutputs[j]<=iouThreshold)}return pick}var tf2=__toModule(require_tfjs_esm());function normalize(x,meanRgb){return tf2.tidy(()=>{let[r,g,b]=meanRgb,avg_r=tf2.fill([...x.shape.slice(0,3),1],r,"float32"),avg_g=tf2.fill([...x.shape.slice(0,3),1],g,"float32"),avg_b=tf2.fill([...x.shape.slice(0,3),1],b,"float32"),avg_rgb=tf2.concat([avg_r,avg_g,avg_b],3);return tf2.sub(x,avg_rgb)})}var tf3=__toModule(require_tfjs_esm());function padToSquare(imgTensor,isCenterImage=!1){return tf3.tidy(()=>{let[height,width]=imgTensor.shape.slice(1);if(height===width)return imgTensor;let dimDiff=Math.abs(height-width),paddingAmount=Math.round(dimDiff*(isCenterImage?.5:1)),paddingAxis=height>width?2:1,createPaddingTensor=paddingAmountLocal=>{let paddingTensorShape=imgTensor.shape.slice();return paddingTensorShape[paddingAxis]=paddingAmountLocal,tf3.fill(paddingTensorShape,0,"float32")},paddingTensorAppend=createPaddingTensor(paddingAmount),remainingPaddingAmount=dimDiff-paddingTensorAppend.shape[paddingAxis],tensorsToStack=[isCenterImage&&remainingPaddingAmount?createPaddingTensor(remainingPaddingAmount):null,imgTensor,paddingTensorAppend].filter(t=>!!t).map(t=>tf3.cast(t,"float32"));return tf3.concat(tensorsToStack,paddingAxis)})}function shuffleArray(inputArray){let array=inputArray.slice();for(let i=array.length-1;i>0;i--){let j=Math.floor(Math.random()*(i+1)),x=array[i];array[i]=array[j],array[j]=x}return array}function sigmoid(x){return 1/(1+Math.exp(-x))}function inverseSigmoid(x){return Math.log(x/(1-x))}var Rect=class extends Box{constructor(x,y,width,height,allowNegativeDimensions=!1){super({x,y,width,height},allowNegativeDimensions)}};var relX=.5,relY=.43,relScale=.45,FaceLandmarks=class{constructor(relativeFaceLandmarkPositions,imgDims,shift=new Point(0,0)){let{width,height}=imgDims;this._imgDims=new Dimensions(width,height),this._shift=shift,this._positions=relativeFaceLandmarkPositions.map(pt=>pt.mul(new Point(width,height)).add(shift))}get shift(){return new Point(this._shift.x,this._shift.y)}get imageWidth(){return this._imgDims.width}get imageHeight(){return this._imgDims.height}get positions(){return this._positions}get relativePositions(){return this._positions.map(pt=>pt.sub(this._shift).div(new Point(this.imageWidth,this.imageHeight)))}forSize(width,height){return new this.constructor(this.relativePositions,{width,height})}shiftBy(x,y){return new this.constructor(this.relativePositions,this._imgDims,new Point(x,y))}shiftByPoint(pt){return this.shiftBy(pt.x,pt.y)}align(detection,options={}){if(detection){let box=detection instanceof FaceDetection?detection.box.floor():new Box(detection);return this.shiftBy(box.x,box.y).align(null,options)}let{useDlibAlignment,minBoxPadding}={useDlibAlignment:!1,minBoxPadding:.2,...options};return useDlibAlignment?this.alignDlib():this.alignMinBbox(minBoxPadding)}alignDlib(){let centers=this.getRefPointsForAlignment(),[leftEyeCenter,rightEyeCenter,mouthCenter]=centers,distToMouth=pt=>mouthCenter.sub(pt).magnitude(),eyeToMouthDist=(distToMouth(leftEyeCenter)+distToMouth(rightEyeCenter))/2,size=Math.floor(eyeToMouthDist/relScale),refPoint=getCenterPoint(centers),x=Math.floor(Math.max(0,refPoint.x-relX*size)),y=Math.floor(Math.max(0,refPoint.y-relY*size));return new Rect(x,y,Math.min(size,this.imageWidth+x),Math.min(size,this.imageHeight+y))}alignMinBbox(padding){let box=minBbox(this.positions);return box.pad(box.width*padding,box.height*padding)}getRefPointsForAlignment(){throw new Error("getRefPointsForAlignment not implemented by base class")}};var FaceLandmarks5=class extends FaceLandmarks{getRefPointsForAlignment(){let pts=this.positions;return[pts[0],pts[1],getCenterPoint([pts[3],pts[4]])]}};var FaceLandmarks68=class extends FaceLandmarks{getJawOutline(){return this.positions.slice(0,17)}getLeftEyeBrow(){return this.positions.slice(17,22)}getRightEyeBrow(){return this.positions.slice(22,27)}getNose(){return this.positions.slice(27,36)}getLeftEye(){return this.positions.slice(36,42)}getRightEye(){return this.positions.slice(42,48)}getMouth(){return this.positions.slice(48,68)}getRefPointsForAlignment(){return[this.getLeftEye(),this.getRightEye(),this.getMouth()].map(getCenterPoint)}};var FaceMatch=class{constructor(label,distance){this._label=label,this._distance=distance}get label(){return this._label}get distance(){return this._distance}toString(withDistance=!0){return`${this.label}${withDistance?` (${round(this.distance)})`:""}`}};var LabeledBox=class extends Box{static assertIsValidLabeledBox(box,callee){if(Box.assertIsValidBox(box,callee),!isValidNumber(box.label))throw new Error(`${callee} - expected property label (${box.label}) to be a number`)}constructor(box,label){super(box);this._label=label}get label(){return this._label}};var LabeledFaceDescriptors=class{constructor(label,descriptors){if(typeof label!="string")throw new Error("LabeledFaceDescriptors - constructor expected label to be a string");if(!Array.isArray(descriptors)||descriptors.some(desc=>!(desc instanceof Float32Array)))throw new Error("LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array");this._label=label,this._descriptors=descriptors}get label(){return this._label}get descriptors(){return this._descriptors}toJSON(){return{label:this.label,descriptors:this.descriptors.map(d=>Array.from(d))}}static fromJSON(json){let descriptors=json.descriptors.map(d=>new Float32Array(d));return new LabeledFaceDescriptors(json.label,descriptors)}};var PredictedBox=class extends LabeledBox{static assertIsValidPredictedBox(box,callee){if(LabeledBox.assertIsValidLabeledBox(box,callee),!isValidProbablitiy(box.score)||!isValidProbablitiy(box.classScore))throw new Error(`${callee} - expected properties score (${box.score}) and (${box.classScore}) to be a number between [0, 1]`)}constructor(box,label,score,classScore){super(box,label);this._score=score,this._classScore=classScore}get score(){return this._score}get classScore(){return this._classScore}};function isWithFaceDetection(obj){return obj.detection instanceof FaceDetection}function extendWithFaceDetection(sourceObj,detection){return{...sourceObj,...{detection}}}function createBrowserEnv(){let fetch=window.fetch;if(!fetch)throw new Error("fetch - missing fetch implementation for browser environment");let readFile=()=>{throw new Error("readFile - filesystem not available for browser environment")};return{Canvas:HTMLCanvasElement,CanvasRenderingContext2D,Image:HTMLImageElement,ImageData,Video:HTMLVideoElement,createCanvasElement:()=>document.createElement("canvas"),createImageElement:()=>document.createElement("img"),fetch,readFile}}function createFileSystem(fs){let requireFsError="";if(!fs)try{fs=require("fs")}catch(err){requireFsError=err.toString()}return{readFile:fs?filePath=>new Promise((resolve,reject)=>{fs.readFile(filePath,(err,buffer)=>err?reject(err):resolve(buffer))}):()=>{throw new Error(`readFile - failed to require fs in nodejs environment with error: ${requireFsError}`)}}}function createNodejsEnv(){let Canvas=global.Canvas||global.HTMLCanvasElement,Image=global.Image||global.HTMLImageElement,createCanvasElement=()=>{if(Canvas)return new Canvas;throw new Error("createCanvasElement - missing Canvas implementation for nodejs environment")},createImageElement=()=>{if(Image)return new Image;throw new Error("createImageElement - missing Image implementation for nodejs environment")},fetch=global.fetch,fileSystem=createFileSystem();return{Canvas:Canvas||class{},CanvasRenderingContext2D:global.CanvasRenderingContext2D||class{},Image:Image||class{},ImageData:global.ImageData||class{},Video:global.HTMLVideoElement||class{},createCanvasElement,createImageElement,fetch,...fileSystem}}function isBrowser(){return typeof window=="object"&&typeof document!="undefined"&&typeof HTMLImageElement!="undefined"&&typeof HTMLCanvasElement!="undefined"&&typeof HTMLVideoElement!="undefined"&&typeof ImageData!="undefined"&&typeof CanvasRenderingContext2D!="undefined"}var import_isNodejs=__toModule(require_isNodejs()),environment;function getEnv(){if(!environment)throw new Error("getEnv - environment is not defined, check isNodejs() and isBrowser()");return environment}function setEnv(env2){environment=env2}function initialize(){return isBrowser()?setEnv(createBrowserEnv()):import_isNodejs.isNodejs()?setEnv(createNodejsEnv()):null}function monkeyPatch(env2){if(environment||initialize(),!environment)throw new Error("monkeyPatch - environment is not defined, check isNodejs() and isBrowser()");let{Canvas=environment.Canvas,Image=environment.Image}=env2;environment.Canvas=Canvas,environment.Image=Image,environment.createCanvasElement=env2.createCanvasElement||(()=>new Canvas),environment.createImageElement=env2.createImageElement||(()=>new Image),environment.ImageData=env2.ImageData||environment.ImageData,environment.Video=env2.Video||environment.Video,environment.fetch=env2.fetch||environment.fetch,environment.readFile=env2.readFile||environment.readFile}var env={getEnv,setEnv,initialize,createBrowserEnv,createFileSystem,createNodejsEnv,monkeyPatch,isBrowser,isNodejs:import_isNodejs.isNodejs};initialize();function resolveInput(arg){return!env.isNodejs()&&typeof arg=="string"?document.getElementById(arg):arg}function getContext2dOrThrow(canvasArg){let{Canvas,CanvasRenderingContext2D:CanvasRenderingContext2D2}=env.getEnv();if(canvasArg instanceof CanvasRenderingContext2D2)return canvasArg;let canvas=resolveInput(canvasArg);if(!(canvas instanceof Canvas))throw new Error("resolveContext2d - expected canvas to be of instance of Canvas");let ctx=canvas.getContext("2d");if(!ctx)throw new Error("resolveContext2d - canvas 2d context is null");return ctx}var AnchorPosition;(function(AnchorPosition2){AnchorPosition2.TOP_LEFT="TOP_LEFT",AnchorPosition2.TOP_RIGHT="TOP_RIGHT",AnchorPosition2.BOTTOM_LEFT="BOTTOM_LEFT",AnchorPosition2.BOTTOM_RIGHT="BOTTOM_RIGHT"})(AnchorPosition||(AnchorPosition={}));var DrawTextFieldOptions=class{constructor(options={}){let{anchorPosition,backgroundColor,fontColor,fontSize,fontStyle,padding}=options;this.anchorPosition=anchorPosition||AnchorPosition.TOP_LEFT,this.backgroundColor=backgroundColor||"rgba(0, 0, 0, 0.5)",this.fontColor=fontColor||"rgba(255, 255, 255, 1)",this.fontSize=fontSize||14,this.fontStyle=fontStyle||"Georgia",this.padding=padding||4}},DrawTextField=class{constructor(text,anchor,options={}){this.text=typeof text=="string"?[text]:text instanceof DrawTextField?text.text:text,this.anchor=anchor,this.options=new DrawTextFieldOptions(options)}measureWidth(ctx){let{padding}=this.options;return this.text.map(l=>ctx.measureText(l).width).reduce((w0,w1)=>w0{let x=padding+upperLeft.x,y=padding+upperLeft.y+(i+1)*fontSize;ctx.fillText(textLine,x,y)})}};var DrawBoxOptions=class{constructor(options={}){let{boxColor,lineWidth,label,drawLabelOptions}=options;this.boxColor=boxColor||"rgba(0, 0, 255, 1)",this.lineWidth=lineWidth||2,this.label=label;let defaultDrawLabelOptions={anchorPosition:AnchorPosition.BOTTOM_LEFT,backgroundColor:this.boxColor};this.drawLabelOptions=new DrawTextFieldOptions({...defaultDrawLabelOptions,...drawLabelOptions})}},DrawBox=class{constructor(box,options={}){this.box=new Box(box),this.options=new DrawBoxOptions(options)}draw(canvasArg){let ctx=getContext2dOrThrow(canvasArg),{boxColor,lineWidth}=this.options,{x,y,width,height}=this.box;ctx.strokeStyle=boxColor,ctx.lineWidth=lineWidth,ctx.strokeRect(x,y,width,height);let{label}=this.options;label&&new DrawTextField([label],{x:x-lineWidth/2,y},this.options.drawLabelOptions).draw(canvasArg)}};function drawDetections(canvasArg,detections){(Array.isArray(detections)?detections:[detections]).forEach(det=>{let score=det instanceof FaceDetection?det.score:isWithFaceDetection(det)?det.detection.score:void 0,box=det instanceof FaceDetection?det.box:isWithFaceDetection(det)?det.detection.box:new Box(det),label=score?`${round(score)}`:void 0;new DrawBox(box,{label}).draw(canvasArg)})}var tf18=__toModule(require_tfjs_esm());function isMediaLoaded(media){let{Image,Video}=env.getEnv();return media instanceof Image&&media.complete||media instanceof Video&&media.readyState>=3}function awaitMediaLoaded(media){return new Promise((resolve,reject)=>{if(media instanceof env.getEnv().Canvas||isMediaLoaded(media))return resolve(null);function onError(e){!e.currentTarget||(e.currentTarget.removeEventListener("load",onLoad),e.currentTarget.removeEventListener("error",onError),reject(e))}function onLoad(e){!e.currentTarget||(e.currentTarget.removeEventListener("load",onLoad),e.currentTarget.removeEventListener("error",onError),resolve(e))}media.addEventListener("load",onLoad),media.addEventListener("error",onError)})}function bufferToImage(buf){return new Promise((resolve,reject)=>{buf instanceof Blob||reject(new Error("bufferToImage - expected buf to be of type: Blob"));let reader=new FileReader;reader.onload=()=>{typeof reader.result!="string"&&reject(new Error("bufferToImage - expected reader.result to be a string, in onload"));let img=env.getEnv().createImageElement();img.onload=()=>resolve(img),img.onerror=reject,img.src=reader.result},reader.onerror=reject,reader.readAsDataURL(buf)})}function getMediaDimensions(input){let{Image,Video}=env.getEnv();return input instanceof Image?new Dimensions(input.naturalWidth,input.naturalHeight):input instanceof Video?new Dimensions(input.videoWidth,input.videoHeight):new Dimensions(input.width,input.height)}function createCanvas({width,height}){let{createCanvasElement}=env.getEnv(),canvas=createCanvasElement();return canvas.width=width,canvas.height=height,canvas}function createCanvasFromMedia(media,dims){let{ImageData:ImageData2}=env.getEnv();if(!(media instanceof ImageData2)&&!isMediaLoaded(media))throw new Error("createCanvasFromMedia - media has not finished loading yet");let{width,height}=dims||getMediaDimensions(media),canvas=createCanvas({width,height});return media instanceof ImageData2?getContext2dOrThrow(canvas).putImageData(media,0,0):getContext2dOrThrow(canvas).drawImage(media,0,0,width,height),canvas}var tf4=__toModule(require_tfjs_esm());async function imageTensorToCanvas(imgTensor,canvas){let targetCanvas=canvas||env.getEnv().createCanvasElement(),[height,width,numChannels]=imgTensor.shape.slice(isTensor4D(imgTensor)?1:0),imgTensor3D=tf4.tidy(()=>imgTensor.as3D(height,width,numChannels).toInt());return await tf4.browser.toPixels(imgTensor3D,targetCanvas),imgTensor3D.dispose(),targetCanvas}function isMediaElement(input){let{Image,Canvas,Video}=env.getEnv();return input instanceof Image||input instanceof Canvas||input instanceof Video}var tf5=__toModule(require_tfjs_esm());function imageToSquare(input,inputSize,centerImage=!1){let{Image,Canvas}=env.getEnv();if(!(input instanceof Image||input instanceof Canvas))throw new Error("imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement");let dims=getMediaDimensions(input),scale2=inputSize/Math.max(dims.height,dims.width),width=scale2*dims.width,height=scale2*dims.height,targetCanvas=createCanvas({width:inputSize,height:inputSize}),inputCanvas=input instanceof Canvas?input:createCanvasFromMedia(input),offset=Math.abs(width-height)/2,dx=centerImage&&width{if(isTensor3D(input)){this._imageTensors[idx]=input,this._inputDimensions[idx]=input.shape;return}if(isTensor4D(input)){let batchSize=input.shape[0];if(batchSize!==1)throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);this._imageTensors[idx]=input,this._inputDimensions[idx]=input.shape.slice(1);return}let canvas=input instanceof env.getEnv().Canvas?input:createCanvasFromMedia(input);this._canvases[idx]=canvas,this._inputDimensions[idx]=[canvas.height,canvas.width,3]})}get imageTensors(){return this._imageTensors}get canvases(){return this._canvases}get isBatchInput(){return this.batchSize>1||this._treatAsBatchInput}get batchSize(){return this._batchSize}get inputDimensions(){return this._inputDimensions}get inputSize(){return this._inputSize}get reshapedInputDimensions(){return range(this.batchSize,0,1).map((_,batchIdx)=>this.getReshapedInputDimensions(batchIdx))}getInput(batchIdx){return this.canvases[batchIdx]||this.imageTensors[batchIdx]}getInputDimensions(batchIdx){return this._inputDimensions[batchIdx]}getInputHeight(batchIdx){return this._inputDimensions[batchIdx][0]}getInputWidth(batchIdx){return this._inputDimensions[batchIdx][1]}getReshapedInputDimensions(batchIdx){if(typeof this.inputSize!="number")throw new Error("getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet");let width=this.getInputWidth(batchIdx),height=this.getInputHeight(batchIdx);return computeReshapedDimensions({width,height},this.inputSize)}toBatchTensor(inputSize,isCenterInputs=!0){return this._inputSize=inputSize,tf5.tidy(()=>{let inputTensors=range(this.batchSize,0,1).map(batchIdx=>{let input=this.getInput(batchIdx);if(input instanceof tf5.Tensor){let imgTensor=isTensor4D(input)?input:input.expandDims();return imgTensor=padToSquare(imgTensor,isCenterInputs),(imgTensor.shape[1]!==inputSize||imgTensor.shape[2]!==inputSize)&&(imgTensor=tf5.image.resizeBilinear(imgTensor,[inputSize,inputSize])),imgTensor.as3D(inputSize,inputSize,3)}if(input instanceof env.getEnv().Canvas)return tf5.browser.fromPixels(imageToSquare(input,inputSize,isCenterInputs));throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input}`)});return tf5.stack(inputTensors.map(t=>tf5.cast(t,"float32"))).as4D(this.batchSize,inputSize,inputSize,3)})}};async function toNetInput(inputs){if(inputs instanceof NetInput)return inputs;let inputArgArray=Array.isArray(inputs)?inputs:[inputs];if(!inputArgArray.length)throw new Error("toNetInput - empty array passed as input");let getIdxHint=idx=>Array.isArray(inputs)?` at input index ${idx}:`:"",inputArray=inputArgArray.map(resolveInput);return inputArray.forEach((input,i)=>{if(!isMediaElement(input)&&!isTensor3D(input)&&!isTensor4D(input))throw typeof inputArgArray[i]=="string"?new Error(`toNetInput -${getIdxHint(i)} string passed, but could not resolve HTMLElement for element id ${inputArgArray[i]}`):new Error(`toNetInput -${getIdxHint(i)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`);if(isTensor4D(input)){let batchSize=input.shape[0];if(batchSize!==1)throw new Error(`toNetInput -${getIdxHint(i)} tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`)}}),await Promise.all(inputArray.map(input=>isMediaElement(input)&&awaitMediaLoaded(input))),new NetInput(inputArray,Array.isArray(inputs))}async function extractFaces(input,detections){let{Canvas}=env.getEnv(),canvas=input;if(!(input instanceof Canvas)){let netInput=await toNetInput(input);if(netInput.batchSize>1)throw new Error("extractFaces - batchSize > 1 not supported");let tensorOrCanvas=netInput.getInput(0);canvas=tensorOrCanvas instanceof Canvas?tensorOrCanvas:await imageTensorToCanvas(tensorOrCanvas)}let ctx=getContext2dOrThrow(canvas);return detections.map(det=>det instanceof FaceDetection?det.forSize(canvas.width,canvas.height).box.floor():det).map(box=>box.clipAtImageBorders(canvas.width,canvas.height)).map(({x,y,width,height})=>{let faceImg=createCanvas({width,height});return getContext2dOrThrow(faceImg).putImageData(ctx.getImageData(x,y,width,height),0,0),faceImg})}var tf6=__toModule(require_tfjs_esm());async function extractFaceTensors(imageTensor,detections){if(!isTensor3D(imageTensor)&&!isTensor4D(imageTensor))throw new Error("extractFaceTensors - expected image tensor to be 3D or 4D");if(isTensor4D(imageTensor)&&imageTensor.shape[0]>1)throw new Error("extractFaceTensors - batchSize > 1 not supported");return tf6.tidy(()=>{let[imgHeight,imgWidth,numChannels]=imageTensor.shape.slice(isTensor4D(imageTensor)?1:0);return detections.map(det=>det instanceof FaceDetection?det.forSize(imgWidth,imgHeight).box:det).map(box=>box.clipAtImageBorders(imgWidth,imgHeight)).map(({x,y,width,height})=>tf6.slice3d(imageTensor.as3D(imgHeight,imgWidth,numChannels),[y,x,0],[height,width,numChannels]))})}async function fetchOrThrow(url,init){let{fetch}=env.getEnv(),res=await fetch(url,init);if(!(res.status<400))throw new Error(`failed to fetch: (${res.status}) ${res.statusText}, from url: ${res.url}`);return res}async function fetchImage(uri){let res=await fetchOrThrow(uri),blob=await res.blob();if(!blob.type.startsWith("image/"))throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${blob.type}, for url: ${res.url}`);return bufferToImage(blob)}async function fetchJson(uri){return(await fetchOrThrow(uri)).json()}async function fetchNetWeights(uri){return new Float32Array(await(await fetchOrThrow(uri)).arrayBuffer())}var tf7=__toModule(require_tfjs_esm());function getModelUris(uri,defaultModelName){let defaultManifestFilename=`${defaultModelName}-weights_manifest.json`;if(!uri)return{modelBaseUri:"",manifestUri:defaultManifestFilename};if(uri==="/")return{modelBaseUri:"/",manifestUri:`/${defaultManifestFilename}`};let protocol=uri.startsWith("http://")?"http://":uri.startsWith("https://")?"https://":"";uri=uri.replace(protocol,"");let parts=uri.split("/").filter(s=>s),manifestFile=uri.endsWith(".json")?parts[parts.length-1]:defaultManifestFilename,modelBaseUri=protocol+(uri.endsWith(".json")?parts.slice(0,parts.length-1):parts).join("/");return modelBaseUri=uri.startsWith("/")?`/${modelBaseUri}`:modelBaseUri,{modelBaseUri,manifestUri:modelBaseUri==="/"?`/${manifestFile}`:`${modelBaseUri}/${manifestFile}`}}async function loadWeightMap(uri,defaultModelName){let{manifestUri,modelBaseUri}=getModelUris(uri,defaultModelName),manifest=await fetchJson(manifestUri);return tf7.io.loadWeights(manifest,modelBaseUri)}function matchDimensions(input,reference,useMediaDimensions=!1){let{width,height}=useMediaDimensions?getMediaDimensions(reference):reference;return input.width=width,input.height=height,{width,height}}var tf15=__toModule(require_tfjs_esm());var tf8=__toModule(require_tfjs_esm());var NeuralNetwork=class{constructor(){this._params=void 0;this._paramMappings=[]}get params(){return this._params}get paramMappings(){return this._paramMappings}get isLoaded(){return!!this.params}getParamFromPath(paramPath){let{obj,objProp}=this.traversePropertyPath(paramPath);return obj[objProp]}reassignParamFromPath(paramPath,tensor2){let{obj,objProp}=this.traversePropertyPath(paramPath);obj[objProp].dispose(),obj[objProp]=tensor2}getParamList(){return this._paramMappings.map(({paramPath})=>({path:paramPath,tensor:this.getParamFromPath(paramPath)}))}getTrainableParams(){return this.getParamList().filter(param=>param.tensor instanceof tf8.Variable)}getFrozenParams(){return this.getParamList().filter(param=>!(param.tensor instanceof tf8.Variable))}variable(){this.getFrozenParams().forEach(({path,tensor:tensor2})=>{this.reassignParamFromPath(path,tensor2.variable())})}freeze(){this.getTrainableParams().forEach(({path,tensor:variable})=>{let tensor2=tf8.tensor(variable.dataSync());variable.dispose(),this.reassignParamFromPath(path,tensor2)})}dispose(throwOnRedispose=!0){this.getParamList().forEach(param=>{if(throwOnRedispose&¶m.tensor.isDisposed)throw new Error(`param tensor has already been disposed for path ${param.path}`);param.tensor.dispose()}),this._params=void 0}serializeParams(){return new Float32Array(this.getParamList().map(({tensor:tensor2})=>Array.from(tensor2.dataSync())).reduce((flat,arr)=>flat.concat(arr)))}async load(weightsOrUrl){if(weightsOrUrl instanceof Float32Array){this.extractWeights(weightsOrUrl);return}await this.loadFromUri(weightsOrUrl)}async loadFromUri(uri){if(uri&&typeof uri!="string")throw new Error(`${this._name}.loadFromUri - expected model uri`);let weightMap=await loadWeightMap(uri,this.getDefaultModelName());this.loadFromWeightMap(weightMap)}async loadFromDisk(filePath){if(filePath&&typeof filePath!="string")throw new Error(`${this._name}.loadFromDisk - expected model file path`);let{readFile}=env.getEnv(),{manifestUri,modelBaseUri}=getModelUris(filePath,this.getDefaultModelName()),fetchWeightsFromDisk=filePaths=>Promise.all(filePaths.map(fp=>readFile(fp).then(buf=>buf.buffer))),loadWeights=tf8.io.weightsLoaderFactory(fetchWeightsFromDisk),manifest=JSON.parse((await readFile(manifestUri)).toString()),weightMap=await loadWeights(manifest,modelBaseUri);this.loadFromWeightMap(weightMap)}loadFromWeightMap(weightMap){let{paramMappings,params}=this.extractParamsFromWeigthMap(weightMap);this._paramMappings=paramMappings,this._params=params}extractWeights(weights){let{paramMappings,params}=this.extractParams(weights);this._paramMappings=paramMappings,this._params=params}traversePropertyPath(paramPath){if(!this.params)throw new Error("traversePropertyPath - model has no loaded params");let result=paramPath.split("/").reduce((res,objProp2)=>{if(!res.nextObj.hasOwnProperty(objProp2))throw new Error(`traversePropertyPath - object does not have property ${objProp2}, for path ${paramPath}`);return{obj:res.nextObj,objProp:objProp2,nextObj:res.nextObj[objProp2]}},{nextObj:this.params}),{obj,objProp}=result;if(!obj||!objProp||!(obj[objProp]instanceof tf8.Tensor))throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${paramPath}`);return{obj,objProp}}};var tf10=__toModule(require_tfjs_esm());var tf9=__toModule(require_tfjs_esm());function depthwiseSeparableConv(x,params,stride){return tf9.tidy(()=>{let out=tf9.separableConv2d(x,params.depthwise_filter,params.pointwise_filter,stride,"same");return out=tf9.add(out,params.bias),out})}function denseBlock3(x,denseBlockParams,isFirstLayer=!1){return tf10.tidy(()=>{let out1=tf10.relu(isFirstLayer?tf10.add(tf10.conv2d(x,denseBlockParams.conv0.filters,[2,2],"same"),denseBlockParams.conv0.bias):depthwiseSeparableConv(x,denseBlockParams.conv0,[2,2])),out2=depthwiseSeparableConv(out1,denseBlockParams.conv1,[1,1]),in3=tf10.relu(tf10.add(out1,out2)),out3=depthwiseSeparableConv(in3,denseBlockParams.conv2,[1,1]);return tf10.relu(tf10.add(out1,tf10.add(out2,out3)))})}function denseBlock4(x,denseBlockParams,isFirstLayer=!1,isScaleDown=!0){return tf10.tidy(()=>{let out1=tf10.relu(isFirstLayer?tf10.add(tf10.conv2d(x,denseBlockParams.conv0.filters,isScaleDown?[2,2]:[1,1],"same"),denseBlockParams.conv0.bias):depthwiseSeparableConv(x,denseBlockParams.conv0,isScaleDown?[2,2]:[1,1])),out2=depthwiseSeparableConv(out1,denseBlockParams.conv1,[1,1]),in3=tf10.relu(tf10.add(out1,out2)),out3=depthwiseSeparableConv(in3,denseBlockParams.conv2,[1,1]),in4=tf10.relu(tf10.add(out1,tf10.add(out2,out3))),out4=depthwiseSeparableConv(in4,denseBlockParams.conv3,[1,1]);return tf10.relu(tf10.add(out1,tf10.add(out2,tf10.add(out3,out4))))})}var tf11=__toModule(require_tfjs_esm());function convLayer(x,params,padding="same",withRelu=!1){return tf11.tidy(()=>{let out=tf11.add(tf11.conv2d(x,params.filters,[1,1],padding),params.bias);return withRelu?tf11.relu(out):out})}function disposeUnusedWeightTensors(weightMap,paramMappings){Object.keys(weightMap).forEach(path=>{paramMappings.some(pm=>pm.originalPath===path)||weightMap[path].dispose()})}var tf12=__toModule(require_tfjs_esm());function extractConvParamsFactory(extractWeights,paramMappings){return(channelsIn,channelsOut,filterSize,mappedPrefix)=>{let filters=tf12.tensor4d(extractWeights(channelsIn*channelsOut*filterSize*filterSize),[filterSize,filterSize,channelsIn,channelsOut]),bias=tf12.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/bias`}),{filters,bias}}}var tf13=__toModule(require_tfjs_esm());function extractFCParamsFactory(extractWeights,paramMappings){return(channelsIn,channelsOut,mappedPrefix)=>{let fc_weights=tf13.tensor2d(extractWeights(channelsIn*channelsOut),[channelsIn,channelsOut]),fc_bias=tf13.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/weights`},{paramPath:`${mappedPrefix}/bias`}),{weights:fc_weights,bias:fc_bias}}}var tf14=__toModule(require_tfjs_esm());var SeparableConvParams=class{constructor(depthwise_filter,pointwise_filter,bias){this.depthwise_filter=depthwise_filter;this.pointwise_filter=pointwise_filter;this.bias=bias}};function extractSeparableConvParamsFactory(extractWeights,paramMappings){return(channelsIn,channelsOut,mappedPrefix)=>{let depthwise_filter=tf14.tensor4d(extractWeights(3*3*channelsIn),[3,3,channelsIn,1]),pointwise_filter=tf14.tensor4d(extractWeights(channelsIn*channelsOut),[1,1,channelsIn,channelsOut]),bias=tf14.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/depthwise_filter`},{paramPath:`${mappedPrefix}/pointwise_filter`},{paramPath:`${mappedPrefix}/bias`}),new SeparableConvParams(depthwise_filter,pointwise_filter,bias)}}function loadSeparableConvParamsFactory(extractWeightEntry){return prefix=>{let depthwise_filter=extractWeightEntry(`${prefix}/depthwise_filter`,4),pointwise_filter=extractWeightEntry(`${prefix}/pointwise_filter`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return new SeparableConvParams(depthwise_filter,pointwise_filter,bias)}}function extractWeightEntryFactory(weightMap,paramMappings){return(originalPath,paramRank,mappedPath)=>{let tensor2=weightMap[originalPath];if(!isTensor(tensor2,paramRank))throw new Error(`expected weightMap[${originalPath}] to be a Tensor${paramRank}D, instead have ${tensor2}`);return paramMappings.push({originalPath,paramPath:mappedPath||originalPath}),tensor2}}function extractWeightsFactory(weights){let remainingWeights=weights;function extractWeights(numWeights){let ret=remainingWeights.slice(0,numWeights);return remainingWeights=remainingWeights.slice(numWeights),ret}function getRemainingWeights(){return remainingWeights}return{extractWeights,getRemainingWeights}}function extractorsFactory(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings),extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);function extractDenseBlock3Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(channelsIn,channelsOut,3,`${mappedPrefix}/conv0`):extractSeparableConvParams(channelsIn,channelsOut,`${mappedPrefix}/conv0`),conv1=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv1`),conv22=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv2`);return{conv0,conv1,conv2:conv22}}function extractDenseBlock4Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer=!1){let{conv0,conv1,conv2:conv22}=extractDenseBlock3Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer),conv3=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv3`);return{conv0,conv1,conv2:conv22,conv3}}return{extractDenseBlock3Params,extractDenseBlock4Params}}function extractParams(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractDenseBlock4Params}=extractorsFactory(extractWeights,paramMappings),dense0=extractDenseBlock4Params(3,32,"dense0",!0),dense1=extractDenseBlock4Params(32,64,"dense1"),dense2=extractDenseBlock4Params(64,128,"dense2"),dense3=extractDenseBlock4Params(128,256,"dense3");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{dense0,dense1,dense2,dense3}}}function loadConvParamsFactory(extractWeightEntry){return prefix=>{let filters=extractWeightEntry(`${prefix}/filters`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return{filters,bias}}}function loadParamsFactory(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings),extractConvParams=loadConvParamsFactory(extractWeightEntry),extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);function extractDenseBlock3Params(prefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(`${prefix}/conv0`):extractSeparableConvParams(`${prefix}/conv0`),conv1=extractSeparableConvParams(`${prefix}/conv1`),conv22=extractSeparableConvParams(`${prefix}/conv2`);return{conv0,conv1,conv2:conv22}}function extractDenseBlock4Params(prefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(`${prefix}/conv0`):extractSeparableConvParams(`${prefix}/conv0`),conv1=extractSeparableConvParams(`${prefix}/conv1`),conv22=extractSeparableConvParams(`${prefix}/conv2`),conv3=extractSeparableConvParams(`${prefix}/conv3`);return{conv0,conv1,conv2:conv22,conv3}}return{extractDenseBlock3Params,extractDenseBlock4Params}}function extractParamsFromWeigthMap(weightMap){let paramMappings=[],{extractDenseBlock4Params}=loadParamsFactory(weightMap,paramMappings),params={dense0:extractDenseBlock4Params("dense0",!0),dense1:extractDenseBlock4Params("dense1"),dense2:extractDenseBlock4Params("dense2"),dense3:extractDenseBlock4Params("dense3")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var FaceFeatureExtractor=class extends NeuralNetwork{constructor(){super("FaceFeatureExtractor")}forwardInput(input){let{params}=this;if(!params)throw new Error("FaceFeatureExtractor - load model before inference");return tf15.tidy(()=>{let batchTensor=tf15.cast(input.toBatchTensor(112,!0),"float32"),normalized=normalize(batchTensor,[122.782,117.001,104.298]).div(tf15.scalar(255)),out=denseBlock4(normalized,params.dense0,!0);return out=denseBlock4(out,params.dense1),out=denseBlock4(out,params.dense2),out=denseBlock4(out,params.dense3),out=tf15.avgPool(out,[7,7],[2,2],"valid"),out})}async forward(input){return this.forwardInput(await toNetInput(input))}getDefaultModelName(){return"face_feature_extractor_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap(weightMap)}extractParams(weights){return extractParams(weights)}};var tf17=__toModule(require_tfjs_esm());var tf16=__toModule(require_tfjs_esm());function fullyConnectedLayer(x,params){return tf16.tidy(()=>tf16.add(tf16.matMul(x,params.weights),params.bias))}function extractParams2(weights,channelsIn,channelsOut){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),fc=extractFCParamsFactory(extractWeights,paramMappings)(channelsIn,channelsOut,"fc");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{fc}}}function extractParamsFromWeigthMap2(weightMap){let paramMappings=[],extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractFcParams(prefix){let weights=extractWeightEntry(`${prefix}/weights`,2),bias=extractWeightEntry(`${prefix}/bias`,1);return{weights,bias}}let params={fc:extractFcParams("fc")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function seperateWeightMaps(weightMap){let featureExtractorMap={},classifierMap={};return Object.keys(weightMap).forEach(key=>{let map=key.startsWith("fc")?classifierMap:featureExtractorMap;map[key]=weightMap[key]}),{featureExtractorMap,classifierMap}}var FaceProcessor=class extends NeuralNetwork{constructor(_name,faceFeatureExtractor){super(_name);this._faceFeatureExtractor=faceFeatureExtractor}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(input){let{params}=this;if(!params)throw new Error(`${this._name} - load model before inference`);return tf17.tidy(()=>{let bottleneckFeatures=input instanceof NetInput?this.faceFeatureExtractor.forwardInput(input):input;return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0],-1),params.fc)})}dispose(throwOnRedispose=!0){this.faceFeatureExtractor.dispose(throwOnRedispose),super.dispose(throwOnRedispose)}loadClassifierParams(weights){let{params,paramMappings}=this.extractClassifierParams(weights);this._params=params,this._paramMappings=paramMappings}extractClassifierParams(weights){return extractParams2(weights,this.getClassifierChannelsIn(),this.getClassifierChannelsOut())}extractParamsFromWeigthMap(weightMap){let{featureExtractorMap,classifierMap}=seperateWeightMaps(weightMap);return this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap),extractParamsFromWeigthMap2(classifierMap)}extractParams(weights){let cIn=this.getClassifierChannelsIn(),cOut=this.getClassifierChannelsOut(),classifierWeightSize=cOut*cIn+cOut,featureExtractorWeights=weights.slice(0,weights.length-classifierWeightSize),classifierWeights=weights.slice(weights.length-classifierWeightSize);return this.faceFeatureExtractor.extractWeights(featureExtractorWeights),this.extractClassifierParams(classifierWeights)}};var FACE_EXPRESSION_LABELS=["neutral","happy","sad","angry","fearful","disgusted","surprised"],FaceExpressions=class{constructor(probabilities){if(probabilities.length!==7)throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${probabilities.length}`);FACE_EXPRESSION_LABELS.forEach((expression,idx)=>{this[expression]=probabilities[idx]})}asSortedArray(){return FACE_EXPRESSION_LABELS.map(expression=>({expression,probability:this[expression]})).sort((e0,e1)=>e1.probability-e0.probability)}};var FaceExpressionNet=class extends FaceProcessor{constructor(faceFeatureExtractor=new FaceFeatureExtractor){super("FaceExpressionNet",faceFeatureExtractor)}forwardInput(input){return tf18.tidy(()=>tf18.softmax(this.runNet(input)))}async forward(input){return this.forwardInput(await toNetInput(input))}async predictExpressions(input){let netInput=await toNetInput(input),out=await this.forwardInput(netInput),probabilitesByBatch=await Promise.all(tf18.unstack(out).map(async t=>{let data=await t.data();return t.dispose(),data}));out.dispose();let predictionsByBatch=probabilitesByBatch.map(probabilites=>new FaceExpressions(probabilites));return netInput.isBatchInput?predictionsByBatch:predictionsByBatch[0]}getDefaultModelName(){return"face_expression_model"}getClassifierChannelsIn(){return 256}getClassifierChannelsOut(){return 7}};function isWithFaceExpressions(obj){return obj.expressions instanceof FaceExpressions}function extendWithFaceExpressions(sourceObj,expressions){return{...sourceObj,...{expressions}}}function drawFaceExpressions(canvasArg,faceExpressions,minConfidence=.1,textFieldAnchor){(Array.isArray(faceExpressions)?faceExpressions:[faceExpressions]).forEach(e=>{let expr=e instanceof FaceExpressions?e:isWithFaceExpressions(e)?e.expressions:void 0;if(!expr)throw new Error("drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof");let resultsToDisplay=expr.asSortedArray().filter(exprLocal=>exprLocal.probability>minConfidence),anchor=isWithFaceDetection(e)?e.detection.box.bottomLeft:textFieldAnchor||new Point(0,0);new DrawTextField(resultsToDisplay.map(exprLocal=>`${exprLocal.expression} (${round(exprLocal.probability)})`),anchor).draw(canvasArg)})}function isWithFaceLandmarks(obj){return isWithFaceDetection(obj)&&obj.landmarks instanceof FaceLandmarks&&obj.unshiftedLandmarks instanceof FaceLandmarks&&obj.alignedRect instanceof FaceDetection}function extendWithFaceLandmarks(sourceObj,unshiftedLandmarks){let{box:shift}=sourceObj.detection,landmarks=unshiftedLandmarks.shiftBy(shift.x,shift.y),rect=landmarks.align(),{imageDims}=sourceObj.detection,alignedRect=new FaceDetection(sourceObj.detection.score,rect.rescale(imageDims.reverse()),imageDims);return{...sourceObj,...{landmarks,unshiftedLandmarks,alignedRect}}}var DrawFaceLandmarksOptions=class{constructor(options={}){let{drawLines=!0,drawPoints=!0,lineWidth,lineColor,pointSize,pointColor}=options;this.drawLines=drawLines,this.drawPoints=drawPoints,this.lineWidth=lineWidth||1,this.pointSize=pointSize||2,this.lineColor=lineColor||"rgba(0, 255, 255, 1)",this.pointColor=pointColor||"rgba(255, 0, 255, 1)"}},DrawFaceLandmarks=class{constructor(faceLandmarks,options={}){this.faceLandmarks=faceLandmarks,this.options=new DrawFaceLandmarksOptions(options)}draw(canvasArg){let ctx=getContext2dOrThrow(canvasArg),{drawLines,drawPoints,lineWidth,lineColor,pointSize,pointColor}=this.options;if(drawLines&&this.faceLandmarks instanceof FaceLandmarks68&&(ctx.strokeStyle=lineColor,ctx.lineWidth=lineWidth,drawContour(ctx,this.faceLandmarks.getJawOutline()),drawContour(ctx,this.faceLandmarks.getLeftEyeBrow()),drawContour(ctx,this.faceLandmarks.getRightEyeBrow()),drawContour(ctx,this.faceLandmarks.getNose()),drawContour(ctx,this.faceLandmarks.getLeftEye(),!0),drawContour(ctx,this.faceLandmarks.getRightEye(),!0),drawContour(ctx,this.faceLandmarks.getMouth(),!0)),drawPoints){ctx.strokeStyle=pointColor,ctx.fillStyle=pointColor;let drawPoint=pt=>{ctx.beginPath(),ctx.arc(pt.x,pt.y,pointSize,0,2*Math.PI),ctx.fill()};this.faceLandmarks.positions.forEach(drawPoint)}}};function drawFaceLandmarks(canvasArg,faceLandmarks){(Array.isArray(faceLandmarks)?faceLandmarks:[faceLandmarks]).forEach(f=>{let landmarks=f instanceof FaceLandmarks?f:isWithFaceLandmarks(f)?f.landmarks:void 0;if(!landmarks)throw new Error("drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof");new DrawFaceLandmarks(landmarks).draw(canvasArg)})}var version="0.11.1";var tf20=__toModule(require_tfjs_esm());var tf19=__toModule(require_tfjs_esm());function extractorsFactory2(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings),extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);function extractReductionBlockParams(channelsIn,channelsOut,mappedPrefix){let separable_conv0=extractSeparableConvParams(channelsIn,channelsOut,`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/separable_conv1`),expansion_conv=extractConvParams(channelsIn,channelsOut,1,`${mappedPrefix}/expansion_conv`);return{separable_conv0,separable_conv1,expansion_conv}}function extractMainBlockParams(channels,mappedPrefix){let separable_conv0=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv1`),separable_conv2=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv2`);return{separable_conv0,separable_conv1,separable_conv2}}return{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}}function extractParams3(weights,numMainBlocks){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}=extractorsFactory2(extractWeights,paramMappings),entry_flow_conv_in=extractConvParams(3,32,3,"entry_flow/conv_in"),entry_flow_reduction_block_0=extractReductionBlockParams(32,64,"entry_flow/reduction_block_0"),entry_flow_reduction_block_1=extractReductionBlockParams(64,128,"entry_flow/reduction_block_1"),entry_flow={conv_in:entry_flow_conv_in,reduction_block_0:entry_flow_reduction_block_0,reduction_block_1:entry_flow_reduction_block_1},middle_flow={};range(numMainBlocks,0,1).forEach(idx=>{middle_flow[`main_block_${idx}`]=extractMainBlockParams(128,`middle_flow/main_block_${idx}`)});let exit_flow_reduction_block=extractReductionBlockParams(128,256,"exit_flow/reduction_block"),exit_flow_separable_conv=extractSeparableConvParams(256,512,"exit_flow/separable_conv"),exit_flow={reduction_block:exit_flow_reduction_block,separable_conv:exit_flow_separable_conv};if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{entry_flow,middle_flow,exit_flow}}}function loadParamsFactory2(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings),extractConvParams=loadConvParamsFactory(extractWeightEntry),extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);function extractReductionBlockParams(mappedPrefix){let separable_conv0=extractSeparableConvParams(`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(`${mappedPrefix}/separable_conv1`),expansion_conv=extractConvParams(`${mappedPrefix}/expansion_conv`);return{separable_conv0,separable_conv1,expansion_conv}}function extractMainBlockParams(mappedPrefix){let separable_conv0=extractSeparableConvParams(`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(`${mappedPrefix}/separable_conv1`),separable_conv2=extractSeparableConvParams(`${mappedPrefix}/separable_conv2`);return{separable_conv0,separable_conv1,separable_conv2}}return{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}}function extractParamsFromWeigthMap3(weightMap,numMainBlocks){let paramMappings=[],{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}=loadParamsFactory2(weightMap,paramMappings),entry_flow_conv_in=extractConvParams("entry_flow/conv_in"),entry_flow_reduction_block_0=extractReductionBlockParams("entry_flow/reduction_block_0"),entry_flow_reduction_block_1=extractReductionBlockParams("entry_flow/reduction_block_1"),entry_flow={conv_in:entry_flow_conv_in,reduction_block_0:entry_flow_reduction_block_0,reduction_block_1:entry_flow_reduction_block_1},middle_flow={};range(numMainBlocks,0,1).forEach(idx=>{middle_flow[`main_block_${idx}`]=extractMainBlockParams(`middle_flow/main_block_${idx}`)});let exit_flow_reduction_block=extractReductionBlockParams("exit_flow/reduction_block"),exit_flow_separable_conv=extractSeparableConvParams("exit_flow/separable_conv"),exit_flow={reduction_block:exit_flow_reduction_block,separable_conv:exit_flow_separable_conv};return disposeUnusedWeightTensors(weightMap,paramMappings),{params:{entry_flow,middle_flow,exit_flow},paramMappings}}function conv(x,params,stride){return tf19.add(tf19.conv2d(x,params.filters,stride,"same"),params.bias)}function reductionBlock(x,params,isActivateInput=!0){let out=isActivateInput?tf19.relu(x):x;return out=depthwiseSeparableConv(out,params.separable_conv0,[1,1]),out=depthwiseSeparableConv(tf19.relu(out),params.separable_conv1,[1,1]),out=tf19.maxPool(out,[3,3],[2,2],"same"),out=tf19.add(out,conv(x,params.expansion_conv,[2,2])),out}function mainBlock(x,params){let out=depthwiseSeparableConv(tf19.relu(x),params.separable_conv0,[1,1]);return out=depthwiseSeparableConv(tf19.relu(out),params.separable_conv1,[1,1]),out=depthwiseSeparableConv(tf19.relu(out),params.separable_conv2,[1,1]),out=tf19.add(out,x),out}var TinyXception=class extends NeuralNetwork{constructor(numMainBlocks){super("TinyXception");this._numMainBlocks=numMainBlocks}forwardInput(input){let{params}=this;if(!params)throw new Error("TinyXception - load model before inference");return tf19.tidy(()=>{let batchTensor=tf19.cast(input.toBatchTensor(112,!0),"float32"),normalized=normalize(batchTensor,[122.782,117.001,104.298]).div(tf19.scalar(256)),out=tf19.relu(conv(normalized,params.entry_flow.conv_in,[2,2]));return out=reductionBlock(out,params.entry_flow.reduction_block_0,!1),out=reductionBlock(out,params.entry_flow.reduction_block_1),range(this._numMainBlocks,0,1).forEach(idx=>{out=mainBlock(out,params.middle_flow[`main_block_${idx}`])}),out=reductionBlock(out,params.exit_flow.reduction_block),out=tf19.relu(depthwiseSeparableConv(out,params.exit_flow.separable_conv,[1,1])),out})}async forward(input){return this.forwardInput(await toNetInput(input))}getDefaultModelName(){return"tiny_xception_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap3(weightMap,this._numMainBlocks)}extractParams(weights){return extractParams3(weights,this._numMainBlocks)}};function extractParams4(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),extractFCParams=extractFCParamsFactory(extractWeights,paramMappings),age=extractFCParams(512,1,"fc/age"),gender=extractFCParams(512,2,"fc/gender");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{fc:{age,gender}}}}function extractParamsFromWeigthMap4(weightMap){let paramMappings=[],extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractFcParams(prefix){let weights=extractWeightEntry(`${prefix}/weights`,2),bias=extractWeightEntry(`${prefix}/bias`,1);return{weights,bias}}let params={fc:{age:extractFcParams("fc/age"),gender:extractFcParams("fc/gender")}};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var Gender;(function(Gender2){Gender2.FEMALE="female",Gender2.MALE="male"})(Gender||(Gender={}));var AgeGenderNet=class extends NeuralNetwork{constructor(faceFeatureExtractor=new TinyXception(2)){super("AgeGenderNet");this._faceFeatureExtractor=faceFeatureExtractor}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(input){let{params}=this;if(!params)throw new Error(`${this._name} - load model before inference`);return tf20.tidy(()=>{let bottleneckFeatures=input instanceof NetInput?this.faceFeatureExtractor.forwardInput(input):input,pooled=tf20.avgPool(bottleneckFeatures,[7,7],[2,2],"valid").as2D(bottleneckFeatures.shape[0],-1),age=fullyConnectedLayer(pooled,params.fc.age).as1D(),gender=fullyConnectedLayer(pooled,params.fc.gender);return{age,gender}})}forwardInput(input){return tf20.tidy(()=>{let{age,gender}=this.runNet(input);return{age,gender:tf20.softmax(gender)}})}async forward(input){return this.forwardInput(await toNetInput(input))}async predictAgeAndGender(input){let netInput=await toNetInput(input),out=await this.forwardInput(netInput),ages=tf20.unstack(out.age),genders=tf20.unstack(out.gender),ageAndGenderTensors=ages.map((ageTensor,i)=>({ageTensor,genderTensor:genders[i]})),predictionsByBatch=await Promise.all(ageAndGenderTensors.map(async({ageTensor,genderTensor})=>{let age=(await ageTensor.data())[0],probMale=(await genderTensor.data())[0],isMale=probMale>.5,gender=isMale?Gender.MALE:Gender.FEMALE,genderProbability=isMale?probMale:1-probMale;return ageTensor.dispose(),genderTensor.dispose(),{age,gender,genderProbability}}));return out.age.dispose(),out.gender.dispose(),netInput.isBatchInput?predictionsByBatch:predictionsByBatch[0]}getDefaultModelName(){return"age_gender_model"}dispose(throwOnRedispose=!0){this.faceFeatureExtractor.dispose(throwOnRedispose),super.dispose(throwOnRedispose)}loadClassifierParams(weights){let{params,paramMappings}=this.extractClassifierParams(weights);this._params=params,this._paramMappings=paramMappings}extractClassifierParams(weights){return extractParams4(weights)}extractParamsFromWeigthMap(weightMap){let{featureExtractorMap,classifierMap}=seperateWeightMaps(weightMap);return this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap),extractParamsFromWeigthMap4(classifierMap)}extractParams(weights){let classifierWeightSize=512*1+1+(512*2+2),featureExtractorWeights=weights.slice(0,weights.length-classifierWeightSize),classifierWeights=weights.slice(weights.length-classifierWeightSize);return this.faceFeatureExtractor.extractWeights(featureExtractorWeights),this.extractClassifierParams(classifierWeights)}};var tf21=__toModule(require_tfjs_esm());var FaceLandmark68NetBase=class extends FaceProcessor{postProcess(output,inputSize,originalDimensions){let inputDimensions=originalDimensions.map(({width,height})=>{let scale2=inputSize/Math.max(height,width);return{width:width*scale2,height:height*scale2}}),batchSize=inputDimensions.length;return tf21.tidy(()=>{let createInterleavedTensor=(fillX,fillY)=>tf21.stack([tf21.fill([68],fillX,"float32"),tf21.fill([68],fillY,"float32")],1).as2D(1,136).as1D(),getPadding=(batchIdx,cond)=>{let{width,height}=inputDimensions[batchIdx];return cond(width,height)?Math.abs(width-height)/2:0},getPaddingX=batchIdx=>getPadding(batchIdx,(w,h)=>wgetPadding(batchIdx,(w,h)=>hcreateInterleavedTensor(getPaddingX(batchIdx),getPaddingY(batchIdx))))).div(tf21.stack(Array.from(Array(batchSize),(_,batchIdx)=>createInterleavedTensor(inputDimensions[batchIdx].width,inputDimensions[batchIdx].height))))})}forwardInput(input){return tf21.tidy(()=>{let out=this.runNet(input);return this.postProcess(out,input.inputSize,input.inputDimensions.map(([height,width])=>({height,width})))})}async forward(input){return this.forwardInput(await toNetInput(input))}async detectLandmarks(input){let netInput=await toNetInput(input),landmarkTensors=tf21.tidy(()=>tf21.unstack(this.forwardInput(netInput))),landmarksForBatch=await Promise.all(landmarkTensors.map(async(landmarkTensor,batchIdx)=>{let landmarksArray=Array.from(await landmarkTensor.data()),xCoords=landmarksArray.filter((_,i)=>isEven(i)),yCoords=landmarksArray.filter((_,i)=>!isEven(i));return new FaceLandmarks68(Array(68).fill(0).map((_,i)=>new Point(xCoords[i],yCoords[i])),{height:netInput.getInputHeight(batchIdx),width:netInput.getInputWidth(batchIdx)})}));return landmarkTensors.forEach(t=>t.dispose()),netInput.isBatchInput?landmarksForBatch:landmarksForBatch[0]}getClassifierChannelsOut(){return 136}};var FaceLandmark68Net=class extends FaceLandmark68NetBase{constructor(faceFeatureExtractor=new FaceFeatureExtractor){super("FaceLandmark68Net",faceFeatureExtractor)}getDefaultModelName(){return"face_landmark_68_model"}getClassifierChannelsIn(){return 256}};var tf22=__toModule(require_tfjs_esm());function extractParamsFromWeigthMapTiny(weightMap){let paramMappings=[],{extractDenseBlock3Params}=loadParamsFactory(weightMap,paramMappings),params={dense0:extractDenseBlock3Params("dense0",!0),dense1:extractDenseBlock3Params("dense1"),dense2:extractDenseBlock3Params("dense2")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function extractParamsTiny(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractDenseBlock3Params}=extractorsFactory(extractWeights,paramMappings),dense0=extractDenseBlock3Params(3,32,"dense0",!0),dense1=extractDenseBlock3Params(32,64,"dense1"),dense2=extractDenseBlock3Params(64,128,"dense2");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{dense0,dense1,dense2}}}var TinyFaceFeatureExtractor=class extends NeuralNetwork{constructor(){super("TinyFaceFeatureExtractor")}forwardInput(input){let{params}=this;if(!params)throw new Error("TinyFaceFeatureExtractor - load model before inference");return tf22.tidy(()=>{let batchTensor=tf22.cast(input.toBatchTensor(112,!0),"float32"),normalized=normalize(batchTensor,[122.782,117.001,104.298]).div(tf22.scalar(255)),out=denseBlock3(normalized,params.dense0,!0);return out=denseBlock3(out,params.dense1),out=denseBlock3(out,params.dense2),out=tf22.avgPool(out,[14,14],[2,2],"valid"),out})}async forward(input){return this.forwardInput(await toNetInput(input))}getDefaultModelName(){return"face_feature_extractor_tiny_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMapTiny(weightMap)}extractParams(weights){return extractParamsTiny(weights)}};var FaceLandmark68TinyNet=class extends FaceLandmark68NetBase{constructor(faceFeatureExtractor=new TinyFaceFeatureExtractor){super("FaceLandmark68TinyNet",faceFeatureExtractor)}getDefaultModelName(){return"face_landmark_68_tiny_model"}getClassifierChannelsIn(){return 128}};var FaceLandmarkNet=class extends FaceLandmark68Net{};var tf27=__toModule(require_tfjs_esm());var tf24=__toModule(require_tfjs_esm());var tf23=__toModule(require_tfjs_esm());function scale(x,params){return tf23.add(tf23.mul(x,params.weights),params.biases)}function convLayer2(x,params,strides,withRelu,padding="same"){let{filters,bias}=params.conv,out=tf24.conv2d(x,filters,strides,padding);return out=tf24.add(out,bias),out=scale(out,params.scale),withRelu?tf24.relu(out):out}function conv2(x,params){return convLayer2(x,params,[1,1],!0)}function convNoRelu(x,params){return convLayer2(x,params,[1,1],!1)}function convDown(x,params){return convLayer2(x,params,[2,2],!0,"valid")}var tf25=__toModule(require_tfjs_esm());function extractorsFactory3(extractWeights,paramMappings){function extractFilterValues(numFilterValues,numFilters,filterSize){let weights=extractWeights(numFilterValues),depth=weights.length/(numFilters*filterSize*filterSize);if(isFloat(depth))throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`);return tf25.tidy(()=>tf25.transpose(tf25.tensor4d(weights,[numFilters,depth,filterSize,filterSize]),[2,3,1,0]))}function extractConvParams(numFilterValues,numFilters,filterSize,mappedPrefix){let filters=extractFilterValues(numFilterValues,numFilters,filterSize),bias=tf25.tensor1d(extractWeights(numFilters));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/bias`}),{filters,bias}}function extractScaleLayerParams(numWeights,mappedPrefix){let weights=tf25.tensor1d(extractWeights(numWeights)),biases=tf25.tensor1d(extractWeights(numWeights));return paramMappings.push({paramPath:`${mappedPrefix}/weights`},{paramPath:`${mappedPrefix}/biases`}),{weights,biases}}function extractConvLayerParams(numFilterValues,numFilters,filterSize,mappedPrefix){let conv3=extractConvParams(numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv`),scale2=extractScaleLayerParams(numFilters,`${mappedPrefix}/scale`);return{conv:conv3,scale:scale2}}function extractResidualLayerParams(numFilterValues,numFilters,filterSize,mappedPrefix,isDown=!1){let conv1=extractConvLayerParams((isDown?.5:1)*numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv1`),conv22=extractConvLayerParams(numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv2`);return{conv1,conv2:conv22}}return{extractConvLayerParams,extractResidualLayerParams}}function extractParams5(weights){let{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),paramMappings=[],{extractConvLayerParams,extractResidualLayerParams}=extractorsFactory3(extractWeights,paramMappings),conv32_down=extractConvLayerParams(4704,32,7,"conv32_down"),conv32_1=extractResidualLayerParams(9216,32,3,"conv32_1"),conv32_2=extractResidualLayerParams(9216,32,3,"conv32_2"),conv32_3=extractResidualLayerParams(9216,32,3,"conv32_3"),conv64_down=extractResidualLayerParams(36864,64,3,"conv64_down",!0),conv64_1=extractResidualLayerParams(36864,64,3,"conv64_1"),conv64_2=extractResidualLayerParams(36864,64,3,"conv64_2"),conv64_3=extractResidualLayerParams(36864,64,3,"conv64_3"),conv128_down=extractResidualLayerParams(147456,128,3,"conv128_down",!0),conv128_1=extractResidualLayerParams(147456,128,3,"conv128_1"),conv128_2=extractResidualLayerParams(147456,128,3,"conv128_2"),conv256_down=extractResidualLayerParams(589824,256,3,"conv256_down",!0),conv256_1=extractResidualLayerParams(589824,256,3,"conv256_1"),conv256_2=extractResidualLayerParams(589824,256,3,"conv256_2"),conv256_down_out=extractResidualLayerParams(589824,256,3,"conv256_down_out"),fc=tf25.tidy(()=>tf25.transpose(tf25.tensor2d(extractWeights(256*128),[128,256]),[1,0]));if(paramMappings.push({paramPath:"fc"}),getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params:{conv32_down,conv32_1,conv32_2,conv32_3,conv64_down,conv64_1,conv64_2,conv64_3,conv128_down,conv128_1,conv128_2,conv256_down,conv256_1,conv256_2,conv256_down_out,fc},paramMappings}}function extractorsFactory4(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractScaleLayerParams(prefix){let weights=extractWeightEntry(`${prefix}/scale/weights`,1),biases=extractWeightEntry(`${prefix}/scale/biases`,1);return{weights,biases}}function extractConvLayerParams(prefix){let filters=extractWeightEntry(`${prefix}/conv/filters`,4),bias=extractWeightEntry(`${prefix}/conv/bias`,1),scale2=extractScaleLayerParams(prefix);return{conv:{filters,bias},scale:scale2}}function extractResidualLayerParams(prefix){return{conv1:extractConvLayerParams(`${prefix}/conv1`),conv2:extractConvLayerParams(`${prefix}/conv2`)}}return{extractConvLayerParams,extractResidualLayerParams}}function extractParamsFromWeigthMap5(weightMap){let paramMappings=[],{extractConvLayerParams,extractResidualLayerParams}=extractorsFactory4(weightMap,paramMappings),conv32_down=extractConvLayerParams("conv32_down"),conv32_1=extractResidualLayerParams("conv32_1"),conv32_2=extractResidualLayerParams("conv32_2"),conv32_3=extractResidualLayerParams("conv32_3"),conv64_down=extractResidualLayerParams("conv64_down"),conv64_1=extractResidualLayerParams("conv64_1"),conv64_2=extractResidualLayerParams("conv64_2"),conv64_3=extractResidualLayerParams("conv64_3"),conv128_down=extractResidualLayerParams("conv128_down"),conv128_1=extractResidualLayerParams("conv128_1"),conv128_2=extractResidualLayerParams("conv128_2"),conv256_down=extractResidualLayerParams("conv256_down"),conv256_1=extractResidualLayerParams("conv256_1"),conv256_2=extractResidualLayerParams("conv256_2"),conv256_down_out=extractResidualLayerParams("conv256_down_out"),{fc}=weightMap;if(paramMappings.push({originalPath:"fc",paramPath:"fc"}),!isTensor2D(fc))throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${fc}`);let params={conv32_down,conv32_1,conv32_2,conv32_3,conv64_down,conv64_1,conv64_2,conv64_3,conv128_down,conv128_1,conv128_2,conv256_down,conv256_1,conv256_2,conv256_down_out,fc};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var tf26=__toModule(require_tfjs_esm());function residual(x,params){let out=conv2(x,params.conv1);return out=convNoRelu(out,params.conv2),out=tf26.add(out,x),out=tf26.relu(out),out}function residualDown(x,params){let out=convDown(x,params.conv1);out=convNoRelu(out,params.conv2);let pooled=tf26.avgPool(x,2,2,"valid"),zeros2=tf26.zeros(pooled.shape),isPad=pooled.shape[3]!==out.shape[3];if(pooled.shape[1]!==out.shape[1]||pooled.shape[2]!==out.shape[2]){let padShapeX=[...out.shape];padShapeX[1]=1;let zerosW=tf26.zeros(padShapeX);out=tf26.concat([out,zerosW],1);let padShapeY=[...out.shape];padShapeY[2]=1;let zerosH=tf26.zeros(padShapeY);out=tf26.concat([out,zerosH],2)}return pooled=isPad?tf26.concat([pooled,zeros2],3):pooled,out=tf26.add(pooled,out),out=tf26.relu(out),out}var FaceRecognitionNet=class extends NeuralNetwork{constructor(){super("FaceRecognitionNet")}forwardInput(input){let{params}=this;if(!params)throw new Error("FaceRecognitionNet - load model before inference");return tf27.tidy(()=>{let batchTensor=tf27.cast(input.toBatchTensor(150,!0),"float32"),normalized=normalize(batchTensor,[122.782,117.001,104.298]).div(tf27.scalar(256)),out=convDown(normalized,params.conv32_down);out=tf27.maxPool(out,3,2,"valid"),out=residual(out,params.conv32_1),out=residual(out,params.conv32_2),out=residual(out,params.conv32_3),out=residualDown(out,params.conv64_down),out=residual(out,params.conv64_1),out=residual(out,params.conv64_2),out=residual(out,params.conv64_3),out=residualDown(out,params.conv128_down),out=residual(out,params.conv128_1),out=residual(out,params.conv128_2),out=residualDown(out,params.conv256_down),out=residual(out,params.conv256_1),out=residual(out,params.conv256_2),out=residualDown(out,params.conv256_down_out);let globalAvg=out.mean([1,2]);return tf27.matMul(globalAvg,params.fc)})}async forward(input){return this.forwardInput(await toNetInput(input))}async computeFaceDescriptor(input){let netInput=await toNetInput(input),faceDescriptorTensors=tf27.tidy(()=>tf27.unstack(this.forwardInput(netInput))),faceDescriptorsForBatch=await Promise.all(faceDescriptorTensors.map(t=>t.data()));return faceDescriptorTensors.forEach(t=>t.dispose()),netInput.isBatchInput?faceDescriptorsForBatch:faceDescriptorsForBatch[0]}getDefaultModelName(){return"face_recognition_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap5(weightMap)}extractParams(weights){return extractParams5(weights)}};function createFaceRecognitionNet(weights){let net=new FaceRecognitionNet;return net.extractWeights(weights),net}function extendWithFaceDescriptor(sourceObj,descriptor){return{...sourceObj,...{descriptor}}}function isWithAge(obj){return typeof obj.age=="number"}function extendWithAge(sourceObj,age){return{...sourceObj,...{age}}}function isWithGender(obj){return(obj.gender===Gender.MALE||obj.gender===Gender.FEMALE)&&isValidProbablitiy(obj.genderProbability)}function extendWithGender(sourceObj,gender,genderProbability){return{...sourceObj,...{gender,genderProbability}}}var tf34=__toModule(require_tfjs_esm());var tf28=__toModule(require_tfjs_esm());function extractorsFactory5(extractWeights,paramMappings){function extractDepthwiseConvParams(numChannels,mappedPrefix){let filters=tf28.tensor4d(extractWeights(3*3*numChannels),[3,3,numChannels,1]),batch_norm_scale=tf28.tensor1d(extractWeights(numChannels)),batch_norm_offset=tf28.tensor1d(extractWeights(numChannels)),batch_norm_mean=tf28.tensor1d(extractWeights(numChannels)),batch_norm_variance=tf28.tensor1d(extractWeights(numChannels));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/batch_norm_scale`},{paramPath:`${mappedPrefix}/batch_norm_offset`},{paramPath:`${mappedPrefix}/batch_norm_mean`},{paramPath:`${mappedPrefix}/batch_norm_variance`}),{filters,batch_norm_scale,batch_norm_offset,batch_norm_mean,batch_norm_variance}}function extractConvParams(channelsIn,channelsOut,filterSize,mappedPrefix,isPointwiseConv){let filters=tf28.tensor4d(extractWeights(channelsIn*channelsOut*filterSize*filterSize),[filterSize,filterSize,channelsIn,channelsOut]),bias=tf28.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/${isPointwiseConv?"batch_norm_offset":"bias"}`}),{filters,bias}}function extractPointwiseConvParams(channelsIn,channelsOut,filterSize,mappedPrefix){let{filters,bias}=extractConvParams(channelsIn,channelsOut,filterSize,mappedPrefix,!0);return{filters,batch_norm_offset:bias}}function extractConvPairParams(channelsIn,channelsOut,mappedPrefix){let depthwise_conv=extractDepthwiseConvParams(channelsIn,`${mappedPrefix}/depthwise_conv`),pointwise_conv=extractPointwiseConvParams(channelsIn,channelsOut,1,`${mappedPrefix}/pointwise_conv`);return{depthwise_conv,pointwise_conv}}function extractMobilenetV1Params(){let conv_0=extractPointwiseConvParams(3,32,3,"mobilenetv1/conv_0"),conv_1=extractConvPairParams(32,64,"mobilenetv1/conv_1"),conv_2=extractConvPairParams(64,128,"mobilenetv1/conv_2"),conv_3=extractConvPairParams(128,128,"mobilenetv1/conv_3"),conv_4=extractConvPairParams(128,256,"mobilenetv1/conv_4"),conv_5=extractConvPairParams(256,256,"mobilenetv1/conv_5"),conv_6=extractConvPairParams(256,512,"mobilenetv1/conv_6"),conv_7=extractConvPairParams(512,512,"mobilenetv1/conv_7"),conv_8=extractConvPairParams(512,512,"mobilenetv1/conv_8"),conv_9=extractConvPairParams(512,512,"mobilenetv1/conv_9"),conv_10=extractConvPairParams(512,512,"mobilenetv1/conv_10"),conv_11=extractConvPairParams(512,512,"mobilenetv1/conv_11"),conv_12=extractConvPairParams(512,1024,"mobilenetv1/conv_12"),conv_13=extractConvPairParams(1024,1024,"mobilenetv1/conv_13");return{conv_0,conv_1,conv_2,conv_3,conv_4,conv_5,conv_6,conv_7,conv_8,conv_9,conv_10,conv_11,conv_12,conv_13}}function extractPredictionLayerParams(){let conv_0=extractPointwiseConvParams(1024,256,1,"prediction_layer/conv_0"),conv_1=extractPointwiseConvParams(256,512,3,"prediction_layer/conv_1"),conv_2=extractPointwiseConvParams(512,128,1,"prediction_layer/conv_2"),conv_3=extractPointwiseConvParams(128,256,3,"prediction_layer/conv_3"),conv_4=extractPointwiseConvParams(256,128,1,"prediction_layer/conv_4"),conv_5=extractPointwiseConvParams(128,256,3,"prediction_layer/conv_5"),conv_6=extractPointwiseConvParams(256,64,1,"prediction_layer/conv_6"),conv_7=extractPointwiseConvParams(64,128,3,"prediction_layer/conv_7"),box_encoding_0_predictor=extractConvParams(512,12,1,"prediction_layer/box_predictor_0/box_encoding_predictor"),class_predictor_0=extractConvParams(512,9,1,"prediction_layer/box_predictor_0/class_predictor"),box_encoding_1_predictor=extractConvParams(1024,24,1,"prediction_layer/box_predictor_1/box_encoding_predictor"),class_predictor_1=extractConvParams(1024,18,1,"prediction_layer/box_predictor_1/class_predictor"),box_encoding_2_predictor=extractConvParams(512,24,1,"prediction_layer/box_predictor_2/box_encoding_predictor"),class_predictor_2=extractConvParams(512,18,1,"prediction_layer/box_predictor_2/class_predictor"),box_encoding_3_predictor=extractConvParams(256,24,1,"prediction_layer/box_predictor_3/box_encoding_predictor"),class_predictor_3=extractConvParams(256,18,1,"prediction_layer/box_predictor_3/class_predictor"),box_encoding_4_predictor=extractConvParams(256,24,1,"prediction_layer/box_predictor_4/box_encoding_predictor"),class_predictor_4=extractConvParams(256,18,1,"prediction_layer/box_predictor_4/class_predictor"),box_encoding_5_predictor=extractConvParams(128,24,1,"prediction_layer/box_predictor_5/box_encoding_predictor"),class_predictor_5=extractConvParams(128,18,1,"prediction_layer/box_predictor_5/class_predictor");return{conv_0,conv_1,conv_2,conv_3,conv_4,conv_5,conv_6,conv_7,box_predictor_0:{box_encoding_predictor:box_encoding_0_predictor,class_predictor:class_predictor_0},box_predictor_1:{box_encoding_predictor:box_encoding_1_predictor,class_predictor:class_predictor_1},box_predictor_2:{box_encoding_predictor:box_encoding_2_predictor,class_predictor:class_predictor_2},box_predictor_3:{box_encoding_predictor:box_encoding_3_predictor,class_predictor:class_predictor_3},box_predictor_4:{box_encoding_predictor:box_encoding_4_predictor,class_predictor:class_predictor_4},box_predictor_5:{box_encoding_predictor:box_encoding_5_predictor,class_predictor:class_predictor_5}}}return{extractMobilenetV1Params,extractPredictionLayerParams}}function extractParams6(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractMobilenetV1Params,extractPredictionLayerParams}=extractorsFactory5(extractWeights,paramMappings),mobilenetv1=extractMobilenetV1Params(),prediction_layer=extractPredictionLayerParams(),output_layer={extra_dim:tf28.tensor3d(extractWeights(5118*4),[1,5118,4])};if(paramMappings.push({paramPath:"output_layer/extra_dim"}),getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params:{mobilenetv1,prediction_layer,output_layer},paramMappings}}function extractorsFactory6(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractPointwiseConvParams(prefix,idx,mappedPrefix){let filters=extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`,4,`${mappedPrefix}/filters`),batch_norm_offset=extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`,1,`${mappedPrefix}/batch_norm_offset`);return{filters,batch_norm_offset}}function extractConvPairParams(idx){let mappedPrefix=`mobilenetv1/conv_${idx}`,prefixDepthwiseConv=`MobilenetV1/Conv2d_${idx}_depthwise`,mappedPrefixDepthwiseConv=`${mappedPrefix}/depthwise_conv`,mappedPrefixPointwiseConv=`${mappedPrefix}/pointwise_conv`,filters=extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`,4,`${mappedPrefixDepthwiseConv}/filters`),batch_norm_scale=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`,1,`${mappedPrefixDepthwiseConv}/batch_norm_scale`),batch_norm_offset=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`,1,`${mappedPrefixDepthwiseConv}/batch_norm_offset`),batch_norm_mean=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`,1,`${mappedPrefixDepthwiseConv}/batch_norm_mean`),batch_norm_variance=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`,1,`${mappedPrefixDepthwiseConv}/batch_norm_variance`);return{depthwise_conv:{filters,batch_norm_scale,batch_norm_offset,batch_norm_mean,batch_norm_variance},pointwise_conv:extractPointwiseConvParams("MobilenetV1",idx,mappedPrefixPointwiseConv)}}function extractMobilenetV1Params(){return{conv_0:extractPointwiseConvParams("MobilenetV1",0,"mobilenetv1/conv_0"),conv_1:extractConvPairParams(1),conv_2:extractConvPairParams(2),conv_3:extractConvPairParams(3),conv_4:extractConvPairParams(4),conv_5:extractConvPairParams(5),conv_6:extractConvPairParams(6),conv_7:extractConvPairParams(7),conv_8:extractConvPairParams(8),conv_9:extractConvPairParams(9),conv_10:extractConvPairParams(10),conv_11:extractConvPairParams(11),conv_12:extractConvPairParams(12),conv_13:extractConvPairParams(13)}}function extractConvParams(prefix,mappedPrefix){let filters=extractWeightEntry(`${prefix}/weights`,4,`${mappedPrefix}/filters`),bias=extractWeightEntry(`${prefix}/biases`,1,`${mappedPrefix}/bias`);return{filters,bias}}function extractBoxPredictorParams(idx){let box_encoding_predictor=extractConvParams(`Prediction/BoxPredictor_${idx}/BoxEncodingPredictor`,`prediction_layer/box_predictor_${idx}/box_encoding_predictor`),class_predictor=extractConvParams(`Prediction/BoxPredictor_${idx}/ClassPredictor`,`prediction_layer/box_predictor_${idx}/class_predictor`);return{box_encoding_predictor,class_predictor}}function extractPredictionLayerParams(){return{conv_0:extractPointwiseConvParams("Prediction",0,"prediction_layer/conv_0"),conv_1:extractPointwiseConvParams("Prediction",1,"prediction_layer/conv_1"),conv_2:extractPointwiseConvParams("Prediction",2,"prediction_layer/conv_2"),conv_3:extractPointwiseConvParams("Prediction",3,"prediction_layer/conv_3"),conv_4:extractPointwiseConvParams("Prediction",4,"prediction_layer/conv_4"),conv_5:extractPointwiseConvParams("Prediction",5,"prediction_layer/conv_5"),conv_6:extractPointwiseConvParams("Prediction",6,"prediction_layer/conv_6"),conv_7:extractPointwiseConvParams("Prediction",7,"prediction_layer/conv_7"),box_predictor_0:extractBoxPredictorParams(0),box_predictor_1:extractBoxPredictorParams(1),box_predictor_2:extractBoxPredictorParams(2),box_predictor_3:extractBoxPredictorParams(3),box_predictor_4:extractBoxPredictorParams(4),box_predictor_5:extractBoxPredictorParams(5)}}return{extractMobilenetV1Params,extractPredictionLayerParams}}function extractParamsFromWeigthMap6(weightMap){let paramMappings=[],{extractMobilenetV1Params,extractPredictionLayerParams}=extractorsFactory6(weightMap,paramMappings),extra_dim=weightMap["Output/extra_dim"];if(paramMappings.push({originalPath:"Output/extra_dim",paramPath:"output_layer/extra_dim"}),!isTensor3D(extra_dim))throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`);let params={mobilenetv1:extractMobilenetV1Params(),prediction_layer:extractPredictionLayerParams(),output_layer:{extra_dim}};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var tf30=__toModule(require_tfjs_esm());var tf29=__toModule(require_tfjs_esm());function pointwiseConvLayer(x,params,strides){return tf29.tidy(()=>{let out=tf29.conv2d(x,params.filters,strides,"same");return out=tf29.add(out,params.batch_norm_offset),tf29.clipByValue(out,0,6)})}var epsilon=.0010000000474974513;function depthwiseConvLayer(x,params,strides){return tf30.tidy(()=>{let out=tf30.depthwiseConv2d(x,params.filters,strides,"same");return out=tf30.batchNorm(out,params.batch_norm_mean,params.batch_norm_variance,params.batch_norm_offset,params.batch_norm_scale,epsilon),tf30.clipByValue(out,0,6)})}function getStridesForLayerIdx(layerIdx){return[2,4,6,12].some(idx=>idx===layerIdx)?[2,2]:[1,1]}function mobileNetV1(x,params){return tf30.tidy(()=>{let conv11,out=pointwiseConvLayer(x,params.conv_0,[2,2]);if([params.conv_1,params.conv_2,params.conv_3,params.conv_4,params.conv_5,params.conv_6,params.conv_7,params.conv_8,params.conv_9,params.conv_10,params.conv_11,params.conv_12,params.conv_13].forEach((param,i)=>{let layerIdx=i+1,depthwiseConvStrides=getStridesForLayerIdx(layerIdx);out=depthwiseConvLayer(out,param.depthwise_conv,depthwiseConvStrides),out=pointwiseConvLayer(out,param.pointwise_conv,[1,1]),layerIdx===11&&(conv11=out)}),conv11===null)throw new Error("mobileNetV1 - output of conv layer 11 is null");return{out,conv11}})}function IOU(boxes,i,j){let boxesData=boxes.arraySync(),yminI=Math.min(boxesData[i][0],boxesData[i][2]),xminI=Math.min(boxesData[i][1],boxesData[i][3]),ymaxI=Math.max(boxesData[i][0],boxesData[i][2]),xmaxI=Math.max(boxesData[i][1],boxesData[i][3]),yminJ=Math.min(boxesData[j][0],boxesData[j][2]),xminJ=Math.min(boxesData[j][1],boxesData[j][3]),ymaxJ=Math.max(boxesData[j][0],boxesData[j][2]),xmaxJ=Math.max(boxesData[j][1],boxesData[j][3]),areaI=(ymaxI-yminI)*(xmaxI-xminI),areaJ=(ymaxJ-yminJ)*(xmaxJ-xminJ);if(areaI<=0||areaJ<=0)return 0;let intersectionYmin=Math.max(yminI,yminJ),intersectionXmin=Math.max(xminI,xminJ),intersectionYmax=Math.min(ymaxI,ymaxJ),intersectionXmax=Math.min(xmaxI,xmaxJ),intersectionArea=Math.max(intersectionYmax-intersectionYmin,0)*Math.max(intersectionXmax-intersectionXmin,0);return intersectionArea/(areaI+areaJ-intersectionArea)}function nonMaxSuppression2(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){let numBoxes=boxes.shape[0],outputSize=Math.min(maxOutputSize,numBoxes),candidates=scores.map((score,boxIndex)=>({score,boxIndex})).filter(c=>c.score>scoreThreshold).sort((c1,c2)=>c2.score-c1.score),suppressFunc=x=>x<=iouThreshold?1:0,selected=[];return candidates.forEach(c=>{if(selected.length>=outputSize)return;let originalScore=c.score;for(let j=selected.length-1;j>=0;--j){let iou2=IOU(boxes,c.boxIndex,selected[j]);if(iou2!==0&&(c.score*=suppressFunc(iou2),c.score<=scoreThreshold))break}originalScore===c.score&&selected.push(c.boxIndex)}),selected}var tf31=__toModule(require_tfjs_esm());function getCenterCoordinatesAndSizesLayer(x){let vec=tf31.unstack(tf31.transpose(x,[1,0])),sizes=[tf31.sub(vec[2],vec[0]),tf31.sub(vec[3],vec[1])],centers=[tf31.add(vec[0],tf31.div(sizes[0],tf31.scalar(2))),tf31.add(vec[1],tf31.div(sizes[1],tf31.scalar(2)))];return{sizes,centers}}function decodeBoxesLayer(x0,x1){let{sizes,centers}=getCenterCoordinatesAndSizesLayer(x0),vec=tf31.unstack(tf31.transpose(x1,[1,0])),div0_out=tf31.div(tf31.mul(tf31.exp(tf31.div(vec[2],tf31.scalar(5))),sizes[0]),tf31.scalar(2)),add0_out=tf31.add(tf31.mul(tf31.div(vec[0],tf31.scalar(10)),sizes[0]),centers[0]),div1_out=tf31.div(tf31.mul(tf31.exp(tf31.div(vec[3],tf31.scalar(5))),sizes[1]),tf31.scalar(2)),add1_out=tf31.add(tf31.mul(tf31.div(vec[1],tf31.scalar(10)),sizes[1]),centers[1]);return tf31.transpose(tf31.stack([tf31.sub(add0_out,div0_out),tf31.sub(add1_out,div1_out),tf31.add(add0_out,div0_out),tf31.add(add1_out,div1_out)]),[1,0])}function outputLayer(boxPredictions,classPredictions,params){return tf31.tidy(()=>{let batchSize=boxPredictions.shape[0],boxes=decodeBoxesLayer(tf31.reshape(tf31.tile(params.extra_dim,[batchSize,1,1]),[-1,4]),tf31.reshape(boxPredictions,[-1,4]));boxes=tf31.reshape(boxes,[batchSize,boxes.shape[0]/batchSize,4]);let scoresAndClasses=tf31.sigmoid(tf31.slice(classPredictions,[0,0,1],[-1,-1,-1])),scores=tf31.slice(scoresAndClasses,[0,0,0],[-1,-1,1]);scores=tf31.reshape(scores,[batchSize,scores.shape[1]]);let boxesByBatch=tf31.unstack(boxes),scoresByBatch=tf31.unstack(scores);return{boxes:boxesByBatch,scores:scoresByBatch}})}var tf33=__toModule(require_tfjs_esm());var tf32=__toModule(require_tfjs_esm());function boxPredictionLayer(x,params){return tf32.tidy(()=>{let batchSize=x.shape[0],boxPredictionEncoding=tf32.reshape(convLayer(x,params.box_encoding_predictor),[batchSize,-1,1,4]),classPrediction=tf32.reshape(convLayer(x,params.class_predictor),[batchSize,-1,3]);return{boxPredictionEncoding,classPrediction}})}function predictionLayer(x,conv11,params){return tf33.tidy(()=>{let conv0=pointwiseConvLayer(x,params.conv_0,[1,1]),conv1=pointwiseConvLayer(conv0,params.conv_1,[2,2]),conv22=pointwiseConvLayer(conv1,params.conv_2,[1,1]),conv3=pointwiseConvLayer(conv22,params.conv_3,[2,2]),conv4=pointwiseConvLayer(conv3,params.conv_4,[1,1]),conv5=pointwiseConvLayer(conv4,params.conv_5,[2,2]),conv6=pointwiseConvLayer(conv5,params.conv_6,[1,1]),conv7=pointwiseConvLayer(conv6,params.conv_7,[2,2]),boxPrediction0=boxPredictionLayer(conv11,params.box_predictor_0),boxPrediction1=boxPredictionLayer(x,params.box_predictor_1),boxPrediction2=boxPredictionLayer(conv1,params.box_predictor_2),boxPrediction3=boxPredictionLayer(conv3,params.box_predictor_3),boxPrediction4=boxPredictionLayer(conv5,params.box_predictor_4),boxPrediction5=boxPredictionLayer(conv7,params.box_predictor_5),boxPredictions=tf33.concat([boxPrediction0.boxPredictionEncoding,boxPrediction1.boxPredictionEncoding,boxPrediction2.boxPredictionEncoding,boxPrediction3.boxPredictionEncoding,boxPrediction4.boxPredictionEncoding,boxPrediction5.boxPredictionEncoding],1),classPredictions=tf33.concat([boxPrediction0.classPrediction,boxPrediction1.classPrediction,boxPrediction2.classPrediction,boxPrediction3.classPrediction,boxPrediction4.classPrediction,boxPrediction5.classPrediction],1);return{boxPredictions,classPredictions}})}var SsdMobilenetv1Options=class{constructor({minConfidence,maxResults}={}){this._name="SsdMobilenetv1Options";if(this._minConfidence=minConfidence||.5,this._maxResults=maxResults||100,typeof this._minConfidence!="number"||this._minConfidence<=0||this._minConfidence>=1)throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`);if(typeof this._maxResults!="number")throw new Error(`${this._name} - expected maxResults to be a number`)}get minConfidence(){return this._minConfidence}get maxResults(){return this._maxResults}};var SsdMobilenetv1=class extends NeuralNetwork{constructor(){super("SsdMobilenetv1")}forwardInput(input){let{params}=this;if(!params)throw new Error("SsdMobilenetv1 - load model before inference");return tf34.tidy(()=>{let batchTensor=tf34.cast(input.toBatchTensor(512,!1),"float32"),x=tf34.sub(tf34.mul(batchTensor,tf34.scalar(.007843137718737125)),tf34.scalar(1)),features=mobileNetV1(x,params.mobilenetv1),{boxPredictions,classPredictions}=predictionLayer(features.out,features.conv11,params.prediction_layer);return outputLayer(boxPredictions,classPredictions,params.output_layer)})}async forward(input){return this.forwardInput(await toNetInput(input))}async locateFaces(input,options={}){let{maxResults,minConfidence}=new SsdMobilenetv1Options(options),netInput=await toNetInput(input),{boxes:_boxes,scores:_scores}=this.forwardInput(netInput),boxes=_boxes[0],scores=_scores[0];for(let i=1;i<_boxes.length;i++)_boxes[i].dispose(),_scores[i].dispose();let scoresData=Array.from(await scores.data()),indices=nonMaxSuppression2(boxes,scoresData,maxResults,.5,minConfidence),reshapedDims=netInput.getReshapedInputDimensions(0),inputSize=netInput.inputSize,padX=inputSize/reshapedDims.width,padY=inputSize/reshapedDims.height,boxesData=boxes.arraySync(),results=indices.map(idx=>{let[top,bottom]=[Math.max(0,boxesData[idx][0]),Math.min(1,boxesData[idx][2])].map(val=>val*padY),[left,right]=[Math.max(0,boxesData[idx][1]),Math.min(1,boxesData[idx][3])].map(val=>val*padX);return new FaceDetection(scoresData[idx],new Rect(left,top,right-left,bottom-top),{height:netInput.getInputHeight(0),width:netInput.getInputWidth(0)})});return boxes.dispose(),scores.dispose(),results}getDefaultModelName(){return"ssd_mobilenetv1_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap6(weightMap)}extractParams(weights){return extractParams6(weights)}};function createSsdMobilenetv1(weights){let net=new SsdMobilenetv1;return net.extractWeights(weights),net}function createFaceDetectionNet(weights){return createSsdMobilenetv1(weights)}var FaceDetectionNet=class extends SsdMobilenetv1{};var IOU_THRESHOLD=.4,BOX_ANCHORS=[new Point(.738768,.874946),new Point(2.42204,2.65704),new Point(4.30971,7.04493),new Point(10.246,4.59428),new Point(12.6868,11.8741)],BOX_ANCHORS_SEPARABLE=[new Point(1.603231,2.094468),new Point(6.041143,7.080126),new Point(2.882459,3.518061),new Point(4.266906,5.178857),new Point(9.041765,10.66308)],MEAN_RGB_SEPARABLE=[117.001,114.697,97.404],DEFAULT_MODEL_NAME="tiny_yolov2_model",DEFAULT_MODEL_NAME_SEPARABLE_CONV="tiny_yolov2_separable_conv_model";var tf39=__toModule(require_tfjs_esm());var isNumber=arg=>typeof arg=="number";function validateConfig(config){if(!config)throw new Error(`invalid config: ${config}`);if(typeof config.withSeparableConvs!="boolean")throw new Error(`config.withSeparableConvs has to be a boolean, have: ${config.withSeparableConvs}`);if(!isNumber(config.iouThreshold)||config.iouThreshold<0||config.iouThreshold>1)throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${config.iouThreshold}`);if(!Array.isArray(config.classes)||!config.classes.length||!config.classes.every(c=>typeof c=="string"))throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(config.classes)}`);if(!Array.isArray(config.anchors)||!config.anchors.length||!config.anchors.map(a=>a||{}).every(a=>isNumber(a.x)&&isNumber(a.y)))throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(config.anchors)}`);if(config.meanRgb&&(!Array.isArray(config.meanRgb)||config.meanRgb.length!==3||!config.meanRgb.every(isNumber)))throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(config.meanRgb)}`)}var tf36=__toModule(require_tfjs_esm());var tf35=__toModule(require_tfjs_esm());function leaky(x){return tf35.tidy(()=>{let min=tf35.mul(x,tf35.scalar(.10000000149011612));return tf35.add(tf35.relu(tf35.sub(x,min)),min)})}function convWithBatchNorm(x,params){return tf36.tidy(()=>{let out=tf36.pad(x,[[0,0],[1,1],[1,1],[0,0]]);return out=tf36.conv2d(out,params.conv.filters,[1,1],"valid"),out=tf36.sub(out,params.bn.sub),out=tf36.mul(out,params.bn.truediv),out=tf36.add(out,params.conv.bias),leaky(out)})}var tf37=__toModule(require_tfjs_esm());function depthwiseSeparableConv2(x,params){return tf37.tidy(()=>{let out=tf37.pad(x,[[0,0],[1,1],[1,1],[0,0]]);return out=tf37.separableConv2d(out,params.depthwise_filter,params.pointwise_filter,[1,1],"valid"),out=tf37.add(out,params.bias),leaky(out)})}var tf38=__toModule(require_tfjs_esm());function extractorsFactory7(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings);function extractBatchNormParams(size,mappedPrefix){let sub6=tf38.tensor1d(extractWeights(size)),truediv=tf38.tensor1d(extractWeights(size));return paramMappings.push({paramPath:`${mappedPrefix}/sub`},{paramPath:`${mappedPrefix}/truediv`}),{sub:sub6,truediv}}function extractConvWithBatchNormParams(channelsIn,channelsOut,mappedPrefix){let conv3=extractConvParams(channelsIn,channelsOut,3,`${mappedPrefix}/conv`),bn=extractBatchNormParams(channelsOut,`${mappedPrefix}/bn`);return{conv:conv3,bn}}let extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);return{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}}function extractParams7(weights,config,boxEncodingSize,filterSizes){let{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),paramMappings=[],{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}=extractorsFactory7(extractWeights,paramMappings),params;if(config.withSeparableConvs){let[s0,s1,s2,s3,s4,s5,s6,s7,s8]=filterSizes,conv0=config.isFirstLayerConv2d?extractConvParams(s0,s1,3,"conv0"):extractSeparableConvParams(s0,s1,"conv0"),conv1=extractSeparableConvParams(s1,s2,"conv1"),conv22=extractSeparableConvParams(s2,s3,"conv2"),conv3=extractSeparableConvParams(s3,s4,"conv3"),conv4=extractSeparableConvParams(s4,s5,"conv4"),conv5=extractSeparableConvParams(s5,s6,"conv5"),conv6=s7?extractSeparableConvParams(s6,s7,"conv6"):void 0,conv7=s8?extractSeparableConvParams(s7,s8,"conv7"):void 0,conv8=extractConvParams(s8||s7||s6,5*boxEncodingSize,1,"conv8");params={conv0,conv1,conv2:conv22,conv3,conv4,conv5,conv6,conv7,conv8}}else{let[s0,s1,s2,s3,s4,s5,s6,s7,s8]=filterSizes,conv0=extractConvWithBatchNormParams(s0,s1,"conv0"),conv1=extractConvWithBatchNormParams(s1,s2,"conv1"),conv22=extractConvWithBatchNormParams(s2,s3,"conv2"),conv3=extractConvWithBatchNormParams(s3,s4,"conv3"),conv4=extractConvWithBatchNormParams(s4,s5,"conv4"),conv5=extractConvWithBatchNormParams(s5,s6,"conv5"),conv6=extractConvWithBatchNormParams(s6,s7,"conv6"),conv7=extractConvWithBatchNormParams(s7,s8,"conv7"),conv8=extractConvParams(s8,5*boxEncodingSize,1,"conv8");params={conv0,conv1,conv2:conv22,conv3,conv4,conv5,conv6,conv7,conv8}}if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params,paramMappings}}function extractorsFactory8(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractBatchNormParams(prefix){let sub6=extractWeightEntry(`${prefix}/sub`,1),truediv=extractWeightEntry(`${prefix}/truediv`,1);return{sub:sub6,truediv}}function extractConvParams(prefix){let filters=extractWeightEntry(`${prefix}/filters`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return{filters,bias}}function extractConvWithBatchNormParams(prefix){let conv3=extractConvParams(`${prefix}/conv`),bn=extractBatchNormParams(`${prefix}/bn`);return{conv:conv3,bn}}let extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);return{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}}function extractParamsFromWeigthMap7(weightMap,config){let paramMappings=[],{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}=extractorsFactory8(weightMap,paramMappings),params;if(config.withSeparableConvs){let numFilters=config.filterSizes&&config.filterSizes.length||9;params={conv0:config.isFirstLayerConv2d?extractConvParams("conv0"):extractSeparableConvParams("conv0"),conv1:extractSeparableConvParams("conv1"),conv2:extractSeparableConvParams("conv2"),conv3:extractSeparableConvParams("conv3"),conv4:extractSeparableConvParams("conv4"),conv5:extractSeparableConvParams("conv5"),conv6:numFilters>7?extractSeparableConvParams("conv6"):void 0,conv7:numFilters>8?extractSeparableConvParams("conv7"):void 0,conv8:extractConvParams("conv8")}}else params={conv0:extractConvWithBatchNormParams("conv0"),conv1:extractConvWithBatchNormParams("conv1"),conv2:extractConvWithBatchNormParams("conv2"),conv3:extractConvWithBatchNormParams("conv3"),conv4:extractConvWithBatchNormParams("conv4"),conv5:extractConvWithBatchNormParams("conv5"),conv6:extractConvWithBatchNormParams("conv6"),conv7:extractConvWithBatchNormParams("conv7"),conv8:extractConvParams("conv8")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var TinyYolov2Options=class{constructor({inputSize,scoreThreshold}={}){this._name="TinyYolov2Options";if(this._inputSize=inputSize||416,this._scoreThreshold=scoreThreshold||.5,typeof this._inputSize!="number"||this._inputSize%32!=0)throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`);if(typeof this._scoreThreshold!="number"||this._scoreThreshold<=0||this._scoreThreshold>=1)throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`)}get inputSize(){return this._inputSize}get scoreThreshold(){return this._scoreThreshold}};var TinyYolov2Base2=class extends NeuralNetwork{constructor(config){super("TinyYolov2");validateConfig(config),this._config=config}get config(){return this._config}get withClassScores(){return this.config.withClassScores||this.config.classes.length>1}get boxEncodingSize(){return 5+(this.withClassScores?this.config.classes.length:0)}runTinyYolov2(x,params){let out=convWithBatchNorm(x,params.conv0);return out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv1),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv2),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv3),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv4),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv5),out=tf39.maxPool(out,[2,2],[1,1],"same"),out=convWithBatchNorm(out,params.conv6),out=convWithBatchNorm(out,params.conv7),convLayer(out,params.conv8,"valid",!1)}runMobilenet(x,params){let out=this.config.isFirstLayerConv2d?leaky(convLayer(x,params.conv0,"valid",!1)):depthwiseSeparableConv2(x,params.conv0);return out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv2(out,params.conv1),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv2(out,params.conv2),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv2(out,params.conv3),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv2(out,params.conv4),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv2(out,params.conv5),out=tf39.maxPool(out,[2,2],[1,1],"same"),out=params.conv6?depthwiseSeparableConv2(out,params.conv6):out,out=params.conv7?depthwiseSeparableConv2(out,params.conv7):out,convLayer(out,params.conv8,"valid",!1)}forwardInput(input,inputSize){let{params}=this;if(!params)throw new Error("TinyYolov2 - load model before inference");return tf39.tidy(()=>{let batchTensor=tf39.cast(input.toBatchTensor(inputSize,!1),"float32");return batchTensor=this.config.meanRgb?normalize(batchTensor,this.config.meanRgb):batchTensor,batchTensor=batchTensor.div(tf39.scalar(256)),this.config.withSeparableConvs?this.runMobilenet(batchTensor,params):this.runTinyYolov2(batchTensor,params)})}async forward(input,inputSize){return this.forwardInput(await toNetInput(input),inputSize)}async detect(input,forwardParams={}){let{inputSize,scoreThreshold}=new TinyYolov2Options(forwardParams),netInput=await toNetInput(input),out=await this.forwardInput(netInput,inputSize),out0=tf39.tidy(()=>tf39.unstack(out)[0].expandDims()),inputDimensions={width:netInput.getInputWidth(0),height:netInput.getInputHeight(0)},results=await this.extractBoxes(out0,netInput.getReshapedInputDimensions(0),scoreThreshold);out.dispose(),out0.dispose();let boxes=results.map(res=>res.box),scores=results.map(res=>res.score),classScores=results.map(res=>res.classScore),classNames=results.map(res=>this.config.classes[res.label]);return nonMaxSuppression(boxes.map(box=>box.rescale(inputSize)),scores,this.config.iouThreshold,!0).map(idx=>new ObjectDetection(scores[idx],classScores[idx],classNames[idx],boxes[idx],inputDimensions))}getDefaultModelName(){return""}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap7(weightMap,this.config)}extractParams(weights){let filterSizes=this.config.filterSizes||TinyYolov2Base2.DEFAULT_FILTER_SIZES,numFilters=filterSizes?filterSizes.length:void 0;if(numFilters!==7&&numFilters!==8&&numFilters!==9)throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`);return extractParams7(weights,this.config,this.boxEncodingSize,filterSizes)}async extractBoxes(outputTensor,inputBlobDimensions,scoreThreshold){let{width,height}=inputBlobDimensions,inputSize=Math.max(width,height),correctionFactorX=inputSize/width,correctionFactorY=inputSize/height,numCells=outputTensor.shape[1],numBoxes=this.config.anchors.length,[boxesTensor,scoresTensor,classScoresTensor]=tf39.tidy(()=>{let reshaped=outputTensor.reshape([numCells,numCells,numBoxes,this.boxEncodingSize]),boxes=reshaped.slice([0,0,0,0],[numCells,numCells,numBoxes,4]),scores=reshaped.slice([0,0,0,4],[numCells,numCells,numBoxes,1]),classScores=this.withClassScores?tf39.softmax(reshaped.slice([0,0,0,5],[numCells,numCells,numBoxes,this.config.classes.length]),3):tf39.scalar(0);return[boxes,scores,classScores]}),results=[],scoresData=await scoresTensor.array(),boxesData=await boxesTensor.array();for(let row=0;rowscoreThreshold){let ctX=(col+sigmoid(boxesData[row][col][anchor][0]))/numCells*correctionFactorX,ctY=(row+sigmoid(boxesData[row][col][anchor][1]))/numCells*correctionFactorY,widthLocal=Math.exp(boxesData[row][col][anchor][2])*this.config.anchors[anchor].x/numCells*correctionFactorX,heightLocal=Math.exp(boxesData[row][col][anchor][3])*this.config.anchors[anchor].y/numCells*correctionFactorY,x=ctX-widthLocal/2,y=ctY-heightLocal/2,pos={row,col,anchor},{classScore,label}=this.withClassScores?await this.extractPredictedClass(classScoresTensor,pos):{classScore:1,label:0};results.push({box:new BoundingBox(x,y,x+widthLocal,y+heightLocal),score,classScore:score*classScore,label,...pos})}}return boxesTensor.dispose(),scoresTensor.dispose(),classScoresTensor.dispose(),results}async extractPredictedClass(classesTensor,pos){let{row,col,anchor}=pos,classesData=await classesTensor.array();return Array(this.config.classes.length).fill(0).map((_,i)=>classesData[row][col][anchor][i]).map((classScore,label)=>({classScore,label})).reduce((max,curr)=>max.classScore>curr.classScore?max:curr)}},TinyYolov2Base=TinyYolov2Base2;TinyYolov2Base.DEFAULT_FILTER_SIZES=[3,16,32,64,128,256,512,1024,1024];var TinyYolov2=class extends TinyYolov2Base{constructor(withSeparableConvs=!0){let config={withSeparableConvs,iouThreshold:IOU_THRESHOLD,classes:["face"],...withSeparableConvs?{anchors:BOX_ANCHORS_SEPARABLE,meanRgb:MEAN_RGB_SEPARABLE}:{anchors:BOX_ANCHORS,withClassScores:!0}};super(config)}get withSeparableConvs(){return this.config.withSeparableConvs}get anchors(){return this.config.anchors}async locateFaces(input,forwardParams){return(await this.detect(input,forwardParams)).map(det=>new FaceDetection(det.score,det.relativeBox,{width:det.imageWidth,height:det.imageHeight}))}getDefaultModelName(){return this.withSeparableConvs?DEFAULT_MODEL_NAME_SEPARABLE_CONV:DEFAULT_MODEL_NAME}extractParamsFromWeigthMap(weightMap){return super.extractParamsFromWeigthMap(weightMap)}};function createTinyYolov2(weights,withSeparableConvs=!0){let net=new TinyYolov2(withSeparableConvs);return net.extractWeights(weights),net}var TinyFaceDetectorOptions=class extends TinyYolov2Options{constructor(){super(...arguments);this._name="TinyFaceDetectorOptions"}};var ComposableTask=class{async then(onfulfilled){return onfulfilled(await this.run())}async run(){throw new Error("ComposableTask - run is not implemented")}};var tf41=__toModule(require_tfjs_esm());var tf40=__toModule(require_tfjs_esm());async function extractAllFacesAndComputeResults(parentResults,input,computeResults,extractedFaces,getRectForAlignment=({alignedRect})=>alignedRect){let faceBoxes=parentResults.map(parentResult=>isWithFaceLandmarks(parentResult)?getRectForAlignment(parentResult):parentResult.detection),faces=extractedFaces||(input instanceof tf40.Tensor?await extractFaceTensors(input,faceBoxes):await extractFaces(input,faceBoxes)),results=await computeResults(faces);return faces.forEach(f=>f instanceof tf40.Tensor&&f.dispose()),results}async function extractSingleFaceAndComputeResult(parentResult,input,computeResult,extractedFaces,getRectForAlignment){return extractAllFacesAndComputeResults([parentResult],input,async faces=>computeResult(faces[0]),extractedFaces,getRectForAlignment)}var IOU_THRESHOLD2=.4,BOX_ANCHORS2=[new Point(1.603231,2.094468),new Point(6.041143,7.080126),new Point(2.882459,3.518061),new Point(4.266906,5.178857),new Point(9.041765,10.66308)],MEAN_RGB=[117.001,114.697,97.404];var TinyFaceDetector=class extends TinyYolov2Base{constructor(){let config={withSeparableConvs:!0,iouThreshold:IOU_THRESHOLD2,classes:["face"],anchors:BOX_ANCHORS2,meanRgb:MEAN_RGB,isFirstLayerConv2d:!0,filterSizes:[3,16,32,64,128,256,512]};super(config)}get anchors(){return this.config.anchors}async locateFaces(input,forwardParams){return(await this.detect(input,forwardParams)).map(det=>new FaceDetection(det.score,det.relativeBox,{width:det.imageWidth,height:det.imageHeight}))}getDefaultModelName(){return"tiny_face_detector_model"}extractParamsFromWeigthMap(weightMap){return super.extractParamsFromWeigthMap(weightMap)}};var nets={ssdMobilenetv1:new SsdMobilenetv1,tinyFaceDetector:new TinyFaceDetector,tinyYolov2:new TinyYolov2,faceLandmark68Net:new FaceLandmark68Net,faceLandmark68TinyNet:new FaceLandmark68TinyNet,faceRecognitionNet:new FaceRecognitionNet,faceExpressionNet:new FaceExpressionNet,ageGenderNet:new AgeGenderNet},ssdMobilenetv1=(input,options)=>nets.ssdMobilenetv1.locateFaces(input,options),tinyFaceDetector=(input,options)=>nets.tinyFaceDetector.locateFaces(input,options),tinyYolov2=(input,options)=>nets.tinyYolov2.locateFaces(input,options),detectFaceLandmarks=input=>nets.faceLandmark68Net.detectLandmarks(input),detectFaceLandmarksTiny=input=>nets.faceLandmark68TinyNet.detectLandmarks(input),computeFaceDescriptor=input=>nets.faceRecognitionNet.computeFaceDescriptor(input),recognizeFaceExpressions=input=>nets.faceExpressionNet.predictExpressions(input),predictAgeAndGender=input=>nets.ageGenderNet.predictAgeAndGender(input),loadSsdMobilenetv1Model=url=>nets.ssdMobilenetv1.load(url),loadTinyFaceDetectorModel=url=>nets.tinyFaceDetector.load(url),loadTinyYolov2Model=url=>nets.tinyYolov2.load(url),loadFaceLandmarkModel=url=>nets.faceLandmark68Net.load(url),loadFaceLandmarkTinyModel=url=>nets.faceLandmark68TinyNet.load(url),loadFaceRecognitionModel=url=>nets.faceRecognitionNet.load(url),loadFaceExpressionModel=url=>nets.faceExpressionNet.load(url),loadAgeGenderModel=url=>nets.ageGenderNet.load(url),loadFaceDetectionModel=loadSsdMobilenetv1Model,locateFaces=ssdMobilenetv1,detectLandmarks=detectFaceLandmarks;var PredictFaceExpressionsTaskBase=class extends ComposableTask{constructor(parentTask,input,extractedFaces){super();this.parentTask=parentTask;this.input=input;this.extractedFaces=extractedFaces}},PredictAllFaceExpressionsTask=class extends PredictFaceExpressionsTaskBase{async run(){let parentResults=await this.parentTask,faceExpressionsByFace=await extractAllFacesAndComputeResults(parentResults,this.input,async faces=>Promise.all(faces.map(face=>nets.faceExpressionNet.predictExpressions(face))),this.extractedFaces);return parentResults.map((parentResult,i)=>extendWithFaceExpressions(parentResult,faceExpressionsByFace[i]))}withAgeAndGender(){return new PredictAllAgeAndGenderTask(this,this.input)}},PredictSingleFaceExpressionsTask=class extends PredictFaceExpressionsTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let faceExpressions=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.faceExpressionNet.predictExpressions(face),this.extractedFaces);return extendWithFaceExpressions(parentResult,faceExpressions)}withAgeAndGender(){return new PredictSingleAgeAndGenderTask(this,this.input)}},PredictAllFaceExpressionsWithFaceAlignmentTask=class extends PredictAllFaceExpressionsTask{withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},PredictSingleFaceExpressionsWithFaceAlignmentTask=class extends PredictSingleFaceExpressionsTask{withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}};var PredictAgeAndGenderTaskBase=class extends ComposableTask{constructor(parentTask,input,extractedFaces){super();this.parentTask=parentTask;this.input=input;this.extractedFaces=extractedFaces}},PredictAllAgeAndGenderTask=class extends PredictAgeAndGenderTaskBase{async run(){let parentResults=await this.parentTask,ageAndGenderByFace=await extractAllFacesAndComputeResults(parentResults,this.input,async faces=>Promise.all(faces.map(face=>nets.ageGenderNet.predictAgeAndGender(face))),this.extractedFaces);return parentResults.map((parentResult,i)=>{let{age,gender,genderProbability}=ageAndGenderByFace[i];return extendWithAge(extendWithGender(parentResult,gender,genderProbability),age)})}withFaceExpressions(){return new PredictAllFaceExpressionsTask(this,this.input)}},PredictSingleAgeAndGenderTask=class extends PredictAgeAndGenderTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let{age,gender,genderProbability}=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.ageGenderNet.predictAgeAndGender(face),this.extractedFaces);return extendWithAge(extendWithGender(parentResult,gender,genderProbability),age)}withFaceExpressions(){return new PredictSingleFaceExpressionsTask(this,this.input)}},PredictAllAgeAndGenderWithFaceAlignmentTask=class extends PredictAllAgeAndGenderTask{withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},PredictSingleAgeAndGenderWithFaceAlignmentTask=class extends PredictSingleAgeAndGenderTask{withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}};var ComputeFaceDescriptorsTaskBase=class extends ComposableTask{constructor(parentTask,input){super();this.parentTask=parentTask;this.input=input}},ComputeAllFaceDescriptorsTask=class extends ComputeFaceDescriptorsTaskBase{async run(){let parentResults=await this.parentTask;return(await extractAllFacesAndComputeResults(parentResults,this.input,faces=>Promise.all(faces.map(face=>nets.faceRecognitionNet.computeFaceDescriptor(face))),null,parentResult=>parentResult.landmarks.align(null,{useDlibAlignment:!0}))).map((descriptor,i)=>extendWithFaceDescriptor(parentResults[i],descriptor))}withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}},ComputeSingleFaceDescriptorTask=class extends ComputeFaceDescriptorsTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let descriptor=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.faceRecognitionNet.computeFaceDescriptor(face),null,parentResult2=>parentResult2.landmarks.align(null,{useDlibAlignment:!0}));return extendWithFaceDescriptor(parentResult,descriptor)}withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}};var DetectFaceLandmarksTaskBase=class extends ComposableTask{constructor(parentTask,input,useTinyLandmarkNet){super();this.parentTask=parentTask;this.input=input;this.useTinyLandmarkNet=useTinyLandmarkNet}get landmarkNet(){return this.useTinyLandmarkNet?nets.faceLandmark68TinyNet:nets.faceLandmark68Net}},DetectAllFaceLandmarksTask=class extends DetectFaceLandmarksTaskBase{async run(){let parentResults=await this.parentTask,detections=parentResults.map(res=>res.detection),faces=this.input instanceof tf41.Tensor?await extractFaceTensors(this.input,detections):await extractFaces(this.input,detections),faceLandmarksByFace=await Promise.all(faces.map(face=>this.landmarkNet.detectLandmarks(face)));return faces.forEach(f=>f instanceof tf41.Tensor&&f.dispose()),parentResults.map((parentResult,i)=>extendWithFaceLandmarks(parentResult,faceLandmarksByFace[i]))}withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},DetectSingleFaceLandmarksTask=class extends DetectFaceLandmarksTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let{detection}=parentResult,faces=this.input instanceof tf41.Tensor?await extractFaceTensors(this.input,[detection]):await extractFaces(this.input,[detection]),landmarks=await this.landmarkNet.detectLandmarks(faces[0]);return faces.forEach(f=>f instanceof tf41.Tensor&&f.dispose()),extendWithFaceLandmarks(parentResult,landmarks)}withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}};var DetectFacesTaskBase=class extends ComposableTask{constructor(input,options=new SsdMobilenetv1Options){super();this.input=input;this.options=options}},DetectAllFacesTask=class extends DetectFacesTaskBase{async run(){let{input,options}=this,faceDetectionFunction=options instanceof TinyFaceDetectorOptions?input2=>nets.tinyFaceDetector.locateFaces(input2,options):options instanceof SsdMobilenetv1Options?input2=>nets.ssdMobilenetv1.locateFaces(input2,options):options instanceof TinyYolov2Options?input2=>nets.tinyYolov2.locateFaces(input2,options):null;if(!faceDetectionFunction)throw new Error("detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options");return faceDetectionFunction(input)}runAndExtendWithFaceDetections(){return new Promise(async resolve=>{let detections=await this.run();resolve(detections.map(detection=>extendWithFaceDetection({},detection)))})}withFaceLandmarks(useTinyLandmarkNet=!1){return new DetectAllFaceLandmarksTask(this.runAndExtendWithFaceDetections(),this.input,useTinyLandmarkNet)}withFaceExpressions(){return new PredictAllFaceExpressionsTask(this.runAndExtendWithFaceDetections(),this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderTask(this.runAndExtendWithFaceDetections(),this.input)}},DetectSingleFaceTask=class extends DetectFacesTaskBase{async run(){let faceDetections=await new DetectAllFacesTask(this.input,this.options),faceDetectionWithHighestScore=faceDetections[0];return faceDetections.forEach(faceDetection=>{faceDetection.score>faceDetectionWithHighestScore.score&&(faceDetectionWithHighestScore=faceDetection)}),faceDetectionWithHighestScore}runAndExtendWithFaceDetection(){return new Promise(async resolve=>{let detection=await this.run();resolve(detection?extendWithFaceDetection({},detection):void 0)})}withFaceLandmarks(useTinyLandmarkNet=!1){return new DetectSingleFaceLandmarksTask(this.runAndExtendWithFaceDetection(),this.input,useTinyLandmarkNet)}withFaceExpressions(){return new PredictSingleFaceExpressionsTask(this.runAndExtendWithFaceDetection(),this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderTask(this.runAndExtendWithFaceDetection(),this.input)}};function detectSingleFace(input,options=new SsdMobilenetv1Options){return new DetectSingleFaceTask(input,options)}function detectAllFaces(input,options=new SsdMobilenetv1Options){return new DetectAllFacesTask(input,options)}async function allFacesSsdMobilenetv1(input,minConfidence){return detectAllFaces(input,new SsdMobilenetv1Options(minConfidence?{minConfidence}:{})).withFaceLandmarks().withFaceDescriptors()}async function allFacesTinyYolov2(input,forwardParams={}){return detectAllFaces(input,new TinyYolov2Options(forwardParams)).withFaceLandmarks().withFaceDescriptors()}var allFaces=allFacesSsdMobilenetv1;function euclideanDistance(arr1,arr2){if(arr1.length!==arr2.length)throw new Error("euclideanDistance: arr1.length !== arr2.length");let desc1=Array.from(arr1),desc2=Array.from(arr2);return Math.sqrt(desc1.map((val,i)=>val-desc2[i]).reduce((res,diff)=>res+diff**2,0))}var FaceMatcher=class{constructor(inputs,distanceThreshold=.6){this._distanceThreshold=distanceThreshold;let inputArray=Array.isArray(inputs)?inputs:[inputs];if(!inputArray.length)throw new Error("FaceRecognizer.constructor - expected atleast one input");let count=1,createUniqueLabel=()=>`person ${count++}`;this._labeledDescriptors=inputArray.map(desc=>{if(desc instanceof LabeledFaceDescriptors)return desc;if(desc instanceof Float32Array)return new LabeledFaceDescriptors(createUniqueLabel(),[desc]);if(desc.descriptor&&desc.descriptor instanceof Float32Array)return new LabeledFaceDescriptors(createUniqueLabel(),[desc.descriptor]);throw new Error("FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>")})}get labeledDescriptors(){return this._labeledDescriptors}get distanceThreshold(){return this._distanceThreshold}computeMeanDistance(queryDescriptor,descriptors){return descriptors.map(d=>euclideanDistance(d,queryDescriptor)).reduce((d1,d2)=>d1+d2,0)/(descriptors.length||1)}matchDescriptor(queryDescriptor){return this.labeledDescriptors.map(({descriptors,label})=>new FaceMatch(label,this.computeMeanDistance(queryDescriptor,descriptors))).reduce((best,curr)=>best.distanceld.toJSON())}}static fromJSON(json){let labeledDescriptors=json.labeledDescriptors.map(ld=>LabeledFaceDescriptors.fromJSON(ld));return new FaceMatcher(labeledDescriptors,json.distanceThreshold)}};function createTinyFaceDetector(weights){let net=new TinyFaceDetector;return net.extractWeights(weights),net}function resizeResults(results,dimensions){let{width,height}=new Dimensions(dimensions.width,dimensions.height);if(width<=0||height<=0)throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({width,height})}`);if(Array.isArray(results))return results.map(obj=>resizeResults(obj,{width,height}));if(isWithFaceLandmarks(results)){let resizedDetection=results.detection.forSize(width,height),resizedLandmarks=results.unshiftedLandmarks.forSize(resizedDetection.box.width,resizedDetection.box.height);return extendWithFaceLandmarks(extendWithFaceDetection(results,resizedDetection),resizedLandmarks)}return isWithFaceDetection(results)?extendWithFaceDetection(results,results.detection.forSize(width,height)):results instanceof FaceLandmarks||results instanceof FaceDetection?results.forSize(width,height):results}var node=typeof process!="undefined",browser3=typeof navigator!="undefined"&&typeof navigator.userAgent!="undefined",version2={faceapi:version,node,browser:browser3}; +var ln=Object.create,Ye=Object.defineProperty,fn=Object.getPrototypeOf,hn=Object.prototype.hasOwnProperty,xn=Object.getOwnPropertyNames,bn=Object.getOwnPropertyDescriptor;var fo=o=>Ye(o,"__esModule",{value:!0});var ho=(o,t)=>()=>(t||(t={exports:{}},o(t.exports,t)),t.exports),Ge=(o,t)=>{fo(o);for(var e in t)Ye(o,e,{get:t[e],enumerable:!0})},gn=(o,t,e)=>{if(fo(o),t&&typeof t=="object"||typeof t=="function")for(let r of xn(t))!hn.call(o,r)&&r!=="default"&&Ye(o,r,{get:()=>t[r],enumerable:!(e=bn(t,r))||e.enumerable});return o},b=o=>o&&o.__esModule?o:gn(Ye(o!=null?ln(fn(o)):{},"default",{value:o,enumerable:!0}),o);var g=ho(xo=>{var vn=Object.create,Er=Object.defineProperty,yn=Object.getPrototypeOf,Fn=Object.prototype.hasOwnProperty,Tn=Object.getOwnPropertyNames,Pn=Object.getOwnPropertyDescriptor,_n=o=>Er(o,"__esModule",{value:!0}),bo=(o,t,e)=>{if(_n(o),t&&typeof t=="object"||typeof t=="function")for(let r of Tn(t))!Fn.call(o,r)&&r!=="default"&&Er(o,r,{get:()=>t[r],enumerable:!(e=Pn(t,r))||e.enumerable});return o},wn=o=>o&&o.__esModule?o:bo(Er(o!=null?vn(yn(o)):{},"default",{value:o,enumerable:!0}),o);bo(xo,wn(require("@tensorflow/tfjs-node-gpu")))});var To=ho((Ln,Fo)=>{Ge(Ln,{isNodejs:()=>kn});function kn(){return typeof global=="object"&&!0&&typeof Fo!="undefined"&&typeof process!="undefined"&&!!process.version}});Ge(exports,{AgeGenderNet:()=>pr,BoundingBox:()=>ee,Box:()=>D,ComposableTask:()=>tt,ComputeAllFaceDescriptorsTask:()=>At,ComputeFaceDescriptorsTaskBase:()=>vr,ComputeSingleFaceDescriptorTask:()=>Wt,DetectAllFaceLandmarksTask:()=>Fr,DetectAllFacesTask:()=>He,DetectFaceLandmarksTaskBase:()=>yr,DetectFacesTaskBase:()=>Pr,DetectSingleFaceLandmarksTask:()=>Tr,DetectSingleFaceTask:()=>_r,Dimensions:()=>A,FACE_EXPRESSION_LABELS:()=>Jr,FaceDetection:()=>M,FaceDetectionNet:()=>Jo,FaceExpressionNet:()=>cr,FaceExpressions:()=>It,FaceLandmark68Net:()=>fe,FaceLandmark68TinyNet:()=>dr,FaceLandmarkNet:()=>Bo,FaceLandmarks:()=>V,FaceLandmarks5:()=>vo,FaceLandmarks68:()=>oe,FaceMatch:()=>Ee,FaceMatcher:()=>Dr,FaceRecognitionNet:()=>xe,Gender:()=>vt,LabeledBox:()=>Me,LabeledFaceDescriptors:()=>xt,NetInput:()=>bt,NeuralNetwork:()=>S,ObjectDetection:()=>Dt,Point:()=>x,PredictedBox:()=>yo,Rect:()=>re,SsdMobilenetv1:()=>Ut,SsdMobilenetv1Options:()=>Z,TinyFaceDetector:()=>Fe,TinyFaceDetectorOptions:()=>gr,TinyYolov2:()=>ve,TinyYolov2Options:()=>lt,allFaces:()=>Da,allFacesSsdMobilenetv1:()=>dn,allFacesTinyYolov2:()=>wa,awaitMediaLoaded:()=>Yr,bufferToImage:()=>Gr,computeFaceDescriptor:()=>da,createCanvas:()=>ne,createCanvasFromMedia:()=>Ie,createFaceDetectionNet:()=>na,createFaceRecognitionNet:()=>Un,createSsdMobilenetv1:()=>Xo,createTinyFaceDetector:()=>Ea,createTinyYolov2:()=>ia,detectAllFaces:()=>wr,detectFaceLandmarks:()=>mn,detectFaceLandmarksTiny:()=>pa,detectLandmarks:()=>Pa,detectSingleFace:()=>_a,draw:()=>Qr,env:()=>w,euclideanDistance:()=>uo,extendWithAge:()=>hr,extendWithFaceDescriptor:()=>fr,extendWithFaceDetection:()=>$t,extendWithFaceExpressions:()=>mr,extendWithFaceLandmarks:()=>le,extendWithGender:()=>xr,extractFaceTensors:()=>se,extractFaces:()=>ae,fetchImage:()=>Bn,fetchJson:()=>Ur,fetchNetWeights:()=>Rn,fetchOrThrow:()=>Yt,getContext2dOrThrow:()=>O,getMediaDimensions:()=>Ht,imageTensorToCanvas:()=>zr,imageToSquare:()=>Vr,inverseSigmoid:()=>Mn,iou:()=>Lr,isMediaElement:()=>qe,isMediaLoaded:()=>Ne,isWithAge:()=>Xn,isWithFaceDetection:()=>pt,isWithFaceExpressions:()=>qr,isWithFaceLandmarks:()=>zt,isWithGender:()=>Jn,loadAgeGenderModel:()=>ya,loadFaceDetectionModel:()=>Fa,loadFaceExpressionModel:()=>va,loadFaceLandmarkModel:()=>xa,loadFaceLandmarkTinyModel:()=>ba,loadFaceRecognitionModel:()=>ga,loadSsdMobilenetv1Model:()=>pn,loadTinyFaceDetectorModel:()=>fa,loadTinyYolov2Model:()=>ha,loadWeightMap:()=>Xr,locateFaces:()=>Ta,matchDimensions:()=>On,minBbox:()=>kr,nets:()=>P,nonMaxSuppression:()=>Sr,normalize:()=>ot,padToSquare:()=>Ar,predictAgeAndGender:()=>la,recognizeFaceExpressions:()=>ua,resizeResults:()=>un,resolveInput:()=>jt,shuffleArray:()=>En,sigmoid:()=>De,ssdMobilenetv1:()=>cn,tf:()=>Ma,tinyFaceDetector:()=>ca,tinyYolov2:()=>ma,toNetInput:()=>E,utils:()=>Mr,validateConfig:()=>ao,version:()=>Ia});var Ma=b(g());var Qr={};Ge(Qr,{AnchorPosition:()=>dt,DrawBox:()=>Xe,DrawBoxOptions:()=>Hr,DrawFaceLandmarks:()=>Kr,DrawFaceLandmarksOptions:()=>Zr,DrawTextField:()=>Mt,DrawTextFieldOptions:()=>Ce,drawContour:()=>ft,drawDetections:()=>Wn,drawFaceExpressions:()=>$n,drawFaceLandmarks:()=>jn});function ft(o,t,e=!1){if(o.beginPath(),t.slice(1).forEach(({x:r,y:n},a)=>{let s=t[a];o.moveTo(s.x,s.y),o.lineTo(r,n)}),e){let r=t[t.length-1],n=t[0];if(!r||!n)return;o.moveTo(r.x,r.y),o.lineTo(n.x,n.y)}o.stroke()}var Mr={};Ge(Mr,{computeReshapedDimensions:()=>Ir,getCenterPoint:()=>Ot,isDimensions:()=>Ve,isEven:()=>ze,isFloat:()=>Nr,isTensor:()=>Bt,isTensor1D:()=>Dn,isTensor2D:()=>Cr,isTensor3D:()=>ht,isTensor4D:()=>z,isValidNumber:()=>rt,isValidProbablitiy:()=>te,range:()=>ct,round:()=>Rt});var go=b(g());var A=class{constructor(t,e){if(!rt(t)||!rt(e))throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({width:t,height:e})}`);this._width=t,this._height=e}get width(){return this._width}get height(){return this._height}reverse(){return new A(1/this.width,1/this.height)}};function Bt(o,t){return o instanceof go.Tensor&&o.shape.length===t}function Dn(o){return Bt(o,1)}function Cr(o){return Bt(o,2)}function ht(o){return Bt(o,3)}function z(o){return Bt(o,4)}function Nr(o){return o%1!=0}function ze(o){return o%2==0}function Rt(o,t=2){let e=10**t;return Math.floor(o*e)/e}function Ve(o){return o&&o.width&&o.height}function Ir({width:o,height:t},e){let r=e/Math.max(t,o);return new A(Math.round(o*r),Math.round(t*r))}function Ot(o){return o.reduce((t,e)=>t.add(e),new x(0,0)).div(new x(o.length,o.length))}function ct(o,t,e){return Array(o).fill(0).map((r,n)=>t+n*e)}function rt(o){return!!o&&o!==Infinity&&o!==-Infinity&&!Number.isNaN(o)||o===0}function te(o){return rt(o)&&o>=0&&o<=1}var x=class{constructor(t,e){this._x=t,this._y=e}get x(){return this._x}get y(){return this._y}add(t){return new x(this.x+t.x,this.y+t.y)}sub(t){return new x(this.x-t.x,this.y-t.y)}mul(t){return new x(this.x*t.x,this.y*t.y)}div(t){return new x(this.x/t.x,this.y/t.y)}abs(){return new x(Math.abs(this.x),Math.abs(this.y))}magnitude(){return Math.sqrt(this.x**2+this.y**2)}floor(){return new x(Math.floor(this.x),Math.floor(this.y))}};var D=class{static isRect(t){return!!t&&[t.x,t.y,t.width,t.height].every(rt)}static assertIsValidBox(t,e,r=!1){if(!D.isRect(t))throw new Error(`${e} - invalid box: ${JSON.stringify(t)}, expected object with properties x, y, width, height`);if(!r&&(t.width<0||t.height<0))throw new Error(`${e} - width (${t.width}) and height (${t.height}) must be positive numbers`)}constructor(t,e=!0){let r=t||{},n=[r.left,r.top,r.right,r.bottom].every(rt),a=[r.x,r.y,r.width,r.height].every(rt);if(!a&&!n)throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(r)}`);let[s,i,c,m]=a?[r.x,r.y,r.width,r.height]:[r.left,r.top,r.right-r.left,r.bottom-r.top];D.assertIsValidBox({x:s,y:i,width:c,height:m},"Box.constructor",e),this._x=s,this._y=i,this._width=c,this._height=m}get x(){return this._x}get y(){return this._y}get width(){return this._width}get height(){return this._height}get left(){return this.x}get top(){return this.y}get right(){return this.x+this.width}get bottom(){return this.y+this.height}get area(){return this.width*this.height}get topLeft(){return new x(this.left,this.top)}get topRight(){return new x(this.right,this.top)}get bottomLeft(){return new x(this.left,this.bottom)}get bottomRight(){return new x(this.right,this.bottom)}round(){let[t,e,r,n]=[this.x,this.y,this.width,this.height].map(a=>Math.round(a));return new D({x:t,y:e,width:r,height:n})}floor(){let[t,e,r,n]=[this.x,this.y,this.width,this.height].map(a=>Math.floor(a));return new D({x:t,y:e,width:r,height:n})}toSquare(){let{x:t,y:e,width:r,height:n}=this,a=Math.abs(r-n);return re&&(i=-d+e+r,d=e),u>t&&(c=-u+t+n,u=t),m<1&&(c=2-m,m=1),p<1&&(c=2-p,p=1),{dy:s,edy:c,dx:a,edx:i,y:p,ey:u,x:m,ex:d,w:r,h:n}}calibrate(t){return new D({left:this.left+t.left*this.width,top:this.top+t.top*this.height,right:this.right+t.right*this.width,bottom:this.bottom+t.bottom*this.height}).toSquare().round()}};var ee=class extends D{constructor(t,e,r,n,a=!1){super({left:t,top:e,right:r,bottom:n},a)}};var Dt=class{constructor(t,e,r,n,a){this._imageDims=new A(a.width,a.height),this._score=t,this._classScore=e,this._className=r,this._box=new D(n).rescale(this._imageDims)}get score(){return this._score}get classScore(){return this._classScore}get className(){return this._className}get box(){return this._box}get imageDims(){return this._imageDims}get imageWidth(){return this.imageDims.width}get imageHeight(){return this.imageDims.height}get relativeBox(){return new D(this._box).rescale(this.imageDims.reverse())}forSize(t,e){return new Dt(this.score,this.classScore,this.className,this.relativeBox,{width:t,height:e})}};var M=class extends Dt{constructor(t,e,r){super(t,t,"",e,r)}forSize(t,e){let{score:r,relativeBox:n,imageDims:a}=super.forSize(t,e);return new M(r,n,a)}};function Lr(o,t,e=!0){let r=Math.max(0,Math.min(o.right,t.right)-Math.max(o.left,t.left)),n=Math.max(0,Math.min(o.bottom,t.bottom)-Math.max(o.top,t.top)),a=r*n;return e?a/(o.area+t.area-a):a/Math.min(o.area,t.area)}function kr(o){let t=o.map(i=>i.x),e=o.map(i=>i.y),r=t.reduce((i,c)=>ccii({score:s,boxIndex:i})).sort((s,i)=>s.score-i.score).map(s=>s.boxIndex),a=[];for(;n.length>0;){let s=n.pop();a.push(s);let i=n,c=[];for(let m=0;mc[p]<=e)}return a}var mt=b(g());function ot(o,t){return mt.tidy(()=>{let[e,r,n]=t,a=mt.fill([...o.shape.slice(0,3),1],e,"float32"),s=mt.fill([...o.shape.slice(0,3),1],r,"float32"),i=mt.fill([...o.shape.slice(0,3),1],n,"float32"),c=mt.concat([a,s,i],3);return mt.sub(o,c)})}var Et=b(g());function Ar(o,t=!1){return Et.tidy(()=>{let[e,r]=o.shape.slice(1);if(e===r)return o;let n=Math.abs(e-r),a=Math.round(n*(t?.5:1)),s=e>r?2:1,i=u=>{let l=o.shape.slice();return l[s]=u,Et.fill(l,0,"float32")},c=i(a),m=n-c.shape[s],d=[t&&m?i(m):null,o,c].filter(u=>!!u).map(u=>Et.cast(u,"float32"));return Et.concat(d,s)})}function En(o){let t=o.slice();for(let e=t.length-1;e>0;e--){let r=Math.floor(Math.random()*(e+1)),n=t[e];t[e]=t[r],t[r]=n}return t}function De(o){return 1/(1+Math.exp(-o))}function Mn(o){return Math.log(o/(1-o))}var re=class extends D{constructor(t,e,r,n,a=!1){super({x:t,y:e,width:r,height:n},a)}};var Cn=.5,Nn=.43,In=.45,V=class{constructor(t,e,r=new x(0,0)){let{width:n,height:a}=e;this._imgDims=new A(n,a),this._shift=r,this._positions=t.map(s=>s.mul(new x(n,a)).add(r))}get shift(){return new x(this._shift.x,this._shift.y)}get imageWidth(){return this._imgDims.width}get imageHeight(){return this._imgDims.height}get positions(){return this._positions}get relativePositions(){return this._positions.map(t=>t.sub(this._shift).div(new x(this.imageWidth,this.imageHeight)))}forSize(t,e){return new this.constructor(this.relativePositions,{width:t,height:e})}shiftBy(t,e){return new this.constructor(this.relativePositions,this._imgDims,new x(t,e))}shiftByPoint(t){return this.shiftBy(t.x,t.y)}align(t,e={}){if(t){let a=t instanceof M?t.box.floor():new D(t);return this.shiftBy(a.x,a.y).align(null,e)}let{useDlibAlignment:r,minBoxPadding:n}={useDlibAlignment:!1,minBoxPadding:.2,...e};return r?this.alignDlib():this.alignMinBbox(n)}alignDlib(){let t=this.getRefPointsForAlignment(),[e,r,n]=t,a=d=>n.sub(d).magnitude(),s=(a(e)+a(r))/2,i=Math.floor(s/In),c=Ot(t),m=Math.floor(Math.max(0,c.x-Cn*i)),p=Math.floor(Math.max(0,c.y-Nn*i));return new re(m,p,Math.min(i,this.imageWidth+m),Math.min(i,this.imageHeight+p))}alignMinBbox(t){let e=kr(this.positions);return e.pad(e.width*t,e.height*t)}getRefPointsForAlignment(){throw new Error("getRefPointsForAlignment not implemented by base class")}};var vo=class extends V{getRefPointsForAlignment(){let t=this.positions;return[t[0],t[1],Ot([t[3],t[4]])]}};var oe=class extends V{getJawOutline(){return this.positions.slice(0,17)}getLeftEyeBrow(){return this.positions.slice(17,22)}getRightEyeBrow(){return this.positions.slice(22,27)}getNose(){return this.positions.slice(27,36)}getLeftEye(){return this.positions.slice(36,42)}getRightEye(){return this.positions.slice(42,48)}getMouth(){return this.positions.slice(48,68)}getRefPointsForAlignment(){return[this.getLeftEye(),this.getRightEye(),this.getMouth()].map(Ot)}};var Ee=class{constructor(t,e){this._label=t,this._distance=e}get label(){return this._label}get distance(){return this._distance}toString(t=!0){return`${this.label}${t?` (${Rt(this.distance)})`:""}`}};var Me=class extends D{static assertIsValidLabeledBox(t,e){if(D.assertIsValidBox(t,e),!rt(t.label))throw new Error(`${e} - expected property label (${t.label}) to be a number`)}constructor(t,e){super(t);this._label=e}get label(){return this._label}};var xt=class{constructor(t,e){if(typeof t!="string")throw new Error("LabeledFaceDescriptors - constructor expected label to be a string");if(!Array.isArray(e)||e.some(r=>!(r instanceof Float32Array)))throw new Error("LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array");this._label=t,this._descriptors=e}get label(){return this._label}get descriptors(){return this._descriptors}toJSON(){return{label:this.label,descriptors:this.descriptors.map(t=>Array.from(t))}}static fromJSON(t){let e=t.descriptors.map(r=>new Float32Array(r));return new xt(t.label,e)}};var yo=class extends Me{static assertIsValidPredictedBox(t,e){if(Me.assertIsValidLabeledBox(t,e),!te(t.score)||!te(t.classScore))throw new Error(`${e} - expected properties score (${t.score}) and (${t.classScore}) to be a number between [0, 1]`)}constructor(t,e,r,n){super(t,e);this._score=r,this._classScore=n}get score(){return this._score}get classScore(){return this._classScore}};function pt(o){return o.detection instanceof M}function $t(o,t){return{...o,...{detection:t}}}function Wr(){let o=window.fetch;if(!o)throw new Error("fetch - missing fetch implementation for browser environment");let t=()=>{throw new Error("readFile - filesystem not available for browser environment")};return{Canvas:HTMLCanvasElement,CanvasRenderingContext2D,Image:HTMLImageElement,ImageData,Video:HTMLVideoElement,createCanvasElement:()=>document.createElement("canvas"),createImageElement:()=>document.createElement("img"),fetch:o,readFile:t}}function Ue(o){let t="";if(!o)try{o=require("fs")}catch(r){t=r.toString()}return{readFile:o?r=>new Promise((n,a)=>{o.readFile(r,(s,i)=>s?a(s):n(i))}):()=>{throw new Error(`readFile - failed to require fs in nodejs environment with error: ${t}`)}}}function Br(){let o=global.Canvas||global.HTMLCanvasElement,t=global.Image||global.HTMLImageElement,e=()=>{if(o)return new o;throw new Error("createCanvasElement - missing Canvas implementation for nodejs environment")},r=()=>{if(t)return new t;throw new Error("createImageElement - missing Image implementation for nodejs environment")},n=global.fetch,a=Ue();return{Canvas:o||class{},CanvasRenderingContext2D:global.CanvasRenderingContext2D||class{},Image:t||class{},ImageData:global.ImageData||class{},Video:global.HTMLVideoElement||class{},createCanvasElement:e,createImageElement:r,fetch:n,...a}}function Rr(){return typeof window=="object"&&typeof document!="undefined"&&typeof HTMLImageElement!="undefined"&&typeof HTMLCanvasElement!="undefined"&&typeof HTMLVideoElement!="undefined"&&typeof ImageData!="undefined"&&typeof CanvasRenderingContext2D!="undefined"}var Or=b(To()),k;function Sn(){if(!k)throw new Error("getEnv - environment is not defined, check isNodejs() and isBrowser()");return k}function $r(o){k=o}function jr(){return Rr()?$r(Wr()):Or.isNodejs()?$r(Br()):null}function An(o){if(k||jr(),!k)throw new Error("monkeyPatch - environment is not defined, check isNodejs() and isBrowser()");let{Canvas:t=k.Canvas,Image:e=k.Image}=o;k.Canvas=t,k.Image=e,k.createCanvasElement=o.createCanvasElement||(()=>new t),k.createImageElement=o.createImageElement||(()=>new e),k.ImageData=o.ImageData||k.ImageData,k.Video=o.Video||k.Video,k.fetch=o.fetch||k.fetch,k.readFile=o.readFile||k.readFile}var w={getEnv:Sn,setEnv:$r,initialize:jr,createBrowserEnv:Wr,createFileSystem:Ue,createNodejsEnv:Br,monkeyPatch:An,isBrowser:Rr,isNodejs:Or.isNodejs};jr();function jt(o){return!w.isNodejs()&&typeof o=="string"?document.getElementById(o):o}function O(o){let{Canvas:t,CanvasRenderingContext2D:e}=w.getEnv();if(o instanceof e)return o;let r=jt(o);if(!(r instanceof t))throw new Error("resolveContext2d - expected canvas to be of instance of Canvas");let n=r.getContext("2d");if(!n)throw new Error("resolveContext2d - canvas 2d context is null");return n}var dt;(function(o){o.TOP_LEFT="TOP_LEFT",o.TOP_RIGHT="TOP_RIGHT",o.BOTTOM_LEFT="BOTTOM_LEFT",o.BOTTOM_RIGHT="BOTTOM_RIGHT"})(dt||(dt={}));var Ce=class{constructor(t={}){let{anchorPosition:e,backgroundColor:r,fontColor:n,fontSize:a,fontStyle:s,padding:i}=t;this.anchorPosition=e||dt.TOP_LEFT,this.backgroundColor=r||"rgba(0, 0, 0, 0.5)",this.fontColor=n||"rgba(255, 255, 255, 1)",this.fontSize=a||14,this.fontStyle=s||"Georgia",this.padding=i||4}},Mt=class{constructor(t,e,r={}){this.text=typeof t=="string"?[t]:t instanceof Mt?t.text:t,this.anchor=e,this.options=new Ce(r)}measureWidth(t){let{padding:e}=this.options;return this.text.map(r=>t.measureText(r).width).reduce((r,n)=>r{let v=c+d.x,_=c+d.y+(l+1)*s;r.fillText(u,v,_)})}};var Hr=class{constructor(t={}){let{boxColor:e,lineWidth:r,label:n,drawLabelOptions:a}=t;this.boxColor=e||"rgba(0, 0, 255, 1)",this.lineWidth=r||2,this.label=n;let s={anchorPosition:dt.BOTTOM_LEFT,backgroundColor:this.boxColor};this.drawLabelOptions=new Ce({...s,...a})}},Xe=class{constructor(t,e={}){this.box=new D(t),this.options=new Hr(e)}draw(t){let e=O(t),{boxColor:r,lineWidth:n}=this.options,{x:a,y:s,width:i,height:c}=this.box;e.strokeStyle=r,e.lineWidth=n,e.strokeRect(a,s,i,c);let{label:m}=this.options;m&&new Mt([m],{x:a-n/2,y:s},this.options.drawLabelOptions).draw(t)}};function Wn(o,t){(Array.isArray(t)?t:[t]).forEach(r=>{let n=r instanceof M?r.score:pt(r)?r.detection.score:void 0,a=r instanceof M?r.box:pt(r)?r.detection.box:new D(r),s=n?`${Rt(n)}`:void 0;new Xe(a,{label:s}).draw(o)})}var ue=b(g());function Ne(o){let{Image:t,Video:e}=w.getEnv();return o instanceof t&&o.complete||o instanceof e&&o.readyState>=3}function Yr(o){return new Promise((t,e)=>{if(o instanceof w.getEnv().Canvas||Ne(o))return t(null);function r(a){!a.currentTarget||(a.currentTarget.removeEventListener("load",n),a.currentTarget.removeEventListener("error",r),e(a))}function n(a){!a.currentTarget||(a.currentTarget.removeEventListener("load",n),a.currentTarget.removeEventListener("error",r),t(a))}o.addEventListener("load",n),o.addEventListener("error",r)})}function Gr(o){return new Promise((t,e)=>{o instanceof Blob||e(new Error("bufferToImage - expected buf to be of type: Blob"));let r=new FileReader;r.onload=()=>{typeof r.result!="string"&&e(new Error("bufferToImage - expected reader.result to be a string, in onload"));let n=w.getEnv().createImageElement();n.onload=()=>t(n),n.onerror=e,n.src=r.result},r.onerror=e,r.readAsDataURL(o)})}function Ht(o){let{Image:t,Video:e}=w.getEnv();return o instanceof t?new A(o.naturalWidth,o.naturalHeight):o instanceof e?new A(o.videoWidth,o.videoHeight):new A(o.width,o.height)}function ne({width:o,height:t}){let{createCanvasElement:e}=w.getEnv(),r=e();return r.width=o,r.height=t,r}function Ie(o,t){let{ImageData:e}=w.getEnv();if(!(o instanceof e)&&!Ne(o))throw new Error("createCanvasFromMedia - media has not finished loading yet");let{width:r,height:n}=t||Ht(o),a=ne({width:r,height:n});return o instanceof e?O(a).putImageData(o,0,0):O(a).drawImage(o,0,0,r,n),a}var Je=b(g());async function zr(o,t){let e=t||w.getEnv().createCanvasElement(),[r,n,a]=o.shape.slice(z(o)?1:0),s=Je.tidy(()=>o.as3D(r,n,a).toInt());return await Je.browser.toPixels(s,e),s.dispose(),e}function qe(o){let{Image:t,Canvas:e,Video:r}=w.getEnv();return o instanceof t||o instanceof e||o instanceof r}var J=b(g());function Vr(o,t,e=!1){let{Image:r,Canvas:n}=w.getEnv();if(!(o instanceof r||o instanceof n))throw new Error("imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement");let a=Ht(o),s=t/Math.max(a.height,a.width),i=s*a.width,c=s*a.height,m=ne({width:t,height:t}),p=o instanceof n?o:Ie(o),d=Math.abs(i-c)/2,u=e&&i{if(ht(r)){this._imageTensors[n]=r,this._inputDimensions[n]=r.shape;return}if(z(r)){let s=r.shape[0];if(s!==1)throw new Error(`NetInput - tf.Tensor4D with batchSize ${s} passed, but not supported in input array`);this._imageTensors[n]=r,this._inputDimensions[n]=r.shape.slice(1);return}let a=r instanceof w.getEnv().Canvas?r:Ie(r);this._canvases[n]=a,this._inputDimensions[n]=[a.height,a.width,3]})}get imageTensors(){return this._imageTensors}get canvases(){return this._canvases}get isBatchInput(){return this.batchSize>1||this._treatAsBatchInput}get batchSize(){return this._batchSize}get inputDimensions(){return this._inputDimensions}get inputSize(){return this._inputSize}get reshapedInputDimensions(){return ct(this.batchSize,0,1).map((t,e)=>this.getReshapedInputDimensions(e))}getInput(t){return this.canvases[t]||this.imageTensors[t]}getInputDimensions(t){return this._inputDimensions[t]}getInputHeight(t){return this._inputDimensions[t][0]}getInputWidth(t){return this._inputDimensions[t][1]}getReshapedInputDimensions(t){if(typeof this.inputSize!="number")throw new Error("getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet");let e=this.getInputWidth(t),r=this.getInputHeight(t);return Ir({width:e,height:r},this.inputSize)}toBatchTensor(t,e=!0){return this._inputSize=t,J.tidy(()=>{let r=ct(this.batchSize,0,1).map(a=>{let s=this.getInput(a);if(s instanceof J.Tensor){let i=z(s)?s:s.expandDims();return i=Ar(i,e),(i.shape[1]!==t||i.shape[2]!==t)&&(i=J.image.resizeBilinear(i,[t,t])),i.as3D(t,t,3)}if(s instanceof w.getEnv().Canvas)return J.browser.fromPixels(Vr(s,t,e));throw new Error(`toBatchTensor - at batchIdx ${a}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${s}`)});return J.stack(r.map(a=>J.cast(a,"float32"))).as4D(this.batchSize,t,t,3)})}};async function E(o){if(o instanceof bt)return o;let t=Array.isArray(o)?o:[o];if(!t.length)throw new Error("toNetInput - empty array passed as input");let e=n=>Array.isArray(o)?` at input index ${n}:`:"",r=t.map(jt);return r.forEach((n,a)=>{if(!qe(n)&&!ht(n)&&!z(n))throw typeof t[a]=="string"?new Error(`toNetInput -${e(a)} string passed, but could not resolve HTMLElement for element id ${t[a]}`):new Error(`toNetInput -${e(a)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`);if(z(n)){let s=n.shape[0];if(s!==1)throw new Error(`toNetInput -${e(a)} tf.Tensor4D with batchSize ${s} passed, but not supported in input array`)}}),await Promise.all(r.map(n=>qe(n)&&Yr(n))),new bt(r,Array.isArray(o))}async function ae(o,t){let{Canvas:e}=w.getEnv(),r=o;if(!(o instanceof e)){let s=await E(o);if(s.batchSize>1)throw new Error("extractFaces - batchSize > 1 not supported");let i=s.getInput(0);r=i instanceof e?i:await zr(i)}let n=O(r);return t.map(s=>s instanceof M?s.forSize(r.width,r.height).box.floor():s).map(s=>s.clipAtImageBorders(r.width,r.height)).map(({x:s,y:i,width:c,height:m})=>{let p=ne({width:c,height:m});return O(p).putImageData(n.getImageData(s,i,c,m),0,0),p})}var Ze=b(g());async function se(o,t){if(!ht(o)&&!z(o))throw new Error("extractFaceTensors - expected image tensor to be 3D or 4D");if(z(o)&&o.shape[0]>1)throw new Error("extractFaceTensors - batchSize > 1 not supported");return Ze.tidy(()=>{let[e,r,n]=o.shape.slice(z(o)?1:0);return t.map(i=>i instanceof M?i.forSize(r,e).box:i).map(i=>i.clipAtImageBorders(r,e)).map(({x:i,y:c,width:m,height:p})=>Ze.slice3d(o.as3D(e,r,n),[c,i,0],[p,m,n]))})}async function Yt(o,t){let{fetch:e}=w.getEnv(),r=await e(o,t);if(!(r.status<400))throw new Error(`failed to fetch: (${r.status}) ${r.statusText}, from url: ${r.url}`);return r}async function Bn(o){let t=await Yt(o),e=await t.blob();if(!e.type.startsWith("image/"))throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${e.type}, for url: ${t.url}`);return Gr(e)}async function Ur(o){return(await Yt(o)).json()}async function Rn(o){return new Float32Array(await(await Yt(o)).arrayBuffer())}var Po=b(g());function Ke(o,t){let e=`${t}-weights_manifest.json`;if(!o)return{modelBaseUri:"",manifestUri:e};if(o==="/")return{modelBaseUri:"/",manifestUri:`/${e}`};let r=o.startsWith("http://")?"http://":o.startsWith("https://")?"https://":"";o=o.replace(r,"");let n=o.split("/").filter(i=>i),a=o.endsWith(".json")?n[n.length-1]:e,s=r+(o.endsWith(".json")?n.slice(0,n.length-1):n).join("/");return s=o.startsWith("/")?`/${s}`:s,{modelBaseUri:s,manifestUri:s==="/"?`/${a}`:`${s}/${a}`}}async function Xr(o,t){let{manifestUri:e,modelBaseUri:r}=Ke(o,t),n=await Ur(e);return Po.io.loadWeights(n,r)}function On(o,t,e=!1){let{width:r,height:n}=e?Ht(t):t;return o.width=r,o.height=n,{width:r,height:n}}var Nt=b(g());var gt=b(g());var S=class{constructor(){this._params=void 0;this._paramMappings=[]}get params(){return this._params}get paramMappings(){return this._paramMappings}get isLoaded(){return!!this.params}getParamFromPath(t){let{obj:e,objProp:r}=this.traversePropertyPath(t);return e[r]}reassignParamFromPath(t,e){let{obj:r,objProp:n}=this.traversePropertyPath(t);r[n].dispose(),r[n]=e}getParamList(){return this._paramMappings.map(({paramPath:t})=>({path:t,tensor:this.getParamFromPath(t)}))}getTrainableParams(){return this.getParamList().filter(t=>t.tensor instanceof gt.Variable)}getFrozenParams(){return this.getParamList().filter(t=>!(t.tensor instanceof gt.Variable))}variable(){this.getFrozenParams().forEach(({path:t,tensor:e})=>{this.reassignParamFromPath(t,e.variable())})}freeze(){this.getTrainableParams().forEach(({path:t,tensor:e})=>{let r=gt.tensor(e.dataSync());e.dispose(),this.reassignParamFromPath(t,r)})}dispose(t=!0){this.getParamList().forEach(e=>{if(t&&e.tensor.isDisposed)throw new Error(`param tensor has already been disposed for path ${e.path}`);e.tensor.dispose()}),this._params=void 0}serializeParams(){return new Float32Array(this.getParamList().map(({tensor:t})=>Array.from(t.dataSync())).reduce((t,e)=>t.concat(e)))}async load(t){if(t instanceof Float32Array){this.extractWeights(t);return}await this.loadFromUri(t)}async loadFromUri(t){if(t&&typeof t!="string")throw new Error(`${this._name}.loadFromUri - expected model uri`);let e=await Xr(t,this.getDefaultModelName());this.loadFromWeightMap(e)}async loadFromDisk(t){if(t&&typeof t!="string")throw new Error(`${this._name}.loadFromDisk - expected model file path`);let{readFile:e}=w.getEnv(),{manifestUri:r,modelBaseUri:n}=Ke(t,this.getDefaultModelName()),a=m=>Promise.all(m.map(p=>e(p).then(d=>d.buffer))),s=gt.io.weightsLoaderFactory(a),i=JSON.parse((await e(r)).toString()),c=await s(i,n);this.loadFromWeightMap(c)}loadFromWeightMap(t){let{paramMappings:e,params:r}=this.extractParamsFromWeigthMap(t);this._paramMappings=e,this._params=r}extractWeights(t){let{paramMappings:e,params:r}=this.extractParams(t);this._paramMappings=e,this._params=r}traversePropertyPath(t){if(!this.params)throw new Error("traversePropertyPath - model has no loaded params");let e=t.split("/").reduce((a,s)=>{if(!a.nextObj.hasOwnProperty(s))throw new Error(`traversePropertyPath - object does not have property ${s}, for path ${t}`);return{obj:a.nextObj,objProp:s,nextObj:a.nextObj[s]}},{nextObj:this.params}),{obj:r,objProp:n}=e;if(!r||!n||!(r[n]instanceof gt.Tensor))throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${t}`);return{obj:r,objProp:n}}};var C=b(g());var ie=b(g());function $(o,t,e){return ie.tidy(()=>{let r=ie.separableConv2d(o,t.depthwise_filter,t.pointwise_filter,e,"same");return r=ie.add(r,t.bias),r})}function Qe(o,t,e=!1){return C.tidy(()=>{let r=C.relu(e?C.add(C.conv2d(o,t.conv0.filters,[2,2],"same"),t.conv0.bias):$(o,t.conv0,[2,2])),n=$(r,t.conv1,[1,1]),a=C.relu(C.add(r,n)),s=$(a,t.conv2,[1,1]);return C.relu(C.add(r,C.add(n,s)))})}function Le(o,t,e=!1,r=!0){return C.tidy(()=>{let n=C.relu(e?C.add(C.conv2d(o,t.conv0.filters,r?[2,2]:[1,1],"same"),t.conv0.bias):$(o,t.conv0,r?[2,2]:[1,1])),a=$(n,t.conv1,[1,1]),s=C.relu(C.add(n,a)),i=$(s,t.conv2,[1,1]),c=C.relu(C.add(n,C.add(a,i))),m=$(c,t.conv3,[1,1]);return C.relu(C.add(n,C.add(a,C.add(i,m))))})}var Ct=b(g());function Gt(o,t,e="same",r=!1){return Ct.tidy(()=>{let n=Ct.add(Ct.conv2d(o,t.filters,[1,1],e),t.bias);return r?Ct.relu(n):n})}function W(o,t){Object.keys(o).forEach(e=>{t.some(r=>r.originalPath===e)||o[e].dispose()})}var tr=b(g());function ce(o,t){return(e,r,n,a)=>{let s=tr.tensor4d(o(e*r*n*n),[n,n,e,r]),i=tr.tensor1d(o(r));return t.push({paramPath:`${a}/filters`},{paramPath:`${a}/bias`}),{filters:s,bias:i}}}var er=b(g());function rr(o,t){return(e,r,n)=>{let a=er.tensor2d(o(e*r),[e,r]),s=er.tensor1d(o(r));return t.push({paramPath:`${n}/weights`},{paramPath:`${n}/bias`}),{weights:a,bias:s}}}var ke=b(g());var or=class{constructor(t,e,r){this.depthwise_filter=t;this.pointwise_filter=e;this.bias=r}};function me(o,t){return(e,r,n)=>{let a=ke.tensor4d(o(3*3*e),[3,3,e,1]),s=ke.tensor4d(o(e*r),[1,1,e,r]),i=ke.tensor1d(o(r));return t.push({paramPath:`${n}/depthwise_filter`},{paramPath:`${n}/pointwise_filter`},{paramPath:`${n}/bias`}),new or(a,s,i)}}function pe(o){return t=>{let e=o(`${t}/depthwise_filter`,4),r=o(`${t}/pointwise_filter`,4),n=o(`${t}/bias`,1);return new or(e,r,n)}}function j(o,t){return(e,r,n)=>{let a=o[e];if(!Bt(a,r))throw new Error(`expected weightMap[${e}] to be a Tensor${r}D, instead have ${a}`);return t.push({originalPath:e,paramPath:n||e}),a}}function B(o){let t=o;function e(n){let a=t.slice(0,n);return t=t.slice(n),a}function r(){return t}return{extractWeights:e,getRemainingWeights:r}}function nr(o,t){let e=ce(o,t),r=me(o,t);function n(s,i,c,m=!1){let p=m?e(s,i,3,`${c}/conv0`):r(s,i,`${c}/conv0`),d=r(i,i,`${c}/conv1`),u=r(i,i,`${c}/conv2`);return{conv0:p,conv1:d,conv2:u}}function a(s,i,c,m=!1){let{conv0:p,conv1:d,conv2:u}=n(s,i,c,m),l=r(i,i,`${c}/conv3`);return{conv0:p,conv1:d,conv2:u,conv3:l}}return{extractDenseBlock3Params:n,extractDenseBlock4Params:a}}function _o(o){let t=[],{extractWeights:e,getRemainingWeights:r}=B(o),{extractDenseBlock4Params:n}=nr(e,t),a=n(3,32,"dense0",!0),s=n(32,64,"dense1"),i=n(64,128,"dense2"),c=n(128,256,"dense3");if(r().length!==0)throw new Error(`weights remaing after extract: ${r().length}`);return{paramMappings:t,params:{dense0:a,dense1:s,dense2:i,dense3:c}}}function ar(o){return t=>{let e=o(`${t}/filters`,4),r=o(`${t}/bias`,1);return{filters:e,bias:r}}}function sr(o,t){let e=j(o,t),r=ar(e),n=pe(e);function a(i,c=!1){let m=c?r(`${i}/conv0`):n(`${i}/conv0`),p=n(`${i}/conv1`),d=n(`${i}/conv2`);return{conv0:m,conv1:p,conv2:d}}function s(i,c=!1){let m=c?r(`${i}/conv0`):n(`${i}/conv0`),p=n(`${i}/conv1`),d=n(`${i}/conv2`),u=n(`${i}/conv3`);return{conv0:m,conv1:p,conv2:d,conv3:u}}return{extractDenseBlock3Params:a,extractDenseBlock4Params:s}}function wo(o){let t=[],{extractDenseBlock4Params:e}=sr(o,t),r={dense0:e("dense0",!0),dense1:e("dense1"),dense2:e("dense2"),dense3:e("dense3")};return W(o,t),{params:r,paramMappings:t}}var Se=class extends S{constructor(){super("FaceFeatureExtractor")}forwardInput(t){let{params:e}=this;if(!e)throw new Error("FaceFeatureExtractor - load model before inference");return Nt.tidy(()=>{let r=Nt.cast(t.toBatchTensor(112,!0),"float32"),a=ot(r,[122.782,117.001,104.298]).div(Nt.scalar(255)),s=Le(a,e.dense0,!0);return s=Le(s,e.dense1),s=Le(s,e.dense2),s=Le(s,e.dense3),s=Nt.avgPool(s,[7,7],[2,2],"valid"),s})}async forward(t){return this.forwardInput(await E(t))}getDefaultModelName(){return"face_feature_extractor_model"}extractParamsFromWeigthMap(t){return wo(t)}extractParams(t){return _o(t)}};var Mo=b(g());var de=b(g());function Ae(o,t){return de.tidy(()=>de.add(de.matMul(o,t.weights),t.bias))}function Do(o,t,e){let r=[],{extractWeights:n,getRemainingWeights:a}=B(o),i=rr(n,r)(t,e,"fc");if(a().length!==0)throw new Error(`weights remaing after extract: ${a().length}`);return{paramMappings:r,params:{fc:i}}}function Eo(o){let t=[],e=j(o,t);function r(a){let s=e(`${a}/weights`,2),i=e(`${a}/bias`,1);return{weights:s,bias:i}}let n={fc:r("fc")};return W(o,t),{params:n,paramMappings:t}}function ir(o){let t={},e={};return Object.keys(o).forEach(r=>{let n=r.startsWith("fc")?e:t;n[r]=o[r]}),{featureExtractorMap:t,classifierMap:e}}var We=class extends S{constructor(t,e){super(t);this._faceFeatureExtractor=e}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(t){let{params:e}=this;if(!e)throw new Error(`${this._name} - load model before inference`);return Mo.tidy(()=>{let r=t instanceof bt?this.faceFeatureExtractor.forwardInput(t):t;return Ae(r.as2D(r.shape[0],-1),e.fc)})}dispose(t=!0){this.faceFeatureExtractor.dispose(t),super.dispose(t)}loadClassifierParams(t){let{params:e,paramMappings:r}=this.extractClassifierParams(t);this._params=e,this._paramMappings=r}extractClassifierParams(t){return Do(t,this.getClassifierChannelsIn(),this.getClassifierChannelsOut())}extractParamsFromWeigthMap(t){let{featureExtractorMap:e,classifierMap:r}=ir(t);return this.faceFeatureExtractor.loadFromWeightMap(e),Eo(r)}extractParams(t){let e=this.getClassifierChannelsIn(),r=this.getClassifierChannelsOut(),n=r*e+r,a=t.slice(0,t.length-n),s=t.slice(t.length-n);return this.faceFeatureExtractor.extractWeights(a),this.extractClassifierParams(s)}};var Jr=["neutral","happy","sad","angry","fearful","disgusted","surprised"],It=class{constructor(t){if(t.length!==7)throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${t.length}`);Jr.forEach((e,r)=>{this[e]=t[r]})}asSortedArray(){return Jr.map(t=>({expression:t,probability:this[t]})).sort((t,e)=>e.probability-t.probability)}};var cr=class extends We{constructor(t=new Se){super("FaceExpressionNet",t)}forwardInput(t){return ue.tidy(()=>ue.softmax(this.runNet(t)))}async forward(t){return this.forwardInput(await E(t))}async predictExpressions(t){let e=await E(t),r=await this.forwardInput(e),n=await Promise.all(ue.unstack(r).map(async s=>{let i=await s.data();return s.dispose(),i}));r.dispose();let a=n.map(s=>new It(s));return e.isBatchInput?a:a[0]}getDefaultModelName(){return"face_expression_model"}getClassifierChannelsIn(){return 256}getClassifierChannelsOut(){return 7}};function qr(o){return o.expressions instanceof It}function mr(o,t){return{...o,...{expressions:t}}}function $n(o,t,e=.1,r){(Array.isArray(t)?t:[t]).forEach(a=>{let s=a instanceof It?a:qr(a)?a.expressions:void 0;if(!s)throw new Error("drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof");let c=s.asSortedArray().filter(d=>d.probability>e),m=pt(a)?a.detection.box.bottomLeft:r||new x(0,0);new Mt(c.map(d=>`${d.expression} (${Rt(d.probability)})`),m).draw(o)})}function zt(o){return pt(o)&&o.landmarks instanceof V&&o.unshiftedLandmarks instanceof V&&o.alignedRect instanceof M}function le(o,t){let{box:e}=o.detection,r=t.shiftBy(e.x,e.y),n=r.align(),{imageDims:a}=o.detection,s=new M(o.detection.score,n.rescale(a.reverse()),a);return{...o,...{landmarks:r,unshiftedLandmarks:t,alignedRect:s}}}var Zr=class{constructor(t={}){let{drawLines:e=!0,drawPoints:r=!0,lineWidth:n,lineColor:a,pointSize:s,pointColor:i}=t;this.drawLines=e,this.drawPoints=r,this.lineWidth=n||1,this.pointSize=s||2,this.lineColor=a||"rgba(0, 255, 255, 1)",this.pointColor=i||"rgba(255, 0, 255, 1)"}},Kr=class{constructor(t,e={}){this.faceLandmarks=t,this.options=new Zr(e)}draw(t){let e=O(t),{drawLines:r,drawPoints:n,lineWidth:a,lineColor:s,pointSize:i,pointColor:c}=this.options;if(r&&this.faceLandmarks instanceof oe&&(e.strokeStyle=s,e.lineWidth=a,ft(e,this.faceLandmarks.getJawOutline()),ft(e,this.faceLandmarks.getLeftEyeBrow()),ft(e,this.faceLandmarks.getRightEyeBrow()),ft(e,this.faceLandmarks.getNose()),ft(e,this.faceLandmarks.getLeftEye(),!0),ft(e,this.faceLandmarks.getRightEye(),!0),ft(e,this.faceLandmarks.getMouth(),!0)),n){e.strokeStyle=c,e.fillStyle=c;let m=p=>{e.beginPath(),e.arc(p.x,p.y,i,0,2*Math.PI),e.fill()};this.faceLandmarks.positions.forEach(m)}}};function jn(o,t){(Array.isArray(t)?t:[t]).forEach(r=>{let n=r instanceof V?r:zt(r)?r.landmarks:void 0;if(!n)throw new Error("drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof");new Kr(n).draw(o)})}var Co="0.11.2";var ut=b(g());var I=b(g());function Hn(o,t){let e=ce(o,t),r=me(o,t);function n(s,i,c){let m=r(s,i,`${c}/separable_conv0`),p=r(i,i,`${c}/separable_conv1`),d=e(s,i,1,`${c}/expansion_conv`);return{separable_conv0:m,separable_conv1:p,expansion_conv:d}}function a(s,i){let c=r(s,s,`${i}/separable_conv0`),m=r(s,s,`${i}/separable_conv1`),p=r(s,s,`${i}/separable_conv2`);return{separable_conv0:c,separable_conv1:m,separable_conv2:p}}return{extractConvParams:e,extractSeparableConvParams:r,extractReductionBlockParams:n,extractMainBlockParams:a}}function No(o,t){let e=[],{extractWeights:r,getRemainingWeights:n}=B(o),{extractConvParams:a,extractSeparableConvParams:s,extractReductionBlockParams:i,extractMainBlockParams:c}=Hn(r,e),m=a(3,32,3,"entry_flow/conv_in"),p=i(32,64,"entry_flow/reduction_block_0"),d=i(64,128,"entry_flow/reduction_block_1"),u={conv_in:m,reduction_block_0:p,reduction_block_1:d},l={};ct(t,0,1).forEach(y=>{l[`main_block_${y}`]=c(128,`middle_flow/main_block_${y}`)});let v=i(128,256,"exit_flow/reduction_block"),_=s(256,512,"exit_flow/separable_conv"),h={reduction_block:v,separable_conv:_};if(n().length!==0)throw new Error(`weights remaing after extract: ${n().length}`);return{paramMappings:e,params:{entry_flow:u,middle_flow:l,exit_flow:h}}}function Yn(o,t){let e=j(o,t),r=ar(e),n=pe(e);function a(i){let c=n(`${i}/separable_conv0`),m=n(`${i}/separable_conv1`),p=r(`${i}/expansion_conv`);return{separable_conv0:c,separable_conv1:m,expansion_conv:p}}function s(i){let c=n(`${i}/separable_conv0`),m=n(`${i}/separable_conv1`),p=n(`${i}/separable_conv2`);return{separable_conv0:c,separable_conv1:m,separable_conv2:p}}return{extractConvParams:r,extractSeparableConvParams:n,extractReductionBlockParams:a,extractMainBlockParams:s}}function Io(o,t){let e=[],{extractConvParams:r,extractSeparableConvParams:n,extractReductionBlockParams:a,extractMainBlockParams:s}=Yn(o,e),i=r("entry_flow/conv_in"),c=a("entry_flow/reduction_block_0"),m=a("entry_flow/reduction_block_1"),p={conv_in:i,reduction_block_0:c,reduction_block_1:m},d={};ct(t,0,1).forEach(_=>{d[`main_block_${_}`]=s(`middle_flow/main_block_${_}`)});let u=a("exit_flow/reduction_block"),l=n("exit_flow/separable_conv"),v={reduction_block:u,separable_conv:l};return W(o,e),{params:{entry_flow:p,middle_flow:d,exit_flow:v},paramMappings:e}}function Lo(o,t,e){return I.add(I.conv2d(o,t.filters,e,"same"),t.bias)}function to(o,t,e=!0){let r=e?I.relu(o):o;return r=$(r,t.separable_conv0,[1,1]),r=$(I.relu(r),t.separable_conv1,[1,1]),r=I.maxPool(r,[3,3],[2,2],"same"),r=I.add(r,Lo(o,t.expansion_conv,[2,2])),r}function Gn(o,t){let e=$(I.relu(o),t.separable_conv0,[1,1]);return e=$(I.relu(e),t.separable_conv1,[1,1]),e=$(I.relu(e),t.separable_conv2,[1,1]),e=I.add(e,o),e}var eo=class extends S{constructor(t){super("TinyXception");this._numMainBlocks=t}forwardInput(t){let{params:e}=this;if(!e)throw new Error("TinyXception - load model before inference");return I.tidy(()=>{let r=I.cast(t.toBatchTensor(112,!0),"float32"),a=ot(r,[122.782,117.001,104.298]).div(I.scalar(256)),s=I.relu(Lo(a,e.entry_flow.conv_in,[2,2]));return s=to(s,e.entry_flow.reduction_block_0,!1),s=to(s,e.entry_flow.reduction_block_1),ct(this._numMainBlocks,0,1).forEach(i=>{s=Gn(s,e.middle_flow[`main_block_${i}`])}),s=to(s,e.exit_flow.reduction_block),s=I.relu($(s,e.exit_flow.separable_conv,[1,1])),s})}async forward(t){return this.forwardInput(await E(t))}getDefaultModelName(){return"tiny_xception_model"}extractParamsFromWeigthMap(t){return Io(t,this._numMainBlocks)}extractParams(t){return No(t,this._numMainBlocks)}};function ko(o){let t=[],{extractWeights:e,getRemainingWeights:r}=B(o),n=rr(e,t),a=n(512,1,"fc/age"),s=n(512,2,"fc/gender");if(r().length!==0)throw new Error(`weights remaing after extract: ${r().length}`);return{paramMappings:t,params:{fc:{age:a,gender:s}}}}function So(o){let t=[],e=j(o,t);function r(a){let s=e(`${a}/weights`,2),i=e(`${a}/bias`,1);return{weights:s,bias:i}}let n={fc:{age:r("fc/age"),gender:r("fc/gender")}};return W(o,t),{params:n,paramMappings:t}}var vt;(function(o){o.FEMALE="female",o.MALE="male"})(vt||(vt={}));var pr=class extends S{constructor(t=new eo(2)){super("AgeGenderNet");this._faceFeatureExtractor=t}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(t){let{params:e}=this;if(!e)throw new Error(`${this._name} - load model before inference`);return ut.tidy(()=>{let r=t instanceof bt?this.faceFeatureExtractor.forwardInput(t):t,n=ut.avgPool(r,[7,7],[2,2],"valid").as2D(r.shape[0],-1),a=Ae(n,e.fc.age).as1D(),s=Ae(n,e.fc.gender);return{age:a,gender:s}})}forwardInput(t){return ut.tidy(()=>{let{age:e,gender:r}=this.runNet(t);return{age:e,gender:ut.softmax(r)}})}async forward(t){return this.forwardInput(await E(t))}async predictAgeAndGender(t){let e=await E(t),r=await this.forwardInput(e),n=ut.unstack(r.age),a=ut.unstack(r.gender),s=n.map((c,m)=>({ageTensor:c,genderTensor:a[m]})),i=await Promise.all(s.map(async({ageTensor:c,genderTensor:m})=>{let p=(await c.data())[0],d=(await m.data())[0],u=d>.5,l=u?vt.MALE:vt.FEMALE,v=u?d:1-d;return c.dispose(),m.dispose(),{age:p,gender:l,genderProbability:v}}));return r.age.dispose(),r.gender.dispose(),e.isBatchInput?i:i[0]}getDefaultModelName(){return"age_gender_model"}dispose(t=!0){this.faceFeatureExtractor.dispose(t),super.dispose(t)}loadClassifierParams(t){let{params:e,paramMappings:r}=this.extractClassifierParams(t);this._params=e,this._paramMappings=r}extractClassifierParams(t){return ko(t)}extractParamsFromWeigthMap(t){let{featureExtractorMap:e,classifierMap:r}=ir(t);return this.faceFeatureExtractor.loadFromWeightMap(e),So(r)}extractParams(t){let e=512*1+1+(512*2+2),r=t.slice(0,t.length-e),n=t.slice(t.length-e);return this.faceFeatureExtractor.extractWeights(r),this.extractClassifierParams(n)}};var H=b(g());var Be=class extends We{postProcess(t,e,r){let n=r.map(({width:s,height:i})=>{let c=e/Math.max(i,s);return{width:s*c,height:i*c}}),a=n.length;return H.tidy(()=>{let s=(d,u)=>H.stack([H.fill([68],d,"float32"),H.fill([68],u,"float32")],1).as2D(1,136).as1D(),i=(d,u)=>{let{width:l,height:v}=n[d];return u(l,v)?Math.abs(l-v)/2:0},c=d=>i(d,(u,l)=>ui(d,(u,l)=>ls(c(u),m(u))))).div(H.stack(Array.from(Array(a),(d,u)=>s(n[u].width,n[u].height))))})}forwardInput(t){return H.tidy(()=>{let e=this.runNet(t);return this.postProcess(e,t.inputSize,t.inputDimensions.map(([r,n])=>({height:r,width:n})))})}async forward(t){return this.forwardInput(await E(t))}async detectLandmarks(t){let e=await E(t),r=H.tidy(()=>H.unstack(this.forwardInput(e))),n=await Promise.all(r.map(async(a,s)=>{let i=Array.from(await a.data()),c=i.filter((p,d)=>ze(d)),m=i.filter((p,d)=>!ze(d));return new oe(Array(68).fill(0).map((p,d)=>new x(c[d],m[d])),{height:e.getInputHeight(s),width:e.getInputWidth(s)})}));return r.forEach(a=>a.dispose()),e.isBatchInput?n:n[0]}getClassifierChannelsOut(){return 136}};var fe=class extends Be{constructor(t=new Se){super("FaceLandmark68Net",t)}getDefaultModelName(){return"face_landmark_68_model"}getClassifierChannelsIn(){return 256}};var Lt=b(g());function Ao(o){let t=[],{extractDenseBlock3Params:e}=sr(o,t),r={dense0:e("dense0",!0),dense1:e("dense1"),dense2:e("dense2")};return W(o,t),{params:r,paramMappings:t}}function Wo(o){let t=[],{extractWeights:e,getRemainingWeights:r}=B(o),{extractDenseBlock3Params:n}=nr(e,t),a=n(3,32,"dense0",!0),s=n(32,64,"dense1"),i=n(64,128,"dense2");if(r().length!==0)throw new Error(`weights remaing after extract: ${r().length}`);return{paramMappings:t,params:{dense0:a,dense1:s,dense2:i}}}var ro=class extends S{constructor(){super("TinyFaceFeatureExtractor")}forwardInput(t){let{params:e}=this;if(!e)throw new Error("TinyFaceFeatureExtractor - load model before inference");return Lt.tidy(()=>{let r=Lt.cast(t.toBatchTensor(112,!0),"float32"),a=ot(r,[122.782,117.001,104.298]).div(Lt.scalar(255)),s=Qe(a,e.dense0,!0);return s=Qe(s,e.dense1),s=Qe(s,e.dense2),s=Lt.avgPool(s,[14,14],[2,2],"valid"),s})}async forward(t){return this.forwardInput(await E(t))}getDefaultModelName(){return"face_feature_extractor_tiny_model"}extractParamsFromWeigthMap(t){return Ao(t)}extractParams(t){return Wo(t)}};var dr=class extends Be{constructor(t=new ro){super("FaceLandmark68TinyNet",t)}getDefaultModelName(){return"face_landmark_68_tiny_model"}getClassifierChannelsIn(){return 128}};var Bo=class extends fe{};var U=b(g());var he=b(g());var ur=b(g());function Ro(o,t){return ur.add(ur.mul(o,t.weights),t.biases)}function oo(o,t,e,r,n="same"){let{filters:a,bias:s}=t.conv,i=he.conv2d(o,a,e,n);return i=he.add(i,s),i=Ro(i,t.scale),r?he.relu(i):i}function Oo(o,t){return oo(o,t,[1,1],!0)}function no(o,t){return oo(o,t,[1,1],!1)}function lr(o,t){return oo(o,t,[2,2],!0,"valid")}var Y=b(g());function zn(o,t){function e(i,c,m){let p=o(i),d=p.length/(c*m*m);if(Nr(d))throw new Error(`depth has to be an integer: ${d}, weights.length: ${p.length}, numFilters: ${c}, filterSize: ${m}`);return Y.tidy(()=>Y.transpose(Y.tensor4d(p,[c,d,m,m]),[2,3,1,0]))}function r(i,c,m,p){let d=e(i,c,m),u=Y.tensor1d(o(c));return t.push({paramPath:`${p}/filters`},{paramPath:`${p}/bias`}),{filters:d,bias:u}}function n(i,c){let m=Y.tensor1d(o(i)),p=Y.tensor1d(o(i));return t.push({paramPath:`${c}/weights`},{paramPath:`${c}/biases`}),{weights:m,biases:p}}function a(i,c,m,p){let d=r(i,c,m,`${p}/conv`),u=n(c,`${p}/scale`);return{conv:d,scale:u}}function s(i,c,m,p,d=!1){let u=a((d?.5:1)*i,c,m,`${p}/conv1`),l=a(i,c,m,`${p}/conv2`);return{conv1:u,conv2:l}}return{extractConvLayerParams:a,extractResidualLayerParams:s}}function $o(o){let{extractWeights:t,getRemainingWeights:e}=B(o),r=[],{extractConvLayerParams:n,extractResidualLayerParams:a}=zn(t,r),s=n(4704,32,7,"conv32_down"),i=a(9216,32,3,"conv32_1"),c=a(9216,32,3,"conv32_2"),m=a(9216,32,3,"conv32_3"),p=a(36864,64,3,"conv64_down",!0),d=a(36864,64,3,"conv64_1"),u=a(36864,64,3,"conv64_2"),l=a(36864,64,3,"conv64_3"),v=a(147456,128,3,"conv128_down",!0),_=a(147456,128,3,"conv128_1"),h=a(147456,128,3,"conv128_2"),y=a(589824,256,3,"conv256_down",!0),T=a(589824,256,3,"conv256_1"),F=a(589824,256,3,"conv256_2"),L=a(589824,256,3,"conv256_down_out"),G=Y.tidy(()=>Y.transpose(Y.tensor2d(t(256*128),[128,256]),[1,0]));if(r.push({paramPath:"fc"}),e().length!==0)throw new Error(`weights remaing after extract: ${e().length}`);return{params:{conv32_down:s,conv32_1:i,conv32_2:c,conv32_3:m,conv64_down:p,conv64_1:d,conv64_2:u,conv64_3:l,conv128_down:v,conv128_1:_,conv128_2:h,conv256_down:y,conv256_1:T,conv256_2:F,conv256_down_out:L,fc:G},paramMappings:r}}function Vn(o,t){let e=j(o,t);function r(s){let i=e(`${s}/scale/weights`,1),c=e(`${s}/scale/biases`,1);return{weights:i,biases:c}}function n(s){let i=e(`${s}/conv/filters`,4),c=e(`${s}/conv/bias`,1),m=r(s);return{conv:{filters:i,bias:c},scale:m}}function a(s){return{conv1:n(`${s}/conv1`),conv2:n(`${s}/conv2`)}}return{extractConvLayerParams:n,extractResidualLayerParams:a}}function jo(o){let t=[],{extractConvLayerParams:e,extractResidualLayerParams:r}=Vn(o,t),n=e("conv32_down"),a=r("conv32_1"),s=r("conv32_2"),i=r("conv32_3"),c=r("conv64_down"),m=r("conv64_1"),p=r("conv64_2"),d=r("conv64_3"),u=r("conv128_down"),l=r("conv128_1"),v=r("conv128_2"),_=r("conv256_down"),h=r("conv256_1"),y=r("conv256_2"),T=r("conv256_down_out"),{fc:F}=o;if(t.push({originalPath:"fc",paramPath:"fc"}),!Cr(F))throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${F}`);let L={conv32_down:n,conv32_1:a,conv32_2:s,conv32_3:i,conv64_down:c,conv64_1:m,conv64_2:p,conv64_3:d,conv128_down:u,conv128_1:l,conv128_2:v,conv256_down:_,conv256_1:h,conv256_2:y,conv256_down_out:T,fc:F};return W(o,t),{params:L,paramMappings:t}}var R=b(g());function nt(o,t){let e=Oo(o,t.conv1);return e=no(e,t.conv2),e=R.add(e,o),e=R.relu(e),e}function Re(o,t){let e=lr(o,t.conv1);e=no(e,t.conv2);let r=R.avgPool(o,2,2,"valid"),n=R.zeros(r.shape),a=r.shape[3]!==e.shape[3];if(r.shape[1]!==e.shape[1]||r.shape[2]!==e.shape[2]){let i=[...e.shape];i[1]=1;let c=R.zeros(i);e=R.concat([e,c],1);let m=[...e.shape];m[2]=1;let p=R.zeros(m);e=R.concat([e,p],2)}return r=a?R.concat([r,n],3):r,e=R.add(r,e),e=R.relu(e),e}var xe=class extends S{constructor(){super("FaceRecognitionNet")}forwardInput(t){let{params:e}=this;if(!e)throw new Error("FaceRecognitionNet - load model before inference");return U.tidy(()=>{let r=U.cast(t.toBatchTensor(150,!0),"float32"),a=ot(r,[122.782,117.001,104.298]).div(U.scalar(256)),s=lr(a,e.conv32_down);s=U.maxPool(s,3,2,"valid"),s=nt(s,e.conv32_1),s=nt(s,e.conv32_2),s=nt(s,e.conv32_3),s=Re(s,e.conv64_down),s=nt(s,e.conv64_1),s=nt(s,e.conv64_2),s=nt(s,e.conv64_3),s=Re(s,e.conv128_down),s=nt(s,e.conv128_1),s=nt(s,e.conv128_2),s=Re(s,e.conv256_down),s=nt(s,e.conv256_1),s=nt(s,e.conv256_2),s=Re(s,e.conv256_down_out);let i=s.mean([1,2]);return U.matMul(i,e.fc)})}async forward(t){return this.forwardInput(await E(t))}async computeFaceDescriptor(t){let e=await E(t),r=U.tidy(()=>U.unstack(this.forwardInput(e))),n=await Promise.all(r.map(a=>a.data()));return r.forEach(a=>a.dispose()),e.isBatchInput?n:n[0]}getDefaultModelName(){return"face_recognition_model"}extractParamsFromWeigthMap(t){return jo(t)}extractParams(t){return $o(t)}};function Un(o){let t=new xe;return t.extractWeights(o),t}function fr(o,t){return{...o,...{descriptor:t}}}function Xn(o){return typeof o.age=="number"}function hr(o,t){return{...o,...{age:t}}}function Jn(o){return(o.gender===vt.MALE||o.gender===vt.FEMALE)&&te(o.genderProbability)}function xr(o,t,e){return{...o,...{gender:t,genderProbability:e}}}var st=b(g());var at=b(g());function qn(o,t){function e(c,m){let p=at.tensor4d(o(3*3*c),[3,3,c,1]),d=at.tensor1d(o(c)),u=at.tensor1d(o(c)),l=at.tensor1d(o(c)),v=at.tensor1d(o(c));return t.push({paramPath:`${m}/filters`},{paramPath:`${m}/batch_norm_scale`},{paramPath:`${m}/batch_norm_offset`},{paramPath:`${m}/batch_norm_mean`},{paramPath:`${m}/batch_norm_variance`}),{filters:p,batch_norm_scale:d,batch_norm_offset:u,batch_norm_mean:l,batch_norm_variance:v}}function r(c,m,p,d,u){let l=at.tensor4d(o(c*m*p*p),[p,p,c,m]),v=at.tensor1d(o(m));return t.push({paramPath:`${d}/filters`},{paramPath:`${d}/${u?"batch_norm_offset":"bias"}`}),{filters:l,bias:v}}function n(c,m,p,d){let{filters:u,bias:l}=r(c,m,p,d,!0);return{filters:u,batch_norm_offset:l}}function a(c,m,p){let d=e(c,`${p}/depthwise_conv`),u=n(c,m,1,`${p}/pointwise_conv`);return{depthwise_conv:d,pointwise_conv:u}}function s(){let c=n(3,32,3,"mobilenetv1/conv_0"),m=a(32,64,"mobilenetv1/conv_1"),p=a(64,128,"mobilenetv1/conv_2"),d=a(128,128,"mobilenetv1/conv_3"),u=a(128,256,"mobilenetv1/conv_4"),l=a(256,256,"mobilenetv1/conv_5"),v=a(256,512,"mobilenetv1/conv_6"),_=a(512,512,"mobilenetv1/conv_7"),h=a(512,512,"mobilenetv1/conv_8"),y=a(512,512,"mobilenetv1/conv_9"),T=a(512,512,"mobilenetv1/conv_10"),F=a(512,512,"mobilenetv1/conv_11"),L=a(512,1024,"mobilenetv1/conv_12"),G=a(1024,1024,"mobilenetv1/conv_13");return{conv_0:c,conv_1:m,conv_2:p,conv_3:d,conv_4:u,conv_5:l,conv_6:v,conv_7:_,conv_8:h,conv_9:y,conv_10:T,conv_11:F,conv_12:L,conv_13:G}}function i(){let c=n(1024,256,1,"prediction_layer/conv_0"),m=n(256,512,3,"prediction_layer/conv_1"),p=n(512,128,1,"prediction_layer/conv_2"),d=n(128,256,3,"prediction_layer/conv_3"),u=n(256,128,1,"prediction_layer/conv_4"),l=n(128,256,3,"prediction_layer/conv_5"),v=n(256,64,1,"prediction_layer/conv_6"),_=n(64,128,3,"prediction_layer/conv_7"),h=r(512,12,1,"prediction_layer/box_predictor_0/box_encoding_predictor"),y=r(512,9,1,"prediction_layer/box_predictor_0/class_predictor"),T=r(1024,24,1,"prediction_layer/box_predictor_1/box_encoding_predictor"),F=r(1024,18,1,"prediction_layer/box_predictor_1/class_predictor"),L=r(512,24,1,"prediction_layer/box_predictor_2/box_encoding_predictor"),G=r(512,18,1,"prediction_layer/box_predictor_2/class_predictor"),et=r(256,24,1,"prediction_layer/box_predictor_3/box_encoding_predictor"),it=r(256,18,1,"prediction_layer/box_predictor_3/class_predictor"),X=r(256,24,1,"prediction_layer/box_predictor_4/box_encoding_predictor"),Pt=r(256,18,1,"prediction_layer/box_predictor_4/class_predictor"),_t=r(128,24,1,"prediction_layer/box_predictor_5/box_encoding_predictor"),wt=r(128,18,1,"prediction_layer/box_predictor_5/class_predictor");return{conv_0:c,conv_1:m,conv_2:p,conv_3:d,conv_4:u,conv_5:l,conv_6:v,conv_7:_,box_predictor_0:{box_encoding_predictor:h,class_predictor:y},box_predictor_1:{box_encoding_predictor:T,class_predictor:F},box_predictor_2:{box_encoding_predictor:L,class_predictor:G},box_predictor_3:{box_encoding_predictor:et,class_predictor:it},box_predictor_4:{box_encoding_predictor:X,class_predictor:Pt},box_predictor_5:{box_encoding_predictor:_t,class_predictor:wt}}}return{extractMobilenetV1Params:s,extractPredictionLayerParams:i}}function Ho(o){let t=[],{extractWeights:e,getRemainingWeights:r}=B(o),{extractMobilenetV1Params:n,extractPredictionLayerParams:a}=qn(e,t),s=n(),i=a(),m={extra_dim:at.tensor3d(e(5118*4),[1,5118,4])};if(t.push({paramPath:"output_layer/extra_dim"}),r().length!==0)throw new Error(`weights remaing after extract: ${r().length}`);return{params:{mobilenetv1:s,prediction_layer:i,output_layer:m},paramMappings:t}}function Zn(o,t){let e=j(o,t);function r(m,p,d){let u=e(`${m}/Conv2d_${p}_pointwise/weights`,4,`${d}/filters`),l=e(`${m}/Conv2d_${p}_pointwise/convolution_bn_offset`,1,`${d}/batch_norm_offset`);return{filters:u,batch_norm_offset:l}}function n(m){let p=`mobilenetv1/conv_${m}`,d=`MobilenetV1/Conv2d_${m}_depthwise`,u=`${p}/depthwise_conv`,l=`${p}/pointwise_conv`,v=e(`${d}/depthwise_weights`,4,`${u}/filters`),_=e(`${d}/BatchNorm/gamma`,1,`${u}/batch_norm_scale`),h=e(`${d}/BatchNorm/beta`,1,`${u}/batch_norm_offset`),y=e(`${d}/BatchNorm/moving_mean`,1,`${u}/batch_norm_mean`),T=e(`${d}/BatchNorm/moving_variance`,1,`${u}/batch_norm_variance`);return{depthwise_conv:{filters:v,batch_norm_scale:_,batch_norm_offset:h,batch_norm_mean:y,batch_norm_variance:T},pointwise_conv:r("MobilenetV1",m,l)}}function a(){return{conv_0:r("MobilenetV1",0,"mobilenetv1/conv_0"),conv_1:n(1),conv_2:n(2),conv_3:n(3),conv_4:n(4),conv_5:n(5),conv_6:n(6),conv_7:n(7),conv_8:n(8),conv_9:n(9),conv_10:n(10),conv_11:n(11),conv_12:n(12),conv_13:n(13)}}function s(m,p){let d=e(`${m}/weights`,4,`${p}/filters`),u=e(`${m}/biases`,1,`${p}/bias`);return{filters:d,bias:u}}function i(m){let p=s(`Prediction/BoxPredictor_${m}/BoxEncodingPredictor`,`prediction_layer/box_predictor_${m}/box_encoding_predictor`),d=s(`Prediction/BoxPredictor_${m}/ClassPredictor`,`prediction_layer/box_predictor_${m}/class_predictor`);return{box_encoding_predictor:p,class_predictor:d}}function c(){return{conv_0:r("Prediction",0,"prediction_layer/conv_0"),conv_1:r("Prediction",1,"prediction_layer/conv_1"),conv_2:r("Prediction",2,"prediction_layer/conv_2"),conv_3:r("Prediction",3,"prediction_layer/conv_3"),conv_4:r("Prediction",4,"prediction_layer/conv_4"),conv_5:r("Prediction",5,"prediction_layer/conv_5"),conv_6:r("Prediction",6,"prediction_layer/conv_6"),conv_7:r("Prediction",7,"prediction_layer/conv_7"),box_predictor_0:i(0),box_predictor_1:i(1),box_predictor_2:i(2),box_predictor_3:i(3),box_predictor_4:i(4),box_predictor_5:i(5)}}return{extractMobilenetV1Params:a,extractPredictionLayerParams:c}}function Yo(o){let t=[],{extractMobilenetV1Params:e,extractPredictionLayerParams:r}=Zn(o,t),n=o["Output/extra_dim"];if(t.push({originalPath:"Output/extra_dim",paramPath:"output_layer/extra_dim"}),!ht(n))throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${n}`);let a={mobilenetv1:e(),prediction_layer:r(),output_layer:{extra_dim:n}};return W(o,t),{params:a,paramMappings:t}}var yt=b(g());var kt=b(g());function q(o,t,e){return kt.tidy(()=>{let r=kt.conv2d(o,t.filters,e,"same");return r=kt.add(r,t.batch_norm_offset),kt.clipByValue(r,0,6)})}var Kn=.0010000000474974513;function Qn(o,t,e){return yt.tidy(()=>{let r=yt.depthwiseConv2d(o,t.filters,e,"same");return r=yt.batchNorm(r,t.batch_norm_mean,t.batch_norm_variance,t.batch_norm_offset,t.batch_norm_scale,Kn),yt.clipByValue(r,0,6)})}function ta(o){return[2,4,6,12].some(t=>t===o)?[2,2]:[1,1]}function Go(o,t){return yt.tidy(()=>{let e,r=q(o,t.conv_0,[2,2]);if([t.conv_1,t.conv_2,t.conv_3,t.conv_4,t.conv_5,t.conv_6,t.conv_7,t.conv_8,t.conv_9,t.conv_10,t.conv_11,t.conv_12,t.conv_13].forEach((a,s)=>{let i=s+1,c=ta(i);r=Qn(r,a.depthwise_conv,c),r=q(r,a.pointwise_conv,[1,1]),i===11&&(e=r)}),e===null)throw new Error("mobileNetV1 - output of conv layer 11 is null");return{out:r,conv11:e}})}function ea(o,t,e){let r=o.arraySync(),n=Math.min(r[t][0],r[t][2]),a=Math.min(r[t][1],r[t][3]),s=Math.max(r[t][0],r[t][2]),i=Math.max(r[t][1],r[t][3]),c=Math.min(r[e][0],r[e][2]),m=Math.min(r[e][1],r[e][3]),p=Math.max(r[e][0],r[e][2]),d=Math.max(r[e][1],r[e][3]),u=(s-n)*(i-a),l=(p-c)*(d-m);if(u<=0||l<=0)return 0;let v=Math.max(n,c),_=Math.max(a,m),h=Math.min(s,p),y=Math.min(i,d),T=Math.max(h-v,0)*Math.max(y-_,0);return T/(u+l-T)}function zo(o,t,e,r,n){let a=o.shape[0],s=Math.min(e,a),i=t.map((p,d)=>({score:p,boxIndex:d})).filter(p=>p.score>n).sort((p,d)=>d.score-p.score),c=p=>p<=r?1:0,m=[];return i.forEach(p=>{if(m.length>=s)return;let d=p.score;for(let u=m.length-1;u>=0;--u){let l=ea(o,p.boxIndex,m[u]);if(l!==0&&(p.score*=c(l),p.score<=n))break}d===p.score&&m.push(p.boxIndex)}),m}var f=b(g());function ra(o){let t=f.unstack(f.transpose(o,[1,0])),e=[f.sub(t[2],t[0]),f.sub(t[3],t[1])],r=[f.add(t[0],f.div(e[0],f.scalar(2))),f.add(t[1],f.div(e[1],f.scalar(2)))];return{sizes:e,centers:r}}function oa(o,t){let{sizes:e,centers:r}=ra(o),n=f.unstack(f.transpose(t,[1,0])),a=f.div(f.mul(f.exp(f.div(n[2],f.scalar(5))),e[0]),f.scalar(2)),s=f.add(f.mul(f.div(n[0],f.scalar(10)),e[0]),r[0]),i=f.div(f.mul(f.exp(f.div(n[3],f.scalar(5))),e[1]),f.scalar(2)),c=f.add(f.mul(f.div(n[1],f.scalar(10)),e[1]),r[1]);return f.transpose(f.stack([f.sub(s,a),f.sub(c,i),f.add(s,a),f.add(c,i)]),[1,0])}function Vo(o,t,e){return f.tidy(()=>{let r=o.shape[0],n=oa(f.reshape(f.tile(e.extra_dim,[r,1,1]),[-1,4]),f.reshape(o,[-1,4]));n=f.reshape(n,[r,n.shape[0]/r,4]);let a=f.sigmoid(f.slice(t,[0,0,1],[-1,-1,-1])),s=f.slice(a,[0,0,0],[-1,-1,1]);s=f.reshape(s,[r,s.shape[1]]);let i=f.unstack(n),c=f.unstack(s);return{boxes:i,scores:c}})}var $e=b(g());var Oe=b(g());function Vt(o,t){return Oe.tidy(()=>{let e=o.shape[0],r=Oe.reshape(Gt(o,t.box_encoding_predictor),[e,-1,1,4]),n=Oe.reshape(Gt(o,t.class_predictor),[e,-1,3]);return{boxPredictionEncoding:r,classPrediction:n}})}function Uo(o,t,e){return $e.tidy(()=>{let r=q(o,e.conv_0,[1,1]),n=q(r,e.conv_1,[2,2]),a=q(n,e.conv_2,[1,1]),s=q(a,e.conv_3,[2,2]),i=q(s,e.conv_4,[1,1]),c=q(i,e.conv_5,[2,2]),m=q(c,e.conv_6,[1,1]),p=q(m,e.conv_7,[2,2]),d=Vt(t,e.box_predictor_0),u=Vt(o,e.box_predictor_1),l=Vt(n,e.box_predictor_2),v=Vt(s,e.box_predictor_3),_=Vt(c,e.box_predictor_4),h=Vt(p,e.box_predictor_5),y=$e.concat([d.boxPredictionEncoding,u.boxPredictionEncoding,l.boxPredictionEncoding,v.boxPredictionEncoding,_.boxPredictionEncoding,h.boxPredictionEncoding],1),T=$e.concat([d.classPrediction,u.classPrediction,l.classPrediction,v.classPrediction,_.classPrediction,h.classPrediction],1);return{boxPredictions:y,classPredictions:T}})}var Z=class{constructor({minConfidence:t,maxResults:e}={}){this._name="SsdMobilenetv1Options";if(this._minConfidence=t||.5,this._maxResults=e||100,typeof this._minConfidence!="number"||this._minConfidence<=0||this._minConfidence>=1)throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`);if(typeof this._maxResults!="number")throw new Error(`${this._name} - expected maxResults to be a number`)}get minConfidence(){return this._minConfidence}get maxResults(){return this._maxResults}};var Ut=class extends S{constructor(){super("SsdMobilenetv1")}forwardInput(t){let{params:e}=this;if(!e)throw new Error("SsdMobilenetv1 - load model before inference");return st.tidy(()=>{let r=st.cast(t.toBatchTensor(512,!1),"float32"),n=st.sub(st.mul(r,st.scalar(.007843137718737125)),st.scalar(1)),a=Go(n,e.mobilenetv1),{boxPredictions:s,classPredictions:i}=Uo(a.out,a.conv11,e.prediction_layer);return Vo(s,i,e.output_layer)})}async forward(t){return this.forwardInput(await E(t))}async locateFaces(t,e={}){let{maxResults:r,minConfidence:n}=new Z(e),a=await E(t),{boxes:s,scores:i}=this.forwardInput(a),c=s[0],m=i[0];for(let F=1;F{let[L,G]=[Math.max(0,y[F][0]),Math.min(1,y[F][2])].map(X=>X*h),[et,it]=[Math.max(0,y[F][1]),Math.min(1,y[F][3])].map(X=>X*_);return new M(p[F],new re(et,L,it-et,G-L),{height:a.getInputHeight(0),width:a.getInputWidth(0)})});return c.dispose(),m.dispose(),T}getDefaultModelName(){return"ssd_mobilenetv1_model"}extractParamsFromWeigthMap(t){return Yo(t)}extractParams(t){return Ho(t)}};function Xo(o){let t=new Ut;return t.extractWeights(o),t}function na(o){return Xo(o)}var Jo=class extends Ut{};var qo=.4,Zo=[new x(.738768,.874946),new x(2.42204,2.65704),new x(4.30971,7.04493),new x(10.246,4.59428),new x(12.6868,11.8741)],Ko=[new x(1.603231,2.094468),new x(6.041143,7.080126),new x(2.882459,3.518061),new x(4.266906,5.178857),new x(9.041765,10.66308)],Qo=[117.001,114.697,97.404],tn="tiny_yolov2_model",en="tiny_yolov2_separable_conv_model";var N=b(g());var br=o=>typeof o=="number";function ao(o){if(!o)throw new Error(`invalid config: ${o}`);if(typeof o.withSeparableConvs!="boolean")throw new Error(`config.withSeparableConvs has to be a boolean, have: ${o.withSeparableConvs}`);if(!br(o.iouThreshold)||o.iouThreshold<0||o.iouThreshold>1)throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${o.iouThreshold}`);if(!Array.isArray(o.classes)||!o.classes.length||!o.classes.every(t=>typeof t=="string"))throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(o.classes)}`);if(!Array.isArray(o.anchors)||!o.anchors.length||!o.anchors.map(t=>t||{}).every(t=>br(t.x)&&br(t.y)))throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(o.anchors)}`);if(o.meanRgb&&(!Array.isArray(o.meanRgb)||o.meanRgb.length!==3||!o.meanRgb.every(br)))throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(o.meanRgb)}`)}var Q=b(g());var K=b(g());function be(o){return K.tidy(()=>{let t=K.mul(o,K.scalar(.10000000149011612));return K.add(K.relu(K.sub(o,t)),t)})}function Ft(o,t){return Q.tidy(()=>{let e=Q.pad(o,[[0,0],[1,1],[1,1],[0,0]]);return e=Q.conv2d(e,t.conv.filters,[1,1],"valid"),e=Q.sub(e,t.bn.sub),e=Q.mul(e,t.bn.truediv),e=Q.add(e,t.conv.bias),be(e)})}var St=b(g());function Tt(o,t){return St.tidy(()=>{let e=St.pad(o,[[0,0],[1,1],[1,1],[0,0]]);return e=St.separableConv2d(e,t.depthwise_filter,t.pointwise_filter,[1,1],"valid"),e=St.add(e,t.bias),be(e)})}var so=b(g());function aa(o,t){let e=ce(o,t);function r(s,i){let c=so.tensor1d(o(s)),m=so.tensor1d(o(s));return t.push({paramPath:`${i}/sub`},{paramPath:`${i}/truediv`}),{sub:c,truediv:m}}function n(s,i,c){let m=e(s,i,3,`${c}/conv`),p=r(i,`${c}/bn`);return{conv:m,bn:p}}let a=me(o,t);return{extractConvParams:e,extractConvWithBatchNormParams:n,extractSeparableConvParams:a}}function rn(o,t,e,r){let{extractWeights:n,getRemainingWeights:a}=B(o),s=[],{extractConvParams:i,extractConvWithBatchNormParams:c,extractSeparableConvParams:m}=aa(n,s),p;if(t.withSeparableConvs){let[d,u,l,v,_,h,y,T,F]=r,L=t.isFirstLayerConv2d?i(d,u,3,"conv0"):m(d,u,"conv0"),G=m(u,l,"conv1"),et=m(l,v,"conv2"),it=m(v,_,"conv3"),X=m(_,h,"conv4"),Pt=m(h,y,"conv5"),_t=T?m(y,T,"conv6"):void 0,wt=F?m(T,F,"conv7"):void 0,Qt=i(F||T||y,5*e,1,"conv8");p={conv0:L,conv1:G,conv2:et,conv3:it,conv4:X,conv5:Pt,conv6:_t,conv7:wt,conv8:Qt}}else{let[d,u,l,v,_,h,y,T,F]=r,L=c(d,u,"conv0"),G=c(u,l,"conv1"),et=c(l,v,"conv2"),it=c(v,_,"conv3"),X=c(_,h,"conv4"),Pt=c(h,y,"conv5"),_t=c(y,T,"conv6"),wt=c(T,F,"conv7"),Qt=i(F,5*e,1,"conv8");p={conv0:L,conv1:G,conv2:et,conv3:it,conv4:X,conv5:Pt,conv6:_t,conv7:wt,conv8:Qt}}if(a().length!==0)throw new Error(`weights remaing after extract: ${a().length}`);return{params:p,paramMappings:s}}function sa(o,t){let e=j(o,t);function r(i){let c=e(`${i}/sub`,1),m=e(`${i}/truediv`,1);return{sub:c,truediv:m}}function n(i){let c=e(`${i}/filters`,4),m=e(`${i}/bias`,1);return{filters:c,bias:m}}function a(i){let c=n(`${i}/conv`),m=r(`${i}/bn`);return{conv:c,bn:m}}let s=pe(e);return{extractConvParams:n,extractConvWithBatchNormParams:a,extractSeparableConvParams:s}}function on(o,t){let e=[],{extractConvParams:r,extractConvWithBatchNormParams:n,extractSeparableConvParams:a}=sa(o,e),s;if(t.withSeparableConvs){let i=t.filterSizes&&t.filterSizes.length||9;s={conv0:t.isFirstLayerConv2d?r("conv0"):a("conv0"),conv1:a("conv1"),conv2:a("conv2"),conv3:a("conv3"),conv4:a("conv4"),conv5:a("conv5"),conv6:i>7?a("conv6"):void 0,conv7:i>8?a("conv7"):void 0,conv8:r("conv8")}}else s={conv0:n("conv0"),conv1:n("conv1"),conv2:n("conv2"),conv3:n("conv3"),conv4:n("conv4"),conv5:n("conv5"),conv6:n("conv6"),conv7:n("conv7"),conv8:r("conv8")};return W(o,e),{params:s,paramMappings:e}}var lt=class{constructor({inputSize:t,scoreThreshold:e}={}){this._name="TinyYolov2Options";if(this._inputSize=t||416,this._scoreThreshold=e||.5,typeof this._inputSize!="number"||this._inputSize%32!=0)throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`);if(typeof this._scoreThreshold!="number"||this._scoreThreshold<=0||this._scoreThreshold>=1)throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`)}get inputSize(){return this._inputSize}get scoreThreshold(){return this._scoreThreshold}};var io=class extends S{constructor(t){super("TinyYolov2");ao(t),this._config=t}get config(){return this._config}get withClassScores(){return this.config.withClassScores||this.config.classes.length>1}get boxEncodingSize(){return 5+(this.withClassScores?this.config.classes.length:0)}runTinyYolov2(t,e){let r=Ft(t,e.conv0);return r=N.maxPool(r,[2,2],[2,2],"same"),r=Ft(r,e.conv1),r=N.maxPool(r,[2,2],[2,2],"same"),r=Ft(r,e.conv2),r=N.maxPool(r,[2,2],[2,2],"same"),r=Ft(r,e.conv3),r=N.maxPool(r,[2,2],[2,2],"same"),r=Ft(r,e.conv4),r=N.maxPool(r,[2,2],[2,2],"same"),r=Ft(r,e.conv5),r=N.maxPool(r,[2,2],[1,1],"same"),r=Ft(r,e.conv6),r=Ft(r,e.conv7),Gt(r,e.conv8,"valid",!1)}runMobilenet(t,e){let r=this.config.isFirstLayerConv2d?be(Gt(t,e.conv0,"valid",!1)):Tt(t,e.conv0);return r=N.maxPool(r,[2,2],[2,2],"same"),r=Tt(r,e.conv1),r=N.maxPool(r,[2,2],[2,2],"same"),r=Tt(r,e.conv2),r=N.maxPool(r,[2,2],[2,2],"same"),r=Tt(r,e.conv3),r=N.maxPool(r,[2,2],[2,2],"same"),r=Tt(r,e.conv4),r=N.maxPool(r,[2,2],[2,2],"same"),r=Tt(r,e.conv5),r=N.maxPool(r,[2,2],[1,1],"same"),r=e.conv6?Tt(r,e.conv6):r,r=e.conv7?Tt(r,e.conv7):r,Gt(r,e.conv8,"valid",!1)}forwardInput(t,e){let{params:r}=this;if(!r)throw new Error("TinyYolov2 - load model before inference");return N.tidy(()=>{let n=N.cast(t.toBatchTensor(e,!1),"float32");return n=this.config.meanRgb?ot(n,this.config.meanRgb):n,n=n.div(N.scalar(256)),this.config.withSeparableConvs?this.runMobilenet(n,r):this.runTinyYolov2(n,r)})}async forward(t,e){return this.forwardInput(await E(t),e)}async detect(t,e={}){let{inputSize:r,scoreThreshold:n}=new lt(e),a=await E(t),s=await this.forwardInput(a,r),i=N.tidy(()=>N.unstack(s)[0].expandDims()),c={width:a.getInputWidth(0),height:a.getInputHeight(0)},m=await this.extractBoxes(i,a.getReshapedInputDimensions(0),n);s.dispose(),i.dispose();let p=m.map(h=>h.box),d=m.map(h=>h.score),u=m.map(h=>h.classScore),l=m.map(h=>this.config.classes[h.label]);return Sr(p.map(h=>h.rescale(r)),d,this.config.iouThreshold,!0).map(h=>new Dt(d[h],u[h],l[h],p[h],c))}getDefaultModelName(){return""}extractParamsFromWeigthMap(t){return on(t,this.config)}extractParams(t){let e=this.config.filterSizes||io.DEFAULT_FILTER_SIZES,r=e?e.length:void 0;if(r!==7&&r!==8&&r!==9)throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${r} filterSizes in config`);return rn(t,this.config,this.boxEncodingSize,e)}async extractBoxes(t,e,r){let{width:n,height:a}=e,s=Math.max(n,a),i=s/n,c=s/a,m=t.shape[1],p=this.config.anchors.length,[d,u,l]=N.tidy(()=>{let y=t.reshape([m,m,p,this.boxEncodingSize]),T=y.slice([0,0,0,0],[m,m,p,4]),F=y.slice([0,0,0,4],[m,m,p,1]),L=this.withClassScores?N.softmax(y.slice([0,0,0,5],[m,m,p,this.config.classes.length]),3):N.scalar(0);return[T,F,L]}),v=[],_=await u.array(),h=await d.array();for(let y=0;yr){let G=(T+De(h[y][T][F][0]))/m*i,et=(y+De(h[y][T][F][1]))/m*c,it=Math.exp(h[y][T][F][2])*this.config.anchors[F].x/m*i,X=Math.exp(h[y][T][F][3])*this.config.anchors[F].y/m*c,Pt=G-it/2,_t=et-X/2,wt={row:y,col:T,anchor:F},{classScore:Qt,label:lo}=this.withClassScores?await this.extractPredictedClass(l,wt):{classScore:1,label:0};v.push({box:new ee(Pt,_t,Pt+it,_t+X),score:L,classScore:L*Qt,label:lo,...wt})}}return d.dispose(),u.dispose(),l.dispose(),v}async extractPredictedClass(t,e){let{row:r,col:n,anchor:a}=e,s=await t.array();return Array(this.config.classes.length).fill(0).map((i,c)=>s[r][n][a][c]).map((i,c)=>({classScore:i,label:c})).reduce((i,c)=>i.classScore>c.classScore?i:c)}},ge=io;ge.DEFAULT_FILTER_SIZES=[3,16,32,64,128,256,512,1024,1024];var ve=class extends ge{constructor(t=!0){let e={withSeparableConvs:t,iouThreshold:qo,classes:["face"],...t?{anchors:Ko,meanRgb:Qo}:{anchors:Zo,withClassScores:!0}};super(e)}get withSeparableConvs(){return this.config.withSeparableConvs}get anchors(){return this.config.anchors}async locateFaces(t,e){return(await this.detect(t,e)).map(n=>new M(n.score,n.relativeBox,{width:n.imageWidth,height:n.imageHeight}))}getDefaultModelName(){return this.withSeparableConvs?en:tn}extractParamsFromWeigthMap(t){return super.extractParamsFromWeigthMap(t)}};function ia(o,t=!0){let e=new ve(t);return e.extractWeights(o),e}var gr=class extends lt{constructor(){super(...arguments);this._name="TinyFaceDetectorOptions"}};var tt=class{async then(t){return t(await this.run())}async run(){throw new Error("ComposableTask - run is not implemented")}};var je=b(g());var co=b(g());async function Xt(o,t,e,r,n=({alignedRect:a})=>a){let a=o.map(c=>zt(c)?n(c):c.detection),s=r||(t instanceof co.Tensor?await se(t,a):await ae(t,a)),i=await e(s);return s.forEach(c=>c instanceof co.Tensor&&c.dispose()),i}async function ye(o,t,e,r,n){return Xt([o],t,async a=>e(a[0]),r,n)}var nn=.4,an=[new x(1.603231,2.094468),new x(6.041143,7.080126),new x(2.882459,3.518061),new x(4.266906,5.178857),new x(9.041765,10.66308)],sn=[117.001,114.697,97.404];var Fe=class extends ge{constructor(){let t={withSeparableConvs:!0,iouThreshold:nn,classes:["face"],anchors:an,meanRgb:sn,isFirstLayerConv2d:!0,filterSizes:[3,16,32,64,128,256,512]};super(t)}get anchors(){return this.config.anchors}async locateFaces(t,e){return(await this.detect(t,e)).map(n=>new M(n.score,n.relativeBox,{width:n.imageWidth,height:n.imageHeight}))}getDefaultModelName(){return"tiny_face_detector_model"}extractParamsFromWeigthMap(t){return super.extractParamsFromWeigthMap(t)}};var P={ssdMobilenetv1:new Ut,tinyFaceDetector:new Fe,tinyYolov2:new ve,faceLandmark68Net:new fe,faceLandmark68TinyNet:new dr,faceRecognitionNet:new xe,faceExpressionNet:new cr,ageGenderNet:new pr},cn=(o,t)=>P.ssdMobilenetv1.locateFaces(o,t),ca=(o,t)=>P.tinyFaceDetector.locateFaces(o,t),ma=(o,t)=>P.tinyYolov2.locateFaces(o,t),mn=o=>P.faceLandmark68Net.detectLandmarks(o),pa=o=>P.faceLandmark68TinyNet.detectLandmarks(o),da=o=>P.faceRecognitionNet.computeFaceDescriptor(o),ua=o=>P.faceExpressionNet.predictExpressions(o),la=o=>P.ageGenderNet.predictAgeAndGender(o),pn=o=>P.ssdMobilenetv1.load(o),fa=o=>P.tinyFaceDetector.load(o),ha=o=>P.tinyYolov2.load(o),xa=o=>P.faceLandmark68Net.load(o),ba=o=>P.faceLandmark68TinyNet.load(o),ga=o=>P.faceRecognitionNet.load(o),va=o=>P.faceExpressionNet.load(o),ya=o=>P.ageGenderNet.load(o),Fa=pn,Ta=cn,Pa=mn;var mo=class extends tt{constructor(t,e,r){super();this.parentTask=t;this.input=e;this.extractedFaces=r}},_e=class extends mo{async run(){let t=await this.parentTask,e=await Xt(t,this.input,async r=>Promise.all(r.map(n=>P.faceExpressionNet.predictExpressions(n))),this.extractedFaces);return t.map((r,n)=>mr(r,e[n]))}withAgeAndGender(){return new Te(this,this.input)}},we=class extends mo{async run(){let t=await this.parentTask;if(!t)return;let e=await ye(t,this.input,r=>P.faceExpressionNet.predictExpressions(r),this.extractedFaces);return mr(t,e)}withAgeAndGender(){return new Pe(this,this.input)}},Zt=class extends _e{withAgeAndGender(){return new Jt(this,this.input)}withFaceDescriptors(){return new At(this,this.input)}},Kt=class extends we{withAgeAndGender(){return new qt(this,this.input)}withFaceDescriptor(){return new Wt(this,this.input)}};var po=class extends tt{constructor(t,e,r){super();this.parentTask=t;this.input=e;this.extractedFaces=r}},Te=class extends po{async run(){let t=await this.parentTask,e=await Xt(t,this.input,async r=>Promise.all(r.map(n=>P.ageGenderNet.predictAgeAndGender(n))),this.extractedFaces);return t.map((r,n)=>{let{age:a,gender:s,genderProbability:i}=e[n];return hr(xr(r,s,i),a)})}withFaceExpressions(){return new _e(this,this.input)}},Pe=class extends po{async run(){let t=await this.parentTask;if(!t)return;let{age:e,gender:r,genderProbability:n}=await ye(t,this.input,a=>P.ageGenderNet.predictAgeAndGender(a),this.extractedFaces);return hr(xr(t,r,n),e)}withFaceExpressions(){return new we(this,this.input)}},Jt=class extends Te{withFaceExpressions(){return new Zt(this,this.input)}withFaceDescriptors(){return new At(this,this.input)}},qt=class extends Pe{withFaceExpressions(){return new Kt(this,this.input)}withFaceDescriptor(){return new Wt(this,this.input)}};var vr=class extends tt{constructor(t,e){super();this.parentTask=t;this.input=e}},At=class extends vr{async run(){let t=await this.parentTask;return(await Xt(t,this.input,r=>Promise.all(r.map(n=>P.faceRecognitionNet.computeFaceDescriptor(n))),null,r=>r.landmarks.align(null,{useDlibAlignment:!0}))).map((r,n)=>fr(t[n],r))}withFaceExpressions(){return new Zt(this,this.input)}withAgeAndGender(){return new Jt(this,this.input)}},Wt=class extends vr{async run(){let t=await this.parentTask;if(!t)return;let e=await ye(t,this.input,r=>P.faceRecognitionNet.computeFaceDescriptor(r),null,r=>r.landmarks.align(null,{useDlibAlignment:!0}));return fr(t,e)}withFaceExpressions(){return new Kt(this,this.input)}withAgeAndGender(){return new qt(this,this.input)}};var yr=class extends tt{constructor(t,e,r){super();this.parentTask=t;this.input=e;this.useTinyLandmarkNet=r}get landmarkNet(){return this.useTinyLandmarkNet?P.faceLandmark68TinyNet:P.faceLandmark68Net}},Fr=class extends yr{async run(){let t=await this.parentTask,e=t.map(a=>a.detection),r=this.input instanceof je.Tensor?await se(this.input,e):await ae(this.input,e),n=await Promise.all(r.map(a=>this.landmarkNet.detectLandmarks(a)));return r.forEach(a=>a instanceof je.Tensor&&a.dispose()),t.map((a,s)=>le(a,n[s]))}withFaceExpressions(){return new Zt(this,this.input)}withAgeAndGender(){return new Jt(this,this.input)}withFaceDescriptors(){return new At(this,this.input)}},Tr=class extends yr{async run(){let t=await this.parentTask;if(!t)return;let{detection:e}=t,r=this.input instanceof je.Tensor?await se(this.input,[e]):await ae(this.input,[e]),n=await this.landmarkNet.detectLandmarks(r[0]);return r.forEach(a=>a instanceof je.Tensor&&a.dispose()),le(t,n)}withFaceExpressions(){return new Kt(this,this.input)}withAgeAndGender(){return new qt(this,this.input)}withFaceDescriptor(){return new Wt(this,this.input)}};var Pr=class extends tt{constructor(t,e=new Z){super();this.input=t;this.options=e}},He=class extends Pr{async run(){let{input:t,options:e}=this,r=e instanceof gr?n=>P.tinyFaceDetector.locateFaces(n,e):e instanceof Z?n=>P.ssdMobilenetv1.locateFaces(n,e):e instanceof lt?n=>P.tinyYolov2.locateFaces(n,e):null;if(!r)throw new Error("detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options");return r(t)}runAndExtendWithFaceDetections(){return new Promise(async t=>{let e=await this.run();t(e.map(r=>$t({},r)))})}withFaceLandmarks(t=!1){return new Fr(this.runAndExtendWithFaceDetections(),this.input,t)}withFaceExpressions(){return new _e(this.runAndExtendWithFaceDetections(),this.input)}withAgeAndGender(){return new Te(this.runAndExtendWithFaceDetections(),this.input)}},_r=class extends Pr{async run(){let t=await new He(this.input,this.options),e=t[0];return t.forEach(r=>{r.score>e.score&&(e=r)}),e}runAndExtendWithFaceDetection(){return new Promise(async t=>{let e=await this.run();t(e?$t({},e):void 0)})}withFaceLandmarks(t=!1){return new Tr(this.runAndExtendWithFaceDetection(),this.input,t)}withFaceExpressions(){return new we(this.runAndExtendWithFaceDetection(),this.input)}withAgeAndGender(){return new Pe(this.runAndExtendWithFaceDetection(),this.input)}};function _a(o,t=new Z){return new _r(o,t)}function wr(o,t=new Z){return new He(o,t)}async function dn(o,t){return wr(o,new Z(t?{minConfidence:t}:{})).withFaceLandmarks().withFaceDescriptors()}async function wa(o,t={}){return wr(o,new lt(t)).withFaceLandmarks().withFaceDescriptors()}var Da=dn;function uo(o,t){if(o.length!==t.length)throw new Error("euclideanDistance: arr1.length !== arr2.length");let e=Array.from(o),r=Array.from(t);return Math.sqrt(e.map((n,a)=>n-r[a]).reduce((n,a)=>n+a**2,0))}var Dr=class{constructor(t,e=.6){this._distanceThreshold=e;let r=Array.isArray(t)?t:[t];if(!r.length)throw new Error("FaceRecognizer.constructor - expected atleast one input");let n=1,a=()=>`person ${n++}`;this._labeledDescriptors=r.map(s=>{if(s instanceof xt)return s;if(s instanceof Float32Array)return new xt(a(),[s]);if(s.descriptor&&s.descriptor instanceof Float32Array)return new xt(a(),[s.descriptor]);throw new Error("FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>")})}get labeledDescriptors(){return this._labeledDescriptors}get distanceThreshold(){return this._distanceThreshold}computeMeanDistance(t,e){return e.map(r=>uo(r,t)).reduce((r,n)=>r+n,0)/(e.length||1)}matchDescriptor(t){return this.labeledDescriptors.map(({descriptors:e,label:r})=>new Ee(r,this.computeMeanDistance(t,e))).reduce((e,r)=>e.distancet.toJSON())}}static fromJSON(t){let e=t.labeledDescriptors.map(r=>xt.fromJSON(r));return new Dr(e,t.distanceThreshold)}};function Ea(o){let t=new Fe;return t.extractWeights(o),t}function un(o,t){let{width:e,height:r}=new A(t.width,t.height);if(e<=0||r<=0)throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({width:e,height:r})}`);if(Array.isArray(o))return o.map(n=>un(n,{width:e,height:r}));if(zt(o)){let n=o.detection.forSize(e,r),a=o.unshiftedLandmarks.forSize(n.box.width,n.box.height);return le($t(o,n),a)}return pt(o)?$t(o,o.detection.forSize(e,r)):o instanceof V||o instanceof M?o.forSize(e,r):o}var Ca=typeof process!="undefined",Na=typeof navigator!="undefined"&&typeof navigator.userAgent!="undefined",Ia={faceapi:Co,node:Ca,browser:Na}; //# sourceMappingURL=face-api.node-gpu.js.map diff --git a/dist/face-api.node-gpu.js.map b/dist/face-api.node-gpu.js.map index bfba17f..6d644f9 100644 --- a/dist/face-api.node-gpu.js.map +++ b/dist/face-api.node-gpu.js.map @@ -2,6 +2,6 @@ "version": 3, "sources": ["../src/tfjs/tf-node-gpu.ts", "../src/env/isNodejs.ts", "../src/index.ts", "../src/draw/index.ts", "../src/draw/drawContour.ts", "../src/utils/index.ts", "../src/classes/Dimensions.ts", "../src/classes/Point.ts", "../src/classes/Box.ts", "../src/classes/BoundingBox.ts", "../src/classes/ObjectDetection.ts", "../src/classes/FaceDetection.ts", "../src/ops/iou.ts", "../src/ops/minBbox.ts", "../src/ops/nonMaxSuppression.ts", "../src/ops/normalize.ts", "../src/ops/padToSquare.ts", "../src/ops/shuffleArray.ts", "../src/ops/index.ts", "../src/classes/Rect.ts", "../src/classes/FaceLandmarks.ts", "../src/classes/FaceLandmarks5.ts", "../src/classes/FaceLandmarks68.ts", "../src/classes/FaceMatch.ts", "../src/classes/LabeledBox.ts", "../src/classes/LabeledFaceDescriptors.ts", "../src/classes/PredictedBox.ts", "../src/factories/WithFaceDetection.ts", "../src/env/createBrowserEnv.ts", "../src/env/createFileSystem.ts", "../src/env/createNodejsEnv.ts", "../src/env/isBrowser.ts", "../src/env/index.ts", "../src/dom/resolveInput.ts", "../src/dom/getContext2dOrThrow.ts", "../src/draw/DrawTextField.ts", "../src/draw/DrawBox.ts", "../src/draw/drawDetections.ts", "../src/faceExpressionNet/FaceExpressionNet.ts", "../src/dom/isMediaLoaded.ts", "../src/dom/awaitMediaLoaded.ts", "../src/dom/bufferToImage.ts", "../src/dom/getMediaDimensions.ts", "../src/dom/createCanvas.ts", "../src/dom/imageTensorToCanvas.ts", "../src/dom/isMediaElement.ts", "../src/dom/NetInput.ts", "../src/dom/imageToSquare.ts", "../src/dom/toNetInput.ts", "../src/dom/extractFaces.ts", "../src/dom/extractFaceTensors.ts", "../src/dom/fetchOrThrow.ts", "../src/dom/fetchImage.ts", "../src/dom/fetchJson.ts", "../src/dom/fetchNetWeights.ts", "../src/dom/loadWeightMap.ts", "../src/common/getModelUris.ts", "../src/dom/matchDimensions.ts", "../src/faceFeatureExtractor/FaceFeatureExtractor.ts", "../src/NeuralNetwork.ts", "../src/faceFeatureExtractor/denseBlock.ts", "../src/common/depthwiseSeparableConv.ts", "../src/common/convLayer.ts", "../src/common/disposeUnusedWeightTensors.ts", "../src/common/extractConvParamsFactory.ts", "../src/common/extractFCParamsFactory.ts", "../src/common/extractSeparableConvParamsFactory.ts", "../src/common/types.ts", "../src/common/extractWeightEntryFactory.ts", "../src/common/extractWeightsFactory.ts", "../src/faceFeatureExtractor/extractorsFactory.ts", "../src/faceFeatureExtractor/extractParams.ts", "../src/common/loadConvParamsFactory.ts", "../src/faceFeatureExtractor/loadParamsFactory.ts", "../src/faceFeatureExtractor/extractParamsFromWeigthMap.ts", "../src/faceProcessor/FaceProcessor.ts", "../src/common/fullyConnectedLayer.ts", "../src/faceProcessor/extractParams.ts", "../src/faceProcessor/extractParamsFromWeigthMap.ts", "../src/faceProcessor/util.ts", "../src/faceExpressionNet/FaceExpressions.ts", "../src/factories/WithFaceExpressions.ts", "../src/draw/drawFaceExpressions.ts", "../src/factories/WithFaceLandmarks.ts", "../src/draw/DrawFaceLandmarks.ts", "../src/ageGenderNet/AgeGenderNet.ts", "../src/xception/TinyXception.ts", "../src/xception/extractParams.ts", "../src/xception/extractParamsFromWeigthMap.ts", "../src/ageGenderNet/extractParams.ts", "../src/ageGenderNet/extractParamsFromWeigthMap.ts", "../src/ageGenderNet/types.ts", "../src/faceLandmarkNet/FaceLandmark68NetBase.ts", "../src/faceLandmarkNet/FaceLandmark68Net.ts", "../src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts", "../src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts", "../src/faceFeatureExtractor/extractParamsTiny.ts", "../src/faceLandmarkNet/FaceLandmark68TinyNet.ts", "../src/faceLandmarkNet/index.ts", "../src/faceRecognitionNet/FaceRecognitionNet.ts", "../src/faceRecognitionNet/convLayer.ts", "../src/faceRecognitionNet/scaleLayer.ts", "../src/faceRecognitionNet/extractParams.ts", "../src/faceRecognitionNet/extractParamsFromWeigthMap.ts", "../src/faceRecognitionNet/residualLayer.ts", "../src/faceRecognitionNet/index.ts", "../src/factories/WithFaceDescriptor.ts", "../src/factories/WithAge.ts", "../src/factories/WithGender.ts", "../src/ssdMobilenetv1/SsdMobilenetv1.ts", "../src/ssdMobilenetv1/extractParams.ts", "../src/ssdMobilenetv1/extractParamsFromWeigthMap.ts", "../src/ssdMobilenetv1/mobileNetV1.ts", "../src/ssdMobilenetv1/pointwiseConvLayer.ts", "../src/ssdMobilenetv1/nonMaxSuppression.ts", "../src/ssdMobilenetv1/outputLayer.ts", "../src/ssdMobilenetv1/predictionLayer.ts", "../src/ssdMobilenetv1/boxPredictionLayer.ts", "../src/ssdMobilenetv1/SsdMobilenetv1Options.ts", "../src/ssdMobilenetv1/index.ts", "../src/tinyYolov2/const.ts", "../src/tinyYolov2/TinyYolov2Base.ts", "../src/tinyYolov2/config.ts", "../src/tinyYolov2/convWithBatchNorm.ts", "../src/tinyYolov2/leaky.ts", "../src/tinyYolov2/depthwiseSeparableConv.ts", "../src/tinyYolov2/extractParams.ts", "../src/tinyYolov2/extractParamsFromWeigthMap.ts", "../src/tinyYolov2/TinyYolov2Options.ts", "../src/tinyYolov2/TinyYolov2.ts", "../src/tinyYolov2/index.ts", "../src/tinyFaceDetector/TinyFaceDetectorOptions.ts", "../src/globalApi/ComposableTask.ts", "../src/globalApi/DetectFaceLandmarksTasks.ts", "../src/globalApi/extractFacesAndComputeResults.ts", "../src/tinyFaceDetector/const.ts", "../src/tinyFaceDetector/TinyFaceDetector.ts", "../src/globalApi/nets.ts", "../src/globalApi/PredictFaceExpressionsTask.ts", "../src/globalApi/PredictAgeAndGenderTask.ts", "../src/globalApi/ComputeFaceDescriptorsTasks.ts", "../src/globalApi/DetectFacesTasks.ts", "../src/globalApi/detectFaces.ts", "../src/globalApi/allFaces.ts", "../src/euclideanDistance.ts", "../src/globalApi/FaceMatcher.ts", "../src/tinyFaceDetector/index.ts", "../src/resizeResults.ts"], "sourcesContent": ["/* eslint-disable import/no-extraneous-dependencies */\n/* eslint-disable node/no-unpublished-import */\n\nexport * from '@tensorflow/tfjs-node-gpu';\n", "export function isNodejs(): boolean {\n return typeof global === 'object'\n && typeof require === 'function'\n && typeof module !== 'undefined'\n // issues with gatsby.js: module.exports is undefined\n // && !!module.exports\n && typeof process !== 'undefined' && !!process.version;\n}\n", "import * as tf from '../dist/tfjs.esm';\nimport * as draw from './draw/index';\nimport * as utils from './utils/index';\nimport * as pkg from '../package.json';\n\nexport { tf, draw, utils };\n\nexport * from './ageGenderNet/index';\nexport * from './classes/index';\nexport * from './dom/index';\nexport * from './env/index';\nexport * from './faceExpressionNet/index';\nexport * from './faceLandmarkNet/index';\nexport * from './faceRecognitionNet/index';\nexport * from './factories/index';\nexport * from './globalApi/index';\nexport * from './ops/index';\nexport * from './ssdMobilenetv1/index';\nexport * from './tinyFaceDetector/index';\nexport * from './tinyYolov2/index';\nexport * from './euclideanDistance';\nexport * from './NeuralNetwork';\nexport * from './resizeResults';\n\nconst node = (typeof process !== 'undefined');\n// eslint-disable-next-line no-undef\nconst browser = (typeof navigator !== 'undefined') && (typeof navigator.userAgent !== 'undefined');\nexport const version = { faceapi: pkg.version as string, node, browser };\n", "export * from './drawContour';\nexport * from './drawDetections';\nexport * from './drawFaceExpressions';\nexport * from './DrawBox';\nexport * from './DrawFaceLandmarks';\nexport * from './DrawTextField';\n", "import { Point } from '../classes/index';\n\nexport function drawContour(\n ctx: CanvasRenderingContext2D,\n points: Point[],\n isClosed: boolean = false,\n) {\n ctx.beginPath();\n\n points.slice(1).forEach(({ x, y }, prevIdx) => {\n const from = points[prevIdx];\n ctx.moveTo(from.x, from.y);\n ctx.lineTo(x, y);\n });\n\n if (isClosed) {\n const from = points[points.length - 1];\n const to = points[0];\n if (!from || !to) {\n return;\n }\n\n ctx.moveTo(from.x, from.y);\n ctx.lineTo(to.x, to.y);\n }\n\n ctx.stroke();\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { Point } from '../classes/index';\nimport { Dimensions, IDimensions } from '../classes/Dimensions';\n\nexport function isTensor(tensor: any, dim: number) {\n return tensor instanceof tf.Tensor && tensor.shape.length === dim;\n}\n\nexport function isTensor1D(tensor: any): tensor is tf.Tensor1D {\n return isTensor(tensor, 1);\n}\n\nexport function isTensor2D(tensor: any): tensor is tf.Tensor2D {\n return isTensor(tensor, 2);\n}\n\nexport function isTensor3D(tensor: any): tensor is tf.Tensor3D {\n return isTensor(tensor, 3);\n}\n\nexport function isTensor4D(tensor: any): tensor is tf.Tensor4D {\n return isTensor(tensor, 4);\n}\n\nexport function isFloat(num: number) {\n return num % 1 !== 0;\n}\n\nexport function isEven(num: number) {\n return num % 2 === 0;\n}\n\nexport function round(num: number, prec: number = 2) {\n const f = 10 ** prec;\n return Math.floor(num * f) / f;\n}\n\nexport function isDimensions(obj: any): boolean {\n return obj && obj.width && obj.height;\n}\n\nexport function computeReshapedDimensions({ width, height }: IDimensions, inputSize: number) {\n const scale = inputSize / Math.max(height, width);\n return new Dimensions(Math.round(width * scale), Math.round(height * scale));\n}\n\nexport function getCenterPoint(pts: Point[]): Point {\n return pts.reduce((sum, pt) => sum.add(pt), new Point(0, 0))\n .div(new Point(pts.length, pts.length));\n}\n\nexport function range(num: number, start: number, step: number): number[] {\n return Array(num).fill(0).map((_, i) => start + (i * step));\n}\n\nexport function isValidNumber(num: any) {\n // eslint-disable-next-line no-mixed-operators\n return !!num && (num !== Infinity) && (num !== -Infinity) && !Number.isNaN(num) || num === 0;\n}\n\nexport function isValidProbablitiy(num: any) {\n return isValidNumber(num) && num >= 0 && num <= 1.0;\n}\n", "import { isValidNumber } from '../utils/index';\n\nexport interface IDimensions {\n width: number\n height: number\n}\n\nexport class Dimensions implements IDimensions {\n private _width: number\n\n private _height: number\n\n constructor(width: number, height: number) {\n if (!isValidNumber(width) || !isValidNumber(height)) {\n throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({ width, height })}`);\n }\n\n this._width = width;\n this._height = height;\n }\n\n public get width(): number { return this._width; }\n\n public get height(): number { return this._height; }\n\n public reverse(): Dimensions {\n return new Dimensions(1 / this.width, 1 / this.height);\n }\n}\n", "export interface IPoint {\n x: number\n y: number\n}\n\nexport class Point implements IPoint {\n private _x: number\n\n private _y: number\n\n constructor(x: number, y: number) {\n this._x = x;\n this._y = y;\n }\n\n get x(): number { return this._x; }\n\n get y(): number { return this._y; }\n\n public add(pt: IPoint): Point {\n return new Point(this.x + pt.x, this.y + pt.y);\n }\n\n public sub(pt: IPoint): Point {\n return new Point(this.x - pt.x, this.y - pt.y);\n }\n\n public mul(pt: IPoint): Point {\n return new Point(this.x * pt.x, this.y * pt.y);\n }\n\n public div(pt: IPoint): Point {\n return new Point(this.x / pt.x, this.y / pt.y);\n }\n\n public abs(): Point {\n return new Point(Math.abs(this.x), Math.abs(this.y));\n }\n\n public magnitude(): number {\n return Math.sqrt((this.x ** 2) + (this.y ** 2));\n }\n\n public floor(): Point {\n return new Point(Math.floor(this.x), Math.floor(this.y));\n }\n}\n", "import { isDimensions, isValidNumber } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { IDimensions } from './Dimensions';\nimport { Point } from './Point';\nimport { IRect } from './Rect';\n\nexport class Box implements IBoundingBox, IRect {\n public static isRect(rect: any): boolean {\n return !!rect && [rect.x, rect.y, rect.width, rect.height].every(isValidNumber);\n }\n\n public static assertIsValidBox(box: any, callee: string, allowNegativeDimensions: boolean = false) {\n if (!Box.isRect(box)) {\n throw new Error(`${callee} - invalid box: ${JSON.stringify(box)}, expected object with properties x, y, width, height`);\n }\n\n if (!allowNegativeDimensions && (box.width < 0 || box.height < 0)) {\n throw new Error(`${callee} - width (${box.width}) and height (${box.height}) must be positive numbers`);\n }\n }\n\n private _x: number\n\n private _y: number\n\n private _width: number\n\n private _height: number\n\n constructor(_box: IBoundingBox | IRect, allowNegativeDimensions: boolean = true) {\n const box = (_box || {}) as any;\n\n const isBbox = [box.left, box.top, box.right, box.bottom].every(isValidNumber);\n const isRect = [box.x, box.y, box.width, box.height].every(isValidNumber);\n\n if (!isRect && !isBbox) {\n throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(box)}`);\n }\n\n const [x, y, width, height] = isRect\n ? [box.x, box.y, box.width, box.height]\n : [box.left, box.top, box.right - box.left, box.bottom - box.top];\n\n Box.assertIsValidBox({\n x, y, width, height,\n }, 'Box.constructor', allowNegativeDimensions);\n\n this._x = x;\n this._y = y;\n this._width = width;\n this._height = height;\n }\n\n public get x(): number { return this._x; }\n\n public get y(): number { return this._y; }\n\n public get width(): number { return this._width; }\n\n public get height(): number { return this._height; }\n\n public get left(): number { return this.x; }\n\n public get top(): number { return this.y; }\n\n public get right(): number { return this.x + this.width; }\n\n public get bottom(): number { return this.y + this.height; }\n\n public get area(): number { return this.width * this.height; }\n\n public get topLeft(): Point { return new Point(this.left, this.top); }\n\n public get topRight(): Point { return new Point(this.right, this.top); }\n\n public get bottomLeft(): Point { return new Point(this.left, this.bottom); }\n\n public get bottomRight(): Point { return new Point(this.right, this.bottom); }\n\n public round(): Box {\n const [x, y, width, height] = [this.x, this.y, this.width, this.height]\n .map((val) => Math.round(val));\n return new Box({\n x, y, width, height,\n });\n }\n\n public floor(): Box {\n const [x, y, width, height] = [this.x, this.y, this.width, this.height]\n .map((val) => Math.floor(val));\n return new Box({\n x, y, width, height,\n });\n }\n\n public toSquare(): Box {\n let {\n x, y, width, height,\n } = this;\n const diff = Math.abs(width - height);\n if (width < height) {\n x -= (diff / 2);\n width += diff;\n }\n if (height < width) {\n y -= (diff / 2);\n height += diff;\n }\n\n return new Box({\n x, y, width, height,\n });\n }\n\n public rescale(s: IDimensions | number): Box {\n const scaleX = isDimensions(s) ? (s as IDimensions).width : s as number;\n const scaleY = isDimensions(s) ? (s as IDimensions).height : s as number;\n return new Box({\n x: this.x * scaleX,\n y: this.y * scaleY,\n width: this.width * scaleX,\n height: this.height * scaleY,\n });\n }\n\n public pad(padX: number, padY: number): Box {\n const [x, y, width, height] = [\n this.x - (padX / 2),\n this.y - (padY / 2),\n this.width + padX,\n this.height + padY,\n ];\n return new Box({\n x, y, width, height,\n });\n }\n\n public clipAtImageBorders(imgWidth: number, imgHeight: number): Box {\n const {\n x, y, right, bottom,\n } = this;\n const clippedX = Math.max(x, 0);\n const clippedY = Math.max(y, 0);\n\n const newWidth = right - clippedX;\n const newHeight = bottom - clippedY;\n const clippedWidth = Math.min(newWidth, imgWidth - clippedX);\n const clippedHeight = Math.min(newHeight, imgHeight - clippedY);\n\n return (new Box({\n x: clippedX, y: clippedY, width: clippedWidth, height: clippedHeight,\n })).floor();\n }\n\n public shift(sx: number, sy: number): Box {\n const { width, height } = this;\n const x = this.x + sx;\n const y = this.y + sy;\n\n return new Box({\n x, y, width, height,\n });\n }\n\n public padAtBorders(imageHeight: number, imageWidth: number) {\n const w = this.width + 1;\n const h = this.height + 1;\n\n const dx = 1;\n const dy = 1;\n let edx = w;\n let edy = h;\n\n let x = this.left;\n let y = this.top;\n let ex = this.right;\n let ey = this.bottom;\n\n if (ex > imageWidth) {\n edx = -ex + imageWidth + w;\n ex = imageWidth;\n }\n if (ey > imageHeight) {\n edy = -ey + imageHeight + h;\n ey = imageHeight;\n }\n if (x < 1) {\n edy = 2 - x;\n x = 1;\n }\n if (y < 1) {\n edy = 2 - y;\n y = 1;\n }\n\n return {\n dy, edy, dx, edx, y, ey, x, ex, w, h,\n };\n }\n\n public calibrate(region: Box) {\n return new Box({\n left: this.left + (region.left * this.width),\n top: this.top + (region.top * this.height),\n right: this.right + (region.right * this.width),\n bottom: this.bottom + (region.bottom * this.height),\n }).toSquare().round();\n }\n}\n", "import { Box } from './Box';\n\nexport interface IBoundingBox {\n left: number\n top: number\n right: number\n bottom: number\n}\n\nexport class BoundingBox extends Box implements IBoundingBox {\n constructor(left: number, top: number, right: number, bottom: number, allowNegativeDimensions: boolean = false) {\n super({\n left, top, right, bottom,\n }, allowNegativeDimensions);\n }\n}\n", "import { Box } from './Box';\nimport { Dimensions, IDimensions } from './Dimensions';\nimport { IRect, Rect } from './Rect';\n\nexport class ObjectDetection {\n private _score: number\n\n private _classScore: number\n\n private _className: string\n\n private _box: Rect\n\n private _imageDims: Dimensions\n\n constructor(\n score: number,\n classScore: number,\n className: string,\n relativeBox: IRect,\n imageDims: IDimensions,\n ) {\n this._imageDims = new Dimensions(imageDims.width, imageDims.height);\n this._score = score;\n this._classScore = classScore;\n this._className = className;\n this._box = new Box(relativeBox).rescale(this._imageDims);\n }\n\n public get score(): number { return this._score; }\n\n public get classScore(): number { return this._classScore; }\n\n public get className(): string { return this._className; }\n\n public get box(): Box { return this._box; }\n\n public get imageDims(): Dimensions { return this._imageDims; }\n\n public get imageWidth(): number { return this.imageDims.width; }\n\n public get imageHeight(): number { return this.imageDims.height; }\n\n public get relativeBox(): Box { return new Box(this._box).rescale(this.imageDims.reverse()); }\n\n public forSize(width: number, height: number): ObjectDetection {\n return new ObjectDetection(\n this.score,\n this.classScore,\n this.className,\n this.relativeBox,\n { width, height },\n );\n }\n}\n", "import { Box } from './Box';\nimport { IDimensions } from './Dimensions';\nimport { ObjectDetection } from './ObjectDetection';\nimport { Rect } from './Rect';\n\nexport interface IFaceDetecion {\n score: number\n box: Box\n}\n\nexport class FaceDetection extends ObjectDetection implements IFaceDetecion {\n constructor(\n score: number,\n relativeBox: Rect,\n imageDims: IDimensions,\n ) {\n super(score, score, '', relativeBox, imageDims);\n }\n\n public forSize(width: number, height: number): FaceDetection {\n const { score, relativeBox, imageDims } = super.forSize(width, height);\n return new FaceDetection(score, relativeBox, imageDims);\n }\n}\n", "import { Box } from '../classes/Box';\n\nexport function iou(box1: Box, box2: Box, isIOU: boolean = true) {\n const width = Math.max(0.0, Math.min(box1.right, box2.right) - Math.max(box1.left, box2.left));\n const height = Math.max(0.0, Math.min(box1.bottom, box2.bottom) - Math.max(box1.top, box2.top));\n const interSection = width * height;\n\n return isIOU\n ? interSection / (box1.area + box2.area - interSection)\n : interSection / Math.min(box1.area, box2.area);\n}\n", "import { BoundingBox, IPoint } from '../classes/index';\n\nexport function minBbox(pts: IPoint[]): BoundingBox {\n const xs = pts.map((pt) => pt.x);\n const ys = pts.map((pt) => pt.y);\n const minX = xs.reduce((min, x) => (x < min ? x : min), Infinity);\n const minY = ys.reduce((min, y) => (y < min ? y : min), Infinity);\n const maxX = xs.reduce((max, x) => (max < x ? x : max), 0);\n const maxY = ys.reduce((max, y) => (max < y ? y : max), 0);\n\n return new BoundingBox(minX, minY, maxX, maxY);\n}\n", "import { Box } from '../classes/Box';\nimport { iou } from './iou';\n\nexport function nonMaxSuppression(\n boxes: Box[],\n scores: number[],\n iouThreshold: number,\n isIOU: boolean = true,\n): number[] {\n let indicesSortedByScore = scores\n .map((score, boxIndex) => ({ score, boxIndex }))\n .sort((c1, c2) => c1.score - c2.score)\n .map((c) => c.boxIndex);\n\n const pick: number[] = [];\n\n while (indicesSortedByScore.length > 0) {\n const curr = indicesSortedByScore.pop() as number;\n pick.push(curr);\n\n const indices = indicesSortedByScore;\n\n const outputs: number[] = [];\n for (let i = 0; i < indices.length; i++) {\n const idx = indices[i];\n\n const currBox = boxes[curr];\n const idxBox = boxes[idx];\n\n outputs.push(iou(currBox, idxBox, isIOU));\n }\n\n indicesSortedByScore = indicesSortedByScore.filter(\n (_, j) => outputs[j] <= iouThreshold,\n );\n }\n\n return pick;\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nexport function normalize(x: tf.Tensor4D, meanRgb: number[]): tf.Tensor4D {\n return tf.tidy(() => {\n const [r, g, b] = meanRgb;\n const avg_r = tf.fill([...x.shape.slice(0, 3), 1], r, 'float32');\n const avg_g = tf.fill([...x.shape.slice(0, 3), 1], g, 'float32');\n const avg_b = tf.fill([...x.shape.slice(0, 3), 1], b, 'float32');\n const avg_rgb = tf.concat([avg_r, avg_g, avg_b], 3);\n\n return tf.sub(x, avg_rgb);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\n/**\n * Pads the smaller dimension of an image tensor with zeros, such that width === height.\n *\n * @param imgTensor The image tensor.\n * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on\n * both sides of the minor dimension oof the image.\n * @returns The padded tensor with width === height.\n */\nexport function padToSquare(\n imgTensor: tf.Tensor4D,\n isCenterImage: boolean = false,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const [height, width] = imgTensor.shape.slice(1);\n if (height === width) {\n return imgTensor;\n }\n\n const dimDiff = Math.abs(height - width);\n const paddingAmount = Math.round(dimDiff * (isCenterImage ? 0.5 : 1));\n const paddingAxis = height > width ? 2 : 1;\n\n const createPaddingTensor = (paddingAmountLocal: number): tf.Tensor => {\n const paddingTensorShape = imgTensor.shape.slice();\n paddingTensorShape[paddingAxis] = paddingAmountLocal;\n return tf.fill(paddingTensorShape, 0, 'float32');\n };\n\n const paddingTensorAppend = createPaddingTensor(paddingAmount);\n const remainingPaddingAmount = dimDiff - (paddingTensorAppend.shape[paddingAxis] as number);\n\n const paddingTensorPrepend = isCenterImage && remainingPaddingAmount\n ? createPaddingTensor(remainingPaddingAmount)\n : null;\n\n const tensorsToStack = [\n paddingTensorPrepend,\n imgTensor,\n paddingTensorAppend,\n ]\n .filter((t) => !!t)\n // .map((t: tf.Tensor) => t.toFloat()) as tf.Tensor4D[]\n .map((t: tf.Tensor) => tf.cast(t, 'float32')) as tf.Tensor4D[];\n return tf.concat(tensorsToStack, paddingAxis);\n });\n}\n", "export function shuffleArray(inputArray: any[]) {\n const array = inputArray.slice();\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const x = array[i];\n array[i] = array[j];\n array[j] = x;\n }\n return array;\n}\n", "export * from './iou';\nexport * from './minBbox';\nexport * from './nonMaxSuppression';\nexport * from './normalize';\nexport * from './padToSquare';\nexport * from './shuffleArray';\n\nexport function sigmoid(x: number) {\n return 1 / (1 + Math.exp(-x));\n}\n\nexport function inverseSigmoid(x: number) {\n return Math.log(x / (1 - x));\n}\n", "import { Box } from './Box';\n\nexport interface IRect {\n x: number\n y: number\n width: number\n height: number\n}\n\nexport class Rect extends Box implements IRect {\n constructor(x: number, y: number, width: number, height: number, allowNegativeDimensions: boolean = false) {\n super({\n x, y, width, height,\n }, allowNegativeDimensions);\n }\n}\n", "import { minBbox } from '../ops/index';\nimport { getCenterPoint } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { Box } from './Box';\nimport { Dimensions, IDimensions } from './Dimensions';\nimport { FaceDetection } from './FaceDetection';\nimport { Point } from './Point';\nimport { IRect, Rect } from './Rect';\n\n// face alignment constants\nconst relX = 0.5;\nconst relY = 0.43;\nconst relScale = 0.45;\n\nexport interface IFaceLandmarks {\n positions: Point[]\n shift: Point\n}\n\nexport class FaceLandmarks implements IFaceLandmarks {\n protected _shift: Point\n\n protected _positions: Point[]\n\n protected _imgDims: Dimensions\n\n constructor(\n relativeFaceLandmarkPositions: Point[],\n imgDims: IDimensions,\n shift: Point = new Point(0, 0),\n ) {\n const { width, height } = imgDims;\n this._imgDims = new Dimensions(width, height);\n this._shift = shift;\n this._positions = relativeFaceLandmarkPositions.map(\n (pt) => pt.mul(new Point(width, height)).add(shift),\n );\n }\n\n public get shift(): Point { return new Point(this._shift.x, this._shift.y); }\n\n public get imageWidth(): number { return this._imgDims.width; }\n\n public get imageHeight(): number { return this._imgDims.height; }\n\n public get positions(): Point[] { return this._positions; }\n\n public get relativePositions(): Point[] {\n return this._positions.map(\n (pt) => pt.sub(this._shift).div(new Point(this.imageWidth, this.imageHeight)),\n );\n }\n\n public forSize(width: number, height: number): T {\n return new (this.constructor as any)(\n this.relativePositions,\n { width, height },\n );\n }\n\n public shiftBy(x: number, y: number): T {\n return new (this.constructor as any)(\n this.relativePositions,\n this._imgDims,\n new Point(x, y),\n );\n }\n\n public shiftByPoint(pt: Point): T {\n return this.shiftBy(pt.x, pt.y);\n }\n\n /**\n * Aligns the face landmarks after face detection from the relative positions of the faces\n * bounding box, or it's current shift. This function should be used to align the face images\n * after face detection has been performed, before they are passed to the face recognition net.\n * This will make the computed face descriptor more accurate.\n *\n * @param detection (optional) The bounding box of the face or the face detection result. If\n * no argument was passed the position of the face landmarks are assumed to be relative to\n * it's current shift.\n * @returns The bounding box of the aligned face.\n */\n public align(\n detection?: FaceDetection | IRect | IBoundingBox | null,\n options: { useDlibAlignment?: boolean, minBoxPadding?: number } = { },\n ): Box {\n if (detection) {\n const box = detection instanceof FaceDetection\n ? detection.box.floor()\n : new Box(detection);\n\n return this.shiftBy(box.x, box.y).align(null, options);\n }\n\n const { useDlibAlignment, minBoxPadding } = { useDlibAlignment: false, minBoxPadding: 0.2, ...options };\n\n if (useDlibAlignment) {\n return this.alignDlib();\n }\n\n return this.alignMinBbox(minBoxPadding);\n }\n\n private alignDlib(): Box {\n const centers = this.getRefPointsForAlignment();\n\n const [leftEyeCenter, rightEyeCenter, mouthCenter] = centers;\n const distToMouth = (pt: Point) => mouthCenter.sub(pt).magnitude();\n const eyeToMouthDist = (distToMouth(leftEyeCenter) + distToMouth(rightEyeCenter)) / 2;\n\n const size = Math.floor(eyeToMouthDist / relScale);\n\n const refPoint = getCenterPoint(centers);\n // TODO: pad in case rectangle is out of image bounds\n const x = Math.floor(Math.max(0, refPoint.x - (relX * size)));\n const y = Math.floor(Math.max(0, refPoint.y - (relY * size)));\n\n return new Rect(x, y, Math.min(size, this.imageWidth + x), Math.min(size, this.imageHeight + y));\n }\n\n private alignMinBbox(padding: number): Box {\n const box = minBbox(this.positions);\n return box.pad(box.width * padding, box.height * padding);\n }\n\n protected getRefPointsForAlignment(): Point[] {\n throw new Error('getRefPointsForAlignment not implemented by base class');\n }\n}\n", "import { getCenterPoint } from '../utils/index';\nimport { FaceLandmarks } from './FaceLandmarks';\nimport { Point } from './Point';\n\nexport class FaceLandmarks5 extends FaceLandmarks {\n protected getRefPointsForAlignment(): Point[] {\n const pts = this.positions;\n return [\n pts[0],\n pts[1],\n getCenterPoint([pts[3], pts[4]]),\n ];\n }\n}\n", "import { getCenterPoint } from '../utils/index';\nimport { FaceLandmarks } from './FaceLandmarks';\nimport { Point } from './Point';\n\nexport class FaceLandmarks68 extends FaceLandmarks {\n public getJawOutline(): Point[] {\n return this.positions.slice(0, 17);\n }\n\n public getLeftEyeBrow(): Point[] {\n return this.positions.slice(17, 22);\n }\n\n public getRightEyeBrow(): Point[] {\n return this.positions.slice(22, 27);\n }\n\n public getNose(): Point[] {\n return this.positions.slice(27, 36);\n }\n\n public getLeftEye(): Point[] {\n return this.positions.slice(36, 42);\n }\n\n public getRightEye(): Point[] {\n return this.positions.slice(42, 48);\n }\n\n public getMouth(): Point[] {\n return this.positions.slice(48, 68);\n }\n\n protected getRefPointsForAlignment(): Point[] {\n return [\n this.getLeftEye(),\n this.getRightEye(),\n this.getMouth(),\n ].map(getCenterPoint);\n }\n}\n", "import { round } from '../utils/index';\n\nexport interface IFaceMatch {\n label: string\n distance: number\n}\n\nexport class FaceMatch implements IFaceMatch {\n private _label: string\n\n private _distance: number\n\n constructor(label: string, distance: number) {\n this._label = label;\n this._distance = distance;\n }\n\n public get label(): string { return this._label; }\n\n public get distance(): number { return this._distance; }\n\n public toString(withDistance: boolean = true): string {\n return `${this.label}${withDistance ? ` (${round(this.distance)})` : ''}`;\n }\n}\n", "import { isValidNumber } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { Box } from './Box';\nimport { IRect } from './Rect';\n\nexport class LabeledBox extends Box {\n public static assertIsValidLabeledBox(box: any, callee: string) {\n Box.assertIsValidBox(box, callee);\n\n if (!isValidNumber(box.label)) {\n throw new Error(`${callee} - expected property label (${box.label}) to be a number`);\n }\n }\n\n private _label: number\n\n constructor(box: IBoundingBox | IRect | any, label: number) {\n super(box);\n this._label = label;\n }\n\n public get label(): number { return this._label; }\n}\n", "export class LabeledFaceDescriptors {\n private _label: string\n\n private _descriptors: Float32Array[]\n\n constructor(label: string, descriptors: Float32Array[]) {\n if (!(typeof label === 'string')) {\n throw new Error('LabeledFaceDescriptors - constructor expected label to be a string');\n }\n\n if (!Array.isArray(descriptors) || descriptors.some((desc) => !(desc instanceof Float32Array))) {\n throw new Error('LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array');\n }\n\n this._label = label;\n this._descriptors = descriptors;\n }\n\n public get label(): string { return this._label; }\n\n public get descriptors(): Float32Array[] { return this._descriptors; }\n\n public toJSON(): any {\n return {\n label: this.label,\n descriptors: this.descriptors.map((d) => Array.from(d)),\n };\n }\n\n public static fromJSON(json: any): LabeledFaceDescriptors {\n const descriptors = json.descriptors.map((d: any) => new Float32Array(d));\n return new LabeledFaceDescriptors(json.label, descriptors);\n }\n}\n", "import { isValidProbablitiy } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { LabeledBox } from './LabeledBox';\nimport { IRect } from './Rect';\n\nexport class PredictedBox extends LabeledBox {\n public static assertIsValidPredictedBox(box: any, callee: string) {\n LabeledBox.assertIsValidLabeledBox(box, callee);\n\n if (\n !isValidProbablitiy(box.score)\n || !isValidProbablitiy(box.classScore)\n ) {\n throw new Error(`${callee} - expected properties score (${box.score}) and (${box.classScore}) to be a number between [0, 1]`);\n }\n }\n\n private _score: number\n\n private _classScore: number\n\n constructor(box: IBoundingBox | IRect | any, label: number, score: number, classScore: number) {\n super(box, label);\n this._score = score;\n this._classScore = classScore;\n }\n\n public get score(): number { return this._score; }\n\n public get classScore(): number { return this._classScore; }\n}\n", "import { FaceDetection } from '../classes/FaceDetection';\n\nexport type WithFaceDetection = TSource & {\n detection: FaceDetection\n}\n\nexport function isWithFaceDetection(obj: any): obj is WithFaceDetection<{}> {\n return obj.detection instanceof FaceDetection;\n}\n\nexport function extendWithFaceDetection<\n TSource\n>(\n sourceObj: TSource,\n detection: FaceDetection,\n): WithFaceDetection {\n const extension = { detection };\n return { ...sourceObj, ...extension };\n}\n", "import { Environment } from './types';\n\nexport function createBrowserEnv(): Environment {\n const fetch = window.fetch;\n if (!fetch) throw new Error('fetch - missing fetch implementation for browser environment');\n\n const readFile = () => {\n throw new Error('readFile - filesystem not available for browser environment');\n };\n\n return {\n Canvas: HTMLCanvasElement,\n CanvasRenderingContext2D,\n Image: HTMLImageElement,\n ImageData,\n Video: HTMLVideoElement,\n createCanvasElement: () => document.createElement('canvas'),\n createImageElement: () => document.createElement('img'),\n fetch,\n readFile,\n };\n}\n", "import { FileSystem } from './types';\n\nexport function createFileSystem(fs?: any): FileSystem {\n let requireFsError = '';\n\n if (!fs) {\n try {\n // eslint-disable-next-line global-require\n fs = require('fs');\n } catch (err) {\n requireFsError = err.toString();\n }\n }\n\n const readFile = fs\n ? (filePath: string) => new Promise((resolve, reject) => {\n fs.readFile(filePath, (err: any, buffer: Buffer) => (err ? reject(err) : resolve(buffer)));\n })\n : () => {\n throw new Error(`readFile - failed to require fs in nodejs environment with error: ${requireFsError}`);\n };\n\n return {\n readFile,\n };\n}\n", "/* eslint-disable max-classes-per-file */\nimport { createFileSystem } from './createFileSystem';\nimport { Environment } from './types';\n\nexport function createNodejsEnv(): Environment {\n // eslint-disable-next-line dot-notation\n const Canvas = global['Canvas'] || global.HTMLCanvasElement;\n const Image = global.Image || global.HTMLImageElement;\n\n const createCanvasElement = () => {\n if (Canvas) return new Canvas();\n throw new Error('createCanvasElement - missing Canvas implementation for nodejs environment');\n };\n\n const createImageElement = () => {\n if (Image) return new Image();\n throw new Error('createImageElement - missing Image implementation for nodejs environment');\n };\n\n const fetch = global.fetch;\n // if (!fetch) throw new Error('fetch - missing fetch implementation for nodejs environment');\n\n const fileSystem = createFileSystem();\n\n return {\n Canvas: Canvas || class {},\n CanvasRenderingContext2D: global.CanvasRenderingContext2D || class {},\n Image: Image || class {},\n ImageData: global.ImageData || class {},\n Video: global.HTMLVideoElement || class {},\n createCanvasElement,\n createImageElement,\n fetch,\n ...fileSystem,\n };\n}\n", "export function isBrowser(): boolean {\n return typeof window === 'object'\n && typeof document !== 'undefined'\n && typeof HTMLImageElement !== 'undefined'\n && typeof HTMLCanvasElement !== 'undefined'\n && typeof HTMLVideoElement !== 'undefined'\n && typeof ImageData !== 'undefined'\n && typeof CanvasRenderingContext2D !== 'undefined';\n}\n", "import { createBrowserEnv } from './createBrowserEnv';\nimport { createFileSystem } from './createFileSystem';\nimport { createNodejsEnv } from './createNodejsEnv';\nimport { isBrowser } from './isBrowser';\nimport { isNodejs } from './isNodejs';\nimport { Environment } from './types';\n\nlet environment: Environment | null;\n\nfunction getEnv(): Environment {\n if (!environment) {\n throw new Error('getEnv - environment is not defined, check isNodejs() and isBrowser()');\n }\n return environment;\n}\n\nfunction setEnv(env: Environment) {\n environment = env;\n}\n\nfunction initialize() {\n // check for isBrowser() first to prevent electron renderer process\n // to be initialized with wrong environment due to isNodejs() returning true\n if (isBrowser()) return setEnv(createBrowserEnv());\n if (isNodejs()) return setEnv(createNodejsEnv());\n return null;\n}\n\nfunction monkeyPatch(env: Partial) {\n if (!environment) {\n initialize();\n }\n\n if (!environment) {\n throw new Error('monkeyPatch - environment is not defined, check isNodejs() and isBrowser()');\n }\n\n const { Canvas = environment.Canvas, Image = environment.Image } = env;\n environment.Canvas = Canvas;\n environment.Image = Image;\n environment.createCanvasElement = env.createCanvasElement || (() => new Canvas());\n environment.createImageElement = env.createImageElement || (() => new Image());\n\n environment.ImageData = env.ImageData || environment.ImageData;\n environment.Video = env.Video || environment.Video;\n environment.fetch = env.fetch || environment.fetch;\n environment.readFile = env.readFile || environment.readFile;\n}\n\nexport const env = {\n getEnv,\n setEnv,\n initialize,\n createBrowserEnv,\n createFileSystem,\n createNodejsEnv,\n monkeyPatch,\n isBrowser,\n isNodejs,\n};\n\ninitialize();\n\nexport * from './types';\n", "import { env } from '../env/index';\n\nexport function resolveInput(arg: string | any) {\n if (!env.isNodejs() && typeof arg === 'string') {\n return document.getElementById(arg);\n }\n return arg;\n}\n", "import { env } from '../env/index';\nimport { resolveInput } from './resolveInput';\n\nexport function getContext2dOrThrow(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D): CanvasRenderingContext2D {\n const { Canvas, CanvasRenderingContext2D } = env.getEnv();\n\n if (canvasArg instanceof CanvasRenderingContext2D) {\n return canvasArg;\n }\n\n const canvas = resolveInput(canvasArg);\n\n if (!(canvas instanceof Canvas)) {\n throw new Error('resolveContext2d - expected canvas to be of instance of Canvas');\n }\n\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n throw new Error('resolveContext2d - canvas 2d context is null');\n }\n\n return ctx;\n}\n", "/* eslint-disable max-classes-per-file */\nimport { IDimensions, IPoint } from '../classes/index';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { resolveInput } from '../dom/resolveInput';\n\n// eslint-disable-next-line no-shadow\nexport enum AnchorPosition {\n // eslint-disable-next-line no-unused-vars\n TOP_LEFT = 'TOP_LEFT',\n // eslint-disable-next-line no-unused-vars\n TOP_RIGHT = 'TOP_RIGHT',\n // eslint-disable-next-line no-unused-vars\n BOTTOM_LEFT = 'BOTTOM_LEFT',\n // eslint-disable-next-line no-unused-vars\n BOTTOM_RIGHT = 'BOTTOM_RIGHT'\n}\n\nexport interface IDrawTextFieldOptions {\n anchorPosition?: AnchorPosition\n backgroundColor?: string\n fontColor?: string\n fontSize?: number\n fontStyle?: string\n padding?: number\n}\n\nexport class DrawTextFieldOptions implements IDrawTextFieldOptions {\n public anchorPosition: AnchorPosition\n\n public backgroundColor: string\n\n public fontColor: string\n\n public fontSize: number\n\n public fontStyle: string\n\n public padding: number\n\n constructor(options: IDrawTextFieldOptions = {}) {\n const {\n anchorPosition, backgroundColor, fontColor, fontSize, fontStyle, padding,\n } = options;\n this.anchorPosition = anchorPosition || AnchorPosition.TOP_LEFT;\n this.backgroundColor = backgroundColor || 'rgba(0, 0, 0, 0.5)';\n this.fontColor = fontColor || 'rgba(255, 255, 255, 1)';\n this.fontSize = fontSize || 14;\n this.fontStyle = fontStyle || 'Georgia';\n this.padding = padding || 4;\n }\n}\n\nexport class DrawTextField {\n public text: string[]\n\n public anchor : IPoint\n\n public options: DrawTextFieldOptions\n\n constructor(\n text: string | string[] | DrawTextField,\n anchor: IPoint,\n options: IDrawTextFieldOptions = {},\n ) {\n // eslint-disable-next-line no-nested-ternary\n this.text = typeof text === 'string'\n ? [text]\n : (text instanceof DrawTextField ? text.text : text);\n this.anchor = anchor;\n this.options = new DrawTextFieldOptions(options);\n }\n\n measureWidth(ctx: CanvasRenderingContext2D): number {\n const { padding } = this.options;\n return this.text.map((l) => ctx.measureText(l).width).reduce((w0, w1) => (w0 < w1 ? w1 : w0), 0) + (2 * padding);\n }\n\n measureHeight(): number {\n const { fontSize, padding } = this.options;\n return this.text.length * fontSize + (2 * padding);\n }\n\n getUpperLeft(ctx: CanvasRenderingContext2D, canvasDims?: IDimensions): IPoint {\n const { anchorPosition } = this.options;\n const isShiftLeft = anchorPosition === AnchorPosition.BOTTOM_RIGHT || anchorPosition === AnchorPosition.TOP_RIGHT;\n const isShiftTop = anchorPosition === AnchorPosition.BOTTOM_LEFT || anchorPosition === AnchorPosition.BOTTOM_RIGHT;\n\n const textFieldWidth = this.measureWidth(ctx);\n const textFieldHeight = this.measureHeight();\n const x = (isShiftLeft ? this.anchor.x - textFieldWidth : this.anchor.x);\n const y = isShiftTop ? this.anchor.y - textFieldHeight : this.anchor.y;\n\n // adjust anchor if text box exceeds canvas borders\n if (canvasDims) {\n const { width, height } = canvasDims;\n const newX = Math.max(Math.min(x, width - textFieldWidth), 0);\n const newY = Math.max(Math.min(y, height - textFieldHeight), 0);\n return { x: newX, y: newY };\n }\n return { x, y };\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const canvas = resolveInput(canvasArg);\n const ctx = getContext2dOrThrow(canvas);\n\n const {\n backgroundColor, fontColor, fontSize, fontStyle, padding,\n } = this.options;\n\n ctx.font = `${fontSize}px ${fontStyle}`;\n const maxTextWidth = this.measureWidth(ctx);\n const textHeight = this.measureHeight();\n\n ctx.fillStyle = backgroundColor;\n const upperLeft = this.getUpperLeft(ctx, canvas);\n ctx.fillRect(upperLeft.x, upperLeft.y, maxTextWidth, textHeight);\n\n ctx.fillStyle = fontColor;\n this.text.forEach((textLine, i) => {\n const x = padding + upperLeft.x;\n const y = padding + upperLeft.y + ((i + 1) * fontSize);\n ctx.fillText(textLine, x, y);\n });\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport { Box, IBoundingBox, IRect } from '../classes/index';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport {\n AnchorPosition, DrawTextField, DrawTextFieldOptions, IDrawTextFieldOptions,\n} from './DrawTextField';\n\nexport interface IDrawBoxOptions {\n boxColor?: string\n lineWidth?: number\n drawLabelOptions?: IDrawTextFieldOptions\n label?: string\n}\n\nexport class DrawBoxOptions {\n public boxColor: string\n\n public lineWidth: number\n\n public drawLabelOptions: DrawTextFieldOptions\n\n public label?: string\n\n constructor(options: IDrawBoxOptions = {}) {\n const {\n boxColor, lineWidth, label, drawLabelOptions,\n } = options;\n this.boxColor = boxColor || 'rgba(0, 0, 255, 1)';\n this.lineWidth = lineWidth || 2;\n this.label = label;\n\n const defaultDrawLabelOptions = {\n anchorPosition: AnchorPosition.BOTTOM_LEFT,\n backgroundColor: this.boxColor,\n };\n this.drawLabelOptions = new DrawTextFieldOptions({ ...defaultDrawLabelOptions, ...drawLabelOptions });\n }\n}\n\nexport class DrawBox {\n public box: Box\n\n public options: DrawBoxOptions\n\n constructor(\n box: IBoundingBox | IRect,\n options: IDrawBoxOptions = {},\n ) {\n this.box = new Box(box);\n this.options = new DrawBoxOptions(options);\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const ctx = getContext2dOrThrow(canvasArg);\n\n const { boxColor, lineWidth } = this.options;\n\n const {\n x, y, width, height,\n } = this.box;\n ctx.strokeStyle = boxColor;\n ctx.lineWidth = lineWidth;\n ctx.strokeRect(x, y, width, height);\n\n const { label } = this.options;\n if (label) {\n new DrawTextField([label], { x: x - (lineWidth / 2), y }, this.options.drawLabelOptions).draw(canvasArg);\n }\n }\n}\n", "import { Box, IBoundingBox, IRect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { isWithFaceDetection, WithFaceDetection } from '../factories/WithFaceDetection';\nimport { round } from '../utils/index';\nimport { DrawBox } from './DrawBox';\n\nexport type TDrawDetectionsInput = IRect | IBoundingBox | FaceDetection | WithFaceDetection<{}>\n\nexport function drawDetections(\n canvasArg: string | HTMLCanvasElement,\n detections: TDrawDetectionsInput | Array,\n) {\n const detectionsArray = Array.isArray(detections) ? detections : [detections];\n\n detectionsArray.forEach((det) => {\n // eslint-disable-next-line no-nested-ternary\n const score = det instanceof FaceDetection\n ? det.score\n : (isWithFaceDetection(det) ? det.detection.score : undefined);\n\n // eslint-disable-next-line no-nested-ternary\n const box = det instanceof FaceDetection\n ? det.box\n : (isWithFaceDetection(det) ? det.detection.box : new Box(det));\n\n const label = score ? `${round(score)}` : undefined;\n new DrawBox(box, { label }).draw(canvasArg);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';\nimport { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { FaceExpressions } from './FaceExpressions';\n\nexport class FaceExpressionNet extends FaceProcessor {\n constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) {\n super('FaceExpressionNet', faceFeatureExtractor);\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n return tf.tidy(() => tf.softmax(this.runNet(input)));\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async predictExpressions(input: TNetInput) {\n const netInput = await toNetInput(input);\n const out = await this.forwardInput(netInput);\n const probabilitesByBatch = await Promise.all(tf.unstack(out).map(async (t) => {\n const data = await t.data();\n t.dispose();\n return data;\n }));\n out.dispose();\n\n const predictionsByBatch = probabilitesByBatch\n .map((probabilites) => new FaceExpressions(probabilites as Float32Array));\n\n return netInput.isBatchInput\n ? predictionsByBatch\n : predictionsByBatch[0];\n }\n\n protected getDefaultModelName(): string {\n return 'face_expression_model';\n }\n\n protected getClassifierChannelsIn(): number {\n return 256;\n }\n\n protected getClassifierChannelsOut(): number {\n return 7;\n }\n}\n", "import { env } from '../env/index';\n\nexport function isMediaLoaded(media: HTMLImageElement | HTMLVideoElement) : boolean {\n const { Image, Video } = env.getEnv();\n\n return (media instanceof Image && media.complete)\n || (media instanceof Video && media.readyState >= 3);\n}\n", "import { env } from '../env/index';\nimport { isMediaLoaded } from './isMediaLoaded';\n\nexport function awaitMediaLoaded(media: HTMLImageElement | HTMLVideoElement | HTMLCanvasElement) {\n // eslint-disable-next-line consistent-return\n return new Promise((resolve, reject) => {\n if (media instanceof env.getEnv().Canvas || isMediaLoaded(media)) {\n return resolve(null);\n }\n\n function onError(e: Event) {\n if (!e.currentTarget) return;\n // eslint-disable-next-line no-use-before-define\n e.currentTarget.removeEventListener('load', onLoad);\n e.currentTarget.removeEventListener('error', onError);\n reject(e);\n }\n\n function onLoad(e: Event) {\n if (!e.currentTarget) return;\n e.currentTarget.removeEventListener('load', onLoad);\n e.currentTarget.removeEventListener('error', onError);\n resolve(e);\n }\n\n media.addEventListener('load', onLoad);\n media.addEventListener('error', onError);\n });\n}\n", "import { env } from '../env/index';\n\nexport function bufferToImage(buf: Blob): Promise {\n return new Promise((resolve, reject) => {\n if (!(buf instanceof Blob)) reject(new Error('bufferToImage - expected buf to be of type: Blob'));\n const reader = new FileReader();\n reader.onload = () => {\n if (typeof reader.result !== 'string') reject(new Error('bufferToImage - expected reader.result to be a string, in onload'));\n const img = env.getEnv().createImageElement();\n img.onload = () => resolve(img);\n img.onerror = reject;\n img.src = reader.result as string;\n };\n reader.onerror = reject;\n reader.readAsDataURL(buf);\n });\n}\n", "import { Dimensions, IDimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\n\nexport function getMediaDimensions(input: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | IDimensions): Dimensions {\n const { Image, Video } = env.getEnv();\n\n if (input instanceof Image) {\n return new Dimensions(input.naturalWidth, input.naturalHeight);\n }\n if (input instanceof Video) {\n return new Dimensions(input.videoWidth, input.videoHeight);\n }\n return new Dimensions(input.width, input.height);\n}\n", "import { IDimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { getMediaDimensions } from './getMediaDimensions';\nimport { isMediaLoaded } from './isMediaLoaded';\n\nexport function createCanvas({ width, height }: IDimensions): HTMLCanvasElement {\n const { createCanvasElement } = env.getEnv();\n const canvas = createCanvasElement();\n canvas.width = width;\n canvas.height = height;\n return canvas;\n}\n\nexport function createCanvasFromMedia(media: HTMLImageElement | HTMLVideoElement | ImageData, dims?: IDimensions): HTMLCanvasElement {\n const { ImageData } = env.getEnv();\n\n if (!(media instanceof ImageData) && !isMediaLoaded(media)) {\n throw new Error('createCanvasFromMedia - media has not finished loading yet');\n }\n\n const { width, height } = dims || getMediaDimensions(media);\n const canvas = createCanvas({ width, height });\n\n if (media instanceof ImageData) {\n getContext2dOrThrow(canvas).putImageData(media, 0, 0);\n } else {\n getContext2dOrThrow(canvas).drawImage(media, 0, 0, width, height);\n }\n return canvas;\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { env } from '../env/index';\nimport { isTensor4D } from '../utils/index';\n\nexport async function imageTensorToCanvas(\n imgTensor: tf.Tensor,\n canvas?: HTMLCanvasElement,\n): Promise {\n const targetCanvas = canvas || env.getEnv().createCanvasElement();\n\n const [height, width, numChannels] = imgTensor.shape.slice(isTensor4D(imgTensor) ? 1 : 0);\n const imgTensor3D = tf.tidy(() => imgTensor.as3D(height, width, numChannels).toInt());\n await tf.browser.toPixels(imgTensor3D, targetCanvas);\n\n imgTensor3D.dispose();\n\n return targetCanvas;\n}\n", "import { env } from '../env/index';\n\nexport function isMediaElement(input: any) {\n const { Image, Canvas, Video } = env.getEnv();\n\n return input instanceof Image\n || input instanceof Canvas\n || input instanceof Video;\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { Dimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\nimport { padToSquare } from '../ops/padToSquare';\nimport {\n computeReshapedDimensions, isTensor3D, isTensor4D, range,\n} from '../utils/index';\nimport { createCanvasFromMedia } from './createCanvas';\nimport { imageToSquare } from './imageToSquare';\nimport { TResolvedNetInput } from './types';\n\nexport class NetInput {\n private _imageTensors: Array = []\n\n private _canvases: HTMLCanvasElement[] = []\n\n private _batchSize: number\n\n private _treatAsBatchInput: boolean = false\n\n private _inputDimensions: number[][] = []\n\n private _inputSize: number\n\n constructor(\n inputs: Array,\n treatAsBatchInput: boolean = false,\n ) {\n if (!Array.isArray(inputs)) {\n throw new Error(`NetInput.constructor - expected inputs to be an Array of TResolvedNetInput or to be instanceof tf.Tensor4D, instead have ${inputs}`);\n }\n\n this._treatAsBatchInput = treatAsBatchInput;\n this._batchSize = inputs.length;\n\n inputs.forEach((input, idx) => {\n if (isTensor3D(input)) {\n this._imageTensors[idx] = input;\n this._inputDimensions[idx] = input.shape;\n return;\n }\n\n if (isTensor4D(input)) {\n const batchSize = (input as any).shape[0];\n if (batchSize !== 1) {\n throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);\n }\n\n this._imageTensors[idx] = input;\n this._inputDimensions[idx] = (input as any).shape.slice(1);\n return;\n }\n\n const canvas = (input as any) instanceof env.getEnv().Canvas ? input : createCanvasFromMedia(input);\n this._canvases[idx] = canvas;\n this._inputDimensions[idx] = [canvas.height, canvas.width, 3];\n });\n }\n\n public get imageTensors(): Array {\n return this._imageTensors;\n }\n\n public get canvases(): HTMLCanvasElement[] {\n return this._canvases;\n }\n\n public get isBatchInput(): boolean {\n return this.batchSize > 1 || this._treatAsBatchInput;\n }\n\n public get batchSize(): number {\n return this._batchSize;\n }\n\n public get inputDimensions(): number[][] {\n return this._inputDimensions;\n }\n\n public get inputSize(): number | undefined {\n return this._inputSize;\n }\n\n public get reshapedInputDimensions(): Dimensions[] {\n return range(this.batchSize, 0, 1).map(\n (_, batchIdx) => this.getReshapedInputDimensions(batchIdx),\n );\n }\n\n public getInput(batchIdx: number): tf.Tensor3D | tf.Tensor4D | HTMLCanvasElement {\n return this.canvases[batchIdx] || this.imageTensors[batchIdx];\n }\n\n public getInputDimensions(batchIdx: number): number[] {\n return this._inputDimensions[batchIdx];\n }\n\n public getInputHeight(batchIdx: number): number {\n return this._inputDimensions[batchIdx][0];\n }\n\n public getInputWidth(batchIdx: number): number {\n return this._inputDimensions[batchIdx][1];\n }\n\n public getReshapedInputDimensions(batchIdx: number): Dimensions {\n if (typeof this.inputSize !== 'number') {\n throw new Error('getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet');\n }\n\n const width = this.getInputWidth(batchIdx);\n const height = this.getInputHeight(batchIdx);\n return computeReshapedDimensions({ width, height }, this.inputSize);\n }\n\n /**\n * Create a batch tensor from all input canvases and tensors\n * with size [batchSize, inputSize, inputSize, 3].\n *\n * @param inputSize Height and width of the tensor.\n * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on\n * both sides of the minor dimension oof the image.\n * @returns The batch tensor.\n */\n public toBatchTensor(inputSize: number, isCenterInputs: boolean = true): tf.Tensor4D {\n this._inputSize = inputSize;\n\n return tf.tidy(() => {\n const inputTensors = range(this.batchSize, 0, 1).map((batchIdx) => {\n const input = this.getInput(batchIdx);\n\n if (input instanceof tf.Tensor) {\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n let imgTensor = isTensor4D(input) ? input : input.expandDims();\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n imgTensor = padToSquare(imgTensor, isCenterInputs);\n\n if (imgTensor.shape[1] !== inputSize || imgTensor.shape[2] !== inputSize) {\n imgTensor = tf.image.resizeBilinear(imgTensor, [inputSize, inputSize]);\n }\n\n return imgTensor.as3D(inputSize, inputSize, 3);\n }\n\n if (input instanceof env.getEnv().Canvas) {\n return tf.browser.fromPixels(imageToSquare(input, inputSize, isCenterInputs));\n }\n\n throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input}`);\n });\n\n // const batchTensor = tf.stack(inputTensors.map(t => t.toFloat())).as4D(this.batchSize, inputSize, inputSize, 3)\n const batchTensor = tf.stack(inputTensors.map((t) => tf.cast(t, 'float32'))).as4D(this.batchSize, inputSize, inputSize, 3);\n // const batchTensor = tf.stack(inputTensors.map(t => tf.Tensor.as4D(tf.cast(t, 'float32'))), this.batchSize, inputSize, inputSize, 3);\n\n return batchTensor;\n });\n }\n}\n", "import { env } from '../env/index';\nimport { createCanvas, createCanvasFromMedia } from './createCanvas';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { getMediaDimensions } from './getMediaDimensions';\n\nexport function imageToSquare(input: HTMLImageElement | HTMLCanvasElement, inputSize: number, centerImage: boolean = false) {\n const { Image, Canvas } = env.getEnv();\n\n if (!(input instanceof Image || input instanceof Canvas)) {\n throw new Error('imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement');\n }\n\n const dims = getMediaDimensions(input);\n const scale = inputSize / Math.max(dims.height, dims.width);\n const width = scale * dims.width;\n const height = scale * dims.height;\n\n const targetCanvas = createCanvas({ width: inputSize, height: inputSize });\n const inputCanvas = input instanceof Canvas ? input : createCanvasFromMedia(input);\n\n const offset = Math.abs(width - height) / 2;\n const dx = centerImage && width < height ? offset : 0;\n const dy = centerImage && height < width ? offset : 0;\n getContext2dOrThrow(targetCanvas).drawImage(inputCanvas, dx, dy, width, height);\n\n return targetCanvas;\n}\n", "import { isTensor3D, isTensor4D } from '../utils/index';\nimport { awaitMediaLoaded } from './awaitMediaLoaded';\nimport { isMediaElement } from './isMediaElement';\nimport { NetInput } from './NetInput';\nimport { resolveInput } from './resolveInput';\nimport { TNetInput } from './types';\n\n/**\n * Validates the input to make sure, they are valid net inputs and awaits all media elements\n * to be finished loading.\n *\n * @param input The input, which can be a media element or an array of different media elements.\n * @returns A NetInput instance, which can be passed into one of the neural networks.\n */\nexport async function toNetInput(inputs: TNetInput): Promise {\n if (inputs instanceof NetInput) {\n return inputs;\n }\n\n const inputArgArray = Array.isArray(inputs)\n ? inputs\n : [inputs];\n\n if (!inputArgArray.length) {\n throw new Error('toNetInput - empty array passed as input');\n }\n\n const getIdxHint = (idx: number) => (Array.isArray(inputs) ? ` at input index ${idx}:` : '');\n\n const inputArray = inputArgArray.map(resolveInput);\n\n inputArray.forEach((input, i) => {\n if (!isMediaElement(input) && !isTensor3D(input) && !isTensor4D(input)) {\n if (typeof inputArgArray[i] === 'string') {\n throw new Error(`toNetInput -${getIdxHint(i)} string passed, but could not resolve HTMLElement for element id ${inputArgArray[i]}`);\n }\n\n throw new Error(`toNetInput -${getIdxHint(i)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`);\n }\n\n if (isTensor4D(input)) {\n // if tf.Tensor4D is passed in the input array, the batch size has to be 1\n const batchSize = input.shape[0];\n if (batchSize !== 1) {\n throw new Error(`toNetInput -${getIdxHint(i)} tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);\n }\n }\n });\n\n // wait for all media elements being loaded\n await Promise.all(\n inputArray.map((input) => isMediaElement(input) && awaitMediaLoaded(input)),\n );\n\n return new NetInput(inputArray, Array.isArray(inputs));\n}\n", "import { FaceDetection } from '../classes/FaceDetection';\nimport { Rect } from '../classes/Rect';\nimport { env } from '../env/index';\nimport { createCanvas } from './createCanvas';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { imageTensorToCanvas } from './imageTensorToCanvas';\nimport { toNetInput } from './toNetInput';\nimport { TNetInput } from './types';\n\n/**\n * Extracts the image regions containing the detected faces.\n *\n * @param input The image that face detection has been performed on.\n * @param detections The face detection results or face bounding boxes for that image.\n * @returns The Canvases of the corresponding image region for each detected face.\n */\nexport async function extractFaces(\n input: TNetInput,\n detections: Array,\n): Promise {\n const { Canvas } = env.getEnv();\n\n let canvas = input as HTMLCanvasElement;\n\n if (!(input instanceof Canvas)) {\n const netInput = await toNetInput(input);\n\n if (netInput.batchSize > 1) {\n throw new Error('extractFaces - batchSize > 1 not supported');\n }\n\n const tensorOrCanvas = netInput.getInput(0);\n canvas = tensorOrCanvas instanceof Canvas\n ? tensorOrCanvas\n : await imageTensorToCanvas(tensorOrCanvas);\n }\n\n const ctx = getContext2dOrThrow(canvas);\n const boxes = detections.map(\n (det) => (det instanceof FaceDetection\n ? det.forSize(canvas.width, canvas.height).box.floor()\n : det),\n )\n .map((box) => box.clipAtImageBorders(canvas.width, canvas.height));\n\n return boxes.map(({\n x, y, width, height,\n }) => {\n const faceImg = createCanvas({ width, height });\n getContext2dOrThrow(faceImg)\n .putImageData(ctx.getImageData(x, y, width, height), 0, 0);\n return faceImg;\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { isTensor3D, isTensor4D } from '../utils/index';\n\n/**\n * Extracts the tensors of the image regions containing the detected faces.\n * Useful if you want to compute the face descriptors for the face images.\n * Using this method is faster then extracting a canvas for each face and\n * converting them to tensors individually.\n *\n * @param imageTensor The image tensor that face detection has been performed on.\n * @param detections The face detection results or face bounding boxes for that image.\n * @returns Tensors of the corresponding image region for each detected face.\n */\nexport async function extractFaceTensors(\n imageTensor: tf.Tensor3D | tf.Tensor4D,\n detections: Array,\n): Promise {\n if (!isTensor3D(imageTensor) && !isTensor4D(imageTensor)) {\n throw new Error('extractFaceTensors - expected image tensor to be 3D or 4D');\n }\n\n if (isTensor4D(imageTensor) && imageTensor.shape[0] > 1) {\n throw new Error('extractFaceTensors - batchSize > 1 not supported');\n }\n\n return tf.tidy(() => {\n const [imgHeight, imgWidth, numChannels] = imageTensor.shape.slice(isTensor4D(imageTensor) ? 1 : 0);\n\n const boxes = detections.map(\n (det) => (det instanceof FaceDetection\n ? det.forSize(imgWidth, imgHeight).box\n : det),\n )\n .map((box) => box.clipAtImageBorders(imgWidth, imgHeight));\n\n const faceTensors = boxes.map(({\n x, y, width, height,\n }) => tf.slice3d(imageTensor.as3D(imgHeight, imgWidth, numChannels), [y, x, 0], [height, width, numChannels]));\n\n return faceTensors;\n });\n}\n", "import { env } from '../env/index';\n\nexport async function fetchOrThrow(\n url: string,\n // eslint-disable-next-line no-undef\n init?: RequestInit,\n): Promise {\n const { fetch } = env.getEnv();\n const res = await fetch(url, init);\n if (!(res.status < 400)) {\n throw new Error(`failed to fetch: (${res.status}) ${res.statusText}, from url: ${res.url}`);\n }\n return res;\n}\n", "import { bufferToImage } from './bufferToImage';\nimport { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchImage(uri: string): Promise {\n const res = await fetchOrThrow(uri);\n const blob = await (res).blob();\n\n if (!blob.type.startsWith('image/')) {\n throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${blob.type}, for url: ${res.url}`);\n }\n return bufferToImage(blob);\n}\n", "import { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchJson(uri: string): Promise {\n return (await fetchOrThrow(uri)).json();\n}\n", "import { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchNetWeights(uri: string): Promise {\n return new Float32Array(await (await fetchOrThrow(uri)).arrayBuffer());\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { getModelUris } from '../common/getModelUris';\nimport { fetchJson } from './fetchJson';\n\nexport async function loadWeightMap(\n uri: string | undefined,\n defaultModelName: string,\n): Promise {\n const { manifestUri, modelBaseUri } = getModelUris(uri, defaultModelName);\n const manifest = await fetchJson(manifestUri);\n // if (manifest['weightsManifest']) manifest = manifest['weightsManifest'];\n return tf.io.loadWeights(manifest, modelBaseUri);\n}\n", "export function getModelUris(uri: string | undefined, defaultModelName: string) {\n const defaultManifestFilename = `${defaultModelName}-weights_manifest.json`;\n\n if (!uri) {\n return {\n modelBaseUri: '',\n manifestUri: defaultManifestFilename,\n };\n }\n\n if (uri === '/') {\n return {\n modelBaseUri: '/',\n manifestUri: `/${defaultManifestFilename}`,\n };\n }\n // eslint-disable-next-line no-nested-ternary\n const protocol = uri.startsWith('http://') ? 'http://' : uri.startsWith('https://') ? 'https://' : '';\n uri = uri.replace(protocol, '');\n\n const parts = uri.split('/').filter((s) => s);\n\n const manifestFile = uri.endsWith('.json')\n ? parts[parts.length - 1]\n : defaultManifestFilename;\n\n let modelBaseUri = protocol + (uri.endsWith('.json') ? parts.slice(0, parts.length - 1) : parts).join('/');\n modelBaseUri = uri.startsWith('/') ? `/${modelBaseUri}` : modelBaseUri;\n\n return {\n modelBaseUri,\n manifestUri: modelBaseUri === '/' ? `/${manifestFile}` : `${modelBaseUri}/${manifestFile}`,\n };\n}\n", "import { IDimensions } from '../classes/index';\nimport { getMediaDimensions } from './getMediaDimensions';\n\nexport function matchDimensions(input: IDimensions, reference: IDimensions, useMediaDimensions: boolean = false) {\n const { width, height } = useMediaDimensions\n ? getMediaDimensions(reference)\n : reference;\n input.width = width;\n input.height = height;\n return { width, height };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock4 } from './denseBlock';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { FaceFeatureExtractorParams, IFaceFeatureExtractor } from './types';\n\nexport class FaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n constructor() {\n super('FaceFeatureExtractor');\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('FaceFeatureExtractor - load model before inference');\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D;\n\n let out = denseBlock4(normalized, params.dense0, true);\n out = denseBlock4(out, params.dense1);\n out = denseBlock4(out, params.dense2);\n out = denseBlock4(out, params.dense3);\n out = tf.avgPool(out, [7, 7], [2, 2], 'valid');\n\n return out;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights);\n }\n}\n", "import * as tf from '../dist/tfjs.esm';\n\nimport { ParamMapping } from './common/index';\nimport { getModelUris } from './common/getModelUris';\nimport { loadWeightMap } from './dom/index';\nimport { env } from './env/index';\n\nexport abstract class NeuralNetwork {\n protected _params: TNetParams | undefined = undefined\n\n protected _paramMappings: ParamMapping[] = []\n\n public _name: any;\n\n public get params(): TNetParams | undefined { return this._params; }\n\n public get paramMappings(): ParamMapping[] { return this._paramMappings; }\n\n public get isLoaded(): boolean { return !!this.params; }\n\n public getParamFromPath(paramPath: string): tf.Tensor {\n const { obj, objProp } = this.traversePropertyPath(paramPath);\n return obj[objProp];\n }\n\n public reassignParamFromPath(paramPath: string, tensor: tf.Tensor) {\n const { obj, objProp } = this.traversePropertyPath(paramPath);\n obj[objProp].dispose();\n obj[objProp] = tensor;\n }\n\n public getParamList() {\n return this._paramMappings.map(({ paramPath }) => ({\n path: paramPath,\n tensor: this.getParamFromPath(paramPath),\n }));\n }\n\n public getTrainableParams() {\n return this.getParamList().filter((param) => param.tensor instanceof tf.Variable);\n }\n\n public getFrozenParams() {\n return this.getParamList().filter((param) => !(param.tensor instanceof tf.Variable));\n }\n\n public variable() {\n this.getFrozenParams().forEach(({ path, tensor }) => {\n this.reassignParamFromPath(path, tensor.variable());\n });\n }\n\n public freeze() {\n this.getTrainableParams().forEach(({ path, tensor: variable }) => {\n const tensor = tf.tensor(variable.dataSync());\n variable.dispose();\n this.reassignParamFromPath(path, tensor);\n });\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.getParamList().forEach((param) => {\n if (throwOnRedispose && param.tensor.isDisposed) {\n throw new Error(`param tensor has already been disposed for path ${param.path}`);\n }\n param.tensor.dispose();\n });\n this._params = undefined;\n }\n\n public serializeParams(): Float32Array {\n return new Float32Array(\n this.getParamList()\n .map(({ tensor }) => Array.from(tensor.dataSync()) as number[])\n .reduce((flat, arr) => flat.concat(arr)),\n );\n }\n\n public async load(weightsOrUrl: Float32Array | string | undefined): Promise {\n if (weightsOrUrl instanceof Float32Array) {\n this.extractWeights(weightsOrUrl);\n return;\n }\n\n await this.loadFromUri(weightsOrUrl);\n }\n\n public async loadFromUri(uri: string | undefined) {\n if (uri && typeof uri !== 'string') {\n throw new Error(`${this._name}.loadFromUri - expected model uri`);\n }\n\n const weightMap = await loadWeightMap(uri, this.getDefaultModelName());\n this.loadFromWeightMap(weightMap);\n }\n\n public async loadFromDisk(filePath: string | undefined) {\n if (filePath && typeof filePath !== 'string') {\n throw new Error(`${this._name}.loadFromDisk - expected model file path`);\n }\n\n const { readFile } = env.getEnv();\n\n const { manifestUri, modelBaseUri } = getModelUris(filePath, this.getDefaultModelName());\n\n const fetchWeightsFromDisk = (filePaths: string[]) => Promise.all(\n filePaths.map((fp) => readFile(fp).then((buf) => buf.buffer)),\n );\n const loadWeights = tf.io.weightsLoaderFactory(fetchWeightsFromDisk);\n const manifest = JSON.parse((await readFile(manifestUri)).toString());\n const weightMap = await loadWeights(manifest, modelBaseUri);\n\n this.loadFromWeightMap(weightMap);\n }\n\n public loadFromWeightMap(weightMap: tf.NamedTensorMap) {\n const {\n paramMappings,\n params,\n } = this.extractParamsFromWeigthMap(weightMap);\n\n this._paramMappings = paramMappings;\n this._params = params;\n }\n\n public extractWeights(weights: Float32Array) {\n const {\n paramMappings,\n params,\n } = this.extractParams(weights);\n\n this._paramMappings = paramMappings;\n this._params = params;\n }\n\n private traversePropertyPath(paramPath: string) {\n if (!this.params) {\n throw new Error('traversePropertyPath - model has no loaded params');\n }\n\n const result = paramPath.split('/').reduce((res: { nextObj: any, obj?: any, objProp?: string }, objProp) => {\n // eslint-disable-next-line no-prototype-builtins\n if (!res.nextObj.hasOwnProperty(objProp)) {\n throw new Error(`traversePropertyPath - object does not have property ${objProp}, for path ${paramPath}`);\n }\n\n return { obj: res.nextObj, objProp, nextObj: res.nextObj[objProp] };\n }, { nextObj: this.params });\n\n const { obj, objProp } = result;\n if (!obj || !objProp || !(obj[objProp] instanceof tf.Tensor)) {\n throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${paramPath}`);\n }\n\n return { obj, objProp };\n }\n\n protected abstract getDefaultModelName(): string\n\n // eslint-disable-next-line no-unused-vars\n protected abstract extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TNetParams, paramMappings: ParamMapping[] }\n\n // eslint-disable-next-line no-unused-vars\n protected abstract extractParams(weights: Float32Array): { params: TNetParams, paramMappings: ParamMapping[] }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ConvParams, SeparableConvParams } from '../common/index';\nimport { depthwiseSeparableConv } from '../common/depthwiseSeparableConv';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function denseBlock3(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock3Params,\n isFirstLayer: boolean = false,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, [2, 2], 'same'),\n denseBlockParams.conv0.bias,\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, [2, 2]),\n ) as tf.Tensor4D;\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1]);\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D;\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1]);\n\n return tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D;\n });\n}\n\nexport function denseBlock4(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock4Params,\n isFirstLayer: boolean = false,\n isScaleDown: boolean = true,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, isScaleDown ? [2, 2] : [1, 1], 'same'),\n denseBlockParams.conv0.bias,\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, isScaleDown ? [2, 2] : [1, 1]),\n ) as tf.Tensor4D;\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1]);\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D;\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1]);\n\n const in4 = tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D;\n const out4 = depthwiseSeparableConv(in4, denseBlockParams.conv3, [1, 1]);\n\n return tf.relu(tf.add(out1, tf.add(out2, tf.add(out3, out4)))) as tf.Tensor4D;\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { SeparableConvParams } from './types';\n\nexport function depthwiseSeparableConv(\n x: tf.Tensor4D,\n params: SeparableConvParams,\n stride: [number, number],\n): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.separableConv2d(x, params.depthwise_filter, params.pointwise_filter, stride, 'same');\n out = tf.add(out, params.bias);\n return out;\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ConvParams } from './types';\n\nexport function convLayer(\n x: tf.Tensor4D,\n params: ConvParams,\n padding: 'valid' | 'same' = 'same',\n withRelu: boolean = false,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out = tf.add(\n tf.conv2d(x, params.filters, [1, 1], padding),\n params.bias,\n ) as tf.Tensor4D;\n\n return withRelu ? tf.relu(out) : out;\n });\n}\n", "import { ParamMapping } from './types';\n\nexport function disposeUnusedWeightTensors(weightMap: any, paramMappings: ParamMapping[]) {\n Object.keys(weightMap).forEach((path) => {\n if (!paramMappings.some((pm) => pm.originalPath === path)) {\n weightMap[path].dispose();\n }\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ConvParams, ExtractWeightsFunction, ParamMapping } from './types';\n\nexport function extractConvParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[],\n) {\n return (\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n ): ConvParams => {\n const filters = tf.tensor4d(\n extractWeights(channelsIn * channelsOut * filterSize * filterSize),\n [filterSize, filterSize, channelsIn, channelsOut],\n );\n const bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return { filters, bias };\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ExtractWeightsFunction, FCParams, ParamMapping } from './types';\n\nexport function extractFCParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[],\n) {\n return (\n channelsIn: number,\n channelsOut: number,\n mappedPrefix: string,\n ): FCParams => {\n const fc_weights = tf.tensor2d(extractWeights(channelsIn * channelsOut), [channelsIn, channelsOut]);\n const fc_bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/weights` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return {\n weights: fc_weights,\n bias: fc_bias,\n };\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ExtractWeightsFunction, ParamMapping, SeparableConvParams } from './types';\n\nexport function extractSeparableConvParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[],\n) {\n return (channelsIn: number, channelsOut: number, mappedPrefix: string): SeparableConvParams => {\n const depthwise_filter = tf.tensor4d(extractWeights(3 * 3 * channelsIn), [3, 3, channelsIn, 1]);\n const pointwise_filter = tf.tensor4d(extractWeights(channelsIn * channelsOut), [1, 1, channelsIn, channelsOut]);\n const bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/depthwise_filter` },\n { paramPath: `${mappedPrefix}/pointwise_filter` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias,\n );\n };\n}\n\nexport function loadSeparableConvParamsFactory(\n // eslint-disable-next-line no-unused-vars\n extractWeightEntry: (originalPath: string, paramRank: number) => T,\n) {\n return (prefix: string): SeparableConvParams => {\n const depthwise_filter = extractWeightEntry(`${prefix}/depthwise_filter`, 4);\n const pointwise_filter = extractWeightEntry(`${prefix}/pointwise_filter`, 4);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias,\n );\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\n// eslint-disable-next-line no-unused-vars\nexport type ExtractWeightsFunction = (numWeights: number) => Float32Array\n\nexport type ParamMapping = {\n originalPath?: string\n paramPath: string\n}\n\nexport type ConvParams = {\n filters: tf.Tensor4D\n bias: tf.Tensor1D\n}\n\nexport type FCParams = {\n weights: tf.Tensor2D\n bias: tf.Tensor1D\n}\n\nexport class SeparableConvParams {\n // eslint-disable-next-line no-useless-constructor\n constructor(\n // eslint-disable-next-line no-unused-vars\n public depthwise_filter: tf.Tensor4D,\n // eslint-disable-next-line no-unused-vars\n public pointwise_filter: tf.Tensor4D,\n // eslint-disable-next-line no-unused-vars\n public bias: tf.Tensor1D,\n // eslint-disable-next-line no-empty-function\n ) {}\n}\n", "import { isTensor } from '../utils/index';\nimport { ParamMapping } from './types';\n\nexport function extractWeightEntryFactory(weightMap: any, paramMappings: ParamMapping[]) {\n return (originalPath: string, paramRank: number, mappedPath?: string) => {\n const tensor = weightMap[originalPath];\n\n if (!isTensor(tensor, paramRank)) {\n throw new Error(`expected weightMap[${originalPath}] to be a Tensor${paramRank}D, instead have ${tensor}`);\n }\n\n paramMappings.push(\n { originalPath, paramPath: mappedPath || originalPath },\n );\n\n return tensor;\n };\n}\n", "export function extractWeightsFactory(weights: Float32Array) {\n let remainingWeights = weights;\n\n function extractWeights(numWeights: number): Float32Array {\n const ret = remainingWeights.slice(0, numWeights);\n remainingWeights = remainingWeights.slice(numWeights);\n return ret;\n }\n\n function getRemainingWeights(): Float32Array {\n return remainingWeights;\n }\n\n return {\n extractWeights,\n getRemainingWeights,\n };\n}\n", "import {\n extractConvParamsFactory,\n extractSeparableConvParamsFactory,\n ExtractWeightsFunction,\n ParamMapping,\n} from '../common/index';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings);\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings);\n\n function extractDenseBlock3Params(channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer: boolean = false): DenseBlock3Params {\n const conv0 = isFirstLayer\n ? extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv0`)\n : extractSeparableConvParams(channelsIn, channelsOut, `${mappedPrefix}/conv0`);\n const conv1 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv1`);\n const conv2 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv2`);\n\n return { conv0, conv1, conv2 };\n }\n\n function extractDenseBlock4Params(channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer: boolean = false): DenseBlock4Params {\n const { conv0, conv1, conv2 } = extractDenseBlock3Params(channelsIn, channelsOut, mappedPrefix, isFirstLayer);\n const conv3 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv3`);\n\n return {\n conv0, conv1, conv2, conv3,\n };\n }\n\n return {\n extractDenseBlock3Params,\n extractDenseBlock4Params,\n };\n}\n", "import { extractWeightsFactory, ParamMapping } from '../common/index';\nimport { extractorsFactory } from './extractorsFactory';\nimport { FaceFeatureExtractorParams } from './types';\n\nexport function extractParams(weights: Float32Array): { params: FaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractDenseBlock4Params,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const dense0 = extractDenseBlock4Params(3, 32, 'dense0', true);\n const dense1 = extractDenseBlock4Params(32, 64, 'dense1');\n const dense2 = extractDenseBlock4Params(64, 128, 'dense2');\n const dense3 = extractDenseBlock4Params(128, 256, 'dense3');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: {\n dense0, dense1, dense2, dense3,\n },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ConvParams } from './types';\n\n// eslint-disable-next-line no-unused-vars\nexport function loadConvParamsFactory(extractWeightEntry: (originalPath: string, paramRank: number) => T) {\n return (prefix: string): ConvParams => {\n const filters = extractWeightEntry(`${prefix}/filters`, 4);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n\n return { filters, bias };\n };\n}\n", "import { extractWeightEntryFactory, loadSeparableConvParamsFactory, ParamMapping } from '../common/index';\nimport { loadConvParamsFactory } from '../common/loadConvParamsFactory';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function loadParamsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n const extractConvParams = loadConvParamsFactory(extractWeightEntry);\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry);\n\n function extractDenseBlock3Params(prefix: string, isFirstLayer: boolean = false): DenseBlock3Params {\n const conv0 = isFirstLayer\n ? extractConvParams(`${prefix}/conv0`)\n : extractSeparableConvParams(`${prefix}/conv0`);\n const conv1 = extractSeparableConvParams(`${prefix}/conv1`);\n const conv2 = extractSeparableConvParams(`${prefix}/conv2`);\n\n return { conv0, conv1, conv2 };\n }\n\n function extractDenseBlock4Params(prefix: string, isFirstLayer: boolean = false): DenseBlock4Params {\n const conv0 = isFirstLayer\n ? extractConvParams(`${prefix}/conv0`)\n : extractSeparableConvParams(`${prefix}/conv0`);\n const conv1 = extractSeparableConvParams(`${prefix}/conv1`);\n const conv2 = extractSeparableConvParams(`${prefix}/conv2`);\n const conv3 = extractSeparableConvParams(`${prefix}/conv3`);\n\n return {\n conv0, conv1, conv2, conv3,\n };\n }\n\n return {\n extractDenseBlock3Params,\n extractDenseBlock4Params,\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { disposeUnusedWeightTensors, ParamMapping } from '../common/index';\nimport { loadParamsFactory } from './loadParamsFactory';\nimport { FaceFeatureExtractorParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: FaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractDenseBlock4Params,\n } = loadParamsFactory(weightMap, paramMappings);\n\n const params = {\n dense0: extractDenseBlock4Params('dense0', true),\n dense1: extractDenseBlock4Params('dense1'),\n dense2: extractDenseBlock4Params('dense2'),\n dense3: extractDenseBlock4Params('dense3'),\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { NetInput } from '../dom/index';\nimport {\n FaceFeatureExtractorParams,\n IFaceFeatureExtractor,\n TinyFaceFeatureExtractorParams,\n} from '../faceFeatureExtractor/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { NetParams } from './types';\nimport { seperateWeightMaps } from './util';\n\nexport abstract class FaceProcessor<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends NeuralNetwork {\n protected _faceFeatureExtractor: IFaceFeatureExtractor\n\n constructor(_name: string, faceFeatureExtractor: IFaceFeatureExtractor) {\n super(_name);\n this._faceFeatureExtractor = faceFeatureExtractor;\n }\n\n public get faceFeatureExtractor(): IFaceFeatureExtractor {\n return this._faceFeatureExtractor;\n }\n\n protected abstract getDefaultModelName(): string\n\n protected abstract getClassifierChannelsIn(): number\n\n protected abstract getClassifierChannelsOut(): number\n\n public runNet(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n const { params } = this;\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`);\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input;\n return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0], -1), params.fc);\n });\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose);\n super.dispose(throwOnRedispose);\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights);\n this._params = params;\n this._paramMappings = paramMappings;\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights, this.getClassifierChannelsIn(), this.getClassifierChannelsOut());\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap);\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap);\n\n return extractParamsFromWeigthMap(classifierMap);\n }\n\n protected extractParams(weights: Float32Array) {\n const cIn = this.getClassifierChannelsIn();\n const cOut = this.getClassifierChannelsOut();\n const classifierWeightSize = (cOut * cIn) + cOut;\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize);\n const classifierWeights = weights.slice(weights.length - classifierWeightSize);\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights);\n return this.extractClassifierParams(classifierWeights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { FCParams } from './types';\n\nexport function fullyConnectedLayer(\n x: tf.Tensor2D,\n params: FCParams,\n): tf.Tensor2D {\n return tf.tidy(() => tf.add(\n tf.matMul(x, params.weights),\n params.bias,\n ));\n}\n", "import { extractFCParamsFactory, extractWeightsFactory, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParams(weights: Float32Array, channelsIn: number, channelsOut: number): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const extractFCParams = extractFCParamsFactory(extractWeights, paramMappings);\n\n const fc = extractFCParams(channelsIn, channelsOut, 'fc');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { fc },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport {\n disposeUnusedWeightTensors, extractWeightEntryFactory, FCParams, ParamMapping,\n} from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractFcParams(prefix: string): FCParams {\n const weights = extractWeightEntry(`${prefix}/weights`, 2);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n return { weights, bias };\n }\n\n const params = {\n fc: extractFcParams('fc'),\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nexport function seperateWeightMaps(weightMap: tf.NamedTensorMap) {\n const featureExtractorMap: tf.NamedTensorMap = {};\n const classifierMap: tf.NamedTensorMap = {};\n\n Object.keys(weightMap).forEach((key) => {\n const map = key.startsWith('fc') ? classifierMap : featureExtractorMap;\n map[key] = weightMap[key];\n });\n\n return { featureExtractorMap, classifierMap };\n}\n", "export const FACE_EXPRESSION_LABELS = ['neutral', 'happy', 'sad', 'angry', 'fearful', 'disgusted', 'surprised'];\n\nexport class FaceExpressions {\n public neutral: number\n\n public happy: number\n\n public sad: number\n\n public angry: number\n\n public fearful: number\n\n public disgusted: number\n\n public surprised: number\n\n constructor(probabilities: number[] | Float32Array) {\n if (probabilities.length !== 7) {\n throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${probabilities.length}`);\n }\n\n FACE_EXPRESSION_LABELS.forEach((expression, idx) => {\n this[expression] = probabilities[idx];\n });\n }\n\n asSortedArray() {\n return FACE_EXPRESSION_LABELS\n .map((expression) => ({ expression, probability: this[expression] as number }))\n .sort((e0, e1) => e1.probability - e0.probability);\n }\n}\n", "import { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\n\nexport type WithFaceExpressions = TSource & {\n expressions: FaceExpressions\n}\n\nexport function isWithFaceExpressions(obj: any): obj is WithFaceExpressions<{}> {\n return obj.expressions instanceof FaceExpressions;\n}\n\nexport function extendWithFaceExpressions<\n TSource\n>(\n sourceObj: TSource,\n expressions: FaceExpressions,\n): WithFaceExpressions {\n const extension = { expressions };\n return { ...sourceObj, ...extension };\n}\n", "import { IPoint, Point } from '../classes/index';\nimport { FaceExpressions } from '../faceExpressionNet/index';\nimport { isWithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceExpressions, WithFaceExpressions } from '../factories/WithFaceExpressions';\nimport { round } from '../utils/index';\nimport { DrawTextField } from './DrawTextField';\n\nexport type DrawFaceExpressionsInput = FaceExpressions | WithFaceExpressions<{}>\n\nexport function drawFaceExpressions(\n canvasArg: string | HTMLCanvasElement,\n faceExpressions: DrawFaceExpressionsInput | Array,\n minConfidence = 0.1,\n textFieldAnchor?: IPoint,\n) {\n const faceExpressionsArray = Array.isArray(faceExpressions) ? faceExpressions : [faceExpressions];\n\n faceExpressionsArray.forEach((e) => {\n // eslint-disable-next-line no-nested-ternary\n const expr = e instanceof FaceExpressions\n ? e\n : (isWithFaceExpressions(e) ? e.expressions : undefined);\n if (!expr) {\n throw new Error('drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof');\n }\n\n const sorted = expr.asSortedArray();\n const resultsToDisplay = sorted.filter((exprLocal) => exprLocal.probability > minConfidence);\n\n const anchor = isWithFaceDetection(e)\n ? e.detection.box.bottomLeft\n : (textFieldAnchor || new Point(0, 0));\n\n const drawTextField = new DrawTextField(\n resultsToDisplay.map((exprLocal) => `${exprLocal.expression} (${round(exprLocal.probability)})`),\n anchor,\n );\n drawTextField.draw(canvasArg);\n });\n}\n", "import { FaceDetection } from '../classes/FaceDetection';\nimport { FaceLandmarks } from '../classes/FaceLandmarks';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { isWithFaceDetection, WithFaceDetection } from './WithFaceDetection';\n\nexport type WithFaceLandmarks<\n TSource extends WithFaceDetection<{}>,\n TFaceLandmarks extends FaceLandmarks = FaceLandmarks68 > = TSource & {\n landmarks: TFaceLandmarks\n unshiftedLandmarks: TFaceLandmarks\n alignedRect: FaceDetection\n }\n\nexport function isWithFaceLandmarks(obj: any): obj is WithFaceLandmarks, FaceLandmarks> {\n return isWithFaceDetection(obj)\n // eslint-disable-next-line dot-notation\n && obj['landmarks'] instanceof FaceLandmarks\n // eslint-disable-next-line dot-notation\n && obj['unshiftedLandmarks'] instanceof FaceLandmarks\n // eslint-disable-next-line dot-notation\n && obj['alignedRect'] instanceof FaceDetection;\n}\n\nexport function extendWithFaceLandmarks<\n TSource extends WithFaceDetection<{}>,\n TFaceLandmarks extends FaceLandmarks = FaceLandmarks68 >(sourceObj: TSource, unshiftedLandmarks: TFaceLandmarks): WithFaceLandmarks {\n const { box: shift } = sourceObj.detection;\n const landmarks = unshiftedLandmarks.shiftBy(shift.x, shift.y);\n\n const rect = landmarks.align();\n const { imageDims } = sourceObj.detection;\n const alignedRect = new FaceDetection(sourceObj.detection.score, rect.rescale(imageDims.reverse()), imageDims);\n\n const extension = {\n landmarks,\n unshiftedLandmarks,\n alignedRect,\n };\n\n return { ...sourceObj, ...extension };\n}\n", "/* eslint-disable max-classes-per-file */\nimport { IPoint } from '../classes/index';\nimport { FaceLandmarks } from '../classes/FaceLandmarks';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { drawContour } from './drawContour';\n\nexport interface IDrawFaceLandmarksOptions {\n drawLines?: boolean\n drawPoints?: boolean\n lineWidth?: number\n pointSize?: number\n lineColor?: string\n pointColor?: string\n}\n\nexport class DrawFaceLandmarksOptions {\n public drawLines: boolean\n\n public drawPoints: boolean\n\n public lineWidth: number\n\n public pointSize: number\n\n public lineColor: string\n\n public pointColor: string\n\n constructor(options: IDrawFaceLandmarksOptions = {}) {\n const {\n drawLines = true, drawPoints = true, lineWidth, lineColor, pointSize, pointColor,\n } = options;\n this.drawLines = drawLines;\n this.drawPoints = drawPoints;\n this.lineWidth = lineWidth || 1;\n this.pointSize = pointSize || 2;\n this.lineColor = lineColor || 'rgba(0, 255, 255, 1)';\n this.pointColor = pointColor || 'rgba(255, 0, 255, 1)';\n }\n}\n\nexport class DrawFaceLandmarks {\n public faceLandmarks: FaceLandmarks\n\n public options: DrawFaceLandmarksOptions\n\n constructor(\n faceLandmarks: FaceLandmarks,\n options: IDrawFaceLandmarksOptions = {},\n ) {\n this.faceLandmarks = faceLandmarks;\n this.options = new DrawFaceLandmarksOptions(options);\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const ctx = getContext2dOrThrow(canvasArg);\n\n const {\n drawLines, drawPoints, lineWidth, lineColor, pointSize, pointColor,\n } = this.options;\n\n if (drawLines && this.faceLandmarks instanceof FaceLandmarks68) {\n ctx.strokeStyle = lineColor;\n ctx.lineWidth = lineWidth;\n drawContour(ctx, this.faceLandmarks.getJawOutline());\n drawContour(ctx, this.faceLandmarks.getLeftEyeBrow());\n drawContour(ctx, this.faceLandmarks.getRightEyeBrow());\n drawContour(ctx, this.faceLandmarks.getNose());\n drawContour(ctx, this.faceLandmarks.getLeftEye(), true);\n drawContour(ctx, this.faceLandmarks.getRightEye(), true);\n drawContour(ctx, this.faceLandmarks.getMouth(), true);\n }\n\n if (drawPoints) {\n ctx.strokeStyle = pointColor;\n ctx.fillStyle = pointColor;\n\n const drawPoint = (pt: IPoint) => {\n ctx.beginPath();\n ctx.arc(pt.x, pt.y, pointSize, 0, 2 * Math.PI);\n ctx.fill();\n };\n this.faceLandmarks.positions.forEach(drawPoint);\n }\n }\n}\n\nexport type DrawFaceLandmarksInput = FaceLandmarks | WithFaceLandmarks>\n\nexport function drawFaceLandmarks(\n canvasArg: string | HTMLCanvasElement,\n faceLandmarks: DrawFaceLandmarksInput | Array,\n) {\n const faceLandmarksArray = Array.isArray(faceLandmarks) ? faceLandmarks : [faceLandmarks];\n faceLandmarksArray.forEach((f) => {\n // eslint-disable-next-line no-nested-ternary\n const landmarks = f instanceof FaceLandmarks\n ? f\n : (isWithFaceLandmarks(f) ? f.landmarks : undefined);\n if (!landmarks) {\n throw new Error('drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof');\n }\n\n new DrawFaceLandmarks(landmarks).draw(canvasArg);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { seperateWeightMaps } from '../faceProcessor/util';\nimport { TinyXception } from '../xception/TinyXception';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport {\n AgeAndGenderPrediction, Gender, NetOutput, NetParams,\n} from './types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\n\nexport class AgeGenderNet extends NeuralNetwork {\n private _faceFeatureExtractor: TinyXception\n\n constructor(faceFeatureExtractor: TinyXception = new TinyXception(2)) {\n super('AgeGenderNet');\n this._faceFeatureExtractor = faceFeatureExtractor;\n }\n\n public get faceFeatureExtractor(): TinyXception {\n return this._faceFeatureExtractor;\n }\n\n public runNet(input: NetInput | tf.Tensor4D): NetOutput {\n const { params } = this;\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`);\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input;\n\n const pooled = tf.avgPool(bottleneckFeatures, [7, 7], [2, 2], 'valid').as2D(bottleneckFeatures.shape[0], -1);\n const age = fullyConnectedLayer(pooled, params.fc.age).as1D();\n const gender = fullyConnectedLayer(pooled, params.fc.gender);\n return { age, gender };\n });\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): NetOutput {\n return tf.tidy(() => {\n const { age, gender } = this.runNet(input);\n return { age, gender: tf.softmax(gender) };\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async predictAgeAndGender(input: TNetInput): Promise {\n const netInput = await toNetInput(input);\n const out = await this.forwardInput(netInput);\n\n const ages = tf.unstack(out.age);\n const genders = tf.unstack(out.gender);\n const ageAndGenderTensors = ages.map((ageTensor, i) => ({\n ageTensor,\n genderTensor: genders[i],\n }));\n\n const predictionsByBatch = await Promise.all(\n ageAndGenderTensors.map(async ({ ageTensor, genderTensor }) => {\n const age = (await ageTensor.data())[0];\n const probMale = (await genderTensor.data())[0];\n const isMale = probMale > 0.5;\n const gender = isMale ? Gender.MALE : Gender.FEMALE;\n const genderProbability = isMale ? probMale : (1 - probMale);\n\n ageTensor.dispose();\n genderTensor.dispose();\n return { age, gender, genderProbability };\n }),\n );\n out.age.dispose();\n out.gender.dispose();\n\n return netInput.isBatchInput ? predictionsByBatch as AgeAndGenderPrediction[] : predictionsByBatch[0] as AgeAndGenderPrediction;\n }\n\n protected getDefaultModelName(): string {\n return 'age_gender_model';\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose);\n super.dispose(throwOnRedispose);\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights);\n this._params = params;\n this._paramMappings = paramMappings;\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights);\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap);\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap);\n\n return extractParamsFromWeigthMap(classifierMap);\n }\n\n protected extractParams(weights: Float32Array) {\n const classifierWeightSize = (512 * 1 + 1) + (512 * 2 + 2);\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize);\n const classifierWeights = weights.slice(weights.length - classifierWeightSize);\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights);\n return this.extractClassifierParams(classifierWeights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ConvParams, depthwiseSeparableConv } from '../common/index';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { range } from '../utils/index';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction conv(x: tf.Tensor4D, params: ConvParams, stride: [number, number]): tf.Tensor4D {\n return tf.add(tf.conv2d(x, params.filters, stride, 'same'), params.bias);\n}\n\nfunction reductionBlock(x: tf.Tensor4D, params: ReductionBlockParams, isActivateInput: boolean = true): tf.Tensor4D {\n let out = isActivateInput ? tf.relu(x) : x;\n out = depthwiseSeparableConv(out, params.separable_conv0, [1, 1]);\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1]);\n out = tf.maxPool(out, [3, 3], [2, 2], 'same');\n out = tf.add(out, conv(x, params.expansion_conv, [2, 2]));\n return out;\n}\n\nfunction mainBlock(x: tf.Tensor4D, params: MainBlockParams): tf.Tensor4D {\n let out = depthwiseSeparableConv(tf.relu(x), params.separable_conv0, [1, 1]);\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1]);\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv2, [1, 1]);\n out = tf.add(out, x);\n return out;\n}\n\nexport class TinyXception extends NeuralNetwork {\n private _numMainBlocks: number\n\n constructor(numMainBlocks: number) {\n super('TinyXception');\n this._numMainBlocks = numMainBlocks;\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('TinyXception - load model before inference');\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D;\n\n let out = tf.relu(conv(normalized, params.entry_flow.conv_in, [2, 2]));\n out = reductionBlock(out, params.entry_flow.reduction_block_0, false);\n out = reductionBlock(out, params.entry_flow.reduction_block_1);\n\n range(this._numMainBlocks, 0, 1).forEach((idx) => {\n out = mainBlock(out, params.middle_flow[`main_block_${idx}`]);\n });\n\n out = reductionBlock(out, params.exit_flow.reduction_block);\n out = tf.relu(depthwiseSeparableConv(out, params.exit_flow.separable_conv, [1, 1]));\n return out;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n protected getDefaultModelName(): string {\n return 'tiny_xception_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this._numMainBlocks);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights, this._numMainBlocks);\n }\n}\n", "import { extractConvParamsFactory, extractSeparableConvParamsFactory, extractWeightsFactory } from '../common/index';\nimport { ExtractWeightsFunction, ParamMapping } from '../common/types';\nimport { range } from '../utils/index';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings);\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings);\n\n function extractReductionBlockParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ReductionBlockParams {\n const separable_conv0 = extractSeparableConvParams(channelsIn, channelsOut, `${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/separable_conv1`);\n const expansion_conv = extractConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/expansion_conv`);\n\n return { separable_conv0, separable_conv1, expansion_conv };\n }\n\n function extractMainBlockParams(channels: number, mappedPrefix: string): MainBlockParams {\n const separable_conv0 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv1`);\n const separable_conv2 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv2`);\n\n return { separable_conv0, separable_conv1, separable_conv2 };\n }\n\n return {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n };\n}\n\nexport function extractParams(weights: Float32Array, numMainBlocks: number): { params: TinyXceptionParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const entry_flow_conv_in = extractConvParams(3, 32, 3, 'entry_flow/conv_in');\n const entry_flow_reduction_block_0 = extractReductionBlockParams(32, 64, 'entry_flow/reduction_block_0');\n const entry_flow_reduction_block_1 = extractReductionBlockParams(64, 128, 'entry_flow/reduction_block_1');\n\n const entry_flow = {\n conv_in: entry_flow_conv_in,\n reduction_block_0: entry_flow_reduction_block_0,\n reduction_block_1: entry_flow_reduction_block_1,\n };\n\n const middle_flow = {};\n range(numMainBlocks, 0, 1).forEach((idx) => {\n middle_flow[`main_block_${idx}`] = extractMainBlockParams(128, `middle_flow/main_block_${idx}`);\n });\n\n const exit_flow_reduction_block = extractReductionBlockParams(128, 256, 'exit_flow/reduction_block');\n const exit_flow_separable_conv = extractSeparableConvParams(256, 512, 'exit_flow/separable_conv');\n\n const exit_flow = {\n reduction_block: exit_flow_reduction_block,\n separable_conv: exit_flow_separable_conv,\n };\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { entry_flow, middle_flow, exit_flow },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport {\n disposeUnusedWeightTensors,\n extractWeightEntryFactory,\n loadSeparableConvParamsFactory,\n ParamMapping,\n} from '../common/index';\nimport { loadConvParamsFactory } from '../common/loadConvParamsFactory';\nimport { range } from '../utils/index';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction loadParamsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n const extractConvParams = loadConvParamsFactory(extractWeightEntry);\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry);\n\n function extractReductionBlockParams(mappedPrefix: string): ReductionBlockParams {\n const separable_conv0 = extractSeparableConvParams(`${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(`${mappedPrefix}/separable_conv1`);\n const expansion_conv = extractConvParams(`${mappedPrefix}/expansion_conv`);\n\n return { separable_conv0, separable_conv1, expansion_conv };\n }\n\n function extractMainBlockParams(mappedPrefix: string): MainBlockParams {\n const separable_conv0 = extractSeparableConvParams(`${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(`${mappedPrefix}/separable_conv1`);\n const separable_conv2 = extractSeparableConvParams(`${mappedPrefix}/separable_conv2`);\n\n return { separable_conv0, separable_conv1, separable_conv2 };\n }\n\n return {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n numMainBlocks: number,\n): { params: TinyXceptionParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n } = loadParamsFactory(weightMap, paramMappings);\n\n const entry_flow_conv_in = extractConvParams('entry_flow/conv_in');\n const entry_flow_reduction_block_0 = extractReductionBlockParams('entry_flow/reduction_block_0');\n const entry_flow_reduction_block_1 = extractReductionBlockParams('entry_flow/reduction_block_1');\n\n const entry_flow = {\n conv_in: entry_flow_conv_in,\n reduction_block_0: entry_flow_reduction_block_0,\n reduction_block_1: entry_flow_reduction_block_1,\n };\n\n const middle_flow = {};\n range(numMainBlocks, 0, 1).forEach((idx) => {\n middle_flow[`main_block_${idx}`] = extractMainBlockParams(`middle_flow/main_block_${idx}`);\n });\n\n const exit_flow_reduction_block = extractReductionBlockParams('exit_flow/reduction_block');\n const exit_flow_separable_conv = extractSeparableConvParams('exit_flow/separable_conv');\n\n const exit_flow = {\n reduction_block: exit_flow_reduction_block,\n separable_conv: exit_flow_separable_conv,\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params: { entry_flow, middle_flow, exit_flow }, paramMappings };\n}\n", "import { extractFCParamsFactory, extractWeightsFactory, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const extractFCParams = extractFCParamsFactory(extractWeights, paramMappings);\n\n const age = extractFCParams(512, 1, 'fc/age');\n const gender = extractFCParams(512, 2, 'fc/gender');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { fc: { age, gender } },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport {\n disposeUnusedWeightTensors, extractWeightEntryFactory, FCParams, ParamMapping,\n} from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractFcParams(prefix: string): FCParams {\n const weights = extractWeightEntry(`${prefix}/weights`, 2);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n return { weights, bias };\n }\n\n const params = {\n fc: {\n age: extractFcParams('fc/age'),\n gender: extractFcParams('fc/gender'),\n },\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { FCParams } from '../common/index';\n\n// eslint-disable-next-line no-shadow\nexport enum Gender {\n // eslint-disable-next-line no-unused-vars\n FEMALE = 'female',\n // eslint-disable-next-line no-unused-vars\n MALE = 'male'\n}\n\nexport type AgeAndGenderPrediction = {\n age: number\n gender: Gender\n genderProbability: number\n}\n\nexport type NetOutput = { age: tf.Tensor1D, gender: tf.Tensor2D }\n\nexport type NetParams = {\n fc: {\n age: FCParams\n gender: FCParams\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { IDimensions, Point } from '../classes/index';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractorParams, TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { isEven } from '../utils/index';\n\nexport abstract class FaceLandmark68NetBase<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends FaceProcessor {\n public postProcess(output: tf.Tensor2D, inputSize: number, originalDimensions: IDimensions[]): tf.Tensor2D {\n const inputDimensions = originalDimensions.map(({ width, height }) => {\n const scale = inputSize / Math.max(height, width);\n return {\n width: width * scale,\n height: height * scale,\n };\n });\n\n const batchSize = inputDimensions.length;\n\n return tf.tidy(() => {\n const createInterleavedTensor = (fillX: number, fillY: number) => tf.stack([tf.fill([68], fillX, 'float32'), tf.fill([68], fillY, 'float32')], 1).as2D(1, 136).as1D();\n\n // eslint-disable-next-line no-unused-vars\n const getPadding = (batchIdx: number, cond: (w: number, h: number) => boolean): number => {\n const { width, height } = inputDimensions[batchIdx];\n return cond(width, height) ? Math.abs(width - height) / 2 : 0;\n };\n\n const getPaddingX = (batchIdx: number) => getPadding(batchIdx, (w, h) => w < h);\n const getPaddingY = (batchIdx: number) => getPadding(batchIdx, (w, h) => h < w);\n\n const landmarkTensors = output\n .mul(tf.fill([batchSize, 136], inputSize, 'float32'))\n .sub(tf.stack(Array.from(Array(batchSize), (_, batchIdx) => createInterleavedTensor(\n getPaddingX(batchIdx),\n getPaddingY(batchIdx),\n ))))\n .div(tf.stack(Array.from(Array(batchSize), (_, batchIdx) => createInterleavedTensor(\n inputDimensions[batchIdx].width,\n inputDimensions[batchIdx].height,\n ))));\n\n return landmarkTensors as tf.Tensor2D;\n });\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n return tf.tidy(() => {\n const out = this.runNet(input);\n return this.postProcess(\n out,\n input.inputSize as number,\n input.inputDimensions.map(([height, width]) => ({ height, width })),\n );\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async detectLandmarks(input: TNetInput): Promise {\n const netInput = await toNetInput(input);\n const landmarkTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput)),\n );\n\n const landmarksForBatch = await Promise.all(landmarkTensors.map(\n async (landmarkTensor, batchIdx) => {\n const landmarksArray = Array.from(await landmarkTensor.data());\n const xCoords = landmarksArray.filter((_, i) => isEven(i));\n const yCoords = landmarksArray.filter((_, i) => !isEven(i));\n\n return new FaceLandmarks68(\n Array(68).fill(0).map((_, i) => new Point(xCoords[i] as number, yCoords[i] as number)),\n {\n height: netInput.getInputHeight(batchIdx),\n width: netInput.getInputWidth(batchIdx),\n },\n );\n },\n ));\n\n landmarkTensors.forEach((t) => t.dispose());\n\n return netInput.isBatchInput ? landmarksForBatch as FaceLandmarks68[] : landmarksForBatch[0] as FaceLandmarks68;\n }\n\n protected getClassifierChannelsOut(): number {\n return 136;\n }\n}\n", "import { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';\nimport { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceLandmark68NetBase } from './FaceLandmark68NetBase';\n\nexport class FaceLandmark68Net extends FaceLandmark68NetBase {\n constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) {\n super('FaceLandmark68Net', faceFeatureExtractor);\n }\n\n protected getDefaultModelName(): string {\n return 'face_landmark_68_model';\n }\n\n protected getClassifierChannelsIn(): number {\n return 256;\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock3 } from './denseBlock';\nimport { extractParamsFromWeigthMapTiny } from './extractParamsFromWeigthMapTiny';\nimport { extractParamsTiny } from './extractParamsTiny';\nimport { IFaceFeatureExtractor, TinyFaceFeatureExtractorParams } from './types';\n\nexport class TinyFaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n constructor() {\n super('TinyFaceFeatureExtractor');\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('TinyFaceFeatureExtractor - load model before inference');\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D;\n\n let out = denseBlock3(normalized, params.dense0, true);\n out = denseBlock3(out, params.dense1);\n out = denseBlock3(out, params.dense2);\n out = tf.avgPool(out, [14, 14], [2, 2], 'valid');\n\n return out;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_tiny_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMapTiny(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParamsTiny(weights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { disposeUnusedWeightTensors, ParamMapping } from '../common/index';\nimport { loadParamsFactory } from './loadParamsFactory';\nimport { TinyFaceFeatureExtractorParams } from './types';\n\nexport function extractParamsFromWeigthMapTiny(\n weightMap: tf.NamedTensorMap,\n): { params: TinyFaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractDenseBlock3Params,\n } = loadParamsFactory(weightMap, paramMappings);\n\n const params = {\n dense0: extractDenseBlock3Params('dense0', true),\n dense1: extractDenseBlock3Params('dense1'),\n dense2: extractDenseBlock3Params('dense2'),\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import { extractWeightsFactory, ParamMapping } from '../common/index';\nimport { extractorsFactory } from './extractorsFactory';\nimport { TinyFaceFeatureExtractorParams } from './types';\n\nexport function extractParamsTiny(weights: Float32Array): { params: TinyFaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractDenseBlock3Params,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const dense0 = extractDenseBlock3Params(3, 32, 'dense0', true);\n const dense1 = extractDenseBlock3Params(32, 64, 'dense1');\n const dense2 = extractDenseBlock3Params(64, 128, 'dense2');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { dense0, dense1, dense2 },\n };\n}\n", "import { TinyFaceFeatureExtractor } from '../faceFeatureExtractor/TinyFaceFeatureExtractor';\nimport { TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceLandmark68NetBase } from './FaceLandmark68NetBase';\n\nexport class FaceLandmark68TinyNet extends FaceLandmark68NetBase {\n constructor(faceFeatureExtractor: TinyFaceFeatureExtractor = new TinyFaceFeatureExtractor()) {\n super('FaceLandmark68TinyNet', faceFeatureExtractor);\n }\n\n protected getDefaultModelName(): string {\n return 'face_landmark_68_tiny_model';\n }\n\n protected getClassifierChannelsIn(): number {\n return 128;\n }\n}\n", "import { FaceLandmark68Net } from './FaceLandmark68Net';\n\nexport * from './FaceLandmark68Net';\nexport * from './FaceLandmark68TinyNet';\n\nexport class FaceLandmarkNet extends FaceLandmark68Net {}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { convDown } from './convLayer';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { residual, residualDown } from './residualLayer';\nimport { NetParams } from './types';\n\nexport class FaceRecognitionNet extends NeuralNetwork {\n constructor() {\n super('FaceRecognitionNet');\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n const { params } = this;\n\n if (!params) {\n throw new Error('FaceRecognitionNet - load model before inference');\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(150, true).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(150, true), 'float32');\n\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D;\n\n let out = convDown(normalized, params.conv32_down);\n out = tf.maxPool(out, 3, 2, 'valid');\n\n out = residual(out, params.conv32_1);\n out = residual(out, params.conv32_2);\n out = residual(out, params.conv32_3);\n\n out = residualDown(out, params.conv64_down);\n out = residual(out, params.conv64_1);\n out = residual(out, params.conv64_2);\n out = residual(out, params.conv64_3);\n\n out = residualDown(out, params.conv128_down);\n out = residual(out, params.conv128_1);\n out = residual(out, params.conv128_2);\n\n out = residualDown(out, params.conv256_down);\n out = residual(out, params.conv256_1);\n out = residual(out, params.conv256_2);\n out = residualDown(out, params.conv256_down_out);\n\n const globalAvg = out.mean([1, 2]) as tf.Tensor2D;\n const fullyConnected = tf.matMul(globalAvg, params.fc);\n\n return fullyConnected;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async computeFaceDescriptor(input: TNetInput): Promise {\n const netInput = await toNetInput(input);\n\n const faceDescriptorTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput)),\n );\n\n const faceDescriptorsForBatch = await Promise.all(faceDescriptorTensors.map(\n (t) => t.data(),\n )) as Float32Array[];\n\n faceDescriptorTensors.forEach((t) => t.dispose());\n\n return netInput.isBatchInput\n ? faceDescriptorsForBatch\n : faceDescriptorsForBatch[0];\n }\n\n protected getDefaultModelName(): string {\n return 'face_recognition_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { scale } from './scaleLayer';\nimport { ConvLayerParams } from './types';\n\nfunction convLayer(\n x: tf.Tensor4D,\n params: ConvLayerParams,\n strides: [number, number],\n withRelu: boolean,\n padding: 'valid' | 'same' = 'same',\n): tf.Tensor4D {\n const { filters, bias } = params.conv;\n\n let out = tf.conv2d(x, filters, strides, padding);\n out = tf.add(out, bias);\n out = scale(out, params.scale);\n return withRelu ? tf.relu(out) : out;\n}\n\nexport function conv(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], true);\n}\n\nexport function convNoRelu(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], false);\n}\n\nexport function convDown(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [2, 2], true, 'valid');\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ScaleLayerParams } from './types';\n\nexport function scale(x: tf.Tensor4D, params: ScaleLayerParams): tf.Tensor4D {\n return tf.add(tf.mul(x, params.weights), params.biases);\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport {\n ConvParams, extractWeightsFactory, ExtractWeightsFunction, ParamMapping,\n} from '../common/index';\nimport { isFloat } from '../utils/index';\nimport {\n ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams,\n} from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n function extractFilterValues(numFilterValues: number, numFilters: number, filterSize: number): tf.Tensor4D {\n const weights = extractWeights(numFilterValues);\n const depth = weights.length / (numFilters * filterSize * filterSize);\n\n if (isFloat(depth)) {\n throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`);\n }\n\n return tf.tidy(\n () => tf.transpose(\n tf.tensor4d(weights, [numFilters, depth, filterSize, filterSize]),\n [2, 3, 1, 0],\n ),\n );\n }\n\n function extractConvParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n ): ConvParams {\n const filters = extractFilterValues(numFilterValues, numFilters, filterSize);\n const bias = tf.tensor1d(extractWeights(numFilters));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return { filters, bias };\n }\n\n function extractScaleLayerParams(numWeights: number, mappedPrefix: string): ScaleLayerParams {\n const weights = tf.tensor1d(extractWeights(numWeights));\n const biases = tf.tensor1d(extractWeights(numWeights));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/weights` },\n { paramPath: `${mappedPrefix}/biases` },\n );\n\n return {\n weights,\n biases,\n };\n }\n\n function extractConvLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n ): ConvLayerParams {\n const conv = extractConvParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv`);\n const scale = extractScaleLayerParams(numFilters, `${mappedPrefix}/scale`);\n\n return { conv, scale };\n }\n\n function extractResidualLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n isDown: boolean = false,\n ): ResidualLayerParams {\n const conv1 = extractConvLayerParams((isDown ? 0.5 : 1) * numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv1`);\n const conv2 = extractConvLayerParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv2`);\n\n return { conv1, conv2 };\n }\n\n return {\n extractConvLayerParams,\n extractResidualLayerParams,\n };\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvLayerParams,\n extractResidualLayerParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const conv32_down = extractConvLayerParams(4704, 32, 7, 'conv32_down');\n const conv32_1 = extractResidualLayerParams(9216, 32, 3, 'conv32_1');\n const conv32_2 = extractResidualLayerParams(9216, 32, 3, 'conv32_2');\n const conv32_3 = extractResidualLayerParams(9216, 32, 3, 'conv32_3');\n\n const conv64_down = extractResidualLayerParams(36864, 64, 3, 'conv64_down', true);\n const conv64_1 = extractResidualLayerParams(36864, 64, 3, 'conv64_1');\n const conv64_2 = extractResidualLayerParams(36864, 64, 3, 'conv64_2');\n const conv64_3 = extractResidualLayerParams(36864, 64, 3, 'conv64_3');\n\n const conv128_down = extractResidualLayerParams(147456, 128, 3, 'conv128_down', true);\n const conv128_1 = extractResidualLayerParams(147456, 128, 3, 'conv128_1');\n const conv128_2 = extractResidualLayerParams(147456, 128, 3, 'conv128_2');\n\n const conv256_down = extractResidualLayerParams(589824, 256, 3, 'conv256_down', true);\n const conv256_1 = extractResidualLayerParams(589824, 256, 3, 'conv256_1');\n const conv256_2 = extractResidualLayerParams(589824, 256, 3, 'conv256_2');\n const conv256_down_out = extractResidualLayerParams(589824, 256, 3, 'conv256_down_out');\n\n const fc = tf.tidy(\n () => tf.transpose(tf.tensor2d(extractWeights(256 * 128), [128, 256]), [1, 0]),\n );\n paramMappings.push({ paramPath: 'fc' });\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n const params = {\n conv32_down,\n conv32_1,\n conv32_2,\n conv32_3,\n conv64_down,\n conv64_1,\n conv64_2,\n conv64_3,\n conv128_down,\n conv128_1,\n conv128_2,\n conv256_down,\n conv256_1,\n conv256_2,\n conv256_down_out,\n fc,\n };\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { disposeUnusedWeightTensors, extractWeightEntryFactory, ParamMapping } from '../common/index';\nimport { isTensor2D } from '../utils/index';\nimport {\n ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams,\n} from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractScaleLayerParams(prefix: string): ScaleLayerParams {\n const weights = extractWeightEntry(`${prefix}/scale/weights`, 1);\n const biases = extractWeightEntry(`${prefix}/scale/biases`, 1);\n\n return { weights, biases };\n }\n\n function extractConvLayerParams(prefix: string): ConvLayerParams {\n const filters = extractWeightEntry(`${prefix}/conv/filters`, 4);\n const bias = extractWeightEntry(`${prefix}/conv/bias`, 1);\n const scale = extractScaleLayerParams(prefix);\n\n return { conv: { filters, bias }, scale };\n }\n\n function extractResidualLayerParams(prefix: string): ResidualLayerParams {\n return {\n conv1: extractConvLayerParams(`${prefix}/conv1`),\n conv2: extractConvLayerParams(`${prefix}/conv2`),\n };\n }\n\n return {\n extractConvLayerParams,\n extractResidualLayerParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvLayerParams,\n extractResidualLayerParams,\n } = extractorsFactory(weightMap, paramMappings);\n\n const conv32_down = extractConvLayerParams('conv32_down');\n const conv32_1 = extractResidualLayerParams('conv32_1');\n const conv32_2 = extractResidualLayerParams('conv32_2');\n const conv32_3 = extractResidualLayerParams('conv32_3');\n\n const conv64_down = extractResidualLayerParams('conv64_down');\n const conv64_1 = extractResidualLayerParams('conv64_1');\n const conv64_2 = extractResidualLayerParams('conv64_2');\n const conv64_3 = extractResidualLayerParams('conv64_3');\n\n const conv128_down = extractResidualLayerParams('conv128_down');\n const conv128_1 = extractResidualLayerParams('conv128_1');\n const conv128_2 = extractResidualLayerParams('conv128_2');\n\n const conv256_down = extractResidualLayerParams('conv256_down');\n const conv256_1 = extractResidualLayerParams('conv256_1');\n const conv256_2 = extractResidualLayerParams('conv256_2');\n const conv256_down_out = extractResidualLayerParams('conv256_down_out');\n\n const { fc } = weightMap;\n paramMappings.push({ originalPath: 'fc', paramPath: 'fc' });\n\n if (!isTensor2D(fc)) {\n throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${fc}`);\n }\n\n const params = {\n conv32_down,\n conv32_1,\n conv32_2,\n conv32_3,\n conv64_down,\n conv64_1,\n conv64_2,\n conv64_3,\n conv128_down,\n conv128_1,\n conv128_2,\n conv256_down,\n conv256_1,\n conv256_2,\n conv256_down_out,\n fc,\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { conv, convDown, convNoRelu } from './convLayer';\nimport { ResidualLayerParams } from './types';\n\nexport function residual(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = conv(x, params.conv1);\n out = convNoRelu(out, params.conv2);\n out = tf.add(out, x);\n out = tf.relu(out);\n return out;\n}\n\nexport function residualDown(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = convDown(x, params.conv1);\n out = convNoRelu(out, params.conv2);\n\n let pooled = tf.avgPool(x, 2, 2, 'valid') as tf.Tensor4D;\n const zeros = tf.zeros(pooled.shape);\n const isPad = pooled.shape[3] !== out.shape[3];\n const isAdjustShape = pooled.shape[1] !== out.shape[1] || pooled.shape[2] !== out.shape[2];\n\n if (isAdjustShape) {\n const padShapeX = [...out.shape] as [number, number, number, number];\n padShapeX[1] = 1;\n const zerosW = tf.zeros(padShapeX);\n out = tf.concat([out, zerosW], 1);\n\n const padShapeY = [...out.shape] as [number, number, number, number];\n padShapeY[2] = 1;\n const zerosH = tf.zeros(padShapeY);\n out = tf.concat([out, zerosH], 2);\n }\n\n pooled = isPad ? tf.concat([pooled, zeros], 3) : pooled;\n out = tf.add(pooled, out) as tf.Tensor4D;\n\n out = tf.relu(out);\n return out;\n}\n", "import { FaceRecognitionNet } from './FaceRecognitionNet';\n\nexport * from './FaceRecognitionNet';\n\nexport function createFaceRecognitionNet(weights: Float32Array) {\n const net = new FaceRecognitionNet();\n net.extractWeights(weights);\n return net;\n}\n", "export type WithFaceDescriptor = TSource & {\n descriptor: Float32Array\n}\n\nexport function extendWithFaceDescriptor<\n TSource\n>(\n sourceObj: TSource,\n descriptor: Float32Array,\n): WithFaceDescriptor {\n const extension = { descriptor };\n return { ...sourceObj, ...extension };\n}\n", "export type WithAge = TSource & {\n age: number\n}\n\nexport function isWithAge(obj: any): obj is WithAge<{}> {\n return typeof obj.age === 'number';\n}\n\nexport function extendWithAge<\n TSource\n>(\n sourceObj: TSource,\n age: number,\n): WithAge {\n const extension = { age };\n return { ...sourceObj, ...extension };\n}\n", "import { Gender } from '../ageGenderNet/types';\nimport { isValidProbablitiy } from '../utils/index';\n\nexport type WithGender = TSource & {\n gender: Gender\n genderProbability: number\n}\n\nexport function isWithGender(obj: any): obj is WithGender<{}> {\n return (obj.gender === Gender.MALE || obj.gender === Gender.FEMALE)\n && isValidProbablitiy(obj.genderProbability);\n}\n\nexport function extendWithGender<\n TSource\n>(\n sourceObj: TSource,\n gender: Gender,\n genderProbability: number,\n): WithGender {\n const extension = { gender, genderProbability };\n return { ...sourceObj, ...extension };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { mobileNetV1 } from './mobileNetV1';\nimport { nonMaxSuppression } from './nonMaxSuppression';\nimport { outputLayer } from './outputLayer';\nimport { predictionLayer } from './predictionLayer';\nimport { ISsdMobilenetv1Options, SsdMobilenetv1Options } from './SsdMobilenetv1Options';\nimport { NetParams } from './types';\n\nexport class SsdMobilenetv1 extends NeuralNetwork {\n constructor() {\n super('SsdMobilenetv1');\n }\n\n public forwardInput(input: NetInput) {\n const { params } = this;\n\n if (!params) {\n throw new Error('SsdMobilenetv1 - load model before inference');\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(512, false).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(512, false), 'float32');\n\n const x = tf.sub(tf.mul(batchTensor, tf.scalar(0.007843137718737125)), tf.scalar(1)) as tf.Tensor4D;\n const features = mobileNetV1(x, params.mobilenetv1);\n\n const {\n boxPredictions,\n classPredictions,\n } = predictionLayer(features.out, features.conv11, params.prediction_layer);\n\n return outputLayer(boxPredictions, classPredictions, params.output_layer);\n });\n }\n\n public async forward(input: TNetInput) {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async locateFaces(\n input: TNetInput,\n options: ISsdMobilenetv1Options = {},\n ): Promise {\n const { maxResults, minConfidence } = new SsdMobilenetv1Options(options);\n\n const netInput = await toNetInput(input);\n\n const {\n boxes: _boxes,\n scores: _scores,\n } = this.forwardInput(netInput);\n\n // TODO batches\n const boxes = _boxes[0];\n const scores = _scores[0];\n for (let i = 1; i < _boxes.length; i++) {\n _boxes[i].dispose();\n _scores[i].dispose();\n }\n\n // TODO find a better way to filter by minConfidence\n const scoresData = Array.from(await scores.data());\n\n const iouThreshold = 0.5;\n const indices = nonMaxSuppression(\n boxes,\n scoresData as number[],\n maxResults,\n iouThreshold,\n minConfidence,\n );\n\n const reshapedDims = netInput.getReshapedInputDimensions(0);\n const inputSize = netInput.inputSize as number;\n const padX = inputSize / reshapedDims.width;\n const padY = inputSize / reshapedDims.height;\n\n const boxesData = boxes.arraySync();\n const results = indices\n .map((idx) => {\n const [top, bottom] = [\n Math.max(0, boxesData[idx][0]),\n Math.min(1.0, boxesData[idx][2]),\n ].map((val) => val * padY);\n const [left, right] = [\n Math.max(0, boxesData[idx][1]),\n Math.min(1.0, boxesData[idx][3]),\n ].map((val) => val * padX);\n return new FaceDetection(\n scoresData[idx] as number,\n new Rect(\n left,\n top,\n right - left,\n bottom - top,\n ),\n {\n height: netInput.getInputHeight(0),\n width: netInput.getInputWidth(0),\n },\n );\n });\n\n boxes.dispose();\n scores.dispose();\n\n return results;\n }\n\n protected getDefaultModelName(): string {\n return 'ssd_mobilenetv1_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport {\n ExtractWeightsFunction, ParamMapping, ConvParams, extractWeightsFactory,\n} from '../common/index';\nimport {\n MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams,\n} from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n function extractDepthwiseConvParams(numChannels: number, mappedPrefix: string): MobileNetV1.DepthwiseConvParams {\n const filters = tf.tensor4d(extractWeights(3 * 3 * numChannels), [3, 3, numChannels, 1]);\n const batch_norm_scale = tf.tensor1d(extractWeights(numChannels));\n const batch_norm_offset = tf.tensor1d(extractWeights(numChannels));\n const batch_norm_mean = tf.tensor1d(extractWeights(numChannels));\n const batch_norm_variance = tf.tensor1d(extractWeights(numChannels));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/batch_norm_scale` },\n { paramPath: `${mappedPrefix}/batch_norm_offset` },\n { paramPath: `${mappedPrefix}/batch_norm_mean` },\n { paramPath: `${mappedPrefix}/batch_norm_variance` },\n );\n\n return {\n filters,\n batch_norm_scale,\n batch_norm_offset,\n batch_norm_mean,\n batch_norm_variance,\n };\n }\n\n function extractConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n isPointwiseConv?: boolean,\n ): ConvParams {\n const filters = tf.tensor4d(\n extractWeights(channelsIn * channelsOut * filterSize * filterSize),\n [filterSize, filterSize, channelsIn, channelsOut],\n );\n const bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/${isPointwiseConv ? 'batch_norm_offset' : 'bias'}` },\n );\n\n return { filters, bias };\n }\n\n function extractPointwiseConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n ): PointwiseConvParams {\n const {\n filters,\n bias,\n } = extractConvParams(channelsIn, channelsOut, filterSize, mappedPrefix, true);\n\n return {\n filters,\n batch_norm_offset: bias,\n };\n }\n\n function extractConvPairParams(\n channelsIn: number,\n channelsOut: number,\n mappedPrefix: string,\n ): MobileNetV1.ConvPairParams {\n const depthwise_conv = extractDepthwiseConvParams(channelsIn, `${mappedPrefix}/depthwise_conv`);\n const pointwise_conv = extractPointwiseConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/pointwise_conv`);\n\n return { depthwise_conv, pointwise_conv };\n }\n\n function extractMobilenetV1Params(): MobileNetV1.Params {\n const conv_0 = extractPointwiseConvParams(3, 32, 3, 'mobilenetv1/conv_0');\n\n const conv_1 = extractConvPairParams(32, 64, 'mobilenetv1/conv_1');\n const conv_2 = extractConvPairParams(64, 128, 'mobilenetv1/conv_2');\n const conv_3 = extractConvPairParams(128, 128, 'mobilenetv1/conv_3');\n const conv_4 = extractConvPairParams(128, 256, 'mobilenetv1/conv_4');\n const conv_5 = extractConvPairParams(256, 256, 'mobilenetv1/conv_5');\n const conv_6 = extractConvPairParams(256, 512, 'mobilenetv1/conv_6');\n const conv_7 = extractConvPairParams(512, 512, 'mobilenetv1/conv_7');\n const conv_8 = extractConvPairParams(512, 512, 'mobilenetv1/conv_8');\n const conv_9 = extractConvPairParams(512, 512, 'mobilenetv1/conv_9');\n const conv_10 = extractConvPairParams(512, 512, 'mobilenetv1/conv_10');\n const conv_11 = extractConvPairParams(512, 512, 'mobilenetv1/conv_11');\n const conv_12 = extractConvPairParams(512, 1024, 'mobilenetv1/conv_12');\n const conv_13 = extractConvPairParams(1024, 1024, 'mobilenetv1/conv_13');\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n conv_8,\n conv_9,\n conv_10,\n conv_11,\n conv_12,\n conv_13,\n };\n }\n\n function extractPredictionLayerParams(): PredictionLayerParams {\n const conv_0 = extractPointwiseConvParams(1024, 256, 1, 'prediction_layer/conv_0');\n const conv_1 = extractPointwiseConvParams(256, 512, 3, 'prediction_layer/conv_1');\n const conv_2 = extractPointwiseConvParams(512, 128, 1, 'prediction_layer/conv_2');\n const conv_3 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_3');\n const conv_4 = extractPointwiseConvParams(256, 128, 1, 'prediction_layer/conv_4');\n const conv_5 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_5');\n const conv_6 = extractPointwiseConvParams(256, 64, 1, 'prediction_layer/conv_6');\n const conv_7 = extractPointwiseConvParams(64, 128, 3, 'prediction_layer/conv_7');\n\n const box_encoding_0_predictor = extractConvParams(512, 12, 1, 'prediction_layer/box_predictor_0/box_encoding_predictor');\n const class_predictor_0 = extractConvParams(512, 9, 1, 'prediction_layer/box_predictor_0/class_predictor');\n const box_encoding_1_predictor = extractConvParams(1024, 24, 1, 'prediction_layer/box_predictor_1/box_encoding_predictor');\n const class_predictor_1 = extractConvParams(1024, 18, 1, 'prediction_layer/box_predictor_1/class_predictor');\n const box_encoding_2_predictor = extractConvParams(512, 24, 1, 'prediction_layer/box_predictor_2/box_encoding_predictor');\n const class_predictor_2 = extractConvParams(512, 18, 1, 'prediction_layer/box_predictor_2/class_predictor');\n const box_encoding_3_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_3/box_encoding_predictor');\n const class_predictor_3 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_3/class_predictor');\n const box_encoding_4_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_4/box_encoding_predictor');\n const class_predictor_4 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_4/class_predictor');\n const box_encoding_5_predictor = extractConvParams(128, 24, 1, 'prediction_layer/box_predictor_5/box_encoding_predictor');\n const class_predictor_5 = extractConvParams(128, 18, 1, 'prediction_layer/box_predictor_5/class_predictor');\n\n const box_predictor_0 = {\n box_encoding_predictor: box_encoding_0_predictor,\n class_predictor: class_predictor_0,\n };\n const box_predictor_1 = {\n box_encoding_predictor: box_encoding_1_predictor,\n class_predictor: class_predictor_1,\n };\n const box_predictor_2 = {\n box_encoding_predictor: box_encoding_2_predictor,\n class_predictor: class_predictor_2,\n };\n const box_predictor_3 = {\n box_encoding_predictor: box_encoding_3_predictor,\n class_predictor: class_predictor_3,\n };\n const box_predictor_4 = {\n box_encoding_predictor: box_encoding_4_predictor,\n class_predictor: class_predictor_4,\n };\n const box_predictor_5 = {\n box_encoding_predictor: box_encoding_5_predictor,\n class_predictor: class_predictor_5,\n };\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n box_predictor_0,\n box_predictor_1,\n box_predictor_2,\n box_predictor_3,\n box_predictor_4,\n box_predictor_5,\n };\n }\n\n return {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n };\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const mobilenetv1 = extractMobilenetV1Params();\n const prediction_layer = extractPredictionLayerParams();\n const extra_dim = tf.tensor3d(\n extractWeights(5118 * 4),\n [1, 5118, 4],\n );\n const output_layer = {\n extra_dim,\n };\n\n paramMappings.push({ paramPath: 'output_layer/extra_dim' });\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n params: {\n mobilenetv1,\n prediction_layer,\n output_layer,\n },\n paramMappings,\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport {\n ConvParams, disposeUnusedWeightTensors, extractWeightEntryFactory, ParamMapping,\n} from '../common/index';\nimport { isTensor3D } from '../utils/index';\nimport {\n BoxPredictionParams, MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams,\n} from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractPointwiseConvParams(prefix: string, idx: number, mappedPrefix: string): PointwiseConvParams {\n const filters = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`, 4, `${mappedPrefix}/filters`);\n const batch_norm_offset = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`, 1, `${mappedPrefix}/batch_norm_offset`);\n\n return { filters, batch_norm_offset };\n }\n\n function extractConvPairParams(idx: number): MobileNetV1.ConvPairParams {\n const mappedPrefix = `mobilenetv1/conv_${idx}`;\n const prefixDepthwiseConv = `MobilenetV1/Conv2d_${idx}_depthwise`;\n const mappedPrefixDepthwiseConv = `${mappedPrefix}/depthwise_conv`;\n const mappedPrefixPointwiseConv = `${mappedPrefix}/pointwise_conv`;\n\n const filters = extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`, 4, `${mappedPrefixDepthwiseConv}/filters`);\n const batch_norm_scale = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_scale`);\n const batch_norm_offset = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_offset`);\n const batch_norm_mean = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_mean`);\n const batch_norm_variance = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_variance`);\n\n return {\n depthwise_conv: {\n filters,\n batch_norm_scale,\n batch_norm_offset,\n batch_norm_mean,\n batch_norm_variance,\n },\n pointwise_conv: extractPointwiseConvParams('MobilenetV1', idx, mappedPrefixPointwiseConv),\n };\n }\n\n function extractMobilenetV1Params(): MobileNetV1.Params {\n return {\n conv_0: extractPointwiseConvParams('MobilenetV1', 0, 'mobilenetv1/conv_0'),\n conv_1: extractConvPairParams(1),\n conv_2: extractConvPairParams(2),\n conv_3: extractConvPairParams(3),\n conv_4: extractConvPairParams(4),\n conv_5: extractConvPairParams(5),\n conv_6: extractConvPairParams(6),\n conv_7: extractConvPairParams(7),\n conv_8: extractConvPairParams(8),\n conv_9: extractConvPairParams(9),\n conv_10: extractConvPairParams(10),\n conv_11: extractConvPairParams(11),\n conv_12: extractConvPairParams(12),\n conv_13: extractConvPairParams(13),\n };\n }\n\n function extractConvParams(prefix: string, mappedPrefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/weights`, 4, `${mappedPrefix}/filters`);\n const bias = extractWeightEntry(`${prefix}/biases`, 1, `${mappedPrefix}/bias`);\n\n return { filters, bias };\n }\n\n function extractBoxPredictorParams(idx: number): BoxPredictionParams {\n const box_encoding_predictor = extractConvParams(\n `Prediction/BoxPredictor_${idx}/BoxEncodingPredictor`,\n `prediction_layer/box_predictor_${idx}/box_encoding_predictor`,\n );\n const class_predictor = extractConvParams(\n `Prediction/BoxPredictor_${idx}/ClassPredictor`,\n `prediction_layer/box_predictor_${idx}/class_predictor`,\n );\n\n return { box_encoding_predictor, class_predictor };\n }\n\n function extractPredictionLayerParams(): PredictionLayerParams {\n return {\n conv_0: extractPointwiseConvParams('Prediction', 0, 'prediction_layer/conv_0'),\n conv_1: extractPointwiseConvParams('Prediction', 1, 'prediction_layer/conv_1'),\n conv_2: extractPointwiseConvParams('Prediction', 2, 'prediction_layer/conv_2'),\n conv_3: extractPointwiseConvParams('Prediction', 3, 'prediction_layer/conv_3'),\n conv_4: extractPointwiseConvParams('Prediction', 4, 'prediction_layer/conv_4'),\n conv_5: extractPointwiseConvParams('Prediction', 5, 'prediction_layer/conv_5'),\n conv_6: extractPointwiseConvParams('Prediction', 6, 'prediction_layer/conv_6'),\n conv_7: extractPointwiseConvParams('Prediction', 7, 'prediction_layer/conv_7'),\n box_predictor_0: extractBoxPredictorParams(0),\n box_predictor_1: extractBoxPredictorParams(1),\n box_predictor_2: extractBoxPredictorParams(2),\n box_predictor_3: extractBoxPredictorParams(3),\n box_predictor_4: extractBoxPredictorParams(4),\n box_predictor_5: extractBoxPredictorParams(5),\n };\n }\n\n return {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n } = extractorsFactory(weightMap, paramMappings);\n\n const extra_dim = weightMap['Output/extra_dim'];\n paramMappings.push({ originalPath: 'Output/extra_dim', paramPath: 'output_layer/extra_dim' });\n\n if (!isTensor3D(extra_dim)) {\n throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`);\n }\n\n const params = {\n mobilenetv1: extractMobilenetV1Params(),\n prediction_layer: extractPredictionLayerParams(),\n output_layer: {\n extra_dim,\n },\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { MobileNetV1 } from './types';\n\nconst epsilon = 0.0010000000474974513;\n\nfunction depthwiseConvLayer(\n x: tf.Tensor4D,\n params: MobileNetV1.DepthwiseConvParams,\n strides: [number, number],\n) {\n return tf.tidy(() => {\n let out = tf.depthwiseConv2d(x, params.filters, strides, 'same');\n out = tf.batchNorm(\n out,\n params.batch_norm_mean,\n params.batch_norm_variance,\n params.batch_norm_offset,\n params.batch_norm_scale,\n epsilon,\n );\n return tf.clipByValue(out, 0, 6);\n });\n}\n\nfunction getStridesForLayerIdx(layerIdx: number): [number, number] {\n return [2, 4, 6, 12].some((idx) => idx === layerIdx) ? [2, 2] : [1, 1];\n}\n\nexport function mobileNetV1(x: tf.Tensor4D, params: MobileNetV1.Params) {\n return tf.tidy(() => {\n let conv11;\n let out = pointwiseConvLayer(x, params.conv_0, [2, 2]);\n\n const convPairParams = [\n params.conv_1,\n params.conv_2,\n params.conv_3,\n params.conv_4,\n params.conv_5,\n params.conv_6,\n params.conv_7,\n params.conv_8,\n params.conv_9,\n params.conv_10,\n params.conv_11,\n params.conv_12,\n params.conv_13,\n ];\n\n convPairParams.forEach((param, i) => {\n const layerIdx = i + 1;\n const depthwiseConvStrides = getStridesForLayerIdx(layerIdx);\n out = depthwiseConvLayer(out, param.depthwise_conv, depthwiseConvStrides);\n out = pointwiseConvLayer(out, param.pointwise_conv, [1, 1]);\n if (layerIdx === 11) {\n conv11 = out;\n }\n });\n\n if (conv11 === null) {\n throw new Error('mobileNetV1 - output of conv layer 11 is null');\n }\n\n return {\n out,\n conv11: conv11 as any,\n };\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { PointwiseConvParams } from './types';\n\nexport function pointwiseConvLayer(\n x: tf.Tensor4D,\n params: PointwiseConvParams,\n strides: [number, number],\n) {\n return tf.tidy(() => {\n let out = tf.conv2d(x, params.filters, strides, 'same');\n out = tf.add(out, params.batch_norm_offset);\n return tf.clipByValue(out, 0, 6);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nfunction IOU(boxes: tf.Tensor2D, i: number, j: number) {\n const boxesData = boxes.arraySync();\n const yminI = Math.min(boxesData[i][0], boxesData[i][2]);\n const xminI = Math.min(boxesData[i][1], boxesData[i][3]);\n const ymaxI = Math.max(boxesData[i][0], boxesData[i][2]);\n const xmaxI = Math.max(boxesData[i][1], boxesData[i][3]);\n const yminJ = Math.min(boxesData[j][0], boxesData[j][2]);\n const xminJ = Math.min(boxesData[j][1], boxesData[j][3]);\n const ymaxJ = Math.max(boxesData[j][0], boxesData[j][2]);\n const xmaxJ = Math.max(boxesData[j][1], boxesData[j][3]);\n const areaI = (ymaxI - yminI) * (xmaxI - xminI);\n const areaJ = (ymaxJ - yminJ) * (xmaxJ - xminJ);\n if (areaI <= 0 || areaJ <= 0) {\n return 0.0;\n }\n const intersectionYmin = Math.max(yminI, yminJ);\n const intersectionXmin = Math.max(xminI, xminJ);\n const intersectionYmax = Math.min(ymaxI, ymaxJ);\n const intersectionXmax = Math.min(xmaxI, xmaxJ);\n const intersectionArea = Math.max(intersectionYmax - intersectionYmin, 0.0)\n * Math.max(intersectionXmax - intersectionXmin, 0.0);\n return intersectionArea / (areaI + areaJ - intersectionArea);\n}\n\nexport function nonMaxSuppression(\n boxes: tf.Tensor2D,\n scores: number[],\n maxOutputSize: number,\n iouThreshold: number,\n scoreThreshold: number,\n): number[] {\n const numBoxes = boxes.shape[0];\n const outputSize = Math.min(\n maxOutputSize,\n numBoxes,\n );\n\n const candidates = scores\n .map((score, boxIndex) => ({ score, boxIndex }))\n .filter((c) => c.score > scoreThreshold)\n .sort((c1, c2) => c2.score - c1.score);\n\n const suppressFunc = (x: number) => (x <= iouThreshold ? 1 : 0);\n\n const selected: number[] = [];\n\n candidates.forEach((c) => {\n if (selected.length >= outputSize) {\n return;\n }\n const originalScore = c.score;\n\n for (let j = selected.length - 1; j >= 0; --j) {\n const iou = IOU(boxes, c.boxIndex, selected[j]);\n if (iou === 0.0) continue;\n c.score *= suppressFunc(iou);\n if (c.score <= scoreThreshold) break;\n }\n if (originalScore === c.score) {\n selected.push(c.boxIndex);\n }\n });\n\n return selected;\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { OutputLayerParams } from './types';\n\nfunction getCenterCoordinatesAndSizesLayer(x: tf.Tensor2D) {\n const vec = tf.unstack(tf.transpose(x, [1, 0]));\n\n const sizes = [\n tf.sub(vec[2], vec[0]),\n tf.sub(vec[3], vec[1]),\n ];\n\n const centers = [\n tf.add(vec[0], tf.div(sizes[0], tf.scalar(2))),\n tf.add(vec[1], tf.div(sizes[1], tf.scalar(2))),\n ];\n\n return {\n sizes,\n centers,\n };\n}\n\nfunction decodeBoxesLayer(x0: tf.Tensor2D, x1: tf.Tensor2D) {\n const {\n sizes,\n centers,\n } = getCenterCoordinatesAndSizesLayer(x0);\n\n const vec = tf.unstack(tf.transpose(x1, [1, 0]));\n\n const div0_out = tf.div(tf.mul(tf.exp(tf.div(vec[2], tf.scalar(5))), sizes[0]), tf.scalar(2));\n const add0_out = tf.add(tf.mul(tf.div(vec[0], tf.scalar(10)), sizes[0]), centers[0]);\n\n const div1_out = tf.div(tf.mul(tf.exp(tf.div(vec[3], tf.scalar(5))), sizes[1]), tf.scalar(2));\n const add1_out = tf.add(tf.mul(tf.div(vec[1], tf.scalar(10)), sizes[1]), centers[1]);\n\n return tf.transpose(\n tf.stack([\n tf.sub(add0_out, div0_out),\n tf.sub(add1_out, div1_out),\n tf.add(add0_out, div0_out),\n tf.add(add1_out, div1_out),\n ]),\n [1, 0],\n );\n}\n\nexport function outputLayer(\n boxPredictions: tf.Tensor4D,\n classPredictions: tf.Tensor4D,\n params: OutputLayerParams,\n) {\n return tf.tidy(() => {\n const batchSize = boxPredictions.shape[0];\n\n let boxes = decodeBoxesLayer(\n tf.reshape(tf.tile(params.extra_dim, [batchSize, 1, 1]), [-1, 4]) as tf.Tensor2D,\n tf.reshape(boxPredictions, [-1, 4]) as tf.Tensor2D,\n );\n boxes = tf.reshape(\n boxes,\n [batchSize, (boxes.shape[0] / batchSize), 4],\n );\n\n const scoresAndClasses = tf.sigmoid(tf.slice(classPredictions, [0, 0, 1], [-1, -1, -1]));\n let scores = tf.slice(scoresAndClasses, [0, 0, 0], [-1, -1, 1]) as tf.Tensor;\n\n scores = tf.reshape(\n scores,\n [batchSize, scores.shape[1] as number],\n );\n\n const boxesByBatch = tf.unstack(boxes) as tf.Tensor2D[];\n const scoresByBatch = tf.unstack(scores) as tf.Tensor1D[];\n\n return {\n boxes: boxesByBatch,\n scores: scoresByBatch,\n };\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { boxPredictionLayer } from './boxPredictionLayer';\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { PredictionLayerParams } from './types';\n\nexport function predictionLayer(\n x: tf.Tensor4D,\n conv11: tf.Tensor4D,\n params: PredictionLayerParams,\n) {\n return tf.tidy(() => {\n const conv0 = pointwiseConvLayer(x, params.conv_0, [1, 1]);\n const conv1 = pointwiseConvLayer(conv0, params.conv_1, [2, 2]);\n const conv2 = pointwiseConvLayer(conv1, params.conv_2, [1, 1]);\n const conv3 = pointwiseConvLayer(conv2, params.conv_3, [2, 2]);\n const conv4 = pointwiseConvLayer(conv3, params.conv_4, [1, 1]);\n const conv5 = pointwiseConvLayer(conv4, params.conv_5, [2, 2]);\n const conv6 = pointwiseConvLayer(conv5, params.conv_6, [1, 1]);\n const conv7 = pointwiseConvLayer(conv6, params.conv_7, [2, 2]);\n\n const boxPrediction0 = boxPredictionLayer(conv11, params.box_predictor_0);\n const boxPrediction1 = boxPredictionLayer(x, params.box_predictor_1);\n const boxPrediction2 = boxPredictionLayer(conv1, params.box_predictor_2);\n const boxPrediction3 = boxPredictionLayer(conv3, params.box_predictor_3);\n const boxPrediction4 = boxPredictionLayer(conv5, params.box_predictor_4);\n const boxPrediction5 = boxPredictionLayer(conv7, params.box_predictor_5);\n\n const boxPredictions = tf.concat([\n boxPrediction0.boxPredictionEncoding,\n boxPrediction1.boxPredictionEncoding,\n boxPrediction2.boxPredictionEncoding,\n boxPrediction3.boxPredictionEncoding,\n boxPrediction4.boxPredictionEncoding,\n boxPrediction5.boxPredictionEncoding,\n ], 1) as tf.Tensor4D;\n\n const classPredictions = tf.concat([\n boxPrediction0.classPrediction,\n boxPrediction1.classPrediction,\n boxPrediction2.classPrediction,\n boxPrediction3.classPrediction,\n boxPrediction4.classPrediction,\n boxPrediction5.classPrediction,\n ], 1) as tf.Tensor4D;\n\n return {\n boxPredictions,\n classPredictions,\n };\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { convLayer } from '../common/index';\nimport { BoxPredictionParams } from './types';\n\nexport function boxPredictionLayer(\n x: tf.Tensor4D,\n params: BoxPredictionParams,\n) {\n return tf.tidy(() => {\n const batchSize = x.shape[0];\n\n const boxPredictionEncoding = tf.reshape(\n convLayer(x, params.box_encoding_predictor),\n [batchSize, -1, 1, 4],\n );\n const classPrediction = tf.reshape(\n convLayer(x, params.class_predictor),\n [batchSize, -1, 3],\n );\n\n return {\n boxPredictionEncoding,\n classPrediction,\n };\n });\n}\n", "export interface ISsdMobilenetv1Options {\n minConfidence?: number\n maxResults?: number\n}\n\nexport class SsdMobilenetv1Options {\n protected _name: string = 'SsdMobilenetv1Options'\n\n private _minConfidence: number\n\n private _maxResults: number\n\n constructor({ minConfidence, maxResults }: ISsdMobilenetv1Options = {}) {\n this._minConfidence = minConfidence || 0.5;\n this._maxResults = maxResults || 100;\n\n if (typeof this._minConfidence !== 'number' || this._minConfidence <= 0 || this._minConfidence >= 1) {\n throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`);\n }\n\n if (typeof this._maxResults !== 'number') {\n throw new Error(`${this._name} - expected maxResults to be a number`);\n }\n }\n\n get minConfidence(): number { return this._minConfidence; }\n\n get maxResults(): number { return this._maxResults; }\n}\n", "import { SsdMobilenetv1 } from './SsdMobilenetv1';\n\nexport * from './SsdMobilenetv1';\nexport * from './SsdMobilenetv1Options';\n\nexport function createSsdMobilenetv1(weights: Float32Array) {\n const net = new SsdMobilenetv1();\n net.extractWeights(weights);\n return net;\n}\n\nexport function createFaceDetectionNet(weights: Float32Array) {\n return createSsdMobilenetv1(weights);\n}\n\n// alias for backward compatibily\nexport class FaceDetectionNet extends SsdMobilenetv1 {}\n", "import { Point } from '../classes/index';\n\nexport const IOU_THRESHOLD = 0.4;\n\nexport const BOX_ANCHORS = [\n new Point(0.738768, 0.874946),\n new Point(2.42204, 2.65704),\n new Point(4.30971, 7.04493),\n new Point(10.246, 4.59428),\n new Point(12.6868, 11.8741),\n];\n\nexport const BOX_ANCHORS_SEPARABLE = [\n new Point(1.603231, 2.094468),\n new Point(6.041143, 7.080126),\n new Point(2.882459, 3.518061),\n new Point(4.266906, 5.178857),\n new Point(9.041765, 10.66308),\n];\n\nexport const MEAN_RGB_SEPARABLE: [number, number, number] = [117.001, 114.697, 97.404];\n\nexport const DEFAULT_MODEL_NAME = 'tiny_yolov2_model';\nexport const DEFAULT_MODEL_NAME_SEPARABLE_CONV = 'tiny_yolov2_separable_conv_model';\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { BoundingBox } from '../classes/BoundingBox';\nimport { Dimensions } from '../classes/Dimensions';\nimport { ObjectDetection } from '../classes/ObjectDetection';\nimport { convLayer } from '../common/index';\nimport { ConvParams, SeparableConvParams } from '../common/types';\nimport { toNetInput } from '../dom/index';\nimport { NetInput } from '../dom/NetInput';\nimport { TNetInput } from '../dom/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { sigmoid } from '../ops/index';\nimport { nonMaxSuppression } from '../ops/nonMaxSuppression';\nimport { normalize } from '../ops/normalize';\nimport { TinyYolov2Config, validateConfig } from './config';\nimport { convWithBatchNorm } from './convWithBatchNorm';\nimport { depthwiseSeparableConv } from './depthwiseSeparableConv';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { leaky } from './leaky';\nimport { ITinyYolov2Options, TinyYolov2Options } from './TinyYolov2Options';\nimport { DefaultTinyYolov2NetParams, MobilenetParams, TinyYolov2NetParams } from './types';\n\nexport class TinyYolov2Base extends NeuralNetwork {\n public static DEFAULT_FILTER_SIZES = [\n 3, 16, 32, 64, 128, 256, 512, 1024, 1024,\n ]\n\n private _config: TinyYolov2Config\n\n constructor(config: TinyYolov2Config) {\n super('TinyYolov2');\n validateConfig(config);\n this._config = config;\n }\n\n public get config(): TinyYolov2Config {\n return this._config;\n }\n\n public get withClassScores(): boolean {\n return this.config.withClassScores || this.config.classes.length > 1;\n }\n\n public get boxEncodingSize(): number {\n return 5 + (this.withClassScores ? this.config.classes.length : 0);\n }\n\n public runTinyYolov2(x: tf.Tensor4D, params: DefaultTinyYolov2NetParams): tf.Tensor4D {\n let out = convWithBatchNorm(x, params.conv0);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv1);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv2);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv3);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv4);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv5);\n out = tf.maxPool(out, [2, 2], [1, 1], 'same');\n out = convWithBatchNorm(out, params.conv6);\n out = convWithBatchNorm(out, params.conv7);\n\n return convLayer(out, params.conv8, 'valid', false);\n }\n\n public runMobilenet(x: tf.Tensor4D, params: MobilenetParams): tf.Tensor4D {\n let out = this.config.isFirstLayerConv2d\n ? leaky(convLayer(x, params.conv0 as ConvParams, 'valid', false))\n : depthwiseSeparableConv(x, params.conv0 as SeparableConvParams);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv1);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv2);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv3);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv4);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv5);\n out = tf.maxPool(out, [2, 2], [1, 1], 'same');\n out = params.conv6 ? depthwiseSeparableConv(out, params.conv6) : out;\n out = params.conv7 ? depthwiseSeparableConv(out, params.conv7) : out;\n\n return convLayer(out, params.conv8, 'valid', false);\n }\n\n public forwardInput(input: NetInput, inputSize: number): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('TinyYolov2 - load model before inference');\n }\n\n return tf.tidy(() => {\n // let batchTensor = input.toBatchTensor(inputSize, false).toFloat()\n let batchTensor = tf.cast(input.toBatchTensor(inputSize, false), 'float32');\n batchTensor = this.config.meanRgb\n ? normalize(batchTensor, this.config.meanRgb)\n : batchTensor;\n batchTensor = batchTensor.div(tf.scalar(256)) as tf.Tensor4D;\n\n return this.config.withSeparableConvs\n ? this.runMobilenet(batchTensor, params as MobilenetParams)\n : this.runTinyYolov2(batchTensor, params as DefaultTinyYolov2NetParams);\n });\n }\n\n public async forward(input: TNetInput, inputSize: number): Promise {\n return this.forwardInput(await toNetInput(input), inputSize);\n }\n\n public async detect(input: TNetInput, forwardParams: ITinyYolov2Options = {}): Promise {\n const { inputSize, scoreThreshold } = new TinyYolov2Options(forwardParams);\n\n const netInput = await toNetInput(input);\n const out = await this.forwardInput(netInput, inputSize);\n const out0 = tf.tidy(() => tf.unstack(out)[0].expandDims()) as tf.Tensor4D;\n\n const inputDimensions = {\n width: netInput.getInputWidth(0),\n height: netInput.getInputHeight(0),\n };\n\n const results = await this.extractBoxes(out0, netInput.getReshapedInputDimensions(0), scoreThreshold);\n out.dispose();\n out0.dispose();\n\n const boxes = results.map((res) => res.box);\n const scores = results.map((res) => res.score);\n const classScores = results.map((res) => res.classScore);\n const classNames = results.map((res) => this.config.classes[res.label]);\n\n const indices = nonMaxSuppression(\n boxes.map((box) => box.rescale(inputSize)),\n scores,\n this.config.iouThreshold,\n true,\n );\n\n const detections = indices.map((idx) => new ObjectDetection(\n scores[idx],\n classScores[idx],\n classNames[idx],\n boxes[idx],\n inputDimensions,\n ));\n\n return detections;\n }\n\n protected getDefaultModelName(): string {\n return '';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this.config);\n }\n\n protected extractParams(weights: Float32Array) {\n const filterSizes = this.config.filterSizes || TinyYolov2Base.DEFAULT_FILTER_SIZES;\n\n const numFilters = filterSizes ? filterSizes.length : undefined;\n if (numFilters !== 7 && numFilters !== 8 && numFilters !== 9) {\n throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`);\n }\n return extractParams(weights, this.config, this.boxEncodingSize, filterSizes);\n }\n\n protected async extractBoxes(\n outputTensor: tf.Tensor4D,\n inputBlobDimensions: Dimensions,\n scoreThreshold?: number,\n ) {\n const { width, height } = inputBlobDimensions;\n const inputSize = Math.max(width, height);\n const correctionFactorX = inputSize / width;\n const correctionFactorY = inputSize / height;\n\n const numCells = outputTensor.shape[1];\n const numBoxes = this.config.anchors.length;\n\n const [boxesTensor, scoresTensor, classScoresTensor] = tf.tidy(() => {\n const reshaped = outputTensor.reshape([numCells, numCells, numBoxes, this.boxEncodingSize]);\n\n const boxes = reshaped.slice([0, 0, 0, 0], [numCells, numCells, numBoxes, 4]);\n const scores = reshaped.slice([0, 0, 0, 4], [numCells, numCells, numBoxes, 1]);\n const classScores = this.withClassScores\n ? tf.softmax(reshaped.slice([0, 0, 0, 5], [numCells, numCells, numBoxes, this.config.classes.length]), 3)\n : tf.scalar(0);\n return [boxes, scores, classScores];\n });\n\n const results = [] as any;\n\n const scoresData = await scoresTensor.array();\n const boxesData = await boxesTensor.array();\n for (let row = 0; row < numCells; row++) {\n for (let col = 0; col < numCells; col++) {\n for (let anchor = 0; anchor < numBoxes; anchor++) {\n const score = sigmoid(scoresData[row][col][anchor][0]);\n if (!scoreThreshold || score > scoreThreshold) {\n const ctX = ((col + sigmoid(boxesData[row][col][anchor][0])) / numCells) * correctionFactorX;\n const ctY = ((row + sigmoid(boxesData[row][col][anchor][1])) / numCells) * correctionFactorY;\n const widthLocal = ((Math.exp(boxesData[row][col][anchor][2]) * this.config.anchors[anchor].x) / numCells) * correctionFactorX;\n const heightLocal = ((Math.exp(boxesData[row][col][anchor][3]) * this.config.anchors[anchor].y) / numCells) * correctionFactorY;\n\n const x = (ctX - (widthLocal / 2));\n const y = (ctY - (heightLocal / 2));\n\n const pos = { row, col, anchor };\n const { classScore, label } = this.withClassScores\n ? await this.extractPredictedClass(classScoresTensor as tf.Tensor4D, pos)\n : { classScore: 1, label: 0 };\n\n results.push({\n box: new BoundingBox(x, y, x + widthLocal, y + heightLocal),\n score,\n classScore: score * classScore,\n label,\n ...pos,\n });\n }\n }\n }\n }\n\n boxesTensor.dispose();\n scoresTensor.dispose();\n classScoresTensor.dispose();\n\n return results;\n }\n\n private async extractPredictedClass(classesTensor: tf.Tensor4D, pos: { row: number, col: number, anchor: number }) {\n const { row, col, anchor } = pos;\n const classesData = await classesTensor.array();\n return Array(this.config.classes.length).fill(0)\n .map((_, i) => classesData[row][col][anchor][i])\n .map((classScore, label) => ({\n classScore,\n label,\n }))\n .reduce((max, curr) => (max.classScore > curr.classScore ? max : curr));\n }\n}\n", "import { Point } from '../classes/Point';\n\nexport type TinyYolov2Config = {\n withSeparableConvs: boolean\n iouThreshold: number\n anchors: Point[]\n classes: string[]\n meanRgb?: [number, number, number]\n withClassScores?: boolean,\n filterSizes?: number[]\n isFirstLayerConv2d?: boolean\n}\n\nconst isNumber = (arg: any) => typeof arg === 'number';\n\nexport function validateConfig(config: any) {\n if (!config) {\n throw new Error(`invalid config: ${config}`);\n }\n\n if (typeof config.withSeparableConvs !== 'boolean') {\n throw new Error(`config.withSeparableConvs has to be a boolean, have: ${config.withSeparableConvs}`);\n }\n\n if (!isNumber(config.iouThreshold) || config.iouThreshold < 0 || config.iouThreshold > 1.0) {\n throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${config.iouThreshold}`);\n }\n\n if (\n !Array.isArray(config.classes)\n || !config.classes.length\n || !config.classes.every((c: any) => typeof c === 'string')\n ) {\n throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(config.classes)}`);\n }\n\n if (\n !Array.isArray(config.anchors)\n || !config.anchors.length\n || !config.anchors.map((a: any) => a || {}).every((a: any) => isNumber(a.x) && isNumber(a.y))\n ) {\n throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(config.anchors)}`);\n }\n\n if (config.meanRgb && (\n !Array.isArray(config.meanRgb)\n || config.meanRgb.length !== 3\n || !config.meanRgb.every(isNumber)\n )) {\n throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(config.meanRgb)}`);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { leaky } from './leaky';\nimport { ConvWithBatchNorm } from './types';\n\nexport function convWithBatchNorm(x: tf.Tensor4D, params: ConvWithBatchNorm): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D;\n\n out = tf.conv2d(out, params.conv.filters, [1, 1], 'valid');\n out = tf.sub(out, params.bn.sub);\n out = tf.mul(out, params.bn.truediv);\n out = tf.add(out, params.conv.bias);\n\n return leaky(out);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nexport function leaky(x: tf.Tensor4D): tf.Tensor4D {\n return tf.tidy(() => {\n const min = tf.mul(x, tf.scalar(0.10000000149011612));\n return tf.add(tf.relu(tf.sub(x, min)), min);\n // return tf.maximum(x, min)\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { SeparableConvParams } from '../common/types';\nimport { leaky } from './leaky';\n\nexport function depthwiseSeparableConv(x: tf.Tensor4D, params: SeparableConvParams): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D;\n\n out = tf.separableConv2d(out, params.depthwise_filter, params.pointwise_filter, [1, 1], 'valid');\n out = tf.add(out, params.bias);\n\n return leaky(out);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { extractConvParamsFactory } from '../common/index';\nimport { extractSeparableConvParamsFactory } from '../common/extractSeparableConvParamsFactory';\nimport { extractWeightsFactory } from '../common/extractWeightsFactory';\nimport { ExtractWeightsFunction, ParamMapping } from '../common/types';\nimport { TinyYolov2Config } from './config';\nimport { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings);\n\n function extractBatchNormParams(size: number, mappedPrefix: string): BatchNorm {\n const sub = tf.tensor1d(extractWeights(size));\n const truediv = tf.tensor1d(extractWeights(size));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/sub` },\n { paramPath: `${mappedPrefix}/truediv` },\n );\n\n return { sub, truediv };\n }\n\n function extractConvWithBatchNormParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ConvWithBatchNorm {\n const conv = extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv`);\n const bn = extractBatchNormParams(channelsOut, `${mappedPrefix}/bn`);\n\n return { conv, bn };\n }\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings);\n\n return {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n };\n}\n\nexport function extractParams(\n weights: Float32Array,\n config: TinyYolov2Config,\n boxEncodingSize: number,\n filterSizes: number[],\n): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n let params: TinyYolov2NetParams;\n\n if (config.withSeparableConvs) {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes;\n\n const conv0 = config.isFirstLayerConv2d\n ? extractConvParams(s0, s1, 3, 'conv0')\n : extractSeparableConvParams(s0, s1, 'conv0');\n const conv1 = extractSeparableConvParams(s1, s2, 'conv1');\n const conv2 = extractSeparableConvParams(s2, s3, 'conv2');\n const conv3 = extractSeparableConvParams(s3, s4, 'conv3');\n const conv4 = extractSeparableConvParams(s4, s5, 'conv4');\n const conv5 = extractSeparableConvParams(s5, s6, 'conv5');\n const conv6 = s7 ? extractSeparableConvParams(s6, s7, 'conv6') : undefined;\n const conv7 = s8 ? extractSeparableConvParams(s7, s8, 'conv7') : undefined;\n const conv8 = extractConvParams(s8 || s7 || s6, 5 * boxEncodingSize, 1, 'conv8');\n params = {\n conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8,\n };\n } else {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes;\n const conv0 = extractConvWithBatchNormParams(s0, s1, 'conv0');\n const conv1 = extractConvWithBatchNormParams(s1, s2, 'conv1');\n const conv2 = extractConvWithBatchNormParams(s2, s3, 'conv2');\n const conv3 = extractConvWithBatchNormParams(s3, s4, 'conv3');\n const conv4 = extractConvWithBatchNormParams(s4, s5, 'conv4');\n const conv5 = extractConvWithBatchNormParams(s5, s6, 'conv5');\n const conv6 = extractConvWithBatchNormParams(s6, s7, 'conv6');\n const conv7 = extractConvWithBatchNormParams(s7, s8, 'conv7');\n const conv8 = extractConvParams(s8, 5 * boxEncodingSize, 1, 'conv8');\n params = {\n conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8,\n };\n }\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ConvParams } from '../common/index';\nimport { disposeUnusedWeightTensors } from '../common/disposeUnusedWeightTensors';\nimport { loadSeparableConvParamsFactory } from '../common/extractSeparableConvParamsFactory';\nimport { extractWeightEntryFactory } from '../common/extractWeightEntryFactory';\nimport { ParamMapping } from '../common/types';\nimport { TinyYolov2Config } from './config';\nimport { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractBatchNormParams(prefix: string): BatchNorm {\n const sub = extractWeightEntry(`${prefix}/sub`, 1);\n const truediv = extractWeightEntry(`${prefix}/truediv`, 1);\n return { sub, truediv };\n }\n\n function extractConvParams(prefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/filters`, 4);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n return { filters, bias };\n }\n\n function extractConvWithBatchNormParams(prefix: string): ConvWithBatchNorm {\n const conv = extractConvParams(`${prefix}/conv`);\n const bn = extractBatchNormParams(`${prefix}/bn`);\n return { conv, bn };\n }\n\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry);\n\n return {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n config: TinyYolov2Config,\n): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n } = extractorsFactory(weightMap, paramMappings);\n\n let params: TinyYolov2NetParams;\n\n if (config.withSeparableConvs) {\n // eslint-disable-next-line no-mixed-operators\n const numFilters = (config.filterSizes && config.filterSizes.length || 9);\n params = {\n conv0: config.isFirstLayerConv2d ? extractConvParams('conv0') : extractSeparableConvParams('conv0'),\n conv1: extractSeparableConvParams('conv1'),\n conv2: extractSeparableConvParams('conv2'),\n conv3: extractSeparableConvParams('conv3'),\n conv4: extractSeparableConvParams('conv4'),\n conv5: extractSeparableConvParams('conv5'),\n conv6: numFilters > 7 ? extractSeparableConvParams('conv6') : undefined,\n conv7: numFilters > 8 ? extractSeparableConvParams('conv7') : undefined,\n conv8: extractConvParams('conv8'),\n };\n } else {\n params = {\n conv0: extractConvWithBatchNormParams('conv0'),\n conv1: extractConvWithBatchNormParams('conv1'),\n conv2: extractConvWithBatchNormParams('conv2'),\n conv3: extractConvWithBatchNormParams('conv3'),\n conv4: extractConvWithBatchNormParams('conv4'),\n conv5: extractConvWithBatchNormParams('conv5'),\n conv6: extractConvWithBatchNormParams('conv6'),\n conv7: extractConvWithBatchNormParams('conv7'),\n conv8: extractConvParams('conv8'),\n };\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "export interface ITinyYolov2Options {\n inputSize?: number\n scoreThreshold?: number\n}\n\nexport class TinyYolov2Options {\n protected _name: string = 'TinyYolov2Options'\n\n private _inputSize: number\n\n private _scoreThreshold: number\n\n constructor({ inputSize, scoreThreshold }: ITinyYolov2Options = {}) {\n this._inputSize = inputSize || 416;\n this._scoreThreshold = scoreThreshold || 0.5;\n\n if (typeof this._inputSize !== 'number' || this._inputSize % 32 !== 0) {\n throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`);\n }\n\n if (typeof this._scoreThreshold !== 'number' || this._scoreThreshold <= 0 || this._scoreThreshold >= 1) {\n throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`);\n }\n }\n\n get inputSize(): number { return this._inputSize; }\n\n get scoreThreshold(): number { return this._scoreThreshold; }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { FaceDetection, Point } from '../classes/index';\nimport { ParamMapping } from '../common/types';\nimport { TNetInput } from '../dom/types';\nimport {\n BOX_ANCHORS,\n BOX_ANCHORS_SEPARABLE,\n DEFAULT_MODEL_NAME,\n DEFAULT_MODEL_NAME_SEPARABLE_CONV,\n IOU_THRESHOLD,\n MEAN_RGB_SEPARABLE,\n} from './const';\nimport { TinyYolov2Base } from './TinyYolov2Base';\nimport { ITinyYolov2Options } from './TinyYolov2Options';\nimport { TinyYolov2NetParams } from './types';\n\nexport class TinyYolov2 extends TinyYolov2Base {\n constructor(withSeparableConvs: boolean = true) {\n const config = {\n withSeparableConvs,\n iouThreshold: IOU_THRESHOLD,\n classes: ['face'],\n ...(withSeparableConvs\n ? {\n anchors: BOX_ANCHORS_SEPARABLE,\n meanRgb: MEAN_RGB_SEPARABLE,\n }\n : {\n anchors: BOX_ANCHORS,\n withClassScores: true,\n }),\n };\n\n super(config);\n }\n\n public get withSeparableConvs(): boolean {\n return this.config.withSeparableConvs;\n }\n\n public get anchors(): Point[] {\n return this.config.anchors;\n }\n\n public async locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise {\n const objectDetections = await this.detect(input, forwardParams);\n return objectDetections.map((det) => new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }));\n }\n\n protected getDefaultModelName(): string {\n return this.withSeparableConvs ? DEFAULT_MODEL_NAME_SEPARABLE_CONV : DEFAULT_MODEL_NAME;\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n return super.extractParamsFromWeigthMap(weightMap);\n }\n}\n", "import { TinyYolov2 } from './TinyYolov2';\n\nexport * from './TinyYolov2Options';\n\nexport * from './config';\nexport * from './types';\n\nexport { TinyYolov2 };\n\nexport function createTinyYolov2(weights: Float32Array, withSeparableConvs: boolean = true) {\n const net = new TinyYolov2(withSeparableConvs);\n net.extractWeights(weights);\n return net;\n}\n", "import { ITinyYolov2Options, TinyYolov2Options } from '../tinyYolov2/index';\n\nexport interface ITinyFaceDetectorOptions extends ITinyYolov2Options {}\n\nexport class TinyFaceDetectorOptions extends TinyYolov2Options {\n protected _name: string = 'TinyFaceDetectorOptions'\n}\n", "export class ComposableTask {\n public async then(\n // eslint-disable-next-line no-unused-vars\n onfulfilled: (value: T) => T | PromiseLike,\n ): Promise {\n return onfulfilled(await this.run());\n }\n\n public async run(): Promise {\n throw new Error('ComposableTask - run is not implemented');\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport * as tf from '../../dist/tfjs.esm';\n\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';\nimport { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { extendWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\nimport {\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class DetectFaceLandmarksTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected useTinyLandmarkNet: boolean,\n ) {\n super();\n }\n\n protected get landmarkNet(): FaceLandmark68Net | FaceLandmark68TinyNet {\n return this.useTinyLandmarkNet\n ? nets.faceLandmark68TinyNet\n : nets.faceLandmark68Net;\n }\n}\n\nexport class DetectAllFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase[], TSource[]> {\n public async run(): Promise[]> {\n const parentResults = await this.parentTask;\n const detections = parentResults.map((res) => res.detection);\n\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, detections)\n : await extractFaces(this.input, detections);\n\n const faceLandmarksByFace = await Promise.all(faces.map(\n (face) => this.landmarkNet.detectLandmarks(face),\n )) as FaceLandmarks68[];\n\n faces.forEach((f) => f instanceof tf.Tensor && f.dispose());\n\n return parentResults.map((parentResult, i) => extendWithFaceLandmarks(parentResult, faceLandmarksByFace[i]));\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input);\n }\n}\n\nexport class DetectSingleFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase | undefined, TSource | undefined> {\n public async run(): Promise | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n\n const { detection } = parentResult;\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, [detection])\n : await extractFaces(this.input, [detection]);\n\n const landmarks = await this.landmarkNet.detectLandmarks(faces[0]) as FaceLandmarks68;\n\n faces.forEach((f) => f instanceof tf.Tensor && f.dispose());\n\n return extendWithFaceLandmarks(parentResult, landmarks);\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\n\nexport async function extractAllFacesAndComputeResults, TResult>(\n parentResults: TSource[],\n input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n computeResults: (faces: Array) => Promise,\n extractedFaces?: Array | null,\n // eslint-disable-next-line no-unused-vars\n getRectForAlignment: (parentResult: WithFaceLandmarks) => FaceDetection = ({ alignedRect }) => alignedRect,\n) {\n const faceBoxes = parentResults.map((parentResult) => (isWithFaceLandmarks(parentResult)\n ? getRectForAlignment(parentResult)\n : parentResult.detection));\n const faces: Array = extractedFaces || (\n input instanceof tf.Tensor\n ? await extractFaceTensors(input, faceBoxes)\n : await extractFaces(input, faceBoxes)\n );\n\n const results = await computeResults(faces);\n\n faces.forEach((f) => f instanceof tf.Tensor && f.dispose());\n\n return results;\n}\n\nexport async function extractSingleFaceAndComputeResult, TResult>(\n parentResult: TSource,\n input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n computeResult: (face: HTMLCanvasElement | tf.Tensor3D) => Promise,\n extractedFaces?: Array | null,\n // eslint-disable-next-line no-unused-vars\n getRectForAlignment?: (parentResultLocal: WithFaceLandmarks) => FaceDetection,\n) {\n return extractAllFacesAndComputeResults(\n [parentResult],\n input,\n async (faces) => computeResult(faces[0]),\n extractedFaces,\n getRectForAlignment,\n );\n}\n", "import { Point } from '../classes/index';\n\nexport const IOU_THRESHOLD = 0.4;\n\nexport const BOX_ANCHORS = [\n new Point(1.603231, 2.094468),\n new Point(6.041143, 7.080126),\n new Point(2.882459, 3.518061),\n new Point(4.266906, 5.178857),\n new Point(9.041765, 10.66308),\n];\n\nexport const MEAN_RGB: [number, number, number] = [117.001, 114.697, 97.404];\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { FaceDetection, Point } from '../classes/index';\nimport { ParamMapping } from '../common/index';\nimport { TNetInput } from '../dom/index';\nimport { ITinyYolov2Options } from '../tinyYolov2/index';\nimport { TinyYolov2Base } from '../tinyYolov2/TinyYolov2Base';\nimport { TinyYolov2NetParams } from '../tinyYolov2/types';\nimport { BOX_ANCHORS, IOU_THRESHOLD, MEAN_RGB } from './const';\n\nexport class TinyFaceDetector extends TinyYolov2Base {\n constructor() {\n const config = {\n withSeparableConvs: true,\n iouThreshold: IOU_THRESHOLD,\n classes: ['face'],\n anchors: BOX_ANCHORS,\n meanRgb: MEAN_RGB,\n isFirstLayerConv2d: true,\n filterSizes: [3, 16, 32, 64, 128, 256, 512],\n };\n\n super(config);\n }\n\n public get anchors(): Point[] {\n return this.config.anchors;\n }\n\n public async locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise {\n const objectDetections = await this.detect(input, forwardParams);\n return objectDetections.map((det) => new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }));\n }\n\n protected getDefaultModelName(): string {\n return 'tiny_face_detector_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n return super.extractParamsFromWeigthMap(weightMap);\n }\n}\n", "import { AgeGenderNet } from '../ageGenderNet/AgeGenderNet';\nimport { AgeAndGenderPrediction } from '../ageGenderNet/types';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { TNetInput } from '../dom/index';\nimport { FaceExpressionNet } from '../faceExpressionNet/FaceExpressionNet';\nimport { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\nimport { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';\nimport { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';\nimport { FaceRecognitionNet } from '../faceRecognitionNet/FaceRecognitionNet';\nimport { SsdMobilenetv1 } from '../ssdMobilenetv1/SsdMobilenetv1';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { TinyFaceDetector } from '../tinyFaceDetector/TinyFaceDetector';\nimport { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';\nimport { ITinyYolov2Options, TinyYolov2 } from '../tinyYolov2/index';\n\nexport const nets = {\n ssdMobilenetv1: new SsdMobilenetv1(),\n tinyFaceDetector: new TinyFaceDetector(),\n tinyYolov2: new TinyYolov2(),\n faceLandmark68Net: new FaceLandmark68Net(),\n faceLandmark68TinyNet: new FaceLandmark68TinyNet(),\n faceRecognitionNet: new FaceRecognitionNet(),\n faceExpressionNet: new FaceExpressionNet(),\n ageGenderNet: new AgeGenderNet(),\n};\n\n/**\n * Attempts to detect all faces in an image using SSD Mobilenetv1 Network.\n *\n * @param input The input image.\n * @param options (optional, default: see SsdMobilenetv1Options constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const ssdMobilenetv1 = (input: TNetInput, options: SsdMobilenetv1Options): Promise => nets.ssdMobilenetv1.locateFaces(input, options);\n\n/**\n * Attempts to detect all faces in an image using the Tiny Face Detector.\n *\n * @param input The input image.\n * @param options (optional, default: see TinyFaceDetectorOptions constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const tinyFaceDetector = (input: TNetInput, options: TinyFaceDetectorOptions): Promise => nets.tinyFaceDetector.locateFaces(input, options);\n\n/**\n * Attempts to detect all faces in an image using the Tiny Yolov2 Network.\n *\n * @param input The input image.\n * @param options (optional, default: see TinyYolov2Options constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const tinyYolov2 = (input: TNetInput, options: ITinyYolov2Options): Promise => nets.tinyYolov2.locateFaces(input, options);\n\n/**\n * Detects the 68 point face landmark positions of the face shown in an image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns 68 point face landmarks or array thereof in case of batch input.\n */\nexport const detectFaceLandmarks = (input: TNetInput): Promise => nets.faceLandmark68Net.detectLandmarks(input);\n\n/**\n * Detects the 68 point face landmark positions of the face shown in an image\n * using a tinier version of the 68 point face landmark model, which is slightly\n * faster at inference, but also slightly less accurate.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns 68 point face landmarks or array thereof in case of batch input.\n */\nexport const detectFaceLandmarksTiny = (input: TNetInput): Promise => nets.faceLandmark68TinyNet.detectLandmarks(input);\n\n/**\n * Computes a 128 entry vector (face descriptor / face embeddings) from the face shown in an image,\n * which uniquely represents the features of that persons face. The computed face descriptor can\n * be used to measure the similarity between faces, by computing the euclidean distance of two\n * face descriptors.\n *\n * @param inputs The face image extracted from the aligned bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Face descriptor with 128 entries or array thereof in case of batch input.\n */\nexport const computeFaceDescriptor = (input: TNetInput): Promise => nets.faceRecognitionNet.computeFaceDescriptor(input);\n\n/**\n * Recognizes the facial expressions from a face image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Facial expressions with corresponding probabilities or array thereof in case of batch input.\n */\nexport const recognizeFaceExpressions = (input: TNetInput): Promise => nets.faceExpressionNet.predictExpressions(input);\n\n/**\n * Predicts age and gender from a face image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Predictions with age, gender and gender probability or array thereof in case of batch input.\n */\nexport const predictAgeAndGender = (input: TNetInput): Promise => nets.ageGenderNet.predictAgeAndGender(input);\n\nexport const loadSsdMobilenetv1Model = (url: string) => nets.ssdMobilenetv1.load(url);\nexport const loadTinyFaceDetectorModel = (url: string) => nets.tinyFaceDetector.load(url);\nexport const loadTinyYolov2Model = (url: string) => nets.tinyYolov2.load(url);\nexport const loadFaceLandmarkModel = (url: string) => nets.faceLandmark68Net.load(url);\nexport const loadFaceLandmarkTinyModel = (url: string) => nets.faceLandmark68TinyNet.load(url);\nexport const loadFaceRecognitionModel = (url: string) => nets.faceRecognitionNet.load(url);\nexport const loadFaceExpressionModel = (url: string) => nets.faceExpressionNet.load(url);\nexport const loadAgeGenderModel = (url: string) => nets.ageGenderNet.load(url);\n\n// backward compatibility\nexport const loadFaceDetectionModel = loadSsdMobilenetv1Model;\nexport const locateFaces = ssdMobilenetv1;\nexport const detectLandmarks = detectFaceLandmarks;\n", "/* eslint-disable max-classes-per-file */\nimport * as tf from '../../dist/tfjs.esm';\n\nimport { TNetInput } from '../dom/index';\nimport { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { extendWithFaceExpressions, WithFaceExpressions } from '../factories/WithFaceExpressions';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderTask,\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\n\nexport class PredictFaceExpressionsTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected extractedFaces?: Array,\n ) {\n super();\n }\n}\n\nexport class PredictAllFaceExpressionsTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictFaceExpressionsTaskBase[], TSource[]> {\n public async run(): Promise[]> {\n const parentResults = await this.parentTask;\n\n const faceExpressionsByFace = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n async (faces) => Promise.all(faces.map(\n (face) => nets.faceExpressionNet.predictExpressions(face) as Promise,\n )),\n this.extractedFaces,\n );\n\n return parentResults.map(\n (parentResult, i) => extendWithFaceExpressions(parentResult, faceExpressionsByFace[i]),\n );\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderTask(this, this.input);\n }\n}\n\nexport class PredictSingleFaceExpressionsTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictFaceExpressionsTaskBase | undefined, TSource | undefined> {\n public async run(): Promise | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n\n const faceExpressions = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n (face) => nets.faceExpressionNet.predictExpressions(face) as Promise,\n this.extractedFaces,\n );\n\n return extendWithFaceExpressions(parentResult, faceExpressions);\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderTask(this, this.input);\n }\n}\n\nexport class PredictAllFaceExpressionsWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictAllFaceExpressionsTask {\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input);\n }\n}\n\nexport class PredictSingleFaceExpressionsWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictSingleFaceExpressionsTask {\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input);\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport * as tf from '../../dist/tfjs.esm';\n\nimport { AgeAndGenderPrediction } from '../ageGenderNet/types';\nimport { TNetInput } from '../dom/index';\nimport { extendWithAge, WithAge } from '../factories/WithAge';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { extendWithGender, WithGender } from '../factories/WithGender';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllFaceExpressionsTask,\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class PredictAgeAndGenderTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected extractedFaces?: Array,\n ) {\n super();\n }\n}\n\nexport class PredictAllAgeAndGenderTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictAgeAndGenderTaskBase>[], TSource[]> {\n public async run(): Promise>[]> {\n const parentResults = await this.parentTask;\n\n const ageAndGenderByFace = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n async (faces) => Promise.all(faces.map(\n (face) => nets.ageGenderNet.predictAgeAndGender(face) as Promise,\n )),\n this.extractedFaces,\n );\n\n return parentResults.map((parentResult, i) => {\n const { age, gender, genderProbability } = ageAndGenderByFace[i];\n return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age);\n });\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsTask(this, this.input);\n }\n}\n\nexport class PredictSingleAgeAndGenderTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictAgeAndGenderTaskBase> | undefined, TSource | undefined> {\n public async run(): Promise> | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n\n const { age, gender, genderProbability } = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n (face) => nets.ageGenderNet.predictAgeAndGender(face) as Promise,\n this.extractedFaces,\n );\n\n return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age);\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsTask(this, this.input);\n }\n}\n\nexport class PredictAllAgeAndGenderWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictAllAgeAndGenderTask {\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input);\n }\n}\n\nexport class PredictSingleAgeAndGenderWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictSingleAgeAndGenderTask {\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input);\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport { TNetInput } from '../dom/index';\nimport { extendWithFaceDescriptor, WithFaceDescriptor } from '../factories/WithFaceDescriptor';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\nimport {\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class ComputeFaceDescriptorsTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n ) {\n super();\n }\n}\n\nexport class ComputeAllFaceDescriptorsTask<\n TSource extends WithFaceLandmarks>\n> extends ComputeFaceDescriptorsTaskBase[], TSource[]> {\n public async run(): Promise[]> {\n const parentResults = await this.parentTask;\n\n const descriptors = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n (faces) => Promise.all(faces.map((face) => nets.faceRecognitionNet.computeFaceDescriptor(face) as Promise)),\n null,\n (parentResult) => parentResult.landmarks.align(null, { useDlibAlignment: true }),\n );\n\n return descriptors.map((descriptor, i) => extendWithFaceDescriptor(parentResults[i], descriptor));\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n}\n\nexport class ComputeSingleFaceDescriptorTask<\n TSource extends WithFaceLandmarks>\n> extends ComputeFaceDescriptorsTaskBase | undefined, TSource | undefined> {\n public async run(): Promise | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n const descriptor = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n (face) => nets.faceRecognitionNet.computeFaceDescriptor(face) as Promise,\n null,\n // eslint-disable-next-line no-shadow\n (parentResult) => parentResult.landmarks.align(null, { useDlibAlignment: true }),\n );\n\n return extendWithFaceDescriptor(parentResult, descriptor);\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { TNetInput } from '../dom/index';\nimport { extendWithFaceDetection, WithFaceDetection } from '../factories/WithFaceDetection';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';\nimport { TinyYolov2Options } from '../tinyYolov2/index';\nimport { ComposableTask } from './ComposableTask';\nimport { DetectAllFaceLandmarksTask, DetectSingleFaceLandmarksTask } from './DetectFaceLandmarksTasks';\nimport { nets } from './nets';\nimport { PredictAllAgeAndGenderTask, PredictSingleAgeAndGenderTask } from './PredictAgeAndGenderTask';\nimport { PredictAllFaceExpressionsTask, PredictSingleFaceExpressionsTask } from './PredictFaceExpressionsTask';\nimport { FaceDetectionOptions } from './types';\n\nexport class DetectFacesTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected options: FaceDetectionOptions = new SsdMobilenetv1Options(),\n ) {\n super();\n }\n}\n\nexport class DetectAllFacesTask extends DetectFacesTaskBase {\n public async run(): Promise {\n const { input, options } = this;\n\n // eslint-disable-next-line no-nested-ternary\n const faceDetectionFunction = options instanceof TinyFaceDetectorOptions\n // eslint-disable-next-line no-shadow\n ? (input: TNetInput) => nets.tinyFaceDetector.locateFaces(input, options)\n : (\n // eslint-disable-next-line no-nested-ternary\n options instanceof SsdMobilenetv1Options\n // eslint-disable-next-line no-shadow\n ? (input: TNetInput) => nets.ssdMobilenetv1.locateFaces(input, options)\n : (\n options instanceof TinyYolov2Options\n // eslint-disable-next-line no-shadow\n ? (input: TNetInput) => nets.tinyYolov2.locateFaces(input, options)\n : null\n )\n );\n\n if (!faceDetectionFunction) {\n throw new Error('detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options');\n }\n\n return faceDetectionFunction(input);\n }\n\n private runAndExtendWithFaceDetections(): Promise[]> {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise[]>(async (resolve) => {\n const detections = await this.run();\n resolve(detections.map((detection) => extendWithFaceDetection({}, detection)));\n });\n }\n\n withFaceLandmarks(useTinyLandmarkNet: boolean = false) {\n return new DetectAllFaceLandmarksTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n useTinyLandmarkNet,\n );\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n );\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n );\n }\n}\n\nexport class DetectSingleFaceTask extends DetectFacesTaskBase {\n public async run(): Promise {\n const faceDetections = await new DetectAllFacesTask(this.input, this.options);\n let faceDetectionWithHighestScore = faceDetections[0];\n faceDetections.forEach((faceDetection) => {\n if (faceDetection.score > faceDetectionWithHighestScore.score) {\n faceDetectionWithHighestScore = faceDetection;\n }\n });\n return faceDetectionWithHighestScore;\n }\n\n private runAndExtendWithFaceDetection(): Promise | undefined> {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise | undefined>(async (resolve) => {\n const detection = await this.run();\n resolve(detection ? extendWithFaceDetection<{}>({}, detection) : undefined);\n });\n }\n\n withFaceLandmarks(useTinyLandmarkNet: boolean = false) {\n return new DetectSingleFaceLandmarksTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n useTinyLandmarkNet,\n );\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n );\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n );\n }\n}\n", "import { TNetInput } from '../dom/index';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { DetectAllFacesTask, DetectSingleFaceTask } from './DetectFacesTasks';\nimport { FaceDetectionOptions } from './types';\n\nexport function detectSingleFace(\n input: TNetInput,\n options: FaceDetectionOptions = new SsdMobilenetv1Options(),\n): DetectSingleFaceTask {\n return new DetectSingleFaceTask(input, options);\n}\n\nexport function detectAllFaces(\n input: TNetInput,\n options: FaceDetectionOptions = new SsdMobilenetv1Options(),\n): DetectAllFacesTask {\n return new DetectAllFacesTask(input, options);\n}\n", "import { TNetInput } from '../dom/index';\nimport { WithFaceDescriptor, WithFaceDetection, WithFaceLandmarks } from '../factories/index';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/index';\nimport { ITinyYolov2Options, TinyYolov2Options } from '../tinyYolov2/index';\nimport { detectAllFaces } from './detectFaces';\n\n// export allFaces API for backward compatibility\n\nexport async function allFacesSsdMobilenetv1(\n input: TNetInput,\n minConfidence?: number,\n): Promise>>[]> {\n return detectAllFaces(input, new SsdMobilenetv1Options(minConfidence ? { minConfidence } : {}))\n .withFaceLandmarks()\n .withFaceDescriptors();\n}\n\nexport async function allFacesTinyYolov2(\n input: TNetInput,\n forwardParams: ITinyYolov2Options = {},\n): Promise>>[]> {\n return detectAllFaces(input, new TinyYolov2Options(forwardParams))\n .withFaceLandmarks()\n .withFaceDescriptors();\n}\n\nexport const allFaces = allFacesSsdMobilenetv1;\n", "export function euclideanDistance(arr1: number[] | Float32Array, arr2: number[] | Float32Array) {\n if (arr1.length !== arr2.length) throw new Error('euclideanDistance: arr1.length !== arr2.length');\n\n const desc1 = Array.from(arr1);\n const desc2 = Array.from(arr2);\n\n return Math.sqrt(\n desc1\n .map((val, i) => val - desc2[i])\n .reduce((res, diff) => res + (diff ** 2), 0),\n );\n}\n", "import { FaceMatch } from '../classes/FaceMatch';\nimport { LabeledFaceDescriptors } from '../classes/LabeledFaceDescriptors';\nimport { euclideanDistance } from '../euclideanDistance';\nimport { WithFaceDescriptor } from '../factories/index';\n\nexport class FaceMatcher {\n private _labeledDescriptors: LabeledFaceDescriptors[]\n\n private _distanceThreshold: number\n\n constructor(\n inputs: LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>,\n distanceThreshold: number = 0.6,\n ) {\n this._distanceThreshold = distanceThreshold;\n\n const inputArray = Array.isArray(inputs) ? inputs : [inputs];\n\n if (!inputArray.length) {\n throw new Error('FaceRecognizer.constructor - expected atleast one input');\n }\n\n let count = 1;\n const createUniqueLabel = () => `person ${count++}`;\n\n this._labeledDescriptors = inputArray.map((desc) => {\n if (desc instanceof LabeledFaceDescriptors) {\n return desc;\n }\n\n if (desc instanceof Float32Array) {\n return new LabeledFaceDescriptors(createUniqueLabel(), [desc]);\n }\n\n if (desc.descriptor && desc.descriptor instanceof Float32Array) {\n return new LabeledFaceDescriptors(createUniqueLabel(), [desc.descriptor]);\n }\n\n throw new Error('FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>');\n });\n }\n\n public get labeledDescriptors(): LabeledFaceDescriptors[] { return this._labeledDescriptors; }\n\n public get distanceThreshold(): number { return this._distanceThreshold; }\n\n public computeMeanDistance(queryDescriptor: Float32Array, descriptors: Float32Array[]): number {\n return descriptors\n .map((d) => euclideanDistance(d, queryDescriptor))\n .reduce((d1, d2) => d1 + d2, 0)\n / (descriptors.length || 1);\n }\n\n public matchDescriptor(queryDescriptor: Float32Array): FaceMatch {\n return this.labeledDescriptors\n .map(({ descriptors, label }) => new FaceMatch(\n label,\n this.computeMeanDistance(queryDescriptor, descriptors),\n ))\n .reduce((best, curr) => (best.distance < curr.distance ? best : curr));\n }\n\n public findBestMatch(queryDescriptor: Float32Array): FaceMatch {\n const bestMatch = this.matchDescriptor(queryDescriptor);\n return bestMatch.distance < this.distanceThreshold\n ? bestMatch\n : new FaceMatch('unknown', bestMatch.distance);\n }\n\n public toJSON(): any {\n return {\n distanceThreshold: this.distanceThreshold,\n labeledDescriptors: this.labeledDescriptors.map((ld) => ld.toJSON()),\n };\n }\n\n public static fromJSON(json: any): FaceMatcher {\n const labeledDescriptors = json.labeledDescriptors\n .map((ld: any) => LabeledFaceDescriptors.fromJSON(ld));\n return new FaceMatcher(labeledDescriptors, json.distanceThreshold);\n }\n}\n", "import { TinyFaceDetector } from './TinyFaceDetector';\n\nexport * from './TinyFaceDetector';\nexport * from './TinyFaceDetectorOptions';\n\nexport function createTinyFaceDetector(weights: Float32Array) {\n const net = new TinyFaceDetector();\n net.extractWeights(weights);\n return net;\n}\n", "import { Dimensions, IDimensions } from './classes/index';\nimport { FaceDetection } from './classes/FaceDetection';\nimport { FaceLandmarks } from './classes/FaceLandmarks';\nimport { extendWithFaceDetection, isWithFaceDetection } from './factories/WithFaceDetection';\nimport { extendWithFaceLandmarks, isWithFaceLandmarks } from './factories/WithFaceLandmarks';\n\nexport function resizeResults(results: T, dimensions: IDimensions): T {\n const { width, height } = new Dimensions(dimensions.width, dimensions.height);\n\n if (width <= 0 || height <= 0) {\n throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({ width, height })}`);\n }\n\n if (Array.isArray(results)) {\n // return results.map(obj => resizeResults(obj, { width, height })) as any as T\n return (results as Array).map((obj) => resizeResults(obj, { width, height } as IDimensions)) as any as T;\n }\n\n if (isWithFaceLandmarks(results)) {\n const resizedDetection = results.detection.forSize(width, height);\n const resizedLandmarks = results.unshiftedLandmarks.forSize(resizedDetection.box.width, resizedDetection.box.height);\n return extendWithFaceLandmarks(extendWithFaceDetection(results, resizedDetection), resizedLandmarks);\n }\n\n if (isWithFaceDetection(results)) {\n return extendWithFaceDetection(results, results.detection.forSize(width, height));\n }\n\n if (results instanceof FaceLandmarks || results instanceof FaceDetection) {\n return (results as any).forSize(width, height);\n }\n\n return results;\n}\n"], - "mappings": "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", + "mappings": "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", "names": [] } diff --git a/dist/face-api.node-gpu.json b/dist/face-api.node-gpu.json index 0ecc469..874ff3d 100644 --- a/dist/face-api.node-gpu.json +++ b/dist/face-api.node-gpu.json @@ -1,7 +1,7 @@ { "inputs": { "dist/tfjs.esm.js": { - "bytes": 1054, + "bytes": 679, "imports": [] }, "src/draw/drawContour.ts": { @@ -1077,7 +1077,7 @@ ] }, "package.json": { - "bytes": 1807, + "bytes": 1839, "imports": [] }, "src/xception/extractParams.ts": { @@ -2136,482 +2136,482 @@ "dist/face-api.node-gpu.js.map": { "imports": [], "inputs": {}, - "bytes": 311396 + "bytes": 310112 }, "dist/face-api.node-gpu.js": { "imports": [], "exports": [], "inputs": { "dist/tfjs.esm.js": { - "bytesInOutput": 971 + "bytesInOutput": 546 }, "src/env/isNodejs.ts": { - "bytesInOutput": 233 + "bytesInOutput": 169 }, "src/index.ts": { - "bytesInOutput": 4729 + "bytesInOutput": 3003 }, "src/draw/index.ts": { - "bytesInOutput": 451 + "bytesInOutput": 277 }, "src/draw/drawContour.ts": { - "bytesInOutput": 313 + "bytesInOutput": 213 }, "src/utils/index.ts": { - "bytesInOutput": 1560 + "bytesInOutput": 1011 }, "src/classes/Dimensions.ts": { - "bytesInOutput": 398 + "bytesInOutput": 335 }, "src/classes/Point.ts": { - "bytesInOutput": 473 + "bytesInOutput": 433 }, "src/classes/Box.ts": { - "bytesInOutput": 3305 + "bytesInOutput": 2646 }, "src/classes/BoundingBox.ts": { - "bytesInOutput": 153 + "bytesInOutput": 92 }, "src/classes/index.ts": { "bytesInOutput": 0 }, "src/classes/ObjectDetection.ts": { - "bytesInOutput": 754 + "bytesInOutput": 624 }, "src/classes/FaceDetection.ts": { - "bytesInOutput": 272 - }, - "src/ops/iou.ts": { - "bytesInOutput": 328 - }, - "src/ops/index.ts": { - "bytesInOutput": 98 - }, - "src/ops/minBbox.ts": { - "bytesInOutput": 282 - }, - "src/ops/nonMaxSuppression.ts": { - "bytesInOutput": 555 - }, - "src/ops/normalize.ts": { - "bytesInOutput": 341 - }, - "src/ops/padToSquare.ts": { - "bytesInOutput": 846 - }, - "src/ops/shuffleArray.ts": { - "bytesInOutput": 188 - }, - "src/classes/Rect.ts": { - "bytesInOutput": 136 - }, - "src/classes/FaceLandmarks.ts": { - "bytesInOutput": 1888 - }, - "src/classes/FaceLandmarks5.ts": { "bytesInOutput": 153 }, - "src/classes/FaceLandmarks68.ts": { - "bytesInOutput": 501 + "src/ops/iou.ts": { + "bytesInOutput": 215 }, - "src/classes/FaceMatch.ts": { + "src/ops/index.ts": { + "bytesInOutput": 81 + }, + "src/ops/minBbox.ts": { + "bytesInOutput": 204 + }, + "src/ops/nonMaxSuppression.ts": { + "bytesInOutput": 282 + }, + "src/ops/normalize.ts": { "bytesInOutput": 255 }, + "src/ops/padToSquare.ts": { + "bytesInOutput": 332 + }, + "src/ops/shuffleArray.ts": { + "bytesInOutput": 132 + }, + "src/classes/Rect.ts": { + "bytesInOutput": 87 + }, + "src/classes/FaceLandmarks.ts": { + "bytesInOutput": 1393 + }, + "src/classes/FaceLandmarks5.ts": { + "bytesInOutput": 107 + }, + "src/classes/FaceLandmarks68.ts": { + "bytesInOutput": 464 + }, + "src/classes/FaceMatch.ts": { + "bytesInOutput": 201 + }, "src/classes/LabeledBox.ts": { - "bytesInOutput": 308 + "bytesInOutput": 250 }, "src/classes/LabeledFaceDescriptors.ts": { - "bytesInOutput": 722 + "bytesInOutput": 595 }, "src/classes/PredictedBox.ts": { - "bytesInOutput": 508 + "bytesInOutput": 385 }, "src/factories/WithFaceDetection.ts": { - "bytesInOutput": 170 + "bytesInOutput": 94 }, "src/env/createBrowserEnv.ts": { - "bytesInOutput": 478 + "bytesInOutput": 453 }, "src/env/createFileSystem.ts": { - "bytesInOutput": 361 + "bytesInOutput": 247 }, "src/env/createNodejsEnv.ts": { - "bytesInOutput": 714 + "bytesInOutput": 600 }, "src/env/isBrowser.ts": { - "bytesInOutput": 274 + "bytesInOutput": 267 }, "src/env/index.ts": { - "bytesInOutput": 1157 + "bytesInOutput": 790 }, "src/dom/resolveInput.ts": { - "bytesInOutput": 104 + "bytesInOutput": 84 }, "src/dom/getContext2dOrThrow.ts": { - "bytesInOutput": 446 + "bytesInOutput": 312 }, "src/draw/DrawTextField.ts": { - "bytesInOutput": 2255 + "bytesInOutput": 1484 }, "src/draw/DrawBox.ts": { - "bytesInOutput": 825 + "bytesInOutput": 581 }, "src/draw/drawDetections.ts": { - "bytesInOutput": 390 + "bytesInOutput": 220 }, "src/faceExpressionNet/FaceExpressionNet.ts": { - "bytesInOutput": 878 + "bytesInOutput": 567 }, "src/dom/isMediaLoaded.ts": { - "bytesInOutput": 151 + "bytesInOutput": 114 }, "src/dom/awaitMediaLoaded.ts": { - "bytesInOutput": 542 + "bytesInOutput": 423 }, "src/dom/index.ts": { "bytesInOutput": 0 }, "src/dom/bufferToImage.ts": { - "bytesInOutput": 482 + "bytesInOutput": 386 }, "src/dom/getMediaDimensions.ts": { - "bytesInOutput": 265 + "bytesInOutput": 180 }, "src/dom/createCanvas.ts": { - "bytesInOutput": 618 + "bytesInOutput": 389 }, "src/dom/imageTensorToCanvas.ts": { - "bytesInOutput": 398 + "bytesInOutput": 200 }, "src/dom/isMediaElement.ts": { - "bytesInOutput": 147 + "bytesInOutput": 110 }, "src/dom/NetInput.ts": { - "bytesInOutput": 2884 + "bytesInOutput": 2214 }, "src/dom/imageToSquare.ts": { - "bytesInOutput": 704 + "bytesInOutput": 381 }, "src/dom/toNetInput.ts": { - "bytesInOutput": 1104 + "bytesInOutput": 773 }, "src/dom/extractFaces.ts": { - "bytesInOutput": 752 + "bytesInOutput": 475 }, "src/dom/extractFaceTensors.ts": { - "bytesInOutput": 733 + "bytesInOutput": 442 }, "src/dom/fetchOrThrow.ts": { - "bytesInOutput": 212 + "bytesInOutput": 176 }, "src/dom/fetchImage.ts": { - "bytesInOutput": 269 + "bytesInOutput": 218 }, "src/dom/fetchJson.ts": { - "bytesInOutput": 69 + "bytesInOutput": 48 }, "src/dom/fetchNetWeights.ts": { - "bytesInOutput": 106 + "bytesInOutput": 79 }, "src/dom/loadWeightMap.ts": { - "bytesInOutput": 242 + "bytesInOutput": 123 }, "src/common/getModelUris.ts": { - "bytesInOutput": 765 + "bytesInOutput": 473 }, "src/dom/matchDimensions.ts": { - "bytesInOutput": 201 + "bytesInOutput": 101 }, "src/faceFeatureExtractor/FaceFeatureExtractor.ts": { - "bytesInOutput": 897 + "bytesInOutput": 621 }, "src/NeuralNetwork.ts": { - "bytesInOutput": 3292 + "bytesInOutput": 2640 }, "src/faceFeatureExtractor/denseBlock.ts": { - "bytesInOutput": 1176 + "bytesInOutput": 568 }, "src/common/depthwiseSeparableConv.ts": { - "bytesInOutput": 244 + "bytesInOutput": 157 }, "src/common/convLayer.ts": { - "bytesInOutput": 229 + "bytesInOutput": 141 }, "src/common/index.ts": { "bytesInOutput": 0 }, "src/common/disposeUnusedWeightTensors.ts": { - "bytesInOutput": 175 + "bytesInOutput": 91 }, "src/common/extractConvParamsFactory.ts": { - "bytesInOutput": 460 + "bytesInOutput": 195 }, "src/common/extractFCParamsFactory.ts": { - "bytesInOutput": 428 + "bytesInOutput": 185 }, "src/common/extractSeparableConvParamsFactory.ts": { - "bytesInOutput": 946 + "bytesInOutput": 396 }, "src/common/types.ts": { - "bytesInOutput": 177 + "bytesInOutput": 94 }, "src/common/extractWeightEntryFactory.ts": { - "bytesInOutput": 366 + "bytesInOutput": 188 }, "src/common/extractWeightsFactory.ts": { - "bytesInOutput": 311 + "bytesInOutput": 146 }, "src/faceFeatureExtractor/extractorsFactory.ts": { - "bytesInOutput": 1047 + "bytesInOutput": 377 }, "src/faceFeatureExtractor/extractParams.ts": { - "bytesInOutput": 570 + "bytesInOutput": 343 }, "src/common/loadConvParamsFactory.ts": { - "bytesInOutput": 187 + "bytesInOutput": 97 }, "src/faceFeatureExtractor/loadParamsFactory.ts": { - "bytesInOutput": 984 + "bytesInOutput": 388 }, "src/faceFeatureExtractor/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 400 + "bytesInOutput": 185 }, "src/faceProcessor/FaceProcessor.ts": { - "bytesInOutput": 1585 + "bytesInOutput": 1037 }, "src/common/fullyConnectedLayer.ts": { - "bytesInOutput": 153 + "bytesInOutput": 89 }, "src/faceProcessor/extractParams.ts": { - "bytesInOutput": 382 + "bytesInOutput": 214 }, "src/faceProcessor/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 411 + "bytesInOutput": 177 }, "src/faceProcessor/util.ts": { - "bytesInOutput": 252 + "bytesInOutput": 144 }, "src/faceExpressionNet/FaceExpressions.ts": { - "bytesInOutput": 532 + "bytesInOutput": 369 }, "src/faceExpressionNet/index.ts": { "bytesInOutput": 0 }, "src/factories/WithFaceExpressions.ts": { - "bytesInOutput": 182 + "bytesInOutput": 99 }, "src/draw/drawFaceExpressions.ts": { - "bytesInOutput": 717 + "bytesInOutput": 420 }, "src/factories/WithFaceLandmarks.ts": { - "bytesInOutput": 572 + "bytesInOutput": 333 }, "src/draw/DrawFaceLandmarks.ts": { - "bytesInOutput": 1723 + "bytesInOutput": 1225 }, "package.json": { - "bytesInOutput": 21 + "bytesInOutput": 16 }, "src/ageGenderNet/AgeGenderNet.ts": { - "bytesInOutput": 2559 + "bytesInOutput": 1688 }, "src/xception/TinyXception.ts": { - "bytesInOutput": 1905 + "bytesInOutput": 1265 }, "src/xception/extractParams.ts": { - "bytesInOutput": 2443 + "bytesInOutput": 1234 }, "src/xception/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 2161 + "bytesInOutput": 1047 }, "src/ageGenderNet/extractParams.ts": { - "bytesInOutput": 434 + "bytesInOutput": 258 }, "src/ageGenderNet/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 457 + "bytesInOutput": 209 }, "src/ageGenderNet/types.ts": { - "bytesInOutput": 97 + "bytesInOutput": 67 }, "src/ageGenderNet/index.ts": { "bytesInOutput": 0 }, "src/faceLandmarkNet/FaceLandmark68NetBase.ts": { - "bytesInOutput": 2035 + "bytesInOutput": 1177 }, "src/faceLandmarkNet/FaceLandmark68Net.ts": { - "bytesInOutput": 257 + "bytesInOutput": 167 }, "src/faceLandmarkNet/index.ts": { - "bytesInOutput": 54 + "bytesInOutput": 26 }, "src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts": { - "bytesInOutput": 889 + "bytesInOutput": 619 }, "src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts": { - "bytesInOutput": 362 + "bytesInOutput": 166 }, "src/faceFeatureExtractor/extractParamsTiny.ts": { - "bytesInOutput": 517 + "bytesInOutput": 312 }, "src/faceLandmarkNet/FaceLandmark68TinyNet.ts": { - "bytesInOutput": 274 + "bytesInOutput": 176 }, "src/faceRecognitionNet/FaceRecognitionNet.ts": { - "bytesInOutput": 1706 + "bytesInOutput": 1062 }, "src/faceRecognitionNet/convLayer.ts": { - "bytesInOutput": 463 + "bytesInOutput": 277 }, "src/faceRecognitionNet/scaleLayer.ts": { - "bytesInOutput": 123 + "bytesInOutput": 75 }, "src/faceRecognitionNet/extractParams.ts": { - "bytesInOutput": 3405 + "bytesInOutput": 1803 }, "src/faceRecognitionNet/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 2099 + "bytesInOutput": 1113 }, "src/faceRecognitionNet/residualLayer.ts": { - "bytesInOutput": 778 + "bytesInOutput": 466 }, "src/faceRecognitionNet/index.ts": { - "bytesInOutput": 113 + "bytesInOutput": 57 }, "src/factories/WithFaceDescriptor.ts": { - "bytesInOutput": 93 + "bytesInOutput": 48 }, "src/factories/index.ts": { "bytesInOutput": 0 }, "src/factories/WithAge.ts": { - "bytesInOutput": 124 + "bytesInOutput": 86 }, "src/factories/WithGender.ts": { - "bytesInOutput": 244 + "bytesInOutput": 155 }, "src/ssdMobilenetv1/SsdMobilenetv1.ts": { - "bytesInOutput": 1905 + "bytesInOutput": 1224 }, "src/ssdMobilenetv1/extractParams.ts": { - "bytesInOutput": 5967 + "bytesInOutput": 3588 }, "src/ssdMobilenetv1/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 4319 + "bytesInOutput": 2463 }, "src/ssdMobilenetv1/mobileNetV1.ts": { - "bytesInOutput": 1111 + "bytesInOutput": 715 }, "src/ssdMobilenetv1/pointwiseConvLayer.ts": { - "bytesInOutput": 239 + "bytesInOutput": 153 }, "src/ssdMobilenetv1/nonMaxSuppression.ts": { - "bytesInOutput": 1504 + "bytesInOutput": 792 }, "src/ssdMobilenetv1/outputLayer.ts": { - "bytesInOutput": 1590 + "bytesInOutput": 927 }, "src/ssdMobilenetv1/predictionLayer.ts": { - "bytesInOutput": 1419 + "bytesInOutput": 721 }, "src/ssdMobilenetv1/boxPredictionLayer.ts": { - "bytesInOutput": 354 + "bytesInOutput": 223 }, "src/ssdMobilenetv1/SsdMobilenetv1Options.ts": { - "bytesInOutput": 555 + "bytesInOutput": 518 }, "src/ssdMobilenetv1/index.ts": { - "bytesInOutput": 235 + "bytesInOutput": 111 }, "src/tinyYolov2/const.ts": { - "bytesInOutput": 490 + "bytesInOutput": 348 }, "src/tinyYolov2/TinyYolov2Base.ts": { - "bytesInOutput": 5894 + "bytesInOutput": 3656 }, "src/tinyYolov2/config.ts": { - "bytesInOutput": 1168 + "bytesInOutput": 1012 }, "src/tinyYolov2/convWithBatchNorm.ts": { - "bytesInOutput": 323 + "bytesInOutput": 215 }, "src/tinyYolov2/leaky.ts": { - "bytesInOutput": 182 + "bytesInOutput": 128 }, "src/tinyYolov2/depthwiseSeparableConv.ts": { - "bytesInOutput": 293 + "bytesInOutput": 203 }, "src/tinyYolov2/extractParams.ts": { - "bytesInOutput": 2551 + "bytesInOutput": 1290 }, "src/tinyYolov2/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 2034 + "bytesInOutput": 972 }, "src/tinyYolov2/TinyYolov2Options.ts": { - "bytesInOutput": 588 + "bytesInOutput": 556 }, "src/tinyYolov2/TinyYolov2.ts": { - "bytesInOutput": 779 + "bytesInOutput": 545 }, "src/tinyYolov2/index.ts": { - "bytesInOutput": 139 + "bytesInOutput": 65 }, "src/tinyFaceDetector/TinyFaceDetectorOptions.ts": { - "bytesInOutput": 133 + "bytesInOutput": 97 }, "src/globalApi/ComposableTask.ts": { - "bytesInOutput": 159 + "bytesInOutput": 127 }, "src/globalApi/DetectFaceLandmarksTasks.ts": { - "bytesInOutput": 1926 + "bytesInOutput": 1133 }, "src/globalApi/extractFacesAndComputeResults.ts": { - "bytesInOutput": 816 + "bytesInOutput": 300 }, "src/tinyFaceDetector/const.ts": { - "bytesInOutput": 216 + "bytesInOutput": 168 }, "src/tinyFaceDetector/TinyFaceDetector.ts": { - "bytesInOutput": 629 + "bytesInOutput": 495 }, "src/globalApi/nets.ts": { - "bytesInOutput": 1520 + "bytesInOutput": 844 }, "src/globalApi/PredictFaceExpressionsTask.ts": { - "bytesInOutput": 1700 + "bytesInOutput": 852 }, "src/globalApi/PredictAgeAndGenderTask.ts": { - "bytesInOutput": 1794 + "bytesInOutput": 957 }, "src/globalApi/ComputeFaceDescriptorsTasks.ts": { - "bytesInOutput": 1399 + "bytesInOutput": 752 }, "src/globalApi/DetectFacesTasks.ts": { - "bytesInOutput": 2225 + "bytesInOutput": 1343 }, "src/globalApi/detectFaces.ts": { - "bytesInOutput": 224 + "bytesInOutput": 84 }, "src/globalApi/allFaces.ts": { - "bytesInOutput": 392 + "bytesInOutput": 209 }, "src/globalApi/index.ts": { "bytesInOutput": 0 }, "src/euclideanDistance.ts": { - "bytesInOutput": 268 + "bytesInOutput": 205 }, "src/globalApi/FaceMatcher.ts": { - "bytesInOutput": 1844 + "bytesInOutput": 1333 }, "src/tinyFaceDetector/index.ts": { - "bytesInOutput": 109 + "bytesInOutput": 57 }, "src/resizeResults.ts": { - "bytesInOutput": 824 + "bytesInOutput": 443 } }, - "bytes": 132477 + "bytes": 82583 } } } diff --git a/dist/face-api.node.js b/dist/face-api.node.js index 1295b97..23aae57 100644 --- a/dist/face-api.node.js +++ b/dist/face-api.node.js @@ -5,5 +5,5 @@ author: ' */ -var __create=Object.create,__defProp=Object.defineProperty,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropDesc=Object.getOwnPropertyDescriptor;var __markAsModule=target=>__defProp(target,"__esModule",{value:!0});var __commonJS=(callback,module2)=>()=>(module2||(module2={exports:{}},callback(module2.exports,module2)),module2.exports),__export=(target,all)=>{__markAsModule(target);for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__exportStar=(target,module2,desc)=>{if(__markAsModule(target),module2&&typeof module2=="object"||typeof module2=="function")for(let key of __getOwnPropNames(module2))!__hasOwnProp.call(target,key)&&key!=="default"&&__defProp(target,key,{get:()=>module2[key],enumerable:!(desc=__getOwnPropDesc(module2,key))||desc.enumerable});return target},__toModule=module2=>module2&&module2.__esModule?module2:__exportStar(__defProp(module2!=null?__create(__getProtoOf(module2)):{},"default",{value:module2,enumerable:!0}),module2);var require_tfjs_esm=__commonJS(exports2=>{var __create2=Object.create,__defProp2=Object.defineProperty,__getProtoOf2=Object.getPrototypeOf,__hasOwnProp2=Object.prototype.hasOwnProperty,__getOwnPropNames2=Object.getOwnPropertyNames,__getOwnPropDesc2=Object.getOwnPropertyDescriptor,__markAsModule2=target=>__defProp2(target,"__esModule",{value:!0}),__exportStar2=(target,module22,desc)=>{if(__markAsModule2(target),module22&&typeof module22=="object"||typeof module22=="function")for(let key of __getOwnPropNames2(module22))!__hasOwnProp2.call(target,key)&&key!=="default"&&__defProp2(target,key,{get:()=>module22[key],enumerable:!(desc=__getOwnPropDesc2(module22,key))||desc.enumerable});return target},__toModule2=module22=>module22&&module22.__esModule?module22:__exportStar2(__defProp2(module22!=null?__create2(__getProtoOf2(module22)):{},"default",{value:module22,enumerable:!0}),module22);__exportStar2(exports2,__toModule2(require("@tensorflow/tfjs-node")))});var require_isNodejs=__commonJS((exports2,module2)=>{__export(exports2,{isNodejs:()=>isNodejs2});function isNodejs2(){return typeof global=="object"&&!0&&typeof module2!="undefined"&&typeof process!="undefined"&&!!process.version}});__export(exports,{AgeGenderNet:()=>AgeGenderNet,BoundingBox:()=>BoundingBox,Box:()=>Box,ComposableTask:()=>ComposableTask,ComputeAllFaceDescriptorsTask:()=>ComputeAllFaceDescriptorsTask,ComputeFaceDescriptorsTaskBase:()=>ComputeFaceDescriptorsTaskBase,ComputeSingleFaceDescriptorTask:()=>ComputeSingleFaceDescriptorTask,DetectAllFaceLandmarksTask:()=>DetectAllFaceLandmarksTask,DetectAllFacesTask:()=>DetectAllFacesTask,DetectFaceLandmarksTaskBase:()=>DetectFaceLandmarksTaskBase,DetectFacesTaskBase:()=>DetectFacesTaskBase,DetectSingleFaceLandmarksTask:()=>DetectSingleFaceLandmarksTask,DetectSingleFaceTask:()=>DetectSingleFaceTask,Dimensions:()=>Dimensions,FACE_EXPRESSION_LABELS:()=>FACE_EXPRESSION_LABELS,FaceDetection:()=>FaceDetection,FaceDetectionNet:()=>FaceDetectionNet,FaceExpressionNet:()=>FaceExpressionNet,FaceExpressions:()=>FaceExpressions,FaceLandmark68Net:()=>FaceLandmark68Net,FaceLandmark68TinyNet:()=>FaceLandmark68TinyNet,FaceLandmarkNet:()=>FaceLandmarkNet,FaceLandmarks:()=>FaceLandmarks,FaceLandmarks5:()=>FaceLandmarks5,FaceLandmarks68:()=>FaceLandmarks68,FaceMatch:()=>FaceMatch,FaceMatcher:()=>FaceMatcher,FaceRecognitionNet:()=>FaceRecognitionNet,Gender:()=>Gender,LabeledBox:()=>LabeledBox,LabeledFaceDescriptors:()=>LabeledFaceDescriptors,NetInput:()=>NetInput,NeuralNetwork:()=>NeuralNetwork,ObjectDetection:()=>ObjectDetection,Point:()=>Point,PredictedBox:()=>PredictedBox,Rect:()=>Rect,SsdMobilenetv1:()=>SsdMobilenetv1,SsdMobilenetv1Options:()=>SsdMobilenetv1Options,TinyFaceDetector:()=>TinyFaceDetector,TinyFaceDetectorOptions:()=>TinyFaceDetectorOptions,TinyYolov2:()=>TinyYolov2,TinyYolov2Options:()=>TinyYolov2Options,allFaces:()=>allFaces,allFacesSsdMobilenetv1:()=>allFacesSsdMobilenetv1,allFacesTinyYolov2:()=>allFacesTinyYolov2,awaitMediaLoaded:()=>awaitMediaLoaded,bufferToImage:()=>bufferToImage,computeFaceDescriptor:()=>computeFaceDescriptor,createCanvas:()=>createCanvas,createCanvasFromMedia:()=>createCanvasFromMedia,createFaceDetectionNet:()=>createFaceDetectionNet,createFaceRecognitionNet:()=>createFaceRecognitionNet,createSsdMobilenetv1:()=>createSsdMobilenetv1,createTinyFaceDetector:()=>createTinyFaceDetector,createTinyYolov2:()=>createTinyYolov2,detectAllFaces:()=>detectAllFaces,detectFaceLandmarks:()=>detectFaceLandmarks,detectFaceLandmarksTiny:()=>detectFaceLandmarksTiny,detectLandmarks:()=>detectLandmarks,detectSingleFace:()=>detectSingleFace,draw:()=>draw_exports,env:()=>env,euclideanDistance:()=>euclideanDistance,extendWithAge:()=>extendWithAge,extendWithFaceDescriptor:()=>extendWithFaceDescriptor,extendWithFaceDetection:()=>extendWithFaceDetection,extendWithFaceExpressions:()=>extendWithFaceExpressions,extendWithFaceLandmarks:()=>extendWithFaceLandmarks,extendWithGender:()=>extendWithGender,extractFaceTensors:()=>extractFaceTensors,extractFaces:()=>extractFaces,fetchImage:()=>fetchImage,fetchJson:()=>fetchJson,fetchNetWeights:()=>fetchNetWeights,fetchOrThrow:()=>fetchOrThrow,getContext2dOrThrow:()=>getContext2dOrThrow,getMediaDimensions:()=>getMediaDimensions,imageTensorToCanvas:()=>imageTensorToCanvas,imageToSquare:()=>imageToSquare,inverseSigmoid:()=>inverseSigmoid,iou:()=>iou,isMediaElement:()=>isMediaElement,isMediaLoaded:()=>isMediaLoaded,isWithAge:()=>isWithAge,isWithFaceDetection:()=>isWithFaceDetection,isWithFaceExpressions:()=>isWithFaceExpressions,isWithFaceLandmarks:()=>isWithFaceLandmarks,isWithGender:()=>isWithGender,loadAgeGenderModel:()=>loadAgeGenderModel,loadFaceDetectionModel:()=>loadFaceDetectionModel,loadFaceExpressionModel:()=>loadFaceExpressionModel,loadFaceLandmarkModel:()=>loadFaceLandmarkModel,loadFaceLandmarkTinyModel:()=>loadFaceLandmarkTinyModel,loadFaceRecognitionModel:()=>loadFaceRecognitionModel,loadSsdMobilenetv1Model:()=>loadSsdMobilenetv1Model,loadTinyFaceDetectorModel:()=>loadTinyFaceDetectorModel,loadTinyYolov2Model:()=>loadTinyYolov2Model,loadWeightMap:()=>loadWeightMap,locateFaces:()=>locateFaces,matchDimensions:()=>matchDimensions,minBbox:()=>minBbox,nets:()=>nets,nonMaxSuppression:()=>nonMaxSuppression,normalize:()=>normalize,padToSquare:()=>padToSquare,predictAgeAndGender:()=>predictAgeAndGender,recognizeFaceExpressions:()=>recognizeFaceExpressions,resizeResults:()=>resizeResults,resolveInput:()=>resolveInput,shuffleArray:()=>shuffleArray,sigmoid:()=>sigmoid,ssdMobilenetv1:()=>ssdMobilenetv1,tf:()=>tf42,tinyFaceDetector:()=>tinyFaceDetector,tinyYolov2:()=>tinyYolov2,toNetInput:()=>toNetInput,utils:()=>utils_exports,validateConfig:()=>validateConfig,version:()=>version2});var tf42=__toModule(require_tfjs_esm());var draw_exports={};__export(draw_exports,{AnchorPosition:()=>AnchorPosition,DrawBox:()=>DrawBox,DrawBoxOptions:()=>DrawBoxOptions,DrawFaceLandmarks:()=>DrawFaceLandmarks,DrawFaceLandmarksOptions:()=>DrawFaceLandmarksOptions,DrawTextField:()=>DrawTextField,DrawTextFieldOptions:()=>DrawTextFieldOptions,drawContour:()=>drawContour,drawDetections:()=>drawDetections,drawFaceExpressions:()=>drawFaceExpressions,drawFaceLandmarks:()=>drawFaceLandmarks});function drawContour(ctx,points,isClosed=!1){if(ctx.beginPath(),points.slice(1).forEach(({x,y},prevIdx)=>{let from=points[prevIdx];ctx.moveTo(from.x,from.y),ctx.lineTo(x,y)}),isClosed){let from=points[points.length-1],to=points[0];if(!from||!to)return;ctx.moveTo(from.x,from.y),ctx.lineTo(to.x,to.y)}ctx.stroke()}var utils_exports={};__export(utils_exports,{computeReshapedDimensions:()=>computeReshapedDimensions,getCenterPoint:()=>getCenterPoint,isDimensions:()=>isDimensions,isEven:()=>isEven,isFloat:()=>isFloat,isTensor:()=>isTensor,isTensor1D:()=>isTensor1D,isTensor2D:()=>isTensor2D,isTensor3D:()=>isTensor3D,isTensor4D:()=>isTensor4D,isValidNumber:()=>isValidNumber,isValidProbablitiy:()=>isValidProbablitiy,range:()=>range,round:()=>round});var tf=__toModule(require_tfjs_esm());var Dimensions=class{constructor(width,height){if(!isValidNumber(width)||!isValidNumber(height))throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({width,height})}`);this._width=width,this._height=height}get width(){return this._width}get height(){return this._height}reverse(){return new Dimensions(1/this.width,1/this.height)}};function isTensor(tensor2,dim){return tensor2 instanceof tf.Tensor&&tensor2.shape.length===dim}function isTensor1D(tensor2){return isTensor(tensor2,1)}function isTensor2D(tensor2){return isTensor(tensor2,2)}function isTensor3D(tensor2){return isTensor(tensor2,3)}function isTensor4D(tensor2){return isTensor(tensor2,4)}function isFloat(num){return num%1!=0}function isEven(num){return num%2==0}function round(num,prec=2){let f=10**prec;return Math.floor(num*f)/f}function isDimensions(obj){return obj&&obj.width&&obj.height}function computeReshapedDimensions({width,height},inputSize){let scale2=inputSize/Math.max(height,width);return new Dimensions(Math.round(width*scale2),Math.round(height*scale2))}function getCenterPoint(pts){return pts.reduce((sum,pt)=>sum.add(pt),new Point(0,0)).div(new Point(pts.length,pts.length))}function range(num,start,step){return Array(num).fill(0).map((_,i)=>start+i*step)}function isValidNumber(num){return!!num&&num!==Infinity&&num!==-Infinity&&!Number.isNaN(num)||num===0}function isValidProbablitiy(num){return isValidNumber(num)&&num>=0&&num<=1}var Point=class{constructor(x,y){this._x=x,this._y=y}get x(){return this._x}get y(){return this._y}add(pt){return new Point(this.x+pt.x,this.y+pt.y)}sub(pt){return new Point(this.x-pt.x,this.y-pt.y)}mul(pt){return new Point(this.x*pt.x,this.y*pt.y)}div(pt){return new Point(this.x/pt.x,this.y/pt.y)}abs(){return new Point(Math.abs(this.x),Math.abs(this.y))}magnitude(){return Math.sqrt(this.x**2+this.y**2)}floor(){return new Point(Math.floor(this.x),Math.floor(this.y))}};var Box=class{static isRect(rect){return!!rect&&[rect.x,rect.y,rect.width,rect.height].every(isValidNumber)}static assertIsValidBox(box,callee,allowNegativeDimensions=!1){if(!Box.isRect(box))throw new Error(`${callee} - invalid box: ${JSON.stringify(box)}, expected object with properties x, y, width, height`);if(!allowNegativeDimensions&&(box.width<0||box.height<0))throw new Error(`${callee} - width (${box.width}) and height (${box.height}) must be positive numbers`)}constructor(_box,allowNegativeDimensions=!0){let box=_box||{},isBbox=[box.left,box.top,box.right,box.bottom].every(isValidNumber),isRect=[box.x,box.y,box.width,box.height].every(isValidNumber);if(!isRect&&!isBbox)throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(box)}`);let[x,y,width,height]=isRect?[box.x,box.y,box.width,box.height]:[box.left,box.top,box.right-box.left,box.bottom-box.top];Box.assertIsValidBox({x,y,width,height},"Box.constructor",allowNegativeDimensions),this._x=x,this._y=y,this._width=width,this._height=height}get x(){return this._x}get y(){return this._y}get width(){return this._width}get height(){return this._height}get left(){return this.x}get top(){return this.y}get right(){return this.x+this.width}get bottom(){return this.y+this.height}get area(){return this.width*this.height}get topLeft(){return new Point(this.left,this.top)}get topRight(){return new Point(this.right,this.top)}get bottomLeft(){return new Point(this.left,this.bottom)}get bottomRight(){return new Point(this.right,this.bottom)}round(){let[x,y,width,height]=[this.x,this.y,this.width,this.height].map(val=>Math.round(val));return new Box({x,y,width,height})}floor(){let[x,y,width,height]=[this.x,this.y,this.width,this.height].map(val=>Math.floor(val));return new Box({x,y,width,height})}toSquare(){let{x,y,width,height}=this,diff=Math.abs(width-height);return widthimageWidth&&(edx=-ex+imageWidth+w,ex=imageWidth),ey>imageHeight&&(edy=-ey+imageHeight+h,ey=imageHeight),x<1&&(edy=2-x,x=1),y<1&&(edy=2-y,y=1),{dy,edy,dx,edx,y,ey,x,ex,w,h}}calibrate(region){return new Box({left:this.left+region.left*this.width,top:this.top+region.top*this.height,right:this.right+region.right*this.width,bottom:this.bottom+region.bottom*this.height}).toSquare().round()}};var BoundingBox=class extends Box{constructor(left,top,right,bottom,allowNegativeDimensions=!1){super({left,top,right,bottom},allowNegativeDimensions)}};var ObjectDetection=class{constructor(score,classScore,className,relativeBox,imageDims){this._imageDims=new Dimensions(imageDims.width,imageDims.height),this._score=score,this._classScore=classScore,this._className=className,this._box=new Box(relativeBox).rescale(this._imageDims)}get score(){return this._score}get classScore(){return this._classScore}get className(){return this._className}get box(){return this._box}get imageDims(){return this._imageDims}get imageWidth(){return this.imageDims.width}get imageHeight(){return this.imageDims.height}get relativeBox(){return new Box(this._box).rescale(this.imageDims.reverse())}forSize(width,height){return new ObjectDetection(this.score,this.classScore,this.className,this.relativeBox,{width,height})}};var FaceDetection=class extends ObjectDetection{constructor(score,relativeBox,imageDims){super(score,score,"",relativeBox,imageDims)}forSize(width,height){let{score,relativeBox,imageDims}=super.forSize(width,height);return new FaceDetection(score,relativeBox,imageDims)}};function iou(box1,box2,isIOU=!0){let width=Math.max(0,Math.min(box1.right,box2.right)-Math.max(box1.left,box2.left)),height=Math.max(0,Math.min(box1.bottom,box2.bottom)-Math.max(box1.top,box2.top)),interSection=width*height;return isIOU?interSection/(box1.area+box2.area-interSection):interSection/Math.min(box1.area,box2.area)}function minBbox(pts){let xs=pts.map(pt=>pt.x),ys=pts.map(pt=>pt.y),minX=xs.reduce((min,x)=>xymaxmax({score,boxIndex})).sort((c1,c2)=>c1.score-c2.score).map(c=>c.boxIndex),pick=[];for(;indicesSortedByScore.length>0;){let curr=indicesSortedByScore.pop();pick.push(curr);let indices=indicesSortedByScore,outputs=[];for(let i=0;ioutputs[j]<=iouThreshold)}return pick}var tf2=__toModule(require_tfjs_esm());function normalize(x,meanRgb){return tf2.tidy(()=>{let[r,g,b]=meanRgb,avg_r=tf2.fill([...x.shape.slice(0,3),1],r,"float32"),avg_g=tf2.fill([...x.shape.slice(0,3),1],g,"float32"),avg_b=tf2.fill([...x.shape.slice(0,3),1],b,"float32"),avg_rgb=tf2.concat([avg_r,avg_g,avg_b],3);return tf2.sub(x,avg_rgb)})}var tf3=__toModule(require_tfjs_esm());function padToSquare(imgTensor,isCenterImage=!1){return tf3.tidy(()=>{let[height,width]=imgTensor.shape.slice(1);if(height===width)return imgTensor;let dimDiff=Math.abs(height-width),paddingAmount=Math.round(dimDiff*(isCenterImage?.5:1)),paddingAxis=height>width?2:1,createPaddingTensor=paddingAmountLocal=>{let paddingTensorShape=imgTensor.shape.slice();return paddingTensorShape[paddingAxis]=paddingAmountLocal,tf3.fill(paddingTensorShape,0,"float32")},paddingTensorAppend=createPaddingTensor(paddingAmount),remainingPaddingAmount=dimDiff-paddingTensorAppend.shape[paddingAxis],tensorsToStack=[isCenterImage&&remainingPaddingAmount?createPaddingTensor(remainingPaddingAmount):null,imgTensor,paddingTensorAppend].filter(t=>!!t).map(t=>tf3.cast(t,"float32"));return tf3.concat(tensorsToStack,paddingAxis)})}function shuffleArray(inputArray){let array=inputArray.slice();for(let i=array.length-1;i>0;i--){let j=Math.floor(Math.random()*(i+1)),x=array[i];array[i]=array[j],array[j]=x}return array}function sigmoid(x){return 1/(1+Math.exp(-x))}function inverseSigmoid(x){return Math.log(x/(1-x))}var Rect=class extends Box{constructor(x,y,width,height,allowNegativeDimensions=!1){super({x,y,width,height},allowNegativeDimensions)}};var relX=.5,relY=.43,relScale=.45,FaceLandmarks=class{constructor(relativeFaceLandmarkPositions,imgDims,shift=new Point(0,0)){let{width,height}=imgDims;this._imgDims=new Dimensions(width,height),this._shift=shift,this._positions=relativeFaceLandmarkPositions.map(pt=>pt.mul(new Point(width,height)).add(shift))}get shift(){return new Point(this._shift.x,this._shift.y)}get imageWidth(){return this._imgDims.width}get imageHeight(){return this._imgDims.height}get positions(){return this._positions}get relativePositions(){return this._positions.map(pt=>pt.sub(this._shift).div(new Point(this.imageWidth,this.imageHeight)))}forSize(width,height){return new this.constructor(this.relativePositions,{width,height})}shiftBy(x,y){return new this.constructor(this.relativePositions,this._imgDims,new Point(x,y))}shiftByPoint(pt){return this.shiftBy(pt.x,pt.y)}align(detection,options={}){if(detection){let box=detection instanceof FaceDetection?detection.box.floor():new Box(detection);return this.shiftBy(box.x,box.y).align(null,options)}let{useDlibAlignment,minBoxPadding}={useDlibAlignment:!1,minBoxPadding:.2,...options};return useDlibAlignment?this.alignDlib():this.alignMinBbox(minBoxPadding)}alignDlib(){let centers=this.getRefPointsForAlignment(),[leftEyeCenter,rightEyeCenter,mouthCenter]=centers,distToMouth=pt=>mouthCenter.sub(pt).magnitude(),eyeToMouthDist=(distToMouth(leftEyeCenter)+distToMouth(rightEyeCenter))/2,size=Math.floor(eyeToMouthDist/relScale),refPoint=getCenterPoint(centers),x=Math.floor(Math.max(0,refPoint.x-relX*size)),y=Math.floor(Math.max(0,refPoint.y-relY*size));return new Rect(x,y,Math.min(size,this.imageWidth+x),Math.min(size,this.imageHeight+y))}alignMinBbox(padding){let box=minBbox(this.positions);return box.pad(box.width*padding,box.height*padding)}getRefPointsForAlignment(){throw new Error("getRefPointsForAlignment not implemented by base class")}};var FaceLandmarks5=class extends FaceLandmarks{getRefPointsForAlignment(){let pts=this.positions;return[pts[0],pts[1],getCenterPoint([pts[3],pts[4]])]}};var FaceLandmarks68=class extends FaceLandmarks{getJawOutline(){return this.positions.slice(0,17)}getLeftEyeBrow(){return this.positions.slice(17,22)}getRightEyeBrow(){return this.positions.slice(22,27)}getNose(){return this.positions.slice(27,36)}getLeftEye(){return this.positions.slice(36,42)}getRightEye(){return this.positions.slice(42,48)}getMouth(){return this.positions.slice(48,68)}getRefPointsForAlignment(){return[this.getLeftEye(),this.getRightEye(),this.getMouth()].map(getCenterPoint)}};var FaceMatch=class{constructor(label,distance){this._label=label,this._distance=distance}get label(){return this._label}get distance(){return this._distance}toString(withDistance=!0){return`${this.label}${withDistance?` (${round(this.distance)})`:""}`}};var LabeledBox=class extends Box{static assertIsValidLabeledBox(box,callee){if(Box.assertIsValidBox(box,callee),!isValidNumber(box.label))throw new Error(`${callee} - expected property label (${box.label}) to be a number`)}constructor(box,label){super(box);this._label=label}get label(){return this._label}};var LabeledFaceDescriptors=class{constructor(label,descriptors){if(typeof label!="string")throw new Error("LabeledFaceDescriptors - constructor expected label to be a string");if(!Array.isArray(descriptors)||descriptors.some(desc=>!(desc instanceof Float32Array)))throw new Error("LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array");this._label=label,this._descriptors=descriptors}get label(){return this._label}get descriptors(){return this._descriptors}toJSON(){return{label:this.label,descriptors:this.descriptors.map(d=>Array.from(d))}}static fromJSON(json){let descriptors=json.descriptors.map(d=>new Float32Array(d));return new LabeledFaceDescriptors(json.label,descriptors)}};var PredictedBox=class extends LabeledBox{static assertIsValidPredictedBox(box,callee){if(LabeledBox.assertIsValidLabeledBox(box,callee),!isValidProbablitiy(box.score)||!isValidProbablitiy(box.classScore))throw new Error(`${callee} - expected properties score (${box.score}) and (${box.classScore}) to be a number between [0, 1]`)}constructor(box,label,score,classScore){super(box,label);this._score=score,this._classScore=classScore}get score(){return this._score}get classScore(){return this._classScore}};function isWithFaceDetection(obj){return obj.detection instanceof FaceDetection}function extendWithFaceDetection(sourceObj,detection){return{...sourceObj,...{detection}}}function createBrowserEnv(){let fetch=window.fetch;if(!fetch)throw new Error("fetch - missing fetch implementation for browser environment");let readFile=()=>{throw new Error("readFile - filesystem not available for browser environment")};return{Canvas:HTMLCanvasElement,CanvasRenderingContext2D,Image:HTMLImageElement,ImageData,Video:HTMLVideoElement,createCanvasElement:()=>document.createElement("canvas"),createImageElement:()=>document.createElement("img"),fetch,readFile}}function createFileSystem(fs){let requireFsError="";if(!fs)try{fs=require("fs")}catch(err){requireFsError=err.toString()}return{readFile:fs?filePath=>new Promise((resolve,reject)=>{fs.readFile(filePath,(err,buffer)=>err?reject(err):resolve(buffer))}):()=>{throw new Error(`readFile - failed to require fs in nodejs environment with error: ${requireFsError}`)}}}function createNodejsEnv(){let Canvas=global.Canvas||global.HTMLCanvasElement,Image=global.Image||global.HTMLImageElement,createCanvasElement=()=>{if(Canvas)return new Canvas;throw new Error("createCanvasElement - missing Canvas implementation for nodejs environment")},createImageElement=()=>{if(Image)return new Image;throw new Error("createImageElement - missing Image implementation for nodejs environment")},fetch=global.fetch,fileSystem=createFileSystem();return{Canvas:Canvas||class{},CanvasRenderingContext2D:global.CanvasRenderingContext2D||class{},Image:Image||class{},ImageData:global.ImageData||class{},Video:global.HTMLVideoElement||class{},createCanvasElement,createImageElement,fetch,...fileSystem}}function isBrowser(){return typeof window=="object"&&typeof document!="undefined"&&typeof HTMLImageElement!="undefined"&&typeof HTMLCanvasElement!="undefined"&&typeof HTMLVideoElement!="undefined"&&typeof ImageData!="undefined"&&typeof CanvasRenderingContext2D!="undefined"}var import_isNodejs=__toModule(require_isNodejs()),environment;function getEnv(){if(!environment)throw new Error("getEnv - environment is not defined, check isNodejs() and isBrowser()");return environment}function setEnv(env2){environment=env2}function initialize(){return isBrowser()?setEnv(createBrowserEnv()):import_isNodejs.isNodejs()?setEnv(createNodejsEnv()):null}function monkeyPatch(env2){if(environment||initialize(),!environment)throw new Error("monkeyPatch - environment is not defined, check isNodejs() and isBrowser()");let{Canvas=environment.Canvas,Image=environment.Image}=env2;environment.Canvas=Canvas,environment.Image=Image,environment.createCanvasElement=env2.createCanvasElement||(()=>new Canvas),environment.createImageElement=env2.createImageElement||(()=>new Image),environment.ImageData=env2.ImageData||environment.ImageData,environment.Video=env2.Video||environment.Video,environment.fetch=env2.fetch||environment.fetch,environment.readFile=env2.readFile||environment.readFile}var env={getEnv,setEnv,initialize,createBrowserEnv,createFileSystem,createNodejsEnv,monkeyPatch,isBrowser,isNodejs:import_isNodejs.isNodejs};initialize();function resolveInput(arg){return!env.isNodejs()&&typeof arg=="string"?document.getElementById(arg):arg}function getContext2dOrThrow(canvasArg){let{Canvas,CanvasRenderingContext2D:CanvasRenderingContext2D2}=env.getEnv();if(canvasArg instanceof CanvasRenderingContext2D2)return canvasArg;let canvas=resolveInput(canvasArg);if(!(canvas instanceof Canvas))throw new Error("resolveContext2d - expected canvas to be of instance of Canvas");let ctx=canvas.getContext("2d");if(!ctx)throw new Error("resolveContext2d - canvas 2d context is null");return ctx}var AnchorPosition;(function(AnchorPosition2){AnchorPosition2.TOP_LEFT="TOP_LEFT",AnchorPosition2.TOP_RIGHT="TOP_RIGHT",AnchorPosition2.BOTTOM_LEFT="BOTTOM_LEFT",AnchorPosition2.BOTTOM_RIGHT="BOTTOM_RIGHT"})(AnchorPosition||(AnchorPosition={}));var DrawTextFieldOptions=class{constructor(options={}){let{anchorPosition,backgroundColor,fontColor,fontSize,fontStyle,padding}=options;this.anchorPosition=anchorPosition||AnchorPosition.TOP_LEFT,this.backgroundColor=backgroundColor||"rgba(0, 0, 0, 0.5)",this.fontColor=fontColor||"rgba(255, 255, 255, 1)",this.fontSize=fontSize||14,this.fontStyle=fontStyle||"Georgia",this.padding=padding||4}},DrawTextField=class{constructor(text,anchor,options={}){this.text=typeof text=="string"?[text]:text instanceof DrawTextField?text.text:text,this.anchor=anchor,this.options=new DrawTextFieldOptions(options)}measureWidth(ctx){let{padding}=this.options;return this.text.map(l=>ctx.measureText(l).width).reduce((w0,w1)=>w0{let x=padding+upperLeft.x,y=padding+upperLeft.y+(i+1)*fontSize;ctx.fillText(textLine,x,y)})}};var DrawBoxOptions=class{constructor(options={}){let{boxColor,lineWidth,label,drawLabelOptions}=options;this.boxColor=boxColor||"rgba(0, 0, 255, 1)",this.lineWidth=lineWidth||2,this.label=label;let defaultDrawLabelOptions={anchorPosition:AnchorPosition.BOTTOM_LEFT,backgroundColor:this.boxColor};this.drawLabelOptions=new DrawTextFieldOptions({...defaultDrawLabelOptions,...drawLabelOptions})}},DrawBox=class{constructor(box,options={}){this.box=new Box(box),this.options=new DrawBoxOptions(options)}draw(canvasArg){let ctx=getContext2dOrThrow(canvasArg),{boxColor,lineWidth}=this.options,{x,y,width,height}=this.box;ctx.strokeStyle=boxColor,ctx.lineWidth=lineWidth,ctx.strokeRect(x,y,width,height);let{label}=this.options;label&&new DrawTextField([label],{x:x-lineWidth/2,y},this.options.drawLabelOptions).draw(canvasArg)}};function drawDetections(canvasArg,detections){(Array.isArray(detections)?detections:[detections]).forEach(det=>{let score=det instanceof FaceDetection?det.score:isWithFaceDetection(det)?det.detection.score:void 0,box=det instanceof FaceDetection?det.box:isWithFaceDetection(det)?det.detection.box:new Box(det),label=score?`${round(score)}`:void 0;new DrawBox(box,{label}).draw(canvasArg)})}var tf18=__toModule(require_tfjs_esm());function isMediaLoaded(media){let{Image,Video}=env.getEnv();return media instanceof Image&&media.complete||media instanceof Video&&media.readyState>=3}function awaitMediaLoaded(media){return new Promise((resolve,reject)=>{if(media instanceof env.getEnv().Canvas||isMediaLoaded(media))return resolve(null);function onError(e){!e.currentTarget||(e.currentTarget.removeEventListener("load",onLoad),e.currentTarget.removeEventListener("error",onError),reject(e))}function onLoad(e){!e.currentTarget||(e.currentTarget.removeEventListener("load",onLoad),e.currentTarget.removeEventListener("error",onError),resolve(e))}media.addEventListener("load",onLoad),media.addEventListener("error",onError)})}function bufferToImage(buf){return new Promise((resolve,reject)=>{buf instanceof Blob||reject(new Error("bufferToImage - expected buf to be of type: Blob"));let reader=new FileReader;reader.onload=()=>{typeof reader.result!="string"&&reject(new Error("bufferToImage - expected reader.result to be a string, in onload"));let img=env.getEnv().createImageElement();img.onload=()=>resolve(img),img.onerror=reject,img.src=reader.result},reader.onerror=reject,reader.readAsDataURL(buf)})}function getMediaDimensions(input){let{Image,Video}=env.getEnv();return input instanceof Image?new Dimensions(input.naturalWidth,input.naturalHeight):input instanceof Video?new Dimensions(input.videoWidth,input.videoHeight):new Dimensions(input.width,input.height)}function createCanvas({width,height}){let{createCanvasElement}=env.getEnv(),canvas=createCanvasElement();return canvas.width=width,canvas.height=height,canvas}function createCanvasFromMedia(media,dims){let{ImageData:ImageData2}=env.getEnv();if(!(media instanceof ImageData2)&&!isMediaLoaded(media))throw new Error("createCanvasFromMedia - media has not finished loading yet");let{width,height}=dims||getMediaDimensions(media),canvas=createCanvas({width,height});return media instanceof ImageData2?getContext2dOrThrow(canvas).putImageData(media,0,0):getContext2dOrThrow(canvas).drawImage(media,0,0,width,height),canvas}var tf4=__toModule(require_tfjs_esm());async function imageTensorToCanvas(imgTensor,canvas){let targetCanvas=canvas||env.getEnv().createCanvasElement(),[height,width,numChannels]=imgTensor.shape.slice(isTensor4D(imgTensor)?1:0),imgTensor3D=tf4.tidy(()=>imgTensor.as3D(height,width,numChannels).toInt());return await tf4.browser.toPixels(imgTensor3D,targetCanvas),imgTensor3D.dispose(),targetCanvas}function isMediaElement(input){let{Image,Canvas,Video}=env.getEnv();return input instanceof Image||input instanceof Canvas||input instanceof Video}var tf5=__toModule(require_tfjs_esm());function imageToSquare(input,inputSize,centerImage=!1){let{Image,Canvas}=env.getEnv();if(!(input instanceof Image||input instanceof Canvas))throw new Error("imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement");let dims=getMediaDimensions(input),scale2=inputSize/Math.max(dims.height,dims.width),width=scale2*dims.width,height=scale2*dims.height,targetCanvas=createCanvas({width:inputSize,height:inputSize}),inputCanvas=input instanceof Canvas?input:createCanvasFromMedia(input),offset=Math.abs(width-height)/2,dx=centerImage&&width{if(isTensor3D(input)){this._imageTensors[idx]=input,this._inputDimensions[idx]=input.shape;return}if(isTensor4D(input)){let batchSize=input.shape[0];if(batchSize!==1)throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);this._imageTensors[idx]=input,this._inputDimensions[idx]=input.shape.slice(1);return}let canvas=input instanceof env.getEnv().Canvas?input:createCanvasFromMedia(input);this._canvases[idx]=canvas,this._inputDimensions[idx]=[canvas.height,canvas.width,3]})}get imageTensors(){return this._imageTensors}get canvases(){return this._canvases}get isBatchInput(){return this.batchSize>1||this._treatAsBatchInput}get batchSize(){return this._batchSize}get inputDimensions(){return this._inputDimensions}get inputSize(){return this._inputSize}get reshapedInputDimensions(){return range(this.batchSize,0,1).map((_,batchIdx)=>this.getReshapedInputDimensions(batchIdx))}getInput(batchIdx){return this.canvases[batchIdx]||this.imageTensors[batchIdx]}getInputDimensions(batchIdx){return this._inputDimensions[batchIdx]}getInputHeight(batchIdx){return this._inputDimensions[batchIdx][0]}getInputWidth(batchIdx){return this._inputDimensions[batchIdx][1]}getReshapedInputDimensions(batchIdx){if(typeof this.inputSize!="number")throw new Error("getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet");let width=this.getInputWidth(batchIdx),height=this.getInputHeight(batchIdx);return computeReshapedDimensions({width,height},this.inputSize)}toBatchTensor(inputSize,isCenterInputs=!0){return this._inputSize=inputSize,tf5.tidy(()=>{let inputTensors=range(this.batchSize,0,1).map(batchIdx=>{let input=this.getInput(batchIdx);if(input instanceof tf5.Tensor){let imgTensor=isTensor4D(input)?input:input.expandDims();return imgTensor=padToSquare(imgTensor,isCenterInputs),(imgTensor.shape[1]!==inputSize||imgTensor.shape[2]!==inputSize)&&(imgTensor=tf5.image.resizeBilinear(imgTensor,[inputSize,inputSize])),imgTensor.as3D(inputSize,inputSize,3)}if(input instanceof env.getEnv().Canvas)return tf5.browser.fromPixels(imageToSquare(input,inputSize,isCenterInputs));throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input}`)});return tf5.stack(inputTensors.map(t=>tf5.cast(t,"float32"))).as4D(this.batchSize,inputSize,inputSize,3)})}};async function toNetInput(inputs){if(inputs instanceof NetInput)return inputs;let inputArgArray=Array.isArray(inputs)?inputs:[inputs];if(!inputArgArray.length)throw new Error("toNetInput - empty array passed as input");let getIdxHint=idx=>Array.isArray(inputs)?` at input index ${idx}:`:"",inputArray=inputArgArray.map(resolveInput);return inputArray.forEach((input,i)=>{if(!isMediaElement(input)&&!isTensor3D(input)&&!isTensor4D(input))throw typeof inputArgArray[i]=="string"?new Error(`toNetInput -${getIdxHint(i)} string passed, but could not resolve HTMLElement for element id ${inputArgArray[i]}`):new Error(`toNetInput -${getIdxHint(i)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`);if(isTensor4D(input)){let batchSize=input.shape[0];if(batchSize!==1)throw new Error(`toNetInput -${getIdxHint(i)} tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`)}}),await Promise.all(inputArray.map(input=>isMediaElement(input)&&awaitMediaLoaded(input))),new NetInput(inputArray,Array.isArray(inputs))}async function extractFaces(input,detections){let{Canvas}=env.getEnv(),canvas=input;if(!(input instanceof Canvas)){let netInput=await toNetInput(input);if(netInput.batchSize>1)throw new Error("extractFaces - batchSize > 1 not supported");let tensorOrCanvas=netInput.getInput(0);canvas=tensorOrCanvas instanceof Canvas?tensorOrCanvas:await imageTensorToCanvas(tensorOrCanvas)}let ctx=getContext2dOrThrow(canvas);return detections.map(det=>det instanceof FaceDetection?det.forSize(canvas.width,canvas.height).box.floor():det).map(box=>box.clipAtImageBorders(canvas.width,canvas.height)).map(({x,y,width,height})=>{let faceImg=createCanvas({width,height});return getContext2dOrThrow(faceImg).putImageData(ctx.getImageData(x,y,width,height),0,0),faceImg})}var tf6=__toModule(require_tfjs_esm());async function extractFaceTensors(imageTensor,detections){if(!isTensor3D(imageTensor)&&!isTensor4D(imageTensor))throw new Error("extractFaceTensors - expected image tensor to be 3D or 4D");if(isTensor4D(imageTensor)&&imageTensor.shape[0]>1)throw new Error("extractFaceTensors - batchSize > 1 not supported");return tf6.tidy(()=>{let[imgHeight,imgWidth,numChannels]=imageTensor.shape.slice(isTensor4D(imageTensor)?1:0);return detections.map(det=>det instanceof FaceDetection?det.forSize(imgWidth,imgHeight).box:det).map(box=>box.clipAtImageBorders(imgWidth,imgHeight)).map(({x,y,width,height})=>tf6.slice3d(imageTensor.as3D(imgHeight,imgWidth,numChannels),[y,x,0],[height,width,numChannels]))})}async function fetchOrThrow(url,init){let{fetch}=env.getEnv(),res=await fetch(url,init);if(!(res.status<400))throw new Error(`failed to fetch: (${res.status}) ${res.statusText}, from url: ${res.url}`);return res}async function fetchImage(uri){let res=await fetchOrThrow(uri),blob=await res.blob();if(!blob.type.startsWith("image/"))throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${blob.type}, for url: ${res.url}`);return bufferToImage(blob)}async function fetchJson(uri){return(await fetchOrThrow(uri)).json()}async function fetchNetWeights(uri){return new Float32Array(await(await fetchOrThrow(uri)).arrayBuffer())}var tf7=__toModule(require_tfjs_esm());function getModelUris(uri,defaultModelName){let defaultManifestFilename=`${defaultModelName}-weights_manifest.json`;if(!uri)return{modelBaseUri:"",manifestUri:defaultManifestFilename};if(uri==="/")return{modelBaseUri:"/",manifestUri:`/${defaultManifestFilename}`};let protocol=uri.startsWith("http://")?"http://":uri.startsWith("https://")?"https://":"";uri=uri.replace(protocol,"");let parts=uri.split("/").filter(s=>s),manifestFile=uri.endsWith(".json")?parts[parts.length-1]:defaultManifestFilename,modelBaseUri=protocol+(uri.endsWith(".json")?parts.slice(0,parts.length-1):parts).join("/");return modelBaseUri=uri.startsWith("/")?`/${modelBaseUri}`:modelBaseUri,{modelBaseUri,manifestUri:modelBaseUri==="/"?`/${manifestFile}`:`${modelBaseUri}/${manifestFile}`}}async function loadWeightMap(uri,defaultModelName){let{manifestUri,modelBaseUri}=getModelUris(uri,defaultModelName),manifest=await fetchJson(manifestUri);return tf7.io.loadWeights(manifest,modelBaseUri)}function matchDimensions(input,reference,useMediaDimensions=!1){let{width,height}=useMediaDimensions?getMediaDimensions(reference):reference;return input.width=width,input.height=height,{width,height}}var tf15=__toModule(require_tfjs_esm());var tf8=__toModule(require_tfjs_esm());var NeuralNetwork=class{constructor(){this._params=void 0;this._paramMappings=[]}get params(){return this._params}get paramMappings(){return this._paramMappings}get isLoaded(){return!!this.params}getParamFromPath(paramPath){let{obj,objProp}=this.traversePropertyPath(paramPath);return obj[objProp]}reassignParamFromPath(paramPath,tensor2){let{obj,objProp}=this.traversePropertyPath(paramPath);obj[objProp].dispose(),obj[objProp]=tensor2}getParamList(){return this._paramMappings.map(({paramPath})=>({path:paramPath,tensor:this.getParamFromPath(paramPath)}))}getTrainableParams(){return this.getParamList().filter(param=>param.tensor instanceof tf8.Variable)}getFrozenParams(){return this.getParamList().filter(param=>!(param.tensor instanceof tf8.Variable))}variable(){this.getFrozenParams().forEach(({path,tensor:tensor2})=>{this.reassignParamFromPath(path,tensor2.variable())})}freeze(){this.getTrainableParams().forEach(({path,tensor:variable})=>{let tensor2=tf8.tensor(variable.dataSync());variable.dispose(),this.reassignParamFromPath(path,tensor2)})}dispose(throwOnRedispose=!0){this.getParamList().forEach(param=>{if(throwOnRedispose&¶m.tensor.isDisposed)throw new Error(`param tensor has already been disposed for path ${param.path}`);param.tensor.dispose()}),this._params=void 0}serializeParams(){return new Float32Array(this.getParamList().map(({tensor:tensor2})=>Array.from(tensor2.dataSync())).reduce((flat,arr)=>flat.concat(arr)))}async load(weightsOrUrl){if(weightsOrUrl instanceof Float32Array){this.extractWeights(weightsOrUrl);return}await this.loadFromUri(weightsOrUrl)}async loadFromUri(uri){if(uri&&typeof uri!="string")throw new Error(`${this._name}.loadFromUri - expected model uri`);let weightMap=await loadWeightMap(uri,this.getDefaultModelName());this.loadFromWeightMap(weightMap)}async loadFromDisk(filePath){if(filePath&&typeof filePath!="string")throw new Error(`${this._name}.loadFromDisk - expected model file path`);let{readFile}=env.getEnv(),{manifestUri,modelBaseUri}=getModelUris(filePath,this.getDefaultModelName()),fetchWeightsFromDisk=filePaths=>Promise.all(filePaths.map(fp=>readFile(fp).then(buf=>buf.buffer))),loadWeights=tf8.io.weightsLoaderFactory(fetchWeightsFromDisk),manifest=JSON.parse((await readFile(manifestUri)).toString()),weightMap=await loadWeights(manifest,modelBaseUri);this.loadFromWeightMap(weightMap)}loadFromWeightMap(weightMap){let{paramMappings,params}=this.extractParamsFromWeigthMap(weightMap);this._paramMappings=paramMappings,this._params=params}extractWeights(weights){let{paramMappings,params}=this.extractParams(weights);this._paramMappings=paramMappings,this._params=params}traversePropertyPath(paramPath){if(!this.params)throw new Error("traversePropertyPath - model has no loaded params");let result=paramPath.split("/").reduce((res,objProp2)=>{if(!res.nextObj.hasOwnProperty(objProp2))throw new Error(`traversePropertyPath - object does not have property ${objProp2}, for path ${paramPath}`);return{obj:res.nextObj,objProp:objProp2,nextObj:res.nextObj[objProp2]}},{nextObj:this.params}),{obj,objProp}=result;if(!obj||!objProp||!(obj[objProp]instanceof tf8.Tensor))throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${paramPath}`);return{obj,objProp}}};var tf10=__toModule(require_tfjs_esm());var tf9=__toModule(require_tfjs_esm());function depthwiseSeparableConv(x,params,stride){return tf9.tidy(()=>{let out=tf9.separableConv2d(x,params.depthwise_filter,params.pointwise_filter,stride,"same");return out=tf9.add(out,params.bias),out})}function denseBlock3(x,denseBlockParams,isFirstLayer=!1){return tf10.tidy(()=>{let out1=tf10.relu(isFirstLayer?tf10.add(tf10.conv2d(x,denseBlockParams.conv0.filters,[2,2],"same"),denseBlockParams.conv0.bias):depthwiseSeparableConv(x,denseBlockParams.conv0,[2,2])),out2=depthwiseSeparableConv(out1,denseBlockParams.conv1,[1,1]),in3=tf10.relu(tf10.add(out1,out2)),out3=depthwiseSeparableConv(in3,denseBlockParams.conv2,[1,1]);return tf10.relu(tf10.add(out1,tf10.add(out2,out3)))})}function denseBlock4(x,denseBlockParams,isFirstLayer=!1,isScaleDown=!0){return tf10.tidy(()=>{let out1=tf10.relu(isFirstLayer?tf10.add(tf10.conv2d(x,denseBlockParams.conv0.filters,isScaleDown?[2,2]:[1,1],"same"),denseBlockParams.conv0.bias):depthwiseSeparableConv(x,denseBlockParams.conv0,isScaleDown?[2,2]:[1,1])),out2=depthwiseSeparableConv(out1,denseBlockParams.conv1,[1,1]),in3=tf10.relu(tf10.add(out1,out2)),out3=depthwiseSeparableConv(in3,denseBlockParams.conv2,[1,1]),in4=tf10.relu(tf10.add(out1,tf10.add(out2,out3))),out4=depthwiseSeparableConv(in4,denseBlockParams.conv3,[1,1]);return tf10.relu(tf10.add(out1,tf10.add(out2,tf10.add(out3,out4))))})}var tf11=__toModule(require_tfjs_esm());function convLayer(x,params,padding="same",withRelu=!1){return tf11.tidy(()=>{let out=tf11.add(tf11.conv2d(x,params.filters,[1,1],padding),params.bias);return withRelu?tf11.relu(out):out})}function disposeUnusedWeightTensors(weightMap,paramMappings){Object.keys(weightMap).forEach(path=>{paramMappings.some(pm=>pm.originalPath===path)||weightMap[path].dispose()})}var tf12=__toModule(require_tfjs_esm());function extractConvParamsFactory(extractWeights,paramMappings){return(channelsIn,channelsOut,filterSize,mappedPrefix)=>{let filters=tf12.tensor4d(extractWeights(channelsIn*channelsOut*filterSize*filterSize),[filterSize,filterSize,channelsIn,channelsOut]),bias=tf12.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/bias`}),{filters,bias}}}var tf13=__toModule(require_tfjs_esm());function extractFCParamsFactory(extractWeights,paramMappings){return(channelsIn,channelsOut,mappedPrefix)=>{let fc_weights=tf13.tensor2d(extractWeights(channelsIn*channelsOut),[channelsIn,channelsOut]),fc_bias=tf13.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/weights`},{paramPath:`${mappedPrefix}/bias`}),{weights:fc_weights,bias:fc_bias}}}var tf14=__toModule(require_tfjs_esm());var SeparableConvParams=class{constructor(depthwise_filter,pointwise_filter,bias){this.depthwise_filter=depthwise_filter;this.pointwise_filter=pointwise_filter;this.bias=bias}};function extractSeparableConvParamsFactory(extractWeights,paramMappings){return(channelsIn,channelsOut,mappedPrefix)=>{let depthwise_filter=tf14.tensor4d(extractWeights(3*3*channelsIn),[3,3,channelsIn,1]),pointwise_filter=tf14.tensor4d(extractWeights(channelsIn*channelsOut),[1,1,channelsIn,channelsOut]),bias=tf14.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/depthwise_filter`},{paramPath:`${mappedPrefix}/pointwise_filter`},{paramPath:`${mappedPrefix}/bias`}),new SeparableConvParams(depthwise_filter,pointwise_filter,bias)}}function loadSeparableConvParamsFactory(extractWeightEntry){return prefix=>{let depthwise_filter=extractWeightEntry(`${prefix}/depthwise_filter`,4),pointwise_filter=extractWeightEntry(`${prefix}/pointwise_filter`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return new SeparableConvParams(depthwise_filter,pointwise_filter,bias)}}function extractWeightEntryFactory(weightMap,paramMappings){return(originalPath,paramRank,mappedPath)=>{let tensor2=weightMap[originalPath];if(!isTensor(tensor2,paramRank))throw new Error(`expected weightMap[${originalPath}] to be a Tensor${paramRank}D, instead have ${tensor2}`);return paramMappings.push({originalPath,paramPath:mappedPath||originalPath}),tensor2}}function extractWeightsFactory(weights){let remainingWeights=weights;function extractWeights(numWeights){let ret=remainingWeights.slice(0,numWeights);return remainingWeights=remainingWeights.slice(numWeights),ret}function getRemainingWeights(){return remainingWeights}return{extractWeights,getRemainingWeights}}function extractorsFactory(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings),extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);function extractDenseBlock3Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(channelsIn,channelsOut,3,`${mappedPrefix}/conv0`):extractSeparableConvParams(channelsIn,channelsOut,`${mappedPrefix}/conv0`),conv1=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv1`),conv22=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv2`);return{conv0,conv1,conv2:conv22}}function extractDenseBlock4Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer=!1){let{conv0,conv1,conv2:conv22}=extractDenseBlock3Params(channelsIn,channelsOut,mappedPrefix,isFirstLayer),conv3=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/conv3`);return{conv0,conv1,conv2:conv22,conv3}}return{extractDenseBlock3Params,extractDenseBlock4Params}}function extractParams(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractDenseBlock4Params}=extractorsFactory(extractWeights,paramMappings),dense0=extractDenseBlock4Params(3,32,"dense0",!0),dense1=extractDenseBlock4Params(32,64,"dense1"),dense2=extractDenseBlock4Params(64,128,"dense2"),dense3=extractDenseBlock4Params(128,256,"dense3");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{dense0,dense1,dense2,dense3}}}function loadConvParamsFactory(extractWeightEntry){return prefix=>{let filters=extractWeightEntry(`${prefix}/filters`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return{filters,bias}}}function loadParamsFactory(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings),extractConvParams=loadConvParamsFactory(extractWeightEntry),extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);function extractDenseBlock3Params(prefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(`${prefix}/conv0`):extractSeparableConvParams(`${prefix}/conv0`),conv1=extractSeparableConvParams(`${prefix}/conv1`),conv22=extractSeparableConvParams(`${prefix}/conv2`);return{conv0,conv1,conv2:conv22}}function extractDenseBlock4Params(prefix,isFirstLayer=!1){let conv0=isFirstLayer?extractConvParams(`${prefix}/conv0`):extractSeparableConvParams(`${prefix}/conv0`),conv1=extractSeparableConvParams(`${prefix}/conv1`),conv22=extractSeparableConvParams(`${prefix}/conv2`),conv3=extractSeparableConvParams(`${prefix}/conv3`);return{conv0,conv1,conv2:conv22,conv3}}return{extractDenseBlock3Params,extractDenseBlock4Params}}function extractParamsFromWeigthMap(weightMap){let paramMappings=[],{extractDenseBlock4Params}=loadParamsFactory(weightMap,paramMappings),params={dense0:extractDenseBlock4Params("dense0",!0),dense1:extractDenseBlock4Params("dense1"),dense2:extractDenseBlock4Params("dense2"),dense3:extractDenseBlock4Params("dense3")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var FaceFeatureExtractor=class extends NeuralNetwork{constructor(){super("FaceFeatureExtractor")}forwardInput(input){let{params}=this;if(!params)throw new Error("FaceFeatureExtractor - load model before inference");return tf15.tidy(()=>{let batchTensor=tf15.cast(input.toBatchTensor(112,!0),"float32"),normalized=normalize(batchTensor,[122.782,117.001,104.298]).div(tf15.scalar(255)),out=denseBlock4(normalized,params.dense0,!0);return out=denseBlock4(out,params.dense1),out=denseBlock4(out,params.dense2),out=denseBlock4(out,params.dense3),out=tf15.avgPool(out,[7,7],[2,2],"valid"),out})}async forward(input){return this.forwardInput(await toNetInput(input))}getDefaultModelName(){return"face_feature_extractor_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap(weightMap)}extractParams(weights){return extractParams(weights)}};var tf17=__toModule(require_tfjs_esm());var tf16=__toModule(require_tfjs_esm());function fullyConnectedLayer(x,params){return tf16.tidy(()=>tf16.add(tf16.matMul(x,params.weights),params.bias))}function extractParams2(weights,channelsIn,channelsOut){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),fc=extractFCParamsFactory(extractWeights,paramMappings)(channelsIn,channelsOut,"fc");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{fc}}}function extractParamsFromWeigthMap2(weightMap){let paramMappings=[],extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractFcParams(prefix){let weights=extractWeightEntry(`${prefix}/weights`,2),bias=extractWeightEntry(`${prefix}/bias`,1);return{weights,bias}}let params={fc:extractFcParams("fc")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function seperateWeightMaps(weightMap){let featureExtractorMap={},classifierMap={};return Object.keys(weightMap).forEach(key=>{let map=key.startsWith("fc")?classifierMap:featureExtractorMap;map[key]=weightMap[key]}),{featureExtractorMap,classifierMap}}var FaceProcessor=class extends NeuralNetwork{constructor(_name,faceFeatureExtractor){super(_name);this._faceFeatureExtractor=faceFeatureExtractor}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(input){let{params}=this;if(!params)throw new Error(`${this._name} - load model before inference`);return tf17.tidy(()=>{let bottleneckFeatures=input instanceof NetInput?this.faceFeatureExtractor.forwardInput(input):input;return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0],-1),params.fc)})}dispose(throwOnRedispose=!0){this.faceFeatureExtractor.dispose(throwOnRedispose),super.dispose(throwOnRedispose)}loadClassifierParams(weights){let{params,paramMappings}=this.extractClassifierParams(weights);this._params=params,this._paramMappings=paramMappings}extractClassifierParams(weights){return extractParams2(weights,this.getClassifierChannelsIn(),this.getClassifierChannelsOut())}extractParamsFromWeigthMap(weightMap){let{featureExtractorMap,classifierMap}=seperateWeightMaps(weightMap);return this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap),extractParamsFromWeigthMap2(classifierMap)}extractParams(weights){let cIn=this.getClassifierChannelsIn(),cOut=this.getClassifierChannelsOut(),classifierWeightSize=cOut*cIn+cOut,featureExtractorWeights=weights.slice(0,weights.length-classifierWeightSize),classifierWeights=weights.slice(weights.length-classifierWeightSize);return this.faceFeatureExtractor.extractWeights(featureExtractorWeights),this.extractClassifierParams(classifierWeights)}};var FACE_EXPRESSION_LABELS=["neutral","happy","sad","angry","fearful","disgusted","surprised"],FaceExpressions=class{constructor(probabilities){if(probabilities.length!==7)throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${probabilities.length}`);FACE_EXPRESSION_LABELS.forEach((expression,idx)=>{this[expression]=probabilities[idx]})}asSortedArray(){return FACE_EXPRESSION_LABELS.map(expression=>({expression,probability:this[expression]})).sort((e0,e1)=>e1.probability-e0.probability)}};var FaceExpressionNet=class extends FaceProcessor{constructor(faceFeatureExtractor=new FaceFeatureExtractor){super("FaceExpressionNet",faceFeatureExtractor)}forwardInput(input){return tf18.tidy(()=>tf18.softmax(this.runNet(input)))}async forward(input){return this.forwardInput(await toNetInput(input))}async predictExpressions(input){let netInput=await toNetInput(input),out=await this.forwardInput(netInput),probabilitesByBatch=await Promise.all(tf18.unstack(out).map(async t=>{let data=await t.data();return t.dispose(),data}));out.dispose();let predictionsByBatch=probabilitesByBatch.map(probabilites=>new FaceExpressions(probabilites));return netInput.isBatchInput?predictionsByBatch:predictionsByBatch[0]}getDefaultModelName(){return"face_expression_model"}getClassifierChannelsIn(){return 256}getClassifierChannelsOut(){return 7}};function isWithFaceExpressions(obj){return obj.expressions instanceof FaceExpressions}function extendWithFaceExpressions(sourceObj,expressions){return{...sourceObj,...{expressions}}}function drawFaceExpressions(canvasArg,faceExpressions,minConfidence=.1,textFieldAnchor){(Array.isArray(faceExpressions)?faceExpressions:[faceExpressions]).forEach(e=>{let expr=e instanceof FaceExpressions?e:isWithFaceExpressions(e)?e.expressions:void 0;if(!expr)throw new Error("drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof");let resultsToDisplay=expr.asSortedArray().filter(exprLocal=>exprLocal.probability>minConfidence),anchor=isWithFaceDetection(e)?e.detection.box.bottomLeft:textFieldAnchor||new Point(0,0);new DrawTextField(resultsToDisplay.map(exprLocal=>`${exprLocal.expression} (${round(exprLocal.probability)})`),anchor).draw(canvasArg)})}function isWithFaceLandmarks(obj){return isWithFaceDetection(obj)&&obj.landmarks instanceof FaceLandmarks&&obj.unshiftedLandmarks instanceof FaceLandmarks&&obj.alignedRect instanceof FaceDetection}function extendWithFaceLandmarks(sourceObj,unshiftedLandmarks){let{box:shift}=sourceObj.detection,landmarks=unshiftedLandmarks.shiftBy(shift.x,shift.y),rect=landmarks.align(),{imageDims}=sourceObj.detection,alignedRect=new FaceDetection(sourceObj.detection.score,rect.rescale(imageDims.reverse()),imageDims);return{...sourceObj,...{landmarks,unshiftedLandmarks,alignedRect}}}var DrawFaceLandmarksOptions=class{constructor(options={}){let{drawLines=!0,drawPoints=!0,lineWidth,lineColor,pointSize,pointColor}=options;this.drawLines=drawLines,this.drawPoints=drawPoints,this.lineWidth=lineWidth||1,this.pointSize=pointSize||2,this.lineColor=lineColor||"rgba(0, 255, 255, 1)",this.pointColor=pointColor||"rgba(255, 0, 255, 1)"}},DrawFaceLandmarks=class{constructor(faceLandmarks,options={}){this.faceLandmarks=faceLandmarks,this.options=new DrawFaceLandmarksOptions(options)}draw(canvasArg){let ctx=getContext2dOrThrow(canvasArg),{drawLines,drawPoints,lineWidth,lineColor,pointSize,pointColor}=this.options;if(drawLines&&this.faceLandmarks instanceof FaceLandmarks68&&(ctx.strokeStyle=lineColor,ctx.lineWidth=lineWidth,drawContour(ctx,this.faceLandmarks.getJawOutline()),drawContour(ctx,this.faceLandmarks.getLeftEyeBrow()),drawContour(ctx,this.faceLandmarks.getRightEyeBrow()),drawContour(ctx,this.faceLandmarks.getNose()),drawContour(ctx,this.faceLandmarks.getLeftEye(),!0),drawContour(ctx,this.faceLandmarks.getRightEye(),!0),drawContour(ctx,this.faceLandmarks.getMouth(),!0)),drawPoints){ctx.strokeStyle=pointColor,ctx.fillStyle=pointColor;let drawPoint=pt=>{ctx.beginPath(),ctx.arc(pt.x,pt.y,pointSize,0,2*Math.PI),ctx.fill()};this.faceLandmarks.positions.forEach(drawPoint)}}};function drawFaceLandmarks(canvasArg,faceLandmarks){(Array.isArray(faceLandmarks)?faceLandmarks:[faceLandmarks]).forEach(f=>{let landmarks=f instanceof FaceLandmarks?f:isWithFaceLandmarks(f)?f.landmarks:void 0;if(!landmarks)throw new Error("drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof");new DrawFaceLandmarks(landmarks).draw(canvasArg)})}var version="0.11.1";var tf20=__toModule(require_tfjs_esm());var tf19=__toModule(require_tfjs_esm());function extractorsFactory2(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings),extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);function extractReductionBlockParams(channelsIn,channelsOut,mappedPrefix){let separable_conv0=extractSeparableConvParams(channelsIn,channelsOut,`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(channelsOut,channelsOut,`${mappedPrefix}/separable_conv1`),expansion_conv=extractConvParams(channelsIn,channelsOut,1,`${mappedPrefix}/expansion_conv`);return{separable_conv0,separable_conv1,expansion_conv}}function extractMainBlockParams(channels,mappedPrefix){let separable_conv0=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv1`),separable_conv2=extractSeparableConvParams(channels,channels,`${mappedPrefix}/separable_conv2`);return{separable_conv0,separable_conv1,separable_conv2}}return{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}}function extractParams3(weights,numMainBlocks){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}=extractorsFactory2(extractWeights,paramMappings),entry_flow_conv_in=extractConvParams(3,32,3,"entry_flow/conv_in"),entry_flow_reduction_block_0=extractReductionBlockParams(32,64,"entry_flow/reduction_block_0"),entry_flow_reduction_block_1=extractReductionBlockParams(64,128,"entry_flow/reduction_block_1"),entry_flow={conv_in:entry_flow_conv_in,reduction_block_0:entry_flow_reduction_block_0,reduction_block_1:entry_flow_reduction_block_1},middle_flow={};range(numMainBlocks,0,1).forEach(idx=>{middle_flow[`main_block_${idx}`]=extractMainBlockParams(128,`middle_flow/main_block_${idx}`)});let exit_flow_reduction_block=extractReductionBlockParams(128,256,"exit_flow/reduction_block"),exit_flow_separable_conv=extractSeparableConvParams(256,512,"exit_flow/separable_conv"),exit_flow={reduction_block:exit_flow_reduction_block,separable_conv:exit_flow_separable_conv};if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{entry_flow,middle_flow,exit_flow}}}function loadParamsFactory2(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings),extractConvParams=loadConvParamsFactory(extractWeightEntry),extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);function extractReductionBlockParams(mappedPrefix){let separable_conv0=extractSeparableConvParams(`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(`${mappedPrefix}/separable_conv1`),expansion_conv=extractConvParams(`${mappedPrefix}/expansion_conv`);return{separable_conv0,separable_conv1,expansion_conv}}function extractMainBlockParams(mappedPrefix){let separable_conv0=extractSeparableConvParams(`${mappedPrefix}/separable_conv0`),separable_conv1=extractSeparableConvParams(`${mappedPrefix}/separable_conv1`),separable_conv2=extractSeparableConvParams(`${mappedPrefix}/separable_conv2`);return{separable_conv0,separable_conv1,separable_conv2}}return{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}}function extractParamsFromWeigthMap3(weightMap,numMainBlocks){let paramMappings=[],{extractConvParams,extractSeparableConvParams,extractReductionBlockParams,extractMainBlockParams}=loadParamsFactory2(weightMap,paramMappings),entry_flow_conv_in=extractConvParams("entry_flow/conv_in"),entry_flow_reduction_block_0=extractReductionBlockParams("entry_flow/reduction_block_0"),entry_flow_reduction_block_1=extractReductionBlockParams("entry_flow/reduction_block_1"),entry_flow={conv_in:entry_flow_conv_in,reduction_block_0:entry_flow_reduction_block_0,reduction_block_1:entry_flow_reduction_block_1},middle_flow={};range(numMainBlocks,0,1).forEach(idx=>{middle_flow[`main_block_${idx}`]=extractMainBlockParams(`middle_flow/main_block_${idx}`)});let exit_flow_reduction_block=extractReductionBlockParams("exit_flow/reduction_block"),exit_flow_separable_conv=extractSeparableConvParams("exit_flow/separable_conv"),exit_flow={reduction_block:exit_flow_reduction_block,separable_conv:exit_flow_separable_conv};return disposeUnusedWeightTensors(weightMap,paramMappings),{params:{entry_flow,middle_flow,exit_flow},paramMappings}}function conv(x,params,stride){return tf19.add(tf19.conv2d(x,params.filters,stride,"same"),params.bias)}function reductionBlock(x,params,isActivateInput=!0){let out=isActivateInput?tf19.relu(x):x;return out=depthwiseSeparableConv(out,params.separable_conv0,[1,1]),out=depthwiseSeparableConv(tf19.relu(out),params.separable_conv1,[1,1]),out=tf19.maxPool(out,[3,3],[2,2],"same"),out=tf19.add(out,conv(x,params.expansion_conv,[2,2])),out}function mainBlock(x,params){let out=depthwiseSeparableConv(tf19.relu(x),params.separable_conv0,[1,1]);return out=depthwiseSeparableConv(tf19.relu(out),params.separable_conv1,[1,1]),out=depthwiseSeparableConv(tf19.relu(out),params.separable_conv2,[1,1]),out=tf19.add(out,x),out}var TinyXception=class extends NeuralNetwork{constructor(numMainBlocks){super("TinyXception");this._numMainBlocks=numMainBlocks}forwardInput(input){let{params}=this;if(!params)throw new Error("TinyXception - load model before inference");return tf19.tidy(()=>{let batchTensor=tf19.cast(input.toBatchTensor(112,!0),"float32"),normalized=normalize(batchTensor,[122.782,117.001,104.298]).div(tf19.scalar(256)),out=tf19.relu(conv(normalized,params.entry_flow.conv_in,[2,2]));return out=reductionBlock(out,params.entry_flow.reduction_block_0,!1),out=reductionBlock(out,params.entry_flow.reduction_block_1),range(this._numMainBlocks,0,1).forEach(idx=>{out=mainBlock(out,params.middle_flow[`main_block_${idx}`])}),out=reductionBlock(out,params.exit_flow.reduction_block),out=tf19.relu(depthwiseSeparableConv(out,params.exit_flow.separable_conv,[1,1])),out})}async forward(input){return this.forwardInput(await toNetInput(input))}getDefaultModelName(){return"tiny_xception_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap3(weightMap,this._numMainBlocks)}extractParams(weights){return extractParams3(weights,this._numMainBlocks)}};function extractParams4(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),extractFCParams=extractFCParamsFactory(extractWeights,paramMappings),age=extractFCParams(512,1,"fc/age"),gender=extractFCParams(512,2,"fc/gender");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{fc:{age,gender}}}}function extractParamsFromWeigthMap4(weightMap){let paramMappings=[],extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractFcParams(prefix){let weights=extractWeightEntry(`${prefix}/weights`,2),bias=extractWeightEntry(`${prefix}/bias`,1);return{weights,bias}}let params={fc:{age:extractFcParams("fc/age"),gender:extractFcParams("fc/gender")}};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var Gender;(function(Gender2){Gender2.FEMALE="female",Gender2.MALE="male"})(Gender||(Gender={}));var AgeGenderNet=class extends NeuralNetwork{constructor(faceFeatureExtractor=new TinyXception(2)){super("AgeGenderNet");this._faceFeatureExtractor=faceFeatureExtractor}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(input){let{params}=this;if(!params)throw new Error(`${this._name} - load model before inference`);return tf20.tidy(()=>{let bottleneckFeatures=input instanceof NetInput?this.faceFeatureExtractor.forwardInput(input):input,pooled=tf20.avgPool(bottleneckFeatures,[7,7],[2,2],"valid").as2D(bottleneckFeatures.shape[0],-1),age=fullyConnectedLayer(pooled,params.fc.age).as1D(),gender=fullyConnectedLayer(pooled,params.fc.gender);return{age,gender}})}forwardInput(input){return tf20.tidy(()=>{let{age,gender}=this.runNet(input);return{age,gender:tf20.softmax(gender)}})}async forward(input){return this.forwardInput(await toNetInput(input))}async predictAgeAndGender(input){let netInput=await toNetInput(input),out=await this.forwardInput(netInput),ages=tf20.unstack(out.age),genders=tf20.unstack(out.gender),ageAndGenderTensors=ages.map((ageTensor,i)=>({ageTensor,genderTensor:genders[i]})),predictionsByBatch=await Promise.all(ageAndGenderTensors.map(async({ageTensor,genderTensor})=>{let age=(await ageTensor.data())[0],probMale=(await genderTensor.data())[0],isMale=probMale>.5,gender=isMale?Gender.MALE:Gender.FEMALE,genderProbability=isMale?probMale:1-probMale;return ageTensor.dispose(),genderTensor.dispose(),{age,gender,genderProbability}}));return out.age.dispose(),out.gender.dispose(),netInput.isBatchInput?predictionsByBatch:predictionsByBatch[0]}getDefaultModelName(){return"age_gender_model"}dispose(throwOnRedispose=!0){this.faceFeatureExtractor.dispose(throwOnRedispose),super.dispose(throwOnRedispose)}loadClassifierParams(weights){let{params,paramMappings}=this.extractClassifierParams(weights);this._params=params,this._paramMappings=paramMappings}extractClassifierParams(weights){return extractParams4(weights)}extractParamsFromWeigthMap(weightMap){let{featureExtractorMap,classifierMap}=seperateWeightMaps(weightMap);return this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap),extractParamsFromWeigthMap4(classifierMap)}extractParams(weights){let classifierWeightSize=512*1+1+(512*2+2),featureExtractorWeights=weights.slice(0,weights.length-classifierWeightSize),classifierWeights=weights.slice(weights.length-classifierWeightSize);return this.faceFeatureExtractor.extractWeights(featureExtractorWeights),this.extractClassifierParams(classifierWeights)}};var tf21=__toModule(require_tfjs_esm());var FaceLandmark68NetBase=class extends FaceProcessor{postProcess(output,inputSize,originalDimensions){let inputDimensions=originalDimensions.map(({width,height})=>{let scale2=inputSize/Math.max(height,width);return{width:width*scale2,height:height*scale2}}),batchSize=inputDimensions.length;return tf21.tidy(()=>{let createInterleavedTensor=(fillX,fillY)=>tf21.stack([tf21.fill([68],fillX,"float32"),tf21.fill([68],fillY,"float32")],1).as2D(1,136).as1D(),getPadding=(batchIdx,cond)=>{let{width,height}=inputDimensions[batchIdx];return cond(width,height)?Math.abs(width-height)/2:0},getPaddingX=batchIdx=>getPadding(batchIdx,(w,h)=>wgetPadding(batchIdx,(w,h)=>hcreateInterleavedTensor(getPaddingX(batchIdx),getPaddingY(batchIdx))))).div(tf21.stack(Array.from(Array(batchSize),(_,batchIdx)=>createInterleavedTensor(inputDimensions[batchIdx].width,inputDimensions[batchIdx].height))))})}forwardInput(input){return tf21.tidy(()=>{let out=this.runNet(input);return this.postProcess(out,input.inputSize,input.inputDimensions.map(([height,width])=>({height,width})))})}async forward(input){return this.forwardInput(await toNetInput(input))}async detectLandmarks(input){let netInput=await toNetInput(input),landmarkTensors=tf21.tidy(()=>tf21.unstack(this.forwardInput(netInput))),landmarksForBatch=await Promise.all(landmarkTensors.map(async(landmarkTensor,batchIdx)=>{let landmarksArray=Array.from(await landmarkTensor.data()),xCoords=landmarksArray.filter((_,i)=>isEven(i)),yCoords=landmarksArray.filter((_,i)=>!isEven(i));return new FaceLandmarks68(Array(68).fill(0).map((_,i)=>new Point(xCoords[i],yCoords[i])),{height:netInput.getInputHeight(batchIdx),width:netInput.getInputWidth(batchIdx)})}));return landmarkTensors.forEach(t=>t.dispose()),netInput.isBatchInput?landmarksForBatch:landmarksForBatch[0]}getClassifierChannelsOut(){return 136}};var FaceLandmark68Net=class extends FaceLandmark68NetBase{constructor(faceFeatureExtractor=new FaceFeatureExtractor){super("FaceLandmark68Net",faceFeatureExtractor)}getDefaultModelName(){return"face_landmark_68_model"}getClassifierChannelsIn(){return 256}};var tf22=__toModule(require_tfjs_esm());function extractParamsFromWeigthMapTiny(weightMap){let paramMappings=[],{extractDenseBlock3Params}=loadParamsFactory(weightMap,paramMappings),params={dense0:extractDenseBlock3Params("dense0",!0),dense1:extractDenseBlock3Params("dense1"),dense2:extractDenseBlock3Params("dense2")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}function extractParamsTiny(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractDenseBlock3Params}=extractorsFactory(extractWeights,paramMappings),dense0=extractDenseBlock3Params(3,32,"dense0",!0),dense1=extractDenseBlock3Params(32,64,"dense1"),dense2=extractDenseBlock3Params(64,128,"dense2");if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{paramMappings,params:{dense0,dense1,dense2}}}var TinyFaceFeatureExtractor=class extends NeuralNetwork{constructor(){super("TinyFaceFeatureExtractor")}forwardInput(input){let{params}=this;if(!params)throw new Error("TinyFaceFeatureExtractor - load model before inference");return tf22.tidy(()=>{let batchTensor=tf22.cast(input.toBatchTensor(112,!0),"float32"),normalized=normalize(batchTensor,[122.782,117.001,104.298]).div(tf22.scalar(255)),out=denseBlock3(normalized,params.dense0,!0);return out=denseBlock3(out,params.dense1),out=denseBlock3(out,params.dense2),out=tf22.avgPool(out,[14,14],[2,2],"valid"),out})}async forward(input){return this.forwardInput(await toNetInput(input))}getDefaultModelName(){return"face_feature_extractor_tiny_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMapTiny(weightMap)}extractParams(weights){return extractParamsTiny(weights)}};var FaceLandmark68TinyNet=class extends FaceLandmark68NetBase{constructor(faceFeatureExtractor=new TinyFaceFeatureExtractor){super("FaceLandmark68TinyNet",faceFeatureExtractor)}getDefaultModelName(){return"face_landmark_68_tiny_model"}getClassifierChannelsIn(){return 128}};var FaceLandmarkNet=class extends FaceLandmark68Net{};var tf27=__toModule(require_tfjs_esm());var tf24=__toModule(require_tfjs_esm());var tf23=__toModule(require_tfjs_esm());function scale(x,params){return tf23.add(tf23.mul(x,params.weights),params.biases)}function convLayer2(x,params,strides,withRelu,padding="same"){let{filters,bias}=params.conv,out=tf24.conv2d(x,filters,strides,padding);return out=tf24.add(out,bias),out=scale(out,params.scale),withRelu?tf24.relu(out):out}function conv2(x,params){return convLayer2(x,params,[1,1],!0)}function convNoRelu(x,params){return convLayer2(x,params,[1,1],!1)}function convDown(x,params){return convLayer2(x,params,[2,2],!0,"valid")}var tf25=__toModule(require_tfjs_esm());function extractorsFactory3(extractWeights,paramMappings){function extractFilterValues(numFilterValues,numFilters,filterSize){let weights=extractWeights(numFilterValues),depth=weights.length/(numFilters*filterSize*filterSize);if(isFloat(depth))throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`);return tf25.tidy(()=>tf25.transpose(tf25.tensor4d(weights,[numFilters,depth,filterSize,filterSize]),[2,3,1,0]))}function extractConvParams(numFilterValues,numFilters,filterSize,mappedPrefix){let filters=extractFilterValues(numFilterValues,numFilters,filterSize),bias=tf25.tensor1d(extractWeights(numFilters));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/bias`}),{filters,bias}}function extractScaleLayerParams(numWeights,mappedPrefix){let weights=tf25.tensor1d(extractWeights(numWeights)),biases=tf25.tensor1d(extractWeights(numWeights));return paramMappings.push({paramPath:`${mappedPrefix}/weights`},{paramPath:`${mappedPrefix}/biases`}),{weights,biases}}function extractConvLayerParams(numFilterValues,numFilters,filterSize,mappedPrefix){let conv3=extractConvParams(numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv`),scale2=extractScaleLayerParams(numFilters,`${mappedPrefix}/scale`);return{conv:conv3,scale:scale2}}function extractResidualLayerParams(numFilterValues,numFilters,filterSize,mappedPrefix,isDown=!1){let conv1=extractConvLayerParams((isDown?.5:1)*numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv1`),conv22=extractConvLayerParams(numFilterValues,numFilters,filterSize,`${mappedPrefix}/conv2`);return{conv1,conv2:conv22}}return{extractConvLayerParams,extractResidualLayerParams}}function extractParams5(weights){let{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),paramMappings=[],{extractConvLayerParams,extractResidualLayerParams}=extractorsFactory3(extractWeights,paramMappings),conv32_down=extractConvLayerParams(4704,32,7,"conv32_down"),conv32_1=extractResidualLayerParams(9216,32,3,"conv32_1"),conv32_2=extractResidualLayerParams(9216,32,3,"conv32_2"),conv32_3=extractResidualLayerParams(9216,32,3,"conv32_3"),conv64_down=extractResidualLayerParams(36864,64,3,"conv64_down",!0),conv64_1=extractResidualLayerParams(36864,64,3,"conv64_1"),conv64_2=extractResidualLayerParams(36864,64,3,"conv64_2"),conv64_3=extractResidualLayerParams(36864,64,3,"conv64_3"),conv128_down=extractResidualLayerParams(147456,128,3,"conv128_down",!0),conv128_1=extractResidualLayerParams(147456,128,3,"conv128_1"),conv128_2=extractResidualLayerParams(147456,128,3,"conv128_2"),conv256_down=extractResidualLayerParams(589824,256,3,"conv256_down",!0),conv256_1=extractResidualLayerParams(589824,256,3,"conv256_1"),conv256_2=extractResidualLayerParams(589824,256,3,"conv256_2"),conv256_down_out=extractResidualLayerParams(589824,256,3,"conv256_down_out"),fc=tf25.tidy(()=>tf25.transpose(tf25.tensor2d(extractWeights(256*128),[128,256]),[1,0]));if(paramMappings.push({paramPath:"fc"}),getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params:{conv32_down,conv32_1,conv32_2,conv32_3,conv64_down,conv64_1,conv64_2,conv64_3,conv128_down,conv128_1,conv128_2,conv256_down,conv256_1,conv256_2,conv256_down_out,fc},paramMappings}}function extractorsFactory4(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractScaleLayerParams(prefix){let weights=extractWeightEntry(`${prefix}/scale/weights`,1),biases=extractWeightEntry(`${prefix}/scale/biases`,1);return{weights,biases}}function extractConvLayerParams(prefix){let filters=extractWeightEntry(`${prefix}/conv/filters`,4),bias=extractWeightEntry(`${prefix}/conv/bias`,1),scale2=extractScaleLayerParams(prefix);return{conv:{filters,bias},scale:scale2}}function extractResidualLayerParams(prefix){return{conv1:extractConvLayerParams(`${prefix}/conv1`),conv2:extractConvLayerParams(`${prefix}/conv2`)}}return{extractConvLayerParams,extractResidualLayerParams}}function extractParamsFromWeigthMap5(weightMap){let paramMappings=[],{extractConvLayerParams,extractResidualLayerParams}=extractorsFactory4(weightMap,paramMappings),conv32_down=extractConvLayerParams("conv32_down"),conv32_1=extractResidualLayerParams("conv32_1"),conv32_2=extractResidualLayerParams("conv32_2"),conv32_3=extractResidualLayerParams("conv32_3"),conv64_down=extractResidualLayerParams("conv64_down"),conv64_1=extractResidualLayerParams("conv64_1"),conv64_2=extractResidualLayerParams("conv64_2"),conv64_3=extractResidualLayerParams("conv64_3"),conv128_down=extractResidualLayerParams("conv128_down"),conv128_1=extractResidualLayerParams("conv128_1"),conv128_2=extractResidualLayerParams("conv128_2"),conv256_down=extractResidualLayerParams("conv256_down"),conv256_1=extractResidualLayerParams("conv256_1"),conv256_2=extractResidualLayerParams("conv256_2"),conv256_down_out=extractResidualLayerParams("conv256_down_out"),{fc}=weightMap;if(paramMappings.push({originalPath:"fc",paramPath:"fc"}),!isTensor2D(fc))throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${fc}`);let params={conv32_down,conv32_1,conv32_2,conv32_3,conv64_down,conv64_1,conv64_2,conv64_3,conv128_down,conv128_1,conv128_2,conv256_down,conv256_1,conv256_2,conv256_down_out,fc};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var tf26=__toModule(require_tfjs_esm());function residual(x,params){let out=conv2(x,params.conv1);return out=convNoRelu(out,params.conv2),out=tf26.add(out,x),out=tf26.relu(out),out}function residualDown(x,params){let out=convDown(x,params.conv1);out=convNoRelu(out,params.conv2);let pooled=tf26.avgPool(x,2,2,"valid"),zeros2=tf26.zeros(pooled.shape),isPad=pooled.shape[3]!==out.shape[3];if(pooled.shape[1]!==out.shape[1]||pooled.shape[2]!==out.shape[2]){let padShapeX=[...out.shape];padShapeX[1]=1;let zerosW=tf26.zeros(padShapeX);out=tf26.concat([out,zerosW],1);let padShapeY=[...out.shape];padShapeY[2]=1;let zerosH=tf26.zeros(padShapeY);out=tf26.concat([out,zerosH],2)}return pooled=isPad?tf26.concat([pooled,zeros2],3):pooled,out=tf26.add(pooled,out),out=tf26.relu(out),out}var FaceRecognitionNet=class extends NeuralNetwork{constructor(){super("FaceRecognitionNet")}forwardInput(input){let{params}=this;if(!params)throw new Error("FaceRecognitionNet - load model before inference");return tf27.tidy(()=>{let batchTensor=tf27.cast(input.toBatchTensor(150,!0),"float32"),normalized=normalize(batchTensor,[122.782,117.001,104.298]).div(tf27.scalar(256)),out=convDown(normalized,params.conv32_down);out=tf27.maxPool(out,3,2,"valid"),out=residual(out,params.conv32_1),out=residual(out,params.conv32_2),out=residual(out,params.conv32_3),out=residualDown(out,params.conv64_down),out=residual(out,params.conv64_1),out=residual(out,params.conv64_2),out=residual(out,params.conv64_3),out=residualDown(out,params.conv128_down),out=residual(out,params.conv128_1),out=residual(out,params.conv128_2),out=residualDown(out,params.conv256_down),out=residual(out,params.conv256_1),out=residual(out,params.conv256_2),out=residualDown(out,params.conv256_down_out);let globalAvg=out.mean([1,2]);return tf27.matMul(globalAvg,params.fc)})}async forward(input){return this.forwardInput(await toNetInput(input))}async computeFaceDescriptor(input){let netInput=await toNetInput(input),faceDescriptorTensors=tf27.tidy(()=>tf27.unstack(this.forwardInput(netInput))),faceDescriptorsForBatch=await Promise.all(faceDescriptorTensors.map(t=>t.data()));return faceDescriptorTensors.forEach(t=>t.dispose()),netInput.isBatchInput?faceDescriptorsForBatch:faceDescriptorsForBatch[0]}getDefaultModelName(){return"face_recognition_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap5(weightMap)}extractParams(weights){return extractParams5(weights)}};function createFaceRecognitionNet(weights){let net=new FaceRecognitionNet;return net.extractWeights(weights),net}function extendWithFaceDescriptor(sourceObj,descriptor){return{...sourceObj,...{descriptor}}}function isWithAge(obj){return typeof obj.age=="number"}function extendWithAge(sourceObj,age){return{...sourceObj,...{age}}}function isWithGender(obj){return(obj.gender===Gender.MALE||obj.gender===Gender.FEMALE)&&isValidProbablitiy(obj.genderProbability)}function extendWithGender(sourceObj,gender,genderProbability){return{...sourceObj,...{gender,genderProbability}}}var tf34=__toModule(require_tfjs_esm());var tf28=__toModule(require_tfjs_esm());function extractorsFactory5(extractWeights,paramMappings){function extractDepthwiseConvParams(numChannels,mappedPrefix){let filters=tf28.tensor4d(extractWeights(3*3*numChannels),[3,3,numChannels,1]),batch_norm_scale=tf28.tensor1d(extractWeights(numChannels)),batch_norm_offset=tf28.tensor1d(extractWeights(numChannels)),batch_norm_mean=tf28.tensor1d(extractWeights(numChannels)),batch_norm_variance=tf28.tensor1d(extractWeights(numChannels));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/batch_norm_scale`},{paramPath:`${mappedPrefix}/batch_norm_offset`},{paramPath:`${mappedPrefix}/batch_norm_mean`},{paramPath:`${mappedPrefix}/batch_norm_variance`}),{filters,batch_norm_scale,batch_norm_offset,batch_norm_mean,batch_norm_variance}}function extractConvParams(channelsIn,channelsOut,filterSize,mappedPrefix,isPointwiseConv){let filters=tf28.tensor4d(extractWeights(channelsIn*channelsOut*filterSize*filterSize),[filterSize,filterSize,channelsIn,channelsOut]),bias=tf28.tensor1d(extractWeights(channelsOut));return paramMappings.push({paramPath:`${mappedPrefix}/filters`},{paramPath:`${mappedPrefix}/${isPointwiseConv?"batch_norm_offset":"bias"}`}),{filters,bias}}function extractPointwiseConvParams(channelsIn,channelsOut,filterSize,mappedPrefix){let{filters,bias}=extractConvParams(channelsIn,channelsOut,filterSize,mappedPrefix,!0);return{filters,batch_norm_offset:bias}}function extractConvPairParams(channelsIn,channelsOut,mappedPrefix){let depthwise_conv=extractDepthwiseConvParams(channelsIn,`${mappedPrefix}/depthwise_conv`),pointwise_conv=extractPointwiseConvParams(channelsIn,channelsOut,1,`${mappedPrefix}/pointwise_conv`);return{depthwise_conv,pointwise_conv}}function extractMobilenetV1Params(){let conv_0=extractPointwiseConvParams(3,32,3,"mobilenetv1/conv_0"),conv_1=extractConvPairParams(32,64,"mobilenetv1/conv_1"),conv_2=extractConvPairParams(64,128,"mobilenetv1/conv_2"),conv_3=extractConvPairParams(128,128,"mobilenetv1/conv_3"),conv_4=extractConvPairParams(128,256,"mobilenetv1/conv_4"),conv_5=extractConvPairParams(256,256,"mobilenetv1/conv_5"),conv_6=extractConvPairParams(256,512,"mobilenetv1/conv_6"),conv_7=extractConvPairParams(512,512,"mobilenetv1/conv_7"),conv_8=extractConvPairParams(512,512,"mobilenetv1/conv_8"),conv_9=extractConvPairParams(512,512,"mobilenetv1/conv_9"),conv_10=extractConvPairParams(512,512,"mobilenetv1/conv_10"),conv_11=extractConvPairParams(512,512,"mobilenetv1/conv_11"),conv_12=extractConvPairParams(512,1024,"mobilenetv1/conv_12"),conv_13=extractConvPairParams(1024,1024,"mobilenetv1/conv_13");return{conv_0,conv_1,conv_2,conv_3,conv_4,conv_5,conv_6,conv_7,conv_8,conv_9,conv_10,conv_11,conv_12,conv_13}}function extractPredictionLayerParams(){let conv_0=extractPointwiseConvParams(1024,256,1,"prediction_layer/conv_0"),conv_1=extractPointwiseConvParams(256,512,3,"prediction_layer/conv_1"),conv_2=extractPointwiseConvParams(512,128,1,"prediction_layer/conv_2"),conv_3=extractPointwiseConvParams(128,256,3,"prediction_layer/conv_3"),conv_4=extractPointwiseConvParams(256,128,1,"prediction_layer/conv_4"),conv_5=extractPointwiseConvParams(128,256,3,"prediction_layer/conv_5"),conv_6=extractPointwiseConvParams(256,64,1,"prediction_layer/conv_6"),conv_7=extractPointwiseConvParams(64,128,3,"prediction_layer/conv_7"),box_encoding_0_predictor=extractConvParams(512,12,1,"prediction_layer/box_predictor_0/box_encoding_predictor"),class_predictor_0=extractConvParams(512,9,1,"prediction_layer/box_predictor_0/class_predictor"),box_encoding_1_predictor=extractConvParams(1024,24,1,"prediction_layer/box_predictor_1/box_encoding_predictor"),class_predictor_1=extractConvParams(1024,18,1,"prediction_layer/box_predictor_1/class_predictor"),box_encoding_2_predictor=extractConvParams(512,24,1,"prediction_layer/box_predictor_2/box_encoding_predictor"),class_predictor_2=extractConvParams(512,18,1,"prediction_layer/box_predictor_2/class_predictor"),box_encoding_3_predictor=extractConvParams(256,24,1,"prediction_layer/box_predictor_3/box_encoding_predictor"),class_predictor_3=extractConvParams(256,18,1,"prediction_layer/box_predictor_3/class_predictor"),box_encoding_4_predictor=extractConvParams(256,24,1,"prediction_layer/box_predictor_4/box_encoding_predictor"),class_predictor_4=extractConvParams(256,18,1,"prediction_layer/box_predictor_4/class_predictor"),box_encoding_5_predictor=extractConvParams(128,24,1,"prediction_layer/box_predictor_5/box_encoding_predictor"),class_predictor_5=extractConvParams(128,18,1,"prediction_layer/box_predictor_5/class_predictor");return{conv_0,conv_1,conv_2,conv_3,conv_4,conv_5,conv_6,conv_7,box_predictor_0:{box_encoding_predictor:box_encoding_0_predictor,class_predictor:class_predictor_0},box_predictor_1:{box_encoding_predictor:box_encoding_1_predictor,class_predictor:class_predictor_1},box_predictor_2:{box_encoding_predictor:box_encoding_2_predictor,class_predictor:class_predictor_2},box_predictor_3:{box_encoding_predictor:box_encoding_3_predictor,class_predictor:class_predictor_3},box_predictor_4:{box_encoding_predictor:box_encoding_4_predictor,class_predictor:class_predictor_4},box_predictor_5:{box_encoding_predictor:box_encoding_5_predictor,class_predictor:class_predictor_5}}}return{extractMobilenetV1Params,extractPredictionLayerParams}}function extractParams6(weights){let paramMappings=[],{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),{extractMobilenetV1Params,extractPredictionLayerParams}=extractorsFactory5(extractWeights,paramMappings),mobilenetv1=extractMobilenetV1Params(),prediction_layer=extractPredictionLayerParams(),output_layer={extra_dim:tf28.tensor3d(extractWeights(5118*4),[1,5118,4])};if(paramMappings.push({paramPath:"output_layer/extra_dim"}),getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params:{mobilenetv1,prediction_layer,output_layer},paramMappings}}function extractorsFactory6(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractPointwiseConvParams(prefix,idx,mappedPrefix){let filters=extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`,4,`${mappedPrefix}/filters`),batch_norm_offset=extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`,1,`${mappedPrefix}/batch_norm_offset`);return{filters,batch_norm_offset}}function extractConvPairParams(idx){let mappedPrefix=`mobilenetv1/conv_${idx}`,prefixDepthwiseConv=`MobilenetV1/Conv2d_${idx}_depthwise`,mappedPrefixDepthwiseConv=`${mappedPrefix}/depthwise_conv`,mappedPrefixPointwiseConv=`${mappedPrefix}/pointwise_conv`,filters=extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`,4,`${mappedPrefixDepthwiseConv}/filters`),batch_norm_scale=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`,1,`${mappedPrefixDepthwiseConv}/batch_norm_scale`),batch_norm_offset=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`,1,`${mappedPrefixDepthwiseConv}/batch_norm_offset`),batch_norm_mean=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`,1,`${mappedPrefixDepthwiseConv}/batch_norm_mean`),batch_norm_variance=extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`,1,`${mappedPrefixDepthwiseConv}/batch_norm_variance`);return{depthwise_conv:{filters,batch_norm_scale,batch_norm_offset,batch_norm_mean,batch_norm_variance},pointwise_conv:extractPointwiseConvParams("MobilenetV1",idx,mappedPrefixPointwiseConv)}}function extractMobilenetV1Params(){return{conv_0:extractPointwiseConvParams("MobilenetV1",0,"mobilenetv1/conv_0"),conv_1:extractConvPairParams(1),conv_2:extractConvPairParams(2),conv_3:extractConvPairParams(3),conv_4:extractConvPairParams(4),conv_5:extractConvPairParams(5),conv_6:extractConvPairParams(6),conv_7:extractConvPairParams(7),conv_8:extractConvPairParams(8),conv_9:extractConvPairParams(9),conv_10:extractConvPairParams(10),conv_11:extractConvPairParams(11),conv_12:extractConvPairParams(12),conv_13:extractConvPairParams(13)}}function extractConvParams(prefix,mappedPrefix){let filters=extractWeightEntry(`${prefix}/weights`,4,`${mappedPrefix}/filters`),bias=extractWeightEntry(`${prefix}/biases`,1,`${mappedPrefix}/bias`);return{filters,bias}}function extractBoxPredictorParams(idx){let box_encoding_predictor=extractConvParams(`Prediction/BoxPredictor_${idx}/BoxEncodingPredictor`,`prediction_layer/box_predictor_${idx}/box_encoding_predictor`),class_predictor=extractConvParams(`Prediction/BoxPredictor_${idx}/ClassPredictor`,`prediction_layer/box_predictor_${idx}/class_predictor`);return{box_encoding_predictor,class_predictor}}function extractPredictionLayerParams(){return{conv_0:extractPointwiseConvParams("Prediction",0,"prediction_layer/conv_0"),conv_1:extractPointwiseConvParams("Prediction",1,"prediction_layer/conv_1"),conv_2:extractPointwiseConvParams("Prediction",2,"prediction_layer/conv_2"),conv_3:extractPointwiseConvParams("Prediction",3,"prediction_layer/conv_3"),conv_4:extractPointwiseConvParams("Prediction",4,"prediction_layer/conv_4"),conv_5:extractPointwiseConvParams("Prediction",5,"prediction_layer/conv_5"),conv_6:extractPointwiseConvParams("Prediction",6,"prediction_layer/conv_6"),conv_7:extractPointwiseConvParams("Prediction",7,"prediction_layer/conv_7"),box_predictor_0:extractBoxPredictorParams(0),box_predictor_1:extractBoxPredictorParams(1),box_predictor_2:extractBoxPredictorParams(2),box_predictor_3:extractBoxPredictorParams(3),box_predictor_4:extractBoxPredictorParams(4),box_predictor_5:extractBoxPredictorParams(5)}}return{extractMobilenetV1Params,extractPredictionLayerParams}}function extractParamsFromWeigthMap6(weightMap){let paramMappings=[],{extractMobilenetV1Params,extractPredictionLayerParams}=extractorsFactory6(weightMap,paramMappings),extra_dim=weightMap["Output/extra_dim"];if(paramMappings.push({originalPath:"Output/extra_dim",paramPath:"output_layer/extra_dim"}),!isTensor3D(extra_dim))throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`);let params={mobilenetv1:extractMobilenetV1Params(),prediction_layer:extractPredictionLayerParams(),output_layer:{extra_dim}};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var tf30=__toModule(require_tfjs_esm());var tf29=__toModule(require_tfjs_esm());function pointwiseConvLayer(x,params,strides){return tf29.tidy(()=>{let out=tf29.conv2d(x,params.filters,strides,"same");return out=tf29.add(out,params.batch_norm_offset),tf29.clipByValue(out,0,6)})}var epsilon=.0010000000474974513;function depthwiseConvLayer(x,params,strides){return tf30.tidy(()=>{let out=tf30.depthwiseConv2d(x,params.filters,strides,"same");return out=tf30.batchNorm(out,params.batch_norm_mean,params.batch_norm_variance,params.batch_norm_offset,params.batch_norm_scale,epsilon),tf30.clipByValue(out,0,6)})}function getStridesForLayerIdx(layerIdx){return[2,4,6,12].some(idx=>idx===layerIdx)?[2,2]:[1,1]}function mobileNetV1(x,params){return tf30.tidy(()=>{let conv11,out=pointwiseConvLayer(x,params.conv_0,[2,2]);if([params.conv_1,params.conv_2,params.conv_3,params.conv_4,params.conv_5,params.conv_6,params.conv_7,params.conv_8,params.conv_9,params.conv_10,params.conv_11,params.conv_12,params.conv_13].forEach((param,i)=>{let layerIdx=i+1,depthwiseConvStrides=getStridesForLayerIdx(layerIdx);out=depthwiseConvLayer(out,param.depthwise_conv,depthwiseConvStrides),out=pointwiseConvLayer(out,param.pointwise_conv,[1,1]),layerIdx===11&&(conv11=out)}),conv11===null)throw new Error("mobileNetV1 - output of conv layer 11 is null");return{out,conv11}})}function IOU(boxes,i,j){let boxesData=boxes.arraySync(),yminI=Math.min(boxesData[i][0],boxesData[i][2]),xminI=Math.min(boxesData[i][1],boxesData[i][3]),ymaxI=Math.max(boxesData[i][0],boxesData[i][2]),xmaxI=Math.max(boxesData[i][1],boxesData[i][3]),yminJ=Math.min(boxesData[j][0],boxesData[j][2]),xminJ=Math.min(boxesData[j][1],boxesData[j][3]),ymaxJ=Math.max(boxesData[j][0],boxesData[j][2]),xmaxJ=Math.max(boxesData[j][1],boxesData[j][3]),areaI=(ymaxI-yminI)*(xmaxI-xminI),areaJ=(ymaxJ-yminJ)*(xmaxJ-xminJ);if(areaI<=0||areaJ<=0)return 0;let intersectionYmin=Math.max(yminI,yminJ),intersectionXmin=Math.max(xminI,xminJ),intersectionYmax=Math.min(ymaxI,ymaxJ),intersectionXmax=Math.min(xmaxI,xmaxJ),intersectionArea=Math.max(intersectionYmax-intersectionYmin,0)*Math.max(intersectionXmax-intersectionXmin,0);return intersectionArea/(areaI+areaJ-intersectionArea)}function nonMaxSuppression2(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){let numBoxes=boxes.shape[0],outputSize=Math.min(maxOutputSize,numBoxes),candidates=scores.map((score,boxIndex)=>({score,boxIndex})).filter(c=>c.score>scoreThreshold).sort((c1,c2)=>c2.score-c1.score),suppressFunc=x=>x<=iouThreshold?1:0,selected=[];return candidates.forEach(c=>{if(selected.length>=outputSize)return;let originalScore=c.score;for(let j=selected.length-1;j>=0;--j){let iou2=IOU(boxes,c.boxIndex,selected[j]);if(iou2!==0&&(c.score*=suppressFunc(iou2),c.score<=scoreThreshold))break}originalScore===c.score&&selected.push(c.boxIndex)}),selected}var tf31=__toModule(require_tfjs_esm());function getCenterCoordinatesAndSizesLayer(x){let vec=tf31.unstack(tf31.transpose(x,[1,0])),sizes=[tf31.sub(vec[2],vec[0]),tf31.sub(vec[3],vec[1])],centers=[tf31.add(vec[0],tf31.div(sizes[0],tf31.scalar(2))),tf31.add(vec[1],tf31.div(sizes[1],tf31.scalar(2)))];return{sizes,centers}}function decodeBoxesLayer(x0,x1){let{sizes,centers}=getCenterCoordinatesAndSizesLayer(x0),vec=tf31.unstack(tf31.transpose(x1,[1,0])),div0_out=tf31.div(tf31.mul(tf31.exp(tf31.div(vec[2],tf31.scalar(5))),sizes[0]),tf31.scalar(2)),add0_out=tf31.add(tf31.mul(tf31.div(vec[0],tf31.scalar(10)),sizes[0]),centers[0]),div1_out=tf31.div(tf31.mul(tf31.exp(tf31.div(vec[3],tf31.scalar(5))),sizes[1]),tf31.scalar(2)),add1_out=tf31.add(tf31.mul(tf31.div(vec[1],tf31.scalar(10)),sizes[1]),centers[1]);return tf31.transpose(tf31.stack([tf31.sub(add0_out,div0_out),tf31.sub(add1_out,div1_out),tf31.add(add0_out,div0_out),tf31.add(add1_out,div1_out)]),[1,0])}function outputLayer(boxPredictions,classPredictions,params){return tf31.tidy(()=>{let batchSize=boxPredictions.shape[0],boxes=decodeBoxesLayer(tf31.reshape(tf31.tile(params.extra_dim,[batchSize,1,1]),[-1,4]),tf31.reshape(boxPredictions,[-1,4]));boxes=tf31.reshape(boxes,[batchSize,boxes.shape[0]/batchSize,4]);let scoresAndClasses=tf31.sigmoid(tf31.slice(classPredictions,[0,0,1],[-1,-1,-1])),scores=tf31.slice(scoresAndClasses,[0,0,0],[-1,-1,1]);scores=tf31.reshape(scores,[batchSize,scores.shape[1]]);let boxesByBatch=tf31.unstack(boxes),scoresByBatch=tf31.unstack(scores);return{boxes:boxesByBatch,scores:scoresByBatch}})}var tf33=__toModule(require_tfjs_esm());var tf32=__toModule(require_tfjs_esm());function boxPredictionLayer(x,params){return tf32.tidy(()=>{let batchSize=x.shape[0],boxPredictionEncoding=tf32.reshape(convLayer(x,params.box_encoding_predictor),[batchSize,-1,1,4]),classPrediction=tf32.reshape(convLayer(x,params.class_predictor),[batchSize,-1,3]);return{boxPredictionEncoding,classPrediction}})}function predictionLayer(x,conv11,params){return tf33.tidy(()=>{let conv0=pointwiseConvLayer(x,params.conv_0,[1,1]),conv1=pointwiseConvLayer(conv0,params.conv_1,[2,2]),conv22=pointwiseConvLayer(conv1,params.conv_2,[1,1]),conv3=pointwiseConvLayer(conv22,params.conv_3,[2,2]),conv4=pointwiseConvLayer(conv3,params.conv_4,[1,1]),conv5=pointwiseConvLayer(conv4,params.conv_5,[2,2]),conv6=pointwiseConvLayer(conv5,params.conv_6,[1,1]),conv7=pointwiseConvLayer(conv6,params.conv_7,[2,2]),boxPrediction0=boxPredictionLayer(conv11,params.box_predictor_0),boxPrediction1=boxPredictionLayer(x,params.box_predictor_1),boxPrediction2=boxPredictionLayer(conv1,params.box_predictor_2),boxPrediction3=boxPredictionLayer(conv3,params.box_predictor_3),boxPrediction4=boxPredictionLayer(conv5,params.box_predictor_4),boxPrediction5=boxPredictionLayer(conv7,params.box_predictor_5),boxPredictions=tf33.concat([boxPrediction0.boxPredictionEncoding,boxPrediction1.boxPredictionEncoding,boxPrediction2.boxPredictionEncoding,boxPrediction3.boxPredictionEncoding,boxPrediction4.boxPredictionEncoding,boxPrediction5.boxPredictionEncoding],1),classPredictions=tf33.concat([boxPrediction0.classPrediction,boxPrediction1.classPrediction,boxPrediction2.classPrediction,boxPrediction3.classPrediction,boxPrediction4.classPrediction,boxPrediction5.classPrediction],1);return{boxPredictions,classPredictions}})}var SsdMobilenetv1Options=class{constructor({minConfidence,maxResults}={}){this._name="SsdMobilenetv1Options";if(this._minConfidence=minConfidence||.5,this._maxResults=maxResults||100,typeof this._minConfidence!="number"||this._minConfidence<=0||this._minConfidence>=1)throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`);if(typeof this._maxResults!="number")throw new Error(`${this._name} - expected maxResults to be a number`)}get minConfidence(){return this._minConfidence}get maxResults(){return this._maxResults}};var SsdMobilenetv1=class extends NeuralNetwork{constructor(){super("SsdMobilenetv1")}forwardInput(input){let{params}=this;if(!params)throw new Error("SsdMobilenetv1 - load model before inference");return tf34.tidy(()=>{let batchTensor=tf34.cast(input.toBatchTensor(512,!1),"float32"),x=tf34.sub(tf34.mul(batchTensor,tf34.scalar(.007843137718737125)),tf34.scalar(1)),features=mobileNetV1(x,params.mobilenetv1),{boxPredictions,classPredictions}=predictionLayer(features.out,features.conv11,params.prediction_layer);return outputLayer(boxPredictions,classPredictions,params.output_layer)})}async forward(input){return this.forwardInput(await toNetInput(input))}async locateFaces(input,options={}){let{maxResults,minConfidence}=new SsdMobilenetv1Options(options),netInput=await toNetInput(input),{boxes:_boxes,scores:_scores}=this.forwardInput(netInput),boxes=_boxes[0],scores=_scores[0];for(let i=1;i<_boxes.length;i++)_boxes[i].dispose(),_scores[i].dispose();let scoresData=Array.from(await scores.data()),indices=nonMaxSuppression2(boxes,scoresData,maxResults,.5,minConfidence),reshapedDims=netInput.getReshapedInputDimensions(0),inputSize=netInput.inputSize,padX=inputSize/reshapedDims.width,padY=inputSize/reshapedDims.height,boxesData=boxes.arraySync(),results=indices.map(idx=>{let[top,bottom]=[Math.max(0,boxesData[idx][0]),Math.min(1,boxesData[idx][2])].map(val=>val*padY),[left,right]=[Math.max(0,boxesData[idx][1]),Math.min(1,boxesData[idx][3])].map(val=>val*padX);return new FaceDetection(scoresData[idx],new Rect(left,top,right-left,bottom-top),{height:netInput.getInputHeight(0),width:netInput.getInputWidth(0)})});return boxes.dispose(),scores.dispose(),results}getDefaultModelName(){return"ssd_mobilenetv1_model"}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap6(weightMap)}extractParams(weights){return extractParams6(weights)}};function createSsdMobilenetv1(weights){let net=new SsdMobilenetv1;return net.extractWeights(weights),net}function createFaceDetectionNet(weights){return createSsdMobilenetv1(weights)}var FaceDetectionNet=class extends SsdMobilenetv1{};var IOU_THRESHOLD=.4,BOX_ANCHORS=[new Point(.738768,.874946),new Point(2.42204,2.65704),new Point(4.30971,7.04493),new Point(10.246,4.59428),new Point(12.6868,11.8741)],BOX_ANCHORS_SEPARABLE=[new Point(1.603231,2.094468),new Point(6.041143,7.080126),new Point(2.882459,3.518061),new Point(4.266906,5.178857),new Point(9.041765,10.66308)],MEAN_RGB_SEPARABLE=[117.001,114.697,97.404],DEFAULT_MODEL_NAME="tiny_yolov2_model",DEFAULT_MODEL_NAME_SEPARABLE_CONV="tiny_yolov2_separable_conv_model";var tf39=__toModule(require_tfjs_esm());var isNumber=arg=>typeof arg=="number";function validateConfig(config){if(!config)throw new Error(`invalid config: ${config}`);if(typeof config.withSeparableConvs!="boolean")throw new Error(`config.withSeparableConvs has to be a boolean, have: ${config.withSeparableConvs}`);if(!isNumber(config.iouThreshold)||config.iouThreshold<0||config.iouThreshold>1)throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${config.iouThreshold}`);if(!Array.isArray(config.classes)||!config.classes.length||!config.classes.every(c=>typeof c=="string"))throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(config.classes)}`);if(!Array.isArray(config.anchors)||!config.anchors.length||!config.anchors.map(a=>a||{}).every(a=>isNumber(a.x)&&isNumber(a.y)))throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(config.anchors)}`);if(config.meanRgb&&(!Array.isArray(config.meanRgb)||config.meanRgb.length!==3||!config.meanRgb.every(isNumber)))throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(config.meanRgb)}`)}var tf36=__toModule(require_tfjs_esm());var tf35=__toModule(require_tfjs_esm());function leaky(x){return tf35.tidy(()=>{let min=tf35.mul(x,tf35.scalar(.10000000149011612));return tf35.add(tf35.relu(tf35.sub(x,min)),min)})}function convWithBatchNorm(x,params){return tf36.tidy(()=>{let out=tf36.pad(x,[[0,0],[1,1],[1,1],[0,0]]);return out=tf36.conv2d(out,params.conv.filters,[1,1],"valid"),out=tf36.sub(out,params.bn.sub),out=tf36.mul(out,params.bn.truediv),out=tf36.add(out,params.conv.bias),leaky(out)})}var tf37=__toModule(require_tfjs_esm());function depthwiseSeparableConv2(x,params){return tf37.tidy(()=>{let out=tf37.pad(x,[[0,0],[1,1],[1,1],[0,0]]);return out=tf37.separableConv2d(out,params.depthwise_filter,params.pointwise_filter,[1,1],"valid"),out=tf37.add(out,params.bias),leaky(out)})}var tf38=__toModule(require_tfjs_esm());function extractorsFactory7(extractWeights,paramMappings){let extractConvParams=extractConvParamsFactory(extractWeights,paramMappings);function extractBatchNormParams(size,mappedPrefix){let sub6=tf38.tensor1d(extractWeights(size)),truediv=tf38.tensor1d(extractWeights(size));return paramMappings.push({paramPath:`${mappedPrefix}/sub`},{paramPath:`${mappedPrefix}/truediv`}),{sub:sub6,truediv}}function extractConvWithBatchNormParams(channelsIn,channelsOut,mappedPrefix){let conv3=extractConvParams(channelsIn,channelsOut,3,`${mappedPrefix}/conv`),bn=extractBatchNormParams(channelsOut,`${mappedPrefix}/bn`);return{conv:conv3,bn}}let extractSeparableConvParams=extractSeparableConvParamsFactory(extractWeights,paramMappings);return{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}}function extractParams7(weights,config,boxEncodingSize,filterSizes){let{extractWeights,getRemainingWeights}=extractWeightsFactory(weights),paramMappings=[],{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}=extractorsFactory7(extractWeights,paramMappings),params;if(config.withSeparableConvs){let[s0,s1,s2,s3,s4,s5,s6,s7,s8]=filterSizes,conv0=config.isFirstLayerConv2d?extractConvParams(s0,s1,3,"conv0"):extractSeparableConvParams(s0,s1,"conv0"),conv1=extractSeparableConvParams(s1,s2,"conv1"),conv22=extractSeparableConvParams(s2,s3,"conv2"),conv3=extractSeparableConvParams(s3,s4,"conv3"),conv4=extractSeparableConvParams(s4,s5,"conv4"),conv5=extractSeparableConvParams(s5,s6,"conv5"),conv6=s7?extractSeparableConvParams(s6,s7,"conv6"):void 0,conv7=s8?extractSeparableConvParams(s7,s8,"conv7"):void 0,conv8=extractConvParams(s8||s7||s6,5*boxEncodingSize,1,"conv8");params={conv0,conv1,conv2:conv22,conv3,conv4,conv5,conv6,conv7,conv8}}else{let[s0,s1,s2,s3,s4,s5,s6,s7,s8]=filterSizes,conv0=extractConvWithBatchNormParams(s0,s1,"conv0"),conv1=extractConvWithBatchNormParams(s1,s2,"conv1"),conv22=extractConvWithBatchNormParams(s2,s3,"conv2"),conv3=extractConvWithBatchNormParams(s3,s4,"conv3"),conv4=extractConvWithBatchNormParams(s4,s5,"conv4"),conv5=extractConvWithBatchNormParams(s5,s6,"conv5"),conv6=extractConvWithBatchNormParams(s6,s7,"conv6"),conv7=extractConvWithBatchNormParams(s7,s8,"conv7"),conv8=extractConvParams(s8,5*boxEncodingSize,1,"conv8");params={conv0,conv1,conv2:conv22,conv3,conv4,conv5,conv6,conv7,conv8}}if(getRemainingWeights().length!==0)throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);return{params,paramMappings}}function extractorsFactory8(weightMap,paramMappings){let extractWeightEntry=extractWeightEntryFactory(weightMap,paramMappings);function extractBatchNormParams(prefix){let sub6=extractWeightEntry(`${prefix}/sub`,1),truediv=extractWeightEntry(`${prefix}/truediv`,1);return{sub:sub6,truediv}}function extractConvParams(prefix){let filters=extractWeightEntry(`${prefix}/filters`,4),bias=extractWeightEntry(`${prefix}/bias`,1);return{filters,bias}}function extractConvWithBatchNormParams(prefix){let conv3=extractConvParams(`${prefix}/conv`),bn=extractBatchNormParams(`${prefix}/bn`);return{conv:conv3,bn}}let extractSeparableConvParams=loadSeparableConvParamsFactory(extractWeightEntry);return{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}}function extractParamsFromWeigthMap7(weightMap,config){let paramMappings=[],{extractConvParams,extractConvWithBatchNormParams,extractSeparableConvParams}=extractorsFactory8(weightMap,paramMappings),params;if(config.withSeparableConvs){let numFilters=config.filterSizes&&config.filterSizes.length||9;params={conv0:config.isFirstLayerConv2d?extractConvParams("conv0"):extractSeparableConvParams("conv0"),conv1:extractSeparableConvParams("conv1"),conv2:extractSeparableConvParams("conv2"),conv3:extractSeparableConvParams("conv3"),conv4:extractSeparableConvParams("conv4"),conv5:extractSeparableConvParams("conv5"),conv6:numFilters>7?extractSeparableConvParams("conv6"):void 0,conv7:numFilters>8?extractSeparableConvParams("conv7"):void 0,conv8:extractConvParams("conv8")}}else params={conv0:extractConvWithBatchNormParams("conv0"),conv1:extractConvWithBatchNormParams("conv1"),conv2:extractConvWithBatchNormParams("conv2"),conv3:extractConvWithBatchNormParams("conv3"),conv4:extractConvWithBatchNormParams("conv4"),conv5:extractConvWithBatchNormParams("conv5"),conv6:extractConvWithBatchNormParams("conv6"),conv7:extractConvWithBatchNormParams("conv7"),conv8:extractConvParams("conv8")};return disposeUnusedWeightTensors(weightMap,paramMappings),{params,paramMappings}}var TinyYolov2Options=class{constructor({inputSize,scoreThreshold}={}){this._name="TinyYolov2Options";if(this._inputSize=inputSize||416,this._scoreThreshold=scoreThreshold||.5,typeof this._inputSize!="number"||this._inputSize%32!=0)throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`);if(typeof this._scoreThreshold!="number"||this._scoreThreshold<=0||this._scoreThreshold>=1)throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`)}get inputSize(){return this._inputSize}get scoreThreshold(){return this._scoreThreshold}};var TinyYolov2Base2=class extends NeuralNetwork{constructor(config){super("TinyYolov2");validateConfig(config),this._config=config}get config(){return this._config}get withClassScores(){return this.config.withClassScores||this.config.classes.length>1}get boxEncodingSize(){return 5+(this.withClassScores?this.config.classes.length:0)}runTinyYolov2(x,params){let out=convWithBatchNorm(x,params.conv0);return out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv1),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv2),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv3),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv4),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=convWithBatchNorm(out,params.conv5),out=tf39.maxPool(out,[2,2],[1,1],"same"),out=convWithBatchNorm(out,params.conv6),out=convWithBatchNorm(out,params.conv7),convLayer(out,params.conv8,"valid",!1)}runMobilenet(x,params){let out=this.config.isFirstLayerConv2d?leaky(convLayer(x,params.conv0,"valid",!1)):depthwiseSeparableConv2(x,params.conv0);return out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv2(out,params.conv1),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv2(out,params.conv2),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv2(out,params.conv3),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv2(out,params.conv4),out=tf39.maxPool(out,[2,2],[2,2],"same"),out=depthwiseSeparableConv2(out,params.conv5),out=tf39.maxPool(out,[2,2],[1,1],"same"),out=params.conv6?depthwiseSeparableConv2(out,params.conv6):out,out=params.conv7?depthwiseSeparableConv2(out,params.conv7):out,convLayer(out,params.conv8,"valid",!1)}forwardInput(input,inputSize){let{params}=this;if(!params)throw new Error("TinyYolov2 - load model before inference");return tf39.tidy(()=>{let batchTensor=tf39.cast(input.toBatchTensor(inputSize,!1),"float32");return batchTensor=this.config.meanRgb?normalize(batchTensor,this.config.meanRgb):batchTensor,batchTensor=batchTensor.div(tf39.scalar(256)),this.config.withSeparableConvs?this.runMobilenet(batchTensor,params):this.runTinyYolov2(batchTensor,params)})}async forward(input,inputSize){return this.forwardInput(await toNetInput(input),inputSize)}async detect(input,forwardParams={}){let{inputSize,scoreThreshold}=new TinyYolov2Options(forwardParams),netInput=await toNetInput(input),out=await this.forwardInput(netInput,inputSize),out0=tf39.tidy(()=>tf39.unstack(out)[0].expandDims()),inputDimensions={width:netInput.getInputWidth(0),height:netInput.getInputHeight(0)},results=await this.extractBoxes(out0,netInput.getReshapedInputDimensions(0),scoreThreshold);out.dispose(),out0.dispose();let boxes=results.map(res=>res.box),scores=results.map(res=>res.score),classScores=results.map(res=>res.classScore),classNames=results.map(res=>this.config.classes[res.label]);return nonMaxSuppression(boxes.map(box=>box.rescale(inputSize)),scores,this.config.iouThreshold,!0).map(idx=>new ObjectDetection(scores[idx],classScores[idx],classNames[idx],boxes[idx],inputDimensions))}getDefaultModelName(){return""}extractParamsFromWeigthMap(weightMap){return extractParamsFromWeigthMap7(weightMap,this.config)}extractParams(weights){let filterSizes=this.config.filterSizes||TinyYolov2Base2.DEFAULT_FILTER_SIZES,numFilters=filterSizes?filterSizes.length:void 0;if(numFilters!==7&&numFilters!==8&&numFilters!==9)throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`);return extractParams7(weights,this.config,this.boxEncodingSize,filterSizes)}async extractBoxes(outputTensor,inputBlobDimensions,scoreThreshold){let{width,height}=inputBlobDimensions,inputSize=Math.max(width,height),correctionFactorX=inputSize/width,correctionFactorY=inputSize/height,numCells=outputTensor.shape[1],numBoxes=this.config.anchors.length,[boxesTensor,scoresTensor,classScoresTensor]=tf39.tidy(()=>{let reshaped=outputTensor.reshape([numCells,numCells,numBoxes,this.boxEncodingSize]),boxes=reshaped.slice([0,0,0,0],[numCells,numCells,numBoxes,4]),scores=reshaped.slice([0,0,0,4],[numCells,numCells,numBoxes,1]),classScores=this.withClassScores?tf39.softmax(reshaped.slice([0,0,0,5],[numCells,numCells,numBoxes,this.config.classes.length]),3):tf39.scalar(0);return[boxes,scores,classScores]}),results=[],scoresData=await scoresTensor.array(),boxesData=await boxesTensor.array();for(let row=0;rowscoreThreshold){let ctX=(col+sigmoid(boxesData[row][col][anchor][0]))/numCells*correctionFactorX,ctY=(row+sigmoid(boxesData[row][col][anchor][1]))/numCells*correctionFactorY,widthLocal=Math.exp(boxesData[row][col][anchor][2])*this.config.anchors[anchor].x/numCells*correctionFactorX,heightLocal=Math.exp(boxesData[row][col][anchor][3])*this.config.anchors[anchor].y/numCells*correctionFactorY,x=ctX-widthLocal/2,y=ctY-heightLocal/2,pos={row,col,anchor},{classScore,label}=this.withClassScores?await this.extractPredictedClass(classScoresTensor,pos):{classScore:1,label:0};results.push({box:new BoundingBox(x,y,x+widthLocal,y+heightLocal),score,classScore:score*classScore,label,...pos})}}return boxesTensor.dispose(),scoresTensor.dispose(),classScoresTensor.dispose(),results}async extractPredictedClass(classesTensor,pos){let{row,col,anchor}=pos,classesData=await classesTensor.array();return Array(this.config.classes.length).fill(0).map((_,i)=>classesData[row][col][anchor][i]).map((classScore,label)=>({classScore,label})).reduce((max,curr)=>max.classScore>curr.classScore?max:curr)}},TinyYolov2Base=TinyYolov2Base2;TinyYolov2Base.DEFAULT_FILTER_SIZES=[3,16,32,64,128,256,512,1024,1024];var TinyYolov2=class extends TinyYolov2Base{constructor(withSeparableConvs=!0){let config={withSeparableConvs,iouThreshold:IOU_THRESHOLD,classes:["face"],...withSeparableConvs?{anchors:BOX_ANCHORS_SEPARABLE,meanRgb:MEAN_RGB_SEPARABLE}:{anchors:BOX_ANCHORS,withClassScores:!0}};super(config)}get withSeparableConvs(){return this.config.withSeparableConvs}get anchors(){return this.config.anchors}async locateFaces(input,forwardParams){return(await this.detect(input,forwardParams)).map(det=>new FaceDetection(det.score,det.relativeBox,{width:det.imageWidth,height:det.imageHeight}))}getDefaultModelName(){return this.withSeparableConvs?DEFAULT_MODEL_NAME_SEPARABLE_CONV:DEFAULT_MODEL_NAME}extractParamsFromWeigthMap(weightMap){return super.extractParamsFromWeigthMap(weightMap)}};function createTinyYolov2(weights,withSeparableConvs=!0){let net=new TinyYolov2(withSeparableConvs);return net.extractWeights(weights),net}var TinyFaceDetectorOptions=class extends TinyYolov2Options{constructor(){super(...arguments);this._name="TinyFaceDetectorOptions"}};var ComposableTask=class{async then(onfulfilled){return onfulfilled(await this.run())}async run(){throw new Error("ComposableTask - run is not implemented")}};var tf41=__toModule(require_tfjs_esm());var tf40=__toModule(require_tfjs_esm());async function extractAllFacesAndComputeResults(parentResults,input,computeResults,extractedFaces,getRectForAlignment=({alignedRect})=>alignedRect){let faceBoxes=parentResults.map(parentResult=>isWithFaceLandmarks(parentResult)?getRectForAlignment(parentResult):parentResult.detection),faces=extractedFaces||(input instanceof tf40.Tensor?await extractFaceTensors(input,faceBoxes):await extractFaces(input,faceBoxes)),results=await computeResults(faces);return faces.forEach(f=>f instanceof tf40.Tensor&&f.dispose()),results}async function extractSingleFaceAndComputeResult(parentResult,input,computeResult,extractedFaces,getRectForAlignment){return extractAllFacesAndComputeResults([parentResult],input,async faces=>computeResult(faces[0]),extractedFaces,getRectForAlignment)}var IOU_THRESHOLD2=.4,BOX_ANCHORS2=[new Point(1.603231,2.094468),new Point(6.041143,7.080126),new Point(2.882459,3.518061),new Point(4.266906,5.178857),new Point(9.041765,10.66308)],MEAN_RGB=[117.001,114.697,97.404];var TinyFaceDetector=class extends TinyYolov2Base{constructor(){let config={withSeparableConvs:!0,iouThreshold:IOU_THRESHOLD2,classes:["face"],anchors:BOX_ANCHORS2,meanRgb:MEAN_RGB,isFirstLayerConv2d:!0,filterSizes:[3,16,32,64,128,256,512]};super(config)}get anchors(){return this.config.anchors}async locateFaces(input,forwardParams){return(await this.detect(input,forwardParams)).map(det=>new FaceDetection(det.score,det.relativeBox,{width:det.imageWidth,height:det.imageHeight}))}getDefaultModelName(){return"tiny_face_detector_model"}extractParamsFromWeigthMap(weightMap){return super.extractParamsFromWeigthMap(weightMap)}};var nets={ssdMobilenetv1:new SsdMobilenetv1,tinyFaceDetector:new TinyFaceDetector,tinyYolov2:new TinyYolov2,faceLandmark68Net:new FaceLandmark68Net,faceLandmark68TinyNet:new FaceLandmark68TinyNet,faceRecognitionNet:new FaceRecognitionNet,faceExpressionNet:new FaceExpressionNet,ageGenderNet:new AgeGenderNet},ssdMobilenetv1=(input,options)=>nets.ssdMobilenetv1.locateFaces(input,options),tinyFaceDetector=(input,options)=>nets.tinyFaceDetector.locateFaces(input,options),tinyYolov2=(input,options)=>nets.tinyYolov2.locateFaces(input,options),detectFaceLandmarks=input=>nets.faceLandmark68Net.detectLandmarks(input),detectFaceLandmarksTiny=input=>nets.faceLandmark68TinyNet.detectLandmarks(input),computeFaceDescriptor=input=>nets.faceRecognitionNet.computeFaceDescriptor(input),recognizeFaceExpressions=input=>nets.faceExpressionNet.predictExpressions(input),predictAgeAndGender=input=>nets.ageGenderNet.predictAgeAndGender(input),loadSsdMobilenetv1Model=url=>nets.ssdMobilenetv1.load(url),loadTinyFaceDetectorModel=url=>nets.tinyFaceDetector.load(url),loadTinyYolov2Model=url=>nets.tinyYolov2.load(url),loadFaceLandmarkModel=url=>nets.faceLandmark68Net.load(url),loadFaceLandmarkTinyModel=url=>nets.faceLandmark68TinyNet.load(url),loadFaceRecognitionModel=url=>nets.faceRecognitionNet.load(url),loadFaceExpressionModel=url=>nets.faceExpressionNet.load(url),loadAgeGenderModel=url=>nets.ageGenderNet.load(url),loadFaceDetectionModel=loadSsdMobilenetv1Model,locateFaces=ssdMobilenetv1,detectLandmarks=detectFaceLandmarks;var PredictFaceExpressionsTaskBase=class extends ComposableTask{constructor(parentTask,input,extractedFaces){super();this.parentTask=parentTask;this.input=input;this.extractedFaces=extractedFaces}},PredictAllFaceExpressionsTask=class extends PredictFaceExpressionsTaskBase{async run(){let parentResults=await this.parentTask,faceExpressionsByFace=await extractAllFacesAndComputeResults(parentResults,this.input,async faces=>Promise.all(faces.map(face=>nets.faceExpressionNet.predictExpressions(face))),this.extractedFaces);return parentResults.map((parentResult,i)=>extendWithFaceExpressions(parentResult,faceExpressionsByFace[i]))}withAgeAndGender(){return new PredictAllAgeAndGenderTask(this,this.input)}},PredictSingleFaceExpressionsTask=class extends PredictFaceExpressionsTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let faceExpressions=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.faceExpressionNet.predictExpressions(face),this.extractedFaces);return extendWithFaceExpressions(parentResult,faceExpressions)}withAgeAndGender(){return new PredictSingleAgeAndGenderTask(this,this.input)}},PredictAllFaceExpressionsWithFaceAlignmentTask=class extends PredictAllFaceExpressionsTask{withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},PredictSingleFaceExpressionsWithFaceAlignmentTask=class extends PredictSingleFaceExpressionsTask{withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}};var PredictAgeAndGenderTaskBase=class extends ComposableTask{constructor(parentTask,input,extractedFaces){super();this.parentTask=parentTask;this.input=input;this.extractedFaces=extractedFaces}},PredictAllAgeAndGenderTask=class extends PredictAgeAndGenderTaskBase{async run(){let parentResults=await this.parentTask,ageAndGenderByFace=await extractAllFacesAndComputeResults(parentResults,this.input,async faces=>Promise.all(faces.map(face=>nets.ageGenderNet.predictAgeAndGender(face))),this.extractedFaces);return parentResults.map((parentResult,i)=>{let{age,gender,genderProbability}=ageAndGenderByFace[i];return extendWithAge(extendWithGender(parentResult,gender,genderProbability),age)})}withFaceExpressions(){return new PredictAllFaceExpressionsTask(this,this.input)}},PredictSingleAgeAndGenderTask=class extends PredictAgeAndGenderTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let{age,gender,genderProbability}=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.ageGenderNet.predictAgeAndGender(face),this.extractedFaces);return extendWithAge(extendWithGender(parentResult,gender,genderProbability),age)}withFaceExpressions(){return new PredictSingleFaceExpressionsTask(this,this.input)}},PredictAllAgeAndGenderWithFaceAlignmentTask=class extends PredictAllAgeAndGenderTask{withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},PredictSingleAgeAndGenderWithFaceAlignmentTask=class extends PredictSingleAgeAndGenderTask{withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}};var ComputeFaceDescriptorsTaskBase=class extends ComposableTask{constructor(parentTask,input){super();this.parentTask=parentTask;this.input=input}},ComputeAllFaceDescriptorsTask=class extends ComputeFaceDescriptorsTaskBase{async run(){let parentResults=await this.parentTask;return(await extractAllFacesAndComputeResults(parentResults,this.input,faces=>Promise.all(faces.map(face=>nets.faceRecognitionNet.computeFaceDescriptor(face))),null,parentResult=>parentResult.landmarks.align(null,{useDlibAlignment:!0}))).map((descriptor,i)=>extendWithFaceDescriptor(parentResults[i],descriptor))}withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}},ComputeSingleFaceDescriptorTask=class extends ComputeFaceDescriptorsTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let descriptor=await extractSingleFaceAndComputeResult(parentResult,this.input,face=>nets.faceRecognitionNet.computeFaceDescriptor(face),null,parentResult2=>parentResult2.landmarks.align(null,{useDlibAlignment:!0}));return extendWithFaceDescriptor(parentResult,descriptor)}withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}};var DetectFaceLandmarksTaskBase=class extends ComposableTask{constructor(parentTask,input,useTinyLandmarkNet){super();this.parentTask=parentTask;this.input=input;this.useTinyLandmarkNet=useTinyLandmarkNet}get landmarkNet(){return this.useTinyLandmarkNet?nets.faceLandmark68TinyNet:nets.faceLandmark68Net}},DetectAllFaceLandmarksTask=class extends DetectFaceLandmarksTaskBase{async run(){let parentResults=await this.parentTask,detections=parentResults.map(res=>res.detection),faces=this.input instanceof tf41.Tensor?await extractFaceTensors(this.input,detections):await extractFaces(this.input,detections),faceLandmarksByFace=await Promise.all(faces.map(face=>this.landmarkNet.detectLandmarks(face)));return faces.forEach(f=>f instanceof tf41.Tensor&&f.dispose()),parentResults.map((parentResult,i)=>extendWithFaceLandmarks(parentResult,faceLandmarksByFace[i]))}withFaceExpressions(){return new PredictAllFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptors(){return new ComputeAllFaceDescriptorsTask(this,this.input)}},DetectSingleFaceLandmarksTask=class extends DetectFaceLandmarksTaskBase{async run(){let parentResult=await this.parentTask;if(!parentResult)return;let{detection}=parentResult,faces=this.input instanceof tf41.Tensor?await extractFaceTensors(this.input,[detection]):await extractFaces(this.input,[detection]),landmarks=await this.landmarkNet.detectLandmarks(faces[0]);return faces.forEach(f=>f instanceof tf41.Tensor&&f.dispose()),extendWithFaceLandmarks(parentResult,landmarks)}withFaceExpressions(){return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this,this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this,this.input)}withFaceDescriptor(){return new ComputeSingleFaceDescriptorTask(this,this.input)}};var DetectFacesTaskBase=class extends ComposableTask{constructor(input,options=new SsdMobilenetv1Options){super();this.input=input;this.options=options}},DetectAllFacesTask=class extends DetectFacesTaskBase{async run(){let{input,options}=this,faceDetectionFunction=options instanceof TinyFaceDetectorOptions?input2=>nets.tinyFaceDetector.locateFaces(input2,options):options instanceof SsdMobilenetv1Options?input2=>nets.ssdMobilenetv1.locateFaces(input2,options):options instanceof TinyYolov2Options?input2=>nets.tinyYolov2.locateFaces(input2,options):null;if(!faceDetectionFunction)throw new Error("detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options");return faceDetectionFunction(input)}runAndExtendWithFaceDetections(){return new Promise(async resolve=>{let detections=await this.run();resolve(detections.map(detection=>extendWithFaceDetection({},detection)))})}withFaceLandmarks(useTinyLandmarkNet=!1){return new DetectAllFaceLandmarksTask(this.runAndExtendWithFaceDetections(),this.input,useTinyLandmarkNet)}withFaceExpressions(){return new PredictAllFaceExpressionsTask(this.runAndExtendWithFaceDetections(),this.input)}withAgeAndGender(){return new PredictAllAgeAndGenderTask(this.runAndExtendWithFaceDetections(),this.input)}},DetectSingleFaceTask=class extends DetectFacesTaskBase{async run(){let faceDetections=await new DetectAllFacesTask(this.input,this.options),faceDetectionWithHighestScore=faceDetections[0];return faceDetections.forEach(faceDetection=>{faceDetection.score>faceDetectionWithHighestScore.score&&(faceDetectionWithHighestScore=faceDetection)}),faceDetectionWithHighestScore}runAndExtendWithFaceDetection(){return new Promise(async resolve=>{let detection=await this.run();resolve(detection?extendWithFaceDetection({},detection):void 0)})}withFaceLandmarks(useTinyLandmarkNet=!1){return new DetectSingleFaceLandmarksTask(this.runAndExtendWithFaceDetection(),this.input,useTinyLandmarkNet)}withFaceExpressions(){return new PredictSingleFaceExpressionsTask(this.runAndExtendWithFaceDetection(),this.input)}withAgeAndGender(){return new PredictSingleAgeAndGenderTask(this.runAndExtendWithFaceDetection(),this.input)}};function detectSingleFace(input,options=new SsdMobilenetv1Options){return new DetectSingleFaceTask(input,options)}function detectAllFaces(input,options=new SsdMobilenetv1Options){return new DetectAllFacesTask(input,options)}async function allFacesSsdMobilenetv1(input,minConfidence){return detectAllFaces(input,new SsdMobilenetv1Options(minConfidence?{minConfidence}:{})).withFaceLandmarks().withFaceDescriptors()}async function allFacesTinyYolov2(input,forwardParams={}){return detectAllFaces(input,new TinyYolov2Options(forwardParams)).withFaceLandmarks().withFaceDescriptors()}var allFaces=allFacesSsdMobilenetv1;function euclideanDistance(arr1,arr2){if(arr1.length!==arr2.length)throw new Error("euclideanDistance: arr1.length !== arr2.length");let desc1=Array.from(arr1),desc2=Array.from(arr2);return Math.sqrt(desc1.map((val,i)=>val-desc2[i]).reduce((res,diff)=>res+diff**2,0))}var FaceMatcher=class{constructor(inputs,distanceThreshold=.6){this._distanceThreshold=distanceThreshold;let inputArray=Array.isArray(inputs)?inputs:[inputs];if(!inputArray.length)throw new Error("FaceRecognizer.constructor - expected atleast one input");let count=1,createUniqueLabel=()=>`person ${count++}`;this._labeledDescriptors=inputArray.map(desc=>{if(desc instanceof LabeledFaceDescriptors)return desc;if(desc instanceof Float32Array)return new LabeledFaceDescriptors(createUniqueLabel(),[desc]);if(desc.descriptor&&desc.descriptor instanceof Float32Array)return new LabeledFaceDescriptors(createUniqueLabel(),[desc.descriptor]);throw new Error("FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>")})}get labeledDescriptors(){return this._labeledDescriptors}get distanceThreshold(){return this._distanceThreshold}computeMeanDistance(queryDescriptor,descriptors){return descriptors.map(d=>euclideanDistance(d,queryDescriptor)).reduce((d1,d2)=>d1+d2,0)/(descriptors.length||1)}matchDescriptor(queryDescriptor){return this.labeledDescriptors.map(({descriptors,label})=>new FaceMatch(label,this.computeMeanDistance(queryDescriptor,descriptors))).reduce((best,curr)=>best.distanceld.toJSON())}}static fromJSON(json){let labeledDescriptors=json.labeledDescriptors.map(ld=>LabeledFaceDescriptors.fromJSON(ld));return new FaceMatcher(labeledDescriptors,json.distanceThreshold)}};function createTinyFaceDetector(weights){let net=new TinyFaceDetector;return net.extractWeights(weights),net}function resizeResults(results,dimensions){let{width,height}=new Dimensions(dimensions.width,dimensions.height);if(width<=0||height<=0)throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({width,height})}`);if(Array.isArray(results))return results.map(obj=>resizeResults(obj,{width,height}));if(isWithFaceLandmarks(results)){let resizedDetection=results.detection.forSize(width,height),resizedLandmarks=results.unshiftedLandmarks.forSize(resizedDetection.box.width,resizedDetection.box.height);return extendWithFaceLandmarks(extendWithFaceDetection(results,resizedDetection),resizedLandmarks)}return isWithFaceDetection(results)?extendWithFaceDetection(results,results.detection.forSize(width,height)):results instanceof FaceLandmarks||results instanceof FaceDetection?results.forSize(width,height):results}var node=typeof process!="undefined",browser3=typeof navigator!="undefined"&&typeof navigator.userAgent!="undefined",version2={faceapi:version,node,browser:browser3}; +var ln=Object.create,Ye=Object.defineProperty,fn=Object.getPrototypeOf,hn=Object.prototype.hasOwnProperty,xn=Object.getOwnPropertyNames,bn=Object.getOwnPropertyDescriptor;var fo=o=>Ye(o,"__esModule",{value:!0});var ho=(o,t)=>()=>(t||(t={exports:{}},o(t.exports,t)),t.exports),Ge=(o,t)=>{fo(o);for(var e in t)Ye(o,e,{get:t[e],enumerable:!0})},gn=(o,t,e)=>{if(fo(o),t&&typeof t=="object"||typeof t=="function")for(let r of xn(t))!hn.call(o,r)&&r!=="default"&&Ye(o,r,{get:()=>t[r],enumerable:!(e=bn(t,r))||e.enumerable});return o},b=o=>o&&o.__esModule?o:gn(Ye(o!=null?ln(fn(o)):{},"default",{value:o,enumerable:!0}),o);var g=ho(xo=>{var vn=Object.create,Er=Object.defineProperty,yn=Object.getPrototypeOf,Fn=Object.prototype.hasOwnProperty,Tn=Object.getOwnPropertyNames,Pn=Object.getOwnPropertyDescriptor,_n=o=>Er(o,"__esModule",{value:!0}),bo=(o,t,e)=>{if(_n(o),t&&typeof t=="object"||typeof t=="function")for(let r of Tn(t))!Fn.call(o,r)&&r!=="default"&&Er(o,r,{get:()=>t[r],enumerable:!(e=Pn(t,r))||e.enumerable});return o},wn=o=>o&&o.__esModule?o:bo(Er(o!=null?vn(yn(o)):{},"default",{value:o,enumerable:!0}),o);bo(xo,wn(require("@tensorflow/tfjs-node")))});var To=ho((Ln,Fo)=>{Ge(Ln,{isNodejs:()=>kn});function kn(){return typeof global=="object"&&!0&&typeof Fo!="undefined"&&typeof process!="undefined"&&!!process.version}});Ge(exports,{AgeGenderNet:()=>pr,BoundingBox:()=>ee,Box:()=>D,ComposableTask:()=>tt,ComputeAllFaceDescriptorsTask:()=>At,ComputeFaceDescriptorsTaskBase:()=>vr,ComputeSingleFaceDescriptorTask:()=>Wt,DetectAllFaceLandmarksTask:()=>Fr,DetectAllFacesTask:()=>He,DetectFaceLandmarksTaskBase:()=>yr,DetectFacesTaskBase:()=>Pr,DetectSingleFaceLandmarksTask:()=>Tr,DetectSingleFaceTask:()=>_r,Dimensions:()=>A,FACE_EXPRESSION_LABELS:()=>Jr,FaceDetection:()=>M,FaceDetectionNet:()=>Jo,FaceExpressionNet:()=>cr,FaceExpressions:()=>It,FaceLandmark68Net:()=>fe,FaceLandmark68TinyNet:()=>dr,FaceLandmarkNet:()=>Bo,FaceLandmarks:()=>V,FaceLandmarks5:()=>vo,FaceLandmarks68:()=>oe,FaceMatch:()=>Ee,FaceMatcher:()=>Dr,FaceRecognitionNet:()=>xe,Gender:()=>vt,LabeledBox:()=>Me,LabeledFaceDescriptors:()=>xt,NetInput:()=>bt,NeuralNetwork:()=>S,ObjectDetection:()=>Dt,Point:()=>x,PredictedBox:()=>yo,Rect:()=>re,SsdMobilenetv1:()=>Ut,SsdMobilenetv1Options:()=>Z,TinyFaceDetector:()=>Fe,TinyFaceDetectorOptions:()=>gr,TinyYolov2:()=>ve,TinyYolov2Options:()=>lt,allFaces:()=>Da,allFacesSsdMobilenetv1:()=>dn,allFacesTinyYolov2:()=>wa,awaitMediaLoaded:()=>Yr,bufferToImage:()=>Gr,computeFaceDescriptor:()=>da,createCanvas:()=>ne,createCanvasFromMedia:()=>Ie,createFaceDetectionNet:()=>na,createFaceRecognitionNet:()=>Un,createSsdMobilenetv1:()=>Xo,createTinyFaceDetector:()=>Ea,createTinyYolov2:()=>ia,detectAllFaces:()=>wr,detectFaceLandmarks:()=>mn,detectFaceLandmarksTiny:()=>pa,detectLandmarks:()=>Pa,detectSingleFace:()=>_a,draw:()=>Qr,env:()=>w,euclideanDistance:()=>uo,extendWithAge:()=>hr,extendWithFaceDescriptor:()=>fr,extendWithFaceDetection:()=>$t,extendWithFaceExpressions:()=>mr,extendWithFaceLandmarks:()=>le,extendWithGender:()=>xr,extractFaceTensors:()=>se,extractFaces:()=>ae,fetchImage:()=>Bn,fetchJson:()=>Ur,fetchNetWeights:()=>Rn,fetchOrThrow:()=>Yt,getContext2dOrThrow:()=>O,getMediaDimensions:()=>Ht,imageTensorToCanvas:()=>zr,imageToSquare:()=>Vr,inverseSigmoid:()=>Mn,iou:()=>Lr,isMediaElement:()=>qe,isMediaLoaded:()=>Ne,isWithAge:()=>Xn,isWithFaceDetection:()=>pt,isWithFaceExpressions:()=>qr,isWithFaceLandmarks:()=>zt,isWithGender:()=>Jn,loadAgeGenderModel:()=>ya,loadFaceDetectionModel:()=>Fa,loadFaceExpressionModel:()=>va,loadFaceLandmarkModel:()=>xa,loadFaceLandmarkTinyModel:()=>ba,loadFaceRecognitionModel:()=>ga,loadSsdMobilenetv1Model:()=>pn,loadTinyFaceDetectorModel:()=>fa,loadTinyYolov2Model:()=>ha,loadWeightMap:()=>Xr,locateFaces:()=>Ta,matchDimensions:()=>On,minBbox:()=>kr,nets:()=>P,nonMaxSuppression:()=>Sr,normalize:()=>ot,padToSquare:()=>Ar,predictAgeAndGender:()=>la,recognizeFaceExpressions:()=>ua,resizeResults:()=>un,resolveInput:()=>jt,shuffleArray:()=>En,sigmoid:()=>De,ssdMobilenetv1:()=>cn,tf:()=>Ma,tinyFaceDetector:()=>ca,tinyYolov2:()=>ma,toNetInput:()=>E,utils:()=>Mr,validateConfig:()=>ao,version:()=>Ia});var Ma=b(g());var Qr={};Ge(Qr,{AnchorPosition:()=>dt,DrawBox:()=>Xe,DrawBoxOptions:()=>Hr,DrawFaceLandmarks:()=>Kr,DrawFaceLandmarksOptions:()=>Zr,DrawTextField:()=>Mt,DrawTextFieldOptions:()=>Ce,drawContour:()=>ft,drawDetections:()=>Wn,drawFaceExpressions:()=>$n,drawFaceLandmarks:()=>jn});function ft(o,t,e=!1){if(o.beginPath(),t.slice(1).forEach(({x:r,y:n},a)=>{let s=t[a];o.moveTo(s.x,s.y),o.lineTo(r,n)}),e){let r=t[t.length-1],n=t[0];if(!r||!n)return;o.moveTo(r.x,r.y),o.lineTo(n.x,n.y)}o.stroke()}var Mr={};Ge(Mr,{computeReshapedDimensions:()=>Ir,getCenterPoint:()=>Ot,isDimensions:()=>Ve,isEven:()=>ze,isFloat:()=>Nr,isTensor:()=>Bt,isTensor1D:()=>Dn,isTensor2D:()=>Cr,isTensor3D:()=>ht,isTensor4D:()=>z,isValidNumber:()=>rt,isValidProbablitiy:()=>te,range:()=>ct,round:()=>Rt});var go=b(g());var A=class{constructor(t,e){if(!rt(t)||!rt(e))throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({width:t,height:e})}`);this._width=t,this._height=e}get width(){return this._width}get height(){return this._height}reverse(){return new A(1/this.width,1/this.height)}};function Bt(o,t){return o instanceof go.Tensor&&o.shape.length===t}function Dn(o){return Bt(o,1)}function Cr(o){return Bt(o,2)}function ht(o){return Bt(o,3)}function z(o){return Bt(o,4)}function Nr(o){return o%1!=0}function ze(o){return o%2==0}function Rt(o,t=2){let e=10**t;return Math.floor(o*e)/e}function Ve(o){return o&&o.width&&o.height}function Ir({width:o,height:t},e){let r=e/Math.max(t,o);return new A(Math.round(o*r),Math.round(t*r))}function Ot(o){return o.reduce((t,e)=>t.add(e),new x(0,0)).div(new x(o.length,o.length))}function ct(o,t,e){return Array(o).fill(0).map((r,n)=>t+n*e)}function rt(o){return!!o&&o!==Infinity&&o!==-Infinity&&!Number.isNaN(o)||o===0}function te(o){return rt(o)&&o>=0&&o<=1}var x=class{constructor(t,e){this._x=t,this._y=e}get x(){return this._x}get y(){return this._y}add(t){return new x(this.x+t.x,this.y+t.y)}sub(t){return new x(this.x-t.x,this.y-t.y)}mul(t){return new x(this.x*t.x,this.y*t.y)}div(t){return new x(this.x/t.x,this.y/t.y)}abs(){return new x(Math.abs(this.x),Math.abs(this.y))}magnitude(){return Math.sqrt(this.x**2+this.y**2)}floor(){return new x(Math.floor(this.x),Math.floor(this.y))}};var D=class{static isRect(t){return!!t&&[t.x,t.y,t.width,t.height].every(rt)}static assertIsValidBox(t,e,r=!1){if(!D.isRect(t))throw new Error(`${e} - invalid box: ${JSON.stringify(t)}, expected object with properties x, y, width, height`);if(!r&&(t.width<0||t.height<0))throw new Error(`${e} - width (${t.width}) and height (${t.height}) must be positive numbers`)}constructor(t,e=!0){let r=t||{},n=[r.left,r.top,r.right,r.bottom].every(rt),a=[r.x,r.y,r.width,r.height].every(rt);if(!a&&!n)throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(r)}`);let[s,i,c,m]=a?[r.x,r.y,r.width,r.height]:[r.left,r.top,r.right-r.left,r.bottom-r.top];D.assertIsValidBox({x:s,y:i,width:c,height:m},"Box.constructor",e),this._x=s,this._y=i,this._width=c,this._height=m}get x(){return this._x}get y(){return this._y}get width(){return this._width}get height(){return this._height}get left(){return this.x}get top(){return this.y}get right(){return this.x+this.width}get bottom(){return this.y+this.height}get area(){return this.width*this.height}get topLeft(){return new x(this.left,this.top)}get topRight(){return new x(this.right,this.top)}get bottomLeft(){return new x(this.left,this.bottom)}get bottomRight(){return new x(this.right,this.bottom)}round(){let[t,e,r,n]=[this.x,this.y,this.width,this.height].map(a=>Math.round(a));return new D({x:t,y:e,width:r,height:n})}floor(){let[t,e,r,n]=[this.x,this.y,this.width,this.height].map(a=>Math.floor(a));return new D({x:t,y:e,width:r,height:n})}toSquare(){let{x:t,y:e,width:r,height:n}=this,a=Math.abs(r-n);return re&&(i=-d+e+r,d=e),u>t&&(c=-u+t+n,u=t),m<1&&(c=2-m,m=1),p<1&&(c=2-p,p=1),{dy:s,edy:c,dx:a,edx:i,y:p,ey:u,x:m,ex:d,w:r,h:n}}calibrate(t){return new D({left:this.left+t.left*this.width,top:this.top+t.top*this.height,right:this.right+t.right*this.width,bottom:this.bottom+t.bottom*this.height}).toSquare().round()}};var ee=class extends D{constructor(t,e,r,n,a=!1){super({left:t,top:e,right:r,bottom:n},a)}};var Dt=class{constructor(t,e,r,n,a){this._imageDims=new A(a.width,a.height),this._score=t,this._classScore=e,this._className=r,this._box=new D(n).rescale(this._imageDims)}get score(){return this._score}get classScore(){return this._classScore}get className(){return this._className}get box(){return this._box}get imageDims(){return this._imageDims}get imageWidth(){return this.imageDims.width}get imageHeight(){return this.imageDims.height}get relativeBox(){return new D(this._box).rescale(this.imageDims.reverse())}forSize(t,e){return new Dt(this.score,this.classScore,this.className,this.relativeBox,{width:t,height:e})}};var M=class extends Dt{constructor(t,e,r){super(t,t,"",e,r)}forSize(t,e){let{score:r,relativeBox:n,imageDims:a}=super.forSize(t,e);return new M(r,n,a)}};function Lr(o,t,e=!0){let r=Math.max(0,Math.min(o.right,t.right)-Math.max(o.left,t.left)),n=Math.max(0,Math.min(o.bottom,t.bottom)-Math.max(o.top,t.top)),a=r*n;return e?a/(o.area+t.area-a):a/Math.min(o.area,t.area)}function kr(o){let t=o.map(i=>i.x),e=o.map(i=>i.y),r=t.reduce((i,c)=>ccii({score:s,boxIndex:i})).sort((s,i)=>s.score-i.score).map(s=>s.boxIndex),a=[];for(;n.length>0;){let s=n.pop();a.push(s);let i=n,c=[];for(let m=0;mc[p]<=e)}return a}var mt=b(g());function ot(o,t){return mt.tidy(()=>{let[e,r,n]=t,a=mt.fill([...o.shape.slice(0,3),1],e,"float32"),s=mt.fill([...o.shape.slice(0,3),1],r,"float32"),i=mt.fill([...o.shape.slice(0,3),1],n,"float32"),c=mt.concat([a,s,i],3);return mt.sub(o,c)})}var Et=b(g());function Ar(o,t=!1){return Et.tidy(()=>{let[e,r]=o.shape.slice(1);if(e===r)return o;let n=Math.abs(e-r),a=Math.round(n*(t?.5:1)),s=e>r?2:1,i=u=>{let l=o.shape.slice();return l[s]=u,Et.fill(l,0,"float32")},c=i(a),m=n-c.shape[s],d=[t&&m?i(m):null,o,c].filter(u=>!!u).map(u=>Et.cast(u,"float32"));return Et.concat(d,s)})}function En(o){let t=o.slice();for(let e=t.length-1;e>0;e--){let r=Math.floor(Math.random()*(e+1)),n=t[e];t[e]=t[r],t[r]=n}return t}function De(o){return 1/(1+Math.exp(-o))}function Mn(o){return Math.log(o/(1-o))}var re=class extends D{constructor(t,e,r,n,a=!1){super({x:t,y:e,width:r,height:n},a)}};var Cn=.5,Nn=.43,In=.45,V=class{constructor(t,e,r=new x(0,0)){let{width:n,height:a}=e;this._imgDims=new A(n,a),this._shift=r,this._positions=t.map(s=>s.mul(new x(n,a)).add(r))}get shift(){return new x(this._shift.x,this._shift.y)}get imageWidth(){return this._imgDims.width}get imageHeight(){return this._imgDims.height}get positions(){return this._positions}get relativePositions(){return this._positions.map(t=>t.sub(this._shift).div(new x(this.imageWidth,this.imageHeight)))}forSize(t,e){return new this.constructor(this.relativePositions,{width:t,height:e})}shiftBy(t,e){return new this.constructor(this.relativePositions,this._imgDims,new x(t,e))}shiftByPoint(t){return this.shiftBy(t.x,t.y)}align(t,e={}){if(t){let a=t instanceof M?t.box.floor():new D(t);return this.shiftBy(a.x,a.y).align(null,e)}let{useDlibAlignment:r,minBoxPadding:n}={useDlibAlignment:!1,minBoxPadding:.2,...e};return r?this.alignDlib():this.alignMinBbox(n)}alignDlib(){let t=this.getRefPointsForAlignment(),[e,r,n]=t,a=d=>n.sub(d).magnitude(),s=(a(e)+a(r))/2,i=Math.floor(s/In),c=Ot(t),m=Math.floor(Math.max(0,c.x-Cn*i)),p=Math.floor(Math.max(0,c.y-Nn*i));return new re(m,p,Math.min(i,this.imageWidth+m),Math.min(i,this.imageHeight+p))}alignMinBbox(t){let e=kr(this.positions);return e.pad(e.width*t,e.height*t)}getRefPointsForAlignment(){throw new Error("getRefPointsForAlignment not implemented by base class")}};var vo=class extends V{getRefPointsForAlignment(){let t=this.positions;return[t[0],t[1],Ot([t[3],t[4]])]}};var oe=class extends V{getJawOutline(){return this.positions.slice(0,17)}getLeftEyeBrow(){return this.positions.slice(17,22)}getRightEyeBrow(){return this.positions.slice(22,27)}getNose(){return this.positions.slice(27,36)}getLeftEye(){return this.positions.slice(36,42)}getRightEye(){return this.positions.slice(42,48)}getMouth(){return this.positions.slice(48,68)}getRefPointsForAlignment(){return[this.getLeftEye(),this.getRightEye(),this.getMouth()].map(Ot)}};var Ee=class{constructor(t,e){this._label=t,this._distance=e}get label(){return this._label}get distance(){return this._distance}toString(t=!0){return`${this.label}${t?` (${Rt(this.distance)})`:""}`}};var Me=class extends D{static assertIsValidLabeledBox(t,e){if(D.assertIsValidBox(t,e),!rt(t.label))throw new Error(`${e} - expected property label (${t.label}) to be a number`)}constructor(t,e){super(t);this._label=e}get label(){return this._label}};var xt=class{constructor(t,e){if(typeof t!="string")throw new Error("LabeledFaceDescriptors - constructor expected label to be a string");if(!Array.isArray(e)||e.some(r=>!(r instanceof Float32Array)))throw new Error("LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array");this._label=t,this._descriptors=e}get label(){return this._label}get descriptors(){return this._descriptors}toJSON(){return{label:this.label,descriptors:this.descriptors.map(t=>Array.from(t))}}static fromJSON(t){let e=t.descriptors.map(r=>new Float32Array(r));return new xt(t.label,e)}};var yo=class extends Me{static assertIsValidPredictedBox(t,e){if(Me.assertIsValidLabeledBox(t,e),!te(t.score)||!te(t.classScore))throw new Error(`${e} - expected properties score (${t.score}) and (${t.classScore}) to be a number between [0, 1]`)}constructor(t,e,r,n){super(t,e);this._score=r,this._classScore=n}get score(){return this._score}get classScore(){return this._classScore}};function pt(o){return o.detection instanceof M}function $t(o,t){return{...o,...{detection:t}}}function Wr(){let o=window.fetch;if(!o)throw new Error("fetch - missing fetch implementation for browser environment");let t=()=>{throw new Error("readFile - filesystem not available for browser environment")};return{Canvas:HTMLCanvasElement,CanvasRenderingContext2D,Image:HTMLImageElement,ImageData,Video:HTMLVideoElement,createCanvasElement:()=>document.createElement("canvas"),createImageElement:()=>document.createElement("img"),fetch:o,readFile:t}}function Ue(o){let t="";if(!o)try{o=require("fs")}catch(r){t=r.toString()}return{readFile:o?r=>new Promise((n,a)=>{o.readFile(r,(s,i)=>s?a(s):n(i))}):()=>{throw new Error(`readFile - failed to require fs in nodejs environment with error: ${t}`)}}}function Br(){let o=global.Canvas||global.HTMLCanvasElement,t=global.Image||global.HTMLImageElement,e=()=>{if(o)return new o;throw new Error("createCanvasElement - missing Canvas implementation for nodejs environment")},r=()=>{if(t)return new t;throw new Error("createImageElement - missing Image implementation for nodejs environment")},n=global.fetch,a=Ue();return{Canvas:o||class{},CanvasRenderingContext2D:global.CanvasRenderingContext2D||class{},Image:t||class{},ImageData:global.ImageData||class{},Video:global.HTMLVideoElement||class{},createCanvasElement:e,createImageElement:r,fetch:n,...a}}function Rr(){return typeof window=="object"&&typeof document!="undefined"&&typeof HTMLImageElement!="undefined"&&typeof HTMLCanvasElement!="undefined"&&typeof HTMLVideoElement!="undefined"&&typeof ImageData!="undefined"&&typeof CanvasRenderingContext2D!="undefined"}var Or=b(To()),k;function Sn(){if(!k)throw new Error("getEnv - environment is not defined, check isNodejs() and isBrowser()");return k}function $r(o){k=o}function jr(){return Rr()?$r(Wr()):Or.isNodejs()?$r(Br()):null}function An(o){if(k||jr(),!k)throw new Error("monkeyPatch - environment is not defined, check isNodejs() and isBrowser()");let{Canvas:t=k.Canvas,Image:e=k.Image}=o;k.Canvas=t,k.Image=e,k.createCanvasElement=o.createCanvasElement||(()=>new t),k.createImageElement=o.createImageElement||(()=>new e),k.ImageData=o.ImageData||k.ImageData,k.Video=o.Video||k.Video,k.fetch=o.fetch||k.fetch,k.readFile=o.readFile||k.readFile}var w={getEnv:Sn,setEnv:$r,initialize:jr,createBrowserEnv:Wr,createFileSystem:Ue,createNodejsEnv:Br,monkeyPatch:An,isBrowser:Rr,isNodejs:Or.isNodejs};jr();function jt(o){return!w.isNodejs()&&typeof o=="string"?document.getElementById(o):o}function O(o){let{Canvas:t,CanvasRenderingContext2D:e}=w.getEnv();if(o instanceof e)return o;let r=jt(o);if(!(r instanceof t))throw new Error("resolveContext2d - expected canvas to be of instance of Canvas");let n=r.getContext("2d");if(!n)throw new Error("resolveContext2d - canvas 2d context is null");return n}var dt;(function(o){o.TOP_LEFT="TOP_LEFT",o.TOP_RIGHT="TOP_RIGHT",o.BOTTOM_LEFT="BOTTOM_LEFT",o.BOTTOM_RIGHT="BOTTOM_RIGHT"})(dt||(dt={}));var Ce=class{constructor(t={}){let{anchorPosition:e,backgroundColor:r,fontColor:n,fontSize:a,fontStyle:s,padding:i}=t;this.anchorPosition=e||dt.TOP_LEFT,this.backgroundColor=r||"rgba(0, 0, 0, 0.5)",this.fontColor=n||"rgba(255, 255, 255, 1)",this.fontSize=a||14,this.fontStyle=s||"Georgia",this.padding=i||4}},Mt=class{constructor(t,e,r={}){this.text=typeof t=="string"?[t]:t instanceof Mt?t.text:t,this.anchor=e,this.options=new Ce(r)}measureWidth(t){let{padding:e}=this.options;return this.text.map(r=>t.measureText(r).width).reduce((r,n)=>r{let v=c+d.x,_=c+d.y+(l+1)*s;r.fillText(u,v,_)})}};var Hr=class{constructor(t={}){let{boxColor:e,lineWidth:r,label:n,drawLabelOptions:a}=t;this.boxColor=e||"rgba(0, 0, 255, 1)",this.lineWidth=r||2,this.label=n;let s={anchorPosition:dt.BOTTOM_LEFT,backgroundColor:this.boxColor};this.drawLabelOptions=new Ce({...s,...a})}},Xe=class{constructor(t,e={}){this.box=new D(t),this.options=new Hr(e)}draw(t){let e=O(t),{boxColor:r,lineWidth:n}=this.options,{x:a,y:s,width:i,height:c}=this.box;e.strokeStyle=r,e.lineWidth=n,e.strokeRect(a,s,i,c);let{label:m}=this.options;m&&new Mt([m],{x:a-n/2,y:s},this.options.drawLabelOptions).draw(t)}};function Wn(o,t){(Array.isArray(t)?t:[t]).forEach(r=>{let n=r instanceof M?r.score:pt(r)?r.detection.score:void 0,a=r instanceof M?r.box:pt(r)?r.detection.box:new D(r),s=n?`${Rt(n)}`:void 0;new Xe(a,{label:s}).draw(o)})}var ue=b(g());function Ne(o){let{Image:t,Video:e}=w.getEnv();return o instanceof t&&o.complete||o instanceof e&&o.readyState>=3}function Yr(o){return new Promise((t,e)=>{if(o instanceof w.getEnv().Canvas||Ne(o))return t(null);function r(a){!a.currentTarget||(a.currentTarget.removeEventListener("load",n),a.currentTarget.removeEventListener("error",r),e(a))}function n(a){!a.currentTarget||(a.currentTarget.removeEventListener("load",n),a.currentTarget.removeEventListener("error",r),t(a))}o.addEventListener("load",n),o.addEventListener("error",r)})}function Gr(o){return new Promise((t,e)=>{o instanceof Blob||e(new Error("bufferToImage - expected buf to be of type: Blob"));let r=new FileReader;r.onload=()=>{typeof r.result!="string"&&e(new Error("bufferToImage - expected reader.result to be a string, in onload"));let n=w.getEnv().createImageElement();n.onload=()=>t(n),n.onerror=e,n.src=r.result},r.onerror=e,r.readAsDataURL(o)})}function Ht(o){let{Image:t,Video:e}=w.getEnv();return o instanceof t?new A(o.naturalWidth,o.naturalHeight):o instanceof e?new A(o.videoWidth,o.videoHeight):new A(o.width,o.height)}function ne({width:o,height:t}){let{createCanvasElement:e}=w.getEnv(),r=e();return r.width=o,r.height=t,r}function Ie(o,t){let{ImageData:e}=w.getEnv();if(!(o instanceof e)&&!Ne(o))throw new Error("createCanvasFromMedia - media has not finished loading yet");let{width:r,height:n}=t||Ht(o),a=ne({width:r,height:n});return o instanceof e?O(a).putImageData(o,0,0):O(a).drawImage(o,0,0,r,n),a}var Je=b(g());async function zr(o,t){let e=t||w.getEnv().createCanvasElement(),[r,n,a]=o.shape.slice(z(o)?1:0),s=Je.tidy(()=>o.as3D(r,n,a).toInt());return await Je.browser.toPixels(s,e),s.dispose(),e}function qe(o){let{Image:t,Canvas:e,Video:r}=w.getEnv();return o instanceof t||o instanceof e||o instanceof r}var J=b(g());function Vr(o,t,e=!1){let{Image:r,Canvas:n}=w.getEnv();if(!(o instanceof r||o instanceof n))throw new Error("imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement");let a=Ht(o),s=t/Math.max(a.height,a.width),i=s*a.width,c=s*a.height,m=ne({width:t,height:t}),p=o instanceof n?o:Ie(o),d=Math.abs(i-c)/2,u=e&&i{if(ht(r)){this._imageTensors[n]=r,this._inputDimensions[n]=r.shape;return}if(z(r)){let s=r.shape[0];if(s!==1)throw new Error(`NetInput - tf.Tensor4D with batchSize ${s} passed, but not supported in input array`);this._imageTensors[n]=r,this._inputDimensions[n]=r.shape.slice(1);return}let a=r instanceof w.getEnv().Canvas?r:Ie(r);this._canvases[n]=a,this._inputDimensions[n]=[a.height,a.width,3]})}get imageTensors(){return this._imageTensors}get canvases(){return this._canvases}get isBatchInput(){return this.batchSize>1||this._treatAsBatchInput}get batchSize(){return this._batchSize}get inputDimensions(){return this._inputDimensions}get inputSize(){return this._inputSize}get reshapedInputDimensions(){return ct(this.batchSize,0,1).map((t,e)=>this.getReshapedInputDimensions(e))}getInput(t){return this.canvases[t]||this.imageTensors[t]}getInputDimensions(t){return this._inputDimensions[t]}getInputHeight(t){return this._inputDimensions[t][0]}getInputWidth(t){return this._inputDimensions[t][1]}getReshapedInputDimensions(t){if(typeof this.inputSize!="number")throw new Error("getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet");let e=this.getInputWidth(t),r=this.getInputHeight(t);return Ir({width:e,height:r},this.inputSize)}toBatchTensor(t,e=!0){return this._inputSize=t,J.tidy(()=>{let r=ct(this.batchSize,0,1).map(a=>{let s=this.getInput(a);if(s instanceof J.Tensor){let i=z(s)?s:s.expandDims();return i=Ar(i,e),(i.shape[1]!==t||i.shape[2]!==t)&&(i=J.image.resizeBilinear(i,[t,t])),i.as3D(t,t,3)}if(s instanceof w.getEnv().Canvas)return J.browser.fromPixels(Vr(s,t,e));throw new Error(`toBatchTensor - at batchIdx ${a}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${s}`)});return J.stack(r.map(a=>J.cast(a,"float32"))).as4D(this.batchSize,t,t,3)})}};async function E(o){if(o instanceof bt)return o;let t=Array.isArray(o)?o:[o];if(!t.length)throw new Error("toNetInput - empty array passed as input");let e=n=>Array.isArray(o)?` at input index ${n}:`:"",r=t.map(jt);return r.forEach((n,a)=>{if(!qe(n)&&!ht(n)&&!z(n))throw typeof t[a]=="string"?new Error(`toNetInput -${e(a)} string passed, but could not resolve HTMLElement for element id ${t[a]}`):new Error(`toNetInput -${e(a)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`);if(z(n)){let s=n.shape[0];if(s!==1)throw new Error(`toNetInput -${e(a)} tf.Tensor4D with batchSize ${s} passed, but not supported in input array`)}}),await Promise.all(r.map(n=>qe(n)&&Yr(n))),new bt(r,Array.isArray(o))}async function ae(o,t){let{Canvas:e}=w.getEnv(),r=o;if(!(o instanceof e)){let s=await E(o);if(s.batchSize>1)throw new Error("extractFaces - batchSize > 1 not supported");let i=s.getInput(0);r=i instanceof e?i:await zr(i)}let n=O(r);return t.map(s=>s instanceof M?s.forSize(r.width,r.height).box.floor():s).map(s=>s.clipAtImageBorders(r.width,r.height)).map(({x:s,y:i,width:c,height:m})=>{let p=ne({width:c,height:m});return O(p).putImageData(n.getImageData(s,i,c,m),0,0),p})}var Ze=b(g());async function se(o,t){if(!ht(o)&&!z(o))throw new Error("extractFaceTensors - expected image tensor to be 3D or 4D");if(z(o)&&o.shape[0]>1)throw new Error("extractFaceTensors - batchSize > 1 not supported");return Ze.tidy(()=>{let[e,r,n]=o.shape.slice(z(o)?1:0);return t.map(i=>i instanceof M?i.forSize(r,e).box:i).map(i=>i.clipAtImageBorders(r,e)).map(({x:i,y:c,width:m,height:p})=>Ze.slice3d(o.as3D(e,r,n),[c,i,0],[p,m,n]))})}async function Yt(o,t){let{fetch:e}=w.getEnv(),r=await e(o,t);if(!(r.status<400))throw new Error(`failed to fetch: (${r.status}) ${r.statusText}, from url: ${r.url}`);return r}async function Bn(o){let t=await Yt(o),e=await t.blob();if(!e.type.startsWith("image/"))throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${e.type}, for url: ${t.url}`);return Gr(e)}async function Ur(o){return(await Yt(o)).json()}async function Rn(o){return new Float32Array(await(await Yt(o)).arrayBuffer())}var Po=b(g());function Ke(o,t){let e=`${t}-weights_manifest.json`;if(!o)return{modelBaseUri:"",manifestUri:e};if(o==="/")return{modelBaseUri:"/",manifestUri:`/${e}`};let r=o.startsWith("http://")?"http://":o.startsWith("https://")?"https://":"";o=o.replace(r,"");let n=o.split("/").filter(i=>i),a=o.endsWith(".json")?n[n.length-1]:e,s=r+(o.endsWith(".json")?n.slice(0,n.length-1):n).join("/");return s=o.startsWith("/")?`/${s}`:s,{modelBaseUri:s,manifestUri:s==="/"?`/${a}`:`${s}/${a}`}}async function Xr(o,t){let{manifestUri:e,modelBaseUri:r}=Ke(o,t),n=await Ur(e);return Po.io.loadWeights(n,r)}function On(o,t,e=!1){let{width:r,height:n}=e?Ht(t):t;return o.width=r,o.height=n,{width:r,height:n}}var Nt=b(g());var gt=b(g());var S=class{constructor(){this._params=void 0;this._paramMappings=[]}get params(){return this._params}get paramMappings(){return this._paramMappings}get isLoaded(){return!!this.params}getParamFromPath(t){let{obj:e,objProp:r}=this.traversePropertyPath(t);return e[r]}reassignParamFromPath(t,e){let{obj:r,objProp:n}=this.traversePropertyPath(t);r[n].dispose(),r[n]=e}getParamList(){return this._paramMappings.map(({paramPath:t})=>({path:t,tensor:this.getParamFromPath(t)}))}getTrainableParams(){return this.getParamList().filter(t=>t.tensor instanceof gt.Variable)}getFrozenParams(){return this.getParamList().filter(t=>!(t.tensor instanceof gt.Variable))}variable(){this.getFrozenParams().forEach(({path:t,tensor:e})=>{this.reassignParamFromPath(t,e.variable())})}freeze(){this.getTrainableParams().forEach(({path:t,tensor:e})=>{let r=gt.tensor(e.dataSync());e.dispose(),this.reassignParamFromPath(t,r)})}dispose(t=!0){this.getParamList().forEach(e=>{if(t&&e.tensor.isDisposed)throw new Error(`param tensor has already been disposed for path ${e.path}`);e.tensor.dispose()}),this._params=void 0}serializeParams(){return new Float32Array(this.getParamList().map(({tensor:t})=>Array.from(t.dataSync())).reduce((t,e)=>t.concat(e)))}async load(t){if(t instanceof Float32Array){this.extractWeights(t);return}await this.loadFromUri(t)}async loadFromUri(t){if(t&&typeof t!="string")throw new Error(`${this._name}.loadFromUri - expected model uri`);let e=await Xr(t,this.getDefaultModelName());this.loadFromWeightMap(e)}async loadFromDisk(t){if(t&&typeof t!="string")throw new Error(`${this._name}.loadFromDisk - expected model file path`);let{readFile:e}=w.getEnv(),{manifestUri:r,modelBaseUri:n}=Ke(t,this.getDefaultModelName()),a=m=>Promise.all(m.map(p=>e(p).then(d=>d.buffer))),s=gt.io.weightsLoaderFactory(a),i=JSON.parse((await e(r)).toString()),c=await s(i,n);this.loadFromWeightMap(c)}loadFromWeightMap(t){let{paramMappings:e,params:r}=this.extractParamsFromWeigthMap(t);this._paramMappings=e,this._params=r}extractWeights(t){let{paramMappings:e,params:r}=this.extractParams(t);this._paramMappings=e,this._params=r}traversePropertyPath(t){if(!this.params)throw new Error("traversePropertyPath - model has no loaded params");let e=t.split("/").reduce((a,s)=>{if(!a.nextObj.hasOwnProperty(s))throw new Error(`traversePropertyPath - object does not have property ${s}, for path ${t}`);return{obj:a.nextObj,objProp:s,nextObj:a.nextObj[s]}},{nextObj:this.params}),{obj:r,objProp:n}=e;if(!r||!n||!(r[n]instanceof gt.Tensor))throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${t}`);return{obj:r,objProp:n}}};var C=b(g());var ie=b(g());function $(o,t,e){return ie.tidy(()=>{let r=ie.separableConv2d(o,t.depthwise_filter,t.pointwise_filter,e,"same");return r=ie.add(r,t.bias),r})}function Qe(o,t,e=!1){return C.tidy(()=>{let r=C.relu(e?C.add(C.conv2d(o,t.conv0.filters,[2,2],"same"),t.conv0.bias):$(o,t.conv0,[2,2])),n=$(r,t.conv1,[1,1]),a=C.relu(C.add(r,n)),s=$(a,t.conv2,[1,1]);return C.relu(C.add(r,C.add(n,s)))})}function Le(o,t,e=!1,r=!0){return C.tidy(()=>{let n=C.relu(e?C.add(C.conv2d(o,t.conv0.filters,r?[2,2]:[1,1],"same"),t.conv0.bias):$(o,t.conv0,r?[2,2]:[1,1])),a=$(n,t.conv1,[1,1]),s=C.relu(C.add(n,a)),i=$(s,t.conv2,[1,1]),c=C.relu(C.add(n,C.add(a,i))),m=$(c,t.conv3,[1,1]);return C.relu(C.add(n,C.add(a,C.add(i,m))))})}var Ct=b(g());function Gt(o,t,e="same",r=!1){return Ct.tidy(()=>{let n=Ct.add(Ct.conv2d(o,t.filters,[1,1],e),t.bias);return r?Ct.relu(n):n})}function W(o,t){Object.keys(o).forEach(e=>{t.some(r=>r.originalPath===e)||o[e].dispose()})}var tr=b(g());function ce(o,t){return(e,r,n,a)=>{let s=tr.tensor4d(o(e*r*n*n),[n,n,e,r]),i=tr.tensor1d(o(r));return t.push({paramPath:`${a}/filters`},{paramPath:`${a}/bias`}),{filters:s,bias:i}}}var er=b(g());function rr(o,t){return(e,r,n)=>{let a=er.tensor2d(o(e*r),[e,r]),s=er.tensor1d(o(r));return t.push({paramPath:`${n}/weights`},{paramPath:`${n}/bias`}),{weights:a,bias:s}}}var ke=b(g());var or=class{constructor(t,e,r){this.depthwise_filter=t;this.pointwise_filter=e;this.bias=r}};function me(o,t){return(e,r,n)=>{let a=ke.tensor4d(o(3*3*e),[3,3,e,1]),s=ke.tensor4d(o(e*r),[1,1,e,r]),i=ke.tensor1d(o(r));return t.push({paramPath:`${n}/depthwise_filter`},{paramPath:`${n}/pointwise_filter`},{paramPath:`${n}/bias`}),new or(a,s,i)}}function pe(o){return t=>{let e=o(`${t}/depthwise_filter`,4),r=o(`${t}/pointwise_filter`,4),n=o(`${t}/bias`,1);return new or(e,r,n)}}function j(o,t){return(e,r,n)=>{let a=o[e];if(!Bt(a,r))throw new Error(`expected weightMap[${e}] to be a Tensor${r}D, instead have ${a}`);return t.push({originalPath:e,paramPath:n||e}),a}}function B(o){let t=o;function e(n){let a=t.slice(0,n);return t=t.slice(n),a}function r(){return t}return{extractWeights:e,getRemainingWeights:r}}function nr(o,t){let e=ce(o,t),r=me(o,t);function n(s,i,c,m=!1){let p=m?e(s,i,3,`${c}/conv0`):r(s,i,`${c}/conv0`),d=r(i,i,`${c}/conv1`),u=r(i,i,`${c}/conv2`);return{conv0:p,conv1:d,conv2:u}}function a(s,i,c,m=!1){let{conv0:p,conv1:d,conv2:u}=n(s,i,c,m),l=r(i,i,`${c}/conv3`);return{conv0:p,conv1:d,conv2:u,conv3:l}}return{extractDenseBlock3Params:n,extractDenseBlock4Params:a}}function _o(o){let t=[],{extractWeights:e,getRemainingWeights:r}=B(o),{extractDenseBlock4Params:n}=nr(e,t),a=n(3,32,"dense0",!0),s=n(32,64,"dense1"),i=n(64,128,"dense2"),c=n(128,256,"dense3");if(r().length!==0)throw new Error(`weights remaing after extract: ${r().length}`);return{paramMappings:t,params:{dense0:a,dense1:s,dense2:i,dense3:c}}}function ar(o){return t=>{let e=o(`${t}/filters`,4),r=o(`${t}/bias`,1);return{filters:e,bias:r}}}function sr(o,t){let e=j(o,t),r=ar(e),n=pe(e);function a(i,c=!1){let m=c?r(`${i}/conv0`):n(`${i}/conv0`),p=n(`${i}/conv1`),d=n(`${i}/conv2`);return{conv0:m,conv1:p,conv2:d}}function s(i,c=!1){let m=c?r(`${i}/conv0`):n(`${i}/conv0`),p=n(`${i}/conv1`),d=n(`${i}/conv2`),u=n(`${i}/conv3`);return{conv0:m,conv1:p,conv2:d,conv3:u}}return{extractDenseBlock3Params:a,extractDenseBlock4Params:s}}function wo(o){let t=[],{extractDenseBlock4Params:e}=sr(o,t),r={dense0:e("dense0",!0),dense1:e("dense1"),dense2:e("dense2"),dense3:e("dense3")};return W(o,t),{params:r,paramMappings:t}}var Se=class extends S{constructor(){super("FaceFeatureExtractor")}forwardInput(t){let{params:e}=this;if(!e)throw new Error("FaceFeatureExtractor - load model before inference");return Nt.tidy(()=>{let r=Nt.cast(t.toBatchTensor(112,!0),"float32"),a=ot(r,[122.782,117.001,104.298]).div(Nt.scalar(255)),s=Le(a,e.dense0,!0);return s=Le(s,e.dense1),s=Le(s,e.dense2),s=Le(s,e.dense3),s=Nt.avgPool(s,[7,7],[2,2],"valid"),s})}async forward(t){return this.forwardInput(await E(t))}getDefaultModelName(){return"face_feature_extractor_model"}extractParamsFromWeigthMap(t){return wo(t)}extractParams(t){return _o(t)}};var Mo=b(g());var de=b(g());function Ae(o,t){return de.tidy(()=>de.add(de.matMul(o,t.weights),t.bias))}function Do(o,t,e){let r=[],{extractWeights:n,getRemainingWeights:a}=B(o),i=rr(n,r)(t,e,"fc");if(a().length!==0)throw new Error(`weights remaing after extract: ${a().length}`);return{paramMappings:r,params:{fc:i}}}function Eo(o){let t=[],e=j(o,t);function r(a){let s=e(`${a}/weights`,2),i=e(`${a}/bias`,1);return{weights:s,bias:i}}let n={fc:r("fc")};return W(o,t),{params:n,paramMappings:t}}function ir(o){let t={},e={};return Object.keys(o).forEach(r=>{let n=r.startsWith("fc")?e:t;n[r]=o[r]}),{featureExtractorMap:t,classifierMap:e}}var We=class extends S{constructor(t,e){super(t);this._faceFeatureExtractor=e}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(t){let{params:e}=this;if(!e)throw new Error(`${this._name} - load model before inference`);return Mo.tidy(()=>{let r=t instanceof bt?this.faceFeatureExtractor.forwardInput(t):t;return Ae(r.as2D(r.shape[0],-1),e.fc)})}dispose(t=!0){this.faceFeatureExtractor.dispose(t),super.dispose(t)}loadClassifierParams(t){let{params:e,paramMappings:r}=this.extractClassifierParams(t);this._params=e,this._paramMappings=r}extractClassifierParams(t){return Do(t,this.getClassifierChannelsIn(),this.getClassifierChannelsOut())}extractParamsFromWeigthMap(t){let{featureExtractorMap:e,classifierMap:r}=ir(t);return this.faceFeatureExtractor.loadFromWeightMap(e),Eo(r)}extractParams(t){let e=this.getClassifierChannelsIn(),r=this.getClassifierChannelsOut(),n=r*e+r,a=t.slice(0,t.length-n),s=t.slice(t.length-n);return this.faceFeatureExtractor.extractWeights(a),this.extractClassifierParams(s)}};var Jr=["neutral","happy","sad","angry","fearful","disgusted","surprised"],It=class{constructor(t){if(t.length!==7)throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${t.length}`);Jr.forEach((e,r)=>{this[e]=t[r]})}asSortedArray(){return Jr.map(t=>({expression:t,probability:this[t]})).sort((t,e)=>e.probability-t.probability)}};var cr=class extends We{constructor(t=new Se){super("FaceExpressionNet",t)}forwardInput(t){return ue.tidy(()=>ue.softmax(this.runNet(t)))}async forward(t){return this.forwardInput(await E(t))}async predictExpressions(t){let e=await E(t),r=await this.forwardInput(e),n=await Promise.all(ue.unstack(r).map(async s=>{let i=await s.data();return s.dispose(),i}));r.dispose();let a=n.map(s=>new It(s));return e.isBatchInput?a:a[0]}getDefaultModelName(){return"face_expression_model"}getClassifierChannelsIn(){return 256}getClassifierChannelsOut(){return 7}};function qr(o){return o.expressions instanceof It}function mr(o,t){return{...o,...{expressions:t}}}function $n(o,t,e=.1,r){(Array.isArray(t)?t:[t]).forEach(a=>{let s=a instanceof It?a:qr(a)?a.expressions:void 0;if(!s)throw new Error("drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof");let c=s.asSortedArray().filter(d=>d.probability>e),m=pt(a)?a.detection.box.bottomLeft:r||new x(0,0);new Mt(c.map(d=>`${d.expression} (${Rt(d.probability)})`),m).draw(o)})}function zt(o){return pt(o)&&o.landmarks instanceof V&&o.unshiftedLandmarks instanceof V&&o.alignedRect instanceof M}function le(o,t){let{box:e}=o.detection,r=t.shiftBy(e.x,e.y),n=r.align(),{imageDims:a}=o.detection,s=new M(o.detection.score,n.rescale(a.reverse()),a);return{...o,...{landmarks:r,unshiftedLandmarks:t,alignedRect:s}}}var Zr=class{constructor(t={}){let{drawLines:e=!0,drawPoints:r=!0,lineWidth:n,lineColor:a,pointSize:s,pointColor:i}=t;this.drawLines=e,this.drawPoints=r,this.lineWidth=n||1,this.pointSize=s||2,this.lineColor=a||"rgba(0, 255, 255, 1)",this.pointColor=i||"rgba(255, 0, 255, 1)"}},Kr=class{constructor(t,e={}){this.faceLandmarks=t,this.options=new Zr(e)}draw(t){let e=O(t),{drawLines:r,drawPoints:n,lineWidth:a,lineColor:s,pointSize:i,pointColor:c}=this.options;if(r&&this.faceLandmarks instanceof oe&&(e.strokeStyle=s,e.lineWidth=a,ft(e,this.faceLandmarks.getJawOutline()),ft(e,this.faceLandmarks.getLeftEyeBrow()),ft(e,this.faceLandmarks.getRightEyeBrow()),ft(e,this.faceLandmarks.getNose()),ft(e,this.faceLandmarks.getLeftEye(),!0),ft(e,this.faceLandmarks.getRightEye(),!0),ft(e,this.faceLandmarks.getMouth(),!0)),n){e.strokeStyle=c,e.fillStyle=c;let m=p=>{e.beginPath(),e.arc(p.x,p.y,i,0,2*Math.PI),e.fill()};this.faceLandmarks.positions.forEach(m)}}};function jn(o,t){(Array.isArray(t)?t:[t]).forEach(r=>{let n=r instanceof V?r:zt(r)?r.landmarks:void 0;if(!n)throw new Error("drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof");new Kr(n).draw(o)})}var Co="0.11.2";var ut=b(g());var I=b(g());function Hn(o,t){let e=ce(o,t),r=me(o,t);function n(s,i,c){let m=r(s,i,`${c}/separable_conv0`),p=r(i,i,`${c}/separable_conv1`),d=e(s,i,1,`${c}/expansion_conv`);return{separable_conv0:m,separable_conv1:p,expansion_conv:d}}function a(s,i){let c=r(s,s,`${i}/separable_conv0`),m=r(s,s,`${i}/separable_conv1`),p=r(s,s,`${i}/separable_conv2`);return{separable_conv0:c,separable_conv1:m,separable_conv2:p}}return{extractConvParams:e,extractSeparableConvParams:r,extractReductionBlockParams:n,extractMainBlockParams:a}}function No(o,t){let e=[],{extractWeights:r,getRemainingWeights:n}=B(o),{extractConvParams:a,extractSeparableConvParams:s,extractReductionBlockParams:i,extractMainBlockParams:c}=Hn(r,e),m=a(3,32,3,"entry_flow/conv_in"),p=i(32,64,"entry_flow/reduction_block_0"),d=i(64,128,"entry_flow/reduction_block_1"),u={conv_in:m,reduction_block_0:p,reduction_block_1:d},l={};ct(t,0,1).forEach(y=>{l[`main_block_${y}`]=c(128,`middle_flow/main_block_${y}`)});let v=i(128,256,"exit_flow/reduction_block"),_=s(256,512,"exit_flow/separable_conv"),h={reduction_block:v,separable_conv:_};if(n().length!==0)throw new Error(`weights remaing after extract: ${n().length}`);return{paramMappings:e,params:{entry_flow:u,middle_flow:l,exit_flow:h}}}function Yn(o,t){let e=j(o,t),r=ar(e),n=pe(e);function a(i){let c=n(`${i}/separable_conv0`),m=n(`${i}/separable_conv1`),p=r(`${i}/expansion_conv`);return{separable_conv0:c,separable_conv1:m,expansion_conv:p}}function s(i){let c=n(`${i}/separable_conv0`),m=n(`${i}/separable_conv1`),p=n(`${i}/separable_conv2`);return{separable_conv0:c,separable_conv1:m,separable_conv2:p}}return{extractConvParams:r,extractSeparableConvParams:n,extractReductionBlockParams:a,extractMainBlockParams:s}}function Io(o,t){let e=[],{extractConvParams:r,extractSeparableConvParams:n,extractReductionBlockParams:a,extractMainBlockParams:s}=Yn(o,e),i=r("entry_flow/conv_in"),c=a("entry_flow/reduction_block_0"),m=a("entry_flow/reduction_block_1"),p={conv_in:i,reduction_block_0:c,reduction_block_1:m},d={};ct(t,0,1).forEach(_=>{d[`main_block_${_}`]=s(`middle_flow/main_block_${_}`)});let u=a("exit_flow/reduction_block"),l=n("exit_flow/separable_conv"),v={reduction_block:u,separable_conv:l};return W(o,e),{params:{entry_flow:p,middle_flow:d,exit_flow:v},paramMappings:e}}function Lo(o,t,e){return I.add(I.conv2d(o,t.filters,e,"same"),t.bias)}function to(o,t,e=!0){let r=e?I.relu(o):o;return r=$(r,t.separable_conv0,[1,1]),r=$(I.relu(r),t.separable_conv1,[1,1]),r=I.maxPool(r,[3,3],[2,2],"same"),r=I.add(r,Lo(o,t.expansion_conv,[2,2])),r}function Gn(o,t){let e=$(I.relu(o),t.separable_conv0,[1,1]);return e=$(I.relu(e),t.separable_conv1,[1,1]),e=$(I.relu(e),t.separable_conv2,[1,1]),e=I.add(e,o),e}var eo=class extends S{constructor(t){super("TinyXception");this._numMainBlocks=t}forwardInput(t){let{params:e}=this;if(!e)throw new Error("TinyXception - load model before inference");return I.tidy(()=>{let r=I.cast(t.toBatchTensor(112,!0),"float32"),a=ot(r,[122.782,117.001,104.298]).div(I.scalar(256)),s=I.relu(Lo(a,e.entry_flow.conv_in,[2,2]));return s=to(s,e.entry_flow.reduction_block_0,!1),s=to(s,e.entry_flow.reduction_block_1),ct(this._numMainBlocks,0,1).forEach(i=>{s=Gn(s,e.middle_flow[`main_block_${i}`])}),s=to(s,e.exit_flow.reduction_block),s=I.relu($(s,e.exit_flow.separable_conv,[1,1])),s})}async forward(t){return this.forwardInput(await E(t))}getDefaultModelName(){return"tiny_xception_model"}extractParamsFromWeigthMap(t){return Io(t,this._numMainBlocks)}extractParams(t){return No(t,this._numMainBlocks)}};function ko(o){let t=[],{extractWeights:e,getRemainingWeights:r}=B(o),n=rr(e,t),a=n(512,1,"fc/age"),s=n(512,2,"fc/gender");if(r().length!==0)throw new Error(`weights remaing after extract: ${r().length}`);return{paramMappings:t,params:{fc:{age:a,gender:s}}}}function So(o){let t=[],e=j(o,t);function r(a){let s=e(`${a}/weights`,2),i=e(`${a}/bias`,1);return{weights:s,bias:i}}let n={fc:{age:r("fc/age"),gender:r("fc/gender")}};return W(o,t),{params:n,paramMappings:t}}var vt;(function(o){o.FEMALE="female",o.MALE="male"})(vt||(vt={}));var pr=class extends S{constructor(t=new eo(2)){super("AgeGenderNet");this._faceFeatureExtractor=t}get faceFeatureExtractor(){return this._faceFeatureExtractor}runNet(t){let{params:e}=this;if(!e)throw new Error(`${this._name} - load model before inference`);return ut.tidy(()=>{let r=t instanceof bt?this.faceFeatureExtractor.forwardInput(t):t,n=ut.avgPool(r,[7,7],[2,2],"valid").as2D(r.shape[0],-1),a=Ae(n,e.fc.age).as1D(),s=Ae(n,e.fc.gender);return{age:a,gender:s}})}forwardInput(t){return ut.tidy(()=>{let{age:e,gender:r}=this.runNet(t);return{age:e,gender:ut.softmax(r)}})}async forward(t){return this.forwardInput(await E(t))}async predictAgeAndGender(t){let e=await E(t),r=await this.forwardInput(e),n=ut.unstack(r.age),a=ut.unstack(r.gender),s=n.map((c,m)=>({ageTensor:c,genderTensor:a[m]})),i=await Promise.all(s.map(async({ageTensor:c,genderTensor:m})=>{let p=(await c.data())[0],d=(await m.data())[0],u=d>.5,l=u?vt.MALE:vt.FEMALE,v=u?d:1-d;return c.dispose(),m.dispose(),{age:p,gender:l,genderProbability:v}}));return r.age.dispose(),r.gender.dispose(),e.isBatchInput?i:i[0]}getDefaultModelName(){return"age_gender_model"}dispose(t=!0){this.faceFeatureExtractor.dispose(t),super.dispose(t)}loadClassifierParams(t){let{params:e,paramMappings:r}=this.extractClassifierParams(t);this._params=e,this._paramMappings=r}extractClassifierParams(t){return ko(t)}extractParamsFromWeigthMap(t){let{featureExtractorMap:e,classifierMap:r}=ir(t);return this.faceFeatureExtractor.loadFromWeightMap(e),So(r)}extractParams(t){let e=512*1+1+(512*2+2),r=t.slice(0,t.length-e),n=t.slice(t.length-e);return this.faceFeatureExtractor.extractWeights(r),this.extractClassifierParams(n)}};var H=b(g());var Be=class extends We{postProcess(t,e,r){let n=r.map(({width:s,height:i})=>{let c=e/Math.max(i,s);return{width:s*c,height:i*c}}),a=n.length;return H.tidy(()=>{let s=(d,u)=>H.stack([H.fill([68],d,"float32"),H.fill([68],u,"float32")],1).as2D(1,136).as1D(),i=(d,u)=>{let{width:l,height:v}=n[d];return u(l,v)?Math.abs(l-v)/2:0},c=d=>i(d,(u,l)=>ui(d,(u,l)=>ls(c(u),m(u))))).div(H.stack(Array.from(Array(a),(d,u)=>s(n[u].width,n[u].height))))})}forwardInput(t){return H.tidy(()=>{let e=this.runNet(t);return this.postProcess(e,t.inputSize,t.inputDimensions.map(([r,n])=>({height:r,width:n})))})}async forward(t){return this.forwardInput(await E(t))}async detectLandmarks(t){let e=await E(t),r=H.tidy(()=>H.unstack(this.forwardInput(e))),n=await Promise.all(r.map(async(a,s)=>{let i=Array.from(await a.data()),c=i.filter((p,d)=>ze(d)),m=i.filter((p,d)=>!ze(d));return new oe(Array(68).fill(0).map((p,d)=>new x(c[d],m[d])),{height:e.getInputHeight(s),width:e.getInputWidth(s)})}));return r.forEach(a=>a.dispose()),e.isBatchInput?n:n[0]}getClassifierChannelsOut(){return 136}};var fe=class extends Be{constructor(t=new Se){super("FaceLandmark68Net",t)}getDefaultModelName(){return"face_landmark_68_model"}getClassifierChannelsIn(){return 256}};var Lt=b(g());function Ao(o){let t=[],{extractDenseBlock3Params:e}=sr(o,t),r={dense0:e("dense0",!0),dense1:e("dense1"),dense2:e("dense2")};return W(o,t),{params:r,paramMappings:t}}function Wo(o){let t=[],{extractWeights:e,getRemainingWeights:r}=B(o),{extractDenseBlock3Params:n}=nr(e,t),a=n(3,32,"dense0",!0),s=n(32,64,"dense1"),i=n(64,128,"dense2");if(r().length!==0)throw new Error(`weights remaing after extract: ${r().length}`);return{paramMappings:t,params:{dense0:a,dense1:s,dense2:i}}}var ro=class extends S{constructor(){super("TinyFaceFeatureExtractor")}forwardInput(t){let{params:e}=this;if(!e)throw new Error("TinyFaceFeatureExtractor - load model before inference");return Lt.tidy(()=>{let r=Lt.cast(t.toBatchTensor(112,!0),"float32"),a=ot(r,[122.782,117.001,104.298]).div(Lt.scalar(255)),s=Qe(a,e.dense0,!0);return s=Qe(s,e.dense1),s=Qe(s,e.dense2),s=Lt.avgPool(s,[14,14],[2,2],"valid"),s})}async forward(t){return this.forwardInput(await E(t))}getDefaultModelName(){return"face_feature_extractor_tiny_model"}extractParamsFromWeigthMap(t){return Ao(t)}extractParams(t){return Wo(t)}};var dr=class extends Be{constructor(t=new ro){super("FaceLandmark68TinyNet",t)}getDefaultModelName(){return"face_landmark_68_tiny_model"}getClassifierChannelsIn(){return 128}};var Bo=class extends fe{};var U=b(g());var he=b(g());var ur=b(g());function Ro(o,t){return ur.add(ur.mul(o,t.weights),t.biases)}function oo(o,t,e,r,n="same"){let{filters:a,bias:s}=t.conv,i=he.conv2d(o,a,e,n);return i=he.add(i,s),i=Ro(i,t.scale),r?he.relu(i):i}function Oo(o,t){return oo(o,t,[1,1],!0)}function no(o,t){return oo(o,t,[1,1],!1)}function lr(o,t){return oo(o,t,[2,2],!0,"valid")}var Y=b(g());function zn(o,t){function e(i,c,m){let p=o(i),d=p.length/(c*m*m);if(Nr(d))throw new Error(`depth has to be an integer: ${d}, weights.length: ${p.length}, numFilters: ${c}, filterSize: ${m}`);return Y.tidy(()=>Y.transpose(Y.tensor4d(p,[c,d,m,m]),[2,3,1,0]))}function r(i,c,m,p){let d=e(i,c,m),u=Y.tensor1d(o(c));return t.push({paramPath:`${p}/filters`},{paramPath:`${p}/bias`}),{filters:d,bias:u}}function n(i,c){let m=Y.tensor1d(o(i)),p=Y.tensor1d(o(i));return t.push({paramPath:`${c}/weights`},{paramPath:`${c}/biases`}),{weights:m,biases:p}}function a(i,c,m,p){let d=r(i,c,m,`${p}/conv`),u=n(c,`${p}/scale`);return{conv:d,scale:u}}function s(i,c,m,p,d=!1){let u=a((d?.5:1)*i,c,m,`${p}/conv1`),l=a(i,c,m,`${p}/conv2`);return{conv1:u,conv2:l}}return{extractConvLayerParams:a,extractResidualLayerParams:s}}function $o(o){let{extractWeights:t,getRemainingWeights:e}=B(o),r=[],{extractConvLayerParams:n,extractResidualLayerParams:a}=zn(t,r),s=n(4704,32,7,"conv32_down"),i=a(9216,32,3,"conv32_1"),c=a(9216,32,3,"conv32_2"),m=a(9216,32,3,"conv32_3"),p=a(36864,64,3,"conv64_down",!0),d=a(36864,64,3,"conv64_1"),u=a(36864,64,3,"conv64_2"),l=a(36864,64,3,"conv64_3"),v=a(147456,128,3,"conv128_down",!0),_=a(147456,128,3,"conv128_1"),h=a(147456,128,3,"conv128_2"),y=a(589824,256,3,"conv256_down",!0),T=a(589824,256,3,"conv256_1"),F=a(589824,256,3,"conv256_2"),L=a(589824,256,3,"conv256_down_out"),G=Y.tidy(()=>Y.transpose(Y.tensor2d(t(256*128),[128,256]),[1,0]));if(r.push({paramPath:"fc"}),e().length!==0)throw new Error(`weights remaing after extract: ${e().length}`);return{params:{conv32_down:s,conv32_1:i,conv32_2:c,conv32_3:m,conv64_down:p,conv64_1:d,conv64_2:u,conv64_3:l,conv128_down:v,conv128_1:_,conv128_2:h,conv256_down:y,conv256_1:T,conv256_2:F,conv256_down_out:L,fc:G},paramMappings:r}}function Vn(o,t){let e=j(o,t);function r(s){let i=e(`${s}/scale/weights`,1),c=e(`${s}/scale/biases`,1);return{weights:i,biases:c}}function n(s){let i=e(`${s}/conv/filters`,4),c=e(`${s}/conv/bias`,1),m=r(s);return{conv:{filters:i,bias:c},scale:m}}function a(s){return{conv1:n(`${s}/conv1`),conv2:n(`${s}/conv2`)}}return{extractConvLayerParams:n,extractResidualLayerParams:a}}function jo(o){let t=[],{extractConvLayerParams:e,extractResidualLayerParams:r}=Vn(o,t),n=e("conv32_down"),a=r("conv32_1"),s=r("conv32_2"),i=r("conv32_3"),c=r("conv64_down"),m=r("conv64_1"),p=r("conv64_2"),d=r("conv64_3"),u=r("conv128_down"),l=r("conv128_1"),v=r("conv128_2"),_=r("conv256_down"),h=r("conv256_1"),y=r("conv256_2"),T=r("conv256_down_out"),{fc:F}=o;if(t.push({originalPath:"fc",paramPath:"fc"}),!Cr(F))throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${F}`);let L={conv32_down:n,conv32_1:a,conv32_2:s,conv32_3:i,conv64_down:c,conv64_1:m,conv64_2:p,conv64_3:d,conv128_down:u,conv128_1:l,conv128_2:v,conv256_down:_,conv256_1:h,conv256_2:y,conv256_down_out:T,fc:F};return W(o,t),{params:L,paramMappings:t}}var R=b(g());function nt(o,t){let e=Oo(o,t.conv1);return e=no(e,t.conv2),e=R.add(e,o),e=R.relu(e),e}function Re(o,t){let e=lr(o,t.conv1);e=no(e,t.conv2);let r=R.avgPool(o,2,2,"valid"),n=R.zeros(r.shape),a=r.shape[3]!==e.shape[3];if(r.shape[1]!==e.shape[1]||r.shape[2]!==e.shape[2]){let i=[...e.shape];i[1]=1;let c=R.zeros(i);e=R.concat([e,c],1);let m=[...e.shape];m[2]=1;let p=R.zeros(m);e=R.concat([e,p],2)}return r=a?R.concat([r,n],3):r,e=R.add(r,e),e=R.relu(e),e}var xe=class extends S{constructor(){super("FaceRecognitionNet")}forwardInput(t){let{params:e}=this;if(!e)throw new Error("FaceRecognitionNet - load model before inference");return U.tidy(()=>{let r=U.cast(t.toBatchTensor(150,!0),"float32"),a=ot(r,[122.782,117.001,104.298]).div(U.scalar(256)),s=lr(a,e.conv32_down);s=U.maxPool(s,3,2,"valid"),s=nt(s,e.conv32_1),s=nt(s,e.conv32_2),s=nt(s,e.conv32_3),s=Re(s,e.conv64_down),s=nt(s,e.conv64_1),s=nt(s,e.conv64_2),s=nt(s,e.conv64_3),s=Re(s,e.conv128_down),s=nt(s,e.conv128_1),s=nt(s,e.conv128_2),s=Re(s,e.conv256_down),s=nt(s,e.conv256_1),s=nt(s,e.conv256_2),s=Re(s,e.conv256_down_out);let i=s.mean([1,2]);return U.matMul(i,e.fc)})}async forward(t){return this.forwardInput(await E(t))}async computeFaceDescriptor(t){let e=await E(t),r=U.tidy(()=>U.unstack(this.forwardInput(e))),n=await Promise.all(r.map(a=>a.data()));return r.forEach(a=>a.dispose()),e.isBatchInput?n:n[0]}getDefaultModelName(){return"face_recognition_model"}extractParamsFromWeigthMap(t){return jo(t)}extractParams(t){return $o(t)}};function Un(o){let t=new xe;return t.extractWeights(o),t}function fr(o,t){return{...o,...{descriptor:t}}}function Xn(o){return typeof o.age=="number"}function hr(o,t){return{...o,...{age:t}}}function Jn(o){return(o.gender===vt.MALE||o.gender===vt.FEMALE)&&te(o.genderProbability)}function xr(o,t,e){return{...o,...{gender:t,genderProbability:e}}}var st=b(g());var at=b(g());function qn(o,t){function e(c,m){let p=at.tensor4d(o(3*3*c),[3,3,c,1]),d=at.tensor1d(o(c)),u=at.tensor1d(o(c)),l=at.tensor1d(o(c)),v=at.tensor1d(o(c));return t.push({paramPath:`${m}/filters`},{paramPath:`${m}/batch_norm_scale`},{paramPath:`${m}/batch_norm_offset`},{paramPath:`${m}/batch_norm_mean`},{paramPath:`${m}/batch_norm_variance`}),{filters:p,batch_norm_scale:d,batch_norm_offset:u,batch_norm_mean:l,batch_norm_variance:v}}function r(c,m,p,d,u){let l=at.tensor4d(o(c*m*p*p),[p,p,c,m]),v=at.tensor1d(o(m));return t.push({paramPath:`${d}/filters`},{paramPath:`${d}/${u?"batch_norm_offset":"bias"}`}),{filters:l,bias:v}}function n(c,m,p,d){let{filters:u,bias:l}=r(c,m,p,d,!0);return{filters:u,batch_norm_offset:l}}function a(c,m,p){let d=e(c,`${p}/depthwise_conv`),u=n(c,m,1,`${p}/pointwise_conv`);return{depthwise_conv:d,pointwise_conv:u}}function s(){let c=n(3,32,3,"mobilenetv1/conv_0"),m=a(32,64,"mobilenetv1/conv_1"),p=a(64,128,"mobilenetv1/conv_2"),d=a(128,128,"mobilenetv1/conv_3"),u=a(128,256,"mobilenetv1/conv_4"),l=a(256,256,"mobilenetv1/conv_5"),v=a(256,512,"mobilenetv1/conv_6"),_=a(512,512,"mobilenetv1/conv_7"),h=a(512,512,"mobilenetv1/conv_8"),y=a(512,512,"mobilenetv1/conv_9"),T=a(512,512,"mobilenetv1/conv_10"),F=a(512,512,"mobilenetv1/conv_11"),L=a(512,1024,"mobilenetv1/conv_12"),G=a(1024,1024,"mobilenetv1/conv_13");return{conv_0:c,conv_1:m,conv_2:p,conv_3:d,conv_4:u,conv_5:l,conv_6:v,conv_7:_,conv_8:h,conv_9:y,conv_10:T,conv_11:F,conv_12:L,conv_13:G}}function i(){let c=n(1024,256,1,"prediction_layer/conv_0"),m=n(256,512,3,"prediction_layer/conv_1"),p=n(512,128,1,"prediction_layer/conv_2"),d=n(128,256,3,"prediction_layer/conv_3"),u=n(256,128,1,"prediction_layer/conv_4"),l=n(128,256,3,"prediction_layer/conv_5"),v=n(256,64,1,"prediction_layer/conv_6"),_=n(64,128,3,"prediction_layer/conv_7"),h=r(512,12,1,"prediction_layer/box_predictor_0/box_encoding_predictor"),y=r(512,9,1,"prediction_layer/box_predictor_0/class_predictor"),T=r(1024,24,1,"prediction_layer/box_predictor_1/box_encoding_predictor"),F=r(1024,18,1,"prediction_layer/box_predictor_1/class_predictor"),L=r(512,24,1,"prediction_layer/box_predictor_2/box_encoding_predictor"),G=r(512,18,1,"prediction_layer/box_predictor_2/class_predictor"),et=r(256,24,1,"prediction_layer/box_predictor_3/box_encoding_predictor"),it=r(256,18,1,"prediction_layer/box_predictor_3/class_predictor"),X=r(256,24,1,"prediction_layer/box_predictor_4/box_encoding_predictor"),Pt=r(256,18,1,"prediction_layer/box_predictor_4/class_predictor"),_t=r(128,24,1,"prediction_layer/box_predictor_5/box_encoding_predictor"),wt=r(128,18,1,"prediction_layer/box_predictor_5/class_predictor");return{conv_0:c,conv_1:m,conv_2:p,conv_3:d,conv_4:u,conv_5:l,conv_6:v,conv_7:_,box_predictor_0:{box_encoding_predictor:h,class_predictor:y},box_predictor_1:{box_encoding_predictor:T,class_predictor:F},box_predictor_2:{box_encoding_predictor:L,class_predictor:G},box_predictor_3:{box_encoding_predictor:et,class_predictor:it},box_predictor_4:{box_encoding_predictor:X,class_predictor:Pt},box_predictor_5:{box_encoding_predictor:_t,class_predictor:wt}}}return{extractMobilenetV1Params:s,extractPredictionLayerParams:i}}function Ho(o){let t=[],{extractWeights:e,getRemainingWeights:r}=B(o),{extractMobilenetV1Params:n,extractPredictionLayerParams:a}=qn(e,t),s=n(),i=a(),m={extra_dim:at.tensor3d(e(5118*4),[1,5118,4])};if(t.push({paramPath:"output_layer/extra_dim"}),r().length!==0)throw new Error(`weights remaing after extract: ${r().length}`);return{params:{mobilenetv1:s,prediction_layer:i,output_layer:m},paramMappings:t}}function Zn(o,t){let e=j(o,t);function r(m,p,d){let u=e(`${m}/Conv2d_${p}_pointwise/weights`,4,`${d}/filters`),l=e(`${m}/Conv2d_${p}_pointwise/convolution_bn_offset`,1,`${d}/batch_norm_offset`);return{filters:u,batch_norm_offset:l}}function n(m){let p=`mobilenetv1/conv_${m}`,d=`MobilenetV1/Conv2d_${m}_depthwise`,u=`${p}/depthwise_conv`,l=`${p}/pointwise_conv`,v=e(`${d}/depthwise_weights`,4,`${u}/filters`),_=e(`${d}/BatchNorm/gamma`,1,`${u}/batch_norm_scale`),h=e(`${d}/BatchNorm/beta`,1,`${u}/batch_norm_offset`),y=e(`${d}/BatchNorm/moving_mean`,1,`${u}/batch_norm_mean`),T=e(`${d}/BatchNorm/moving_variance`,1,`${u}/batch_norm_variance`);return{depthwise_conv:{filters:v,batch_norm_scale:_,batch_norm_offset:h,batch_norm_mean:y,batch_norm_variance:T},pointwise_conv:r("MobilenetV1",m,l)}}function a(){return{conv_0:r("MobilenetV1",0,"mobilenetv1/conv_0"),conv_1:n(1),conv_2:n(2),conv_3:n(3),conv_4:n(4),conv_5:n(5),conv_6:n(6),conv_7:n(7),conv_8:n(8),conv_9:n(9),conv_10:n(10),conv_11:n(11),conv_12:n(12),conv_13:n(13)}}function s(m,p){let d=e(`${m}/weights`,4,`${p}/filters`),u=e(`${m}/biases`,1,`${p}/bias`);return{filters:d,bias:u}}function i(m){let p=s(`Prediction/BoxPredictor_${m}/BoxEncodingPredictor`,`prediction_layer/box_predictor_${m}/box_encoding_predictor`),d=s(`Prediction/BoxPredictor_${m}/ClassPredictor`,`prediction_layer/box_predictor_${m}/class_predictor`);return{box_encoding_predictor:p,class_predictor:d}}function c(){return{conv_0:r("Prediction",0,"prediction_layer/conv_0"),conv_1:r("Prediction",1,"prediction_layer/conv_1"),conv_2:r("Prediction",2,"prediction_layer/conv_2"),conv_3:r("Prediction",3,"prediction_layer/conv_3"),conv_4:r("Prediction",4,"prediction_layer/conv_4"),conv_5:r("Prediction",5,"prediction_layer/conv_5"),conv_6:r("Prediction",6,"prediction_layer/conv_6"),conv_7:r("Prediction",7,"prediction_layer/conv_7"),box_predictor_0:i(0),box_predictor_1:i(1),box_predictor_2:i(2),box_predictor_3:i(3),box_predictor_4:i(4),box_predictor_5:i(5)}}return{extractMobilenetV1Params:a,extractPredictionLayerParams:c}}function Yo(o){let t=[],{extractMobilenetV1Params:e,extractPredictionLayerParams:r}=Zn(o,t),n=o["Output/extra_dim"];if(t.push({originalPath:"Output/extra_dim",paramPath:"output_layer/extra_dim"}),!ht(n))throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${n}`);let a={mobilenetv1:e(),prediction_layer:r(),output_layer:{extra_dim:n}};return W(o,t),{params:a,paramMappings:t}}var yt=b(g());var kt=b(g());function q(o,t,e){return kt.tidy(()=>{let r=kt.conv2d(o,t.filters,e,"same");return r=kt.add(r,t.batch_norm_offset),kt.clipByValue(r,0,6)})}var Kn=.0010000000474974513;function Qn(o,t,e){return yt.tidy(()=>{let r=yt.depthwiseConv2d(o,t.filters,e,"same");return r=yt.batchNorm(r,t.batch_norm_mean,t.batch_norm_variance,t.batch_norm_offset,t.batch_norm_scale,Kn),yt.clipByValue(r,0,6)})}function ta(o){return[2,4,6,12].some(t=>t===o)?[2,2]:[1,1]}function Go(o,t){return yt.tidy(()=>{let e,r=q(o,t.conv_0,[2,2]);if([t.conv_1,t.conv_2,t.conv_3,t.conv_4,t.conv_5,t.conv_6,t.conv_7,t.conv_8,t.conv_9,t.conv_10,t.conv_11,t.conv_12,t.conv_13].forEach((a,s)=>{let i=s+1,c=ta(i);r=Qn(r,a.depthwise_conv,c),r=q(r,a.pointwise_conv,[1,1]),i===11&&(e=r)}),e===null)throw new Error("mobileNetV1 - output of conv layer 11 is null");return{out:r,conv11:e}})}function ea(o,t,e){let r=o.arraySync(),n=Math.min(r[t][0],r[t][2]),a=Math.min(r[t][1],r[t][3]),s=Math.max(r[t][0],r[t][2]),i=Math.max(r[t][1],r[t][3]),c=Math.min(r[e][0],r[e][2]),m=Math.min(r[e][1],r[e][3]),p=Math.max(r[e][0],r[e][2]),d=Math.max(r[e][1],r[e][3]),u=(s-n)*(i-a),l=(p-c)*(d-m);if(u<=0||l<=0)return 0;let v=Math.max(n,c),_=Math.max(a,m),h=Math.min(s,p),y=Math.min(i,d),T=Math.max(h-v,0)*Math.max(y-_,0);return T/(u+l-T)}function zo(o,t,e,r,n){let a=o.shape[0],s=Math.min(e,a),i=t.map((p,d)=>({score:p,boxIndex:d})).filter(p=>p.score>n).sort((p,d)=>d.score-p.score),c=p=>p<=r?1:0,m=[];return i.forEach(p=>{if(m.length>=s)return;let d=p.score;for(let u=m.length-1;u>=0;--u){let l=ea(o,p.boxIndex,m[u]);if(l!==0&&(p.score*=c(l),p.score<=n))break}d===p.score&&m.push(p.boxIndex)}),m}var f=b(g());function ra(o){let t=f.unstack(f.transpose(o,[1,0])),e=[f.sub(t[2],t[0]),f.sub(t[3],t[1])],r=[f.add(t[0],f.div(e[0],f.scalar(2))),f.add(t[1],f.div(e[1],f.scalar(2)))];return{sizes:e,centers:r}}function oa(o,t){let{sizes:e,centers:r}=ra(o),n=f.unstack(f.transpose(t,[1,0])),a=f.div(f.mul(f.exp(f.div(n[2],f.scalar(5))),e[0]),f.scalar(2)),s=f.add(f.mul(f.div(n[0],f.scalar(10)),e[0]),r[0]),i=f.div(f.mul(f.exp(f.div(n[3],f.scalar(5))),e[1]),f.scalar(2)),c=f.add(f.mul(f.div(n[1],f.scalar(10)),e[1]),r[1]);return f.transpose(f.stack([f.sub(s,a),f.sub(c,i),f.add(s,a),f.add(c,i)]),[1,0])}function Vo(o,t,e){return f.tidy(()=>{let r=o.shape[0],n=oa(f.reshape(f.tile(e.extra_dim,[r,1,1]),[-1,4]),f.reshape(o,[-1,4]));n=f.reshape(n,[r,n.shape[0]/r,4]);let a=f.sigmoid(f.slice(t,[0,0,1],[-1,-1,-1])),s=f.slice(a,[0,0,0],[-1,-1,1]);s=f.reshape(s,[r,s.shape[1]]);let i=f.unstack(n),c=f.unstack(s);return{boxes:i,scores:c}})}var $e=b(g());var Oe=b(g());function Vt(o,t){return Oe.tidy(()=>{let e=o.shape[0],r=Oe.reshape(Gt(o,t.box_encoding_predictor),[e,-1,1,4]),n=Oe.reshape(Gt(o,t.class_predictor),[e,-1,3]);return{boxPredictionEncoding:r,classPrediction:n}})}function Uo(o,t,e){return $e.tidy(()=>{let r=q(o,e.conv_0,[1,1]),n=q(r,e.conv_1,[2,2]),a=q(n,e.conv_2,[1,1]),s=q(a,e.conv_3,[2,2]),i=q(s,e.conv_4,[1,1]),c=q(i,e.conv_5,[2,2]),m=q(c,e.conv_6,[1,1]),p=q(m,e.conv_7,[2,2]),d=Vt(t,e.box_predictor_0),u=Vt(o,e.box_predictor_1),l=Vt(n,e.box_predictor_2),v=Vt(s,e.box_predictor_3),_=Vt(c,e.box_predictor_4),h=Vt(p,e.box_predictor_5),y=$e.concat([d.boxPredictionEncoding,u.boxPredictionEncoding,l.boxPredictionEncoding,v.boxPredictionEncoding,_.boxPredictionEncoding,h.boxPredictionEncoding],1),T=$e.concat([d.classPrediction,u.classPrediction,l.classPrediction,v.classPrediction,_.classPrediction,h.classPrediction],1);return{boxPredictions:y,classPredictions:T}})}var Z=class{constructor({minConfidence:t,maxResults:e}={}){this._name="SsdMobilenetv1Options";if(this._minConfidence=t||.5,this._maxResults=e||100,typeof this._minConfidence!="number"||this._minConfidence<=0||this._minConfidence>=1)throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`);if(typeof this._maxResults!="number")throw new Error(`${this._name} - expected maxResults to be a number`)}get minConfidence(){return this._minConfidence}get maxResults(){return this._maxResults}};var Ut=class extends S{constructor(){super("SsdMobilenetv1")}forwardInput(t){let{params:e}=this;if(!e)throw new Error("SsdMobilenetv1 - load model before inference");return st.tidy(()=>{let r=st.cast(t.toBatchTensor(512,!1),"float32"),n=st.sub(st.mul(r,st.scalar(.007843137718737125)),st.scalar(1)),a=Go(n,e.mobilenetv1),{boxPredictions:s,classPredictions:i}=Uo(a.out,a.conv11,e.prediction_layer);return Vo(s,i,e.output_layer)})}async forward(t){return this.forwardInput(await E(t))}async locateFaces(t,e={}){let{maxResults:r,minConfidence:n}=new Z(e),a=await E(t),{boxes:s,scores:i}=this.forwardInput(a),c=s[0],m=i[0];for(let F=1;F{let[L,G]=[Math.max(0,y[F][0]),Math.min(1,y[F][2])].map(X=>X*h),[et,it]=[Math.max(0,y[F][1]),Math.min(1,y[F][3])].map(X=>X*_);return new M(p[F],new re(et,L,it-et,G-L),{height:a.getInputHeight(0),width:a.getInputWidth(0)})});return c.dispose(),m.dispose(),T}getDefaultModelName(){return"ssd_mobilenetv1_model"}extractParamsFromWeigthMap(t){return Yo(t)}extractParams(t){return Ho(t)}};function Xo(o){let t=new Ut;return t.extractWeights(o),t}function na(o){return Xo(o)}var Jo=class extends Ut{};var qo=.4,Zo=[new x(.738768,.874946),new x(2.42204,2.65704),new x(4.30971,7.04493),new x(10.246,4.59428),new x(12.6868,11.8741)],Ko=[new x(1.603231,2.094468),new x(6.041143,7.080126),new x(2.882459,3.518061),new x(4.266906,5.178857),new x(9.041765,10.66308)],Qo=[117.001,114.697,97.404],tn="tiny_yolov2_model",en="tiny_yolov2_separable_conv_model";var N=b(g());var br=o=>typeof o=="number";function ao(o){if(!o)throw new Error(`invalid config: ${o}`);if(typeof o.withSeparableConvs!="boolean")throw new Error(`config.withSeparableConvs has to be a boolean, have: ${o.withSeparableConvs}`);if(!br(o.iouThreshold)||o.iouThreshold<0||o.iouThreshold>1)throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${o.iouThreshold}`);if(!Array.isArray(o.classes)||!o.classes.length||!o.classes.every(t=>typeof t=="string"))throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(o.classes)}`);if(!Array.isArray(o.anchors)||!o.anchors.length||!o.anchors.map(t=>t||{}).every(t=>br(t.x)&&br(t.y)))throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(o.anchors)}`);if(o.meanRgb&&(!Array.isArray(o.meanRgb)||o.meanRgb.length!==3||!o.meanRgb.every(br)))throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(o.meanRgb)}`)}var Q=b(g());var K=b(g());function be(o){return K.tidy(()=>{let t=K.mul(o,K.scalar(.10000000149011612));return K.add(K.relu(K.sub(o,t)),t)})}function Ft(o,t){return Q.tidy(()=>{let e=Q.pad(o,[[0,0],[1,1],[1,1],[0,0]]);return e=Q.conv2d(e,t.conv.filters,[1,1],"valid"),e=Q.sub(e,t.bn.sub),e=Q.mul(e,t.bn.truediv),e=Q.add(e,t.conv.bias),be(e)})}var St=b(g());function Tt(o,t){return St.tidy(()=>{let e=St.pad(o,[[0,0],[1,1],[1,1],[0,0]]);return e=St.separableConv2d(e,t.depthwise_filter,t.pointwise_filter,[1,1],"valid"),e=St.add(e,t.bias),be(e)})}var so=b(g());function aa(o,t){let e=ce(o,t);function r(s,i){let c=so.tensor1d(o(s)),m=so.tensor1d(o(s));return t.push({paramPath:`${i}/sub`},{paramPath:`${i}/truediv`}),{sub:c,truediv:m}}function n(s,i,c){let m=e(s,i,3,`${c}/conv`),p=r(i,`${c}/bn`);return{conv:m,bn:p}}let a=me(o,t);return{extractConvParams:e,extractConvWithBatchNormParams:n,extractSeparableConvParams:a}}function rn(o,t,e,r){let{extractWeights:n,getRemainingWeights:a}=B(o),s=[],{extractConvParams:i,extractConvWithBatchNormParams:c,extractSeparableConvParams:m}=aa(n,s),p;if(t.withSeparableConvs){let[d,u,l,v,_,h,y,T,F]=r,L=t.isFirstLayerConv2d?i(d,u,3,"conv0"):m(d,u,"conv0"),G=m(u,l,"conv1"),et=m(l,v,"conv2"),it=m(v,_,"conv3"),X=m(_,h,"conv4"),Pt=m(h,y,"conv5"),_t=T?m(y,T,"conv6"):void 0,wt=F?m(T,F,"conv7"):void 0,Qt=i(F||T||y,5*e,1,"conv8");p={conv0:L,conv1:G,conv2:et,conv3:it,conv4:X,conv5:Pt,conv6:_t,conv7:wt,conv8:Qt}}else{let[d,u,l,v,_,h,y,T,F]=r,L=c(d,u,"conv0"),G=c(u,l,"conv1"),et=c(l,v,"conv2"),it=c(v,_,"conv3"),X=c(_,h,"conv4"),Pt=c(h,y,"conv5"),_t=c(y,T,"conv6"),wt=c(T,F,"conv7"),Qt=i(F,5*e,1,"conv8");p={conv0:L,conv1:G,conv2:et,conv3:it,conv4:X,conv5:Pt,conv6:_t,conv7:wt,conv8:Qt}}if(a().length!==0)throw new Error(`weights remaing after extract: ${a().length}`);return{params:p,paramMappings:s}}function sa(o,t){let e=j(o,t);function r(i){let c=e(`${i}/sub`,1),m=e(`${i}/truediv`,1);return{sub:c,truediv:m}}function n(i){let c=e(`${i}/filters`,4),m=e(`${i}/bias`,1);return{filters:c,bias:m}}function a(i){let c=n(`${i}/conv`),m=r(`${i}/bn`);return{conv:c,bn:m}}let s=pe(e);return{extractConvParams:n,extractConvWithBatchNormParams:a,extractSeparableConvParams:s}}function on(o,t){let e=[],{extractConvParams:r,extractConvWithBatchNormParams:n,extractSeparableConvParams:a}=sa(o,e),s;if(t.withSeparableConvs){let i=t.filterSizes&&t.filterSizes.length||9;s={conv0:t.isFirstLayerConv2d?r("conv0"):a("conv0"),conv1:a("conv1"),conv2:a("conv2"),conv3:a("conv3"),conv4:a("conv4"),conv5:a("conv5"),conv6:i>7?a("conv6"):void 0,conv7:i>8?a("conv7"):void 0,conv8:r("conv8")}}else s={conv0:n("conv0"),conv1:n("conv1"),conv2:n("conv2"),conv3:n("conv3"),conv4:n("conv4"),conv5:n("conv5"),conv6:n("conv6"),conv7:n("conv7"),conv8:r("conv8")};return W(o,e),{params:s,paramMappings:e}}var lt=class{constructor({inputSize:t,scoreThreshold:e}={}){this._name="TinyYolov2Options";if(this._inputSize=t||416,this._scoreThreshold=e||.5,typeof this._inputSize!="number"||this._inputSize%32!=0)throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`);if(typeof this._scoreThreshold!="number"||this._scoreThreshold<=0||this._scoreThreshold>=1)throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`)}get inputSize(){return this._inputSize}get scoreThreshold(){return this._scoreThreshold}};var io=class extends S{constructor(t){super("TinyYolov2");ao(t),this._config=t}get config(){return this._config}get withClassScores(){return this.config.withClassScores||this.config.classes.length>1}get boxEncodingSize(){return 5+(this.withClassScores?this.config.classes.length:0)}runTinyYolov2(t,e){let r=Ft(t,e.conv0);return r=N.maxPool(r,[2,2],[2,2],"same"),r=Ft(r,e.conv1),r=N.maxPool(r,[2,2],[2,2],"same"),r=Ft(r,e.conv2),r=N.maxPool(r,[2,2],[2,2],"same"),r=Ft(r,e.conv3),r=N.maxPool(r,[2,2],[2,2],"same"),r=Ft(r,e.conv4),r=N.maxPool(r,[2,2],[2,2],"same"),r=Ft(r,e.conv5),r=N.maxPool(r,[2,2],[1,1],"same"),r=Ft(r,e.conv6),r=Ft(r,e.conv7),Gt(r,e.conv8,"valid",!1)}runMobilenet(t,e){let r=this.config.isFirstLayerConv2d?be(Gt(t,e.conv0,"valid",!1)):Tt(t,e.conv0);return r=N.maxPool(r,[2,2],[2,2],"same"),r=Tt(r,e.conv1),r=N.maxPool(r,[2,2],[2,2],"same"),r=Tt(r,e.conv2),r=N.maxPool(r,[2,2],[2,2],"same"),r=Tt(r,e.conv3),r=N.maxPool(r,[2,2],[2,2],"same"),r=Tt(r,e.conv4),r=N.maxPool(r,[2,2],[2,2],"same"),r=Tt(r,e.conv5),r=N.maxPool(r,[2,2],[1,1],"same"),r=e.conv6?Tt(r,e.conv6):r,r=e.conv7?Tt(r,e.conv7):r,Gt(r,e.conv8,"valid",!1)}forwardInput(t,e){let{params:r}=this;if(!r)throw new Error("TinyYolov2 - load model before inference");return N.tidy(()=>{let n=N.cast(t.toBatchTensor(e,!1),"float32");return n=this.config.meanRgb?ot(n,this.config.meanRgb):n,n=n.div(N.scalar(256)),this.config.withSeparableConvs?this.runMobilenet(n,r):this.runTinyYolov2(n,r)})}async forward(t,e){return this.forwardInput(await E(t),e)}async detect(t,e={}){let{inputSize:r,scoreThreshold:n}=new lt(e),a=await E(t),s=await this.forwardInput(a,r),i=N.tidy(()=>N.unstack(s)[0].expandDims()),c={width:a.getInputWidth(0),height:a.getInputHeight(0)},m=await this.extractBoxes(i,a.getReshapedInputDimensions(0),n);s.dispose(),i.dispose();let p=m.map(h=>h.box),d=m.map(h=>h.score),u=m.map(h=>h.classScore),l=m.map(h=>this.config.classes[h.label]);return Sr(p.map(h=>h.rescale(r)),d,this.config.iouThreshold,!0).map(h=>new Dt(d[h],u[h],l[h],p[h],c))}getDefaultModelName(){return""}extractParamsFromWeigthMap(t){return on(t,this.config)}extractParams(t){let e=this.config.filterSizes||io.DEFAULT_FILTER_SIZES,r=e?e.length:void 0;if(r!==7&&r!==8&&r!==9)throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${r} filterSizes in config`);return rn(t,this.config,this.boxEncodingSize,e)}async extractBoxes(t,e,r){let{width:n,height:a}=e,s=Math.max(n,a),i=s/n,c=s/a,m=t.shape[1],p=this.config.anchors.length,[d,u,l]=N.tidy(()=>{let y=t.reshape([m,m,p,this.boxEncodingSize]),T=y.slice([0,0,0,0],[m,m,p,4]),F=y.slice([0,0,0,4],[m,m,p,1]),L=this.withClassScores?N.softmax(y.slice([0,0,0,5],[m,m,p,this.config.classes.length]),3):N.scalar(0);return[T,F,L]}),v=[],_=await u.array(),h=await d.array();for(let y=0;yr){let G=(T+De(h[y][T][F][0]))/m*i,et=(y+De(h[y][T][F][1]))/m*c,it=Math.exp(h[y][T][F][2])*this.config.anchors[F].x/m*i,X=Math.exp(h[y][T][F][3])*this.config.anchors[F].y/m*c,Pt=G-it/2,_t=et-X/2,wt={row:y,col:T,anchor:F},{classScore:Qt,label:lo}=this.withClassScores?await this.extractPredictedClass(l,wt):{classScore:1,label:0};v.push({box:new ee(Pt,_t,Pt+it,_t+X),score:L,classScore:L*Qt,label:lo,...wt})}}return d.dispose(),u.dispose(),l.dispose(),v}async extractPredictedClass(t,e){let{row:r,col:n,anchor:a}=e,s=await t.array();return Array(this.config.classes.length).fill(0).map((i,c)=>s[r][n][a][c]).map((i,c)=>({classScore:i,label:c})).reduce((i,c)=>i.classScore>c.classScore?i:c)}},ge=io;ge.DEFAULT_FILTER_SIZES=[3,16,32,64,128,256,512,1024,1024];var ve=class extends ge{constructor(t=!0){let e={withSeparableConvs:t,iouThreshold:qo,classes:["face"],...t?{anchors:Ko,meanRgb:Qo}:{anchors:Zo,withClassScores:!0}};super(e)}get withSeparableConvs(){return this.config.withSeparableConvs}get anchors(){return this.config.anchors}async locateFaces(t,e){return(await this.detect(t,e)).map(n=>new M(n.score,n.relativeBox,{width:n.imageWidth,height:n.imageHeight}))}getDefaultModelName(){return this.withSeparableConvs?en:tn}extractParamsFromWeigthMap(t){return super.extractParamsFromWeigthMap(t)}};function ia(o,t=!0){let e=new ve(t);return e.extractWeights(o),e}var gr=class extends lt{constructor(){super(...arguments);this._name="TinyFaceDetectorOptions"}};var tt=class{async then(t){return t(await this.run())}async run(){throw new Error("ComposableTask - run is not implemented")}};var je=b(g());var co=b(g());async function Xt(o,t,e,r,n=({alignedRect:a})=>a){let a=o.map(c=>zt(c)?n(c):c.detection),s=r||(t instanceof co.Tensor?await se(t,a):await ae(t,a)),i=await e(s);return s.forEach(c=>c instanceof co.Tensor&&c.dispose()),i}async function ye(o,t,e,r,n){return Xt([o],t,async a=>e(a[0]),r,n)}var nn=.4,an=[new x(1.603231,2.094468),new x(6.041143,7.080126),new x(2.882459,3.518061),new x(4.266906,5.178857),new x(9.041765,10.66308)],sn=[117.001,114.697,97.404];var Fe=class extends ge{constructor(){let t={withSeparableConvs:!0,iouThreshold:nn,classes:["face"],anchors:an,meanRgb:sn,isFirstLayerConv2d:!0,filterSizes:[3,16,32,64,128,256,512]};super(t)}get anchors(){return this.config.anchors}async locateFaces(t,e){return(await this.detect(t,e)).map(n=>new M(n.score,n.relativeBox,{width:n.imageWidth,height:n.imageHeight}))}getDefaultModelName(){return"tiny_face_detector_model"}extractParamsFromWeigthMap(t){return super.extractParamsFromWeigthMap(t)}};var P={ssdMobilenetv1:new Ut,tinyFaceDetector:new Fe,tinyYolov2:new ve,faceLandmark68Net:new fe,faceLandmark68TinyNet:new dr,faceRecognitionNet:new xe,faceExpressionNet:new cr,ageGenderNet:new pr},cn=(o,t)=>P.ssdMobilenetv1.locateFaces(o,t),ca=(o,t)=>P.tinyFaceDetector.locateFaces(o,t),ma=(o,t)=>P.tinyYolov2.locateFaces(o,t),mn=o=>P.faceLandmark68Net.detectLandmarks(o),pa=o=>P.faceLandmark68TinyNet.detectLandmarks(o),da=o=>P.faceRecognitionNet.computeFaceDescriptor(o),ua=o=>P.faceExpressionNet.predictExpressions(o),la=o=>P.ageGenderNet.predictAgeAndGender(o),pn=o=>P.ssdMobilenetv1.load(o),fa=o=>P.tinyFaceDetector.load(o),ha=o=>P.tinyYolov2.load(o),xa=o=>P.faceLandmark68Net.load(o),ba=o=>P.faceLandmark68TinyNet.load(o),ga=o=>P.faceRecognitionNet.load(o),va=o=>P.faceExpressionNet.load(o),ya=o=>P.ageGenderNet.load(o),Fa=pn,Ta=cn,Pa=mn;var mo=class extends tt{constructor(t,e,r){super();this.parentTask=t;this.input=e;this.extractedFaces=r}},_e=class extends mo{async run(){let t=await this.parentTask,e=await Xt(t,this.input,async r=>Promise.all(r.map(n=>P.faceExpressionNet.predictExpressions(n))),this.extractedFaces);return t.map((r,n)=>mr(r,e[n]))}withAgeAndGender(){return new Te(this,this.input)}},we=class extends mo{async run(){let t=await this.parentTask;if(!t)return;let e=await ye(t,this.input,r=>P.faceExpressionNet.predictExpressions(r),this.extractedFaces);return mr(t,e)}withAgeAndGender(){return new Pe(this,this.input)}},Zt=class extends _e{withAgeAndGender(){return new Jt(this,this.input)}withFaceDescriptors(){return new At(this,this.input)}},Kt=class extends we{withAgeAndGender(){return new qt(this,this.input)}withFaceDescriptor(){return new Wt(this,this.input)}};var po=class extends tt{constructor(t,e,r){super();this.parentTask=t;this.input=e;this.extractedFaces=r}},Te=class extends po{async run(){let t=await this.parentTask,e=await Xt(t,this.input,async r=>Promise.all(r.map(n=>P.ageGenderNet.predictAgeAndGender(n))),this.extractedFaces);return t.map((r,n)=>{let{age:a,gender:s,genderProbability:i}=e[n];return hr(xr(r,s,i),a)})}withFaceExpressions(){return new _e(this,this.input)}},Pe=class extends po{async run(){let t=await this.parentTask;if(!t)return;let{age:e,gender:r,genderProbability:n}=await ye(t,this.input,a=>P.ageGenderNet.predictAgeAndGender(a),this.extractedFaces);return hr(xr(t,r,n),e)}withFaceExpressions(){return new we(this,this.input)}},Jt=class extends Te{withFaceExpressions(){return new Zt(this,this.input)}withFaceDescriptors(){return new At(this,this.input)}},qt=class extends Pe{withFaceExpressions(){return new Kt(this,this.input)}withFaceDescriptor(){return new Wt(this,this.input)}};var vr=class extends tt{constructor(t,e){super();this.parentTask=t;this.input=e}},At=class extends vr{async run(){let t=await this.parentTask;return(await Xt(t,this.input,r=>Promise.all(r.map(n=>P.faceRecognitionNet.computeFaceDescriptor(n))),null,r=>r.landmarks.align(null,{useDlibAlignment:!0}))).map((r,n)=>fr(t[n],r))}withFaceExpressions(){return new Zt(this,this.input)}withAgeAndGender(){return new Jt(this,this.input)}},Wt=class extends vr{async run(){let t=await this.parentTask;if(!t)return;let e=await ye(t,this.input,r=>P.faceRecognitionNet.computeFaceDescriptor(r),null,r=>r.landmarks.align(null,{useDlibAlignment:!0}));return fr(t,e)}withFaceExpressions(){return new Kt(this,this.input)}withAgeAndGender(){return new qt(this,this.input)}};var yr=class extends tt{constructor(t,e,r){super();this.parentTask=t;this.input=e;this.useTinyLandmarkNet=r}get landmarkNet(){return this.useTinyLandmarkNet?P.faceLandmark68TinyNet:P.faceLandmark68Net}},Fr=class extends yr{async run(){let t=await this.parentTask,e=t.map(a=>a.detection),r=this.input instanceof je.Tensor?await se(this.input,e):await ae(this.input,e),n=await Promise.all(r.map(a=>this.landmarkNet.detectLandmarks(a)));return r.forEach(a=>a instanceof je.Tensor&&a.dispose()),t.map((a,s)=>le(a,n[s]))}withFaceExpressions(){return new Zt(this,this.input)}withAgeAndGender(){return new Jt(this,this.input)}withFaceDescriptors(){return new At(this,this.input)}},Tr=class extends yr{async run(){let t=await this.parentTask;if(!t)return;let{detection:e}=t,r=this.input instanceof je.Tensor?await se(this.input,[e]):await ae(this.input,[e]),n=await this.landmarkNet.detectLandmarks(r[0]);return r.forEach(a=>a instanceof je.Tensor&&a.dispose()),le(t,n)}withFaceExpressions(){return new Kt(this,this.input)}withAgeAndGender(){return new qt(this,this.input)}withFaceDescriptor(){return new Wt(this,this.input)}};var Pr=class extends tt{constructor(t,e=new Z){super();this.input=t;this.options=e}},He=class extends Pr{async run(){let{input:t,options:e}=this,r=e instanceof gr?n=>P.tinyFaceDetector.locateFaces(n,e):e instanceof Z?n=>P.ssdMobilenetv1.locateFaces(n,e):e instanceof lt?n=>P.tinyYolov2.locateFaces(n,e):null;if(!r)throw new Error("detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options");return r(t)}runAndExtendWithFaceDetections(){return new Promise(async t=>{let e=await this.run();t(e.map(r=>$t({},r)))})}withFaceLandmarks(t=!1){return new Fr(this.runAndExtendWithFaceDetections(),this.input,t)}withFaceExpressions(){return new _e(this.runAndExtendWithFaceDetections(),this.input)}withAgeAndGender(){return new Te(this.runAndExtendWithFaceDetections(),this.input)}},_r=class extends Pr{async run(){let t=await new He(this.input,this.options),e=t[0];return t.forEach(r=>{r.score>e.score&&(e=r)}),e}runAndExtendWithFaceDetection(){return new Promise(async t=>{let e=await this.run();t(e?$t({},e):void 0)})}withFaceLandmarks(t=!1){return new Tr(this.runAndExtendWithFaceDetection(),this.input,t)}withFaceExpressions(){return new we(this.runAndExtendWithFaceDetection(),this.input)}withAgeAndGender(){return new Pe(this.runAndExtendWithFaceDetection(),this.input)}};function _a(o,t=new Z){return new _r(o,t)}function wr(o,t=new Z){return new He(o,t)}async function dn(o,t){return wr(o,new Z(t?{minConfidence:t}:{})).withFaceLandmarks().withFaceDescriptors()}async function wa(o,t={}){return wr(o,new lt(t)).withFaceLandmarks().withFaceDescriptors()}var Da=dn;function uo(o,t){if(o.length!==t.length)throw new Error("euclideanDistance: arr1.length !== arr2.length");let e=Array.from(o),r=Array.from(t);return Math.sqrt(e.map((n,a)=>n-r[a]).reduce((n,a)=>n+a**2,0))}var Dr=class{constructor(t,e=.6){this._distanceThreshold=e;let r=Array.isArray(t)?t:[t];if(!r.length)throw new Error("FaceRecognizer.constructor - expected atleast one input");let n=1,a=()=>`person ${n++}`;this._labeledDescriptors=r.map(s=>{if(s instanceof xt)return s;if(s instanceof Float32Array)return new xt(a(),[s]);if(s.descriptor&&s.descriptor instanceof Float32Array)return new xt(a(),[s.descriptor]);throw new Error("FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>")})}get labeledDescriptors(){return this._labeledDescriptors}get distanceThreshold(){return this._distanceThreshold}computeMeanDistance(t,e){return e.map(r=>uo(r,t)).reduce((r,n)=>r+n,0)/(e.length||1)}matchDescriptor(t){return this.labeledDescriptors.map(({descriptors:e,label:r})=>new Ee(r,this.computeMeanDistance(t,e))).reduce((e,r)=>e.distancet.toJSON())}}static fromJSON(t){let e=t.labeledDescriptors.map(r=>xt.fromJSON(r));return new Dr(e,t.distanceThreshold)}};function Ea(o){let t=new Fe;return t.extractWeights(o),t}function un(o,t){let{width:e,height:r}=new A(t.width,t.height);if(e<=0||r<=0)throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({width:e,height:r})}`);if(Array.isArray(o))return o.map(n=>un(n,{width:e,height:r}));if(zt(o)){let n=o.detection.forSize(e,r),a=o.unshiftedLandmarks.forSize(n.box.width,n.box.height);return le($t(o,n),a)}return pt(o)?$t(o,o.detection.forSize(e,r)):o instanceof V||o instanceof M?o.forSize(e,r):o}var Ca=typeof process!="undefined",Na=typeof navigator!="undefined"&&typeof navigator.userAgent!="undefined",Ia={faceapi:Co,node:Ca,browser:Na}; //# sourceMappingURL=face-api.node.js.map diff --git a/dist/face-api.node.js.map b/dist/face-api.node.js.map index 159d761..4f1c981 100644 --- a/dist/face-api.node.js.map +++ b/dist/face-api.node.js.map @@ -2,6 +2,6 @@ "version": 3, "sources": ["../src/tfjs/tf-node.ts", "../src/env/isNodejs.ts", "../src/index.ts", "../src/draw/index.ts", "../src/draw/drawContour.ts", "../src/utils/index.ts", "../src/classes/Dimensions.ts", "../src/classes/Point.ts", "../src/classes/Box.ts", "../src/classes/BoundingBox.ts", "../src/classes/ObjectDetection.ts", "../src/classes/FaceDetection.ts", "../src/ops/iou.ts", "../src/ops/minBbox.ts", "../src/ops/nonMaxSuppression.ts", "../src/ops/normalize.ts", "../src/ops/padToSquare.ts", "../src/ops/shuffleArray.ts", "../src/ops/index.ts", "../src/classes/Rect.ts", "../src/classes/FaceLandmarks.ts", "../src/classes/FaceLandmarks5.ts", "../src/classes/FaceLandmarks68.ts", "../src/classes/FaceMatch.ts", "../src/classes/LabeledBox.ts", "../src/classes/LabeledFaceDescriptors.ts", "../src/classes/PredictedBox.ts", "../src/factories/WithFaceDetection.ts", "../src/env/createBrowserEnv.ts", "../src/env/createFileSystem.ts", "../src/env/createNodejsEnv.ts", "../src/env/isBrowser.ts", "../src/env/index.ts", "../src/dom/resolveInput.ts", "../src/dom/getContext2dOrThrow.ts", "../src/draw/DrawTextField.ts", "../src/draw/DrawBox.ts", "../src/draw/drawDetections.ts", "../src/faceExpressionNet/FaceExpressionNet.ts", "../src/dom/isMediaLoaded.ts", "../src/dom/awaitMediaLoaded.ts", "../src/dom/bufferToImage.ts", "../src/dom/getMediaDimensions.ts", "../src/dom/createCanvas.ts", "../src/dom/imageTensorToCanvas.ts", "../src/dom/isMediaElement.ts", "../src/dom/NetInput.ts", "../src/dom/imageToSquare.ts", "../src/dom/toNetInput.ts", "../src/dom/extractFaces.ts", "../src/dom/extractFaceTensors.ts", "../src/dom/fetchOrThrow.ts", "../src/dom/fetchImage.ts", "../src/dom/fetchJson.ts", "../src/dom/fetchNetWeights.ts", "../src/dom/loadWeightMap.ts", "../src/common/getModelUris.ts", "../src/dom/matchDimensions.ts", "../src/faceFeatureExtractor/FaceFeatureExtractor.ts", "../src/NeuralNetwork.ts", "../src/faceFeatureExtractor/denseBlock.ts", "../src/common/depthwiseSeparableConv.ts", "../src/common/convLayer.ts", "../src/common/disposeUnusedWeightTensors.ts", "../src/common/extractConvParamsFactory.ts", "../src/common/extractFCParamsFactory.ts", "../src/common/extractSeparableConvParamsFactory.ts", "../src/common/types.ts", "../src/common/extractWeightEntryFactory.ts", "../src/common/extractWeightsFactory.ts", "../src/faceFeatureExtractor/extractorsFactory.ts", "../src/faceFeatureExtractor/extractParams.ts", "../src/common/loadConvParamsFactory.ts", "../src/faceFeatureExtractor/loadParamsFactory.ts", "../src/faceFeatureExtractor/extractParamsFromWeigthMap.ts", "../src/faceProcessor/FaceProcessor.ts", "../src/common/fullyConnectedLayer.ts", "../src/faceProcessor/extractParams.ts", "../src/faceProcessor/extractParamsFromWeigthMap.ts", "../src/faceProcessor/util.ts", "../src/faceExpressionNet/FaceExpressions.ts", "../src/factories/WithFaceExpressions.ts", "../src/draw/drawFaceExpressions.ts", "../src/factories/WithFaceLandmarks.ts", "../src/draw/DrawFaceLandmarks.ts", "../src/ageGenderNet/AgeGenderNet.ts", "../src/xception/TinyXception.ts", "../src/xception/extractParams.ts", "../src/xception/extractParamsFromWeigthMap.ts", "../src/ageGenderNet/extractParams.ts", "../src/ageGenderNet/extractParamsFromWeigthMap.ts", "../src/ageGenderNet/types.ts", "../src/faceLandmarkNet/FaceLandmark68NetBase.ts", "../src/faceLandmarkNet/FaceLandmark68Net.ts", "../src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts", "../src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts", "../src/faceFeatureExtractor/extractParamsTiny.ts", "../src/faceLandmarkNet/FaceLandmark68TinyNet.ts", "../src/faceLandmarkNet/index.ts", "../src/faceRecognitionNet/FaceRecognitionNet.ts", "../src/faceRecognitionNet/convLayer.ts", "../src/faceRecognitionNet/scaleLayer.ts", "../src/faceRecognitionNet/extractParams.ts", "../src/faceRecognitionNet/extractParamsFromWeigthMap.ts", "../src/faceRecognitionNet/residualLayer.ts", "../src/faceRecognitionNet/index.ts", "../src/factories/WithFaceDescriptor.ts", "../src/factories/WithAge.ts", "../src/factories/WithGender.ts", "../src/ssdMobilenetv1/SsdMobilenetv1.ts", "../src/ssdMobilenetv1/extractParams.ts", "../src/ssdMobilenetv1/extractParamsFromWeigthMap.ts", "../src/ssdMobilenetv1/mobileNetV1.ts", "../src/ssdMobilenetv1/pointwiseConvLayer.ts", "../src/ssdMobilenetv1/nonMaxSuppression.ts", "../src/ssdMobilenetv1/outputLayer.ts", "../src/ssdMobilenetv1/predictionLayer.ts", "../src/ssdMobilenetv1/boxPredictionLayer.ts", "../src/ssdMobilenetv1/SsdMobilenetv1Options.ts", "../src/ssdMobilenetv1/index.ts", "../src/tinyYolov2/const.ts", "../src/tinyYolov2/TinyYolov2Base.ts", "../src/tinyYolov2/config.ts", "../src/tinyYolov2/convWithBatchNorm.ts", "../src/tinyYolov2/leaky.ts", "../src/tinyYolov2/depthwiseSeparableConv.ts", "../src/tinyYolov2/extractParams.ts", "../src/tinyYolov2/extractParamsFromWeigthMap.ts", "../src/tinyYolov2/TinyYolov2Options.ts", "../src/tinyYolov2/TinyYolov2.ts", "../src/tinyYolov2/index.ts", "../src/tinyFaceDetector/TinyFaceDetectorOptions.ts", "../src/globalApi/ComposableTask.ts", "../src/globalApi/DetectFaceLandmarksTasks.ts", "../src/globalApi/extractFacesAndComputeResults.ts", "../src/tinyFaceDetector/const.ts", "../src/tinyFaceDetector/TinyFaceDetector.ts", "../src/globalApi/nets.ts", "../src/globalApi/PredictFaceExpressionsTask.ts", "../src/globalApi/PredictAgeAndGenderTask.ts", "../src/globalApi/ComputeFaceDescriptorsTasks.ts", "../src/globalApi/DetectFacesTasks.ts", "../src/globalApi/detectFaces.ts", "../src/globalApi/allFaces.ts", "../src/euclideanDistance.ts", "../src/globalApi/FaceMatcher.ts", "../src/tinyFaceDetector/index.ts", "../src/resizeResults.ts"], "sourcesContent": ["/* eslint-disable import/no-extraneous-dependencies */\n/* eslint-disable node/no-unpublished-import */\n\nexport * from '@tensorflow/tfjs-node';\n", "export function isNodejs(): boolean {\n return typeof global === 'object'\n && typeof require === 'function'\n && typeof module !== 'undefined'\n // issues with gatsby.js: module.exports is undefined\n // && !!module.exports\n && typeof process !== 'undefined' && !!process.version;\n}\n", "import * as tf from '../dist/tfjs.esm';\nimport * as draw from './draw/index';\nimport * as utils from './utils/index';\nimport * as pkg from '../package.json';\n\nexport { tf, draw, utils };\n\nexport * from './ageGenderNet/index';\nexport * from './classes/index';\nexport * from './dom/index';\nexport * from './env/index';\nexport * from './faceExpressionNet/index';\nexport * from './faceLandmarkNet/index';\nexport * from './faceRecognitionNet/index';\nexport * from './factories/index';\nexport * from './globalApi/index';\nexport * from './ops/index';\nexport * from './ssdMobilenetv1/index';\nexport * from './tinyFaceDetector/index';\nexport * from './tinyYolov2/index';\nexport * from './euclideanDistance';\nexport * from './NeuralNetwork';\nexport * from './resizeResults';\n\nconst node = (typeof process !== 'undefined');\n// eslint-disable-next-line no-undef\nconst browser = (typeof navigator !== 'undefined') && (typeof navigator.userAgent !== 'undefined');\nexport const version = { faceapi: pkg.version as string, node, browser };\n", "export * from './drawContour';\nexport * from './drawDetections';\nexport * from './drawFaceExpressions';\nexport * from './DrawBox';\nexport * from './DrawFaceLandmarks';\nexport * from './DrawTextField';\n", "import { Point } from '../classes/index';\n\nexport function drawContour(\n ctx: CanvasRenderingContext2D,\n points: Point[],\n isClosed: boolean = false,\n) {\n ctx.beginPath();\n\n points.slice(1).forEach(({ x, y }, prevIdx) => {\n const from = points[prevIdx];\n ctx.moveTo(from.x, from.y);\n ctx.lineTo(x, y);\n });\n\n if (isClosed) {\n const from = points[points.length - 1];\n const to = points[0];\n if (!from || !to) {\n return;\n }\n\n ctx.moveTo(from.x, from.y);\n ctx.lineTo(to.x, to.y);\n }\n\n ctx.stroke();\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { Point } from '../classes/index';\nimport { Dimensions, IDimensions } from '../classes/Dimensions';\n\nexport function isTensor(tensor: any, dim: number) {\n return tensor instanceof tf.Tensor && tensor.shape.length === dim;\n}\n\nexport function isTensor1D(tensor: any): tensor is tf.Tensor1D {\n return isTensor(tensor, 1);\n}\n\nexport function isTensor2D(tensor: any): tensor is tf.Tensor2D {\n return isTensor(tensor, 2);\n}\n\nexport function isTensor3D(tensor: any): tensor is tf.Tensor3D {\n return isTensor(tensor, 3);\n}\n\nexport function isTensor4D(tensor: any): tensor is tf.Tensor4D {\n return isTensor(tensor, 4);\n}\n\nexport function isFloat(num: number) {\n return num % 1 !== 0;\n}\n\nexport function isEven(num: number) {\n return num % 2 === 0;\n}\n\nexport function round(num: number, prec: number = 2) {\n const f = 10 ** prec;\n return Math.floor(num * f) / f;\n}\n\nexport function isDimensions(obj: any): boolean {\n return obj && obj.width && obj.height;\n}\n\nexport function computeReshapedDimensions({ width, height }: IDimensions, inputSize: number) {\n const scale = inputSize / Math.max(height, width);\n return new Dimensions(Math.round(width * scale), Math.round(height * scale));\n}\n\nexport function getCenterPoint(pts: Point[]): Point {\n return pts.reduce((sum, pt) => sum.add(pt), new Point(0, 0))\n .div(new Point(pts.length, pts.length));\n}\n\nexport function range(num: number, start: number, step: number): number[] {\n return Array(num).fill(0).map((_, i) => start + (i * step));\n}\n\nexport function isValidNumber(num: any) {\n // eslint-disable-next-line no-mixed-operators\n return !!num && (num !== Infinity) && (num !== -Infinity) && !Number.isNaN(num) || num === 0;\n}\n\nexport function isValidProbablitiy(num: any) {\n return isValidNumber(num) && num >= 0 && num <= 1.0;\n}\n", "import { isValidNumber } from '../utils/index';\n\nexport interface IDimensions {\n width: number\n height: number\n}\n\nexport class Dimensions implements IDimensions {\n private _width: number\n\n private _height: number\n\n constructor(width: number, height: number) {\n if (!isValidNumber(width) || !isValidNumber(height)) {\n throw new Error(`Dimensions.constructor - expected width and height to be valid numbers, instead have ${JSON.stringify({ width, height })}`);\n }\n\n this._width = width;\n this._height = height;\n }\n\n public get width(): number { return this._width; }\n\n public get height(): number { return this._height; }\n\n public reverse(): Dimensions {\n return new Dimensions(1 / this.width, 1 / this.height);\n }\n}\n", "export interface IPoint {\n x: number\n y: number\n}\n\nexport class Point implements IPoint {\n private _x: number\n\n private _y: number\n\n constructor(x: number, y: number) {\n this._x = x;\n this._y = y;\n }\n\n get x(): number { return this._x; }\n\n get y(): number { return this._y; }\n\n public add(pt: IPoint): Point {\n return new Point(this.x + pt.x, this.y + pt.y);\n }\n\n public sub(pt: IPoint): Point {\n return new Point(this.x - pt.x, this.y - pt.y);\n }\n\n public mul(pt: IPoint): Point {\n return new Point(this.x * pt.x, this.y * pt.y);\n }\n\n public div(pt: IPoint): Point {\n return new Point(this.x / pt.x, this.y / pt.y);\n }\n\n public abs(): Point {\n return new Point(Math.abs(this.x), Math.abs(this.y));\n }\n\n public magnitude(): number {\n return Math.sqrt((this.x ** 2) + (this.y ** 2));\n }\n\n public floor(): Point {\n return new Point(Math.floor(this.x), Math.floor(this.y));\n }\n}\n", "import { isDimensions, isValidNumber } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { IDimensions } from './Dimensions';\nimport { Point } from './Point';\nimport { IRect } from './Rect';\n\nexport class Box implements IBoundingBox, IRect {\n public static isRect(rect: any): boolean {\n return !!rect && [rect.x, rect.y, rect.width, rect.height].every(isValidNumber);\n }\n\n public static assertIsValidBox(box: any, callee: string, allowNegativeDimensions: boolean = false) {\n if (!Box.isRect(box)) {\n throw new Error(`${callee} - invalid box: ${JSON.stringify(box)}, expected object with properties x, y, width, height`);\n }\n\n if (!allowNegativeDimensions && (box.width < 0 || box.height < 0)) {\n throw new Error(`${callee} - width (${box.width}) and height (${box.height}) must be positive numbers`);\n }\n }\n\n private _x: number\n\n private _y: number\n\n private _width: number\n\n private _height: number\n\n constructor(_box: IBoundingBox | IRect, allowNegativeDimensions: boolean = true) {\n const box = (_box || {}) as any;\n\n const isBbox = [box.left, box.top, box.right, box.bottom].every(isValidNumber);\n const isRect = [box.x, box.y, box.width, box.height].every(isValidNumber);\n\n if (!isRect && !isBbox) {\n throw new Error(`Box.constructor - expected box to be IBoundingBox | IRect, instead have ${JSON.stringify(box)}`);\n }\n\n const [x, y, width, height] = isRect\n ? [box.x, box.y, box.width, box.height]\n : [box.left, box.top, box.right - box.left, box.bottom - box.top];\n\n Box.assertIsValidBox({\n x, y, width, height,\n }, 'Box.constructor', allowNegativeDimensions);\n\n this._x = x;\n this._y = y;\n this._width = width;\n this._height = height;\n }\n\n public get x(): number { return this._x; }\n\n public get y(): number { return this._y; }\n\n public get width(): number { return this._width; }\n\n public get height(): number { return this._height; }\n\n public get left(): number { return this.x; }\n\n public get top(): number { return this.y; }\n\n public get right(): number { return this.x + this.width; }\n\n public get bottom(): number { return this.y + this.height; }\n\n public get area(): number { return this.width * this.height; }\n\n public get topLeft(): Point { return new Point(this.left, this.top); }\n\n public get topRight(): Point { return new Point(this.right, this.top); }\n\n public get bottomLeft(): Point { return new Point(this.left, this.bottom); }\n\n public get bottomRight(): Point { return new Point(this.right, this.bottom); }\n\n public round(): Box {\n const [x, y, width, height] = [this.x, this.y, this.width, this.height]\n .map((val) => Math.round(val));\n return new Box({\n x, y, width, height,\n });\n }\n\n public floor(): Box {\n const [x, y, width, height] = [this.x, this.y, this.width, this.height]\n .map((val) => Math.floor(val));\n return new Box({\n x, y, width, height,\n });\n }\n\n public toSquare(): Box {\n let {\n x, y, width, height,\n } = this;\n const diff = Math.abs(width - height);\n if (width < height) {\n x -= (diff / 2);\n width += diff;\n }\n if (height < width) {\n y -= (diff / 2);\n height += diff;\n }\n\n return new Box({\n x, y, width, height,\n });\n }\n\n public rescale(s: IDimensions | number): Box {\n const scaleX = isDimensions(s) ? (s as IDimensions).width : s as number;\n const scaleY = isDimensions(s) ? (s as IDimensions).height : s as number;\n return new Box({\n x: this.x * scaleX,\n y: this.y * scaleY,\n width: this.width * scaleX,\n height: this.height * scaleY,\n });\n }\n\n public pad(padX: number, padY: number): Box {\n const [x, y, width, height] = [\n this.x - (padX / 2),\n this.y - (padY / 2),\n this.width + padX,\n this.height + padY,\n ];\n return new Box({\n x, y, width, height,\n });\n }\n\n public clipAtImageBorders(imgWidth: number, imgHeight: number): Box {\n const {\n x, y, right, bottom,\n } = this;\n const clippedX = Math.max(x, 0);\n const clippedY = Math.max(y, 0);\n\n const newWidth = right - clippedX;\n const newHeight = bottom - clippedY;\n const clippedWidth = Math.min(newWidth, imgWidth - clippedX);\n const clippedHeight = Math.min(newHeight, imgHeight - clippedY);\n\n return (new Box({\n x: clippedX, y: clippedY, width: clippedWidth, height: clippedHeight,\n })).floor();\n }\n\n public shift(sx: number, sy: number): Box {\n const { width, height } = this;\n const x = this.x + sx;\n const y = this.y + sy;\n\n return new Box({\n x, y, width, height,\n });\n }\n\n public padAtBorders(imageHeight: number, imageWidth: number) {\n const w = this.width + 1;\n const h = this.height + 1;\n\n const dx = 1;\n const dy = 1;\n let edx = w;\n let edy = h;\n\n let x = this.left;\n let y = this.top;\n let ex = this.right;\n let ey = this.bottom;\n\n if (ex > imageWidth) {\n edx = -ex + imageWidth + w;\n ex = imageWidth;\n }\n if (ey > imageHeight) {\n edy = -ey + imageHeight + h;\n ey = imageHeight;\n }\n if (x < 1) {\n edy = 2 - x;\n x = 1;\n }\n if (y < 1) {\n edy = 2 - y;\n y = 1;\n }\n\n return {\n dy, edy, dx, edx, y, ey, x, ex, w, h,\n };\n }\n\n public calibrate(region: Box) {\n return new Box({\n left: this.left + (region.left * this.width),\n top: this.top + (region.top * this.height),\n right: this.right + (region.right * this.width),\n bottom: this.bottom + (region.bottom * this.height),\n }).toSquare().round();\n }\n}\n", "import { Box } from './Box';\n\nexport interface IBoundingBox {\n left: number\n top: number\n right: number\n bottom: number\n}\n\nexport class BoundingBox extends Box implements IBoundingBox {\n constructor(left: number, top: number, right: number, bottom: number, allowNegativeDimensions: boolean = false) {\n super({\n left, top, right, bottom,\n }, allowNegativeDimensions);\n }\n}\n", "import { Box } from './Box';\nimport { Dimensions, IDimensions } from './Dimensions';\nimport { IRect, Rect } from './Rect';\n\nexport class ObjectDetection {\n private _score: number\n\n private _classScore: number\n\n private _className: string\n\n private _box: Rect\n\n private _imageDims: Dimensions\n\n constructor(\n score: number,\n classScore: number,\n className: string,\n relativeBox: IRect,\n imageDims: IDimensions,\n ) {\n this._imageDims = new Dimensions(imageDims.width, imageDims.height);\n this._score = score;\n this._classScore = classScore;\n this._className = className;\n this._box = new Box(relativeBox).rescale(this._imageDims);\n }\n\n public get score(): number { return this._score; }\n\n public get classScore(): number { return this._classScore; }\n\n public get className(): string { return this._className; }\n\n public get box(): Box { return this._box; }\n\n public get imageDims(): Dimensions { return this._imageDims; }\n\n public get imageWidth(): number { return this.imageDims.width; }\n\n public get imageHeight(): number { return this.imageDims.height; }\n\n public get relativeBox(): Box { return new Box(this._box).rescale(this.imageDims.reverse()); }\n\n public forSize(width: number, height: number): ObjectDetection {\n return new ObjectDetection(\n this.score,\n this.classScore,\n this.className,\n this.relativeBox,\n { width, height },\n );\n }\n}\n", "import { Box } from './Box';\nimport { IDimensions } from './Dimensions';\nimport { ObjectDetection } from './ObjectDetection';\nimport { Rect } from './Rect';\n\nexport interface IFaceDetecion {\n score: number\n box: Box\n}\n\nexport class FaceDetection extends ObjectDetection implements IFaceDetecion {\n constructor(\n score: number,\n relativeBox: Rect,\n imageDims: IDimensions,\n ) {\n super(score, score, '', relativeBox, imageDims);\n }\n\n public forSize(width: number, height: number): FaceDetection {\n const { score, relativeBox, imageDims } = super.forSize(width, height);\n return new FaceDetection(score, relativeBox, imageDims);\n }\n}\n", "import { Box } from '../classes/Box';\n\nexport function iou(box1: Box, box2: Box, isIOU: boolean = true) {\n const width = Math.max(0.0, Math.min(box1.right, box2.right) - Math.max(box1.left, box2.left));\n const height = Math.max(0.0, Math.min(box1.bottom, box2.bottom) - Math.max(box1.top, box2.top));\n const interSection = width * height;\n\n return isIOU\n ? interSection / (box1.area + box2.area - interSection)\n : interSection / Math.min(box1.area, box2.area);\n}\n", "import { BoundingBox, IPoint } from '../classes/index';\n\nexport function minBbox(pts: IPoint[]): BoundingBox {\n const xs = pts.map((pt) => pt.x);\n const ys = pts.map((pt) => pt.y);\n const minX = xs.reduce((min, x) => (x < min ? x : min), Infinity);\n const minY = ys.reduce((min, y) => (y < min ? y : min), Infinity);\n const maxX = xs.reduce((max, x) => (max < x ? x : max), 0);\n const maxY = ys.reduce((max, y) => (max < y ? y : max), 0);\n\n return new BoundingBox(minX, minY, maxX, maxY);\n}\n", "import { Box } from '../classes/Box';\nimport { iou } from './iou';\n\nexport function nonMaxSuppression(\n boxes: Box[],\n scores: number[],\n iouThreshold: number,\n isIOU: boolean = true,\n): number[] {\n let indicesSortedByScore = scores\n .map((score, boxIndex) => ({ score, boxIndex }))\n .sort((c1, c2) => c1.score - c2.score)\n .map((c) => c.boxIndex);\n\n const pick: number[] = [];\n\n while (indicesSortedByScore.length > 0) {\n const curr = indicesSortedByScore.pop() as number;\n pick.push(curr);\n\n const indices = indicesSortedByScore;\n\n const outputs: number[] = [];\n for (let i = 0; i < indices.length; i++) {\n const idx = indices[i];\n\n const currBox = boxes[curr];\n const idxBox = boxes[idx];\n\n outputs.push(iou(currBox, idxBox, isIOU));\n }\n\n indicesSortedByScore = indicesSortedByScore.filter(\n (_, j) => outputs[j] <= iouThreshold,\n );\n }\n\n return pick;\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nexport function normalize(x: tf.Tensor4D, meanRgb: number[]): tf.Tensor4D {\n return tf.tidy(() => {\n const [r, g, b] = meanRgb;\n const avg_r = tf.fill([...x.shape.slice(0, 3), 1], r, 'float32');\n const avg_g = tf.fill([...x.shape.slice(0, 3), 1], g, 'float32');\n const avg_b = tf.fill([...x.shape.slice(0, 3), 1], b, 'float32');\n const avg_rgb = tf.concat([avg_r, avg_g, avg_b], 3);\n\n return tf.sub(x, avg_rgb);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\n/**\n * Pads the smaller dimension of an image tensor with zeros, such that width === height.\n *\n * @param imgTensor The image tensor.\n * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on\n * both sides of the minor dimension oof the image.\n * @returns The padded tensor with width === height.\n */\nexport function padToSquare(\n imgTensor: tf.Tensor4D,\n isCenterImage: boolean = false,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const [height, width] = imgTensor.shape.slice(1);\n if (height === width) {\n return imgTensor;\n }\n\n const dimDiff = Math.abs(height - width);\n const paddingAmount = Math.round(dimDiff * (isCenterImage ? 0.5 : 1));\n const paddingAxis = height > width ? 2 : 1;\n\n const createPaddingTensor = (paddingAmountLocal: number): tf.Tensor => {\n const paddingTensorShape = imgTensor.shape.slice();\n paddingTensorShape[paddingAxis] = paddingAmountLocal;\n return tf.fill(paddingTensorShape, 0, 'float32');\n };\n\n const paddingTensorAppend = createPaddingTensor(paddingAmount);\n const remainingPaddingAmount = dimDiff - (paddingTensorAppend.shape[paddingAxis] as number);\n\n const paddingTensorPrepend = isCenterImage && remainingPaddingAmount\n ? createPaddingTensor(remainingPaddingAmount)\n : null;\n\n const tensorsToStack = [\n paddingTensorPrepend,\n imgTensor,\n paddingTensorAppend,\n ]\n .filter((t) => !!t)\n // .map((t: tf.Tensor) => t.toFloat()) as tf.Tensor4D[]\n .map((t: tf.Tensor) => tf.cast(t, 'float32')) as tf.Tensor4D[];\n return tf.concat(tensorsToStack, paddingAxis);\n });\n}\n", "export function shuffleArray(inputArray: any[]) {\n const array = inputArray.slice();\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const x = array[i];\n array[i] = array[j];\n array[j] = x;\n }\n return array;\n}\n", "export * from './iou';\nexport * from './minBbox';\nexport * from './nonMaxSuppression';\nexport * from './normalize';\nexport * from './padToSquare';\nexport * from './shuffleArray';\n\nexport function sigmoid(x: number) {\n return 1 / (1 + Math.exp(-x));\n}\n\nexport function inverseSigmoid(x: number) {\n return Math.log(x / (1 - x));\n}\n", "import { Box } from './Box';\n\nexport interface IRect {\n x: number\n y: number\n width: number\n height: number\n}\n\nexport class Rect extends Box implements IRect {\n constructor(x: number, y: number, width: number, height: number, allowNegativeDimensions: boolean = false) {\n super({\n x, y, width, height,\n }, allowNegativeDimensions);\n }\n}\n", "import { minBbox } from '../ops/index';\nimport { getCenterPoint } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { Box } from './Box';\nimport { Dimensions, IDimensions } from './Dimensions';\nimport { FaceDetection } from './FaceDetection';\nimport { Point } from './Point';\nimport { IRect, Rect } from './Rect';\n\n// face alignment constants\nconst relX = 0.5;\nconst relY = 0.43;\nconst relScale = 0.45;\n\nexport interface IFaceLandmarks {\n positions: Point[]\n shift: Point\n}\n\nexport class FaceLandmarks implements IFaceLandmarks {\n protected _shift: Point\n\n protected _positions: Point[]\n\n protected _imgDims: Dimensions\n\n constructor(\n relativeFaceLandmarkPositions: Point[],\n imgDims: IDimensions,\n shift: Point = new Point(0, 0),\n ) {\n const { width, height } = imgDims;\n this._imgDims = new Dimensions(width, height);\n this._shift = shift;\n this._positions = relativeFaceLandmarkPositions.map(\n (pt) => pt.mul(new Point(width, height)).add(shift),\n );\n }\n\n public get shift(): Point { return new Point(this._shift.x, this._shift.y); }\n\n public get imageWidth(): number { return this._imgDims.width; }\n\n public get imageHeight(): number { return this._imgDims.height; }\n\n public get positions(): Point[] { return this._positions; }\n\n public get relativePositions(): Point[] {\n return this._positions.map(\n (pt) => pt.sub(this._shift).div(new Point(this.imageWidth, this.imageHeight)),\n );\n }\n\n public forSize(width: number, height: number): T {\n return new (this.constructor as any)(\n this.relativePositions,\n { width, height },\n );\n }\n\n public shiftBy(x: number, y: number): T {\n return new (this.constructor as any)(\n this.relativePositions,\n this._imgDims,\n new Point(x, y),\n );\n }\n\n public shiftByPoint(pt: Point): T {\n return this.shiftBy(pt.x, pt.y);\n }\n\n /**\n * Aligns the face landmarks after face detection from the relative positions of the faces\n * bounding box, or it's current shift. This function should be used to align the face images\n * after face detection has been performed, before they are passed to the face recognition net.\n * This will make the computed face descriptor more accurate.\n *\n * @param detection (optional) The bounding box of the face or the face detection result. If\n * no argument was passed the position of the face landmarks are assumed to be relative to\n * it's current shift.\n * @returns The bounding box of the aligned face.\n */\n public align(\n detection?: FaceDetection | IRect | IBoundingBox | null,\n options: { useDlibAlignment?: boolean, minBoxPadding?: number } = { },\n ): Box {\n if (detection) {\n const box = detection instanceof FaceDetection\n ? detection.box.floor()\n : new Box(detection);\n\n return this.shiftBy(box.x, box.y).align(null, options);\n }\n\n const { useDlibAlignment, minBoxPadding } = { useDlibAlignment: false, minBoxPadding: 0.2, ...options };\n\n if (useDlibAlignment) {\n return this.alignDlib();\n }\n\n return this.alignMinBbox(minBoxPadding);\n }\n\n private alignDlib(): Box {\n const centers = this.getRefPointsForAlignment();\n\n const [leftEyeCenter, rightEyeCenter, mouthCenter] = centers;\n const distToMouth = (pt: Point) => mouthCenter.sub(pt).magnitude();\n const eyeToMouthDist = (distToMouth(leftEyeCenter) + distToMouth(rightEyeCenter)) / 2;\n\n const size = Math.floor(eyeToMouthDist / relScale);\n\n const refPoint = getCenterPoint(centers);\n // TODO: pad in case rectangle is out of image bounds\n const x = Math.floor(Math.max(0, refPoint.x - (relX * size)));\n const y = Math.floor(Math.max(0, refPoint.y - (relY * size)));\n\n return new Rect(x, y, Math.min(size, this.imageWidth + x), Math.min(size, this.imageHeight + y));\n }\n\n private alignMinBbox(padding: number): Box {\n const box = minBbox(this.positions);\n return box.pad(box.width * padding, box.height * padding);\n }\n\n protected getRefPointsForAlignment(): Point[] {\n throw new Error('getRefPointsForAlignment not implemented by base class');\n }\n}\n", "import { getCenterPoint } from '../utils/index';\nimport { FaceLandmarks } from './FaceLandmarks';\nimport { Point } from './Point';\n\nexport class FaceLandmarks5 extends FaceLandmarks {\n protected getRefPointsForAlignment(): Point[] {\n const pts = this.positions;\n return [\n pts[0],\n pts[1],\n getCenterPoint([pts[3], pts[4]]),\n ];\n }\n}\n", "import { getCenterPoint } from '../utils/index';\nimport { FaceLandmarks } from './FaceLandmarks';\nimport { Point } from './Point';\n\nexport class FaceLandmarks68 extends FaceLandmarks {\n public getJawOutline(): Point[] {\n return this.positions.slice(0, 17);\n }\n\n public getLeftEyeBrow(): Point[] {\n return this.positions.slice(17, 22);\n }\n\n public getRightEyeBrow(): Point[] {\n return this.positions.slice(22, 27);\n }\n\n public getNose(): Point[] {\n return this.positions.slice(27, 36);\n }\n\n public getLeftEye(): Point[] {\n return this.positions.slice(36, 42);\n }\n\n public getRightEye(): Point[] {\n return this.positions.slice(42, 48);\n }\n\n public getMouth(): Point[] {\n return this.positions.slice(48, 68);\n }\n\n protected getRefPointsForAlignment(): Point[] {\n return [\n this.getLeftEye(),\n this.getRightEye(),\n this.getMouth(),\n ].map(getCenterPoint);\n }\n}\n", "import { round } from '../utils/index';\n\nexport interface IFaceMatch {\n label: string\n distance: number\n}\n\nexport class FaceMatch implements IFaceMatch {\n private _label: string\n\n private _distance: number\n\n constructor(label: string, distance: number) {\n this._label = label;\n this._distance = distance;\n }\n\n public get label(): string { return this._label; }\n\n public get distance(): number { return this._distance; }\n\n public toString(withDistance: boolean = true): string {\n return `${this.label}${withDistance ? ` (${round(this.distance)})` : ''}`;\n }\n}\n", "import { isValidNumber } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { Box } from './Box';\nimport { IRect } from './Rect';\n\nexport class LabeledBox extends Box {\n public static assertIsValidLabeledBox(box: any, callee: string) {\n Box.assertIsValidBox(box, callee);\n\n if (!isValidNumber(box.label)) {\n throw new Error(`${callee} - expected property label (${box.label}) to be a number`);\n }\n }\n\n private _label: number\n\n constructor(box: IBoundingBox | IRect | any, label: number) {\n super(box);\n this._label = label;\n }\n\n public get label(): number { return this._label; }\n}\n", "export class LabeledFaceDescriptors {\n private _label: string\n\n private _descriptors: Float32Array[]\n\n constructor(label: string, descriptors: Float32Array[]) {\n if (!(typeof label === 'string')) {\n throw new Error('LabeledFaceDescriptors - constructor expected label to be a string');\n }\n\n if (!Array.isArray(descriptors) || descriptors.some((desc) => !(desc instanceof Float32Array))) {\n throw new Error('LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array');\n }\n\n this._label = label;\n this._descriptors = descriptors;\n }\n\n public get label(): string { return this._label; }\n\n public get descriptors(): Float32Array[] { return this._descriptors; }\n\n public toJSON(): any {\n return {\n label: this.label,\n descriptors: this.descriptors.map((d) => Array.from(d)),\n };\n }\n\n public static fromJSON(json: any): LabeledFaceDescriptors {\n const descriptors = json.descriptors.map((d: any) => new Float32Array(d));\n return new LabeledFaceDescriptors(json.label, descriptors);\n }\n}\n", "import { isValidProbablitiy } from '../utils/index';\nimport { IBoundingBox } from './BoundingBox';\nimport { LabeledBox } from './LabeledBox';\nimport { IRect } from './Rect';\n\nexport class PredictedBox extends LabeledBox {\n public static assertIsValidPredictedBox(box: any, callee: string) {\n LabeledBox.assertIsValidLabeledBox(box, callee);\n\n if (\n !isValidProbablitiy(box.score)\n || !isValidProbablitiy(box.classScore)\n ) {\n throw new Error(`${callee} - expected properties score (${box.score}) and (${box.classScore}) to be a number between [0, 1]`);\n }\n }\n\n private _score: number\n\n private _classScore: number\n\n constructor(box: IBoundingBox | IRect | any, label: number, score: number, classScore: number) {\n super(box, label);\n this._score = score;\n this._classScore = classScore;\n }\n\n public get score(): number { return this._score; }\n\n public get classScore(): number { return this._classScore; }\n}\n", "import { FaceDetection } from '../classes/FaceDetection';\n\nexport type WithFaceDetection = TSource & {\n detection: FaceDetection\n}\n\nexport function isWithFaceDetection(obj: any): obj is WithFaceDetection<{}> {\n return obj.detection instanceof FaceDetection;\n}\n\nexport function extendWithFaceDetection<\n TSource\n>(\n sourceObj: TSource,\n detection: FaceDetection,\n): WithFaceDetection {\n const extension = { detection };\n return { ...sourceObj, ...extension };\n}\n", "import { Environment } from './types';\n\nexport function createBrowserEnv(): Environment {\n const fetch = window.fetch;\n if (!fetch) throw new Error('fetch - missing fetch implementation for browser environment');\n\n const readFile = () => {\n throw new Error('readFile - filesystem not available for browser environment');\n };\n\n return {\n Canvas: HTMLCanvasElement,\n CanvasRenderingContext2D,\n Image: HTMLImageElement,\n ImageData,\n Video: HTMLVideoElement,\n createCanvasElement: () => document.createElement('canvas'),\n createImageElement: () => document.createElement('img'),\n fetch,\n readFile,\n };\n}\n", "import { FileSystem } from './types';\n\nexport function createFileSystem(fs?: any): FileSystem {\n let requireFsError = '';\n\n if (!fs) {\n try {\n // eslint-disable-next-line global-require\n fs = require('fs');\n } catch (err) {\n requireFsError = err.toString();\n }\n }\n\n const readFile = fs\n ? (filePath: string) => new Promise((resolve, reject) => {\n fs.readFile(filePath, (err: any, buffer: Buffer) => (err ? reject(err) : resolve(buffer)));\n })\n : () => {\n throw new Error(`readFile - failed to require fs in nodejs environment with error: ${requireFsError}`);\n };\n\n return {\n readFile,\n };\n}\n", "/* eslint-disable max-classes-per-file */\nimport { createFileSystem } from './createFileSystem';\nimport { Environment } from './types';\n\nexport function createNodejsEnv(): Environment {\n // eslint-disable-next-line dot-notation\n const Canvas = global['Canvas'] || global.HTMLCanvasElement;\n const Image = global.Image || global.HTMLImageElement;\n\n const createCanvasElement = () => {\n if (Canvas) return new Canvas();\n throw new Error('createCanvasElement - missing Canvas implementation for nodejs environment');\n };\n\n const createImageElement = () => {\n if (Image) return new Image();\n throw new Error('createImageElement - missing Image implementation for nodejs environment');\n };\n\n const fetch = global.fetch;\n // if (!fetch) throw new Error('fetch - missing fetch implementation for nodejs environment');\n\n const fileSystem = createFileSystem();\n\n return {\n Canvas: Canvas || class {},\n CanvasRenderingContext2D: global.CanvasRenderingContext2D || class {},\n Image: Image || class {},\n ImageData: global.ImageData || class {},\n Video: global.HTMLVideoElement || class {},\n createCanvasElement,\n createImageElement,\n fetch,\n ...fileSystem,\n };\n}\n", "export function isBrowser(): boolean {\n return typeof window === 'object'\n && typeof document !== 'undefined'\n && typeof HTMLImageElement !== 'undefined'\n && typeof HTMLCanvasElement !== 'undefined'\n && typeof HTMLVideoElement !== 'undefined'\n && typeof ImageData !== 'undefined'\n && typeof CanvasRenderingContext2D !== 'undefined';\n}\n", "import { createBrowserEnv } from './createBrowserEnv';\nimport { createFileSystem } from './createFileSystem';\nimport { createNodejsEnv } from './createNodejsEnv';\nimport { isBrowser } from './isBrowser';\nimport { isNodejs } from './isNodejs';\nimport { Environment } from './types';\n\nlet environment: Environment | null;\n\nfunction getEnv(): Environment {\n if (!environment) {\n throw new Error('getEnv - environment is not defined, check isNodejs() and isBrowser()');\n }\n return environment;\n}\n\nfunction setEnv(env: Environment) {\n environment = env;\n}\n\nfunction initialize() {\n // check for isBrowser() first to prevent electron renderer process\n // to be initialized with wrong environment due to isNodejs() returning true\n if (isBrowser()) return setEnv(createBrowserEnv());\n if (isNodejs()) return setEnv(createNodejsEnv());\n return null;\n}\n\nfunction monkeyPatch(env: Partial) {\n if (!environment) {\n initialize();\n }\n\n if (!environment) {\n throw new Error('monkeyPatch - environment is not defined, check isNodejs() and isBrowser()');\n }\n\n const { Canvas = environment.Canvas, Image = environment.Image } = env;\n environment.Canvas = Canvas;\n environment.Image = Image;\n environment.createCanvasElement = env.createCanvasElement || (() => new Canvas());\n environment.createImageElement = env.createImageElement || (() => new Image());\n\n environment.ImageData = env.ImageData || environment.ImageData;\n environment.Video = env.Video || environment.Video;\n environment.fetch = env.fetch || environment.fetch;\n environment.readFile = env.readFile || environment.readFile;\n}\n\nexport const env = {\n getEnv,\n setEnv,\n initialize,\n createBrowserEnv,\n createFileSystem,\n createNodejsEnv,\n monkeyPatch,\n isBrowser,\n isNodejs,\n};\n\ninitialize();\n\nexport * from './types';\n", "import { env } from '../env/index';\n\nexport function resolveInput(arg: string | any) {\n if (!env.isNodejs() && typeof arg === 'string') {\n return document.getElementById(arg);\n }\n return arg;\n}\n", "import { env } from '../env/index';\nimport { resolveInput } from './resolveInput';\n\nexport function getContext2dOrThrow(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D): CanvasRenderingContext2D {\n const { Canvas, CanvasRenderingContext2D } = env.getEnv();\n\n if (canvasArg instanceof CanvasRenderingContext2D) {\n return canvasArg;\n }\n\n const canvas = resolveInput(canvasArg);\n\n if (!(canvas instanceof Canvas)) {\n throw new Error('resolveContext2d - expected canvas to be of instance of Canvas');\n }\n\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n throw new Error('resolveContext2d - canvas 2d context is null');\n }\n\n return ctx;\n}\n", "/* eslint-disable max-classes-per-file */\nimport { IDimensions, IPoint } from '../classes/index';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { resolveInput } from '../dom/resolveInput';\n\n// eslint-disable-next-line no-shadow\nexport enum AnchorPosition {\n // eslint-disable-next-line no-unused-vars\n TOP_LEFT = 'TOP_LEFT',\n // eslint-disable-next-line no-unused-vars\n TOP_RIGHT = 'TOP_RIGHT',\n // eslint-disable-next-line no-unused-vars\n BOTTOM_LEFT = 'BOTTOM_LEFT',\n // eslint-disable-next-line no-unused-vars\n BOTTOM_RIGHT = 'BOTTOM_RIGHT'\n}\n\nexport interface IDrawTextFieldOptions {\n anchorPosition?: AnchorPosition\n backgroundColor?: string\n fontColor?: string\n fontSize?: number\n fontStyle?: string\n padding?: number\n}\n\nexport class DrawTextFieldOptions implements IDrawTextFieldOptions {\n public anchorPosition: AnchorPosition\n\n public backgroundColor: string\n\n public fontColor: string\n\n public fontSize: number\n\n public fontStyle: string\n\n public padding: number\n\n constructor(options: IDrawTextFieldOptions = {}) {\n const {\n anchorPosition, backgroundColor, fontColor, fontSize, fontStyle, padding,\n } = options;\n this.anchorPosition = anchorPosition || AnchorPosition.TOP_LEFT;\n this.backgroundColor = backgroundColor || 'rgba(0, 0, 0, 0.5)';\n this.fontColor = fontColor || 'rgba(255, 255, 255, 1)';\n this.fontSize = fontSize || 14;\n this.fontStyle = fontStyle || 'Georgia';\n this.padding = padding || 4;\n }\n}\n\nexport class DrawTextField {\n public text: string[]\n\n public anchor : IPoint\n\n public options: DrawTextFieldOptions\n\n constructor(\n text: string | string[] | DrawTextField,\n anchor: IPoint,\n options: IDrawTextFieldOptions = {},\n ) {\n // eslint-disable-next-line no-nested-ternary\n this.text = typeof text === 'string'\n ? [text]\n : (text instanceof DrawTextField ? text.text : text);\n this.anchor = anchor;\n this.options = new DrawTextFieldOptions(options);\n }\n\n measureWidth(ctx: CanvasRenderingContext2D): number {\n const { padding } = this.options;\n return this.text.map((l) => ctx.measureText(l).width).reduce((w0, w1) => (w0 < w1 ? w1 : w0), 0) + (2 * padding);\n }\n\n measureHeight(): number {\n const { fontSize, padding } = this.options;\n return this.text.length * fontSize + (2 * padding);\n }\n\n getUpperLeft(ctx: CanvasRenderingContext2D, canvasDims?: IDimensions): IPoint {\n const { anchorPosition } = this.options;\n const isShiftLeft = anchorPosition === AnchorPosition.BOTTOM_RIGHT || anchorPosition === AnchorPosition.TOP_RIGHT;\n const isShiftTop = anchorPosition === AnchorPosition.BOTTOM_LEFT || anchorPosition === AnchorPosition.BOTTOM_RIGHT;\n\n const textFieldWidth = this.measureWidth(ctx);\n const textFieldHeight = this.measureHeight();\n const x = (isShiftLeft ? this.anchor.x - textFieldWidth : this.anchor.x);\n const y = isShiftTop ? this.anchor.y - textFieldHeight : this.anchor.y;\n\n // adjust anchor if text box exceeds canvas borders\n if (canvasDims) {\n const { width, height } = canvasDims;\n const newX = Math.max(Math.min(x, width - textFieldWidth), 0);\n const newY = Math.max(Math.min(y, height - textFieldHeight), 0);\n return { x: newX, y: newY };\n }\n return { x, y };\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const canvas = resolveInput(canvasArg);\n const ctx = getContext2dOrThrow(canvas);\n\n const {\n backgroundColor, fontColor, fontSize, fontStyle, padding,\n } = this.options;\n\n ctx.font = `${fontSize}px ${fontStyle}`;\n const maxTextWidth = this.measureWidth(ctx);\n const textHeight = this.measureHeight();\n\n ctx.fillStyle = backgroundColor;\n const upperLeft = this.getUpperLeft(ctx, canvas);\n ctx.fillRect(upperLeft.x, upperLeft.y, maxTextWidth, textHeight);\n\n ctx.fillStyle = fontColor;\n this.text.forEach((textLine, i) => {\n const x = padding + upperLeft.x;\n const y = padding + upperLeft.y + ((i + 1) * fontSize);\n ctx.fillText(textLine, x, y);\n });\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport { Box, IBoundingBox, IRect } from '../classes/index';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport {\n AnchorPosition, DrawTextField, DrawTextFieldOptions, IDrawTextFieldOptions,\n} from './DrawTextField';\n\nexport interface IDrawBoxOptions {\n boxColor?: string\n lineWidth?: number\n drawLabelOptions?: IDrawTextFieldOptions\n label?: string\n}\n\nexport class DrawBoxOptions {\n public boxColor: string\n\n public lineWidth: number\n\n public drawLabelOptions: DrawTextFieldOptions\n\n public label?: string\n\n constructor(options: IDrawBoxOptions = {}) {\n const {\n boxColor, lineWidth, label, drawLabelOptions,\n } = options;\n this.boxColor = boxColor || 'rgba(0, 0, 255, 1)';\n this.lineWidth = lineWidth || 2;\n this.label = label;\n\n const defaultDrawLabelOptions = {\n anchorPosition: AnchorPosition.BOTTOM_LEFT,\n backgroundColor: this.boxColor,\n };\n this.drawLabelOptions = new DrawTextFieldOptions({ ...defaultDrawLabelOptions, ...drawLabelOptions });\n }\n}\n\nexport class DrawBox {\n public box: Box\n\n public options: DrawBoxOptions\n\n constructor(\n box: IBoundingBox | IRect,\n options: IDrawBoxOptions = {},\n ) {\n this.box = new Box(box);\n this.options = new DrawBoxOptions(options);\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const ctx = getContext2dOrThrow(canvasArg);\n\n const { boxColor, lineWidth } = this.options;\n\n const {\n x, y, width, height,\n } = this.box;\n ctx.strokeStyle = boxColor;\n ctx.lineWidth = lineWidth;\n ctx.strokeRect(x, y, width, height);\n\n const { label } = this.options;\n if (label) {\n new DrawTextField([label], { x: x - (lineWidth / 2), y }, this.options.drawLabelOptions).draw(canvasArg);\n }\n }\n}\n", "import { Box, IBoundingBox, IRect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { isWithFaceDetection, WithFaceDetection } from '../factories/WithFaceDetection';\nimport { round } from '../utils/index';\nimport { DrawBox } from './DrawBox';\n\nexport type TDrawDetectionsInput = IRect | IBoundingBox | FaceDetection | WithFaceDetection<{}>\n\nexport function drawDetections(\n canvasArg: string | HTMLCanvasElement,\n detections: TDrawDetectionsInput | Array,\n) {\n const detectionsArray = Array.isArray(detections) ? detections : [detections];\n\n detectionsArray.forEach((det) => {\n // eslint-disable-next-line no-nested-ternary\n const score = det instanceof FaceDetection\n ? det.score\n : (isWithFaceDetection(det) ? det.detection.score : undefined);\n\n // eslint-disable-next-line no-nested-ternary\n const box = det instanceof FaceDetection\n ? det.box\n : (isWithFaceDetection(det) ? det.detection.box : new Box(det));\n\n const label = score ? `${round(score)}` : undefined;\n new DrawBox(box, { label }).draw(canvasArg);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';\nimport { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { FaceExpressions } from './FaceExpressions';\n\nexport class FaceExpressionNet extends FaceProcessor {\n constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) {\n super('FaceExpressionNet', faceFeatureExtractor);\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n return tf.tidy(() => tf.softmax(this.runNet(input)));\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async predictExpressions(input: TNetInput) {\n const netInput = await toNetInput(input);\n const out = await this.forwardInput(netInput);\n const probabilitesByBatch = await Promise.all(tf.unstack(out).map(async (t) => {\n const data = await t.data();\n t.dispose();\n return data;\n }));\n out.dispose();\n\n const predictionsByBatch = probabilitesByBatch\n .map((probabilites) => new FaceExpressions(probabilites as Float32Array));\n\n return netInput.isBatchInput\n ? predictionsByBatch\n : predictionsByBatch[0];\n }\n\n protected getDefaultModelName(): string {\n return 'face_expression_model';\n }\n\n protected getClassifierChannelsIn(): number {\n return 256;\n }\n\n protected getClassifierChannelsOut(): number {\n return 7;\n }\n}\n", "import { env } from '../env/index';\n\nexport function isMediaLoaded(media: HTMLImageElement | HTMLVideoElement) : boolean {\n const { Image, Video } = env.getEnv();\n\n return (media instanceof Image && media.complete)\n || (media instanceof Video && media.readyState >= 3);\n}\n", "import { env } from '../env/index';\nimport { isMediaLoaded } from './isMediaLoaded';\n\nexport function awaitMediaLoaded(media: HTMLImageElement | HTMLVideoElement | HTMLCanvasElement) {\n // eslint-disable-next-line consistent-return\n return new Promise((resolve, reject) => {\n if (media instanceof env.getEnv().Canvas || isMediaLoaded(media)) {\n return resolve(null);\n }\n\n function onError(e: Event) {\n if (!e.currentTarget) return;\n // eslint-disable-next-line no-use-before-define\n e.currentTarget.removeEventListener('load', onLoad);\n e.currentTarget.removeEventListener('error', onError);\n reject(e);\n }\n\n function onLoad(e: Event) {\n if (!e.currentTarget) return;\n e.currentTarget.removeEventListener('load', onLoad);\n e.currentTarget.removeEventListener('error', onError);\n resolve(e);\n }\n\n media.addEventListener('load', onLoad);\n media.addEventListener('error', onError);\n });\n}\n", "import { env } from '../env/index';\n\nexport function bufferToImage(buf: Blob): Promise {\n return new Promise((resolve, reject) => {\n if (!(buf instanceof Blob)) reject(new Error('bufferToImage - expected buf to be of type: Blob'));\n const reader = new FileReader();\n reader.onload = () => {\n if (typeof reader.result !== 'string') reject(new Error('bufferToImage - expected reader.result to be a string, in onload'));\n const img = env.getEnv().createImageElement();\n img.onload = () => resolve(img);\n img.onerror = reject;\n img.src = reader.result as string;\n };\n reader.onerror = reject;\n reader.readAsDataURL(buf);\n });\n}\n", "import { Dimensions, IDimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\n\nexport function getMediaDimensions(input: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | IDimensions): Dimensions {\n const { Image, Video } = env.getEnv();\n\n if (input instanceof Image) {\n return new Dimensions(input.naturalWidth, input.naturalHeight);\n }\n if (input instanceof Video) {\n return new Dimensions(input.videoWidth, input.videoHeight);\n }\n return new Dimensions(input.width, input.height);\n}\n", "import { IDimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { getMediaDimensions } from './getMediaDimensions';\nimport { isMediaLoaded } from './isMediaLoaded';\n\nexport function createCanvas({ width, height }: IDimensions): HTMLCanvasElement {\n const { createCanvasElement } = env.getEnv();\n const canvas = createCanvasElement();\n canvas.width = width;\n canvas.height = height;\n return canvas;\n}\n\nexport function createCanvasFromMedia(media: HTMLImageElement | HTMLVideoElement | ImageData, dims?: IDimensions): HTMLCanvasElement {\n const { ImageData } = env.getEnv();\n\n if (!(media instanceof ImageData) && !isMediaLoaded(media)) {\n throw new Error('createCanvasFromMedia - media has not finished loading yet');\n }\n\n const { width, height } = dims || getMediaDimensions(media);\n const canvas = createCanvas({ width, height });\n\n if (media instanceof ImageData) {\n getContext2dOrThrow(canvas).putImageData(media, 0, 0);\n } else {\n getContext2dOrThrow(canvas).drawImage(media, 0, 0, width, height);\n }\n return canvas;\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { env } from '../env/index';\nimport { isTensor4D } from '../utils/index';\n\nexport async function imageTensorToCanvas(\n imgTensor: tf.Tensor,\n canvas?: HTMLCanvasElement,\n): Promise {\n const targetCanvas = canvas || env.getEnv().createCanvasElement();\n\n const [height, width, numChannels] = imgTensor.shape.slice(isTensor4D(imgTensor) ? 1 : 0);\n const imgTensor3D = tf.tidy(() => imgTensor.as3D(height, width, numChannels).toInt());\n await tf.browser.toPixels(imgTensor3D, targetCanvas);\n\n imgTensor3D.dispose();\n\n return targetCanvas;\n}\n", "import { env } from '../env/index';\n\nexport function isMediaElement(input: any) {\n const { Image, Canvas, Video } = env.getEnv();\n\n return input instanceof Image\n || input instanceof Canvas\n || input instanceof Video;\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { Dimensions } from '../classes/Dimensions';\nimport { env } from '../env/index';\nimport { padToSquare } from '../ops/padToSquare';\nimport {\n computeReshapedDimensions, isTensor3D, isTensor4D, range,\n} from '../utils/index';\nimport { createCanvasFromMedia } from './createCanvas';\nimport { imageToSquare } from './imageToSquare';\nimport { TResolvedNetInput } from './types';\n\nexport class NetInput {\n private _imageTensors: Array = []\n\n private _canvases: HTMLCanvasElement[] = []\n\n private _batchSize: number\n\n private _treatAsBatchInput: boolean = false\n\n private _inputDimensions: number[][] = []\n\n private _inputSize: number\n\n constructor(\n inputs: Array,\n treatAsBatchInput: boolean = false,\n ) {\n if (!Array.isArray(inputs)) {\n throw new Error(`NetInput.constructor - expected inputs to be an Array of TResolvedNetInput or to be instanceof tf.Tensor4D, instead have ${inputs}`);\n }\n\n this._treatAsBatchInput = treatAsBatchInput;\n this._batchSize = inputs.length;\n\n inputs.forEach((input, idx) => {\n if (isTensor3D(input)) {\n this._imageTensors[idx] = input;\n this._inputDimensions[idx] = input.shape;\n return;\n }\n\n if (isTensor4D(input)) {\n const batchSize = (input as any).shape[0];\n if (batchSize !== 1) {\n throw new Error(`NetInput - tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);\n }\n\n this._imageTensors[idx] = input;\n this._inputDimensions[idx] = (input as any).shape.slice(1);\n return;\n }\n\n const canvas = (input as any) instanceof env.getEnv().Canvas ? input : createCanvasFromMedia(input);\n this._canvases[idx] = canvas;\n this._inputDimensions[idx] = [canvas.height, canvas.width, 3];\n });\n }\n\n public get imageTensors(): Array {\n return this._imageTensors;\n }\n\n public get canvases(): HTMLCanvasElement[] {\n return this._canvases;\n }\n\n public get isBatchInput(): boolean {\n return this.batchSize > 1 || this._treatAsBatchInput;\n }\n\n public get batchSize(): number {\n return this._batchSize;\n }\n\n public get inputDimensions(): number[][] {\n return this._inputDimensions;\n }\n\n public get inputSize(): number | undefined {\n return this._inputSize;\n }\n\n public get reshapedInputDimensions(): Dimensions[] {\n return range(this.batchSize, 0, 1).map(\n (_, batchIdx) => this.getReshapedInputDimensions(batchIdx),\n );\n }\n\n public getInput(batchIdx: number): tf.Tensor3D | tf.Tensor4D | HTMLCanvasElement {\n return this.canvases[batchIdx] || this.imageTensors[batchIdx];\n }\n\n public getInputDimensions(batchIdx: number): number[] {\n return this._inputDimensions[batchIdx];\n }\n\n public getInputHeight(batchIdx: number): number {\n return this._inputDimensions[batchIdx][0];\n }\n\n public getInputWidth(batchIdx: number): number {\n return this._inputDimensions[batchIdx][1];\n }\n\n public getReshapedInputDimensions(batchIdx: number): Dimensions {\n if (typeof this.inputSize !== 'number') {\n throw new Error('getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet');\n }\n\n const width = this.getInputWidth(batchIdx);\n const height = this.getInputHeight(batchIdx);\n return computeReshapedDimensions({ width, height }, this.inputSize);\n }\n\n /**\n * Create a batch tensor from all input canvases and tensors\n * with size [batchSize, inputSize, inputSize, 3].\n *\n * @param inputSize Height and width of the tensor.\n * @param isCenterImage (optional, default: false) If true, add an equal amount of padding on\n * both sides of the minor dimension oof the image.\n * @returns The batch tensor.\n */\n public toBatchTensor(inputSize: number, isCenterInputs: boolean = true): tf.Tensor4D {\n this._inputSize = inputSize;\n\n return tf.tidy(() => {\n const inputTensors = range(this.batchSize, 0, 1).map((batchIdx) => {\n const input = this.getInput(batchIdx);\n\n if (input instanceof tf.Tensor) {\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n let imgTensor = isTensor4D(input) ? input : input.expandDims();\n // @ts-ignore: error TS2344: Type 'Rank.R4' does not satisfy the constraint 'Tensor'.\n imgTensor = padToSquare(imgTensor, isCenterInputs);\n\n if (imgTensor.shape[1] !== inputSize || imgTensor.shape[2] !== inputSize) {\n imgTensor = tf.image.resizeBilinear(imgTensor, [inputSize, inputSize]);\n }\n\n return imgTensor.as3D(inputSize, inputSize, 3);\n }\n\n if (input instanceof env.getEnv().Canvas) {\n return tf.browser.fromPixels(imageToSquare(input, inputSize, isCenterInputs));\n }\n\n throw new Error(`toBatchTensor - at batchIdx ${batchIdx}, expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have ${input}`);\n });\n\n // const batchTensor = tf.stack(inputTensors.map(t => t.toFloat())).as4D(this.batchSize, inputSize, inputSize, 3)\n const batchTensor = tf.stack(inputTensors.map((t) => tf.cast(t, 'float32'))).as4D(this.batchSize, inputSize, inputSize, 3);\n // const batchTensor = tf.stack(inputTensors.map(t => tf.Tensor.as4D(tf.cast(t, 'float32'))), this.batchSize, inputSize, inputSize, 3);\n\n return batchTensor;\n });\n }\n}\n", "import { env } from '../env/index';\nimport { createCanvas, createCanvasFromMedia } from './createCanvas';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { getMediaDimensions } from './getMediaDimensions';\n\nexport function imageToSquare(input: HTMLImageElement | HTMLCanvasElement, inputSize: number, centerImage: boolean = false) {\n const { Image, Canvas } = env.getEnv();\n\n if (!(input instanceof Image || input instanceof Canvas)) {\n throw new Error('imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement');\n }\n\n const dims = getMediaDimensions(input);\n const scale = inputSize / Math.max(dims.height, dims.width);\n const width = scale * dims.width;\n const height = scale * dims.height;\n\n const targetCanvas = createCanvas({ width: inputSize, height: inputSize });\n const inputCanvas = input instanceof Canvas ? input : createCanvasFromMedia(input);\n\n const offset = Math.abs(width - height) / 2;\n const dx = centerImage && width < height ? offset : 0;\n const dy = centerImage && height < width ? offset : 0;\n getContext2dOrThrow(targetCanvas).drawImage(inputCanvas, dx, dy, width, height);\n\n return targetCanvas;\n}\n", "import { isTensor3D, isTensor4D } from '../utils/index';\nimport { awaitMediaLoaded } from './awaitMediaLoaded';\nimport { isMediaElement } from './isMediaElement';\nimport { NetInput } from './NetInput';\nimport { resolveInput } from './resolveInput';\nimport { TNetInput } from './types';\n\n/**\n * Validates the input to make sure, they are valid net inputs and awaits all media elements\n * to be finished loading.\n *\n * @param input The input, which can be a media element or an array of different media elements.\n * @returns A NetInput instance, which can be passed into one of the neural networks.\n */\nexport async function toNetInput(inputs: TNetInput): Promise {\n if (inputs instanceof NetInput) {\n return inputs;\n }\n\n const inputArgArray = Array.isArray(inputs)\n ? inputs\n : [inputs];\n\n if (!inputArgArray.length) {\n throw new Error('toNetInput - empty array passed as input');\n }\n\n const getIdxHint = (idx: number) => (Array.isArray(inputs) ? ` at input index ${idx}:` : '');\n\n const inputArray = inputArgArray.map(resolveInput);\n\n inputArray.forEach((input, i) => {\n if (!isMediaElement(input) && !isTensor3D(input) && !isTensor4D(input)) {\n if (typeof inputArgArray[i] === 'string') {\n throw new Error(`toNetInput -${getIdxHint(i)} string passed, but could not resolve HTMLElement for element id ${inputArgArray[i]}`);\n }\n\n throw new Error(`toNetInput -${getIdxHint(i)} expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id`);\n }\n\n if (isTensor4D(input)) {\n // if tf.Tensor4D is passed in the input array, the batch size has to be 1\n const batchSize = input.shape[0];\n if (batchSize !== 1) {\n throw new Error(`toNetInput -${getIdxHint(i)} tf.Tensor4D with batchSize ${batchSize} passed, but not supported in input array`);\n }\n }\n });\n\n // wait for all media elements being loaded\n await Promise.all(\n inputArray.map((input) => isMediaElement(input) && awaitMediaLoaded(input)),\n );\n\n return new NetInput(inputArray, Array.isArray(inputs));\n}\n", "import { FaceDetection } from '../classes/FaceDetection';\nimport { Rect } from '../classes/Rect';\nimport { env } from '../env/index';\nimport { createCanvas } from './createCanvas';\nimport { getContext2dOrThrow } from './getContext2dOrThrow';\nimport { imageTensorToCanvas } from './imageTensorToCanvas';\nimport { toNetInput } from './toNetInput';\nimport { TNetInput } from './types';\n\n/**\n * Extracts the image regions containing the detected faces.\n *\n * @param input The image that face detection has been performed on.\n * @param detections The face detection results or face bounding boxes for that image.\n * @returns The Canvases of the corresponding image region for each detected face.\n */\nexport async function extractFaces(\n input: TNetInput,\n detections: Array,\n): Promise {\n const { Canvas } = env.getEnv();\n\n let canvas = input as HTMLCanvasElement;\n\n if (!(input instanceof Canvas)) {\n const netInput = await toNetInput(input);\n\n if (netInput.batchSize > 1) {\n throw new Error('extractFaces - batchSize > 1 not supported');\n }\n\n const tensorOrCanvas = netInput.getInput(0);\n canvas = tensorOrCanvas instanceof Canvas\n ? tensorOrCanvas\n : await imageTensorToCanvas(tensorOrCanvas);\n }\n\n const ctx = getContext2dOrThrow(canvas);\n const boxes = detections.map(\n (det) => (det instanceof FaceDetection\n ? det.forSize(canvas.width, canvas.height).box.floor()\n : det),\n )\n .map((box) => box.clipAtImageBorders(canvas.width, canvas.height));\n\n return boxes.map(({\n x, y, width, height,\n }) => {\n const faceImg = createCanvas({ width, height });\n getContext2dOrThrow(faceImg)\n .putImageData(ctx.getImageData(x, y, width, height), 0, 0);\n return faceImg;\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { isTensor3D, isTensor4D } from '../utils/index';\n\n/**\n * Extracts the tensors of the image regions containing the detected faces.\n * Useful if you want to compute the face descriptors for the face images.\n * Using this method is faster then extracting a canvas for each face and\n * converting them to tensors individually.\n *\n * @param imageTensor The image tensor that face detection has been performed on.\n * @param detections The face detection results or face bounding boxes for that image.\n * @returns Tensors of the corresponding image region for each detected face.\n */\nexport async function extractFaceTensors(\n imageTensor: tf.Tensor3D | tf.Tensor4D,\n detections: Array,\n): Promise {\n if (!isTensor3D(imageTensor) && !isTensor4D(imageTensor)) {\n throw new Error('extractFaceTensors - expected image tensor to be 3D or 4D');\n }\n\n if (isTensor4D(imageTensor) && imageTensor.shape[0] > 1) {\n throw new Error('extractFaceTensors - batchSize > 1 not supported');\n }\n\n return tf.tidy(() => {\n const [imgHeight, imgWidth, numChannels] = imageTensor.shape.slice(isTensor4D(imageTensor) ? 1 : 0);\n\n const boxes = detections.map(\n (det) => (det instanceof FaceDetection\n ? det.forSize(imgWidth, imgHeight).box\n : det),\n )\n .map((box) => box.clipAtImageBorders(imgWidth, imgHeight));\n\n const faceTensors = boxes.map(({\n x, y, width, height,\n }) => tf.slice3d(imageTensor.as3D(imgHeight, imgWidth, numChannels), [y, x, 0], [height, width, numChannels]));\n\n return faceTensors;\n });\n}\n", "import { env } from '../env/index';\n\nexport async function fetchOrThrow(\n url: string,\n // eslint-disable-next-line no-undef\n init?: RequestInit,\n): Promise {\n const { fetch } = env.getEnv();\n const res = await fetch(url, init);\n if (!(res.status < 400)) {\n throw new Error(`failed to fetch: (${res.status}) ${res.statusText}, from url: ${res.url}`);\n }\n return res;\n}\n", "import { bufferToImage } from './bufferToImage';\nimport { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchImage(uri: string): Promise {\n const res = await fetchOrThrow(uri);\n const blob = await (res).blob();\n\n if (!blob.type.startsWith('image/')) {\n throw new Error(`fetchImage - expected blob type to be of type image/*, instead have: ${blob.type}, for url: ${res.url}`);\n }\n return bufferToImage(blob);\n}\n", "import { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchJson(uri: string): Promise {\n return (await fetchOrThrow(uri)).json();\n}\n", "import { fetchOrThrow } from './fetchOrThrow';\n\nexport async function fetchNetWeights(uri: string): Promise {\n return new Float32Array(await (await fetchOrThrow(uri)).arrayBuffer());\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { getModelUris } from '../common/getModelUris';\nimport { fetchJson } from './fetchJson';\n\nexport async function loadWeightMap(\n uri: string | undefined,\n defaultModelName: string,\n): Promise {\n const { manifestUri, modelBaseUri } = getModelUris(uri, defaultModelName);\n const manifest = await fetchJson(manifestUri);\n // if (manifest['weightsManifest']) manifest = manifest['weightsManifest'];\n return tf.io.loadWeights(manifest, modelBaseUri);\n}\n", "export function getModelUris(uri: string | undefined, defaultModelName: string) {\n const defaultManifestFilename = `${defaultModelName}-weights_manifest.json`;\n\n if (!uri) {\n return {\n modelBaseUri: '',\n manifestUri: defaultManifestFilename,\n };\n }\n\n if (uri === '/') {\n return {\n modelBaseUri: '/',\n manifestUri: `/${defaultManifestFilename}`,\n };\n }\n // eslint-disable-next-line no-nested-ternary\n const protocol = uri.startsWith('http://') ? 'http://' : uri.startsWith('https://') ? 'https://' : '';\n uri = uri.replace(protocol, '');\n\n const parts = uri.split('/').filter((s) => s);\n\n const manifestFile = uri.endsWith('.json')\n ? parts[parts.length - 1]\n : defaultManifestFilename;\n\n let modelBaseUri = protocol + (uri.endsWith('.json') ? parts.slice(0, parts.length - 1) : parts).join('/');\n modelBaseUri = uri.startsWith('/') ? `/${modelBaseUri}` : modelBaseUri;\n\n return {\n modelBaseUri,\n manifestUri: modelBaseUri === '/' ? `/${manifestFile}` : `${modelBaseUri}/${manifestFile}`,\n };\n}\n", "import { IDimensions } from '../classes/index';\nimport { getMediaDimensions } from './getMediaDimensions';\n\nexport function matchDimensions(input: IDimensions, reference: IDimensions, useMediaDimensions: boolean = false) {\n const { width, height } = useMediaDimensions\n ? getMediaDimensions(reference)\n : reference;\n input.width = width;\n input.height = height;\n return { width, height };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock4 } from './denseBlock';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { FaceFeatureExtractorParams, IFaceFeatureExtractor } from './types';\n\nexport class FaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n constructor() {\n super('FaceFeatureExtractor');\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('FaceFeatureExtractor - load model before inference');\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D;\n\n let out = denseBlock4(normalized, params.dense0, true);\n out = denseBlock4(out, params.dense1);\n out = denseBlock4(out, params.dense2);\n out = denseBlock4(out, params.dense3);\n out = tf.avgPool(out, [7, 7], [2, 2], 'valid');\n\n return out;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights);\n }\n}\n", "import * as tf from '../dist/tfjs.esm';\n\nimport { ParamMapping } from './common/index';\nimport { getModelUris } from './common/getModelUris';\nimport { loadWeightMap } from './dom/index';\nimport { env } from './env/index';\n\nexport abstract class NeuralNetwork {\n protected _params: TNetParams | undefined = undefined\n\n protected _paramMappings: ParamMapping[] = []\n\n public _name: any;\n\n public get params(): TNetParams | undefined { return this._params; }\n\n public get paramMappings(): ParamMapping[] { return this._paramMappings; }\n\n public get isLoaded(): boolean { return !!this.params; }\n\n public getParamFromPath(paramPath: string): tf.Tensor {\n const { obj, objProp } = this.traversePropertyPath(paramPath);\n return obj[objProp];\n }\n\n public reassignParamFromPath(paramPath: string, tensor: tf.Tensor) {\n const { obj, objProp } = this.traversePropertyPath(paramPath);\n obj[objProp].dispose();\n obj[objProp] = tensor;\n }\n\n public getParamList() {\n return this._paramMappings.map(({ paramPath }) => ({\n path: paramPath,\n tensor: this.getParamFromPath(paramPath),\n }));\n }\n\n public getTrainableParams() {\n return this.getParamList().filter((param) => param.tensor instanceof tf.Variable);\n }\n\n public getFrozenParams() {\n return this.getParamList().filter((param) => !(param.tensor instanceof tf.Variable));\n }\n\n public variable() {\n this.getFrozenParams().forEach(({ path, tensor }) => {\n this.reassignParamFromPath(path, tensor.variable());\n });\n }\n\n public freeze() {\n this.getTrainableParams().forEach(({ path, tensor: variable }) => {\n const tensor = tf.tensor(variable.dataSync());\n variable.dispose();\n this.reassignParamFromPath(path, tensor);\n });\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.getParamList().forEach((param) => {\n if (throwOnRedispose && param.tensor.isDisposed) {\n throw new Error(`param tensor has already been disposed for path ${param.path}`);\n }\n param.tensor.dispose();\n });\n this._params = undefined;\n }\n\n public serializeParams(): Float32Array {\n return new Float32Array(\n this.getParamList()\n .map(({ tensor }) => Array.from(tensor.dataSync()) as number[])\n .reduce((flat, arr) => flat.concat(arr)),\n );\n }\n\n public async load(weightsOrUrl: Float32Array | string | undefined): Promise {\n if (weightsOrUrl instanceof Float32Array) {\n this.extractWeights(weightsOrUrl);\n return;\n }\n\n await this.loadFromUri(weightsOrUrl);\n }\n\n public async loadFromUri(uri: string | undefined) {\n if (uri && typeof uri !== 'string') {\n throw new Error(`${this._name}.loadFromUri - expected model uri`);\n }\n\n const weightMap = await loadWeightMap(uri, this.getDefaultModelName());\n this.loadFromWeightMap(weightMap);\n }\n\n public async loadFromDisk(filePath: string | undefined) {\n if (filePath && typeof filePath !== 'string') {\n throw new Error(`${this._name}.loadFromDisk - expected model file path`);\n }\n\n const { readFile } = env.getEnv();\n\n const { manifestUri, modelBaseUri } = getModelUris(filePath, this.getDefaultModelName());\n\n const fetchWeightsFromDisk = (filePaths: string[]) => Promise.all(\n filePaths.map((fp) => readFile(fp).then((buf) => buf.buffer)),\n );\n const loadWeights = tf.io.weightsLoaderFactory(fetchWeightsFromDisk);\n const manifest = JSON.parse((await readFile(manifestUri)).toString());\n const weightMap = await loadWeights(manifest, modelBaseUri);\n\n this.loadFromWeightMap(weightMap);\n }\n\n public loadFromWeightMap(weightMap: tf.NamedTensorMap) {\n const {\n paramMappings,\n params,\n } = this.extractParamsFromWeigthMap(weightMap);\n\n this._paramMappings = paramMappings;\n this._params = params;\n }\n\n public extractWeights(weights: Float32Array) {\n const {\n paramMappings,\n params,\n } = this.extractParams(weights);\n\n this._paramMappings = paramMappings;\n this._params = params;\n }\n\n private traversePropertyPath(paramPath: string) {\n if (!this.params) {\n throw new Error('traversePropertyPath - model has no loaded params');\n }\n\n const result = paramPath.split('/').reduce((res: { nextObj: any, obj?: any, objProp?: string }, objProp) => {\n // eslint-disable-next-line no-prototype-builtins\n if (!res.nextObj.hasOwnProperty(objProp)) {\n throw new Error(`traversePropertyPath - object does not have property ${objProp}, for path ${paramPath}`);\n }\n\n return { obj: res.nextObj, objProp, nextObj: res.nextObj[objProp] };\n }, { nextObj: this.params });\n\n const { obj, objProp } = result;\n if (!obj || !objProp || !(obj[objProp] instanceof tf.Tensor)) {\n throw new Error(`traversePropertyPath - parameter is not a tensor, for path ${paramPath}`);\n }\n\n return { obj, objProp };\n }\n\n protected abstract getDefaultModelName(): string\n\n // eslint-disable-next-line no-unused-vars\n protected abstract extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TNetParams, paramMappings: ParamMapping[] }\n\n // eslint-disable-next-line no-unused-vars\n protected abstract extractParams(weights: Float32Array): { params: TNetParams, paramMappings: ParamMapping[] }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ConvParams, SeparableConvParams } from '../common/index';\nimport { depthwiseSeparableConv } from '../common/depthwiseSeparableConv';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function denseBlock3(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock3Params,\n isFirstLayer: boolean = false,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, [2, 2], 'same'),\n denseBlockParams.conv0.bias,\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, [2, 2]),\n ) as tf.Tensor4D;\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1]);\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D;\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1]);\n\n return tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D;\n });\n}\n\nexport function denseBlock4(\n x: tf.Tensor4D,\n denseBlockParams: DenseBlock4Params,\n isFirstLayer: boolean = false,\n isScaleDown: boolean = true,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out1 = tf.relu(\n isFirstLayer\n ? tf.add(\n tf.conv2d(x, (denseBlockParams.conv0 as ConvParams).filters, isScaleDown ? [2, 2] : [1, 1], 'same'),\n denseBlockParams.conv0.bias,\n )\n : depthwiseSeparableConv(x, denseBlockParams.conv0 as SeparableConvParams, isScaleDown ? [2, 2] : [1, 1]),\n ) as tf.Tensor4D;\n const out2 = depthwiseSeparableConv(out1, denseBlockParams.conv1, [1, 1]);\n\n const in3 = tf.relu(tf.add(out1, out2)) as tf.Tensor4D;\n const out3 = depthwiseSeparableConv(in3, denseBlockParams.conv2, [1, 1]);\n\n const in4 = tf.relu(tf.add(out1, tf.add(out2, out3))) as tf.Tensor4D;\n const out4 = depthwiseSeparableConv(in4, denseBlockParams.conv3, [1, 1]);\n\n return tf.relu(tf.add(out1, tf.add(out2, tf.add(out3, out4)))) as tf.Tensor4D;\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { SeparableConvParams } from './types';\n\nexport function depthwiseSeparableConv(\n x: tf.Tensor4D,\n params: SeparableConvParams,\n stride: [number, number],\n): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.separableConv2d(x, params.depthwise_filter, params.pointwise_filter, stride, 'same');\n out = tf.add(out, params.bias);\n return out;\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ConvParams } from './types';\n\nexport function convLayer(\n x: tf.Tensor4D,\n params: ConvParams,\n padding: 'valid' | 'same' = 'same',\n withRelu: boolean = false,\n): tf.Tensor4D {\n return tf.tidy(() => {\n const out = tf.add(\n tf.conv2d(x, params.filters, [1, 1], padding),\n params.bias,\n ) as tf.Tensor4D;\n\n return withRelu ? tf.relu(out) : out;\n });\n}\n", "import { ParamMapping } from './types';\n\nexport function disposeUnusedWeightTensors(weightMap: any, paramMappings: ParamMapping[]) {\n Object.keys(weightMap).forEach((path) => {\n if (!paramMappings.some((pm) => pm.originalPath === path)) {\n weightMap[path].dispose();\n }\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ConvParams, ExtractWeightsFunction, ParamMapping } from './types';\n\nexport function extractConvParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[],\n) {\n return (\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n ): ConvParams => {\n const filters = tf.tensor4d(\n extractWeights(channelsIn * channelsOut * filterSize * filterSize),\n [filterSize, filterSize, channelsIn, channelsOut],\n );\n const bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return { filters, bias };\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ExtractWeightsFunction, FCParams, ParamMapping } from './types';\n\nexport function extractFCParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[],\n) {\n return (\n channelsIn: number,\n channelsOut: number,\n mappedPrefix: string,\n ): FCParams => {\n const fc_weights = tf.tensor2d(extractWeights(channelsIn * channelsOut), [channelsIn, channelsOut]);\n const fc_bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/weights` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return {\n weights: fc_weights,\n bias: fc_bias,\n };\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ExtractWeightsFunction, ParamMapping, SeparableConvParams } from './types';\n\nexport function extractSeparableConvParamsFactory(\n extractWeights: ExtractWeightsFunction,\n paramMappings: ParamMapping[],\n) {\n return (channelsIn: number, channelsOut: number, mappedPrefix: string): SeparableConvParams => {\n const depthwise_filter = tf.tensor4d(extractWeights(3 * 3 * channelsIn), [3, 3, channelsIn, 1]);\n const pointwise_filter = tf.tensor4d(extractWeights(channelsIn * channelsOut), [1, 1, channelsIn, channelsOut]);\n const bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/depthwise_filter` },\n { paramPath: `${mappedPrefix}/pointwise_filter` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias,\n );\n };\n}\n\nexport function loadSeparableConvParamsFactory(\n // eslint-disable-next-line no-unused-vars\n extractWeightEntry: (originalPath: string, paramRank: number) => T,\n) {\n return (prefix: string): SeparableConvParams => {\n const depthwise_filter = extractWeightEntry(`${prefix}/depthwise_filter`, 4);\n const pointwise_filter = extractWeightEntry(`${prefix}/pointwise_filter`, 4);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n\n return new SeparableConvParams(\n depthwise_filter,\n pointwise_filter,\n bias,\n );\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\n// eslint-disable-next-line no-unused-vars\nexport type ExtractWeightsFunction = (numWeights: number) => Float32Array\n\nexport type ParamMapping = {\n originalPath?: string\n paramPath: string\n}\n\nexport type ConvParams = {\n filters: tf.Tensor4D\n bias: tf.Tensor1D\n}\n\nexport type FCParams = {\n weights: tf.Tensor2D\n bias: tf.Tensor1D\n}\n\nexport class SeparableConvParams {\n // eslint-disable-next-line no-useless-constructor\n constructor(\n // eslint-disable-next-line no-unused-vars\n public depthwise_filter: tf.Tensor4D,\n // eslint-disable-next-line no-unused-vars\n public pointwise_filter: tf.Tensor4D,\n // eslint-disable-next-line no-unused-vars\n public bias: tf.Tensor1D,\n // eslint-disable-next-line no-empty-function\n ) {}\n}\n", "import { isTensor } from '../utils/index';\nimport { ParamMapping } from './types';\n\nexport function extractWeightEntryFactory(weightMap: any, paramMappings: ParamMapping[]) {\n return (originalPath: string, paramRank: number, mappedPath?: string) => {\n const tensor = weightMap[originalPath];\n\n if (!isTensor(tensor, paramRank)) {\n throw new Error(`expected weightMap[${originalPath}] to be a Tensor${paramRank}D, instead have ${tensor}`);\n }\n\n paramMappings.push(\n { originalPath, paramPath: mappedPath || originalPath },\n );\n\n return tensor;\n };\n}\n", "export function extractWeightsFactory(weights: Float32Array) {\n let remainingWeights = weights;\n\n function extractWeights(numWeights: number): Float32Array {\n const ret = remainingWeights.slice(0, numWeights);\n remainingWeights = remainingWeights.slice(numWeights);\n return ret;\n }\n\n function getRemainingWeights(): Float32Array {\n return remainingWeights;\n }\n\n return {\n extractWeights,\n getRemainingWeights,\n };\n}\n", "import {\n extractConvParamsFactory,\n extractSeparableConvParamsFactory,\n ExtractWeightsFunction,\n ParamMapping,\n} from '../common/index';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings);\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings);\n\n function extractDenseBlock3Params(channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer: boolean = false): DenseBlock3Params {\n const conv0 = isFirstLayer\n ? extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv0`)\n : extractSeparableConvParams(channelsIn, channelsOut, `${mappedPrefix}/conv0`);\n const conv1 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv1`);\n const conv2 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv2`);\n\n return { conv0, conv1, conv2 };\n }\n\n function extractDenseBlock4Params(channelsIn: number, channelsOut: number, mappedPrefix: string, isFirstLayer: boolean = false): DenseBlock4Params {\n const { conv0, conv1, conv2 } = extractDenseBlock3Params(channelsIn, channelsOut, mappedPrefix, isFirstLayer);\n const conv3 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/conv3`);\n\n return {\n conv0, conv1, conv2, conv3,\n };\n }\n\n return {\n extractDenseBlock3Params,\n extractDenseBlock4Params,\n };\n}\n", "import { extractWeightsFactory, ParamMapping } from '../common/index';\nimport { extractorsFactory } from './extractorsFactory';\nimport { FaceFeatureExtractorParams } from './types';\n\nexport function extractParams(weights: Float32Array): { params: FaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractDenseBlock4Params,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const dense0 = extractDenseBlock4Params(3, 32, 'dense0', true);\n const dense1 = extractDenseBlock4Params(32, 64, 'dense1');\n const dense2 = extractDenseBlock4Params(64, 128, 'dense2');\n const dense3 = extractDenseBlock4Params(128, 256, 'dense3');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: {\n dense0, dense1, dense2, dense3,\n },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ConvParams } from './types';\n\n// eslint-disable-next-line no-unused-vars\nexport function loadConvParamsFactory(extractWeightEntry: (originalPath: string, paramRank: number) => T) {\n return (prefix: string): ConvParams => {\n const filters = extractWeightEntry(`${prefix}/filters`, 4);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n\n return { filters, bias };\n };\n}\n", "import { extractWeightEntryFactory, loadSeparableConvParamsFactory, ParamMapping } from '../common/index';\nimport { loadConvParamsFactory } from '../common/loadConvParamsFactory';\nimport { DenseBlock3Params, DenseBlock4Params } from './types';\n\nexport function loadParamsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n const extractConvParams = loadConvParamsFactory(extractWeightEntry);\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry);\n\n function extractDenseBlock3Params(prefix: string, isFirstLayer: boolean = false): DenseBlock3Params {\n const conv0 = isFirstLayer\n ? extractConvParams(`${prefix}/conv0`)\n : extractSeparableConvParams(`${prefix}/conv0`);\n const conv1 = extractSeparableConvParams(`${prefix}/conv1`);\n const conv2 = extractSeparableConvParams(`${prefix}/conv2`);\n\n return { conv0, conv1, conv2 };\n }\n\n function extractDenseBlock4Params(prefix: string, isFirstLayer: boolean = false): DenseBlock4Params {\n const conv0 = isFirstLayer\n ? extractConvParams(`${prefix}/conv0`)\n : extractSeparableConvParams(`${prefix}/conv0`);\n const conv1 = extractSeparableConvParams(`${prefix}/conv1`);\n const conv2 = extractSeparableConvParams(`${prefix}/conv2`);\n const conv3 = extractSeparableConvParams(`${prefix}/conv3`);\n\n return {\n conv0, conv1, conv2, conv3,\n };\n }\n\n return {\n extractDenseBlock3Params,\n extractDenseBlock4Params,\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { disposeUnusedWeightTensors, ParamMapping } from '../common/index';\nimport { loadParamsFactory } from './loadParamsFactory';\nimport { FaceFeatureExtractorParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: FaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractDenseBlock4Params,\n } = loadParamsFactory(weightMap, paramMappings);\n\n const params = {\n dense0: extractDenseBlock4Params('dense0', true),\n dense1: extractDenseBlock4Params('dense1'),\n dense2: extractDenseBlock4Params('dense2'),\n dense3: extractDenseBlock4Params('dense3'),\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { NetInput } from '../dom/index';\nimport {\n FaceFeatureExtractorParams,\n IFaceFeatureExtractor,\n TinyFaceFeatureExtractorParams,\n} from '../faceFeatureExtractor/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { NetParams } from './types';\nimport { seperateWeightMaps } from './util';\n\nexport abstract class FaceProcessor<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends NeuralNetwork {\n protected _faceFeatureExtractor: IFaceFeatureExtractor\n\n constructor(_name: string, faceFeatureExtractor: IFaceFeatureExtractor) {\n super(_name);\n this._faceFeatureExtractor = faceFeatureExtractor;\n }\n\n public get faceFeatureExtractor(): IFaceFeatureExtractor {\n return this._faceFeatureExtractor;\n }\n\n protected abstract getDefaultModelName(): string\n\n protected abstract getClassifierChannelsIn(): number\n\n protected abstract getClassifierChannelsOut(): number\n\n public runNet(input: NetInput | tf.Tensor4D): tf.Tensor2D {\n const { params } = this;\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`);\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input;\n return fullyConnectedLayer(bottleneckFeatures.as2D(bottleneckFeatures.shape[0], -1), params.fc);\n });\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose);\n super.dispose(throwOnRedispose);\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights);\n this._params = params;\n this._paramMappings = paramMappings;\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights, this.getClassifierChannelsIn(), this.getClassifierChannelsOut());\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap);\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap);\n\n return extractParamsFromWeigthMap(classifierMap);\n }\n\n protected extractParams(weights: Float32Array) {\n const cIn = this.getClassifierChannelsIn();\n const cOut = this.getClassifierChannelsOut();\n const classifierWeightSize = (cOut * cIn) + cOut;\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize);\n const classifierWeights = weights.slice(weights.length - classifierWeightSize);\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights);\n return this.extractClassifierParams(classifierWeights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { FCParams } from './types';\n\nexport function fullyConnectedLayer(\n x: tf.Tensor2D,\n params: FCParams,\n): tf.Tensor2D {\n return tf.tidy(() => tf.add(\n tf.matMul(x, params.weights),\n params.bias,\n ));\n}\n", "import { extractFCParamsFactory, extractWeightsFactory, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParams(weights: Float32Array, channelsIn: number, channelsOut: number): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const extractFCParams = extractFCParamsFactory(extractWeights, paramMappings);\n\n const fc = extractFCParams(channelsIn, channelsOut, 'fc');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { fc },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport {\n disposeUnusedWeightTensors, extractWeightEntryFactory, FCParams, ParamMapping,\n} from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractFcParams(prefix: string): FCParams {\n const weights = extractWeightEntry(`${prefix}/weights`, 2);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n return { weights, bias };\n }\n\n const params = {\n fc: extractFcParams('fc'),\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nexport function seperateWeightMaps(weightMap: tf.NamedTensorMap) {\n const featureExtractorMap: tf.NamedTensorMap = {};\n const classifierMap: tf.NamedTensorMap = {};\n\n Object.keys(weightMap).forEach((key) => {\n const map = key.startsWith('fc') ? classifierMap : featureExtractorMap;\n map[key] = weightMap[key];\n });\n\n return { featureExtractorMap, classifierMap };\n}\n", "export const FACE_EXPRESSION_LABELS = ['neutral', 'happy', 'sad', 'angry', 'fearful', 'disgusted', 'surprised'];\n\nexport class FaceExpressions {\n public neutral: number\n\n public happy: number\n\n public sad: number\n\n public angry: number\n\n public fearful: number\n\n public disgusted: number\n\n public surprised: number\n\n constructor(probabilities: number[] | Float32Array) {\n if (probabilities.length !== 7) {\n throw new Error(`FaceExpressions.constructor - expected probabilities.length to be 7, have: ${probabilities.length}`);\n }\n\n FACE_EXPRESSION_LABELS.forEach((expression, idx) => {\n this[expression] = probabilities[idx];\n });\n }\n\n asSortedArray() {\n return FACE_EXPRESSION_LABELS\n .map((expression) => ({ expression, probability: this[expression] as number }))\n .sort((e0, e1) => e1.probability - e0.probability);\n }\n}\n", "import { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\n\nexport type WithFaceExpressions = TSource & {\n expressions: FaceExpressions\n}\n\nexport function isWithFaceExpressions(obj: any): obj is WithFaceExpressions<{}> {\n return obj.expressions instanceof FaceExpressions;\n}\n\nexport function extendWithFaceExpressions<\n TSource\n>(\n sourceObj: TSource,\n expressions: FaceExpressions,\n): WithFaceExpressions {\n const extension = { expressions };\n return { ...sourceObj, ...extension };\n}\n", "import { IPoint, Point } from '../classes/index';\nimport { FaceExpressions } from '../faceExpressionNet/index';\nimport { isWithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceExpressions, WithFaceExpressions } from '../factories/WithFaceExpressions';\nimport { round } from '../utils/index';\nimport { DrawTextField } from './DrawTextField';\n\nexport type DrawFaceExpressionsInput = FaceExpressions | WithFaceExpressions<{}>\n\nexport function drawFaceExpressions(\n canvasArg: string | HTMLCanvasElement,\n faceExpressions: DrawFaceExpressionsInput | Array,\n minConfidence = 0.1,\n textFieldAnchor?: IPoint,\n) {\n const faceExpressionsArray = Array.isArray(faceExpressions) ? faceExpressions : [faceExpressions];\n\n faceExpressionsArray.forEach((e) => {\n // eslint-disable-next-line no-nested-ternary\n const expr = e instanceof FaceExpressions\n ? e\n : (isWithFaceExpressions(e) ? e.expressions : undefined);\n if (!expr) {\n throw new Error('drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof');\n }\n\n const sorted = expr.asSortedArray();\n const resultsToDisplay = sorted.filter((exprLocal) => exprLocal.probability > minConfidence);\n\n const anchor = isWithFaceDetection(e)\n ? e.detection.box.bottomLeft\n : (textFieldAnchor || new Point(0, 0));\n\n const drawTextField = new DrawTextField(\n resultsToDisplay.map((exprLocal) => `${exprLocal.expression} (${round(exprLocal.probability)})`),\n anchor,\n );\n drawTextField.draw(canvasArg);\n });\n}\n", "import { FaceDetection } from '../classes/FaceDetection';\nimport { FaceLandmarks } from '../classes/FaceLandmarks';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { isWithFaceDetection, WithFaceDetection } from './WithFaceDetection';\n\nexport type WithFaceLandmarks<\n TSource extends WithFaceDetection<{}>,\n TFaceLandmarks extends FaceLandmarks = FaceLandmarks68 > = TSource & {\n landmarks: TFaceLandmarks\n unshiftedLandmarks: TFaceLandmarks\n alignedRect: FaceDetection\n }\n\nexport function isWithFaceLandmarks(obj: any): obj is WithFaceLandmarks, FaceLandmarks> {\n return isWithFaceDetection(obj)\n // eslint-disable-next-line dot-notation\n && obj['landmarks'] instanceof FaceLandmarks\n // eslint-disable-next-line dot-notation\n && obj['unshiftedLandmarks'] instanceof FaceLandmarks\n // eslint-disable-next-line dot-notation\n && obj['alignedRect'] instanceof FaceDetection;\n}\n\nexport function extendWithFaceLandmarks<\n TSource extends WithFaceDetection<{}>,\n TFaceLandmarks extends FaceLandmarks = FaceLandmarks68 >(sourceObj: TSource, unshiftedLandmarks: TFaceLandmarks): WithFaceLandmarks {\n const { box: shift } = sourceObj.detection;\n const landmarks = unshiftedLandmarks.shiftBy(shift.x, shift.y);\n\n const rect = landmarks.align();\n const { imageDims } = sourceObj.detection;\n const alignedRect = new FaceDetection(sourceObj.detection.score, rect.rescale(imageDims.reverse()), imageDims);\n\n const extension = {\n landmarks,\n unshiftedLandmarks,\n alignedRect,\n };\n\n return { ...sourceObj, ...extension };\n}\n", "/* eslint-disable max-classes-per-file */\nimport { IPoint } from '../classes/index';\nimport { FaceLandmarks } from '../classes/FaceLandmarks';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { getContext2dOrThrow } from '../dom/getContext2dOrThrow';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { drawContour } from './drawContour';\n\nexport interface IDrawFaceLandmarksOptions {\n drawLines?: boolean\n drawPoints?: boolean\n lineWidth?: number\n pointSize?: number\n lineColor?: string\n pointColor?: string\n}\n\nexport class DrawFaceLandmarksOptions {\n public drawLines: boolean\n\n public drawPoints: boolean\n\n public lineWidth: number\n\n public pointSize: number\n\n public lineColor: string\n\n public pointColor: string\n\n constructor(options: IDrawFaceLandmarksOptions = {}) {\n const {\n drawLines = true, drawPoints = true, lineWidth, lineColor, pointSize, pointColor,\n } = options;\n this.drawLines = drawLines;\n this.drawPoints = drawPoints;\n this.lineWidth = lineWidth || 1;\n this.pointSize = pointSize || 2;\n this.lineColor = lineColor || 'rgba(0, 255, 255, 1)';\n this.pointColor = pointColor || 'rgba(255, 0, 255, 1)';\n }\n}\n\nexport class DrawFaceLandmarks {\n public faceLandmarks: FaceLandmarks\n\n public options: DrawFaceLandmarksOptions\n\n constructor(\n faceLandmarks: FaceLandmarks,\n options: IDrawFaceLandmarksOptions = {},\n ) {\n this.faceLandmarks = faceLandmarks;\n this.options = new DrawFaceLandmarksOptions(options);\n }\n\n draw(canvasArg: string | HTMLCanvasElement | CanvasRenderingContext2D) {\n const ctx = getContext2dOrThrow(canvasArg);\n\n const {\n drawLines, drawPoints, lineWidth, lineColor, pointSize, pointColor,\n } = this.options;\n\n if (drawLines && this.faceLandmarks instanceof FaceLandmarks68) {\n ctx.strokeStyle = lineColor;\n ctx.lineWidth = lineWidth;\n drawContour(ctx, this.faceLandmarks.getJawOutline());\n drawContour(ctx, this.faceLandmarks.getLeftEyeBrow());\n drawContour(ctx, this.faceLandmarks.getRightEyeBrow());\n drawContour(ctx, this.faceLandmarks.getNose());\n drawContour(ctx, this.faceLandmarks.getLeftEye(), true);\n drawContour(ctx, this.faceLandmarks.getRightEye(), true);\n drawContour(ctx, this.faceLandmarks.getMouth(), true);\n }\n\n if (drawPoints) {\n ctx.strokeStyle = pointColor;\n ctx.fillStyle = pointColor;\n\n const drawPoint = (pt: IPoint) => {\n ctx.beginPath();\n ctx.arc(pt.x, pt.y, pointSize, 0, 2 * Math.PI);\n ctx.fill();\n };\n this.faceLandmarks.positions.forEach(drawPoint);\n }\n }\n}\n\nexport type DrawFaceLandmarksInput = FaceLandmarks | WithFaceLandmarks>\n\nexport function drawFaceLandmarks(\n canvasArg: string | HTMLCanvasElement,\n faceLandmarks: DrawFaceLandmarksInput | Array,\n) {\n const faceLandmarksArray = Array.isArray(faceLandmarks) ? faceLandmarks : [faceLandmarks];\n faceLandmarksArray.forEach((f) => {\n // eslint-disable-next-line no-nested-ternary\n const landmarks = f instanceof FaceLandmarks\n ? f\n : (isWithFaceLandmarks(f) ? f.landmarks : undefined);\n if (!landmarks) {\n throw new Error('drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks> or array thereof');\n }\n\n new DrawFaceLandmarks(landmarks).draw(canvasArg);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { fullyConnectedLayer } from '../common/fullyConnectedLayer';\nimport { seperateWeightMaps } from '../faceProcessor/util';\nimport { TinyXception } from '../xception/TinyXception';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport {\n AgeAndGenderPrediction, Gender, NetOutput, NetParams,\n} from './types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\n\nexport class AgeGenderNet extends NeuralNetwork {\n private _faceFeatureExtractor: TinyXception\n\n constructor(faceFeatureExtractor: TinyXception = new TinyXception(2)) {\n super('AgeGenderNet');\n this._faceFeatureExtractor = faceFeatureExtractor;\n }\n\n public get faceFeatureExtractor(): TinyXception {\n return this._faceFeatureExtractor;\n }\n\n public runNet(input: NetInput | tf.Tensor4D): NetOutput {\n const { params } = this;\n\n if (!params) {\n throw new Error(`${this._name} - load model before inference`);\n }\n\n return tf.tidy(() => {\n const bottleneckFeatures = input instanceof NetInput\n ? this.faceFeatureExtractor.forwardInput(input)\n : input;\n\n const pooled = tf.avgPool(bottleneckFeatures, [7, 7], [2, 2], 'valid').as2D(bottleneckFeatures.shape[0], -1);\n const age = fullyConnectedLayer(pooled, params.fc.age).as1D();\n const gender = fullyConnectedLayer(pooled, params.fc.gender);\n return { age, gender };\n });\n }\n\n public forwardInput(input: NetInput | tf.Tensor4D): NetOutput {\n return tf.tidy(() => {\n const { age, gender } = this.runNet(input);\n return { age, gender: tf.softmax(gender) };\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async predictAgeAndGender(input: TNetInput): Promise {\n const netInput = await toNetInput(input);\n const out = await this.forwardInput(netInput);\n\n const ages = tf.unstack(out.age);\n const genders = tf.unstack(out.gender);\n const ageAndGenderTensors = ages.map((ageTensor, i) => ({\n ageTensor,\n genderTensor: genders[i],\n }));\n\n const predictionsByBatch = await Promise.all(\n ageAndGenderTensors.map(async ({ ageTensor, genderTensor }) => {\n const age = (await ageTensor.data())[0];\n const probMale = (await genderTensor.data())[0];\n const isMale = probMale > 0.5;\n const gender = isMale ? Gender.MALE : Gender.FEMALE;\n const genderProbability = isMale ? probMale : (1 - probMale);\n\n ageTensor.dispose();\n genderTensor.dispose();\n return { age, gender, genderProbability };\n }),\n );\n out.age.dispose();\n out.gender.dispose();\n\n return netInput.isBatchInput ? predictionsByBatch as AgeAndGenderPrediction[] : predictionsByBatch[0] as AgeAndGenderPrediction;\n }\n\n protected getDefaultModelName(): string {\n return 'age_gender_model';\n }\n\n public dispose(throwOnRedispose: boolean = true) {\n this.faceFeatureExtractor.dispose(throwOnRedispose);\n super.dispose(throwOnRedispose);\n }\n\n public loadClassifierParams(weights: Float32Array) {\n const { params, paramMappings } = this.extractClassifierParams(weights);\n this._params = params;\n this._paramMappings = paramMappings;\n }\n\n public extractClassifierParams(weights: Float32Array) {\n return extractParams(weights);\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n const { featureExtractorMap, classifierMap } = seperateWeightMaps(weightMap);\n\n this.faceFeatureExtractor.loadFromWeightMap(featureExtractorMap);\n\n return extractParamsFromWeigthMap(classifierMap);\n }\n\n protected extractParams(weights: Float32Array) {\n const classifierWeightSize = (512 * 1 + 1) + (512 * 2 + 2);\n\n const featureExtractorWeights = weights.slice(0, weights.length - classifierWeightSize);\n const classifierWeights = weights.slice(weights.length - classifierWeightSize);\n\n this.faceFeatureExtractor.extractWeights(featureExtractorWeights);\n return this.extractClassifierParams(classifierWeights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ConvParams, depthwiseSeparableConv } from '../common/index';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { range } from '../utils/index';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction conv(x: tf.Tensor4D, params: ConvParams, stride: [number, number]): tf.Tensor4D {\n return tf.add(tf.conv2d(x, params.filters, stride, 'same'), params.bias);\n}\n\nfunction reductionBlock(x: tf.Tensor4D, params: ReductionBlockParams, isActivateInput: boolean = true): tf.Tensor4D {\n let out = isActivateInput ? tf.relu(x) : x;\n out = depthwiseSeparableConv(out, params.separable_conv0, [1, 1]);\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1]);\n out = tf.maxPool(out, [3, 3], [2, 2], 'same');\n out = tf.add(out, conv(x, params.expansion_conv, [2, 2]));\n return out;\n}\n\nfunction mainBlock(x: tf.Tensor4D, params: MainBlockParams): tf.Tensor4D {\n let out = depthwiseSeparableConv(tf.relu(x), params.separable_conv0, [1, 1]);\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv1, [1, 1]);\n out = depthwiseSeparableConv(tf.relu(out), params.separable_conv2, [1, 1]);\n out = tf.add(out, x);\n return out;\n}\n\nexport class TinyXception extends NeuralNetwork {\n private _numMainBlocks: number\n\n constructor(numMainBlocks: number) {\n super('TinyXception');\n this._numMainBlocks = numMainBlocks;\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('TinyXception - load model before inference');\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D;\n\n let out = tf.relu(conv(normalized, params.entry_flow.conv_in, [2, 2]));\n out = reductionBlock(out, params.entry_flow.reduction_block_0, false);\n out = reductionBlock(out, params.entry_flow.reduction_block_1);\n\n range(this._numMainBlocks, 0, 1).forEach((idx) => {\n out = mainBlock(out, params.middle_flow[`main_block_${idx}`]);\n });\n\n out = reductionBlock(out, params.exit_flow.reduction_block);\n out = tf.relu(depthwiseSeparableConv(out, params.exit_flow.separable_conv, [1, 1]));\n return out;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n protected getDefaultModelName(): string {\n return 'tiny_xception_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this._numMainBlocks);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights, this._numMainBlocks);\n }\n}\n", "import { extractConvParamsFactory, extractSeparableConvParamsFactory, extractWeightsFactory } from '../common/index';\nimport { ExtractWeightsFunction, ParamMapping } from '../common/types';\nimport { range } from '../utils/index';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings);\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings);\n\n function extractReductionBlockParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ReductionBlockParams {\n const separable_conv0 = extractSeparableConvParams(channelsIn, channelsOut, `${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(channelsOut, channelsOut, `${mappedPrefix}/separable_conv1`);\n const expansion_conv = extractConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/expansion_conv`);\n\n return { separable_conv0, separable_conv1, expansion_conv };\n }\n\n function extractMainBlockParams(channels: number, mappedPrefix: string): MainBlockParams {\n const separable_conv0 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv1`);\n const separable_conv2 = extractSeparableConvParams(channels, channels, `${mappedPrefix}/separable_conv2`);\n\n return { separable_conv0, separable_conv1, separable_conv2 };\n }\n\n return {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n };\n}\n\nexport function extractParams(weights: Float32Array, numMainBlocks: number): { params: TinyXceptionParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const entry_flow_conv_in = extractConvParams(3, 32, 3, 'entry_flow/conv_in');\n const entry_flow_reduction_block_0 = extractReductionBlockParams(32, 64, 'entry_flow/reduction_block_0');\n const entry_flow_reduction_block_1 = extractReductionBlockParams(64, 128, 'entry_flow/reduction_block_1');\n\n const entry_flow = {\n conv_in: entry_flow_conv_in,\n reduction_block_0: entry_flow_reduction_block_0,\n reduction_block_1: entry_flow_reduction_block_1,\n };\n\n const middle_flow = {};\n range(numMainBlocks, 0, 1).forEach((idx) => {\n middle_flow[`main_block_${idx}`] = extractMainBlockParams(128, `middle_flow/main_block_${idx}`);\n });\n\n const exit_flow_reduction_block = extractReductionBlockParams(128, 256, 'exit_flow/reduction_block');\n const exit_flow_separable_conv = extractSeparableConvParams(256, 512, 'exit_flow/separable_conv');\n\n const exit_flow = {\n reduction_block: exit_flow_reduction_block,\n separable_conv: exit_flow_separable_conv,\n };\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { entry_flow, middle_flow, exit_flow },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport {\n disposeUnusedWeightTensors,\n extractWeightEntryFactory,\n loadSeparableConvParamsFactory,\n ParamMapping,\n} from '../common/index';\nimport { loadConvParamsFactory } from '../common/loadConvParamsFactory';\nimport { range } from '../utils/index';\nimport { MainBlockParams, ReductionBlockParams, TinyXceptionParams } from './types';\n\nfunction loadParamsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n const extractConvParams = loadConvParamsFactory(extractWeightEntry);\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry);\n\n function extractReductionBlockParams(mappedPrefix: string): ReductionBlockParams {\n const separable_conv0 = extractSeparableConvParams(`${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(`${mappedPrefix}/separable_conv1`);\n const expansion_conv = extractConvParams(`${mappedPrefix}/expansion_conv`);\n\n return { separable_conv0, separable_conv1, expansion_conv };\n }\n\n function extractMainBlockParams(mappedPrefix: string): MainBlockParams {\n const separable_conv0 = extractSeparableConvParams(`${mappedPrefix}/separable_conv0`);\n const separable_conv1 = extractSeparableConvParams(`${mappedPrefix}/separable_conv1`);\n const separable_conv2 = extractSeparableConvParams(`${mappedPrefix}/separable_conv2`);\n\n return { separable_conv0, separable_conv1, separable_conv2 };\n }\n\n return {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n numMainBlocks: number,\n): { params: TinyXceptionParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvParams,\n extractSeparableConvParams,\n extractReductionBlockParams,\n extractMainBlockParams,\n } = loadParamsFactory(weightMap, paramMappings);\n\n const entry_flow_conv_in = extractConvParams('entry_flow/conv_in');\n const entry_flow_reduction_block_0 = extractReductionBlockParams('entry_flow/reduction_block_0');\n const entry_flow_reduction_block_1 = extractReductionBlockParams('entry_flow/reduction_block_1');\n\n const entry_flow = {\n conv_in: entry_flow_conv_in,\n reduction_block_0: entry_flow_reduction_block_0,\n reduction_block_1: entry_flow_reduction_block_1,\n };\n\n const middle_flow = {};\n range(numMainBlocks, 0, 1).forEach((idx) => {\n middle_flow[`main_block_${idx}`] = extractMainBlockParams(`middle_flow/main_block_${idx}`);\n });\n\n const exit_flow_reduction_block = extractReductionBlockParams('exit_flow/reduction_block');\n const exit_flow_separable_conv = extractSeparableConvParams('exit_flow/separable_conv');\n\n const exit_flow = {\n reduction_block: exit_flow_reduction_block,\n separable_conv: exit_flow_separable_conv,\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params: { entry_flow, middle_flow, exit_flow }, paramMappings };\n}\n", "import { extractFCParamsFactory, extractWeightsFactory, ParamMapping } from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const extractFCParams = extractFCParamsFactory(extractWeights, paramMappings);\n\n const age = extractFCParams(512, 1, 'fc/age');\n const gender = extractFCParams(512, 2, 'fc/gender');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { fc: { age, gender } },\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport {\n disposeUnusedWeightTensors, extractWeightEntryFactory, FCParams, ParamMapping,\n} from '../common/index';\nimport { NetParams } from './types';\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractFcParams(prefix: string): FCParams {\n const weights = extractWeightEntry(`${prefix}/weights`, 2);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n return { weights, bias };\n }\n\n const params = {\n fc: {\n age: extractFcParams('fc/age'),\n gender: extractFcParams('fc/gender'),\n },\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { FCParams } from '../common/index';\n\n// eslint-disable-next-line no-shadow\nexport enum Gender {\n // eslint-disable-next-line no-unused-vars\n FEMALE = 'female',\n // eslint-disable-next-line no-unused-vars\n MALE = 'male'\n}\n\nexport type AgeAndGenderPrediction = {\n age: number\n gender: Gender\n genderProbability: number\n}\n\nexport type NetOutput = { age: tf.Tensor1D, gender: tf.Tensor2D }\n\nexport type NetParams = {\n fc: {\n age: FCParams\n gender: FCParams\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { IDimensions, Point } from '../classes/index';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { FaceFeatureExtractorParams, TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceProcessor } from '../faceProcessor/FaceProcessor';\nimport { isEven } from '../utils/index';\n\nexport abstract class FaceLandmark68NetBase<\n TExtractorParams extends FaceFeatureExtractorParams | TinyFaceFeatureExtractorParams\n>\n extends FaceProcessor {\n public postProcess(output: tf.Tensor2D, inputSize: number, originalDimensions: IDimensions[]): tf.Tensor2D {\n const inputDimensions = originalDimensions.map(({ width, height }) => {\n const scale = inputSize / Math.max(height, width);\n return {\n width: width * scale,\n height: height * scale,\n };\n });\n\n const batchSize = inputDimensions.length;\n\n return tf.tidy(() => {\n const createInterleavedTensor = (fillX: number, fillY: number) => tf.stack([tf.fill([68], fillX, 'float32'), tf.fill([68], fillY, 'float32')], 1).as2D(1, 136).as1D();\n\n // eslint-disable-next-line no-unused-vars\n const getPadding = (batchIdx: number, cond: (w: number, h: number) => boolean): number => {\n const { width, height } = inputDimensions[batchIdx];\n return cond(width, height) ? Math.abs(width - height) / 2 : 0;\n };\n\n const getPaddingX = (batchIdx: number) => getPadding(batchIdx, (w, h) => w < h);\n const getPaddingY = (batchIdx: number) => getPadding(batchIdx, (w, h) => h < w);\n\n const landmarkTensors = output\n .mul(tf.fill([batchSize, 136], inputSize, 'float32'))\n .sub(tf.stack(Array.from(Array(batchSize), (_, batchIdx) => createInterleavedTensor(\n getPaddingX(batchIdx),\n getPaddingY(batchIdx),\n ))))\n .div(tf.stack(Array.from(Array(batchSize), (_, batchIdx) => createInterleavedTensor(\n inputDimensions[batchIdx].width,\n inputDimensions[batchIdx].height,\n ))));\n\n return landmarkTensors as tf.Tensor2D;\n });\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n return tf.tidy(() => {\n const out = this.runNet(input);\n return this.postProcess(\n out,\n input.inputSize as number,\n input.inputDimensions.map(([height, width]) => ({ height, width })),\n );\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async detectLandmarks(input: TNetInput): Promise {\n const netInput = await toNetInput(input);\n const landmarkTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput)),\n );\n\n const landmarksForBatch = await Promise.all(landmarkTensors.map(\n async (landmarkTensor, batchIdx) => {\n const landmarksArray = Array.from(await landmarkTensor.data());\n const xCoords = landmarksArray.filter((_, i) => isEven(i));\n const yCoords = landmarksArray.filter((_, i) => !isEven(i));\n\n return new FaceLandmarks68(\n Array(68).fill(0).map((_, i) => new Point(xCoords[i] as number, yCoords[i] as number)),\n {\n height: netInput.getInputHeight(batchIdx),\n width: netInput.getInputWidth(batchIdx),\n },\n );\n },\n ));\n\n landmarkTensors.forEach((t) => t.dispose());\n\n return netInput.isBatchInput ? landmarksForBatch as FaceLandmarks68[] : landmarksForBatch[0] as FaceLandmarks68;\n }\n\n protected getClassifierChannelsOut(): number {\n return 136;\n }\n}\n", "import { FaceFeatureExtractor } from '../faceFeatureExtractor/FaceFeatureExtractor';\nimport { FaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceLandmark68NetBase } from './FaceLandmark68NetBase';\n\nexport class FaceLandmark68Net extends FaceLandmark68NetBase {\n constructor(faceFeatureExtractor: FaceFeatureExtractor = new FaceFeatureExtractor()) {\n super('FaceLandmark68Net', faceFeatureExtractor);\n }\n\n protected getDefaultModelName(): string {\n return 'face_landmark_68_model';\n }\n\n protected getClassifierChannelsIn(): number {\n return 256;\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { denseBlock3 } from './denseBlock';\nimport { extractParamsFromWeigthMapTiny } from './extractParamsFromWeigthMapTiny';\nimport { extractParamsTiny } from './extractParamsTiny';\nimport { IFaceFeatureExtractor, TinyFaceFeatureExtractorParams } from './types';\n\nexport class TinyFaceFeatureExtractor extends NeuralNetwork implements IFaceFeatureExtractor {\n constructor() {\n super('TinyFaceFeatureExtractor');\n }\n\n public forwardInput(input: NetInput): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('TinyFaceFeatureExtractor - load model before inference');\n }\n\n return tf.tidy(() => {\n const batchTensor = tf.cast(input.toBatchTensor(112, true), 'float32');\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(255)) as tf.Tensor4D;\n\n let out = denseBlock3(normalized, params.dense0, true);\n out = denseBlock3(out, params.dense1);\n out = denseBlock3(out, params.dense2);\n out = tf.avgPool(out, [14, 14], [2, 2], 'valid');\n\n return out;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n protected getDefaultModelName(): string {\n return 'face_feature_extractor_tiny_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMapTiny(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParamsTiny(weights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { disposeUnusedWeightTensors, ParamMapping } from '../common/index';\nimport { loadParamsFactory } from './loadParamsFactory';\nimport { TinyFaceFeatureExtractorParams } from './types';\n\nexport function extractParamsFromWeigthMapTiny(\n weightMap: tf.NamedTensorMap,\n): { params: TinyFaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractDenseBlock3Params,\n } = loadParamsFactory(weightMap, paramMappings);\n\n const params = {\n dense0: extractDenseBlock3Params('dense0', true),\n dense1: extractDenseBlock3Params('dense1'),\n dense2: extractDenseBlock3Params('dense2'),\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import { extractWeightsFactory, ParamMapping } from '../common/index';\nimport { extractorsFactory } from './extractorsFactory';\nimport { TinyFaceFeatureExtractorParams } from './types';\n\nexport function extractParamsTiny(weights: Float32Array): { params: TinyFaceFeatureExtractorParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractDenseBlock3Params,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const dense0 = extractDenseBlock3Params(3, 32, 'dense0', true);\n const dense1 = extractDenseBlock3Params(32, 64, 'dense1');\n const dense2 = extractDenseBlock3Params(64, 128, 'dense2');\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n paramMappings,\n params: { dense0, dense1, dense2 },\n };\n}\n", "import { TinyFaceFeatureExtractor } from '../faceFeatureExtractor/TinyFaceFeatureExtractor';\nimport { TinyFaceFeatureExtractorParams } from '../faceFeatureExtractor/types';\nimport { FaceLandmark68NetBase } from './FaceLandmark68NetBase';\n\nexport class FaceLandmark68TinyNet extends FaceLandmark68NetBase {\n constructor(faceFeatureExtractor: TinyFaceFeatureExtractor = new TinyFaceFeatureExtractor()) {\n super('FaceLandmark68TinyNet', faceFeatureExtractor);\n }\n\n protected getDefaultModelName(): string {\n return 'face_landmark_68_tiny_model';\n }\n\n protected getClassifierChannelsIn(): number {\n return 128;\n }\n}\n", "import { FaceLandmark68Net } from './FaceLandmark68Net';\n\nexport * from './FaceLandmark68Net';\nexport * from './FaceLandmark68TinyNet';\n\nexport class FaceLandmarkNet extends FaceLandmark68Net {}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { normalize } from '../ops/index';\nimport { convDown } from './convLayer';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { residual, residualDown } from './residualLayer';\nimport { NetParams } from './types';\n\nexport class FaceRecognitionNet extends NeuralNetwork {\n constructor() {\n super('FaceRecognitionNet');\n }\n\n public forwardInput(input: NetInput): tf.Tensor2D {\n const { params } = this;\n\n if (!params) {\n throw new Error('FaceRecognitionNet - load model before inference');\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(150, true).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(150, true), 'float32');\n\n const meanRgb = [122.782, 117.001, 104.298];\n const normalized = normalize(batchTensor, meanRgb).div(tf.scalar(256)) as tf.Tensor4D;\n\n let out = convDown(normalized, params.conv32_down);\n out = tf.maxPool(out, 3, 2, 'valid');\n\n out = residual(out, params.conv32_1);\n out = residual(out, params.conv32_2);\n out = residual(out, params.conv32_3);\n\n out = residualDown(out, params.conv64_down);\n out = residual(out, params.conv64_1);\n out = residual(out, params.conv64_2);\n out = residual(out, params.conv64_3);\n\n out = residualDown(out, params.conv128_down);\n out = residual(out, params.conv128_1);\n out = residual(out, params.conv128_2);\n\n out = residualDown(out, params.conv256_down);\n out = residual(out, params.conv256_1);\n out = residual(out, params.conv256_2);\n out = residualDown(out, params.conv256_down_out);\n\n const globalAvg = out.mean([1, 2]) as tf.Tensor2D;\n const fullyConnected = tf.matMul(globalAvg, params.fc);\n\n return fullyConnected;\n });\n }\n\n public async forward(input: TNetInput): Promise {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async computeFaceDescriptor(input: TNetInput): Promise {\n const netInput = await toNetInput(input);\n\n const faceDescriptorTensors = tf.tidy(\n () => tf.unstack(this.forwardInput(netInput)),\n );\n\n const faceDescriptorsForBatch = await Promise.all(faceDescriptorTensors.map(\n (t) => t.data(),\n )) as Float32Array[];\n\n faceDescriptorTensors.forEach((t) => t.dispose());\n\n return netInput.isBatchInput\n ? faceDescriptorsForBatch\n : faceDescriptorsForBatch[0];\n }\n\n protected getDefaultModelName(): string {\n return 'face_recognition_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { scale } from './scaleLayer';\nimport { ConvLayerParams } from './types';\n\nfunction convLayer(\n x: tf.Tensor4D,\n params: ConvLayerParams,\n strides: [number, number],\n withRelu: boolean,\n padding: 'valid' | 'same' = 'same',\n): tf.Tensor4D {\n const { filters, bias } = params.conv;\n\n let out = tf.conv2d(x, filters, strides, padding);\n out = tf.add(out, bias);\n out = scale(out, params.scale);\n return withRelu ? tf.relu(out) : out;\n}\n\nexport function conv(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], true);\n}\n\nexport function convNoRelu(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [1, 1], false);\n}\n\nexport function convDown(x: tf.Tensor4D, params: ConvLayerParams) {\n return convLayer(x, params, [2, 2], true, 'valid');\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ScaleLayerParams } from './types';\n\nexport function scale(x: tf.Tensor4D, params: ScaleLayerParams): tf.Tensor4D {\n return tf.add(tf.mul(x, params.weights), params.biases);\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport {\n ConvParams, extractWeightsFactory, ExtractWeightsFunction, ParamMapping,\n} from '../common/index';\nimport { isFloat } from '../utils/index';\nimport {\n ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams,\n} from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n function extractFilterValues(numFilterValues: number, numFilters: number, filterSize: number): tf.Tensor4D {\n const weights = extractWeights(numFilterValues);\n const depth = weights.length / (numFilters * filterSize * filterSize);\n\n if (isFloat(depth)) {\n throw new Error(`depth has to be an integer: ${depth}, weights.length: ${weights.length}, numFilters: ${numFilters}, filterSize: ${filterSize}`);\n }\n\n return tf.tidy(\n () => tf.transpose(\n tf.tensor4d(weights, [numFilters, depth, filterSize, filterSize]),\n [2, 3, 1, 0],\n ),\n );\n }\n\n function extractConvParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n ): ConvParams {\n const filters = extractFilterValues(numFilterValues, numFilters, filterSize);\n const bias = tf.tensor1d(extractWeights(numFilters));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/bias` },\n );\n\n return { filters, bias };\n }\n\n function extractScaleLayerParams(numWeights: number, mappedPrefix: string): ScaleLayerParams {\n const weights = tf.tensor1d(extractWeights(numWeights));\n const biases = tf.tensor1d(extractWeights(numWeights));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/weights` },\n { paramPath: `${mappedPrefix}/biases` },\n );\n\n return {\n weights,\n biases,\n };\n }\n\n function extractConvLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n ): ConvLayerParams {\n const conv = extractConvParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv`);\n const scale = extractScaleLayerParams(numFilters, `${mappedPrefix}/scale`);\n\n return { conv, scale };\n }\n\n function extractResidualLayerParams(\n numFilterValues: number,\n numFilters: number,\n filterSize: number,\n mappedPrefix: string,\n isDown: boolean = false,\n ): ResidualLayerParams {\n const conv1 = extractConvLayerParams((isDown ? 0.5 : 1) * numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv1`);\n const conv2 = extractConvLayerParams(numFilterValues, numFilters, filterSize, `${mappedPrefix}/conv2`);\n\n return { conv1, conv2 };\n }\n\n return {\n extractConvLayerParams,\n extractResidualLayerParams,\n };\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvLayerParams,\n extractResidualLayerParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const conv32_down = extractConvLayerParams(4704, 32, 7, 'conv32_down');\n const conv32_1 = extractResidualLayerParams(9216, 32, 3, 'conv32_1');\n const conv32_2 = extractResidualLayerParams(9216, 32, 3, 'conv32_2');\n const conv32_3 = extractResidualLayerParams(9216, 32, 3, 'conv32_3');\n\n const conv64_down = extractResidualLayerParams(36864, 64, 3, 'conv64_down', true);\n const conv64_1 = extractResidualLayerParams(36864, 64, 3, 'conv64_1');\n const conv64_2 = extractResidualLayerParams(36864, 64, 3, 'conv64_2');\n const conv64_3 = extractResidualLayerParams(36864, 64, 3, 'conv64_3');\n\n const conv128_down = extractResidualLayerParams(147456, 128, 3, 'conv128_down', true);\n const conv128_1 = extractResidualLayerParams(147456, 128, 3, 'conv128_1');\n const conv128_2 = extractResidualLayerParams(147456, 128, 3, 'conv128_2');\n\n const conv256_down = extractResidualLayerParams(589824, 256, 3, 'conv256_down', true);\n const conv256_1 = extractResidualLayerParams(589824, 256, 3, 'conv256_1');\n const conv256_2 = extractResidualLayerParams(589824, 256, 3, 'conv256_2');\n const conv256_down_out = extractResidualLayerParams(589824, 256, 3, 'conv256_down_out');\n\n const fc = tf.tidy(\n () => tf.transpose(tf.tensor2d(extractWeights(256 * 128), [128, 256]), [1, 0]),\n );\n paramMappings.push({ paramPath: 'fc' });\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n const params = {\n conv32_down,\n conv32_1,\n conv32_2,\n conv32_3,\n conv64_down,\n conv64_1,\n conv64_2,\n conv64_3,\n conv128_down,\n conv128_1,\n conv128_2,\n conv256_down,\n conv256_1,\n conv256_2,\n conv256_down_out,\n fc,\n };\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { disposeUnusedWeightTensors, extractWeightEntryFactory, ParamMapping } from '../common/index';\nimport { isTensor2D } from '../utils/index';\nimport {\n ConvLayerParams, NetParams, ResidualLayerParams, ScaleLayerParams,\n} from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractScaleLayerParams(prefix: string): ScaleLayerParams {\n const weights = extractWeightEntry(`${prefix}/scale/weights`, 1);\n const biases = extractWeightEntry(`${prefix}/scale/biases`, 1);\n\n return { weights, biases };\n }\n\n function extractConvLayerParams(prefix: string): ConvLayerParams {\n const filters = extractWeightEntry(`${prefix}/conv/filters`, 4);\n const bias = extractWeightEntry(`${prefix}/conv/bias`, 1);\n const scale = extractScaleLayerParams(prefix);\n\n return { conv: { filters, bias }, scale };\n }\n\n function extractResidualLayerParams(prefix: string): ResidualLayerParams {\n return {\n conv1: extractConvLayerParams(`${prefix}/conv1`),\n conv2: extractConvLayerParams(`${prefix}/conv2`),\n };\n }\n\n return {\n extractConvLayerParams,\n extractResidualLayerParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvLayerParams,\n extractResidualLayerParams,\n } = extractorsFactory(weightMap, paramMappings);\n\n const conv32_down = extractConvLayerParams('conv32_down');\n const conv32_1 = extractResidualLayerParams('conv32_1');\n const conv32_2 = extractResidualLayerParams('conv32_2');\n const conv32_3 = extractResidualLayerParams('conv32_3');\n\n const conv64_down = extractResidualLayerParams('conv64_down');\n const conv64_1 = extractResidualLayerParams('conv64_1');\n const conv64_2 = extractResidualLayerParams('conv64_2');\n const conv64_3 = extractResidualLayerParams('conv64_3');\n\n const conv128_down = extractResidualLayerParams('conv128_down');\n const conv128_1 = extractResidualLayerParams('conv128_1');\n const conv128_2 = extractResidualLayerParams('conv128_2');\n\n const conv256_down = extractResidualLayerParams('conv256_down');\n const conv256_1 = extractResidualLayerParams('conv256_1');\n const conv256_2 = extractResidualLayerParams('conv256_2');\n const conv256_down_out = extractResidualLayerParams('conv256_down_out');\n\n const { fc } = weightMap;\n paramMappings.push({ originalPath: 'fc', paramPath: 'fc' });\n\n if (!isTensor2D(fc)) {\n throw new Error(`expected weightMap[fc] to be a Tensor2D, instead have ${fc}`);\n }\n\n const params = {\n conv32_down,\n conv32_1,\n conv32_2,\n conv32_3,\n conv64_down,\n conv64_1,\n conv64_2,\n conv64_3,\n conv128_down,\n conv128_1,\n conv128_2,\n conv256_down,\n conv256_1,\n conv256_2,\n conv256_down_out,\n fc,\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { conv, convDown, convNoRelu } from './convLayer';\nimport { ResidualLayerParams } from './types';\n\nexport function residual(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = conv(x, params.conv1);\n out = convNoRelu(out, params.conv2);\n out = tf.add(out, x);\n out = tf.relu(out);\n return out;\n}\n\nexport function residualDown(x: tf.Tensor4D, params: ResidualLayerParams): tf.Tensor4D {\n let out = convDown(x, params.conv1);\n out = convNoRelu(out, params.conv2);\n\n let pooled = tf.avgPool(x, 2, 2, 'valid') as tf.Tensor4D;\n const zeros = tf.zeros(pooled.shape);\n const isPad = pooled.shape[3] !== out.shape[3];\n const isAdjustShape = pooled.shape[1] !== out.shape[1] || pooled.shape[2] !== out.shape[2];\n\n if (isAdjustShape) {\n const padShapeX = [...out.shape] as [number, number, number, number];\n padShapeX[1] = 1;\n const zerosW = tf.zeros(padShapeX);\n out = tf.concat([out, zerosW], 1);\n\n const padShapeY = [...out.shape] as [number, number, number, number];\n padShapeY[2] = 1;\n const zerosH = tf.zeros(padShapeY);\n out = tf.concat([out, zerosH], 2);\n }\n\n pooled = isPad ? tf.concat([pooled, zeros], 3) : pooled;\n out = tf.add(pooled, out) as tf.Tensor4D;\n\n out = tf.relu(out);\n return out;\n}\n", "import { FaceRecognitionNet } from './FaceRecognitionNet';\n\nexport * from './FaceRecognitionNet';\n\nexport function createFaceRecognitionNet(weights: Float32Array) {\n const net = new FaceRecognitionNet();\n net.extractWeights(weights);\n return net;\n}\n", "export type WithFaceDescriptor = TSource & {\n descriptor: Float32Array\n}\n\nexport function extendWithFaceDescriptor<\n TSource\n>(\n sourceObj: TSource,\n descriptor: Float32Array,\n): WithFaceDescriptor {\n const extension = { descriptor };\n return { ...sourceObj, ...extension };\n}\n", "export type WithAge = TSource & {\n age: number\n}\n\nexport function isWithAge(obj: any): obj is WithAge<{}> {\n return typeof obj.age === 'number';\n}\n\nexport function extendWithAge<\n TSource\n>(\n sourceObj: TSource,\n age: number,\n): WithAge {\n const extension = { age };\n return { ...sourceObj, ...extension };\n}\n", "import { Gender } from '../ageGenderNet/types';\nimport { isValidProbablitiy } from '../utils/index';\n\nexport type WithGender = TSource & {\n gender: Gender\n genderProbability: number\n}\n\nexport function isWithGender(obj: any): obj is WithGender<{}> {\n return (obj.gender === Gender.MALE || obj.gender === Gender.FEMALE)\n && isValidProbablitiy(obj.genderProbability);\n}\n\nexport function extendWithGender<\n TSource\n>(\n sourceObj: TSource,\n gender: Gender,\n genderProbability: number,\n): WithGender {\n const extension = { gender, genderProbability };\n return { ...sourceObj, ...extension };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { Rect } from '../classes/index';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { NetInput, TNetInput, toNetInput } from '../dom/index';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { mobileNetV1 } from './mobileNetV1';\nimport { nonMaxSuppression } from './nonMaxSuppression';\nimport { outputLayer } from './outputLayer';\nimport { predictionLayer } from './predictionLayer';\nimport { ISsdMobilenetv1Options, SsdMobilenetv1Options } from './SsdMobilenetv1Options';\nimport { NetParams } from './types';\n\nexport class SsdMobilenetv1 extends NeuralNetwork {\n constructor() {\n super('SsdMobilenetv1');\n }\n\n public forwardInput(input: NetInput) {\n const { params } = this;\n\n if (!params) {\n throw new Error('SsdMobilenetv1 - load model before inference');\n }\n\n return tf.tidy(() => {\n // const batchTensor = input.toBatchTensor(512, false).toFloat()\n const batchTensor = tf.cast(input.toBatchTensor(512, false), 'float32');\n\n const x = tf.sub(tf.mul(batchTensor, tf.scalar(0.007843137718737125)), tf.scalar(1)) as tf.Tensor4D;\n const features = mobileNetV1(x, params.mobilenetv1);\n\n const {\n boxPredictions,\n classPredictions,\n } = predictionLayer(features.out, features.conv11, params.prediction_layer);\n\n return outputLayer(boxPredictions, classPredictions, params.output_layer);\n });\n }\n\n public async forward(input: TNetInput) {\n return this.forwardInput(await toNetInput(input));\n }\n\n public async locateFaces(\n input: TNetInput,\n options: ISsdMobilenetv1Options = {},\n ): Promise {\n const { maxResults, minConfidence } = new SsdMobilenetv1Options(options);\n\n const netInput = await toNetInput(input);\n\n const {\n boxes: _boxes,\n scores: _scores,\n } = this.forwardInput(netInput);\n\n // TODO batches\n const boxes = _boxes[0];\n const scores = _scores[0];\n for (let i = 1; i < _boxes.length; i++) {\n _boxes[i].dispose();\n _scores[i].dispose();\n }\n\n // TODO find a better way to filter by minConfidence\n const scoresData = Array.from(await scores.data());\n\n const iouThreshold = 0.5;\n const indices = nonMaxSuppression(\n boxes,\n scoresData as number[],\n maxResults,\n iouThreshold,\n minConfidence,\n );\n\n const reshapedDims = netInput.getReshapedInputDimensions(0);\n const inputSize = netInput.inputSize as number;\n const padX = inputSize / reshapedDims.width;\n const padY = inputSize / reshapedDims.height;\n\n const boxesData = boxes.arraySync();\n const results = indices\n .map((idx) => {\n const [top, bottom] = [\n Math.max(0, boxesData[idx][0]),\n Math.min(1.0, boxesData[idx][2]),\n ].map((val) => val * padY);\n const [left, right] = [\n Math.max(0, boxesData[idx][1]),\n Math.min(1.0, boxesData[idx][3]),\n ].map((val) => val * padX);\n return new FaceDetection(\n scoresData[idx] as number,\n new Rect(\n left,\n top,\n right - left,\n bottom - top,\n ),\n {\n height: netInput.getInputHeight(0),\n width: netInput.getInputWidth(0),\n },\n );\n });\n\n boxes.dispose();\n scores.dispose();\n\n return results;\n }\n\n protected getDefaultModelName(): string {\n return 'ssd_mobilenetv1_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap);\n }\n\n protected extractParams(weights: Float32Array) {\n return extractParams(weights);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport {\n ExtractWeightsFunction, ParamMapping, ConvParams, extractWeightsFactory,\n} from '../common/index';\nimport {\n MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams,\n} from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n function extractDepthwiseConvParams(numChannels: number, mappedPrefix: string): MobileNetV1.DepthwiseConvParams {\n const filters = tf.tensor4d(extractWeights(3 * 3 * numChannels), [3, 3, numChannels, 1]);\n const batch_norm_scale = tf.tensor1d(extractWeights(numChannels));\n const batch_norm_offset = tf.tensor1d(extractWeights(numChannels));\n const batch_norm_mean = tf.tensor1d(extractWeights(numChannels));\n const batch_norm_variance = tf.tensor1d(extractWeights(numChannels));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/batch_norm_scale` },\n { paramPath: `${mappedPrefix}/batch_norm_offset` },\n { paramPath: `${mappedPrefix}/batch_norm_mean` },\n { paramPath: `${mappedPrefix}/batch_norm_variance` },\n );\n\n return {\n filters,\n batch_norm_scale,\n batch_norm_offset,\n batch_norm_mean,\n batch_norm_variance,\n };\n }\n\n function extractConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n isPointwiseConv?: boolean,\n ): ConvParams {\n const filters = tf.tensor4d(\n extractWeights(channelsIn * channelsOut * filterSize * filterSize),\n [filterSize, filterSize, channelsIn, channelsOut],\n );\n const bias = tf.tensor1d(extractWeights(channelsOut));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/filters` },\n { paramPath: `${mappedPrefix}/${isPointwiseConv ? 'batch_norm_offset' : 'bias'}` },\n );\n\n return { filters, bias };\n }\n\n function extractPointwiseConvParams(\n channelsIn: number,\n channelsOut: number,\n filterSize: number,\n mappedPrefix: string,\n ): PointwiseConvParams {\n const {\n filters,\n bias,\n } = extractConvParams(channelsIn, channelsOut, filterSize, mappedPrefix, true);\n\n return {\n filters,\n batch_norm_offset: bias,\n };\n }\n\n function extractConvPairParams(\n channelsIn: number,\n channelsOut: number,\n mappedPrefix: string,\n ): MobileNetV1.ConvPairParams {\n const depthwise_conv = extractDepthwiseConvParams(channelsIn, `${mappedPrefix}/depthwise_conv`);\n const pointwise_conv = extractPointwiseConvParams(channelsIn, channelsOut, 1, `${mappedPrefix}/pointwise_conv`);\n\n return { depthwise_conv, pointwise_conv };\n }\n\n function extractMobilenetV1Params(): MobileNetV1.Params {\n const conv_0 = extractPointwiseConvParams(3, 32, 3, 'mobilenetv1/conv_0');\n\n const conv_1 = extractConvPairParams(32, 64, 'mobilenetv1/conv_1');\n const conv_2 = extractConvPairParams(64, 128, 'mobilenetv1/conv_2');\n const conv_3 = extractConvPairParams(128, 128, 'mobilenetv1/conv_3');\n const conv_4 = extractConvPairParams(128, 256, 'mobilenetv1/conv_4');\n const conv_5 = extractConvPairParams(256, 256, 'mobilenetv1/conv_5');\n const conv_6 = extractConvPairParams(256, 512, 'mobilenetv1/conv_6');\n const conv_7 = extractConvPairParams(512, 512, 'mobilenetv1/conv_7');\n const conv_8 = extractConvPairParams(512, 512, 'mobilenetv1/conv_8');\n const conv_9 = extractConvPairParams(512, 512, 'mobilenetv1/conv_9');\n const conv_10 = extractConvPairParams(512, 512, 'mobilenetv1/conv_10');\n const conv_11 = extractConvPairParams(512, 512, 'mobilenetv1/conv_11');\n const conv_12 = extractConvPairParams(512, 1024, 'mobilenetv1/conv_12');\n const conv_13 = extractConvPairParams(1024, 1024, 'mobilenetv1/conv_13');\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n conv_8,\n conv_9,\n conv_10,\n conv_11,\n conv_12,\n conv_13,\n };\n }\n\n function extractPredictionLayerParams(): PredictionLayerParams {\n const conv_0 = extractPointwiseConvParams(1024, 256, 1, 'prediction_layer/conv_0');\n const conv_1 = extractPointwiseConvParams(256, 512, 3, 'prediction_layer/conv_1');\n const conv_2 = extractPointwiseConvParams(512, 128, 1, 'prediction_layer/conv_2');\n const conv_3 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_3');\n const conv_4 = extractPointwiseConvParams(256, 128, 1, 'prediction_layer/conv_4');\n const conv_5 = extractPointwiseConvParams(128, 256, 3, 'prediction_layer/conv_5');\n const conv_6 = extractPointwiseConvParams(256, 64, 1, 'prediction_layer/conv_6');\n const conv_7 = extractPointwiseConvParams(64, 128, 3, 'prediction_layer/conv_7');\n\n const box_encoding_0_predictor = extractConvParams(512, 12, 1, 'prediction_layer/box_predictor_0/box_encoding_predictor');\n const class_predictor_0 = extractConvParams(512, 9, 1, 'prediction_layer/box_predictor_0/class_predictor');\n const box_encoding_1_predictor = extractConvParams(1024, 24, 1, 'prediction_layer/box_predictor_1/box_encoding_predictor');\n const class_predictor_1 = extractConvParams(1024, 18, 1, 'prediction_layer/box_predictor_1/class_predictor');\n const box_encoding_2_predictor = extractConvParams(512, 24, 1, 'prediction_layer/box_predictor_2/box_encoding_predictor');\n const class_predictor_2 = extractConvParams(512, 18, 1, 'prediction_layer/box_predictor_2/class_predictor');\n const box_encoding_3_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_3/box_encoding_predictor');\n const class_predictor_3 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_3/class_predictor');\n const box_encoding_4_predictor = extractConvParams(256, 24, 1, 'prediction_layer/box_predictor_4/box_encoding_predictor');\n const class_predictor_4 = extractConvParams(256, 18, 1, 'prediction_layer/box_predictor_4/class_predictor');\n const box_encoding_5_predictor = extractConvParams(128, 24, 1, 'prediction_layer/box_predictor_5/box_encoding_predictor');\n const class_predictor_5 = extractConvParams(128, 18, 1, 'prediction_layer/box_predictor_5/class_predictor');\n\n const box_predictor_0 = {\n box_encoding_predictor: box_encoding_0_predictor,\n class_predictor: class_predictor_0,\n };\n const box_predictor_1 = {\n box_encoding_predictor: box_encoding_1_predictor,\n class_predictor: class_predictor_1,\n };\n const box_predictor_2 = {\n box_encoding_predictor: box_encoding_2_predictor,\n class_predictor: class_predictor_2,\n };\n const box_predictor_3 = {\n box_encoding_predictor: box_encoding_3_predictor,\n class_predictor: class_predictor_3,\n };\n const box_predictor_4 = {\n box_encoding_predictor: box_encoding_4_predictor,\n class_predictor: class_predictor_4,\n };\n const box_predictor_5 = {\n box_encoding_predictor: box_encoding_5_predictor,\n class_predictor: class_predictor_5,\n };\n\n return {\n conv_0,\n conv_1,\n conv_2,\n conv_3,\n conv_4,\n conv_5,\n conv_6,\n conv_7,\n box_predictor_0,\n box_predictor_1,\n box_predictor_2,\n box_predictor_3,\n box_predictor_4,\n box_predictor_5,\n };\n }\n\n return {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n };\n}\n\nexport function extractParams(weights: Float32Array): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n const mobilenetv1 = extractMobilenetV1Params();\n const prediction_layer = extractPredictionLayerParams();\n const extra_dim = tf.tensor3d(\n extractWeights(5118 * 4),\n [1, 5118, 4],\n );\n const output_layer = {\n extra_dim,\n };\n\n paramMappings.push({ paramPath: 'output_layer/extra_dim' });\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return {\n params: {\n mobilenetv1,\n prediction_layer,\n output_layer,\n },\n paramMappings,\n };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport {\n ConvParams, disposeUnusedWeightTensors, extractWeightEntryFactory, ParamMapping,\n} from '../common/index';\nimport { isTensor3D } from '../utils/index';\nimport {\n BoxPredictionParams, MobileNetV1, NetParams, PointwiseConvParams, PredictionLayerParams,\n} from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractPointwiseConvParams(prefix: string, idx: number, mappedPrefix: string): PointwiseConvParams {\n const filters = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/weights`, 4, `${mappedPrefix}/filters`);\n const batch_norm_offset = extractWeightEntry(`${prefix}/Conv2d_${idx}_pointwise/convolution_bn_offset`, 1, `${mappedPrefix}/batch_norm_offset`);\n\n return { filters, batch_norm_offset };\n }\n\n function extractConvPairParams(idx: number): MobileNetV1.ConvPairParams {\n const mappedPrefix = `mobilenetv1/conv_${idx}`;\n const prefixDepthwiseConv = `MobilenetV1/Conv2d_${idx}_depthwise`;\n const mappedPrefixDepthwiseConv = `${mappedPrefix}/depthwise_conv`;\n const mappedPrefixPointwiseConv = `${mappedPrefix}/pointwise_conv`;\n\n const filters = extractWeightEntry(`${prefixDepthwiseConv}/depthwise_weights`, 4, `${mappedPrefixDepthwiseConv}/filters`);\n const batch_norm_scale = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/gamma`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_scale`);\n const batch_norm_offset = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/beta`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_offset`);\n const batch_norm_mean = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_mean`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_mean`);\n const batch_norm_variance = extractWeightEntry(`${prefixDepthwiseConv}/BatchNorm/moving_variance`, 1, `${mappedPrefixDepthwiseConv}/batch_norm_variance`);\n\n return {\n depthwise_conv: {\n filters,\n batch_norm_scale,\n batch_norm_offset,\n batch_norm_mean,\n batch_norm_variance,\n },\n pointwise_conv: extractPointwiseConvParams('MobilenetV1', idx, mappedPrefixPointwiseConv),\n };\n }\n\n function extractMobilenetV1Params(): MobileNetV1.Params {\n return {\n conv_0: extractPointwiseConvParams('MobilenetV1', 0, 'mobilenetv1/conv_0'),\n conv_1: extractConvPairParams(1),\n conv_2: extractConvPairParams(2),\n conv_3: extractConvPairParams(3),\n conv_4: extractConvPairParams(4),\n conv_5: extractConvPairParams(5),\n conv_6: extractConvPairParams(6),\n conv_7: extractConvPairParams(7),\n conv_8: extractConvPairParams(8),\n conv_9: extractConvPairParams(9),\n conv_10: extractConvPairParams(10),\n conv_11: extractConvPairParams(11),\n conv_12: extractConvPairParams(12),\n conv_13: extractConvPairParams(13),\n };\n }\n\n function extractConvParams(prefix: string, mappedPrefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/weights`, 4, `${mappedPrefix}/filters`);\n const bias = extractWeightEntry(`${prefix}/biases`, 1, `${mappedPrefix}/bias`);\n\n return { filters, bias };\n }\n\n function extractBoxPredictorParams(idx: number): BoxPredictionParams {\n const box_encoding_predictor = extractConvParams(\n `Prediction/BoxPredictor_${idx}/BoxEncodingPredictor`,\n `prediction_layer/box_predictor_${idx}/box_encoding_predictor`,\n );\n const class_predictor = extractConvParams(\n `Prediction/BoxPredictor_${idx}/ClassPredictor`,\n `prediction_layer/box_predictor_${idx}/class_predictor`,\n );\n\n return { box_encoding_predictor, class_predictor };\n }\n\n function extractPredictionLayerParams(): PredictionLayerParams {\n return {\n conv_0: extractPointwiseConvParams('Prediction', 0, 'prediction_layer/conv_0'),\n conv_1: extractPointwiseConvParams('Prediction', 1, 'prediction_layer/conv_1'),\n conv_2: extractPointwiseConvParams('Prediction', 2, 'prediction_layer/conv_2'),\n conv_3: extractPointwiseConvParams('Prediction', 3, 'prediction_layer/conv_3'),\n conv_4: extractPointwiseConvParams('Prediction', 4, 'prediction_layer/conv_4'),\n conv_5: extractPointwiseConvParams('Prediction', 5, 'prediction_layer/conv_5'),\n conv_6: extractPointwiseConvParams('Prediction', 6, 'prediction_layer/conv_6'),\n conv_7: extractPointwiseConvParams('Prediction', 7, 'prediction_layer/conv_7'),\n box_predictor_0: extractBoxPredictorParams(0),\n box_predictor_1: extractBoxPredictorParams(1),\n box_predictor_2: extractBoxPredictorParams(2),\n box_predictor_3: extractBoxPredictorParams(3),\n box_predictor_4: extractBoxPredictorParams(4),\n box_predictor_5: extractBoxPredictorParams(5),\n };\n }\n\n return {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n): { params: NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractMobilenetV1Params,\n extractPredictionLayerParams,\n } = extractorsFactory(weightMap, paramMappings);\n\n const extra_dim = weightMap['Output/extra_dim'];\n paramMappings.push({ originalPath: 'Output/extra_dim', paramPath: 'output_layer/extra_dim' });\n\n if (!isTensor3D(extra_dim)) {\n throw new Error(`expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have ${extra_dim}`);\n }\n\n const params = {\n mobilenetv1: extractMobilenetV1Params(),\n prediction_layer: extractPredictionLayerParams(),\n output_layer: {\n extra_dim,\n },\n };\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { MobileNetV1 } from './types';\n\nconst epsilon = 0.0010000000474974513;\n\nfunction depthwiseConvLayer(\n x: tf.Tensor4D,\n params: MobileNetV1.DepthwiseConvParams,\n strides: [number, number],\n) {\n return tf.tidy(() => {\n let out = tf.depthwiseConv2d(x, params.filters, strides, 'same');\n out = tf.batchNorm(\n out,\n params.batch_norm_mean,\n params.batch_norm_variance,\n params.batch_norm_offset,\n params.batch_norm_scale,\n epsilon,\n );\n return tf.clipByValue(out, 0, 6);\n });\n}\n\nfunction getStridesForLayerIdx(layerIdx: number): [number, number] {\n return [2, 4, 6, 12].some((idx) => idx === layerIdx) ? [2, 2] : [1, 1];\n}\n\nexport function mobileNetV1(x: tf.Tensor4D, params: MobileNetV1.Params) {\n return tf.tidy(() => {\n let conv11;\n let out = pointwiseConvLayer(x, params.conv_0, [2, 2]);\n\n const convPairParams = [\n params.conv_1,\n params.conv_2,\n params.conv_3,\n params.conv_4,\n params.conv_5,\n params.conv_6,\n params.conv_7,\n params.conv_8,\n params.conv_9,\n params.conv_10,\n params.conv_11,\n params.conv_12,\n params.conv_13,\n ];\n\n convPairParams.forEach((param, i) => {\n const layerIdx = i + 1;\n const depthwiseConvStrides = getStridesForLayerIdx(layerIdx);\n out = depthwiseConvLayer(out, param.depthwise_conv, depthwiseConvStrides);\n out = pointwiseConvLayer(out, param.pointwise_conv, [1, 1]);\n if (layerIdx === 11) {\n conv11 = out;\n }\n });\n\n if (conv11 === null) {\n throw new Error('mobileNetV1 - output of conv layer 11 is null');\n }\n\n return {\n out,\n conv11: conv11 as any,\n };\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { PointwiseConvParams } from './types';\n\nexport function pointwiseConvLayer(\n x: tf.Tensor4D,\n params: PointwiseConvParams,\n strides: [number, number],\n) {\n return tf.tidy(() => {\n let out = tf.conv2d(x, params.filters, strides, 'same');\n out = tf.add(out, params.batch_norm_offset);\n return tf.clipByValue(out, 0, 6);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nfunction IOU(boxes: tf.Tensor2D, i: number, j: number) {\n const boxesData = boxes.arraySync();\n const yminI = Math.min(boxesData[i][0], boxesData[i][2]);\n const xminI = Math.min(boxesData[i][1], boxesData[i][3]);\n const ymaxI = Math.max(boxesData[i][0], boxesData[i][2]);\n const xmaxI = Math.max(boxesData[i][1], boxesData[i][3]);\n const yminJ = Math.min(boxesData[j][0], boxesData[j][2]);\n const xminJ = Math.min(boxesData[j][1], boxesData[j][3]);\n const ymaxJ = Math.max(boxesData[j][0], boxesData[j][2]);\n const xmaxJ = Math.max(boxesData[j][1], boxesData[j][3]);\n const areaI = (ymaxI - yminI) * (xmaxI - xminI);\n const areaJ = (ymaxJ - yminJ) * (xmaxJ - xminJ);\n if (areaI <= 0 || areaJ <= 0) {\n return 0.0;\n }\n const intersectionYmin = Math.max(yminI, yminJ);\n const intersectionXmin = Math.max(xminI, xminJ);\n const intersectionYmax = Math.min(ymaxI, ymaxJ);\n const intersectionXmax = Math.min(xmaxI, xmaxJ);\n const intersectionArea = Math.max(intersectionYmax - intersectionYmin, 0.0)\n * Math.max(intersectionXmax - intersectionXmin, 0.0);\n return intersectionArea / (areaI + areaJ - intersectionArea);\n}\n\nexport function nonMaxSuppression(\n boxes: tf.Tensor2D,\n scores: number[],\n maxOutputSize: number,\n iouThreshold: number,\n scoreThreshold: number,\n): number[] {\n const numBoxes = boxes.shape[0];\n const outputSize = Math.min(\n maxOutputSize,\n numBoxes,\n );\n\n const candidates = scores\n .map((score, boxIndex) => ({ score, boxIndex }))\n .filter((c) => c.score > scoreThreshold)\n .sort((c1, c2) => c2.score - c1.score);\n\n const suppressFunc = (x: number) => (x <= iouThreshold ? 1 : 0);\n\n const selected: number[] = [];\n\n candidates.forEach((c) => {\n if (selected.length >= outputSize) {\n return;\n }\n const originalScore = c.score;\n\n for (let j = selected.length - 1; j >= 0; --j) {\n const iou = IOU(boxes, c.boxIndex, selected[j]);\n if (iou === 0.0) continue;\n c.score *= suppressFunc(iou);\n if (c.score <= scoreThreshold) break;\n }\n if (originalScore === c.score) {\n selected.push(c.boxIndex);\n }\n });\n\n return selected;\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { OutputLayerParams } from './types';\n\nfunction getCenterCoordinatesAndSizesLayer(x: tf.Tensor2D) {\n const vec = tf.unstack(tf.transpose(x, [1, 0]));\n\n const sizes = [\n tf.sub(vec[2], vec[0]),\n tf.sub(vec[3], vec[1]),\n ];\n\n const centers = [\n tf.add(vec[0], tf.div(sizes[0], tf.scalar(2))),\n tf.add(vec[1], tf.div(sizes[1], tf.scalar(2))),\n ];\n\n return {\n sizes,\n centers,\n };\n}\n\nfunction decodeBoxesLayer(x0: tf.Tensor2D, x1: tf.Tensor2D) {\n const {\n sizes,\n centers,\n } = getCenterCoordinatesAndSizesLayer(x0);\n\n const vec = tf.unstack(tf.transpose(x1, [1, 0]));\n\n const div0_out = tf.div(tf.mul(tf.exp(tf.div(vec[2], tf.scalar(5))), sizes[0]), tf.scalar(2));\n const add0_out = tf.add(tf.mul(tf.div(vec[0], tf.scalar(10)), sizes[0]), centers[0]);\n\n const div1_out = tf.div(tf.mul(tf.exp(tf.div(vec[3], tf.scalar(5))), sizes[1]), tf.scalar(2));\n const add1_out = tf.add(tf.mul(tf.div(vec[1], tf.scalar(10)), sizes[1]), centers[1]);\n\n return tf.transpose(\n tf.stack([\n tf.sub(add0_out, div0_out),\n tf.sub(add1_out, div1_out),\n tf.add(add0_out, div0_out),\n tf.add(add1_out, div1_out),\n ]),\n [1, 0],\n );\n}\n\nexport function outputLayer(\n boxPredictions: tf.Tensor4D,\n classPredictions: tf.Tensor4D,\n params: OutputLayerParams,\n) {\n return tf.tidy(() => {\n const batchSize = boxPredictions.shape[0];\n\n let boxes = decodeBoxesLayer(\n tf.reshape(tf.tile(params.extra_dim, [batchSize, 1, 1]), [-1, 4]) as tf.Tensor2D,\n tf.reshape(boxPredictions, [-1, 4]) as tf.Tensor2D,\n );\n boxes = tf.reshape(\n boxes,\n [batchSize, (boxes.shape[0] / batchSize), 4],\n );\n\n const scoresAndClasses = tf.sigmoid(tf.slice(classPredictions, [0, 0, 1], [-1, -1, -1]));\n let scores = tf.slice(scoresAndClasses, [0, 0, 0], [-1, -1, 1]) as tf.Tensor;\n\n scores = tf.reshape(\n scores,\n [batchSize, scores.shape[1] as number],\n );\n\n const boxesByBatch = tf.unstack(boxes) as tf.Tensor2D[];\n const scoresByBatch = tf.unstack(scores) as tf.Tensor1D[];\n\n return {\n boxes: boxesByBatch,\n scores: scoresByBatch,\n };\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { boxPredictionLayer } from './boxPredictionLayer';\nimport { pointwiseConvLayer } from './pointwiseConvLayer';\nimport { PredictionLayerParams } from './types';\n\nexport function predictionLayer(\n x: tf.Tensor4D,\n conv11: tf.Tensor4D,\n params: PredictionLayerParams,\n) {\n return tf.tidy(() => {\n const conv0 = pointwiseConvLayer(x, params.conv_0, [1, 1]);\n const conv1 = pointwiseConvLayer(conv0, params.conv_1, [2, 2]);\n const conv2 = pointwiseConvLayer(conv1, params.conv_2, [1, 1]);\n const conv3 = pointwiseConvLayer(conv2, params.conv_3, [2, 2]);\n const conv4 = pointwiseConvLayer(conv3, params.conv_4, [1, 1]);\n const conv5 = pointwiseConvLayer(conv4, params.conv_5, [2, 2]);\n const conv6 = pointwiseConvLayer(conv5, params.conv_6, [1, 1]);\n const conv7 = pointwiseConvLayer(conv6, params.conv_7, [2, 2]);\n\n const boxPrediction0 = boxPredictionLayer(conv11, params.box_predictor_0);\n const boxPrediction1 = boxPredictionLayer(x, params.box_predictor_1);\n const boxPrediction2 = boxPredictionLayer(conv1, params.box_predictor_2);\n const boxPrediction3 = boxPredictionLayer(conv3, params.box_predictor_3);\n const boxPrediction4 = boxPredictionLayer(conv5, params.box_predictor_4);\n const boxPrediction5 = boxPredictionLayer(conv7, params.box_predictor_5);\n\n const boxPredictions = tf.concat([\n boxPrediction0.boxPredictionEncoding,\n boxPrediction1.boxPredictionEncoding,\n boxPrediction2.boxPredictionEncoding,\n boxPrediction3.boxPredictionEncoding,\n boxPrediction4.boxPredictionEncoding,\n boxPrediction5.boxPredictionEncoding,\n ], 1) as tf.Tensor4D;\n\n const classPredictions = tf.concat([\n boxPrediction0.classPrediction,\n boxPrediction1.classPrediction,\n boxPrediction2.classPrediction,\n boxPrediction3.classPrediction,\n boxPrediction4.classPrediction,\n boxPrediction5.classPrediction,\n ], 1) as tf.Tensor4D;\n\n return {\n boxPredictions,\n classPredictions,\n };\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { convLayer } from '../common/index';\nimport { BoxPredictionParams } from './types';\n\nexport function boxPredictionLayer(\n x: tf.Tensor4D,\n params: BoxPredictionParams,\n) {\n return tf.tidy(() => {\n const batchSize = x.shape[0];\n\n const boxPredictionEncoding = tf.reshape(\n convLayer(x, params.box_encoding_predictor),\n [batchSize, -1, 1, 4],\n );\n const classPrediction = tf.reshape(\n convLayer(x, params.class_predictor),\n [batchSize, -1, 3],\n );\n\n return {\n boxPredictionEncoding,\n classPrediction,\n };\n });\n}\n", "export interface ISsdMobilenetv1Options {\n minConfidence?: number\n maxResults?: number\n}\n\nexport class SsdMobilenetv1Options {\n protected _name: string = 'SsdMobilenetv1Options'\n\n private _minConfidence: number\n\n private _maxResults: number\n\n constructor({ minConfidence, maxResults }: ISsdMobilenetv1Options = {}) {\n this._minConfidence = minConfidence || 0.5;\n this._maxResults = maxResults || 100;\n\n if (typeof this._minConfidence !== 'number' || this._minConfidence <= 0 || this._minConfidence >= 1) {\n throw new Error(`${this._name} - expected minConfidence to be a number between 0 and 1`);\n }\n\n if (typeof this._maxResults !== 'number') {\n throw new Error(`${this._name} - expected maxResults to be a number`);\n }\n }\n\n get minConfidence(): number { return this._minConfidence; }\n\n get maxResults(): number { return this._maxResults; }\n}\n", "import { SsdMobilenetv1 } from './SsdMobilenetv1';\n\nexport * from './SsdMobilenetv1';\nexport * from './SsdMobilenetv1Options';\n\nexport function createSsdMobilenetv1(weights: Float32Array) {\n const net = new SsdMobilenetv1();\n net.extractWeights(weights);\n return net;\n}\n\nexport function createFaceDetectionNet(weights: Float32Array) {\n return createSsdMobilenetv1(weights);\n}\n\n// alias for backward compatibily\nexport class FaceDetectionNet extends SsdMobilenetv1 {}\n", "import { Point } from '../classes/index';\n\nexport const IOU_THRESHOLD = 0.4;\n\nexport const BOX_ANCHORS = [\n new Point(0.738768, 0.874946),\n new Point(2.42204, 2.65704),\n new Point(4.30971, 7.04493),\n new Point(10.246, 4.59428),\n new Point(12.6868, 11.8741),\n];\n\nexport const BOX_ANCHORS_SEPARABLE = [\n new Point(1.603231, 2.094468),\n new Point(6.041143, 7.080126),\n new Point(2.882459, 3.518061),\n new Point(4.266906, 5.178857),\n new Point(9.041765, 10.66308),\n];\n\nexport const MEAN_RGB_SEPARABLE: [number, number, number] = [117.001, 114.697, 97.404];\n\nexport const DEFAULT_MODEL_NAME = 'tiny_yolov2_model';\nexport const DEFAULT_MODEL_NAME_SEPARABLE_CONV = 'tiny_yolov2_separable_conv_model';\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { BoundingBox } from '../classes/BoundingBox';\nimport { Dimensions } from '../classes/Dimensions';\nimport { ObjectDetection } from '../classes/ObjectDetection';\nimport { convLayer } from '../common/index';\nimport { ConvParams, SeparableConvParams } from '../common/types';\nimport { toNetInput } from '../dom/index';\nimport { NetInput } from '../dom/NetInput';\nimport { TNetInput } from '../dom/types';\nimport { NeuralNetwork } from '../NeuralNetwork';\nimport { sigmoid } from '../ops/index';\nimport { nonMaxSuppression } from '../ops/nonMaxSuppression';\nimport { normalize } from '../ops/normalize';\nimport { TinyYolov2Config, validateConfig } from './config';\nimport { convWithBatchNorm } from './convWithBatchNorm';\nimport { depthwiseSeparableConv } from './depthwiseSeparableConv';\nimport { extractParams } from './extractParams';\nimport { extractParamsFromWeigthMap } from './extractParamsFromWeigthMap';\nimport { leaky } from './leaky';\nimport { ITinyYolov2Options, TinyYolov2Options } from './TinyYolov2Options';\nimport { DefaultTinyYolov2NetParams, MobilenetParams, TinyYolov2NetParams } from './types';\n\nexport class TinyYolov2Base extends NeuralNetwork {\n public static DEFAULT_FILTER_SIZES = [\n 3, 16, 32, 64, 128, 256, 512, 1024, 1024,\n ]\n\n private _config: TinyYolov2Config\n\n constructor(config: TinyYolov2Config) {\n super('TinyYolov2');\n validateConfig(config);\n this._config = config;\n }\n\n public get config(): TinyYolov2Config {\n return this._config;\n }\n\n public get withClassScores(): boolean {\n return this.config.withClassScores || this.config.classes.length > 1;\n }\n\n public get boxEncodingSize(): number {\n return 5 + (this.withClassScores ? this.config.classes.length : 0);\n }\n\n public runTinyYolov2(x: tf.Tensor4D, params: DefaultTinyYolov2NetParams): tf.Tensor4D {\n let out = convWithBatchNorm(x, params.conv0);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv1);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv2);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv3);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv4);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = convWithBatchNorm(out, params.conv5);\n out = tf.maxPool(out, [2, 2], [1, 1], 'same');\n out = convWithBatchNorm(out, params.conv6);\n out = convWithBatchNorm(out, params.conv7);\n\n return convLayer(out, params.conv8, 'valid', false);\n }\n\n public runMobilenet(x: tf.Tensor4D, params: MobilenetParams): tf.Tensor4D {\n let out = this.config.isFirstLayerConv2d\n ? leaky(convLayer(x, params.conv0 as ConvParams, 'valid', false))\n : depthwiseSeparableConv(x, params.conv0 as SeparableConvParams);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv1);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv2);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv3);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv4);\n out = tf.maxPool(out, [2, 2], [2, 2], 'same');\n out = depthwiseSeparableConv(out, params.conv5);\n out = tf.maxPool(out, [2, 2], [1, 1], 'same');\n out = params.conv6 ? depthwiseSeparableConv(out, params.conv6) : out;\n out = params.conv7 ? depthwiseSeparableConv(out, params.conv7) : out;\n\n return convLayer(out, params.conv8, 'valid', false);\n }\n\n public forwardInput(input: NetInput, inputSize: number): tf.Tensor4D {\n const { params } = this;\n\n if (!params) {\n throw new Error('TinyYolov2 - load model before inference');\n }\n\n return tf.tidy(() => {\n // let batchTensor = input.toBatchTensor(inputSize, false).toFloat()\n let batchTensor = tf.cast(input.toBatchTensor(inputSize, false), 'float32');\n batchTensor = this.config.meanRgb\n ? normalize(batchTensor, this.config.meanRgb)\n : batchTensor;\n batchTensor = batchTensor.div(tf.scalar(256)) as tf.Tensor4D;\n\n return this.config.withSeparableConvs\n ? this.runMobilenet(batchTensor, params as MobilenetParams)\n : this.runTinyYolov2(batchTensor, params as DefaultTinyYolov2NetParams);\n });\n }\n\n public async forward(input: TNetInput, inputSize: number): Promise {\n return this.forwardInput(await toNetInput(input), inputSize);\n }\n\n public async detect(input: TNetInput, forwardParams: ITinyYolov2Options = {}): Promise {\n const { inputSize, scoreThreshold } = new TinyYolov2Options(forwardParams);\n\n const netInput = await toNetInput(input);\n const out = await this.forwardInput(netInput, inputSize);\n const out0 = tf.tidy(() => tf.unstack(out)[0].expandDims()) as tf.Tensor4D;\n\n const inputDimensions = {\n width: netInput.getInputWidth(0),\n height: netInput.getInputHeight(0),\n };\n\n const results = await this.extractBoxes(out0, netInput.getReshapedInputDimensions(0), scoreThreshold);\n out.dispose();\n out0.dispose();\n\n const boxes = results.map((res) => res.box);\n const scores = results.map((res) => res.score);\n const classScores = results.map((res) => res.classScore);\n const classNames = results.map((res) => this.config.classes[res.label]);\n\n const indices = nonMaxSuppression(\n boxes.map((box) => box.rescale(inputSize)),\n scores,\n this.config.iouThreshold,\n true,\n );\n\n const detections = indices.map((idx) => new ObjectDetection(\n scores[idx],\n classScores[idx],\n classNames[idx],\n boxes[idx],\n inputDimensions,\n ));\n\n return detections;\n }\n\n protected getDefaultModelName(): string {\n return '';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap) {\n return extractParamsFromWeigthMap(weightMap, this.config);\n }\n\n protected extractParams(weights: Float32Array) {\n const filterSizes = this.config.filterSizes || TinyYolov2Base.DEFAULT_FILTER_SIZES;\n\n const numFilters = filterSizes ? filterSizes.length : undefined;\n if (numFilters !== 7 && numFilters !== 8 && numFilters !== 9) {\n throw new Error(`TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found ${numFilters} filterSizes in config`);\n }\n return extractParams(weights, this.config, this.boxEncodingSize, filterSizes);\n }\n\n protected async extractBoxes(\n outputTensor: tf.Tensor4D,\n inputBlobDimensions: Dimensions,\n scoreThreshold?: number,\n ) {\n const { width, height } = inputBlobDimensions;\n const inputSize = Math.max(width, height);\n const correctionFactorX = inputSize / width;\n const correctionFactorY = inputSize / height;\n\n const numCells = outputTensor.shape[1];\n const numBoxes = this.config.anchors.length;\n\n const [boxesTensor, scoresTensor, classScoresTensor] = tf.tidy(() => {\n const reshaped = outputTensor.reshape([numCells, numCells, numBoxes, this.boxEncodingSize]);\n\n const boxes = reshaped.slice([0, 0, 0, 0], [numCells, numCells, numBoxes, 4]);\n const scores = reshaped.slice([0, 0, 0, 4], [numCells, numCells, numBoxes, 1]);\n const classScores = this.withClassScores\n ? tf.softmax(reshaped.slice([0, 0, 0, 5], [numCells, numCells, numBoxes, this.config.classes.length]), 3)\n : tf.scalar(0);\n return [boxes, scores, classScores];\n });\n\n const results = [] as any;\n\n const scoresData = await scoresTensor.array();\n const boxesData = await boxesTensor.array();\n for (let row = 0; row < numCells; row++) {\n for (let col = 0; col < numCells; col++) {\n for (let anchor = 0; anchor < numBoxes; anchor++) {\n const score = sigmoid(scoresData[row][col][anchor][0]);\n if (!scoreThreshold || score > scoreThreshold) {\n const ctX = ((col + sigmoid(boxesData[row][col][anchor][0])) / numCells) * correctionFactorX;\n const ctY = ((row + sigmoid(boxesData[row][col][anchor][1])) / numCells) * correctionFactorY;\n const widthLocal = ((Math.exp(boxesData[row][col][anchor][2]) * this.config.anchors[anchor].x) / numCells) * correctionFactorX;\n const heightLocal = ((Math.exp(boxesData[row][col][anchor][3]) * this.config.anchors[anchor].y) / numCells) * correctionFactorY;\n\n const x = (ctX - (widthLocal / 2));\n const y = (ctY - (heightLocal / 2));\n\n const pos = { row, col, anchor };\n const { classScore, label } = this.withClassScores\n ? await this.extractPredictedClass(classScoresTensor as tf.Tensor4D, pos)\n : { classScore: 1, label: 0 };\n\n results.push({\n box: new BoundingBox(x, y, x + widthLocal, y + heightLocal),\n score,\n classScore: score * classScore,\n label,\n ...pos,\n });\n }\n }\n }\n }\n\n boxesTensor.dispose();\n scoresTensor.dispose();\n classScoresTensor.dispose();\n\n return results;\n }\n\n private async extractPredictedClass(classesTensor: tf.Tensor4D, pos: { row: number, col: number, anchor: number }) {\n const { row, col, anchor } = pos;\n const classesData = await classesTensor.array();\n return Array(this.config.classes.length).fill(0)\n .map((_, i) => classesData[row][col][anchor][i])\n .map((classScore, label) => ({\n classScore,\n label,\n }))\n .reduce((max, curr) => (max.classScore > curr.classScore ? max : curr));\n }\n}\n", "import { Point } from '../classes/Point';\n\nexport type TinyYolov2Config = {\n withSeparableConvs: boolean\n iouThreshold: number\n anchors: Point[]\n classes: string[]\n meanRgb?: [number, number, number]\n withClassScores?: boolean,\n filterSizes?: number[]\n isFirstLayerConv2d?: boolean\n}\n\nconst isNumber = (arg: any) => typeof arg === 'number';\n\nexport function validateConfig(config: any) {\n if (!config) {\n throw new Error(`invalid config: ${config}`);\n }\n\n if (typeof config.withSeparableConvs !== 'boolean') {\n throw new Error(`config.withSeparableConvs has to be a boolean, have: ${config.withSeparableConvs}`);\n }\n\n if (!isNumber(config.iouThreshold) || config.iouThreshold < 0 || config.iouThreshold > 1.0) {\n throw new Error(`config.iouThreshold has to be a number between [0, 1], have: ${config.iouThreshold}`);\n }\n\n if (\n !Array.isArray(config.classes)\n || !config.classes.length\n || !config.classes.every((c: any) => typeof c === 'string')\n ) {\n throw new Error(`config.classes has to be an array class names: string[], have: ${JSON.stringify(config.classes)}`);\n }\n\n if (\n !Array.isArray(config.anchors)\n || !config.anchors.length\n || !config.anchors.map((a: any) => a || {}).every((a: any) => isNumber(a.x) && isNumber(a.y))\n ) {\n throw new Error(`config.anchors has to be an array of { x: number, y: number }, have: ${JSON.stringify(config.anchors)}`);\n }\n\n if (config.meanRgb && (\n !Array.isArray(config.meanRgb)\n || config.meanRgb.length !== 3\n || !config.meanRgb.every(isNumber)\n )) {\n throw new Error(`config.meanRgb has to be an array of shape [number, number, number], have: ${JSON.stringify(config.meanRgb)}`);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { leaky } from './leaky';\nimport { ConvWithBatchNorm } from './types';\n\nexport function convWithBatchNorm(x: tf.Tensor4D, params: ConvWithBatchNorm): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D;\n\n out = tf.conv2d(out, params.conv.filters, [1, 1], 'valid');\n out = tf.sub(out, params.bn.sub);\n out = tf.mul(out, params.bn.truediv);\n out = tf.add(out, params.conv.bias);\n\n return leaky(out);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nexport function leaky(x: tf.Tensor4D): tf.Tensor4D {\n return tf.tidy(() => {\n const min = tf.mul(x, tf.scalar(0.10000000149011612));\n return tf.add(tf.relu(tf.sub(x, min)), min);\n // return tf.maximum(x, min)\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { SeparableConvParams } from '../common/types';\nimport { leaky } from './leaky';\n\nexport function depthwiseSeparableConv(x: tf.Tensor4D, params: SeparableConvParams): tf.Tensor4D {\n return tf.tidy(() => {\n let out = tf.pad(x, [[0, 0], [1, 1], [1, 1], [0, 0]]) as tf.Tensor4D;\n\n out = tf.separableConv2d(out, params.depthwise_filter, params.pointwise_filter, [1, 1], 'valid');\n out = tf.add(out, params.bias);\n\n return leaky(out);\n });\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { extractConvParamsFactory } from '../common/index';\nimport { extractSeparableConvParamsFactory } from '../common/extractSeparableConvParamsFactory';\nimport { extractWeightsFactory } from '../common/extractWeightsFactory';\nimport { ExtractWeightsFunction, ParamMapping } from '../common/types';\nimport { TinyYolov2Config } from './config';\nimport { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types';\n\nfunction extractorsFactory(extractWeights: ExtractWeightsFunction, paramMappings: ParamMapping[]) {\n const extractConvParams = extractConvParamsFactory(extractWeights, paramMappings);\n\n function extractBatchNormParams(size: number, mappedPrefix: string): BatchNorm {\n const sub = tf.tensor1d(extractWeights(size));\n const truediv = tf.tensor1d(extractWeights(size));\n\n paramMappings.push(\n { paramPath: `${mappedPrefix}/sub` },\n { paramPath: `${mappedPrefix}/truediv` },\n );\n\n return { sub, truediv };\n }\n\n function extractConvWithBatchNormParams(channelsIn: number, channelsOut: number, mappedPrefix: string): ConvWithBatchNorm {\n const conv = extractConvParams(channelsIn, channelsOut, 3, `${mappedPrefix}/conv`);\n const bn = extractBatchNormParams(channelsOut, `${mappedPrefix}/bn`);\n\n return { conv, bn };\n }\n const extractSeparableConvParams = extractSeparableConvParamsFactory(extractWeights, paramMappings);\n\n return {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n };\n}\n\nexport function extractParams(\n weights: Float32Array,\n config: TinyYolov2Config,\n boxEncodingSize: number,\n filterSizes: number[],\n): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n const {\n extractWeights,\n getRemainingWeights,\n } = extractWeightsFactory(weights);\n\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n } = extractorsFactory(extractWeights, paramMappings);\n\n let params: TinyYolov2NetParams;\n\n if (config.withSeparableConvs) {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes;\n\n const conv0 = config.isFirstLayerConv2d\n ? extractConvParams(s0, s1, 3, 'conv0')\n : extractSeparableConvParams(s0, s1, 'conv0');\n const conv1 = extractSeparableConvParams(s1, s2, 'conv1');\n const conv2 = extractSeparableConvParams(s2, s3, 'conv2');\n const conv3 = extractSeparableConvParams(s3, s4, 'conv3');\n const conv4 = extractSeparableConvParams(s4, s5, 'conv4');\n const conv5 = extractSeparableConvParams(s5, s6, 'conv5');\n const conv6 = s7 ? extractSeparableConvParams(s6, s7, 'conv6') : undefined;\n const conv7 = s8 ? extractSeparableConvParams(s7, s8, 'conv7') : undefined;\n const conv8 = extractConvParams(s8 || s7 || s6, 5 * boxEncodingSize, 1, 'conv8');\n params = {\n conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8,\n };\n } else {\n const [s0, s1, s2, s3, s4, s5, s6, s7, s8] = filterSizes;\n const conv0 = extractConvWithBatchNormParams(s0, s1, 'conv0');\n const conv1 = extractConvWithBatchNormParams(s1, s2, 'conv1');\n const conv2 = extractConvWithBatchNormParams(s2, s3, 'conv2');\n const conv3 = extractConvWithBatchNormParams(s3, s4, 'conv3');\n const conv4 = extractConvWithBatchNormParams(s4, s5, 'conv4');\n const conv5 = extractConvWithBatchNormParams(s5, s6, 'conv5');\n const conv6 = extractConvWithBatchNormParams(s6, s7, 'conv6');\n const conv7 = extractConvWithBatchNormParams(s7, s8, 'conv7');\n const conv8 = extractConvParams(s8, 5 * boxEncodingSize, 1, 'conv8');\n params = {\n conv0, conv1, conv2, conv3, conv4, conv5, conv6, conv7, conv8,\n };\n }\n\n if (getRemainingWeights().length !== 0) {\n throw new Error(`weights remaing after extract: ${getRemainingWeights().length}`);\n }\n\n return { params, paramMappings };\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { ConvParams } from '../common/index';\nimport { disposeUnusedWeightTensors } from '../common/disposeUnusedWeightTensors';\nimport { loadSeparableConvParamsFactory } from '../common/extractSeparableConvParamsFactory';\nimport { extractWeightEntryFactory } from '../common/extractWeightEntryFactory';\nimport { ParamMapping } from '../common/types';\nimport { TinyYolov2Config } from './config';\nimport { BatchNorm, ConvWithBatchNorm, TinyYolov2NetParams } from './types';\n\nfunction extractorsFactory(weightMap: any, paramMappings: ParamMapping[]) {\n const extractWeightEntry = extractWeightEntryFactory(weightMap, paramMappings);\n\n function extractBatchNormParams(prefix: string): BatchNorm {\n const sub = extractWeightEntry(`${prefix}/sub`, 1);\n const truediv = extractWeightEntry(`${prefix}/truediv`, 1);\n return { sub, truediv };\n }\n\n function extractConvParams(prefix: string): ConvParams {\n const filters = extractWeightEntry(`${prefix}/filters`, 4);\n const bias = extractWeightEntry(`${prefix}/bias`, 1);\n return { filters, bias };\n }\n\n function extractConvWithBatchNormParams(prefix: string): ConvWithBatchNorm {\n const conv = extractConvParams(`${prefix}/conv`);\n const bn = extractBatchNormParams(`${prefix}/bn`);\n return { conv, bn };\n }\n\n const extractSeparableConvParams = loadSeparableConvParamsFactory(extractWeightEntry);\n\n return {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n };\n}\n\nexport function extractParamsFromWeigthMap(\n weightMap: tf.NamedTensorMap,\n config: TinyYolov2Config,\n): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n const paramMappings: ParamMapping[] = [];\n\n const {\n extractConvParams,\n extractConvWithBatchNormParams,\n extractSeparableConvParams,\n } = extractorsFactory(weightMap, paramMappings);\n\n let params: TinyYolov2NetParams;\n\n if (config.withSeparableConvs) {\n // eslint-disable-next-line no-mixed-operators\n const numFilters = (config.filterSizes && config.filterSizes.length || 9);\n params = {\n conv0: config.isFirstLayerConv2d ? extractConvParams('conv0') : extractSeparableConvParams('conv0'),\n conv1: extractSeparableConvParams('conv1'),\n conv2: extractSeparableConvParams('conv2'),\n conv3: extractSeparableConvParams('conv3'),\n conv4: extractSeparableConvParams('conv4'),\n conv5: extractSeparableConvParams('conv5'),\n conv6: numFilters > 7 ? extractSeparableConvParams('conv6') : undefined,\n conv7: numFilters > 8 ? extractSeparableConvParams('conv7') : undefined,\n conv8: extractConvParams('conv8'),\n };\n } else {\n params = {\n conv0: extractConvWithBatchNormParams('conv0'),\n conv1: extractConvWithBatchNormParams('conv1'),\n conv2: extractConvWithBatchNormParams('conv2'),\n conv3: extractConvWithBatchNormParams('conv3'),\n conv4: extractConvWithBatchNormParams('conv4'),\n conv5: extractConvWithBatchNormParams('conv5'),\n conv6: extractConvWithBatchNormParams('conv6'),\n conv7: extractConvWithBatchNormParams('conv7'),\n conv8: extractConvParams('conv8'),\n };\n }\n\n disposeUnusedWeightTensors(weightMap, paramMappings);\n\n return { params, paramMappings };\n}\n", "export interface ITinyYolov2Options {\n inputSize?: number\n scoreThreshold?: number\n}\n\nexport class TinyYolov2Options {\n protected _name: string = 'TinyYolov2Options'\n\n private _inputSize: number\n\n private _scoreThreshold: number\n\n constructor({ inputSize, scoreThreshold }: ITinyYolov2Options = {}) {\n this._inputSize = inputSize || 416;\n this._scoreThreshold = scoreThreshold || 0.5;\n\n if (typeof this._inputSize !== 'number' || this._inputSize % 32 !== 0) {\n throw new Error(`${this._name} - expected inputSize to be a number divisible by 32`);\n }\n\n if (typeof this._scoreThreshold !== 'number' || this._scoreThreshold <= 0 || this._scoreThreshold >= 1) {\n throw new Error(`${this._name} - expected scoreThreshold to be a number between 0 and 1`);\n }\n }\n\n get inputSize(): number { return this._inputSize; }\n\n get scoreThreshold(): number { return this._scoreThreshold; }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { FaceDetection, Point } from '../classes/index';\nimport { ParamMapping } from '../common/types';\nimport { TNetInput } from '../dom/types';\nimport {\n BOX_ANCHORS,\n BOX_ANCHORS_SEPARABLE,\n DEFAULT_MODEL_NAME,\n DEFAULT_MODEL_NAME_SEPARABLE_CONV,\n IOU_THRESHOLD,\n MEAN_RGB_SEPARABLE,\n} from './const';\nimport { TinyYolov2Base } from './TinyYolov2Base';\nimport { ITinyYolov2Options } from './TinyYolov2Options';\nimport { TinyYolov2NetParams } from './types';\n\nexport class TinyYolov2 extends TinyYolov2Base {\n constructor(withSeparableConvs: boolean = true) {\n const config = {\n withSeparableConvs,\n iouThreshold: IOU_THRESHOLD,\n classes: ['face'],\n ...(withSeparableConvs\n ? {\n anchors: BOX_ANCHORS_SEPARABLE,\n meanRgb: MEAN_RGB_SEPARABLE,\n }\n : {\n anchors: BOX_ANCHORS,\n withClassScores: true,\n }),\n };\n\n super(config);\n }\n\n public get withSeparableConvs(): boolean {\n return this.config.withSeparableConvs;\n }\n\n public get anchors(): Point[] {\n return this.config.anchors;\n }\n\n public async locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise {\n const objectDetections = await this.detect(input, forwardParams);\n return objectDetections.map((det) => new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }));\n }\n\n protected getDefaultModelName(): string {\n return this.withSeparableConvs ? DEFAULT_MODEL_NAME_SEPARABLE_CONV : DEFAULT_MODEL_NAME;\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n return super.extractParamsFromWeigthMap(weightMap);\n }\n}\n", "import { TinyYolov2 } from './TinyYolov2';\n\nexport * from './TinyYolov2Options';\n\nexport * from './config';\nexport * from './types';\n\nexport { TinyYolov2 };\n\nexport function createTinyYolov2(weights: Float32Array, withSeparableConvs: boolean = true) {\n const net = new TinyYolov2(withSeparableConvs);\n net.extractWeights(weights);\n return net;\n}\n", "import { ITinyYolov2Options, TinyYolov2Options } from '../tinyYolov2/index';\n\nexport interface ITinyFaceDetectorOptions extends ITinyYolov2Options {}\n\nexport class TinyFaceDetectorOptions extends TinyYolov2Options {\n protected _name: string = 'TinyFaceDetectorOptions'\n}\n", "export class ComposableTask {\n public async then(\n // eslint-disable-next-line no-unused-vars\n onfulfilled: (value: T) => T | PromiseLike,\n ): Promise {\n return onfulfilled(await this.run());\n }\n\n public async run(): Promise {\n throw new Error('ComposableTask - run is not implemented');\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport * as tf from '../../dist/tfjs.esm';\n\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';\nimport { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { extendWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\nimport {\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class DetectFaceLandmarksTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected useTinyLandmarkNet: boolean,\n ) {\n super();\n }\n\n protected get landmarkNet(): FaceLandmark68Net | FaceLandmark68TinyNet {\n return this.useTinyLandmarkNet\n ? nets.faceLandmark68TinyNet\n : nets.faceLandmark68Net;\n }\n}\n\nexport class DetectAllFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase[], TSource[]> {\n public async run(): Promise[]> {\n const parentResults = await this.parentTask;\n const detections = parentResults.map((res) => res.detection);\n\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, detections)\n : await extractFaces(this.input, detections);\n\n const faceLandmarksByFace = await Promise.all(faces.map(\n (face) => this.landmarkNet.detectLandmarks(face),\n )) as FaceLandmarks68[];\n\n faces.forEach((f) => f instanceof tf.Tensor && f.dispose());\n\n return parentResults.map((parentResult, i) => extendWithFaceLandmarks(parentResult, faceLandmarksByFace[i]));\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input);\n }\n}\n\nexport class DetectSingleFaceLandmarksTask<\n TSource extends WithFaceDetection<{}>\n> extends DetectFaceLandmarksTaskBase | undefined, TSource | undefined> {\n public async run(): Promise | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n\n const { detection } = parentResult;\n const faces: Array = this.input instanceof tf.Tensor\n ? await extractFaceTensors(this.input, [detection])\n : await extractFaces(this.input, [detection]);\n\n const landmarks = await this.landmarkNet.detectLandmarks(faces[0]) as FaceLandmarks68;\n\n faces.forEach((f) => f instanceof tf.Tensor && f.dispose());\n\n return extendWithFaceLandmarks(parentResult, landmarks);\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input);\n }\n}\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { extractFaces, extractFaceTensors, TNetInput } from '../dom/index';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { isWithFaceLandmarks, WithFaceLandmarks } from '../factories/WithFaceLandmarks';\n\nexport async function extractAllFacesAndComputeResults, TResult>(\n parentResults: TSource[],\n input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n computeResults: (faces: Array) => Promise,\n extractedFaces?: Array | null,\n // eslint-disable-next-line no-unused-vars\n getRectForAlignment: (parentResult: WithFaceLandmarks) => FaceDetection = ({ alignedRect }) => alignedRect,\n) {\n const faceBoxes = parentResults.map((parentResult) => (isWithFaceLandmarks(parentResult)\n ? getRectForAlignment(parentResult)\n : parentResult.detection));\n const faces: Array = extractedFaces || (\n input instanceof tf.Tensor\n ? await extractFaceTensors(input, faceBoxes)\n : await extractFaces(input, faceBoxes)\n );\n\n const results = await computeResults(faces);\n\n faces.forEach((f) => f instanceof tf.Tensor && f.dispose());\n\n return results;\n}\n\nexport async function extractSingleFaceAndComputeResult, TResult>(\n parentResult: TSource,\n input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n computeResult: (face: HTMLCanvasElement | tf.Tensor3D) => Promise,\n extractedFaces?: Array | null,\n // eslint-disable-next-line no-unused-vars\n getRectForAlignment?: (parentResultLocal: WithFaceLandmarks) => FaceDetection,\n) {\n return extractAllFacesAndComputeResults(\n [parentResult],\n input,\n async (faces) => computeResult(faces[0]),\n extractedFaces,\n getRectForAlignment,\n );\n}\n", "import { Point } from '../classes/index';\n\nexport const IOU_THRESHOLD = 0.4;\n\nexport const BOX_ANCHORS = [\n new Point(1.603231, 2.094468),\n new Point(6.041143, 7.080126),\n new Point(2.882459, 3.518061),\n new Point(4.266906, 5.178857),\n new Point(9.041765, 10.66308),\n];\n\nexport const MEAN_RGB: [number, number, number] = [117.001, 114.697, 97.404];\n", "import * as tf from '../../dist/tfjs.esm';\n\nimport { FaceDetection, Point } from '../classes/index';\nimport { ParamMapping } from '../common/index';\nimport { TNetInput } from '../dom/index';\nimport { ITinyYolov2Options } from '../tinyYolov2/index';\nimport { TinyYolov2Base } from '../tinyYolov2/TinyYolov2Base';\nimport { TinyYolov2NetParams } from '../tinyYolov2/types';\nimport { BOX_ANCHORS, IOU_THRESHOLD, MEAN_RGB } from './const';\n\nexport class TinyFaceDetector extends TinyYolov2Base {\n constructor() {\n const config = {\n withSeparableConvs: true,\n iouThreshold: IOU_THRESHOLD,\n classes: ['face'],\n anchors: BOX_ANCHORS,\n meanRgb: MEAN_RGB,\n isFirstLayerConv2d: true,\n filterSizes: [3, 16, 32, 64, 128, 256, 512],\n };\n\n super(config);\n }\n\n public get anchors(): Point[] {\n return this.config.anchors;\n }\n\n public async locateFaces(input: TNetInput, forwardParams: ITinyYolov2Options): Promise {\n const objectDetections = await this.detect(input, forwardParams);\n return objectDetections.map((det) => new FaceDetection(det.score, det.relativeBox, { width: det.imageWidth, height: det.imageHeight }));\n }\n\n protected getDefaultModelName(): string {\n return 'tiny_face_detector_model';\n }\n\n protected extractParamsFromWeigthMap(weightMap: tf.NamedTensorMap): { params: TinyYolov2NetParams, paramMappings: ParamMapping[] } {\n return super.extractParamsFromWeigthMap(weightMap);\n }\n}\n", "import { AgeGenderNet } from '../ageGenderNet/AgeGenderNet';\nimport { AgeAndGenderPrediction } from '../ageGenderNet/types';\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { FaceLandmarks68 } from '../classes/FaceLandmarks68';\nimport { TNetInput } from '../dom/index';\nimport { FaceExpressionNet } from '../faceExpressionNet/FaceExpressionNet';\nimport { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\nimport { FaceLandmark68Net } from '../faceLandmarkNet/FaceLandmark68Net';\nimport { FaceLandmark68TinyNet } from '../faceLandmarkNet/FaceLandmark68TinyNet';\nimport { FaceRecognitionNet } from '../faceRecognitionNet/FaceRecognitionNet';\nimport { SsdMobilenetv1 } from '../ssdMobilenetv1/SsdMobilenetv1';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { TinyFaceDetector } from '../tinyFaceDetector/TinyFaceDetector';\nimport { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';\nimport { ITinyYolov2Options, TinyYolov2 } from '../tinyYolov2/index';\n\nexport const nets = {\n ssdMobilenetv1: new SsdMobilenetv1(),\n tinyFaceDetector: new TinyFaceDetector(),\n tinyYolov2: new TinyYolov2(),\n faceLandmark68Net: new FaceLandmark68Net(),\n faceLandmark68TinyNet: new FaceLandmark68TinyNet(),\n faceRecognitionNet: new FaceRecognitionNet(),\n faceExpressionNet: new FaceExpressionNet(),\n ageGenderNet: new AgeGenderNet(),\n};\n\n/**\n * Attempts to detect all faces in an image using SSD Mobilenetv1 Network.\n *\n * @param input The input image.\n * @param options (optional, default: see SsdMobilenetv1Options constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const ssdMobilenetv1 = (input: TNetInput, options: SsdMobilenetv1Options): Promise => nets.ssdMobilenetv1.locateFaces(input, options);\n\n/**\n * Attempts to detect all faces in an image using the Tiny Face Detector.\n *\n * @param input The input image.\n * @param options (optional, default: see TinyFaceDetectorOptions constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const tinyFaceDetector = (input: TNetInput, options: TinyFaceDetectorOptions): Promise => nets.tinyFaceDetector.locateFaces(input, options);\n\n/**\n * Attempts to detect all faces in an image using the Tiny Yolov2 Network.\n *\n * @param input The input image.\n * @param options (optional, default: see TinyYolov2Options constructor for default parameters).\n * @returns Bounding box of each face with score.\n */\nexport const tinyYolov2 = (input: TNetInput, options: ITinyYolov2Options): Promise => nets.tinyYolov2.locateFaces(input, options);\n\n/**\n * Detects the 68 point face landmark positions of the face shown in an image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns 68 point face landmarks or array thereof in case of batch input.\n */\nexport const detectFaceLandmarks = (input: TNetInput): Promise => nets.faceLandmark68Net.detectLandmarks(input);\n\n/**\n * Detects the 68 point face landmark positions of the face shown in an image\n * using a tinier version of the 68 point face landmark model, which is slightly\n * faster at inference, but also slightly less accurate.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns 68 point face landmarks or array thereof in case of batch input.\n */\nexport const detectFaceLandmarksTiny = (input: TNetInput): Promise => nets.faceLandmark68TinyNet.detectLandmarks(input);\n\n/**\n * Computes a 128 entry vector (face descriptor / face embeddings) from the face shown in an image,\n * which uniquely represents the features of that persons face. The computed face descriptor can\n * be used to measure the similarity between faces, by computing the euclidean distance of two\n * face descriptors.\n *\n * @param inputs The face image extracted from the aligned bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Face descriptor with 128 entries or array thereof in case of batch input.\n */\nexport const computeFaceDescriptor = (input: TNetInput): Promise => nets.faceRecognitionNet.computeFaceDescriptor(input);\n\n/**\n * Recognizes the facial expressions from a face image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Facial expressions with corresponding probabilities or array thereof in case of batch input.\n */\nexport const recognizeFaceExpressions = (input: TNetInput): Promise => nets.faceExpressionNet.predictExpressions(input);\n\n/**\n * Predicts age and gender from a face image.\n *\n * @param inputs The face image extracted from the bounding box of a face. Can\n * also be an array of input images, which will be batch processed.\n * @returns Predictions with age, gender and gender probability or array thereof in case of batch input.\n */\nexport const predictAgeAndGender = (input: TNetInput): Promise => nets.ageGenderNet.predictAgeAndGender(input);\n\nexport const loadSsdMobilenetv1Model = (url: string) => nets.ssdMobilenetv1.load(url);\nexport const loadTinyFaceDetectorModel = (url: string) => nets.tinyFaceDetector.load(url);\nexport const loadTinyYolov2Model = (url: string) => nets.tinyYolov2.load(url);\nexport const loadFaceLandmarkModel = (url: string) => nets.faceLandmark68Net.load(url);\nexport const loadFaceLandmarkTinyModel = (url: string) => nets.faceLandmark68TinyNet.load(url);\nexport const loadFaceRecognitionModel = (url: string) => nets.faceRecognitionNet.load(url);\nexport const loadFaceExpressionModel = (url: string) => nets.faceExpressionNet.load(url);\nexport const loadAgeGenderModel = (url: string) => nets.ageGenderNet.load(url);\n\n// backward compatibility\nexport const loadFaceDetectionModel = loadSsdMobilenetv1Model;\nexport const locateFaces = ssdMobilenetv1;\nexport const detectLandmarks = detectFaceLandmarks;\n", "/* eslint-disable max-classes-per-file */\nimport * as tf from '../../dist/tfjs.esm';\n\nimport { TNetInput } from '../dom/index';\nimport { FaceExpressions } from '../faceExpressionNet/FaceExpressions';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { extendWithFaceExpressions, WithFaceExpressions } from '../factories/WithFaceExpressions';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderTask,\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\n\nexport class PredictFaceExpressionsTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected extractedFaces?: Array,\n ) {\n super();\n }\n}\n\nexport class PredictAllFaceExpressionsTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictFaceExpressionsTaskBase[], TSource[]> {\n public async run(): Promise[]> {\n const parentResults = await this.parentTask;\n\n const faceExpressionsByFace = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n async (faces) => Promise.all(faces.map(\n (face) => nets.faceExpressionNet.predictExpressions(face) as Promise,\n )),\n this.extractedFaces,\n );\n\n return parentResults.map(\n (parentResult, i) => extendWithFaceExpressions(parentResult, faceExpressionsByFace[i]),\n );\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderTask(this, this.input);\n }\n}\n\nexport class PredictSingleFaceExpressionsTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictFaceExpressionsTaskBase | undefined, TSource | undefined> {\n public async run(): Promise | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n\n const faceExpressions = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n (face) => nets.faceExpressionNet.predictExpressions(face) as Promise,\n this.extractedFaces,\n );\n\n return extendWithFaceExpressions(parentResult, faceExpressions);\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderTask(this, this.input);\n }\n}\n\nexport class PredictAllFaceExpressionsWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictAllFaceExpressionsTask {\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input);\n }\n}\n\nexport class PredictSingleFaceExpressionsWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictSingleFaceExpressionsTask {\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input);\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport * as tf from '../../dist/tfjs.esm';\n\nimport { AgeAndGenderPrediction } from '../ageGenderNet/types';\nimport { TNetInput } from '../dom/index';\nimport { extendWithAge, WithAge } from '../factories/WithAge';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { extendWithGender, WithGender } from '../factories/WithGender';\nimport { ComposableTask } from './ComposableTask';\nimport { ComputeAllFaceDescriptorsTask, ComputeSingleFaceDescriptorTask } from './ComputeFaceDescriptorsTasks';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllFaceExpressionsTask,\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class PredictAgeAndGenderTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected extractedFaces?: Array,\n ) {\n super();\n }\n}\n\nexport class PredictAllAgeAndGenderTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictAgeAndGenderTaskBase>[], TSource[]> {\n public async run(): Promise>[]> {\n const parentResults = await this.parentTask;\n\n const ageAndGenderByFace = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n async (faces) => Promise.all(faces.map(\n (face) => nets.ageGenderNet.predictAgeAndGender(face) as Promise,\n )),\n this.extractedFaces,\n );\n\n return parentResults.map((parentResult, i) => {\n const { age, gender, genderProbability } = ageAndGenderByFace[i];\n return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age);\n });\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsTask(this, this.input);\n }\n}\n\nexport class PredictSingleAgeAndGenderTask<\n TSource extends WithFaceDetection<{}>\n> extends PredictAgeAndGenderTaskBase> | undefined, TSource | undefined> {\n public async run(): Promise> | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n\n const { age, gender, genderProbability } = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n (face) => nets.ageGenderNet.predictAgeAndGender(face) as Promise,\n this.extractedFaces,\n );\n\n return extendWithAge(extendWithGender(parentResult, gender, genderProbability), age);\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsTask(this, this.input);\n }\n}\n\nexport class PredictAllAgeAndGenderWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictAllAgeAndGenderTask {\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptors() {\n return new ComputeAllFaceDescriptorsTask(this, this.input);\n }\n}\n\nexport class PredictSingleAgeAndGenderWithFaceAlignmentTask<\n TSource extends WithFaceLandmarks>\n> extends PredictSingleAgeAndGenderTask {\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withFaceDescriptor() {\n return new ComputeSingleFaceDescriptorTask(this, this.input);\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport { TNetInput } from '../dom/index';\nimport { extendWithFaceDescriptor, WithFaceDescriptor } from '../factories/WithFaceDescriptor';\nimport { WithFaceDetection } from '../factories/WithFaceDetection';\nimport { WithFaceLandmarks } from '../factories/WithFaceLandmarks';\nimport { ComposableTask } from './ComposableTask';\nimport { extractAllFacesAndComputeResults, extractSingleFaceAndComputeResult } from './extractFacesAndComputeResults';\nimport { nets } from './nets';\nimport {\n PredictAllAgeAndGenderWithFaceAlignmentTask,\n PredictSingleAgeAndGenderWithFaceAlignmentTask,\n} from './PredictAgeAndGenderTask';\nimport {\n PredictAllFaceExpressionsWithFaceAlignmentTask,\n PredictSingleFaceExpressionsWithFaceAlignmentTask,\n} from './PredictFaceExpressionsTask';\n\nexport class ComputeFaceDescriptorsTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected parentTask: ComposableTask | Promise,\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n ) {\n super();\n }\n}\n\nexport class ComputeAllFaceDescriptorsTask<\n TSource extends WithFaceLandmarks>\n> extends ComputeFaceDescriptorsTaskBase[], TSource[]> {\n public async run(): Promise[]> {\n const parentResults = await this.parentTask;\n\n const descriptors = await extractAllFacesAndComputeResults(\n parentResults,\n this.input,\n (faces) => Promise.all(faces.map((face) => nets.faceRecognitionNet.computeFaceDescriptor(face) as Promise)),\n null,\n (parentResult) => parentResult.landmarks.align(null, { useDlibAlignment: true }),\n );\n\n return descriptors.map((descriptor, i) => extendWithFaceDescriptor(parentResults[i], descriptor));\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n}\n\nexport class ComputeSingleFaceDescriptorTask<\n TSource extends WithFaceLandmarks>\n> extends ComputeFaceDescriptorsTaskBase | undefined, TSource | undefined> {\n public async run(): Promise | undefined> {\n const parentResult = await this.parentTask;\n if (!parentResult) {\n return undefined;\n }\n const descriptor = await extractSingleFaceAndComputeResult(\n parentResult,\n this.input,\n (face) => nets.faceRecognitionNet.computeFaceDescriptor(face) as Promise,\n null,\n // eslint-disable-next-line no-shadow\n (parentResult) => parentResult.landmarks.align(null, { useDlibAlignment: true }),\n );\n\n return extendWithFaceDescriptor(parentResult, descriptor);\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsWithFaceAlignmentTask(this, this.input);\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderWithFaceAlignmentTask(this, this.input);\n }\n}\n", "/* eslint-disable max-classes-per-file */\nimport { FaceDetection } from '../classes/FaceDetection';\nimport { TNetInput } from '../dom/index';\nimport { extendWithFaceDetection, WithFaceDetection } from '../factories/WithFaceDetection';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { TinyFaceDetectorOptions } from '../tinyFaceDetector/TinyFaceDetectorOptions';\nimport { TinyYolov2Options } from '../tinyYolov2/index';\nimport { ComposableTask } from './ComposableTask';\nimport { DetectAllFaceLandmarksTask, DetectSingleFaceLandmarksTask } from './DetectFaceLandmarksTasks';\nimport { nets } from './nets';\nimport { PredictAllAgeAndGenderTask, PredictSingleAgeAndGenderTask } from './PredictAgeAndGenderTask';\nimport { PredictAllFaceExpressionsTask, PredictSingleFaceExpressionsTask } from './PredictFaceExpressionsTask';\nimport { FaceDetectionOptions } from './types';\n\nexport class DetectFacesTaskBase extends ComposableTask {\n constructor(\n // eslint-disable-next-line no-unused-vars\n protected input: TNetInput,\n // eslint-disable-next-line no-unused-vars\n protected options: FaceDetectionOptions = new SsdMobilenetv1Options(),\n ) {\n super();\n }\n}\n\nexport class DetectAllFacesTask extends DetectFacesTaskBase {\n public async run(): Promise {\n const { input, options } = this;\n\n // eslint-disable-next-line no-nested-ternary\n const faceDetectionFunction = options instanceof TinyFaceDetectorOptions\n // eslint-disable-next-line no-shadow\n ? (input: TNetInput) => nets.tinyFaceDetector.locateFaces(input, options)\n : (\n // eslint-disable-next-line no-nested-ternary\n options instanceof SsdMobilenetv1Options\n // eslint-disable-next-line no-shadow\n ? (input: TNetInput) => nets.ssdMobilenetv1.locateFaces(input, options)\n : (\n options instanceof TinyYolov2Options\n // eslint-disable-next-line no-shadow\n ? (input: TNetInput) => nets.tinyYolov2.locateFaces(input, options)\n : null\n )\n );\n\n if (!faceDetectionFunction) {\n throw new Error('detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options');\n }\n\n return faceDetectionFunction(input);\n }\n\n private runAndExtendWithFaceDetections(): Promise[]> {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise[]>(async (resolve) => {\n const detections = await this.run();\n resolve(detections.map((detection) => extendWithFaceDetection({}, detection)));\n });\n }\n\n withFaceLandmarks(useTinyLandmarkNet: boolean = false) {\n return new DetectAllFaceLandmarksTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n useTinyLandmarkNet,\n );\n }\n\n withFaceExpressions() {\n return new PredictAllFaceExpressionsTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n );\n }\n\n withAgeAndGender() {\n return new PredictAllAgeAndGenderTask(\n this.runAndExtendWithFaceDetections(),\n this.input,\n );\n }\n}\n\nexport class DetectSingleFaceTask extends DetectFacesTaskBase {\n public async run(): Promise {\n const faceDetections = await new DetectAllFacesTask(this.input, this.options);\n let faceDetectionWithHighestScore = faceDetections[0];\n faceDetections.forEach((faceDetection) => {\n if (faceDetection.score > faceDetectionWithHighestScore.score) {\n faceDetectionWithHighestScore = faceDetection;\n }\n });\n return faceDetectionWithHighestScore;\n }\n\n private runAndExtendWithFaceDetection(): Promise | undefined> {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise | undefined>(async (resolve) => {\n const detection = await this.run();\n resolve(detection ? extendWithFaceDetection<{}>({}, detection) : undefined);\n });\n }\n\n withFaceLandmarks(useTinyLandmarkNet: boolean = false) {\n return new DetectSingleFaceLandmarksTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n useTinyLandmarkNet,\n );\n }\n\n withFaceExpressions() {\n return new PredictSingleFaceExpressionsTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n );\n }\n\n withAgeAndGender() {\n return new PredictSingleAgeAndGenderTask(\n this.runAndExtendWithFaceDetection(),\n this.input,\n );\n }\n}\n", "import { TNetInput } from '../dom/index';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/SsdMobilenetv1Options';\nimport { DetectAllFacesTask, DetectSingleFaceTask } from './DetectFacesTasks';\nimport { FaceDetectionOptions } from './types';\n\nexport function detectSingleFace(\n input: TNetInput,\n options: FaceDetectionOptions = new SsdMobilenetv1Options(),\n): DetectSingleFaceTask {\n return new DetectSingleFaceTask(input, options);\n}\n\nexport function detectAllFaces(\n input: TNetInput,\n options: FaceDetectionOptions = new SsdMobilenetv1Options(),\n): DetectAllFacesTask {\n return new DetectAllFacesTask(input, options);\n}\n", "import { TNetInput } from '../dom/index';\nimport { WithFaceDescriptor, WithFaceDetection, WithFaceLandmarks } from '../factories/index';\nimport { SsdMobilenetv1Options } from '../ssdMobilenetv1/index';\nimport { ITinyYolov2Options, TinyYolov2Options } from '../tinyYolov2/index';\nimport { detectAllFaces } from './detectFaces';\n\n// export allFaces API for backward compatibility\n\nexport async function allFacesSsdMobilenetv1(\n input: TNetInput,\n minConfidence?: number,\n): Promise>>[]> {\n return detectAllFaces(input, new SsdMobilenetv1Options(minConfidence ? { minConfidence } : {}))\n .withFaceLandmarks()\n .withFaceDescriptors();\n}\n\nexport async function allFacesTinyYolov2(\n input: TNetInput,\n forwardParams: ITinyYolov2Options = {},\n): Promise>>[]> {\n return detectAllFaces(input, new TinyYolov2Options(forwardParams))\n .withFaceLandmarks()\n .withFaceDescriptors();\n}\n\nexport const allFaces = allFacesSsdMobilenetv1;\n", "export function euclideanDistance(arr1: number[] | Float32Array, arr2: number[] | Float32Array) {\n if (arr1.length !== arr2.length) throw new Error('euclideanDistance: arr1.length !== arr2.length');\n\n const desc1 = Array.from(arr1);\n const desc2 = Array.from(arr2);\n\n return Math.sqrt(\n desc1\n .map((val, i) => val - desc2[i])\n .reduce((res, diff) => res + (diff ** 2), 0),\n );\n}\n", "import { FaceMatch } from '../classes/FaceMatch';\nimport { LabeledFaceDescriptors } from '../classes/LabeledFaceDescriptors';\nimport { euclideanDistance } from '../euclideanDistance';\nimport { WithFaceDescriptor } from '../factories/index';\n\nexport class FaceMatcher {\n private _labeledDescriptors: LabeledFaceDescriptors[]\n\n private _distanceThreshold: number\n\n constructor(\n inputs: LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>,\n distanceThreshold: number = 0.6,\n ) {\n this._distanceThreshold = distanceThreshold;\n\n const inputArray = Array.isArray(inputs) ? inputs : [inputs];\n\n if (!inputArray.length) {\n throw new Error('FaceRecognizer.constructor - expected atleast one input');\n }\n\n let count = 1;\n const createUniqueLabel = () => `person ${count++}`;\n\n this._labeledDescriptors = inputArray.map((desc) => {\n if (desc instanceof LabeledFaceDescriptors) {\n return desc;\n }\n\n if (desc instanceof Float32Array) {\n return new LabeledFaceDescriptors(createUniqueLabel(), [desc]);\n }\n\n if (desc.descriptor && desc.descriptor instanceof Float32Array) {\n return new LabeledFaceDescriptors(createUniqueLabel(), [desc.descriptor]);\n }\n\n throw new Error('FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor | Float32Array | Array | Float32Array>');\n });\n }\n\n public get labeledDescriptors(): LabeledFaceDescriptors[] { return this._labeledDescriptors; }\n\n public get distanceThreshold(): number { return this._distanceThreshold; }\n\n public computeMeanDistance(queryDescriptor: Float32Array, descriptors: Float32Array[]): number {\n return descriptors\n .map((d) => euclideanDistance(d, queryDescriptor))\n .reduce((d1, d2) => d1 + d2, 0)\n / (descriptors.length || 1);\n }\n\n public matchDescriptor(queryDescriptor: Float32Array): FaceMatch {\n return this.labeledDescriptors\n .map(({ descriptors, label }) => new FaceMatch(\n label,\n this.computeMeanDistance(queryDescriptor, descriptors),\n ))\n .reduce((best, curr) => (best.distance < curr.distance ? best : curr));\n }\n\n public findBestMatch(queryDescriptor: Float32Array): FaceMatch {\n const bestMatch = this.matchDescriptor(queryDescriptor);\n return bestMatch.distance < this.distanceThreshold\n ? bestMatch\n : new FaceMatch('unknown', bestMatch.distance);\n }\n\n public toJSON(): any {\n return {\n distanceThreshold: this.distanceThreshold,\n labeledDescriptors: this.labeledDescriptors.map((ld) => ld.toJSON()),\n };\n }\n\n public static fromJSON(json: any): FaceMatcher {\n const labeledDescriptors = json.labeledDescriptors\n .map((ld: any) => LabeledFaceDescriptors.fromJSON(ld));\n return new FaceMatcher(labeledDescriptors, json.distanceThreshold);\n }\n}\n", "import { TinyFaceDetector } from './TinyFaceDetector';\n\nexport * from './TinyFaceDetector';\nexport * from './TinyFaceDetectorOptions';\n\nexport function createTinyFaceDetector(weights: Float32Array) {\n const net = new TinyFaceDetector();\n net.extractWeights(weights);\n return net;\n}\n", "import { Dimensions, IDimensions } from './classes/index';\nimport { FaceDetection } from './classes/FaceDetection';\nimport { FaceLandmarks } from './classes/FaceLandmarks';\nimport { extendWithFaceDetection, isWithFaceDetection } from './factories/WithFaceDetection';\nimport { extendWithFaceLandmarks, isWithFaceLandmarks } from './factories/WithFaceLandmarks';\n\nexport function resizeResults(results: T, dimensions: IDimensions): T {\n const { width, height } = new Dimensions(dimensions.width, dimensions.height);\n\n if (width <= 0 || height <= 0) {\n throw new Error(`resizeResults - invalid dimensions: ${JSON.stringify({ width, height })}`);\n }\n\n if (Array.isArray(results)) {\n // return results.map(obj => resizeResults(obj, { width, height })) as any as T\n return (results as Array).map((obj) => resizeResults(obj, { width, height } as IDimensions)) as any as T;\n }\n\n if (isWithFaceLandmarks(results)) {\n const resizedDetection = results.detection.forSize(width, height);\n const resizedLandmarks = results.unshiftedLandmarks.forSize(resizedDetection.box.width, resizedDetection.box.height);\n return extendWithFaceLandmarks(extendWithFaceDetection(results, resizedDetection), resizedLandmarks);\n }\n\n if (isWithFaceDetection(results)) {\n return extendWithFaceDetection(results, results.detection.forSize(width, height));\n }\n\n if (results instanceof FaceLandmarks || results instanceof FaceDetection) {\n return (results as any).forSize(width, height);\n }\n\n return results;\n}\n"], - "mappings": "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", + "mappings": "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", "names": [] } diff --git a/dist/face-api.node.json b/dist/face-api.node.json index 25e0f56..351172e 100644 --- a/dist/face-api.node.json +++ b/dist/face-api.node.json @@ -1,7 +1,7 @@ { "inputs": { "dist/tfjs.esm.js": { - "bytes": 1050, + "bytes": 675, "imports": [] }, "src/draw/drawContour.ts": { @@ -1077,7 +1077,7 @@ ] }, "package.json": { - "bytes": 1807, + "bytes": 1839, "imports": [] }, "src/xception/extractParams.ts": { @@ -2136,482 +2136,482 @@ "dist/face-api.node.js.map": { "imports": [], "inputs": {}, - "bytes": 311388 + "bytes": 310104 }, "dist/face-api.node.js": { "imports": [], "exports": [], "inputs": { "dist/tfjs.esm.js": { - "bytesInOutput": 967 + "bytesInOutput": 542 }, "src/env/isNodejs.ts": { - "bytesInOutput": 233 + "bytesInOutput": 169 }, "src/index.ts": { - "bytesInOutput": 4729 + "bytesInOutput": 3003 }, "src/draw/index.ts": { - "bytesInOutput": 451 + "bytesInOutput": 277 }, "src/draw/drawContour.ts": { - "bytesInOutput": 313 + "bytesInOutput": 213 }, "src/utils/index.ts": { - "bytesInOutput": 1560 + "bytesInOutput": 1011 }, "src/classes/Dimensions.ts": { - "bytesInOutput": 398 + "bytesInOutput": 335 }, "src/classes/Point.ts": { - "bytesInOutput": 473 + "bytesInOutput": 433 }, "src/classes/Box.ts": { - "bytesInOutput": 3305 + "bytesInOutput": 2646 }, "src/classes/BoundingBox.ts": { - "bytesInOutput": 153 + "bytesInOutput": 92 }, "src/classes/index.ts": { "bytesInOutput": 0 }, "src/classes/ObjectDetection.ts": { - "bytesInOutput": 754 + "bytesInOutput": 624 }, "src/classes/FaceDetection.ts": { - "bytesInOutput": 272 - }, - "src/ops/iou.ts": { - "bytesInOutput": 328 - }, - "src/ops/index.ts": { - "bytesInOutput": 98 - }, - "src/ops/minBbox.ts": { - "bytesInOutput": 282 - }, - "src/ops/nonMaxSuppression.ts": { - "bytesInOutput": 555 - }, - "src/ops/normalize.ts": { - "bytesInOutput": 341 - }, - "src/ops/padToSquare.ts": { - "bytesInOutput": 846 - }, - "src/ops/shuffleArray.ts": { - "bytesInOutput": 188 - }, - "src/classes/Rect.ts": { - "bytesInOutput": 136 - }, - "src/classes/FaceLandmarks.ts": { - "bytesInOutput": 1888 - }, - "src/classes/FaceLandmarks5.ts": { "bytesInOutput": 153 }, - "src/classes/FaceLandmarks68.ts": { - "bytesInOutput": 501 + "src/ops/iou.ts": { + "bytesInOutput": 215 }, - "src/classes/FaceMatch.ts": { + "src/ops/index.ts": { + "bytesInOutput": 81 + }, + "src/ops/minBbox.ts": { + "bytesInOutput": 204 + }, + "src/ops/nonMaxSuppression.ts": { + "bytesInOutput": 282 + }, + "src/ops/normalize.ts": { "bytesInOutput": 255 }, + "src/ops/padToSquare.ts": { + "bytesInOutput": 332 + }, + "src/ops/shuffleArray.ts": { + "bytesInOutput": 132 + }, + "src/classes/Rect.ts": { + "bytesInOutput": 87 + }, + "src/classes/FaceLandmarks.ts": { + "bytesInOutput": 1393 + }, + "src/classes/FaceLandmarks5.ts": { + "bytesInOutput": 107 + }, + "src/classes/FaceLandmarks68.ts": { + "bytesInOutput": 464 + }, + "src/classes/FaceMatch.ts": { + "bytesInOutput": 201 + }, "src/classes/LabeledBox.ts": { - "bytesInOutput": 308 + "bytesInOutput": 250 }, "src/classes/LabeledFaceDescriptors.ts": { - "bytesInOutput": 722 + "bytesInOutput": 595 }, "src/classes/PredictedBox.ts": { - "bytesInOutput": 508 + "bytesInOutput": 385 }, "src/factories/WithFaceDetection.ts": { - "bytesInOutput": 170 + "bytesInOutput": 94 }, "src/env/createBrowserEnv.ts": { - "bytesInOutput": 478 + "bytesInOutput": 453 }, "src/env/createFileSystem.ts": { - "bytesInOutput": 361 + "bytesInOutput": 247 }, "src/env/createNodejsEnv.ts": { - "bytesInOutput": 714 + "bytesInOutput": 600 }, "src/env/isBrowser.ts": { - "bytesInOutput": 274 + "bytesInOutput": 267 }, "src/env/index.ts": { - "bytesInOutput": 1157 + "bytesInOutput": 790 }, "src/dom/resolveInput.ts": { - "bytesInOutput": 104 + "bytesInOutput": 84 }, "src/dom/getContext2dOrThrow.ts": { - "bytesInOutput": 446 + "bytesInOutput": 312 }, "src/draw/DrawTextField.ts": { - "bytesInOutput": 2255 + "bytesInOutput": 1484 }, "src/draw/DrawBox.ts": { - "bytesInOutput": 825 + "bytesInOutput": 581 }, "src/draw/drawDetections.ts": { - "bytesInOutput": 390 + "bytesInOutput": 220 }, "src/faceExpressionNet/FaceExpressionNet.ts": { - "bytesInOutput": 878 + "bytesInOutput": 567 }, "src/dom/isMediaLoaded.ts": { - "bytesInOutput": 151 + "bytesInOutput": 114 }, "src/dom/awaitMediaLoaded.ts": { - "bytesInOutput": 542 + "bytesInOutput": 423 }, "src/dom/index.ts": { "bytesInOutput": 0 }, "src/dom/bufferToImage.ts": { - "bytesInOutput": 482 + "bytesInOutput": 386 }, "src/dom/getMediaDimensions.ts": { - "bytesInOutput": 265 + "bytesInOutput": 180 }, "src/dom/createCanvas.ts": { - "bytesInOutput": 618 + "bytesInOutput": 389 }, "src/dom/imageTensorToCanvas.ts": { - "bytesInOutput": 398 + "bytesInOutput": 200 }, "src/dom/isMediaElement.ts": { - "bytesInOutput": 147 + "bytesInOutput": 110 }, "src/dom/NetInput.ts": { - "bytesInOutput": 2884 + "bytesInOutput": 2214 }, "src/dom/imageToSquare.ts": { - "bytesInOutput": 704 + "bytesInOutput": 381 }, "src/dom/toNetInput.ts": { - "bytesInOutput": 1104 + "bytesInOutput": 773 }, "src/dom/extractFaces.ts": { - "bytesInOutput": 752 + "bytesInOutput": 475 }, "src/dom/extractFaceTensors.ts": { - "bytesInOutput": 733 + "bytesInOutput": 442 }, "src/dom/fetchOrThrow.ts": { - "bytesInOutput": 212 + "bytesInOutput": 176 }, "src/dom/fetchImage.ts": { - "bytesInOutput": 269 + "bytesInOutput": 218 }, "src/dom/fetchJson.ts": { - "bytesInOutput": 69 + "bytesInOutput": 48 }, "src/dom/fetchNetWeights.ts": { - "bytesInOutput": 106 + "bytesInOutput": 79 }, "src/dom/loadWeightMap.ts": { - "bytesInOutput": 242 + "bytesInOutput": 123 }, "src/common/getModelUris.ts": { - "bytesInOutput": 765 + "bytesInOutput": 473 }, "src/dom/matchDimensions.ts": { - "bytesInOutput": 201 + "bytesInOutput": 101 }, "src/faceFeatureExtractor/FaceFeatureExtractor.ts": { - "bytesInOutput": 897 + "bytesInOutput": 621 }, "src/NeuralNetwork.ts": { - "bytesInOutput": 3292 + "bytesInOutput": 2640 }, "src/faceFeatureExtractor/denseBlock.ts": { - "bytesInOutput": 1176 + "bytesInOutput": 568 }, "src/common/depthwiseSeparableConv.ts": { - "bytesInOutput": 244 + "bytesInOutput": 157 }, "src/common/convLayer.ts": { - "bytesInOutput": 229 + "bytesInOutput": 141 }, "src/common/index.ts": { "bytesInOutput": 0 }, "src/common/disposeUnusedWeightTensors.ts": { - "bytesInOutput": 175 + "bytesInOutput": 91 }, "src/common/extractConvParamsFactory.ts": { - "bytesInOutput": 460 + "bytesInOutput": 195 }, "src/common/extractFCParamsFactory.ts": { - "bytesInOutput": 428 + "bytesInOutput": 185 }, "src/common/extractSeparableConvParamsFactory.ts": { - "bytesInOutput": 946 + "bytesInOutput": 396 }, "src/common/types.ts": { - "bytesInOutput": 177 + "bytesInOutput": 94 }, "src/common/extractWeightEntryFactory.ts": { - "bytesInOutput": 366 + "bytesInOutput": 188 }, "src/common/extractWeightsFactory.ts": { - "bytesInOutput": 311 + "bytesInOutput": 146 }, "src/faceFeatureExtractor/extractorsFactory.ts": { - "bytesInOutput": 1047 + "bytesInOutput": 377 }, "src/faceFeatureExtractor/extractParams.ts": { - "bytesInOutput": 570 + "bytesInOutput": 343 }, "src/common/loadConvParamsFactory.ts": { - "bytesInOutput": 187 + "bytesInOutput": 97 }, "src/faceFeatureExtractor/loadParamsFactory.ts": { - "bytesInOutput": 984 + "bytesInOutput": 388 }, "src/faceFeatureExtractor/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 400 + "bytesInOutput": 185 }, "src/faceProcessor/FaceProcessor.ts": { - "bytesInOutput": 1585 + "bytesInOutput": 1037 }, "src/common/fullyConnectedLayer.ts": { - "bytesInOutput": 153 + "bytesInOutput": 89 }, "src/faceProcessor/extractParams.ts": { - "bytesInOutput": 382 + "bytesInOutput": 214 }, "src/faceProcessor/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 411 + "bytesInOutput": 177 }, "src/faceProcessor/util.ts": { - "bytesInOutput": 252 + "bytesInOutput": 144 }, "src/faceExpressionNet/FaceExpressions.ts": { - "bytesInOutput": 532 + "bytesInOutput": 369 }, "src/faceExpressionNet/index.ts": { "bytesInOutput": 0 }, "src/factories/WithFaceExpressions.ts": { - "bytesInOutput": 182 + "bytesInOutput": 99 }, "src/draw/drawFaceExpressions.ts": { - "bytesInOutput": 717 + "bytesInOutput": 420 }, "src/factories/WithFaceLandmarks.ts": { - "bytesInOutput": 572 + "bytesInOutput": 333 }, "src/draw/DrawFaceLandmarks.ts": { - "bytesInOutput": 1723 + "bytesInOutput": 1225 }, "package.json": { - "bytesInOutput": 21 + "bytesInOutput": 16 }, "src/ageGenderNet/AgeGenderNet.ts": { - "bytesInOutput": 2559 + "bytesInOutput": 1688 }, "src/xception/TinyXception.ts": { - "bytesInOutput": 1905 + "bytesInOutput": 1265 }, "src/xception/extractParams.ts": { - "bytesInOutput": 2443 + "bytesInOutput": 1234 }, "src/xception/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 2161 + "bytesInOutput": 1047 }, "src/ageGenderNet/extractParams.ts": { - "bytesInOutput": 434 + "bytesInOutput": 258 }, "src/ageGenderNet/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 457 + "bytesInOutput": 209 }, "src/ageGenderNet/types.ts": { - "bytesInOutput": 97 + "bytesInOutput": 67 }, "src/ageGenderNet/index.ts": { "bytesInOutput": 0 }, "src/faceLandmarkNet/FaceLandmark68NetBase.ts": { - "bytesInOutput": 2035 + "bytesInOutput": 1177 }, "src/faceLandmarkNet/FaceLandmark68Net.ts": { - "bytesInOutput": 257 + "bytesInOutput": 167 }, "src/faceLandmarkNet/index.ts": { - "bytesInOutput": 54 + "bytesInOutput": 26 }, "src/faceFeatureExtractor/TinyFaceFeatureExtractor.ts": { - "bytesInOutput": 889 + "bytesInOutput": 619 }, "src/faceFeatureExtractor/extractParamsFromWeigthMapTiny.ts": { - "bytesInOutput": 362 + "bytesInOutput": 166 }, "src/faceFeatureExtractor/extractParamsTiny.ts": { - "bytesInOutput": 517 + "bytesInOutput": 312 }, "src/faceLandmarkNet/FaceLandmark68TinyNet.ts": { - "bytesInOutput": 274 + "bytesInOutput": 176 }, "src/faceRecognitionNet/FaceRecognitionNet.ts": { - "bytesInOutput": 1706 + "bytesInOutput": 1062 }, "src/faceRecognitionNet/convLayer.ts": { - "bytesInOutput": 463 + "bytesInOutput": 277 }, "src/faceRecognitionNet/scaleLayer.ts": { - "bytesInOutput": 123 + "bytesInOutput": 75 }, "src/faceRecognitionNet/extractParams.ts": { - "bytesInOutput": 3405 + "bytesInOutput": 1803 }, "src/faceRecognitionNet/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 2099 + "bytesInOutput": 1113 }, "src/faceRecognitionNet/residualLayer.ts": { - "bytesInOutput": 778 + "bytesInOutput": 466 }, "src/faceRecognitionNet/index.ts": { - "bytesInOutput": 113 + "bytesInOutput": 57 }, "src/factories/WithFaceDescriptor.ts": { - "bytesInOutput": 93 + "bytesInOutput": 48 }, "src/factories/index.ts": { "bytesInOutput": 0 }, "src/factories/WithAge.ts": { - "bytesInOutput": 124 + "bytesInOutput": 86 }, "src/factories/WithGender.ts": { - "bytesInOutput": 244 + "bytesInOutput": 155 }, "src/ssdMobilenetv1/SsdMobilenetv1.ts": { - "bytesInOutput": 1905 + "bytesInOutput": 1224 }, "src/ssdMobilenetv1/extractParams.ts": { - "bytesInOutput": 5967 + "bytesInOutput": 3588 }, "src/ssdMobilenetv1/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 4319 + "bytesInOutput": 2463 }, "src/ssdMobilenetv1/mobileNetV1.ts": { - "bytesInOutput": 1111 + "bytesInOutput": 715 }, "src/ssdMobilenetv1/pointwiseConvLayer.ts": { - "bytesInOutput": 239 + "bytesInOutput": 153 }, "src/ssdMobilenetv1/nonMaxSuppression.ts": { - "bytesInOutput": 1504 + "bytesInOutput": 792 }, "src/ssdMobilenetv1/outputLayer.ts": { - "bytesInOutput": 1590 + "bytesInOutput": 927 }, "src/ssdMobilenetv1/predictionLayer.ts": { - "bytesInOutput": 1419 + "bytesInOutput": 721 }, "src/ssdMobilenetv1/boxPredictionLayer.ts": { - "bytesInOutput": 354 + "bytesInOutput": 223 }, "src/ssdMobilenetv1/SsdMobilenetv1Options.ts": { - "bytesInOutput": 555 + "bytesInOutput": 518 }, "src/ssdMobilenetv1/index.ts": { - "bytesInOutput": 235 + "bytesInOutput": 111 }, "src/tinyYolov2/const.ts": { - "bytesInOutput": 490 + "bytesInOutput": 348 }, "src/tinyYolov2/TinyYolov2Base.ts": { - "bytesInOutput": 5894 + "bytesInOutput": 3656 }, "src/tinyYolov2/config.ts": { - "bytesInOutput": 1168 + "bytesInOutput": 1012 }, "src/tinyYolov2/convWithBatchNorm.ts": { - "bytesInOutput": 323 + "bytesInOutput": 215 }, "src/tinyYolov2/leaky.ts": { - "bytesInOutput": 182 + "bytesInOutput": 128 }, "src/tinyYolov2/depthwiseSeparableConv.ts": { - "bytesInOutput": 293 + "bytesInOutput": 203 }, "src/tinyYolov2/extractParams.ts": { - "bytesInOutput": 2551 + "bytesInOutput": 1290 }, "src/tinyYolov2/extractParamsFromWeigthMap.ts": { - "bytesInOutput": 2034 + "bytesInOutput": 972 }, "src/tinyYolov2/TinyYolov2Options.ts": { - "bytesInOutput": 588 + "bytesInOutput": 556 }, "src/tinyYolov2/TinyYolov2.ts": { - "bytesInOutput": 779 + "bytesInOutput": 545 }, "src/tinyYolov2/index.ts": { - "bytesInOutput": 139 + "bytesInOutput": 65 }, "src/tinyFaceDetector/TinyFaceDetectorOptions.ts": { - "bytesInOutput": 133 + "bytesInOutput": 97 }, "src/globalApi/ComposableTask.ts": { - "bytesInOutput": 159 + "bytesInOutput": 127 }, "src/globalApi/DetectFaceLandmarksTasks.ts": { - "bytesInOutput": 1926 + "bytesInOutput": 1133 }, "src/globalApi/extractFacesAndComputeResults.ts": { - "bytesInOutput": 816 + "bytesInOutput": 300 }, "src/tinyFaceDetector/const.ts": { - "bytesInOutput": 216 + "bytesInOutput": 168 }, "src/tinyFaceDetector/TinyFaceDetector.ts": { - "bytesInOutput": 629 + "bytesInOutput": 495 }, "src/globalApi/nets.ts": { - "bytesInOutput": 1520 + "bytesInOutput": 844 }, "src/globalApi/PredictFaceExpressionsTask.ts": { - "bytesInOutput": 1700 + "bytesInOutput": 852 }, "src/globalApi/PredictAgeAndGenderTask.ts": { - "bytesInOutput": 1794 + "bytesInOutput": 957 }, "src/globalApi/ComputeFaceDescriptorsTasks.ts": { - "bytesInOutput": 1399 + "bytesInOutput": 752 }, "src/globalApi/DetectFacesTasks.ts": { - "bytesInOutput": 2225 + "bytesInOutput": 1343 }, "src/globalApi/detectFaces.ts": { - "bytesInOutput": 224 + "bytesInOutput": 84 }, "src/globalApi/allFaces.ts": { - "bytesInOutput": 392 + "bytesInOutput": 209 }, "src/globalApi/index.ts": { "bytesInOutput": 0 }, "src/euclideanDistance.ts": { - "bytesInOutput": 268 + "bytesInOutput": 205 }, "src/globalApi/FaceMatcher.ts": { - "bytesInOutput": 1844 + "bytesInOutput": 1333 }, "src/tinyFaceDetector/index.ts": { - "bytesInOutput": 109 + "bytesInOutput": 57 }, "src/resizeResults.ts": { - "bytesInOutput": 824 + "bytesInOutput": 443 } }, - "bytes": 132469 + "bytes": 82575 } } } diff --git a/dist/tfjs.esm.js b/dist/tfjs.esm.js index 05da935..f3ae533 100644 --- a/dist/tfjs.esm.js +++ b/dist/tfjs.esm.js @@ -5,43 +5,43 @@ author: ' */ -var __create=Object.create,__defProp=Object.defineProperty,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__getOwnPropNames=Object.getOwnPropertyNames,__getOwnPropDesc=Object.getOwnPropertyDescriptor;var __markAsModule=target=>__defProp(target,"__esModule",{value:!0});var __commonJS=(callback,module)=>()=>(module||(module={exports:{}},callback(module.exports,module)),module.exports),__export=(target,all4)=>{__markAsModule(target);for(var name in all4)__defProp(target,name,{get:all4[name],enumerable:!0})},__exportStar=(target,module,desc)=>{if(__markAsModule(target),module&&typeof module=="object"||typeof module=="function")for(let key of __getOwnPropNames(module))!__hasOwnProp.call(target,key)&&key!=="default"&&__defProp(target,key,{get:()=>module[key],enumerable:!(desc=__getOwnPropDesc(module,key))||desc.enumerable});return target},__toModule=module=>module&&module.__esModule?module:__exportStar(__defProp(module!=null?__create(__getProtoOf(module)):{},"default",{value:module,enumerable:!0}),module);var require_browser=__commonJS(()=>{});var require_alea=__commonJS((exports,module)=>{(function(global2,module2,define2){function Alea(seed){var me=this,mash=Mash();me.next=function(){var t=2091639*me.s0+me.c*23283064365386963e-26;return me.s0=me.s1,me.s1=me.s2,me.s2=t-(me.c=t|0)},me.c=1,me.s0=mash(" "),me.s1=mash(" "),me.s2=mash(" "),me.s0-=mash(seed),me.s0<0&&(me.s0+=1),me.s1-=mash(seed),me.s1<0&&(me.s1+=1),me.s2-=mash(seed),me.s2<0&&(me.s2+=1),mash=null}function copy(f,t){return t.c=f.c,t.s0=f.s0,t.s1=f.s1,t.s2=f.s2,t}function impl(seed,opts){var xg=new Alea(seed),state=opts&&opts.state,prng=xg.next;return prng.int32=function(){return xg.next()*4294967296|0},prng.double=function(){return prng()+(prng()*2097152|0)*11102230246251565e-32},prng.quick=prng,state&&(typeof state=="object"&©(state,xg),prng.state=function(){return copy(xg,{})}),prng}function Mash(){var n=4022871197,mash=function(data){data=data.toString();for(var i=0;i>>0,h-=n,h*=n,n=h>>>0,h-=n,n+=h*4294967296}return(n>>>0)*23283064365386963e-26};return mash}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.alea=impl})(exports,typeof module=="object"&&module,typeof define=="function"&&define)});var require_xor128=__commonJS((exports,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.x=0,me.y=0,me.z=0,me.w=0,me.next=function(){var t=me.x^me.x<<11;return me.x=me.y,me.y=me.z,me.z=me.w,me.w^=me.w>>>19^t^t>>>8},seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state&&(typeof state=="object"&©(state,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor128=impl})(exports,typeof module=="object"&&module,typeof define=="function"&&define)});var require_xorwow=__commonJS((exports,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var t=me.x^me.x>>>2;return me.x=me.y,me.y=me.z,me.z=me.w,me.w=me.v,(me.d=me.d+362437|0)+(me.v=me.v^me.v<<4^(t^t<<1))|0},me.x=0,me.y=0,me.z=0,me.w=0,me.v=0,seed===(seed|0)?me.x=seed:strseed+=seed;for(var k=0;k>>4),me.next()}function copy(f,t){return t.x=f.x,t.y=f.y,t.z=f.z,t.w=f.w,t.v=f.v,t.d=f.d,t}function impl(seed,opts){var xg=new XorGen(seed),state=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state&&(typeof state=="object"&©(state,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorwow=impl})(exports,typeof module=="object"&&module,typeof define=="function"&&define)});var require_xorshift7=__commonJS((exports,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var X=me.x,i=me.i,t,v,w;return t=X[i],t^=t>>>7,v=t^t<<24,t=X[i+1&7],v^=t^t>>>10,t=X[i+3&7],v^=t^t>>>3,t=X[i+4&7],v^=t^t<<7,t=X[i+7&7],t=t^t<<13,v^=t^t<<9,X[i]=v,me.i=i+1&7,v};function init2(me2,seed2){var j,w,X=[];if(seed2===(seed2|0))w=X[0]=seed2;else for(seed2=""+seed2,j=0;j0;--j)me2.next()}init2(me,seed)}function copy(f,t){return t.x=f.x.slice(),t.i=f.i,t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state&&(state.x&©(state,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xorshift7=impl})(exports,typeof module=="object"&&module,typeof define=="function"&&define)});var require_xor4096=__commonJS((exports,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this;me.next=function(){var w=me.w,X=me.X,i=me.i,t,v;return me.w=w=w+1640531527|0,v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,v=X[i]=v^t,me.i=i,v+(w^w>>>16)|0};function init2(me2,seed2){var t,v,i,j,w,X=[],limit=128;for(seed2===(seed2|0)?(v=seed2,seed2=null):(seed2=seed2+"\0",v=0,limit=Math.max(limit,seed2.length)),i=0,j=-32;j>>15,v^=v<<4,v^=v>>>13,j>=0&&(w=w+1640531527|0,t=X[j&127]^=v+w,i=t==0?i+1:0);for(i>=128&&(X[(seed2&&seed2.length||0)&127]=-1),i=127,j=4*128;j>0;--j)v=X[i+34&127],t=X[i=i+1&127],v^=v<<13,t^=t<<17,v^=v>>>15,t^=t>>>12,X[i]=v^t;me2.w=w,me2.X=X,me2.i=i}init2(me,seed)}function copy(f,t){return t.i=f.i,t.w=f.w,t.X=f.X.slice(),t}function impl(seed,opts){seed==null&&(seed=+new Date);var xg=new XorGen(seed),state=opts&&opts.state,prng=function(){return(xg.next()>>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state&&(state.X&©(state,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.xor4096=impl})(exports,typeof module=="object"&&module,typeof define=="function"&&define)});var require_tychei=__commonJS((exports,module)=>{(function(global2,module2,define2){function XorGen(seed){var me=this,strseed="";me.next=function(){var b=me.b,c=me.c,d=me.d,a=me.a;return b=b<<25^b>>>7^c,c=c-d|0,d=d<<24^d>>>8^a,a=a-b|0,me.b=b=b<<20^b>>>12^c,me.c=c=c-d|0,me.d=d<<16^c>>>16^a,me.a=a-b|0},me.a=0,me.b=0,me.c=2654435769|0,me.d=1367130551,seed===Math.floor(seed)?(me.a=seed/4294967296|0,me.b=seed|0):strseed+=seed;for(var k=0;k>>0)/4294967296};return prng.double=function(){do var top=xg.next()>>>11,bot=(xg.next()>>>0)/4294967296,result=(top+bot)/(1<<21);while(result===0);return result},prng.int32=xg.next,prng.quick=prng,state&&(typeof state=="object"&©(state,xg),prng.state=function(){return copy(xg,{})}),prng}module2&&module2.exports?module2.exports=impl:define2&&define2.amd?define2(function(){return impl}):this.tychei=impl})(exports,typeof module=="object"&&module,typeof define=="function"&&define)});var require_crypto=__commonJS(()=>{});var require_seedrandom=__commonJS((exports,module)=>{(function(pool3,math){var global2=this,width=256,chunks=6,digits=52,rngname="random",startdenom=math.pow(width,chunks),significance=math.pow(2,digits),overflow=significance*2,mask=width-1,nodecrypto;function seedrandom5(seed,options,callback){var key=[];options=options==!0?{entropy:!0}:options||{};var shortseed=mixkey(flatten4(options.entropy?[seed,tostring(pool3)]:seed==null?autoseed():seed,3),key),arc4=new ARC4(key),prng=function(){for(var n=arc4.g(chunks),d=startdenom,x=0;n=overflow;)n/=2,d/=2,x>>>=1;return(n+x)/d};return prng.int32=function(){return arc4.g(4)|0},prng.quick=function(){return arc4.g(4)/4294967296},prng.double=prng,mixkey(tostring(arc4.S),pool3),(options.pass||callback||function(prng2,seed2,is_math_call,state){return state&&(state.S&©(state,arc4),prng2.state=function(){return copy(arc4,{})}),is_math_call?(math[rngname]=prng2,seed2):prng2})(prng,shortseed,"global"in options?options.global:this==math,options.state)}math["seed"+rngname]=seedrandom5;function ARC4(key){var t,keylen=key.length,me=this,i=0,j=me.i=me.j=0,s=me.S=[];for(keylen||(key=[keylen++]);i{var alea5=require_alea(),xor128=require_xor128(),xorwow=require_xorwow(),xorshift7=require_xorshift7(),xor4096=require_xor4096(),tychei=require_tychei(),sr=require_seedrandom();sr.alea=alea5;sr.xor128=xor128;sr.xorwow=xorwow;sr.xorshift7=xorshift7;sr.xor4096=xor4096;sr.tychei=tychei;module.exports=sr});var require_string_decoder=__commonJS(()=>{});var require_path=__commonJS(()=>{});var require_worker_threads=__commonJS(()=>{});var require_perf_hooks=__commonJS(()=>{});var require_tfjs_backend_wasm_threaded_simd=__commonJS((exports,module)=>{var WasmBackendModuleThreadedSimd=function(){var _scriptDir=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(_scriptDir=_scriptDir||__filename),function(WasmBackendModuleThreadedSimd2){WasmBackendModuleThreadedSimd2=WasmBackendModuleThreadedSimd2||{};function GROWABLE_HEAP_I8(){return wasmMemory.buffer!=buffer2&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAP8}function GROWABLE_HEAP_U8(){return wasmMemory.buffer!=buffer2&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPU8}function GROWABLE_HEAP_I32(){return wasmMemory.buffer!=buffer2&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAP32}function GROWABLE_HEAP_U32(){return wasmMemory.buffer!=buffer2&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPU32}function GROWABLE_HEAP_F64(){return wasmMemory.buffer!=buffer2&&updateGlobalBufferAndViews(wasmMemory.buffer),HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd2!="undefined"?WasmBackendModuleThreadedSimd2:{},_scriptDir2=void 0,moduleOverrides={},key;for(key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var arguments_=[],thisProgram="./this.program",quit_=function(status,toThrow){throw toThrow},ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module.ENVIRONMENT_IS_PTHREAD||!1;ENVIRONMENT_IS_PTHREAD&&(buffer2=Module.buffer,DYNAMIC_BASE=Module.DYNAMIC_BASE,DYNAMICTOP_PTR=Module.DYNAMICTOP_PTR);var scriptDirectory="";function locateFile(path){return Module.locateFile?Module.locateFile(path,scriptDirectory):scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle,nodeFS,nodePath;if(ENVIRONMENT_IS_NODE){ENVIRONMENT_IS_WORKER?scriptDirectory=require_path().dirname(scriptDirectory)+"/":scriptDirectory=__dirname+"/",read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret},process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),process.on("uncaughtException",function(ex){if(!(ex instanceof ExitStatus))throw ex}),process.on("unhandledRejection",abort),quit_=function(status){process.exit(status)},Module.inspect=function(){return"[Emscripten Module object]"};var nodeWorkerThreads;try{nodeWorkerThreads=require_worker_threads()}catch(e){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),e}Worker=nodeWorkerThreads.Worker}else ENVIRONMENT_IS_SHELL?(typeof read!="undefined"&&(read_=function(f){return read(f)}),readBinary=function(f){var data;return typeof readbuffer=="function"?new Uint8Array(readbuffer(f)):(data=read(f,"binary"),assert3(typeof data=="object"),data)},typeof scriptArgs!="undefined"?arguments_=scriptArgs:typeof arguments!="undefined"&&(arguments_=arguments),typeof quit=="function"&&(quit_=function(status){quit(status)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:document.currentScript&&(scriptDirectory=document.currentScript.src),_scriptDir2&&(scriptDirectory=_scriptDir2),scriptDirectory.indexOf("blob:")!==0?scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1):scriptDirectory="",ENVIRONMENT_IS_NODE?(read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret}):(read_=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.send(null),xhr.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.responseType="arraybuffer",xhr.send(null),new Uint8Array(xhr.response)}),readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.responseType="arraybuffer",xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()},xhr.onerror=onerror,xhr.send(null)}),setWindowTitle=function(title){document.title=title});ENVIRONMENT_IS_NODE&&typeof performance=="undefined"&&(performance=require_perf_hooks().performance);var out=Module.print||console.log.bind(console),err=Module.printErr||console.warn.bind(console);for(key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&(quit_=Module.quit);var Atomics_load=Atomics.load,Atomics_store=Atomics.store,Atomics_compareExchange=Atomics.compareExchange,wasmBinary;Module.wasmBinary&&(wasmBinary=Module.wasmBinary);var noExitRuntime;Module.noExitRuntime&&(noExitRuntime=Module.noExitRuntime),typeof WebAssembly!="object"&&err("no native wasm support detected");var wasmMemory,wasmTable=new WebAssembly.Table({initial:169,maximum:169+0,element:"anyfunc"}),wasmModule,threadInfoStruct=0,selfThreadId=0,ABORT=!1,EXITSTATUS=0;function assert3(condition,text){condition||abort("Assertion failed: "+text)}function getCFunc(ident){var func2=Module["_"+ident];return assert3(func2,"Cannot call unknown function "+ident+", make sure it is exported"),func2}function ccall(ident,returnType,argTypes,args,opts){var toC={string:function(str){var ret2=0;if(str!=null&&str!==0){var len=(str.length<<2)+1;ret2=stackAlloc(len),stringToUTF8(str,ret2,len)}return ret2},array:function(arr){var ret2=stackAlloc(arr.length);return writeArrayToMemory(arr,ret2),ret2}};function convertReturnValue(ret2){return returnType==="string"?UTF8ToString(ret2):returnType==="boolean"?Boolean(ret2):ret2}var func2=getCFunc(ident),cArgs=[],stack2=0;if(args)for(var i=0;i=endIdx);){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224?u0=(u0&15)<<12|u1<<6|u2:u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63,u0<65536)str+=String.fromCharCode(u0);else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;for(var startIdx=outIdx,endIdx=outIdx+maxBytesToWrite-1,i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6,heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18,heap[outIdx++]=128|u>>12&63,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}}return heap[outIdx]=0,outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){for(var len=0,i=0;i=55296&&u<=57343&&(u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023),u<=127?++len:u<=2047?len+=2:u<=65535?len+=3:len+=4}return len}function writeArrayToMemory(array2,buffer3){GROWABLE_HEAP_I8().set(array2,buffer3)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){return x%multiple>0&&(x+=multiple-x%multiple),x}var buffer2,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer2=buf,Module.HEAP8=HEAP8=new Int8Array(buf),Module.HEAP16=HEAP16=new Int16Array(buf),Module.HEAP32=HEAP32=new Int32Array(buf),Module.HEAPU8=HEAPU8=new Uint8Array(buf),Module.HEAPU16=HEAPU16=new Uint16Array(buf),Module.HEAPU32=HEAPU32=new Uint32Array(buf),Module.HEAPF32=HEAPF32=new Float32Array(buf),Module.HEAPF64=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256464,STACKTOP=STACK_BASE,STACK_MAX=13584,DYNAMIC_BASE=5256464,DYNAMICTOP_PTR=12656,INITIAL_INITIAL_MEMORY=Module.INITIAL_MEMORY||16777216;if(ENVIRONMENT_IS_PTHREAD)wasmMemory=Module.wasmMemory,buffer2=Module.buffer;else if(Module.wasmMemory)wasmMemory=Module.wasmMemory;else if(wasmMemory=new WebAssembly.Memory({initial:INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,maximum:2147483648/WASM_PAGE_SIZE,shared:!0}),!(wasmMemory.buffer instanceof SharedArrayBuffer))throw err("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"),ENVIRONMENT_IS_NODE&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"),Error("bad memory");wasmMemory&&(buffer2=wasmMemory.buffer),INITIAL_INITIAL_MEMORY=buffer2.byteLength,updateGlobalBufferAndViews(buffer2),ENVIRONMENT_IS_PTHREAD||(GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE);function callRuntimeCallbacks(callbacks2){for(;callbacks2.length>0;){var callback=callbacks2.shift();if(typeof callback=="function"){callback(Module);continue}var func2=callback.func;typeof func2=="number"?callback.arg===void 0?Module.dynCall_v(func2):Module.dynCall_vi(func2,callback.arg):func2(callback.arg===void 0?null:callback.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1;ENVIRONMENT_IS_PTHREAD&&(runtimeInitialized=!0);function preRun(){if(!ENVIRONMENT_IS_PTHREAD){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}}function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__)}function preMain(){ENVIRONMENT_IS_PTHREAD||callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(!ENVIRONMENT_IS_PTHREAD){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil,Math_floor=Math.floor,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function addRunDependency(id){assert3(!ENVIRONMENT_IS_PTHREAD,"addRunDependency cannot be used in a pthread worker"),runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(id){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var callback=dependenciesFulfilled;dependenciesFulfilled=null,callback()}}Module.preloadedImages={},Module.preloadedAudios={};function abort(what){throw Module.onAbort&&Module.onAbort(what),ENVIRONMENT_IS_PTHREAD&&console.error("Pthread aborting at "+new Error().stack),what+="",out(what),err(what),ABORT=!0,EXITSTATUS=1,what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="tfjs-backend-wasm-threaded-simd.wasm";isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile));function getBinary(){try{if(wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(wasmBinaryFile);throw"both async and sync fetching of the wasm failed"}catch(err2){abort(err2)}}function getBinaryPromise(){return!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch=="function"&&!isFileURI(wasmBinaryFile)?fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response.ok)throw"failed to load wasm binary file at '"+wasmBinaryFile+"'";return response.arrayBuffer()}).catch(function(){return getBinary()}):new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={a:asmLibraryArg};function receiveInstance(instance,module2){var exports3=instance.exports;if(Module.asm=exports3,wasmModule=module2,!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){--numWorkersToLoad||removeRunDependency("wasm-instantiate")})})}}ENVIRONMENT_IS_PTHREAD||addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output.instance,output.module)}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason),abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function")fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(receiveInstantiatedSource)})});else return instantiateArrayBuffer(receiveInstantiatedSource)}if(Module.instantiateWasm)try{var exports2=Module.instantiateWasm(info,receiveInstance);return exports2}catch(e){return err("Module.instantiateWasm callback failed with error: "+e),!1}return instantiateAsync(),{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}ENVIRONMENT_IS_PTHREAD||__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0,__pthread_is_main_runtime_thread=0,__pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0,isMainBrowserThread=isMainBrowserThread|0,isMainRuntimeThread=isMainRuntimeThread|0,__pthread_ptr=pthreadPtr,__pthread_is_main_browser_thread=isMainBrowserThread,__pthread_is_main_runtime_thread=isMainRuntimeThread}Module.__register_pthread_ptr=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},__main_thread_futex_wait_address=13568;function _emscripten_futex_wake(addr,count2){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&!0||count2<0)return-28;if(count2==0)return 0;count2>=2147483647&&(count2=Infinity);var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2),mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress&&(--count2,mainThreadWoken=1,count2<=0))return 1}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count2);if(ret>=0)return ret+mainThreadWoken;throw"Atomics.notify returned an unexpected value "+ret}Module._emscripten_futex_wake=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _kill_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _kill_thread!";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate(),PThread.freeThreadData(pthread),PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1),pthread.worker.pthread=void 0}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _cancel_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _cancel_thread!";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({cmd:"cancel"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _cleanup_thread() can only ever be called from main application thread!";if(!pthread_ptr)throw"Internal Error! Null pthread_ptr in _cleanup_thread!";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1),_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){for(var pthreadPoolSize=8,i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;for(var tlsMemory=13056,i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory),Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock),Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){for(;PThread.exitHandlers.length>0;)PThread.exitHandlers.pop()();PThread.exitHandlers=null}ENVIRONMENT_IS_PTHREAD&&threadInfoStruct&&___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();tb&&(Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode),Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1),Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1),Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0),PThread.runExitHandlers(),_emscripten_futex_wake(tb+0,2147483647),__register_pthread_ptr(0,0,0),threadInfoStruct=0,ENVIRONMENT_IS_PTHREAD&&postMessage({cmd:"exit"}))},threadCancel:function(){PThread.runExitHandlers(),Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1),Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1),_emscripten_futex_wake(threadInfoStruct+0,2147483647),threadInfoStruct=selfThreadId=0,__register_pthread_ptr(0,0,0),postMessage({cmd:"cancelDone"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];pthread&&pthread.worker&&PThread.returnWorkerToPool(pthread.worker)}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0,_free(tlsMemory),_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0,pthread.allocatedOwnStack&&pthread.stackBase&&_free(pthread.stackBase),pthread.stackBase=0,pthread.worker&&(pthread.worker.pthread=null)}},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread],PThread.unusedWorkers.push(worker),PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1),PThread.freeThreadData(worker.pthread),worker.pthread=void 0},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e.data,cmd=d.cmd;if(worker.pthread&&(PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct),d.targetThread&&d.targetThread!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];thread?thread.worker.postMessage(e.data,d.transferList):console.error('Internal error! Worker sent a message "'+cmd+'" to target pthread '+d.targetThread+", but that thread no longer exists!"),PThread.currentProxiedOperationCallerThread=void 0;return}if(cmd==="processQueuedMainThreadWork")_emscripten_main_thread_process_queued_calls();else if(cmd==="spawnThread")__spawn_thread(e.data);else if(cmd==="cleanupThread")__cleanup_thread(d.thread);else if(cmd==="killThread")__kill_thread(d.thread);else if(cmd==="cancelThread")__cancel_thread(d.thread);else if(cmd==="loaded")worker.loaded=!0,onFinishedLoading&&onFinishedLoading(worker),worker.runPthread&&(worker.runPthread(),delete worker.runPthread);else if(cmd==="print")out("Thread "+d.threadId+": "+d.text);else if(cmd==="printErr")err("Thread "+d.threadId+": "+d.text);else if(cmd==="alert")alert("Thread "+d.threadId+": "+d.text);else if(cmd==="exit"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);detached&&PThread.returnWorkerToPool(worker)}else cmd==="cancelDone"?PThread.returnWorkerToPool(worker):cmd==="objectTransfer"?PThread.receiveObjectTransfer(e.data):e.data.target==="setimmediate"?worker.postMessage(e.data):err("worker sent an unknown command "+cmd);PThread.currentProxiedOperationCallerThread=void 0},worker.onerror=function(e){err("pthread sent an error! "+e.filename+":"+e.lineno+": "+e.message)},ENVIRONMENT_IS_NODE&&(worker.on("message",function(data){worker.onmessage({data})}),worker.on("error",function(data){worker.onerror(data)}),worker.on("exit",function(data){console.log("worker exited - TODO: update the worker queue?")})),worker.postMessage({cmd:"load",urlOrBlob:Module.mainScriptUrlOrBlob||_scriptDir2,wasmMemory,wasmModule,DYNAMIC_BASE,DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile("tfjs-backend-wasm-threaded-simd.worker.js");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){return PThread.unusedWorkers.length==0&&(PThread.allocateUnusedWorker(),PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])),PThread.unusedWorkers.length>0?PThread.unusedWorkers.pop():null},busySpinWait:function(msecs){for(var t=performance.now()+msecs;performance.now()>2]=value,value}function _atexit(func2,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func2,arg);__ATEXIT__.unshift({func:func2,arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId)postMessage({cmd:"processQueuedMainThreadWork"});else if(ENVIRONMENT_IS_PTHREAD)postMessage({targetThread:targetThreadId,cmd:"processThreadQueue"});else{var pthread=PThread.pthreads[targetThreadId],worker=pthread&&pthread.worker;if(!worker)return;worker.postMessage({cmd:"processThreadQueue"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0,newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&!0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret==="timed-out")return-73;if(ret==="not-equal")return-6;if(ret==="ok")return 0;throw"Atomics.wait returned an unexpected value "+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now(),tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);for(var ourWaitAddress=addr;addr==ourWaitAddress;){if(tNow=performance.now(),tNow>tEnd)return-73;_emscripten_main_thread_process_queued_calls(),addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator.hardwareConcurrency}function _emscripten_proxy_to_main_thread_js(index,sync){for(var numCallArgs=arguments.length-2,stack2=stackSave(),args=stackAlloc(numCallArgs*8),b=args>>3,i=0;i>3]),buf+=8):(buf=buf+3&~3,args.push(GROWABLE_HEAP_I32()[buf>>2]),buf+=4);return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;for(var b=args>>3,i=0;i>>16),updateGlobalBufferAndViews(wasmMemory.buffer),1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize)return!1;var PAGE_MULTIPLE=65536,maxHeapSize=2147483648;if(requestedSize>maxHeapSize)return!1;for(var minHeapSize=16777216,cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE)),replacement=emscripten_realloc_buffer(newSize);if(replacement)return!0}return!1}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:!1,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i)JSEvents._removeHandler(i);JSEvents.eventHandlers=[],JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){JSEvents.removeEventListenersRegistered||(__ATEXIT__.push(JSEvents.removeAllEventListeners),JSEvents.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return!1;for(var i2 in arrA)if(arrA[i2]!=arrB[i2])return!1;return!0}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList))return}JSEvents.deferredCalls.push({targetFunction,precedence,argsList}),JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId,GROWABLE_HEAP_I32()[varargs+4>>2]=eventData,GROWABLE_HEAP_I32()[varargs+8>>2]=userData,_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs),stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){return target?target==window?"#window":target==screen?"#screen":target&&target.nodeName?target.nodeName:"":""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1,cString=_malloc(length);return stringToUTF8(jsString,cString,length),cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave(),varargs=stackAlloc(12),targetCanvasPtr=0;targetCanvas&&(targetCanvasPtr=stringToNewUTF8(targetCanvas)),GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr,GROWABLE_HEAP_I32()[varargs+4>>2]=width,GROWABLE_HEAP_I32()[varargs+8>>2]=height,_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs),stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):"",_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):void 0);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr&&(GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width,GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height),canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){canvas.offscreenCanvas&&(canvas=canvas.offscreenCanvas);var autoResizeViewport=!1;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width,canvas.height=height,autoResizeViewport&&canvas.GLctxObject.GLctx.viewport(0,0,width,height)}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];return _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height),1}else return-4;return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){return ENVIRONMENT_IS_PTHREAD?_emscripten_proxy_to_main_thread_js(2,1,target,width,height):_emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);return canvas?_emscripten_set_canvas_element_size_calling_thread(target,width,height):_emscripten_set_canvas_element_size_main_thread(target,width,height)}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0,name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext)return ctx.vertexAttribDivisor=function(index,divisor){ext.vertexAttribDivisorANGLE(index,divisor)},ctx.drawArraysInstanced=function(mode,first,count2,primcount){ext.drawArraysInstancedANGLE(mode,first,count2,primcount)},ctx.drawElementsInstanced=function(mode,count2,type,indices,primcount){ext.drawElementsInstancedANGLE(mode,count2,type,indices,primcount)},1}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext)return ctx.createVertexArray=function(){return ext.createVertexArrayOES()},ctx.deleteVertexArray=function(vao){ext.deleteVertexArrayOES(vao)},ctx.bindVertexArray=function(vao){ext.bindVertexArrayOES(vao)},ctx.isVertexArray=function(vao){return ext.isVertexArrayOES(vao)},1}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext)return ctx.drawBuffers=function(n,bufs){ext.drawBuffersWEBGL(n,bufs)},1}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){for(var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE),i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?void 0:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};return ctx.canvas&&(ctx.canvas.GLctxObject=context),GL.contexts[handle]=context,(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault)&&GL.initExtensions(context),handle},makeContextCurrent:function(contextHandle){return GL.currentContext=GL.contexts[contextHandle],Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx,!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){GL.currentContext===GL.contexts[contextHandle]&&(GL.currentContext=null),typeof JSEvents=="object"&&JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas),GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas&&(GL.contexts[contextHandle].GLctx.canvas.GLctxObject=void 0),_free(GL.contexts[contextHandle].handle),GL.contexts[contextHandle]=null},initExtensions:function(context){if(context||(context=GL.currentContext),!context.initExtensionsDone){context.initExtensionsDone=!0;var GLctx2=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx2),__webgl_enable_OES_vertex_array_object(GLctx2),__webgl_enable_WEBGL_draw_buffers(GLctx2),GLctx2.disjointTimerQueryExt=GLctx2.getExtension("EXT_disjoint_timer_query");var automaticallyEnabledExtensions=["OES_texture_float","OES_texture_half_float","OES_standard_derivatives","OES_vertex_array_object","WEBGL_compressed_texture_s3tc","WEBGL_depth_texture","OES_element_index_uint","EXT_texture_filter_anisotropic","EXT_frag_depth","WEBGL_draw_buffers","ANGLE_instanced_arrays","OES_texture_float_linear","OES_texture_half_float_linear","EXT_blend_minmax","EXT_shader_texture_lod","EXT_texture_norm16","WEBGL_compressed_texture_pvrtc","EXT_color_buffer_half_float","WEBGL_color_buffer_float","EXT_sRGB","WEBGL_compressed_texture_etc1","EXT_disjoint_timer_query","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_astc","EXT_color_buffer_float","WEBGL_compressed_texture_s3tc_srgb","EXT_disjoint_timer_query_webgl2","WEBKIT_WEBGL_compressed_texture_pvrtc"],exts=GLctx2.getSupportedExtensions()||[];exts.forEach(function(ext){automaticallyEnabledExtensions.indexOf(ext)!=-1&&GLctx2.getExtension(ext)})}},populateUniformTable:function(program){for(var p2=GL.programs[program],ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1},utable=ptable.uniforms,numUniforms=GLctx.getProgramParameter(p2,35718),i=0;i>2;contextAttributes.alpha=!!GROWABLE_HEAP_I32()[a+(0>>2)],contextAttributes.depth=!!GROWABLE_HEAP_I32()[a+(4>>2)],contextAttributes.stencil=!!GROWABLE_HEAP_I32()[a+(8>>2)],contextAttributes.antialias=!!GROWABLE_HEAP_I32()[a+(12>>2)],contextAttributes.premultipliedAlpha=!!GROWABLE_HEAP_I32()[a+(16>>2)],contextAttributes.preserveDrawingBuffer=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes.powerPreference=__emscripten_webgl_power_preferences[powerPreference],contextAttributes.failIfMajorPerformanceCaveat=!!GROWABLE_HEAP_I32()[a+(28>>2)],contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)],contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)],contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)],contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)],contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)],contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(contextAttributes.explicitSwapControl)return-1;var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a12){return _emscripten_webgl_do_create_context(a0,a12)}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){for(var up=0,i=parts.length-1;i>=0;i--){var last=parts[i];last==="."?parts.splice(i,1):last===".."?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up;up--)parts.unshift("..");return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";return path=PATH.normalizeArray(path.split("/").filter(function(p2){return!!p2}),!isAbsolute).join("/"),!path&&!isAbsolute&&(path="."),path&&trailingSlash&&(path+="/"),(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];return!root&&!dir?".":(dir&&(dir=dir.substr(0,dir.length-1)),root+dir)},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");return lastSlash===-1?path:path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}},SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer3=SYSCALLS.buffers[stream];curr===0||curr===10?((stream===1?out:err)(UTF8ArrayToString(buffer3,0)),buffer3.length=0):buffer3.push(curr)},varargs:void 0,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return ENVIRONMENT_IS_PTHREAD?_emscripten_proxy_to_main_thread_js(3,1,fd):0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);for(var num=0,i=0;i>2],len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2],j=0;j>2]=num,0}function _pthread_cleanup_pop(execute2){var routine=PThread.exitHandlers.pop();execute2&&routine()}function _pthread_cleanup_push(routine,arg){PThread.exitHandlers===null&&(PThread.exitHandlers=[]),PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw"Internal Error! _spawn_thread() can only ever be called from main application thread!";var worker=PThread.getNewWorker();if(worker.pthread!==void 0)throw"Internal error!";if(!threadParams.pthread_ptr)throw"Internal error, no pthread ptr!";PThread.runningWorkers.push(worker);for(var tlsMemory=_malloc(128*4),i=0;i<128;++i)GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0;var stackHigh=threadParams.stackBase+threadParams.stackSize,pthread=PThread.pthreads[threadParams.pthread_ptr]={worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr},tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached),Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory),Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0),Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct),Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42),Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize),Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize),Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy),Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc(),global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale),worker.pthread=pthread;var msg={cmd:"run",start_routine:threadParams.startRoutine,arg:threadParams.arg,threadInfoStruct:threadParams.pthread_ptr,selfThreadId:threadParams.pthread_ptr,parentThreadId:threadParams.parent_pthread_ptr,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now(),worker.postMessage(msg,threadParams.transferList)},worker.loaded&&(worker.runPthread(),delete worker.runPthread)}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread)return err("pthread_getschedparam called with a null thread pointer!"),ERRNO_CODES.ESRCH;var self2=GROWABLE_HEAP_I32()[thread+12>>2];if(self2!==thread)return err("pthread_getschedparam attempted on thread "+thread+", which does not point to a valid thread, or does not exist anymore!"),ERRNO_CODES.ESRCH;var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2),schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);return policy&&(GROWABLE_HEAP_I32()[policy>>2]=schedPolicy),schedparam&&(GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio),0}function _pthread_self(){return __pthread_ptr|0}Module._pthread_self=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer=="undefined")return err("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;if(!pthread_ptr)return err("pthread_create called with a null thread pointer!"),28;var transferList=[],error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error))return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg);if(error)return error;var stackSize=0,stackBase=0,detached=0,schedPolicy=0,schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2],stackSize+=81920,stackBase=GROWABLE_HEAP_I32()[attr+8>>2],detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2],parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24),schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],schedPrio=GROWABLE_HEAP_I32()[attr+24>>2],GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy,GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2],schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}else stackSize=2097152;var allocatedOwnStack=stackBase==0;allocatedOwnStack?stackBase=_memalign(16,stackSize):(stackBase-=stackSize,assert3(stackBase>0));for(var threadInfoStruct2=_malloc(232),i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct2>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct2,GROWABLE_HEAP_I32()[threadInfoStruct2+12>>2]=threadInfoStruct2;var headPtr=threadInfoStruct2+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase,stackSize,allocatedOwnStack,schedPolicy,schedPrio,detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct2,parent_pthread_ptr:_pthread_self(),arg,transferList};return ENVIRONMENT_IS_PTHREAD?(threadParams.cmd="spawnThread",postMessage(threadParams,transferList)):__spawn_thread(threadParams),0}function _roundf(d){return d=+d,d>=0?+Math_floor(d+.5):+Math_ceil(d-.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return typeof navigator=="object"&&navigator.hardwareConcurrency||1}return setErrNo(28),-1}ENVIRONMENT_IS_PTHREAD?PThread.initWorker():PThread.initMainThreadBlock();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf],asmLibraryArg={e:___assert_fail,r:___call_main,w:__emscripten_notify_thread_queue,a:_abort,l:_emscripten_conditional_set_current_thread_status,d:_emscripten_futex_wait,c:_emscripten_futex_wake,h:_emscripten_get_now,g:_emscripten_is_main_browser_thread,x:_emscripten_is_main_runtime_thread,q:_emscripten_memcpy_big,B:_emscripten_num_logical_cores,t:_emscripten_receive_on_main_thread_js,A:_emscripten_resize_heap,u:_emscripten_set_canvas_element_size,k:_emscripten_set_current_thread_status,s:_emscripten_set_thread_name,v:_emscripten_webgl_create_context,m:_fd_close,o:_fd_seek,i:_fd_write,p:initPthreadsJS,memory:wasmMemory||Module.wasmMemory,y:_pthread_cleanup_pop,z:_pthread_cleanup_push,j:_pthread_create,b:_pthread_self,f:_roundf,n:_sysconf,table:wasmTable},asm=createWasm();Module.asm=asm;var ___wasm_call_ctors=Module.___wasm_call_ctors=function(){return(___wasm_call_ctors=Module.___wasm_call_ctors=Module.asm.C).apply(null,arguments)},_init=Module._init=function(){return(_init=Module._init=Module.asm.D).apply(null,arguments)},_register_tensor=Module._register_tensor=function(){return(_register_tensor=Module._register_tensor=Module.asm.E).apply(null,arguments)},_dispose_data=Module._dispose_data=function(){return(_dispose_data=Module._dispose_data=Module.asm.F).apply(null,arguments)},_dispose=Module._dispose=function(){return(_dispose=Module._dispose=Module.asm.G).apply(null,arguments)},_Abs=Module._Abs=function(){return(_Abs=Module._Abs=Module.asm.H).apply(null,arguments)},_Add=Module._Add=function(){return(_Add=Module._Add=Module.asm.I).apply(null,arguments)},_AddN=Module._AddN=function(){return(_AddN=Module._AddN=Module.asm.J).apply(null,arguments)},_ArgMax=Module._ArgMax=function(){return(_ArgMax=Module._ArgMax=Module.asm.K).apply(null,arguments)},_AvgPool=Module._AvgPool=function(){return(_AvgPool=Module._AvgPool=Module.asm.L).apply(null,arguments)},_BatchMatMul=Module._BatchMatMul=function(){return(_BatchMatMul=Module._BatchMatMul=Module.asm.M).apply(null,arguments)},_ClipByValue=Module._ClipByValue=function(){return(_ClipByValue=Module._ClipByValue=Module.asm.N).apply(null,arguments)},_Conv2D=Module._Conv2D=function(){return(_Conv2D=Module._Conv2D=Module.asm.O).apply(null,arguments)},_Conv2DBackpropInput=Module._Conv2DBackpropInput=function(){return(_Conv2DBackpropInput=Module._Conv2DBackpropInput=Module.asm.P).apply(null,arguments)},_Cos=Module._Cos=function(){return(_Cos=Module._Cos=Module.asm.Q).apply(null,arguments)},_CropAndResize=Module._CropAndResize=function(){return(_CropAndResize=Module._CropAndResize=Module.asm.R).apply(null,arguments)},_Cumsum=Module._Cumsum=function(){return(_Cumsum=Module._Cumsum=Module.asm.S).apply(null,arguments)},_DepthToSpace=Module._DepthToSpace=function(){return(_DepthToSpace=Module._DepthToSpace=Module.asm.T).apply(null,arguments)},_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=function(){return(_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=Module.asm.U).apply(null,arguments)},_Equal=Module._Equal=function(){return(_Equal=Module._Equal=Module.asm.V).apply(null,arguments)},_Exp=Module._Exp=function(){return(_Exp=Module._Exp=Module.asm.W).apply(null,arguments)},_FlipLeftRight=Module._FlipLeftRight=function(){return(_FlipLeftRight=Module._FlipLeftRight=Module.asm.X).apply(null,arguments)},_Floor=Module._Floor=function(){return(_Floor=Module._Floor=Module.asm.Y).apply(null,arguments)},_FloorDiv=Module._FloorDiv=function(){return(_FloorDiv=Module._FloorDiv=Module.asm.Z).apply(null,arguments)},_FusedBatchNorm=Module._FusedBatchNorm=function(){return(_FusedBatchNorm=Module._FusedBatchNorm=Module.asm._).apply(null,arguments)},_FusedConv2D=Module._FusedConv2D=function(){return(_FusedConv2D=Module._FusedConv2D=Module.asm.$).apply(null,arguments)},_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=function(){return(_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=Module.asm.aa).apply(null,arguments)},_Gather=Module._Gather=function(){return(_Gather=Module._Gather=Module.asm.ba).apply(null,arguments)},_GatherNd=Module._GatherNd=function(){return(_GatherNd=Module._GatherNd=Module.asm.ca).apply(null,arguments)},_Greater=Module._Greater=function(){return(_Greater=Module._Greater=Module.asm.da).apply(null,arguments)},_GreaterEqual=Module._GreaterEqual=function(){return(_GreaterEqual=Module._GreaterEqual=Module.asm.ea).apply(null,arguments)},_LeakyRelu=Module._LeakyRelu=function(){return(_LeakyRelu=Module._LeakyRelu=Module.asm.fa).apply(null,arguments)},_Less=Module._Less=function(){return(_Less=Module._Less=Module.asm.ga).apply(null,arguments)},_LessEqual=Module._LessEqual=function(){return(_LessEqual=Module._LessEqual=Module.asm.ha).apply(null,arguments)},_Log=Module._Log=function(){return(_Log=Module._Log=Module.asm.ia).apply(null,arguments)},_LogicalAnd=Module._LogicalAnd=function(){return(_LogicalAnd=Module._LogicalAnd=Module.asm.ja).apply(null,arguments)},_Max=Module._Max=function(){return(_Max=Module._Max=Module.asm.ka).apply(null,arguments)},_MaxPool=Module._MaxPool=function(){return(_MaxPool=Module._MaxPool=Module.asm.la).apply(null,arguments)},_Maximum=Module._Maximum=function(){return(_Maximum=Module._Maximum=Module.asm.ma).apply(null,arguments)},_Mean=Module._Mean=function(){return(_Mean=Module._Mean=Module.asm.na).apply(null,arguments)},_Min=Module._Min=function(){return(_Min=Module._Min=Module.asm.oa).apply(null,arguments)},_Minimum=Module._Minimum=function(){return(_Minimum=Module._Minimum=Module.asm.pa).apply(null,arguments)},_Multiply=Module._Multiply=function(){return(_Multiply=Module._Multiply=Module.asm.qa).apply(null,arguments)},_Neg=Module._Neg=function(){return(_Neg=Module._Neg=Module.asm.ra).apply(null,arguments)},_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=function(){return(_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=Module.asm.sa).apply(null,arguments)},_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=function(){return(_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=Module.asm.ta).apply(null,arguments)},_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=function(){return(_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=Module.asm.ua).apply(null,arguments)},_NotEqual=Module._NotEqual=function(){return(_NotEqual=Module._NotEqual=Module.asm.va).apply(null,arguments)},_OneHot=Module._OneHot=function(){return(_OneHot=Module._OneHot=Module.asm.wa).apply(null,arguments)},_PadV2=Module._PadV2=function(){return(_PadV2=Module._PadV2=Module.asm.xa).apply(null,arguments)},_Pow=Module._Pow=function(){return(_Pow=Module._Pow=Module.asm.ya).apply(null,arguments)},_Prelu=Module._Prelu=function(){return(_Prelu=Module._Prelu=Module.asm.za).apply(null,arguments)},_Prod=Module._Prod=function(){return(_Prod=Module._Prod=Module.asm.Aa).apply(null,arguments)},_RealDiv=Module._RealDiv=function(){return(_RealDiv=Module._RealDiv=Module.asm.Ba).apply(null,arguments)},_Relu=Module._Relu=function(){return(_Relu=Module._Relu=Module.asm.Ca).apply(null,arguments)},_Relu6=Module._Relu6=function(){return(_Relu6=Module._Relu6=Module.asm.Da).apply(null,arguments)},_ResizeBilinear=Module._ResizeBilinear=function(){return(_ResizeBilinear=Module._ResizeBilinear=Module.asm.Ea).apply(null,arguments)},_Reverse=Module._Reverse=function(){return(_Reverse=Module._Reverse=Module.asm.Fa).apply(null,arguments)},_RotateWithOffset=Module._RotateWithOffset=function(){return(_RotateWithOffset=Module._RotateWithOffset=Module.asm.Ga).apply(null,arguments)},_Round=Module._Round=function(){return(_Round=Module._Round=Module.asm.Ha).apply(null,arguments)},_Rsqrt=Module._Rsqrt=function(){return(_Rsqrt=Module._Rsqrt=Module.asm.Ia).apply(null,arguments)},_ScatterNd=Module._ScatterNd=function(){return(_ScatterNd=Module._ScatterNd=Module.asm.Ja).apply(null,arguments)},_SelectV2=Module._SelectV2=function(){return(_SelectV2=Module._SelectV2=Module.asm.Ka).apply(null,arguments)},_Sigmoid=Module._Sigmoid=function(){return(_Sigmoid=Module._Sigmoid=Module.asm.La).apply(null,arguments)},_Sin=Module._Sin=function(){return(_Sin=Module._Sin=Module.asm.Ma).apply(null,arguments)},_Softmax=Module._Softmax=function(){return(_Softmax=Module._Softmax=Module.asm.Na).apply(null,arguments)},_Sqrt=Module._Sqrt=function(){return(_Sqrt=Module._Sqrt=Module.asm.Oa).apply(null,arguments)},_Square=Module._Square=function(){return(_Square=Module._Square=Module.asm.Pa).apply(null,arguments)},_SquaredDifference=Module._SquaredDifference=function(){return(_SquaredDifference=Module._SquaredDifference=Module.asm.Qa).apply(null,arguments)},_StridedSlice=Module._StridedSlice=function(){return(_StridedSlice=Module._StridedSlice=Module.asm.Ra).apply(null,arguments)},_Sub=Module._Sub=function(){return(_Sub=Module._Sub=Module.asm.Sa).apply(null,arguments)},_Sum=Module._Sum=function(){return(_Sum=Module._Sum=Module.asm.Ta).apply(null,arguments)},_Tanh=Module._Tanh=function(){return(_Tanh=Module._Tanh=Module.asm.Ua).apply(null,arguments)},_Tile=Module._Tile=function(){return(_Tile=Module._Tile=Module.asm.Va).apply(null,arguments)},_TopK=Module._TopK=function(){return(_TopK=Module._TopK=Module.asm.Wa).apply(null,arguments)},_Transpose=Module._Transpose=function(){return(_Transpose=Module._Transpose=Module.asm.Xa).apply(null,arguments)},__FusedMatMul=Module.__FusedMatMul=function(){return(__FusedMatMul=Module.__FusedMatMul=Module.asm.Ya).apply(null,arguments)},_malloc=Module._malloc=function(){return(_malloc=Module._malloc=Module.asm.Za).apply(null,arguments)},_free=Module._free=function(){return(_free=Module._free=Module.asm._a).apply(null,arguments)},_emscripten_get_global_libc=Module._emscripten_get_global_libc=function(){return(_emscripten_get_global_libc=Module._emscripten_get_global_libc=Module.asm.$a).apply(null,arguments)},___errno_location=Module.___errno_location=function(){return(___errno_location=Module.___errno_location=Module.asm.ab).apply(null,arguments)},___em_js__initPthreadsJS=Module.___em_js__initPthreadsJS=function(){return(___em_js__initPthreadsJS=Module.___em_js__initPthreadsJS=Module.asm.bb).apply(null,arguments)},_memalign=Module._memalign=function(){return(_memalign=Module._memalign=Module.asm.cb).apply(null,arguments)},___pthread_tsd_run_dtors=Module.___pthread_tsd_run_dtors=function(){return(___pthread_tsd_run_dtors=Module.___pthread_tsd_run_dtors=Module.asm.db).apply(null,arguments)},_emscripten_main_thread_process_queued_calls=Module._emscripten_main_thread_process_queued_calls=function(){return(_emscripten_main_thread_process_queued_calls=Module._emscripten_main_thread_process_queued_calls=Module.asm.eb).apply(null,arguments)},_emscripten_current_thread_process_queued_calls=Module._emscripten_current_thread_process_queued_calls=function(){return(_emscripten_current_thread_process_queued_calls=Module._emscripten_current_thread_process_queued_calls=Module.asm.fb).apply(null,arguments)},_emscripten_register_main_browser_thread_id=Module._emscripten_register_main_browser_thread_id=function(){return(_emscripten_register_main_browser_thread_id=Module._emscripten_register_main_browser_thread_id=Module.asm.gb).apply(null,arguments)},_emscripten_main_browser_thread_id=Module._emscripten_main_browser_thread_id=function(){return(_emscripten_main_browser_thread_id=Module._emscripten_main_browser_thread_id=Module.asm.hb).apply(null,arguments)},_emscripten_async_run_in_main_thread=Module._emscripten_async_run_in_main_thread=function(){return(_emscripten_async_run_in_main_thread=Module._emscripten_async_run_in_main_thread=Module.asm.ib).apply(null,arguments)},_emscripten_sync_run_in_main_thread=Module._emscripten_sync_run_in_main_thread=function(){return(_emscripten_sync_run_in_main_thread=Module._emscripten_sync_run_in_main_thread=Module.asm.jb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_0=Module._emscripten_sync_run_in_main_thread_0=function(){return(_emscripten_sync_run_in_main_thread_0=Module._emscripten_sync_run_in_main_thread_0=Module.asm.kb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_1=Module._emscripten_sync_run_in_main_thread_1=function(){return(_emscripten_sync_run_in_main_thread_1=Module._emscripten_sync_run_in_main_thread_1=Module.asm.lb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_2=Module._emscripten_sync_run_in_main_thread_2=function(){return(_emscripten_sync_run_in_main_thread_2=Module._emscripten_sync_run_in_main_thread_2=Module.asm.mb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_xprintf_varargs=Module._emscripten_sync_run_in_main_thread_xprintf_varargs=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module._emscripten_sync_run_in_main_thread_xprintf_varargs=Module.asm.nb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_3=Module._emscripten_sync_run_in_main_thread_3=function(){return(_emscripten_sync_run_in_main_thread_3=Module._emscripten_sync_run_in_main_thread_3=Module.asm.ob).apply(null,arguments)},_emscripten_sync_run_in_main_thread_4=Module._emscripten_sync_run_in_main_thread_4=function(){return(_emscripten_sync_run_in_main_thread_4=Module._emscripten_sync_run_in_main_thread_4=Module.asm.pb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_5=Module._emscripten_sync_run_in_main_thread_5=function(){return(_emscripten_sync_run_in_main_thread_5=Module._emscripten_sync_run_in_main_thread_5=Module.asm.qb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_6=Module._emscripten_sync_run_in_main_thread_6=function(){return(_emscripten_sync_run_in_main_thread_6=Module._emscripten_sync_run_in_main_thread_6=Module.asm.rb).apply(null,arguments)},_emscripten_sync_run_in_main_thread_7=Module._emscripten_sync_run_in_main_thread_7=function(){return(_emscripten_sync_run_in_main_thread_7=Module._emscripten_sync_run_in_main_thread_7=Module.asm.sb).apply(null,arguments)},_emscripten_run_in_main_runtime_thread_js=Module._emscripten_run_in_main_runtime_thread_js=function(){return(_emscripten_run_in_main_runtime_thread_js=Module._emscripten_run_in_main_runtime_thread_js=Module.asm.tb).apply(null,arguments)},_emscripten_async_queue_on_thread_=Module._emscripten_async_queue_on_thread_=function(){return(_emscripten_async_queue_on_thread_=Module._emscripten_async_queue_on_thread_=Module.asm.ub).apply(null,arguments)},_emscripten_tls_init=Module._emscripten_tls_init=function(){return(_emscripten_tls_init=Module._emscripten_tls_init=Module.asm.vb).apply(null,arguments)},stackSave=Module.stackSave=function(){return(stackSave=Module.stackSave=Module.asm.wb).apply(null,arguments)},stackAlloc=Module.stackAlloc=function(){return(stackAlloc=Module.stackAlloc=Module.asm.xb).apply(null,arguments)},stackRestore=Module.stackRestore=function(){return(stackRestore=Module.stackRestore=Module.asm.yb).apply(null,arguments)},dynCall_vi=Module.dynCall_vi=function(){return(dynCall_vi=Module.dynCall_vi=Module.asm.zb).apply(null,arguments)},dynCall_v=Module.dynCall_v=function(){return(dynCall_v=Module.dynCall_v=Module.asm.Ab).apply(null,arguments)},dynCall_ii=Module.dynCall_ii=function(){return(dynCall_ii=Module.dynCall_ii=Module.asm.Bb).apply(null,arguments)};Module.asm=asm,Module.cwrap=cwrap,Module.PThread=PThread,Module.PThread=PThread,Module._pthread_self=_pthread_self,Module.wasmMemory=wasmMemory,Module.ExitStatus=ExitStatus;var calledRun;Module.then=function(func2){if(calledRun)func2(Module);else{var old=Module.onRuntimeInitialized;Module.onRuntimeInitialized=function(){old&&old(),func2(Module)}}return Module};function ExitStatus(status){this.name="ExitStatus",this.message="Program terminated with exit("+status+")",this.status=status}dependenciesFulfilled=function runCaller(){calledRun||run(),calledRun||(dependenciesFulfilled=runCaller)};function run(args){if(args=args||arguments_,runDependencies>0||(preRun(),runDependencies>0))return;function doRun(){calledRun||(calledRun=!0,Module.calledRun=!0,!ABORT&&(initRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),postRun()))}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),doRun()},1)):doRun()}if(Module.run=run,Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();return ENVIRONMENT_IS_PTHREAD||(noExitRuntime=!0),ENVIRONMENT_IS_PTHREAD||run(),WasmBackendModuleThreadedSimd2}}();typeof exports=="object"&&typeof module=="object"?module.exports=WasmBackendModuleThreadedSimd:typeof define=="function"&&define.amd?define([],function(){return WasmBackendModuleThreadedSimd}):typeof exports=="object"&&(exports.WasmBackendModuleThreadedSimd=WasmBackendModuleThreadedSimd)});var require_tfjs_backend_wasm=__commonJS((exports,module)=>{var WasmBackendModule=function(){var _scriptDir=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(_scriptDir=_scriptDir||__filename),function(WasmBackendModule2){WasmBackendModule2=WasmBackendModule2||{};var Module=typeof WasmBackendModule2!="undefined"?WasmBackendModule2:{},moduleOverrides={},key;for(key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var arguments_=[],thisProgram="./this.program",quit_=function(status,toThrow){throw toThrow},ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){return Module.locateFile?Module.locateFile(path,scriptDirectory):scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle,nodeFS,nodePath;ENVIRONMENT_IS_NODE?(ENVIRONMENT_IS_WORKER?scriptDirectory=require_path().dirname(scriptDirectory)+"/":scriptDirectory=__dirname+"/",read_=function(filename,binary){return nodeFS||(nodeFS=require("fs")),nodePath||(nodePath=require_path()),filename=nodePath.normalize(filename),nodeFS.readFileSync(filename,binary?null:"utf8")},readBinary=function(filename){var ret=read_(filename,!0);return ret.buffer||(ret=new Uint8Array(ret)),assert3(ret.buffer),ret},process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),process.on("uncaughtException",function(ex){if(!(ex instanceof ExitStatus))throw ex}),process.on("unhandledRejection",abort),quit_=function(status){process.exit(status)},Module.inspect=function(){return"[Emscripten Module object]"}):ENVIRONMENT_IS_SHELL?(typeof read!="undefined"&&(read_=function(f){return read(f)}),readBinary=function(f){var data;return typeof readbuffer=="function"?new Uint8Array(readbuffer(f)):(data=read(f,"binary"),assert3(typeof data=="object"),data)},typeof scriptArgs!="undefined"?arguments_=scriptArgs:typeof arguments!="undefined"&&(arguments_=arguments),typeof quit=="function"&&(quit_=function(status){quit(status)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:document.currentScript&&(scriptDirectory=document.currentScript.src),_scriptDir&&(scriptDirectory=_scriptDir),scriptDirectory.indexOf("blob:")!==0?scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1):scriptDirectory="",read_=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.send(null),xhr.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=function(url){var xhr=new XMLHttpRequest;return xhr.open("GET",url,!1),xhr.responseType="arraybuffer",xhr.send(null),new Uint8Array(xhr.response)}),readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.responseType="arraybuffer",xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()},xhr.onerror=onerror,xhr.send(null)},setWindowTitle=function(title){document.title=title});var out=Module.print||console.log.bind(console),err=Module.printErr||console.warn.bind(console);for(key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&(quit_=Module.quit);var wasmBinary;Module.wasmBinary&&(wasmBinary=Module.wasmBinary);var noExitRuntime;Module.noExitRuntime&&(noExitRuntime=Module.noExitRuntime),typeof WebAssembly!="object"&&err("no native wasm support detected");var wasmMemory,wasmTable=new WebAssembly.Table({initial:151,maximum:151+0,element:"anyfunc"}),ABORT=!1,EXITSTATUS=0;function assert3(condition,text){condition||abort("Assertion failed: "+text)}function getCFunc(ident){var func2=Module["_"+ident];return assert3(func2,"Cannot call unknown function "+ident+", make sure it is exported"),func2}function ccall(ident,returnType,argTypes,args,opts){var toC={string:function(str){var ret2=0;if(str!=null&&str!==0){var len=(str.length<<2)+1;ret2=stackAlloc(len),stringToUTF8(str,ret2,len)}return ret2},array:function(arr){var ret2=stackAlloc(arr.length);return writeArrayToMemory(arr,ret2),ret2}};function convertReturnValue(ret2){return returnType==="string"?UTF8ToString(ret2):returnType==="boolean"?Boolean(ret2):ret2}var func2=getCFunc(ident),cArgs=[],stack2=0;if(args)for(var i=0;i=endIdx);)++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder)return UTF8Decoder.decode(heap.subarray(idx,endPtr));for(var str="";idx>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;for(var startIdx=outIdx,endIdx=outIdx+maxBytesToWrite-1,i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6,heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18,heap[outIdx++]=128|u>>12&63,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}}return heap[outIdx]=0,outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array2,buffer3){HEAP8.set(array2,buffer3)}var buffer2,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer2=buf,Module.HEAP8=HEAP8=new Int8Array(buf),Module.HEAP16=HEAP16=new Int16Array(buf),Module.HEAP32=HEAP32=new Int32Array(buf),Module.HEAPU8=HEAPU8=new Uint8Array(buf),Module.HEAPU16=HEAPU16=new Uint16Array(buf),Module.HEAPU32=HEAPU32=new Uint32Array(buf),Module.HEAPF32=HEAPF32=new Float32Array(buf),Module.HEAPF64=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module.INITIAL_MEMORY||16777216;function callRuntimeCallbacks(callbacks2){for(;callbacks2.length>0;){var callback=callbacks2.shift();if(typeof callback=="function"){callback(Module);continue}var func2=callback.func;typeof func2=="number"?callback.arg===void 0?Module.dynCall_v(func2):Module.dynCall_vi(func2,callback.arg):func2(callback.arg===void 0?null:callback.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=!0}function postRun(){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil,Math_floor=Math.floor,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function addRunDependency(id){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(id){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var callback=dependenciesFulfilled;dependenciesFulfilled=null,callback()}}Module.preloadedImages={},Module.preloadedAudios={};function abort(what){throw Module.onAbort&&Module.onAbort(what),what+="",out(what),err(what),ABORT=!0,EXITSTATUS=1,what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="tfjs-backend-wasm.wasm";isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile));function getBinary(){try{if(wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(wasmBinaryFile);throw"both async and sync fetching of the wasm failed"}catch(err2){abort(err2)}}function getBinaryPromise(){return!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch=="function"&&!isFileURI(wasmBinaryFile)?fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response.ok)throw"failed to load wasm binary file at '"+wasmBinaryFile+"'";return response.arrayBuffer()}).catch(function(){return getBinary()}):new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={env:asmLibraryArg,wasi_snapshot_preview1:asmLibraryArg};function receiveInstance(instance,module2){var exports3=instance.exports;Module.asm=exports3,wasmMemory=exports3.memory,updateGlobalBufferAndViews(wasmMemory.buffer),removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output.instance)}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason),abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch=="function")fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(receiveInstantiatedSource)})});else return instantiateArrayBuffer(receiveInstantiatedSource)}if(Module.instantiateWasm)try{var exports2=Module.instantiateWasm(info,receiveInstance);return exports2}catch(e){return err("Module.instantiateWasm callback failed with error: "+e),!1}return instantiateAsync(),{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){for(var up=0,i=parts.length-1;i>=0;i--){var last=parts[i];last==="."?parts.splice(i,1):last===".."?(parts.splice(i,1),up++):up&&(parts.splice(i,1),up--)}if(allowAboveRoot)for(;up;up--)parts.unshift("..");return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";return path=PATH.normalizeArray(path.split("/").filter(function(p2){return!!p2}),!isAbsolute).join("/"),!path&&!isAbsolute&&(path="."),path&&trailingSlash&&(path+="/"),(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];return!root&&!dir?".":(dir&&(dir=dir.substr(0,dir.length-1)),root+dir)},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");return lastSlash===-1?path:path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}},SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer3=SYSCALLS.buffers[stream];curr===0||curr===10?((stream===1?out:err)(UTF8ArrayToString(buffer3,0)),buffer3.length=0):buffer3.push(curr)},varargs:void 0,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){for(var num=0,i=0;i>2],len=HEAP32[iov+(i*8+4)>>2],j=0;j>2]=num,0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){return d=+d,d>=0?+Math_floor(d+.5):+Math_ceil(d-.5)}var asmLibraryArg={emscripten_notify_memory_growth:_emscripten_notify_memory_growth,fd_close:_fd_close,fd_seek:_fd_seek,fd_write:_fd_write,proc_exit:_proc_exit,roundf:_roundf},asm=createWasm();Module.asm=asm;var _init=Module._init=function(){return(_init=Module._init=Module.asm.init).apply(null,arguments)},_register_tensor=Module._register_tensor=function(){return(_register_tensor=Module._register_tensor=Module.asm.register_tensor).apply(null,arguments)},_dispose_data=Module._dispose_data=function(){return(_dispose_data=Module._dispose_data=Module.asm.dispose_data).apply(null,arguments)},_dispose=Module._dispose=function(){return(_dispose=Module._dispose=Module.asm.dispose).apply(null,arguments)},_Abs=Module._Abs=function(){return(_Abs=Module._Abs=Module.asm.Abs).apply(null,arguments)},_Add=Module._Add=function(){return(_Add=Module._Add=Module.asm.Add).apply(null,arguments)},_AddN=Module._AddN=function(){return(_AddN=Module._AddN=Module.asm.AddN).apply(null,arguments)},_ArgMax=Module._ArgMax=function(){return(_ArgMax=Module._ArgMax=Module.asm.ArgMax).apply(null,arguments)},_AvgPool=Module._AvgPool=function(){return(_AvgPool=Module._AvgPool=Module.asm.AvgPool).apply(null,arguments)},_BatchMatMul=Module._BatchMatMul=function(){return(_BatchMatMul=Module._BatchMatMul=Module.asm.BatchMatMul).apply(null,arguments)},_ClipByValue=Module._ClipByValue=function(){return(_ClipByValue=Module._ClipByValue=Module.asm.ClipByValue).apply(null,arguments)},_Conv2D=Module._Conv2D=function(){return(_Conv2D=Module._Conv2D=Module.asm.Conv2D).apply(null,arguments)},_Conv2DBackpropInput=Module._Conv2DBackpropInput=function(){return(_Conv2DBackpropInput=Module._Conv2DBackpropInput=Module.asm.Conv2DBackpropInput).apply(null,arguments)},_Cos=Module._Cos=function(){return(_Cos=Module._Cos=Module.asm.Cos).apply(null,arguments)},_CropAndResize=Module._CropAndResize=function(){return(_CropAndResize=Module._CropAndResize=Module.asm.CropAndResize).apply(null,arguments)},_Cumsum=Module._Cumsum=function(){return(_Cumsum=Module._Cumsum=Module.asm.Cumsum).apply(null,arguments)},_DepthToSpace=Module._DepthToSpace=function(){return(_DepthToSpace=Module._DepthToSpace=Module.asm.DepthToSpace).apply(null,arguments)},_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=function(){return(_DepthwiseConv2dNative=Module._DepthwiseConv2dNative=Module.asm.DepthwiseConv2dNative).apply(null,arguments)},_Equal=Module._Equal=function(){return(_Equal=Module._Equal=Module.asm.Equal).apply(null,arguments)},_Exp=Module._Exp=function(){return(_Exp=Module._Exp=Module.asm.Exp).apply(null,arguments)},_FlipLeftRight=Module._FlipLeftRight=function(){return(_FlipLeftRight=Module._FlipLeftRight=Module.asm.FlipLeftRight).apply(null,arguments)},_Floor=Module._Floor=function(){return(_Floor=Module._Floor=Module.asm.Floor).apply(null,arguments)},_FloorDiv=Module._FloorDiv=function(){return(_FloorDiv=Module._FloorDiv=Module.asm.FloorDiv).apply(null,arguments)},_FusedBatchNorm=Module._FusedBatchNorm=function(){return(_FusedBatchNorm=Module._FusedBatchNorm=Module.asm.FusedBatchNorm).apply(null,arguments)},_FusedConv2D=Module._FusedConv2D=function(){return(_FusedConv2D=Module._FusedConv2D=Module.asm.FusedConv2D).apply(null,arguments)},_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=function(){return(_FusedDepthwiseConv2D=Module._FusedDepthwiseConv2D=Module.asm.FusedDepthwiseConv2D).apply(null,arguments)},_Gather=Module._Gather=function(){return(_Gather=Module._Gather=Module.asm.Gather).apply(null,arguments)},_GatherNd=Module._GatherNd=function(){return(_GatherNd=Module._GatherNd=Module.asm.GatherNd).apply(null,arguments)},_Greater=Module._Greater=function(){return(_Greater=Module._Greater=Module.asm.Greater).apply(null,arguments)},_GreaterEqual=Module._GreaterEqual=function(){return(_GreaterEqual=Module._GreaterEqual=Module.asm.GreaterEqual).apply(null,arguments)},_LeakyRelu=Module._LeakyRelu=function(){return(_LeakyRelu=Module._LeakyRelu=Module.asm.LeakyRelu).apply(null,arguments)},_Less=Module._Less=function(){return(_Less=Module._Less=Module.asm.Less).apply(null,arguments)},_LessEqual=Module._LessEqual=function(){return(_LessEqual=Module._LessEqual=Module.asm.LessEqual).apply(null,arguments)},_Log=Module._Log=function(){return(_Log=Module._Log=Module.asm.Log).apply(null,arguments)},_LogicalAnd=Module._LogicalAnd=function(){return(_LogicalAnd=Module._LogicalAnd=Module.asm.LogicalAnd).apply(null,arguments)},_Max=Module._Max=function(){return(_Max=Module._Max=Module.asm.Max).apply(null,arguments)},_MaxPool=Module._MaxPool=function(){return(_MaxPool=Module._MaxPool=Module.asm.MaxPool).apply(null,arguments)},_Maximum=Module._Maximum=function(){return(_Maximum=Module._Maximum=Module.asm.Maximum).apply(null,arguments)},_Mean=Module._Mean=function(){return(_Mean=Module._Mean=Module.asm.Mean).apply(null,arguments)},_Min=Module._Min=function(){return(_Min=Module._Min=Module.asm.Min).apply(null,arguments)},_Minimum=Module._Minimum=function(){return(_Minimum=Module._Minimum=Module.asm.Minimum).apply(null,arguments)},_Multiply=Module._Multiply=function(){return(_Multiply=Module._Multiply=Module.asm.Multiply).apply(null,arguments)},_Neg=Module._Neg=function(){return(_Neg=Module._Neg=Module.asm.Neg).apply(null,arguments)},_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=function(){return(_NonMaxSuppressionV3=Module._NonMaxSuppressionV3=Module.asm.NonMaxSuppressionV3).apply(null,arguments)},_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=function(){return(_NonMaxSuppressionV4=Module._NonMaxSuppressionV4=Module.asm.NonMaxSuppressionV4).apply(null,arguments)},_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=function(){return(_NonMaxSuppressionV5=Module._NonMaxSuppressionV5=Module.asm.NonMaxSuppressionV5).apply(null,arguments)},_NotEqual=Module._NotEqual=function(){return(_NotEqual=Module._NotEqual=Module.asm.NotEqual).apply(null,arguments)},_OneHot=Module._OneHot=function(){return(_OneHot=Module._OneHot=Module.asm.OneHot).apply(null,arguments)},_PadV2=Module._PadV2=function(){return(_PadV2=Module._PadV2=Module.asm.PadV2).apply(null,arguments)},_Pow=Module._Pow=function(){return(_Pow=Module._Pow=Module.asm.Pow).apply(null,arguments)},_Prelu=Module._Prelu=function(){return(_Prelu=Module._Prelu=Module.asm.Prelu).apply(null,arguments)},_Prod=Module._Prod=function(){return(_Prod=Module._Prod=Module.asm.Prod).apply(null,arguments)},_RealDiv=Module._RealDiv=function(){return(_RealDiv=Module._RealDiv=Module.asm.RealDiv).apply(null,arguments)},_Relu=Module._Relu=function(){return(_Relu=Module._Relu=Module.asm.Relu).apply(null,arguments)},_Relu6=Module._Relu6=function(){return(_Relu6=Module._Relu6=Module.asm.Relu6).apply(null,arguments)},_ResizeBilinear=Module._ResizeBilinear=function(){return(_ResizeBilinear=Module._ResizeBilinear=Module.asm.ResizeBilinear).apply(null,arguments)},_Reverse=Module._Reverse=function(){return(_Reverse=Module._Reverse=Module.asm.Reverse).apply(null,arguments)},_RotateWithOffset=Module._RotateWithOffset=function(){return(_RotateWithOffset=Module._RotateWithOffset=Module.asm.RotateWithOffset).apply(null,arguments)},_Round=Module._Round=function(){return(_Round=Module._Round=Module.asm.Round).apply(null,arguments)},_Rsqrt=Module._Rsqrt=function(){return(_Rsqrt=Module._Rsqrt=Module.asm.Rsqrt).apply(null,arguments)},_ScatterNd=Module._ScatterNd=function(){return(_ScatterNd=Module._ScatterNd=Module.asm.ScatterNd).apply(null,arguments)},_SelectV2=Module._SelectV2=function(){return(_SelectV2=Module._SelectV2=Module.asm.SelectV2).apply(null,arguments)},_Sigmoid=Module._Sigmoid=function(){return(_Sigmoid=Module._Sigmoid=Module.asm.Sigmoid).apply(null,arguments)},_Sin=Module._Sin=function(){return(_Sin=Module._Sin=Module.asm.Sin).apply(null,arguments)},_Softmax=Module._Softmax=function(){return(_Softmax=Module._Softmax=Module.asm.Softmax).apply(null,arguments)},_Sqrt=Module._Sqrt=function(){return(_Sqrt=Module._Sqrt=Module.asm.Sqrt).apply(null,arguments)},_Square=Module._Square=function(){return(_Square=Module._Square=Module.asm.Square).apply(null,arguments)},_SquaredDifference=Module._SquaredDifference=function(){return(_SquaredDifference=Module._SquaredDifference=Module.asm.SquaredDifference).apply(null,arguments)},_StridedSlice=Module._StridedSlice=function(){return(_StridedSlice=Module._StridedSlice=Module.asm.StridedSlice).apply(null,arguments)},_Sub=Module._Sub=function(){return(_Sub=Module._Sub=Module.asm.Sub).apply(null,arguments)},_Sum=Module._Sum=function(){return(_Sum=Module._Sum=Module.asm.Sum).apply(null,arguments)},_Tanh=Module._Tanh=function(){return(_Tanh=Module._Tanh=Module.asm.Tanh).apply(null,arguments)},_Tile=Module._Tile=function(){return(_Tile=Module._Tile=Module.asm.Tile).apply(null,arguments)},_TopK=Module._TopK=function(){return(_TopK=Module._TopK=Module.asm.TopK).apply(null,arguments)},_Transpose=Module._Transpose=function(){return(_Transpose=Module._Transpose=Module.asm.Transpose).apply(null,arguments)},__FusedMatMul=Module.__FusedMatMul=function(){return(__FusedMatMul=Module.__FusedMatMul=Module.asm._FusedMatMul).apply(null,arguments)},_malloc=Module._malloc=function(){return(_malloc=Module._malloc=Module.asm.malloc).apply(null,arguments)},_free=Module._free=function(){return(_free=Module._free=Module.asm.free).apply(null,arguments)},__start=Module.__start=function(){return(__start=Module.__start=Module.asm._start).apply(null,arguments)},stackSave=Module.stackSave=function(){return(stackSave=Module.stackSave=Module.asm.stackSave).apply(null,arguments)},stackAlloc=Module.stackAlloc=function(){return(stackAlloc=Module.stackAlloc=Module.asm.stackAlloc).apply(null,arguments)},stackRestore=Module.stackRestore=function(){return(stackRestore=Module.stackRestore=Module.asm.stackRestore).apply(null,arguments)};Module.asm=asm,Module.cwrap=cwrap;var calledRun;Module.then=function(func2){if(calledRun)func2(Module);else{var old=Module.onRuntimeInitialized;Module.onRuntimeInitialized=function(){old&&old(),func2(Module)}}return Module};function ExitStatus(status){this.name="ExitStatus",this.message="Program terminated with exit("+status+")",this.status=status}var calledMain=!1;dependenciesFulfilled=function runCaller(){calledRun||run(),calledRun||(dependenciesFulfilled=runCaller)};function callMain(args){var entryFunction=Module.__start;try{entryFunction();var ret=0;exit(ret,!0)}catch(e){if(e instanceof ExitStatus)return;if(e=="unwind"){noExitRuntime=!0;return}else{var toLog=e;e&&typeof e=="object"&&e.stack&&(toLog=[e,e.stack]),err("exception thrown: "+toLog),quit_(1,e)}}finally{calledMain=!0}}function run(args){if(args=args||arguments_,runDependencies>0||(preRun(),runDependencies>0))return;function doRun(){calledRun||(calledRun=!0,Module.calledRun=!0,!ABORT&&(initRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),shouldRunNow&&callMain(args),postRun()))}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),doRun()},1)):doRun()}Module.run=run;function exit(status,implicit){implicit&&noExitRuntime&&status===0||(noExitRuntime||(ABORT=!0,EXITSTATUS=status,exitRuntime(),Module.onExit&&Module.onExit(status)),quit_(status,new ExitStatus(status)))}if(Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;return Module.noInitialRun&&(shouldRunNow=!1),noExitRuntime=!0,run(),WasmBackendModule2}}();typeof exports=="object"&&typeof module=="object"?module.exports=WasmBackendModule:typeof define=="function"&&define.amd?define([],function(){return WasmBackendModule}):typeof exports=="object"&&(exports.WasmBackendModule=WasmBackendModule)});var EPSILON_FLOAT32=1e-7,EPSILON_FLOAT16=1e-4,DataStorage=class{constructor(backend2,dataMover){this.backend=backend2,this.dataMover=dataMover,this.data=new WeakMap,this.dataIdsCount=0}get(dataId){return this.data.has(dataId)||this.dataMover.moveData(this.backend,dataId),this.data.get(dataId)}set(dataId,value){this.dataIdsCount++,this.data.set(dataId,value)}has(dataId){return this.data.has(dataId)}delete(dataId){return this.dataIdsCount--,this.data.delete(dataId)}numDataIds(){return this.dataIdsCount}},KernelBackend=class{time(f){return notYetImplemented("time")}read(dataId){return notYetImplemented("read")}readSync(dataId){return notYetImplemented("readSync")}numDataIds(){return notYetImplemented("numDataIds")}disposeData(dataId){return notYetImplemented("disposeData")}write(values,shape,dtype){return notYetImplemented("write")}move(dataId,values,shape,dtype){return notYetImplemented("move")}memory(){return notYetImplemented("memory")}floatPrecision(){return notYetImplemented("floatPrecision")}epsilon(){return this.floatPrecision()===32?EPSILON_FLOAT32:EPSILON_FLOAT16}batchMatMul(a,b,transposeA,transposeB){return notYetImplemented("batchMatMul")}fusedBatchMatMul({a,b,transposeA,transposeB,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedBatchMatMul")}slice(x,begin,size){return notYetImplemented("slice")}stridedSlice(x,begin,end,strides){return notYetImplemented("stridedSlice")}unstack(x,axis){return notYetImplemented("unstack")}reverse(a,axis){return notYetImplemented("reverse")}concat(tensors,axis){return notYetImplemented("concat")}neg(a){return notYetImplemented("neg")}add(a,b){return notYetImplemented("add")}addN(tensors){return notYetImplemented("addN")}subtract(a,b){return notYetImplemented("subtract")}multiply(a,b){return notYetImplemented("multiply")}realDivide(a,b){return notYetImplemented("realDivide")}floorDiv(a,b){return notYetImplemented("floorDiv")}sum(x,axes){return notYetImplemented("sum")}prod(x,axes){return notYetImplemented("prod")}unsortedSegmentSum(x,segmentIds,numSegments){return notYetImplemented("unsortedSegmentSum")}argMin(x,axis){return notYetImplemented("argMin")}argMax(x,axis){return notYetImplemented("argMax")}equal(a,b){return notYetImplemented("equal")}notEqual(a,b){return notYetImplemented("notEqual")}less(a,b){return notYetImplemented("less")}lessEqual(a,b){return notYetImplemented("lessEqual")}greater(a,b){return notYetImplemented("greater")}greaterEqual(a,b){return notYetImplemented("greaterEqual")}logicalNot(a){return notYetImplemented("logicalNot")}logicalAnd(a,b){return notYetImplemented("logicalAnd")}logicalOr(a,b){return notYetImplemented("logicalOr")}where(condition){return notYetImplemented("where")}select(condition,a,b){return notYetImplemented("select")}topk(x,k,sorted){return notYetImplemented("topk")}min(x,axes){return notYetImplemented("min")}minimum(a,b){return notYetImplemented("minimum")}mod(a,b){return notYetImplemented("mod")}max(x,axes){return notYetImplemented("max")}maximum(a,b){return notYetImplemented("maximum")}all(x,axes){return notYetImplemented("all")}any(x,axes){return notYetImplemented("any")}squaredDifference(a,b){return notYetImplemented("squaredDifference")}ceil(x){return notYetImplemented("ceil")}floor(x){return notYetImplemented("floor")}round(x){return notYetImplemented("round")}sign(x){return notYetImplemented("sign")}isNaN(x){return notYetImplemented("isNaN")}isInf(x){return notYetImplemented("isInf")}isFinite(x){return notYetImplemented("isFinite")}pow(a,b){return notYetImplemented("pow")}exp(x){return notYetImplemented("exp")}expm1(x){return notYetImplemented("expm1")}softmax(x,dim){return notYetImplemented("softmax")}log(x){return notYetImplemented("log")}log1p(x){return notYetImplemented("log1p")}sqrt(x){return notYetImplemented("sqrt")}rsqrt(x){return notYetImplemented("rsqrt")}square(x){return notYetImplemented("square")}reciprocal(x){return notYetImplemented("reciprocal")}relu(x){return notYetImplemented("relu")}relu6(x){return notYetImplemented("relu6")}prelu(x,a){return notYetImplemented("prelu")}elu(x){return notYetImplemented("elu")}eluDer(dy,y){return notYetImplemented("eluDer")}selu(x){return notYetImplemented("selu")}int(x){return notYetImplemented("int")}clip(x,min6,max6){return notYetImplemented("clip")}abs(x){return notYetImplemented("abs")}complexAbs(x){return notYetImplemented("complexAbs")}sigmoid(x){return notYetImplemented("sigmoid")}softplus(x){return notYetImplemented("softplus")}sin(x){return notYetImplemented("sin")}cos(x){return notYetImplemented("cos")}tan(x){return notYetImplemented("tan")}asin(x){return notYetImplemented("asin")}acos(x){return notYetImplemented("acos")}atan(x){return notYetImplemented("atan")}atan2(a,b){return notYetImplemented("atan2")}sinh(x){return notYetImplemented("sinh")}cosh(x){return notYetImplemented("cosh")}tanh(x){return notYetImplemented("tanh")}asinh(x){return notYetImplemented("asinh")}acosh(x){return notYetImplemented("acosh")}atanh(x){return notYetImplemented("atanh")}erf(x){return notYetImplemented("erf")}step(x,alpha){return notYetImplemented("step")}fusedConv2d({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedConv2d")}conv2d(x,filter,convInfo){return notYetImplemented("conv2d")}conv2dDerInput(dy,filter,convInfo){return notYetImplemented("conv2dDerInput")}conv2dDerFilter(x,dY,convInfo){return notYetImplemented("conv2dDerFilter")}fusedDepthwiseConv2D({input:input2,filter,convInfo,bias,activation:activation2,preluActivationWeights}){return notYetImplemented("fusedDepthwiseConv2D")}depthwiseConv2D(input2,filter,convInfo){return notYetImplemented("depthwiseConv2D")}depthwiseConv2DDerInput(dy,filter,convInfo){return notYetImplemented("depthwiseConv2DDerInput")}depthwiseConv2DDerFilter(x,dY,convInfo){return notYetImplemented("depthwiseConv2DDerFilter")}conv3d(x,filter,convInfo){return notYetImplemented("conv3d")}conv3dDerInput(dy,filter,convInfo){return notYetImplemented("conv3dDerInput")}conv3dDerFilter(x,dY,convInfo){return notYetImplemented("conv3dDerFilter")}maxPool(x,convInfo){return notYetImplemented("maxPool")}maxPoolBackprop(dy,x,y,convInfo){return notYetImplemented("maxPoolBackprop")}avgPool(x,convInfo){return notYetImplemented("avgPool")}avgPoolBackprop(dy,x,convInfo){return notYetImplemented("avgPoolBackprop")}avgPool3d(x,convInfo){return notYetImplemented("avgPool3d")}avgPool3dBackprop(dy,x,convInfo){return notYetImplemented("avgPool3dBackprop")}maxPool3d(x,convInfo){return notYetImplemented("maxPool3d")}maxPool3dBackprop(dy,x,y,convInfo){return notYetImplemented("maxPool3dBackprop")}reshape(x,shape){return notYetImplemented("reshape")}cast(x,dtype){return notYetImplemented("cast")}tile(x,reps){return notYetImplemented("tile")}pad(x,paddings,constantValue){return notYetImplemented("pad")}transpose(x,perm){return notYetImplemented("transpose")}gather(x,indices,axis,batchDims=0){return notYetImplemented("gather")}gatherND(x,indices){return notYetImplemented("gatherND")}scatterND(indices,updates,shape){return notYetImplemented("scatterND")}batchToSpaceND(x,blockShape,crops){return notYetImplemented("batchToSpaceND")}spaceToBatchND(x,blockShape,paddings){return notYetImplemented("spaceToBatchND")}resizeBilinear(x,newHeight,newWidth,alignCorners,halfPixelCenters){return notYetImplemented("resizeBilinear")}resizeBilinearBackprop(dy,x,alignCorners){return notYetImplemented("resizeBilinearBackprop")}resizeNearestNeighbor(x,newHEight,newWidth,alignCorners,halfPixelCenters){return notYetImplemented("resizeNearestNeighbor")}resizeNearestNeighborBackprop(dy,x,alignCorners){return notYetImplemented("resizeNearestNeighborBackprop")}batchNorm(x,mean4,variance,offset,scale2,varianceEpsilon){return notYetImplemented("batchNorm")}localResponseNormalization4D(x,radius,bias,alpha,beta){return notYetImplemented("localResponseNormalization4D")}LRNGrad(dy,inputImage,outputImage,radius,bias,alpha,beta){return notYetImplemented("LRNGrad")}multinomial(logits,normalized,numSamples,seed){return notYetImplemented("multinomial")}oneHot(indices,depth,onValue,offValue){return notYetImplemented("oneHot")}cumsum(x,axis,exclusive,reverse5){return notYetImplemented("cumsum")}nonMaxSuppression(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){return notYetImplemented("nonMaxSuppression")}fft(x){return notYetImplemented("fft")}ifft(x){return notYetImplemented("ifft")}complex(real4,imag4){return notYetImplemented("complex")}real(input2){return notYetImplemented("real")}imag(input2){return notYetImplemented("imag")}cropAndResize(image3,boxes,boxIndex,cropSize,method,extrapolationValue){return notYetImplemented("cropAndResize")}depthToSpace(x,blockSize,dataFormat){return notYetImplemented("depthToSpace")}split(value,sizeSplits,axis){return notYetImplemented("split")}sparseToDense(sparseIndices,sparseValues,outputShape,defaultValue){return notYetImplemented("sparseToDense")}diag(x){return notYetImplemented("diag")}fill(shape,value,dtype){return notYetImplemented("fill")}onesLike(x){return notYetImplemented("onesLike")}zerosLike(x){return notYetImplemented("zerosLike")}linspace(start,stop,num){return notYetImplemented("linspace")}dispose(){return notYetImplemented("dispose")}};function notYetImplemented(kernelName){throw new Error(`'${kernelName}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}function shuffle(array2){let counter=array2.length,temp=0,index=0;for(;counter>0;)index=Math.random()*counter|0,counter--,temp=array2[counter],array2[counter]=array2[index],array2[index]=temp}function clamp(min6,x,max6){return Math.max(min6,Math.min(x,max6))}function nearestLargerEven(val){return val%2==0?val:val+1}function sum(arr){let sum6=0;for(let i=0;ierrorMessagePrefix+` Shapes ${shapeA} and ${shapeB} must match`)}function assertNonNull(a){assert(a!=null,()=>"The input to the tensor constructor must be a non-null value.")}function flatten(arr,result=[],skipTypedArray=!1){if(result==null&&(result=[]),Array.isArray(arr)||isTypedArray(arr)&&!skipTypedArray)for(let i=0;i0,maxCounter){return new Promise((resolve,reject)=>{let tryCount=0,tryFn=()=>{if(checkFn()){resolve();return}tryCount++;let nextBackoff=delayFn(tryCount);if(maxCounter!=null&&tryCount>=maxCounter){reject();return}setTimeout(tryFn,nextBackoff)};tryFn()})}function inferFromImplicitShape(shape,size){let shapeProd=1,implicitIdx=-1;for(let i=0;i=0)shapeProd*=shape[i];else if(shape[i]===-1){if(implicitIdx!==-1)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${implicitIdx} and dim ${i}`);implicitIdx=i}else if(shape[i]<0)throw Error(`Shapes can not be < 0. Found ${shape[i]} at dim ${i}`);if(implicitIdx===-1){if(size>0&&size!==shapeProd)throw Error(`Size(${size}) must match the product of shape ${shape}`);return shape}if(shapeProd===0)throw Error(`Cannot infer the missing size in [${shape}] when there are 0 elements`);if(size%shapeProd!=0)throw Error(`The implicit shape can't be a fractional number. Got ${size} / ${shapeProd}`);let newShape=shape.slice();return newShape[implicitIdx]=size/shapeProd,newShape}function parseAxisParam(axis,shape){let rank=shape.length;return axis=axis==null?shape.map((s,i)=>i):[].concat(axis),assert(axis.every(ax=>ax>=-rank&&ax`All values in axis param must be in range [-${rank}, ${rank}) but got axis ${axis}`),assert(axis.every(ax=>isInt(ax)),()=>`All values in axis param must be integers but got axis ${axis}`),axis.map(a=>a<0?rank+a:a)}function squeezeShape(shape,axis){let newShape=[],keptDims=[],isEmptyArray=axis!=null&&Array.isArray(axis)&&axis.length===0,axes=axis==null||isEmptyArray?null:parseAxisParam(axis,shape).sort(),j=0;for(let i=0;ii)&&shape[i]===1&&(newShape.push(shape[i]),keptDims.push(i)),axes[j]<=i&&j++}shape[i]!==1&&(newShape.push(shape[i]),keptDims.push(i))}return{newShape,keptDims}}function getTypedArrayFromDType(dtype,size){let values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else throw new Error(`Unknown data type ${dtype}`);return values}function getArrayFromDType(dtype,size){let values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else if(dtype==="string")values=new Array(size);else throw new Error(`Unknown data type ${dtype}`);return values}function checkConversionForErrors(vals,dtype){for(let i=0;ibytes+=x.length),bytes}function isString(value){return typeof value=="string"||value instanceof String}function isBoolean(value){return typeof value=="boolean"}function isNumber(value){return typeof value=="number"}function inferDtype(values){return Array.isArray(values)?inferDtype(values[0]):values instanceof Float32Array?"float32":values instanceof Int32Array||values instanceof Uint8Array?"int32":isNumber(values)?"float32":isString(values)?"string":isBoolean(values)?"bool":"float32"}function isFunction(f){return!!(f&&f.constructor&&f.call&&f.apply)}function nearestDivisor(size,start){for(let i=start;i=0;--i)strides[i]=strides[i+1]*shape[i+1];return strides}function createNestedArray(offset,shape,a){let ret=new Array;if(shape.length===1){let d=shape[0];for(let i=0;iacc*c);for(let i=0;iacc*c);if(size===0)return[];if(size!==a.length)throw new Error(`[${shape}] does not match the input size ${a.length}.`);return createNestedArray(0,shape,a)}function makeOnesTypedArray(size,dtype){let array2=makeZerosTypedArray(size,dtype);for(let i=0;iprev*curr,1);if(dtype==null||dtype==="float32")return toNestedArray(shape,new Float32Array(size));if(dtype==="int32")return toNestedArray(shape,new Int32Array(size));if(dtype==="bool")return toNestedArray(shape,new Uint8Array(size));throw new Error(`Unknown data type ${dtype}`)}function assertNonNegativeIntegerDimensions(shape){shape.forEach(dimSize=>{assert(Number.isInteger(dimSize)&&dimSize>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${shape}].`)})}function locToIndex(locs,rank,strides){if(rank===0)return 0;if(rank===1)return locs[0];let index=locs[locs.length-1];for(let i=0;i{let[key,value]=keyValue.split(":");this.urlFlags[key]=parseValue(key,value)})}};function getQueryParams(queryString){let params={};return queryString.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(s,...t)=>(decodeParam(params,t[0],t[1]),t.join("="))),params}function decodeParam(params,name,value){params[decodeURIComponent(name)]=decodeURIComponent(value||"")}function parseValue(flagName,value){if(value=value.toLowerCase(),value==="true"||value==="false")return value==="true";if(`${+value}`===value)return+value;throw new Error(`Could not parse value flag value ${value} for flag ${flagName}.`)}function env(){return ENV}var ENV=null;function setEnvironmentGlobal(environment){ENV=environment}var globalNameSpace;function getGlobalNamespace(){if(globalNameSpace==null){let ns;if(typeof window!="undefined")ns=window;else if(typeof global!="undefined")ns=global;else if(typeof process!="undefined")ns=process;else if(typeof self!="undefined")ns=self;else throw new Error("Could not find a global object");globalNameSpace=ns}return globalNameSpace}function getGlobalMap(){let ns=getGlobalNamespace();return ns._tfGlobals==null&&(ns._tfGlobals=new Map),ns._tfGlobals}function getGlobal(key,init2){let globalMap=getGlobalMap();if(globalMap.has(key))return globalMap.get(key);{let singleton=init2();return globalMap.set(key,singleton),globalMap.get(key)}}var Abs="Abs",Acos="Acos",Acosh="Acosh",Add="Add",AddN="AddN",All="All",Any="Any",ArgMax="ArgMax",ArgMin="ArgMin",Asin="Asin",Asinh="Asinh",Atan="Atan",Atanh="Atanh",Atan2="Atan2",AvgPool="AvgPool",AvgPoolGrad="AvgPoolGrad",AvgPool3D="AvgPool3D",AvgPool3DGrad="AvgPool3DGrad",BatchMatMul="BatchMatMul",BatchToSpaceND="BatchToSpaceND",Bincount="Bincount",BroadcastTo="BroadcastTo",Cast="Cast",Ceil="Ceil",ClipByValue="ClipByValue",Complex="Complex",ComplexAbs="ComplexAbs",Concat="Concat",Conv2D="Conv2D",Conv2DBackpropFilter="Conv2DBackpropFilter",Conv2DBackpropInput="Conv2DBackpropInput",Conv3D="Conv3D",Conv3DBackpropFilterV2="Conv3DBackpropFilterV2",Conv3DBackpropInputV2="Conv3DBackpropInputV2",Cos="Cos",Cosh="Cosh",Cumsum="Cumsum",CropAndResize="CropAndResize",DenseBincount="DenseBincount",DepthToSpace="DepthToSpace",DepthwiseConv2dNative="DepthwiseConv2dNative",DepthwiseConv2dNativeBackpropFilter="DepthwiseConv2dNativeBackpropFilter",DepthwiseConv2dNativeBackpropInput="DepthwiseConv2dNativeBackpropInput",Diag="Diag",Dilation2D="Dilation2D",Dilation2DBackpropInput="Dilation2DBackpropInput",Dilation2DBackpropFilter="Dilation2DBackpropFilter",RealDiv="RealDiv",Elu="Elu",EluGrad="EluGrad",Erf="Erf",Equal="Equal",Exp="Exp",ExpandDims="ExpandDims",Expm1="Expm1",FFT="FFT",Fill="Fill",FlipLeftRight="FlipLeftRight",Floor="Floor",FloorDiv="FloorDiv",FusedBatchNorm="FusedBatchNorm",GatherV2="GatherV2",GatherNd="GatherNd",Greater="Greater",GreaterEqual="GreaterEqual",Identity="Identity",IFFT="IFFT",Imag="Imag",IsFinite="IsFinite",IsInf="IsInf",IsNan="IsNan",LeakyRelu="LeakyRelu",Less="Less",LessEqual="LessEqual",LinSpace="LinSpace",Log="Log",Log1p="Log1p",LogicalAnd="LogicalAnd",LogicalNot="LogicalNot",LogicalOr="LogicalOr",LogSoftmax="LogSoftmax",LRN="LRN",LRNGrad="LRNGrad",Max="Max",Maximum="Maximum",MaxPool="MaxPool",MaxPoolGrad="MaxPoolGrad",MaxPool3D="MaxPool3D",MaxPool3DGrad="MaxPool3DGrad",MaxPoolWithArgmax="MaxPoolWithArgmax",Mean="Mean",Min="Min",Minimum="Minimum",MirrorPad="MirrorPad",Mod="Mod",Multinomial="Multinomial",Multiply="Multiply",Neg="Neg",NotEqual="NotEqual",NonMaxSuppressionV3="NonMaxSuppressionV3",NonMaxSuppressionV4="NonMaxSuppressionV4",NonMaxSuppressionV5="NonMaxSuppressionV5",OnesLike="OnesLike",OneHot="OneHot",Pack="Pack",PadV2="PadV2",Pool="Pool",Pow="Pow",Prelu="Prelu",Prod="Prod",Range="Range",Real="Real",Reciprocal="Reciprocal",Relu="Relu",Reshape="Reshape",ResizeNearestNeighbor="ResizeNearestNeighbor",ResizeNearestNeighborGrad="ResizeNearestNeighborGrad",ResizeBilinear="ResizeBilinear",ResizeBilinearGrad="ResizeBilinearGrad",Relu6="Relu6",Reverse="Reverse",Round="Round",Rsqrt="Rsqrt",ScatterNd="ScatterNd",Select="Select",Selu="Selu",Slice="Slice",Sin="Sin",Sinh="Sinh",Sign="Sign",Sigmoid="Sigmoid",Softplus="Softplus",Sqrt="Sqrt",Sum="Sum",SpaceToBatchND="SpaceToBatchND",SplitV="SplitV",Softmax="Softmax",SquaredDifference="SquaredDifference",Square="Square",Sub="Sub",SparseToDense="SparseToDense",StridedSlice="StridedSlice",Tan="Tan",Tanh="Tanh",Tile="Tile",TopK="TopK",Transpose="Transpose",Unique="Unique",Unpack="Unpack",UnsortedSegmentSum="UnsortedSegmentSum",ZerosLike="ZerosLike",Step="Step",FromPixels="FromPixels",RotateWithOffset="RotateWithOffset",_FusedMatMul="_FusedMatMul",FusedConv2D="FusedConv2D",FusedDepthwiseConv2D="FusedDepthwiseConv2D";var kernelRegistry=getGlobal("kernelRegistry",()=>new Map),gradRegistry=getGlobal("gradRegistry",()=>new Map);function getKernel(kernelName,backendName){let key=makeKey(kernelName,backendName);return kernelRegistry.get(key)}function getGradient(kernelName){return gradRegistry.get(kernelName)}function getKernelsForBackend(backendName){let it=kernelRegistry.entries(),result=[];for(;;){let{done,value}=it.next();if(done)break;let[key,config]=value,[backend2]=key.split("_");backend2===backendName&&result.push(config)}return result}function registerKernel(config){let{kernelName,backendName}=config,key=makeKey(kernelName,backendName);kernelRegistry.has(key)&&console.warn(`The kernel '${kernelName}' for backend '${backendName}' is already registered`),kernelRegistry.set(key,config)}function registerGradient(config){let{kernelName}=config;gradRegistry.has(kernelName)&&env().getBool("DEBUG")&&console.warn(`Overriding the gradient for '${kernelName}'`),gradRegistry.set(kernelName,config)}function unregisterKernel(kernelName,backendName){let key=makeKey(kernelName,backendName);if(!kernelRegistry.has(key))throw new Error(`The kernel '${kernelName}' for backend '${backendName}' is not registered`);kernelRegistry.delete(key)}function unregisterGradient(kernelName){if(!gradRegistry.has(kernelName))throw new Error(`The gradient '${kernelName}' for backend is not registered`);gradRegistry.delete(kernelName)}function copyRegisteredKernels(registeredBackendName,newBackendName){getKernelsForBackend(registeredBackendName).forEach(kernelConfig=>{let newKernelConfig=Object.assign({},kernelConfig,{backendName:newBackendName});registerKernel(newKernelConfig)})}function makeKey(kernelName,backendName){return`${backendName}_${kernelName}`}var util_exports={};__export(util_exports,{arraysEqual:()=>arraysEqual,assert:()=>assert,assertNonNegativeIntegerDimensions:()=>assertNonNegativeIntegerDimensions,assertNonNull:()=>assertNonNull,assertShapesMatch:()=>assertShapesMatch,bytesFromStringArray:()=>bytesFromStringArray,bytesPerElement:()=>bytesPerElement,checkConversionForErrors:()=>checkConversionForErrors,clamp:()=>clamp,computeStrides:()=>computeStrides,createScalarValue:()=>createScalarValue,createShuffledIndices:()=>createShuffledIndices,decodeString:()=>decodeString,distSquared:()=>distSquared,encodeString:()=>encodeString,fetch:()=>fetch2,flatten:()=>flatten,getArrayFromDType:()=>getArrayFromDType,getTypedArrayFromDType:()=>getTypedArrayFromDType,hasEncodingLoss:()=>hasEncodingLoss,indexToLoc:()=>indexToLoc,inferDtype:()=>inferDtype,inferFromImplicitShape:()=>inferFromImplicitShape,isBoolean:()=>isBoolean,isFunction:()=>isFunction,isInt:()=>isInt,isNumber:()=>isNumber,isPromise:()=>isPromise,isScalarShape:()=>isScalarShape,isString:()=>isString,isTypedArray:()=>isTypedArray,isValidDtype:()=>isValidDtype,locToIndex:()=>locToIndex,makeOnesTypedArray:()=>makeOnesTypedArray,makeZerosNestedTypedArray:()=>makeZerosNestedTypedArray,makeZerosTypedArray:()=>makeZerosTypedArray,nearestDivisor:()=>nearestDivisor,nearestLargerEven:()=>nearestLargerEven,now:()=>now,parseAxisParam:()=>parseAxisParam,randUniform:()=>randUniform,repeatedTry:()=>repeatedTry,rightPad:()=>rightPad,shuffle:()=>shuffle,sizeFromShape:()=>sizeFromShape,sizeToSquarishShape:()=>sizeToSquarishShape,squeezeShape:()=>squeezeShape,sum:()=>sum,tanh:()=>tanh,toNestedArray:()=>toNestedArray,toTypedArray:()=>toTypedArray});function createScalarValue(value,dtype){return dtype==="string"?encodeString(value):toTypedArray([value],dtype)}function noConversionNeeded(a,dtype){return a instanceof Float32Array&&dtype==="float32"||a instanceof Int32Array&&dtype==="int32"||a instanceof Uint8Array&&dtype==="bool"}function toTypedArray(a,dtype){if(dtype==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(a)&&(a=flatten(a)),env().getBool("DEBUG")&&checkConversionForErrors(a,dtype),noConversionNeeded(a,dtype))return a;if(dtype==null||dtype==="float32"||dtype==="complex64")return new Float32Array(a);if(dtype==="int32")return new Int32Array(a);if(dtype==="bool"){let bool=new Uint8Array(a.length);for(let i=0;i{outputs=f()},timer=this.backendTimer.time(holdResultWrapperFn);if(env().getBool("CHECK_COMPUTATION_FOR_ERRORS"))for(let i=0;i{checkComputationForErrors(tensorVals,output.dtype,kernelName)})}return{kernelName,outputs,inputs,timeMs:timer.then(timing=>timing.kernelMs),extraInfo:timer.then(timing=>timing.getExtraProfileInfo!=null?timing.getExtraProfileInfo():"")}}logKernelProfile(kernelProfile){let{kernelName,outputs,timeMs,inputs,extraInfo}=kernelProfile;outputs.forEach(result=>{Promise.all([result.data(),timeMs,extraInfo]).then(valueContainer=>{this.logger.logKernelProfile(kernelName,result,valueContainer[0],valueContainer[1],inputs,valueContainer[2])})})}};function checkComputationForErrors(vals,dtype,kernelName){if(dtype!=="float32")return!1;for(let i=0;i0?inputShape:""} `}}console.log(`%c${paddedName} %c${time2} %c${rank}D ${shape} %c${size} %c${inputShapesDescription} %c${extraInfo}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}};function getFilteredNodesXToY(tape,xs,y){let tensorsFromX={},nodesFromX={};for(let i=0;itensorsFromX[output.id]=!0),anyInputFromX=!0,nodesFromX[node.id]=!0;break}if(anyInputFromX)break}}let tensorsLeadToY={};tensorsLeadToY[y.id]=!0;let nodesToY={};for(let i=tape.length-1;i>=0;i--){let node=tape[i],nodeInputs=node.inputs;for(let j=0;j=0;i--){let node=filteredTape[i],dys=[];if(node.outputs.forEach(o=>{let gradTensor=tensorAccumulatedGradientMap[o.id];gradTensor!=null?dys.push(gradTensor):dys.push(null)}),node.gradient==null)throw new Error(`Cannot compute gradient: gradient function not found for ${node.kernelName}.`);let inputGradients=node.gradient(dys);for(let inputName in node.inputs){if(!(inputName in inputGradients))throw new Error(`Cannot backprop through input ${inputName}. Available gradients found: ${Object.keys(inputGradients)}.`);let dx=tidy2(()=>inputGradients[inputName]());if(dx.dtype!=="float32")throw new Error(`Error in gradient for op ${node.kernelName}. The gradient of input ${inputName} must have 'float32' dtype, but has '${dx.dtype}'`);let x=node.inputs[inputName];if(!arraysEqual(dx.shape,x.shape))throw new Error(`Error in gradient for op ${node.kernelName}. The gradient of input '${inputName}' has shape '${dx.shape}', which does not match the shape of the input '${x.shape}'`);if(tensorAccumulatedGradientMap[x.id]==null)tensorAccumulatedGradientMap[x.id]=dx;else{let curGradient=tensorAccumulatedGradientMap[x.id];tensorAccumulatedGradientMap[x.id]=add5(curGradient,dx),curGradient.dispose()}}}}var FORMAT_LIMIT_NUM_VALS=20,FORMAT_NUM_FIRST_LAST_VALS=3,FORMAT_NUM_SIG_DIGITS=7;function tensorToString(vals,shape,dtype,verbose){let strides=computeStrides(shape),padPerCol=computeMaxSizePerColumn(vals,shape,dtype,strides),rank=shape.length,valsLines=subTensorToString(vals,shape,dtype,strides,padPerCol),lines=["Tensor"];return verbose&&(lines.push(` dtype: ${dtype}`),lines.push(` rank: ${rank}`),lines.push(` shape: [${shape}]`),lines.push(" values:")),lines.push(valsLines.map(l=>" "+l).join(` -`)),lines.join(` -`)}function computeMaxSizePerColumn(vals,shape,dtype,strides){let n=sizeFromShape(shape),numCols=strides[strides.length-1],padPerCol=new Array(numCols).fill(0),rank=shape.length,valuesOrTuples=dtype==="complex64"?createComplexTuples(vals):vals;if(rank>1)for(let row=0;rowFORMAT_LIMIT_NUM_VALS){let firstValsSize=FORMAT_NUM_FIRST_LAST_VALS*storagePerElement,firstVals=Array.from(vals.slice(0,firstValsSize)),lastVals=Array.from(vals.slice((size-FORMAT_NUM_FIRST_LAST_VALS)*storagePerElement,size*storagePerElement));return dtype==="complex64"&&(firstVals=createComplexTuples(firstVals),lastVals=createComplexTuples(lastVals)),["["+firstVals.map((x,i)=>valToString(x,padPerCol[i],dtype)).join(", ")+", ..., "+lastVals.map((x,i)=>valToString(x,padPerCol[size-FORMAT_NUM_FIRST_LAST_VALS+i],dtype)).join(", ")+"]"]}let displayVals=dtype==="complex64"?createComplexTuples(vals):Array.from(vals);return["["+displayVals.map((x,i)=>valToString(x,padPerCol[i],dtype)).join(", ")+"]"]}let subshape=shape.slice(1),substrides=strides.slice(1),stride=strides[0]*storagePerElement,lines=[];if(size>FORMAT_LIMIT_NUM_VALS){for(let i=0;i`Length of values '${n}' does not match the size inferred by the shape '${this.size}'.`)}if(dtype==="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=values||getArrayFromDType(dtype,this.size),this.strides=computeStrides(shape)}set(value,...locs){locs.length===0&&(locs=[0]),assert(locs.length===this.rank,()=>`The number of provided coordinates (${locs.length}) must match the rank (${this.rank})`);let index=this.locToIndex(locs);this.values[index]=value}get(...locs){locs.length===0&&(locs=[0]);let i=0;for(let loc of locs){if(loc<0||loc>=this.shape[i]){let msg=`Requested out of range element at ${locs}. Buffer shape=${this.shape}`;throw new Error(msg)}i++}let index=locs[locs.length-1];for(let i2=0;i2decodeString(b))}catch(_a){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}}return data}dataSync(){this.throwIfDisposed();let data=trackerFn().readSync(this.dataId);if(this.dtype==="string")try{return data.map(b=>decodeString(b))}catch(_a){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}return data}async bytes(){this.throwIfDisposed();let data=await trackerFn().read(this.dataId);return this.dtype==="string"?data:new Uint8Array(data.buffer)}dispose(){this.isDisposed||(trackerFn().disposeTensor(this),this.isDisposedInternal=!0)}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(verbose=!1){return opHandler.print(this,verbose)}clone(){return this.throwIfDisposed(),opHandler.clone(this)}toString(verbose=!1){let vals=this.dataSync();return tensorToString(vals,this.shape,this.dtype,verbose)}cast(dtype){return this.throwIfDisposed(),opHandler.cast(this,dtype)}variable(trainable=!0,name,dtype){return this.throwIfDisposed(),trackerFn().makeVariable(this,trainable,name,dtype)}};Object.defineProperty(Tensor,Symbol.hasInstance,{value:instance=>!!instance&&instance.data!=null&&instance.dataSync!=null&&instance.throwIfDisposed!=null});var Variable=class extends Tensor{constructor(initialValue,trainable,name,tensorId){super(initialValue.shape,initialValue.dtype,initialValue.dataId,tensorId);this.trainable=trainable,this.name=name}assign(newValue){if(newValue.dtype!==this.dtype)throw new Error(`dtype of the new value (${newValue.dtype}) and previous value (${this.dtype}) must match`);if(!arraysEqual(newValue.shape,this.shape))throw new Error(`shape of the new value (${newValue.shape}) and previous value (${this.shape}) must match`);trackerFn().disposeTensor(this),this.dataId=newValue.dataId,trackerFn().incRef(this,null)}dispose(){trackerFn().disposeVariable(this),this.isDisposedInternal=!0}};Object.defineProperty(Variable,Symbol.hasInstance,{value:instance=>instance instanceof Tensor&&instance.assign!=null&&instance.assign instanceof Function});var tensor_util_exports={};__export(tensor_util_exports,{assertTypesMatch:()=>assertTypesMatch,getTensorsInContainer:()=>getTensorsInContainer,isTensorInList:()=>isTensorInList,makeTypesMatch:()=>makeTypesMatch});var Rank;(function(Rank2){Rank2.R0="R0",Rank2.R1="R1",Rank2.R2="R2",Rank2.R3="R3",Rank2.R4="R4",Rank2.R5="R5",Rank2.R6="R6"})(Rank||(Rank={}));var UpcastInt32AndMap;(function(UpcastInt32AndMap2){UpcastInt32AndMap2.float32="float32",UpcastInt32AndMap2.int32="int32",UpcastInt32AndMap2.bool="int32",UpcastInt32AndMap2.complex64="complex64"})(UpcastInt32AndMap||(UpcastInt32AndMap={}));var UpcastBoolAndMap;(function(UpcastBoolAndMap2){UpcastBoolAndMap2.float32="float32",UpcastBoolAndMap2.int32="int32",UpcastBoolAndMap2.bool="bool",UpcastBoolAndMap2.complex64="complex64"})(UpcastBoolAndMap||(UpcastBoolAndMap={}));var UpcastFloat32AndMap;(function(UpcastFloat32AndMap2){UpcastFloat32AndMap2.float32="float32",UpcastFloat32AndMap2.int32="float32",UpcastFloat32AndMap2.bool="float32",UpcastFloat32AndMap2.complex64="complex64"})(UpcastFloat32AndMap||(UpcastFloat32AndMap={}));var UpcastComplex64AndMap;(function(UpcastComplex64AndMap2){UpcastComplex64AndMap2.float32="complex64",UpcastComplex64AndMap2.int32="complex64",UpcastComplex64AndMap2.bool="complex64",UpcastComplex64AndMap2.complex64="complex64"})(UpcastComplex64AndMap||(UpcastComplex64AndMap={}));var upcastTypeMap={float32:UpcastFloat32AndMap,int32:UpcastInt32AndMap,bool:UpcastBoolAndMap,complex64:UpcastComplex64AndMap};function upcastType(typeA,typeB){if(typeA==="string"||typeB==="string"){if(typeA==="string"&&typeB==="string")return"string";throw new Error(`Can not upcast ${typeA} with ${typeB}`)}return upcastTypeMap[typeA][typeB]}function sumOutType(type){return upcastType(type,"int32")}function makeTypesMatch(a,b){if(a.dtype===b.dtype)return[a,b];let dtype=upcastType(a.dtype,b.dtype);return[a.cast(dtype),b.cast(dtype)]}function assertTypesMatch(a,b){assert(a.dtype===b.dtype,()=>`The dtypes of the first(${a.dtype}) and second(${b.dtype}) input must match`)}function isTensorInList(tensor2,tensorList){return tensorList.some(x=>x.id===tensor2.id)}function getTensorsInContainer(result){let list=[],seen=new Set;return walkTensorContainer(result,list,seen),list}function walkTensorContainer(container,list,seen){if(container==null)return;if(container instanceof Tensor){list.push(container);return}if(!isIterable(container))return;let iterable=container;for(let k in iterable){let val=iterable[k];seen.has(val)||(seen.add(val),walkTensorContainer(val,list,seen))}}function isIterable(obj){return Array.isArray(obj)||typeof obj=="object"}var EngineState=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(k=>k.name)))}}}dispose(){for(let variableName in this.registeredVariables)this.registeredVariables[variableName].dispose()}},Engine=class{constructor(ENV5){this.ENV=ENV5,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new EngineState}async ready(){if(this.pendingBackendInit!=null)return this.pendingBackendInit.then(()=>{});if(this.backendInstance!=null)return;let sortedBackends=this.getSortedBackends();for(let i=0;i{kernel.setupFunc!=null&&kernel.setupFunc(this.backendInstance)})}disposeRegisteredKernels(backendName){getKernelsForBackend(backendName).forEach(kernel=>{kernel.disposeFunc!=null&&kernel.disposeFunc(this.registry[backendName])})}initializeBackend(backendName){let registryFactoryEntry=this.registryFactory[backendName];if(registryFactoryEntry==null)throw new Error(`Cannot initialize backend ${backendName}, no registration found.`);try{let backend2=registryFactoryEntry.factory();if(backend2&&!(backend2 instanceof KernelBackend)&&typeof backend2.then=="function"){let promiseId=++this.pendingBackendInitId,success=backend2.then(backendInstance=>promiseId(promiseIdthis.registryFactory[b].priority-this.registryFactory[a].priority)}initializeBackendsAndReturnBest(){let sortedBackends=this.getSortedBackends();for(let i=0;ithis.startScope(name),()=>this.endScope(result),()=>(result=fn(),result instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),result))}scopedRun(start,end,f){start();try{let res=f();return end(),res}catch(ex){throw end(),ex}}nextTensorId(){return Engine.nextTensorId++}nextVariableId(){return Engine.nextVariableId++}clone(x){let y=this.makeTensorFromDataId(x.dataId,x.shape,x.dtype),inputs={x},grad2=dy=>({x:()=>{let dtype="float32",gradInputs={x:dy},attrs={dtype};return ENGINE.runKernelFunc(backend2=>backend2.cast(dy,dtype),gradInputs,null,Cast,attrs)}}),saved=[];return this.addTapeNode(this.state.activeScope.name,inputs,[y],grad2,saved,{}),y}runKernel(kernelName,inputs,attrs,inputsToSave,outputsToSave){let forwardFunc=null,backwardsFunc=null;return this.runKernelFunc(forwardFunc,inputs,backwardsFunc,kernelName,attrs,inputsToSave,outputsToSave)}shouldCheckForMemLeaks(){return this.ENV.getBool("IS_TEST")}checkKernelForMemLeak(kernelName,numDataIdsBefore,outInfos){let numDataIdsAfter=this.backend.numDataIds(),numOutputDataIds=0;outInfos.forEach(info=>{numOutputDataIds+=info.dtype==="complex64"?3:1});let numMoves=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],dataIdsLeaked=numDataIdsAfter-numDataIdsBefore-numOutputDataIds-numMoves;if(dataIdsLeaked>0)throw new Error(`Backend '${this.backendName}' has an internal memory leak (${dataIdsLeaked} data ids) after running '${kernelName}'`)}runKernelFunc(forwardFunc,inputs,backwardsFunc,kernelName,attrs,inputsToSave,outputsToSave){let outputs,saved=[],isTapeOn=this.isTapeOn();kernelName==null&&(kernelName=this.state.activeScope!=null?this.state.activeScope.name:"");let startingBytecount=this.state.numBytes,startingNumTensors=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);let kernelFunc3;this.backendName==null&&this.backend;let kernel=getKernel(kernelName,this.backendName),out;if(kernel!=null)kernelFunc3=()=>{let numDataIdsBefore=this.backend.numDataIds();out=kernel.kernelFunc({inputs,attrs,backend:this.backend});let outInfos=Array.isArray(out)?out:[out];this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(kernelName,numDataIdsBefore,outInfos);let outTensors=outInfos.map(outInfo=>{if(outInfo.rank!=null)return outInfo;let{dataId,shape,dtype}=outInfo;return this.makeTensorFromDataId(dataId,shape,dtype)});if(isTapeOn){let tensorsToSave=this.getTensorsForGradient(kernelName,inputs,outTensors);if(tensorsToSave==null){outputsToSave==null&&(outputsToSave=[]);let outsToSave=outTensors.filter((_,i)=>outputsToSave[i]);tensorsToSave=(inputsToSave||[]).slice().concat(outsToSave)}saved=this.saveTensorsForBackwardMode(tensorsToSave)}return outTensors};else{if(forwardFunc==null)throw new Error(`Error running ${kernelName}: Neither modular kernel nor forward func passed`);let saveFunc=tensors=>{!isTapeOn||(saved=tensors.map(tensor2=>this.keep(this.clone(tensor2))))};kernelFunc3=()=>{let numDataIdsBefore=this.backend.numDataIds();out=this.tidy(()=>forwardFunc(this.backend,saveFunc));let outs=Array.isArray(out)?out:[out];return this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(kernelName,numDataIdsBefore,outs),outs}}let kernelProfile;return this.scopedRun(()=>this.state.kernelDepth++,()=>this.state.kernelDepth--,()=>{!this.ENV.getBool("DEBUG")&&!this.state.profiling?outputs=kernelFunc3():(kernelProfile=this.profiler.profileKernel(kernelName,inputs,()=>kernelFunc3()),this.ENV.getBool("DEBUG")&&this.profiler.logKernelProfile(kernelProfile),outputs=kernelProfile.outputs)}),isTapeOn&&this.addTapeNode(kernelName,inputs,outputs,backwardsFunc,saved,attrs),this.state.profiling&&this.state.activeProfile.kernels.push({name:kernelName,bytesAdded:this.state.numBytes-startingBytecount,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-startingNumTensors,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(inputs).map(key=>inputs[key]!=null?inputs[key].shape:null),outputShapes:outputs.map(item=>item.shape),kernelTimeMs:kernelProfile.timeMs,extraInfo:kernelProfile.extraInfo}),Array.isArray(out)?outputs:outputs[0]}saveTensorsForBackwardMode(tensors){return tensors.map(tensor2=>this.keep(this.clone(tensor2)))}getTensorsForGradient(kernelName,inputs,outputs){let gradConfig=getGradient(kernelName);if(gradConfig!=null){let inputsToSave=gradConfig.inputsToSave||[],outputsToSave=gradConfig.outputsToSave||[],inputTensorsToSave;gradConfig.saveAllInputs?(assert(Array.isArray(inputs),()=>"saveAllInputs is true, expected inputs to be an array."),inputTensorsToSave=Object.keys(inputs).map(key=>inputs[key])):inputTensorsToSave=inputsToSave.map(inputName=>inputs[inputName]);let outputTensorsToSave=outputs.filter((_,i)=>outputsToSave[i]);return inputTensorsToSave.concat(outputTensorsToSave)}return null}makeTensor(values,shape,dtype,backend2){if(values==null)throw new Error("Values passed to engine.makeTensor() are null");dtype=dtype||"float32",backend2=backend2||this.backend;let backendVals=values;dtype==="string"&&isString(values[0])&&(backendVals=values.map(d=>encodeString(d)));let dataId=backend2.write(backendVals,shape,dtype),t=new Tensor(shape,dtype,dataId,this.nextTensorId());if(this.incRef(t,backend2),dtype==="string"){let info=this.state.tensorInfo.get(dataId),newBytes=bytesFromStringArray(backendVals);this.state.numBytes+=newBytes-info.bytes,info.bytes=newBytes}return t}makeTensorFromDataId(dataId,shape,dtype,backend2){dtype=dtype||"float32";let t=new Tensor(shape,dtype,dataId,this.nextTensorId());return this.incRef(t,backend2),t}makeVariable(initialValue,trainable=!0,name,dtype){name=name||this.nextVariableId().toString(),dtype!=null&&dtype!==initialValue.dtype&&(initialValue=initialValue.cast(dtype));let v=new Variable(initialValue,trainable,name,this.nextTensorId());if(this.state.registeredVariables[v.name]!=null)throw new Error(`Variable with name ${v.name} was already registered`);return this.state.registeredVariables[v.name]=v,this.incRef(v,this.backend),v}incRef(a,backend2){let refCount=this.state.tensorInfo.has(a.dataId)?this.state.tensorInfo.get(a.dataId).refCount:0;if(this.state.numTensors++,a.dtype==="string"&&this.state.numStringTensors++,refCount===0){this.state.numDataBuffers++;let bytes=0;a.dtype!=="complex64"&&a.dtype!=="string"&&(bytes=a.size*bytesPerElement(a.dtype)),this.state.tensorInfo.set(a.dataId,{backend:backend2||this.backend,dtype:a.dtype,shape:a.shape,bytes,refCount:0}),this.state.numBytes+=bytes}this.state.tensorInfo.get(a.dataId).refCount++,a instanceof Variable||this.track(a)}disposeTensor(a){if(!this.state.tensorInfo.has(a.dataId))return;this.state.numTensors--,a.dtype==="string"&&this.state.numStringTensors--;let info=this.state.tensorInfo.get(a.dataId);info.refCount<=1?(a.dtype!=="complex64"&&(this.state.numBytes-=info.bytes),this.state.numDataBuffers--,info.backend.disposeData(a.dataId),this.state.tensorInfo.delete(a.dataId)):this.state.tensorInfo.get(a.dataId).refCount--}disposeVariables(){for(let varName in this.state.registeredVariables){let v=this.state.registeredVariables[varName];this.disposeVariable(v)}}disposeVariable(v){this.disposeTensor(v),this.state.registeredVariables[v.name]!=null&&delete this.state.registeredVariables[v.name]}memory(){let info=this.backend.memory();return info.numTensors=this.state.numTensors,info.numDataBuffers=this.state.numDataBuffers,info.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(info.unreliable=!0,info.reasons==null&&(info.reasons=[]),info.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),info}async profile(query){this.state.profiling=!0;let startBytes=this.state.numBytes,startNumTensors=this.state.numTensors;this.state.activeProfile.kernels=[],this.state.activeProfile.result=await query(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max(...this.state.activeProfile.kernels.map(d=>d.totalBytesSnapshot)),this.state.activeProfile.newBytes=this.state.numBytes-startBytes,this.state.activeProfile.newTensors=this.state.numTensors-startNumTensors;for(let kernel of this.state.activeProfile.kernels)kernel.kernelTimeMs=await kernel.kernelTimeMs,kernel.extraInfo=await kernel.extraInfo;return this.state.activeProfile}isTapeOn(){return this.state.gradientDepth>0&&this.state.kernelDepth===0}addTapeNode(kernelName,inputs,outputs,gradientsFunc,saved,attrs){let tapeNode={id:this.state.nextTapeNodeId++,kernelName,inputs,outputs,saved},gradConfig=getGradient(kernelName);gradConfig!=null&&(gradientsFunc=gradConfig.gradFunc),gradientsFunc!=null&&(tapeNode.gradient=dys=>(dys=dys.map((dy,i)=>{if(dy==null){let output=outputs[i],vals=makeZerosTypedArray(output.size,output.dtype);return this.makeTensor(vals,output.shape,output.dtype)}return dy}),gradientsFunc(dys.length>1?dys:dys[0],saved,attrs))),this.state.activeTape.push(tapeNode)}keep(result){return result.kept=!0,result}startTape(){this.state.gradientDepth===0&&(this.state.activeTape=[]),this.state.gradientDepth++}endTape(){this.state.gradientDepth--}startScope(name){let scopeInfo={track:[],name:"unnamed scope",id:this.state.nextScopeId++};name&&(scopeInfo.name=name),this.state.scopeStack.push(scopeInfo),this.state.activeScope=scopeInfo}endScope(result){let tensorsToTrackInParent=getTensorsInContainer(result),tensorsToTrackInParentSet=new Set(tensorsToTrackInParent.map(t=>t.id));for(let i=0;i{!tensor2.kept&&tensor2.scopeId===oldScope.id&&this.track(tensor2)})}gradients(f,xs,dy,allowNoGradients=!1){if(assert(xs.length>0,()=>"gradients() received an empty list of xs."),dy!=null&&dy.dtype!=="float32")throw new Error(`dy must have 'float32' dtype, but has '${dy.dtype}'`);let y=this.scopedRun(()=>this.startTape(),()=>this.endTape(),()=>this.tidy("forward",f));assert(y instanceof Tensor,()=>"The result y returned by f() must be a tensor.");let filteredTape=getFilteredNodesXToY(this.state.activeTape,xs,y);if(!allowNoGradients&&filteredTape.length===0&&xs.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 accumulatedGradientMap={};accumulatedGradientMap[y.id]=dy==null?ones(y.shape):dy,backpropagateGradients(accumulatedGradientMap,filteredTape,f2=>this.tidy(f2),add);let grads2=xs.map(x=>accumulatedGradientMap[x.id]);return this.state.gradientDepth===0&&(this.state.activeTape.forEach(node=>{for(let tensor2 of node.saved)tensor2.dispose()}),this.state.activeTape=null),{value:y,grads:grads2}})}customGrad(f){return assert(isFunction(f),()=>"The f passed in customGrad(f) must be a function."),(...inputs)=>{assert(inputs.every(t=>t instanceof Tensor),()=>"The args passed in customGrad(f)(x1, x2,...) must all be tensors");let res,inputMap={};return inputs.forEach((input2,i)=>{inputMap[i]=input2}),this.runKernelFunc((_,save)=>(res=f(...inputs,save),assert(res.value instanceof Tensor,()=>"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"),assert(isFunction(res.gradFunc),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."),res.value),inputMap,(dy,saved)=>{let gradRes=res.gradFunc(dy,saved),grads2=Array.isArray(gradRes)?gradRes:[gradRes];assert(grads2.length===inputs.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(...)."),assert(grads2.every(t=>t instanceof Tensor),()=>"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 gradMap={};return grads2.forEach((grad2,i)=>{gradMap[i]=()=>grad2}),gradMap})}}readSync(dataId){return this.state.tensorInfo.get(dataId).backend.readSync(dataId)}read(dataId){return this.state.tensorInfo.get(dataId).backend.read(dataId)}async time(query){let start=now(),timingInfo=await this.backend.time(query);return timingInfo.wallMs=now()-start,timingInfo}track(result){return this.state.activeScope!=null&&(result.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(result)),result}get registeredVariables(){return this.state.registeredVariables}reset(){this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new EngineState;for(let backendName in this.registry)this.disposeRegisteredKernels(backendName),this.registry[backendName].dispose(),delete this.registry[backendName];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null}};Engine.nextTensorId=0;Engine.nextVariableId=0;function ones(shape){let values=makeOnesTypedArray(sizeFromShape(shape),"float32");return ENGINE.makeTensor(values,shape,"float32")}function getOrMakeEngine(){let ns=getGlobalNamespace();if(ns._tfengine==null){let environment=new Environment(ns);ns._tfengine=new Engine(environment)}return setEnvironmentGlobal(ns._tfengine.ENV),setTensorTracker(()=>ns._tfengine),ns._tfengine}var ENGINE=getOrMakeEngine();function add(a,b){let inputs={a,b};return ENGINE.runKernel(Add,inputs)}var device_util_exports={};__export(device_util_exports,{isBrowser:()=>isBrowser,isMobile:()=>isMobile});function _isNavigatorDefined(){return typeof navigator!="undefined"&&navigator!=null}function isMobile(){if(_isNavigatorDefined()){let a=navigator.userAgent||navigator.vendor||window.opera;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(a)||/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(a.substr(0,4))}return!1}function isBrowser(){return typeof window!="undefined"&&window.document!=null||typeof WorkerGlobalScope!="undefined"}var ENV2=env();ENV2.registerFlag("DEBUG",()=>!1,debugValue=>{debugValue&&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.")});ENV2.registerFlag("IS_BROWSER",()=>isBrowser());ENV2.registerFlag("IS_NODE",()=>typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined");ENV2.registerFlag("IS_CHROME",()=>typeof navigator!="undefined"&&navigator!=null&&navigator.userAgent!=null&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor));ENV2.registerFlag("PROD",()=>!1);ENV2.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",()=>ENV2.getBool("DEBUG"));ENV2.registerFlag("DEPRECATION_WARNINGS_ENABLED",()=>!0);ENV2.registerFlag("IS_TEST",()=>!1);ENV2.registerFlag("CHECK_COMPUTATION_FOR_ERRORS",()=>!0);function inferShape(val,dtype){let firstElem=val;if(isTypedArray(val))return dtype==="string"?[]:[val.length];if(!Array.isArray(val))return[];let shape=[];for(;Array.isArray(firstElem)||isTypedArray(firstElem)&&dtype!=="string";)shape.push(firstElem.length),firstElem=firstElem[0];return Array.isArray(val)&&env().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&deepAssertShapeConsistency(val,shape,[]),shape}function deepAssertShapeConsistency(val,shape,indices){if(indices=indices||[],!Array.isArray(val)&&!isTypedArray(val)){assert(shape.length===0,()=>`Element arr[${indices.join("][")}] is a primitive, but should be an array/TypedArray of ${shape[0]} elements`);return}assert(shape.length>0,()=>`Element arr[${indices.join("][")}] should be a primitive, but is an array of ${val.length} elements`),assert(val.length===shape[0],()=>`Element arr[${indices.join("][")}] should have ${shape[0]} elements, but has ${val.length} elements`);let subShape=shape.slice(1);for(let i=0;i=0&&(inferredDtype=parseAsDtype),assertDtype(parseAsDtype,inferredDtype,argName,functionName),x==null||!isTypedArray(x)&&!Array.isArray(x)&&typeof x!="number"&&typeof x!="boolean"&&typeof x!="string"){let type=x==null?"null":x.constructor.name;throw new Error(`Argument '${argName}' passed to '${functionName}' must be a Tensor or TensorLike, but got '${type}'`)}let inferredShape=inferShape(x,inferredDtype);!isTypedArray(x)&&!Array.isArray(x)&&(x=[x]);let values=inferredDtype!=="string"?toTypedArray(x,inferredDtype):flatten(x,[],!0);return ENGINE.makeTensor(values,inferredShape,inferredDtype)}function convertToTensorArray(arg,argName,functionName,parseAsDtype="numeric"){if(!Array.isArray(arg))throw new Error(`Argument ${argName} passed to ${functionName} must be a \`Tensor[]\` or \`TensorLike[]\``);return arg.map((t,i)=>convertToTensor(t,`${argName}[${i}]`,functionName,parseAsDtype))}var OP_SCOPE_SUFFIX="__op";function op(f){let keys=Object.keys(f);if(keys.length!==1)throw new Error(`Please provide an object with a single key (operation name) mapping to a function. Got an object with ${keys.length} keys.`);let opName=keys[0],fn=f[opName];opName.endsWith("_")&&(opName=opName.substring(0,opName.length-1)),opName=opName+OP_SCOPE_SUFFIX;let f2=(...args)=>{ENGINE.startScope(opName);try{let result=fn(...args);return isPromise(result)&&console.error("Cannot return a Promise inside of tidy."),ENGINE.endScope(result),result}catch(ex){throw ENGINE.endScope(null),ex}};return Object.defineProperty(f2,"name",{value:opName,configurable:!0}),f2}function complex_(real4,imag4){let $real=convertToTensor(real4,"real","complex"),$imag=convertToTensor(imag4,"imag","complex");assertShapesMatch($real.shape,$imag.shape,`real and imag shapes, ${$real.shape} and ${$imag.shape}, must match in call to tf.complex().`);let inputs={real:$real,imag:$imag};return ENGINE.runKernel(Complex,inputs)}var complex=op({complex_});function makeTensor(values,shape,inferredShape,dtype){if(dtype==null&&(dtype=inferDtype(values)),dtype==="complex64")throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(!isTypedArray(values)&&!Array.isArray(values)&&typeof values!="number"&&typeof values!="boolean"&&typeof values!="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(shape!=null){assertNonNegativeIntegerDimensions(shape);let providedSize=sizeFromShape(shape),inferredSize=sizeFromShape(inferredShape);assert(providedSize===inferredSize,()=>`Based on the provided shape, [${shape}], the tensor should have ${providedSize} values but has ${inferredSize}`);for(let i=0;i`Error creating a new Tensor. Inferred shape (${inferredShape}) does not match the provided shape (${shape}). `)}}return!isTypedArray(values)&&!Array.isArray(values)&&(values=[values]),shape=shape||inferredShape,values=dtype!=="string"?toTypedArray(values,dtype):flatten(values,[],!0),ENGINE.makeTensor(values,shape,dtype)}function tensor(values,shape,dtype){let inferredShape=inferShape(values,dtype);return makeTensor(values,shape,inferredShape,dtype)}var DTYPE_VALUE_SIZE_MAP={float32:4,float16:2,int32:4,uint16:2,uint8:1,bool:1,complex64:8};var NUM_BYTES_STRING_LENGTH=4;async function encodeWeights(tensors,group){let specs=[],dataPromises=[],names=Array.isArray(tensors)?tensors.map(tensor2=>tensor2.name):Object.keys(tensors);for(let i=0;i{let vals=await t.bytes(),totalNumBytes=vals.reduce((p2,c)=>p2+c.length,0)+NUM_BYTES_STRING_LENGTH*vals.length,bytes=new Uint8Array(totalNumBytes),offset=0;for(let i2=0;i2{if(totalByteLength+=x.byteLength,normalizedXs.push(x.byteLength===x.buffer.byteLength?x:new x.constructor(x)),!(x instanceof Float32Array||x instanceof Int32Array||x instanceof Uint8Array))throw new Error(`Unsupported TypedArray subtype: ${x.constructor.name}`)});let y=new Uint8Array(totalByteLength),offset=0;return normalizedXs.forEach(x=>{y.set(new Uint8Array(x.buffer),offset),offset+=x.byteLength}),y.buffer}var useNodeBuffer=typeof Buffer!="undefined"&&(typeof Blob=="undefined"||typeof atob=="undefined"||typeof btoa=="undefined");function stringByteLength(str){return useNodeBuffer?Buffer.byteLength(str):new Blob([str]).size}function arrayBufferToBase64String(buffer2){if(useNodeBuffer)return Buffer.from(buffer2).toString("base64");let buf=new Uint8Array(buffer2),s="";for(let i=0,l=buf.length;i{totalByteLength+=buffer2.byteLength});let temp=new Uint8Array(totalByteLength),offset=0;return buffers.forEach(buffer2=>{temp.set(new Uint8Array(buffer2),offset),offset+=buffer2.byteLength}),temp.buffer}function basename(path){let SEPARATOR="/";for(path=path.trim();path.endsWith(SEPARATOR);)path=path.slice(0,path.length-1);let items=path.split(SEPARATOR);return items[items.length-1]}function getModelArtifactsInfoForJSON(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date,modelTopologyType:"JSON",modelTopologyBytes:modelArtifacts.modelTopology==null?0:stringByteLength(JSON.stringify(modelArtifacts.modelTopology)),weightSpecsBytes:modelArtifacts.weightSpecs==null?0:stringByteLength(JSON.stringify(modelArtifacts.weightSpecs)),weightDataBytes:modelArtifacts.weightData==null?0:modelArtifacts.weightData.byteLength}}function computeFloat16MantisaTable(){let convertMantissa=i=>{let m=i<<13,e=0;for(;(m&8388608)==0;)e-=8388608,m<<=1;return m&=~8388608,e+=947912704,m|e},mantisaTable=new Uint32Array(2048);mantisaTable[0]=0;for(let i=1;i<1024;i++)mantisaTable[i]=convertMantissa(i);for(let i=1024;i<2048;i++)mantisaTable[i]=939524096+(i-1024<<13);return mantisaTable}function computeFloat16ExponentTable(){let exponentTable=new Uint32Array(64);exponentTable[0]=0,exponentTable[31]=1199570944,exponentTable[32]=2147483648,exponentTable[63]=3347054592;for(let i=1;i<31;i++)exponentTable[i]=i<<23;for(let i=33;i<63;i++)exponentTable[i]=2147483648+(i-32<<23);return exponentTable}function computeFloat16OffsetTable(){let offsetTable=new Uint32Array(64);for(let i=0;i<64;i++)offsetTable[i]=1024;return offsetTable[0]=offsetTable[32]=0,offsetTable}function getFloat16Decoder(){let mantisaTable=computeFloat16MantisaTable(),exponentTable=computeFloat16ExponentTable(),offsetTable=computeFloat16OffsetTable();return quantizedArray=>{let buffer2=new ArrayBuffer(4*quantizedArray.length),bufferUint32View=new Uint32Array(buffer2);for(let index=0;index>10]+(float16Bits&1023)]+exponentTable[float16Bits>>10];bufferUint32View[index]=float32Bits}return new Float32Array(buffer2)}}var IORouterRegistry=class{constructor(){this.saveRouters=[],this.loadRouters=[]}static getInstance(){return IORouterRegistry.instance==null&&(IORouterRegistry.instance=new IORouterRegistry),IORouterRegistry.instance}static registerSaveRouter(saveRouter){IORouterRegistry.getInstance().saveRouters.push(saveRouter)}static registerLoadRouter(loadRouter){IORouterRegistry.getInstance().loadRouters.push(loadRouter)}static getSaveHandlers(url){return IORouterRegistry.getHandlers(url,"save")}static getLoadHandlers(url,loadOptions){return IORouterRegistry.getHandlers(url,"load",loadOptions)}static getHandlers(url,handlerType,loadOptions){let validHandlers=[];return(handlerType==="load"?IORouterRegistry.getInstance().loadRouters:IORouterRegistry.getInstance().saveRouters).forEach(router=>{let handler=router(url,loadOptions);handler!==null&&validHandlers.push(handler)}),validHandlers}},registerSaveRouter=loudRouter=>IORouterRegistry.registerSaveRouter(loudRouter),registerLoadRouter=loudRouter=>IORouterRegistry.registerLoadRouter(loudRouter),getSaveHandlers=url=>IORouterRegistry.getSaveHandlers(url),getLoadHandlers=(url,loadOptions)=>IORouterRegistry.getLoadHandlers(url,loadOptions);var DATABASE_NAME="tensorflowjs",DATABASE_VERSION=1,MODEL_STORE_NAME="models_store",INFO_STORE_NAME="model_info_store";function getIndexedDBFactory(){if(!env().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");let theWindow=typeof window=="undefined"?self:window,factory=theWindow.indexedDB||theWindow.mozIndexedDB||theWindow.webkitIndexedDB||theWindow.msIndexedDB||theWindow.shimIndexedDB;if(factory==null)throw new Error("The current browser does not appear to support IndexedDB.");return factory}function setUpDatabase(openRequest){let db=openRequest.result;db.createObjectStore(MODEL_STORE_NAME,{keyPath:"modelPath"}),db.createObjectStore(INFO_STORE_NAME,{keyPath:"modelPath"})}var BrowserIndexedDB=class{constructor(modelPath){if(this.indexedDB=getIndexedDBFactory(),modelPath==null||!modelPath)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=modelPath}async save(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return this.databaseAction(this.modelPath,modelArtifacts)}async load(){return this.databaseAction(this.modelPath)}databaseAction(modelPath,modelArtifacts){return new Promise((resolve,reject)=>{let openRequest=this.indexedDB.open(DATABASE_NAME,DATABASE_VERSION);openRequest.onupgradeneeded=()=>setUpDatabase(openRequest),openRequest.onsuccess=()=>{let db=openRequest.result;if(modelArtifacts==null){let modelTx=db.transaction(MODEL_STORE_NAME,"readonly"),getRequest=modelTx.objectStore(MODEL_STORE_NAME).get(this.modelPath);getRequest.onsuccess=()=>{if(getRequest.result==null)return db.close(),reject(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`));resolve(getRequest.result.modelArtifacts)},getRequest.onerror=error=>(db.close(),reject(getRequest.error)),modelTx.oncomplete=()=>db.close()}else{let modelArtifactsInfo=getModelArtifactsInfoForJSON(modelArtifacts),infoTx=db.transaction(INFO_STORE_NAME,"readwrite"),infoStore=infoTx.objectStore(INFO_STORE_NAME),putInfoRequest=infoStore.put({modelPath:this.modelPath,modelArtifactsInfo}),modelTx;putInfoRequest.onsuccess=()=>{modelTx=db.transaction(MODEL_STORE_NAME,"readwrite");let putModelRequest=modelTx.objectStore(MODEL_STORE_NAME).put({modelPath:this.modelPath,modelArtifacts,modelArtifactsInfo});putModelRequest.onsuccess=()=>resolve({modelArtifactsInfo}),putModelRequest.onerror=error=>{infoStore=infoTx.objectStore(INFO_STORE_NAME);let deleteInfoRequest=infoStore.delete(this.modelPath);deleteInfoRequest.onsuccess=()=>(db.close(),reject(putModelRequest.error)),deleteInfoRequest.onerror=error2=>(db.close(),reject(putModelRequest.error))}},putInfoRequest.onerror=error=>(db.close(),reject(putInfoRequest.error)),infoTx.oncomplete=()=>{modelTx==null?db.close():modelTx.oncomplete=()=>db.close()}}},openRequest.onerror=error=>reject(openRequest.error)})}};BrowserIndexedDB.URL_SCHEME="indexeddb://";var indexedDBRouter=url=>env().getBool("IS_BROWSER")&&!Array.isArray(url)&&url.startsWith(BrowserIndexedDB.URL_SCHEME)?browserIndexedDB(url.slice(BrowserIndexedDB.URL_SCHEME.length)):null;IORouterRegistry.registerSaveRouter(indexedDBRouter);IORouterRegistry.registerLoadRouter(indexedDBRouter);function browserIndexedDB(modelPath){return new BrowserIndexedDB(modelPath)}function maybeStripScheme(key){return key.startsWith(BrowserIndexedDB.URL_SCHEME)?key.slice(BrowserIndexedDB.URL_SCHEME.length):key}var BrowserIndexedDBManager=class{constructor(){this.indexedDB=getIndexedDBFactory()}async listModels(){return new Promise((resolve,reject)=>{let openRequest=this.indexedDB.open(DATABASE_NAME,DATABASE_VERSION);openRequest.onupgradeneeded=()=>setUpDatabase(openRequest),openRequest.onsuccess=()=>{let db=openRequest.result,tx=db.transaction(INFO_STORE_NAME,"readonly"),getAllInfoRequest=tx.objectStore(INFO_STORE_NAME).getAll();getAllInfoRequest.onsuccess=()=>{let out={};for(let item of getAllInfoRequest.result)out[item.modelPath]=item.modelArtifactsInfo;resolve(out)},getAllInfoRequest.onerror=error=>(db.close(),reject(getAllInfoRequest.error)),tx.oncomplete=()=>db.close()},openRequest.onerror=error=>reject(openRequest.error)})}async removeModel(path){return path=maybeStripScheme(path),new Promise((resolve,reject)=>{let openRequest=this.indexedDB.open(DATABASE_NAME,DATABASE_VERSION);openRequest.onupgradeneeded=()=>setUpDatabase(openRequest),openRequest.onsuccess=()=>{let db=openRequest.result,infoTx=db.transaction(INFO_STORE_NAME,"readwrite"),infoStore=infoTx.objectStore(INFO_STORE_NAME),getInfoRequest=infoStore.get(path),modelTx;getInfoRequest.onsuccess=()=>{if(getInfoRequest.result==null)return db.close(),reject(new Error(`Cannot find model with path '${path}' in IndexedDB.`));{let deleteInfoRequest=infoStore.delete(path),deleteModelData=()=>{modelTx=db.transaction(MODEL_STORE_NAME,"readwrite");let deleteModelRequest=modelTx.objectStore(MODEL_STORE_NAME).delete(path);deleteModelRequest.onsuccess=()=>resolve(getInfoRequest.result.modelArtifactsInfo),deleteModelRequest.onerror=error=>reject(getInfoRequest.error)};deleteInfoRequest.onsuccess=deleteModelData,deleteInfoRequest.onerror=error=>(deleteModelData(),db.close(),reject(getInfoRequest.error))}},getInfoRequest.onerror=error=>(db.close(),reject(getInfoRequest.error)),infoTx.oncomplete=()=>{modelTx==null?db.close():modelTx.oncomplete=()=>db.close()}},openRequest.onerror=error=>reject(openRequest.error)})}};var PATH_SEPARATOR="/",PATH_PREFIX="tensorflowjs_models",INFO_SUFFIX="info",MODEL_TOPOLOGY_SUFFIX="model_topology",WEIGHT_SPECS_SUFFIX="weight_specs",WEIGHT_DATA_SUFFIX="weight_data",MODEL_METADATA_SUFFIX="model_metadata";function getModelKeys(path){return{info:[PATH_PREFIX,path,INFO_SUFFIX].join(PATH_SEPARATOR),topology:[PATH_PREFIX,path,MODEL_TOPOLOGY_SUFFIX].join(PATH_SEPARATOR),weightSpecs:[PATH_PREFIX,path,WEIGHT_SPECS_SUFFIX].join(PATH_SEPARATOR),weightData:[PATH_PREFIX,path,WEIGHT_DATA_SUFFIX].join(PATH_SEPARATOR),modelMetadata:[PATH_PREFIX,path,MODEL_METADATA_SUFFIX].join(PATH_SEPARATOR)}}function getModelPathFromKey(key){let items=key.split(PATH_SEPARATOR);if(items.length<3)throw new Error(`Invalid key format: ${key}`);return items.slice(1,items.length-1).join(PATH_SEPARATOR)}function maybeStripScheme2(key){return key.startsWith(BrowserLocalStorage.URL_SCHEME)?key.slice(BrowserLocalStorage.URL_SCHEME.length):key}var BrowserLocalStorage=class{constructor(modelPath){if(!env().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,modelPath==null||!modelPath)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=modelPath,this.keys=getModelKeys(this.modelPath)}async save(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");{let topology=JSON.stringify(modelArtifacts.modelTopology),weightSpecs=JSON.stringify(modelArtifacts.weightSpecs),modelArtifactsInfo=getModelArtifactsInfoForJSON(modelArtifacts);try{this.LS.setItem(this.keys.info,JSON.stringify(modelArtifactsInfo)),this.LS.setItem(this.keys.topology,topology),this.LS.setItem(this.keys.weightSpecs,weightSpecs),this.LS.setItem(this.keys.weightData,arrayBufferToBase64String(modelArtifacts.weightData));let result={format:modelArtifacts.format,generatedBy:modelArtifacts.generatedBy,convertedBy:modelArtifacts.convertedBy};return modelArtifacts.signature!=null&&(result.signature=modelArtifacts.signature),modelArtifacts.userDefinedMetadata!=null&&(result.userDefinedMetadata=modelArtifacts.userDefinedMetadata),modelArtifacts.modelInitializer!=null&&(result.modelInitializer=modelArtifacts.modelInitializer),this.LS.setItem(this.keys.modelMetadata,JSON.stringify(result)),{modelArtifactsInfo}}catch(err){throw this.LS.removeItem(this.keys.info),this.LS.removeItem(this.keys.topology),this.LS.removeItem(this.keys.weightSpecs),this.LS.removeItem(this.keys.weightData),this.LS.removeItem(this.keys.modelMetadata),new Error(`Failed to save model '${this.modelPath}' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes=${modelArtifactsInfo.modelTopologyBytes}, weightSpecsBytes=${modelArtifactsInfo.weightSpecsBytes}, weightDataBytes=${modelArtifactsInfo.weightDataBytes}.`)}}}async load(){let info=JSON.parse(this.LS.getItem(this.keys.info));if(info==null)throw new Error(`In local storage, there is no model with name '${this.modelPath}'`);if(info.modelTopologyType!=="JSON")throw new Error("BrowserLocalStorage does not support loading non-JSON model topology yet.");let out={},topology=JSON.parse(this.LS.getItem(this.keys.topology));if(topology==null)throw new Error(`In local storage, the topology of model '${this.modelPath}' is missing.`);out.modelTopology=topology;let weightSpecs=JSON.parse(this.LS.getItem(this.keys.weightSpecs));if(weightSpecs==null)throw new Error(`In local storage, the weight specs of model '${this.modelPath}' are missing.`);out.weightSpecs=weightSpecs;let metadataString=this.LS.getItem(this.keys.modelMetadata);if(metadataString!=null){let metadata=JSON.parse(metadataString);out.format=metadata.format,out.generatedBy=metadata.generatedBy,out.convertedBy=metadata.convertedBy,metadata.signature!=null&&(out.signature=metadata.signature),metadata.userDefinedMetadata!=null&&(out.userDefinedMetadata=metadata.userDefinedMetadata),metadata.modelInitializer!=null&&(out.modelInitializer=metadata.modelInitializer)}let weightDataBase64=this.LS.getItem(this.keys.weightData);if(weightDataBase64==null)throw new Error(`In local storage, the binary weight values of model '${this.modelPath}' are missing.`);return out.weightData=base64StringToArrayBuffer(weightDataBase64),out}};BrowserLocalStorage.URL_SCHEME="localstorage://";var localStorageRouter=url=>env().getBool("IS_BROWSER")&&!Array.isArray(url)&&url.startsWith(BrowserLocalStorage.URL_SCHEME)?browserLocalStorage(url.slice(BrowserLocalStorage.URL_SCHEME.length)):null;IORouterRegistry.registerSaveRouter(localStorageRouter);IORouterRegistry.registerLoadRouter(localStorageRouter);function browserLocalStorage(modelPath){return new BrowserLocalStorage(modelPath)}var BrowserLocalStorageManager=class{constructor(){assert(env().getBool("IS_BROWSER"),()=>"Current environment is not a web browser"),assert(typeof window=="undefined"||typeof window.localStorage!="undefined",()=>"Current browser does not appear to support localStorage"),this.LS=window.localStorage}async listModels(){let out={},prefix=PATH_PREFIX+PATH_SEPARATOR,suffix=PATH_SEPARATOR+INFO_SUFFIX;for(let i=0;i"scheme must not be undefined or null."),scheme.endsWith(URL_SCHEME_SUFFIX)&&(scheme=scheme.slice(0,scheme.indexOf(URL_SCHEME_SUFFIX))),assert(scheme.length>0,()=>"scheme must not be an empty string.");let registry=ModelStoreManagerRegistry.getInstance();assert(registry.managers[scheme]==null,()=>`A model store manager is already registered for scheme '${scheme}'.`),registry.managers[scheme]=manager}static getManager(scheme){let manager=this.getInstance().managers[scheme];if(manager==null)throw new Error(`Cannot find model manager for scheme '${scheme}'`);return manager}static getSchemes(){return Object.keys(this.getInstance().managers)}};function parseURL(url){if(url.indexOf(URL_SCHEME_SUFFIX)===-1)throw new Error(`The url string provided does not contain a scheme. Supported schemes are: ${ModelStoreManagerRegistry.getSchemes().join(",")}`);return{scheme:url.split(URL_SCHEME_SUFFIX)[0],path:url.split(URL_SCHEME_SUFFIX)[1]}}async function cloneModelInternal(sourceURL,destURL,deleteSource=!1){assert(sourceURL!==destURL,()=>`Old path and new path are the same: '${sourceURL}'`);let loadHandlers=IORouterRegistry.getLoadHandlers(sourceURL);assert(loadHandlers.length>0,()=>`Copying failed because no load handler is found for source URL ${sourceURL}.`),assert(loadHandlers.length<2,()=>`Copying failed because more than one (${loadHandlers.length}) load handlers for source URL ${sourceURL}.`);let loadHandler=loadHandlers[0],saveHandlers=IORouterRegistry.getSaveHandlers(destURL);assert(saveHandlers.length>0,()=>`Copying failed because no save handler is found for destination URL ${destURL}.`),assert(saveHandlers.length<2,()=>`Copying failed because more than one (${loadHandlers.length}) save handlers for destination URL ${destURL}.`);let saveHandler=saveHandlers[0],sourceScheme=parseURL(sourceURL).scheme,sourcePath=parseURL(sourceURL).path,sameMedium=sourceScheme===parseURL(sourceURL).scheme,modelArtifacts=await loadHandler.load();deleteSource&&sameMedium&&await ModelStoreManagerRegistry.getManager(sourceScheme).removeModel(sourcePath);let saveResult=await saveHandler.save(modelArtifacts);return deleteSource&&!sameMedium&&await ModelStoreManagerRegistry.getManager(sourceScheme).removeModel(sourcePath),saveResult.modelArtifactsInfo}async function listModels(){let schemes=ModelStoreManagerRegistry.getSchemes(),out={};for(let scheme of schemes){let schemeOut=await ModelStoreManagerRegistry.getManager(scheme).listModels();for(let path in schemeOut){let url=scheme+URL_SCHEME_SUFFIX+path;out[url]=schemeOut[path]}}return out}async function removeModel(url){let schemeAndPath=parseURL(url);return ModelStoreManagerRegistry.getManager(schemeAndPath.scheme).removeModel(schemeAndPath.path)}async function copyModel(sourceURL,destURL){return cloneModelInternal(sourceURL,destURL,!1)}async function moveModel(sourceURL,destURL){return cloneModelInternal(sourceURL,destURL,!0)}var PlatformBrowser=class{fetch(path,init2){return fetch(path,init2)}now(){return performance.now()}encode(text,encoding){if(encoding!=="utf-8"&&encoding!=="utf8")throw new Error(`Browser's encoder only supports utf-8, but got ${encoding}`);return this.textEncoder==null&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(text)}decode(bytes,encoding){return new TextDecoder(encoding).decode(bytes)}};if(env().get("IS_BROWSER")){env().setPlatform("browser",new PlatformBrowser);try{ModelStoreManagerRegistry.registerManager(BrowserLocalStorage.URL_SCHEME,new BrowserLocalStorageManager)}catch(err){}try{ModelStoreManagerRegistry.registerManager(BrowserIndexedDB.URL_SCHEME,new BrowserIndexedDBManager)}catch(err){}}var getNodeFetch={importFetch:()=>require_browser()},systemFetch;var PlatformNode=class{constructor(){this.util=require("util"),this.textEncoder=new this.util.TextEncoder}fetch(path,requestInits){return env().global.fetch!=null?env().global.fetch(path,requestInits):(systemFetch==null&&(systemFetch=getNodeFetch.importFetch()),systemFetch(path,requestInits))}now(){let time2=process.hrtime();return time2[0]*1e3+time2[1]/1e6}encode(text,encoding){if(encoding!=="utf-8"&&encoding!=="utf8")throw new Error(`Node built-in encoder only supports utf-8, but got ${encoding}`);return this.textEncoder.encode(text)}decode(bytes,encoding){return bytes.length===0?"":new this.util.TextDecoder(encoding).decode(bytes)}};env().get("IS_NODE")&&env().setPlatform("node",new PlatformNode);function buffer(shape,dtype="float32",values){return dtype=dtype||"float32",assertNonNegativeIntegerDimensions(shape),new TensorBuffer(shape,dtype,values)}function cast_(x,dtype){let $x=convertToTensor(x,"x","cast");if(!isValidDtype(dtype))throw new Error(`Failed to cast to unknown dtype ${dtype}`);if(dtype==="string"&&$x.dtype!=="string"||dtype!=="string"&&$x.dtype==="string")throw new Error("Only strings can be casted to strings");let inputs={x:$x},attrs={dtype};return ENGINE.runKernel(Cast,inputs,attrs)}var cast=op({cast_});function clone_(x){let inputs={x:convertToTensor(x,"x","clone","string_or_numeric")};return ENGINE.runKernel(Identity,inputs)}var clone=op({clone_});function print2(x,verbose=!1){console.log(x.toString(verbose))}getOrMakeEngine();var opHandler2={buffer,cast,clone,print:print2};setOpHandler(opHandler2);var io_exports={};__export(io_exports,{browserFiles:()=>browserFiles,browserHTTPRequest:()=>browserHTTPRequest,concatenateArrayBuffers:()=>concatenateArrayBuffers,copyModel:()=>copyModel,decodeWeights:()=>decodeWeights,encodeWeights:()=>encodeWeights,fromMemory:()=>fromMemory,getLoadHandlers:()=>getLoadHandlers,getModelArtifactsInfoForJSON:()=>getModelArtifactsInfoForJSON,getSaveHandlers:()=>getSaveHandlers,http:()=>http,isHTTPScheme:()=>isHTTPScheme,listModels:()=>listModels,loadWeights:()=>loadWeights,moveModel:()=>moveModel,registerLoadRouter:()=>registerLoadRouter,registerSaveRouter:()=>registerSaveRouter,removeModel:()=>removeModel,weightsLoaderFactory:()=>weightsLoaderFactory,withSaveHandler:()=>withSaveHandler});var DEFAULT_FILE_NAME_PREFIX="model",DEFAULT_JSON_EXTENSION_NAME=".json",DEFAULT_WEIGHT_DATA_EXTENSION_NAME=".weights.bin";function defer(f){return new Promise(resolve=>setTimeout(resolve)).then(f)}var BrowserDownloads=class{constructor(fileNamePrefix){if(!env().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");fileNamePrefix.startsWith(BrowserDownloads.URL_SCHEME)&&(fileNamePrefix=fileNamePrefix.slice(BrowserDownloads.URL_SCHEME.length)),(fileNamePrefix==null||fileNamePrefix.length===0)&&(fileNamePrefix=DEFAULT_FILE_NAME_PREFIX),this.modelTopologyFileName=fileNamePrefix+DEFAULT_JSON_EXTENSION_NAME,this.weightDataFileName=fileNamePrefix+DEFAULT_WEIGHT_DATA_EXTENSION_NAME}async save(modelArtifacts){if(typeof document=="undefined")throw new Error("Browser downloads are not supported in this environment since `document` is not present");let weightsURL=window.URL.createObjectURL(new Blob([modelArtifacts.weightData],{type:"application/octet-stream"}));if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet.");{let weightsManifest=[{paths:["./"+this.weightDataFileName],weights:modelArtifacts.weightSpecs}],modelTopologyAndWeightManifest={modelTopology:modelArtifacts.modelTopology,format:modelArtifacts.format,generatedBy:modelArtifacts.generatedBy,convertedBy:modelArtifacts.convertedBy,weightsManifest};modelArtifacts.signature!=null&&(modelTopologyAndWeightManifest.signature=modelArtifacts.signature),modelArtifacts.userDefinedMetadata!=null&&(modelTopologyAndWeightManifest.userDefinedMetadata=modelArtifacts.userDefinedMetadata),modelArtifacts.modelInitializer!=null&&(modelTopologyAndWeightManifest.modelInitializer=modelArtifacts.modelInitializer);let modelTopologyAndWeightManifestURL=window.URL.createObjectURL(new Blob([JSON.stringify(modelTopologyAndWeightManifest)],{type:"application/json"})),jsonAnchor=this.jsonAnchor==null?document.createElement("a"):this.jsonAnchor;if(jsonAnchor.download=this.modelTopologyFileName,jsonAnchor.href=modelTopologyAndWeightManifestURL,await defer(()=>jsonAnchor.dispatchEvent(new MouseEvent("click"))),modelArtifacts.weightData!=null){let weightDataAnchor=this.weightDataAnchor==null?document.createElement("a"):this.weightDataAnchor;weightDataAnchor.download=this.weightDataFileName,weightDataAnchor.href=weightsURL,await defer(()=>weightDataAnchor.dispatchEvent(new MouseEvent("click")))}return{modelArtifactsInfo:getModelArtifactsInfoForJSON(modelArtifacts)}}}};BrowserDownloads.URL_SCHEME="downloads://";var BrowserFiles=class{constructor(files){if(files==null||files.length<1)throw new Error(`When calling browserFiles, at least 1 file is required, but received ${files}`);this.files=files}async load(){let jsonFile=this.files[0],weightFiles=this.files.slice(1);return new Promise((resolve,reject)=>{let jsonReader=new FileReader;jsonReader.onload=event=>{let modelJSON=JSON.parse(event.target.result),modelTopology=modelJSON.modelTopology;if(modelTopology==null){reject(new Error(`modelTopology field is missing from file ${jsonFile.name}`));return}weightFiles.length===0&&resolve({modelTopology});let weightsManifest=modelJSON.weightsManifest;if(weightsManifest==null){reject(new Error(`weightManifest field is missing from file ${jsonFile.name}`));return}let pathToFile;try{pathToFile=this.checkManifestAndWeightFiles(weightsManifest,weightFiles)}catch(err){reject(err);return}let weightSpecs=[],paths=[],perFileBuffers=[];weightsManifest.forEach(weightsGroup=>{weightsGroup.paths.forEach(path=>{paths.push(path),perFileBuffers.push(null)}),weightSpecs.push(...weightsGroup.weights)}),weightsManifest.forEach(weightsGroup=>{weightsGroup.paths.forEach(path=>{let weightFileReader=new FileReader;weightFileReader.onload=event2=>{let weightData=event2.target.result,index=paths.indexOf(path);if(perFileBuffers[index]=weightData,perFileBuffers.indexOf(null)===-1){let result={modelTopology,weightSpecs,weightData:concatenateArrayBuffers(perFileBuffers),format:modelJSON.format,generatedBy:modelJSON.generatedBy,convertedBy:modelJSON.convertedBy};modelJSON.signature!=null&&(result.signature=modelJSON.signature),modelJSON.userDefinedMetadata!=null&&(result.userDefinedMetadata=modelJSON.userDefinedMetadata),modelJSON.modelInitializer!=null&&(result.modelInitializer=modelJSON.modelInitializer),resolve(result)}},weightFileReader.onerror=error=>reject(`Failed to weights data from file of path '${path}'.`),weightFileReader.readAsArrayBuffer(pathToFile[path])})})},jsonReader.onerror=error=>reject(`Failed to read model topology and weights manifest JSON from file '${jsonFile.name}'. BrowserFiles supports loading Keras-style tf.Model artifacts only.`),jsonReader.readAsText(jsonFile)})}checkManifestAndWeightFiles(manifest,files){let basenames=[],fileNames=files.map(file=>basename(file.name)),pathToFile={};for(let group of manifest)group.paths.forEach(path=>{let pathBasename=basename(path);if(basenames.indexOf(pathBasename)!==-1)throw new Error(`Duplicate file basename found in weights manifest: '${pathBasename}'`);if(basenames.push(pathBasename),fileNames.indexOf(pathBasename)===-1)throw new Error(`Weight file with basename '${pathBasename}' is not provided.`);pathToFile[path]=files[fileNames.indexOf(pathBasename)]});if(basenames.length!==files.length)throw new Error(`Mismatch in the number of files in weights manifest (${basenames.length}) and the number of weight files provided (${files.length}).`);return pathToFile}},browserDownloadsRouter=url=>env().getBool("IS_BROWSER")&&!Array.isArray(url)&&url.startsWith(BrowserDownloads.URL_SCHEME)?browserDownloads(url.slice(BrowserDownloads.URL_SCHEME.length)):null;IORouterRegistry.registerSaveRouter(browserDownloadsRouter);function browserDownloads(fileNamePrefix="model"){return new BrowserDownloads(fileNamePrefix)}function browserFiles(files){return new BrowserFiles(files)}function monitorPromisesProgress(promises,onProgress,startFraction,endFraction){checkPromises(promises),startFraction=startFraction==null?0:startFraction,endFraction=endFraction==null?1:endFraction,checkFraction(startFraction,endFraction);let resolvedPromise=0,registerMonitor=promise=>(promise.then(value=>{let fraction=startFraction+ ++resolvedPromise/promises.length*(endFraction-startFraction);return onProgress(fraction),value}),promise);function checkPromises(promises2){assert(promises2!=null&&Array.isArray(promises2)&&promises2.length>0,()=>"promises must be a none empty array")}function checkFraction(startFraction2,endFraction2){assert(startFraction2>=0&&startFraction2<=1,()=>`Progress fraction must be in range [0, 1], but got startFraction ${startFraction2}`),assert(endFraction2>=0&&endFraction2<=1,()=>`Progress fraction must be in range [0, 1], but got endFraction ${endFraction2}`),assert(endFraction2>=startFraction2,()=>`startFraction must be no more than endFraction, but got startFraction ${startFraction2} and endFraction ${endFraction2}`)}return Promise.all(promises.map(registerMonitor))}async function loadWeightsAsArrayBuffer(fetchURLs,loadOptions){loadOptions==null&&(loadOptions={});let fetchFunc=loadOptions.fetchFunc==null?env().platform.fetch:loadOptions.fetchFunc,requests=fetchURLs.map(fetchURL=>fetchFunc(fetchURL,loadOptions.requestInit,{isBinary:!0})),fetchStartFraction=0,fetchEndFraction=.5,bufferPromises=(loadOptions.onProgress==null?await Promise.all(requests):await monitorPromisesProgress(requests,loadOptions.onProgress,fetchStartFraction,fetchEndFraction)).map(response=>response.arrayBuffer()),bufferStartFraction=.5,bufferEndFraction=1;return loadOptions.onProgress==null?await Promise.all(bufferPromises):await monitorPromisesProgress(bufferPromises,loadOptions.onProgress,bufferStartFraction,bufferEndFraction)}async function loadWeights(manifest,filePathPrefix="",weightNames,requestInit){return weightsLoaderFactory(fetchUrls=>loadWeightsAsArrayBuffer(fetchUrls,{requestInit}))(manifest,filePathPrefix,weightNames)}function weightsLoaderFactory(fetchWeightsFunction){return async(manifest,filePathPrefix="",weightNames)=>{let groupIndicesToFetchMap=manifest.map(()=>!1),groupWeightsToFetch={},weightsFound=weightNames!=null?weightNames.map(()=>!1):[],allManifestWeightNames=[];if(manifest.forEach((manifestGroupConfig,groupIndex)=>{let groupOffset=0;manifestGroupConfig.weights.forEach(weightsEntry=>{let rawDtype="quantization"in weightsEntry?weightsEntry.quantization.dtype:weightsEntry.dtype,weightsBytes=DTYPE_VALUE_SIZE_MAP[rawDtype]*sizeFromShape(weightsEntry.shape),enqueueWeightsForFetchingFn=()=>{groupIndicesToFetchMap[groupIndex]=!0,groupWeightsToFetch[groupIndex]==null&&(groupWeightsToFetch[groupIndex]=[]),groupWeightsToFetch[groupIndex].push({manifestEntry:weightsEntry,groupOffset,sizeBytes:weightsBytes})};weightNames!=null?weightNames.forEach((weightName,weightIndex)=>{weightName===weightsEntry.name&&(enqueueWeightsForFetchingFn(),weightsFound[weightIndex]=!0)}):enqueueWeightsForFetchingFn(),allManifestWeightNames.push(weightsEntry.name),groupOffset+=weightsBytes})}),!weightsFound.every(found=>found)){let weightsNotFound=weightNames.filter((_,i)=>!weightsFound[i]);throw new Error(`Could not find weights in manifest with names: ${weightsNotFound.join(", ")}. -Manifest JSON has weights with names: ${allManifestWeightNames.join(", ")}.`)}let groupIndicesToFetch=groupIndicesToFetchMap.reduce((accumulator,shouldFetch,i)=>(shouldFetch&&accumulator.push(i),accumulator),[]),fetchUrls=[];groupIndicesToFetch.forEach(i=>{manifest[i].paths.forEach(filepath=>{let fetchUrl=filePathPrefix+(filePathPrefix.endsWith("/")?"":"/")+filepath;fetchUrls.push(fetchUrl)})});let buffers=await fetchWeightsFunction(fetchUrls),weightsTensorMap={},bufferIndexOffset=0;return groupIndicesToFetch.forEach(i=>{let numBuffers=manifest[i].paths.length,groupBytes=0;for(let i2=0;i2{let byteBuffer=groupBuffer.slice(weightsEntry.groupOffset,weightsEntry.groupOffset+weightsEntry.sizeBytes),nameToTensorMap=decodeWeights(byteBuffer,[weightsEntry.manifestEntry]);for(let name in nameToTensorMap)weightsTensorMap[name]=nameToTensorMap[name]}),bufferIndexOffset+=numBuffers}),weightsTensorMap}}var OCTET_STREAM_MIME_TYPE="application/octet-stream",JSON_TYPE="application/json",HTTPRequest=class{constructor(path,loadOptions){if(this.DEFAULT_METHOD="POST",loadOptions==null&&(loadOptions={}),this.weightPathPrefix=loadOptions.weightPathPrefix,this.onProgress=loadOptions.onProgress,this.weightUrlConverter=loadOptions.weightUrlConverter,loadOptions.fetchFunc!=null?(assert(typeof loadOptions.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=loadOptions.fetchFunc):this.fetch=env().platform.fetch,assert(path!=null&&path.length>0,()=>"URL path for http must not be null, undefined or empty."),Array.isArray(path)&&assert(path.length===2,()=>`URL paths for http must have a length of 2, (actual length is ${path.length}).`),this.path=path,loadOptions.requestInit!=null&&loadOptions.requestInit.body!=null)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=loadOptions.requestInit||{}}async save(modelArtifacts){if(modelArtifacts.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");let init2=Object.assign({method:this.DEFAULT_METHOD},this.requestInit);init2.body=new FormData;let weightsManifest=[{paths:["./model.weights.bin"],weights:modelArtifacts.weightSpecs}],modelTopologyAndWeightManifest={modelTopology:modelArtifacts.modelTopology,format:modelArtifacts.format,generatedBy:modelArtifacts.generatedBy,convertedBy:modelArtifacts.convertedBy,weightsManifest};modelArtifacts.signature!=null&&(modelTopologyAndWeightManifest.signature=modelArtifacts.signature),modelArtifacts.userDefinedMetadata!=null&&(modelTopologyAndWeightManifest.userDefinedMetadata=modelArtifacts.userDefinedMetadata),modelArtifacts.modelInitializer!=null&&(modelTopologyAndWeightManifest.modelInitializer=modelArtifacts.modelInitializer),init2.body.append("model.json",new Blob([JSON.stringify(modelTopologyAndWeightManifest)],{type:JSON_TYPE}),"model.json"),modelArtifacts.weightData!=null&&init2.body.append("model.weights.bin",new Blob([modelArtifacts.weightData],{type:OCTET_STREAM_MIME_TYPE}),"model.weights.bin");let response=await this.fetch(this.path,init2);if(response.ok)return{modelArtifactsInfo:getModelArtifactsInfoForJSON(modelArtifacts),responses:[response]};throw new Error(`BrowserHTTPRequest.save() failed due to HTTP response status ${response.status}.`)}async load(){let modelConfigRequest=await this.fetch(this.path,this.requestInit);if(!modelConfigRequest.ok)throw new Error(`Request to ${this.path} failed with status code ${modelConfigRequest.status}. Please verify this URL points to the model JSON of the model to load.`);let modelConfig;try{modelConfig=await modelConfigRequest.json()}catch(e){let message=`Failed to parse model JSON of response from ${this.path}.`;throw this.path.endsWith(".pb")?message+=" 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.":message+=" Please make sure the server is serving valid JSON for this request.",new Error(message)}let modelTopology=modelConfig.modelTopology,weightsManifest=modelConfig.weightsManifest,generatedBy=modelConfig.generatedBy,convertedBy=modelConfig.convertedBy,format=modelConfig.format,signature=modelConfig.signature,userDefinedMetadata=modelConfig.userDefinedMetadata;if(modelTopology==null&&weightsManifest==null)throw new Error(`The JSON from HTTP path ${this.path} contains neither model topology or manifest for weights.`);let weightSpecs,weightData;weightsManifest!=null&&([weightSpecs,weightData]=await this.loadWeights(weightsManifest));let artifacts={modelTopology,weightSpecs,weightData,generatedBy,convertedBy,format};signature!=null&&(artifacts.signature=signature),userDefinedMetadata!=null&&(artifacts.userDefinedMetadata=userDefinedMetadata);let initializer=modelConfig.modelInitializer;return initializer&&(artifacts.modelInitializer=initializer),artifacts}async loadWeights(weightsManifest){let weightPath=Array.isArray(this.path)?this.path[1]:this.path,[prefix,suffix]=parseUrl(weightPath),pathPrefix=this.weightPathPrefix||prefix,weightSpecs=[];for(let entry of weightsManifest)weightSpecs.push(...entry.weights);let fetchURLs=[],urlPromises=[];for(let weightsGroup of weightsManifest)for(let path of weightsGroup.paths)this.weightUrlConverter!=null?urlPromises.push(this.weightUrlConverter(path)):fetchURLs.push(pathPrefix+path+suffix);this.weightUrlConverter&&fetchURLs.push(...await Promise.all(urlPromises));let buffers=await loadWeightsAsArrayBuffer(fetchURLs,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress});return[weightSpecs,concatenateArrayBuffers(buffers)]}};HTTPRequest.URL_SCHEME_REGEX=/^https?:\/\//;function parseUrl(url){let lastSlash=url.lastIndexOf("/"),lastSearchParam=url.lastIndexOf("?"),prefix=url.substring(0,lastSlash),suffix=lastSearchParam>lastSlash?url.substring(lastSearchParam):"";return[prefix+"/",suffix]}function isHTTPScheme(url){return url.match(HTTPRequest.URL_SCHEME_REGEX)!=null}var httpRouter=(url,loadOptions)=>{if(typeof fetch=="undefined"&&(loadOptions==null||loadOptions.fetchFunc==null))return null;{let isHTTP=!0;if(Array.isArray(url)?isHTTP=url.every(urlItem=>isHTTPScheme(urlItem)):isHTTP=isHTTPScheme(url),isHTTP)return http(url,loadOptions)}return null};IORouterRegistry.registerSaveRouter(httpRouter);IORouterRegistry.registerLoadRouter(httpRouter);function http(path,loadOptions){return new HTTPRequest(path,loadOptions)}function browserHTTPRequest(path,loadOptions){return http(path,loadOptions)}var PassthroughLoader=class{constructor(modelArtifacts){this.modelArtifacts=modelArtifacts}async load(){return this.modelArtifacts}},PassthroughSaver=class{constructor(saveHandler){this.saveHandler=saveHandler}async save(modelArtifacts){return this.saveHandler(modelArtifacts)}};function fromMemory(modelArtifacts,weightSpecs,weightData,trainingConfig){return arguments.length===1?modelArtifacts.modelTopology!=null||modelArtifacts.weightSpecs!=null?new PassthroughLoader(modelArtifacts):(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 PassthroughLoader({modelTopology:modelArtifacts})):(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 PassthroughLoader({modelTopology:modelArtifacts,weightSpecs,weightData,trainingConfig}))}function withSaveHandler(saveHandler){return new PassthroughSaver(saveHandler)}var math_exports={};__export(math_exports,{confusionMatrix:()=>confusionMatrix});function matMul_(a,b,transposeA=!1,transposeB=!1){let $a=convertToTensor(a,"a","matMul"),$b=convertToTensor(b,"b","matMul");[$a,$b]=makeTypesMatch($a,$b);let inputs={a:$a,b:$b},attrs={transposeA,transposeB};return ENGINE.runKernel(BatchMatMul,inputs,attrs)}var matMul=op({matMul_});function oneHot_(indices,depth,onValue=1,offValue=0){if(depth<2)throw new Error(`Error in oneHot: depth must be >=2, but it is ${depth}`);let inputs={indices:convertToTensor(indices,"indices","oneHot","int32")},attrs={depth,onValue,offValue};return ENGINE.runKernel(OneHot,inputs,attrs)}var oneHot=op({oneHot_});function transpose_(x,perm){let $x=convertToTensor(x,"x","transpose");if(perm==null&&(perm=$x.shape.map((s,i)=>i).reverse()),assert($x.rank===perm.length,()=>`Error in transpose: rank of input ${$x.rank} must match length of perm ${perm}.`),perm.forEach(axis=>{assert(axis>=0&&axis<$x.rank,()=>`All entries in 'perm' must be between 0 and ${$x.rank-1} but got ${perm}`)}),$x.rank<=1)return $x.clone();let inputs={x:$x},attrs={perm};return ENGINE.runKernel(Transpose,inputs,attrs)}var transpose=op({transpose_});function confusionMatrix_(labels,predictions,numClasses){let $labels=convertToTensor(labels,"labels","confusionMatrix"),$predictions=convertToTensor(predictions,"predictions","confusionMatrix");assert(numClasses==null||numClasses>0&&Number.isInteger(numClasses),()=>`If provided, numClasses must be a positive integer, but got ${numClasses}`),assert($labels.rank===1,()=>`Expected the rank of labels to be 1, but got ${$labels.rank}`),assert($predictions.rank===1,()=>`Expected the rank of predictions to be 1, but got ${$predictions.rank}`),assert($labels.shape[0]===$predictions.shape[0],()=>`Mismatch in the number of examples: ${$labels.shape[0]} vs. ${$predictions.shape[0]}. Labels and predictions should have the same number of elements.`),assert(numClasses>0&&Number.isInteger(numClasses),()=>`numClasses is required to be a positive integer, but got ${numClasses}`);let oneHotLabels=oneHot(cast($labels,"int32"),numClasses),oneHotPredictions=oneHot(cast($predictions,"int32"),numClasses),oneHotLabelsT=transpose(oneHotLabels),product=matMul(oneHotLabelsT,oneHotPredictions);return cast(product,"int32")}var confusionMatrix=op({confusionMatrix_});var browser_exports={};__export(browser_exports,{fromPixels:()=>fromPixels,toPixels:()=>toPixels});function tensor3d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==3)throw new Error("tensor3d() requires shape to have three numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==3&&inferredShape.length!==1)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return makeTensor(values,shape,inferredShape,dtype)}var fromPixels2DContext;function fromPixels_(pixels,numChannels=3){if(numChannels>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(pixels==null)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");let isPixelData=!1,isImageData=!1,isVideo=!1,isImage=!1,isCanvasLike=!1,isImageBitmap=!1;if(pixels.data instanceof Uint8Array)isPixelData=!0;else if(typeof ImageData!="undefined"&&pixels instanceof ImageData)isImageData=!0;else if(typeof HTMLVideoElement!="undefined"&&pixels instanceof HTMLVideoElement)isVideo=!0;else if(typeof HTMLImageElement!="undefined"&&pixels instanceof HTMLImageElement)isImage=!0;else if(pixels.getContext!=null)isCanvasLike=!0;else if(typeof ImageBitmap!="undefined"&&pixels instanceof ImageBitmap)isImageBitmap=!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 ${pixels.constructor.name}`);if(isVideo){let HAVE_CURRENT_DATA_READY_STATE=2;if(isVideo&&pixels.readyState element.")}if(getKernel(FromPixels,ENGINE.backendName)!=null){let inputs={pixels},attrs={numChannels};return ENGINE.runKernel(FromPixels,inputs,attrs)}let[width,height]=isVideo?[pixels.videoWidth,pixels.videoHeight]:[pixels.width,pixels.height],vals;isCanvasLike?vals=pixels.getContext("2d").getImageData(0,0,width,height).data:isImageData||isPixelData?vals=pixels.data:(isImage||isVideo||isImageBitmap)&&(fromPixels2DContext==null&&(fromPixels2DContext=document.createElement("canvas").getContext("2d")),fromPixels2DContext.canvas.width=width,fromPixels2DContext.canvas.height=height,fromPixels2DContext.drawImage(pixels,0,0,width,height),vals=fromPixels2DContext.getImageData(0,0,width,height).data);let values;if(numChannels===4)values=new Int32Array(vals);else{let numPixels=width*height;values=new Int32Array(numPixels*numChannels);for(let i=0;i4||depth===2)throw new Error(`toPixels only supports depth of size 1, 3 or 4 but got ${depth}`);if($img.dtype!=="float32"&&$img.dtype!=="int32")throw new Error(`Unsupported type for toPixels: ${$img.dtype}. Please use float32 or int32 tensors.`);let data=await $img.data(),multiplier=$img.dtype==="float32"?255:1,bytes=new Uint8ClampedArray(width*height*4);for(let i=0;i1)throw new Error(`Tensor values for a float32 Tensor must be in the range [0 - 1] but encountered ${value}.`)}else if($img.dtype==="int32"&&(value<0||value>255))throw new Error(`Tensor values for a int32 Tensor must be in the range [0 - 255] but encountered ${value}.`);depth===1?(rgba[0]=value*multiplier,rgba[1]=value*multiplier,rgba[2]=value*multiplier):rgba[d]=value*multiplier}let j=i*4;bytes[j+0]=Math.round(rgba[0]),bytes[j+1]=Math.round(rgba[1]),bytes[j+2]=Math.round(rgba[2]),bytes[j+3]=Math.round(rgba[3])}if(canvas!=null){canvas.width=width,canvas.height=height;let ctx=canvas.getContext("2d"),imageData=new ImageData(bytes,width,height);ctx.putImageData(imageData,0,0)}return $img!==img&&$img.dispose(),bytes}var fromPixels=op({fromPixels_});var gather_nd_util_exports={};__export(gather_nd_util_exports,{prepareAndValidate:()=>prepareAndValidate});function prepareAndValidate(tensor2,indices){let tensorRank=tensor2.shape.length,indicesRank=indices.shape.length;if(tensorRank<1)throw new Error(`tf.gatherND() expects the input to be rank 1 or higher, but the rank was ${tensorRank}.`);if(indicesRank<1)throw new Error(`tf.gatherND() expects the indices to be rank 1 or higher, but the rank was ${indicesRank}.`);if(indices.dtype!=="int32")throw new Error(`tf.gatherND() expects the indices to be int32 type, but the dtype was ${indices.dtype}.`);if(indices.shape[indicesRank-1]>tensorRank)throw new Error(`index innermost dimension length must be <= tensor rank; saw: ${indices.shape[indicesRank-1]} vs. ${tensorRank}`);if(sizeFromShape(tensor2.shape)===0)throw new Error(`Requested more than 0 entries, but input is empty. Input shape: ${tensor2.shape}.`);let indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],nResult=1;for(let i=0;istride/sliceSize),1].slice(0,sliceRank);return[resultShape,nResult,sliceSize,strides]}var scatter_nd_util_exports={};__export(scatter_nd_util_exports,{calculateShapes:()=>calculateShapes,validateInput:()=>validateInput,validateUpdateShape:()=>validateUpdateShape});function validateUpdateShape(shape,indices,updates){let sliceDim=indices.rank>1?indices.shape[indices.rank-1]:1,batchDim=indices.rank>1?indices.rank-1:1,shapeError=`Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: ${updates.shape}, indices.shape: ${indices.shape}, shape: ${shape}, sliceDim: ${sliceDim}, and batchDim: ${batchDim}.`;if(updates.rank1?indices.shape[indicesRank-1]:1,totalNd=shape.length,sliceSize=1;for(let i=sliceRank;iassertParamsValid,computeFlatOffset:()=>computeFlatOffset,computeOutShape:()=>computeOutShape,getNormalizedAxes:()=>getNormalizedAxes,isSliceContinous:()=>isSliceContinous,maskToAxes:()=>maskToAxes,parseSliceParams:()=>parseSliceParams,sliceInfo:()=>sliceInfo,startForAxis:()=>startForAxis,startIndicesWithElidedDims:()=>startIndicesWithElidedDims,stopForAxis:()=>stopForAxis,stopIndicesWithElidedDims:()=>stopIndicesWithElidedDims,stridesForAxis:()=>stridesForAxis,stridesWithElidedDims:()=>stridesWithElidedDims});function assertParamsValid(input2,begin,size){let inputRank=input2.shape.length;assert(inputRank===begin.length,()=>`Error in slice${inputRank}D: Length of begin ${begin} must match the rank of the array (${inputRank}).`),assert(inputRank===size.length,()=>`Error in slice${inputRank}D: Length of size ${size} must match the rank of the array (${inputRank}).`);for(let i=0;i`Error in slice${inputRank}D: begin[${i}] + size[${i}] (${begin[i]+size[i]}) would overflow input.shape[${i}] (${input2.shape[i]})`)}function maskToAxes(mask){let axes=[],axis=0;for(;mask>0;)mask&1&&axes.push(axis),mask/=2,axis++;return axes}function computeOutShape(begin,end,strides){let size=[];for(let axis=0;axis0){let fullIndex=ellipsisAxes[0],numElidedAxes=numInterpolatedAxes+1;normalizedBegin=startIndicesWithElidedDims(beginMask,fullIndex,numElidedAxes,begin,inputShape),normalizedEnd=stopIndicesWithElidedDims(endMask,fullIndex,numElidedAxes,end,inputShape),normalizedStrides=stridesWithElidedDims(strides,fullIndex,numElidedAxes,inputShape)}else for(let axis=0;axis-1)newIndices[axis]=0;else{let originalAxis=unnormalizeAxis(ellipsisInsertionIndex,numElidedAxes,axis),originalValue=originalBegin[originalAxis];beginMask&1<-1)newIndices[axis]=Number.MAX_SAFE_INTEGER;else{let originalAxis=unnormalizeAxis(ellipsisInsertionIndex,numElidedAxes,axis),originalValue=originalEnd[originalAxis];endMask&1<0?start=Number.MIN_SAFE_INTEGER:start=Number.MAX_SAFE_INTEGER);let axisSize=inputShape[axis];return start<0&&(start+=axisSize),start=clamp(0,start,axisSize-1),start}function stopForAxis(endMask,stopIndices,strides,inputShape,axis,ellipsisMask){let stop=stopIndices[axis],stride=strides[axis]||1;(endMask&1<0?stop=Number.MAX_SAFE_INTEGER:stop=Number.MIN_SAFE_INTEGER);let axisSize=inputShape[axis];return stop<0&&(stop+=axisSize),stride>0?stop=clamp(0,stop,axisSize):stop=clamp(-1,stop,axisSize-1),stop}function isSliceContinous(shape,begin,size){let firstNonOneAxis=size.length;for(let i=0;i1){firstNonOneAxis=i;break}for(let i=firstNonOneAxis+1;i0||size[i]!==shape[i])return!1;return!0}function computeFlatOffset(begin,strides){let flatOffset=begin.length>0?begin[begin.length-1]:1;for(let i=0;i{assert(d!==-1,()=>"slice() does not support negative begin indexing.")});let size_;return size==null?size_=new Array(xRank).fill(-1):typeof size=="number"?size_=[size,...new Array(xRank-1).fill(-1)]:size.lengthd>=0?d:(assert(d===-1,()=>`Negative size values should be exactly -1 but got ${d} for the slice() size at index ${i}.`),x.shape[i]-begin_[i])),[begin_,size_]}function sliceInfo(xShape,begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask){let $begin=begin.slice(),$end=end.slice(),$strides=strides;strides==null&&($strides=new Array($begin.length));let ellipsisAxes=maskToAxes(ellipsisMask);if(ellipsisAxes.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(ellipsisMask!==0&&newAxisMask!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(ellipsisMask!==0&&shrinkAxisMask!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let numInterpolatedAxes=xShape.length-$begin.length,expandAxes=maskToAxes(newAxisMask),newShape=xShape.slice();expandAxes.forEach(axis=>{$begin[axis]=0,$end[axis]=1,newShape.splice(axis,0,1)});let{begin:normalizedBegin,end:normalizedEnd,strides:normalizedStrides}=getNormalizedAxes(newShape,ellipsisAxes,numInterpolatedAxes,$begin,$end,$strides,beginMask,endMask,ellipsisMask);$begin=normalizedBegin,$end=normalizedEnd,$strides=normalizedStrides;let shrinkAxes=maskToAxes(shrinkAxisMask);shrinkAxes.forEach(axis=>{$end[axis]=$begin[axis]+1,$strides[axis]=1});let size=computeOutShape($begin,$end,$strides),outShape=size.filter((_,axis)=>shrinkAxes.indexOf(axis)===-1);return{nonStrided:$strides.every(v=>v===1),$begin,$end,$strides,size,newShape,outShape}}var serialization_exports={};__export(serialization_exports,{Serializable:()=>Serializable,SerializationMap:()=>SerializationMap,registerClass:()=>registerClass});var Serializable=class{getClassName(){return this.constructor.className}static fromConfig(cls,config){return new cls(config)}},SerializationMap=class{constructor(){this.classNameMap={}}static getMap(){return SerializationMap.instance==null&&(SerializationMap.instance=new SerializationMap),SerializationMap.instance}static register(cls){SerializationMap.getMap().classNameMap[cls.className]=[cls,cls.fromConfig]}};function registerClass(cls){assert(cls.className!=null,()=>"Class being registered does not have the static className property defined."),assert(typeof cls.className=="string",()=>"className is required to be a string, but got type "+typeof cls.className),assert(cls.className.length>0,()=>"Class being registered has an empty-string as its className, which is disallowed."),SerializationMap.register(cls)}var test_util_exports={};__export(test_util_exports,{TEST_EPSILON_FLOAT16:()=>TEST_EPSILON_FLOAT16,encodeStrings:()=>encodeStrings,expectArrayBuffersEqual:()=>expectArrayBuffersEqual,expectArraysClose:()=>expectArraysClose,expectArraysEqual:()=>expectArraysEqual,expectNumbersClose:()=>expectNumbersClose,expectPromiseToFail:()=>expectPromiseToFail,expectValuesInRange:()=>expectValuesInRange,testEpsilon:()=>testEpsilon});var TEST_EPSILON_FLOAT32=.001,TEST_EPSILON_FLOAT16=.1;function expectArraysClose(actual,expected,epsilon3){return epsilon3==null&&(epsilon3=testEpsilon()),expectArraysPredicate(actual,expected,(a,b)=>areClose(a,b,epsilon3))}function testEpsilon(){return ENGINE.backend.floatPrecision()===32?TEST_EPSILON_FLOAT32:TEST_EPSILON_FLOAT16}function expectArraysPredicate(actual,expected,predicate){let checkClassType=!0;if((isTypedArray(actual)||isTypedArray(expected))&&(checkClassType=!1),isTypedArray(actual)&&isTypedArray(expected)&&(checkClassType=!0),checkClassType){let aType=actual.constructor.name,bType=expected.constructor.name;if(aType!==bType)throw new Error(`Arrays are of different type. Actual: ${aType}. Expected: ${bType}`)}if(Array.isArray(actual)&&Array.isArray(expected)){let actualShape=inferShape(actual),expectedShape=inferShape(expected);if(!arraysEqual(actualShape,expectedShape))throw new Error(`Arrays have different shapes. Actual: [${actualShape}]. Expected: [${expectedShape}]`)}let actualFlat=isTypedArray(actual)?actual:flatten(actual),expectedFlat=isTypedArray(expected)?expected:flatten(expected);if(actualFlat.length!==expectedFlat.length)throw new Error(`Arrays have different lengths actual: ${actualFlat.length} vs expected: ${expectedFlat.length}. -Actual: ${actualFlat}. -Expected: ${expectedFlat}.`);for(let i=0;idone.fail(),()=>done())}function expectArraysEqual(actual,expected){let exp4=typeof expected=="string"||typeof expected=="number"||typeof expected=="boolean"?[expected]:expected;return isString(actual)||isString(actual[0])||isString(expected)||isString(expected[0])?expectArraysPredicate(actual,exp4,(a,b)=>a==b):expectArraysPredicate(actual,expected,(a,b)=>areClose(a,b,0))}function expectNumbersClose(a,e,epsilon3){if(epsilon3==null&&(epsilon3=testEpsilon()),!areClose(a,e,epsilon3))throw new Error(`Numbers differ: actual === ${a}, expected === ${e}`)}function areClose(a,e,epsilon3){return!isFinite(a)&&!isFinite(e)?!0:!(isNaN(a)||isNaN(e)||Math.abs(a-e)>epsilon3)}function expectValuesInRange(actual,low,high){for(let i=0;ihigh)throw new Error(`Value out of range:${actual[i]} low: ${low}, high: ${high}`)}function expectArrayBuffersEqual(actual,expected){expect(new Float32Array(actual)).toEqual(new Float32Array(expected))}function encodeStrings(a){for(let i=0;itensor2.dispose())}function keep(result){return ENGINE.keep(result)}function time(f){return ENGINE.time(f)}function setBackend(backendName){return ENGINE.setBackend(backendName)}function ready(){return ENGINE.ready()}function getBackend(){return ENGINE.backendName}function removeBackend(name){ENGINE.removeBackend(name)}function findBackend(name){return ENGINE.findBackend(name)}function findBackendFactory(name){return ENGINE.findBackendFactory(name)}function registerBackend(name,factory,priority=1){return ENGINE.registerBackend(name,factory,priority)}function backend(){return ENGINE.backend}function setPlatform(platformName,platform){env().setPlatform(platformName,platform)}function add_(a,b){let $a=convertToTensor(a,"a","add"),$b=convertToTensor(b,"b","add");[$a,$b]=makeTypesMatch($a,$b);let inputs={a:$a,b:$b};return ENGINE.runKernel(Add,inputs)}var add2=op({add_});function floorDiv_(a,b){let $a=convertToTensor(a,"a","floorDiv"),$b=convertToTensor(b,"b","floorDiv");[$a,$b]=makeTypesMatch($a,$b);let inputs={a:$a,b:$b};return ENGINE.runKernel(FloorDiv,inputs)}var floorDiv=op({floorDiv_});function div_(a,b){let $a=convertToTensor(a,"a","div"),$b=convertToTensor(b,"b","div");if([$a,$b]=makeTypesMatch($a,$b),$a.dtype==="int32"&&$b.dtype==="int32")return floorDiv($a,$b);let inputs={a:$a,b:$b},attrs={};return ENGINE.runKernel(RealDiv,inputs,attrs)}var div=op({div_});function mul_(a,b){let $a=convertToTensor(a,"a","mul"),$b=convertToTensor(b,"b","mul");[$a,$b]=makeTypesMatch($a,$b);let inputs={a:$a,b:$b};return ENGINE.runKernel(Multiply,inputs)}var mul=op({mul_});function abs_(x){let $x=convertToTensor(x,"x","abs");if($x.dtype==="complex64"){let inputs={x:$x};return ENGINE.runKernel(ComplexAbs,inputs)}else{let inputs={x:$x};return ENGINE.runKernel(Abs,inputs)}}var abs=op({abs_});function acos_(x){let inputs={x:convertToTensor(x,"x","acos")};return ENGINE.runKernel(Acos,inputs)}var acos=op({acos_});function acosh_(x){let inputs={x:convertToTensor(x,"x","acosh")};return ENGINE.runKernel(Acosh,inputs)}var acosh=op({acosh_});function addN_(tensors){assert(Array.isArray(tensors),()=>"The argument passed to tf.addN() must be a list of tensors"),assert(tensors.length>=1,()=>`Must pass at least one tensor to tf.addN(), but got ${tensors.length}`);let $tensors=tensors.map((t,i)=>convertToTensor(t,`tensors${i}`,"addN")),firstTensor=$tensors[0];$tensors.forEach(t=>{if(t.dtype!==firstTensor.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),$tensors.forEach(t=>{if(!arraysEqual(t.shape,firstTensor.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});let inputs=$tensors;return ENGINE.runKernel(AddN,inputs)}var addN=op({addN_});function all_(x,axis=null,keepDims=!1){let inputs={x:convertToTensor(x,"x","all","bool")},attrs={axis,keepDims};return ENGINE.runKernel(All,inputs,attrs)}var all=op({all_});function any_(x,axis=null,keepDims=!1){let inputs={x:convertToTensor(x,"x","any","bool")},attrs={axis,keepDims};return ENGINE.runKernel(Any,inputs,attrs)}var any=op({any_});function argMax_(x,axis=0){let inputs={x:convertToTensor(x,"x","argMax")},attrs={axis};return ENGINE.runKernel(ArgMax,inputs,attrs)}var argMax=op({argMax_});function argMin_(x,axis=0){let inputs={x:convertToTensor(x,"x","argMin")},attrs={axis};return ENGINE.runKernel(ArgMin,inputs,attrs)}var argMin=op({argMin_});function asin_(x){let inputs={x:convertToTensor(x,"x","asin")};return ENGINE.runKernel(Asin,inputs)}var asin=op({asin_});function asinh_(x){let inputs={x:convertToTensor(x,"x","asinh")};return ENGINE.runKernel(Asinh,inputs)}var asinh=op({asinh_});function atan_(x){let inputs={x:convertToTensor(x,"x","atan")};return ENGINE.runKernel(Atan,inputs)}var atan=op({atan_});function atan2_(a,b){let $a=convertToTensor(a,"a","atan2"),$b=convertToTensor(b,"b","atan2");[$a,$b]=makeTypesMatch($a,$b);let inputs={a:$a,b:$b};return ENGINE.runKernel(Atan2,inputs)}var atan2=op({atan2_});function atanh_(x){let inputs={x:convertToTensor(x,"x","atanh")};return ENGINE.runKernel(Atanh,inputs)}var atanh=op({atanh_});function computeDilation2DInfo(inputShape,filterShape,strides,pad3,dataFormat="NHWC",dilations){let inputChannels=inputShape[3],$filterShape=[...filterShape,inputChannels],$dataFormat=convertConv2DDataFormat(dataFormat);return computeConv2DInfo(inputShape,$filterShape,strides,dilations,pad3,null,null,$dataFormat)}function computePool2DInfo(inShape,filterSize,strides,dilations,pad3,roundingMode,dataFormat="channelsLast"){let[filterHeight,filterWidth]=parseTupleParam(filterSize),filterShape;if(dataFormat==="channelsLast")filterShape=[filterHeight,filterWidth,inShape[3],inShape[3]];else if(dataFormat==="channelsFirst")filterShape=[filterHeight,filterWidth,inShape[1],inShape[1]];else throw new Error(`Unknown dataFormat ${dataFormat}`);return computeConv2DInfo(inShape,filterShape,strides,dilations,pad3,roundingMode,!1,dataFormat)}function computePool3DInfo(inShape,filterSize,strides,dilations,pad3,roundingMode,dataFormat="NDHWC"){let[filterDepth,filterHeight,filterWidth]=parse3TupleParam(filterSize),filterShape,$dataFormat;if(dataFormat==="NDHWC")$dataFormat="channelsLast",filterShape=[filterDepth,filterHeight,filterWidth,inShape[4],inShape[4]];else if(dataFormat==="NCDHW")$dataFormat="channelsFirst",filterShape=[filterDepth,filterHeight,filterWidth,inShape[1],inShape[1]];else throw new Error(`Unknown dataFormat ${dataFormat}`);return computeConv3DInfo(inShape,filterShape,strides,dilations,pad3,!1,$dataFormat,roundingMode)}function computeConv2DInfo(inShape,filterShape,strides,dilations,pad3,roundingMode,depthwise=!1,dataFormat="channelsLast"){let[batchSize,inHeight,inWidth,inChannels]=[-1,-1,-1,-1];if(dataFormat==="channelsLast")[batchSize,inHeight,inWidth,inChannels]=inShape;else if(dataFormat==="channelsFirst")[batchSize,inChannels,inHeight,inWidth]=inShape;else throw new Error(`Unknown dataFormat ${dataFormat}`);let[filterHeight,filterWidth,,filterChannels]=filterShape,[strideHeight,strideWidth]=parseTupleParam(strides),[dilationHeight,dilationWidth]=parseTupleParam(dilations),effectiveFilterHeight=getEffectiveFilterSize(filterHeight,dilationHeight),effectiveFilterWidth=getEffectiveFilterSize(filterWidth,dilationWidth),{padInfo,outHeight,outWidth}=getPadAndOutInfo(pad3,inHeight,inWidth,strideHeight,strideWidth,effectiveFilterHeight,effectiveFilterWidth,roundingMode,dataFormat),outChannels=depthwise?filterChannels*inChannels:filterChannels,outShape;return dataFormat==="channelsFirst"?outShape=[batchSize,outChannels,outHeight,outWidth]:dataFormat==="channelsLast"&&(outShape=[batchSize,outHeight,outWidth,outChannels]),{batchSize,dataFormat,inHeight,inWidth,inChannels,outHeight,outWidth,outChannels,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,effectiveFilterHeight,effectiveFilterWidth,dilationHeight,dilationWidth,inShape,outShape,filterShape}}function computeConv3DInfo(inShape,filterShape,strides,dilations,pad3,depthwise=!1,dataFormat="channelsLast",roundingMode){let[batchSize,inDepth,inHeight,inWidth,inChannels]=[-1,-1,-1,-1,-1];if(dataFormat==="channelsLast")[batchSize,inDepth,inHeight,inWidth,inChannels]=inShape;else if(dataFormat==="channelsFirst")[batchSize,inChannels,inDepth,inHeight,inWidth]=inShape;else throw new Error(`Unknown dataFormat ${dataFormat}`);let[filterDepth,filterHeight,filterWidth,,filterChannels]=filterShape,[strideDepth,strideHeight,strideWidth]=parse3TupleParam(strides),[dilationDepth,dilationHeight,dilationWidth]=parse3TupleParam(dilations),effectiveFilterDepth=getEffectiveFilterSize(filterDepth,dilationDepth),effectiveFilterHeight=getEffectiveFilterSize(filterHeight,dilationHeight),effectiveFilterWidth=getEffectiveFilterSize(filterWidth,dilationWidth),{padInfo,outDepth,outHeight,outWidth}=get3DPadAndOutInfo(pad3,inDepth,inHeight,inWidth,strideDepth,strideHeight,strideWidth,effectiveFilterDepth,effectiveFilterHeight,effectiveFilterWidth,roundingMode),outChannels=depthwise?filterChannels*inChannels:filterChannels,outShape;return dataFormat==="channelsFirst"?outShape=[batchSize,outChannels,outDepth,outHeight,outWidth]:dataFormat==="channelsLast"&&(outShape=[batchSize,outDepth,outHeight,outWidth,outChannels]),{batchSize,dataFormat,inDepth,inHeight,inWidth,inChannels,outDepth,outHeight,outWidth,outChannels,padInfo,strideDepth,strideHeight,strideWidth,filterDepth,filterHeight,filterWidth,effectiveFilterDepth,effectiveFilterHeight,effectiveFilterWidth,dilationDepth,dilationHeight,dilationWidth,inShape,outShape,filterShape}}function computeOutputShape2D(inShape,fieldSize,stride,zeroPad,roundingMode){zeroPad==null&&(zeroPad=computeDefaultPad(inShape,fieldSize,stride));let inputRows=inShape[0],inputCols=inShape[1],outputRows=round((inputRows-fieldSize+2*zeroPad)/stride+1,roundingMode),outputCols=round((inputCols-fieldSize+2*zeroPad)/stride+1,roundingMode);return[outputRows,outputCols]}function computeOutputShape4D(inShape,fieldSize,outChannels,stride,zeroPad,roundingMode){zeroPad==null&&(zeroPad=computeDefaultPad(inShape,fieldSize,stride));let inputDepth=inShape[0],inputRows=inShape[1],inputCols=inShape[2],outputDepths=round((inputDepth-fieldSize+2*zeroPad)/stride+1,roundingMode),outputRows=round((inputRows-fieldSize+2*zeroPad)/stride+1,roundingMode),outputCols=round((inputCols-fieldSize+2*zeroPad)/stride+1,roundingMode);return[outputDepths,outputRows,outputCols,outChannels]}function computeDefaultPad(inputShape,fieldSize,stride,dilation=1){let effectiveFieldSize=getEffectiveFilterSize(fieldSize,dilation);return Math.floor((inputShape[0]*(stride-1)-stride+effectiveFieldSize)/2)}function parseTupleParam(param){return typeof param=="number"?[param,param,param]:param.length===2?[param[0],param[1],1]:param}function parse3TupleParam(param){return typeof param=="number"?[param,param,param]:param}function getEffectiveFilterSize(filterSize,dilation){return dilation<=1?filterSize:filterSize+(filterSize-1)*(dilation-1)}function getPadAndOutInfo(pad3,inHeight,inWidth,strideHeight,strideWidth,filterHeight,filterWidth,roundingMode,dataFormat){let padInfo,outHeight,outWidth;if(typeof pad3=="number"){padInfo={top:pad3,bottom:pad3,left:pad3,right:pad3,type:pad3===0?"VALID":"NUMBER"};let outShape=computeOutputShape2D([inHeight,inWidth],filterHeight,strideHeight,pad3,roundingMode);outHeight=outShape[0],outWidth=outShape[1]}else if(pad3==="same"){outHeight=Math.ceil(inHeight/strideHeight),outWidth=Math.ceil(inWidth/strideWidth);let padAlongHeight=Math.max(0,(outHeight-1)*strideHeight+filterHeight-inHeight),padAlongWidth=Math.max(0,(outWidth-1)*strideWidth+filterWidth-inWidth),top=Math.floor(padAlongHeight/2),bottom=padAlongHeight-top,left=Math.floor(padAlongWidth/2),right=padAlongWidth-left;padInfo={top,bottom,left,right,type:"SAME"}}else if(pad3==="valid")padInfo={top:0,bottom:0,left:0,right:0,type:"VALID"},outHeight=Math.ceil((inHeight-filterHeight+1)/strideHeight),outWidth=Math.ceil((inWidth-filterWidth+1)/strideWidth);else if(typeof pad3=="object"){let top=dataFormat==="channelsLast"?pad3[1][0]:pad3[2][0],bottom=dataFormat==="channelsLast"?pad3[1][1]:pad3[2][1],left=dataFormat==="channelsLast"?pad3[2][0]:pad3[3][0],right=dataFormat==="channelsLast"?pad3[2][1]:pad3[3][1];padInfo={top,bottom,left,right,type:top===0&&bottom===0&&left===0&&right===0?"VALID":"EXPLICIT"},outHeight=round((inHeight-filterHeight+top+bottom)/strideHeight+1,roundingMode),outWidth=round((inWidth-filterWidth+left+right)/strideWidth+1,roundingMode)}else throw Error(`Unknown padding parameter: ${pad3}`);return{padInfo,outHeight,outWidth}}function get3DPadAndOutInfo(pad3,inDepth,inHeight,inWidth,strideDepth,strideHeight,strideWidth,filterDepth,filterHeight,filterWidth,roundingMode){let padInfo,outDepth,outHeight,outWidth;if(typeof pad3=="number"){padInfo={top:pad3,bottom:pad3,left:pad3,right:pad3,front:pad3,back:pad3,type:pad3===0?"VALID":"NUMBER"};let outShape=computeOutputShape4D([inDepth,inHeight,inWidth,1],filterDepth,1,strideDepth,pad3,roundingMode);outDepth=outShape[0],outHeight=outShape[1],outWidth=outShape[2]}else if(pad3==="same"){outDepth=Math.ceil(inDepth/strideDepth),outHeight=Math.ceil(inHeight/strideHeight),outWidth=Math.ceil(inWidth/strideWidth);let padAlongDepth=(outDepth-1)*strideDepth+filterDepth-inDepth,padAlongHeight=(outHeight-1)*strideHeight+filterHeight-inHeight,padAlongWidth=(outWidth-1)*strideWidth+filterWidth-inWidth,front=Math.floor(padAlongDepth/2),back=padAlongDepth-front,top=Math.floor(padAlongHeight/2),bottom=padAlongHeight-top,left=Math.floor(padAlongWidth/2),right=padAlongWidth-left;padInfo={top,bottom,left,right,front,back,type:"SAME"}}else if(pad3==="valid")padInfo={top:0,bottom:0,left:0,right:0,front:0,back:0,type:"VALID"},outDepth=Math.ceil((inDepth-filterDepth+1)/strideDepth),outHeight=Math.ceil((inHeight-filterHeight+1)/strideHeight),outWidth=Math.ceil((inWidth-filterWidth+1)/strideWidth);else throw Error(`Unknown padding parameter: ${pad3}`);return{padInfo,outDepth,outHeight,outWidth}}function round(value,roundingMode){if(!roundingMode)return Math.trunc(value);switch(roundingMode){case"round":return Math.round(value);case"ceil":return Math.ceil(value);case"floor":return Math.floor(value);default:throw new Error(`Unknown roundingMode ${roundingMode}`)}}function tupleValuesAreOne(param){let[dimA,dimB,dimC]=parseTupleParam(param);return dimA===1&&dimB===1&&dimC===1}function eitherStridesOrDilationsAreOne(strides,dilations){return tupleValuesAreOne(strides)||tupleValuesAreOne(dilations)}function convertConv2DDataFormat(dataFormat){if(dataFormat==="NHWC")return"channelsLast";if(dataFormat==="NCHW")return"channelsFirst";throw new Error(`Unknown dataFormat ${dataFormat}`)}function reshape_(x,shape){let inputs={x:convertToTensor(x,"x","reshape","string_or_numeric")},attrs={shape};return ENGINE.runKernel(Reshape,inputs,attrs)}var reshape=op({reshape_});function avgPool_(x,filterSize,strides,pad3,dimRoundingMode){let $x=convertToTensor(x,"x","avgPool","float32"),dilations=1;assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in avgPool: x must be rank 4 but got rank ${x4D.rank}.`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in avgPool: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let inputs={x:x4D},attrs={filterSize,strides,pad:pad3,dimRoundingMode},res=ENGINE.runKernel(AvgPool,inputs,attrs);return res=cast(res,$x.dtype),reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var avgPool=op({avgPool_});function avgPool3d_(x,filterSize,strides,pad3,dimRoundingMode,dataFormat="NDHWC",dilations){dilations==null?dilations=[1,1,1]:deprecationWarn("dilations is deprecated, this field will be gone in v3.0.0.");let $x=convertToTensor(x,"x","avgPool3d","float32"),x5D=$x,reshapedTo5D=!1;$x.rank===4&&(reshapedTo5D=!0,x5D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2],$x.shape[3]])),assert(x5D.rank===5,()=>`Error in avgPool3d: x must be rank 5 but got rank ${x5D.rank}.`),assert(dataFormat==="NDHWC",()=>`Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of ${dataFormat}`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool3d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in avgPool3d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let inputs={x:x5D},attrs={filterSize,strides,pad:pad3,dimRoundingMode,dataFormat,dilations},res=ENGINE.runKernel(AvgPool3D,inputs,attrs);return res=cast(res,x5D.dtype),reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var avgPool3d=op({avgPool3d_});function concat_(tensors,axis=0){assert(tensors.length>=1,()=>"Pass at least one tensor to concat");let $tensors=convertToTensorArray(tensors,"tensors","concat","string_or_numeric");if($tensors[0].dtype==="complex64"&&$tensors.forEach(tensor2=>{if(tensor2.dtype!=="complex64")throw new Error(`Cannot concatenate complex64 tensors with a tensor - with dtype ${tensor2.dtype}. `)}),$tensors.length===1)return clone($tensors[0]);let inputs=$tensors,attr={axis};return ENGINE.runKernel(Concat,inputs,attr)}var concat=op({concat_});function sigmoid_(x){let inputs={x:convertToTensor(x,"x","sigmoid")};return ENGINE.runKernel(Sigmoid,inputs)}var sigmoid=op({sigmoid_});function slice_(x,begin,size){let $x=convertToTensor(x,"x","slice","string_or_numeric");if($x.rank===0)throw new Error("Slicing scalar is not possible");let inputs={x:$x},attrs={begin,size};return ENGINE.runKernel(Slice,inputs,attrs)}var slice=op({slice_});function tanh_(x){let inputs={x:convertToTensor(x,"x","tanh")};return ENGINE.runKernel(Tanh,inputs)}var tanh2=op({tanh_});function basicLSTMCell_(forgetBias,lstmKernel,lstmBias,data,c,h){let $forgetBias=convertToTensor(forgetBias,"forgetBias","basicLSTMCell"),$lstmKernel=convertToTensor(lstmKernel,"lstmKernel","basicLSTMCell"),$lstmBias=convertToTensor(lstmBias,"lstmBias","basicLSTMCell"),$data=convertToTensor(data,"data","basicLSTMCell"),$c=convertToTensor(c,"c","basicLSTMCell"),$h=convertToTensor(h,"h","basicLSTMCell"),combined=concat([$data,$h],1),weighted=matMul(combined,$lstmKernel),res=add2(weighted,$lstmBias),batchSize=res.shape[0],sliceCols=res.shape[1]/4,sliceSize=[batchSize,sliceCols],i=slice(res,[0,0],sliceSize),j=slice(res,[0,sliceCols],sliceSize),f=slice(res,[0,sliceCols*2],sliceSize),o=slice(res,[0,sliceCols*3],sliceSize),newC=add2(mul(sigmoid(i),tanh2(j)),mul($c,sigmoid(add2($forgetBias,f)))),newH=mul(tanh2(newC),sigmoid(o));return[newC,newH]}var basicLSTMCell=op({basicLSTMCell_});function batchToSpaceND_(x,blockShape,crops){let $x=convertToTensor(x,"x","batchToSpaceND"),prod5=blockShape.reduce((a,b)=>a*b);assert($x.rank>=1+blockShape.length,()=>`input rank is ${$x.rank} but should be > than blockShape.length ${blockShape.length}`),assert(crops.length===blockShape.length,()=>`crops.length is ${crops.length} but should be equal to blockShape.length ${blockShape.length}`),assert($x.shape[0]%prod5==0,()=>`input tensor batch is ${$x.shape[0]} but is not divisible by the product of the elements of blockShape ${blockShape.join(" * ")} === ${prod5}`);let inputs={x:$x},attrs={blockShape,crops};return ENGINE.runKernel(BatchToSpaceND,inputs,attrs)}var batchToSpaceND=op({batchToSpaceND_});function xAs4D(x){let x4D;return x.rank===0||x.rank===1?x4D=reshape(x,[1,1,1,x.size]):x.rank===2?x4D=reshape(x,[1,1,x.shape[0],x.shape[1]]):x.rank===3?x4D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]):x4D=x,x4D}function batchNorm_(x,mean4,variance,offset,scale2,varianceEpsilon){varianceEpsilon==null&&(varianceEpsilon=.001);let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean4,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($mean.rank===$variance.rank,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),assert($offset==null||$mean.rank===$offset.rank,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),assert($scale==null||$mean.rank===$scale.rank,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let inputs={x:xAs4D($x),scale:$scale,offset:$offset,mean:$mean,variance:$variance},attrs={varianceEpsilon},res=ENGINE.runKernel(FusedBatchNorm,inputs,attrs);return reshape(res,$x.shape)}var batchNorm=op({batchNorm_});function batchNorm2d_(x,mean4,variance,offset,scale2,varianceEpsilon){let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean4,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;return offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($x.rank===2,()=>`Error in batchNorm2D: x must be rank 2 but got rank ${$x.rank}.`),assert($mean.rank===2||$mean.rank===1,()=>`Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank ${$mean.rank}.`),assert($variance.rank===2||$variance.rank===1,()=>`Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank ${$variance.rank}.`),$scale!=null&&assert($scale.rank===2||$scale.rank===1,()=>`Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank ${$scale.rank}.`),$offset!=null&&assert($offset.rank===2||$offset.rank===1,()=>`Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank ${$offset.rank}.`),batchNorm($x,$mean,$variance,$offset,$scale,varianceEpsilon)}var batchNorm2d=op({batchNorm2d_});function batchNorm3d_(x,mean4,variance,offset,scale2,varianceEpsilon){let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean4,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;return offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($x.rank===3,()=>`Error in batchNorm3D: x must be rank 3 but got rank ${$x.rank}.`),assert($mean.rank===3||$mean.rank===1,()=>`Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank ${$mean.rank}.`),assert($variance.rank===3||$variance.rank===1,()=>`Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank ${$variance.rank}.`),$scale!=null&&assert($scale.rank===3||$scale.rank===1,()=>`Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank ${$scale.rank}.`),$offset!=null&&assert($offset.rank===3||$offset.rank===1,()=>`Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank ${$offset.rank}.`),batchNorm($x,$mean,$variance,$offset,$scale,varianceEpsilon)}var batchNorm3d=op({batchNorm3d_});function batchNorm4d_(x,mean4,variance,offset,scale2,varianceEpsilon){let $x=convertToTensor(x,"x","batchNorm"),$mean=convertToTensor(mean4,"mean","batchNorm"),$variance=convertToTensor(variance,"variance","batchNorm"),$scale;scale2!=null&&($scale=convertToTensor(scale2,"scale","batchNorm"));let $offset;return offset!=null&&($offset=convertToTensor(offset,"offset","batchNorm")),assert($x.rank===4,()=>`Error in batchNorm4D: x must be rank 4 but got rank ${$x.rank}.`),assert($mean.rank===4||$mean.rank===1,()=>`Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank ${$mean.rank}.`),assert($variance.rank===4||$variance.rank===1,()=>`Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank ${$variance.rank}.`),$scale!=null&&assert($scale.rank===4||$scale.rank===1,()=>`Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank ${$scale.rank}.`),$offset!=null&&assert($offset.rank===4||$offset.rank===1,()=>`Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank ${$offset.rank}.`),batchNorm($x,$mean,$variance,$offset,$scale,varianceEpsilon)}var batchNorm4d=op({batchNorm4d_});function bincount_(x,weights,size){let $x=convertToTensor(x,"x","bincount"),$weights=convertToTensor(weights,"weights","bincount");assert($x.dtype==="int32",()=>`Error in bincount: input dtype must be int32, but got ${$x.dtype}`),assert(size>=0,()=>`size must be non-negative, but got ${size}.`),assert($weights.size===$x.size||$weights.size===0,()=>`Error in bincount: weights must have the same size as input or0-length, but got input shape: ${$x.shape}, weights shape: ${$weights.shape}.`);let inputs={x:$x,weights:$weights},attrs={size};return ENGINE.runKernel(Bincount,inputs,attrs)}var bincount=op({bincount_});function broadcastTo_(x,shape){let input2=convertToTensor(x,"broadcastTo","x"),xShape=input2.shape;if(shape.some(d=>!(d>0)||d%1!=0))throw new Error(`broadcastTo(): Invalid broadcast shape [${shape}].`);if(shape.lengthinput2.rank){let newShape=input2.shape.slice();for(;newShape.length=0;i--)if(inputShape[i]===shape[i])reps[i]=1;else if(input2.shape[i]!==1)throw new Error(`broadcastTo(): [${xShape}] cannot be broadcast to [${shape}].`);if(reps.map((n,i)=>n>1?i:-1).filter(i=>i>=0).length===0)return clone(input2);let inputs={x:input2},attrs={reps};return ENGINE.runKernel(Tile,inputs,attrs)}var broadcastTo=op({broadcastTo_});function ceil_(x){let inputs={x:convertToTensor(x,"x","ceil")};return ENGINE.runKernel(Ceil,inputs)}var ceil=op({ceil_});function clipByValue_(x,clipValueMin,clipValueMax){let $x=convertToTensor(x,"x","clipByValue");assert(clipValueMin<=clipValueMax,()=>`Error in clip: min (${clipValueMin}) must be less than or equal to max (${clipValueMax}).`);let inputs={x:$x},attrs={clipValueMin,clipValueMax};return ENGINE.runKernel(ClipByValue,inputs,attrs)}var clipByValue=op({clipByValue_});function concat1d_(tensors){return concat(tensors,0)}var concat1d=op({concat1d_});function concat2d_(tensors,axis){return concat(tensors,axis)}var concat2d=op({concat2d_});function concat3d_(tensors,axis){return concat(tensors,axis)}var concat3d=op({concat3d_});function concat4d_(tensors,axis){return concat(tensors,axis)}var concat4d=op({concat4d_});function conv2d_(x,filter,strides,pad3,dataFormat="NHWC",dilations=[1,1],dimRoundingMode){let $x=convertToTensor(x,"x","conv2d"),$filter=convertToTensor(filter,"filter","conv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in conv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in conv2d: filter must be rank 4, but got rank ${$filter.rank}.`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in conv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let inDepth=dataFormat==="NHWC"?x4D.shape[3]:x4D.shape[1];assert(inDepth===$filter.shape[2],()=>`Error in conv2d: depth of input (${inDepth}) must match input depth for filter ${$filter.shape[2]}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let inputs={x:x4D,filter:$filter},attrs={strides,pad:pad3,dataFormat,dilations,dimRoundingMode},res=ENGINE.runKernel(Conv2D,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var conv2d=op({conv2d_});function conv1d_(x,filter,stride,pad3,dataFormat="NWC",dilation=1,dimRoundingMode){let $x=convertToTensor(x,"x","conv1d"),$filter=convertToTensor(filter,"filter","conv1d"),x3D=$x,reshapedTo3D=!1;$x.rank===2&&(reshapedTo3D=!0,x3D=reshape($x,[1,$x.shape[0],$x.shape[1]])),assert(x3D.rank===3,()=>`Error in conv1d: input must be rank 3, but got rank ${x3D.rank}.`),assert($filter.rank===3,()=>`Error in conv1d: filter must be rank 3, but got rank ${$filter.rank}.`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in conv1d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`),assert(x3D.shape[2]===$filter.shape[1],()=>`Error in conv1d: depth of input (${x3D.shape[2]}) must match input depth for filter ${$filter.shape[1]}.`),assert(eitherStridesOrDilationsAreOne(stride,dilation),()=>`Error in conv1D: Either stride or dilation must be 1. Got stride ${stride} and dilation '${dilation}'`),assert(dataFormat==="NWC",()=>`Error in conv1d: got dataFormat of ${dataFormat} but only NWC is currently supported.`);let filter4D=reshape($filter,[1,$filter.shape[0],$filter.shape[1],$filter.shape[2]]),input4D=reshape(x3D,[x3D.shape[0],1,x3D.shape[1],x3D.shape[2]]),res=conv2d(input4D,filter4D,[1,stride],pad3,"NHWC",[1,dilation],dimRoundingMode);return reshapedTo3D?reshape(res,[res.shape[2],res.shape[3]]):reshape(res,[res.shape[0],res.shape[2],res.shape[3]])}var conv1d=op({conv1d_});function conv2DBackpropInput_(xShape,dy,filter,strides,pad3,dataFormat="NHWC",dimRoundingMode){assert(xShape.length===dy.rank,()=>`Length of inShape (${xShape.length}) and rank of dy (${dy.rank}) must match`);let xShape4D=xShape,dy4D=dy,reshapedTo4D=!1;dy.rank===3&&(reshapedTo4D=!0,dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]]),xShape4D=[1,xShape[0],xShape[1],xShape[2]]),assert(xShape4D.length===4,()=>`Error in conv2dDerInput: inShape must be length 4, but got length ${xShape4D.length}.`),assert(dy4D.rank===4,()=>`Error in conv2dDerInput: dy must be rank 4, but got rank ${dy4D.rank}`),assert(filter.rank===4,()=>`Error in conv2dDerInput: filter must be rank 4, but got rank ${filter.rank}`);let inDepth=dataFormat==="NHWC"?xShape4D[3]:xShape4D[1],outDepth=dataFormat==="NHWC"?dy4D.shape[3]:dy4D.shape[1];assert(inDepth===filter.shape[2],()=>`Error in conv2dDerInput: depth of input (${inDepth}) must match input depth for filter ${filter.shape[2]}.`),assert(outDepth===filter.shape[3],()=>`Error in conv2dDerInput: depth of output (${outDepth}) must match output depth for filter ${filter.shape[3]}.`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let inputs={dy:dy4D,filter},attrs={strides,pad:pad3,dataFormat,dimRoundingMode,inputShape:xShape4D},res=ENGINE.runKernel(Conv2DBackpropInput,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var conv2DBackpropInput=op({conv2DBackpropInput_});function conv2dTranspose_(x,filter,outputShape,strides,pad3,dimRoundingMode){let $x=convertToTensor(x,"x","conv2dTranspose"),$filter=convertToTensor(filter,"filter","conv2dTranspose");return conv2DBackpropInput(outputShape,$x,$filter,strides,pad3,"NHWC",dimRoundingMode)}var conv2dTranspose=op({conv2dTranspose_});function conv3d_(x,filter,strides,pad3,dataFormat="NDHWC",dilations=[1,1,1]){let $x=convertToTensor(x,"x","conv3d"),$filter=convertToTensor(filter,"filter","conv3d"),x5D=$x,reshapedTo5D=!1;$x.rank===4&&(reshapedTo5D=!0,x5D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2],$x.shape[3]])),assert(x5D.rank===5,()=>`Error in conv3d: input must be rank 5, but got rank ${x5D.rank}.`),assert($filter.rank===5,()=>`Error in conv3d: filter must be rank 5, but got rank ${$filter.rank}.`),assert(x5D.shape[4]===$filter.shape[3],()=>`Error in conv3d: depth of input (${x5D.shape[4]}) must match input depth for filter ${$filter.shape[3]}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in conv3D: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),assert(dataFormat==="NDHWC",()=>`Error in conv3d: got dataFormat of ${dataFormat} but only NDHWC is currently supported.`);let inputs={x:x5D,filter:$filter},attrs={strides,pad:pad3,dataFormat,dilations},res=ENGINE.runKernel(Conv3D,inputs,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var conv3d=op({conv3d_});function conv3DBackpropInput_(xShape,dy,filter,strides,pad3){assert(xShape.length===dy.rank,()=>`Length of inShape (${xShape.length}) and rank of dy (${dy.rank}) must match`);let xShape5D=xShape,dy5D=dy,reshapedTo5D=!1;dy.rank===4&&(reshapedTo5D=!0,dy5D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2],dy.shape[3]]),xShape5D=[1,xShape[0],xShape[1],xShape[2],xShape[3]]);let inDepth=xShape5D[4],outDepth=dy5D.shape[4];assert(xShape5D.length===5,()=>`Error in conv3dDerInput: inShape must be length 5, but got length ${xShape5D.length}.`),assert(dy5D.rank===5,()=>`Error in conv3dDerInput: dy must be rank 5, but got rank ${dy5D.rank}`),assert(filter.rank===5,()=>`Error in conv3dDerInput: filter must be rank 5, but got rank ${filter.rank}`),assert(inDepth===filter.shape[3],()=>`Error in conv3dDerInput: depth of input (${inDepth}) must match input depth for filter ${filter.shape[3]}.`),assert(outDepth===filter.shape[4],()=>`Error in conv3dDerInput: depth of output (${outDepth}) must match output depth for filter ${filter.shape[4]}.`);let inputs={dy:dy5D,filter},attrs={pad:pad3,strides,inputShape:xShape5D},res=ENGINE.runKernel(Conv3DBackpropInputV2,inputs,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var conv3DBackpropInput=op({conv3DBackpropInput_});function conv3dTranspose_(x,filter,outputShape,strides,pad3){let $x=convertToTensor(x,"x","conv3dTranspose"),$filter=convertToTensor(filter,"filter","conv3dTranspose");return conv3DBackpropInput(outputShape,$x,$filter,strides,pad3)}var conv3dTranspose=op({conv3dTranspose_});function cos_(x){let inputs={x:convertToTensor(x,"x","cos")};return ENGINE.runKernel(Cos,inputs)}var cos=op({cos_});function cosh_(x){let inputs={x:convertToTensor(x,"x","cosh")};return ENGINE.runKernel(Cosh,inputs)}var cosh=op({cosh_});function cumsum_(x,axis=0,exclusive=!1,reverse5=!1){let inputs={x:convertToTensor(x,"x","cumsum")},attrs={axis,exclusive,reverse:reverse5};return ENGINE.runKernel(Cumsum,inputs,attrs)}var cumsum=op({cumsum_});function denseBincount_(x,weights,size,binaryOutput=!1){let $x=convertToTensor(x,"x","denseBincount"),$weights=convertToTensor(weights,"weights","denseBincount");assert($x.dtype==="int32",()=>`Error in denseBincount: input dtype must be int32, but got ${$x.dtype}`),assert($x.rank<=2,()=>`Error in denseBincount: input must be at most rank 2, but got rank ${$x.rank}.`),assert(size>=0,()=>`size must be non-negative, but got ${size}.`),assert($weights.size===$x.size||$weights.size===0,()=>`Error in denseBincount: weights must have the same shape as x or 0-length, but got x shape: ${$x.shape}, weights shape: ${$weights.shape}.`);let inputs={x:$x,weights:$weights},attrs={size,binaryOutput};return ENGINE.runKernel(DenseBincount,inputs,attrs)}var denseBincount=op({denseBincount_});function depthToSpace_(x,blockSize,dataFormat="NHWC"){let $x=convertToTensor(x,"x","depthToSpace"),inputHeight=dataFormat==="NHWC"?$x.shape[1]:$x.shape[2],inputWidth=dataFormat==="NHWC"?$x.shape[2]:$x.shape[3],inputDepth=dataFormat==="NHWC"?$x.shape[3]:$x.shape[1];assert(inputHeight*blockSize>=0,()=>`Negative dimension size caused by overflow when multiplying - ${inputHeight} and ${blockSize} for depthToSpace with input shape - ${$x.shape}`),assert(inputWidth*blockSize>=0,()=>`Negative dimension size caused by overflow when multiplying - ${inputWidth} and ${blockSize} for depthToSpace with input shape - ${$x.shape}`),assert(inputDepth%(blockSize*blockSize)==0,()=>`Dimension size must be evenly divisible by ${blockSize*blockSize} but is ${inputDepth} for depthToSpace with input shape ${$x.shape}`);let inputs={x:$x},attrs={blockSize,dataFormat};return ENGINE.runKernel(DepthToSpace,inputs,attrs)}var depthToSpace=op({depthToSpace_});function depthwiseConv2d_(x,filter,strides,pad3,dataFormat="NHWC",dilations=[1,1],dimRoundingMode){let $x=convertToTensor(x,"x","depthwiseConv2d"),$filter=convertToTensor(filter,"filter","depthwiseConv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in depthwiseConv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in depthwiseConv2d: filter must be rank 4, but got rank ${$filter.rank}.`),assert(x4D.shape[3]===$filter.shape[2],()=>`Error in depthwiseConv2d: number of input channels (${x4D.shape[3]}) must match the inChannels dimension in filter ${$filter.shape[2]}.`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let inputs={x:x4D,filter:$filter},attrs={strides,pad:pad3,dataFormat,dilations,dimRoundingMode},res=ENGINE.runKernel(DepthwiseConv2dNative,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var depthwiseConv2d=op({depthwiseConv2d_});function diag_(x){let inputs={x:convertToTensor(x,"x","diag")};return ENGINE.runKernel(Diag,inputs)}var diag=op({diag_});function dilation2d_(x,filter,strides,pad3,dilations=[1,1],dataFormat="NHWC"){let $x=convertToTensor(x,"x","dilation2d"),$filter=convertToTensor(filter,"filter","dilation2d");assert($x.rank===3||$x.rank===4,()=>`Error in dilation2d: input must be rank 3 or 4, but got rank ${$x.rank}.`),assert($filter.rank===3,()=>`Error in dilation2d: filter must be rank 3, but got rank ${$filter.rank}.`),assert(dataFormat==="NHWC",()=>`Error in dilation2d: Only NHWC is currently supported, but got dataFormat of ${dataFormat}`);let x4D=$x,reshapedTo4D=!1;$x.rank===3&&(x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]]),reshapedTo4D=!0);let inputs={x:x4D,filter:$filter},attrs={strides,pad:pad3,dilations},res=ENGINE.runKernel(Dilation2D,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var dilation2d=op({dilation2d_});function getBroadcastDims(inShape,outShape){let inRank=inShape.length,dims=[];for(let i=0;i1&&a===1&&dims.unshift(dim)}return dims}function getReductionAxes(inShape,outShape){let result=[];for(let i=0;i1)&&result.unshift(outAxis)}return result}function assertAndGetBroadcastShape(shapeA,shapeB){let result=[],l=Math.max(shapeA.length,shapeB.length);for(let i=0;i"The first dimension of `a` must match the size of `condition`."),$condition.rank!==1&&assertShapesMatch($condition.shape,$broadcastedB.shape,"Error in where: ");let inputs={condition:$condition,t:$broadcastedA,e:$broadcastedB};return ENGINE.runKernel(Select,inputs)}var where=op({where_});function zerosLike_(x){let inputs={x:convertToTensor(x,"x","zerosLike")};return ENGINE.runKernel(ZerosLike,inputs)}var zerosLike=op({zerosLike_});function divNoNan_(a,b){let $a=convertToTensor(a,"a","div"),$b=convertToTensor(b,"b","div");[$a,$b]=makeTypesMatch($a,$b);let divResult=div($a,$b),zeros4=zerosLike(divResult),bEqualsZero=equal($b,zeros4);return where(bEqualsZero,zeros4,divResult)}var divNoNan=op({divNoNan_});function dot_(t1,t2){let $t1=convertToTensor(t1,"t1","dot"),$t2=convertToTensor(t2,"t2","dot");assert(($t1.rank===1||$t1.rank===2)&&($t2.rank===1||$t2.rank===2),()=>`Error in dot: inputs must all be rank 1 or 2, but got ranks ${$t1.rank} and ${$t2.rank}.`);let t1Inner=$t1.rank===1?$t1.size:$t1.shape[1],t2Inner=$t2.rank===1?$t2.size:$t2.shape[0];if(assert(t1Inner===t2Inner,()=>`Error in dot: inner dimensions of inputs must match, but got ${t1Inner} and ${t2Inner}.`),$t1.rank===1&&$t2.rank===1){let t12D=reshape($t1,[1,-1]),t22D=reshape($t2,[-1,1]),t1t2=matMul(t12D,t22D);return reshape(t1t2,[])}else if($t1.rank===1&&$t2.rank===2){let t12D=reshape($t1,[1,-1]),t22D=reshape($t2,[$t2.shape[0],$t2.shape[1]]),t1t2=matMul(t12D,t22D);return reshape(t1t2,[t1t2.size])}else if($t1.rank===2&&$t2.rank===1){let t22D=reshape($t2,[-1,1]),t1t2=matMul($t1,t22D);return reshape(t1t2,[t1t2.size])}else{let t22D=reshape($t2,[$t2.shape[0],$t2.shape[1]]);return matMul($t1,t22D)}}var dot=op({dot_});function elu_(x){let inputs={x:convertToTensor(x,"x","elu")};return ENGINE.runKernel(Elu,inputs)}var elu=op({elu_});function erf_(x){let $x=convertToTensor(x,"x","erf");assert($x.dtype==="int32"||$x.dtype==="float32",()=>"Input dtype must be `int32` or `float32`."),$x.dtype==="int32"&&($x=cast($x,"float32"));let inputs={x:$x};return ENGINE.runKernel(Erf,inputs)}var erf=op({erf_});function exp_(x){let inputs={x:convertToTensor(x,"x","exp")};return ENGINE.runKernel(Exp,inputs)}var exp=op({exp_});function expandDims_(x,axis=0){let $x=convertToTensor(x,"x","expandDims","string_or_numeric");assert(axis<=$x.rank,()=>"Axis must be <= rank of the tensor");let inputs={input:$x},attrs={dim:axis};return ENGINE.runKernel(ExpandDims,inputs,attrs)}var expandDims=op({expandDims_});function expm1_(x){let inputs={x:convertToTensor(x,"x","expm1")};return ENGINE.runKernel(Expm1,inputs)}var expm1=op({expm1_});function tile_(x,reps){let $x=convertToTensor(x,"x","tile","string_or_numeric");assert($x.rank===reps.length,()=>`Error in transpose: rank of input ${$x.rank} must match length of reps ${reps}.`);let inputs={x:$x},attrs={reps};return ENGINE.runKernel(Tile,inputs,attrs)}var tile=op({tile_});function eye_(numRows,numColumns,batchShape,dtype="float32"){numColumns==null&&(numColumns=numRows);let buff=buffer([numRows,numColumns],dtype),n=numRows<=numColumns?numRows:numColumns;for(let i=0;i`Error in localResponseNormalization: x must be rank 3 or 4 but got - rank ${$x.rank}.`),assert(isInt(depthRadius),()=>`Error in localResponseNormalization: depthRadius must be an integer but got depthRadius ${depthRadius}.`);let x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]]));let inputs={x:x4D},attrs={depthRadius,bias,alpha,beta},res=ENGINE.runKernel(LRN,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var localResponseNormalization=op({localResponseNormalization_});function log_(x){let inputs={x:convertToTensor(x,"x","log")};return ENGINE.runKernel(Log,inputs)}var log=op({log_});function log1p_(x){let inputs={x:convertToTensor(x,"x","log1p")};return ENGINE.runKernel(Log1p,inputs)}var log1p=op({log1p_});function grad(f){return assert(isFunction(f),()=>"The f passed in grad(f) must be a function"),(x,dy)=>{let $x=convertToTensor(x,"x","tf.grad","string_or_numeric"),$dy=dy!=null?convertToTensor(dy,"dy","tf.grad"):null;return ENGINE.tidy(()=>{let{value,grads:grads2}=ENGINE.gradients(()=>f($x),[$x],$dy);return $dy!=null&&assertShapesMatch(value.shape,$dy.shape,"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)"),checkGrads(grads2),grads2[0]})}}function grads(f){return assert(isFunction(f),()=>"The f passed in grads(f) must be a function"),(args,dy)=>{assert(Array.isArray(args),()=>"The args passed in grads(f)(args) must be an array of `Tensor`s or `TensorLike`s");let $args=convertToTensorArray(args,"args","tf.grads","string_or_numeric"),$dy=dy!=null?convertToTensor(dy,"dy","tf.grads"):null;return ENGINE.tidy(()=>{let{value,grads:grads2}=ENGINE.gradients(()=>f(...$args),$args,$dy);return $dy!=null&&assertShapesMatch(value.shape,$dy.shape,"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),checkGrads(grads2),grads2})}}function valueAndGrad(f){return assert(isFunction(f),()=>"The f passed in valueAndGrad(f) must be a function"),(x,dy)=>{assert(x instanceof Tensor,()=>"The x passed in valueAndGrad(f)(x) must be a tensor"),assert(dy==null||dy instanceof Tensor,()=>"The dy passed in valueAndGrad(f)(x, dy) must be a tensor");let{grads:grads2,value}=ENGINE.gradients(()=>f(x),[x],dy);return checkGrads(grads2),{grad:grads2[0],value}}}function valueAndGrads(f){return assert(isFunction(f),()=>"The f passed in valueAndGrads(f) must be a function"),(args,dy)=>{assert(Array.isArray(args)&&args.every(arg=>arg instanceof Tensor),()=>"The args passed in valueAndGrads(f)(args) must be array of tensors"),assert(dy==null||dy instanceof Tensor,()=>"The dy passed in valueAndGrads(f)(args, dy) must be a tensor");let res=ENGINE.gradients(()=>f(...args),args,dy);return dy!=null&&assertShapesMatch(res.value.shape,dy.shape,"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),checkGrads(res.grads),res}}function variableGrads(f,varList){assert(isFunction(f),()=>"The f passed in variableGrads(f) must be a function"),assert(varList==null||Array.isArray(varList)&&varList.every(v=>v instanceof Variable),()=>"The varList passed in variableGrads(f, varList) must be an array of variables");let specifiedVarList=varList!=null;if(!specifiedVarList){varList=[];for(let varName in ENGINE.registeredVariables)varList.push(ENGINE.registeredVariables[varName])}let specifiedNonTrainable=specifiedVarList?varList.filter(variable2=>!variable2.trainable):null,originalVarCount=varList.length;varList=varList.filter(variable2=>variable2.trainable),assert(varList.length>0,()=>`variableGrads() expects at least one of the input variables to be trainable, but none of the ${originalVarCount} variables is trainable.`);let allowNoGradients=!0,{value,grads:grads2}=ENGINE.gradients(f,varList,null,allowNoGradients);assert(grads2.some(g=>g!=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()."),assert(value.rank===0,()=>`The f passed in variableGrads(f) must return a scalar, but it returned a rank-${value.rank} tensor`);let namedGrads={};return varList.forEach((v,i)=>{grads2[i]!=null&&(namedGrads[v.name]=grads2[i])}),specifiedNonTrainable!=null&&specifiedNonTrainable.forEach(v=>namedGrads[v.name]=null),{value,grads:namedGrads}}function customGrad(f){return ENGINE.customGrad(f)}function checkGrads(grads2){if(grads2.filter(g=>g==null).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.`)}function neg_(x){let inputs={x:convertToTensor(x,"x","neg")};return ENGINE.runKernel(Neg,inputs)}var neg=op({neg_});function softplus_(x){let inputs={x:convertToTensor(x,"x","softplus")};return ENGINE.runKernel(Softplus,inputs)}var softplus=op({softplus_});function logSigmoid_(x){let $x=convertToTensor(x,"x","logSigmoid");return customGrad(x2=>({value:neg(softplus(neg(x2))),gradFunc:dy=>mul(dy,sigmoid(neg(x2)))}))($x)}var logSigmoid=op({logSigmoid_});function max_(x,axis=null,keepDims=!1){let inputs={x:convertToTensor(x,"x","max")},attrs={reductionIndices:axis,keepDims};return ENGINE.runKernel(Max,inputs,attrs)}var max=op({max_});function sub_(a,b){let $a=convertToTensor(a,"a","sub"),$b=convertToTensor(b,"b","sub");[$a,$b]=makeTypesMatch($a,$b);let inputs={a:$a,b:$b};return ENGINE.runKernel(Sub,inputs)}var sub=op({sub_});function sum_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","sum");$x.dtype==="bool"&&($x=cast($x,"int32"));let inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernel(Sum,inputs,attrs)}var sum2=op({sum_});function logSoftmax_(logits,axis=-1){let $logits=convertToTensor(logits,"logits","logSoftmax");if(axis===-1&&(axis=$logits.rank-1),axis!==$logits.rank-1)throw Error(`Log Softmax along a non-last dimension is not yet supported. Logits was rank ${$logits.rank} and axis was ${axis}`);return customGrad((logits2,save)=>{let keepDims=!0,xMax=max(logits2,axis,!0),shifted=sub(logits2,xMax),value=sub(cast(shifted,"float32"),log(sum2(exp(shifted),axis,keepDims)));return save([value]),{value,gradFunc:(dy,saved)=>{let[value2]=saved,keepDims2=!0,softmax6=exp(value2);return sub(dy,mul(sum2(dy,axis,keepDims2),softmax6))}}})($logits)}var logSoftmax=op({logSoftmax_});function axesAreInnerMostDims(axes,rank){for(let i=0;iaShape[dim]);return[outShape,reduceShape]}function expandShapeToKeepDim(shape,axes){let reduceSubShape=axes.map(x=>1);return combineLocations(shape,reduceSubShape,axes)}function assertAxesAreInnerMostDims(msg,axes,rank){assert(axesAreInnerMostDims(axes,rank),()=>`${msg} supports only inner-most axes for now. Got axes ${axes} and rank-${rank} input.`)}function getAxesPermutation(axes,rank){if(axesAreInnerMostDims(axes,rank))return null;let result=[];for(let i=0;iresult.push(axis)),result}function getUndoAxesPermutation(axes){return axes.map((axis,i)=>[i,axis]).sort((a,b)=>a[1]-b[1]).map(x=>x[0])}function getInnerMostAxes(numAxes,rank){let res=[];for(let i=rank-numAxes;i`Error in maxPool: input must be rank 4 but got rank ${x4D.rank}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in maxPool: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let inputs={x:x4D},attrs={filterSize,strides,pad:pad3,dimRoundingMode},res=ENGINE.runKernel(MaxPool,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var maxPool=op({maxPool_});function maxPool3d_(x,filterSize=[1,1,1],strides,pad3,dimRoundingMode,dataFormat="NDHWC",dilations){dilations==null?dilations=[1,1,1]:deprecationWarn("dilations is deprecated, this field will be gone in v3.0.0.");let $x=convertToTensor(x,"x","maxPool3d"),x5D=$x,reshapedTo5D=!1;$x.rank===4&&(reshapedTo5D=!0,x5D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2],$x.shape[3]])),assert(x5D.rank===5,()=>`Error in maxPool3d: x must be rank 5 but got rank ${x5D.rank}.`),assert(dataFormat==="NDHWC",()=>`Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of ${dataFormat}`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool3d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in maxPool3d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let inputs={x:x5D},attrs={filterSize,strides,pad:pad3,dimRoundingMode,dataFormat,dilations},res=ENGINE.runKernel(MaxPool3D,inputs,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var maxPool3d=op({maxPool3d_});function maxPoolWithArgmax_(x,filterSize,strides,pad3,includeBatchInIndex=!1){let inputs={x:convertToTensor(x,"x","maxPoolWithArgmax")},attrs={filterSize,strides,pad:pad3,includeBatchInIndex},result=ENGINE.runKernel(MaxPoolWithArgmax,inputs,attrs);return{result:result[0],indexes:result[1]}}var maxPoolWithArgmax=op({maxPoolWithArgmax_});function maximum_(a,b){let $a=convertToTensor(a,"a","maximum"),$b=convertToTensor(b,"b","maximum");[$a,$b]=makeTypesMatch($a,$b),$a.dtype==="bool"&&($a=cast($a,"int32"),$b=cast($b,"int32")),assertAndGetBroadcastShape($a.shape,$b.shape);let inputs={a:$a,b:$b};return ENGINE.runKernel(Maximum,inputs)}var maximum=op({maximum_});function mean_(x,axis=null,keepDims=!1){let inputs={x:convertToTensor(x,"x","mean")},attrs={axis,keepDims};return ENGINE.runKernel(Mean,inputs,attrs)}var mean=op({mean_});function min_(x,axis=null,keepDims=!1){let inputs={x:convertToTensor(x,"x","min")},attrs={axis,keepDims};return ENGINE.runKernel(Min,inputs,attrs)}var min=op({min_});function minimum_(a,b){let $a=convertToTensor(a,"a","minimum"),$b=convertToTensor(b,"b","minimum");[$a,$b]=makeTypesMatch($a,$b),$a.dtype==="bool"&&($a=cast($a,"int32"),$b=cast($b,"int32")),assertAndGetBroadcastShape($a.shape,$b.shape);let inputs={a:$a,b:$b};return ENGINE.runKernel(Minimum,inputs)}var minimum=op({minimum_});function mirrorPad_(x,paddings,mode){assert(mode==="reflect"||mode==="symmetric",()=>`Invalid mode. Mode must be either reflect or symmetric. Got ${mode}.`);let $x=convertToTensor(x,"x","mirrorPad");if($x.rank===0)throw new Error("mirrorPad(scalar) is not defined. Pass non-scalar to mirrorPad");assert(paddings.length===$x.rank,()=>`Padding doesn't match input. Must be ${$x.rank}. Got ${paddings.length}.`);let shapeOffset=mode==="reflect"?1:0;for(let i=0;i<$x.rank;i++)assert(paddings[i].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),assert(paddings[i][0]>=0&&paddings[i][0]<=$x.shape[i]-shapeOffset&&paddings[i][1]>=0&&paddings[i][1]<=$x.shape[i]-shapeOffset,()=>`Padding in dimension ${i} cannot be greater than or equal to ${$x.shape[i]-shapeOffset} or less than 0 for input of shape ${$x.shape}`);let attrs={paddings,mode},inputs={x:$x};return ENGINE.runKernel(MirrorPad,inputs,attrs)}var mirrorPad=op({mirrorPad_});function mod_(a,b){let $a=convertToTensor(a,"a","mod"),$b=convertToTensor(b,"b","mod");[$a,$b]=makeTypesMatch($a,$b);let inputs={a:$a,b:$b};return ENGINE.runKernel(Mod,inputs)}var mod=op({mod_});function square_(x){let $x=convertToTensor(x,"x","square"),attrs={};return ENGINE.runKernel("Square",{x:$x},attrs)}var square=op({square_});function moments_(x,axis=null,keepDims=!1){x=convertToTensor(x,"x","moments");let axes=parseAxisParam(axis,x.shape),xMean=mean(x,axes,keepDims),keepDimsShape=xMean.shape;keepDims||(keepDimsShape=expandShapeToKeepDim(xMean.shape,axes));let devSquared=square(sub(cast(x,"float32"),reshape(xMean,keepDimsShape))),variance=mean(devSquared,axes,keepDims);return{mean:xMean,variance}}var moments=op({moments_});function multiRNNCell_(lstmCells,data,c,h){let $data=convertToTensor(data,"data","multiRNNCell"),$c=convertToTensorArray(c,"c","multiRNNCell"),$h=convertToTensorArray(h,"h","multiRNNCell"),input2=$data,newStates=[];for(let i=0;i2)throw new Error(`Rank of probabilities must be 1 or 2, but is ${origRank}`);seed=seed||Math.random();let inputs={logits:origRank===1?reshape($logits,[1,-1]):$logits},attrs={numSamples,seed,normalized},res=ENGINE.runKernel(Multinomial,inputs,attrs);return origRank===1?reshape(res,[res.size]):res}var multinomial=op({multinomial_});function notEqual_(a,b){let $a=convertToTensor(a,"a","notEqual"),$b=convertToTensor(b,"b","notEqual");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let inputs={a:$a,b:$b};return ENGINE.runKernel(NotEqual,inputs)}var notEqual=op({notEqual_});function zeros(shape,dtype="float32"){if(dtype==="complex64"){let real4=zeros(shape,"float32"),imag4=zeros(shape,"float32");return complex(real4,imag4)}let values=makeZerosTypedArray(sizeFromShape(shape),dtype);return ENGINE.makeTensor(values,shape,dtype)}function ones2(shape,dtype="float32"){if(dtype==="complex64"){let real4=ones2(shape,"float32"),imag4=zeros(shape,"float32");return complex(real4,imag4)}let values=makeOnesTypedArray(sizeFromShape(shape),dtype);return ENGINE.makeTensor(values,shape,dtype)}function onesLike_(x){let inputs={x:convertToTensor(x,"x","onesLike")};return ENGINE.runKernel(OnesLike,inputs)}var onesLike=op({onesLike_});function outerProduct_(v1,v2){let $v1=convertToTensor(v1,"v1","outerProduct"),$v2=convertToTensor(v2,"v2","outerProduct");assert($v1.rank===1&&$v2.rank===1,()=>`Error in outerProduct: inputs must be rank 1, but got ranks ${$v1.rank} and ${$v2.rank}.`);let v12D=reshape($v1,[-1,1]),v22D=reshape($v2,[1,-1]);return matMul(v12D,v22D)}var outerProduct=op({outerProduct_});function pad_(x,paddings,constantValue=0){let $x=convertToTensor(x,"x","pad");if($x.rank===0)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");let attrs={paddings,constantValue},inputs={x:$x};return ENGINE.runKernel(PadV2,inputs,attrs)}var pad=op({pad_});function pad1d_(x,paddings,constantValue=0){return assert(paddings.length===2,()=>"Invalid number of paddings. Must be length of 2."),pad(x,[paddings],constantValue)}var pad1d=op({pad1d_});function pad2d_(x,paddings,constantValue=0){return assert(paddings.length===2&&paddings[0].length===2&&paddings[1].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),pad(x,paddings,constantValue)}var pad2d=op({pad2d_});function pad3d_(x,paddings,constantValue=0){return assert(paddings.length===3&&paddings[0].length===2&&paddings[1].length===2&&paddings[2].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),pad(x,paddings,constantValue)}var pad3d=op({pad3d_});function pad4d_(x,paddings,constantValue=0){return assert(paddings.length===4&&paddings[0].length===2&&paddings[1].length===2&&paddings[2].length===2&&paddings[3].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),pad(x,paddings,constantValue)}var pad4d=op({pad4d_});function spaceToBatchND_(x,blockShape,paddings){let $x=convertToTensor(x,"x","spaceToBatchND");assert($x.rank>=1+blockShape.length,()=>`input rank ${$x.rank} should be > than [blockShape] ${blockShape.length}`),assert(paddings.length===blockShape.length,()=>`paddings.shape[0] ${paddings.length} must be equal to [blockShape] ${blockShape.length}`),assert($x.shape.reduce((a,b,i)=>i>0&&i<=blockShape.length?a&&(b+paddings[i-1][0]+paddings[i-1][1])%blockShape[i-1]==0:a,!0),()=>`input spatial dimensions ${$x.shape.slice(1)} with paddings ${paddings.toString()} must be divisible by blockShapes ${blockShape.toString()}`);let inputs={x:$x},attrs={blockShape,paddings};return ENGINE.runKernel(SpaceToBatchND,inputs,attrs)}var spaceToBatchND=op({spaceToBatchND_});function pool_(input2,windowShape,poolingType,pad3,dilations,strides){dilations==null&&(dilations=[1,1]),strides==null&&(strides=1),pad3===0&&(pad3="valid");let $x=convertToTensor(input2,"x","maxPool"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in pool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=computePool2DInfo(x4D.shape,windowShape,strides,dilations,pad3),dilation=[convInfo.dilationHeight,convInfo.dilationWidth],basePadding;pad3==="same"?basePadding=withSpaceToBatchBasePaddings([convInfo.filterHeight,convInfo.filterWidth],dilation):basePadding=[[0,0],[0,0]];let isDilationOne=dilation[0]===1&&dilation[1]===1,[adjustedPadding,adjustedCrops]=requiredSpaceToBatchPaddings([convInfo.inHeight,convInfo.inWidth],dilation,basePadding),convertedPad=isDilationOne?pad3:"valid",convertedX=isDilationOne?x4D:spaceToBatchND(x4D,dilation,adjustedPadding),y=(poolingType==="avg"?()=>avgPool(convertedX,windowShape,strides,convertedPad):()=>maxPool(convertedX,windowShape,strides,convertedPad))(),res=isDilationOne?y:batchToSpaceND(y,dilation,adjustedCrops);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}function requiredSpaceToBatchPaddings(inputShape,blockShape,basePadding){let padStart=basePadding.map(b=>b[0]),origPadEnd=basePadding.map(b=>b[1]),fullInputShape=inputShape.concat(padStart,origPadEnd),padEndExtra=blockShape.map((b,i)=>(b-fullInputShape[i]%b)%b),padEnd=origPadEnd.map((s,i)=>s+padEndExtra[i]),paddings=blockShape.map((_,i)=>[padStart[i],padEnd[i]]),crops=blockShape.map((_,i)=>[0,padEndExtra[i]]);return[paddings,crops]}function withSpaceToBatchBasePaddings(filterShape,dilation){let padExtraShape=filterShape.map((s,i)=>s+(s-1)*(dilation[i]-1)).map(s=>s-1),padExtraStart=padExtraShape.map(s=>Math.floor(s/2)),padExtraEnd=padExtraShape.map((s,i)=>s-padExtraStart[i]);return padExtraShape.map((_,i)=>[padExtraStart[i],padExtraEnd[i]])}var pool=op({pool_});function pow_(base2,exp4){let $base=convertToTensor(base2,"base","pow"),$exp=convertToTensor(exp4,"exp","pow");[$base,$exp]=makeTypesMatch($base,$exp);let inputs={a:$base,b:$exp};return ENGINE.runKernel(Pow,inputs)}var pow=op({pow_});function prelu_(x,alpha){let $x=convertToTensor(x,"x","prelu"),$alpha=convertToTensor(alpha,"alpha","prelu"),inputs={x:$x,alpha:$alpha};return ENGINE.runKernel(Prelu,inputs)}var prelu=op({prelu_});function prod_(x,axis=null,keepDims=!1){let $x=convertToTensor(x,"x","prod");$x.dtype==="bool"&&($x=cast($x,"int32"));let inputs={x:$x},attrs={axis,keepDims};return ENGINE.runKernel(Prod,inputs,attrs)}var prod=op({prod_});function rand_(shape,randFunction,dtype){let size=sizeFromShape(shape),values=null;if(dtype==null||dtype==="float32")values=new Float32Array(size);else if(dtype==="int32")values=new Int32Array(size);else if(dtype==="bool")values=new Uint8Array(size);else throw new Error(`Unknown data type ${dtype}`);for(let i=0;i=1||s===0);let mul2=Math.sqrt(-2*Math.log(s)/s);resultX=this.mean+this.stdDev*v1*mul2,resultY=this.mean+this.stdDev*v2*mul2,(!this.truncated||this.isValidTruncated(resultX))&&(isValid=!0)}return(!this.truncated||this.isValidTruncated(resultY))&&(this.nextVal=this.convertValue(resultY)),this.convertValue(resultX)}convertValue(value){return this.dtype==null||this.dtype==="float32"?value:Math.round(value)}isValidTruncated(value){return value<=this.upper&&value>=this.lower}},RandGamma=class{constructor(alpha,beta,dtype,seed){this.alpha=alpha,this.beta=1/beta,this.dtype=dtype;let seedValue=seed||Math.random();this.randu=seedrandom.alea(seedValue.toString()),this.randn=new MPRandGauss(0,1,dtype,!1,this.randu()),alpha<1?this.d=alpha+2/3:this.d=alpha-1/3,this.c=1/Math.sqrt(9*this.d)}nextValue(){let x2,v0,v1,x,u,v;for(;;){do x=this.randn.nextValue(),v=1+this.c*x;while(v<=0);if(v*=v*v,x2=x*x,v0=1-.331*x2*x2,v1=.5*x2+this.d*(1-v+Math.log(v)),u=this.randu(),uthis.dtype==null||this.dtype==="float32",this.min=min6,this.range=max6-min6,this.dtype=dtype,seed==null&&(seed=Math.random()),typeof seed=="number"&&(seed=seed.toString()),!this.canReturnFloat()&&this.range<=1)throw new Error(`The difference between ${min6} - ${max6} <= 1 and dtype is not float`);this.random=seedrandom.alea(seed)}convertValue(value){return this.canReturnFloat()?value:Math.round(value)}nextValue(){return this.convertValue(this.min+this.range*this.random())}};function randomGamma_(shape,alpha,beta=1,dtype="float32",seed){if(beta==null&&(beta=1),dtype==null&&(dtype="float32"),dtype!=="float32"&&dtype!=="int32")throw new Error(`Unsupported data type ${dtype}`);let rgamma=new RandGamma(alpha,beta,dtype,seed),res=buffer(shape,dtype);for(let i=0;i`Error in reverse1D: x must be rank 1 but got rank ${$x.rank}.`),reverse($x,0)}var reverse1d=op({reverse1d_});function reverse2d_(x,axis){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===2,()=>`Error in reverse2D: x must be rank 2 but got rank ${$x.rank}.`),reverse($x,axis)}var reverse2d=op({reverse2d_});function reverse3d_(x,axis){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===3,()=>`Error in reverse3D: x must be rank 3 but got rank ${$x.rank}.`),reverse($x,axis)}var reverse3d=op({reverse3d_});function reverse4d_(x,axis){let $x=convertToTensor(x,"x","reverse");return assert($x.rank===4,()=>`Error in reverse4D: x must be rank 4 but got rank ${$x.rank}.`),reverse($x,axis)}var reverse4d=op({reverse4d_});function round_(x){let inputs={x:convertToTensor(x,"x","round")};return ENGINE.runKernel(Round,inputs)}var round2=op({round_});function rsqrt_(x){let inputs={x:convertToTensor(x,"x","rsqrt")};return ENGINE.runKernel(Rsqrt,inputs)}var rsqrt=op({rsqrt_});function scalar(value,dtype){if((isTypedArray(value)&&dtype!=="string"||Array.isArray(value))&&dtype!=="complex64")throw new Error("Error creating a new Scalar: value must be a primitive (number|boolean|string)");if(dtype==="string"&&isTypedArray(value)&&!(value instanceof Uint8Array))throw new Error("When making a scalar from encoded string, the value must be `Uint8Array`.");return makeTensor(value,[],[],dtype)}function selu_(x){let inputs={x:convertToTensor(x,"x","selu")};return ENGINE.runKernel(Selu,inputs)}var selu=op({selu_});function separableConv2d_(x,depthwiseFilter,pointwiseFilter,strides,pad3,dilation=[1,1],dataFormat="NHWC"){let $x=convertToTensor(x,"x","separableConv2d"),$depthwiseFilter=convertToTensor(depthwiseFilter,"depthwiseFilter","separableConv2d"),$pointwiseFilter=convertToTensor(pointwiseFilter,"pointwiseFilter","separableConv2d"),x4D=$x,reshapedTo4D=!1;if($x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),dataFormat==="NCHW")throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");assert(x4D.rank===4,()=>`Error in separableConv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($depthwiseFilter.rank===4,()=>`Error in separableConv2d: depthwise filter must be rank 4, but got rank ${$depthwiseFilter.rank}.`),assert($pointwiseFilter.rank===4,()=>`Error in separableConv2d: pointwise filter must be rank 4, but got rank ${$depthwiseFilter.rank}.`),assert($pointwiseFilter.shape[0]===1,()=>`Error in separableConv2d: the first dimension of pointwise filter must be 1, but got ${$pointwiseFilter.shape[0]}.`),assert($pointwiseFilter.shape[1]===1,()=>`Error in separableConv2d: the second dimension of pointwise filter must be 1, but got ${$pointwiseFilter.shape[1]}.`);let inChannels=$depthwiseFilter.shape[2],channelMultiplier=$depthwiseFilter.shape[3];assert($pointwiseFilter.shape[2]===inChannels*channelMultiplier,()=>`Error in separableConv2d: the third dimension of pointwise filter must be ${inChannels*channelMultiplier}, but got ${$pointwiseFilter.shape[2]}.`);let depthwise=depthwiseConv2d(x4D,$depthwiseFilter,strides,pad3,dataFormat,dilation),res=conv2d(depthwise,$pointwiseFilter,1,"valid",dataFormat);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var separableConv2d=op({separableConv2d_});async function setdiff1dAsync_(x,y){let $x=convertToTensor(x,"x","setdiff1d"),$y=convertToTensor(y,"y","setdiff1d");assert($x.dtype===$y.dtype,()=>`x and y should have the same dtype, but got x (${$x.dtype}) and y (${$y.dtype}).`),assert($x.rank===1,()=>`x should be 1D tensor, but got x (${$x.shape}).`),assert($y.rank===1,()=>`y should be 1D tensor, but got y (${$y.shape}).`);let xVals=await $x.data(),yVals=await $y.data(),ySet=new Set(yVals),outputSize=0;for(let i=0;i`slice1d expects a rank-1 tensor, but got a rank-${$x.rank} tensor`),slice($x,[begin],[size])}var slice1d=op({slice1d_});function slice2d_(x,begin,size){let $x=convertToTensor(x,"x","slice2d");return assert($x.rank===2,()=>`slice2d expects a rank-2 tensor, but got a rank-${$x.rank} tensor`),slice($x,begin,size)}var slice2d=op({slice2d_});function slice3d_(x,begin,size){let $x=convertToTensor(x,"x","slice3d");return assert($x.rank===3,()=>`slice3d expects a rank-3 tensor, but got a rank-${$x.rank} tensor`),slice($x,begin,size)}var slice3d=op({slice3d_});function slice4d_(x,begin,size){let $x=convertToTensor(x,"x","slice4d");return assert($x.rank===4,()=>`slice4d expects a rank-4 tensor, but got a rank-${$x.rank} tensor`),slice($x,begin,size)}var slice4d=op({slice4d_});function softmax_(logits,dim=-1){let $logits=convertToTensor(logits,"logits","softmax","float32");if(dim===-1&&(dim=$logits.rank-1),dim!==$logits.rank-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${$logits.rank} and dim was ${dim}`);let inputs={logits:$logits},attrs={dim};return ENGINE.runKernel(Softmax,inputs,attrs)}var softmax=op({softmax_});function fft_(input2){assert(input2.dtype==="complex64",()=>`The dtype for tf.spectral.fft() must be complex64 but got ${input2.dtype}.`);let inputs={input:input2};return ENGINE.runKernel(FFT,inputs)}var fft=op({fft_});function ifft_(input2){assert(input2.dtype==="complex64",()=>`The dtype for tf.spectral.ifft() must be complex64 but got ${input2.dtype}.`);let inputs={input:input2};return ENGINE.runKernel(IFFT,inputs)}var ifft=op({ifft_});function irfft_(input2){let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,ret;if(innerDimensionSize<=2){let complexInput=reshape(input2,[batch,innerDimensionSize]);ret=ifft(complexInput)}else{let outputShape=[batch,2*(innerDimensionSize-1)],realInput=reshape(real(input2),[batch,innerDimensionSize]),imagInput=reshape(imag(input2),[batch,innerDimensionSize]),realConjugate=reverse(slice(realInput,[0,1],[batch,innerDimensionSize-2]),1),imagConjugate=mul(reverse(slice(imagInput,[0,1],[batch,innerDimensionSize-2]),1),scalar(-1)),r=concat([realInput,realConjugate],1),i=concat([imagInput,imagConjugate],1),complexInput=reshape(complex(r,i),[outputShape[0],outputShape[1]]);ret=ifft(complexInput)}if(ret=real(ret),input2.rank===3&&input2.shape[0]!==0){let temp=ret,batch2=input2.shape[0];ret=reshape(ret,[batch2,ret.shape[0]/batch2,ret.shape[1]]),temp.dispose()}return ret}var irfft=op({irfft_});function split_(x,numOrSizeSplits,axis=0){let inputs={x:convertToTensor(x,"x","split")},attr={numOrSizeSplits,axis};return ENGINE.runKernel(SplitV,inputs,attr)}var split=op({split_});function rfft_(input2,fftLength){assert(input2.dtype==="float32",()=>`The dtype for rfft() must be real value but got ${input2.dtype}`);let innerDimensionSize=input2.shape[input2.shape.length-1],batch=input2.size/innerDimensionSize,adjustedInput;if(fftLength!=null&&fftLength0),size=input2.shape.map(v=>v);size[input2.shape.length-1]=fftLength,adjustedInput=slice(input2,begin,size),innerDimensionSize=fftLength}else if(fftLength!=null&&fftLength>innerDimensionSize){let zerosShape=input2.shape.map(v=>v);zerosShape[input2.shape.length-1]=fftLength-innerDimensionSize,adjustedInput=concat([input2,zeros(zerosShape)],input2.shape.length-1),innerDimensionSize=fftLength}else adjustedInput=input2;let zerosInput=zerosLike(adjustedInput),complexInput=reshape(complex(adjustedInput,zerosInput),[batch,innerDimensionSize]),ret=fft(complexInput),half=Math.floor(innerDimensionSize/2)+1,realValues=real(ret),imagValues=imag(ret),realComplexConjugate=split(realValues,[half,innerDimensionSize-half],realValues.shape.length-1),imagComplexConjugate=split(imagValues,[half,innerDimensionSize-half],imagValues.shape.length-1),outputShape=adjustedInput.shape.slice();return outputShape[adjustedInput.shape.length-1]=half,reshape(complex(realComplexConjugate[0],imagComplexConjugate[0]),outputShape)}var rfft=op({rfft_});function sqrt_(x){let inputs={x:convertToTensor(x,"x","sqrt")};return ENGINE.runKernel(Sqrt,inputs)}var sqrt=op({sqrt_});function squaredDifference_(a,b){let $a=convertToTensor(a,"a","squaredDifference"),$b=convertToTensor(b,"b","squaredDifference");[$a,$b]=makeTypesMatch($a,$b),assertAndGetBroadcastShape($a.shape,$b.shape);let inputs={a:$a,b:$b},attrs={};return ENGINE.runKernel(SquaredDifference,inputs,attrs)}var squaredDifference=op({squaredDifference_});function squeeze_(x,axis){let $x=convertToTensor(x,"x","squeeze");return reshape($x,squeezeShape($x.shape,axis).newShape)}var squeeze=op({squeeze_});function stack_(tensors,axis=0){let $tensors=convertToTensorArray(tensors,"tensors","stack","string_or_numeric");assert($tensors.length>=1,()=>"Pass at least one tensor to tf.stack"),$tensors.length>0&&assert(axis<=$tensors[0].rank,()=>"Axis must be <= rank of the tensor");let inputs=$tensors,attrs={axis};return ENGINE.runKernel(Pack,inputs,attrs)}var stack=op({stack_});function step_(x,alpha=0){let inputs={x:convertToTensor(x,"x","step")},attrs={alpha};return ENGINE.runKernel(Step,inputs,attrs)}var step=op({step_});function stridedSlice_(x,begin,end,strides,beginMask=0,endMask=0,ellipsisMask=0,newAxisMask=0,shrinkAxisMask=0){let inputs={x:convertToTensor(x,"x","stridedSlice")},attrs={begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask};return ENGINE.runKernel(StridedSlice,inputs,attrs)}var stridedSlice=op({stridedSlice_});function tan_(x){let inputs={x:convertToTensor(x,"x","tan")};return ENGINE.runKernel(Tan,inputs)}var tan=op({tan_});function tensor1d(values,dtype){assertNonNull(values);let inferredShape=inferShape(values,dtype);if(inferredShape.length!==1)throw new Error("tensor1d() requires values to be a flat/TypedArray");return makeTensor(values,null,inferredShape,dtype)}function tensor2d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==2)throw new Error("tensor2d() requires shape to have two numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==2&&inferredShape.length!==1)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return makeTensor(values,shape,inferredShape,dtype)}function tensor4d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==4)throw new Error("tensor4d() requires shape to have four numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==4&&inferredShape.length!==1)throw new Error("tensor4d() requires values to be number[][][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor4d() requires shape to be provided when `values` are a flat array");return makeTensor(values,shape,inferredShape,dtype)}function tensor5d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==5)throw new Error("tensor5d() requires shape to have five numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==5&&inferredShape.length!==1)throw new Error("tensor5d() requires values to be number[][][][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor5d() requires shape to be provided when `values` are a flat array");return makeTensor(values,shape,inferredShape,dtype)}function tensor6d(values,shape,dtype){if(assertNonNull(values),shape!=null&&shape.length!==6)throw new Error("tensor6d() requires shape to have six numbers");let inferredShape=inferShape(values,dtype);if(inferredShape.length!==6&&inferredShape.length!==1)throw new Error("tensor6d() requires values to be number[][][][][][] or flat/TypedArray");if(inferredShape.length===1&&shape==null)throw new Error("tensor6d() requires shape to be provided when `values` are a flat array");return shape=shape||inferredShape,makeTensor(values,shape,inferredShape,dtype)}function topk_(x,k=1,sorted=!0){let $x=convertToTensor(x,"x","topk");if($x.rank===0)throw new Error("topk() expects the input to be of rank 1 or higher");let lastDim=$x.shape[$x.shape.length-1];if(k>lastDim)throw new Error(`'k' passed to topk() must be <= the last dimension (${lastDim}) but got ${k}`);let inputs={x:$x},attrs={k,sorted},[values,indices]=ENGINE.runKernel(TopK,inputs,attrs);return{values,indices}}var topk=op({topk_});function truncatedNormal_(shape,mean4=0,stdDev=1,dtype,seed){if(dtype!=null&&dtype==="bool")throw new Error("Unsupported data type $ { dtype }");let randGauss=new MPRandGauss(mean4,stdDev,dtype,!0,seed),res=buffer(shape,dtype);for(let i=0;i0,()=>"The input tensor must be at least 1D");let inputs={x:$x},attrs={axis},[values,indices]=ENGINE.runKernel(Unique,inputs,attrs);return{values,indices}}var unique=op({unique_});function unsortedSegmentSum_(x,segmentIds,numSegments){let $x=convertToTensor(x,"x","unsortedSegmentSum"),$segmentIds=convertToTensor(segmentIds,"segmentIds","unsortedSegmentSum","int32");assert(isInt(numSegments),()=>"numSegments must be of dtype int");let inputs={x:$x,segmentIds:$segmentIds},attrs={numSegments};return ENGINE.runKernel(UnsortedSegmentSum,inputs,attrs)}var unsortedSegmentSum=op({unsortedSegmentSum_});function unstack_(x,axis=0){let $x=convertToTensor(x,"x","unstack","string_or_numeric");assert(axis>=-$x.shape.length&&axis<$x.shape.length,()=>`Axis = ${axis} is not in [-${$x.shape.length}, ${$x.shape.length})`);let inputs={value:$x},attrs={axis};return ENGINE.runKernel(Unpack,inputs,attrs)}var unstack=op({unstack_});function variable(initialValue,trainable=!0,name,dtype){return ENGINE.makeVariable(initialValue,trainable,name,dtype)}function whereImpl(condShape,condVals){let indices=[];for(let i=0;i0,()=>"mask cannot be scalar"),assertShapesMatch(tensorShape.slice(axisFrom,axisFrom+maskDim),$mask.shape,"mask's shape must match the first K dimensions of tensor's shape,");let leadingSize=1;for(let i=axisFrom;i"Shape mismatch in v and x");let one=scalar(1),oneMinusDecay=sub(one,$decay),update=mul(sub($x,$v),oneMinusDecay);if(zeroDebias){assert(step4!=null,()=>"When using zeroDebias: true, step is required.");let $step=convertToTensor(step4,"step","movingAverage");update=div(update,sub(one,pow($decay,$step)))}return add2($v,update)}var movingAverage=op({movingAverage_});function scatterND_(indices,updates,shape){let $indices=convertToTensor(indices,"indices","scatterND","int32"),$updates=convertToTensor(updates,"updates","scatterND");validateInput($updates,$indices,shape);let inputs={indices:$indices,updates:$updates},attrs={shape};return ENGINE.runKernel(ScatterNd,inputs,attrs)}var scatterND=op({scatterND_});function validateInput2(sparseIndices,sparseValues,outputShape,defaultValues){if(sparseIndices.dtype!=="int32")throw new Error(`tf.sparseToDense() expects the indices to be int32 type, but the dtype was ${sparseIndices.dtype}.`);if(sparseIndices.rank>2)throw new Error(`sparseIndices should be a scalar, vector, or matrix, but got shape ${sparseIndices.shape}.`);let numElems=sparseIndices.rank>0?sparseIndices.shape[0]:1,numDims=sparseIndices.rank>1?sparseIndices.shape[1]:1;if(outputShape.length!==numDims)throw new Error(`outputShape has incorrect number of elements:, ${outputShape.length}, should be: ${numDims}.`);let numValues=sparseValues.size;if(!(sparseValues.rank===0||sparseValues.rank===1&&numValues===numElems))throw new Error(`sparseValues has incorrect shape ${sparseValues.shape}, should be [] or [${numElems}]`);if(sparseValues.dtype!==defaultValues.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}function sparseToDense_(sparseIndices,sparseValues,outputShape,defaultValue=0){let $sparseIndices=convertToTensor(sparseIndices,"sparseIndices","sparseToDense","int32"),$sparseValues=convertToTensor(sparseValues,"sparseValues","sparseToDense"),$defaultValue=convertToTensor(defaultValue,"defaultValue","sparseToDense",$sparseValues.dtype);validateInput2($sparseIndices,$sparseValues,outputShape,$defaultValue);let inputs={sparseIndices:$sparseIndices,sparseValues:$sparseValues,defaultValue:$defaultValue},attrs={outputShape};return ENGINE.runKernel(SparseToDense,inputs,attrs)}var sparseToDense=op({sparseToDense_});function gatherND_(x,indices){let $indices=convertToTensor(indices,"indices","gatherND","int32"),inputs={params:convertToTensor(x,"x","gatherND"),indices:$indices};return ENGINE.runKernel(GatherNd,inputs)}var gatherND=op({gatherND_});function getNoiseShape(x,noiseShape){if(noiseShape==null)return x.shape.slice();if(arraysEqual(x.shape,noiseShape))return noiseShape;if(x.shape.length===noiseShape.length){let newDimension=[];for(let i=0;i`x has to be a floating point tensor since it's going to be scaled, but got a ${$x.dtype} tensor instead.`),assert(rate>=0&&rate<1,()=>`rate must be a float in the range [0, 1), but got ${rate}.`),rate===0)return x instanceof Tensor?$x.clone():$x;let $noiseShape=getNoiseShape($x,noiseShape),keepProb=1-rate,multiplier=div(floor(add2(randomUniform($noiseShape,0,1,"float32",seed),keepProb)),keepProb);return mul($x,multiplier)}var dropout=op({dropout_});function enclosingPowerOfTwo(value){return Math.floor(Math.pow(2,Math.ceil(Math.log(value)/Math.log(2))))}function cosineWindow(windowLength,a,b){let even=1-windowLength%2,newValues=new Float32Array(windowLength);for(let i=0;i1,()=>`inTopK() expects the predictions to be of rank 2 or higher, but got ${$predictions.rank}`),assert($predictions.rank-1===$targets.rank,()=>`predictions rank should be 1 larger than targets rank, but got predictions rank ${$predictions.rank} and targets rank ${$targets.rank}`),assertShapesMatch($predictions.shape.slice(0,$predictions.shape.length-1),$targets.shape,"predictions's shape should be align with the targets' shape, except the last dimension.");let lastDim=$predictions.shape[$predictions.shape.length-1];assert(k>0&&k<=lastDim,()=>`'k' passed to inTopK() must be > 0 && <= the predictions last dimension (${lastDim}), but got ${k}`);let predictionsVals=await $predictions.data(),targetsVals=await $targets.data(),[batch,size]=[predictionsVals.length/lastDim,lastDim],precision3=getTypedArrayFromDType("bool",batch);for(let b=0;bb2.value-a.value),precision3[b]=0;for(let i=0;iconv2d2,depthwiseConv2d:()=>depthwiseConv2d2,matMul:()=>matMul2});function conv2DBackpropFilter_(x,dy,filterShape,strides,pad3,dataFormat="NHWC",dimRoundingMode){let x4D=x;x.rank===3&&(x4D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]));let dy4D=dy;dy4D.rank===3&&(dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]])),assert(x4D.rank===4,()=>`Error in conv2dDerFilter: input must be rank 4, but got shape ${x4D.shape}.`),assert(dy4D.rank===4,()=>`Error in conv2dDerFilter: dy must be rank 4, but got shape ${dy4D.shape}.`),assert(filterShape.length===4,()=>`Error in conv2dDerFilter: filterShape must be length 4, but got ${filterShape}.`);let inDepth=dataFormat==="NHWC"?x4D.shape[3]:x4D.shape[1],outDepth=dataFormat==="NHWC"?dy4D.shape[3]:dy4D.shape[1];assert(inDepth===filterShape[2],()=>`Error in conv2dDerFilter: depth of input ${inDepth}) must match input depth in filter (${filterShape[2]}.`),assert(outDepth===filterShape[3],()=>`Error in conv2dDerFilter: depth of dy (${outDepth}) must match output depth for filter (${filterShape[3]}).`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in conv2dDerFilter: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let inputs={x:x4D,dy:dy4D},attrs={strides,pad:pad3,dataFormat,dimRoundingMode,filterShape};return ENGINE.runKernel(Conv2DBackpropFilter,inputs,attrs)}var conv2DBackpropFilter=op({conv2DBackpropFilter_});function getFusedDyActivation(dy,y,activation2){if(activation2==null||activation2==="linear")return dy;if(activation2==="relu")return mul(dy,step(y));throw new Error(`Cannot compute gradient for fused activation ${activation2}.`)}function getFusedBiasGradient(bias,dyActivation){let res=dyActivation,reduceAxes=getReductionAxes(bias.shape,dyActivation.shape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,bias.shape)}function applyActivation(x,activation2,preluActivationWeights,leakyreluAlpha){if(activation2==="linear")return x;if(activation2==="relu")return relu(x);if(activation2==="elu")return elu(x);if(activation2==="relu6")return relu6(x);if(activation2==="prelu")return prelu(x,preluActivationWeights);if(activation2==="leakyrelu")return leakyRelu(x,leakyreluAlpha);throw new Error(`Unknown fused activation ${activation2}.`)}var shouldFuse=(gradientDepth,activation2)=>!(gradientDepth>0)||activation2==="linear";function fusedConv2d_({x,filter,strides,pad:pad3,dataFormat="NHWC",dilations=[1,1],dimRoundingMode,bias,activation:activation2="linear",preluActivationWeights,leakyreluAlpha}){if(activation2=activation2||"linear",shouldFuse(ENGINE.state.gradientDepth,activation2)===!1){let result=conv2d(x,filter,strides,pad3,dataFormat,dilations,dimRoundingMode);return bias!=null&&(result=add2(result,bias)),applyActivation(result,activation2,preluActivationWeights,leakyreluAlpha)}let $x=convertToTensor(x,"x","conv2d"),$filter=convertToTensor(filter,"filter","conv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in fused conv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in fused conv2d: filter must be rank 4, but got rank ${$filter.rank}.`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in fused conv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`),assert(x4D.shape[3]===$filter.shape[2],()=>`Error in conv2d: depth of input (${x4D.shape[3]}) must match input depth for filter ${$filter.shape[2]}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),assert(dataFormat==="NHWC",()=>`Error in conv2d: got dataFormat of ${dataFormat} but only NHWC is currently supported.`);let convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad3,dimRoundingMode),$bias;bias!=null&&($bias=convertToTensor(bias,"bias","fused conv2d"),[$bias]=makeTypesMatch($bias,$x),assertAndGetBroadcastShape(convInfo.outShape,$bias.shape));let $preluActivationWeights;preluActivationWeights!=null&&($preluActivationWeights=convertToTensor(preluActivationWeights,"prelu weights","fused conv2d"));let grad2=(dy,saved)=>{let[$filter2,x4D2,y,$bias2]=saved,dyActivation=getFusedDyActivation(dy,y,activation2);assert(tupleValuesAreOne(dilations),()=>`Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${dilations}'`);let xDer=conv2DBackpropInput(x4D2.shape,dyActivation,$filter2,strides,pad3),filterDer=conv2DBackpropFilter(x4D2,dyActivation,$filter2.shape,strides,pad3),der=[xDer,filterDer];if($bias2!=null){let biasDer=getFusedBiasGradient($bias2,dyActivation);der.push(biasDer)}return der},inputs={x:x4D,filter:$filter,bias:$bias,preluActivationWeights:$preluActivationWeights},attrs={strides,pad:pad3,dataFormat,dilations,dimRoundingMode,activation:activation2,leakyreluAlpha};return bias==null?customGrad((x4D2,filter2,save)=>{let res=ENGINE.runKernel(FusedConv2D,inputs,attrs);return save([filter2,x4D2,res]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}})(x4D,$filter):customGrad((x4D2,filter2,bias2,save)=>{let res=ENGINE.runKernel(FusedConv2D,inputs,attrs);return save([filter2,x4D2,res,bias2]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}})(x4D,$filter,$bias)}var conv2d2=op({fusedConv2d_});function depthwiseConv2dNativeBackpropFilter_(x,dy,filterShape,strides,pad3,dilations=[1,1],dimRoundingMode){let x4D=x;x.rank===3&&(x4D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2]]));let dy4D=dy;dy4D.rank===3&&(dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]]));let inputs={x:x4D,dy:dy4D},attrs={strides,pad:pad3,dimRoundingMode,dilations,filterShape};return ENGINE.runKernel(DepthwiseConv2dNativeBackpropFilter,inputs,attrs)}var depthwiseConv2dNativeBackpropFilter=op({depthwiseConv2dNativeBackpropFilter_});function depthwiseConv2dNativeBackpropInput_(xShape,dy,filter,strides,pad3,dilations=[1,1],dimRoundingMode){let dy4D=dy,reshapedTo4D=!1;dy.rank===3&&(reshapedTo4D=!0,dy4D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2]]));let inputs={dy:dy4D,filter},attrs={strides,pad:pad3,dimRoundingMode,dilations,inputShape:xShape},res=ENGINE.runKernel(DepthwiseConv2dNativeBackpropInput,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var depthwiseConv2dNativeBackpropInput=op({depthwiseConv2dNativeBackpropInput_});function fusedDepthwiseConv2d_({x,filter,strides,pad:pad3,dataFormat="NHWC",dilations=[1,1],dimRoundingMode,bias,activation:activation2="linear",preluActivationWeights,leakyreluAlpha}){if(shouldFuse(ENGINE.state.gradientDepth,activation2)===!1){let result=depthwiseConv2d(x,filter,strides,pad3,dataFormat,dilations,dimRoundingMode);return bias!=null&&(result=add2(result,bias)),applyActivation(result,activation2,preluActivationWeights,leakyreluAlpha)}let $x=convertToTensor(x,"x","depthwiseConv2d"),$filter=convertToTensor(filter,"filter","depthwiseConv2d"),x4D=$x,reshapedTo4D=!1;$x.rank===3&&(reshapedTo4D=!0,x4D=reshape($x,[1,$x.shape[0],$x.shape[1],$x.shape[2]])),assert(x4D.rank===4,()=>`Error in fused depthwiseConv2d: input must be rank 4, but got rank ${x4D.rank}.`),assert($filter.rank===4,()=>`Error in fused depthwiseConv2d: filter must be rank 4, but got rank ${$filter.rank}.`),assert(x4D.shape[3]===$filter.shape[2],()=>`Error in fused depthwiseConv2d: number of input channels (${x4D.shape[3]}) must match the inChannels dimension in filter ${$filter.shape[2]}.`),dilations==null&&(dilations=[1,1]),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in fused depthwiseConv2d: pad must be an integer when using dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let convInfo=computeConv2DInfo(x4D.shape,$filter.shape,strides,dilations,pad3,dimRoundingMode,!0),$bias;bias!=null&&($bias=convertToTensor(bias,"bias","fused conv2d"),[$bias]=makeTypesMatch($bias,$x),assertAndGetBroadcastShape(convInfo.outShape,$bias.shape));let $preluActivationWeights;preluActivationWeights!=null&&($preluActivationWeights=convertToTensor(preluActivationWeights,"prelu weights","fused depthwiseConv2d"));let grad2=(dy,saved)=>{assert(tupleValuesAreOne(dilations),()=>`Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '${dilations}'`);let[$filter2,x4D2,y,bias2]=saved,dyActivation=getFusedDyActivation(dy,y,activation2),xDer=depthwiseConv2dNativeBackpropInput(x4D2.shape,dyActivation,$filter2,strides,pad3,dilations,dimRoundingMode),filterDer=depthwiseConv2dNativeBackpropFilter(x4D2,dyActivation,$filter2.shape,strides,pad3,dilations,dimRoundingMode);if(bias2!=null){let biasDer=getFusedBiasGradient($bias,dyActivation);return[xDer,filterDer,biasDer]}return[xDer,filterDer]},inputs={x:x4D,filter:$filter,bias:$bias,preluActivationWeights:$preluActivationWeights},attrs={strides,pad:pad3,dataFormat,dilations,dimRoundingMode,activation:activation2,leakyreluAlpha};return bias==null?customGrad((x4D2,filter2,save)=>{let res=ENGINE.runKernel(FusedDepthwiseConv2D,inputs,attrs);return save([filter2,x4D2,res]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}})(x4D,$filter):customGrad((x4D2,filter2,bias2,save)=>{let res=ENGINE.runKernel(FusedDepthwiseConv2D,inputs,attrs);return save([filter2,x4D2,res,bias2]),reshapedTo4D&&(res=reshape(res,[res.shape[1],res.shape[2],res.shape[3]])),{value:res,gradFunc:grad2}})(x4D,$filter,$bias)}var depthwiseConv2d2=op({fusedDepthwiseConv2d_});function fusedMatMul_({a,b,transposeA=!1,transposeB=!1,bias,activation:activation2="linear",preluActivationWeights,leakyreluAlpha}){if(shouldFuse(ENGINE.state.gradientDepth,activation2)===!1){let result=matMul(a,b,transposeA,transposeB);return bias!=null&&(result=add2(result,bias)),applyActivation(result,activation2,preluActivationWeights,leakyreluAlpha)}let $a=convertToTensor(a,"a","fused matMul"),$b=convertToTensor(b,"b","fused matMul");[$a,$b]=makeTypesMatch($a,$b);let innerShapeA=transposeA?$a.shape[$a.rank-2]:$a.shape[$a.rank-1],innerShapeB=transposeB?$b.shape[$b.rank-1]:$b.shape[$b.rank-2],outerShapeA=transposeA?$a.shape[$a.rank-1]:$a.shape[$a.rank-2],outerShapeB=transposeB?$b.shape[$b.rank-2]:$b.shape[$b.rank-1],outerDimsA=$a.shape.slice(0,-2),outerDimsB=$b.shape.slice(0,-2),batchDimA=sizeFromShape(outerDimsA),batchDimB=sizeFromShape(outerDimsB);assert($a.rank>=2&&$b.rank>=2&&$a.rank===$b.rank,()=>`Error in fused matMul: inputs must have the same rank of at least 2, got ranks ${$a.rank} and ${$b.rank}.`),assert(arraysEqual(outerDimsA,outerDimsB),()=>`Error in fused matMul: outer dimensions (${outerDimsA}) and (${outerDimsB}) of Tensors with shapes ${$a.shape} and ${$b.shape} must match.`),assert(innerShapeA===innerShapeB,()=>`Error in fused matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${$a.shape} and ${$b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let outShape=$a.shape.slice(0,-2).concat([outerShapeA,outerShapeB]),a3D=transposeA?reshape($a,[batchDimA,innerShapeA,outerShapeA]):reshape($a,[batchDimA,outerShapeA,innerShapeA]),b3D=transposeB?reshape($b,[batchDimB,outerShapeB,innerShapeB]):reshape($b,[batchDimB,innerShapeB,outerShapeB]),$bias;bias!=null&&($bias=convertToTensor(bias,"bias","fused matMul"),[$bias]=makeTypesMatch($bias,$a),assertAndGetBroadcastShape(outShape,$bias.shape));let $preluActivationWeights;preluActivationWeights!=null&&($preluActivationWeights=convertToTensor(preluActivationWeights,"prelu weights","fused matMul"));let grad2=(dy,saved)=>{let[a3D2,b3D2,y,$bias2]=saved,dyActivation=getFusedDyActivation(reshape(dy,y.shape),y,activation2),aDer,bDer;if(!transposeA&&!transposeB?(aDer=matMul(dyActivation,b3D2,!1,!0),bDer=matMul(a3D2,dyActivation,!0,!1)):!transposeA&&transposeB?(aDer=matMul(dyActivation,b3D2,!1,!1),bDer=matMul(dyActivation,a3D2,!0,!1)):transposeA&&!transposeB?(aDer=matMul(b3D2,dyActivation,!1,!0),bDer=matMul(a3D2,dyActivation,!1,!1)):(aDer=matMul(b3D2,dyActivation,!0,!0),bDer=matMul(dyActivation,a3D2,!0,!0)),bias!=null){let biasDer=getFusedBiasGradient($bias2,dyActivation);return[aDer,bDer,biasDer]}else return[aDer,bDer]},inputs={a:a3D,b:b3D,bias:$bias,preluActivationWeights:$preluActivationWeights},attrs={transposeA,transposeB,activation:activation2,leakyreluAlpha};return bias==null?customGrad((a3D2,b3D2,save)=>{let res=ENGINE.runKernel(_FusedMatMul,inputs,attrs);return save([a3D2,b3D2,res]),{value:reshape(res,outShape),gradFunc:grad2}})(a3D,b3D):customGrad((a3D2,b3D2,$bias2,save)=>{let res=ENGINE.runKernel(_FusedMatMul,inputs,attrs);return save([a3D2,b3D2,res,$bias2]),{value:reshape(res,outShape),gradFunc:grad2}})(a3D,b3D,$bias)}var matMul2=op({fusedMatMul_});function hammingWindow_(windowLength){return cosineWindow(windowLength,.54,.46)}var hammingWindow=op({hammingWindow_});function hannWindow_(windowLength){return cosineWindow(windowLength,.5,.5)}var hannWindow=op({hannWindow_});function frame_(signal2,frameLength,frameStep,padEnd=!1,padValue=0){let start=0,output=[];for(;start+frameLength<=signal2.size;)output.push(slice(signal2,start,frameLength)),start+=frameStep;if(padEnd)for(;start`Error in cropAndResize: image must be rank 4,but got rank ${$image.rank}.`),assert($boxes.rank===2&&$boxes.shape[1]===4,()=>`Error in cropAndResize: boxes must be have size [${numBoxes},4] but had shape ${$boxes.shape}.`),assert($boxInd.rank===1&&$boxInd.shape[0]===numBoxes,()=>`Error in cropAndResize: boxInd must be have size [${numBoxes}] but had shape ${$boxes.shape}.`),assert(cropSize.length===2,()=>`Error in cropAndResize: cropSize must be of length 2, but got length ${cropSize.length}.`),assert(cropSize[0]>=1&&cropSize[1]>=1,()=>`cropSize must be atleast [1,1], but was ${cropSize}`),assert(method==="bilinear"||method==="nearest",()=>`method must be bilinear or nearest, but was ${method}`);let inputs={image:$image,boxes:$boxes,boxInd:$boxInd},attrs={method,extrapolationValue,cropSize};return ENGINE.runKernel(CropAndResize,inputs,attrs)}var cropAndResize=op({cropAndResize_});function flipLeftRight_(image3){let $image=convertToTensor(image3,"image","flipLeftRight","float32");assert($image.rank===4,()=>`Error in flipLeftRight: image must be rank 4,but got rank ${$image.rank}.`);let inputs={image:$image};return ENGINE.runKernel(FlipLeftRight,inputs,{})}var flipLeftRight=op({flipLeftRight_});function rotateWithOffset_(image3,radians,fillValue=0,center=.5){let $image=convertToTensor(image3,"image","rotateWithOffset","float32");assert($image.rank===4,()=>`Error in rotateWithOffset: image must be rank 4,but got rank ${$image.rank}.`);let inputs={image:$image},attrs={radians,fillValue,center};return ENGINE.runKernel(RotateWithOffset,inputs,attrs)}var rotateWithOffset=op({rotateWithOffset_});function nonMaxSuppSanityCheck(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma){iouThreshold==null&&(iouThreshold=.5),scoreThreshold==null&&(scoreThreshold=Number.NEGATIVE_INFINITY),softNmsSigma==null&&(softNmsSigma=0);let numBoxes=boxes.shape[0];return maxOutputSize=Math.min(maxOutputSize,numBoxes),assert(0<=iouThreshold&&iouThreshold<=1,()=>`iouThreshold must be in [0, 1], but was '${iouThreshold}'`),assert(boxes.rank===2,()=>`boxes must be a 2D tensor, but was of rank '${boxes.rank}'`),assert(boxes.shape[1]===4,()=>`boxes must have 4 columns, but 2nd dimension was ${boxes.shape[1]}`),assert(scores.rank===1,()=>"scores must be a 1D tensor"),assert(scores.shape[0]===numBoxes,()=>`scores has incompatible shape with boxes. Expected ${numBoxes}, but was ${scores.shape[0]}`),assert(0<=softNmsSigma&&softNmsSigma<=1,()=>`softNmsSigma must be in [0, 1], but was '${softNmsSigma}'`),{maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}}function nonMaxSuppression_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppression"),$scores=convertToTensor(scores,"scores","nonMaxSuppression"),inputs=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold);maxOutputSize=inputs.maxOutputSize,iouThreshold=inputs.iouThreshold,scoreThreshold=inputs.scoreThreshold;let attrs={maxOutputSize,iouThreshold,scoreThreshold};return ENGINE.runKernel(NonMaxSuppressionV3,{boxes:$boxes,scores:$scores},attrs)}var nonMaxSuppression=op({nonMaxSuppression_});function binaryInsert(arr,element,comparator){let index=binarySearch(arr,element,comparator),insertionPoint=index<0?-(index+1):index;arr.splice(insertionPoint,0,element)}function binarySearch(arr,target,comparator){return binarySearch_(arr,target,comparator||defaultComparator)}function defaultComparator(a,b){return a>b?1:a>>1);let compareResult=comparator(target,arr[middle]);compareResult>0?left=middle+1:(right=middle,found=!compareResult)}return found?left:-left-1}function nonMaxSuppressionV3Impl(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold){return nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,0)}function nonMaxSuppressionV4Impl(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize){return nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,0,!1,padToMaxOutputSize,!0)}function nonMaxSuppressionV5Impl(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma){return nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma,!0)}function nonMaxSuppressionImpl_(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma,returnScoresTensor=!1,padToMaxOutputSize=!1,returnValidOutputs=!1){let candidates=[];for(let i=0;iscoreThreshold&&candidates.push({score:scores[i],boxIndex:i,suppressBeginIndex:0});candidates.sort(ascendingComparator);let scale2=softNmsSigma>0?-.5/softNmsSigma:0,selectedIndices=[],selectedScores=[];for(;selectedIndices.length0;){let candidate=candidates.pop(),{score:originalScore,boxIndex,suppressBeginIndex}=candidate;if(originalScore=suppressBeginIndex;--j){let iou=intersectionOverUnion(boxes,boxIndex,selectedIndices[j]);if(iou>=iouThreshold){ignoreCandidate=!0;break}if(candidate.score=candidate.score*suppressWeight(iouThreshold,scale2,iou),candidate.score<=scoreThreshold)break}candidate.suppressBeginIndex=selectedIndices.length,ignoreCandidate||(candidate.score===originalScore?(selectedIndices.push(boxIndex),selectedScores.push(candidate.score)):candidate.score>scoreThreshold&&binaryInsert(candidates,candidate,ascendingComparator))}let validOutputs=selectedIndices.length,elemsToPad=maxOutputSize-validOutputs;padToMaxOutputSize&&elemsToPad>0&&(selectedIndices.push(...new Array(elemsToPad).fill(0)),selectedScores.push(...new Array(elemsToPad).fill(0)));let result={selectedIndices};return returnScoresTensor&&(result.selectedScores=selectedScores),returnValidOutputs&&(result.validOutputs=validOutputs),result}function intersectionOverUnion(boxes,i,j){let iCoord=boxes.subarray(i*4,i*4+4),jCoord=boxes.subarray(j*4,j*4+4),yminI=Math.min(iCoord[0],iCoord[2]),xminI=Math.min(iCoord[1],iCoord[3]),ymaxI=Math.max(iCoord[0],iCoord[2]),xmaxI=Math.max(iCoord[1],iCoord[3]),yminJ=Math.min(jCoord[0],jCoord[2]),xminJ=Math.min(jCoord[1],jCoord[3]),ymaxJ=Math.max(jCoord[0],jCoord[2]),xmaxJ=Math.max(jCoord[1],jCoord[3]),areaI=(ymaxI-yminI)*(xmaxI-xminI),areaJ=(ymaxJ-yminJ)*(xmaxJ-xminJ);if(areaI<=0||areaJ<=0)return 0;let intersectionYmin=Math.max(yminI,yminJ),intersectionXmin=Math.max(xminI,xminJ),intersectionYmax=Math.min(ymaxI,ymaxJ),intersectionXmax=Math.min(xmaxI,xmaxJ),intersectionArea=Math.max(intersectionYmax-intersectionYmin,0)*Math.max(intersectionXmax-intersectionXmin,0);return intersectionArea/(areaI+areaJ-intersectionArea)}function suppressWeight(iouThreshold,scale2,iou){let weight=Math.exp(scale2*iou*iou);return iou<=iouThreshold?weight:0}function ascendingComparator(c1,c2){return c1.score-c2.score||c1.score===c2.score&&c2.boxIndex-c1.boxIndex}async function nonMaxSuppressionAsync_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppressionAsync"),$scores=convertToTensor(scores,"scores","nonMaxSuppressionAsync"),inputs=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold);maxOutputSize=inputs.maxOutputSize,iouThreshold=inputs.iouThreshold,scoreThreshold=inputs.scoreThreshold;let boxesAndScores=await Promise.all([$boxes.data(),$scores.data()]),boxesVals=boxesAndScores[0],scoresVals=boxesAndScores[1],{selectedIndices}=nonMaxSuppressionV3Impl(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold);return $boxes!==boxes&&$boxes.dispose(),$scores!==scores&&$scores.dispose(),tensor1d(selectedIndices,"int32")}var nonMaxSuppressionAsync=nonMaxSuppressionAsync_;function nonMaxSuppressionWithScore_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,softNmsSigma=0){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppression"),$scores=convertToTensor(scores,"scores","nonMaxSuppression"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);maxOutputSize=params.maxOutputSize,iouThreshold=params.iouThreshold,scoreThreshold=params.scoreThreshold,softNmsSigma=params.softNmsSigma;let inputs={boxes:$boxes,scores:$scores},attrs={maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma},result=ENGINE.runKernel(NonMaxSuppressionV5,inputs,attrs);return{selectedIndices:result[0],selectedScores:result[1]}}var nonMaxSuppressionWithScore=op({nonMaxSuppressionWithScore_});async function nonMaxSuppressionWithScoreAsync_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,softNmsSigma=0){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppressionAsync"),$scores=convertToTensor(scores,"scores","nonMaxSuppressionAsync"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);maxOutputSize=params.maxOutputSize,iouThreshold=params.iouThreshold,scoreThreshold=params.scoreThreshold,softNmsSigma=params.softNmsSigma;let boxesAndScores=await Promise.all([$boxes.data(),$scores.data()]),boxesVals=boxesAndScores[0],scoresVals=boxesAndScores[1],{selectedIndices,selectedScores}=nonMaxSuppressionV5Impl(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);return $boxes!==boxes&&$boxes.dispose(),$scores!==scores&&$scores.dispose(),{selectedIndices:tensor1d(selectedIndices,"int32"),selectedScores:tensor1d(selectedScores)}}var nonMaxSuppressionWithScoreAsync=nonMaxSuppressionWithScoreAsync_;function nonMaxSuppressionPadded_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,padToMaxOutputSize=!1){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppression"),$scores=convertToTensor(scores,"scores","nonMaxSuppression"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,null),$maxOutputSize=params.maxOutputSize,$iouThreshold=params.iouThreshold,$scoreThreshold=params.scoreThreshold,inputs={boxes:$boxes,scores:$scores},attrs={maxOutputSize:$maxOutputSize,iouThreshold:$iouThreshold,scoreThreshold:$scoreThreshold,padToMaxOutputSize},result=ENGINE.runKernel(NonMaxSuppressionV4,inputs,attrs);return{selectedIndices:result[0],validOutputs:result[1]}}var nonMaxSuppressionPadded=op({nonMaxSuppressionPadded_});async function nonMaxSuppressionPaddedAsync_(boxes,scores,maxOutputSize,iouThreshold=.5,scoreThreshold=Number.NEGATIVE_INFINITY,padToMaxOutputSize=!1){let $boxes=convertToTensor(boxes,"boxes","nonMaxSuppressionAsync"),$scores=convertToTensor(scores,"scores","nonMaxSuppressionAsync"),params=nonMaxSuppSanityCheck($boxes,$scores,maxOutputSize,iouThreshold,scoreThreshold,null),$maxOutputSize=params.maxOutputSize,$iouThreshold=params.iouThreshold,$scoreThreshold=params.scoreThreshold,[boxesVals,scoresVals]=await Promise.all([$boxes.data(),$scores.data()]),{selectedIndices,validOutputs}=nonMaxSuppressionV4Impl(boxesVals,scoresVals,$maxOutputSize,$iouThreshold,$scoreThreshold,padToMaxOutputSize);return $boxes!==boxes&&$boxes.dispose(),$scores!==scores&&$scores.dispose(),{selectedIndices:tensor1d(selectedIndices,"int32"),validOutputs:scalar(validOutputs,"int32")}}var nonMaxSuppressionPaddedAsync=nonMaxSuppressionPaddedAsync_;function resizeBilinear_(images,size,alignCorners=!1,halfPixelCenters=!1){let $images=convertToTensor(images,"images","resizeBilinear");assert($images.rank===3||$images.rank===4,()=>`Error in resizeBilinear: x must be rank 3 or 4, but got rank ${$images.rank}.`),assert(size.length===2,()=>`Error in resizeBilinear: new shape must 2D, but got shape ${size}.`),assert(halfPixelCenters===!1||alignCorners===!1,()=>"Error in resizeBilinear: If halfPixelCenters is true, alignCorners must be false.");let batchImages=$images,reshapedTo4D=!1;$images.rank===3&&(reshapedTo4D=!0,batchImages=reshape($images,[1,$images.shape[0],$images.shape[1],$images.shape[2]]));let[]=size,inputs={images:batchImages},attrs={alignCorners,halfPixelCenters,size},res=ENGINE.runKernel(ResizeBilinear,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var resizeBilinear=op({resizeBilinear_});function resizeNearestNeighbor_(images,size,alignCorners=!1,halfPixelCenters=!1){let $images=convertToTensor(images,"images","resizeNearestNeighbor");assert($images.rank===3||$images.rank===4,()=>`Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank ${$images.rank}.`),assert(size.length===2,()=>`Error in resizeNearestNeighbor: new shape must 2D, but got shape ${size}.`),assert($images.dtype==="float32"||$images.dtype==="int32",()=>"`images` must have `int32` or `float32` as dtype"),assert(halfPixelCenters===!1||alignCorners===!1,()=>"Error in resizeNearestNeighbor: If halfPixelCenters is true, alignCorners must be false.");let batchImages=$images,reshapedTo4D=!1;$images.rank===3&&(reshapedTo4D=!0,batchImages=reshape($images,[1,$images.shape[0],$images.shape[1],$images.shape[2]]));let[]=size,inputs={images:batchImages},attrs={alignCorners,halfPixelCenters,size},res=ENGINE.runKernel(ResizeNearestNeighbor,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var resizeNearestNeighbor=op({resizeNearestNeighbor_});function bandPart_(a,numLower,numUpper){assert(numLower%1==0,()=>`bandPart(): numLower must be an integer, got ${numLower}.`),assert(numUpper%1==0,()=>`bandPart(): numUpper must be an integer, got ${numUpper}.`);let $a=convertToTensor(a,"a","bandPart");assert($a.rank>=2,()=>`bandPart(): Rank must be at least 2, got ${$a.rank}.`);let shape=$a.shape,[M,N]=$a.shape.slice(-2);if(!(numLower<=M))throw new Error(`bandPart(): numLower (${numLower}) must not be greater than the number of rows (${M}).`);if(!(numUpper<=N))throw new Error(`bandPart(): numUpper (${numUpper}) must not be greater than the number of columns (${N}).`);numLower<0&&(numLower=M),numUpper<0&&(numUpper=N);let i=reshape(range(0,M,1,"int32"),[-1,1]),j=range(0,N,1,"int32"),ij=sub(i,j),inBand=logicalAnd(lessEqual(ij,scalar(+numLower,"int32")),greaterEqual(ij,scalar(-numUpper,"int32"))),zero=zeros([M,N],$a.dtype);return reshape(stack(unstack(reshape($a,[-1,M,N])).map(mat=>where(inBand,mat,zero))),shape)}var bandPart=op({bandPart_});function gramSchmidt_(xs){let inputIsTensor2D;if(Array.isArray(xs)){inputIsTensor2D=!1,assert(xs!=null&&xs.length>0,()=>"Gram-Schmidt process: input must not be null, undefined, or empty");let dim=xs[0].shape[0];for(let i=1;i`Gram-Schmidt: Non-unique lengths found in the input vectors: (${xs[i].shape[0]} vs. ${dim})`)}else inputIsTensor2D=!0,xs=split(xs,xs.shape[0],0).map(x=>squeeze(x,[0]));assert(xs.length<=xs[0].shape[0],()=>`Gram-Schmidt: Number of vectors (${xs.length}) exceeds number of dimensions (${xs[0].shape[0]}).`);let ys=[],xs1d=xs;for(let i=0;i{let x=xs1d[i];if(i>0)for(let j=0;j=2,()=>`qr() requires input tensor to have a rank >= 2, but got rank ${x.rank}`),x.rank===2)return qr2d(x,fullMatrices);{let outerDimsProd=x.shape.slice(0,x.shape.length-2).reduce((value,prev)=>value*prev),x2ds=unstack(reshape(x,[outerDimsProd,x.shape[x.shape.length-2],x.shape[x.shape.length-1]]),0),q2ds=[],r2ds=[];x2ds.forEach(x2d=>{let[q2d,r2d]=qr2d(x2d,fullMatrices);q2ds.push(q2d),r2ds.push(r2d)});let q=reshape(stack(q2ds,0),x.shape),r=reshape(stack(r2ds,0),x.shape);return[q,r]}}function qr2d(x,fullMatrices=!1){return ENGINE.tidy(()=>{assert(x.shape.length===2,()=>`qr2d() requires a 2D Tensor, but got a ${x.shape.length}D Tensor.`);let m=x.shape[0],n=x.shape[1],q=eye(m),r=clone(x),one2D=tensor2d([[1]],[1,1]),w=clone(one2D),iters=m>=n?n:m;for(let j=0;j{let rjEnd1=slice(r,[j,j],[m-j,1]),normX=norm(rjEnd1),rjj=slice(r,[j,j],[1,1]),s=where(greater(rjj,0),tensor2d([[-1]]),tensor2d([[1]])),u1=sub(rjj,mul(s,normX)),wPre=div(rjEnd1,u1);wPre.shape[0]===1?w=clone(one2D):w=concat([one2D,slice(wPre,[1,0],[wPre.shape[0]-1,wPre.shape[1]])],0);let tau=neg(div(matMul(s,u1),normX)),rjEndAll=slice(r,[j,0],[m-j,n]),tauTimesW=mul(tau,w),wT=transpose(w);if(j===0)r=sub(rjEndAll,matMul(tauTimesW,matMul(wT,rjEndAll)));else{let rTimesTau=sub(rjEndAll,matMul(tauTimesW,matMul(wT,rjEndAll)));r=concat([slice(r,[0,0],[j,n]),rTimesTau],0)}let tawTimesWT=transpose(tauTimesW),qAllJEnd=slice(q,[0,j],[m,q.shape[1]-j]);if(j===0)q=sub(qAllJEnd,matMul(matMul(qAllJEnd,w),tawTimesWT));else{let qTimesTau=sub(qAllJEnd,matMul(matMul(qAllJEnd,w),tawTimesWT));q=concat([slice(q,[0,0],[m,j]),qTimesTau],1)}return[w,r,q]}),dispose([rTemp,wTemp,qTemp])}return!fullMatrices&&m>n&&(q=slice(q,[0,0],[m,n]),r=slice(r,[0,0],[n,n])),[q,r]})}var qr=op({qr_});var Reduction;(function(Reduction2){Reduction2[Reduction2.NONE=0]="NONE",Reduction2[Reduction2.MEAN=1]="MEAN",Reduction2[Reduction2.SUM=2]="SUM",Reduction2[Reduction2.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"})(Reduction||(Reduction={}));function computeWeightedLoss_(losses4,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $losses=convertToTensor(losses4,"losses","computeWeightedLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","computeWeightedLoss"));let weightedLoss=$weights==null?$losses:mul($losses,$weights);if(reduction2===Reduction.NONE)return weightedLoss;if(reduction2===Reduction.SUM)return sum2(weightedLoss);if(reduction2===Reduction.MEAN){if($weights==null)return mean(weightedLoss);{let broadcastFactor=$losses.size/$weights.size,result=div(sum2(weightedLoss),sum2($weights));return broadcastFactor>1?div(result,scalar(broadcastFactor)):result}}if(reduction2===Reduction.SUM_BY_NONZERO_WEIGHTS){if($weights==null)return div(sum2(weightedLoss),scalar($losses.size));{let broadcastedWeights=mul($weights,ones2($losses.shape)),numNonZeros=cast(sum2(notEqual(broadcastedWeights,scalar(0))),"float32");return div(sum2(weightedLoss),numNonZeros)}}throw Error(`Unknown reduction: ${reduction2}`)}var computeWeightedLoss=op({computeWeightedLoss_});function absoluteDifference_(labels,predictions,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","absoluteDifference"),$predictions=convertToTensor(predictions,"predictions","absoluteDifference"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","absoluteDifference")),assertShapesMatch($labels.shape,$predictions.shape,"Error in absoluteDifference: ");let losses4=abs(sub($labels,$predictions));return computeWeightedLoss(losses4,$weights,reduction2)}var absoluteDifference=op({absoluteDifference_});function cosineDistance_(labels,predictions,axis,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","cosineDistance"),$predictions=convertToTensor(predictions,"predictions","cosineDistance"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","cosineDistance")),assertShapesMatch($labels.shape,$predictions.shape,"Error in cosineDistance: ");let one=scalar(1),losses4=sub(one,sum2(mul($labels,$predictions),axis,!0));return computeWeightedLoss(losses4,$weights,reduction2)}var cosineDistance=op({cosineDistance_});function hingeLoss_(labels,predictions,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","hingeLoss"),$predictions=convertToTensor(predictions,"predictions","hingeLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","hingeLoss")),assertShapesMatch($labels.shape,$predictions.shape,"Error in hingeLoss: ");let one=scalar(1);$labels=sub(mul(scalar(2),$labels),one);let losses4=relu(sub(one,mul($labels,$predictions)));return computeWeightedLoss(losses4,$weights,reduction2)}var hingeLoss=op({hingeLoss_});function huberLoss_(labels,predictions,weights,delta=1,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","huberLoss"),$predictions=convertToTensor(predictions,"predictions","huberLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","huberLoss")),assertShapesMatch($labels.shape,$predictions.shape,"Error in huberLoss: ");let deltaScalar=scalar(delta),error=abs(sub($predictions,$labels)),quadratic=minimum(error,deltaScalar),linear=sub(error,quadratic),losses4=add2(mul(scalar(.5),square(quadratic)),mul(deltaScalar,linear));return computeWeightedLoss(losses4,$weights,reduction2)}var huberLoss=op({huberLoss_});function logLoss_(labels,predictions,weights,epsilon3=1e-7,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","logLoss"),$predictions=convertToTensor(predictions,"predictions","logLoss"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","logLoss")),assertShapesMatch($labels.shape,$predictions.shape,"Error in logLoss: ");let one=scalar(1),epsilonScalar=scalar(epsilon3),l13=neg(mul($labels,log(add2($predictions,epsilonScalar)))),l23=mul(sub(one,$labels),log(add2(sub(one,$predictions),epsilonScalar))),losses4=sub(l13,l23);return computeWeightedLoss(losses4,$weights,reduction2)}var logLoss=op({logLoss_});function meanSquaredError_(labels,predictions,weights,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $labels=convertToTensor(labels,"labels","meanSquaredError"),$predictions=convertToTensor(predictions,"predictions","meanSquaredError"),$weights=null;weights!=null&&($weights=convertToTensor(weights,"weights","meanSquaredError")),assertShapesMatch($labels.shape,$predictions.shape,"Error in meanSquaredError: ");let losses4=squaredDifference($labels,$predictions);return computeWeightedLoss(losses4,$weights,reduction2)}var meanSquaredError=op({meanSquaredError_});function sigmoidCrossEntropyWithLogits_(labels,logits){let $labels=convertToTensor(labels,"labels","sigmoidCrossEntropyWithLogits"),$logits=convertToTensor(logits,"logits","sigmoidCrossEntropyWithLogits");assertShapesMatch($labels.shape,$logits.shape,"Error in sigmoidCrossEntropyWithLogits: ");let maxOutput=relu($logits),outputXTarget=mul($logits,$labels),sigmoidOutput=log1p(exp(neg(abs($logits))));return add2(sub(maxOutput,outputXTarget),sigmoidOutput)}function sigmoidCrossEntropy_(multiClassLabels,logits,weights,labelSmoothing=0,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $multiClassLabels=convertToTensor(multiClassLabels,"multiClassLabels","sigmoidCrossEntropy"),$logits=convertToTensor(logits,"logits","sigmoidCrossEntropy"),$weights=null;if(weights!=null&&($weights=convertToTensor(weights,"weights","sigmoidCrossEntropy")),assertShapesMatch($multiClassLabels.shape,$logits.shape,"Error in sigmoidCrossEntropy: "),labelSmoothing>0){let labelSmoothingScalar=scalar(labelSmoothing),one=scalar(1),half=scalar(.5);$multiClassLabels=add2(mul($multiClassLabels,sub(one,labelSmoothingScalar)),mul(half,labelSmoothingScalar))}let losses4=sigmoidCrossEntropyWithLogits_($multiClassLabels,$logits);return computeWeightedLoss(losses4,$weights,reduction2)}var sigmoidCrossEntropy=op({sigmoidCrossEntropy_});function softmaxCrossEntropyWithLogits_(labels,logits,dim=-1){if(dim===-1&&(dim=logits.rank-1),dim!==logits.rank-1)throw Error(`Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank ${logits.rank} and dim was ${dim}`);return customGrad((labels2,logits2,save)=>{let lse=logSumExp(logits2,[dim],!0),logResult=sub(cast(logits2,"float32"),lse);save([labels2,logResult]);let costVector=neg(mul(logResult,labels2));return{value:sum2(costVector,[dim]),gradFunc:(dy,saved)=>{let[labels3,logResult2]=saved,dyShape=expandShapeToKeepDim(dy.shape,[dim]);return[mul(reshape(dy,dyShape),sub(cast(labels3,"float32"),exp(logResult2))),mul(reshape(dy,dyShape),sub(exp(logResult2),cast(labels3,"float32")))]}}})(labels,logits)}function softmaxCrossEntropy_(onehotLabels,logits,weights,labelSmoothing=0,reduction2=Reduction.SUM_BY_NONZERO_WEIGHTS){let $onehotLabels=convertToTensor(onehotLabels,"onehotLabels","softmaxCrossEntropy"),$logits=convertToTensor(logits,"logits","softmaxCrossEntropy"),$weights=null;if(weights!=null&&($weights=convertToTensor(weights,"weights","softmaxCrossEntropy")),assertShapesMatch($onehotLabels.shape,$logits.shape,"Error in softmaxCrossEntropy: "),labelSmoothing>0){let labelSmoothingScalar=scalar(labelSmoothing),one=scalar(1),numClasses=scalar($onehotLabels.shape[1]);$onehotLabels=add2(mul($onehotLabels,sub(one,labelSmoothingScalar)),div(labelSmoothingScalar,numClasses))}let losses4=softmaxCrossEntropyWithLogits_($onehotLabels,$logits);return computeWeightedLoss(losses4,$weights,reduction2)}var softmaxCrossEntropy=op({softmaxCrossEntropy_});var spectral={fft,ifft,rfft,irfft},signal={hammingWindow,hannWindow,frame,stft},image={flipLeftRight,resizeNearestNeighbor,resizeBilinear,rotateWithOffset,cropAndResize,nonMaxSuppression,nonMaxSuppressionAsync,nonMaxSuppressionWithScore,nonMaxSuppressionWithScoreAsync,nonMaxSuppressionPadded,nonMaxSuppressionPaddedAsync},linalg={bandPart,gramSchmidt,qr},losses={absoluteDifference,computeWeightedLoss,cosineDistance,hingeLoss,huberLoss,logLoss,meanSquaredError,sigmoidCrossEntropy,softmaxCrossEntropy};var Optimizer=class extends Serializable{minimize(f,returnCost=!1,varList){let{value,grads:grads2}=this.computeGradients(f,varList);if(varList!=null){let gradArray=varList.map(v=>({name:v.name,tensor:grads2[v.name]}));this.applyGradients(gradArray)}else this.applyGradients(grads2);return dispose(grads2),returnCost?value:(value.dispose(),null)}get iterations(){return this.iterations_==null&&(this.iterations_=0),this.iterations_}incrementIterations(){this.iterations_=this.iterations+1}computeGradients(f,varList){return variableGrads(f,varList)}dispose(){this.iterations_!=null&&dispose(this.iterations_)}async saveIterations(){return this.iterations_==null&&(this.iterations_=0),{name:"iter",tensor:scalar(this.iterations_,"int32")}}async getWeights(){throw new Error("getWeights() is not implemented for this optimizer yet.")}async setWeights(weightValues){throw new Error(`setWeights() is not implemented for this optimizer class ${this.getClassName()}`)}async extractIterations(weightValues){return this.iterations_=(await weightValues[0].tensor.data())[0],weightValues.slice(1)}};Object.defineProperty(Optimizer,Symbol.hasInstance,{value:instance=>instance.minimize!=null&&instance.computeGradients!=null&&instance.applyGradients!=null});var AdadeltaOptimizer=class extends Optimizer{constructor(learningRate,rho,epsilon3=null){super();this.learningRate=learningRate,this.rho=rho,this.epsilon=epsilon3,this.accumulatedGrads=[],this.accumulatedUpdates=[],epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(variableGradients){(Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients)).forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedGrads[i]==null&&(this.accumulatedGrads[i]={originalName:`${name}/accum_grad`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedUpdates[i]==null&&(this.accumulatedUpdates[i]={originalName:`${name}/accum_var`,variable:tidy(()=>zerosLike(value).variable(trainable))});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let accumulatedGrad=this.accumulatedGrads[i].variable,accumulatedUpdate=this.accumulatedUpdates[i].variable;tidy(()=>{let newAccumulatedGrad=add2(mul(accumulatedGrad,this.rho),mul(square(gradient),1-this.rho)),updates=mul(div(sqrt(add2(accumulatedUpdate,this.epsilon)),sqrt(add2(accumulatedGrad,this.epsilon))),gradient),newAccumulatedUpdate=add2(mul(accumulatedUpdate,this.rho),mul(square(updates),1-this.rho));accumulatedGrad.assign(newAccumulatedGrad),accumulatedUpdate.assign(newAccumulatedUpdate);let newValue=add2(mul(updates,-this.learningRate),value);value.assign(newValue)})}),this.incrementIterations()}dispose(){this.accumulatedUpdates!=null&&(dispose(this.accumulatedGrads.map(v=>v.variable)),dispose(this.accumulatedUpdates.map(v=>v.variable)))}async getWeights(){let variables=[...this.accumulatedGrads,...this.accumulatedUpdates];return[await this.saveIterations()].concat(variables.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let variableCount=weightValues.length/2,trainable=!1;this.accumulatedGrads=weightValues.slice(0,variableCount).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.accumulatedUpdates=weightValues.slice(variableCount,variableCount*2).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}}static fromConfig(cls,config){return new cls(config.learningRate,config.rho,config.epsilon)}};AdadeltaOptimizer.className="Adadelta";registerClass(AdadeltaOptimizer);var AdagradOptimizer=class extends Optimizer{constructor(learningRate,initialAccumulatorValue=.1){super();this.learningRate=learningRate,this.initialAccumulatorValue=initialAccumulatorValue,this.accumulatedGrads=[]}applyGradients(variableGradients){(Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients)).forEach((name,i)=>{let value=ENGINE.registeredVariables[name];if(this.accumulatedGrads[i]==null){let trainable=!1;this.accumulatedGrads[i]={originalName:`${name}/accumulator`,variable:tidy(()=>fill(value.shape,this.initialAccumulatorValue).variable(trainable))}}let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let accumulatedGrad=this.accumulatedGrads[i].variable;tidy(()=>{let newAccumulatedGrad=add2(accumulatedGrad,square(gradient));accumulatedGrad.assign(newAccumulatedGrad);let newValue=add2(mul(div(gradient,sqrt(add2(newAccumulatedGrad,ENGINE.backend.epsilon()))),-this.learningRate),value);value.assign(newValue)})}),this.incrementIterations()}dispose(){this.accumulatedGrads!=null&&dispose(this.accumulatedGrads.map(v=>v.variable))}async getWeights(){return[await this.saveIterations()].concat(this.accumulatedGrads.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let trainable=!1;this.accumulatedGrads=weightValues.map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}}static fromConfig(cls,config){return new cls(config.learningRate,config.initialAccumulatorValue)}};AdagradOptimizer.className="Adagrad";registerClass(AdagradOptimizer);var AdamOptimizer=class extends Optimizer{constructor(learningRate,beta1,beta2,epsilon3=null){super();this.learningRate=learningRate,this.beta1=beta1,this.beta2=beta2,this.epsilon=epsilon3,this.accumulatedFirstMoment=[],this.accumulatedSecondMoment=[],tidy(()=>{this.accBeta1=scalar(beta1).variable(),this.accBeta2=scalar(beta2).variable()}),epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(variableGradients){let varNames=Array.isArray(variableGradients)?variableGradients.map(v=>v.name):Object.keys(variableGradients);tidy(()=>{let oneMinusAccBeta1=sub(1,this.accBeta1),oneMinusAccBeta2=sub(1,this.accBeta2);varNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedFirstMoment[i]==null&&(this.accumulatedFirstMoment[i]={originalName:`${name}/m`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedSecondMoment[i]==null&&(this.accumulatedSecondMoment[i]={originalName:`${name}/v`,variable:tidy(()=>zerosLike(value).variable(trainable))});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let firstMoment=this.accumulatedFirstMoment[i].variable,secondMoment=this.accumulatedSecondMoment[i].variable,newFirstMoment=add2(mul(firstMoment,this.beta1),mul(gradient,1-this.beta1)),newSecondMoment=add2(mul(secondMoment,this.beta2),mul(square(gradient),1-this.beta2)),biasCorrectedFirstMoment=div(newFirstMoment,oneMinusAccBeta1),biasCorrectedSecondMoment=div(newSecondMoment,oneMinusAccBeta2);firstMoment.assign(newFirstMoment),secondMoment.assign(newSecondMoment);let newValue=add2(mul(div(biasCorrectedFirstMoment,add2(sqrt(biasCorrectedSecondMoment),this.epsilon)),-this.learningRate),value);value.assign(newValue)}),this.accBeta1.assign(mul(this.accBeta1,this.beta1)),this.accBeta2.assign(mul(this.accBeta2,this.beta2))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.accBeta2.dispose(),this.accumulatedFirstMoment!=null&&dispose(this.accumulatedFirstMoment.map(v=>v.variable)),this.accumulatedSecondMoment!=null&&dispose(this.accumulatedSecondMoment.map(v=>v.variable))}async getWeights(){let variables=[...this.accumulatedFirstMoment,...this.accumulatedSecondMoment];return[await this.saveIterations()].concat(variables.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues),tidy(()=>{this.accBeta1.assign(pow(this.beta1,this.iterations_+1)),this.accBeta2.assign(pow(this.beta2,this.iterations_+1))});let variableCount=weightValues.length/2,trainable=!1;this.accumulatedFirstMoment=weightValues.slice(0,variableCount).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.accumulatedSecondMoment=weightValues.slice(variableCount,variableCount*2).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}}static fromConfig(cls,config){return new cls(config.learningRate,config.beta1,config.beta2,config.epsilon)}};AdamOptimizer.className="Adam";registerClass(AdamOptimizer);var AdamaxOptimizer=class extends Optimizer{constructor(learningRate,beta1,beta2,epsilon3=null,decay=0){super();this.learningRate=learningRate,this.beta1=beta1,this.beta2=beta2,this.epsilon=epsilon3,this.decay=decay,this.accumulatedFirstMoment=[],this.accumulatedWeightedInfNorm=[],tidy(()=>{this.iteration=scalar(0).variable(),this.accBeta1=scalar(beta1).variable()}),epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(variableGradients){let variableNames=Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients);tidy(()=>{let oneMinusAccBeta1=sub(1,this.accBeta1),lr=div(-this.learningRate,add2(mul(this.iteration,this.decay),1));variableNames.forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedFirstMoment[i]==null&&(this.accumulatedFirstMoment[i]={originalName:`${name}/m`,variable:zerosLike(value).variable(trainable)}),this.accumulatedWeightedInfNorm[i]==null&&(this.accumulatedWeightedInfNorm[i]={originalName:`${name}/v`,variable:zerosLike(value).variable(trainable)});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let firstMoment=this.accumulatedFirstMoment[i].variable,weightedInfNorm=this.accumulatedWeightedInfNorm[i].variable,newFirstMoment=add2(mul(firstMoment,this.beta1),mul(gradient,1-this.beta1)),ut0=mul(weightedInfNorm,this.beta2),ut1=abs(gradient),newWeightedInfNorm=maximum(ut0,ut1);firstMoment.assign(newFirstMoment),weightedInfNorm.assign(newWeightedInfNorm);let newValue=add2(mul(div(lr,oneMinusAccBeta1),div(newFirstMoment,add2(newWeightedInfNorm,this.epsilon))),value);value.assign(newValue)}),this.iteration.assign(add2(this.iteration,1)),this.accBeta1.assign(mul(this.accBeta1,this.beta1))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.iteration.dispose(),this.accumulatedFirstMoment!=null&&dispose(this.accumulatedFirstMoment.map(v=>v.variable)),this.accumulatedWeightedInfNorm!=null&&dispose(this.accumulatedWeightedInfNorm.map(v=>v.variable))}async getWeights(){throw new Error("getWeights() is not implemented for Adamax yet.")}async setWeights(weightValues){throw new Error("setWeights() is not implemented for Adamax yet.")}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}}static fromConfig(cls,config){return new cls(config.learningRate,config.beta1,config.beta2,config.epsilon,config.decay)}};AdamaxOptimizer.className="Adamax";registerClass(AdamaxOptimizer);var SGDOptimizer=class extends Optimizer{constructor(learningRate){super();this.learningRate=learningRate,this.setLearningRate(learningRate)}applyGradients(variableGradients){(Array.isArray(variableGradients)?variableGradients.map(v=>v.name):Object.keys(variableGradients)).forEach((name,i)=>{let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let value=ENGINE.registeredVariables[name];tidy(()=>{let newValue=add2(mul(this.c,gradient),value);value.assign(newValue)})}),this.incrementIterations()}setLearningRate(learningRate){this.learningRate=learningRate,this.c!=null&&this.c.dispose(),this.c=keep(scalar(-learningRate))}dispose(){this.c.dispose()}async getWeights(){return[await this.saveIterations()]}async setWeights(weightValues){if(weightValues=await this.extractIterations(weightValues),weightValues.length!==0)throw new Error("SGD optimizer does not have settable weights.")}getConfig(){return{learningRate:this.learningRate}}static fromConfig(cls,config){return new cls(config.learningRate)}};SGDOptimizer.className="SGD";registerClass(SGDOptimizer);var MomentumOptimizer=class extends SGDOptimizer{constructor(learningRate,momentum,useNesterov=!1){super(learningRate);this.learningRate=learningRate,this.momentum=momentum,this.useNesterov=useNesterov,this.accumulations=[],this.m=scalar(this.momentum)}applyGradients(variableGradients){(Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients)).forEach((name,i)=>{let value=ENGINE.registeredVariables[name];if(this.accumulations[i]==null){let trainable=!1;this.accumulations[i]={originalName:`${name}/momentum`,variable:tidy(()=>zerosLike(value).variable(trainable))}}let accumulation=this.accumulations[i].variable,gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];gradient!=null&&tidy(()=>{let newValue,newAccumulation=add2(mul(this.m,accumulation),gradient);this.useNesterov?newValue=add2(mul(this.c,add2(gradient,mul(newAccumulation,this.m))),value):newValue=add2(mul(this.c,newAccumulation),value),accumulation.assign(newAccumulation),value.assign(newValue)})}),this.incrementIterations()}dispose(){this.m.dispose(),this.accumulations!=null&&dispose(this.accumulations.map(v=>v.variable))}setMomentum(momentum){this.momentum=momentum}async getWeights(){return[await this.saveIterations()].concat(this.accumulations.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let trainable=!1;this.accumulations=weightValues.map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)}))}getConfig(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}}static fromConfig(cls,config){return new cls(config.learningRate,config.momentum,config.useNesterov)}};MomentumOptimizer.className="Momentum";registerClass(MomentumOptimizer);var RMSPropOptimizer=class extends Optimizer{constructor(learningRate,decay=.9,momentum=0,epsilon3=null,centered=!1){super();if(this.learningRate=learningRate,this.decay=decay,this.momentum=momentum,this.epsilon=epsilon3,this.accumulatedMeanSquares=[],this.accumulatedMoments=[],this.accumulatedMeanGrads=[],this.centered=centered,epsilon3==null&&(this.epsilon=ENGINE.backend.epsilon()),learningRate==null)throw new Error("learningRate for RMSPropOptimizer must be defined.")}applyGradients(variableGradients){(Array.isArray(variableGradients)?variableGradients.map(item=>item.name):Object.keys(variableGradients)).forEach((name,i)=>{let value=ENGINE.registeredVariables[name],trainable=!1;this.accumulatedMeanSquares[i]==null&&(this.accumulatedMeanSquares[i]={originalName:`${name}/rms`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedMoments[i]==null&&(this.accumulatedMoments[i]={originalName:`${name}/momentum`,variable:tidy(()=>zerosLike(value).variable(trainable))}),this.accumulatedMeanGrads[i]==null&&this.centered&&(this.accumulatedMeanGrads[i]={originalName:`${name}/mg`,variable:tidy(()=>zerosLike(value).variable(trainable))});let gradient=Array.isArray(variableGradients)?variableGradients[i].tensor:variableGradients[name];if(gradient==null)return;let accumulatedMeanSquare=this.accumulatedMeanSquares[i].variable,accumulatedMoments=this.accumulatedMoments[i].variable;tidy(()=>{let newAccumulatedMeanSquare=add2(mul(accumulatedMeanSquare,this.decay),mul(square(gradient),1-this.decay));if(this.centered){let accumulatedMeanGrad=this.accumulatedMeanGrads[i].variable,newAccumulatedMeanGrad=add2(mul(accumulatedMeanGrad,this.decay),mul(gradient,1-this.decay)),gradContribution=div(mul(gradient,this.learningRate),sqrt(sub(newAccumulatedMeanSquare,add2(square(newAccumulatedMeanGrad),this.epsilon)))),newAccumulatedMoments=add2(mul(accumulatedMoments,this.momentum),gradContribution);accumulatedMeanSquare.assign(newAccumulatedMeanSquare),accumulatedMeanGrad.assign(newAccumulatedMeanGrad),accumulatedMoments.assign(newAccumulatedMoments);let newValue=sub(value,newAccumulatedMoments);value.assign(newValue)}else{let newAccumulatedMeanSquare2=add2(mul(accumulatedMeanSquare,this.decay),mul(square(gradient),1-this.decay)),newAccumulatedMoments=add2(mul(accumulatedMoments,this.momentum),div(mul(gradient,this.learningRate),sqrt(add2(newAccumulatedMeanSquare2,this.epsilon))));accumulatedMeanSquare.assign(newAccumulatedMeanSquare2),accumulatedMoments.assign(newAccumulatedMoments);let newValue=sub(value,newAccumulatedMoments);value.assign(newValue)}})}),this.incrementIterations()}dispose(){this.accumulatedMeanSquares!=null&&dispose(this.accumulatedMeanSquares.map(v=>v.variable)),this.accumulatedMeanGrads!=null&&this.centered&&dispose(this.accumulatedMeanGrads.map(v=>v.variable)),this.accumulatedMoments!=null&&dispose(this.accumulatedMoments.map(v=>v.variable))}async getWeights(){let variables=[...this.accumulatedMeanSquares,...this.accumulatedMoments];return this.centered&&variables.push(...this.accumulatedMeanGrads),[await this.saveIterations()].concat(variables.map(v=>({name:v.originalName,tensor:v.variable})))}async setWeights(weightValues){weightValues=await this.extractIterations(weightValues);let variableCount=this.centered?weightValues.length/3:weightValues.length/2,trainable=!1;this.accumulatedMeanSquares=weightValues.slice(0,variableCount).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.accumulatedMoments=weightValues.slice(variableCount,variableCount*2).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})),this.centered&&(this.accumulatedMeanGrads=weightValues.slice(variableCount*2,variableCount*3).map(v=>({originalName:v.name,variable:v.tensor.variable(trainable)})))}getConfig(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}}static fromConfig(cls,config){return new cls(config.learningRate,config.decay,config.momentum,config.epsilon,config.centered)}};RMSPropOptimizer.className="RMSProp";registerClass(RMSPropOptimizer);var OptimizerConstructors=class{static sgd(learningRate){return new SGDOptimizer(learningRate)}static momentum(learningRate,momentum,useNesterov=!1){return new MomentumOptimizer(learningRate,momentum,useNesterov)}static rmsprop(learningRate,decay=.9,momentum=0,epsilon3=null,centered=!1){return new RMSPropOptimizer(learningRate,decay,momentum,epsilon3,centered)}static adam(learningRate=.001,beta1=.9,beta2=.999,epsilon3=null){return new AdamOptimizer(learningRate,beta1,beta2,epsilon3)}static adadelta(learningRate=.001,rho=.95,epsilon3=null){return new AdadeltaOptimizer(learningRate,rho,epsilon3)}static adamax(learningRate=.002,beta1=.9,beta2=.999,epsilon3=null,decay=0){return new AdamaxOptimizer(learningRate,beta1,beta2,epsilon3,decay)}static adagrad(learningRate,initialAccumulatorValue=.1){return new AdagradOptimizer(learningRate,initialAccumulatorValue)}};var train={sgd:OptimizerConstructors.sgd,momentum:OptimizerConstructors.momentum,adadelta:OptimizerConstructors.adadelta,adagrad:OptimizerConstructors.adagrad,rmsprop:OptimizerConstructors.rmsprop,adamax:OptimizerConstructors.adamax,adam:OptimizerConstructors.adam};var delayCallback=(()=>typeof requestAnimationFrame!="undefined"?requestAnimationFrame:typeof setImmediate!="undefined"?setImmediate:f=>f())();function nextFrame(){return new Promise(resolve=>delayCallback(()=>resolve()))}var backend_util_exports={};__export(backend_util_exports,{ERF_A1:()=>ERF_A1,ERF_A2:()=>ERF_A2,ERF_A3:()=>ERF_A3,ERF_A4:()=>ERF_A4,ERF_A5:()=>ERF_A5,ERF_P:()=>ERF_P,PARALLELIZE_THRESHOLD:()=>PARALLELIZE_THRESHOLD,SELU_SCALE:()=>SELU_SCALE,SELU_SCALEALPHA:()=>SELU_SCALEALPHA,applyActivation:()=>applyActivation,assertAndGetBroadcastShape:()=>assertAndGetBroadcastShape,assertAxesAreInnerMostDims:()=>assertAxesAreInnerMostDims,assertParamsConsistent:()=>assertParamsConsistent,assignToTypedArray:()=>assignToTypedArray,axesAreInnerMostDims:()=>axesAreInnerMostDims,calculateShapes:()=>calculateShapes,castTensor:()=>castTensor,combineLocations:()=>combineLocations,complexWithEvenIndex:()=>complexWithEvenIndex,complexWithOddIndex:()=>complexWithOddIndex,computeConv2DInfo:()=>computeConv2DInfo,computeConv3DInfo:()=>computeConv3DInfo,computeDefaultPad:()=>computeDefaultPad,computeDilation2DInfo:()=>computeDilation2DInfo,computeOptimalWindowSize:()=>computeOptimalWindowSize,computeOutAndReduceShapes:()=>computeOutAndReduceShapes,computeOutShape:()=>computeOutShape2,computePool2DInfo:()=>computePool2DInfo,computePool3DInfo:()=>computePool3DInfo,convertConv2DDataFormat:()=>convertConv2DDataFormat,eitherStridesOrDilationsAreOne:()=>eitherStridesOrDilationsAreOne,expandShapeToKeepDim:()=>expandShapeToKeepDim,exponent:()=>exponent,exponents:()=>exponents,fromStringArrayToUint8:()=>fromStringArrayToUint8,fromUint8ToStringArray:()=>fromUint8ToStringArray,getAxesPermutation:()=>getAxesPermutation,getBroadcastDims:()=>getBroadcastDims,getComplexWithIndex:()=>getComplexWithIndex,getFusedBiasGradient:()=>getFusedBiasGradient,getFusedDyActivation:()=>getFusedDyActivation,getImageCenter:()=>getImageCenter,getInnerMostAxes:()=>getInnerMostAxes,getPermuted:()=>getPermuted,getReductionAxes:()=>getReductionAxes,getReshaped:()=>getReshaped,getReshapedPermuted:()=>getReshapedPermuted,getSliceBeginCoords:()=>getSliceBeginCoords,getSliceSize:()=>getSliceSize,getUndoAxesPermutation:()=>getUndoAxesPermutation,log:()=>log2,mergeRealAndImagArrays:()=>mergeRealAndImagArrays,prepareAndValidate:()=>prepareAndValidate,prepareSplitSize:()=>prepareSplitSize,reshapeTensor:()=>reshapeTensor,segment_util:()=>segment_util_exports,shouldFuse:()=>shouldFuse,slice_util:()=>slice_util_exports,splitRealAndImagArrays:()=>splitRealAndImagArrays,tupleValuesAreOne:()=>tupleValuesAreOne,upcastType:()=>upcastType,validateInput:()=>validateInput,validateUpdateShape:()=>validateUpdateShape,warn:()=>warn});function assertParamsConsistent(shapes,axis){let rank=shapes[0].length;shapes.forEach((shape,i)=>{assert(shape.length===rank,()=>`Error in concat${rank}D: rank of tensors[${i}] must be the same as the rank of the rest (${rank})`)}),assert(axis>=0&&axis`Error in concat${rank}D: axis must be between 0 and ${rank-1}.`);let firstShape=shapes[0];shapes.forEach((shape,i)=>{for(let r=0;r`Error in concat${rank}D: Shape of tensors[${i}] (${shape}) does not match the shape of the rest (${firstShape}) along the non-concatenated axis ${i}.`)})}function computeOutShape2(shapes,axis){let outputShape=shapes[0].slice();for(let i=1;i=blockShapeRank*2+1||i%2==1?permutedAfterBatch.push(i):permutedBeforeBatch.push(i);permuted.push(...permutedBeforeBatch),permuted.push(0),permuted.push(...permutedAfterBatch)}return permuted}function getReshapedPermuted(inputShape,blockShape,prod5,batchToSpace=!0){let reshapedPermuted=[];batchToSpace?reshapedPermuted.push(inputShape[0]/prod5):reshapedPermuted.push(inputShape[0]*prod5);for(let i=1;i"Number of splits must evenly divide the axis."),splitSizes=new Array(numOrSizeSplits).fill(x.shape[axis]/numOrSizeSplits);else{let numOfNegs=numOrSizeSplits.reduce((count2,value)=>(value===-1&&(count2+=1),count2),0);assert(numOfNegs<=1,()=>"There should be only one negative value in split array.");let negIndex=numOrSizeSplits.indexOf(-1);if(negIndex!==-1){let total=numOrSizeSplits.reduce((a,b)=>b>0?a+b:a);numOrSizeSplits[negIndex]=x.shape[axis]-total}assert(x.shape[axis]===numOrSizeSplits.reduce((a,b)=>a+b),()=>"The sum of sizes must match the size of the axis dimension."),splitSizes=numOrSizeSplits}return splitSizes}var segment_util_exports={};__export(segment_util_exports,{collectGatherOpShapeInfo:()=>collectGatherOpShapeInfo,computeOutShape:()=>computeOutShape3,segOpComputeOptimalWindowSize:()=>segOpComputeOptimalWindowSize});function segOpComputeOptimalWindowSize(inSize,numSegments){let done=!1,res;for(inSize<=PARALLELIZE_THRESHOLD?(res=inSize,done=!0):res=nearestDivisor(inSize,Math.floor(Math.sqrt(inSize)));!done;)res>numSegments||res===inSize?done=!0:res=nearestDivisor(inSize,res+1);return res}function computeOutShape3(aShape,axis,numSegments){let outShape=[],rank=aShape.length;for(let dim=0;dimindicesRank))throw new Error(`Expect batchDims in the range of [-${indicesRank}, ${indicesRank}], but got ${batchDims}`);if(batchDims<0&&(batchDims+=indicesRank),batchDims>xRank)throw new Error(`batchDims (${batchDims}) must be less than rank(x) ( - ${xRank}).`);if(axisdecodeString(val))}catch(err){throw new Error(`Failed to decode encoded string bytes into utf-8, error: ${err}`)}}function fromStringArrayToUint8(strings){return strings.map(s=>encodeString(s))}var kernel_impls_exports={};__export(kernel_impls_exports,{nonMaxSuppressionV3Impl:()=>nonMaxSuppressionV3Impl,nonMaxSuppressionV4Impl:()=>nonMaxSuppressionV4Impl,nonMaxSuppressionV5Impl:()=>nonMaxSuppressionV5Impl,whereImpl:()=>whereImpl});var absGradConfig={kernelName:Abs,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,step(cast(x,"float32"),-1))}}};var acosGradConfig={kernelName:Acos,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let a=square(cast(x,"float32")),b=sqrt(sub(scalar(1),a));return neg(div(dy,b))}}}};var acoshGradConfig={kernelName:Acosh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let a=sqrt(sub(square(cast(x,"float32")),1));return div(dy,a)}}}};var addGradConfig={kernelName:Add,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape);return{a:()=>{let res=dy,reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,a.shape)},b:()=>{let res=dy,reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,b.shape)}}}};var addNGradConfig={kernelName:AddN,saveAllInputs:!0,gradFunc:(dy,saved)=>{let ders={};return saved.forEach((_,i)=>{ders[i]=()=>dy.clone()}),ders}};var argMaxGradConfig={kernelName:ArgMax,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>zerosLike(x)}}};var argMinGradConfig={kernelName:ArgMin,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>zerosLike(x)}}};var asinGradConfig={kernelName:Asin,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,sqrt(sub(scalar(1),square(cast(x,"float32")))))}}};var asinhGradConfig={kernelName:Asinh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let a=sqrt(add2(scalar(1),square(cast(x,"float32"))));return div(dy,a)}}}};var atan2GradConfig={kernelName:Atan2,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape);return{a:()=>{let d=add2(square(a),square(b)),res=mul(dy,div(b,d)),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,a.shape)},b:()=>{let d=add2(square(a),square(b)),res=neg(mul(dy,div(a,d))),reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,b.shape)}}}};var atanGradConfig={kernelName:Atan,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,add2(square(cast(x,"float32")),1))}}};var atanhGradConfig={kernelName:Atanh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,sub(scalar(1),square(cast(x,"float32"))))}}};function avgPool3dGrad_(dy,input2,filterSize,strides,dilations=[1,1,1],pad3,dimRoundingMode){let $dy=convertToTensor(dy,"dy","avgPool3dGrad"),$input=convertToTensor(input2,"input","avgPool3dGrad"),dy5D=$dy,input5D=$input,reshapedTo5D=!1;$input.rank===4&&(reshapedTo5D=!0,dy5D=reshape($dy,[1,$dy.shape[0],$dy.shape[1],$dy.shape[2],$dy.shape[3]]),input5D=reshape($input,[1,$input.shape[0],$input.shape[1],$input.shape[2],$input.shape[3]])),assert(dy5D.rank===5,()=>`Error in avgPool3dGrad: dy must be rank 5 but got rank ${dy5D.rank}.`),assert(input5D.rank===5,()=>`Error in avgPool3dGrad: input must be rank 5 but got rank ${input5D.rank}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool3dGrad: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in avgPool3dGrad: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let inputs={dy:dy5D,input:input5D},attrs={filterSize,strides,dilations,pad:pad3,dimRoundingMode},res=ENGINE.runKernel(AvgPool3DGrad,inputs,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var avgPool3dGrad=op({avgPool3dGrad_});var avgPool3DGradConfig={kernelName:AvgPool3D,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{filterSize,strides,dilations,pad:pad3,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1,1]:dilations;return{x:()=>avgPool3dGrad(dy,x,filterSize,strides,$dilations,pad3,dimRoundingMode)}}};function avgPoolGrad_(dy,input2,filterSize,strides,pad3){let $dy=convertToTensor(dy,"dy","avgPoolGrad"),$input=convertToTensor(input2,"input","avgPoolGrad");assert($input.rank===$dy.rank,()=>`Rank of input (${$input.rank}) does not match rank of dy (${$dy.rank})`);let input4D=$input,dy4D=$dy,reshapedTo4D=!1;$input.rank===3&&(reshapedTo4D=!0,input4D=reshape($input,[1,$input.shape[0],$input.shape[1],$input.shape[2]]),dy4D=reshape($dy,[1,$dy.shape[0],$dy.shape[1],$dy.shape[2]])),assert(dy4D.rank===4,()=>`Error in avgPoolGrad: dy must be rank 4 but got rank ${dy4D.rank}.`),assert(input4D.rank===4,()=>`Error in avgPoolGrad: input must be rank 4 but got rank ${input4D.rank}.`);let inputs={dy:dy4D,input:input4D},attrs={filterSize,strides,pad:pad3},res=ENGINE.runKernel(AvgPoolGrad,inputs,attrs);return reshapedTo4D?reshape(res,[res.shape[1],res.shape[2],res.shape[3]]):res}var avgPoolGrad=op({avgPoolGrad_});var avgPoolGradConfig={kernelName:AvgPool,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{filterSize,strides,pad:pad3}=attrs;return{x:()=>avgPoolGrad(dy,x,filterSize,strides,pad3)}}};var batchMatMulGradConfig={kernelName:BatchMatMul,inputsToSave:["a","b"],gradFunc:(dy,saved,attrs)=>{let[a,b]=saved,{transposeA,transposeB}=attrs;return!transposeA&&!transposeB?{a:()=>matMul(dy,b,!1,!0),b:()=>matMul(a,dy,!0,!1)}:!transposeA&&transposeB?{a:()=>matMul(dy,b,!1,!1),b:()=>matMul(dy,a,!0,!1)}:transposeA&&!transposeB?{a:()=>matMul(b,dy,!1,!0),b:()=>matMul(a,dy,!1,!1)}:{a:()=>matMul(b,dy,!0,!0),b:()=>matMul(dy,a,!0,!0)}}};var batchToSpaceNDGradConfig={kernelName:BatchToSpaceND,gradFunc:(dy,saved,attrs)=>{let{blockShape,crops}=attrs;return{x:()=>spaceToBatchND(dy,blockShape,crops)}}};var broadcastToGradConfig={kernelName:BroadcastTo,gradFunc:(dy,saved,attrs)=>{let broadCastToAttrs=attrs,inputShape=broadCastToAttrs.inputShape,outputShape=broadCastToAttrs.shape,reps=Array.from(outputShape);for(let i=inputShape.length-1;i>=0;i--)if(inputShape[i]===outputShape[i])reps[i]=1;else if(inputShape[i]!==1)throw new Error(`broadcastTo(): [${inputShape}] cannot be broadcast to [${outputShape}].`);let axes=[];for(let i=0;i1&&axes.push(i);return{x:()=>sum2(dy,axes,!0)}}};var castGradConfig={kernelName:Cast,gradFunc:dy=>({x:()=>dy.clone()})};var ceilGradConfig={kernelName:Ceil,gradFunc:dy=>({x:()=>zerosLike(dy)})};var clipByValueGradConfig={kernelName:ClipByValue,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{clipValueMin,clipValueMax}=attrs;return{x:()=>where(logicalAnd(greaterEqual(x,clipValueMin),lessEqual(x,clipValueMax)),dy,zerosLike(dy))}}};var complexAbsGradConfig={kernelName:ComplexAbs,inputsToSave:["x"],gradFunc:absGradConfig.gradFunc};var concatGradConfig={kernelName:Concat,saveAllInputs:!0,gradFunc:(dy,saved,attrs)=>{let shapes=saved.map(t=>t.shape),{axis}=attrs,$axis=parseAxisParam(axis,saved[0].shape)[0],sizeSplits=shapes.map(s=>s[$axis]);return split(dy,sizeSplits,$axis).map(t=>()=>t)}};var conv2DGradConfig={kernelName:Conv2D,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let[x4D,$filter]=saved,{dilations,strides,pad:pad3,dataFormat}=attrs;return assert(tupleValuesAreOne(dilations),()=>`Error in gradient of conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${dilations}'`),{x:()=>conv2DBackpropInput(x4D.shape,dy,$filter,strides,pad3,dataFormat),filter:()=>conv2DBackpropFilter(x4D,dy,$filter.shape,strides,pad3,dataFormat)}}};var conv2DBackpropInputGradConfig={kernelName:Conv2DBackpropInput,inputsToSave:["dy","filter"],gradFunc:(ddx,saved,attrs)=>{let[dy,filter]=saved,{strides,pad:pad3,dataFormat,dimRoundingMode}=attrs;return{dy:()=>conv2d(ddx,filter,strides,pad3,dataFormat,1,dimRoundingMode),filter:()=>conv2DBackpropFilter(ddx,dy,filter.shape,strides,pad3,dataFormat,dimRoundingMode)}}};function conv3DBackpropFilter_(x,dy,filterShape,strides,pad3){let x5D=x;x.rank===4&&(x5D=reshape(x,[1,x.shape[0],x.shape[1],x.shape[2],x.shape[3]]));let dy5D=dy;dy5D.rank===4&&(dy5D=reshape(dy,[1,dy.shape[0],dy.shape[1],dy.shape[2],dy.shape[3]])),assert(x5D.rank===5,()=>`Error in conv3dDerFilter: input must be rank 5, but got shape ${x5D.shape}.`),assert(dy5D.rank===5,()=>`Error in conv3dDerFilter: dy must be rank 5, but got shape ${dy5D.shape}.`),assert(filterShape.length===5,()=>`Error in conv3dDerFilter: filterShape must be length 5, but got ${filterShape}.`),assert(x5D.shape[4]===filterShape[3],()=>`Error in conv3dDerFilter: depth of input ${x5D.shape[4]}) must match input depth in filter (${filterShape[3]}.`),assert(dy5D.shape[4]===filterShape[4],()=>`Error in conv3dDerFilter: depth of dy (${dy5D.shape[4]}) must match output depth for filter (${filterShape[4]}).`);let inputs={x:x5D,dy:dy5D},attrs={strides,pad:pad3,filterShape};return ENGINE.runKernel(Conv3DBackpropFilterV2,inputs,attrs)}var conv3DBackpropFilter=op({conv3DBackpropFilter_});var conv3DGradConfig={kernelName:Conv3D,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let{dilations,strides,pad:pad3}=attrs;assert(tupleValuesAreOne(dilations),()=>`Error in gradient of conv3D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${dilations}'`);let[x5D,$filter]=saved;return{x:()=>conv3DBackpropInput(x5D.shape,dy,$filter,strides,pad3),filter:()=>conv3DBackpropFilter(x5D,dy,$filter.shape,strides,pad3)}}};var cosGradConfig={kernelName:Cos,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(neg(sin(cast(x,"float32"))),dy)}}};var coshGradConfig={kernelName:Cosh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(sinh(cast(x,"float32")),dy)}}};var cumsumGradConfig={kernelName:Cumsum,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{axis,exclusive,reverse:reverse5}=attrs;return{x:()=>{let permutation=getAxesPermutation([axis],x.rank),out=cumsum(dy,axis,exclusive,!reverse5);return permutation!=null&&(out=transpose(out,permutation)),out}}}};var depthwiseConv2dNativeGradConfig={kernelName:DepthwiseConv2dNative,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let{dilations,strides,pad:pad3,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1]:dilations;assert(tupleValuesAreOne($dilations),()=>`Error in gradient of depthwiseConv2dNative: dilation rates greater than 1 are not yet supported. Got dilations '${$dilations}'`);let[x,filter]=saved;return assert(x.rank===4,()=>`Error in gradient of depthwiseConv2dNative: input must be rank 4, but got rank ${x.rank}.`),assert(filter.rank===4,()=>`Error in gradient of depthwiseConv2dNative: filter must be rank 4, but got rank ${filter.rank}.`),assert(x.shape[3]===filter.shape[2],()=>`Error in gradient of depthwiseConv2d: number of input channels (${x.shape[3]}) must match the inChannels dimension in filter ${filter.shape[2]}.`),assert(eitherStridesOrDilationsAreOne(strides,$dilations),()=>`Error in gradient of depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${$dilations}'.`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`),{x:()=>depthwiseConv2dNativeBackpropInput(x.shape,dy,filter,strides,pad3,dilations,dimRoundingMode),filter:()=>depthwiseConv2dNativeBackpropFilter(x,dy,filter.shape,strides,pad3,dilations,dimRoundingMode)}}};var dilation2dGradConfig={kernelName:Dilation2D,inputsToSave:["x","filter"],gradFunc:(dy,saved,attrs)=>{let[x,filter]=saved,inputInputs={x,filter,dy},filterInputs={x,filter,dy};return{x:()=>ENGINE.runKernel(Dilation2DBackpropInput,inputInputs,attrs),filter:()=>ENGINE.runKernel(Dilation2DBackpropFilter,filterInputs,attrs)}}};var eluGradConfig={kernelName:Elu,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved,inputs={dy,y};return{x:()=>ENGINE.runKernel(EluGrad,inputs)}}};var erfGradConfig={kernelName:Erf,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved,a=mul(exp(neg(square(x))),2/Math.sqrt(Math.PI));return{x:()=>mul(dy,a)}}};var expGradConfig={kernelName:Exp,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved;return{x:()=>mul(dy,y)}}};var expandDimsGradConfig={kernelName:ExpandDims,inputsToSave:["input"],gradFunc:(dy,saved)=>{let[input2]=saved;return{input:()=>reshape(dy,input2.shape)}}};var expm1GradConfig={kernelName:Expm1,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,exp(x))}}};var floorGradConfig={kernelName:Floor,gradFunc:dy=>({x:()=>zerosLike(dy)})};var floorDivGradConfig={kernelName:FloorDiv,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape);return{a:()=>{let res=div(dy,cast(b,"float32")),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),a.shape):res},b:()=>{let res=mul(dy,cast(a,"float32")),reduceAxes=getReductionAxes(b.shape,outShape);reduceAxes.length>0&&(res=reshape(sum2(res,reduceAxes),b.shape));let tmp=square(b);return neg(div(res,cast(tmp,"float32")))}}}};var fusedBatchNormGradConfig={kernelName:FusedBatchNorm,inputsToSave:["x","mean","variance","scale"],gradFunc:(dy,saved,attrs)=>{let{varianceEpsilon}=attrs,[x,mean4,variance,scale2]=saved,scaleValue=scale2==null?scalar(1):scale2,reductionAxes=getReductionAxes(mean4.shape,x.shape),tileShape=[];if(mean4.rank===1){for(let i=0;imean4.rank===1?reshape(mul(mul(dy,tile(reshape(oneOverSqrtVariance,[1,1,1,mean4.shape[0]]),tileShape)),scaleValue),x.shape):reshape(mul(mul(dy,oneOverSqrtVariance),scaleValue),x.shape),mean:()=>{let meanDer=mul(mul(oneOverSqrtVariance,scalar(-1)),dyTimesScaleValue);return mean4.rank===1&&(meanDer=sum2(meanDer,reductionAxes)),reshape(meanDer,mean4.shape)},variance:()=>{let varianceDer=mul(mul(minusHalfRCube,xMinusMean),dyTimesScaleValue);return mean4.rank===1&&(varianceDer=sum2(varianceDer,reductionAxes)),reshape(varianceDer,mean4.shape)},scale:()=>{let xMinusMean2TimesRsqrt=mul(xMinusMean,oneOverSqrtVariance),scaleDer=mul(dy,xMinusMean2TimesRsqrt);return mean4.rank===1&&(scaleDer=sum2(scaleDer,reductionAxes)),reshape(scaleDer,mean4.shape)},offset:()=>{let offsetDer=dy;return mean4.rank===1&&(offsetDer=sum2(offsetDer,reductionAxes)),reshape(offsetDer,mean4.shape)}}}};var gatherGradConfig={kernelName:GatherV2,inputsToSave:["x","indices"],gradFunc:(dy,saved,attrs)=>{let[x,indices]=saved,{axis}=attrs,parsedAxis=parseAxisParam(axis,x.shape)[0];return{x:()=>{let paramsShape=x.shape,indicesSize=indices.size,outerShape=paramsShape.slice(0,parsedAxis),outerDims=outerShape.length,innerShape=paramsShape.slice(axis,paramsShape.length).slice(1),innerDims=innerShape.length,outerAxesIndices=arrayRange(0,outerDims),innerAxesIndices=arrayRange(outerDims+1,outerDims+1+innerDims),valuesShape=arrayConcat([outerShape,[indicesSize],innerShape]),values=reshape(dy,valuesShape),reshapedIndices=reshape(indices,[indicesSize]),transposeDims=arrayConcat([[outerDims],outerAxesIndices,innerAxesIndices]),valuesTranspose=transpose(values,transposeDims),paramsGrad=unsortedSegmentSum(valuesTranspose,reshapedIndices,x.shape[parsedAxis]),invertTransposeDims=getUndoAxesPermutation(transposeDims);return paramsGrad=transpose(paramsGrad,invertTransposeDims),paramsGrad},indices:()=>indices}}};function arrayRange(start,stop){let result=[];for(let i=start;i{let[a,b]=saved;return{a:()=>zerosLike(a),b:()=>zerosLike(b)}}};var identityGradConfig={kernelName:Identity,gradFunc:dy=>({x:()=>cast(dy,"float32")})};var isFiniteGradConfig={kernelName:IsFinite,gradFunc:dy=>({x:()=>zerosLike(dy)})};var isInfGradConfig={kernelName:IsInf,gradFunc:dy=>({x:()=>zerosLike(dy)})};var isNanGradConfig={kernelName:IsNan,gradFunc:dy=>({x:()=>zerosLike(dy)})};var leakyReluGradConfig={kernelName:LeakyRelu,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{alpha}=attrs,mask=greater(x,0);return{x:()=>where(mask,dy,mul(dy,alpha))}}};var log1pGradConfig={kernelName:Log1p,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,add2(x,1))}}};var logGradConfig={kernelName:Log,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,cast(x,"float32"))}}};var logSoftmaxGradConfig={kernelName:LogSoftmax,inputsToSave:[],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[value]=saved,{axis}=attrs;return{logits:()=>{let keepDims=!0,softmax6=exp(value);return sub(dy,mul(sum2(dy,axis,keepDims),softmax6))}}}};function localResponseNormalizationBackprop_(x,y,dy,depthRadius=5,bias=1,alpha=1,beta=.5){let inputs={x,y,dy},attrs={depthRadius,bias,alpha,beta};return ENGINE.runKernel(LRNGrad,inputs,attrs)}var localResponseNormalizationBackprop=op({localResponseNormalizationBackprop_});var lrnGradConfig={kernelName:LRN,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[x,y]=saved,{depthRadius,bias,alpha,beta}=attrs;return{x:()=>localResponseNormalizationBackprop(x,y,dy,depthRadius,bias,alpha,beta)}}};function gradForMinAndMax(dy,y,xOrig,origAxes){return y.rankmul(dy,cast(equal(xOrig,y),dy.dtype))}}var maxGradConfig={kernelName:Max,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let maxAttrs=attrs,{reductionIndices}=maxAttrs,x=saved[0],y=saved[1],origAxes=parseAxisParam(reductionIndices,x.shape),maxGrad=gradForMinAndMax(dy,y,x,origAxes);return{x:()=>maxGrad.x()}}};var maximumGradConfig={kernelName:Maximum,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved;return{a:()=>mul(dy,cast(greaterEqual(a,b),"float32")),b:()=>mul(dy,cast(less(a,b),"float32"))}}};function maxPool3dGrad_(dy,input2,output,filterSize,strides,dilations=[1,1,1],pad3,dimRoundingMode){let $dy=convertToTensor(dy,"dy","maxPool3dGrad"),$input=convertToTensor(input2,"input","maxPool3dGrad"),$output=convertToTensor(output,"output","maxPool3dGrad"),dy5D=$dy,input5D=$input,output5D=$output,reshapedTo5D=!1;$input.rank===4&&(reshapedTo5D=!0,dy5D=reshape($dy,[1,$dy.shape[0],$dy.shape[1],$dy.shape[2],$dy.shape[3]]),input5D=reshape($input,[1,$input.shape[0],$input.shape[1],$input.shape[2],$input.shape[3]]),output5D=reshape($output,[1,$output.shape[0],$output.shape[1],$output.shape[2],$output.shape[3]])),assert(dy5D.rank===5,()=>`Error in maxPool3dGrad: dy must be rank 5 but got rank ${dy5D.rank}.`),assert(input5D.rank===5,()=>`Error in maxPool3dGrad: input must be rank 5 but got rank ${input5D.rank}.`),assert(output5D.rank===5,()=>`Error in maxPool3dGrad: output must be rank 5 but got rank ${output5D.rank}.`),assert(eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool3dGrad: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in maxPool3dGrad: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let inputs={dy:dy5D,input:input5D,output:output5D},attrs={filterSize,strides,dilations,pad:pad3,dimRoundingMode},res=ENGINE.runKernel(MaxPool3DGrad,inputs,attrs);return reshapedTo5D?reshape(res,[res.shape[1],res.shape[2],res.shape[3],res.shape[4]]):res}var maxPool3dGrad=op({maxPool3dGrad_});var maxPool3DGradConfig={kernelName:MaxPool3D,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[x,y]=saved,{filterSize,strides,dilations,pad:pad3,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1,1]:dilations;return{x:()=>maxPool3dGrad(dy,x,y,filterSize,strides,$dilations,pad3,dimRoundingMode)}}};function maxPoolGrad_(dy,input2,output,filterSize,strides,pad3,dimRoundingMode){let $dy=convertToTensor(dy,"dy","maxPoolGrad"),$input=convertToTensor(input2,"input","maxPoolGrad"),$output=convertToTensor(output,"output","maxPoolGrad");assert($input.rank===$dy.rank,()=>`Rank of input (${$input.rank}) does not match rank of dy (${$dy.rank})`),assert($dy.rank===4,()=>`Error in maxPoolGrad: dy must be rank 4 but got rank ${$dy.rank}.`),assert($input.rank===4,()=>`Error in maxPoolGrad: input must be rank 4 but got rank ${$input.rank}.`),dimRoundingMode!=null&&assert(isInt(pad3),()=>`Error in maxPoolGrad: pad must be an integer when using, dimRoundingMode ${dimRoundingMode} but got pad ${pad3}.`);let inputs={dy:$dy,input:$input,output:$output},attrs={filterSize,strides,pad:pad3,dimRoundingMode};return ENGINE.runKernel(MaxPoolGrad,inputs,attrs)}var maxPoolGrad=op({maxPoolGrad_});var maxPoolGradConfig={kernelName:MaxPool,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[x,y]=saved,{filterSize,strides,pad:pad3}=attrs;return{x:()=>maxPoolGrad(dy,x,y,filterSize,strides,pad3)}}};var meanGradConfig={kernelName:Mean,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{axis}=attrs,axes=parseAxisParam(axis,x.shape),reduceShape=computeOutAndReduceShapes(x.shape,axes)[1],reduceSize=sizeFromShape(reduceShape);return{x:()=>{let expandedDyShape=x.shape.slice();axes.forEach(axis2=>{expandedDyShape[axis2]=1});let expandedDy=reshape(dy,expandedDyShape);return div(mul(expandedDy,ones2(x.shape,"float32")),reduceSize)}}}};var minGradConfig={kernelName:Min,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let minAttrs=attrs,{axis}=minAttrs,[x,y]=saved,origAxes=parseAxisParam(axis,x.shape),minGrad=gradForMinAndMax(dy,y,x,origAxes);return{x:()=>minGrad.x()}}};var minimumGradConfig={kernelName:Minimum,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved;return{a:()=>mul(dy,cast(lessEqual(a,b),"float32")),b:()=>mul(dy,cast(greater(a,b),"float32"))}}};var mirrorPadGradConfig={kernelName:MirrorPad,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let x=saved[0],{paddings}=attrs,begin=paddings.map(p2=>p2[0]);return{x:()=>slice(dy,begin,x.shape)}}};var modGradConfig={kernelName:Mod,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape);return{a:()=>{let reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(dy,reduceAxes),a.shape):dy},b:()=>{let res=mul(dy,neg(floor(div(a,b)))),reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),b.shape):res}}}};var multiplyGradConfig={kernelName:Multiply,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape);return{a:()=>{let res=mul(dy,cast(b,"float32")),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),a.shape):res},b:()=>{let res=mul(dy,cast(a,"float32")),reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),b.shape):res}}}};var negGradConfig={kernelName:Neg,gradFunc:dy=>({x:()=>neg(dy)})};var oneHotGradConfig={kernelName:OneHot,inputsToSave:["indices"],gradFunc:(dy,saved)=>{let indices=saved[0];return{indices:()=>zeros(indices.shape,"float32")}}};var onesLikeGradConfig={kernelName:OnesLike,gradFunc:dy=>({x:()=>zerosLike(dy)})};var packGradConfig={kernelName:Pack,saveAllInputs:!0,gradFunc:(dy,saved,attrs)=>{let{axis}=attrs;return unstack(dy,axis).map(t=>()=>t)}};var padV2GradConfig={kernelName:PadV2,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let x=saved[0],{paddings}=attrs,begin=paddings.map(p2=>p2[0]);return{x:()=>slice(dy,begin,x.shape)}}};var powGradConfig={kernelName:Pow,inputsToSave:["a","b"],outputsToSave:[!0],gradFunc:(dy,saved)=>{let[a,b,y]=saved,base2=a,exp4=b,outShape=assertAndGetBroadcastShape(base2.shape,exp4.shape);return{a:()=>{let expFloat=cast(exp4,"float32"),res=mul(dy,mul(expFloat,pow(base2,sub(expFloat,scalar(1))))),reduceAxes=getReductionAxes(base2.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,base2.shape)},b:()=>{let condition=greater(base2,0),logBase=where(condition,log(base2),zerosLike(base2)),res=mul(dy,mul(y,logBase)),reduceAxes=getReductionAxes(exp4.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,exp4.shape)}}}};var preluGradConfig={kernelName:Prelu,inputsToSave:["x","alpha"],gradFunc:(dy,saved)=>{let[x,alpha]=saved,mask=greater(x,0);return{x:()=>where(mask,dy,mul(dy,alpha)),alpha:()=>{let res=where(mask,zerosLike(dy),mul(dy,x)),reduceAxes=getReductionAxes(alpha.shape,dy.shape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,alpha.shape)}}}};var divGradConfig={kernelName:RealDiv,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape);return{a:()=>{let res=div(dy,cast(b,"float32")),reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0?reshape(sum2(res,reduceAxes),a.shape):res},b:()=>{let res=mul(dy,cast(a,"float32")),reduceAxes=getReductionAxes(b.shape,outShape);reduceAxes.length>0&&(res=reshape(sum2(res,reduceAxes),b.shape));let tmp=square(b);return neg(div(res,cast(tmp,"float32")))}}}};var reciprocalGradConfig={kernelName:Reciprocal,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,neg(square(x)))}}};var relu6GradConfig={kernelName:Relu6,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved,mask=mul(lessEqual(x,6),step(x));return{x:()=>mul(dy,cast(mask,"float32"))}}};var reluGradConfig={kernelName:Relu,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,cast(step(x),"float32"))}}};var reshapeGradConfig={kernelName:Reshape,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>reshape(dy,x.shape)}}};var resizeBilinearGradConfig={kernelName:ResizeBilinear,inputsToSave:["images"],gradFunc:(dy,saved,attrs)=>{let[images]=saved,inputs={dy,images};return{images:()=>ENGINE.runKernel(ResizeBilinearGrad,inputs,attrs)}}};var resizeNearestNeighborGradConfig={kernelName:ResizeNearestNeighbor,inputsToSave:["images"],gradFunc:(dy,saved,attrs)=>{let[images]=saved,inputs={dy,images};return{images:()=>ENGINE.runKernel(ResizeNearestNeighborGrad,inputs,attrs)}}};var reverseGradConfig={kernelName:Reverse,gradFunc:(dy,saved,attrs)=>{let{dims}=attrs,axes=parseAxisParam(dims,dy.shape);return{x:()=>reverse(dy,axes)}}};var roundGradConfig={kernelName:Round,gradFunc:dy=>({x:()=>zerosLike(dy)})};var rsqrtGradConfig={kernelName:Rsqrt,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>neg(div(dy,mul(pow(x,1.5),2)))}}};var selectGradConfig={kernelName:Select,inputsToSave:["condition"],gradFunc:(dy,saved)=>{let[condition]=saved;return{condition:()=>cast(zerosLike(condition),"float32"),t:()=>mul(dy,cast(condition,dy.dtype)),e:()=>mul(dy,cast(logicalNot(condition),dy.dtype))}}};var seluGradConfig={kernelName:Selu,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>{let mask=greater(x,scalar(0)),scaleAlpha2=scalar(SELU_SCALEALPHA),scale2=scalar(SELU_SCALE),greaterThanZeroDer=mul(dy,scale2),lessEqualZeroDer=mul(mul(dy,scaleAlpha2),exp(cast(x,"float32")));return where(mask,greaterThanZeroDer,lessEqualZeroDer)}}}};var sigmoidGradConfig={kernelName:Sigmoid,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved;return{x:()=>mul(dy,mul(y,sub(scalar(1),y)))}}};var signGradConfig={kernelName:Sign,gradFunc:dy=>({x:()=>zerosLike(dy)})};var sinGradConfig={kernelName:Sin,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(cos(cast(x,"float32")),dy)}}};var sinhGradConfig={kernelName:Sinh,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(cosh(cast(x,"float32")),dy)}}};var sliceGradConfig={kernelName:Slice,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{begin,size}=attrs,inputShape=x.shape,[begin_,size_]=parseSliceParams(x,begin,size),paddings=[];for(let i=0;ipad(dy,paddings)}}};var softmaxGradConfig={kernelName:Softmax,outputsToSave:[!0],gradFunc:(dy,saved,attrs)=>{let[y]=saved,{dim}=attrs,keepDims=!0,dyTimesY=mul(dy,y);return{logits:()=>sub(dyTimesY,mul(sum2(dyTimesY,[dim],keepDims),y))}}};var softplusGradConfig={kernelName:Softplus,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,sigmoid(x))}}};var spaceToBatchNDGradConfig={kernelName:SpaceToBatchND,gradFunc:(dy,saved,attrs)=>{let{blockShape,paddings}=attrs;return{x:()=>batchToSpaceND(dy,blockShape,paddings)}}};var splitVGradConfig={kernelName:SplitV,gradFunc:(dy,saved,attrs)=>{let{axis}=attrs;return{x:()=>concat(dy,axis)}}};var sqrtGradConfig={kernelName:Sqrt,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,mul(sqrt(cast(x,"float32")),2))}}};var squareGradConfig={kernelName:Square,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>mul(dy,mul(cast(x,"float32"),2))}}};var squaredDifferenceGradConfig={kernelName:SquaredDifference,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,two=scalar(2);return{a:()=>mul(dy,mul(two,sub(a,b))),b:()=>mul(dy,mul(two,sub(b,a)))}}};var stepGradConfig={kernelName:Step,gradFunc:dy=>({x:()=>zerosLike(dy)})};var subGradConfig={kernelName:Sub,inputsToSave:["a","b"],gradFunc:(dy,saved)=>{let[a,b]=saved,outShape=assertAndGetBroadcastShape(a.shape,b.shape);return{a:()=>{let res=dy,reduceAxes=getReductionAxes(a.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(res,a.shape)},b:()=>{let res=dy,reduceAxes=getReductionAxes(b.shape,outShape);return reduceAxes.length>0&&(res=sum2(res,reduceAxes)),reshape(neg(res),b.shape)}}}};var sumGradConfig={kernelName:Sum,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,expandedDyShape=x.shape.slice(),{axis}=attrs;parseAxisParam(axis,x.shape).forEach(axis2=>{expandedDyShape[axis2]=1});let expandedDy=reshape(dy,expandedDyShape),derX=mul(expandedDy,ones2(x.shape,"float32"));return{x:()=>derX}}};var tanGradConfig={kernelName:Tan,inputsToSave:["x"],gradFunc:(dy,saved)=>{let[x]=saved;return{x:()=>div(dy,square(cos(x)))}}};var tanhGradConfig={kernelName:Tanh,outputsToSave:[!0],gradFunc:(dy,saved)=>{let[y]=saved;return{x:()=>mul(sub(scalar(1),square(y)),dy)}}};var tileGradConfig={kernelName:Tile,inputsToSave:["x"],gradFunc:(dy,saved,attrs)=>{let[x]=saved,{reps}=attrs;return{x:()=>{let xGrad=zerosLike(x);if(x.rank===1)for(let i=0;i{let transposeAttrs=attrs,{perm}=transposeAttrs,undoPerm=getUndoAxesPermutation(perm);return{x:()=>transpose(dy,undoPerm)}}};var unpackGradConfig={kernelName:Unpack,gradFunc:(dy,saved,attrs)=>{let unpackAttrs=attrs,{axis}=unpackAttrs;return{value:()=>stack(dy,axis)}}};var unsortedSegmentSumGradConfig={kernelName:UnsortedSegmentSum,inputsToSave:["segmentIds"],gradFunc:(dy,saved)=>{let[segmentIds]=saved;return{x:()=>gatherDropNegatives(dy,segmentIds)}}};function gatherDropNegatives(x,indices){let zeroClippedIndices=maximum(indices,zerosLike(indices)),gathered=gather(x,zeroClippedIndices),isPositive=greaterEqual(indices,scalar(0,"int32")),numIters=gathered.rank-isPositive.rank;for(let i=0;i({x:()=>zerosLike(dy)})};var gradConfigs=[absGradConfig,acosGradConfig,acoshGradConfig,addGradConfig,addNGradConfig,argMaxGradConfig,argMinGradConfig,asinGradConfig,asinhGradConfig,atan2GradConfig,atanGradConfig,atanhGradConfig,avgPool3DGradConfig,avgPoolGradConfig,batchMatMulGradConfig,batchToSpaceNDGradConfig,broadcastToGradConfig,castGradConfig,ceilGradConfig,clipByValueGradConfig,complexAbsGradConfig,concatGradConfig,conv2DBackpropInputGradConfig,conv2DGradConfig,conv3DGradConfig,cosGradConfig,coshGradConfig,cumsumGradConfig,depthwiseConv2dNativeGradConfig,dilation2dGradConfig,divGradConfig,eluGradConfig,erfGradConfig,expGradConfig,expandDimsGradConfig,expm1GradConfig,floorDivGradConfig,floorGradConfig,fusedBatchNormGradConfig,gatherGradConfig,greaterEqualGradConfig,identityGradConfig,isFiniteGradConfig,isInfGradConfig,isNanGradConfig,leakyReluGradConfig,log1pGradConfig,logGradConfig,logSoftmaxGradConfig,lrnGradConfig,maxGradConfig,maxGradConfig,maximumGradConfig,maxPool3DGradConfig,maxPoolGradConfig,meanGradConfig,minGradConfig,minimumGradConfig,mirrorPadGradConfig,modGradConfig,multiplyGradConfig,negGradConfig,oneHotGradConfig,onesLikeGradConfig,packGradConfig,padV2GradConfig,padV2GradConfig,powGradConfig,preluGradConfig,reciprocalGradConfig,relu6GradConfig,reluGradConfig,reshapeGradConfig,resizeBilinearGradConfig,resizeNearestNeighborGradConfig,reverseGradConfig,roundGradConfig,rsqrtGradConfig,selectGradConfig,seluGradConfig,sigmoidGradConfig,signGradConfig,sinGradConfig,sinhGradConfig,sliceGradConfig,softmaxGradConfig,softplusGradConfig,spaceToBatchNDGradConfig,spaceToBatchNDGradConfig,splitVGradConfig,splitVGradConfig,sqrtGradConfig,squaredDifferenceGradConfig,squareGradConfig,stepGradConfig,subGradConfig,sumGradConfig,tanGradConfig,tanhGradConfig,tileGradConfig,transposeGradConfig,unpackGradConfig,unsortedSegmentSumGradConfig,zerosLikeGradConfig];for(let gradientConfig of gradConfigs)registerGradient(gradientConfig);Tensor.prototype.abs=function(){return this.throwIfDisposed(),abs(this)};Tensor.prototype.acos=function(){return this.throwIfDisposed(),acos(this)};Tensor.prototype.acosh=function(){return this.throwIfDisposed(),acosh(this)};Tensor.prototype.addStrict=function(x){return this.throwIfDisposed(),addStrict(this,x)};Tensor.prototype.add=function(b){return this.throwIfDisposed(),add2(this,b)};Tensor.prototype.all=function(axis,keepDims){return this.throwIfDisposed(),all(this,axis,keepDims)};Tensor.prototype.any=function(axis,keepDims){return this.throwIfDisposed(),any(this,axis,keepDims)};Tensor.prototype.argMax=function(axis){return this.throwIfDisposed(),argMax(this,axis)};Tensor.prototype.argMin=function(axis){return this.throwIfDisposed(),argMin(this,axis)};Tensor.prototype.asScalar=function(){return this.throwIfDisposed(),assert(this.size===1,()=>"The array must have only 1 element."),reshape(this,[])};Tensor.prototype.asType=function(dtype){return this.throwIfDisposed(),cast(this,dtype)};Tensor.prototype.as1D=function(){return this.throwIfDisposed(),reshape(this,[this.size])};Tensor.prototype.as2D=function(rows,columns){return this.throwIfDisposed(),reshape(this,[rows,columns])};Tensor.prototype.as3D=function(rows,columns,depth){return this.throwIfDisposed(),reshape(this,[rows,columns,depth])};Tensor.prototype.as4D=function(rows,columns,depth,depth2){return this.throwIfDisposed(),reshape(this,[rows,columns,depth,depth2])};Tensor.prototype.as5D=function(rows,columns,depth,depth2,depth3){return this.throwIfDisposed(),reshape(this,[rows,columns,depth,depth2,depth3])};Tensor.prototype.asin=function(){return this.throwIfDisposed(),asin(this)};Tensor.prototype.asinh=function(){return this.throwIfDisposed(),asinh(this)};Tensor.prototype.atan=function(){return this.throwIfDisposed(),atan(this)};Tensor.prototype.atan2=function(b){return this.throwIfDisposed(),atan2(this,b)};Tensor.prototype.atanh=function(){return this.throwIfDisposed(),atanh(this)};Tensor.prototype.avgPool=function(filterSize,strides,pad3,dimRoundingMode){return this.throwIfDisposed(),avgPool(this,filterSize,strides,pad3,dimRoundingMode)};Tensor.prototype.batchToSpaceND=function(blockShape,crops){return this.throwIfDisposed(),batchToSpaceND(this,blockShape,crops)};Tensor.prototype.batchNorm=function(mean4,variance,offset,scale2,varianceEpsilon){return this.throwIfDisposed(),batchNorm(this,mean4,variance,offset,scale2,varianceEpsilon)};Tensor.prototype.broadcastTo=function(shape){return this.throwIfDisposed(),broadcastTo(this,shape)};Tensor.prototype.cast=function(dtype){return this.throwIfDisposed(),cast(this,dtype)};Tensor.prototype.ceil=function(){return this.throwIfDisposed(),ceil(this)};Tensor.prototype.clipByValue=function(min6,max6){return this.throwIfDisposed(),clipByValue(this,min6,max6)};Tensor.prototype.concat=function(x,axis){return this.throwIfDisposed(),x instanceof Tensor&&(x=[x]),concat([this,...x],axis)};Tensor.prototype.conv1d=function(filter,stride,pad3,dataFormat,dilation,dimRoundingMode){return this.throwIfDisposed(),conv1d(this,filter,stride,pad3,dataFormat,dilation,dimRoundingMode)};Tensor.prototype.conv2dTranspose=function(filter,outputShape,strides,pad3,dimRoundingMode){return this.throwIfDisposed(),conv2dTranspose(this,filter,outputShape,strides,pad3,dimRoundingMode)};Tensor.prototype.conv2d=function(filter,strides,pad3,dataFormat,dilations,dimRoundingMode){return this.throwIfDisposed(),conv2d(this,filter,strides,pad3,dataFormat,dilations,dimRoundingMode)};Tensor.prototype.cos=function(){return this.throwIfDisposed(),cos(this)};Tensor.prototype.cosh=function(){return this.throwIfDisposed(),cosh(this)};Tensor.prototype.cumsum=function(axis,exclusive,reverse5){return this.throwIfDisposed(),cumsum(this,axis,exclusive,reverse5)};Tensor.prototype.depthToSpace=function(blockSize,dataFormat){return this.throwIfDisposed(),depthToSpace(this,blockSize,dataFormat)};Tensor.prototype.depthwiseConv2D=function(filter,strides,pad3,dataFormat,dilations,dimRoundingMode){return deprecationWarn("depthwiseConv2D is deprecated, use depthwiseConv2d instead"),this.throwIfDisposed(),depthwiseConv2d(this,filter,strides,pad3,dataFormat,dilations,dimRoundingMode)};Tensor.prototype.depthwiseConv2d=function(filter,strides,pad3,dataFormat,dilations,dimRoundingMode){return this.throwIfDisposed(),depthwiseConv2d(this,filter,strides,pad3,dataFormat,dilations,dimRoundingMode)};Tensor.prototype.dilation2d=function(filter,strides,pad3,dilations,dataFormat){return this.throwIfDisposed(),dilation2d(this,filter,strides,pad3,dilations,dataFormat)};Tensor.prototype.divNoNan=function(b){return this.throwIfDisposed(),divNoNan(this,b)};Tensor.prototype.divStrict=function(x){return this.throwIfDisposed(),divStrict(this,x)};Tensor.prototype.div=function(b){return this.throwIfDisposed(),div(this,b)};Tensor.prototype.dot=function(b){return this.throwIfDisposed(),dot(this,b)};Tensor.prototype.elu=function(){return this.throwIfDisposed(),elu(this)};Tensor.prototype.equalStrict=function(x){return this.throwIfDisposed(),equalStrict(this,x)};Tensor.prototype.equal=function(b){return this.throwIfDisposed(),equal(this,b)};Tensor.prototype.erf=function(){return this.throwIfDisposed(),erf(this)};Tensor.prototype.exp=function(){return this.throwIfDisposed(),exp(this)};Tensor.prototype.expandDims=function(axis){return this.throwIfDisposed(),expandDims(this,axis)};Tensor.prototype.expm1=function(){return this.throwIfDisposed(),expm1(this)};Tensor.prototype.fft=function(){return this.throwIfDisposed(),fft(this)};Tensor.prototype.flatten=function(){return this.throwIfDisposed(),reshape(this,[this.size])};Tensor.prototype.floor=function(){return this.throwIfDisposed(),floor(this)};Tensor.prototype.floorDiv=function(b){return this.throwIfDisposed(),floorDiv(this,b)};Tensor.prototype.gather=function(indices,axis){return this.throwIfDisposed(),gather(this,indices,axis)};Tensor.prototype.greaterEqualStrict=function(x){return this.throwIfDisposed(),greaterEqualStrict(this,x)};Tensor.prototype.greaterEqual=function(b){return this.throwIfDisposed(),greaterEqual(this,b)};Tensor.prototype.greaterStrict=function(x){return this.throwIfDisposed(),greaterStrict(this,x)};Tensor.prototype.greater=function(b){return this.throwIfDisposed(),greater(this,b)};Tensor.prototype.ifft=function(){return this.throwIfDisposed(),ifft(this)};Tensor.prototype.irfft=function(){return this.throwIfDisposed(),irfft(this)};Tensor.prototype.isFinite=function(){return this.throwIfDisposed(),isFinite2(this)};Tensor.prototype.isInf=function(){return this.throwIfDisposed(),isInf(this)};Tensor.prototype.isNaN=function(){return this.throwIfDisposed(),isNaN2(this)};Tensor.prototype.leakyRelu=function(alpha){return this.throwIfDisposed(),leakyRelu(this,alpha)};Tensor.prototype.lessEqualStrict=function(x){return this.throwIfDisposed(),lessEqualStrict(this,x)};Tensor.prototype.lessEqual=function(b){return this.throwIfDisposed(),lessEqual(this,b)};Tensor.prototype.lessStrict=function(x){return this.throwIfDisposed(),lessStrict(this,x)};Tensor.prototype.less=function(b){return this.throwIfDisposed(),less(this,b)};Tensor.prototype.localResponseNormalization=function(depthRadius,bias,alpha,beta){return this.throwIfDisposed(),localResponseNormalization(this,depthRadius,bias,alpha,beta)};Tensor.prototype.logSigmoid=function(){return this.throwIfDisposed(),logSigmoid(this)};Tensor.prototype.logSoftmax=function(axis){return this.throwIfDisposed(),logSoftmax(this,axis)};Tensor.prototype.logSumExp=function(axis,keepDims){return this.throwIfDisposed(),logSumExp(this,axis,keepDims)};Tensor.prototype.log=function(){return this.throwIfDisposed(),log(this)};Tensor.prototype.log1p=function(){return this.throwIfDisposed(),log1p(this)};Tensor.prototype.logicalAnd=function(b){return this.throwIfDisposed(),logicalAnd(this,b)};Tensor.prototype.logicalNot=function(){return this.throwIfDisposed(),logicalNot(this)};Tensor.prototype.logicalOr=function(b){return this.throwIfDisposed(),logicalOr(this,b)};Tensor.prototype.logicalXor=function(b){return this.throwIfDisposed(),logicalXor(this,b)};Tensor.prototype.matMul=function(b,transposeA,transposeB){return this.throwIfDisposed(),matMul(this,b,transposeA,transposeB)};Tensor.prototype.maxPool=function(filterSize,strides,pad3,dimRoundingMode){return this.throwIfDisposed(),maxPool(this,filterSize,strides,pad3,dimRoundingMode)};Tensor.prototype.max=function(axis,keepDims){return this.throwIfDisposed(),max(this,axis,keepDims)};Tensor.prototype.maximumStrict=function(x){return this.throwIfDisposed(),maximumStrict(this,x)};Tensor.prototype.maximum=function(b){return this.throwIfDisposed(),maximum(this,b)};Tensor.prototype.mean=function(axis,keepDims){return this.throwIfDisposed(),mean(this,axis,keepDims)};Tensor.prototype.min=function(axis,keepDims){return this.throwIfDisposed(),min(this,axis,keepDims)};Tensor.prototype.minimumStrict=function(x){return this.throwIfDisposed(),minimumStrict(this,x)};Tensor.prototype.minimum=function(b){return this.throwIfDisposed(),minimum(this,b)};Tensor.prototype.mirrorPad=function(paddings,mode){return this.throwIfDisposed(),mirrorPad(this,paddings,mode)};Tensor.prototype.modStrict=function(x){return this.throwIfDisposed(),modStrict(this,x)};Tensor.prototype.mod=function(b){return this.throwIfDisposed(),mod(this,b)};Tensor.prototype.mulStrict=function(x){return this.throwIfDisposed(),mulStrict(this,x)};Tensor.prototype.mul=function(b){return this.throwIfDisposed(),mul(this,b)};Tensor.prototype.neg=function(){return this.throwIfDisposed(),neg(this)};Tensor.prototype.norm=function(ord,axis,keepDims){return this.throwIfDisposed(),norm(this,ord,axis,keepDims)};Tensor.prototype.notEqualStrict=function(x){return this.throwIfDisposed(),notEqualStrict(this,x)};Tensor.prototype.notEqual=function(b){return this.throwIfDisposed(),notEqual(this,b)};Tensor.prototype.oneHot=function(depth,onValue=1,offValue=0){return this.throwIfDisposed(),oneHot(this,depth,onValue,offValue)};Tensor.prototype.onesLike=function(){return this.throwIfDisposed(),onesLike(this)};Tensor.prototype.pad=function(paddings,constantValue){return this.throwIfDisposed(),pad(this,paddings,constantValue)};Tensor.prototype.pool=function(windowShape,poolingType,padding,dilationRate,strides){return this.throwIfDisposed(),pool(this,windowShape,poolingType,padding,dilationRate,strides)};Tensor.prototype.powStrict=function(exp4){return this.throwIfDisposed(),powStrict(this,exp4)};Tensor.prototype.pow=function(exp4){return this.throwIfDisposed(),pow(this,exp4)};Tensor.prototype.prelu=function(alpha){return this.throwIfDisposed(),prelu(this,alpha)};Tensor.prototype.prod=function(axis,keepDims){return this.throwIfDisposed(),prod(this,axis,keepDims)};Tensor.prototype.reciprocal=function(){return this.throwIfDisposed(),reciprocal(this)};Tensor.prototype.relu=function(){return this.throwIfDisposed(),relu(this)};Tensor.prototype.relu6=function(){return this.throwIfDisposed(),relu6(this)};Tensor.prototype.reshapeAs=function(x){return this.throwIfDisposed(),reshape(this,x.shape)};Tensor.prototype.reshape=function(shape){return this.throwIfDisposed(),reshape(this,shape)};Tensor.prototype.resizeBilinear=function(newShape2D,alignCorners,halfPixelCenters){return this.throwIfDisposed(),resizeBilinear(this,newShape2D,alignCorners,halfPixelCenters)};Tensor.prototype.resizeNearestNeighbor=function(newShape2D,alignCorners,halfFloatCenters){return this.throwIfDisposed(),resizeNearestNeighbor(this,newShape2D,alignCorners,halfFloatCenters)};Tensor.prototype.reverse=function(axis){return this.throwIfDisposed(),reverse(this,axis)};Tensor.prototype.rfft=function(){return this.throwIfDisposed(),rfft(this)};Tensor.prototype.round=function(){return this.throwIfDisposed(),round2(this)};Tensor.prototype.rsqrt=function(){return this.throwIfDisposed(),rsqrt(this)};Tensor.prototype.selu=function(){return this.throwIfDisposed(),selu(this)};Tensor.prototype.separableConv2d=function(depthwiseFilter,pointwiseFilter,strides,pad3,dilation,dataFormat){return this.throwIfDisposed(),separableConv2d(this,depthwiseFilter,pointwiseFilter,strides,pad3,dilation,dataFormat)};Tensor.prototype.sigmoid=function(){return this.throwIfDisposed(),sigmoid(this)};Tensor.prototype.sign=function(){return this.throwIfDisposed(),sign(this)};Tensor.prototype.sin=function(){return this.throwIfDisposed(),sin(this)};Tensor.prototype.sinh=function(){return this.throwIfDisposed(),sinh(this)};Tensor.prototype.slice=function(begin,size){return this.throwIfDisposed(),slice(this,begin,size)};Tensor.prototype.softmax=function(dim){return this.throwIfDisposed(),softmax(this,dim)};Tensor.prototype.softplus=function(){return this.throwIfDisposed(),softplus(this)};Tensor.prototype.spaceToBatchND=function(blockShape,paddings){return this.throwIfDisposed(),spaceToBatchND(this,blockShape,paddings)};Tensor.prototype.split=function(numOrSizeSplits,axis){return this.throwIfDisposed(),split(this,numOrSizeSplits,axis)};Tensor.prototype.sqrt=function(){return this.throwIfDisposed(),sqrt(this)};Tensor.prototype.square=function(){return this.throwIfDisposed(),square(this)};Tensor.prototype.squaredDifference=function(b){return this.throwIfDisposed(),squaredDifference(this,b)};Tensor.prototype.squaredDifferenceStrict=function(x){return this.throwIfDisposed(),squaredDifferenceStrict(this,x)};Tensor.prototype.squeeze=function(axis){return this.throwIfDisposed(),squeeze(this,axis)};Tensor.prototype.stack=function(x,axis){this.throwIfDisposed();let tensorsToBeStacked=x instanceof Tensor?[this,x]:[this,...x];return stack(tensorsToBeStacked,axis)};Tensor.prototype.step=function(alpha){return this.throwIfDisposed(),step(this,alpha)};Tensor.prototype.stridedSlice=function(begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask){return this.throwIfDisposed(),stridedSlice(this,begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask)};Tensor.prototype.subStrict=function(x){return this.throwIfDisposed(),subStrict(this,x)};Tensor.prototype.sub=function(b){return this.throwIfDisposed(),sub(this,b)};Tensor.prototype.sum=function(axis,keepDims){return this.throwIfDisposed(),sum2(this,axis,keepDims)};Tensor.prototype.tan=function(){return this.throwIfDisposed(),tan(this)};Tensor.prototype.tanh=function(){return this.throwIfDisposed(),tanh2(this)};Tensor.prototype.tile=function(reps){return this.throwIfDisposed(),tile(this,reps)};Tensor.prototype.toBool=function(){return this.throwIfDisposed(),cast(this,"bool")};Tensor.prototype.toFloat=function(){return this.throwIfDisposed(),cast(this,"float32")};Tensor.prototype.toInt=function(){return this.throwIfDisposed(),cast(this,"int32")};Tensor.prototype.topk=function(k,sorted){return this.throwIfDisposed(),topk(this,k,sorted)};Tensor.prototype.transpose=function(perm){return this.throwIfDisposed(),transpose(this,perm)};Tensor.prototype.unique=function(axis){return this.throwIfDisposed(),unique(this,axis)};Tensor.prototype.unsortedSegmentSum=function(segmentIds,numSegments){return this.throwIfDisposed(),unsortedSegmentSum(this,segmentIds,numSegments)};Tensor.prototype.unstack=function(axis){return this.throwIfDisposed(),unstack(this,axis)};Tensor.prototype.where=function(condition,x){return this.throwIfDisposed(),where(condition,this,x)};Tensor.prototype.zerosLike=function(){return this.throwIfDisposed(),zerosLike(this)};var exports_constraints_exports={};__export(exports_constraints_exports,{maxNorm:()=>maxNorm,minMaxNorm:()=>minMaxNorm,nonNeg:()=>nonNeg,unitNorm:()=>unitNorm});var _epsilon;function epsilon(){return _epsilon==null&&(_epsilon=backend().epsilon()),_epsilon}function imageDataFormat(){return"channelsLast"}var AttributeError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,AttributeError.prototype)}},RuntimeError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,RuntimeError.prototype)}},ValueError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,ValueError.prototype)}},NotImplementedError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,NotImplementedError.prototype)}},AssertionError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,AssertionError.prototype)}},IndexError=class extends Error{constructor(message){super(message);Object.setPrototypeOf(this,IndexError.prototype)}};function pyListRepeat(value,numValues){if(Array.isArray(value)){let newArray=[];for(let i=0;ip1.toUpperCase())}var _GLOBAL_CUSTOM_OBJECTS={};function serializeKerasObject(instance){if(instance==null)return null;let dict={};return dict.className=instance.getClassName(),dict.config=instance.getConfig(),dict}function convertNDArrayScalarsInConfig(config){if(!(config==null||typeof config!="object"))if(Array.isArray(config))config.forEach(configItem=>convertNDArrayScalarsInConfig(configItem));else{let fields=Object.keys(config);for(let field of fields){let value=config[field];value!=null&&typeof value=="object"&&(!Array.isArray(value)&&value.type==="ndarray"&&typeof value.value=="number"?config[field]=value.value:convertNDArrayScalarsInConfig(value))}}}function deserializeKerasObject(identifier,moduleObjects={},customObjects={},printableModuleName="object",fastWeightInit=!1){if(typeof identifier=="string"){let functionName=identifier,fn;if(functionName in customObjects)fn=customObjects[functionName];else if(functionName in _GLOBAL_CUSTOM_OBJECTS)fn=_GLOBAL_CUSTOM_OBJECTS[functionName];else if(fn=moduleObjects[functionName],fn==null)throw new ValueError(`Unknown ${printableModuleName}: ${identifier}. This may be due to one of the following reasons: -1. The ${printableModuleName} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code. -2. The custom ${printableModuleName} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);return fn}else{let config=identifier;if(config.className==null||config.config==null)throw new ValueError(`${printableModuleName}: Improper config format: ${JSON.stringify(config)}. -'className' and 'config' must set.`);let className=config.className,cls,fromConfig;if(className in customObjects?[cls,fromConfig]=customObjects[className]:className in _GLOBAL_CUSTOM_OBJECTS?[cls,fromConfig]=_GLOBAL_CUSTOM_OBJECTS.className:className in moduleObjects&&([cls,fromConfig]=moduleObjects[className]),cls==null)throw new ValueError(`Unknown ${printableModuleName}: ${className}. This may be due to one of the following reasons: -1. The ${printableModuleName} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code. -2. The custom ${printableModuleName} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);if(fromConfig!=null){let customObjectsCombined={};for(let key of Object.keys(_GLOBAL_CUSTOM_OBJECTS))customObjectsCombined[key]=_GLOBAL_CUSTOM_OBJECTS[key];for(let key of Object.keys(customObjects))customObjectsCombined[key]=customObjects[key];let nestedConfig=config.config;nestedConfig.customObjects=customObjectsCombined;let backupCustomObjects=Object.assign({},_GLOBAL_CUSTOM_OBJECTS);for(let key of Object.keys(customObjects))_GLOBAL_CUSTOM_OBJECTS[key]=customObjects[key];convertNDArrayScalarsInConfig(config.config);let returnObj=fromConfig(cls,config.config,customObjects,fastWeightInit);return _GLOBAL_CUSTOM_OBJECTS=Object.assign({},backupCustomObjects),returnObj}else{let backupCustomObjects=Object.assign({},_GLOBAL_CUSTOM_OBJECTS);for(let key of Object.keys(customObjects))_GLOBAL_CUSTOM_OBJECTS[key]=customObjects[key];let returnObj=new cls(config.config);return _GLOBAL_CUSTOM_OBJECTS=Object.assign({},backupCustomObjects),returnObj}}}function numberCompare(a,b){return ab?1:0}function reverseNumberCompare(a,b){return-1*numberCompare(a,b)}function unique2(xs){if(xs==null)return xs;let out=[];for(let x of xs)out.indexOf(x)===-1&&out.push(x);return out}function isObjectEmpty(obj){if(obj==null)throw new ValueError(`Invalid value in obj: ${JSON.stringify(obj)}`);for(let key in obj)if(obj.hasOwnProperty(key))return!1;return!0}function checkStringTypeUnionValue(values,label,value){if(value!=null&&values.indexOf(value)<0)throw new ValueError(`${value} is not a valid ${label}. Valid values are ${values} or null/undefined.`)}function checkArrayTypeAndLength(x,expectedType,minLength=0,maxLength=Infinity){return assert2(minLength>=0),assert2(maxLength>=minLength),Array.isArray(x)&&x.length>=minLength&&x.length<=maxLength&&x.every(e=>typeof e===expectedType)}function assertPositiveInteger(value,name){Array.isArray(value)?(util_exports.assert(value.length>0,()=>`${name} is unexpectedly an empty array.`),value.forEach((v,i)=>assertPositiveInteger(v,`element ${i+1} of ${name}`))):util_exports.assert(Number.isInteger(value)&&value>0,()=>`Expected ${name} to be a positive integer, but got ${formatAsFriendlyString(value)}.`)}function formatAsFriendlyString(value){return value===null?"null":Array.isArray(value)?"["+value.map(v=>formatAsFriendlyString(v)).join(",")+"]":typeof value=="string"?`"${value}"`:`${value}`}function debounce(f,waitMs){let lastTime=util_exports.now(),lastResult;return(...args)=>{let now2=util_exports.now();return now2-lastTimesqrt(sum2(mul(w,w),axis,!0)))}var Constraint=class extends serialization_exports.Serializable{getConfig(){return{}}},MaxNorm=class extends Constraint{constructor(args){super();this.defaultMaxValue=2,this.defaultAxis=0,this.maxValue=args.maxValue!=null?args.maxValue:this.defaultMaxValue,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>{let norms=calcL2Norms(w,this.axis),desired=clipByValue(norms,0,this.maxValue);return mul(w,div(desired,add2(epsilon(),norms)))})}getConfig(){return{maxValue:this.maxValue,axis:this.axis}}};MaxNorm.className="MaxNorm";serialization_exports.registerClass(MaxNorm);var UnitNorm=class extends Constraint{constructor(args){super();this.defaultAxis=0,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>div(w,add2(epsilon(),calcL2Norms(w,this.axis))))}getConfig(){return{axis:this.axis}}};UnitNorm.className="UnitNorm";serialization_exports.registerClass(UnitNorm);var NonNeg=class extends Constraint{apply(w){return relu(w)}};NonNeg.className="NonNeg";serialization_exports.registerClass(NonNeg);var MinMaxNorm=class extends Constraint{constructor(args){super();this.defaultMinValue=0,this.defaultMaxValue=1,this.defaultRate=1,this.defaultAxis=0,this.minValue=args.minValue!=null?args.minValue:this.defaultMinValue,this.maxValue=args.maxValue!=null?args.maxValue:this.defaultMaxValue,this.rate=args.rate!=null?args.rate:this.defaultRate,this.axis=args.axis!=null?args.axis:this.defaultAxis}apply(w){return tidy(()=>{let norms=calcL2Norms(w,this.axis),desired=add2(mul(this.rate,clipByValue(norms,this.minValue,this.maxValue)),mul(1-this.rate,norms));return mul(w,div(desired,add2(epsilon(),norms)))})}getConfig(){return{minValue:this.minValue,maxValue:this.maxValue,rate:this.rate,axis:this.axis}}};MinMaxNorm.className="MinMaxNorm";serialization_exports.registerClass(MinMaxNorm);var CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP={maxNorm:"MaxNorm",minMaxNorm:"MinMaxNorm",nonNeg:"NonNeg",unitNorm:"UnitNorm"};function serializeConstraint(constraint){return serializeKerasObject(constraint)}function deserializeConstraint(config,customObjects={}){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"constraint")}function getConstraint(identifier){if(identifier==null)return null;if(typeof identifier=="string"){let config={className:identifier in CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP?CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier,config:{}};return deserializeConstraint(config)}else return identifier instanceof Constraint?identifier:deserializeConstraint(identifier)}function maxNorm(args){return new MaxNorm(args)}function unitNorm(args){return new UnitNorm(args)}function nonNeg(){return new NonNeg}function minMaxNorm(config){return new MinMaxNorm(config)}var exports_initializers_exports={};__export(exports_initializers_exports,{constant:()=>constant,glorotNormal:()=>glorotNormal,glorotUniform:()=>glorotUniform,heNormal:()=>heNormal,heUniform:()=>heUniform,identity:()=>identity,leCunNormal:()=>leCunNormal,leCunUniform:()=>leCunUniform,ones:()=>ones3,orthogonal:()=>orthogonal,randomNormal:()=>randomNormal3,randomUniform:()=>randomUniform2,truncatedNormal:()=>truncatedNormal2,varianceScaling:()=>varianceScaling,zeros:()=>zeros2});var VALID_DATA_FORMAT_VALUES=["channelsFirst","channelsLast"],VALID_INTERPOLATION_FORMAT_VALUES=["nearest","bilinear"],VALID_PADDING_MODE_VALUES=["valid","same","causal"],VALID_POOL_MODE_VALUES=["max","avg"],VALID_BIDIRECTIONAL_MERGE_MODES=["sum","mul","concat","ave"];var nameMap=new Map;function checkDataFormat(value){checkStringTypeUnionValue(VALID_DATA_FORMAT_VALUES,"DataFormat",value)}function checkInterpolationFormat(value){checkStringTypeUnionValue(VALID_INTERPOLATION_FORMAT_VALUES,"InterpolationFormat",value)}function checkPaddingMode(value){checkStringTypeUnionValue(VALID_PADDING_MODE_VALUES,"PaddingMode",value)}function checkPoolMode(value){checkStringTypeUnionValue(VALID_POOL_MODE_VALUES,"PoolMode",value)}var _nameScopeStack=[],_nameScopeDivider="/";function nameScope(name,fn){_nameScopeStack.push(name);try{let val=fn();return _nameScopeStack.pop(),val}catch(e){throw _nameScopeStack.pop(),e}}function currentNameScopePrefix(){return _nameScopeStack.length===0?"":_nameScopeStack.join(_nameScopeDivider)+_nameScopeDivider}function getScopedTensorName(tensorName){if(!isValidTensorName(tensorName))throw new Error("Not a valid tensor name: '"+tensorName+"'");return currentNameScopePrefix()+tensorName}function getUniqueTensorName(scopedName){if(!isValidTensorName(scopedName))throw new Error("Not a valid tensor name: '"+scopedName+"'");nameMap.has(scopedName)||nameMap.set(scopedName,0);let index=nameMap.get(scopedName);if(nameMap.set(scopedName,nameMap.get(scopedName)+1),index>0){let result=`${scopedName}_${index}`;return nameMap.set(result,1),result}else return scopedName}var tensorNameRegex=new RegExp(/^[A-Za-z0-9][-A-Za-z0-9\._\/]*$/);function isValidTensorName(name){return!!name.match(tensorNameRegex)}function isInteger(x){return x===parseInt(x.toString(),10)}function arrayProd(array2,begin,end){begin==null&&(begin=0),end==null&&(end=array2.length);let prod5=1;for(let i=begin;i{if(x.shape.length!==2)throw new ValueError(`repeat() expects a rank-2 tensor, but received a rank-${x.shape.length} tensor.`);let y=expandDims2(x,1);return tile2(y,[1,n,1])})}function flatten2(x){let newShape=[arrayProd(x.shape)];return x.reshape(newShape)}function batchFlatten(x){if(x.rank<=1)throw new ValueError(`batchFlatten requires a minimum rank of 2. Got rank: ${x.rank}.`);let newShape=[x.shape[0],arrayProd(x.shape,1)];return x.reshape(newShape)}function sliceAlongFirstAxis(array2,start,size){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:return slice2d(array2,[start,0],[size,array2.shape[1]]);case 3:return slice3d(array2,[start,0,0],[size,array2.shape[1],array2.shape[2]]);case 4:return slice4d(array2,[start,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3]]);case 5:return slice(array2,[start,0,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3],array2.shape[4]]);case 6:return slice(array2,[start,0,0,0,0,0],[size,array2.shape[1],array2.shape[2],array2.shape[3],array2.shape[4],array2.shape[5]]);default:throw new ValueError(`sliceAlongFirstAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function sliceAlongLastAxis(array2,start,size){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:return slice2d(array2,[0,start],[array2.shape[0],size]);case 3:return slice3d(array2,[0,0,start],[array2.shape[0],array2.shape[1],size]);case 4:return slice4d(array2,[0,0,0,start],[array2.shape[0],array2.shape[1],array2.shape[2],size]);default:throw new ValueError(`sliceAlongLastAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function sliceAlongAxis(array2,start,size,axis){return tidy(()=>{switch(array2.rank){case 1:return slice1d(array2,start,size);case 2:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}case 3:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return slice3d(array2,[0,start,0],[array2.shape[0],size,array2.shape[2]]);case 3:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}case 4:switch(axis){case 1:return sliceAlongFirstAxis(array2,start,size);case 2:return slice4d(array2,[0,start,0,0],[array2.shape[0],size,array2.shape[2],array2.shape[3]]);case 3:return slice4d(array2,[0,0,start,0],[array2.shape[0],array2.shape[1],size,array2.shape[3]]);case 4:return sliceAlongLastAxis(array2,start,size);default:throw new ValueError(`The axis is not within the rank of the tensor ${axis}`)}default:throw new ValueError(`sliceAlongLastAxis() received an unsupported tensor rank: ${array2.rank}`)}})}function concatenate(tensors,axis=-1){let rank;return axis<0&&(rank=tensors[0].rank,rank!==0?axis=rank:axis=0),axis===tensors[0].rank&&(axis=-1),concat(tensors,axis)}function concatAlongFirstAxis(a,b){switch(a.rank){case 1:return concat1d([a,b]);case 2:return concat2d([a,b],0);case 3:return concat3d([a,b],0);case 4:return concat4d([a,b],0);default:throw new ValueError(`concatAlongFirstAxis() received an unsupported tensor rank: ${a.rank}`)}}function tile2(x,n){if(Array.isArray(n)||(n=[n]),x.rank!==n.length)throw new ValueError(`The length of input n (${n.length}) does not match the number of dimensions in input x (${x.rank})`);return tile(x,n)}function randomNormal2(shape,mean4=0,stddev=1,dtype,seed){return randomNormal(shape,mean4,stddev,dtype,seed)}function dot2(a,b,activation2,bias){if(a.rank<2||b.rank<2)throw new NotImplementedError(`dot requires both inputs to be rank >= 2 but got x shape = ${a.shape} and y shape = ${b.shape}`);if(b.rank>=3){let xLastDim=a.shape.slice(-1)[0],ySecondLastDim=b.shape.slice(-2)[0];if(xLastDim!==ySecondLastDim)throw new NotImplementedError(`If rank y >= 3, then the second last dim of y must equal the last dim of x but got x shape = ${a.shape} and y shape = ${b.shape}`)}if(a.rank===2&&b.rank===2){let transposeA=!1,transposeB=!1;return fused_ops_exports.matMul({a,b,transposeA,transposeB,bias:bias?reshapeBias(a.rank,bias,imageDataFormat()):null,activation:activation2})}else{let aFirstDims=a.shape.slice(),aLastDim=aFirstDims.pop();a=a.reshape([-1,aLastDim]);let bShape=b.shape.slice(),bLastDim=bShape.pop(),ySecondLastDim=bShape.pop(),yOtherDims=[...bShape,bLastDim],perm=Array.from({length:b.rank},(_,i)=>i===0?b.rank-2:i<=b.rank-2?i-1:i);b=b.transpose(perm).reshape([ySecondLastDim,-1]);let outputShape=[...aFirstDims,...yOtherDims],transposeA=!1,transposeB=!1;return fused_ops_exports.matMul({a,b,transposeA,transposeB,bias:bias?reshapeBias(a.rank,bias,imageDataFormat()):null,activation:activation2}).reshape(outputShape)}}function gather2(reference,indices,axis){return tidy(()=>(Array.isArray(indices)?indices=tensor1d(indices,"int32"):indices=indices.toInt(),gather(reference,indices,axis)))}function square2(x){return mul(x,x)}function reshapeBias(xRank,bias,dataFormat){let biasShape=bias.shape;if(bias.rank!==1&&bias.rank!==xRank)throw new ValueError(`Unexpected bias dimensions: ${bias.rank}; expected it to be 1 or ${xRank}`);if(xRank===5){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1,1,1]):bias.reshape([1,biasShape[3],biasShape[0],biasShape[1],biasShape[2]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank===4){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1,1]):bias.reshape([1,biasShape[2],biasShape[0],biasShape[1]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank===3){if(dataFormat==="channelsFirst")return biasShape.length===1?bias.reshape([1,biasShape[0],1]):bias.reshape([1,biasShape[1],biasShape[0]]);if(dataFormat==="channelsLast")return biasShape.length===1?bias.reshape([1,1,biasShape[0]]):bias.reshape([1].concat(biasShape))}else if(xRank<3)return bias;throw new ValueError(`Unsupported input rank by biasAdd: ${bias.rank}`)}function biasAdd(x,bias,dataFormat){return tidy(()=>(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.add(reshapeBias(x.rank,bias,dataFormat))))}function elu2(x,alpha=1){if(alpha!==1)throw new NotImplementedError(`Support for alpha values other than 1 (${alpha}) is not implemented yet.`);return elu(x)}function softsign(x){return tidy(()=>div(x,abs(x).add(1)))}function dropout2(x,level,noiseShape,seed){return tidy(()=>dropout(x,level,noiseShape,seed))}function hardSigmoid(x){return tidy(()=>{let y=add2(.5,mul(.2,x));return clipByValue(y,0,1)})}function inTrainPhase(x,alt,training=!1){return training?x():alt()}var VALID_FAN_MODE_VALUES=["fanIn","fanOut","fanAvg"],VALID_DISTRIBUTION_VALUES=["normal","uniform","truncatedNormal"];function checkFanMode(value){checkStringTypeUnionValue(VALID_FAN_MODE_VALUES,"FanMode",value)}function checkDistribution(value){checkStringTypeUnionValue(VALID_DISTRIBUTION_VALUES,"Distribution",value)}var Initializer=class extends serialization_exports.Serializable{fromConfigUsesCustomObjects(){return!1}getConfig(){return{}}},Zeros=class extends Initializer{apply(shape,dtype){return zeros(shape,dtype)}};Zeros.className="Zeros";serialization_exports.registerClass(Zeros);var Ones=class extends Initializer{apply(shape,dtype){return ones2(shape,dtype)}};Ones.className="Ones";serialization_exports.registerClass(Ones);var Constant=class extends Initializer{constructor(args){super();if(typeof args!="object")throw new ValueError(`Expected argument of type ConstantConfig but got ${args}`);if(args.value===void 0)throw new ValueError(`config must have value set but got ${args}`);this.value=args.value}apply(shape,dtype){return tidy(()=>mul(scalar(this.value),ones2(shape,dtype)))}getConfig(){return{value:this.value}}};Constant.className="Constant";serialization_exports.registerClass(Constant);var RandomUniform=class extends Initializer{constructor(args){super();this.DEFAULT_MINVAL=-.05,this.DEFAULT_MAXVAL=.05,this.minval=args.minval||this.DEFAULT_MINVAL,this.maxval=args.maxval||this.DEFAULT_MAXVAL,this.seed=args.seed}apply(shape,dtype){return randomUniform(shape,this.minval,this.maxval,dtype)}getConfig(){return{minval:this.minval,maxval:this.maxval,seed:this.seed}}};RandomUniform.className="RandomUniform";serialization_exports.registerClass(RandomUniform);var RandomNormal=class extends Initializer{constructor(args){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=args.mean||this.DEFAULT_MEAN,this.stddev=args.stddev||this.DEFAULT_STDDEV,this.seed=args.seed}apply(shape,dtype){if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`randomNormal does not support dType ${dtype}.`);return randomNormal2(shape,this.mean,this.stddev,dtype,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};RandomNormal.className="RandomNormal";serialization_exports.registerClass(RandomNormal);var TruncatedNormal=class extends Initializer{constructor(args){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=args.mean||this.DEFAULT_MEAN,this.stddev=args.stddev||this.DEFAULT_STDDEV,this.seed=args.seed}apply(shape,dtype){if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`truncatedNormal does not support dType ${dtype}.`);return truncatedNormal(shape,this.mean,this.stddev,dtype,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};TruncatedNormal.className="TruncatedNormal";serialization_exports.registerClass(TruncatedNormal);var Identity2=class extends Initializer{constructor(args){super();this.gain=args.gain!=null?args.gain:1}apply(shape,dtype){return tidy(()=>{if(shape.length!==2||shape[0]!==shape[1])throw new ValueError("Identity matrix initializer can only be used for 2D square matrices.");return mul(this.gain,eye(shape[0]))})}getConfig(){return{gain:this.gain}}};Identity2.className="Identity";serialization_exports.registerClass(Identity2);function computeFans(shape,dataFormat="channelsLast"){let fanIn,fanOut;if(checkDataFormat(dataFormat),shape.length===2)fanIn=shape[0],fanOut=shape[1];else if([3,4,5].indexOf(shape.length)!==-1){if(dataFormat==="channelsFirst"){let receptiveFieldSize=arrayProd(shape,2);fanIn=shape[1]*receptiveFieldSize,fanOut=shape[0]*receptiveFieldSize}else if(dataFormat==="channelsLast"){let receptiveFieldSize=arrayProd(shape,0,shape.length-2);fanIn=shape[shape.length-2]*receptiveFieldSize,fanOut=shape[shape.length-1]*receptiveFieldSize}}else{let shapeProd=arrayProd(shape);fanIn=Math.sqrt(shapeProd),fanOut=Math.sqrt(shapeProd)}return[fanIn,fanOut]}var VarianceScaling=class extends Initializer{constructor(args){super();if(args.scale<0)throw new ValueError(`scale must be a positive float. Got: ${args.scale}`);this.scale=args.scale==null?1:args.scale,this.mode=args.mode==null?"fanIn":args.mode,checkFanMode(this.mode),this.distribution=args.distribution==null?"normal":args.distribution,checkDistribution(this.distribution),this.seed=args.seed}apply(shape,dtype){let fans=computeFans(shape),fanIn=fans[0],fanOut=fans[1],scale2=this.scale;if(this.mode==="fanIn"?scale2/=Math.max(1,fanIn):this.mode==="fanOut"?scale2/=Math.max(1,fanOut):scale2/=Math.max(1,(fanIn+fanOut)/2),this.distribution==="normal"){let stddev=Math.sqrt(scale2);if(dtype=dtype||"float32",dtype!=="float32"&&dtype!=="int32")throw new NotImplementedError(`${this.getClassName()} does not support dType ${dtype}.`);return truncatedNormal(shape,0,stddev,dtype,this.seed)}else{let limit=Math.sqrt(3*scale2);return randomUniform(shape,-limit,limit,dtype)}}getConfig(){return{scale:this.scale,mode:this.mode,distribution:this.distribution,seed:this.seed}}};VarianceScaling.className="VarianceScaling";serialization_exports.registerClass(VarianceScaling);var GlorotUniform=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanAvg",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};GlorotUniform.className="GlorotUniform";serialization_exports.registerClass(GlorotUniform);var GlorotNormal=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanAvg",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};GlorotNormal.className="GlorotNormal";serialization_exports.registerClass(GlorotNormal);var HeNormal=class extends VarianceScaling{constructor(args){super({scale:2,mode:"fanIn",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};HeNormal.className="HeNormal";serialization_exports.registerClass(HeNormal);var HeUniform=class extends VarianceScaling{constructor(args){super({scale:2,mode:"fanIn",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};HeUniform.className="HeUniform";serialization_exports.registerClass(HeUniform);var LeCunNormal=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanIn",distribution:"normal",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};LeCunNormal.className="LeCunNormal";serialization_exports.registerClass(LeCunNormal);var LeCunUniform=class extends VarianceScaling{constructor(args){super({scale:1,mode:"fanIn",distribution:"uniform",seed:args==null?null:args.seed})}getClassName(){return VarianceScaling.className}};LeCunUniform.className="LeCunNormal";serialization_exports.registerClass(LeCunUniform);var Orthogonal=class extends Initializer{constructor(args){super();if(this.DEFAULT_GAIN=1,this.gain=args.gain==null?this.DEFAULT_GAIN:args.gain,this.seed=args.seed,this.seed!=null)throw new NotImplementedError("Random seed is not implemented for Orthogonal Initializer yet.")}apply(shape,dtype){return tidy(()=>{if(shape.length<2)throw new NotImplementedError("Shape must be at least 2D.");shape[0]*shape[1]>2e3&&console.warn(`Orthogonal initializer is being called on a matrix with more than 2000 (${shape[0]*shape[1]}) elements: Slowness may result.`);let normalizedShape=shape[0]>shape[1]?[shape[1],shape[0]]:shape,a=randomNormal2(normalizedShape,0,1,"float32"),q=linalg.gramSchmidt(a);return shape[0]>shape[1]&&(q=q.transpose()),mul(this.gain,q)})}getConfig(){return{gain:this.gain,seed:this.seed}}};Orthogonal.className="Orthogonal";serialization_exports.registerClass(Orthogonal);var INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP={constant:"Constant",glorotNormal:"GlorotNormal",glorotUniform:"GlorotUniform",heNormal:"HeNormal",heUniform:"HeUniform",identity:"Identity",leCunNormal:"LeCunNormal",leCunUniform:"LeCunUniform",ones:"Ones",orthogonal:"Orthogonal",randomNormal:"RandomNormal",randomUniform:"RandomUniform",truncatedNormal:"TruncatedNormal",varianceScaling:"VarianceScaling",zeros:"Zeros"};function deserializeInitializer(config,customObjects={}){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"initializer")}function serializeInitializer(initializer){return serializeKerasObject(initializer)}function getInitializer(identifier){if(typeof identifier=="string"){let className=identifier in INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP?INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier;if(className==="GlorotNormal")return new GlorotNormal;if(className==="GlorotUniform")return new GlorotUniform;if(className==="HeNormal")return new HeNormal;if(className==="HeUniform")return new HeUniform;if(className==="LeCunNormal")return new LeCunNormal;if(className==="LeCunUniform")return new LeCunUniform;{let config={};return config.className=className,config.config={},deserializeInitializer(config)}}else return identifier instanceof Initializer?identifier:deserializeInitializer(identifier)}function zeros2(){return new Zeros}function ones3(){return new Ones}function constant(args){return new Constant(args)}function randomUniform2(args){return new RandomUniform(args)}function randomNormal3(args){return new RandomNormal(args)}function truncatedNormal2(args){return new TruncatedNormal(args)}function identity(args){return new Identity2(args)}function varianceScaling(config){return new VarianceScaling(config)}function glorotUniform(args){return new GlorotUniform(args)}function glorotNormal(args){return new GlorotNormal(args)}function heNormal(args){return new HeNormal(args)}function heUniform(args){return new HeUniform(args)}function leCunNormal(args){return new LeCunNormal(args)}function leCunUniform(args){return new LeCunUniform(args)}function orthogonal(args){return new Orthogonal(args)}var exports_layers_exports={};__export(exports_layers_exports,{Layer:()=>Layer,RNN:()=>RNN,RNNCell:()=>RNNCell,activation:()=>activation,add:()=>add3,alphaDropout:()=>alphaDropout,average:()=>average,averagePooling1d:()=>averagePooling1d,averagePooling2d:()=>averagePooling2d,averagePooling3d:()=>averagePooling3d,avgPool1d:()=>avgPool1d,avgPool2d:()=>avgPool2d,avgPool3d:()=>avgPool3d2,avgPooling1d:()=>avgPooling1d,avgPooling2d:()=>avgPooling2d,avgPooling3d:()=>avgPooling3d,batchNormalization:()=>batchNormalization2,bidirectional:()=>bidirectional,concatenate:()=>concatenate2,conv1d:()=>conv1d2,conv2d:()=>conv2d3,conv2dTranspose:()=>conv2dTranspose2,conv3d:()=>conv3d2,convLstm2d:()=>convLstm2d,convLstm2dCell:()=>convLstm2dCell,cropping2D:()=>cropping2D,dense:()=>dense,depthwiseConv2d:()=>depthwiseConv2d4,dot:()=>dot3,dropout:()=>dropout3,elu:()=>elu3,embedding:()=>embedding,flatten:()=>flatten3,gaussianDropout:()=>gaussianDropout,gaussianNoise:()=>gaussianNoise,globalAveragePooling1d:()=>globalAveragePooling1d,globalAveragePooling2d:()=>globalAveragePooling2d,globalMaxPool1d:()=>globalMaxPool1d,globalMaxPool2d:()=>globalMaxPool2d,globalMaxPooling1d:()=>globalMaxPooling1d,globalMaxPooling2d:()=>globalMaxPooling2d,gru:()=>gru,gruCell:()=>gruCell,input:()=>input,inputLayer:()=>inputLayer,layerNormalization:()=>layerNormalization,leakyReLU:()=>leakyReLU,lstm:()=>lstm,lstmCell:()=>lstmCell,masking:()=>masking,maxPool1d:()=>maxPool1d,maxPool2d:()=>maxPool2d,maxPooling1d:()=>maxPooling1d,maxPooling2d:()=>maxPooling2d,maxPooling3d:()=>maxPooling3d,maximum:()=>maximum2,minimum:()=>minimum2,multiply:()=>multiply,permute:()=>permute,prelu:()=>prelu2,reLU:()=>reLU,repeatVector:()=>repeatVector,reshape:()=>reshape2,rnn:()=>rnn2,separableConv2d:()=>separableConv2d2,simpleRNN:()=>simpleRNN,simpleRNNCell:()=>simpleRNNCell,softmax:()=>softmax2,spatialDropout1d:()=>spatialDropout1d,stackedRNNCells:()=>stackedRNNCells,thresholdedReLU:()=>thresholdedReLU,timeDistributed:()=>timeDistributed,upSampling2d:()=>upSampling2d,zeroPadding2d:()=>zeroPadding2d});var _nextUniqueTensorId=0;function getNextUniqueTensorId(){return _nextUniqueTensorId++}var _uidPrefixes={};function getUid(prefix=""){return prefix in _uidPrefixes||(_uidPrefixes[prefix]=0),_uidPrefixes[prefix]+=1,prefix+_uidPrefixes[prefix].toString()}function isArrayOfShapes(x){return Array.isArray(x)&&Array.isArray(x[0])}function normalizeShapeList(x){return x.length===0?[]:Array.isArray(x[0])?x:[x]}function getExactlyOneTensor(xs){let x;if(Array.isArray(xs)){if(xs.length!==1)throw new ValueError(`Expected Tensor length to be 1; got ${xs.length}`);x=xs[0]}else x=xs;return x}function getExactlyOneShape(shapes){if(Array.isArray(shapes)&&Array.isArray(shapes[0])){if(shapes.length===1)return shapes=shapes,shapes[0];throw new ValueError(`Expected exactly 1 Shape; got ${shapes.length}`)}else return shapes}function countParamsInWeights(weights){let count2=0;for(let weight of weights)weight.shape.length===0?count2+=1:count2+=weight.shape.reduce((a,b)=>a*b);return count2}var DEFAULT_VARIABLE_NAME_PREFIX="Variable",LayerVariable=class{constructor(val,dtype="float32",name=DEFAULT_VARIABLE_NAME_PREFIX,trainable=!0,constraint=null){this.dtype=dtype==null?"float32":dtype,this.shape=val.shape,this.id=getNextUniqueTensorId(),name=name==null?DEFAULT_VARIABLE_NAME_PREFIX:name,this.originalName=getScopedTensorName(name),this.name=getUniqueTensorName(this.originalName),this.trainable_=trainable,this.constraint=constraint,this.val=variable(val,this.trainable_,this.name,this.dtype)}read(){return this.assertNotDisposed(),this.val}write(newVal){return this.assertNotDisposed(),checkShapesMatch(this.val,newVal),this.val.id!==newVal.id&&(this.val.assign(newVal),this.constraint!=null&&this.val.assign(this.constraint.apply(this.val))),this}dispose(){this.assertNotDisposed(),this.val.dispose()}assertNotDisposed(){if(this.val.isDisposed)throw new Error(`LayersVariable ${this.name} is already disposed.`)}get trainable(){return this.trainable_}set trainable(trainable){this.trainable_=trainable,this.val.trainable=trainable}};function checkShapesMatch(x,y){if(x.shape.toString()!==y.shape.toString())throw new Error("Shape mismatch: "+JSON.stringify(x.shape)+" vs. "+JSON.stringify(y.shape))}function batchGetValue(xs){return xs.map(x=>x.read())}function batchSetValue(variablesAndValues){variablesAndValues.forEach(variableAndValue=>{variableAndValue[0].write(variableAndValue[1])})}var InputSpec=class{constructor(args){this.dtype=args.dtype,this.shape=args.shape,args.shape!=null?this.ndim=args.shape.length:this.ndim=args.ndim,this.maxNDim=args.maxNDim,this.minNDim=args.minNDim,this.axes=args.axes||{}}},SymbolicTensor=class{constructor(dtype,shape,sourceLayer,inputs,callArgs,name,outputTensorIndex){this.dtype=dtype,this.shape=shape,this.sourceLayer=sourceLayer,this.inputs=inputs,this.callArgs=callArgs,this.outputTensorIndex=outputTensorIndex,this.id=getNextUniqueTensorId(),name!=null&&(this.originalName=getScopedTensorName(name),this.name=getUniqueTensorName(this.originalName)),this.rank=shape.length}},_nextNodeID=0,Node=class{constructor(args,callArgs){this.callArgs=callArgs,this.id=_nextNodeID++,this.outboundLayer=args.outboundLayer,this.inboundLayers=args.inboundLayers,this.nodeIndices=args.nodeIndices,this.tensorIndices=args.tensorIndices,this.inputTensors=args.inputTensors,this.outputTensors=args.outputTensors,this.inputMasks=args.inputMasks,this.outputMasks=args.outputMasks,this.inputShapes=args.inputShapes,this.outputShapes=args.outputShapes;for(let layer of args.inboundLayers)layer!=null&&layer.outboundNodes.push(this);args.outboundLayer.inboundNodes.push(this)}getConfig(){let inboundNames=[];for(let layer of this.inboundLayers)layer!=null?inboundNames.push(layer.name):inboundNames.push(null);return{outboundLayer:this.outboundLayer?this.outboundLayer.name:null,inboundLayers:inboundNames,nodeIndices:this.nodeIndices,tensorIndices:this.tensorIndices}}},_nextLayerID=0,Layer=class extends serialization_exports.Serializable{constructor(args={}){super();this._callHook=null,this._addedWeightNames=[],this._stateful=!1,this.id=_nextLayerID++,this.activityRegularizer=null,this.inputSpec=null,this.supportsMasking=!1,this._trainableWeights=[],this._nonTrainableWeights=[],this._losses=[],this._updates=[],this._built=!1,this.inboundNodes=[],this.outboundNodes=[];let name=args.name;if(!name){let prefix=this.getClassName();name=toSnakeCase(prefix)+"_"+getUid(prefix)}if(this.name=name,this.trainable_=args.trainable==null?!0:args.trainable,args.inputShape!=null||args.batchInputShape!=null){let batchInputShape;if(args.batchInputShape!=null)batchInputShape=args.batchInputShape;else if(args.inputShape!=null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),batchInputShape=[batchSize].concat(args.inputShape)}this.batchInputShape=batchInputShape;let dtype=args.dtype;dtype==null&&(dtype=args.inputDType),dtype==null&&(dtype="float32"),this.dtype=dtype}args.weights!=null?this.initialWeights=args.weights:this.initialWeights=null,this._refCount=null,this.fastWeightInitDuringBuild=!1}static nodeKey(layer,nodeIndex){return layer.name+"_ib-"+nodeIndex.toString()}getNodeAtIndex(nodeIndex,attrName){if(this.inboundNodes.length===0)throw new RuntimeError(`The layer has never been called and thus has no defined ${attrName}.`);if(this.inboundNodes.length<=nodeIndex)throw new ValueError(`Asked to get ${attrName} at node ${nodeIndex}, but the layer has only ${this.inboundNodes.length} inbound nodes.`);return this.inboundNodes[nodeIndex]}getInputAt(nodeIndex){return singletonOrArray(this.getNodeAtIndex(nodeIndex,"input").inputTensors)}getOutputAt(nodeIndex){return singletonOrArray(this.getNodeAtIndex(nodeIndex,"output").outputTensors)}get input(){if(this.inboundNodes.length>1)throw new AttributeError(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer input" is ill-defined. Use \`getInputAt(nodeIndex)\` instead.`);if(this.inboundNodes.length===0)throw new AttributeError(`Layer ${this.name} is not connected, no input to return.`);return singletonOrArray(this.getNodeAtIndex(0,"input").inputTensors)}get output(){if(this.inboundNodes.length===0)throw new AttributeError(`Layer ${this.name} has no inbound nodes.`);if(this.inboundNodes.length>1)throw new AttributeError(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer output" is ill-defined. Use \`getOutputAt(nodeIndex)\` instead.`);return singletonOrArray(this.getNodeAtIndex(0,"output").outputTensors)}get losses(){return this._losses}calculateLosses(){return this.losses.map(lossFn=>lossFn())}get updates(){return this._updates}get built(){return this._built}set built(built){this._built=built}get trainable(){return this.trainable_}set trainable(trainable){this._trainableWeights.forEach(w=>w.trainable=trainable),this.trainable_=trainable}get trainableWeights(){return this.trainable_?this._trainableWeights.filter(w=>w.trainable):[]}set trainableWeights(weights){this._trainableWeights=weights}get nonTrainableWeights(){return this.trainable?this._trainableWeights.filter(w=>!w.trainable).concat(this._nonTrainableWeights):this._trainableWeights.concat(this._nonTrainableWeights)}set nonTrainableWeights(weights){this._nonTrainableWeights=weights}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}get stateful(){return this._stateful}resetStates(){if(!this.stateful)throw new Error("Cannot call the resetStates() method of a non-stateful Layer object.")}assertInputCompatibility(inputs){if(inputs=toList(inputs),this.inputSpec==null||this.inputSpec.length===0)return;let inputSpec=toList(this.inputSpec);if(inputs.length!==inputSpec.length)throw new ValueError(`Layer ${this.name} expects ${inputSpec.length} inputs, but it received ${inputs.length} input tensors. Input received: ${inputs}`);for(let inputIndex=0;inputIndexspec.maxNDim)throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name}: expected max_ndim=${spec.maxNDim}, found ndim=${ndim}`);if(spec.minNDim!=null&&ndim=0?xShape[axis]:xShape[xShape.length+axis];if(value!=null&&[value,null].indexOf(xShapeAtAxis)===-1)throw new ValueError(`Input ${inputIndex} is incompatible with layer ${this.name}: expected axis ${axis} of input shape to have value ${value} but got shape ${xShape}.`)}}if(spec.shape!=null)for(let i=0;i{if(!this.built){this.assertInputCompatibility(inputs);let inputShapes=[];for(let xElem of toList(inputs))inputShapes.push(xElem.shape);this.build(singletonOrArray(inputShapes)),this.built=!0,this.initialWeights&&this.setWeights(this.initialWeights),this._refCount===null&&noneAreSymbolic&&(this._refCount=1)}if(this.assertInputCompatibility(inputs),noneAreSymbolic){let output=this.call(inputs,kwargs),outputList=toList(output),outputListCopy=[];for(let x of outputList)inputsList.indexOf(x)!==-1&&(x=x.clone()),outputListCopy.push(x);if(output=singletonOrArray(outputListCopy),this.activityRegularizer!=null)throw new NotImplementedError("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return output}else{let inputShape=collectInputShape(inputs),outputShape=this.computeOutputShape(inputShape),output,outputDType=guessOutputDType(inputs);if(this.warnOnIncompatibleInputShape(Array.isArray(inputs)?inputShape[0]:inputShape),outputShape!=null&&outputShape.length>0&&Array.isArray(outputShape[0])?output=outputShape.map((shape,index)=>new SymbolicTensor(outputDType,shape,this,toList(inputs),kwargs,this.name,index)):output=new SymbolicTensor(outputDType,outputShape,this,toList(inputs),kwargs,this.name),this.addInboundNode(inputs,output,null,null,inputShape,outputShape,kwargs),this._refCount++,this.activityRegularizer!=null)throw new NotImplementedError("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return output}})}warnOnIncompatibleInputShape(inputShape){if(this.batchInputShape!=null)if(inputShape.length!==this.batchInputShape.length)console.warn(`The rank of the input tensor provided (shape: ${JSON.stringify(inputShape)}) does not match that of the batchInputShape (${JSON.stringify(this.batchInputShape)}) of the layer ${this.name}`);else{let dimMismatch=!1;this.batchInputShape.forEach((dimension,i)=>{dimension!=null&&inputShape[i]!=null&&inputShape[i]!==dimension&&(dimMismatch=!0)}),dimMismatch&&console.warn(`The shape of the input tensor (${JSON.stringify(inputShape)}) does not match the expectation of layer ${this.name}: ${JSON.stringify(this.batchInputShape)}`)}}get outputShape(){if(this.inboundNodes==null||this.inboundNodes.length===0)throw new AttributeError(`The layer ${this.name} has never been called and thus has no defined output shape.`);let allOutputShapes=[];for(let node of this.inboundNodes){let shapeString=JSON.stringify(node.outputShapes);allOutputShapes.indexOf(shapeString)===-1&&allOutputShapes.push(shapeString)}if(allOutputShapes.length===1){let outputShapes=this.inboundNodes[0].outputShapes;return Array.isArray(outputShapes)&&Array.isArray(outputShapes[0])&&outputShapes.length===1?outputShapes[0]:outputShapes}else throw new AttributeError(`The layer ${this.name} has multiple inbound nodes with different output shapes. Hence the notion of "output shape" is ill-defined for the layer.`)}countParams(){if(!this.built)throw new RuntimeError(`You tried to call countParams() on ${this.name}, but the layer is not built yet. Build it first by calling build(batchInputShape).`);return countParamsInWeights(this.weights)}build(inputShape){this.built=!0}getWeights(trainableOnly=!1){return batchGetValue(trainableOnly?this.trainableWeights:this.weights)}setWeights(weights){tidy(()=>{let params=this.weights;if(params.length!==weights.length)throw new ValueError(`You called setWeights(weights) on layer "${this.name}" with a weight list of length ${weights.length}, but the layer was expecting ${params.length} weights. Provided weights: ${weights}...`);if(params.length===0)return;let weightValueTuples=[],paramValues=batchGetValue(params);for(let i=0;iregularizer.apply(weight.read())),trainable==null&&(trainable=!0),trainable?this._trainableWeights.push(weight):this._nonTrainableWeights.push(weight),weight}setFastWeightInitDuringBuild(value){this.fastWeightInitDuringBuild=value}addLoss(losses4){losses4==null||Array.isArray(losses4)&&losses4.length===0||(losses4=toList(losses4),this._losses!==void 0&&this._losses!==null&&this.losses.push(...losses4))}computeOutputShape(inputShape){return inputShape}computeMask(inputs,mask){if(!this.supportsMasking){if(mask!=null)if(Array.isArray(mask))mask.forEach(maskElement=>{if(maskElement!=null)throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`)});else throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`);return null}return mask}addInboundNode(inputTensors,outputTensors,inputMasks,outputMasks,inputShapes,outputShapes,kwargs=null){let inputTensorList=toList(inputTensors);outputTensors=toList(outputTensors),inputMasks=toList(inputMasks),outputMasks=toList(outputMasks),inputShapes=normalizeShapeList(inputShapes),outputShapes=normalizeShapeList(outputShapes);let inboundLayers=[],nodeIndices=[],tensorIndices=[];for(let x of inputTensorList)inboundLayers.push(x.sourceLayer),nodeIndices.push(x.nodeIndex),tensorIndices.push(x.tensorIndex);new Node({outboundLayer:this,inboundLayers,nodeIndices,tensorIndices,inputTensors:inputTensorList,outputTensors,inputMasks,outputMasks,inputShapes,outputShapes},kwargs);for(let i=0;iweight.dispose()),this.weights.length}assertNotDisposed(){if(this._refCount===0)throw new Error(`Layer '${this.name}' is already disposed.`)}dispose(){if(!this.built)throw new Error(`Cannot dispose Layer ${this.name} because it has not been built yet.`);if(this._refCount===null)throw new Error(`Cannot dispose Layer ${this.name} because it has not been used yet.`);this.assertNotDisposed();let numDisposedVariables=0;return--this._refCount==0&&(numDisposedVariables=this.disposeWeights()),{refCountAfterDispose:this._refCount,numDisposedVariables}}};function collectInputShape(inputTensors){inputTensors=toList(inputTensors);let shapes=[];for(let x of inputTensors)shapes.push(x.shape);return singletonOrArray(shapes)}function guessOutputDType(inputTensors){return"float32"}function getSourceInputs(tensor2,layer,nodeIndex){if((layer==null||nodeIndex!=null&&nodeIndex>0)&&(layer=tensor2.sourceLayer,nodeIndex=tensor2.nodeIndex),layer.inboundNodes.length===0)return[tensor2];{let node=layer.inboundNodes[nodeIndex];if(node.inboundLayers.length===0)return node.inputTensors;{let sourceTensors=[];for(let i=0;i0){let values=await Promise.all(promises);for(let i=0;iadd2(this.totals[key],mul(value,batchSize)));this.totals[key]=total,oldTotalsToDispose!=null&&oldTotalsToDispose.dispose()}}}async onEpochEnd(epoch,logs){if(logs!=null)for(let key of this.params.metrics)this.totals[key]!=null&&(typeof this.totals[key]=="number"?logs[key]=this.totals[key]/this.seen:tidy(()=>{let log5=mul(div(1,this.seen),this.totals[key]);logs[key]=log5,this.totals[key].dispose(),keep(logs[key])}))}},History=class extends BaseCallback{async onTrainBegin(logs){this.epoch=[],this.history={}}async onEpochEnd(epoch,logs){logs==null&&(logs={}),this.epoch.push(epoch);for(let key in logs)this.history[key]==null&&(this.history[key]=[]),this.history[key].push(logs[key])}async syncData(){let promises=[],keys=[],indices=[];for(let key in this.history){let valueArray=this.history[key];for(let i=0;inew CustomCallback(callbackConfig,yieldEvery))}var CallbackConstructorRegistry=class{constructor(){}static registerCallbackConstructor(verbosityLevel,callbackConstructor){util_exports.assert(verbosityLevel>=0&&Number.isInteger(verbosityLevel),()=>`Verbosity level is expected to be an integer >= 0, but got ${verbosityLevel}`),CallbackConstructorRegistry.checkForDuplicate(callbackConstructor),CallbackConstructorRegistry.constructors[verbosityLevel]==null&&(CallbackConstructorRegistry.constructors[verbosityLevel]=[]),CallbackConstructorRegistry.constructors[verbosityLevel].push(callbackConstructor)}static checkForDuplicate(callbackConstructor){for(let levelName in CallbackConstructorRegistry.constructors)CallbackConstructorRegistry.constructors[+levelName].forEach(ctor=>{if(ctor===callbackConstructor)throw new ValueError("Duplicate callback constructor.")})}static clear(){CallbackConstructorRegistry.constructors={}}static createCallbacks(verbosityLevel){let constructors=[];for(let levelName in CallbackConstructorRegistry.constructors){let level=+levelName;verbosityLevel>=level&&constructors.push(...CallbackConstructorRegistry.constructors[level])}return constructors.map(ctor=>new ctor)}};CallbackConstructorRegistry.constructors={};function configureCallbacks(callbacks2,verbose,epochs,initialEpoch,numTrainSamples,stepsPerEpoch,batchSize,doValidation,callbackMetrics){let history=new History,actualCallbacks=[new BaseLogger,...CallbackConstructorRegistry.createCallbacks(verbose)];callbacks2!=null&&actualCallbacks.push(...callbacks2),actualCallbacks.push(history);let callbackList=new CallbackList(actualCallbacks);return callbackList.setParams({epochs,initialEpoch,samples:numTrainSamples,steps:stepsPerEpoch,batchSize,verbose,doValidation,metrics:callbackMetrics}),{callbackList,history}}function deserialize(config,customObjects={},fastWeightInit=!1){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"layer",fastWeightInit)}function l2Normalize(x,axis){return tidy(()=>{x.dtype!=="float32"&&(x=x.asType("float32"));let squareSum=sum2(square2(x),axis,!0),epsilonTensor=fill(squareSum.shape,epsilon()),norm2=sqrt(maximum(squareSum,epsilonTensor));return div(x,norm2)})}function meanSquaredError2(yTrue,yPred){return tidy(()=>mean(square2(sub(yPred,yTrue)),-1))}function meanAbsoluteError(yTrue,yPred){return tidy(()=>mean(abs(sub(yPred,yTrue)),-1))}function meanAbsolutePercentageError(yTrue,yPred){return tidy(()=>{let diff=sub(yTrue,yPred),clippedTrue=clipByValue(abs(yTrue),epsilon(),Number.MAX_VALUE),absResult=abs(div(diff,clippedTrue));return mul(100,mean(absResult,-1))})}function meanSquaredLogarithmicError(yTrue,yPred){return tidy(()=>{let clippedPred=clipByValue(yPred,epsilon(),Number.MAX_VALUE),firstLog=log(add2(1,clippedPred)),clippedTrue=clipByValue(yTrue,epsilon(),Number.MAX_VALUE),secondLog=log(add2(1,clippedTrue));return mean(square2(sub(firstLog,secondLog)),-1)})}function squaredHinge(yTrue,yPred){return tidy(()=>{let maxResult=maximum(0,sub(1,mul(yTrue,yPred)));return mean(square2(maxResult),-1)})}function hinge(yTrue,yPred){return tidy(()=>{let maxResult=maximum(0,sub(1,mul(yTrue,yPred)));return mean(maxResult,-1)})}function categoricalHinge(yTrue,yPred){return tidy(()=>{let pos=sum2(mul(yTrue,yPred),-1),neg4=max(mul(sub(1,yTrue),yPred),-1);return maximum(0,add2(1,sub(neg4,pos)))})}function logcosh(yTrue,yPred){return tidy(()=>{let log22=Math.log(2),predictionDiff=sub(yPred,yTrue),logcoshResult=sub(add2(predictionDiff,softplus(mul(-2,predictionDiff))),log22);return mean(logcoshResult,-1)})}function categoricalCrossentropy(target,output,fromLogits=!1){return tidy(()=>{if(fromLogits)output=softmax(output);else{let outputSum=sum2(output,output.shape.length-1,!0);output=div(output,outputSum)}return output=clipByValue(output,epsilon(),1-epsilon()),neg(sum2(mul(target.toFloat(),log(output)),output.shape.length-1))})}function sparseCategoricalCrossentropy(target,output,fromLogits=!1){return tidy(()=>{let flatTarget=floor(flatten2(target)).toInt();output=clipByValue(output,epsilon(),1-epsilon());let outputShape=output.shape,oneHotTarget=oneHot(flatTarget,outputShape[outputShape.length-1]).reshape(outputShape);return categoricalCrossentropy(oneHotTarget,output,fromLogits)})}function sigmoidCrossEntropyWithLogits(labels,logits){if(!util_exports.arraysEqual(labels.shape,logits.shape))throw new ValueError(`logits and labels must have the same shape, but got shapes ${JSON.stringify(labels.shape)} and ${JSON.stringify(logits.shape)}`);return tidy(()=>{let reluLogits=logits.relu(),negAbsLogits=logits.abs().neg();return reluLogits.sub(logits.mul(labels)).add(negAbsLogits.exp().log1p())})}function binaryCrossentropy(yTrue,yPred){return tidy(()=>{let y;return y=clipByValue(yPred,epsilon(),1-epsilon()),y=log(div(y,sub(1,y))),mean(sigmoidCrossEntropyWithLogits(yTrue,y),-1)})}function kullbackLeiblerDivergence(yTrue,yPred){return tidy(()=>{let clippedTrue=clipByValue(yTrue,epsilon(),1),clippedPred=clipByValue(yPred,epsilon(),1);return sum2(mul(yTrue,log(div(clippedTrue,clippedPred))),-1)})}function poisson(yTrue,yPred){return tidy(()=>{let logPred=log(add2(epsilon(),yPred));return mean(sub(yPred,mul(yTrue,logPred)),-1)})}function cosineProximity(yTrue,yPred){return tidy(()=>{let trueNormalized=l2Normalize(yTrue,-1),predNormalized=l2Normalize(yPred,-1),trueXPred=mul(trueNormalized,predNormalized);return neg(sum2(trueXPred,-1))})}var lossesMap={meanSquaredError:meanSquaredError2,meanAbsoluteError,meanAbsolutePercentageError,meanSquaredLogarithmicError,squaredHinge,hinge,categoricalHinge,logcosh,categoricalCrossentropy,sparseCategoricalCrossentropy,binaryCrossentropy,kullbackLeiblerDivergence,poisson,cosineProximity};function get(identifierOrFn){if(typeof identifierOrFn=="string"){if(identifierOrFn in lossesMap)return lossesMap[identifierOrFn];let errMsg=`Unknown loss ${identifierOrFn}`;throw identifierOrFn.toLowerCase().includes("softmaxcrossentropy")&&(errMsg=`Unknown loss ${identifierOrFn}. Use "categoricalCrossentropy" as the string name for tf.losses.softmaxCrossEntropy`),new ValueError(errMsg)}else return identifierOrFn}function binaryAccuracy(yTrue,yPred){return tidy(()=>{let threshold2=mul(.5,onesLike(yPred)),yPredThresholded=cast2(greater(yPred,threshold2),yTrue.dtype);return mean(equal(yTrue,yPredThresholded),-1)})}function categoricalAccuracy(yTrue,yPred){return tidy(()=>cast2(equal(argMax(yTrue,-1),argMax(yPred,-1)),"float32"))}function truePositives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(1),yPred.equal(1)).sum().cast("float32"))}function falseNegatives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(1),yPred.equal(0)).sum().cast("float32"))}function falsePositives(yTrue,yPred){return tidy(()=>logicalAnd(yTrue.equal(0),yPred.equal(1)).sum().cast("float32"))}function precision(yTrue,yPred){return tidy(()=>{let tp=truePositives(yTrue,yPred),fp=falsePositives(yTrue,yPred),denominator=tp.add(fp);return where(greater(denominator,0),tp.div(denominator),0).cast("float32")})}function recall(yTrue,yPred){return tidy(()=>{let tp=truePositives(yTrue,yPred),fn=falseNegatives(yTrue,yPred),denominator=tp.add(fn);return where(greater(denominator,0),tp.div(denominator),0).cast("float32")})}function binaryCrossentropy2(yTrue,yPred){return binaryCrossentropy(yTrue,yPred)}function sparseCategoricalAccuracy(yTrue,yPred){return yTrue.rank===yPred.rank&&(yTrue=yTrue.squeeze([yTrue.rank-1])),yPred=yPred.argMax(-1),yPred.dtype!==yTrue.dtype&&(yPred=yPred.asType(yTrue.dtype)),equal(yTrue,yPred).asType("float32")}var mse=meanSquaredError2,MSE=meanSquaredError2,mae=meanAbsoluteError,MAE=meanAbsoluteError,mape=meanAbsolutePercentageError,MAPE=meanAbsolutePercentageError,categoricalCrossentropy2=categoricalCrossentropy,cosine=cosineProximity,sparseCategoricalCrossentropy2=sparseCategoricalCrossentropy,metricsMap={binaryAccuracy,categoricalAccuracy,precision,categoricalCrossentropy:categoricalCrossentropy2,sparseCategoricalCrossentropy:sparseCategoricalCrossentropy2,mse,MSE,mae,MAE,mape,MAPE,cosine};function get2(identifier){if(typeof identifier=="string"&&identifier in metricsMap)return metricsMap[identifier];if(typeof identifier!="string"&&identifier!=null)return identifier;throw new ValueError(`Unknown metric ${identifier}`)}function getLossOrMetricName(fn){if(assert2(fn!==null,`Unknown LossOrMetricFn ${fn}`),typeof fn=="string")return fn;{let fnName;for(let key of Object.keys(lossesMap))if(lossesMap[key]===fn){fnName=key;break}if(fnName!==void 0)return fnName;for(let key of Object.keys(metricsMap))if(metricsMap[key]===fn){fnName=key;break}return fnName!==void 0?fnName:fn.name}}function getOptimizer(identifier){let optimizerMap={Adagrad:()=>train.adagrad(.01),Adadelta:()=>train.adadelta(1,.95,epsilon()),Adam:()=>train.adam(.001,.9,.999,epsilon()),Adamax:()=>train.adamax(.002,.9,.999,epsilon(),0),RMSProp:()=>train.rmsprop(.001,.9,0,epsilon()),SGD:()=>train.sgd(.01)};if(optimizerMap.adagrad=optimizerMap.Adagrad,optimizerMap.adadelta=optimizerMap.Adadelta,optimizerMap.adam=optimizerMap.Adam,optimizerMap.adamax=optimizerMap.Adamax,optimizerMap.rmsprop=optimizerMap.RMSProp,optimizerMap.sgd=optimizerMap.SGD,identifier in optimizerMap)return optimizerMap[identifier]();throw new ValueError(`Unknown Optimizer ${identifier}`)}var MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH=1*1024*1024;function checkUserDefinedMetadata(userDefinedMetadata,modelName,checkSize=!1){if(userDefinedMetadata==null||typeof userDefinedMetadata!="object"||Object.getPrototypeOf(userDefinedMetadata)!==Object.prototype||!plainObjectCheck(userDefinedMetadata))throw new Error("User-defined metadata is expected to be a JSON object, but is not.");if(checkSize){let out=JSON.stringify(userDefinedMetadata);out.length>MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH&&console.warn(`User-defined metadata of model "${modelName}" is too large in size (length=${out.length} when serialized). It is not recommended to store such large objects in user-defined metadata. Please make sure its serialized length is <= ${MAX_USER_DEFINED_METADATA_SERIALIZED_LENGTH}.`)}}function plainObjectCheck(x){if(x===null)return!0;if(typeof x=="object")if(Object.getPrototypeOf(x)===Object.prototype){let keys=Object.keys(x);for(let key of keys)if(typeof key!="string"||!plainObjectCheck(x[key]))return!1;return!0}else if(Array.isArray(x)){for(let item of x)if(!plainObjectCheck(item))return!1;return!0}else return!1;else{let xType=typeof x;return xType==="string"||xType==="number"||xType==="boolean"}}function printSummary(model2,lineLength,positions,printFn=console.log){let sequentialLike=isModelSequentialLike(model2),toDisplay=["Layer (type)","Output shape","Param #"];sequentialLike?(lineLength=lineLength||65,positions=positions||[.45,.85,1]):(lineLength=lineLength||98,positions=positions||[.33,.55,.67,1]),positions[positions.length-1]<=1&&(positions=positions.map(p2=>Math.floor(lineLength*p2)));let relevantNodes;if(!sequentialLike){toDisplay.push("Receives inputs"),relevantNodes=[];for(let depth in model2.nodesByDepth)relevantNodes.push(...model2.nodesByDepth[depth])}printFn("_".repeat(lineLength)),printRow(toDisplay,positions,printFn),printFn("=".repeat(lineLength));let layers=model2.layers;for(let i=0;i1||depthNodes.length===1&&depthNodes[0].inboundLayers.length>1){sequentialLike=!1;break}nodes.push(...depthNodes)}if(sequentialLike)for(let layer of model2.layers){let flag=!1;for(let node of layer.inboundNodes)if(nodes.indexOf(node)!==-1)if(flag){sequentialLike=!1;break}else flag=!0;if(!sequentialLike)break}return sequentialLike}function printRow(fields,positions,printFn=console.log){let line="";for(let i=0;i0&&(line=line.slice(0,line.length-1)+" "),line+=fields[i],line=line.slice(0,positions[i]),line+=" ".repeat(positions[i]-line.length);printFn(line)}function printLayerSummary(layer,positions,printFn){let outputShape;try{outputShape=JSON.stringify(layer.outputShape)}catch(err){outputShape="multiple"}let name=layer.name,className=layer.getClassName(),fields=[`${name} (${className})`,outputShape,layer.countParams().toString()];printRow(fields,positions,printFn)}function printLayerSummaryWithConnections(layer,positions,relevantNodes,printFn){let outputShape;try{outputShape=JSON.stringify(layer.outputShape)}catch(err){outputShape="multiple"}let connections=[];for(let node of layer.inboundNodes)if(!(relevantNodes!=null&&relevantNodes.length>0&&relevantNodes.indexOf(node)===-1))for(let i=0;it.name),finalOutputs=[],feedNames=feedDict.names();for(let outputName of outputNames)feedNames.indexOf(outputName)!==-1?finalOutputs.push(feedDict.getValue(outputName)):finalOutputs.push(null);probe!=null&&(probe.maxNumTensors=-Infinity,probe.minNumTensors=Infinity);let fetchAndFeedKey=outputNames.join(",")+"|"+feedDict.names().join(","),sorted,recipientCounts;if(cachedSorted[fetchAndFeedKey]==null){let out=getTopologicalSortAndRecipientCounts(fetchArray,feedDict);sorted=out.sorted,recipientCounts=out.recipientCounts,cachedSorted[fetchAndFeedKey]=sorted,cachedRecipientCounts[fetchAndFeedKey]=recipientCounts}sorted=cachedSorted[fetchAndFeedKey],recipientCounts={},training||Object.assign(recipientCounts,cachedRecipientCounts[fetchAndFeedKey]);let internalFeedDict=new FeedDict(feedDict);for(let i=0;iprobe.maxNumTensors&&(probe.maxNumTensors=numTensors),numTensors0,()=>"Expected at least one fetch, got none");let finalSorted=[],finalRecipientMap={};if(fetches.length===1){let out=getTopologicalSortAndRecipientCountsForOneFetch(fetches[0],feedDict);finalSorted=out.sorted,finalRecipientMap=out.recipientMap}else{let visited=new Set;for(let fetch3 of fetches){let{sorted,recipientMap}=getTopologicalSortAndRecipientCountsForOneFetch(fetch3,feedDict);for(let symbolicTensor of sorted)visited.has(symbolicTensor.name)||(finalSorted.push(symbolicTensor),visited.add(symbolicTensor.name));for(let name in recipientMap)finalRecipientMap[name]==null&&(finalRecipientMap[name]=new Set),recipientMap[name].forEach(recipient=>finalRecipientMap[name].add(recipient))}}return{sorted:finalSorted,recipientCounts:recipientMap2Counts(finalRecipientMap)}}function recipientMap2Counts(recipientMap){let recipientCounts={};for(let name in recipientMap)recipientCounts[name]=recipientMap[name].size;return recipientCounts}function getTopologicalSortAndRecipientCountsForOneFetch(fetch3,feedDict){let visited=new Set,sorted=[],recipientMap={};for(let key of feedDict.names())visited.add(key);let stack2=[],marks=[];for(stack2.push(fetch3);stack2.length>0;){let top=stack2[stack2.length-1];if(visited.has(top.name)){stack2.pop();continue}let topIsMarked=marks[marks.length-1]===stack2.length-1;if(top.inputs.length===0||topIsMarked)stack2.pop(),sorted.push(top),visited.add(top.name),topIsMarked&&marks.pop();else{marks.push(stack2.length-1);for(let input2 of top.inputs)recipientMap[input2.name]==null&&(recipientMap[input2.name]=new Set),recipientMap[input2.name].add(top.name),!visited.has(input2.name)&&stack2.push(input2)}}return{sorted,recipientMap}}function getNodeOutputs(fetch3){let layerOutputs;if(fetch3.sourceLayer.inboundNodes.length===1)layerOutputs=fetch3.sourceLayer.output;else{let nodeIndex=null;for(let i=0;ix.name)}`);unique2(this.outputs).length!==this.outputs.length&&console.warn(`The list of outputs passed to the model is redundant. All outputs should only appear once. Found: ${this.outputs.map(x=>x.name)}`),this.inputLayers=[],this.inputLayersNodeIndices=[],this.inputLayersTensorIndices=[],this.outputLayers=[],this.outputLayersNodeIndices=[],this.outputLayersTensorIndices=[],this.layers=[],this.internalContainerRefs=[];for(let x of this.outputs){let layer=x.sourceLayer,nodeIndex=x.nodeIndex,tensorIndex=x.tensorIndex;this.outputLayers.push(layer),this.outputLayersNodeIndices.push(nodeIndex),this.outputLayersTensorIndices.push(tensorIndex)}for(let x of this.inputs){let layer=x.sourceLayer,nodeIndex=x.nodeIndex,tensorIndex=x.tensorIndex;assert2(nodeIndex===0,"input layer has >1 nodes"),assert2(tensorIndex===0,"input layer has >1 tensors"),this.inputLayers.push(layer),this.inputLayersNodeIndices.push(nodeIndex),this.inputLayersTensorIndices.push(tensorIndex)}this.inputNames=[],this.outputNames=[],this.feedInputShapes=[],this.feedInputNames=[],this.feedOutputNames=[];for(let i=0;ix.shape),this.internalOutputShapes=this.outputs.map(x=>x.shape);let nodesDepths={},nodeIDToNode={},layersDepths={},layerIDToLayer={},layerIndices={},nodesInDecreasingDepth=[],buildMapOfGraph=(tensor2,finishedNodes2,nodesInProgress2,layer,nodeIndex,tensorIndex)=>{(layer==null||nodeIndex==null||tensorIndex==null)&&(layer=tensor2.sourceLayer,nodeIndex=tensor2.nodeIndex,tensorIndex=tensor2.tensorIndex);let node=layer.inboundNodes[nodeIndex];if(nodesInProgress2.indexOf(node)!==-1)throw new RuntimeError(`The tensor ${tensor2.name} at layer "${layer.name}" is part of a cycle.`);if(finishedNodes2.indexOf(node)!==-1)return;this.containerNodes.add(Container.nodeKey(layer,nodeIndex)),layer.id in layerIndices||(layerIndices[layer.id]=Object.keys(layerIndices).length),nodesInProgress2.indexOf(node)===-1&&nodesInProgress2.push(node);let numInboundLayers=node.inboundLayers.length;for(let i=0;i=0;)nodesInProgress2.splice(nodesInProgress2.indexOf(node),1);nodesInDecreasingDepth.push(node)},finishedNodes=[],nodesInProgress=[];for(let x of this.outputs)buildMapOfGraph(x,finishedNodes,nodesInProgress);let reversedNodesInDecreasingDepth=nodesInDecreasingDepth.slice().reverse();for(let node of reversedNodesInDecreasingDepth){nodeIDToNode[node.id]=node,node.id in nodesDepths||(nodesDepths[node.id]=0);let depth=nodesDepths[node.id],previousDepth=layersDepths[node.outboundLayer.id]==null?0:layersDepths[node.outboundLayer.id];depth=Math.max(depth,previousDepth),layersDepths[node.outboundLayer.id]=depth,layerIDToLayer[node.outboundLayer.id]=node.outboundLayer,nodesDepths[node.id]=depth;for(let i=0;iparseInt(x,10)).sort(reverseNumberCompare);this.layers=[];for(let depth of depthKeys){let layersForDepth=layersByDepth[depth];layersForDepth.sort((a,b)=>{let aIndex=layerIndices[a.id],bIndex=layerIndices[b.id];return aIndexbIndex?1:0});for(let layer of layersForDepth)layer instanceof Container&&this.internalContainerRefs.push(layer),this.layers.push(layer)}this.layersByDepth=layersByDepth,depthKeys=Object.keys(nodesByDepth).map(x=>parseInt(x,10)).sort(reverseNumberCompare);let computableTensors=this.inputs.slice(),layersWithCompleteInput=[];for(let depth of depthKeys)for(let node of nodesByDepth[depth]){let layer=node.outboundLayer;if(layer!=null){for(let x of node.inputTensors)if(computableTensors.indexOf(x)===-1)throw new RuntimeError(`Graph disconnected: cannot obtain value for tensor ${x} at layer "${layer.name}". The following previous layers were accessed without issue: ${layersWithCompleteInput}`);for(let x of node.outputTensors)computableTensors.push(x);layersWithCompleteInput.push(layer.name)}}this.nodesByDepth=nodesByDepth;let allNames=this.layers.map(x=>x.name);for(let name of allNames){let numOccurrences=allNames.filter(x=>x===name).length;if(numOccurrences!==1)throw new RuntimeError(`The name "${name}" is used ${numOccurrences} times in the model. All layer names should be unique. Layer names: `+JSON.stringify(allNames))}this.outboundNodes=[],this.inboundNodes=[],new Node({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:this.inputs.map(x=>null),outputMasks:this.outputs.map(x=>null),inputShapes:this.inputs.map(x=>x.shape),outputShapes:this.outputs.map(x=>x.shape)}),this.built=!0,this._refCount=1}assertNotDisposed(){if(this._refCount===0)throw new Error(`Container '${this.name}' is already disposed.`)}dispose(){this.assertNotDisposed();let result={refCountAfterDispose:null,numDisposedVariables:0};if(--this._refCount==0){for(let layer of this.layers)result.numDisposedVariables+=layer.dispose().numDisposedVariables;for(let container of this.internalContainerRefs)result.numDisposedVariables+=container.dispose().numDisposedVariables}return result.refCountAfterDispose=this._refCount,result}get trainable(){return this.trainable_}set trainable(trainable){this.layers.forEach(layer=>{layer._trainableWeights.forEach(w=>w.trainable=trainable)}),this.trainable_=trainable}get trainableWeights(){if(this._trainableWeights.length>0)throw new ValueError("Container instance unexpectedly contains _trainableWeights.The trainable weights of a Container are a union of the trainable weights of its consituent Layers. Its own _trainableWeights must remain an empty Array.");if(!this.trainable)return[];let weights=[];for(let layer of this.layers)weights=weights.concat(layer.trainableWeights);return weights}get nonTrainableWeights(){let weights=[];for(let layer of this.layers)weights.push(...layer.nonTrainableWeights);if(!this.trainable){let trainableWeights=[];for(let layer of this.layers)trainableWeights.push(...layer.trainableWeights);return trainableWeights.concat(weights)}return weights}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}loadWeights(weights,strict=!0){let nameToWeight={},totalWeightsCount=0;for(let layer of this.layers)for(let weight of layer.weights){if(nameToWeight[weight.originalName]!=null)throw new ValueError(`Duplicate weight name: ${weight.originalName}`);nameToWeight[weight.originalName]=weight,totalWeightsCount++}let weightValueTuples=[];for(let name in weights){let validatedName=name;if(nameToWeight[name]==null){let tokens=name.split("/");validatedName=tokens.slice(0,-2).concat([tokens[tokens.length-1]]).join("/")}if(nameToWeight[validatedName]!=null)weightValueTuples.push([nameToWeight[validatedName],weights[name]]);else if(strict)throw new ValueError(`Provided weight data has no target variable: ${name}`);delete nameToWeight[validatedName]}if(strict){let unsetNames=[];for(let name in nameToWeight)unsetNames.push(name);if(unsetNames.length>0)throw new ValueError(`${unsetNames.length} of ${totalWeightsCount} weights are not set: ${unsetNames}`)}batchSetValue(weightValueTuples)}updatedConfig(){let theConfig=this.getConfig(),modelConfig={};return modelConfig.className=this.getClassName(),modelConfig.config=theConfig,modelConfig.kerasVersion=`tfjs-layers ${version2}`,modelConfig.backend="TensorFlow.js",modelConfig}toJSON(unused,returnString=!0){let modelConfig=convertTsToPythonic(this.updatedConfig());return returnString?JSON.stringify(modelConfig):modelConfig}call(inputs,kwargs){return tidy(()=>{inputs=toList(inputs);let feedDict=new FeedDict;for(let i=0;i{inputs=toList(inputs);let masks;return mask==null?masks=pyListRepeat(null,inputs.length):masks=toList(mask),this.runInternalGraph(inputs,masks)[1]})}computeOutputShape(inputShape){let inputShapes=normalizeShapeList(inputShape);if(inputShapes.length!==this.inputLayers.length)throw new ValueError(`Invalid inputShape argument ${inputShape}: model has ${this.inputLayers.length} tensor inputs.`);let layersToOutputShapes={};for(let i=0;iparseInt(x,10)).sort(reverseNumberCompare);if(depthKeys.length>1)for(let depth of depthKeys){let nodes=this.nodesByDepth[depth];for(let node of nodes){let layer=node.outboundLayer;if(this.inputLayers.map(x=>x.id).indexOf(layer.id)!==-1)continue;let inputShapes2=[];for(let j=0;jparseInt(x,10)).sort(reverseNumberCompare);for(let depth of depthKeys){let nodes=this.nodesByDepth[depth];for(let node of nodes){let layer=node.outboundLayer,referenceInputTensors=node.inputTensors,referenceOutputTensors=node.outputTensors,computedData=new Array;for(let x of referenceInputTensors)x.id in tensorMap&&computedData.push(tensorMap[x.id]);if(computedData.length===referenceInputTensors.length){let kwargs={},computedTensors,computedMasks,outputTensors2,outputMasks2;if(node.callArgs!=null&&(kwargs=node.callArgs),computedData.length===1){let[computedTensor,computedMask]=computedData[0];kwargs.mask==null&&(kwargs.mask=computedMask),outputTensors2=toList(layer.call(computedTensor,kwargs)),outputMasks2=toList(layer.computeMask(computedTensor,computedMask)),computedTensors=[computedTensor],computedMasks=[computedMask]}else computedTensors=computedData.map(x=>x[0]),computedMasks=computedData.map(x=>x[1]),kwargs.mask==null&&(kwargs.mask=computedMasks),outputTensors2=toList(layer.call(computedTensors,kwargs)),outputMasks2=toList(layer.computeMask(computedTensors,computedMasks));if(layer.activityRegularizer)throw new NotImplementedError("LayersModel invocation with concrete Tensor value(s) in the presence of activity regularizer(s) is not supported yet.");for(let i=0;i{let losses4=[];for(let layer of this.layers)for(let nodeIndex=0;nodeIndex0){let nodeData=[];for(let i=0;i0&&layer.apply(singletonOrArray(inputTensors2),kwargs)}function processLayer(layerData){let layerName=layerData.name,layer=deserialize(layerData,config.customObjects!=null?config.customObjects:{});layer.setFastWeightInitDuringBuild(fastWeightInit),createdLayers[layerName]=layer,layerData.inboundNodes.forEach(nodeData=>{if(!(nodeData instanceof Array))throw new ValueError(`Corrupted configuration, expected array for nodeData: ${nodeData}`);addUnprocessedNode(layer,nodeData)})}let name=config.name,layersFromConfig=config.layers;for(let layerData of layersFromConfig)processLayer(layerData);for(;!isObjectEmpty(unprocessedNodes);)for(let layerData of layersFromConfig){let layer=createdLayers[layerData.name];if(layer.name in unprocessedNodes){let currentUnprocessedNodesForLayer=unprocessedNodes[layer.name];delete unprocessedNodes[layer.name];for(let nodeData of currentUnprocessedNodesForLayer)processNode(layer,nodeData)}}let inputTensors=[],outputTensors=[],inputLayersFromConfig=config.inputLayers;for(let layerData of inputLayersFromConfig){let layerName=layerData[0],nodeIndex=layerData[1],tensorIndex=layerData[2];assert2(layerName in createdLayers);let layerOutputTensors=createdLayers[layerName].inboundNodes[nodeIndex].outputTensors;inputTensors.push(layerOutputTensors[tensorIndex])}let outputLayersFromConfig=config.outputLayers;for(let layerData of outputLayersFromConfig){let layerName=layerData[0],nodeIndex=layerData[1],tensorIndex=layerData[2];assert2(layerName in createdLayers);let layerOutputTensors=createdLayers[layerName].inboundNodes[nodeIndex].outputTensors;outputTensors.push(layerOutputTensors[tensorIndex])}return new cls({inputs:inputTensors,outputs:outputTensors,name})}get stateful(){if(this._stateful)throw new ValueError("Container instance unexpectedly has _stateful = true. The statefulness of a Container is determined by the Layers it contains. Its _stateful property must remain the default false.");for(let layer of this.layers)if(layer.stateful)return!0;return!1}resetStates(){tidy(()=>{this.layers.forEach(layer=>{layer.stateful&&layer.resetStates()})})}};function standardizeSampleOrClassWeights(xWeight,outputNames,weightType){let numOutputs=outputNames.length;if(xWeight==null||Array.isArray(xWeight)&&xWeight.length===0)return outputNames.map(name=>null);if(numOutputs===1)return Array.isArray(xWeight)&&xWeight.length===1?xWeight:typeof xWeight=="object"&&outputNames[0]in xWeight?[xWeight[outputNames[0]]]:[xWeight];if(Array.isArray(xWeight)){if(xWeight.length!==numOutputs)throw new Error(`Provided ${weightType} is an array of ${xWeight.length} element(s), but the model has ${numOutputs} outputs. Make sure a set of weights is provided for each model output.`);return xWeight}else if(typeof xWeight=="object"&&Object.keys(xWeight).length>0&&typeof xWeight[Object.keys(xWeight)[0]]=="object"){let output=[];return outputNames.forEach(outputName=>{outputName in xWeight?output.push(xWeight[outputName]):output.push(null)}),output}else throw new Error(`The model has multiple (${numOutputs}) outputs, so ${weightType} must be either an array with ${numOutputs} elements or an object with ${outputNames} keys. Provided ${weightType} not understood: ${JSON.stringify(xWeight)}`)}function standardizeClassWeights(classWeight,outputNames){return standardizeSampleOrClassWeights(classWeight,outputNames,"classWeight")}async function standardizeWeights(y,sampleWeight,classWeight,sampleWeightMode){if(sampleWeight!=null||sampleWeightMode!=null)throw new Error("Support sampleWeight is not implemented yet");if(classWeight!=null){let yClasses=tidy(()=>{if(y.shape.length===1)return y.clone();if(y.shape.length===2)if(y.shape[1]>1){let axis=1;return y.argMax(axis)}else{if(y.shape[1]===1)return y.reshape([y.shape[0]]);throw new Error(`Encountered unexpected last-dimension size (${y.shape[1]}) during handling of class weights. The size is expected to be >= 1.`)}else throw new Error(`Unexpected rank of target (y) tensor (${y.rank}) during handling of class weights. The rank is expected to be 1 or 2.`)}),yClassIndices=Array.from(await yClasses.data());dispose(yClasses);let classSampleWeight=[];return yClassIndices.forEach(classIndex=>{if(classWeight[classIndex]==null)throw new Error(`classWeight must contain all classes in the training data. The class ${classIndex} exists in the data but not in classWeight`);classSampleWeight.push(classWeight[classIndex])}),tensor1d(classSampleWeight,"float32")}else return null}function computeWeightedLoss2(losses4,sampleWeights){return mul(losses4,sampleWeights)}var DEFAULT_VALIDATION_BATCH_SIZE=32;function standardizeDataIteratorOutput(model2,iteratorOut){let xs,ys,iteratorOutObj=iteratorOut;xs=iteratorOutObj.xs,ys=iteratorOutObj.ys,util_exports.assert(xs!=null&&ys!=null,()=>`A Dataset iterator for fitDataset() is expected to generate objects of the form \`{xs: xVal, ys: yVal}\`, where the two values may be \`tf.Tensor\`, an array of Tensors, or a map of string to Tensor. The provided Dataset instead generates ${iteratorOut}`);let flattenedXs=flattenTensorOrArrayOrMap("input",model2.inputNames,xs),flattenedYs=flattenTensorOrArrayOrMap("output",model2.outputNames,ys),batchSize=flattenedXs[0].shape[0];util_exports.assert(flattenedXs.length===model2.inputs.length,()=>`LayersModel has ${model2.inputs.length} inputs, but the dataset provides ${flattenedXs.length} inputs. (Expected input keys: ${JSON.stringify(model2.inputNames)})`),util_exports.assert(flattenedYs.length===model2.outputs.length,()=>`LayersModel has ${model2.outputs.length} outputs, but the dataset provides ${flattenedYs.length} outputs. (Expected output keys: ${JSON.stringify(model2.outputNames)})`);for(let xIndex=0;xIndex`Batch size mismatch: input ${model2.inputNames[xIndex]} has ${flattenedXs[xIndex].shape[0]}; expected ${batchSize} based on input ${model2.inputNames[0]}.`);for(let yIndex=0;yIndex`Batch size mismatch: output ${model2.outputNames[yIndex]} has ${flattenedYs[yIndex].shape[0]}; expected ${batchSize} based on input ${model2.inputNames[0]}.`);return{xs:flattenedXs,ys:flattenedYs}}function flattenTensorOrArrayOrMap(inputOrOutput,names,values){if(values instanceof Tensor)return[values];if(Array.isArray(values))return util_exports.assert(values.length===names.length,()=>`Received an array of ${values.length} Tensors, but expected ${names.length} to match the ${inputOrOutput} keys ${names}.`),values;{let result=[];for(let name of names){if(values[name]==null)throw new ValueError(`The feature data generated by the dataset lacks the required ${inputOrOutput} key '${name}'.`);result.push(values[name])}return result}}function standardizeTensorValidationData(data){if(data.length===3)throw new NotImplementedError("Validation with sample weights is not implemented yet.");return{xs:data[0],ys:data[1]}}async function fitDataset(model2,dataset,args){let hasBatchesPerEpoch=args.batchesPerEpoch!=null;if(util_exports.assert(model2.optimizer!=null,()=>"You must compile a model before training/testing. Use LayersModel.compile(modelCompileConfig)."),util_exports.assert(args!=null,()=>"For fitDataset(), the 2nd argument (config) is required, but it is not provided in this call."),util_exports.assert(args.epochs!=null&&args.epochs>0&&Number.isInteger(args.epochs),()=>`For fitDataset(), config.epochs is expected to be a positive integer, but got ${args.epochs}`),util_exports.assert(!hasBatchesPerEpoch||args.batchesPerEpoch>0&&Number.isInteger(args.batchesPerEpoch),()=>`For fitDataset(), config.batchesPerEpoch is expected to be a positive integer if specified, but got ${args.batchesPerEpoch}`),util_exports.assert(args.validationSplit==null,()=>"`validationSplit` is not supported by `fitDataset()`. Use validationData instead."),model2.isTraining)throw new Error("Cannot start training because another fit() call is ongoing.");model2.isTraining=!0;try{let doValidation=args.validationData!=null,valXs,valYs;if(doValidation)if(isDatasetObject(args.validationData))util_exports.assert(args.validationBatches==null||args.validationBatches>0&&Number.isInteger(args.validationBatches),()=>`For fitDataset() with dataset-based validation, config.validationBatches is expected not to be provided, or to be a positive integer, but got ${args.validationBatches}`);else{let validationData=standardizeTensorValidationData(args.validationData);valXs=validationData.xs,valYs=validationData.ys}let trainFunction=model2.makeTrainFunction(),outLabels=model2.getDedupedMetricsNames(),callbackMetrics;doValidation?callbackMetrics=outLabels.slice().concat(outLabels.map(n=>"val_"+n)):callbackMetrics=outLabels.slice();let callbacks2=standardizeCallbacks(args.callbacks,args.yieldEvery),verbose=args.verbose==null?1:args.verbose,{callbackList,history}=configureCallbacks(callbacks2,verbose,args.epochs,null,null,getStepsPerEpoch(dataset,args),null,doValidation,callbackMetrics);callbackList.setModel(model2),model2.history=history,await callbackList.onTrainBegin(),model2.stopTraining_=!1;let epoch=args.initialEpoch==null?0:args.initialEpoch,dataIterator=await dataset.iterator();for(;epoch=args.batchesPerEpoch:iteratorOut.done){if(doValidation){let valOuts;isDatasetObject(args.validationData)?valOuts=toList(await model2.evaluateDataset(args.validationData,{batches:args.validationBatches})):valOuts=toList(model2.evaluate(valXs,valYs,{batchSize:args.validationBatchSize==null?DEFAULT_VALIDATION_BATCH_SIZE:args.validationBatchSize,verbose:0}));for(let i=0;i0)throw new NotImplementedError("Verbose mode is not implemented yet.");util_exports.assert(!hasBatches||args.batches>0&&Number.isInteger(args.batches),()=>`Test loop expects \`batches\` to be a positive integer, but received ${JSON.stringify(args.batches)}`);let dataIterator=isLazyIteratorObject(dataset)?dataset:await dataset.iterator(),numExamples=0,batch=0;for(;hasBatches?batch{if(iteratorOut.value){let{xs,ys}=standardizeDataIteratorOutput(model2,iteratorOut.value),xsAndYs=xs.concat(ys),batchOuts=tidy(()=>f(xsAndYs));if(dispose(xsAndYs),batch===0)for(let i=0;iadd2(outs[i],mul(batchSize,batchOut))),batch>0&&dispose(oldScalar)}dispose(batchOuts),numExamples+=batchSize,++batch}return outs}),iteratorOut.done){hasBatches&&console.warn(`Your dataset iterator ran out of data during evaluateDataset(). Interrupting evalution. Make sure that your dataset can generate at least \`batches\` batches (in this case, ${args.batches} batches). You may need to use the repeat() function when building your dataset.`);break}}for(let i=0;i0&&Number.isInteger(batchSize),()=>`batchSize is required to be a positive integer, but got ${batchSize}`)}function sliceArrays(arrays,start,stop){return arrays==null?[null]:Array.isArray(arrays)?arrays.map(array2=>sliceAlongFirstAxis(array2,start,stop-start)):sliceAlongFirstAxis(arrays,start,stop-start)}function sliceArraysByIndices(arrays,indices){return tidy(()=>arrays==null?null:Array.isArray(arrays)?arrays.map(array2=>sliceArraysByIndices(array2,indices)):gather2(arrays,indices.dtype==="int32"?indices:indices.toInt()))}function makeBatches(size,batchSize){let output=[],batchStart=0,batchEnd=null;for(;batchStart=size&&(batchEnd=size),output.push([batchStart,batchEnd]),batchStart=batchEnd;return output}async function fitLoop(model2,f,ins,outLabels,batchSize,epochs,verbose,callbacks2,valF,valIns,shuffle2,callbackMetrics,initialEpoch,stepsPerEpoch,validationSteps){batchSize==null&&(batchSize=32),epochs==null&&(epochs=1),shuffle2==null&&(shuffle2=!0),initialEpoch==null&&(initialEpoch=0);let doValidation=!1;if(valF!=null&&valIns!=null&&(doValidation=!0),validationSteps!=null&&(doValidation=!0,stepsPerEpoch==null))throw new ValueError("Can only use `validationSteps` when doing step-wise training, i.e., `stepsPerEpoch` must be set.");let numTrainSamples=model2.checkNumSamples(ins,batchSize,stepsPerEpoch,"steps_per_epoch"),indexArray;numTrainSamples!=null&&(indexArray=range2(0,numTrainSamples)),verbose==null&&(verbose=1);let{callbackList,history}=configureCallbacks(callbacks2,verbose,epochs,initialEpoch,numTrainSamples,stepsPerEpoch,batchSize,doValidation,callbackMetrics);callbackList.setModel(model2),model2.history=history,await callbackList.onTrainBegin(),model2.stopTraining_=!1;for(let epoch=initialEpoch;epoch{let batchStart=batches[batchIndex][0],batchEnd=batches[batchIndex][1],batchIds=sliceAlongFirstAxis(epochIndexArray1D,batchStart,batchEnd-batchStart);batchLogs.batch=batchIndex,batchLogs.size=batchEnd-batchStart;let insBatch=sliceArraysByIndices(ins,batchIds),outs=f(insBatch);for(let i=0;i0){if(doValidation=!0,args.validationData.length===2)inputValX=args.validationData[0],inputValY=args.validationData[1];else throw args.validationData.length===3?new NotImplementedError("validationData including sample weights is not supported yet."):new ValueError(`When passing validation data, it must contain 2 (valX, valY) or 3 (valX, valY, valSampleWeight) items; ${args.validationData} is invalid.`);let checkBatchAxis2=!0,valStandardized=await model2.standardizeUserData(inputValX,inputValY,null,null,checkBatchAxis2,batchSize);valX=valStandardized[0],valY=valStandardized[1],valIns=valX.concat(valY)}else if(args.validationSplit!=null&&args.validationSplit>0&&args.validationSplit<1){doValidation=!0;let splitAt=Math.floor(inputs[0].shape[0]*(1-args.validationSplit)),originalBatchSize=inputs[0].shape[0];valX=sliceArrays(inputs,splitAt,originalBatchSize),inputs=sliceArrays(inputs,0,splitAt),valY=sliceArrays(targets,splitAt,originalBatchSize),targets=sliceArrays(targets,0,splitAt),valIns=valX.concat(valY)}else args.validationSteps!=null&&(doValidation=!0);let ins=inputs.concat(targets).concat(sampleWeights);model2.checkTrainableWeightsConsistency();let trainFunction=model2.makeTrainFunction(),outLabels=model2.getDedupedMetricsNames(),valFunction,callbackMetrics;doValidation?(model2.makeTestFunction(),valFunction=model2.testFunction,callbackMetrics=outLabels.slice().concat(outLabels.map(n=>"val_"+n))):(valFunction=null,valIns=[],callbackMetrics=outLabels.slice());let callbacks2=standardizeCallbacks(args.callbacks,args.yieldEvery);return await fitLoop(model2,trainFunction,ins,outLabels,batchSize,args.epochs,args.verbose,callbacks2,valFunction,valIns,args.shuffle,callbackMetrics,args.initialEpoch,null,null)}finally{model2.isTraining=!1,disposeNewTensors(inputs,x),disposeNewTensors(targets,y),disposeNewTensors(valX,inputValX),disposeNewTensors(valY,inputValY),sampleWeights!=null&&dispose(sampleWeights)}}function ensureTensorsRank2OrHigher(tensors){let outs=[];tensors instanceof Tensor&&(tensors=[tensors]);for(let i=0;ioldTensorIds.push(t.id));else if(refTensors!=null)for(let name in refTensors){let oldTensor=refTensors[name];oldTensorIds.push(oldTensor.id)}let tensorsToDispose=[];if(tensors instanceof Tensor)oldTensorIds.indexOf(tensors.id)===-1&&tensorsToDispose.push(tensors);else if(Array.isArray(tensors))tensors.forEach(t=>{oldTensorIds.indexOf(t.id)===-1&&tensorsToDispose.push(t)});else if(tensors!=null)for(let name in tensors){let tensor2=tensors[name];oldTensorIds.indexOf(tensor2.id)===-1&&tensorsToDispose.push(tensor2)}tensorsToDispose.forEach(t=>{t.isDisposed||t.dispose()})}function isDataTensor(x){return x instanceof Tensor}function isDataArray(x){return Array.isArray(x)}function isDataDict(x){return!isDataTensor(x)&&!isDataArray(x)}function standardizeInputData(data,names,shapes,checkBatchAxis=!0,exceptionPrefix=""){if(names==null||names.length===0){if(data!=null){let gotUnexpectedData=!1;if(isDataArray(data)&&data.length>0)gotUnexpectedData=!0;else if(isDataDict(data)){for(let key in data)if(data.hasOwnProperty(key)){gotUnexpectedData=!0;break}}else gotUnexpectedData=!0;if(gotUnexpectedData)throw new ValueError(`Error when checking model ${exceptionPrefix} expected no data, but got ${data}`)}return[]}if(data==null)return names.map(name=>null);let arrays;if(isDataDict(data)){data=data,arrays=[];for(let name of names){if(data[name]==null)throw new ValueError(`No data provided for "${name}". Need data for each key in: ${names}`);arrays.push(data[name])}}else if(isDataArray(data)){if(data=data,data.length!==names.length)throw new ValueError(`Error when checking model ${exceptionPrefix}: the Array of Tensors that you are passing to your model is not the size the model expected. Expected to see ${names.length} Tensor(s), but instead got the following list of Tensor(s): ${data}`);arrays=data}else{if(data=data,names.length>1)throw new ValueError(`The model ${exceptionPrefix} expects ${names.length} Tensor(s), but only received one Tensor. Found: Tensor with shape ${data.shape}`);arrays=[data]}if(arrays=ensureTensorsRank2OrHigher(arrays),shapes!=null)for(let i=0;i=0&&dim!==refDim)throw new ValueError(`Error when checking ${exceptionPrefix}: expected ${names[i]} to have shape [${shapes[i]}], but got array with shape [${array2.shape}].`)}}return arrays}function checkArrayLengths(inputs,targets,weights){let setX=unique2(inputs.map(input2=>input2.shape[0]));setX.sort();let setY=unique2(targets.map(target=>target.shape[0]));if(setY.sort(),setX.length>1)throw new ValueError(`All input Tensors (x) should have the same number of samples. Got array shapes: ${JSON.stringify(inputs.map(input2=>input2.shape))}`);if(setY.length>1)throw new ValueError(`All target Tensors (y) should have the same number of samples. Got array shapes: ${JSON.stringify(targets.map(target=>target.shape))}`);if(setX.length>0&&setY.length>0&&!util_exports.arraysEqual(setX,setY))throw new ValueError(`Input Tensors should have the same number of samples as target Tensors. Found ${setX[0]} input sample(s) and ${setY[0]} target sample(s).`)}function checkLossAndTargetCompatibility(targets,lossFns,outputShapes){let keyLosses=[meanSquaredError2,binaryCrossentropy,categoricalCrossentropy];for(let i=0;i1)throw new ValueError(`The model expects ${names.length} ${exceptionPrefix} Tensors, but only received one Tensor. Found: array with shape ${JSON.stringify(data.shape)}.`);arrays=[data]}if(shapes!=null)for(let i=0;i[]);let wrappedMetrics;if(typeof metrics2=="string"||typeof metrics2=="function")wrappedMetrics=[metrics2];else if(Array.isArray(metrics2)||typeof metrics2=="object")wrappedMetrics=metrics2;else throw new TypeError(`Type of metrics argument not understood. Expected an string,function, Array, or Object, found: ${metrics2}`);if(Array.isArray(wrappedMetrics))return outputNames.map(name=>wrappedMetrics);{let nestedMetrics=[];for(let name of outputNames){let outputMetrics=wrappedMetrics.hasOwnProperty(name)?wrappedMetrics[name]:[];Array.isArray(outputMetrics)||(outputMetrics=[outputMetrics]),nestedMetrics.push(outputMetrics)}return nestedMetrics}}var LAYERS_MODEL_FORMAT_NAME="layers-model",LayersModel=class extends Container{constructor(args){super(args);this.isTraining=!1}summary(lineLength,positions,printFn=console.log){if(!this.built)throw new ValueError("This model has never been called, thus its weights have not been created yet. So no summary can be displayed. Build the model first (e.g., by calling it on some test data).");printSummary(this,lineLength,positions,printFn)}compile(args){if(args.loss==null&&(args.loss=[]),this.loss=args.loss,typeof args.optimizer=="string")this.optimizer_=getOptimizer(args.optimizer),this.isOptimizerOwned=!0;else{if(!(args.optimizer instanceof Optimizer))throw new ValueError("User-defined optimizer must be an instance of tf.Optimizer.");this.optimizer_=args.optimizer,this.isOptimizerOwned=!1}let lossFunctions=[];if(!Array.isArray(args.loss)&&typeof args.loss!="string"&&typeof args.loss!="function"){args.loss=args.loss;for(let name in args.loss)if(this.outputNames.indexOf(name)===-1)throw new ValueError(`Unknown entry in loss dictionary: "${name}". Only expected the following keys: ${this.outputNames}`);for(let name of this.outputNames)args.loss[name]==null&&console.warn(`Output "${name}" is missing from loss dictionary. We assume this was done on purpose, and we will not be expecting data to be passed to ${name} during training`),lossFunctions.push(get(args.loss[name]))}else if(Array.isArray(args.loss)){if(args.loss.length!==this.outputs.length)throw new ValueError(`When passing an Array as loss, it should have one entry per model output. The model has ${this.outputs.length} output(s), but you passed loss=${args.loss}.`);lossFunctions=args.loss.map(l=>get(l))}else{let lossFunction=get(args.loss);this.outputs.forEach(_=>{lossFunctions.push(lossFunction)})}this.lossFunctions=lossFunctions,this.feedOutputNames=[],this.feedOutputShapes=[],this.feedLossFns=[];for(let i=0;i{for(let i=0;i1&&(this.metricsTensors.push([weightedLoss,i]),this.metricsNames.push(this.outputNames[i]+"_loss"))}});let nestedMetrics=collectMetrics(args.metrics,this.outputNames),appendMetric=(outputIndex,metricName,metricTensor)=>{this.outputNames.length>1&&(metricName=this.outputNames[outputIndex]+"_"+metricName),this.metricsNames.push(metricName),this.metricsTensors.push([metricTensor,outputIndex])};nameScope("metric",()=>{for(let i=0;i{let metricNamePrefix="",metricName,accFn,weightedMetricFn;for(let metric of metrics2){if(typeof metric=="string"&&["accuracy","acc","crossentropy","ce"].indexOf(metric)!==-1){let outputShape=this.internalOutputShapes[i];outputShape[outputShape.length-1]===1||this.lossFunctions[i]===binaryCrossentropy?["accuracy","acc"].indexOf(metric)!==-1?accFn=binaryAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=binaryCrossentropy2):this.lossFunctions[i]===sparseCategoricalCrossentropy?["accuracy","acc"].indexOf(metric)!==-1?accFn=sparseCategoricalAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=sparseCategoricalCrossentropy2):["accuracy","acc"].indexOf(metric)!==-1?accFn=categoricalAccuracy:["crossentropy","ce"].indexOf(metric)!==-1&&(accFn=categoricalCrossentropy2);let suffix;["accuracy","acc"].indexOf(metric)!==-1?suffix="acc":["crossentropy","ce"].indexOf(metric)!==-1&&(suffix="ce"),weightedMetricFn=accFn,metricName=metricNamePrefix+suffix}else weightedMetricFn=get2(metric),metricName=metricNamePrefix+getLossOrMetricName(metric);let metricResult;nameScope(metricName,()=>{metricResult=weightedMetricFn}),appendMetric(i,metricName,metricResult)}})(outputMetrics)}}),this.collectedTrainableWeights=this.trainableWeights}checkTrainableWeightsConsistency(){this.collectedTrainableWeights!=null&&this.trainableWeights.length!==this.collectedTrainableWeights.length&&console.warn("Discrepancy between trainableweights and collected trainable weights. Did you set `model.trainable` without calling `model.compile()` afterwards?")}evaluate(x,y,args={}){let batchSize=args.batchSize==null?32:args.batchSize;checkBatchSize(batchSize);let checkBatchAxis=!0,standardizedOuts=this.standardizeUserDataXY(x,y,checkBatchAxis,batchSize);try{let ins=standardizedOuts[0].concat(standardizedOuts[1]);this.makeTestFunction();let f=this.testFunction,testOuts=this.testLoop(f,ins,batchSize,args.verbose,args.steps);return singletonOrArray(testOuts)}finally{disposeNewTensors(standardizedOuts[0],x),disposeNewTensors(standardizedOuts[1],y)}}async evaluateDataset(dataset,args){return this.makeTestFunction(),evaluateDataset(this,dataset,args)}checkNumSamples(ins,batchSize,steps,stepsName="steps"){let numSamples;if(steps!=null){if(numSamples=null,batchSize!=null)throw new ValueError(`If ${stepsName} is set, batchSize must be null or undefined.Got batchSize = ${batchSize}`)}else if(ins!=null)Array.isArray(ins)?numSamples=ins[0].shape[0]:numSamples=ins.shape[0];else throw new ValueError(`Either the input data should have a defined shape, or ${stepsName} shoud be specified.`);return numSamples}execute(inputs,outputs){if(Array.isArray(outputs)&&outputs.length===0)throw new ValueError("`outputs` is an empty Array, which is not allowed.");let outputsIsArray=Array.isArray(outputs),outputNames=outputsIsArray?outputs:[outputs],outputSymbolicTensors=this.retrieveSymbolicTensors(outputNames),feedDict=new FeedDict;if(inputs instanceof Tensor&&(inputs=[inputs]),Array.isArray(inputs)){if(inputs.length!==this.inputs.length)throw new ValueError(`The number of inputs provided (${inputs.length}) does not match the number of inputs of this model (${this.inputs.length}).`);for(let i=0;ioutput.name);for(let i=0;i0){let remainingNames=[];throw outputSymbolicTensors.forEach((tensor2,i)=>{tensor2==null&&remainingNames.push(symbolicTensorNames[i])}),new ValueError(`Cannot find SymbolicTensors for output name(s): ${JSON.stringify(remainingNames)}`)}return outputSymbolicTensors}predictLoop(ins,batchSize=32,verbose=!1){return tidy(()=>{let numSamples=this.checkNumSamples(ins);if(verbose)throw new NotImplementedError("Verbose predictLoop() is not implemented yet.");let batches=makeBatches(numSamples,batchSize),outsBatches=this.outputs.map(output=>[]);for(let batchIndex=0;batchIndex{let batchStart=batches[batchIndex][0],batchEnd=batches[batchIndex][1],insBatch=sliceArrays(ins,batchStart,batchEnd),feeds=[];if(Array.isArray(insBatch))for(let i=0;ioutsBatches[i].push(batchOut));return singletonOrArray(outsBatches.map(batches2=>concat(batches2,0)))})}predict(x,args={}){let xsRank2OrHigher=ensureTensorsRank2OrHigher(x);checkInputData(xsRank2OrHigher,this.inputNames,this.feedInputShapes,!1);try{let batchSize=args.batchSize==null?32:args.batchSize;return checkBatchSize(batchSize),this.predictLoop(xsRank2OrHigher,batchSize)}finally{disposeNewTensors(xsRank2OrHigher,x)}}predictOnBatch(x){checkInputData(x,this.inputNames,this.feedInputShapes,!0);let batchSize=(Array.isArray(x)?x[0]:x).shape[0];return this.predictLoop(x,batchSize)}standardizeUserDataXY(x,y,checkBatchAxis=!0,batchSize){if(this.optimizer_==null)throw new RuntimeError("You must compile a model before training/testing. Use LayersModel.compile(modelCompileArgs).");let outputShapes=[];for(let i=0;i0&&x[0].shape[0]%batchSize!=0)throw new ValueError(`In a stateful network, you should only pass inputs with a number of samples that is divisible by the batch size ${batchSize}. Found: ${x[0].shape[0]} sample(s).`);return[x,y]}async standardizeUserData(x,y,sampleWeight,classWeight,checkBatchAxis=!0,batchSize){let[standardXs,standardYs]=this.standardizeUserDataXY(x,y,checkBatchAxis,batchSize);if(sampleWeight!=null)throw new Error("sample weight is not supported yet.");let standardSampleWeights=null;if(classWeight!=null){let classWeights=standardizeClassWeights(classWeight,this.outputNames);standardSampleWeights=[];for(let i=0;i{let numSamples=this.checkNumSamples(ins,batchSize,steps,"steps"),outs=[];if(verbose>0)throw new NotImplementedError("Verbose mode is not implemented yet.");if(steps!=null)throw new NotImplementedError("steps mode in testLoop() is not implemented yet");{let batches=makeBatches(numSamples,batchSize),indexArray=tensor1d(range2(0,numSamples));for(let batchIndex=0;batchIndex1&&(newLabel+=`_${count(outLabels.slice(0,i),label)}`),dedupedOutLabels.push(newLabel)}return dedupedOutLabels}makeTrainFunction(){return data=>{let lossValues=[],inputs=data.slice(0,this.inputs.length),targets=data.slice(this.inputs.length,this.inputs.length+this.outputs.length),sampleWeights=data.slice(this.inputs.length+this.outputs.length,this.inputs.length+this.outputs.length*2),metricsValues=[],totalLossFunction=()=>{let feeds=[];for(let i=0;i1&&i{totalLoss=add2(totalLoss,regularizerLoss)}),totalLoss},variables=this.collectedTrainableWeights.map(param=>param.read()),returnCost=!0;return[this.optimizer_.minimize(totalLossFunction,returnCost,variables)].concat(metricsValues)}}makeTestFunction(){this.testFunction=data=>tidy(()=>{let valOutputs=[],totalLoss,inputs=data.slice(0,this.inputs.length),targets=data.slice(this.inputs.length,this.inputs.length+this.outputs.length),feeds=[];for(let i=0;itoSnakeCase(name))}else{let outputNames=Object.keys(this.loss);lossNames={};let losses4=this.loss;for(let outputName of outputNames)if(typeof losses4[outputName]=="string")lossNames[outputName]=toSnakeCase(losses4[outputName]);else throw new Error("Serialization of non-string loss is not supported.")}return lossNames}getMetricIdentifiers(){if(typeof this.metrics=="string"||typeof this.metrics=="function")return[toSnakeCase(getLossOrMetricName(this.metrics))];if(Array.isArray(this.metrics))return this.metrics.map(metric=>toSnakeCase(getLossOrMetricName(metric)));{let metricsIdentifiers={};for(let key in this.metrics)metricsIdentifiers[key]=toSnakeCase(getLossOrMetricName(this.metrics[key]));return metricsIdentifiers}}getTrainingConfig(){return{loss:this.getLossIdentifiers(),metrics:this.getMetricIdentifiers(),optimizer_config:{class_name:this.optimizer.getClassName(),config:this.optimizer.getConfig()}}}loadTrainingConfig(trainingConfig){if(trainingConfig.weighted_metrics!=null)throw new Error("Loading weight_metrics is not supported yet.");if(trainingConfig.loss_weights!=null)throw new Error("Loading loss_weights is not supported yet.");if(trainingConfig.sample_weight_mode!=null)throw new Error("Loading sample_weight_mode is not supported yet.");let tsConfig=convertPythonicToTs(trainingConfig.optimizer_config),optimizer=deserialize(tsConfig),loss;if(typeof trainingConfig.loss=="string")loss=toCamelCase(trainingConfig.loss);else if(Array.isArray(trainingConfig.loss))loss=trainingConfig.loss.map(lossEntry=>toCamelCase(lossEntry));else if(trainingConfig.loss!=null){loss={};for(let key in trainingConfig.loss)loss[key]=toCamelCase(trainingConfig.loss[key])}let metrics2;if(Array.isArray(trainingConfig.metrics))metrics2=trainingConfig.metrics.map(metric=>toCamelCase(metric));else if(trainingConfig.metrics!=null){metrics2={};for(let key in trainingConfig.metrics)metrics2[key]=toCamelCase(trainingConfig.metrics[key])}this.compile({loss,metrics:metrics2,optimizer})}async save(handlerOrURL,config){if(typeof handlerOrURL=="string"){let handlers=io_exports.getSaveHandlers(handlerOrURL);if(handlers.length===0)throw new ValueError(`Cannot find any save handlers for URL '${handlerOrURL}'`);if(handlers.length>1)throw new ValueError(`Found more than one (${handlers.length}) save handlers for URL '${handlerOrURL}'`);handlerOrURL=handlers[0]}if(handlerOrURL.save==null)throw new ValueError("LayersModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");let weightDataAndSpecs=await io_exports.encodeWeights(this.getNamedWeights(config)),returnString=!1,unusedArg=null,modelArtifacts={modelTopology:this.toJSON(unusedArg,returnString),format:LAYERS_MODEL_FORMAT_NAME,generatedBy:`TensorFlow.js tfjs-layers v${version2}`,convertedBy:null};if((config==null?!1:config.includeOptimizer)&&this.optimizer!=null){modelArtifacts.trainingConfig=this.getTrainingConfig();let weightType="optimizer",{data:optimizerWeightData,specs:optimizerWeightSpecs}=await io_exports.encodeWeights(await this.optimizer.getWeights(),weightType);weightDataAndSpecs.specs.push(...optimizerWeightSpecs),weightDataAndSpecs.data=io_exports.concatenateArrayBuffers([weightDataAndSpecs.data,optimizerWeightData])}if(this.userDefinedMetadata!=null){let checkSize=!0;checkUserDefinedMetadata(this.userDefinedMetadata,this.name,checkSize),modelArtifacts.userDefinedMetadata=this.userDefinedMetadata}return modelArtifacts.weightData=weightDataAndSpecs.data,modelArtifacts.weightSpecs=weightDataAndSpecs.specs,handlerOrURL.save(modelArtifacts)}setUserDefinedMetadata(userDefinedMetadata){checkUserDefinedMetadata(userDefinedMetadata,this.name),this.userDefinedMetadata=userDefinedMetadata}getUserDefinedMetadata(){return this.userDefinedMetadata}};LayersModel.className="Model";serialization_exports.registerClass(LayersModel);var Functional=class extends LayersModel{};Functional.className="Functional";serialization_exports.registerClass(Functional);async function modelFromJSON(modelAndWeightsConfig,customObjects){"modelTopology"in modelAndWeightsConfig||(modelAndWeightsConfig={modelTopology:modelAndWeightsConfig}),modelAndWeightsConfig=modelAndWeightsConfig;let modelTopology=modelAndWeightsConfig.modelTopology;modelTopology.model_config!=null&&(modelTopology=modelTopology.model_config);let tsConfig=convertPythonicToTs(modelTopology),model2=deserialize(tsConfig,customObjects);if(modelAndWeightsConfig.weightsManifest!=null){let weightValues=await io_exports.loadWeights(modelAndWeightsConfig.weightsManifest,modelAndWeightsConfig.pathPrefix,model2.weights.map(weight=>weight.originalName)),uniqueWeightValues={};for(let weight of model2.weights)uniqueWeightValues[weight.originalName]=weightValues[weight.originalName];model2.loadWeights(uniqueWeightValues),dispose(weightValues)}return model2}async function loadLayersModelInternal(pathOrIOHandler,options){if(options==null&&(options={}),typeof pathOrIOHandler=="string"){let handlers=io_exports.getLoadHandlers(pathOrIOHandler,options);if(handlers.length===0)handlers.push(io_exports.browserHTTPRequest(pathOrIOHandler,options));else if(handlers.length>1)throw new ValueError(`Found more than one (${handlers.length}) load handlers for URL '${pathOrIOHandler}'`);pathOrIOHandler=handlers[0]}return loadLayersModelFromIOHandler(pathOrIOHandler,void 0,options)}async function loadLayersModelFromIOHandler(handler,customObjects,options){if(options==null&&(options={}),handler.load==null)throw new ValueError("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let artifacts=await handler.load(),modelTopology=artifacts.modelTopology;modelTopology.model_config!=null&&(modelTopology=modelTopology.model_config);let strict=options.strict==null?!0:options.strict,fastWeightInit=artifacts.weightData!=null&&artifacts.weightSpecs!=null&&strict,model2=deserialize(convertPythonicToTs(modelTopology),customObjects,fastWeightInit),trainingConfig=artifacts.trainingConfig;if(trainingConfig!=null&&model2.loadTrainingConfig(trainingConfig),artifacts.userDefinedMetadata!=null&&model2.setUserDefinedMetadata(artifacts.userDefinedMetadata),artifacts.weightData!=null){if(artifacts.weightSpecs==null)throw new ValueError("LayersModel artifacts contains weight data, but not weight specs. Therefore loading of weights cannot proceed.");let{modelWeights,optimizerWeights}=decodeModelAndOptimizerWeights(artifacts.weightData,artifacts.weightSpecs);model2.loadWeights(modelWeights,strict),model2.optimizer!=null&&optimizerWeights.length>0&&await model2.optimizer.setWeights(optimizerWeights),dispose(modelWeights),dispose(optimizerWeights.map(w=>w.tensor))}return model2}function decodeModelAndOptimizerWeights(buffer2,specs){let name2Tensor=io_exports.decodeWeights(buffer2,specs),modelWeights={},optimizerWeights=[];return specs.forEach(spec=>{spec.group==="optimizer"?optimizerWeights.push({name:spec.name,tensor:name2Tensor[spec.name]}):modelWeights[spec.name]=name2Tensor[spec.name]}),{modelWeights,optimizerWeights}}var Sequential=class extends LayersModel{constructor(args){super({inputs:[],outputs:[]});if(args=args||{},this.trainable=!0,this.built=!1,this.name=args.name!=null?args.name:getUid("sequential_"),args.layers!=null)for(let layer of args.layers)this.add(layer)}checkShape(layer){if(layer.inboundNodes[0].outputTensors[0].shape.some(x=>x<0))throw new ValueError(`Negative dimension size caused by adding layer ${layer.name} with input shape [${layer.inboundNodes[0].inputTensors[0].shape}]`)}add(layer){let isLayerModelInstance=layer instanceof Sequential||layer instanceof LayersModel,modelLayer;if(isLayerModelInstance){if(modelLayer=layer,modelLayer.outputs.length!==1)throw new ValueError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");if(modelLayer.inputs.length!==1)throw new ValueError("All layers in a Sequential model should have a single input tensor. For multi-input layers, use the functional API.")}if(this.outputs.length===0){if(layer.inboundNodes.length===0){if(layer.batchInputShape==null)throw new ValueError("The first layer in a Sequential model must get an `inputShape` or `batchInputShape` argument.");let x=Input({batchShape:layer.batchInputShape,dtype:layer.dtype,name:layer.name+"_input"});layer.apply(x)}if(isLayerModelInstance)this.outputs=modelLayer.outputs,this.inputs=modelLayer.inputs;else{if(layer.inboundNodes.length!==1)throw new ValueError(`A layer added to a Sequential model must not already be connected somewhere else. LayersModel received layer ${layer.name} which has ${layer.inboundNodes.length} pre-existing inbound connections.`);if(layer.inboundNodes[0].outputTensors.length!==1)throw new ValueError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(layer),this.outputs=[layer.inboundNodes[0].outputTensors[0]],this.inputs=getSourceInputs(this.outputs[0])}this.inboundNodes=[],new Node({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:pyListRepeat(null,this.inputs.length),outputMasks:[null],inputShapes:this.inputs.map(x=>x.shape),outputShapes:this.outputs[0].shape})}else{let outputTensor=layer.apply(this.outputs[0]);if(Array.isArray(outputTensor))throw new TypeError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(layer),this.outputs=[outputTensor],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}this.layers.push(layer),this.built=!1}pop(){if(this.layers.length===0)throw new TypeError("There are no layers in the model.");if(this.layers.pop(),this.layers.length===0)this.outputs=[],this.inboundNodes=[],this.outboundNodes=[];else{let lastLayerIndex=this.layers.length-1;this.layers[lastLayerIndex].outboundNodes=[],this.outputs=[this.layers[lastLayerIndex].output],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}}call(inputs,kwargs){return this.model==null&&this.build(),this.model.call(inputs,kwargs)}build(inputShape){if(getExactlyOneShape(inputShape),this.inputs.length===0||this.outputs.length===0)throw new TypeError("Sequential model cannot be built: model is empty. Add some layers first.");this.model=new LayersModel({inputs:this.inputs,outputs:this.outputs[0],name:this.name+"_model"}),this.model.trainable=this.trainable,this.supportsMasking=this.model.supportsMasking,this.inputLayers=this.model.inputLayers,this.inputLayersNodeIndices=this.model.inputLayersNodeIndices,this.inputLayersTensorIndices=this.model.inputLayersTensorIndices,this.outputLayers=this.model.outputLayers,this.outputLayersNodeIndices=this.model.outputLayersNodeIndices,this.outputLayersTensorIndices=this.model.outputLayersTensorIndices,this.nodesByDepth=this.model.nodesByDepth,this.containerNodes=this.model.containerNodes,this.outputNames=this.model.outputNames,this.inputNames=this.model.inputNames,this.built=!0}countParams(){return this.built||this.build(),super.countParams()}summary(lineLength,positions,printFn=console.log){this.built||this.build(),super.summary(lineLength,positions,printFn)}setWeights(weights){this.model==null&&this.build(),this.model.setWeights(weights)}evaluate(x,y,args={}){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.evaluate(x,y,args)}async evaluateDataset(dataset,args){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.evaluateDataset(dataset,args)}predict(x,args={}){return this.model==null&&this.build(),this.model.predict(x,args)}predictOnBatch(x){return this.model==null&&this.build(),this.model.predictOnBatch(x)}compile(args){this.build(),this.model.compile(args),this.optimizer_=this.model.optimizer,this.isOptimizerOwned=this.model.isOptimizerOwned,this.loss=this.model.loss,this.metrics=this.model.metrics,this.metricsTensors=this.model.metricsTensors,this.metricsNames=this.model.metricsNames}get optimizer(){return this.model==null?void 0:this.model.optimizer}set optimizer(optimizer){this.model.optimizer=optimizer}async fit(x,y,args={}){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.fit(x,y,args)}async fitDataset(dataset,args){if(!this.built)throw new RuntimeError("The model needs to be compiled before being used.");return this.model.fitDataset(dataset,args)}async trainOnBatch(x,y){return this.model.trainOnBatch(x,y)}static fromConfig(cls,config,customObjects={},fastWeightInit=!1){let configArray,extraModelConfig={};if(config instanceof Array){if(config[0].className==null||config[0].className==="Merge")throw new ValueError("Legacy serialization format not supported yet.");configArray=config}else util_exports.assert(config.layers!=null,()=>"When the config data for a Sequential model is not an Array, it must be an Object that contains the 'layers' field."),configArray=config.layers,delete config.layers,extraModelConfig=config;let model2=new cls(extraModelConfig);if(!(model2 instanceof Sequential))throw new NotImplementedError(`Sequential.fromConfig called on non-Sequential input: ${model2}`);for(let conf of configArray){let layer=deserialize(conf,void 0,fastWeightInit);fastWeightInit&&layer.setFastWeightInitDuringBuild(!0),model2.add(layer)}return model2}set stopTraining(stop){if(this.model==null)throw new ValueError("Cannot set the stopTraining property of a sequential model before it is compiled.");this.model.stopTraining=stop}get stopTraining(){if(this.model==null)throw new ValueError("Cannot get the stopTraining property of a sequential model before it is compiled.");return this.model.stopTraining}getConfig(){let layers=[];for(let layer of this.layers){let dict={};dict.className=layer.getClassName(),dict.config=layer.getConfig(),layers.push(dict)}return{name:this.name,layers}}};Sequential.className="Sequential";serialization_exports.registerClass(Sequential);function model(args){return new LayersModel(args)}function sequential(config){return new Sequential(config)}function loadLayersModel(pathOrIOHandler,options){return options==null&&(options={}),loadLayersModelInternal(pathOrIOHandler,options)}function input(config){return Input(config)}function registerCallbackConstructor(verbosityLevel,callbackConstructor){CallbackConstructorRegistry.registerCallbackConstructor(verbosityLevel,callbackConstructor)}var Activation=class extends serialization_exports.Serializable{getConfig(){return{}}},Elu2=class extends Activation{apply(x,alpha=1){return elu2(x,alpha)}};Elu2.className="elu";serialization_exports.registerClass(Elu2);var Selu2=class extends Activation{apply(x){return selu(x)}};Selu2.className="selu";serialization_exports.registerClass(Selu2);var Relu2=class extends Activation{apply(x){return relu(x)}};Relu2.className="relu";serialization_exports.registerClass(Relu2);var Relu62=class extends Activation{apply(x){return tidy(()=>minimum(6,relu(x)))}};Relu62.className="relu6";serialization_exports.registerClass(Relu62);var Linear=class extends Activation{apply(x){return x}};Linear.className="linear";serialization_exports.registerClass(Linear);var Sigmoid2=class extends Activation{apply(x){return sigmoid(x)}};Sigmoid2.className="sigmoid";serialization_exports.registerClass(Sigmoid2);var HardSigmoid=class extends Activation{apply(x){return hardSigmoid(x)}};HardSigmoid.className="hardSigmoid";serialization_exports.registerClass(HardSigmoid);var Softplus2=class extends Activation{apply(x){return softplus(x)}};Softplus2.className="softplus";serialization_exports.registerClass(Softplus2);var Softsign=class extends Activation{apply(x){return softsign(x)}};Softsign.className="softsign";serialization_exports.registerClass(Softsign);var Tanh2=class extends Activation{apply(x){return tanh2(x)}};Tanh2.className="tanh";serialization_exports.registerClass(Tanh2);var Softmax2=class extends Activation{apply(x,axis=-1){return softmax(x,axis)}};Softmax2.className="softmax";serialization_exports.registerClass(Softmax2);var LogSoftmax2=class extends Activation{apply(x,axis=-1){return logSoftmax(x,axis)}};LogSoftmax2.className="logSoftmax";serialization_exports.registerClass(LogSoftmax2);var Swish=class extends Activation{apply(x,alpha=1){return tidy(()=>sigmoid(x.mul(alpha)).mul(x))}};Swish.className="swish";serialization_exports.registerClass(Swish);function serializeActivation(activation2){return activation2.getClassName()}function deserializeActivation(config,customObjects={}){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"activation")}function getActivation(identifier){if(identifier==null){let config={};return config.className="linear",config.config={},deserializeActivation(config)}if(typeof identifier=="string"){let config={};return config.className=identifier,config.config={},deserializeActivation(config)}else return identifier instanceof Activation?identifier:deserializeActivation(identifier)}function assertObjectArgs(args){if(args!=null&&typeof args!="object")throw new Error(`Argument to L1L2 regularizer's constructor is expected to be an object, but received: ${args}`)}var Regularizer=class extends serialization_exports.Serializable{},L1L2=class extends Regularizer{constructor(args){super();assertObjectArgs(args),this.l1=args==null||args.l1==null?.01:args.l1,this.l2=args==null||args.l2==null?.01:args.l2,this.hasL1=this.l1!==0,this.hasL2=this.l2!==0}apply(x){return tidy(()=>{let regularization=zeros([1]);return this.hasL1&&(regularization=add2(regularization,sum2(mul(this.l1,abs(x))))),this.hasL2&&(regularization=add2(regularization,sum2(mul(this.l2,square2(x))))),regularization.asScalar()})}getConfig(){return{l1:this.l1,l2:this.l2}}static fromConfig(cls,config){return new cls({l1:config.l1,l2:config.l2})}};L1L2.className="L1L2";serialization_exports.registerClass(L1L2);function l1(args){return assertObjectArgs(args),new L1L2({l1:args!=null?args.l1:null,l2:0})}function l2(args){return assertObjectArgs(args),new L1L2({l2:args!=null?args.l2:null,l1:0})}var REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP={l1l2:"L1L2"};function serializeRegularizer(constraint){return serializeKerasObject(constraint)}function deserializeRegularizer(config,customObjects={}){return deserializeKerasObject(config,serialization_exports.SerializationMap.getMap().classNameMap,customObjects,"regularizer")}function getRegularizer(identifier){if(identifier==null)return null;if(typeof identifier=="string"){let config={className:identifier in REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP?REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier]:identifier,config:{}};return deserializeRegularizer(config)}else return identifier instanceof Regularizer?identifier:deserializeRegularizer(identifier)}var ReLU=class extends Layer{constructor(args){super(args==null?{}:args);this.supportsMasking=!0,args!=null&&(this.maxValue=args.maxValue)}call(inputs,kwargs){inputs=getExactlyOneTensor(inputs);let output=relu(inputs);return this.maxValue!=null&&(output=clipByValue(output,0,this.maxValue)),output}computeOutputShape(inputShape){return inputShape}getConfig(){let config={maxValue:this.maxValue},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};ReLU.className="ReLU";serialization_exports.registerClass(ReLU);var LeakyReLU=class extends Layer{constructor(args){super(args==null?{}:args);this.DEFAULT_ALPHA=.3,args==null&&(args={}),this.alpha=args.alpha==null?this.DEFAULT_ALPHA:args.alpha}call(inputs,kwargs){let x=getExactlyOneTensor(inputs);return leakyRelu(x,this.alpha)}computeOutputShape(inputShape){return inputShape}getConfig(){let config={alpha:this.alpha},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};LeakyReLU.className="LeakyReLU";serialization_exports.registerClass(LeakyReLU);var PReLU=class extends Layer{constructor(args){super(args==null?{}:args);if(this.DEFAULT_ALPHA_INITIALIZER="zeros",args==null&&(args={}),this.supportsMasking=!0,this.alphaInitializer=getInitializer(args.alphaInitializer||this.DEFAULT_ALPHA_INITIALIZER),this.alphaRegularizer=getRegularizer(args.alphaRegularizer),this.alphaConstraint=getConstraint(args.alphaConstraint),args.sharedAxes==null)this.sharedAxes=null;else if(Array.isArray(args.sharedAxes))this.sharedAxes=args.sharedAxes;else if(typeof args.sharedAxes=="number")this.sharedAxes=[args.sharedAxes];else throw new ValueError(`Expected sharedAxes to be a number or an array of numbers, but got ${args.sharedAxes}`)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let paramShape=inputShape.slice(1);if(this.sharedAxes!=null)for(let i of this.sharedAxes)paramShape[i-1]=1;this.alpha=this.addWeight("alpha",paramShape,"float32",this.alphaInitializer,this.alphaRegularizer,!0,this.alphaConstraint);let axes={};if(this.sharedAxes!=null)for(let i=1;i(checkDataFormat(dataFormat),dataFormat==="channelsFirst"?transpose(x,[0,2,3,1]):x))}function preprocessConv3DInput(x,dataFormat){return tidy(()=>(checkDataFormat(dataFormat),dataFormat==="channelsFirst"?transpose(x,[0,2,3,4,1]):x))}function conv1dWithBias(x,kernel,bias,strides=1,padding="valid",dataFormat,dilationRate=1){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.shape.length!==3)throw new ValueError(`The input of a conv1dWithBias operation should be 3, but is ${x.shape.length} instead.`);if(kernel.shape.length!==3)throw new ValueError(`The kernel for a conv1dWithBias operation should be 3, but is ${kernel.shape.length} instead`);if(bias!=null&&bias.shape.length!==1)throw new ValueError(`The bias for a conv1dWithBias operation should be 1, but is ${kernel.shape.length} instead`);if(dataFormat==="channelsFirst"&&(x=transpose(x,[0,2,1])),padding==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");let y=conv1d(x,kernel,strides,padding==="same"?"same":"valid","NWC",dilationRate);return bias!=null&&(y=biasAdd(y,bias)),y})}function conv2dWithBiasActivation(x,kernel,bias,strides=[1,1],padding="valid",dataFormat,dilationRate,activation2=null){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.rank!==3&&x.rank!==4)throw new ValueError(`conv2dWithBiasActivation expects input to be of rank 3 or 4, but received ${x.rank}.`);if(kernel.rank!==3&&kernel.rank!==4)throw new ValueError(`conv2dWithBiasActivation expects kernel to be of rank 3 or 4, but received ${x.rank}.`);let y=preprocessConv2DInput(x,dataFormat);if(padding==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");return y=fused_ops_exports.conv2d({x:y,filter:kernel,strides,pad:padding==="same"?"same":"valid",dilations:dilationRate,dataFormat:"NHWC",bias,activation:activation2}),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}function conv3dWithBias(x,kernel,bias,strides=[1,1,1],padding="valid",dataFormat,dilationRate){return tidy(()=>{if(dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat),x.rank!==4&&x.rank!==5)throw new ValueError(`conv3dWithBias expects input to be of rank 4 or 5, but received ${x.rank}.`);if(kernel.rank!==4&&kernel.rank!==5)throw new ValueError(`conv3dWithBias expects kernel to be of rank 4 or 5, but received ${x.rank}.`);let y=preprocessConv3DInput(x,dataFormat);if(padding==="causal")throw new NotImplementedError("The support for CAUSAL padding mode in conv3dWithBias is not implemented yet.");return y=conv3d(y,kernel,strides,padding==="same"?"same":"valid","NDHWC",dilationRate),bias!=null&&(y=biasAdd(y,bias)),dataFormat==="channelsFirst"&&(y=transpose(y,[0,4,1,2,3])),y})}var BaseConv=class extends Layer{constructor(rank,args){super(args);if(this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",BaseConv.verifyArgs(args),this.rank=rank,assertPositiveInteger(this.rank,"rank"),this.rank!==1&&this.rank!==2&&this.rank!==3)throw new NotImplementedError(`Convolution layer for rank other than 1, 2, or 3 (${this.rank}) is not implemented yet.`);if(this.kernelSize=normalizeArray(args.kernelSize,rank,"kernelSize"),this.strides=normalizeArray(args.strides==null?1:args.strides,rank,"strides"),this.padding=args.padding==null?"valid":args.padding,checkPaddingMode(this.padding),this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),this.activation=getActivation(args.activation),this.useBias=args.useBias==null?!0:args.useBias,this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.biasConstraint=getConstraint(args.biasConstraint),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.dilationRate=normalizeArray(args.dilationRate==null?1:args.dilationRate,rank,"dilationRate"),this.rank===1&&Array.isArray(this.dilationRate)&&this.dilationRate.length!==1)throw new ValueError(`dilationRate must be a number or an array of a single number for 1D convolution, but received ${JSON.stringify(this.dilationRate)}`);if(this.rank===2){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==2)throw new ValueError(`dilationRate must be a number or array of two numbers for 2D convolution, but received ${JSON.stringify(this.dilationRate)}`)}else if(this.rank===3){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==3)throw new ValueError(`dilationRate must be a number or array of three numbers for 3D convolution, but received ${JSON.stringify(this.dilationRate)}`)}}static verifyArgs(args){if(assert2("kernelSize"in args,"required key 'kernelSize' not in config"),typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,3))throw new ValueError(`BaseConv expects config.kernelSize to be number or number[] with length 1, 2, or 3, but received ${JSON.stringify(args.kernelSize)}.`)}getConfig(){let config={kernelSize:this.kernelSize,strides:this.strides,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,activation:serializeActivation(this.activation),useBias:this.useBias,biasInitializer:serializeInitializer(this.biasInitializer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),biasConstraint:serializeConstraint(this.biasConstraint)},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},Conv=class extends BaseConv{constructor(rank,args){super(rank,args);this.kernel=null,Conv.verifyArgs(args),this.filters=args.filters,assertPositiveInteger(this.filters,"filters"),this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.kernelConstraint=getConstraint(args.kernelConstraint),this.kernelRegularizer=getRegularizer(args.kernelRegularizer)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError(`The channel dimension of the input should be defined. Found ${inputShape[channelAxis]}`);let inputDim=inputShape[channelAxis],kernelShape=this.kernelSize.concat([inputDim,this.filters]);this.kernel=this.addWeight("kernel",kernelShape,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[{ndim:this.rank+2,axes:{[channelAxis]:inputDim}}],this.built=!0}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let outputs,biasValue=this.bias==null?null:this.bias.read(),fusedActivationName=mapActivationToFusedKernel(this.activation.getClassName());if(fusedActivationName!=null&&this.rank===2)outputs=conv2dWithBiasActivation(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate,fusedActivationName);else{if(this.rank===1)outputs=conv1dWithBias(inputs,this.kernel.read(),biasValue,this.strides[0],this.padding,this.dataFormat,this.dilationRate[0]);else if(this.rank===2)outputs=conv2dWithBiasActivation(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate);else if(this.rank===3)outputs=conv3dWithBias(inputs,this.kernel.read(),biasValue,this.strides,this.padding,this.dataFormat,this.dilationRate);else throw new NotImplementedError("convolutions greater than 3D are not implemented yet.");this.activation!=null&&(outputs=this.activation.apply(outputs))}return outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let newSpace=[],space=this.dataFormat==="channelsLast"?inputShape.slice(1,inputShape.length-1):inputShape.slice(2);for(let i=0;i 0 but got ${JSON.stringify(args.filters)}`)}},Conv2D2=class extends Conv{constructor(args){super(2,args);Conv2D2.verifyArgs(args)}getConfig(){let config=super.getConfig();return delete config.rank,config}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,2))throw new ValueError(`Conv2D expects config.kernelSize to be number or number[] with length 1 or 2, but received ${JSON.stringify(args.kernelSize)}.`)}};Conv2D2.className="Conv2D";serialization_exports.registerClass(Conv2D2);var Conv3D2=class extends Conv{constructor(args){super(3,args);Conv3D2.verifyArgs(args)}getConfig(){let config=super.getConfig();return delete config.rank,config}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!(Array.isArray(args.kernelSize)&&(args.kernelSize.length===1||args.kernelSize.length===3)))throw new ValueError(`Conv3D expects config.kernelSize to be number or [number, number, number], but received ${JSON.stringify(args.kernelSize)}.`)}};Conv3D2.className="Conv3D";serialization_exports.registerClass(Conv3D2);var Conv2DTranspose=class extends Conv2D2{constructor(args){super(args);if(this.inputSpec=[new InputSpec({ndim:4})],this.padding!=="same"&&this.padding!=="valid")throw new ValueError(`Conv2DTranspose currently supports only padding modes 'same' and 'valid', but received padding mode ${this.padding}`)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length!==4)throw new ValueError("Input should have rank 4; Received input shape: "+JSON.stringify(inputShape));let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError("The channel dimension of the inputs should be defined. Found `None`.");let inputDim=inputShape[channelAxis],kernelShape=this.kernelSize.concat([this.filters,inputDim]);this.kernel=this.addWeight("kernel",kernelShape,"float32",this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],"float32",this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[new InputSpec({ndim:4,axes:{[channelAxis]:inputDim}})],this.built=!0}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);if(input2.shape.length!==4)throw new ValueError(`Conv2DTranspose.call() expects input tensor to be rank-4, but received a tensor of rank-${input2.shape.length}`);let inputShape=input2.shape,batchSize=inputShape[0],hAxis,wAxis;this.dataFormat==="channelsFirst"?(hAxis=2,wAxis=3):(hAxis=1,wAxis=2);let height=inputShape[hAxis],width=inputShape[wAxis],kernelH=this.kernelSize[0],kernelW=this.kernelSize[1],strideH=this.strides[0],strideW=this.strides[1],outHeight=deconvLength(height,strideH,kernelH,this.padding),outWidth=deconvLength(width,strideW,kernelW,this.padding),outputShape=[batchSize,outHeight,outWidth,this.filters];this.dataFormat!=="channelsLast"&&(input2=transpose(input2,[0,2,3,1]));let outputs=conv2dTranspose(input2,this.kernel.read(),outputShape,this.strides,this.padding);return this.dataFormat!=="channelsLast"&&(outputs=transpose(outputs,[0,3,1,2])),this.bias!=null&&(outputs=biasAdd(outputs,this.bias.read(),this.dataFormat)),this.activation!=null&&(outputs=this.activation.apply(outputs)),outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice(),channelAxis,heightAxis,widthAxis;this.dataFormat==="channelsFirst"?(channelAxis=1,heightAxis=2,widthAxis=3):(channelAxis=3,heightAxis=1,widthAxis=2);let kernelH=this.kernelSize[0],kernelW=this.kernelSize[1],strideH=this.strides[0],strideW=this.strides[1];return outputShape[channelAxis]=this.filters,outputShape[heightAxis]=deconvLength(outputShape[heightAxis],strideH,kernelH,this.padding),outputShape[widthAxis]=deconvLength(outputShape[widthAxis],strideW,kernelW,this.padding),outputShape}getConfig(){let config=super.getConfig();return delete config.dilationRate,config}};Conv2DTranspose.className="Conv2DTranspose";serialization_exports.registerClass(Conv2DTranspose);var SeparableConv=class extends Conv{constructor(rank,config){super(rank,config);if(this.DEFAULT_DEPTHWISE_INITIALIZER="glorotUniform",this.DEFAULT_POINTWISE_INITIALIZER="glorotUniform",this.depthwiseKernel=null,this.pointwiseKernel=null,config.filters==null)throw new ValueError("The `filters` configuration field is required by SeparableConv, but is unspecified.");if(config.kernelInitializer!=null||config.kernelRegularizer!=null||config.kernelConstraint!=null)throw new ValueError("Fields kernelInitializer, kernelRegularizer and kernelConstraint are invalid for SeparableConv2D. Use depthwiseInitializer, depthwiseRegularizer, depthwiseConstraint, pointwiseInitializer, pointwiseRegularizer and pointwiseConstraint instead.");if(config.padding!=null&&config.padding!=="same"&&config.padding!=="valid")throw new ValueError(`SeparableConv${this.rank}D supports only padding modes: 'same' and 'valid', but received ${JSON.stringify(config.padding)}`);this.depthMultiplier=config.depthMultiplier==null?1:config.depthMultiplier,this.depthwiseInitializer=getInitializer(config.depthwiseInitializer||this.DEFAULT_DEPTHWISE_INITIALIZER),this.depthwiseRegularizer=getRegularizer(config.depthwiseRegularizer),this.depthwiseConstraint=getConstraint(config.depthwiseConstraint),this.pointwiseInitializer=getInitializer(config.depthwiseInitializer||this.DEFAULT_POINTWISE_INITIALIZER),this.pointwiseRegularizer=getRegularizer(config.pointwiseRegularizer),this.pointwiseConstraint=getConstraint(config.pointwiseConstraint)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length{inputs=getExactlyOneTensor(inputs);let output;if(this.rank===1)throw new NotImplementedError("1D separable convolution is not implemented yet.");return this.rank===2&&(this.dataFormat==="channelsFirst"&&(inputs=transpose(inputs,[0,2,3,1])),output=separableConv2d(inputs,this.depthwiseKernel.read(),this.pointwiseKernel.read(),this.strides,this.padding,this.dilationRate,"NHWC")),this.useBias&&(output=biasAdd(output,this.bias.read(),this.dataFormat)),this.activation!=null&&(output=this.activation.apply(output)),this.dataFormat==="channelsFirst"&&(output=transpose(output,[0,3,1,2])),output})}getConfig(){let config=super.getConfig();return delete config.rank,delete config.kernelInitializer,delete config.kernelRegularizer,delete config.kernelConstraint,config.depthwiseInitializer=serializeInitializer(this.depthwiseInitializer),config.pointwiseInitializer=serializeInitializer(this.pointwiseInitializer),config.depthwiseRegularizer=serializeRegularizer(this.depthwiseRegularizer),config.pointwiseRegularizer=serializeRegularizer(this.pointwiseRegularizer),config.depthwiseConstraint=serializeConstraint(this.depthwiseConstraint),config.pointwiseConstraint=serializeConstraint(this.pointwiseConstraint),config}};SeparableConv.className="SeparableConv";var SeparableConv2D=class extends SeparableConv{constructor(args){super(2,args)}};SeparableConv2D.className="SeparableConv2D";serialization_exports.registerClass(SeparableConv2D);var Conv1D=class extends Conv{constructor(args){super(1,args);Conv1D.verifyArgs(args),this.inputSpec=[{ndim:3}]}getConfig(){let config=super.getConfig();return delete config.rank,delete config.dataFormat,config}static verifyArgs(args){if(typeof args.kernelSize!="number"&&!checkArrayTypeAndLength(args.kernelSize,"number",1,1))throw new ValueError(`Conv1D expects config.kernelSize to be number or number[] with length 1, but received ${JSON.stringify(args.kernelSize)}.`)}};Conv1D.className="Conv1D";serialization_exports.registerClass(Conv1D);var Cropping2D=class extends Layer{constructor(args){super(args);typeof args.cropping=="number"?this.cropping=[[args.cropping,args.cropping],[args.cropping,args.cropping]]:typeof args.cropping[0]=="number"?this.cropping=[[args.cropping[0],args.cropping[0]],[args.cropping[1],args.cropping[1]]]:this.cropping=args.cropping,this.dataFormat=args.dataFormat===void 0?"channelsLast":args.dataFormat,this.inputSpec=[{ndim:4}]}computeOutputShape(inputShape){return this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],inputShape[2]-this.cropping[0][0]-this.cropping[0][1],inputShape[3]-this.cropping[1][0]-this.cropping[1][1]]:[inputShape[0],inputShape[1]-this.cropping[0][0]-this.cropping[0][1],inputShape[2]-this.cropping[1][0]-this.cropping[1][1],inputShape[3]]}call(inputs,kwargs){return tidy(()=>{if(inputs=getExactlyOneTensor(inputs),this.dataFormat==="channelsLast"){let hSliced=sliceAlongAxis(inputs,this.cropping[0][0],inputs.shape[1]-this.cropping[0][0]-this.cropping[0][1],2);return sliceAlongAxis(hSliced,this.cropping[1][0],inputs.shape[2]-this.cropping[1][1]-this.cropping[1][0],3)}else{let hSliced=sliceAlongAxis(inputs,this.cropping[0][0],inputs.shape[2]-this.cropping[0][0]-this.cropping[0][1],3);return sliceAlongAxis(hSliced,this.cropping[1][0],inputs.shape[3]-this.cropping[1][1]-this.cropping[1][0],4)}})}getConfig(){let config={cropping:this.cropping,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Cropping2D.className="Cropping2D";serialization_exports.registerClass(Cropping2D);var UpSampling2D=class extends Layer{constructor(args){super(args);this.DEFAULT_SIZE=[2,2],this.inputSpec=[{ndim:4}],this.size=args.size==null?this.DEFAULT_SIZE:args.size,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),this.interpolation=args.interpolation==null?"nearest":args.interpolation,checkInterpolationFormat(this.interpolation)}computeOutputShape(inputShape){if(this.dataFormat==="channelsFirst"){let height=inputShape[2]==null?null:this.size[0]*inputShape[2],width=inputShape[3]==null?null:this.size[1]*inputShape[3];return[inputShape[0],inputShape[1],height,width]}else{let height=inputShape[1]==null?null:this.size[0]*inputShape[1],width=inputShape[2]==null?null:this.size[1]*inputShape[2];return[inputShape[0],height,width,inputShape[3]]}}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs),inputShape=input2.shape;if(this.dataFormat==="channelsFirst"){input2=transpose(input2,[0,2,3,1]);let height=this.size[0]*inputShape[2],width=this.size[1]*inputShape[3],resized=this.interpolation==="nearest"?input2.resizeNearestNeighbor([height,width]):input2.resizeBilinear([height,width]);return transpose(resized,[0,3,1,2])}else{let height=this.size[0]*inputShape[1],width=this.size[1]*inputShape[2];return this.interpolation==="nearest"?input2.resizeNearestNeighbor([height,width]):input2.resizeBilinear([height,width])}})}getConfig(){let config={size:this.size,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};UpSampling2D.className="UpSampling2D";serialization_exports.registerClass(UpSampling2D);function depthwiseConv2d3(x,depthwiseKernel,strides=[1,1],padding="valid",dataFormat,dilationRate){return tidy(()=>{dataFormat==null&&(dataFormat=imageDataFormat()),checkDataFormat(dataFormat);let y=preprocessConv2DInput(x,dataFormat);if(x.rank!==4)throw new ValueError(`Input for depthwiseConv2d is required to be 4-D, but is instead ${x.rank}-D`);if(depthwiseKernel.rank!==4)throw new ValueError(`depthwiseKernel is required to be 4-D, but is instead ${depthwiseKernel.rank}-D`);return y=depthwiseConv2d(y,depthwiseKernel,strides,padding==="same"?"same":"valid","NHWC",dilationRate),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}var DepthwiseConv2D=class extends BaseConv{constructor(args){super(2,args);this.depthwiseKernel=null,this.depthMultiplier=args.depthMultiplier==null?1:args.depthMultiplier,this.depthwiseInitializer=getInitializer(args.depthwiseInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.depthwiseConstraint=getConstraint(args.depthwiseConstraint),this.depthwiseRegularizer=getRegularizer(args.depthwiseRegularizer)}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length<4)throw new ValueError(`Inputs to DepthwiseConv2D should have rank 4. Received input shape: ${JSON.stringify(inputShape)}.`);let channelAxis=this.dataFormat==="channelsFirst"?1:3;if(inputShape[channelAxis]==null||inputShape[channelAxis]<0)throw new ValueError(`The channel dimension of the inputs to DepthwiseConv2D should be defined, but is not (${inputShape[channelAxis]}).`);let inputDim=inputShape[channelAxis],depthwiseKernelShape=[this.kernelSize[0],this.kernelSize[1],inputDim,this.depthMultiplier];this.depthwiseKernel=this.addWeight("depthwise_kernel",depthwiseKernelShape,null,this.depthwiseInitializer,this.depthwiseRegularizer,!0,this.depthwiseConstraint),this.useBias?this.bias=this.addWeight("bias",[inputDim*this.depthMultiplier],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{inputs=getExactlyOneTensor(inputs);let outputs=depthwiseConv2d3(inputs,this.depthwiseKernel.read(),this.strides,this.padding,this.dataFormat,null);return this.useBias&&(outputs=biasAdd(outputs,this.bias.read(),this.dataFormat)),this.activation!=null&&(outputs=this.activation.apply(outputs)),outputs})}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],cols=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2],outFilters=this.dataFormat==="channelsFirst"?inputShape[1]*this.depthMultiplier:inputShape[3]*this.depthMultiplier,outRows=convOutputLength(rows,this.kernelSize[0],this.padding,this.strides[0]),outCols=convOutputLength(cols,this.kernelSize[1],this.padding,this.strides[1]);return this.dataFormat==="channelsFirst"?[inputShape[0],outFilters,outRows,outCols]:[inputShape[0],outRows,outCols,outFilters]}getConfig(){let config=super.getConfig();return config.depthMultiplier=this.depthMultiplier,config.depthwiseInitializer=serializeInitializer(this.depthwiseInitializer),config.depthwiseRegularizer=serializeRegularizer(this.depthwiseRegularizer),config.depthwiseConstraint=serializeConstraint(this.depthwiseRegularizer),config}};DepthwiseConv2D.className="DepthwiseConv2D";serialization_exports.registerClass(DepthwiseConv2D);function standardizeArgs(inputs,initialState,constants,numConstants){if(Array.isArray(inputs)){if(initialState!=null||constants!=null)throw new ValueError("When inputs is an array, neither initialState or constants should be provided");numConstants!=null&&(constants=inputs.slice(inputs.length-numConstants,inputs.length),inputs=inputs.slice(0,inputs.length-numConstants)),inputs.length>1&&(initialState=inputs.slice(1,inputs.length)),inputs=inputs[0]}function toListOrNull(x){return x==null||Array.isArray(x)?x:[x]}return initialState=toListOrNull(initialState),constants=toListOrNull(constants),{inputs,initialState,constants}}function rnn(stepFunction,inputs,initialStates,goBackwards=!1,mask,constants,unroll=!1,needPerStepOutputs=!1){return tidy(()=>{let ndim=inputs.shape.length;if(ndim<3)throw new ValueError(`Input should be at least 3D, but is ${ndim}D.`);let axes=[1,0].concat(range2(2,ndim));if(inputs=transpose(inputs,axes),constants!=null)throw new NotImplementedError("The rnn() functoin of the deeplearn.js backend does not support constants yet.");unroll&&console.warn("Backend rnn(): the unroll = true option is not applicable to the imperative deeplearn.js backend."),mask!=null&&(mask=mask.asType("bool").asType("float32"),mask.rank===ndim-1&&(mask=expandDims(mask,-1)),mask=transpose(mask,axes)),goBackwards&&(inputs=reverse(inputs,0),mask!=null&&(mask=reverse(mask,0)));let perStepOutputs=[],lastOutput,states=initialStates,timeSteps=inputs.shape[0],perStepInputs=unstack(inputs),perStepMasks;mask!=null&&(perStepMasks=unstack(mask));for(let t=0;tstepFunction(currentInput,states));if(mask==null)lastOutput=stepOutputs[0],states=stepOutputs[1];else{let maskedOutputs=tidy(()=>{let stepMask=perStepMasks[t],negStepMask=onesLike(stepMask).sub(stepMask),output=stepOutputs[0].mul(stepMask).add(states[0].mul(negStepMask)),newStates=states.map((state,i)=>stepOutputs[1][i].mul(stepMask).add(state.mul(negStepMask)));return{output,newStates}});lastOutput=maskedOutputs.output,states=maskedOutputs.newStates}needPerStepOutputs&&perStepOutputs.push(lastOutput)}let outputs;return needPerStepOutputs&&(outputs=stack(perStepOutputs,1)),[lastOutput,outputs,states]})}var RNN=class extends Layer{constructor(args){super(args);let cell;if(args.cell==null)throw new ValueError("cell property is missing for the constructor of RNN.");if(Array.isArray(args.cell)?cell=new StackedRNNCells({cells:args.cell}):cell=args.cell,cell.stateSize==null)throw new ValueError("The RNN cell should have an attribute `stateSize` (tuple of integers, one integer per RNN state).");this.cell=cell,this.returnSequences=args.returnSequences==null?!1:args.returnSequences,this.returnState=args.returnState==null?!1:args.returnState,this.goBackwards=args.goBackwards==null?!1:args.goBackwards,this._stateful=args.stateful==null?!1:args.stateful,this.unroll=args.unroll==null?!1:args.unroll,this.supportsMasking=!0,this.inputSpec=[new InputSpec({ndim:3})],this.stateSpec=null,this.states_=null,this.numConstants=null,this.keptStates=[]}getStates(){if(this.states_==null){let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;return range2(0,numStates).map(x=>null)}else return this.states_}setStates(states){this.states_=states}computeOutputShape(inputShape){isArrayOfShapes(inputShape)&&(inputShape=inputShape[0]),inputShape=inputShape;let stateSize=this.cell.stateSize;Array.isArray(stateSize)||(stateSize=[stateSize]);let outputDim=stateSize[0],outputShape;if(this.returnSequences?outputShape=[inputShape[0],inputShape[1],outputDim]:outputShape=[inputShape[0],outputDim],this.returnState){let stateShape=[];for(let dim of stateSize)stateShape.push([inputShape[0],dim]);return[outputShape].concat(stateShape)}else return outputShape}computeMask(inputs,mask){return tidy(()=>{Array.isArray(mask)&&(mask=mask[0]);let outputMask=this.returnSequences?mask:null;if(this.returnState){let stateMask=this.states.map(s=>null);return[outputMask].concat(stateMask)}else return outputMask})}get states(){if(this.states_==null){let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1,output=[];for(let i=0;ispec.shape[spec.shape.length-1]),stateSize))throw new ValueError(`An initialState was passed that is not compatible with cell.stateSize. Received stateSpec=${this.stateSpec}; However cell.stateSize is ${this.cell.stateSize}`)}else this.stateSpec=stateSize.map(dim=>new InputSpec({shape:[null,dim]}));this.stateful&&this.resetStates()}resetStates(states,training=!1){tidy(()=>{if(!this.stateful)throw new AttributeError("Cannot call resetStates() on an RNN Layer that is not stateful.");let batchSize=this.inputSpec[0].shape[0];if(batchSize==null)throw new ValueError("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.states_==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(dim=>zeros([batchSize,dim])):this.states_=[zeros([batchSize,this.cell.stateSize])];else if(states==null)dispose(this.states_),this.keptStates!=null&&(dispose(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(dim=>zeros([batchSize,dim])):this.states_[0]=zeros([batchSize,this.cell.stateSize]);else{if(Array.isArray(states)||(states=[states]),states.length!==this.states_.length)throw new ValueError(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${states.length} state value(s). Input received: ${states}`);training===!0?this.keptStates.push(this.states_.slice()):dispose(this.states_);for(let index=0;indexkeep(state.clone()))})}apply(inputs,kwargs){let initialState=kwargs==null?null:kwargs.initialState,constants=kwargs==null?null:kwargs.constants;kwargs==null&&(kwargs={});let standardized=standardizeArgs(inputs,initialState,constants,this.numConstants);inputs=standardized.inputs,initialState=standardized.initialState,constants=standardized.constants;let additionalInputs=[],additionalSpecs=[];if(initialState!=null){kwargs.initialState=initialState,additionalInputs=additionalInputs.concat(initialState),this.stateSpec=[];for(let state of initialState)this.stateSpec.push(new InputSpec({shape:state.shape}));additionalSpecs=additionalSpecs.concat(this.stateSpec)}if(constants!=null&&(kwargs.constants=constants,additionalInputs=additionalInputs.concat(constants),this.numConstants=constants.length),additionalInputs[0]instanceof SymbolicTensor){let fullInput=[inputs].concat(additionalInputs),fullInputSpec=this.inputSpec.concat(additionalSpecs),originalInputSpec=this.inputSpec;this.inputSpec=fullInputSpec;let output=super.apply(fullInput,kwargs);return this.inputSpec=originalInputSpec,output}else return super.apply(inputs,kwargs)}call(inputs,kwargs){return tidy(()=>{let mask=kwargs==null?null:kwargs.mask,training=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;inputs=getExactlyOneTensor(inputs),initialState==null&&(this.stateful?initialState=this.states_:initialState=this.getInitialState(inputs));let numStates=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;if(initialState.length!==numStates)throw new ValueError(`RNN Layer has ${numStates} state(s) but was passed ${initialState.length} initial state(s).`);this.unroll&&console.warn("Ignoring unroll = true for RNN layer, due to imperative backend.");let cellCallKwargs={training},rnnOutputs=rnn((inputs2,states2)=>{let outputs2=this.cell.call([inputs2].concat(states2),cellCallKwargs);return[outputs2[0],outputs2.slice(1)]},inputs,initialState,this.goBackwards,mask,null,this.unroll,this.returnSequences),lastOutput=rnnOutputs[0],outputs=rnnOutputs[1],states=rnnOutputs[2];this.stateful&&this.resetStates(states,training);let output=this.returnSequences?outputs:lastOutput;return this.returnState?[output].concat(states):output})}getInitialState(inputs){return tidy(()=>{let initialState=zeros(inputs.shape);return initialState=sum2(initialState,[1,2]),initialState=expandDims2(initialState),Array.isArray(this.cell.stateSize)?this.cell.stateSize.map(dim=>dim>1?tile2(initialState,[1,dim]):initialState):this.cell.stateSize>1?[tile2(initialState,[1,this.cell.stateSize])]:[initialState]})}get trainableWeights(){return this.trainable?this.cell.trainableWeights:[]}get nonTrainableWeights(){return this.trainable?this.cell.nonTrainableWeights:this.cell.weights}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.cell!=null&&this.cell.setFastWeightInitDuringBuild(value)}getConfig(){let baseConfig=super.getConfig(),config={returnSequences:this.returnSequences,returnState:this.returnState,goBackwards:this.goBackwards,stateful:this.stateful,unroll:this.unroll};this.numConstants!=null&&(config.numConstants=this.numConstants);let cellConfig=this.cell.getConfig();return this.getClassName()===RNN.className&&(config.cell={className:this.cell.getClassName(),config:cellConfig}),Object.assign({},cellConfig,baseConfig,config)}static fromConfig(cls,config,customObjects={}){let cellConfig=config.cell,cell=deserialize(cellConfig,customObjects);return new cls(Object.assign(config,{cell}))}};RNN.className="RNN";serialization_exports.registerClass(RNN);var RNNCell=class extends Layer{},SimpleRNNCell=class extends RNNCell{constructor(args){super(args);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation==null?this.DEFAULT_ACTIVATION:args.activation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min2([1,max2([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min2([1,max2([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){inputShape=getExactlyOneShape(inputShape),this.kernel=this.addWeight("kernel",[inputShape[inputShape.length-1],this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,inputs.length!==2)throw new ValueError(`SimpleRNNCell expects 2 input Tensors, got ${inputs.length}.`);let prevOutput=inputs[1];inputs=inputs[0];let training=kwargs.training==null?!1:kwargs.training;0onesLike(inputs),rate:this.dropout,training})),0onesLike(prevOutput),rate:this.recurrentDropout,training}));let h,dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask;dpMask!=null?h=dot2(mul(inputs,dpMask),this.kernel.read()):h=dot2(inputs,this.kernel.read()),this.bias!=null&&(h=biasAdd(h,this.bias.read())),recDpMask!=null&&(prevOutput=mul(prevOutput,recDpMask));let output=add2(h,dot2(prevOutput,this.recurrentKernel.read()));return this.activation!=null&&(output=this.activation.apply(output)),[output,output]})}getConfig(){let baseConfig=super.getConfig(),config={units:this.units,activation:serializeActivation(this.activation),useBias:this.useBias,kernelInitializer:serializeInitializer(this.kernelInitializer),recurrentInitializer:serializeInitializer(this.recurrentInitializer),biasInitializer:serializeInitializer(this.biasInitializer),kernelRegularizer:serializeRegularizer(this.kernelRegularizer),recurrentRegularizer:serializeRegularizer(this.recurrentRegularizer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),kernelConstraint:serializeConstraint(this.kernelConstraint),recurrentConstraint:serializeConstraint(this.recurrentConstraint),biasConstraint:serializeConstraint(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout};return Object.assign({},baseConfig,config)}};SimpleRNNCell.className="SimpleRNNCell";serialization_exports.registerClass(SimpleRNNCell);var SimpleRNN=class extends RNN{constructor(args){args.cell=new SimpleRNNCell(args),super(args)}call(inputs,kwargs){return tidy(()=>{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training,initialState})})}static fromConfig(cls,config){return new cls(config)}};SimpleRNN.className="SimpleRNN";serialization_exports.registerClass(SimpleRNN);var GRUCell=class extends RNNCell{constructor(args){super(args);if(this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",args.resetAfter)throw new ValueError("GRUCell does not support reset_after parameter set to true.");this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation===void 0?this.DEFAULT_ACTIVATION:args.activation),this.recurrentActivation=getActivation(args.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:args.recurrentActivation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min2([1,max2([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min2([1,max2([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.implementation=args.implementation,this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){inputShape=getExactlyOneShape(inputShape);let inputDim=inputShape[inputShape.length-1];this.kernel=this.addWeight("kernel",[inputDim,this.units*3],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*3],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units*3],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,inputs.length!==2)throw new ValueError(`GRUCell expects 2 input Tensors (inputs, h, c), got ${inputs.length}.`);let training=kwargs.training==null?!1:kwargs.training,hTMinus1=inputs[1];inputs=inputs[0],0onesLike(inputs),rate:this.dropout,training,count:3})),0onesLike(hTMinus1),rate:this.recurrentDropout,training,count:3}));let dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask,z,r,hh;0{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training,initialState})})}static fromConfig(cls,config){return config.implmentation===0&&(config.implementation=1),new cls(config)}};GRU.className="GRU";serialization_exports.registerClass(GRU);var LSTMCell=class extends RNNCell{constructor(args){super(args);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation===void 0?this.DEFAULT_ACTIVATION:args.activation),this.recurrentActivation=getActivation(args.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:args.recurrentActivation),this.useBias=args.useBias==null?!0:args.useBias,this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=getInitializer(args.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.unitForgetBias=args.unitForgetBias,this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.recurrentRegularizer=getRegularizer(args.recurrentRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.kernelConstraint=getConstraint(args.kernelConstraint),this.recurrentConstraint=getConstraint(args.recurrentConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.dropout=min2([1,max2([0,args.dropout==null?0:args.dropout])]),this.recurrentDropout=min2([1,max2([0,args.recurrentDropout==null?0:args.recurrentDropout])]),this.implementation=args.implementation,this.stateSize=[this.units,this.units],this.dropoutMask=null,this.recurrentDropoutMask=null}build(inputShape){var _a;inputShape=getExactlyOneShape(inputShape);let inputDim=inputShape[inputShape.length-1];this.kernel=this.addWeight("kernel",[inputDim,this.units*4],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*4],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint);let biasInitializer;if(this.useBias){if(this.unitForgetBias){let capturedBiasInit=this.biasInitializer,capturedUnits=this.units;biasInitializer=new(_a=class extends Initializer{apply(shape,dtype){let bI=capturedBiasInit.apply([capturedUnits]),bF=new Ones().apply([capturedUnits]),bCAndH=capturedBiasInit.apply([capturedUnits*2]);return concatAlongFirstAxis(concatAlongFirstAxis(bI,bF),bCAndH)}},_a.className="CustomInit",_a)}else biasInitializer=this.biasInitializer;this.bias=this.addWeight("bias",[this.units*4],null,biasInitializer,this.biasRegularizer,!0,this.biasConstraint)}else this.bias=null;this.built=!0}call(inputs,kwargs){return tidy(()=>{let training=kwargs.training==null?!1:kwargs.training;if(inputs=inputs,inputs.length!==3)throw new ValueError(`LSTMCell expects 3 input Tensors (inputs, h, c), got ${inputs.length}.`);let hTMinus1=inputs[1],cTMinus1=inputs[2];inputs=inputs[0],0onesLike(inputs),rate:this.dropout,training,count:4})),0onesLike(hTMinus1),rate:this.recurrentDropout,training,count:4}));let dpMask=this.dropoutMask,recDpMask=this.recurrentDropoutMask,i,f,c,o;0{this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let mask=kwargs==null?null:kwargs.mask,training=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training,initialState})})}static fromConfig(cls,config){return config.implmentation===0&&(config.implementation=1),new cls(config)}};LSTM.className="LSTM";serialization_exports.registerClass(LSTM);var StackedRNNCells=class extends RNNCell{constructor(args){super(args);this.cells=args.cells}get stateSize(){let stateSize=[];for(let cell of this.cells.slice().reverse())Array.isArray(cell.stateSize)?stateSize.push(...cell.stateSize):stateSize.push(cell.stateSize);return stateSize}call(inputs,kwargs){return tidy(()=>{inputs=inputs;let states=inputs.slice(1),nestedStates=[];for(let cell of this.cells.slice().reverse())Array.isArray(cell.stateSize)?nestedStates.push(states.splice(0,cell.stateSize.length)):nestedStates.push(states.splice(0,1));nestedStates.reverse();let newNestedStates=[],callInputs;for(let i=0;i{nameScope(`RNNCell_${i}`,()=>{cell.build(inputShape),Array.isArray(cell.stateSize)?outputDim=cell.stateSize[0]:outputDim=cell.stateSize,inputShape=[inputShape[0],outputDim]})}),this.built=!0}getConfig(){let baseConfig=super.getConfig(),getCellConfig=cell=>({className:cell.getClassName(),config:cell.getConfig()}),config={cells:this.cells.map(getCellConfig)};return Object.assign({},baseConfig,config)}static fromConfig(cls,config,customObjects={}){let cells=[];for(let cellConfig of config.cells)cells.push(deserialize(cellConfig,customObjects));return new cls({cells})}get trainableWeights(){if(!this.trainable)return[];let weights=[];for(let cell of this.cells)weights.push(...cell.trainableWeights);return weights}get nonTrainableWeights(){let weights=[];for(let cell of this.cells)weights.push(...cell.nonTrainableWeights);if(!this.trainable){let trainableWeights=[];for(let cell of this.cells)trainableWeights.push(...cell.trainableWeights);return trainableWeights.concat(weights)}return weights}getWeights(){let weights=[];for(let cell of this.cells)weights.push(...cell.weights);return batchGetValue(weights)}setWeights(weights){let tuples=[];for(let cell of this.cells){let numParams=cell.weights.length,inputWeights=weights.splice(numParams);for(let i=0;idropout2(ones4(),rate),createMask=()=>inTrainPhase(droppedInputs,ones4,training);return!count2||count2<=1?keep(createMask().clone()):Array(count2).fill(void 0).map(createMask).map(m=>keep(m.clone()))}var __rest=function(s,e){var t={};for(var p2 in s)Object.prototype.hasOwnProperty.call(s,p2)&&e.indexOf(p2)<0&&(t[p2]=s[p2]);if(s!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,p2=Object.getOwnPropertySymbols(s);i{if(this.cell.dropoutMask!=null&&(dispose(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(dispose(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null),kwargs&&kwargs.constants)throw new ValueError("ConvRNN2D cell does not support constants");let mask=kwargs==null?null:kwargs.mask,training=kwargs==null?null:kwargs.training,initialState=kwargs==null?null:kwargs.initialState;return super.call(inputs,{mask,training,initialState})})}computeOutputShape(inputShape){let outShape=this.computeSingleOutputShape(inputShape);return this.returnSequences||(outShape=[outShape[0],...outShape.slice(2)]),this.returnState&&(outShape=[outShape,...Array(2).fill([inputShape[0],...outShape.slice(-3)])]),outShape}getInitialState(inputs){return tidy(()=>{let{stateSize}=this.cell,inputShape=inputs.shape,outputShape=this.computeSingleOutputShape(inputShape),stateShape=[outputShape[0],...outputShape.slice(2)],initialState=zeros(stateShape);return Array.isArray(stateSize)?Array(stateSize.length).fill(initialState):[initialState]})}resetStates(states,training=!1){tidy(()=>{if(!this.stateful)throw new AttributeError("Cannot call resetStates() on an RNN Layer that is not stateful.");let inputShape=this.inputSpec[0].shape,outputShape=this.computeSingleOutputShape(inputShape),stateShape=[outputShape[0],...outputShape.slice(2)];if(inputShape[0]==null)throw new ValueError("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.getStates()==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>zeros(stateShape)):this.states_=[zeros(stateShape)];else if(states==null)dispose(this.states_),this.keptStates!=null&&(dispose(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>zeros(stateShape)):this.states_[0]=zeros(stateShape);else{if(Array.isArray(states)||(states=[states]),states.length!==this.states_.length)throw new ValueError(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${states.length} state value(s). Input received: ${states}`);training?this.keptStates.push(this.states_.slice()):dispose(this.states_);for(let index=0;indexkeep(state.clone()))})}computeSingleOutputShape(inputShape){let{dataFormat,filters,kernelSize,padding,strides,dilationRate}=this.cell,isChannelsFirst=dataFormat==="channelsFirst",h=inputShape[isChannelsFirst?3:2],w=inputShape[isChannelsFirst?4:3],hOut=convOutputLength(h,kernelSize[0],padding,strides[0],dilationRate[0]),wOut=convOutputLength(w,kernelSize[1],padding,strides[1],dilationRate[1]);return[...inputShape.slice(0,2),...isChannelsFirst?[filters,hOut,wOut]:[hOut,wOut,filters]]}};ConvRNN2D.className="ConvRNN2D";var ConvLSTM2DCell=class extends LSTMCell{constructor(args){let{filters,kernelSize,strides,padding,dataFormat,dilationRate}=args;super(Object.assign({},args,{units:filters}));this.filters=filters,assertPositiveInteger(this.filters,"filters"),this.kernelSize=normalizeArray(kernelSize,2,"kernelSize"),this.kernelSize.forEach(size=>assertPositiveInteger(size,"kernelSize")),this.strides=normalizeArray(strides||1,2,"strides"),this.strides.forEach(stride=>assertPositiveInteger(stride,"strides")),this.padding=padding||"valid",checkPaddingMode(this.padding),this.dataFormat=dataFormat||"channelsLast",checkDataFormat(this.dataFormat),this.dilationRate=normalizeArray(dilationRate||1,2,"dilationRate"),this.dilationRate.forEach(rate=>assertPositiveInteger(rate,"dilationRate"))}build(inputShape){var _a;inputShape=getExactlyOneShape(inputShape);let channelAxis=this.dataFormat==="channelsFirst"?1:inputShape.length-1;if(inputShape[channelAxis]==null)throw new ValueError(`The channel dimension of the input should be defined. Found ${inputShape[channelAxis]}`);let inputDim=inputShape[channelAxis],numOfKernels=4,kernelShape=this.kernelSize.concat([inputDim,this.filters*numOfKernels]);this.kernel=this.addWeight("kernel",kernelShape,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint);let recurrentKernelShape=this.kernelSize.concat([this.filters,this.filters*numOfKernels]);if(this.recurrentKernel=this.addWeight("recurrent_kernel",recurrentKernelShape,null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias){let biasInitializer;if(this.unitForgetBias){let init2=this.biasInitializer,filters=this.filters;biasInitializer=new(_a=class extends Initializer{apply(shape,dtype){let biasI=init2.apply([filters]),biasF=ones2([filters]),biasCAndO=init2.apply([filters*2]);return concatenate([biasI,biasF,biasCAndO])}},_a.className="CustomInit",_a)}else biasInitializer=this.biasInitializer;this.bias=this.addWeight("bias",[this.filters*numOfKernels],null,biasInitializer,this.biasRegularizer,!0,this.biasConstraint)}this.built=!0}call(inputs,kwargs){return tidy(()=>{if(inputs.length!==3)throw new ValueError(`ConvLSTM2DCell expects 3 input Tensors (inputs, h, c), got ${inputs.length}.`);let training=kwargs.training||!1,x=inputs[0],hTMinus1=inputs[1],cTMinus1=inputs[2],numOfKernels=4;0onesLike(x),rate:this.dropout,training,count:numOfKernels}));let dropoutMask=this.dropoutMask,applyDropout=(x2,mask,index)=>!mask||!mask[index]?x2:mul(mask[index],x2),xI=applyDropout(x,dropoutMask,0),xF=applyDropout(x,dropoutMask,1),xC=applyDropout(x,dropoutMask,2),xO=applyDropout(x,dropoutMask,3);0onesLike(hTMinus1),rate:this.recurrentDropout,training,count:numOfKernels}));let recDropoutMask=this.recurrentDropoutMask,hI=applyDropout(hTMinus1,recDropoutMask,0),hF=applyDropout(hTMinus1,recDropoutMask,1),hC=applyDropout(hTMinus1,recDropoutMask,2),hO=applyDropout(hTMinus1,recDropoutMask,3),kernelChannelAxis=3,[kernelI,kernelF,kernelC,kernelO]=split(this.kernel.read(),numOfKernels,kernelChannelAxis),[biasI,biasF,biasC,biasO]=this.useBias?split(this.bias.read(),numOfKernels):[null,null,null,null];xI=this.inputConv(xI,kernelI,biasI,this.padding),xF=this.inputConv(xF,kernelF,biasF,this.padding),xC=this.inputConv(xC,kernelC,biasC,this.padding),xO=this.inputConv(xO,kernelO,biasO,this.padding);let[recKernelI,recKernelF,recKernelC,recKernelO]=split(this.recurrentKernel.read(),numOfKernels,kernelChannelAxis);hI=this.recurrentConv(hI,recKernelI),hF=this.recurrentConv(hF,recKernelF),hC=this.recurrentConv(hC,recKernelC),hO=this.recurrentConv(hO,recKernelO);let i=this.recurrentActivation.apply(add2(xI,hI)),f=this.recurrentActivation.apply(add2(xF,hF)),c=add2(mul(f,cTMinus1),mul(i,this.activation.apply(add2(xC,hC)))),h=mul(this.recurrentActivation.apply(add2(xO,hO)),this.activation.apply(c));return[h,h,c]})}getConfig(){let _a=super.getConfig(),{units:_}=_a,baseConfig=__rest(_a,["units"]),config={filters:this.filters,kernelSize:this.kernelSize,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,strides:this.strides};return Object.assign({},baseConfig,config)}inputConv(x,w,b,padding){let out=conv2d(x,w,this.strides,padding||"valid",this.dataFormat==="channelsFirst"?"NCHW":"NHWC",this.dilationRate);return b?biasAdd(out,b,this.dataFormat):out}recurrentConv(x,w){return conv2d(x,w,1,"same",this.dataFormat==="channelsFirst"?"NCHW":"NHWC")}};ConvLSTM2DCell.className="ConvLSTM2DCell";serialization_exports.registerClass(ConvLSTM2DCell);var ConvLSTM2D=class extends ConvRNN2D{constructor(args){let cell=new ConvLSTM2DCell(args);super(Object.assign({},args,{cell}))}static fromConfig(cls,config){return new cls(config)}};ConvLSTM2D.className="ConvLSTM2D";serialization_exports.registerClass(ConvLSTM2D);var Dropout=class extends Layer{constructor(args){super(args);this.rate=Math.max(Math.min(args.rate,1),0),this.noiseShape=args.noiseShape,this.seed=args.seed,this.supportsMasking=!0}getNoiseShape(input2){if(this.noiseShape==null)return this.noiseShape;let inputShape=input2.shape,noiseShape=[];for(let i=0;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(0dropout2(input2,this.rate,noiseShape,this.seed),()=>input2,training)}return inputs})}getConfig(){let config={rate:this.rate,noiseShape:this.noiseShape,seed:this.seed},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}dispose(){return super.dispose()}};Dropout.className="Dropout";serialization_exports.registerClass(Dropout);var SpatialDropout1D=class extends Dropout{constructor(args){super(args);this.inputSpec=[{ndim:3}]}getNoiseShape(input2){let inputShape=input2.shape;return[inputShape[0],1,inputShape[2]]}};SpatialDropout1D.className="SpatialDropout1D";serialization_exports.registerClass(SpatialDropout1D);var Dense=class extends Layer{constructor(args){super(args);if(this.activation=null,this.useBias=!0,this.kernel=null,this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",args.batchInputShape==null&&args.inputShape==null&&args.inputDim!=null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),this.batchInputShape=[batchSize,args.inputDim]}this.units=args.units,assertPositiveInteger(this.units,"units"),this.activation=getActivation(args.activation),args.useBias!=null&&(this.useBias=args.useBias),this.kernelInitializer=getInitializer(args.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.biasInitializer=getInitializer(args.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelConstraint=getConstraint(args.kernelConstraint),this.biasConstraint=getConstraint(args.biasConstraint),this.kernelRegularizer=getRegularizer(args.kernelRegularizer),this.biasRegularizer=getRegularizer(args.biasRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.supportsMasking=!0,this.inputSpec=[{minNDim:2}]}build(inputShape){inputShape=getExactlyOneShape(inputShape);let inputLastDim=inputShape[inputShape.length-1];this.kernel==null&&(this.kernel=this.addWeight("kernel",[inputLastDim,this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint))),this.inputSpec=[{minNDim:2,axes:{[-1]:inputLastDim}}],this.built=!0}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice();return outputShape[outputShape.length-1]=this.units,outputShape}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),fusedActivationName=mapActivationToFusedKernel(this.activation.getClassName()),output;return fusedActivationName!=null?output=dot2(input2,this.kernel.read(),fusedActivationName,this.bias?this.bias.read():null):(output=dot2(input2,this.kernel.read()),this.bias!=null&&(output=biasAdd(output,this.bias.read())),this.activation!=null&&(output=this.activation.apply(output))),output})}getConfig(){let config={units:this.units,activation:serializeActivation(this.activation),useBias:this.useBias,kernelInitializer:serializeInitializer(this.kernelInitializer),biasInitializer:serializeInitializer(this.biasInitializer),kernelRegularizer:serializeRegularizer(this.kernelRegularizer),biasRegularizer:serializeRegularizer(this.biasRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),kernelConstraint:serializeConstraint(this.kernelConstraint),biasConstraint:serializeConstraint(this.biasConstraint)},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Dense.className="Dense";serialization_exports.registerClass(Dense);var Flatten=class extends Layer{constructor(args){args=args||{},super(args),this.inputSpec=[{minNDim:3}],this.dataFormat=args.dataFormat}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);for(let dim of inputShape.slice(1))if(dim==null)throw new ValueError(`The shape of the input to "Flatten" is not fully defined (got ${inputShape.slice(1)}). Make sure to pass a complete "input_shape" or "batch_input_shape" argument to the first layer in your model.`);return[inputShape[0],arrayProd(inputShape,1)]}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);if(this.dataFormat==="channelsFirst"&&input2.rank>1){let permutation=[0];for(let i=2;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);return this.activation.apply(input2)})}getConfig(){let config={activation:serializeActivation(this.activation)},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Activation2.className="Activation";serialization_exports.registerClass(Activation2);var RepeatVector=class extends Layer{constructor(args){super(args);this.n=args.n,this.inputSpec=[{ndim:2}]}computeOutputShape(inputShape){return[inputShape[0],this.n,inputShape[1]]}call(inputs,kwargs){return tidy(()=>(inputs=getExactlyOneTensor(inputs),repeat(inputs,this.n)))}getConfig(){let config={n:this.n},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};RepeatVector.className="RepeatVector";serialization_exports.registerClass(RepeatVector);var Reshape2=class extends Layer{constructor(args){super(args);this.targetShape=args.targetShape;for(let i=0;i{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),inputShape=input2.shape,outputShape=inputShape.slice(0,1).concat(this.fixUnknownDimension(inputShape.slice(1),this.targetShape));return input2.reshape(outputShape)})}getConfig(){let config={targetShape:this.targetShape},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Reshape2.className="Reshape";serialization_exports.registerClass(Reshape2);var Permute=class extends Layer{constructor(args){super(args);if(args.dims==null)throw new Error("Required configuration field `dims` is missing during Permute constructor call.");if(!Array.isArray(args.dims))throw new Error(`Permute constructor requires \`dims\` to be an Array, but received ${args.dims} instead.`);let expectedSortedIndices=range2(1,args.dims.length+1);if(!util_exports.arraysEqual(args.dims.slice().sort(),expectedSortedIndices))throw new Error("Invalid permutation `dims`: "+JSON.stringify(args.dims)+" `dims` must contain consecutive integers starting from 1.");this.dims=args.dims,this.dimsIncludingBatch=[0].concat(this.dims),this.inputSpec=[new InputSpec({ndim:this.dims.length+1})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let outputShape=inputShape.slice();return this.dims.forEach((dim,i)=>{outputShape[i+1]=inputShape[dim]}),outputShape}call(inputs,kwargs){return transpose(getExactlyOneTensor(inputs),this.dimsIncludingBatch)}getConfig(){let config={dims:this.dims},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Permute.className="Permute";serialization_exports.registerClass(Permute);var Masking=class extends Layer{constructor(args){super(args==null?{}:args);this.supportsMasking=!0,args!=null?this.maskValue=args.maskValue==null?0:args.maskValue:this.maskValue=0}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config={maskValue:this.maskValue};return Object.assign(config,baseConfig),config}computeMask(inputs,mask){let input2=getExactlyOneTensor(inputs),axis=-1;return any(notEqual(input2,this.maskValue),axis)}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs),axis=-1,keepDims=!0,booleanMask=any(notEqual(input2,this.maskValue),axis,keepDims);return input2.mul(booleanMask.asType(input2.dtype))})}};Masking.className="Masking";serialization_exports.registerClass(Masking);var Embedding=class extends Layer{constructor(args){super(args);if(this.embeddings=null,this.DEFAULT_EMBEDDINGS_INITIALIZER="randomUniform",args.batchInputShape==null&&args.inputShape==null){let batchSize=null;args.batchSize!=null&&(batchSize=args.batchSize),args.inputLength==null?this.batchInputShape=[batchSize,null]:this.batchInputShape=[batchSize].concat(toList(args.inputLength))}this.inputDim=args.inputDim,assertPositiveInteger(this.inputDim,"inputDim"),this.outputDim=args.outputDim,assertPositiveInteger(this.outputDim,"outputDim"),this.embeddingsInitializer=getInitializer(args.embeddingsInitializer||this.DEFAULT_EMBEDDINGS_INITIALIZER),this.embeddingsRegularizer=getRegularizer(args.embeddingsRegularizer),this.activityRegularizer=getRegularizer(args.activityRegularizer),this.embeddingsConstraint=getConstraint(args.embeddingsConstraint),this.maskZero=args.maskZero,this.supportsMasking=args.maskZero,this.inputLength=args.inputLength}build(inputShape){this.embeddings=this.addWeight("embeddings",[this.inputDim,this.outputDim],this.dtype,this.embeddingsInitializer,this.embeddingsRegularizer,!0,this.embeddingsConstraint),this.built=!0}warnOnIncompatibleInputShape(inputShape){}computeMask(inputs,mask){return tidy(()=>this.maskZero?(inputs=getExactlyOneTensor(inputs),notEqual(inputs,zerosLike(inputs))):null)}computeOutputShape(inputShape){if(inputShape=getExactlyOneShape(inputShape),this.inputLength==null)return[...inputShape,this.outputDim];let inLens=toList(this.inputLength);if(inLens.length!==inputShape.length-1)throw new ValueError(`"inputLength" is ${this.inputLength}, but received input shape has shape ${inputShape}`);{let i=0;for(let k=0;k{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);return input2.dtype!=="int32"&&(input2=cast2(input2,"int32")),gather2(this.embeddings.read(),input2.as1D()).reshape(getExactlyOneShape(this.computeOutputShape(input2.shape)))})}getConfig(){let config={inputDim:this.inputDim,outputDim:this.outputDim,embeddingsInitializer:serializeInitializer(this.embeddingsInitializer),embeddingsRegularizer:serializeRegularizer(this.embeddingsRegularizer),activityRegularizer:serializeRegularizer(this.activityRegularizer),embeddingsConstraint:serializeConstraint(this.embeddingsConstraint),maskZero:this.maskZero,inputLength:this.inputLength},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Embedding.className="Embedding";serialization_exports.registerClass(Embedding);var Merge=class extends Layer{constructor(args){super(args||{});this.supportsMasking=!0}mergeFunction(inputs){throw new NotImplementedError}computeElementwiseOpOutputShape(shape1,shape2){if(shape1==null||shape2==null)return null;if(shape1.length1)throw new ValueError(`Can not merge tensors with different batch sizes. Got tensors with shapes: ${JSON.stringify(inputShape)}.`);let outputShape=inputShape[0]==null?null:inputShape[0].slice(1);for(let i=1;ishape.length);inputShape.indexOf(null)===-1&&unique2(allRanks).length===1?this.reshapeRequired=!1:this.reshapeRequired=!0}call(inputs,kwargs){return tidy(()=>{if(inputs=inputs,this.reshapeRequired){let reshapedInputs=[],inputDims=inputs.map(input2=>input2.rank);if(inputDims.indexOf(null)===-1){let maxNDim=max2(inputDims);for(let x of inputs){let xNDim=x.rank;for(let k=0;k1){let dims=range2(1,xNDim).concat([0]);reshapedInputs.push(transpose(x,dims)),transposed=!0}else reshapedInputs.push(x)}let y=this.mergeFunction(reshapedInputs),yNDim=y.rank;if(transposed){if(yNDim==null){let yShape=y.shape,yNDim2=yShape.length,batchSize=yShape[yNDim2-1],newShape=[batchSize].concat(yShape.slice(0,yShape.length-1));y=transpose(y.reshape([-1,batchSize]),[1,0]).reshape(newShape)}else if(yNDim>1){let dims=[yNDim-1].concat(range2(0,yNDim-1));y=transpose(y,dims)}}return y}}else return this.mergeFunction(inputs)})}computeOutputShape(inputShape){inputShape=inputShape;let outputShape;inputShape[0]==null?outputShape=null:outputShape=inputShape[0].slice(1);for(let i=1;i{if(mask==null)return null;if(!Array.isArray(mask))throw new ValueError("`mask` should be an Array");if(!Array.isArray(inputs))throw new ValueError("`inputs` should be an Array");if(mask.length!==inputs.length)throw new ValueError(`The Array 'inputs' and 'mask' are expected to have the same length, but have different lengths (${inputs.length} vs ${mask.length})`);if(mask.every(m=>m==null))return null;mask=mask.map(m=>m==null?m:expandDims(m,0));let output=mask[0];for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0].clone();for(let i=1;i{let output=inputs[0];for(let i=1;i{let output=inputs[0];for(let i=1;i1)throw new ValueError("A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got input shapes: "+JSON.stringify(inputShape))}mergeFunction(inputs){return tidy(()=>concatenate(inputs,this.axis))}computeOutputShape(inputShape){if(!(Array.isArray(inputShape)&&Array.isArray(inputShape[0])))throw new ValueError("A `Concatenate` layer should be called on a list of inputs.");let inputShapes=inputShape,outputShape=inputShapes[0].slice(),axis=this.axis<0?outputShape.length+this.axis:this.axis;for(let shape of inputShapes.slice(1)){if(outputShape[axis]==null||shape[axis]==null){outputShape[axis]=null;break}outputShape[axis]+=shape[axis]}return outputShape}computeMask(inputs,mask){if(mask==null)return null;if(!Array.isArray(mask))throw new ValueError("`mask` should be an array for Concatenate");if(!Array.isArray(inputs))throw new ValueError("`inputs` should be an array for Concatenate");if(mask.length!==inputs.length)throw new ValueError(`Mismatch in the length of mask (${mask.length}) and the legnth of inputs (${inputs.length})`);return tidy(()=>{let allNullMasks=!0;if(mask.forEach(m=>{if(m!=null){allNullMasks=!1;return}}),allNullMasks)return null;let outputMasks=[];for(let i=0;i3||y.shape.length>3)throw new NotImplementedError("batchDot is not implemented for tensors of 4D or higher rank yet");if(util_exports.assert(x.shape.length>=2,()=>`batchDot requires the rank of x to be >= 2, but got ${x.shape.length}`),util_exports.assert(x.shape.length>=2,()=>`batchDot requires the rank of y to be >= 2, but got ${y.shape.length}`),typeof axes=="number"&&(axes=[axes,axes]),x.dtype==="complex64"||y.dtype==="complex64")throw new NotImplementedError("batchDot is not implemented for complex64-type Tensors yet.");let xNDim=x.shape.length,yNDim=y.shape.length;axes==null&&(axes=[xNDim-1,yNDim-2]);let axesArray=axes;return tidy(()=>{let diff;if(xNDim>yNDim){diff=xNDim-yNDim;let diffShape=[];for(let i=0;ixNDim){diff=yNDim-xNDim;let diffShape=[];for(let i=0;i0){let idx;xNDim>yNDim?idx=xNDim+yNDim-3:idx=xNDim-1;let squeezeAxes=[];for(let i=idx;i"A `Dot` layer should be called on a list of exactly 2 inputs.");let shape1=inputShape[0],shape2=inputShape[1];if(shape1.length>3||shape2.length>3)throw new NotImplementedError("Dot layer does not support tensors of 4D or higher rank yet.");let axes=this.interpretAxes(shape1,shape2);if(shape1[axes[0]]!==shape2[axes[1]])throw new ValueError(`Dimension incompatibility: ${shape1[axes[0]]} !== ${shape2[axes[1]]}`)}mergeFunction(inputs){if(inputs.length!==2)throw new ValueError(`A \`Dot\` layer must be called on exactly 2 inputs, but received ${inputs.length} input(s).`);let x1=inputs[0],x2=inputs[1],axes;return Array.isArray(this.axes)?axes=this.axes.map((axis,i)=>interpretAxis(axis,inputs[i].shape.length)):axes=[interpretAxis(this.axes,x1.shape.length),interpretAxis(this.axes,x2.shape.length)],this.normalize&&(x1=l2Normalize(x1,axes[0]),x2=l2Normalize(x2,axes[1])),batchDot(x1,x2,axes)}interpretAxes(shape1,shape2){let axes;return Array.isArray(this.axes)?axes=this.axes:axes=[interpretAxis(this.axes,shape1.length),interpretAxis(this.axes,shape2.length)],axes}computeOutputShape(inputShape){util_exports.assert(Array.isArray(inputShape)&&inputShape.length===2&&Array.isArray(inputShape[0])&&Array.isArray(inputShape[1]),()=>"A `Dot` layer should be called on a list of exactly 2 inputs.");let shape1=inputShape[0].slice(),shape2=inputShape[1].slice();if(shape1.length>3||shape2.length>3)throw new NotImplementedError("Dot layer does not support tensors of 4D or higher rank yet.");let axes=this.interpretAxes(shape1,shape2);shape1.splice(axes[0],1),shape2.splice(axes[1],1),shape2.splice(0,1);let outputShape=shape1.concat(shape2);return outputShape.length===1&&outputShape.push(1),outputShape}computeMask(inputs,mask){return null}getConfig(){let config={axes:this.axes,normalize:this.normalize},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};Dot.className="Dot";serialization_exports.registerClass(Dot);var GaussianNoise=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.stddev=args.stddev}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config={stddev:this.stddev};return Object.assign(config,baseConfig),config}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);return inTrainPhase(()=>randomNormal2(input2.shape,0,this.stddev).add(input2),()=>input2,kwargs.training||!1)})}};GaussianNoise.className="GaussianNoise";serialization_exports.registerClass(GaussianNoise);var GaussianDropout=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.rate=args.rate}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config={rate:this.rate};return Object.assign(config,baseConfig),config}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs);let input2=getExactlyOneTensor(inputs);return this.rate>0&&this.rate<1?inTrainPhase(()=>{let stddev=Math.sqrt(this.rate/(1-this.rate));return input2.mul(randomNormal2(input2.shape,1,stddev))},()=>input2,kwargs.training||!1):input2})}};GaussianDropout.className="GaussianDropout";serialization_exports.registerClass(GaussianDropout);var AlphaDropout=class extends Layer{constructor(args){super(args);this.supportsMasking=!0,this.rate=args.rate,this.noiseShape=args.noiseShape}_getNoiseShape(inputs){return this.noiseShape||getExactlyOneTensor(inputs).shape}computeOutputShape(inputShape){return inputShape}getConfig(){let baseConfig=super.getConfig(),config={rate:this.rate};return Object.assign(config,baseConfig),config}call(inputs,kwargs){return tidy(()=>{if(this.rate<1&&this.rate>0){let noiseShape=this._getNoiseShape(inputs);return inTrainPhase(()=>{let input2=getExactlyOneTensor(inputs),alpha=1.6732632423543772,scale2=1.0507009873554805,alphaP=-alpha*scale2,keptIdx=greaterEqual(randomUniform(noiseShape),this.rate);keptIdx=cast2(keptIdx,"float32");let a=((1-this.rate)*(1+this.rate*alphaP**2))**-.5,b=-a*alphaP*this.rate;return input2.mul(keptIdx).add(keptIdx.add(-1).mul(alphaP)).mul(a).add(b)},()=>getExactlyOneTensor(inputs),kwargs.training||!1)}return inputs})}};AlphaDropout.className="AlphaDropout";serialization_exports.registerClass(AlphaDropout);function batchNormalization(x,mean4,variance,beta,gamma,epsilon3=.001){let out;if(x.rank===2)out=batchNorm2d(x,mean4,variance,beta,gamma,epsilon3);else if(x.rank===3)out=batchNorm3d(x,mean4,variance,beta,gamma,epsilon3);else if(x.rank===4)out=batchNorm4d(x,mean4,variance,beta,gamma,epsilon3);else throw new NotImplementedError(`batchNormalization is not implemented for array of rank ${x.rank} yet`);return out}function regularNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3=.001){return tidy(()=>{let meanAndVariance=moments(x,reductionAxes),mean4=meanAndVariance.mean,variance=meanAndVariance.variance;return[batchNormalization(x,mean4,variance,beta,gamma,epsilon3),mean4,variance]})}function broadcastNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3=.001){return tidy(()=>{let meanAndVariance=moments(x,reductionAxes),mean4=meanAndVariance.mean,variance=meanAndVariance.variance,targetShape=[];for(let axis of range2(0,x.rank))reductionAxes.indexOf(axis)!==-1?targetShape.push(1):targetShape.push(x.shape[axis]);let broadcastMean=mean4.reshape(targetShape),broadcastVariance=variance.reshape(targetShape),broadcastGamma=gamma==null?null:gamma.reshape(targetShape),broadcastBeta=beta==null?null:beta.reshape(targetShape);return[batchNormalization(x,broadcastMean,broadcastVariance,broadcastBeta,broadcastGamma,epsilon3),mean4,variance]})}function normalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3=.001){return util_exports.arraysEqual(reductionAxes.slice().sort(),range2(0,x.rank-1))?regularNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3):broadcastNormalizeBatchInTraining(x,gamma,beta,reductionAxes,epsilon3)}var BatchNormalization=class extends Layer{constructor(args){args==null&&(args={}),super(args),this.supportsMasking=!0,this.axis=args.axis==null?-1:args.axis,this.momentum=args.momentum==null?.99:args.momentum,this.epsilon=args.epsilon==null?.001:args.epsilon,this.center=args.center==null?!0:args.center,this.scale=args.scale==null?!0:args.scale,this.betaInitializer=getInitializer(args.betaInitializer||"zeros"),this.gammaInitializer=getInitializer(args.gammaInitializer||"ones"),this.movingMeanInitializer=getInitializer(args.movingMeanInitializer||"zeros"),this.movingVarianceInitializer=getInitializer(args.movingVarianceInitializer||"ones"),this.betaConstraint=getConstraint(args.betaConstraint),this.gammaConstraint=getConstraint(args.gammaConstraint),this.betaRegularizer=getRegularizer(args.betaRegularizer),this.gammaRegularizer=getRegularizer(args.gammaRegularizer)}build(inputShape){inputShape=getExactlyOneShape(inputShape);let axis=this.axis>=0?this.axis:this.axis+inputShape.length,dim=inputShape[axis];if(dim==null)throw new ValueError(`Axis ${axis} of input tensor should have a defined dimension but the layer received an input with shape ${JSON.stringify(inputShape)}.`);this.inputSpec=[new InputSpec({ndim:inputShape.length,axes:{[axis]:dim}})];let shape=[dim];this.scale&&(this.gamma=this.addWeight("gamma",shape,null,this.gammaInitializer,this.gammaRegularizer,!0,this.gammaConstraint)),this.center&&(this.beta=this.addWeight("beta",shape,null,this.betaInitializer,this.betaRegularizer,!0,this.betaConstraint)),this.movingMean=this.addWeight("moving_mean",shape,null,this.movingMeanInitializer,null,!1),this.movingVariance=this.addWeight("moving_variance",shape,null,this.movingVarianceInitializer,null,!1),this.built=!0}call(inputs,kwargs){return tidy(()=>{let training=kwargs.training==null?!1:kwargs.training,input2=getExactlyOneTensor(inputs),inputShape=input2.shape,ndim=inputShape.length,reductionAxes=range2(0,ndim),axis=this.axis>=0?this.axis:this.axis+ndim;reductionAxes.splice(axis,1);let broadcastShape=pyListRepeat(1,ndim);broadcastShape[axis]=inputShape[axis];let sortedReductionAxes=reductionAxes.slice();sortedReductionAxes.sort();let needsBroadcasting=!util_exports.arraysEqual(sortedReductionAxes,range2(0,ndim).slice(0,ndim-1)),normalizeInference=()=>{if(needsBroadcasting){let broadcastMovingMean=this.movingMean.read().reshape(broadcastShape),broadcastMovingVariance=this.movingVariance.read().reshape(broadcastShape),broadcastBeta=this.center?this.beta.read().reshape(broadcastShape):null,broadcastGamma=this.scale?this.gamma.read().reshape(broadcastShape):null;return batchNormalization(input2,broadcastMovingMean,broadcastMovingVariance,broadcastBeta,broadcastGamma,this.epsilon)}else return batchNormalization(input2,this.movingMean.read(),this.movingVariance.read(),this.beta==null?null:this.beta.read(),this.gamma==null?null:this.gamma.read(),this.epsilon)};if(!training)return normalizeInference();let[normedTraining,mean4,variance]=normalizeBatchInTraining(input2,this.gamma.read(),this.beta.read(),reductionAxes,this.epsilon),doMovingAverage=(variable2,value,momentum)=>{tidy(()=>{let decay=1-momentum,origValue=variable2.read(),updateDelta=origValue.sub(value).mul(decay);variable2.write(origValue.sub(updateDelta))})};return(()=>{doMovingAverage(this.movingMean,mean4,this.momentum),doMovingAverage(this.movingVariance,variance,this.momentum)})(),normedTraining})}getConfig(){let config={axis:this.axis,momentum:this.momentum,epsilon:this.epsilon,center:this.center,scale:this.scale,betaInitializer:serializeInitializer(this.betaInitializer),gammaInitializer:serializeInitializer(this.gammaInitializer),movingMeanInitializer:serializeInitializer(this.movingMeanInitializer),movingVarianceInitializer:serializeInitializer(this.movingVarianceInitializer),betaRegularizer:serializeRegularizer(this.betaRegularizer),gammaRegularizer:serializeRegularizer(this.gammaRegularizer),betaConstraint:serializeConstraint(this.betaConstraint),gammaConstraint:serializeConstraint(this.gammaConstraint)},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};BatchNormalization.className="BatchNormalization";serialization_exports.registerClass(BatchNormalization);var LayerNormalization=class extends Layer{constructor(args){if(args==null&&(args={}),super(args),this.axis=args.axis==null?-1:args.axis,typeof this.axis=="number"){if(!Number.isInteger(this.axis))throw new Error(`Expected axis to be an integer, but received ${this.axis}`)}else if(Array.isArray(this.axis)){for(let axis of this.axis)if(!Number.isInteger(axis))throw new Error(`Expected axis to be an array of integers, but received ${JSON.stringify(this.axis)}`)}else throw new Error(`Expected axis to be an integer or an array of integers, but received ${JSON.stringify(this.axis)}`);this.epsilon=args.epsilon==null?.001:args.epsilon,this.center=args.center==null?!0:args.center,this.scale=args.scale==null?!0:args.scale,this.betaInitializer=getInitializer(args.betaInitializer||"zeros"),this.gammaInitializer=getInitializer(args.gammaInitializer||"ones"),this.betaRegularizer=getRegularizer(args.betaRegularizer),this.gammaRegularizer=getRegularizer(args.gammaRegularizer),this.supportsMasking=!0}build(inputShape){inputShape=getExactlyOneShape(inputShape);let nDims=inputShape.length;typeof this.axis=="number"&&(this.axis=[this.axis]);for(let i=0;i=nDims)throw new Error(`Invalid axis: ${axis}`);if(this.axis.length!==unique2(this.axis).length)throw new Error(`Found duplicate axes in: ${this.axis}`);let paramShape=this.axis.map(axis=>inputShape[axis]),trainable=!0;this.scale?this.gamma=this.addWeight("gamma",paramShape,"float32",this.gammaInitializer,this.gammaRegularizer,trainable):this.gamma=null,this.center?this.beta=this.addWeight("beta",paramShape,"float32",this.betaInitializer,this.betaRegularizer,trainable):this.beta=null,this.built=!0}call(inputs,kwargs){let input2=getExactlyOneTensor(inputs),inputShape=input2.shape,nDims=inputShape.length;return tidy(()=>{let keepDims=!0,{mean:mean4,variance}=moments(input2,this.axis,keepDims),broadcastShape=pyListRepeat(1,nDims);for(let dim of this.axis)broadcastShape[dim]=inputShape[dim];let broadcast=v=>v!=null&&v.shape.length!==nDims&&this.axis!==[nDims-1]?v.reshape(broadcastShape):v,scale2=broadcast(this.gamma.read()),offset=broadcast(this.beta.read()),momentsTiling=[],scaleOffsetTiling=[];for(let i=0;i{if(x.rank!==4)throw new ValueError(`temporalPadding expects input tensor to be 4-D, but received a ${x.rank}-D tensor.`);if(padding==null&&(padding=[[1,1],[1,1]]),padding.length!==2||padding[0].length!==2||padding[1].length!==2)throw new ValueError("spatial2dPadding expects `padding` to be an Array of two Arrays, each of which is an Array of two integers.");if(dataFormat==null&&(dataFormat=imageDataFormat()),dataFormat!=="channelsLast"&&dataFormat!=="channelsFirst")throw new ValueError(`Unknown data format: ${dataFormat}. Supported data formats are 'channelsLast' and 'channelsFirst.`);let pattern;return dataFormat==="channelsFirst"?pattern=[[0,0],[0,0],padding[0],padding[1]]:pattern=[[0,0],padding[0],padding[1],[0,0]],pad(x,pattern)})}var ZeroPadding2D=class extends Layer{constructor(args){if(args==null&&(args={}),super(args),this.dataFormat=args.dataFormat==null?imageDataFormat():args.dataFormat,args.padding==null)this.padding=[[1,1],[1,1]];else if(typeof args.padding=="number")this.padding=[[args.padding,args.padding],[args.padding,args.padding]];else{if(args.padding=args.padding,args.padding.length!==2)throw new ValueError(`ZeroPadding2D expects padding to be a length-2 array, but received a length-${args.padding.length} array.`);let heightPadding,widthPadding;if(typeof args.padding[0]=="number")heightPadding=[args.padding[0],args.padding[0]],widthPadding=[args.padding[1],args.padding[1]];else{if(args.padding=args.padding,args.padding[0].length!==2)throw new ValueError(`ZeroPadding2D expects height padding to be a length-2 array, but received a length-${args.padding[0].length} array.`);if(heightPadding=args.padding[0],args.padding[1].length!==2)throw new ValueError(`ZeroPadding2D expects width padding to be a length-2 array, but received a length-${args.padding[1].length} array.`);widthPadding=args.padding[1]}this.padding=[heightPadding,widthPadding]}this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows,cols;return this.dataFormat==="channelsFirst"?(inputShape[2]!=null&&inputShape[2]>=0?rows=inputShape[2]+this.padding[0][0]+this.padding[0][1]:rows=null,inputShape[3]!=null&&inputShape[3]>=0?cols=inputShape[3]+this.padding[1][0]+this.padding[1][1]:cols=null,[inputShape[0],inputShape[1],rows,cols]):(inputShape[1]!=null&&inputShape[1]>=0?rows=inputShape[1]+this.padding[0][0]+this.padding[0][1]:rows=null,inputShape[2]!=null&&inputShape[2]>=0?cols=inputShape[2]+this.padding[1][0]+this.padding[1][1]:cols=null,[inputShape[0],rows,cols,inputShape[3]])}call(inputs,kwargs){return tidy(()=>spatial2dPadding(getExactlyOneTensor(inputs),this.padding,this.dataFormat))}getConfig(){let config={padding:this.padding,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}};ZeroPadding2D.className="ZeroPadding2D";serialization_exports.registerClass(ZeroPadding2D);function pool2d(x,poolSize,strides,padding,dataFormat,poolMode){return tidy(()=>{checkDataFormat(dataFormat),checkPoolMode(poolMode),checkPaddingMode(padding),strides==null&&(strides=[1,1]),padding==null&&(padding="valid"),dataFormat==null&&(dataFormat=imageDataFormat()),poolMode==null&&(poolMode="max"),x=preprocessConv2DInput(x,dataFormat);let y,paddingString=padding==="same"?"same":"valid";return poolMode==="max"?y=maxPool(x,poolSize,strides,paddingString):y=avgPool(x,poolSize,strides,paddingString),dataFormat==="channelsFirst"&&(y=transpose(y,[0,3,1,2])),y})}function pool3d(x,poolSize,strides,padding,dataFormat,poolMode){return tidy(()=>{checkDataFormat(dataFormat),checkPoolMode(poolMode),checkPaddingMode(padding),strides==null&&(strides=[1,1,1]),padding==null&&(padding="valid"),dataFormat==null&&(dataFormat=imageDataFormat()),poolMode==null&&(poolMode="max"),x=preprocessConv3DInput(x,dataFormat);let y,paddingString=padding==="same"?"same":"valid";return poolMode==="max"?y=maxPool3d(x,poolSize,strides,paddingString):y=avgPool3d(x,poolSize,strides,paddingString),dataFormat==="channelsFirst"&&(y=transpose(y,[0,4,1,2,3])),y})}var Pooling1D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=2),super(args),typeof args.poolSize=="number")this.poolSize=[args.poolSize];else if(Array.isArray(args.poolSize)&&args.poolSize.length===1&&typeof args.poolSize[0]=="number")this.poolSize=args.poolSize;else throw new ValueError(`poolSize for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(args.poolSize)}`);if(assertPositiveInteger(this.poolSize,"poolSize"),args.strides==null)this.strides=this.poolSize;else if(typeof args.strides=="number")this.strides=[args.strides];else if(Array.isArray(args.strides)&&args.strides.length===1&&typeof args.strides[0]=="number")this.strides=args.strides;else throw new ValueError(`strides for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(args.strides)}`);assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:3})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let length=convOutputLength(inputShape[1],this.poolSize[0],this.padding,this.strides[0]);return[inputShape[0],length,inputShape[2]]}call(inputs,kwargs){return tidy(()=>{this.invokeCallHook(inputs,kwargs),inputs=expandDims2(getExactlyOneTensor(inputs),2);let output=this.poolingFunction(getExactlyOneTensor(inputs),[this.poolSize[0],1],[this.strides[0],1],this.padding,"channelsLast");return squeeze(output,[2])})}getConfig(){let config={poolSize:this.poolSize,padding:this.padding,strides:this.strides},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},MaxPooling1D=class extends Pooling1D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding),pool2d(inputs,poolSize,strides,padding,dataFormat,"max")}};MaxPooling1D.className="MaxPooling1D";serialization_exports.registerClass(MaxPooling1D);var AveragePooling1D=class extends Pooling1D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding),pool2d(inputs,poolSize,strides,padding,dataFormat,"avg")}};AveragePooling1D.className="AveragePooling1D";serialization_exports.registerClass(AveragePooling1D);var Pooling2D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=[2,2]),super(args),this.poolSize=Array.isArray(args.poolSize)?args.poolSize:[args.poolSize,args.poolSize],args.strides==null)this.strides=this.poolSize;else if(Array.isArray(args.strides)){if(args.strides.length!==2)throw new ValueError(`If the strides property of a 2D pooling layer is an Array, it is expected to have a length of 2, but received length ${args.strides.length}.`);this.strides=args.strides}else this.strides=[args.strides,args.strides];assertPositiveInteger(this.poolSize,"poolSize"),assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let rows=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],cols=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2];return rows=convOutputLength(rows,this.poolSize[0],this.padding,this.strides[0]),cols=convOutputLength(cols,this.poolSize[1],this.padding,this.strides[1]),this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],rows,cols]:[inputShape[0],rows,cols,inputShape[3]]}call(inputs,kwargs){return tidy(()=>(this.invokeCallHook(inputs,kwargs),this.poolingFunction(getExactlyOneTensor(inputs),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let config={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},MaxPooling2D=class extends Pooling2D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding),pool2d(inputs,poolSize,strides,padding,dataFormat,"max")}};MaxPooling2D.className="MaxPooling2D";serialization_exports.registerClass(MaxPooling2D);var AveragePooling2D=class extends Pooling2D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding),pool2d(inputs,poolSize,strides,padding,dataFormat,"avg")}};AveragePooling2D.className="AveragePooling2D";serialization_exports.registerClass(AveragePooling2D);var Pooling3D=class extends Layer{constructor(args){if(args.poolSize==null&&(args.poolSize=[2,2,2]),super(args),this.poolSize=Array.isArray(args.poolSize)?args.poolSize:[args.poolSize,args.poolSize,args.poolSize],args.strides==null)this.strides=this.poolSize;else if(Array.isArray(args.strides)){if(args.strides.length!==3)throw new ValueError(`If the strides property of a 3D pooling layer is an Array, it is expected to have a length of 3, but received length ${args.strides.length}.`);this.strides=args.strides}else this.strides=[args.strides,args.strides,args.strides];assertPositiveInteger(this.poolSize,"poolSize"),assertPositiveInteger(this.strides,"strides"),this.padding=args.padding==null?"valid":args.padding,this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),checkPaddingMode(this.padding),this.inputSpec=[new InputSpec({ndim:5})]}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let depths=this.dataFormat==="channelsFirst"?inputShape[2]:inputShape[1],rows=this.dataFormat==="channelsFirst"?inputShape[3]:inputShape[2],cols=this.dataFormat==="channelsFirst"?inputShape[4]:inputShape[3];return depths=convOutputLength(depths,this.poolSize[0],this.padding,this.strides[0]),rows=convOutputLength(rows,this.poolSize[1],this.padding,this.strides[1]),cols=convOutputLength(cols,this.poolSize[2],this.padding,this.strides[2]),this.dataFormat==="channelsFirst"?[inputShape[0],inputShape[1],depths,rows,cols]:[inputShape[0],depths,rows,cols,inputShape[4]]}call(inputs,kwargs){return tidy(()=>(this.invokeCallHook(inputs,kwargs),this.poolingFunction(getExactlyOneTensor(inputs),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let config={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},MaxPooling3D=class extends Pooling3D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding),pool3d(inputs,poolSize,strides,padding,dataFormat,"max")}};MaxPooling3D.className="MaxPooling3D";serialization_exports.registerClass(MaxPooling3D);var AveragePooling3D=class extends Pooling3D{constructor(args){super(args)}poolingFunction(inputs,poolSize,strides,padding,dataFormat){return checkDataFormat(dataFormat),checkPaddingMode(padding),pool3d(inputs,poolSize,strides,padding,dataFormat,"avg")}};AveragePooling3D.className="AveragePooling3D";serialization_exports.registerClass(AveragePooling3D);var GlobalPooling1D=class extends Layer{constructor(args){super(args);this.inputSpec=[new InputSpec({ndim:3})]}computeOutputShape(inputShape){return[inputShape[0],inputShape[2]]}call(inputs,kwargs){throw new NotImplementedError}},GlobalAveragePooling1D=class extends GlobalPooling1D{constructor(args){super(args||{})}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return mean(input2,1)})}};GlobalAveragePooling1D.className="GlobalAveragePooling1D";serialization_exports.registerClass(GlobalAveragePooling1D);var GlobalMaxPooling1D=class extends GlobalPooling1D{constructor(args){super(args||{})}call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return max(input2,1)})}};GlobalMaxPooling1D.className="GlobalMaxPooling1D";serialization_exports.registerClass(GlobalMaxPooling1D);var GlobalPooling2D=class extends Layer{constructor(args){super(args);this.dataFormat=args.dataFormat==null?"channelsLast":args.dataFormat,checkDataFormat(this.dataFormat),this.inputSpec=[new InputSpec({ndim:4})]}computeOutputShape(inputShape){return inputShape=inputShape,this.dataFormat==="channelsLast"?[inputShape[0],inputShape[3]]:[inputShape[0],inputShape[1]]}call(inputs,kwargs){throw new NotImplementedError}getConfig(){let config={dataFormat:this.dataFormat},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}},GlobalAveragePooling2D=class extends GlobalPooling2D{call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return this.dataFormat==="channelsLast"?mean(input2,[1,2]):mean(input2,[2,3])})}};GlobalAveragePooling2D.className="GlobalAveragePooling2D";serialization_exports.registerClass(GlobalAveragePooling2D);var GlobalMaxPooling2D=class extends GlobalPooling2D{call(inputs,kwargs){return tidy(()=>{let input2=getExactlyOneTensor(inputs);return this.dataFormat==="channelsLast"?max(input2,[1,2]):max(input2,[2,3])})}};GlobalMaxPooling2D.className="GlobalMaxPooling2D";serialization_exports.registerClass(GlobalMaxPooling2D);var Wrapper=class extends Layer{constructor(args){super(args);this.layer=args.layer}build(inputShape){this.built=!0}get trainable(){return this.layer!=null?this.layer.trainable:!1}set trainable(value){this.layer!=null&&(this.layer.trainable=value)}get trainableWeights(){return this.layer.trainableWeights}get nonTrainableWeights(){return this.layer.nonTrainableWeights}get updates(){return this.layer._updates}get losses(){return this.layer.losses}getWeights(){return this.layer.getWeights()}setWeights(weights){this.layer.setWeights(weights)}getConfig(){let config={layer:{className:this.layer.getClassName(),config:this.layer.getConfig()}},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.layer!=null&&this.layer.setFastWeightInitDuringBuild(value)}static fromConfig(cls,config,customObjects={}){let layerConfig=config.layer,layer=deserialize(layerConfig,customObjects);delete config.layer;let newConfig={layer};return Object.assign(newConfig,config),new cls(newConfig)}},TimeDistributed=class extends Wrapper{constructor(args){super(args);this.supportsMasking=!0}build(inputShape){if(inputShape=getExactlyOneShape(inputShape),inputShape.length<3)throw new ValueError(`TimeDistributed layer expects an input shape >= 3D, but received input shape ${JSON.stringify(inputShape)}`);this.inputSpec=[{shape:inputShape}];let childInputShape=[inputShape[0]].concat(inputShape.slice(2));this.layer.built||(this.layer.build(childInputShape),this.layer.built=!0),super.build(inputShape)}computeOutputShape(inputShape){inputShape=getExactlyOneShape(inputShape);let childInputShape=[inputShape[0]].concat(inputShape.slice(2)),childOutputShape=this.layer.computeOutputShape(childInputShape),timesteps=inputShape[1];return[childOutputShape[0],timesteps].concat(childOutputShape.slice(1))}call(inputs,kwargs){return tidy(()=>(inputs=getExactlyOneTensor(inputs),rnn((inputs2,states)=>[getExactlyOneTensor(this.layer.call(inputs2,kwargs)),[]],inputs,[],!1,null,null,!1,!0)[1]))}};TimeDistributed.className="TimeDistributed";serialization_exports.registerClass(TimeDistributed);function checkBidirectionalMergeMode(value){checkStringTypeUnionValue(VALID_BIDIRECTIONAL_MERGE_MODES,"BidirectionalMergeMode",value)}var DEFAULT_BIDIRECTIONAL_MERGE_MODE="concat",Bidirectional=class extends Wrapper{constructor(args){super(args);let layerConfig=args.layer.getConfig(),forwDict={};forwDict.className=args.layer.getClassName(),forwDict.config=layerConfig,this.forwardLayer=deserialize(forwDict),layerConfig.goBackwards=layerConfig.goBackwards!==!0;let backDict={};if(backDict.className=args.layer.getClassName(),backDict.config=layerConfig,this.backwardLayer=deserialize(backDict),this.forwardLayer.name="forward_"+this.forwardLayer.name,this.backwardLayer.name="backward_"+this.backwardLayer.name,this.mergeMode=args.mergeMode===void 0?DEFAULT_BIDIRECTIONAL_MERGE_MODE:args.mergeMode,checkBidirectionalMergeMode(this.mergeMode),args.weights)throw new NotImplementedError("weights support is not implemented for Bidirectional layer yet.");this._stateful=args.layer.stateful,this.returnSequences=args.layer.returnSequences,this.returnState=args.layer.returnState,this.supportsMasking=!0,this._trainable=!0,this.inputSpec=args.layer.inputSpec,this.numConstants=null}get trainable(){return this._trainable}set trainable(value){this._trainable=value,this.forwardLayer!=null&&(this.forwardLayer.trainable=value),this.backwardLayer!=null&&(this.backwardLayer.trainable=value)}getWeights(){return this.forwardLayer.getWeights().concat(this.backwardLayer.getWeights())}setWeights(weights){let numWeights=weights.length,numeightsOver2=Math.floor(numWeights/2);this.forwardLayer.setWeights(weights.slice(0,numeightsOver2)),this.backwardLayer.setWeights(weights.slice(numeightsOver2))}computeOutputShape(inputShape){let layerShapes=this.forwardLayer.computeOutputShape(inputShape);Array.isArray(layerShapes)&&Array.isArray(layerShapes[0])||(layerShapes=[layerShapes]),layerShapes=layerShapes;let outputShape,outputShapes,stateShape;return this.returnState&&(stateShape=layerShapes.slice(1)),outputShape=layerShapes[0],outputShape=outputShape,this.mergeMode==="concat"?(outputShape[outputShape.length-1]*=2,outputShapes=[outputShape]):this.mergeMode==null?outputShapes=[outputShape,outputShape.slice()]:outputShapes=[outputShape],this.returnState?this.mergeMode==null?outputShapes.concat(stateShape).concat(stateShape.slice()):[outputShape].concat(stateShape).concat(stateShape.slice()):singletonOrArray(outputShapes)}apply(inputs,kwargs){let initialState=kwargs==null?null:kwargs.initialState,constants=kwargs==null?null:kwargs.constants;kwargs==null&&(kwargs={});let standardized=standardizeArgs(inputs,initialState,constants,this.numConstants);if(inputs=standardized.inputs,initialState=standardized.initialState,constants=standardized.constants,Array.isArray(inputs)&&(initialState=inputs.slice(1),inputs=inputs[0]),(initialState==null||initialState.length===0)&&constants==null)return super.apply(inputs,kwargs);let additionalInputs=[],additionalSpecs=[];if(initialState!=null){let numStates=initialState.length;if(numStates%2>0)throw new ValueError("When passing `initialState` to a Bidrectional RNN, the state should be an Array containing the states of the underlying RNNs.");kwargs.initialState=initialState,additionalInputs.push(...initialState);let stateSpecs=initialState.map(state=>new InputSpec({shape:state.shape}));this.forwardLayer.stateSpec=stateSpecs.slice(0,numStates/2),this.backwardLayer.stateSpec=stateSpecs.slice(numStates/2),additionalSpecs.push(...stateSpecs)}if(constants!=null)throw new NotImplementedError("Support for constants in Bidirectional layers is not implemented yet.");let isSymbolicTensor=additionalInputs[0]instanceof SymbolicTensor;for(let tensor2 of additionalInputs)if(tensor2 instanceof SymbolicTensor!==isSymbolicTensor)throw new ValueError("The initial state of a Bidirectional layer cannot be specified as a mix of symbolic and non-symbolic tensors");if(isSymbolicTensor){let fullInput=[inputs].concat(additionalInputs),fullInputSpec=this.inputSpec.concat(additionalSpecs),originalInputSpec=this.inputSpec;this.inputSpec=fullInputSpec;let output=super.apply(fullInput,kwargs);return this.inputSpec=originalInputSpec,output}else return super.apply(inputs,kwargs)}call(inputs,kwargs){return tidy(()=>{let initialState=kwargs.initialState,y,yRev;if(initialState==null)y=this.forwardLayer.call(inputs,kwargs),yRev=this.backwardLayer.call(inputs,kwargs);else{let forwardState=initialState.slice(0,initialState.length/2),backwardState=initialState.slice(initialState.length/2);y=this.forwardLayer.call(inputs,Object.assign(kwargs,{initialState:forwardState})),yRev=this.backwardLayer.call(inputs,Object.assign(kwargs,{initialState:backwardState}))}let states;this.returnState&&(Array.isArray(y)&&(states=y.slice(1).concat(yRev.slice(1))),y=y[0],yRev=yRev[0]),this.returnSequences&&(yRev=reverse(yRev,1));let output;return this.mergeMode==="concat"?output=concatenate([y,yRev]):this.mergeMode==="sum"?output=add2(y,yRev):this.mergeMode==="ave"?output=mul(.5,add2(y,yRev)):this.mergeMode==="mul"?output=mul(y,yRev):this.mergeMode==null&&(output=[y,yRev]),this.returnState?this.mergeMode==null?output.concat(states):[output].concat(states):output})}resetStates(states){this.forwardLayer.resetStates(),this.backwardLayer.resetStates()}build(inputShape){nameScope(this.forwardLayer.name,()=>{this.forwardLayer.build(inputShape)}),nameScope(this.backwardLayer.name,()=>{this.backwardLayer.build(inputShape)}),this.built=!0}computeMask(inputs,mask){Array.isArray(mask)&&(mask=mask[0]);let outputMask;if(this.returnSequences?this.mergeMode==null?outputMask=[mask,mask]:outputMask=mask:this.mergeMode==null?outputMask=[null,null]:outputMask=null,this.returnState){let stateMask=this.forwardLayer.states.map(state=>null);return Array.isArray(outputMask)?outputMask.concat(stateMask).concat(stateMask):[outputMask].concat(stateMask).concat(stateMask)}else return outputMask}get trainableWeights(){return this.forwardLayer.trainableWeights.concat(this.backwardLayer.trainableWeights)}get nonTrainableWeights(){return this.forwardLayer.nonTrainableWeights.concat(this.backwardLayer.nonTrainableWeights)}setFastWeightInitDuringBuild(value){super.setFastWeightInitDuringBuild(value),this.forwardLayer!=null&&this.forwardLayer.setFastWeightInitDuringBuild(value),this.backwardLayer!=null&&this.backwardLayer.setFastWeightInitDuringBuild(value)}getConfig(){let config={mergeMode:this.mergeMode},baseConfig=super.getConfig();return Object.assign(config,baseConfig),config}static fromConfig(cls,config){let rnnLayer=deserialize(config.layer);if(delete config.layer,config.numConstants!=null)throw new NotImplementedError("Deserialization of a Bidirectional layer with numConstants present is not supported yet.");let newConfig=config;return newConfig.layer=rnnLayer,new cls(newConfig)}};Bidirectional.className="Bidirectional";serialization_exports.registerClass(Bidirectional);function inputLayer(args){return new InputLayer(args)}function elu3(args){return new ELU(args)}function reLU(args){return new ReLU(args)}function leakyReLU(args){return new LeakyReLU(args)}function prelu2(args){return new PReLU(args)}function softmax2(args){return new Softmax3(args)}function thresholdedReLU(args){return new ThresholdedReLU(args)}function conv1d2(args){return new Conv1D(args)}function conv2d3(args){return new Conv2D2(args)}function conv2dTranspose2(args){return new Conv2DTranspose(args)}function conv3d2(args){return new Conv3D2(args)}function separableConv2d2(args){return new SeparableConv2D(args)}function cropping2D(args){return new Cropping2D(args)}function upSampling2d(args){return new UpSampling2D(args)}function depthwiseConv2d4(args){return new DepthwiseConv2D(args)}function activation(args){return new Activation2(args)}function dense(args){return new Dense(args)}function dropout3(args){return new Dropout(args)}function spatialDropout1d(args){return new SpatialDropout1D(args)}function flatten3(args){return new Flatten(args)}function repeatVector(args){return new RepeatVector(args)}function reshape2(args){return new Reshape2(args)}function permute(args){return new Permute(args)}function embedding(args){return new Embedding(args)}function add3(args){return new Add2(args)}function average(args){return new Average(args)}function concatenate2(args){return new Concatenate(args)}function maximum2(args){return new Maximum2(args)}function minimum2(args){return new Minimum2(args)}function multiply(args){return new Multiply2(args)}function dot3(args){return new Dot(args)}function batchNormalization2(args){return new BatchNormalization(args)}function layerNormalization(args){return new LayerNormalization(args)}function zeroPadding2d(args){return new ZeroPadding2D(args)}function averagePooling1d(args){return new AveragePooling1D(args)}function avgPool1d(args){return averagePooling1d(args)}function avgPooling1d(args){return averagePooling1d(args)}function averagePooling2d(args){return new AveragePooling2D(args)}function avgPool2d(args){return averagePooling2d(args)}function avgPooling2d(args){return averagePooling2d(args)}function averagePooling3d(args){return new AveragePooling3D(args)}function avgPool3d2(args){return averagePooling3d(args)}function avgPooling3d(args){return averagePooling3d(args)}function globalAveragePooling1d(args){return new GlobalAveragePooling1D(args)}function globalAveragePooling2d(args){return new GlobalAveragePooling2D(args)}function globalMaxPooling1d(args){return new GlobalMaxPooling1D(args)}function globalMaxPooling2d(args){return new GlobalMaxPooling2D(args)}function maxPooling1d(args){return new MaxPooling1D(args)}function maxPooling2d(args){return new MaxPooling2D(args)}function maxPooling3d(args){return new MaxPooling3D(args)}function gru(args){return new GRU(args)}function gruCell(args){return new GRUCell(args)}function lstm(args){return new LSTM(args)}function lstmCell(args){return new LSTMCell(args)}function simpleRNN(args){return new SimpleRNN(args)}function simpleRNNCell(args){return new SimpleRNNCell(args)}function convLstm2d(args){return new ConvLSTM2D(args)}function convLstm2dCell(args){return new ConvLSTM2DCell(args)}function rnn2(args){return new RNN(args)}function stackedRNNCells(args){return new StackedRNNCells(args)}function bidirectional(args){return new Bidirectional(args)}function timeDistributed(args){return new TimeDistributed(args)}var globalMaxPool1d=globalMaxPooling1d,globalMaxPool2d=globalMaxPooling2d,maxPool1d=maxPooling1d,maxPool2d=maxPooling2d;function gaussianNoise(args){return new GaussianNoise(args)}function gaussianDropout(args){return new GaussianDropout(args)}function alphaDropout(args){return new AlphaDropout(args)}function masking(args){return new Masking(args)}var exports_metrics_exports={};__export(exports_metrics_exports,{MAPE:()=>MAPE2,MSE:()=>MSE2,binaryAccuracy:()=>binaryAccuracy2,binaryCrossentropy:()=>binaryCrossentropy3,categoricalAccuracy:()=>categoricalAccuracy2,categoricalCrossentropy:()=>categoricalCrossentropy3,cosineProximity:()=>cosineProximity2,mape:()=>mape2,meanAbsoluteError:()=>meanAbsoluteError2,meanAbsolutePercentageError:()=>meanAbsolutePercentageError2,meanSquaredError:()=>meanSquaredError3,mse:()=>mse2,precision:()=>precision2,recall:()=>recall2,sparseCategoricalAccuracy:()=>sparseCategoricalAccuracy2});function binaryAccuracy2(yTrue,yPred){return binaryAccuracy(yTrue,yPred)}function binaryCrossentropy3(yTrue,yPred){return binaryCrossentropy2(yTrue,yPred)}function sparseCategoricalAccuracy2(yTrue,yPred){return sparseCategoricalAccuracy(yTrue,yPred)}function categoricalAccuracy2(yTrue,yPred){return categoricalAccuracy(yTrue,yPred)}function categoricalCrossentropy3(yTrue,yPred){return categoricalCrossentropy2(yTrue,yPred)}function precision2(yTrue,yPred){return precision(yTrue,yPred)}function recall2(yTrue,yPred){return recall(yTrue,yPred)}function cosineProximity2(yTrue,yPred){return cosineProximity(yTrue,yPred)}function meanAbsoluteError2(yTrue,yPred){return meanAbsoluteError(yTrue,yPred)}function meanAbsolutePercentageError2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function MAPE2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function mape2(yTrue,yPred){return meanAbsolutePercentageError(yTrue,yPred)}function meanSquaredError3(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}function MSE2(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}function mse2(yTrue,yPred){return meanSquaredError2(yTrue,yPred)}var exports_models_exports={};__export(exports_models_exports,{modelFromJSON:()=>modelFromJSON});var exports_regularizers_exports={};__export(exports_regularizers_exports,{l1:()=>l12,l1l2:()=>l1l2,l2:()=>l22});function l1l2(config){return new L1L2(config)}function l12(config){return l1(config)}function l22(config){return l2(config)}var Callback=class extends BaseCallback{constructor(){super(...arguments);this.model=null}setModel(model2){if(!(model2 instanceof LayersModel))throw new Error("model must be a LayersModel, not some other Container");this.model=model2}};function less2(currVal,prevVal){return currValprevVal}var EarlyStopping=class extends Callback{constructor(args){super();if(args==null&&(args={}),args.restoreBestWeights)throw new NotImplementedError("restoreBestWeights = True is not implemented in EarlyStopping yet.");this.monitor=args.monitor||"val_loss",this.minDelta=Math.abs(args.minDelta||0),this.patience=args.patience||0,this.verbose=args.verbose||0,this.mode=args.mode||"auto",this.baseline=args.baseline,["auto","min","max"].indexOf(this.mode)===-1&&(console.warn(`EarlyStopping mode '${this.mode}' is invalid. Falling back to mode 'auto'.`),this.mode="auto"),this.mode==="min"?this.monitorFunc=less2:this.mode==="max"?this.monitorFunc=greater2:this.monitor.indexOf("acc")!==-1?this.monitorFunc=greater2:this.monitorFunc=less2,this.monitorFunc===less2&&(this.minDelta*=-1)}async onTrainBegin(logs){this.wait=0,this.stoppedEpoch=0,this.baseline!=null?this.best=this.baseline:this.best=this.monitorFunc===less2?Infinity:-Infinity}async onEpochEnd(epoch,logs){await resolveScalarsInLogs(logs);let current=this.getMonitorValue(logs);current!=null&&(this.monitorFunc(current-this.minDelta,this.best)?(this.best=current,this.wait=0):(this.wait++,this.wait>=this.patience&&(this.stoppedEpoch=epoch,this.model.stopTraining=!0)))}async onTrainEnd(logs){this.stoppedEpoch>0&&this.verbose&&console.log(`Epoch ${this.stoppedEpoch}: early stopping.`)}getMonitorValue(logs){logs==null&&(logs={});let monitorValue=logs[this.monitor];return monitorValue==null&&console.warn(`Metric for EarlyStopping ${this.monitor} is not available. Available metrics are: ${Object.keys(logs)}`),monitorValue}};function earlyStopping(args){return new EarlyStopping(args)}var callbacks={earlyStopping};var DataType;(function(DataType2){DataType2[DataType2.DT_INVALID=0]="DT_INVALID",DataType2[DataType2.DT_FLOAT=1]="DT_FLOAT",DataType2[DataType2.DT_DOUBLE=2]="DT_DOUBLE",DataType2[DataType2.DT_INT32=3]="DT_INT32",DataType2[DataType2.DT_UINT8=4]="DT_UINT8",DataType2[DataType2.DT_INT16=5]="DT_INT16",DataType2[DataType2.DT_INT8=6]="DT_INT8",DataType2[DataType2.DT_STRING=7]="DT_STRING",DataType2[DataType2.DT_COMPLEX64=8]="DT_COMPLEX64",DataType2[DataType2.DT_INT64=9]="DT_INT64",DataType2[DataType2.DT_BOOL=10]="DT_BOOL",DataType2[DataType2.DT_QINT8=11]="DT_QINT8",DataType2[DataType2.DT_QUINT8=12]="DT_QUINT8",DataType2[DataType2.DT_QINT32=13]="DT_QINT32",DataType2[DataType2.DT_BFLOAT16=14]="DT_BFLOAT16",DataType2[DataType2.DT_FLOAT_REF=101]="DT_FLOAT_REF",DataType2[DataType2.DT_DOUBLE_REF=102]="DT_DOUBLE_REF",DataType2[DataType2.DT_INT32_REF=103]="DT_INT32_REF",DataType2[DataType2.DT_UINT8_REF=104]="DT_UINT8_REF",DataType2[DataType2.DT_INT16_REF=105]="DT_INT16_REF",DataType2[DataType2.DT_INT8_REF=106]="DT_INT8_REF",DataType2[DataType2.DT_STRING_REF=107]="DT_STRING_REF",DataType2[DataType2.DT_COMPLEX64_REF=108]="DT_COMPLEX64_REF",DataType2[DataType2.DT_INT64_REF=109]="DT_INT64_REF",DataType2[DataType2.DT_BOOL_REF=110]="DT_BOOL_REF",DataType2[DataType2.DT_QINT8_REF=111]="DT_QINT8_REF",DataType2[DataType2.DT_QUINT8_REF=112]="DT_QUINT8_REF",DataType2[DataType2.DT_QINT32_REF=113]="DT_QINT32_REF",DataType2[DataType2.DT_BFLOAT16_REF=114]="DT_BFLOAT16_REF"})(DataType||(DataType={}));var SaverDef;(function(SaverDef2){let CheckpointFormatVersion;(function(CheckpointFormatVersion2){CheckpointFormatVersion2[CheckpointFormatVersion2.LEGACY=0]="LEGACY",CheckpointFormatVersion2[CheckpointFormatVersion2.V1=1]="V1",CheckpointFormatVersion2[CheckpointFormatVersion2.V2=2]="V2"})(CheckpointFormatVersion=SaverDef2.CheckpointFormatVersion||(SaverDef2.CheckpointFormatVersion={}))})(SaverDef||(SaverDef={}));var CUSTOM_OPS={};function registerOp(name,opFunc){let opMapper={tfOpName:name,category:"custom",inputs:[],attrs:[],customExecutor:opFunc};CUSTOM_OPS[name]=opMapper}function getRegisteredOp(name){return CUSTOM_OPS[name]}function deregisterOp(name){delete CUSTOM_OPS[name]}function getParamValue(paramName,node,tensorMap,context,resourceManager){let inputParam=node.inputParams[paramName];if(inputParam&&inputParam.inputIndexStart!==void 0){let start=inputParam.inputIndexStart,end=inputParam.inputIndexEnd===0?void 0:inputParam.inputIndexEnd===void 0?start+1:inputParam.inputIndexEnd;if(inputParam.type==="tensor")return getTensor(node.inputNames[inputParam.inputIndexStart],tensorMap,context,resourceManager);if(inputParam.type==="tensors")return node.inputNames.slice(start,end).map(name=>getTensor(name,tensorMap,context,resourceManager));let tensor2=getTensor(node.inputNames.slice(start)[0],tensorMap,context,resourceManager),data=tensor2.dataSync();return inputParam.type==="number"?data[0]:util_exports.toNestedArray(tensor2.shape,data)}let attrParam=node.attrParams[paramName];return attrParam&&attrParam.value}function getTensor(name,tensorsMap,context,resourceManager){let[nodeName,index]=parseNodeName(name);if(resourceManager!=null){let tensor2=resourceManager.getHashTableHandleByName(nodeName);if(tensor2!=null)return tensor2}let contextId=context.currentContextIds.find(contextId2=>!!tensorsMap[getNodeNameWithContextId(nodeName,contextId2)]);return contextId!==void 0?tensorsMap[getNodeNameWithContextId(nodeName,contextId)][index]:void 0}function getTensorsForCurrentContenxt(name,tensorsMap,context){return tensorsMap[getNodeNameWithContextId(name,context.currentContextId)]}function getNodeNameAndIndex(inputName,context){let[nodeName,index]=parseNodeName(inputName);return[getNodeNameWithContextId(nodeName,context&&context.currentContextId),index]}function getNodeNameWithContextId(name,contextId){return contextId?`${name}-${contextId}`:name}function parseNodeName(name){let parts=name.split(":");return parts.length===1?[name,0]:[parts[0],Number(parts[parts.length-1])]}function getPadding(node,tensorMap,context){let pad3=getParamValue("pad",node,tensorMap,context);if(pad3==="explicit"){pad3=getParamValue("explicitPaddings",node,tensorMap,context);let explicitPadding=[[0,0],[0,0],[0,0],[0,0]];for(let i=0;i<4;i++)explicitPadding[i][0]=pad3[i*2],explicitPadding[i][1]=pad3[i*2+1];return explicitPadding}return pad3}function cloneTensor(tensor2){return tensor2.kept?tensor2:clone(tensor2)}var arithmetic_exports={};__export(arithmetic_exports,{json:()=>json});var json=[{tfOpName:"Add",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddV2",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddN",category:"arithmetic",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"BiasAdd",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"Sub",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"RealDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Div",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"DivNoNan",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mul",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Maximum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Minimum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Pow",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SquaredDifference",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorMod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}];var basic_math_exports={};__export(basic_math_exports,{json:()=>json2});var json2=[{tfOpName:"Abs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan2",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ceil",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ClipByValue",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"clipValueMin",type:"number"},{start:2,name:"clipValueMax",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Complex",category:"basic_math",inputs:[{start:0,name:"real",type:"tensor"},{start:1,name:"imag",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ComplexAbs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Elu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Exp",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Floor",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Imag",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Neg",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Real",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Prelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"alpha",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu6",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Selu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sigmoid",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Rsqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Square",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sign",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Round",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Expm1",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log1p",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Reciprocal",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Softplus",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Erf",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Prod",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axes",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LeakyRelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"alpha",name:"alpha",type:"number",defaultValue:.2},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}];var control_exports={};__export(control_exports,{json:()=>json3});var json3=[{tfOpName:"EmptyTensorList",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"maxNumElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"LoopCond",category:"control",inputs:[{start:0,name:"pred",type:"tensor"}]},{tfOpName:"Switch",category:"control",inputs:[{start:0,name:"data",type:"tensor"},{start:1,name:"pred",type:"tensor"}]},{tfOpName:"Merge",category:"control",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"Enter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"frame_name",name:"frameName",type:"string"},{tfName:"is_constant",name:"isConstant",type:"bool"}]},{tfOpName:"Exit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NextIteration",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayV3",category:"control",inputs:[{start:0,name:"size",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"dynamic_size",name:"dynamicSize",type:"bool"},{tfName:"clear_after_read",name:"clearAfterRead",type:"bool"},{tfName:"identical_element_shapes",name:"identicalElementShapes",type:"bool"},{tfName:"tensor_array_name",name:"name",type:"string"}]},{tfOpName:"TensorArrayWriteV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayReadV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayGatherV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"}]},{tfOpName:"TensorArrayScatterV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArrayConcatV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape_except0",name:"elementShapeExcept0",type:"shape",notSupported:!0}]},{tfOpName:"TensorArraySplitV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"tensor",type:"tensor"},{start:2,name:"lengths",type:"number[]"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArraySizeV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}]},{tfOpName:"TensorArrayCloseV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"}]},{tfOpName:"StatelessIf",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"If",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"StatelessWhile",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"While",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"TensorListScatter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListScatterV2",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"},{start:3,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGather",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListSetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListReserve",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListFromTensor",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListStack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"},{tfName:"num_elements",name:"numElements",type:"dtype"}]},{tfOpName:"TensorListSplit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"},{start:2,name:"lengths",type:"number[]"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListConcat",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"}],attrs:[{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPopBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPushBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]}];var convolution_exports={};__export(convolution_exports,{json:()=>json4});var json4=[{tfOpName:"AvgPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[],notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPoolWithArgmax",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"include_batch_in_index",name:"includeBatchInIndex",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AvgPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Conv1D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"stride",name:"stride",type:"number"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NWC"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"dilation",name:"dilation",type:"number",defaultValue:1}]},{tfOpName:"Conv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"useCudnnOnGpu",name:"useCudnnOnGpu",type:"bool"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"_FusedConv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"use_cudnn_on_gpu",name:"useCudnnOnGpu",type:"bool",defaultValue:!0},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"leakyrelu_alpha",name:"leakyreluAlpha",type:"number"}]},{tfOpName:"Conv2DBackpropInput",category:"convolution",inputs:[{start:2,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:0,name:"outputShape",type:"number[]"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]",notSupported:!0}]},{tfOpName:"DepthwiseConv2d",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"DepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"FusedDepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]}]},{tfOpName:"Conv3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"Dilation2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"rates",name:"dilations",type:"number[]"},{tfName:"padding",name:"pad",type:"string"}]}];var creation_exports={};__export(creation_exports,{json:()=>json5});var json5=[{tfOpName:"Fill",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"},{start:1,name:"value",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"LinSpace",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"num",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"OneHot",category:"creation",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"depth",type:"number"},{start:2,name:"onValue",type:"number",defaultValue:1},{start:3,name:"offValue",type:"number",defaultValue:0}],attrs:[{tfName:"axis",name:"axis",type:"number",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ones",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"OnesLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"RandomUniform",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"minval",name:"minval",type:"number",defaultValue:0},{tfName:"maxval",name:"maxval",type:"number",defaultValue:1},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"seed",name:"seed",type:"number",defaultValue:0},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Range",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"step",type:"number",defaultValue:0}],attrs:[{tfName:"Tidx",name:"dtype",type:"dtype"}]},{tfOpName:"TruncatedNormal",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"means",name:"mean",type:"number",defaultValue:0},{tfName:"stddev",name:"stdDev",type:"number",defaultValue:1},{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Zeros",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"ZerosLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"Multinomial",category:"creation",inputs:[{start:0,name:"logits",type:"tensor"},{start:1,name:"numSamples",type:"number"}],attrs:[{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number"},{tfName:"T",name:"dtype",type:"dtype"},{tfName:"output_dtype",name:"output_dtype",type:"dtype"}]}];var dynamic_exports={};__export(dynamic_exports,{json:()=>json6});var json6=[{tfOpName:"NonMaxSuppressionV2",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV3",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV4",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"T_threshold",name:"threshold",type:"dtype",notSupported:!0},{tfName:"pad_to_max_output_size",name:"padToMaxOutputSize",type:"bool"}]},{tfOpName:"NonMaxSuppressionV5",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"},{start:5,name:"softNmsSigma",type:"number"}]},{tfOpName:"Where",category:"dynamic",inputs:[{start:0,name:"condition",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ListDiff",category:"dynamic",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}];var evaluation_exports={};__export(evaluation_exports,{json:()=>json7});var json7=[{tfOpName:"TopKV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"k",type:"number"}],attrs:[{tfName:"sorted",name:"sorted",type:"bool"}]},{tfOpName:"Unique",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"UniqueV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]}];var graph_exports={};__export(graph_exports,{json:()=>json8});var json8=[{tfOpName:"PlaceholderWithDefault",category:"graph",inputs:[{start:0,name:"default",type:"tensor"}],attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Placeholder",category:"graph",attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Const",category:"graph"},{tfOpName:"Identity",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IdentityN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Snapshot",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Rank",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Size",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Shape",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"ShapeN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Print",category:"graph",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"data",type:"tensors"}],attrs:[{tfName:"message",name:"message",type:"string"},{tfName:"first_n",name:"firstN",type:"number",notSupported:!0},{tfName:"summarize",name:"summarize",type:"number",defaultValue:3}]},{tfOpName:"NoOp",category:"graph",inputs:[]},{tfOpName:"StopGradient",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"FakeQuantWithMinMaxVars",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"min",name:"min",type:"number"},{tfName:"max",name:"max",type:"number"}]}];var hash_table_exports={};__export(hash_table_exports,{json:()=>json9});var json9=[{tfOpName:"HashTable",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"HashTableV2",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"LookupTableImport",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableImportV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFind",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFindV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]}];var image_exports={};__export(image_exports,{json:()=>json10});var json10=[{tfOpName:"ResizeBilinear",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"half_pixel_centers",name:"halfPixelCenters",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ResizeNearestNeighbor",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"half_pixel_centers",name:"halfPixelCenters",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"CropAndResize",category:"image",inputs:[{start:0,name:"image",type:"tensor"},{start:1,name:"boxes",type:"tensor"},{start:2,name:"boxInd",type:"tensor"},{start:3,name:"cropSize",type:"number[]"}],attrs:[{tfName:"method",name:"method",type:"string"},{tfName:"extrapolation_value",name:"extrapolationValue",type:"number"}]}];var logical_exports={};__export(logical_exports,{json:()=>json11});var json11=[{tfOpName:"Equal",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NotEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Greater",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"GreaterEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Less",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LessEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalAnd",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalNot",category:"logical",inputs:[{start:0,name:"a",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalOr",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Select",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SelectV2",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}];var matrices_exports={};__export(matrices_exports,{json:()=>json12});var json12=[{tfOpName:"_FusedMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMulV2",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Transpose",category:"matrices",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"perm",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}];var normalization_exports={};__export(normalization_exports,{json:()=>json13});var json13=[{tfOpName:"FusedBatchNorm",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV2",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV3",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"LRN",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"depth_radius",name:"radius",type:"number",defaultValue:5},{tfName:"bias",name:"bias",type:"number",defaultValue:1},{tfName:"alpha",name:"alpha",type:"number",defaultValue:1},{tfName:"beta",name:"beta",type:"number",defaultValue:.5}]},{tfOpName:"Softmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"LogSoftmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"SparseToDense",category:"normalization",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!0,notSupported:!0}]}];var reduction_exports={};__export(reduction_exports,{json:()=>json14});var json14=[{tfOpName:"Bincount",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"size",type:"number"},{start:2,name:"weights",type:"tensor"}]},{tfOpName:"DenseBincount",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"size",type:"number"},{start:2,name:"weights",type:"tensor"}],attrs:[{tfName:"binary_output",name:"binaryOutput",type:"bool"}]},{tfOpName:"Max",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Mean",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Min",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Sum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"All",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Any",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"ArgMax",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"ArgMin",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"Prod",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Cumsum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}],attrs:[{tfName:"exclusive",name:"exclusive",type:"bool"},{tfName:"reverse",name:"reverse",type:"bool"}]}];var slice_join_exports={};__export(slice_join_exports,{json:()=>json15});var json15=[{tfOpName:"ConcatV2",category:"slice_join",inputs:[{start:0,end:-1,name:"tensors",type:"tensors"},{start:-1,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"Concat",category:"slice_join",inputs:[{start:1,end:0,name:"tensors",type:"tensors"},{start:0,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"GatherV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"},{start:2,name:"axis",type:"number",defaultValue:0}],attrs:[{tfName:"batch_dims",name:"batchDims",type:"number",defaultValue:0}]},{tfOpName:"Gather",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",notSupported:!0}]},{tfOpName:"Reverse",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"dims",type:"bool[]"}]},{tfOpName:"ReverseV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}]},{tfOpName:"Slice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"size",type:"number[]"}]},{tfOpName:"StridedSlice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"end",type:"number[]"},{start:3,name:"strides",type:"number[]"}],attrs:[{tfName:"begin_mask",name:"beginMask",type:"number",defaultValue:0},{tfName:"end_mask",name:"endMask",type:"number",defaultValue:0},{tfName:"new_axis_mask",name:"newAxisMask",type:"number",defaultValue:0},{tfName:"ellipsis_mask",name:"ellipsisMask",type:"number",defaultValue:0},{tfName:"shrink_axis_mask",name:"shrinkAxisMask",type:"number",defaultValue:0}]},{tfOpName:"Pack",category:"slice_join",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0}]},{tfOpName:"Unpack",category:"slice_join",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0},{tfName:"num",name:"num",type:"number",defaultValue:0,notSupported:!0}]},{tfOpName:"Tile",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"reps",type:"number[]"}]},{tfOpName:"Split",category:"slice_join",inputs:[{start:0,name:"axis",type:"number",defaultValue:0},{start:1,name:"x",type:"tensor"}],attrs:[{tfName:"num_split",name:"numOrSizeSplits",type:"number",defaultValue:1}]},{tfOpName:"SplitV",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"numOrSizeSplits",type:"number[]"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"ScatterNd",category:"slice_join",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"values",type:"tensor"},{start:2,name:"shape",type:"number[]"}]},{tfOpName:"GatherNd",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}]},{tfOpName:"SparseToDense",category:"slice_join",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!1,notSupported:!0}]}];var spectral_exports={};__export(spectral_exports,{json:()=>json16});var json16=[{tfOpName:"FFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"RFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]},{tfOpName:"IRFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]}];var transformation_exports={};__export(transformation_exports,{json:()=>json17});var json17=[{tfOpName:"Cast",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"SrcT",name:"sdtype",type:"dtype",notSupported:!0},{tfName:"DstT",name:"dtype",type:"dtype"}]},{tfOpName:"ExpandDims",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"MirrorPad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"mode",name:"mode",type:"string"}]},{tfOpName:"Pad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"constant_value",name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"PadV2",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"},{start:2,name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"Reshape",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}]},{tfOpName:"Squeeze",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"axis",tfDeprecatedName:"squeeze_dims",name:"axis",type:"number[]"}]},{tfOpName:"SpaceToBatchND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"paddings",type:"number[]"}]},{tfOpName:"BatchToSpaceND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"crops",type:"number[]"}]},{tfOpName:"DepthToSpace",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"block_size",name:"blockSize",type:"number"},{tfName:"data_format",name:"dataFormat",type:"string"}]},{tfOpName:"BroadcastTo",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}],attrs:[]}];var OperationMapper=class{static get Instance(){return this._instance||(this._instance=new this)}constructor(){let ops=[arithmetic_exports,basic_math_exports,control_exports,convolution_exports,creation_exports,dynamic_exports,evaluation_exports,logical_exports,image_exports,graph_exports,matrices_exports,normalization_exports,reduction_exports,slice_join_exports,spectral_exports,transformation_exports,hash_table_exports],mappersJson=[].concat(...ops.map(op2=>op2.json));this.opMappers=mappersJson.reduce((map,mapper)=>(map[mapper.tfOpName]=mapper,map),{})}transformGraph(graph2,signature={}){let tfNodes=graph2.node,placeholders=[],weights=[],initNodes=[],nodes=tfNodes.reduce((map,node)=>(map[node.name]=this.mapNode(node),node.op.startsWith("Placeholder")?placeholders.push(map[node.name]):node.op==="Const"?weights.push(map[node.name]):(node.input==null||node.input.length===0)&&initNodes.push(map[node.name]),map),{}),inputs=[],outputs=[],inputNodeNameToKey={},outputNodeNameToKey={};signature!=null&&(inputNodeNameToKey=this.mapSignatureEntries(signature.inputs),outputNodeNameToKey=this.mapSignatureEntries(signature.outputs));let allNodes=Object.keys(nodes);allNodes.forEach(key=>{let node=nodes[key];node.inputNames.forEach(name=>{let[nodeName]=getNodeNameAndIndex(name);node.inputs.push(nodes[nodeName]),nodes[nodeName].children.push(node)})}),Object.keys(outputNodeNameToKey).length===0?allNodes.forEach(key=>{let node=nodes[key];node.children.length===0&&outputs.push(node)}):Object.keys(outputNodeNameToKey).forEach(name=>{let[nodeName]=getNodeNameAndIndex(name),node=nodes[nodeName];node!=null&&(node.signatureKey=outputNodeNameToKey[name],outputs.push(node))}),Object.keys(inputNodeNameToKey).length>0?Object.keys(inputNodeNameToKey).forEach(name=>{let[nodeName]=getNodeNameAndIndex(name),node=nodes[nodeName];node&&(node.signatureKey=inputNodeNameToKey[name],inputs.push(node))}):inputs=placeholders;let functions={};graph2.library!=null&&graph2.library.function!=null&&(functions=graph2.library.function.reduce((functions2,func2)=>(functions2[func2.signature.name]=this.mapFunction(func2),functions2),{}));let result={nodes,inputs,outputs,weights,placeholders,signature,functions};return initNodes.length>0&&(result.initNodes=initNodes),result}mapSignatureEntries(entries){return Object.keys(entries||{}).reduce((prev,curr)=>(prev[entries[curr].name]=curr,prev),{})}mapNode(node){let mapper=getRegisteredOp(node.op)||this.opMappers[node.op]||{};node.attr==null&&(node.attr={});let newNode={name:node.name,op:node.op,category:mapper.category,inputNames:(node.input||[]).map(input2=>input2.startsWith("^")?input2.substr(1):input2),inputs:[],children:[],inputParams:{},attrParams:{},rawAttrs:node.attr};return mapper.inputs!=null&&(newNode.inputParams=mapper.inputs.reduce((map,param)=>(map[param.name]={type:param.type,inputIndexStart:param.start,inputIndexEnd:param.end},map),{})),mapper.attrs!=null&&(newNode.attrParams=mapper.attrs.reduce((map,param)=>{let type=param.type,value;switch(param.type){case"string":value=getStringParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getStringParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"string[]":value=getStringArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getStringArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"number":value=getNumberParam(node.attr,param.tfName,param.defaultValue||0),value===void 0&&!!param.tfDeprecatedName&&(value=getNumberParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"number[]":value=getNumericArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getNumericArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"bool":value=getBoolParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getBoolParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"bool[]":value=getBoolArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getBoolArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"shape":value=getTensorShapeParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getTensorShapeParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"shape[]":value=getTensorShapeArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getTensorShapeArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"dtype":value=getDtypeParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getDtypeParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"dtype[]":value=getDtypeArrayParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getDtypeArrayParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"func":value=getFuncParam(node.attr,param.tfName,param.defaultValue),value===void 0&&!!param.tfDeprecatedName&&(value=getFuncParam(node.attr,param.tfDeprecatedName,param.defaultValue));break;case"tensor":case"tensors":break;default:throw new Error(`Unsupported param type: ${param.type} for op: ${node.op}`)}return map[param.name]={value,type},map},{})),newNode}mapFunction(functionDef){let tfNodes=functionDef.nodeDef,placeholders=[],weights=[],nodes={};tfNodes!=null&&(nodes=tfNodes.reduce((map,node)=>(map[node.name]=this.mapNode(node),node.op==="Const"&&weights.push(map[node.name]),map),{}));let inputs=[],outputs=[];functionDef.signature.inputArg.forEach(arg=>{let[nodeName]=getNodeNameAndIndex(arg.name),node={name:nodeName,op:"Placeholder",inputs:[],inputNames:[],category:"graph",inputParams:{},attrParams:{dtype:{value:parseDtypeParam(arg.type),type:"dtype"}},children:[]};node.signatureKey=arg.name,inputs.push(node),nodes[nodeName]=node}),Object.keys(nodes).forEach(key=>{let node=nodes[key];node.inputNames.forEach(name=>{let[nodeName]=getNodeNameAndIndex(name);node.inputs.push(nodes[nodeName]),nodes[nodeName].children.push(node)})});let returnNodeMap=functionDef.ret;functionDef.signature.outputArg.forEach(output=>{let[nodeName,index]=getNodeNameAndIndex(returnNodeMap[output.name]),node=nodes[nodeName];node!=null&&(node.defaultOutput=index,outputs.push(node))});let signature=this.mapArgsToSignature(functionDef);return{nodes,inputs,outputs,weights,placeholders,signature}}mapArgsToSignature(functionDef){return{methodName:functionDef.signature.name,inputs:functionDef.signature.inputArg.reduce((map,arg)=>(map[arg.name]=this.mapArgToTensorInfo(arg),map),{}),outputs:functionDef.signature.outputArg.reduce((map,arg)=>(map[arg.name]=this.mapArgToTensorInfo(arg,functionDef.ret),map),{})}}mapArgToTensorInfo(arg,nameMap2){let name=arg.name;return nameMap2!=null&&(name=nameMap2[name]),{name,dtype:arg.type}}};function decodeBase64(text){let global2=env().global;if(typeof global2.atob!="undefined")return global2.atob(text);if(typeof Buffer!="undefined")return new Buffer(text,"base64").toString();throw new Error("Unable to decode base64 in this environment. Missing built-in atob() or Buffer()")}function parseStringParam(s,keepCase){let value=Array.isArray(s)?String.fromCharCode.apply(null,s):decodeBase64(s);return keepCase?value:value.toLowerCase()}function getStringParam(attrs,name,def,keepCase=!1){let param=attrs[name];return param!=null?parseStringParam(param.s,keepCase):def}function getBoolParam(attrs,name,def){let param=attrs[name];return param?param.b:def}function getNumberParam(attrs,name,def){let param=attrs[name]||{},value=param.i!=null?param.i:param.f!=null?param.f:def;return typeof value=="number"?value:parseInt(value,10)}function parseDtypeParam(value){switch(typeof value=="string"&&(value=DataType[value]),value){case DataType.DT_FLOAT:return"float32";case DataType.DT_INT32:case DataType.DT_INT64:case DataType.DT_INT8:case DataType.DT_UINT8:return"int32";case DataType.DT_BOOL:return"bool";case DataType.DT_DOUBLE:return"float32";case DataType.DT_STRING:return"string";default:return null}}function getFuncParam(attrs,name,def){let param=attrs[name];return param&¶m.func?param.func.name:def}function getDtypeParam(attrs,name,def){let param=attrs[name];return param&¶m.type?parseDtypeParam(param.type):def}function getDtypeArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.type?param.list.type.map(v=>parseDtypeParam(v)):def}function parseTensorShapeParam(shape){if(!shape.unknownRank)return shape.dim!=null?shape.dim.map(dim=>typeof dim.size=="number"?dim.size:parseInt(dim.size,10)):[]}function getTensorShapeParam(attrs,name,def){let param=attrs[name];return param&¶m.shape?parseTensorShapeParam(param.shape):def}function getNumericArrayParam(attrs,name,def){let param=attrs[name];return param?((param.list.f&¶m.list.f.length?param.list.f:param.list.i)||[]).map(v=>typeof v=="number"?v:parseInt(v,10)):def}function getStringArrayParam(attrs,name,def,keepCase=!1){let param=attrs[name];return param&¶m.list&¶m.list.s?param.list.s.map(v=>parseStringParam(v,keepCase)):def}function getTensorShapeArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.shape?param.list.shape.map(v=>parseTensorShapeParam(v)):def}function getBoolArrayParam(attrs,name,def){let param=attrs[name];return param&¶m.list&¶m.list.b?param.list.b:def}var NodeValueImpl=class{constructor(node,tensorMap,context){this.node=node,this.tensorMap=tensorMap,this.context=context,this.inputs=[],this.attrs={},this.inputs=node.inputNames.map(name=>this.getInput(name)),node.rawAttrs!=null&&(this.attrs=Object.keys(node.rawAttrs).reduce((attrs,key)=>(attrs[key]=this.getAttr(key),attrs),{}))}getInput(name){return getTensor(name,this.tensorMap,this.context)}getAttr(name,defaultValue){let value=this.node.rawAttrs[name];if(value.tensor!=null)return getTensor(name,this.tensorMap,this.context);if(value.i!=null||value.f!=null)return getNumberParam(this.node.rawAttrs,name,defaultValue);if(value.s!=null)return getStringParam(this.node.rawAttrs,name,defaultValue);if(value.b!=null)return getBoolParam(this.node.rawAttrs,name,defaultValue);if(value.shape!=null)return getTensorShapeParam(this.node.rawAttrs,name,defaultValue);if(value.type!=null)return getDtypeParam(this.node.rawAttrs,name,defaultValue);if(value.list!=null){if(value.list.i!=null||value.list.f!=null)return getNumericArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.s!=null)return getStringArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.shape!=null)return getTensorShapeArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.b!=null)return getBoolArrayParam(this.node.rawAttrs,name,defaultValue);if(value.list.type!=null)return getDtypeArrayParam(this.node.rawAttrs,name,defaultValue)}return defaultValue}};var executeOp=(node,tensorMap,context)=>{switch(node.op){case"BiasAdd":case"AddV2":case"Add":return[add2(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"AddN":return[addN(getParamValue("tensors",node,tensorMap,context))];case"FloorMod":case"Mod":return[mod(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Mul":return[mul(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"RealDiv":case"Div":return[div(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"DivNoNan":return[divNoNan(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"FloorDiv":return[floorDiv(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Sub":return[sub(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Minimum":return[minimum(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Maximum":return[maximum(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Pow":return[pow(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"SquaredDifference":return[squaredDifference(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp2=(node,tensorMap,context)=>{switch(node.op){case"Abs":case"ComplexAbs":return[abs(getParamValue("x",node,tensorMap,context))];case"Acos":return[acos(getParamValue("x",node,tensorMap,context))];case"Acosh":return[acosh(getParamValue("x",node,tensorMap,context))];case"Asin":return[asin(getParamValue("x",node,tensorMap,context))];case"Asinh":return[asinh(getParamValue("x",node,tensorMap,context))];case"Atan":return[atan(getParamValue("x",node,tensorMap,context))];case"Atan2":return[atan2(getParamValue("x",node,tensorMap,context),getParamValue("y",node,tensorMap,context))];case"Atanh":return[atanh(getParamValue("x",node,tensorMap,context))];case"Ceil":return[ceil(getParamValue("x",node,tensorMap,context))];case"Complex":return[complex(getParamValue("real",node,tensorMap,context),getParamValue("imag",node,tensorMap,context))];case"Cos":return[cos(getParamValue("x",node,tensorMap,context))];case"Cosh":return[cosh(getParamValue("x",node,tensorMap,context))];case"Elu":return[elu(getParamValue("x",node,tensorMap,context))];case"Erf":return[erf(getParamValue("x",node,tensorMap,context))];case"Exp":return[exp(getParamValue("x",node,tensorMap,context))];case"Expm1":return[expm1(getParamValue("x",node,tensorMap,context))];case"Floor":return[floor(getParamValue("x",node,tensorMap,context))];case"Log":return[log(getParamValue("x",node,tensorMap,context))];case"Log1p":return[log1p(getParamValue("x",node,tensorMap,context))];case"Imag":return[imag(getParamValue("x",node,tensorMap,context))];case"Neg":return[neg(getParamValue("x",node,tensorMap,context))];case"Reciprocal":return[reciprocal(getParamValue("x",node,tensorMap,context))];case"Real":return[real(getParamValue("x",node,tensorMap,context))];case"Relu":return[relu(getParamValue("x",node,tensorMap,context))];case"Round":return[round2(getParamValue("x",node,tensorMap,context))];case"Selu":return[selu(getParamValue("x",node,tensorMap,context))];case"Sigmoid":return[sigmoid(getParamValue("x",node,tensorMap,context))];case"Sin":return[sin(getParamValue("x",node,tensorMap,context))];case"Sign":return[sign(getParamValue("x",node,tensorMap,context))];case"Sinh":return[sinh(getParamValue("x",node,tensorMap,context))];case"Softplus":return[softplus(getParamValue("x",node,tensorMap,context))];case"Sqrt":return[sqrt(getParamValue("x",node,tensorMap,context))];case"Square":return[square(getParamValue("x",node,tensorMap,context))];case"Tanh":return[tanh2(getParamValue("x",node,tensorMap,context))];case"Tan":return[tan(getParamValue("x",node,tensorMap,context))];case"ClipByValue":return[clipByValue(getParamValue("x",node,tensorMap,context),getParamValue("clipValueMin",node,tensorMap,context),getParamValue("clipValueMax",node,tensorMap,context))];case"Relu6":return[relu6(getParamValue("x",node,tensorMap,context))];case"Rsqrt":return[rsqrt(getTensor(node.inputNames[0],tensorMap,context))];case"Prod":return[prod(getParamValue("x",node,tensorMap,context),getParamValue("axes",node,tensorMap,context))];case"LeakyRelu":return[leakyRelu(getParamValue("x",node,tensorMap,context),getParamValue("alpha",node,tensorMap,context))];case"Prelu":return[prelu(getParamValue("x",node,tensorMap,context),getParamValue("alpha",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};function assertShapesMatchAllowUndefinedSize(shapeA,shapeB,errorMessagePrefix=""){util_exports.assert(shapesEqualAllowUndefinedSize(shapeA,shapeB),()=>errorMessagePrefix+` Shapes ${shapeA} and ${shapeB} must match`)}function shapesEqualAllowUndefinedSize(n1,n2){if(n1.length!==n2.length)return!1;for(let i=0;i{(keepIds==null||!keepIds.has(tensor2.tensor.id))&&tensor2.tensor.dispose()}),this.tensors=[],this.closed_=!0,this.idTensor.dispose()}size(){return this.tensors.length}read(index){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(index<0||index>=this.size())throw new Error(`Tried to read from index ${index}, but array size is: ${this.size()}`);let tensorWithState=this.tensors[index];if(tensorWithState.cleared)throw new Error(`TensorArray ${this.name}: Could not read index ${index} twice because it was cleared after a previous read (perhaps try setting clear_after_read = false?).`);return this.clearAfterRead&&(tensorWithState.cleared=!0),tensorWithState.read=!0,tensorWithState.tensor}readMany(indices){return indices.map(index=>this.read(index))}write(index,tensor2){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(index<0||!this.dynamicSize&&index>=this.maxSize)throw new Error(`Tried to write to index ${index}, but array is not resizeable and size is: ${this.maxSize}`);let t=this.tensors[index]||{};if(tensor2.dtype!==this.dtype)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, - because the value dtype is ${tensor2.dtype}, but TensorArray dtype is ${this.dtype}.`);if(this.size()===0&&(this.elementShape==null||this.elementShape.length===0)&&(this.elementShape=tensor2.shape),assertShapesMatchAllowUndefinedSize(this.elementShape,tensor2.shape,`TensorArray ${this.name}: Could not write to TensorArray index ${index}.`),t.read)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, because it has already been read.`);if(t.written)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${index}, because it has already been written.`);t.tensor=tensor2,keep(tensor2),t.written=!0,this.tensors[index]=t}writeMany(indices,tensors){if(indices.length!==tensors.length)throw new Error(`TensorArray ${this.name}: could not write multiple tensors,because the index size: ${indices.length} is not the same as tensors size: ${tensors.length}.`);indices.forEach((i,index)=>this.write(i,tensors[index]))}gather(indices,dtype){if(!!dtype&&dtype!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but gather requested dtype ${dtype}`);if(indices)indices=indices.slice(0,this.size());else{indices=[];for(let i=0;i=this.maxSize)throw new Error(`Max index must be < array size (${maxIndex} vs. ${this.maxSize})`);this.writeMany(indices,unstack(tensor2,0))}split(length,tensor2){if(tensor2.dtype!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but tensor has dtype ${tensor2.dtype}`);let totalLength=0,cumulativeLengths=length.map(len=>(totalLength+=len,totalLength));if(totalLength!==tensor2.shape[0])throw new Error(`Expected sum of lengths to be equal to +var YB=Object.create,Lh=Object.defineProperty,ZB=Object.getPrototypeOf,JB=Object.prototype.hasOwnProperty,QB=Object.getOwnPropertyNames,e3=Object.getOwnPropertyDescriptor;var AI=r=>Lh(r,"__esModule",{value:!0});var Ur=(r,e)=>()=>(e||(e={exports:{}},r(e.exports,e)),e.exports),et=(r,e)=>{AI(r);for(var t in e)Lh(r,t,{get:e[t],enumerable:!0})},t3=(r,e,t)=>{if(AI(r),e&&typeof e=="object"||typeof e=="function")for(let o of QB(e))!JB.call(r,o)&&o!=="default"&&Lh(r,o,{get:()=>e[o],enumerable:!(t=e3(e,o))||t.enumerable});return r},Ec=r=>r&&r.__esModule?r:t3(Lh(r!=null?YB(ZB(r)):{},"default",{value:r,enumerable:!0}),r);var hN=Ur(()=>{});var KN=Ur((HN,I_)=>{(function(r,e,t){function o(i){var l=this,u=a();l.next=function(){var c=2091639*l.s0+l.c*23283064365386963e-26;return l.s0=l.s1,l.s1=l.s2,l.s2=c-(l.c=c|0)},l.c=1,l.s0=u(" "),l.s1=u(" "),l.s2=u(" "),l.s0-=u(i),l.s0<0&&(l.s0+=1),l.s1-=u(i),l.s1<0&&(l.s1+=1),l.s2-=u(i),l.s2<0&&(l.s2+=1),u=null}function n(i,l){return l.c=i.c,l.s0=i.s0,l.s1=i.s1,l.s2=i.s2,l}function s(i,l){var u=new o(i),c=l&&l.state,p=u.next;return p.int32=function(){return u.next()*4294967296|0},p.double=function(){return p()+(p()*2097152|0)*11102230246251565e-32},p.quick=p,c&&(typeof c=="object"&&n(c,u),p.state=function(){return n(u,{})}),p}function a(){var i=4022871197,l=function(u){u=u.toString();for(var c=0;c>>0,p-=i,p*=i,i=p>>>0,p-=i,i+=p*4294967296}return(i>>>0)*23283064365386963e-26};return l}e&&e.exports?e.exports=s:t&&t.amd?t(function(){return s}):this.alea=s})(HN,typeof I_=="object"&&I_,typeof define=="function"&&define)});var YN=Ur((XN,N_)=>{(function(r,e,t){function o(a){var i=this,l="";i.x=0,i.y=0,i.z=0,i.w=0,i.next=function(){var c=i.x^i.x<<11;return i.x=i.y,i.y=i.z,i.z=i.w,i.w^=i.w>>>19^c^c>>>8},a===(a|0)?i.x=a:l+=a;for(var u=0;u>>0)/4294967296};return c.double=function(){do var p=l.next()>>>11,m=(l.next()>>>0)/4294967296,f=(p+m)/(1<<21);while(f===0);return f},c.int32=l.next,c.quick=c,u&&(typeof u=="object"&&n(u,l),c.state=function(){return n(l,{})}),c}e&&e.exports?e.exports=s:t&&t.amd?t(function(){return s}):this.xor128=s})(XN,typeof N_=="object"&&N_,typeof define=="function"&&define)});var JN=Ur((ZN,S_)=>{(function(r,e,t){function o(a){var i=this,l="";i.next=function(){var c=i.x^i.x>>>2;return i.x=i.y,i.y=i.z,i.z=i.w,i.w=i.v,(i.d=i.d+362437|0)+(i.v=i.v^i.v<<4^(c^c<<1))|0},i.x=0,i.y=0,i.z=0,i.w=0,i.v=0,a===(a|0)?i.x=a:l+=a;for(var u=0;u>>4),i.next()}function n(a,i){return i.x=a.x,i.y=a.y,i.z=a.z,i.w=a.w,i.v=a.v,i.d=a.d,i}function s(a,i){var l=new o(a),u=i&&i.state,c=function(){return(l.next()>>>0)/4294967296};return c.double=function(){do var p=l.next()>>>11,m=(l.next()>>>0)/4294967296,f=(p+m)/(1<<21);while(f===0);return f},c.int32=l.next,c.quick=c,u&&(typeof u=="object"&&n(u,l),c.state=function(){return n(l,{})}),c}e&&e.exports?e.exports=s:t&&t.amd?t(function(){return s}):this.xorwow=s})(ZN,typeof S_=="object"&&S_,typeof define=="function"&&define)});var eS=Ur((QN,T_)=>{(function(r,e,t){function o(a){var i=this;i.next=function(){var u=i.x,c=i.i,p,m,f;return p=u[c],p^=p>>>7,m=p^p<<24,p=u[c+1&7],m^=p^p>>>10,p=u[c+3&7],m^=p^p>>>3,p=u[c+4&7],m^=p^p<<7,p=u[c+7&7],p=p^p<<13,m^=p^p<<9,u[c]=m,i.i=c+1&7,m};function l(u,c){var p,m,f=[];if(c===(c|0))m=f[0]=c;else for(c=""+c,p=0;p0;--p)u.next()}l(i,a)}function n(a,i){return i.x=a.x.slice(),i.i=a.i,i}function s(a,i){a==null&&(a=+new Date);var l=new o(a),u=i&&i.state,c=function(){return(l.next()>>>0)/4294967296};return c.double=function(){do var p=l.next()>>>11,m=(l.next()>>>0)/4294967296,f=(p+m)/(1<<21);while(f===0);return f},c.int32=l.next,c.quick=c,u&&(u.x&&n(u,l),c.state=function(){return n(l,{})}),c}e&&e.exports?e.exports=s:t&&t.amd?t(function(){return s}):this.xorshift7=s})(QN,typeof T_=="object"&&T_,typeof define=="function"&&define)});var rS=Ur((tS,E_)=>{(function(r,e,t){function o(a){var i=this;i.next=function(){var u=i.w,c=i.X,p=i.i,m,f;return i.w=u=u+1640531527|0,f=c[p+34&127],m=c[p=p+1&127],f^=f<<13,m^=m<<17,f^=f>>>15,m^=m>>>12,f=c[p]=f^m,i.i=p,f+(u^u>>>16)|0};function l(u,c){var p,m,f,d,h,g=[],y=128;for(c===(c|0)?(m=c,c=null):(c=c+"\0",m=0,y=Math.max(y,c.length)),f=0,d=-32;d>>15,m^=m<<4,m^=m>>>13,d>=0&&(h=h+1640531527|0,p=g[d&127]^=m+h,f=p==0?f+1:0);for(f>=128&&(g[(c&&c.length||0)&127]=-1),f=127,d=4*128;d>0;--d)m=g[f+34&127],p=g[f=f+1&127],m^=m<<13,p^=p<<17,m^=m>>>15,p^=p>>>12,g[f]=m^p;u.w=h,u.X=g,u.i=f}l(i,a)}function n(a,i){return i.i=a.i,i.w=a.w,i.X=a.X.slice(),i}function s(a,i){a==null&&(a=+new Date);var l=new o(a),u=i&&i.state,c=function(){return(l.next()>>>0)/4294967296};return c.double=function(){do var p=l.next()>>>11,m=(l.next()>>>0)/4294967296,f=(p+m)/(1<<21);while(f===0);return f},c.int32=l.next,c.quick=c,u&&(u.X&&n(u,l),c.state=function(){return n(l,{})}),c}e&&e.exports?e.exports=s:t&&t.amd?t(function(){return s}):this.xor4096=s})(tS,typeof E_=="object"&&E_,typeof define=="function"&&define)});var nS=Ur((oS,A_)=>{(function(r,e,t){function o(a){var i=this,l="";i.next=function(){var c=i.b,p=i.c,m=i.d,f=i.a;return c=c<<25^c>>>7^p,p=p-m|0,m=m<<24^m>>>8^f,f=f-c|0,i.b=c=c<<20^c>>>12^p,i.c=p=p-m|0,i.d=m<<16^p>>>16^f,i.a=f-c|0},i.a=0,i.b=0,i.c=2654435769|0,i.d=1367130551,a===Math.floor(a)?(i.a=a/4294967296|0,i.b=a|0):l+=a;for(var u=0;u>>0)/4294967296};return c.double=function(){do var p=l.next()>>>11,m=(l.next()>>>0)/4294967296,f=(p+m)/(1<<21);while(f===0);return f},c.int32=l.next,c.quick=c,u&&(typeof u=="object"&&n(u,l),c.state=function(){return n(l,{})}),c}e&&e.exports?e.exports=s:t&&t.amd?t(function(){return s}):this.tychei=s})(oS,typeof A_=="object"&&A_,typeof define=="function"&&define)});var sS=Ur(()=>{});var iS=Ur((sye,ig)=>{(function(r,e){var t=this,o=256,n=6,s=52,a="random",i=e.pow(o,n),l=e.pow(2,s),u=l*2,c=o-1,p;function m(_,w,k){var $=[];w=w==!0?{entropy:!0}:w||{};var T=g(h(w.entropy?[_,b(r)]:_==null?y():_,3),$),F=new f($),M=function(){for(var L=F.g(n),G=i,H=0;L=u;)L/=2,G/=2,H>>>=1;return(L+H)/G};return M.int32=function(){return F.g(4)|0},M.quick=function(){return F.g(4)/4294967296},M.double=M,g(b(F.S),r),(w.pass||k||function(L,G,H,U){return U&&(U.S&&d(U,F),L.state=function(){return d(F,{})}),H?(e[a]=L,G):L})(M,T,"global"in w?w.global:this==e,w.state)}e["seed"+a]=m;function f(_){var w,k=_.length,$=this,T=0,F=$.i=$.j=0,M=$.S=[];for(k||(_=[k++]);T{var k4=KN(),C4=YN(),I4=JN(),N4=eS(),S4=rS(),T4=nS(),Pu=iS();Pu.alea=k4;Pu.xor128=C4;Pu.xorwow=I4;Pu.xorshift7=N4;Pu.xor4096=S4;Pu.tychei=T4;aS.exports=Pu});var HE=Ur(()=>{});var Xp=Ur(()=>{});var Sz=Ur(()=>{});var Tz=Ur(()=>{});var Ez=Ur((Xx,dI)=>{var hI=function(){var r=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(r=r||__filename),function(e){e=e||{};function t(){return Q.buffer!=nt&&vr(Q.buffer),ho}function o(){return Q.buffer!=nt&&vr(Q.buffer),Jt}function n(){return Q.buffer!=nt&&vr(Q.buffer),jo}function s(){return Q.buffer!=nt&&vr(Q.buffer),Gr}function a(){return Q.buffer!=nt&&vr(Q.buffer),Eo}var i=typeof e!="undefined"?e:{},l=void 0,u={},c;for(c in i)i.hasOwnProperty(c)&&(u[c]=i[c]);var p=[],m="./this.program",f=function(I,D){throw D},d=!1,h=!1,g=!1,y=!1;d=typeof window=="object",h=typeof importScripts=="function",g=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",y=!d&&!g&&!h;var b=i.ENVIRONMENT_IS_PTHREAD||!1;b&&(nt=i.buffer,Do=i.DYNAMIC_BASE,Fl=i.DYNAMICTOP_PTR);var _="";function w(I){return i.locateFile?i.locateFile(I,_):_+I}var k,$,T,F,M,L;if(g){h?_=Xp().dirname(_)+"/":_=__dirname+"/",k=function(D,P){return M||(M=require("fs")),L||(L=Xp()),D=L.normalize(D),M.readFileSync(D,P?null:"utf8")},T=function(D){var P=k(D,!0);return P.buffer||(P=new Uint8Array(P)),ye(P.buffer),P},process.argv.length>1&&(m=process.argv[1].replace(/\\/g,"/")),p=process.argv.slice(2),process.on("uncaughtException",function(I){if(!(I instanceof TI))throw I}),process.on("unhandledRejection",ea),f=function(I){process.exit(I)},i.inspect=function(){return"[Emscripten Module object]"};var G;try{G=Sz()}catch(I){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),I}Worker=G.Worker}else y?(typeof read!="undefined"&&(k=function(D){return read(D)}),T=function(D){var P;return typeof readbuffer=="function"?new Uint8Array(readbuffer(D)):(P=read(D,"binary"),ye(typeof P=="object"),P)},typeof scriptArgs!="undefined"?p=scriptArgs:typeof arguments!="undefined"&&(p=arguments),typeof quit=="function"&&(f=function(I){quit(I)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(d||h)&&(h?_=self.location.href:document.currentScript&&(_=document.currentScript.src),l&&(_=l),_.indexOf("blob:")!==0?_=_.substr(0,_.lastIndexOf("/")+1):_="",g?(k=function(D,P){return M||(M=require("fs")),L||(L=Xp()),D=L.normalize(D),M.readFileSync(D,P?null:"utf8")},T=function(D){var P=k(D,!0);return P.buffer||(P=new Uint8Array(P)),ye(P.buffer),P}):(k=function(D){var P=new XMLHttpRequest;return P.open("GET",D,!1),P.send(null),P.responseText},h&&(T=function(D){var P=new XMLHttpRequest;return P.open("GET",D,!1),P.responseType="arraybuffer",P.send(null),new Uint8Array(P.response)}),$=function(D,P,j){var de=new XMLHttpRequest;de.open("GET",D,!0),de.responseType="arraybuffer",de.onload=function(){if(de.status==200||de.status==0&&de.response){P(de.response);return}j()},de.onerror=j,de.send(null)}),F=function(I){document.title=I});g&&typeof performance=="undefined"&&(performance=Tz().performance);var H=i.print||console.log.bind(console),U=i.printErr||console.warn.bind(console);for(c in u)u.hasOwnProperty(c)&&(i[c]=u[c]);u=null,i.arguments&&(p=i.arguments),i.thisProgram&&(m=i.thisProgram),i.quit&&(f=i.quit);var Z=Atomics.load,K=Atomics.store,X=Atomics.compareExchange,oe;i.wasmBinary&&(oe=i.wasmBinary);var J;i.noExitRuntime&&(J=i.noExitRuntime),typeof WebAssembly!="object"&&U("no native wasm support detected");var Q,ie=new WebAssembly.Table({initial:169,maximum:169+0,element:"anyfunc"}),ae,ue=0,le=0,ge=!1,we=0;function ye(I,D){I||ea("Assertion failed: "+D)}function ke(I){var D=i["_"+I];return ye(D,"Cannot call unknown function "+I+", make sure it is exported"),D}function Ee(I,D,P,j,de){var xe={string:function(yo){var Za=0;if(yo!=null&&yo!==0){var um=(yo.length<<2)+1;Za=Ic(um),gt(yo,Za,um)}return Za},array:function(yo){var Za=Ic(yo.length);return xt(yo,Za),Za}};function he(yo){return D==="string"?ze(yo):D==="boolean"?Boolean(yo):yo}var Te=ke(I),ft=[],mr=0;if(j)for(var Rr=0;Rr=j);){var xe=I[D++];if(!xe)return de;if(!(xe&128)){de+=String.fromCharCode(xe);continue}var he=I[D++]&63;if((xe&224)==192){de+=String.fromCharCode((xe&31)<<6|he);continue}var Te=I[D++]&63;if((xe&240)==224?xe=(xe&15)<<12|he<<6|Te:xe=(xe&7)<<18|he<<12|Te<<6|I[D++]&63,xe<65536)de+=String.fromCharCode(xe);else{var ft=xe-65536;de+=String.fromCharCode(55296|ft>>10,56320|ft&1023)}}return de}function ze(I,D){return I?Pe(o(),I,D):""}function mt(I,D,P,j){if(!(j>0))return 0;for(var de=P,xe=P+j-1,he=0;he=55296&&Te<=57343){var ft=I.charCodeAt(++he);Te=65536+((Te&1023)<<10)|ft&1023}if(Te<=127){if(P>=xe)break;D[P++]=Te}else if(Te<=2047){if(P+1>=xe)break;D[P++]=192|Te>>6,D[P++]=128|Te&63}else if(Te<=65535){if(P+2>=xe)break;D[P++]=224|Te>>12,D[P++]=128|Te>>6&63,D[P++]=128|Te&63}else{if(P+3>=xe)break;D[P++]=240|Te>>18,D[P++]=128|Te>>12&63,D[P++]=128|Te>>6&63,D[P++]=128|Te&63}}return D[P]=0,P-de}function gt(I,D,P){return mt(I,o(),D,P)}function Ct(I){for(var D=0,P=0;P=55296&&j<=57343&&(j=65536+((j&1023)<<10)|I.charCodeAt(++P)&1023),j<=127?++D:j<=2047?D+=2:j<=65535?D+=3:D+=4}return D}function xt(I,D){t().set(I,D)}var yt=65536;function It(I,D){return I%D>0&&(I+=D-I%D),I}var nt,ho,Jt,go,$r,jo,Gr,To,Eo;function vr(I){nt=I,i.HEAP8=ho=new Int8Array(I),i.HEAP16=go=new Int16Array(I),i.HEAP32=jo=new Int32Array(I),i.HEAPU8=Jt=new Uint8Array(I),i.HEAPU16=$r=new Uint16Array(I),i.HEAPU32=Gr=new Uint32Array(I),i.HEAPF32=To=new Float32Array(I),i.HEAPF64=Eo=new Float64Array(I)}var Ao=5256464,ro=Ao,Zi=13584,Do=5256464,Fl=12656,Ji=i.INITIAL_MEMORY||16777216;if(b)Q=i.wasmMemory,nt=i.buffer;else if(i.wasmMemory)Q=i.wasmMemory;else if(Q=new WebAssembly.Memory({initial:Ji/yt,maximum:2147483648/yt,shared:!0}),!(Q.buffer instanceof SharedArrayBuffer))throw U("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"),g&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"),Error("bad memory");Q&&(nt=Q.buffer),Ji=nt.byteLength,vr(nt),b||(n()[Fl>>2]=Do);function os(I){for(;I.length>0;){var D=I.shift();if(typeof D=="function"){D(i);continue}var P=D.func;typeof P=="number"?D.arg===void 0?i.dynCall_v(P):i.dynCall_vi(P,D.arg):P(D.arg===void 0?null:D.arg)}}var Ol=[],dh=[],hh=[],gh=[],Yp=[],$o=!1;b&&($o=!0);function xh(){if(!b){if(i.preRun)for(typeof i.preRun=="function"&&(i.preRun=[i.preRun]);i.preRun.length;)Pl(i.preRun.shift());os(Ol)}}function Qx(){$o=!0,os(dh)}function ey(){b||os(hh)}function ty(){if(!b){if(i.postRun)for(typeof i.postRun=="function"&&(i.postRun=[i.postRun]);i.postRun.length;)yc(i.postRun.shift());os(Yp)}}function Pl(I){Ol.unshift(I)}function yc(I){Yp.unshift(I)}var ry=Math.ceil,oy=Math.floor,Qi=0,Zp=null,Ml=null;function ny(I){ye(!b,"addRunDependency cannot be used in a pthread worker"),Qi++,i.monitorRunDependencies&&i.monitorRunDependencies(Qi)}function yh(I){if(Qi--,i.monitorRunDependencies&&i.monitorRunDependencies(Qi),Qi==0&&(Zp!==null&&(clearInterval(Zp),Zp=null),Ml)){var D=Ml;Ml=null,D()}}i.preloadedImages={},i.preloadedAudios={};function ea(I){throw i.onAbort&&i.onAbort(I),b&&console.error("Pthread aborting at "+new Error().stack),I+="",H(I),U(I),ge=!0,we=1,I="abort("+I+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(I)}function bh(I,D){return String.prototype.startsWith?I.startsWith(D):I.indexOf(D)===0}var sy="data:application/octet-stream;base64,";function _h(I){return bh(I,sy)}var iy="file://";function wh(I){return bh(I,iy)}var qo="tfjs-backend-wasm-threaded-simd.wasm";_h(qo)||(qo=w(qo));function vh(){try{if(oe)return new Uint8Array(oe);if(T)return T(qo);throw"both async and sync fetching of the wasm failed"}catch(I){ea(I)}}function ay(){return!oe&&(d||h)&&typeof fetch=="function"&&!wh(qo)?fetch(qo,{credentials:"same-origin"}).then(function(I){if(!I.ok)throw"failed to load wasm binary file at '"+qo+"'";return I.arrayBuffer()}).catch(function(){return vh()}):new Promise(function(I,D){I(vh())})}function ly(){var I={a:Rh};function D(he,Te){var ft=he.exports;if(i.asm=ft,ae=Te,!b){var mr=ve.unusedWorkers.length;ve.unusedWorkers.forEach(function(Rr){ve.loadWasmModuleToWorker(Rr,function(){--mr||yh("wasm-instantiate")})})}}b||ny("wasm-instantiate");function P(he){D(he.instance,he.module)}function j(he){return ay().then(function(Te){return WebAssembly.instantiate(Te,I)}).then(he,function(Te){U("failed to asynchronously prepare wasm: "+Te),ea(Te)})}function de(){if(!oe&&typeof WebAssembly.instantiateStreaming=="function"&&!_h(qo)&&!wh(qo)&&typeof fetch=="function")fetch(qo,{credentials:"same-origin"}).then(function(he){var Te=WebAssembly.instantiateStreaming(he,I);return Te.then(P,function(ft){U("wasm streaming compile failed: "+ft),U("falling back to ArrayBuffer instantiation"),j(P)})});else return j(P)}if(i.instantiateWasm)try{var xe=i.instantiateWasm(I,D);return xe}catch(he){return U("Module.instantiateWasm callback failed with error: "+he),!1}return de(),{}}var uy={};function cy(){ve.initRuntime()}b||dh.push({func:function(){em()}});var kh=0,Ch=0,Ih=0;function bc(I,D,P){I=I|0,D=D|0,P=P|0,kh=I,Ih=D,Ch=P}i.__register_pthread_ptr=bc;var Jp={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},_c=13568;function wc(I,D){if(I<=0||I>t().length||I&!0||D<0)return-28;if(D==0)return 0;D>=2147483647&&(D=Infinity);var P=Atomics.load(n(),_c>>2),j=0;if(P==I){var de=Atomics.compareExchange(n(),_c>>2,P,0);if(de==P&&(--D,j=1,D<=0))return 1}var xe=Atomics.notify(n(),I>>2,D);if(xe>=0)return xe+j;throw"Atomics.notify returned an unexpected value "+xe}i._emscripten_futex_wake=wc;function py(I){if(b)throw"Internal Error! _kill_thread() can only ever be called from main application thread!";if(!I)throw"Internal Error! Null pthread_ptr in _kill_thread!";n()[I+12>>2]=0;var D=ve.pthreads[I];D.worker.terminate(),ve.freeThreadData(D),ve.runningWorkers.splice(ve.runningWorkers.indexOf(D.worker),1),D.worker.pthread=void 0}function my(I){if(b)throw"Internal Error! _cancel_thread() can only ever be called from main application thread!";if(!I)throw"Internal Error! Null pthread_ptr in _cancel_thread!";var D=ve.pthreads[I];D.worker.postMessage({cmd:"cancel"})}function fy(I){if(b)throw"Internal Error! _cleanup_thread() can only ever be called from main application thread!";if(!I)throw"Internal Error! Null pthread_ptr in _cleanup_thread!";n()[I+12>>2]=0;var D=ve.pthreads[I];if(D){var P=D.worker;ve.returnWorkerToPool(P)}}var ve={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){bc(ve.mainThreadBlock,!h,1),CI(ve.mainThreadBlock)},initMainThreadBlock:function(){for(var I=8,D=0;D>2]=ve.mainThreadBlock;var P=ve.mainThreadBlock+156;n()[P>>2]=P;for(var j=13056,D=0;D<128;++D)s()[j/4+D]=0;Atomics.store(s(),ve.mainThreadBlock+104>>2,j),Atomics.store(s(),ve.mainThreadBlock+40>>2,ve.mainThreadBlock),Atomics.store(s(),ve.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(ve.exitHandlers!==null){for(;ve.exitHandlers.length>0;)ve.exitHandlers.pop()();ve.exitHandlers=null}b&&ue&&kI()},threadExit:function(I){var D=Vs();D&&(Atomics.store(s(),D+4>>2,I),Atomics.store(s(),D+0>>2,1),Atomics.store(s(),D+60>>2,1),Atomics.store(s(),D+64>>2,0),ve.runExitHandlers(),wc(D+0,2147483647),bc(0,0,0),ue=0,b&&postMessage({cmd:"exit"}))},threadCancel:function(){ve.runExitHandlers(),Atomics.store(s(),ue+4>>2,-1),Atomics.store(s(),ue+0>>2,1),wc(ue+0,2147483647),ue=le=0,bc(0,0,0),postMessage({cmd:"cancelDone"})},terminateAllThreads:function(){for(var I in ve.pthreads){var D=ve.pthreads[I];D&&D.worker&&ve.returnWorkerToPool(D.worker)}ve.pthreads={};for(var P=0;P>2];n()[I.threadInfoStruct+104>>2]=0,sm(D),sm(I.threadInfoStruct)}I.threadInfoStruct=0,I.allocatedOwnStack&&I.stackBase&&sm(I.stackBase),I.stackBase=0,I.worker&&(I.worker.pthread=null)}},returnWorkerToPool:function(I){delete ve.pthreads[I.pthread.thread],ve.unusedWorkers.push(I),ve.runningWorkers.splice(ve.runningWorkers.indexOf(I),1),ve.freeThreadData(I.pthread),I.pthread=void 0},receiveObjectTransfer:function(I){},loadWasmModuleToWorker:function(I,D){I.onmessage=function(P){var j=P.data,de=j.cmd;if(I.pthread&&(ve.currentProxiedOperationCallerThread=I.pthread.threadInfoStruct),j.targetThread&&j.targetThread!=Vs()){var xe=ve.pthreads[j.targetThread];xe?xe.worker.postMessage(P.data,j.transferList):console.error('Internal error! Worker sent a message "'+de+'" to target pthread '+j.targetThread+", but that thread no longer exists!"),ve.currentProxiedOperationCallerThread=void 0;return}if(de==="processQueuedMainThreadWork")tb();else if(de==="spawnThread")Dh(P.data);else if(de==="cleanupThread")fy(j.thread);else if(de==="killThread")py(j.thread);else if(de==="cancelThread")my(j.thread);else if(de==="loaded")I.loaded=!0,D&&D(I),I.runPthread&&(I.runPthread(),delete I.runPthread);else if(de==="print")H("Thread "+j.threadId+": "+j.text);else if(de==="printErr")U("Thread "+j.threadId+": "+j.text);else if(de==="alert")alert("Thread "+j.threadId+": "+j.text);else if(de==="exit"){var he=I.pthread&&Atomics.load(s(),I.pthread.thread+68>>2);he&&ve.returnWorkerToPool(I)}else de==="cancelDone"?ve.returnWorkerToPool(I):de==="objectTransfer"?ve.receiveObjectTransfer(P.data):P.data.target==="setimmediate"?I.postMessage(P.data):U("worker sent an unknown command "+de);ve.currentProxiedOperationCallerThread=void 0},I.onerror=function(P){U("pthread sent an error! "+P.filename+":"+P.lineno+": "+P.message)},g&&(I.on("message",function(P){I.onmessage({data:P})}),I.on("error",function(P){I.onerror(P)}),I.on("exit",function(P){console.log("worker exited - TODO: update the worker queue?")})),I.postMessage({cmd:"load",urlOrBlob:i.mainScriptUrlOrBlob||l,wasmMemory:Q,wasmModule:ae,DYNAMIC_BASE:Do,DYNAMICTOP_PTR:Fl})},allocateUnusedWorker:function(){var I=w("tfjs-backend-wasm-threaded-simd.worker.js");ve.unusedWorkers.push(new Worker(I))},getNewWorker:function(){return ve.unusedWorkers.length==0&&(ve.allocateUnusedWorker(),ve.loadWasmModuleToWorker(ve.unusedWorkers[0])),ve.unusedWorkers.length>0?ve.unusedWorkers.pop():null},busySpinWait:function(I){for(var D=performance.now()+I;performance.now()>2]=I,I}function by(I,D){if(b)return Ka(1,1,I,D);gh.unshift({func:I,arg:D})}function _y(I,D){if(I==D)postMessage({cmd:"processQueuedMainThreadWork"});else if(b)postMessage({targetThread:I,cmd:"processThreadQueue"});else{var P=ve.pthreads[I],j=P&&P.worker;if(!j)return;j.postMessage({cmd:"processThreadQueue"})}return 1}function wy(){ea()}function vy(I,D){I=I|0,D=D|0}function ky(I,D,P){if(I<=0||I>t().length||I&!0)return-28;if(h){var j=Atomics.wait(n(),I>>2,D,P);if(j==="timed-out")return-73;if(j==="not-equal")return-6;if(j==="ok")return 0;throw"Atomics.wait returned an unexpected value "+j}else{var de=Atomics.load(n(),I>>2);if(D!=de)return-6;var xe=performance.now(),he=xe+P;Atomics.store(n(),_c>>2,I);for(var Te=I;I==Te;){if(xe=performance.now(),xe>he)return-73;tb(),I=Atomics.load(n(),_c>>2)}return 0}}function Cy(){return Ih|0}function Iy(){return Ch|0}function Ny(I,D,P){o().copyWithin(I,D,D+P)}function Sy(){return navigator.hardwareConcurrency}function Ka(I,D){for(var P=arguments.length-2,j=im(),de=Ic(P*8),xe=de>>3,he=0;he>3]),D+=8):(D=D+3&~3,P.push(n()[D>>2]),D+=4);return P}function Ty(I,D,P){zl.length=D;for(var j=P>>3,de=0;de>>16),vr(Q.buffer),1}catch(D){}}function Dy(I){I=I>>>0;var D=Ey();if(I<=D)return!1;var P=65536,j=2147483648;if(I>j)return!1;for(var de=16777216,xe=1;xe<=4;xe*=2){var he=D*(1+.2/xe);he=Math.min(he,I+100663296);var Te=Math.min(j,It(Math.max(de,I,he),P)),ft=Ay(Te);if(ft)return!0}return!1}var Ze={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:!1,removeAllEventListeners:function(){for(var I=Ze.eventHandlers.length-1;I>=0;--I)Ze._removeHandler(I);Ze.eventHandlers=[],Ze.deferredCalls=[]},registerRemoveEventListeners:function(){Ze.removeEventListenersRegistered||(gh.push(Ze.removeAllEventListeners),Ze.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(I,D,P){function j(he,Te){if(he.length!=Te.length)return!1;for(var ft in he)if(he[ft]!=Te[ft])return!1;return!0}for(var de in Ze.deferredCalls){var xe=Ze.deferredCalls[de];if(xe.targetFunction==I&&j(xe.argsList,P))return}Ze.deferredCalls.push({targetFunction:I,precedence:D,argsList:P}),Ze.deferredCalls.sort(function(he,Te){return he.precedence>2]=P,n()[he+4>>2]=j,n()[he+8>>2]=de,rb(I,637534208,D,j,he),Nc(xe)},getTargetThreadForEventCallback:function(I){switch(I){case 1:return 0;case 2:return ve.currentProxiedOperationCallerThread;default:return I}},getNodeNameForTarget:function(I){return I?I==window?"#window":I==screen?"#screen":I&&I.nodeName?I.nodeName:"":""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function $y(I){var D=Ct(I)+1,P=nm(D);return gt(I,P,D),P}function Ry(I,D,P,j){var de=im(),xe=Ic(12),he=0;D&&(he=$y(D)),n()[xe>>2]=he,n()[xe+4>>2]=P,n()[xe+8>>2]=j,rb(I,657457152,0,he,xe),Nc(de)}function Fy(I,D,P,j){D=D?ze(D):"",Ry(I,D,P,j)}function Oy(I){return I>2?ze(I):I}var Py=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function My(I){I=Oy(I);var D=Py[I]||(typeof document!="undefined"?document.querySelector(I):void 0);return D}function Qp(I){return My(I)}function Nh(I,D,P){var j=Qp(I);if(!j)return-4;if(j.canvasSharedPtr&&(n()[j.canvasSharedPtr>>2]=D,n()[j.canvasSharedPtr+4>>2]=P),j.offscreenCanvas||!j.controlTransferredOffscreen){j.offscreenCanvas&&(j=j.offscreenCanvas);var de=!1;if(j.GLctxObject&&j.GLctxObject.GLctx){var xe=j.GLctxObject.GLctx.getParameter(2978);de=xe[0]===0&&xe[1]===0&&xe[2]===j.width&&xe[3]===j.height}j.width=D,j.height=P,de&&j.GLctxObject.GLctx.viewport(0,0,D,P)}else if(j.canvasSharedPtr){var he=n()[j.canvasSharedPtr+8>>2];return Fy(he,I,D,P),1}else return-4;return 0}function Sh(I,D,P){return b?Ka(2,1,I,D,P):Nh(I,D,P)}function Ly(I,D,P){var j=Qp(I);return j?Nh(I,D,P):Sh(I,D,P)}function zy(I){I=I|0}function By(I,D){I=I|0,D=D|0}function Vy(I){var D=I.getExtension("ANGLE_instanced_arrays");if(D)return I.vertexAttribDivisor=function(P,j){D.vertexAttribDivisorANGLE(P,j)},I.drawArraysInstanced=function(P,j,de,xe){D.drawArraysInstancedANGLE(P,j,de,xe)},I.drawElementsInstanced=function(P,j,de,xe,he){D.drawElementsInstancedANGLE(P,j,de,xe,he)},1}function Wy(I){var D=I.getExtension("OES_vertex_array_object");if(D)return I.createVertexArray=function(){return D.createVertexArrayOES()},I.deleteVertexArray=function(P){D.deleteVertexArrayOES(P)},I.bindVertexArray=function(P){D.bindVertexArrayOES(P)},I.isVertexArray=function(P){return D.isVertexArrayOES(P)},1}function Gy(I){var D=I.getExtension("WEBGL_draw_buffers");if(D)return I.drawBuffers=function(P,j){D.drawBuffersWEBGL(P,j)},1}var rt={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){for(var I=new Float32Array(rt.MINI_TEMP_BUFFER_SIZE),D=0;D>2]:-1;de+=ze(n()[P+xe*4>>2],he<0?void 0:he)}return de},createContext:function(I,D){var P=I.getContext("webgl",D);if(!P)return 0;var j=rt.registerContext(P,D);return j},registerContext:function(I,D){var P=nm(8);n()[P+4>>2]=Vs();var j={handle:P,attributes:D,version:D.majorVersion,GLctx:I};return I.canvas&&(I.canvas.GLctxObject=j),rt.contexts[P]=j,(typeof D.enableExtensionsByDefault=="undefined"||D.enableExtensionsByDefault)&&rt.initExtensions(j),P},makeContextCurrent:function(I){return rt.currentContext=rt.contexts[I],i.ctx=Xa=rt.currentContext&&rt.currentContext.GLctx,!(I&&!Xa)},getContext:function(I){return rt.contexts[I]},deleteContext:function(I){rt.currentContext===rt.contexts[I]&&(rt.currentContext=null),typeof Ze=="object"&&Ze.removeAllHandlersOnTarget(rt.contexts[I].GLctx.canvas),rt.contexts[I]&&rt.contexts[I].GLctx.canvas&&(rt.contexts[I].GLctx.canvas.GLctxObject=void 0),sm(rt.contexts[I].handle),rt.contexts[I]=null},initExtensions:function(I){if(I||(I=rt.currentContext),!I.initExtensionsDone){I.initExtensionsDone=!0;var D=I.GLctx;Vy(D),Wy(D),Gy(D),D.disjointTimerQueryExt=D.getExtension("EXT_disjoint_timer_query");var P=["OES_texture_float","OES_texture_half_float","OES_standard_derivatives","OES_vertex_array_object","WEBGL_compressed_texture_s3tc","WEBGL_depth_texture","OES_element_index_uint","EXT_texture_filter_anisotropic","EXT_frag_depth","WEBGL_draw_buffers","ANGLE_instanced_arrays","OES_texture_float_linear","OES_texture_half_float_linear","EXT_blend_minmax","EXT_shader_texture_lod","EXT_texture_norm16","WEBGL_compressed_texture_pvrtc","EXT_color_buffer_half_float","WEBGL_color_buffer_float","EXT_sRGB","WEBGL_compressed_texture_etc1","EXT_disjoint_timer_query","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_astc","EXT_color_buffer_float","WEBGL_compressed_texture_s3tc_srgb","EXT_disjoint_timer_query_webgl2","WEBKIT_WEBGL_compressed_texture_pvrtc"],j=D.getSupportedExtensions()||[];j.forEach(function(de){P.indexOf(de)!=-1&&D.getExtension(de)})}},populateUniformTable:function(I){for(var D=rt.programs[I],P=rt.programInfos[I]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1},j=P.uniforms,de=Xa.getProgramParameter(D,35718),xe=0;xe>2;P.alpha=!!n()[j+(0>>2)],P.depth=!!n()[j+(4>>2)],P.stencil=!!n()[j+(8>>2)],P.antialias=!!n()[j+(12>>2)],P.premultipliedAlpha=!!n()[j+(16>>2)],P.preserveDrawingBuffer=!!n()[j+(20>>2)];var de=n()[j+(24>>2)];P.powerPreference=Uy[de],P.failIfMajorPerformanceCaveat=!!n()[j+(28>>2)],P.majorVersion=n()[j+(32>>2)],P.minorVersion=n()[j+(36>>2)],P.enableExtensionsByDefault=n()[j+(40>>2)],P.explicitSwapControl=n()[j+(44>>2)],P.proxyContextToMainThread=n()[j+(48>>2)],P.renderViaOffscreenBackBuffer=n()[j+(52>>2)];var xe=Qp(I);if(!xe)return-4;if(P.explicitSwapControl)return-1;var he=rt.createContext(xe,P);return he}function qy(I,D){return jy(I,D)}var Bl={splitPath:function(I){var D=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return D.exec(I).slice(1)},normalizeArray:function(I,D){for(var P=0,j=I.length-1;j>=0;j--){var de=I[j];de==="."?I.splice(j,1):de===".."?(I.splice(j,1),P++):P&&(I.splice(j,1),P--)}if(D)for(;P;P--)I.unshift("..");return I},normalize:function(I){var D=I.charAt(0)==="/",P=I.substr(-1)==="/";return I=Bl.normalizeArray(I.split("/").filter(function(j){return!!j}),!D).join("/"),!I&&!D&&(I="."),I&&P&&(I+="/"),(D?"/":"")+I},dirname:function(I){var D=Bl.splitPath(I),P=D[0],j=D[1];return!P&&!j?".":(j&&(j=j.substr(0,j.length-1)),P+j)},basename:function(I){if(I==="/")return"/";var D=I.lastIndexOf("/");return D===-1?I:I.substr(D+1)},extname:function(I){return Bl.splitPath(I)[3]},join:function(){var I=Array.prototype.slice.call(arguments,0);return Bl.normalize(I.join("/"))},join2:function(I,D){return Bl.normalize(I+"/"+D)}},kc={mappings:{},buffers:[null,[],[]],printChar:function(I,D){var P=kc.buffers[I];D===0||D===10?((I===1?H:U)(Pe(P,0)),P.length=0):P.push(D)},varargs:void 0,get:function(){kc.varargs+=4;var I=n()[kc.varargs-4>>2];return I},getStr:function(I){var D=ze(I);return D},get64:function(I,D){return I}};function Th(I){return b?Ka(3,1,I):0}function Eh(I,D,P,j,de){if(b)return Ka(4,1,I,D,P,j,de)}function Ah(I,D,P,j){if(b)return Ka(5,1,I,D,P,j);for(var de=0,xe=0;xe>2],Te=n()[D+(xe*8+4)>>2],ft=0;ft>2]=de,0}function Hy(I){var D=ve.exitHandlers.pop();I&&D()}function Ky(I,D){ve.exitHandlers===null&&(ve.exitHandlers=[]),ve.exitHandlers.push(function(){SI(I,D)})}function Dh(I){if(b)throw"Internal Error! _spawn_thread() can only ever be called from main application thread!";var D=ve.getNewWorker();if(D.pthread!==void 0)throw"Internal error!";if(!I.pthread_ptr)throw"Internal error, no pthread ptr!";ve.runningWorkers.push(D);for(var P=nm(128*4),j=0;j<128;++j)n()[P+j*4>>2]=0;var de=I.stackBase+I.stackSize,xe=ve.pthreads[I.pthread_ptr]={worker:D,stackBase:I.stackBase,stackSize:I.stackSize,allocatedOwnStack:I.allocatedOwnStack,thread:I.pthread_ptr,threadInfoStruct:I.pthread_ptr},he=xe.threadInfoStruct>>2;Atomics.store(s(),he+(0>>2),0),Atomics.store(s(),he+(4>>2),0),Atomics.store(s(),he+(8>>2),0),Atomics.store(s(),he+(68>>2),I.detached),Atomics.store(s(),he+(104>>2),P),Atomics.store(s(),he+(48>>2),0),Atomics.store(s(),he+(40>>2),xe.threadInfoStruct),Atomics.store(s(),he+(44>>2),42),Atomics.store(s(),he+(108>>2),I.stackSize),Atomics.store(s(),he+(84>>2),I.stackSize),Atomics.store(s(),he+(80>>2),de),Atomics.store(s(),he+(108+8>>2),de),Atomics.store(s(),he+(108+12>>2),I.detached),Atomics.store(s(),he+(108+20>>2),I.schedPolicy),Atomics.store(s(),he+(108+24>>2),I.schedPrio);var Te=_I(),ft=Te+40;Atomics.store(s(),he+(176>>2),ft),D.pthread=xe;var mr={cmd:"run",start_routine:I.startRoutine,arg:I.arg,threadInfoStruct:I.pthread_ptr,selfThreadId:I.pthread_ptr,parentThreadId:I.parent_pthread_ptr,stackBase:I.stackBase,stackSize:I.stackSize};D.runPthread=function(){mr.time=performance.now(),D.postMessage(mr,I.transferList)},D.loaded&&(D.runPthread(),delete D.runPthread)}function Xy(I,D,P){if(!D&&!P)return Jp.EINVAL;if(!I)return U("pthread_getschedparam called with a null thread pointer!"),Jp.ESRCH;var j=n()[I+12>>2];if(j!==I)return U("pthread_getschedparam attempted on thread "+I+", which does not point to a valid thread, or does not exist anymore!"),Jp.ESRCH;var de=Atomics.load(s(),I+108+20>>2),xe=Atomics.load(s(),I+108+24>>2);return D&&(n()[D>>2]=de),P&&(n()[P>>2]=xe),0}function Vs(){return kh|0}i._pthread_self=Vs;function Yy(I,D,P,j){if(typeof SharedArrayBuffer=="undefined")return U("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;if(!I)return U("pthread_create called with a null thread pointer!"),28;var de=[],xe=0;if(b&&(de.length===0||xe))return II(687865856,I,D,P,j);if(xe)return xe;var he=0,Te=0,ft=0,mr=0,Rr=0;if(D){he=n()[D>>2],he+=81920,Te=n()[D+8>>2],ft=n()[D+12>>2]!==0;var Sc=n()[D+16>>2]===0;if(Sc){var lm=n()[D+20>>2],yo=n()[D+24>>2],Za=ve.currentProxiedOperationCallerThread?ve.currentProxiedOperationCallerThread:Vs();Xy(Za,D+20,D+24),mr=n()[D+20>>2],Rr=n()[D+24>>2],n()[D+20>>2]=lm,n()[D+24>>2]=yo}else mr=n()[D+20>>2],Rr=n()[D+24>>2]}else he=2097152;var um=Te==0;um?Te=vI(16,he):(Te-=he,ye(Te>0));for(var Tc=nm(232),nb=0;nb<232>>2;++nb)s()[(Tc>>2)+nb]=0;n()[I>>2]=Tc,n()[Tc+12>>2]=Tc;var EI=Tc+156;n()[EI>>2]=EI;var sb={stackBase:Te,stackSize:he,allocatedOwnStack:um,schedPolicy:mr,schedPrio:Rr,detached:ft,startRoutine:P,pthread_ptr:Tc,parent_pthread_ptr:Vs(),arg:j,transferList:de};return b?(sb.cmd="spawnThread",postMessage(sb,de)):Dh(sb),0}function Zy(I){return I=+I,I>=0?+oy(I+.5):+ry(I-.5)}function $h(I){if(b)return Ka(6,1,I);switch(I){case 30:return 16384;case 85:var D=2147483648;return D/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return typeof navigator=="object"&&navigator.hardwareConcurrency||1}return yy(28),-1}b?ve.initWorker():ve.initMainThreadBlock();var Xa;rt.init();var Jy=[null,by,Sh,Th,Eh,Ah,$h],Rh={e:gy,r:xy,w:_y,a:wy,l:vy,d:ky,c:wc,h:Ll,g:Cy,x:Iy,q:Ny,B:Sy,t:Ty,A:Dy,u:Ly,k:zy,s:By,v:qy,m:Th,o:Eh,i:Ah,p:cy,memory:Q||i.wasmMemory,y:Hy,z:Ky,j:Yy,b:Vs,f:Zy,n:$h,table:ie},Cc=ly();i.asm=Cc;var em=i.___wasm_call_ctors=function(){return(em=i.___wasm_call_ctors=i.asm.C).apply(null,arguments)},Vl=i._init=function(){return(Vl=i._init=i.asm.D).apply(null,arguments)},tm=i._register_tensor=function(){return(tm=i._register_tensor=i.asm.E).apply(null,arguments)},Qy=i._dispose_data=function(){return(Qy=i._dispose_data=i.asm.F).apply(null,arguments)},eb=i._dispose=function(){return(eb=i._dispose=i.asm.G).apply(null,arguments)},rm=i._Abs=function(){return(rm=i._Abs=i.asm.H).apply(null,arguments)},Fh=i._Add=function(){return(Fh=i._Add=i.asm.I).apply(null,arguments)},Oh=i._AddN=function(){return(Oh=i._AddN=i.asm.J).apply(null,arguments)},q=i._ArgMax=function(){return(q=i._ArgMax=i.asm.K).apply(null,arguments)},se=i._AvgPool=function(){return(se=i._AvgPool=i.asm.L).apply(null,arguments)},_e=i._BatchMatMul=function(){return(_e=i._BatchMatMul=i.asm.M).apply(null,arguments)},Ke=i._ClipByValue=function(){return(Ke=i._ClipByValue=i.asm.N).apply(null,arguments)},Xe=i._Conv2D=function(){return(Xe=i._Conv2D=i.asm.O).apply(null,arguments)},Kt=i._Conv2DBackpropInput=function(){return(Kt=i._Conv2DBackpropInput=i.asm.P).apply(null,arguments)},lt=i._Cos=function(){return(lt=i._Cos=i.asm.Q).apply(null,arguments)},st=i._CropAndResize=function(){return(st=i._CropAndResize=i.asm.R).apply(null,arguments)},yr=i._Cumsum=function(){return(yr=i._Cumsum=i.asm.S).apply(null,arguments)},ta=i._DepthToSpace=function(){return(ta=i._DepthToSpace=i.asm.T).apply(null,arguments)},ra=i._DepthwiseConv2dNative=function(){return(ra=i._DepthwiseConv2dNative=i.asm.U).apply(null,arguments)},Ph=i._Equal=function(){return(Ph=i._Equal=i.asm.V).apply(null,arguments)},om=i._Exp=function(){return(om=i._Exp=i.asm.W).apply(null,arguments)},xo=i._FlipLeftRight=function(){return(xo=i._FlipLeftRight=i.asm.X).apply(null,arguments)},Ya=i._Floor=function(){return(Ya=i._Floor=i.asm.Y).apply(null,arguments)},Mh=i._FloorDiv=function(){return(Mh=i._FloorDiv=i.asm.Z).apply(null,arguments)},Oz=i._FusedBatchNorm=function(){return(Oz=i._FusedBatchNorm=i.asm._).apply(null,arguments)},Pz=i._FusedConv2D=function(){return(Pz=i._FusedConv2D=i.asm.$).apply(null,arguments)},Mz=i._FusedDepthwiseConv2D=function(){return(Mz=i._FusedDepthwiseConv2D=i.asm.aa).apply(null,arguments)},Lz=i._Gather=function(){return(Lz=i._Gather=i.asm.ba).apply(null,arguments)},zz=i._GatherNd=function(){return(zz=i._GatherNd=i.asm.ca).apply(null,arguments)},Bz=i._Greater=function(){return(Bz=i._Greater=i.asm.da).apply(null,arguments)},Vz=i._GreaterEqual=function(){return(Vz=i._GreaterEqual=i.asm.ea).apply(null,arguments)},Wz=i._LeakyRelu=function(){return(Wz=i._LeakyRelu=i.asm.fa).apply(null,arguments)},Gz=i._Less=function(){return(Gz=i._Less=i.asm.ga).apply(null,arguments)},Uz=i._LessEqual=function(){return(Uz=i._LessEqual=i.asm.ha).apply(null,arguments)},jz=i._Log=function(){return(jz=i._Log=i.asm.ia).apply(null,arguments)},qz=i._LogicalAnd=function(){return(qz=i._LogicalAnd=i.asm.ja).apply(null,arguments)},Hz=i._Max=function(){return(Hz=i._Max=i.asm.ka).apply(null,arguments)},Kz=i._MaxPool=function(){return(Kz=i._MaxPool=i.asm.la).apply(null,arguments)},Xz=i._Maximum=function(){return(Xz=i._Maximum=i.asm.ma).apply(null,arguments)},Yz=i._Mean=function(){return(Yz=i._Mean=i.asm.na).apply(null,arguments)},Zz=i._Min=function(){return(Zz=i._Min=i.asm.oa).apply(null,arguments)},Jz=i._Minimum=function(){return(Jz=i._Minimum=i.asm.pa).apply(null,arguments)},Qz=i._Multiply=function(){return(Qz=i._Multiply=i.asm.qa).apply(null,arguments)},eB=i._Neg=function(){return(eB=i._Neg=i.asm.ra).apply(null,arguments)},tB=i._NonMaxSuppressionV3=function(){return(tB=i._NonMaxSuppressionV3=i.asm.sa).apply(null,arguments)},rB=i._NonMaxSuppressionV4=function(){return(rB=i._NonMaxSuppressionV4=i.asm.ta).apply(null,arguments)},oB=i._NonMaxSuppressionV5=function(){return(oB=i._NonMaxSuppressionV5=i.asm.ua).apply(null,arguments)},nB=i._NotEqual=function(){return(nB=i._NotEqual=i.asm.va).apply(null,arguments)},sB=i._OneHot=function(){return(sB=i._OneHot=i.asm.wa).apply(null,arguments)},iB=i._PadV2=function(){return(iB=i._PadV2=i.asm.xa).apply(null,arguments)},aB=i._Pow=function(){return(aB=i._Pow=i.asm.ya).apply(null,arguments)},lB=i._Prelu=function(){return(lB=i._Prelu=i.asm.za).apply(null,arguments)},uB=i._Prod=function(){return(uB=i._Prod=i.asm.Aa).apply(null,arguments)},cB=i._RealDiv=function(){return(cB=i._RealDiv=i.asm.Ba).apply(null,arguments)},pB=i._Relu=function(){return(pB=i._Relu=i.asm.Ca).apply(null,arguments)},mB=i._Relu6=function(){return(mB=i._Relu6=i.asm.Da).apply(null,arguments)},fB=i._ResizeBilinear=function(){return(fB=i._ResizeBilinear=i.asm.Ea).apply(null,arguments)},dB=i._Reverse=function(){return(dB=i._Reverse=i.asm.Fa).apply(null,arguments)},hB=i._RotateWithOffset=function(){return(hB=i._RotateWithOffset=i.asm.Ga).apply(null,arguments)},gB=i._Round=function(){return(gB=i._Round=i.asm.Ha).apply(null,arguments)},xB=i._Rsqrt=function(){return(xB=i._Rsqrt=i.asm.Ia).apply(null,arguments)},yB=i._ScatterNd=function(){return(yB=i._ScatterNd=i.asm.Ja).apply(null,arguments)},bB=i._SelectV2=function(){return(bB=i._SelectV2=i.asm.Ka).apply(null,arguments)},_B=i._Sigmoid=function(){return(_B=i._Sigmoid=i.asm.La).apply(null,arguments)},wB=i._Sin=function(){return(wB=i._Sin=i.asm.Ma).apply(null,arguments)},vB=i._Softmax=function(){return(vB=i._Softmax=i.asm.Na).apply(null,arguments)},kB=i._Sqrt=function(){return(kB=i._Sqrt=i.asm.Oa).apply(null,arguments)},CB=i._Square=function(){return(CB=i._Square=i.asm.Pa).apply(null,arguments)},IB=i._SquaredDifference=function(){return(IB=i._SquaredDifference=i.asm.Qa).apply(null,arguments)},NB=i._StridedSlice=function(){return(NB=i._StridedSlice=i.asm.Ra).apply(null,arguments)},SB=i._Sub=function(){return(SB=i._Sub=i.asm.Sa).apply(null,arguments)},TB=i._Sum=function(){return(TB=i._Sum=i.asm.Ta).apply(null,arguments)},EB=i._Tanh=function(){return(EB=i._Tanh=i.asm.Ua).apply(null,arguments)},AB=i._Tile=function(){return(AB=i._Tile=i.asm.Va).apply(null,arguments)},DB=i._TopK=function(){return(DB=i._TopK=i.asm.Wa).apply(null,arguments)},$B=i._Transpose=function(){return($B=i._Transpose=i.asm.Xa).apply(null,arguments)},RB=i.__FusedMatMul=function(){return(RB=i.__FusedMatMul=i.asm.Ya).apply(null,arguments)},nm=i._malloc=function(){return(nm=i._malloc=i.asm.Za).apply(null,arguments)},sm=i._free=function(){return(sm=i._free=i.asm._a).apply(null,arguments)},_I=i._emscripten_get_global_libc=function(){return(_I=i._emscripten_get_global_libc=i.asm.$a).apply(null,arguments)},wI=i.___errno_location=function(){return(wI=i.___errno_location=i.asm.ab).apply(null,arguments)},FB=i.___em_js__initPthreadsJS=function(){return(FB=i.___em_js__initPthreadsJS=i.asm.bb).apply(null,arguments)},vI=i._memalign=function(){return(vI=i._memalign=i.asm.cb).apply(null,arguments)},kI=i.___pthread_tsd_run_dtors=function(){return(kI=i.___pthread_tsd_run_dtors=i.asm.db).apply(null,arguments)},tb=i._emscripten_main_thread_process_queued_calls=function(){return(tb=i._emscripten_main_thread_process_queued_calls=i.asm.eb).apply(null,arguments)},OB=i._emscripten_current_thread_process_queued_calls=function(){return(OB=i._emscripten_current_thread_process_queued_calls=i.asm.fb).apply(null,arguments)},CI=i._emscripten_register_main_browser_thread_id=function(){return(CI=i._emscripten_register_main_browser_thread_id=i.asm.gb).apply(null,arguments)},PB=i._emscripten_main_browser_thread_id=function(){return(PB=i._emscripten_main_browser_thread_id=i.asm.hb).apply(null,arguments)},MB=i._emscripten_async_run_in_main_thread=function(){return(MB=i._emscripten_async_run_in_main_thread=i.asm.ib).apply(null,arguments)},LB=i._emscripten_sync_run_in_main_thread=function(){return(LB=i._emscripten_sync_run_in_main_thread=i.asm.jb).apply(null,arguments)},zB=i._emscripten_sync_run_in_main_thread_0=function(){return(zB=i._emscripten_sync_run_in_main_thread_0=i.asm.kb).apply(null,arguments)},BB=i._emscripten_sync_run_in_main_thread_1=function(){return(BB=i._emscripten_sync_run_in_main_thread_1=i.asm.lb).apply(null,arguments)},VB=i._emscripten_sync_run_in_main_thread_2=function(){return(VB=i._emscripten_sync_run_in_main_thread_2=i.asm.mb).apply(null,arguments)},WB=i._emscripten_sync_run_in_main_thread_xprintf_varargs=function(){return(WB=i._emscripten_sync_run_in_main_thread_xprintf_varargs=i.asm.nb).apply(null,arguments)},GB=i._emscripten_sync_run_in_main_thread_3=function(){return(GB=i._emscripten_sync_run_in_main_thread_3=i.asm.ob).apply(null,arguments)},II=i._emscripten_sync_run_in_main_thread_4=function(){return(II=i._emscripten_sync_run_in_main_thread_4=i.asm.pb).apply(null,arguments)},UB=i._emscripten_sync_run_in_main_thread_5=function(){return(UB=i._emscripten_sync_run_in_main_thread_5=i.asm.qb).apply(null,arguments)},jB=i._emscripten_sync_run_in_main_thread_6=function(){return(jB=i._emscripten_sync_run_in_main_thread_6=i.asm.rb).apply(null,arguments)},qB=i._emscripten_sync_run_in_main_thread_7=function(){return(qB=i._emscripten_sync_run_in_main_thread_7=i.asm.sb).apply(null,arguments)},NI=i._emscripten_run_in_main_runtime_thread_js=function(){return(NI=i._emscripten_run_in_main_runtime_thread_js=i.asm.tb).apply(null,arguments)},rb=i._emscripten_async_queue_on_thread_=function(){return(rb=i._emscripten_async_queue_on_thread_=i.asm.ub).apply(null,arguments)},HB=i._emscripten_tls_init=function(){return(HB=i._emscripten_tls_init=i.asm.vb).apply(null,arguments)},im=i.stackSave=function(){return(im=i.stackSave=i.asm.wb).apply(null,arguments)},Ic=i.stackAlloc=function(){return(Ic=i.stackAlloc=i.asm.xb).apply(null,arguments)},Nc=i.stackRestore=function(){return(Nc=i.stackRestore=i.asm.yb).apply(null,arguments)},SI=i.dynCall_vi=function(){return(SI=i.dynCall_vi=i.asm.zb).apply(null,arguments)},KB=i.dynCall_v=function(){return(KB=i.dynCall_v=i.asm.Ab).apply(null,arguments)},XB=i.dynCall_ii=function(){return(XB=i.dynCall_ii=i.asm.Bb).apply(null,arguments)};i.asm=Cc,i.cwrap=Re,i.PThread=ve,i.PThread=ve,i._pthread_self=Vs,i.wasmMemory=Q,i.ExitStatus=TI;var am;i.then=function(I){if(am)I(i);else{var D=i.onRuntimeInitialized;i.onRuntimeInitialized=function(){D&&D(),I(i)}}return i};function TI(I){this.name="ExitStatus",this.message="Program terminated with exit("+I+")",this.status=I}Ml=function I(){am||ob(),am||(Ml=I)};function ob(I){if(I=I||p,Qi>0||(xh(),Qi>0))return;function D(){am||(am=!0,i.calledRun=!0,!ge&&(Qx(),ey(),i.onRuntimeInitialized&&i.onRuntimeInitialized(),ty()))}i.setStatus?(i.setStatus("Running..."),setTimeout(function(){setTimeout(function(){i.setStatus("")},1),D()},1)):D()}if(i.run=ob,i.preInit)for(typeof i.preInit=="function"&&(i.preInit=[i.preInit]);i.preInit.length>0;)i.preInit.pop()();return b||(J=!0),b||ob(),e}}();typeof Xx=="object"&&typeof dI=="object"?dI.exports=hI:typeof define=="function"&&define.amd?define([],function(){return hI}):typeof Xx=="object"&&(Xx.WasmBackendModuleThreadedSimd=hI)});var Dz=Ur((Yx,gI)=>{var xI=function(){var r=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(r=r||__filename),function(e){e=e||{};var t=typeof e!="undefined"?e:{},o={},n;for(n in t)t.hasOwnProperty(n)&&(o[n]=t[n]);var s=[],a="./this.program",i=function(q,se){throw se},l=!1,u=!1,c=!1,p=!1;l=typeof window=="object",u=typeof importScripts=="function",c=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",p=!l&&!c&&!u;var m="";function f(q){return t.locateFile?t.locateFile(q,m):m+q}var d,h,g,y,b,_;c?(u?m=Xp().dirname(m)+"/":m=__dirname+"/",d=function(se,_e){return b||(b=require("fs")),_||(_=Xp()),se=_.normalize(se),b.readFileSync(se,_e?null:"utf8")},g=function(se){var _e=d(se,!0);return _e.buffer||(_e=new Uint8Array(_e)),H(_e.buffer),_e},process.argv.length>1&&(a=process.argv[1].replace(/\\/g,"/")),s=process.argv.slice(2),process.on("uncaughtException",function(q){if(!(q instanceof tm))throw q}),process.on("unhandledRejection",os),i=function(q){process.exit(q)},t.inspect=function(){return"[Emscripten Module object]"}):p?(typeof read!="undefined"&&(d=function(se){return read(se)}),g=function(se){var _e;return typeof readbuffer=="function"?new Uint8Array(readbuffer(se)):(_e=read(se,"binary"),H(typeof _e=="object"),_e)},typeof scriptArgs!="undefined"?s=scriptArgs:typeof arguments!="undefined"&&(s=arguments),typeof quit=="function"&&(i=function(q){quit(q)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(l||u)&&(u?m=self.location.href:document.currentScript&&(m=document.currentScript.src),r&&(m=r),m.indexOf("blob:")!==0?m=m.substr(0,m.lastIndexOf("/")+1):m="",d=function(se){var _e=new XMLHttpRequest;return _e.open("GET",se,!1),_e.send(null),_e.responseText},u&&(g=function(se){var _e=new XMLHttpRequest;return _e.open("GET",se,!1),_e.responseType="arraybuffer",_e.send(null),new Uint8Array(_e.response)}),h=function(se,_e,Ke){var Xe=new XMLHttpRequest;Xe.open("GET",se,!0),Xe.responseType="arraybuffer",Xe.onload=function(){if(Xe.status==200||Xe.status==0&&Xe.response){_e(Xe.response);return}Ke()},Xe.onerror=Ke,Xe.send(null)},y=function(q){document.title=q});var w=t.print||console.log.bind(console),k=t.printErr||console.warn.bind(console);for(n in o)o.hasOwnProperty(n)&&(t[n]=o[n]);o=null,t.arguments&&(s=t.arguments),t.thisProgram&&(a=t.thisProgram),t.quit&&(i=t.quit);var $;t.wasmBinary&&($=t.wasmBinary);var T;t.noExitRuntime&&(T=t.noExitRuntime),typeof WebAssembly!="object"&&k("no native wasm support detected");var F,M=new WebAssembly.Table({initial:151,maximum:151+0,element:"anyfunc"}),L=!1,G=0;function H(q,se){q||os("Assertion failed: "+se)}function U(q){var se=t["_"+q];return H(se,"Cannot call unknown function "+q+", make sure it is exported"),se}function Z(q,se,_e,Ke,Xe){var Kt={string:function(xo){var Ya=0;if(xo!=null&&xo!==0){var Mh=(xo.length<<2)+1;Ya=Cc(Mh),ie(xo,Ya,Mh)}return Ya},array:function(xo){var Ya=Cc(xo.length);return ae(xo,Ya),Ya}};function lt(xo){return se==="string"?J(xo):se==="boolean"?Boolean(xo):xo}var st=U(q),yr=[],ta=0;if(Ke)for(var ra=0;ra=Ke);)++Xe;if(Xe-se>16&&q.subarray&&X)return X.decode(q.subarray(se,Xe));for(var Kt="";se>10,56320|ta&1023)}}return Kt}function J(q,se){return q?oe(ge,q,se):""}function Q(q,se,_e,Ke){if(!(Ke>0))return 0;for(var Xe=_e,Kt=_e+Ke-1,lt=0;lt=55296&&st<=57343){var yr=q.charCodeAt(++lt);st=65536+((st&1023)<<10)|yr&1023}if(st<=127){if(_e>=Kt)break;se[_e++]=st}else if(st<=2047){if(_e+1>=Kt)break;se[_e++]=192|st>>6,se[_e++]=128|st&63}else if(st<=65535){if(_e+2>=Kt)break;se[_e++]=224|st>>12,se[_e++]=128|st>>6&63,se[_e++]=128|st&63}else{if(_e+3>=Kt)break;se[_e++]=240|st>>18,se[_e++]=128|st>>12&63,se[_e++]=128|st>>6&63,se[_e++]=128|st&63}}return se[_e]=0,_e-Xe}function ie(q,se,_e){return Q(q,ge,se,_e)}function ae(q,se){le.set(q,se)}var ue,le,ge,we,ye,ke,Ee,Re,Pe;function ze(q){ue=q,t.HEAP8=le=new Int8Array(q),t.HEAP16=we=new Int16Array(q),t.HEAP32=ke=new Int32Array(q),t.HEAPU8=ge=new Uint8Array(q),t.HEAPU16=ye=new Uint16Array(q),t.HEAPU32=Ee=new Uint32Array(q),t.HEAPF32=Re=new Float32Array(q),t.HEAPF64=Pe=new Float64Array(q)}var mt=t.INITIAL_MEMORY||16777216;function gt(q){for(;q.length>0;){var se=q.shift();if(typeof se=="function"){se(t);continue}var _e=se.func;typeof _e=="number"?se.arg===void 0?t.dynCall_v(_e):t.dynCall_vi(_e,se.arg):_e(se.arg===void 0?null:se.arg)}}var Ct=[],xt=[],yt=[],It=[],nt=!1,ho=!1;function Jt(){if(t.preRun)for(typeof t.preRun=="function"&&(t.preRun=[t.preRun]);t.preRun.length;)To(t.preRun.shift());gt(Ct)}function go(){nt=!0,gt(xt)}function $r(){gt(yt)}function jo(){ho=!0}function Gr(){if(t.postRun)for(typeof t.postRun=="function"&&(t.postRun=[t.postRun]);t.postRun.length;)Eo(t.postRun.shift());gt(It)}function To(q){Ct.unshift(q)}function Eo(q){It.unshift(q)}var vr=Math.ceil,Ao=Math.floor,ro=0,Zi=null,Do=null;function Fl(q){ro++,t.monitorRunDependencies&&t.monitorRunDependencies(ro)}function Ji(q){if(ro--,t.monitorRunDependencies&&t.monitorRunDependencies(ro),ro==0&&(Zi!==null&&(clearInterval(Zi),Zi=null),Do)){var se=Do;Do=null,se()}}t.preloadedImages={},t.preloadedAudios={};function os(q){throw t.onAbort&&t.onAbort(q),q+="",w(q),k(q),L=!0,G=1,q="abort("+q+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(q)}function Ol(q,se){return String.prototype.startsWith?q.startsWith(se):q.indexOf(se)===0}var dh="data:application/octet-stream;base64,";function hh(q){return Ol(q,dh)}var gh="file://";function Yp(q){return Ol(q,gh)}var $o="tfjs-backend-wasm.wasm";hh($o)||($o=f($o));function xh(){try{if($)return new Uint8Array($);if(g)return g($o);throw"both async and sync fetching of the wasm failed"}catch(q){os(q)}}function Qx(){return!$&&(l||u)&&typeof fetch=="function"&&!Yp($o)?fetch($o,{credentials:"same-origin"}).then(function(q){if(!q.ok)throw"failed to load wasm binary file at '"+$o+"'";return q.arrayBuffer()}).catch(function(){return xh()}):new Promise(function(q,se){q(xh())})}function ey(){var q={env:yh,wasi_snapshot_preview1:yh};function se(lt,st){var yr=lt.exports;t.asm=yr,F=yr.memory,ze(F.buffer),Ji("wasm-instantiate")}Fl("wasm-instantiate");function _e(lt){se(lt.instance)}function Ke(lt){return Qx().then(function(st){return WebAssembly.instantiate(st,q)}).then(lt,function(st){k("failed to asynchronously prepare wasm: "+st),os(st)})}function Xe(){if(!$&&typeof WebAssembly.instantiateStreaming=="function"&&!hh($o)&&!Yp($o)&&typeof fetch=="function")fetch($o,{credentials:"same-origin"}).then(function(lt){var st=WebAssembly.instantiateStreaming(lt,q);return st.then(_e,function(yr){k("wasm streaming compile failed: "+yr),k("falling back to ArrayBuffer instantiation"),Ke(_e)})});else return Ke(_e)}if(t.instantiateWasm)try{var Kt=t.instantiateWasm(q,se);return Kt}catch(lt){return k("Module.instantiateWasm callback failed with error: "+lt),!1}return Xe(),{}}xt.push();function ty(q){ze(F.buffer)}var Pl={splitPath:function(q){var se=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return se.exec(q).slice(1)},normalizeArray:function(q,se){for(var _e=0,Ke=q.length-1;Ke>=0;Ke--){var Xe=q[Ke];Xe==="."?q.splice(Ke,1):Xe===".."?(q.splice(Ke,1),_e++):_e&&(q.splice(Ke,1),_e--)}if(se)for(;_e;_e--)q.unshift("..");return q},normalize:function(q){var se=q.charAt(0)==="/",_e=q.substr(-1)==="/";return q=Pl.normalizeArray(q.split("/").filter(function(Ke){return!!Ke}),!se).join("/"),!q&&!se&&(q="."),q&&_e&&(q+="/"),(se?"/":"")+q},dirname:function(q){var se=Pl.splitPath(q),_e=se[0],Ke=se[1];return!_e&&!Ke?".":(Ke&&(Ke=Ke.substr(0,Ke.length-1)),_e+Ke)},basename:function(q){if(q==="/")return"/";var se=q.lastIndexOf("/");return se===-1?q:q.substr(se+1)},extname:function(q){return Pl.splitPath(q)[3]},join:function(){var q=Array.prototype.slice.call(arguments,0);return Pl.normalize(q.join("/"))},join2:function(q,se){return Pl.normalize(q+"/"+se)}},yc={mappings:{},buffers:[null,[],[]],printChar:function(q,se){var _e=yc.buffers[q];se===0||se===10?((q===1?w:k)(oe(_e,0)),_e.length=0):_e.push(se)},varargs:void 0,get:function(){yc.varargs+=4;var q=ke[yc.varargs-4>>2];return q},getStr:function(q){var se=J(q);return se},get64:function(q,se){return q}};function ry(q){return 0}function oy(q,se,_e,Ke,Xe){}function Qi(q,se,_e,Ke){for(var Xe=0,Kt=0;Kt<_e;Kt++){for(var lt=ke[se+Kt*8>>2],st=ke[se+(Kt*8+4)>>2],yr=0;yr>2]=Xe,0}function Zp(q){Fh(q)}function Ml(q){Zp(q)}function ny(q){return q=+q,q>=0?+Ao(q+.5):+vr(q-.5)}var yh={emscripten_notify_memory_growth:ty,fd_close:ry,fd_seek:oy,fd_write:Qi,proc_exit:Ml,roundf:ny},ea=ey();t.asm=ea;var bh=t._init=function(){return(bh=t._init=t.asm.init).apply(null,arguments)},sy=t._register_tensor=function(){return(sy=t._register_tensor=t.asm.register_tensor).apply(null,arguments)},_h=t._dispose_data=function(){return(_h=t._dispose_data=t.asm.dispose_data).apply(null,arguments)},iy=t._dispose=function(){return(iy=t._dispose=t.asm.dispose).apply(null,arguments)},wh=t._Abs=function(){return(wh=t._Abs=t.asm.Abs).apply(null,arguments)},qo=t._Add=function(){return(qo=t._Add=t.asm.Add).apply(null,arguments)},vh=t._AddN=function(){return(vh=t._AddN=t.asm.AddN).apply(null,arguments)},ay=t._ArgMax=function(){return(ay=t._ArgMax=t.asm.ArgMax).apply(null,arguments)},ly=t._AvgPool=function(){return(ly=t._AvgPool=t.asm.AvgPool).apply(null,arguments)},uy=t._BatchMatMul=function(){return(uy=t._BatchMatMul=t.asm.BatchMatMul).apply(null,arguments)},cy=t._ClipByValue=function(){return(cy=t._ClipByValue=t.asm.ClipByValue).apply(null,arguments)},kh=t._Conv2D=function(){return(kh=t._Conv2D=t.asm.Conv2D).apply(null,arguments)},Ch=t._Conv2DBackpropInput=function(){return(Ch=t._Conv2DBackpropInput=t.asm.Conv2DBackpropInput).apply(null,arguments)},Ih=t._Cos=function(){return(Ih=t._Cos=t.asm.Cos).apply(null,arguments)},bc=t._CropAndResize=function(){return(bc=t._CropAndResize=t.asm.CropAndResize).apply(null,arguments)},Jp=t._Cumsum=function(){return(Jp=t._Cumsum=t.asm.Cumsum).apply(null,arguments)},_c=t._DepthToSpace=function(){return(_c=t._DepthToSpace=t.asm.DepthToSpace).apply(null,arguments)},wc=t._DepthwiseConv2dNative=function(){return(wc=t._DepthwiseConv2dNative=t.asm.DepthwiseConv2dNative).apply(null,arguments)},py=t._Equal=function(){return(py=t._Equal=t.asm.Equal).apply(null,arguments)},my=t._Exp=function(){return(my=t._Exp=t.asm.Exp).apply(null,arguments)},fy=t._FlipLeftRight=function(){return(fy=t._FlipLeftRight=t.asm.FlipLeftRight).apply(null,arguments)},ve=t._Floor=function(){return(ve=t._Floor=t.asm.Floor).apply(null,arguments)},dy=t._FloorDiv=function(){return(dy=t._FloorDiv=t.asm.FloorDiv).apply(null,arguments)},hy=t._FusedBatchNorm=function(){return(hy=t._FusedBatchNorm=t.asm.FusedBatchNorm).apply(null,arguments)},gy=t._FusedConv2D=function(){return(gy=t._FusedConv2D=t.asm.FusedConv2D).apply(null,arguments)},xy=t._FusedDepthwiseConv2D=function(){return(xy=t._FusedDepthwiseConv2D=t.asm.FusedDepthwiseConv2D).apply(null,arguments)},Ll=t._Gather=function(){return(Ll=t._Gather=t.asm.Gather).apply(null,arguments)},yy=t._GatherNd=function(){return(yy=t._GatherNd=t.asm.GatherNd).apply(null,arguments)},by=t._Greater=function(){return(by=t._Greater=t.asm.Greater).apply(null,arguments)},_y=t._GreaterEqual=function(){return(_y=t._GreaterEqual=t.asm.GreaterEqual).apply(null,arguments)},wy=t._LeakyRelu=function(){return(wy=t._LeakyRelu=t.asm.LeakyRelu).apply(null,arguments)},vy=t._Less=function(){return(vy=t._Less=t.asm.Less).apply(null,arguments)},ky=t._LessEqual=function(){return(ky=t._LessEqual=t.asm.LessEqual).apply(null,arguments)},Cy=t._Log=function(){return(Cy=t._Log=t.asm.Log).apply(null,arguments)},Iy=t._LogicalAnd=function(){return(Iy=t._LogicalAnd=t.asm.LogicalAnd).apply(null,arguments)},Ny=t._Max=function(){return(Ny=t._Max=t.asm.Max).apply(null,arguments)},Sy=t._MaxPool=function(){return(Sy=t._MaxPool=t.asm.MaxPool).apply(null,arguments)},Ka=t._Maximum=function(){return(Ka=t._Maximum=t.asm.Maximum).apply(null,arguments)},zl=t._Mean=function(){return(zl=t._Mean=t.asm.Mean).apply(null,arguments)},vc=t._Min=function(){return(vc=t._Min=t.asm.Min).apply(null,arguments)},Ty=t._Minimum=function(){return(Ty=t._Minimum=t.asm.Minimum).apply(null,arguments)},Ey=t._Multiply=function(){return(Ey=t._Multiply=t.asm.Multiply).apply(null,arguments)},Ay=t._Neg=function(){return(Ay=t._Neg=t.asm.Neg).apply(null,arguments)},Dy=t._NonMaxSuppressionV3=function(){return(Dy=t._NonMaxSuppressionV3=t.asm.NonMaxSuppressionV3).apply(null,arguments)},Ze=t._NonMaxSuppressionV4=function(){return(Ze=t._NonMaxSuppressionV4=t.asm.NonMaxSuppressionV4).apply(null,arguments)},$y=t._NonMaxSuppressionV5=function(){return($y=t._NonMaxSuppressionV5=t.asm.NonMaxSuppressionV5).apply(null,arguments)},Ry=t._NotEqual=function(){return(Ry=t._NotEqual=t.asm.NotEqual).apply(null,arguments)},Fy=t._OneHot=function(){return(Fy=t._OneHot=t.asm.OneHot).apply(null,arguments)},Oy=t._PadV2=function(){return(Oy=t._PadV2=t.asm.PadV2).apply(null,arguments)},Py=t._Pow=function(){return(Py=t._Pow=t.asm.Pow).apply(null,arguments)},My=t._Prelu=function(){return(My=t._Prelu=t.asm.Prelu).apply(null,arguments)},Qp=t._Prod=function(){return(Qp=t._Prod=t.asm.Prod).apply(null,arguments)},Nh=t._RealDiv=function(){return(Nh=t._RealDiv=t.asm.RealDiv).apply(null,arguments)},Sh=t._Relu=function(){return(Sh=t._Relu=t.asm.Relu).apply(null,arguments)},Ly=t._Relu6=function(){return(Ly=t._Relu6=t.asm.Relu6).apply(null,arguments)},zy=t._ResizeBilinear=function(){return(zy=t._ResizeBilinear=t.asm.ResizeBilinear).apply(null,arguments)},By=t._Reverse=function(){return(By=t._Reverse=t.asm.Reverse).apply(null,arguments)},Vy=t._RotateWithOffset=function(){return(Vy=t._RotateWithOffset=t.asm.RotateWithOffset).apply(null,arguments)},Wy=t._Round=function(){return(Wy=t._Round=t.asm.Round).apply(null,arguments)},Gy=t._Rsqrt=function(){return(Gy=t._Rsqrt=t.asm.Rsqrt).apply(null,arguments)},rt=t._ScatterNd=function(){return(rt=t._ScatterNd=t.asm.ScatterNd).apply(null,arguments)},Uy=t._SelectV2=function(){return(Uy=t._SelectV2=t.asm.SelectV2).apply(null,arguments)},jy=t._Sigmoid=function(){return(jy=t._Sigmoid=t.asm.Sigmoid).apply(null,arguments)},qy=t._Sin=function(){return(qy=t._Sin=t.asm.Sin).apply(null,arguments)},Bl=t._Softmax=function(){return(Bl=t._Softmax=t.asm.Softmax).apply(null,arguments)},kc=t._Sqrt=function(){return(kc=t._Sqrt=t.asm.Sqrt).apply(null,arguments)},Th=t._Square=function(){return(Th=t._Square=t.asm.Square).apply(null,arguments)},Eh=t._SquaredDifference=function(){return(Eh=t._SquaredDifference=t.asm.SquaredDifference).apply(null,arguments)},Ah=t._StridedSlice=function(){return(Ah=t._StridedSlice=t.asm.StridedSlice).apply(null,arguments)},Hy=t._Sub=function(){return(Hy=t._Sub=t.asm.Sub).apply(null,arguments)},Ky=t._Sum=function(){return(Ky=t._Sum=t.asm.Sum).apply(null,arguments)},Dh=t._Tanh=function(){return(Dh=t._Tanh=t.asm.Tanh).apply(null,arguments)},Xy=t._Tile=function(){return(Xy=t._Tile=t.asm.Tile).apply(null,arguments)},Vs=t._TopK=function(){return(Vs=t._TopK=t.asm.TopK).apply(null,arguments)},Yy=t._Transpose=function(){return(Yy=t._Transpose=t.asm.Transpose).apply(null,arguments)},Zy=t.__FusedMatMul=function(){return(Zy=t.__FusedMatMul=t.asm._FusedMatMul).apply(null,arguments)},$h=t._malloc=function(){return($h=t._malloc=t.asm.malloc).apply(null,arguments)},Xa=t._free=function(){return(Xa=t._free=t.asm.free).apply(null,arguments)},Jy=t.__start=function(){return(Jy=t.__start=t.asm._start).apply(null,arguments)},Rh=t.stackSave=function(){return(Rh=t.stackSave=t.asm.stackSave).apply(null,arguments)},Cc=t.stackAlloc=function(){return(Cc=t.stackAlloc=t.asm.stackAlloc).apply(null,arguments)},em=t.stackRestore=function(){return(em=t.stackRestore=t.asm.stackRestore).apply(null,arguments)};t.asm=ea,t.cwrap=K;var Vl;t.then=function(q){if(Vl)q(t);else{var se=t.onRuntimeInitialized;t.onRuntimeInitialized=function(){se&&se(),q(t)}}return t};function tm(q){this.name="ExitStatus",this.message="Program terminated with exit("+q+")",this.status=q}var Qy=!1;Do=function q(){Vl||rm(),Vl||(Do=q)};function eb(q){var se=t.__start;try{se();var _e=0;Fh(_e,!0)}catch(Xe){if(Xe instanceof tm)return;if(Xe=="unwind"){T=!0;return}else{var Ke=Xe;Xe&&typeof Xe=="object"&&Xe.stack&&(Ke=[Xe,Xe.stack]),k("exception thrown: "+Ke),i(1,Xe)}}finally{Qy=!0}}function rm(q){if(q=q||s,ro>0||(Jt(),ro>0))return;function se(){Vl||(Vl=!0,t.calledRun=!0,!L&&(go(),$r(),t.onRuntimeInitialized&&t.onRuntimeInitialized(),Oh&&eb(q),Gr()))}t.setStatus?(t.setStatus("Running..."),setTimeout(function(){setTimeout(function(){t.setStatus("")},1),se()},1)):se()}t.run=rm;function Fh(q,se){se&&T&&q===0||(T||(L=!0,G=q,jo(),t.onExit&&t.onExit(q)),i(q,new tm(q)))}if(t.preInit)for(typeof t.preInit=="function"&&(t.preInit=[t.preInit]);t.preInit.length>0;)t.preInit.pop()();var Oh=!0;return t.noInitialRun&&(Oh=!1),T=!0,rm(),e}}();typeof Yx=="object"&&typeof gI=="object"?gI.exports=xI:typeof define=="function"&&define.amd?define([],function(){return xI}):typeof Yx=="object"&&(Yx.WasmBackendModule=xI)});var r3=1e-7,o3=1e-4,Ja=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}},Ws=class{time(e){return Y("time")}read(e){return Y("read")}readSync(e){return Y("readSync")}numDataIds(){return Y("numDataIds")}disposeData(e){return Y("disposeData")}write(e,t,o){return Y("write")}move(e,t,o,n){return Y("move")}memory(){return Y("memory")}floatPrecision(){return Y("floatPrecision")}epsilon(){return this.floatPrecision()===32?r3:o3}batchMatMul(e,t,o,n){return Y("batchMatMul")}fusedBatchMatMul({a:e,b:t,transposeA:o,transposeB:n,bias:s,activation:a,preluActivationWeights:i}){return Y("fusedBatchMatMul")}slice(e,t,o){return Y("slice")}stridedSlice(e,t,o,n){return Y("stridedSlice")}unstack(e,t){return Y("unstack")}reverse(e,t){return Y("reverse")}concat(e,t){return Y("concat")}neg(e){return Y("neg")}add(e,t){return Y("add")}addN(e){return Y("addN")}subtract(e,t){return Y("subtract")}multiply(e,t){return Y("multiply")}realDivide(e,t){return Y("realDivide")}floorDiv(e,t){return Y("floorDiv")}sum(e,t){return Y("sum")}prod(e,t){return Y("prod")}unsortedSegmentSum(e,t,o){return Y("unsortedSegmentSum")}argMin(e,t){return Y("argMin")}argMax(e,t){return Y("argMax")}equal(e,t){return Y("equal")}notEqual(e,t){return Y("notEqual")}less(e,t){return Y("less")}lessEqual(e,t){return Y("lessEqual")}greater(e,t){return Y("greater")}greaterEqual(e,t){return Y("greaterEqual")}logicalNot(e){return Y("logicalNot")}logicalAnd(e,t){return Y("logicalAnd")}logicalOr(e,t){return Y("logicalOr")}where(e){return Y("where")}select(e,t,o){return Y("select")}topk(e,t,o){return Y("topk")}min(e,t){return Y("min")}minimum(e,t){return Y("minimum")}mod(e,t){return Y("mod")}max(e,t){return Y("max")}maximum(e,t){return Y("maximum")}all(e,t){return Y("all")}any(e,t){return Y("any")}squaredDifference(e,t){return Y("squaredDifference")}ceil(e){return Y("ceil")}floor(e){return Y("floor")}round(e){return Y("round")}sign(e){return Y("sign")}isNaN(e){return Y("isNaN")}isInf(e){return Y("isInf")}isFinite(e){return Y("isFinite")}pow(e,t){return Y("pow")}exp(e){return Y("exp")}expm1(e){return Y("expm1")}softmax(e,t){return Y("softmax")}log(e){return Y("log")}log1p(e){return Y("log1p")}sqrt(e){return Y("sqrt")}rsqrt(e){return Y("rsqrt")}square(e){return Y("square")}reciprocal(e){return Y("reciprocal")}relu(e){return Y("relu")}relu6(e){return Y("relu6")}prelu(e,t){return Y("prelu")}elu(e){return Y("elu")}eluDer(e,t){return Y("eluDer")}selu(e){return Y("selu")}int(e){return Y("int")}clip(e,t,o){return Y("clip")}abs(e){return Y("abs")}complexAbs(e){return Y("complexAbs")}sigmoid(e){return Y("sigmoid")}softplus(e){return Y("softplus")}sin(e){return Y("sin")}cos(e){return Y("cos")}tan(e){return Y("tan")}asin(e){return Y("asin")}acos(e){return Y("acos")}atan(e){return Y("atan")}atan2(e,t){return Y("atan2")}sinh(e){return Y("sinh")}cosh(e){return Y("cosh")}tanh(e){return Y("tanh")}asinh(e){return Y("asinh")}acosh(e){return Y("acosh")}atanh(e){return Y("atanh")}erf(e){return Y("erf")}step(e,t){return Y("step")}fusedConv2d({input:e,filter:t,convInfo:o,bias:n,activation:s,preluActivationWeights:a}){return Y("fusedConv2d")}conv2d(e,t,o){return Y("conv2d")}conv2dDerInput(e,t,o){return Y("conv2dDerInput")}conv2dDerFilter(e,t,o){return Y("conv2dDerFilter")}fusedDepthwiseConv2D({input:e,filter:t,convInfo:o,bias:n,activation:s,preluActivationWeights:a}){return Y("fusedDepthwiseConv2D")}depthwiseConv2D(e,t,o){return Y("depthwiseConv2D")}depthwiseConv2DDerInput(e,t,o){return Y("depthwiseConv2DDerInput")}depthwiseConv2DDerFilter(e,t,o){return Y("depthwiseConv2DDerFilter")}conv3d(e,t,o){return Y("conv3d")}conv3dDerInput(e,t,o){return Y("conv3dDerInput")}conv3dDerFilter(e,t,o){return Y("conv3dDerFilter")}maxPool(e,t){return Y("maxPool")}maxPoolBackprop(e,t,o,n){return Y("maxPoolBackprop")}avgPool(e,t){return Y("avgPool")}avgPoolBackprop(e,t,o){return Y("avgPoolBackprop")}avgPool3d(e,t){return Y("avgPool3d")}avgPool3dBackprop(e,t,o){return Y("avgPool3dBackprop")}maxPool3d(e,t){return Y("maxPool3d")}maxPool3dBackprop(e,t,o,n){return Y("maxPool3dBackprop")}reshape(e,t){return Y("reshape")}cast(e,t){return Y("cast")}tile(e,t){return Y("tile")}pad(e,t,o){return Y("pad")}transpose(e,t){return Y("transpose")}gather(e,t,o,n=0){return Y("gather")}gatherND(e,t){return Y("gatherND")}scatterND(e,t,o){return Y("scatterND")}batchToSpaceND(e,t,o){return Y("batchToSpaceND")}spaceToBatchND(e,t,o){return Y("spaceToBatchND")}resizeBilinear(e,t,o,n,s){return Y("resizeBilinear")}resizeBilinearBackprop(e,t,o){return Y("resizeBilinearBackprop")}resizeNearestNeighbor(e,t,o,n,s){return Y("resizeNearestNeighbor")}resizeNearestNeighborBackprop(e,t,o){return Y("resizeNearestNeighborBackprop")}batchNorm(e,t,o,n,s,a){return Y("batchNorm")}localResponseNormalization4D(e,t,o,n,s){return Y("localResponseNormalization4D")}LRNGrad(e,t,o,n,s,a,i){return Y("LRNGrad")}multinomial(e,t,o,n){return Y("multinomial")}oneHot(e,t,o,n){return Y("oneHot")}cumsum(e,t,o,n){return Y("cumsum")}nonMaxSuppression(e,t,o,n,s){return Y("nonMaxSuppression")}fft(e){return Y("fft")}ifft(e){return Y("ifft")}complex(e,t){return Y("complex")}real(e){return Y("real")}imag(e){return Y("imag")}cropAndResize(e,t,o,n,s,a){return Y("cropAndResize")}depthToSpace(e,t,o){return Y("depthToSpace")}split(e,t,o){return Y("split")}sparseToDense(e,t,o,n){return Y("sparseToDense")}diag(e){return Y("diag")}fill(e,t,o){return Y("fill")}onesLike(e){return Y("onesLike")}zerosLike(e){return Y("zerosLike")}linspace(e,t,o){return Y("linspace")}dispose(){return Y("dispose")}};function Y(r){throw new Error(`'${r}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}function DI(r){let e=r.length,t=0,o=0;for(;e>0;)o=Math.random()*e|0,e--,t=r[e],r[e]=r[o],r[o]=t}function Ac(r,e,t){return Math.max(r,Math.min(e,t))}function n3(r){return r%2==0?r:r+1}function s3(r){let e=0;for(let t=0;tt+` Shapes ${r} and ${e} must match`)}function Ro(r){E(r!=null,()=>"The input to the tensor constructor must be a non-null value.")}function ns(r,e=[],t=!1){if(e==null&&(e=[]),Array.isArray(r)||nr(r)&&!t)for(let o=0;o0,t){return new Promise((o,n)=>{let s=0,a=()=>{if(r()){o();return}s++;let i=e(s);if(t!=null&&s>=t){n();return}setTimeout(a,i)};a()})}function f3(r,e){let t=1,o=-1;for(let s=0;s=0)t*=r[s];else if(r[s]===-1){if(o!==-1)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${o} and dim ${s}`);o=s}else if(r[s]<0)throw Error(`Shapes can not be < 0. Found ${r[s]} at dim ${s}`);if(o===-1){if(e>0&&e!==t)throw Error(`Size(${e}) must match the product of shape ${r}`);return r}if(t===0)throw Error(`Cannot infer the missing size in [${r}] when there are 0 elements`);if(e%t!=0)throw Error(`The implicit shape can't be a fractional number. Got ${e} / ${t}`);let n=r.slice();return n[o]=e/t,n}function tr(r,e){let t=e.length;return r=r==null?e.map((o,n)=>n):[].concat(r),E(r.every(o=>o>=-t&&o`All values in axis param must be in range [-${t}, ${t}) but got axis ${r}`),E(r.every(o=>it(o)),()=>`All values in axis param must be integers but got axis ${r}`),r.map(o=>o<0?t+o:o)}function ib(r,e){let t=[],o=[],n=e!=null&&Array.isArray(e)&&e.length===0,s=e==null||n?null:tr(e,r).sort(),a=0;for(let i=0;ii)&&r[i]===1&&(t.push(r[i]),o.push(i)),s[a]<=i&&a++}r[i]!==1&&(t.push(r[i]),o.push(i))}return{newShape:t,keptDims:o}}function ab(r,e){let t=null;if(r==null||r==="float32")t=new Float32Array(e);else if(r==="int32")t=new Int32Array(e);else if(r==="bool")t=new Uint8Array(e);else throw new Error(`Unknown data type ${r}`);return t}function lb(r,e){let t=null;if(r==null||r==="float32")t=new Float32Array(e);else if(r==="int32")t=new Int32Array(e);else if(r==="bool")t=new Uint8Array(e);else if(r==="string")t=new Array(e);else throw new Error(`Unknown data type ${r}`);return t}function ub(r,e){for(let t=0;te+=t.length),e}function ss(r){return typeof r=="string"||r instanceof String}function $I(r){return typeof r=="boolean"}function RI(r){return typeof r=="number"}function Dc(r){return Array.isArray(r)?Dc(r[0]):r instanceof Float32Array?"float32":r instanceof Int32Array||r instanceof Uint8Array?"int32":RI(r)?"float32":ss(r)?"string":$I(r)?"bool":"float32"}function Gs(r){return!!(r&&r.constructor&&r.call&&r.apply)}function $c(r,e){for(let t=e;t=0;--o)t[o]=t[o+1]*r[o+1];return t}function FI(r,e,t){let o=new Array;if(e.length===1){let n=e[0];for(let s=0;si*l);for(let i=0;io*n);if(t===0)return[];if(t!==e.length)throw new Error(`[${r}] does not match the input size ${e.length}.`);return FI(0,r,e)}function cm(r,e){let t=Rc(r,e);for(let o=0;oo*n,1);if(e==null||e==="float32")return Gl(r,new Float32Array(t));if(e==="int32")return Gl(r,new Int32Array(t));if(e==="bool")return Gl(r,new Uint8Array(t));throw new Error(`Unknown data type ${e}`)}function pm(r){r.forEach(e=>{E(Number.isInteger(e)&&e>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${r}].`)})}function h3(r,e,t){if(e===0)return 0;if(e===1)return r[0];let o=r[r.length-1];for(let n=0;n{let[n,s]=o.split(":");this.urlFlags[n]=y3(n,s)})}};function x3(r){let e={};return r.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(t,...o)=>(b3(e,o[0],o[1]),o.join("="))),e}function b3(r,e,t){r[decodeURIComponent(e)]=decodeURIComponent(t||"")}function y3(r,e){if(e=e.toLowerCase(),e==="true"||e==="false")return e==="true";if(`${+e}`===e)return+e;throw new Error(`Could not parse value flag value ${e} for flag ${r}.`)}function W(){return db}var db=null;function PI(r){db=r}var hb;function gb(){if(hb==null){let r;if(typeof window!="undefined")r=window;else if(typeof global!="undefined")r=global;else if(typeof process!="undefined")r=process;else if(typeof self!="undefined")r=self;else throw new Error("Could not find a global object");hb=r}return hb}function _3(){let r=gb();return r._tfGlobals==null&&(r._tfGlobals=new Map),r._tfGlobals}function xb(r,e){let t=_3();if(t.has(r))return t.get(r);{let o=e();return t.set(r,o),t.get(r)}}var is="Abs",js="Acos",qs="Acosh",bo="Add",Ho="AddN",Ul="All",jl="Any",Ko="ArgMax",oa="ArgMin",Hs="Asin",Ks="Asinh",Xs="Atan",Ys="Atanh",Zs="Atan2",Xo="AvgPool",ql="AvgPoolGrad",na="AvgPool3D",Hl="AvgPool3DGrad",Yo="BatchMatMul",sa="BatchToSpaceND",Kl="Bincount",yb="BroadcastTo",Fo="Cast",Js="Ceil",Oo="ClipByValue",Xl="Complex",ia="ComplexAbs",as="Concat",Zo="Conv2D",Yl="Conv2DBackpropFilter",Jo="Conv2DBackpropInput",aa="Conv3D",Zl="Conv3DBackpropFilterV2",Jl="Conv3DBackpropInputV2",Qo="Cos",Qs="Cosh",en="Cumsum",ei="CropAndResize",Ql="DenseBincount",ti="DepthToSpace",tn="DepthwiseConv2dNative",eu="DepthwiseConv2dNativeBackpropFilter",tu="DepthwiseConv2dNativeBackpropInput",ru="Diag",la="Dilation2D",Fc="Dilation2DBackpropInput",Oc="Dilation2DBackpropFilter",rn="RealDiv",ri="Elu",ou="EluGrad",oi="Erf",ni="Equal",on="Exp",ls="ExpandDims",si="Expm1",nu="FFT",ua="Fill",ii="FlipLeftRight",nn="Floor",sn="FloorDiv",an="FusedBatchNorm",us="GatherV2",ai="GatherNd",li="Greater",ln="GreaterEqual",cs="Identity",su="IFFT",iu="Imag",ui="IsFinite",ci="IsInf",pi="IsNan",un="LeakyRelu",mi="Less",fi="LessEqual",au="LinSpace",cn="Log",di="Log1p",hi="LogicalAnd",Qa="LogicalNot",el="LogicalOr",bb="LogSoftmax",ca="LRN",lu="LRNGrad",pn="Max",mn="Maximum",fn="MaxPool",uu="MaxPoolGrad",pa="MaxPool3D",cu="MaxPool3DGrad",pu="MaxPoolWithArgmax",dn="Mean",hn="Min",gn="Minimum",ma="MirrorPad",gi="Mod",mu="Multinomial",xn="Multiply",ps="Neg",xi="NotEqual",yi="NonMaxSuppressionV3",bi="NonMaxSuppressionV4",_i="NonMaxSuppressionV5",ms="OnesLike",yn="OneHot",fs="Pack",bn="PadV2",w3="Pool",_n="Pow",wn="Prelu",wi="Prod",fa="Range",fu="Real",vi="Reciprocal",vn="Relu",ds="Reshape",da="ResizeNearestNeighbor",du="ResizeNearestNeighborGrad",kn="ResizeBilinear",hu="ResizeBilinearGrad",Cn="Relu6",In="Reverse",Nn="Round",Sn="Rsqrt",ki="ScatterNd",hs="Select",Ci="Selu",gs="Slice",Tn="Sin",Ii="Sinh",Ni="Sign",En="Sigmoid",Si="Softplus",An="Sqrt",Dn="Sum",ha="SpaceToBatchND",xs="SplitV",$n="Softmax",Rn="SquaredDifference",ga="Square",Fn="Sub",gu="SparseToDense",Ti="StridedSlice",Ei="Tan",On="Tanh",_o="Tile",Ai="TopK",Pn="Transpose",xu="Unique",ys="Unpack",xa="UnsortedSegmentSum",bs="ZerosLike",Di="Step",Pc="FromPixels",$i="RotateWithOffset",_s="_FusedMatMul",ws="FusedConv2D",vs="FusedDepthwiseConv2D";var Mc=xb("kernelRegistry",()=>new Map),fm=xb("gradRegistry",()=>new Map);function dm(r,e){let t=_b(r,e);return Mc.get(t)}function Bh(r){return fm.get(r)}function hm(r){let e=Mc.entries(),t=[];for(;;){let{done:o,value:n}=e.next();if(o)break;let[s,a]=n,[i]=s.split("_");i===r&&t.push(a)}return t}function tl(r){let{kernelName:e,backendName:t}=r,o=_b(e,t);Mc.has(o)&&console.warn(`The kernel '${e}' for backend '${t}' is already registered`),Mc.set(o,r)}function wb(r){let{kernelName:e}=r;fm.has(e)&&W().getBool("DEBUG")&&console.warn(`Overriding the gradient for '${e}'`),fm.set(e,r)}function v3(r,e){let t=_b(r,e);if(!Mc.has(t))throw new Error(`The kernel '${r}' for backend '${e}' is not registered`);Mc.delete(t)}function k3(r){if(!fm.has(r))throw new Error(`The gradient '${r}' for backend is not registered`);fm.delete(r)}function C3(r,e){hm(r).forEach(o=>{let n=Object.assign({},o,{backendName:e});tl(n)})}function _b(r,e){return`${e}_${r}`}var x={};et(x,{arraysEqual:()=>jr,assert:()=>E,assertNonNegativeIntegerDimensions:()=>pm,assertNonNull:()=>Ro,assertShapesMatch:()=>Ge,bytesFromStringArray:()=>fb,bytesPerElement:()=>mb,checkConversionForErrors:()=>ub,clamp:()=>Ac,computeStrides:()=>Us,createScalarValue:()=>I3,createShuffledIndices:()=>p3,decodeString:()=>zc,distSquared:()=>a3,encodeString:()=>rl,fetch:()=>S3,flatten:()=>ns,getArrayFromDType:()=>lb,getTypedArrayFromDType:()=>ab,hasEncodingLoss:()=>pb,indexToLoc:()=>g3,inferDtype:()=>Dc,inferFromImplicitShape:()=>f3,isBoolean:()=>$I,isFunction:()=>Gs,isInt:()=>it,isNumber:()=>RI,isPromise:()=>mm,isScalarShape:()=>l3,isString:()=>ss,isTypedArray:()=>nr,isValidDtype:()=>cb,locToIndex:()=>h3,makeOnesTypedArray:()=>cm,makeZerosNestedTypedArray:()=>d3,makeZerosTypedArray:()=>Rc,nearestDivisor:()=>$c,nearestLargerEven:()=>n3,now:()=>Vh,parseAxisParam:()=>tr,randUniform:()=>i3,repeatedTry:()=>m3,rightPad:()=>Wl,shuffle:()=>DI,sizeFromShape:()=>dt,sizeToSquarishShape:()=>c3,squeezeShape:()=>ib,sum:()=>s3,tanh:()=>u3,toNestedArray:()=>Gl,toTypedArray:()=>Lc});function I3(r,e){return e==="string"?rl(r):Lc([r],e)}function N3(r,e){return r instanceof Float32Array&&e==="float32"||r instanceof Int32Array&&e==="int32"||r instanceof Uint8Array&&e==="bool"}function Lc(r,e){if(e==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(r)&&(r=ns(r)),W().getBool("DEBUG")&&ub(r,e),N3(r,e))return r;if(e==null||e==="float32"||e==="complex64")return new Float32Array(r);if(e==="int32")return new Int32Array(r);if(e==="bool"){let t=new Uint8Array(r.length);for(let o=0;o{n=o()},a=this.backendTimer.time(s);if(W().getBool("CHECK_COMPUTATION_FOR_ERRORS"))for(let l=0;l{T3(c,u.dtype,e)})}return{kernelName:e,outputs:n,inputs:t,timeMs:a.then(l=>l.kernelMs),extraInfo:a.then(l=>l.getExtraProfileInfo!=null?l.getExtraProfileInfo():"")}}logKernelProfile(e){let{kernelName:t,outputs:o,timeMs:n,inputs:s,extraInfo:a}=e;o.forEach(i=>{Promise.all([i.data(),n,a]).then(l=>{this.logger.logKernelProfile(t,i,l[0],l[1],s,l[2])})})}};function T3(r,e,t){if(e!=="float32")return!1;for(let o=0;o0?h:""} `}}console.log(`%c${l} %c${i} %c${u}D ${p} %c${c} %c${m} %c${a}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}};function LI(r,e,t){let o={},n={};for(let l=0;lo[h.id]=!0),f=!0,n[u.id]=!0;break}if(f)break}}let s={};s[t.id]=!0;let a={};for(let l=r.length-1;l>=0;l--){let u=r[l],c=u.inputs;for(let p=0;p=0;n--){let s=e[n],a=[];if(s.outputs.forEach(l=>{let u=r[l.id];u!=null?a.push(u):a.push(null)}),s.gradient==null)throw new Error(`Cannot compute gradient: gradient function not found for ${s.kernelName}.`);let i=s.gradient(a);for(let l in s.inputs){if(!(l in i))throw new Error(`Cannot backprop through input ${l}. Available gradients found: ${Object.keys(i)}.`);let u=t(()=>i[l]());if(u.dtype!=="float32")throw new Error(`Error in gradient for op ${s.kernelName}. The gradient of input ${l} must have 'float32' dtype, but has '${u.dtype}'`);let c=s.inputs[l];if(!jr(u.shape,c.shape))throw new Error(`Error in gradient for op ${s.kernelName}. The gradient of input '${l}' has shape '${u.shape}', which does not match the shape of the input '${c.shape}'`);if(r[c.id]==null)r[c.id]=u;else{let p=r[c.id];r[c.id]=o(p,u),p.dispose()}}}}var BI=20,gm=3,kb=7;function VI(r,e,t,o){let n=Us(e),s=E3(r,e,t,n),a=e.length,i=Wh(r,e,t,n,s),l=["Tensor"];return o&&(l.push(` dtype: ${t}`),l.push(` rank: ${a}`),l.push(` shape: [${e}]`),l.push(" values:")),l.push(i.map(u=>" "+u).join(` +`)),l.join(` +`)}function E3(r,e,t,o){let n=dt(e),s=o[o.length-1],a=new Array(s).fill(0),i=e.length,l=t==="complex64"?ym(r):r;if(i>1)for(let u=0;uBI){let g=gm*a,y=Array.from(r.slice(0,g)),b=Array.from(r.slice((i-gm)*a,i*a));return t==="complex64"&&(y=ym(y),b=ym(b)),["["+y.map((_,w)=>xm(_,n[w],t)).join(", ")+", ..., "+b.map((_,w)=>xm(_,n[i-gm+w],t)).join(", ")+"]"]}let h=t==="complex64"?ym(r):Array.from(r);return["["+h.map((g,y)=>xm(g,n[y],t)).join(", ")+"]"]}let u=e.slice(1),c=o.slice(1),p=o[0]*a,m=[];if(i>BI){for(let h=0;h`Length of values '${n}' 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=o||lb(t,this.size),this.strides=Us(e)}set(e,...t){t.length===0&&(t=[0]),E(t.length===this.rank,()=>`The number of provided coordinates (${t.length}) must match the rank (${this.rank})`);let o=this.locToIndex(t);this.values[o]=e}get(...e){e.length===0&&(e=[0]);let t=0;for(let n of e){if(n<0||n>=this.shape[t]){let s=`Requested out of range element at ${e}. Buffer shape=${this.shape}`;throw new Error(s)}t++}let o=e[e.length-1];for(let n=0;nzc(o))}catch(o){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=Ri().readSync(this.dataId);if(this.dtype==="string")try{return e.map(t=>zc(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 Ri().read(this.dataId);return this.dtype==="string"?e:new Uint8Array(e.buffer)}dispose(){this.isDisposed||(Ri().disposeTensor(this),this.isDisposedInternal=!0)}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(e=!1){return Bc.print(this,e)}clone(){return this.throwIfDisposed(),Bc.clone(this)}toString(e=!1){let t=this.dataSync();return VI(t,this.shape,this.dtype,e)}cast(e){return this.throwIfDisposed(),Bc.cast(this,e)}variable(e=!0,t,o){return this.throwIfDisposed(),Ri().makeVariable(this,e,t,o)}};Object.defineProperty(R,Symbol.hasInstance,{value:r=>!!r&&r.data!=null&&r.dataSync!=null&&r.throwIfDisposed!=null});var ol=class extends R{constructor(e,t,o,n){super(e.shape,e.dtype,e.dataId,n);this.trainable=t,this.name=o}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(!jr(e.shape,this.shape))throw new Error(`shape of the new value (${e.shape}) and previous value (${this.shape}) must match`);Ri().disposeTensor(this),this.dataId=e.dataId,Ri().incRef(this,null)}dispose(){Ri().disposeVariable(this),this.isDisposedInternal=!0}};Object.defineProperty(ol,Symbol.hasInstance,{value:r=>r instanceof R&&r.assign!=null&&r.assign instanceof Function});var Mn={};et(Mn,{assertTypesMatch:()=>Eb,getTensorsInContainer:()=>bm,isTensorInList:()=>$3,makeTypesMatch:()=>Ue});var Cb;(function(r){r.R0="R0",r.R1="R1",r.R2="R2",r.R3="R3",r.R4="R4",r.R5="R5",r.R6="R6"})(Cb||(Cb={}));var Ib;(function(r){r.float32="float32",r.int32="int32",r.bool="int32",r.complex64="complex64"})(Ib||(Ib={}));var Nb;(function(r){r.float32="float32",r.int32="int32",r.bool="bool",r.complex64="complex64"})(Nb||(Nb={}));var Sb;(function(r){r.float32="float32",r.int32="float32",r.bool="float32",r.complex64="complex64"})(Sb||(Sb={}));var Tb;(function(r){r.float32="complex64",r.int32="complex64",r.bool="complex64",r.complex64="complex64"})(Tb||(Tb={}));var D3={float32:Sb,int32:Ib,bool:Nb,complex64:Tb};function fr(r,e){if(r==="string"||e==="string"){if(r==="string"&&e==="string")return"string";throw new Error(`Can not upcast ${r} with ${e}`)}return D3[r][e]}function yu(r){return fr(r,"int32")}function Ue(r,e){if(r.dtype===e.dtype)return[r,e];let t=fr(r.dtype,e.dtype);return[r.cast(t),e.cast(t)]}function Eb(r,e){E(r.dtype===e.dtype,()=>`The dtypes of the first(${r.dtype}) and second(${e.dtype}) input must match`)}function $3(r,e){return e.some(t=>t.id===r.id)}function bm(r){let e=[],t=new Set;return qI(r,e,t),e}function qI(r,e,t){if(r==null)return;if(r instanceof R){e.push(r);return}if(!R3(r))return;let o=r;for(let n in o){let s=o[n];t.has(s)||(t.add(s),qI(s,e,t))}}function R3(r){return Array.isArray(r)||typeof r=="object"}var Ab=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()}},bu=class{constructor(e){this.ENV=e,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new Ab}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){hm(e).forEach(o=>{o.disposeFunc!=null&&o.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 o=t.factory();if(o&&!(o instanceof Ws)&&typeof o.then=="function"){let n=++this.pendingBackendInitId,s=o.then(a=>n(nthis.registryFactory[t].priority-this.registryFactory[e].priority)}initializeBackendsAndReturnBest(){let e=this.getSortedBackends();for(let t=0;tthis.startScope(o),()=>this.endScope(n),()=>(n=t(),n instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),n))}scopedRun(e,t,o){e();try{let n=o();return t(),n}catch(n){throw t(),n}}nextTensorId(){return bu.nextTensorId++}nextVariableId(){return bu.nextVariableId++}clone(e){let t=this.makeTensorFromDataId(e.dataId,e.shape,e.dtype),o={x:e},n=a=>({x:()=>{let i="float32",l={x:a},u={dtype:i};return A.runKernelFunc(c=>c.cast(a,i),l,null,Fo,u)}}),s=[];return this.addTapeNode(this.state.activeScope.name,o,[t],n,s,{}),t}runKernel(e,t,o,n,s){let a=null,i=null;return this.runKernelFunc(a,t,i,e,o,n,s)}shouldCheckForMemLeaks(){return this.ENV.getBool("IS_TEST")}checkKernelForMemLeak(e,t,o){let n=this.backend.numDataIds(),s=0;o.forEach(l=>{s+=l.dtype==="complex64"?3:1});let a=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],i=n-t-s-a;if(i>0)throw new Error(`Backend '${this.backendName}' has an internal memory leak (${i} data ids) after running '${e}'`)}runKernelFunc(e,t,o,n,s,a,i){let l,u=[],c=this.isTapeOn();n==null&&(n=this.state.activeScope!=null?this.state.activeScope.name:"");let p=this.state.numBytes,m=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);let f;this.backendName==null&&this.backend;let d=dm(n,this.backendName),h;if(d!=null)f=()=>{let y=this.backend.numDataIds();h=d.kernelFunc({inputs:t,attrs:s,backend:this.backend});let b=Array.isArray(h)?h:[h];this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(n,y,b);let _=b.map(w=>{if(w.rank!=null)return w;let{dataId:k,shape:$,dtype:T}=w;return this.makeTensorFromDataId(k,$,T)});if(c){let w=this.getTensorsForGradient(n,t,_);if(w==null){i==null&&(i=[]);let k=_.filter(($,T)=>i[T]);w=(a||[]).slice().concat(k)}u=this.saveTensorsForBackwardMode(w)}return _};else{if(e==null)throw new Error(`Error running ${n}: Neither modular kernel nor forward func passed`);let y=b=>{!c||(u=b.map(_=>this.keep(this.clone(_))))};f=()=>{let b=this.backend.numDataIds();h=this.tidy(()=>e(this.backend,y));let _=Array.isArray(h)?h:[h];return this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(n,b,_),_}}let g;return this.scopedRun(()=>this.state.kernelDepth++,()=>this.state.kernelDepth--,()=>{!this.ENV.getBool("DEBUG")&&!this.state.profiling?l=f():(g=this.profiler.profileKernel(n,t,()=>f()),this.ENV.getBool("DEBUG")&&this.profiler.logKernelProfile(g),l=g.outputs)}),c&&this.addTapeNode(n,t,l,o,u,s),this.state.profiling&&this.state.activeProfile.kernels.push({name:n,bytesAdded:this.state.numBytes-p,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-m,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(t).map(y=>t[y]!=null?t[y].shape:null),outputShapes:l.map(y=>y.shape),kernelTimeMs:g.timeMs,extraInfo:g.extraInfo}),Array.isArray(h)?l:l[0]}saveTensorsForBackwardMode(e){return e.map(o=>this.keep(this.clone(o)))}getTensorsForGradient(e,t,o){let n=Bh(e);if(n!=null){let s=n.inputsToSave||[],a=n.outputsToSave||[],i;n.saveAllInputs?(E(Array.isArray(t),()=>"saveAllInputs is true, expected inputs to be an array."),i=Object.keys(t).map(u=>t[u])):i=s.map(u=>t[u]);let l=o.filter((u,c)=>a[c]);return i.concat(l)}return null}makeTensor(e,t,o,n){if(e==null)throw new Error("Values passed to engine.makeTensor() are null");o=o||"float32",n=n||this.backend;let s=e;o==="string"&&ss(e[0])&&(s=e.map(l=>rl(l)));let a=n.write(s,t,o),i=new R(t,o,a,this.nextTensorId());if(this.incRef(i,n),o==="string"){let l=this.state.tensorInfo.get(a),u=fb(s);this.state.numBytes+=u-l.bytes,l.bytes=u}return i}makeTensorFromDataId(e,t,o,n){o=o||"float32";let s=new R(t,o,e,this.nextTensorId());return this.incRef(s,n),s}makeVariable(e,t=!0,o,n){o=o||this.nextVariableId().toString(),n!=null&&n!==e.dtype&&(e=e.cast(n));let s=new ol(e,t,o,this.nextTensorId());if(this.state.registeredVariables[s.name]!=null)throw new Error(`Variable with name ${s.name} was already registered`);return this.state.registeredVariables[s.name]=s,this.incRef(s,this.backend),s}incRef(e,t){let o=this.state.tensorInfo.has(e.dataId)?this.state.tensorInfo.get(e.dataId).refCount:0;if(this.state.numTensors++,e.dtype==="string"&&this.state.numStringTensors++,o===0){this.state.numDataBuffers++;let n=0;e.dtype!=="complex64"&&e.dtype!=="string"&&(n=e.size*mb(e.dtype)),this.state.tensorInfo.set(e.dataId,{backend:t||this.backend,dtype:e.dtype,shape:e.shape,bytes:n,refCount:0}),this.state.numBytes+=n}this.state.tensorInfo.get(e.dataId).refCount++,e instanceof ol||this.track(e)}disposeTensor(e){if(!this.state.tensorInfo.has(e.dataId))return;this.state.numTensors--,e.dtype==="string"&&this.state.numStringTensors--;let t=this.state.tensorInfo.get(e.dataId);t.refCount<=1?(e.dtype!=="complex64"&&(this.state.numBytes-=t.bytes),this.state.numDataBuffers--,t.backend.disposeData(e.dataId),this.state.tensorInfo.delete(e.dataId)):this.state.tensorInfo.get(e.dataId).refCount--}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,o=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(n=>n.totalBytesSnapshot)),this.state.activeProfile.newBytes=this.state.numBytes-t,this.state.activeProfile.newTensors=this.state.numTensors-o;for(let n of this.state.activeProfile.kernels)n.kernelTimeMs=await n.kernelTimeMs,n.extraInfo=await n.extraInfo;return this.state.activeProfile}isTapeOn(){return this.state.gradientDepth>0&&this.state.kernelDepth===0}addTapeNode(e,t,o,n,s,a){let i={id:this.state.nextTapeNodeId++,kernelName:e,inputs:t,outputs:o,saved:s},l=Bh(e);l!=null&&(n=l.gradFunc),n!=null&&(i.gradient=u=>(u=u.map((c,p)=>{if(c==null){let m=o[p],f=Rc(m.size,m.dtype);return this.makeTensor(f,m.shape,m.dtype)}return c}),n(u.length>1?u:u[0],s,a))),this.state.activeTape.push(i)}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=bm(e),o=new Set(t.map(s=>s.id));for(let s=0;s{!s.kept&&s.scopeId===n.id&&this.track(s)})}gradients(e,t,o,n=!1){if(E(t.length>0,()=>"gradients() received an empty list of xs."),o!=null&&o.dtype!=="float32")throw new Error(`dy must have 'float32' dtype, but has '${o.dtype}'`);let s=this.scopedRun(()=>this.startTape(),()=>this.endTape(),()=>this.tidy("forward",e));E(s instanceof R,()=>"The result y returned by f() must be a tensor.");let a=LI(this.state.activeTape,t,s);if(!n&&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 i={};i[s.id]=o==null?F3(s.shape):o,zI(i,a,u=>this.tidy(u),O3);let l=t.map(u=>i[u.id]);return this.state.gradientDepth===0&&(this.state.activeTape.forEach(u=>{for(let c of u.saved)c.dispose()}),this.state.activeTape=null),{value:s,grads:l}})}customGrad(e){return E(Gs(e),()=>"The f passed in customGrad(f) must be a function."),(...t)=>{E(t.every(s=>s instanceof R),()=>"The args passed in customGrad(f)(x1, x2,...) must all be tensors");let o,n={};return t.forEach((s,a)=>{n[a]=s}),this.runKernelFunc((s,a)=>(o=e(...t,a),E(o.value instanceof R,()=>"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"),E(Gs(o.gradFunc),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."),o.value),n,(s,a)=>{let i=o.gradFunc(s,a),l=Array.isArray(i)?i:[i];E(l.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(...)."),E(l.every(c=>c instanceof R),()=>"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 u={};return l.forEach((c,p)=>{u[p]=()=>c}),u})}}readSync(e){return this.state.tensorInfo.get(e).backend.readSync(e)}read(e){return this.state.tensorInfo.get(e).backend.read(e)}async time(e){let t=Vh(),o=await this.backend.time(e);return o.wallMs=Vh()-t,o}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 Ab;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}};bu.nextTensorId=0;bu.nextVariableId=0;function F3(r){let e=cm(dt(r),"float32");return A.makeTensor(e,r,"float32")}function Db(){let r=gb();if(r._tfengine==null){let e=new zh(r);r._tfengine=new bu(e)}return PI(r._tfengine.ENV),GI(()=>r._tfengine),r._tfengine}var A=Db();function O3(r,e){let t={a:r,b:e};return A.runKernel(bo,t)}var Vc={};et(Vc,{isBrowser:()=>$b,isMobile:()=>M3});function P3(){return typeof navigator!="undefined"&&navigator!=null}function M3(){if(P3()){let r=navigator.userAgent||navigator.vendor||window.opera;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(r)||/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(r.substr(0,4))}return!1}function $b(){return typeof window!="undefined"&&window.document!=null||typeof WorkerGlobalScope!="undefined"}var Fi=W();Fi.registerFlag("DEBUG",()=>!1,r=>{r&&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.")});Fi.registerFlag("IS_BROWSER",()=>$b());Fi.registerFlag("IS_NODE",()=>typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined");Fi.registerFlag("IS_CHROME",()=>typeof navigator!="undefined"&&navigator!=null&&navigator.userAgent!=null&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor));Fi.registerFlag("PROD",()=>!1);Fi.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",()=>Fi.getBool("DEBUG"));Fi.registerFlag("DEPRECATION_WARNINGS_ENABLED",()=>!0);Fi.registerFlag("IS_TEST",()=>!1);Fi.registerFlag("CHECK_COMPUTATION_FOR_ERRORS",()=>!0);function kr(r,e){let t=r;if(nr(r))return e==="string"?[]:[r.length];if(!Array.isArray(r))return[];let o=[];for(;Array.isArray(t)||nr(t)&&e!=="string";)o.push(t.length),t=t[0];return Array.isArray(r)&&W().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&HI(r,o,[]),o}function HI(r,e,t){if(t=t||[],!Array.isArray(r)&&!nr(r)){E(e.length===0,()=>`Element arr[${t.join("][")}] is a primitive, but should be an array/TypedArray of ${e[0]} elements`);return}E(e.length>0,()=>`Element arr[${t.join("][")}] should be a primitive, but is an array of ${r.length} elements`),E(r.length===e[0],()=>`Element arr[${t.join("][")}] should have ${e[0]} elements, but has ${r.length} elements`);let o=e.slice(1);for(let n=0;n=0&&(n=o),KI(o,n,e,t),r==null||!nr(r)&&!Array.isArray(r)&&typeof r!="number"&&typeof r!="boolean"&&typeof r!="string"){let l=r==null?"null":r.constructor.name;throw new Error(`Argument '${e}' passed to '${t}' must be a Tensor or TensorLike, but got '${l}'`)}let s=kr(r,n);!nr(r)&&!Array.isArray(r)&&(r=[r]);let i=n!=="string"?Lc(r,n):ns(r,[],!0);return A.makeTensor(i,s,n)}function ya(r,e,t,o="numeric"){if(!Array.isArray(r))throw new Error(`Argument ${e} passed to ${t} must be a \`Tensor[]\` or \`TensorLike[]\``);return r.map((s,a)=>v(s,`${e}[${a}]`,t,o))}var XI="__op";function N(r){let e=Object.keys(r);if(e.length!==1)throw new Error(`Please provide an object with a single key (operation name) mapping to a function. Got an object with ${e.length} keys.`);let t=e[0],o=r[t];t.endsWith("_")&&(t=t.substring(0,t.length-1)),t=t+XI;let n=(...s)=>{A.startScope(t);try{let a=o(...s);return mm(a)&&console.error("Cannot return a Promise inside of tidy."),A.endScope(a),a}catch(a){throw A.endScope(null),a}};return Object.defineProperty(n,"name",{value:t,configurable:!0}),n}function L3(r,e){let t=v(r,"real","complex"),o=v(e,"imag","complex");Ge(t.shape,o.shape,`real and imag shapes, ${t.shape} and ${o.shape}, must match in call to tf.complex().`);let n={real:t,imag:o};return A.runKernel(Xl,n)}var wo=N({complex_:L3});function qr(r,e,t,o){if(o==null&&(o=Dc(r)),o==="complex64")throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(!nr(r)&&!Array.isArray(r)&&typeof r!="number"&&typeof r!="boolean"&&typeof r!="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(e!=null){pm(e);let n=dt(e),s=dt(t);E(n===s,()=>`Based on the provided shape, [${e}], the tensor should have ${n} values but has ${s}`);for(let a=0;a`Error creating a new Tensor. Inferred shape (${t}) does not match the provided shape (${e}). `)}}return!nr(r)&&!Array.isArray(r)&&(r=[r]),e=e||t,r=o!=="string"?Lc(r,o):ns(r,[],!0),A.makeTensor(r,e,o)}function Fr(r,e,t){let o=kr(r,t);return qr(r,e,o,t)}var _m={float32:4,float16:2,int32:4,uint16:2,uint8:1,bool:1,complex64:8};var Gh=4;async function YI(r,e){let t=[],o=[],n=Array.isArray(r)?r.map(a=>a.name):Object.keys(r);for(let a=0;a{let m=await l.bytes(),f=m.reduce((g,y)=>g+y.length,0)+Gh*m.length,d=new Uint8Array(f),h=0;for(let g=0;g{if(e+=s.byteLength,t.push(s.byteLength===s.buffer.byteLength?s:new s.constructor(s)),!(s instanceof Float32Array||s instanceof Int32Array||s instanceof Uint8Array))throw new Error(`Unsupported TypedArray subtype: ${s.constructor.name}`)});let o=new Uint8Array(e),n=0;return t.forEach(s=>{o.set(new Uint8Array(s.buffer),n),n+=s.byteLength}),o.buffer}var Rb=typeof Buffer!="undefined"&&(typeof Blob=="undefined"||typeof atob=="undefined"||typeof btoa=="undefined");function ZI(r){return Rb?Buffer.byteLength(r):new Blob([r]).size}function JI(r){if(Rb)return Buffer.from(r).toString("base64");let e=new Uint8Array(r),t="";for(let o=0,n=e.length;o{e+=n.byteLength});let t=new Uint8Array(e),o=0;return r.forEach(n=>{t.set(new Uint8Array(n),o),o+=n.byteLength}),t.buffer}function Fb(r){let e="/";for(r=r.trim();r.endsWith(e);)r=r.slice(0,r.length-1);let t=r.split(e);return t[t.length-1]}function Oi(r){if(r.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date,modelTopologyType:"JSON",modelTopologyBytes:r.modelTopology==null?0:ZI(JSON.stringify(r.modelTopology)),weightSpecsBytes:r.weightSpecs==null?0:ZI(JSON.stringify(r.weightSpecs)),weightDataBytes:r.weightData==null?0:r.weightData.byteLength}}function V3(){let r=t=>{let o=t<<13,n=0;for(;(o&8388608)==0;)n-=8388608,o<<=1;return o&=~8388608,n+=947912704,o|n},e=new Uint32Array(2048);e[0]=0;for(let t=1;t<1024;t++)e[t]=r(t);for(let t=1024;t<2048;t++)e[t]=939524096+(t-1024<<13);return e}function W3(){let r=new Uint32Array(64);r[0]=0,r[31]=1199570944,r[32]=2147483648,r[63]=3347054592;for(let e=1;e<31;e++)r[e]=e<<23;for(let e=33;e<63;e++)r[e]=2147483648+(e-32<<23);return r}function G3(){let r=new Uint32Array(64);for(let e=0;e<64;e++)r[e]=1024;return r[0]=r[32]=0,r}function B3(){let r=V3(),e=W3(),t=G3();return o=>{let n=new ArrayBuffer(4*o.length),s=new Uint32Array(n);for(let a=0;a>10]+(i&1023)]+e[i>>10];s[a]=l}return new Float32Array(n)}}var Tt=class{constructor(){this.saveRouters=[],this.loadRouters=[]}static getInstance(){return Tt.instance==null&&(Tt.instance=new Tt),Tt.instance}static registerSaveRouter(e){Tt.getInstance().saveRouters.push(e)}static registerLoadRouter(e){Tt.getInstance().loadRouters.push(e)}static getSaveHandlers(e){return Tt.getHandlers(e,"save")}static getLoadHandlers(e,t){return Tt.getHandlers(e,"load",t)}static getHandlers(e,t,o){let n=[];return(t==="load"?Tt.getInstance().loadRouters:Tt.getInstance().saveRouters).forEach(a=>{let i=a(e,o);i!==null&&n.push(i)}),n}},eN=r=>Tt.registerSaveRouter(r),tN=r=>Tt.registerLoadRouter(r),rN=r=>Tt.getSaveHandlers(r),oN=(r,e)=>Tt.getLoadHandlers(r,e);var Ob="tensorflowjs",Pb=1,_u="models_store",nl="model_info_store";function nN(){if(!W().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");let r=typeof window=="undefined"?self:window,e=r.indexedDB||r.mozIndexedDB||r.webkitIndexedDB||r.msIndexedDB||r.shimIndexedDB;if(e==null)throw new Error("The current browser does not appear to support IndexedDB.");return e}function Mb(r){let e=r.result;e.createObjectStore(_u,{keyPath:"modelPath"}),e.createObjectStore(nl,{keyPath:"modelPath"})}var ba=class{constructor(e){if(this.indexedDB=nN(),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((o,n)=>{let s=this.indexedDB.open(Ob,Pb);s.onupgradeneeded=()=>Mb(s),s.onsuccess=()=>{let a=s.result;if(t==null){let i=a.transaction(_u,"readonly"),u=i.objectStore(_u).get(this.modelPath);u.onsuccess=()=>{if(u.result==null)return a.close(),n(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`));o(u.result.modelArtifacts)},u.onerror=c=>(a.close(),n(u.error)),i.oncomplete=()=>a.close()}else{let i=Oi(t),l=a.transaction(nl,"readwrite"),u=l.objectStore(nl),c=u.put({modelPath:this.modelPath,modelArtifactsInfo:i}),p;c.onsuccess=()=>{p=a.transaction(_u,"readwrite");let f=p.objectStore(_u).put({modelPath:this.modelPath,modelArtifacts:t,modelArtifactsInfo:i});f.onsuccess=()=>o({modelArtifactsInfo:i}),f.onerror=d=>{u=l.objectStore(nl);let h=u.delete(this.modelPath);h.onsuccess=()=>(a.close(),n(f.error)),h.onerror=g=>(a.close(),n(f.error))}},c.onerror=m=>(a.close(),n(c.error)),l.oncomplete=()=>{p==null?a.close():p.oncomplete=()=>a.close()}}},s.onerror=a=>n(s.error)})}};ba.URL_SCHEME="indexeddb://";var sN=r=>W().getBool("IS_BROWSER")&&!Array.isArray(r)&&r.startsWith(ba.URL_SCHEME)?U3(r.slice(ba.URL_SCHEME.length)):null;Tt.registerSaveRouter(sN);Tt.registerLoadRouter(sN);function U3(r){return new ba(r)}function j3(r){return r.startsWith(ba.URL_SCHEME)?r.slice(ba.URL_SCHEME.length):r}var Lb=class{constructor(){this.indexedDB=nN()}async listModels(){return new Promise((e,t)=>{let o=this.indexedDB.open(Ob,Pb);o.onupgradeneeded=()=>Mb(o),o.onsuccess=()=>{let n=o.result,s=n.transaction(nl,"readonly"),i=s.objectStore(nl).getAll();i.onsuccess=()=>{let l={};for(let u of i.result)l[u.modelPath]=u.modelArtifactsInfo;e(l)},i.onerror=l=>(n.close(),t(i.error)),s.oncomplete=()=>n.close()},o.onerror=n=>t(o.error)})}async removeModel(e){return e=j3(e),new Promise((t,o)=>{let n=this.indexedDB.open(Ob,Pb);n.onupgradeneeded=()=>Mb(n),n.onsuccess=()=>{let s=n.result,a=s.transaction(nl,"readwrite"),i=a.objectStore(nl),l=i.get(e),u;l.onsuccess=()=>{if(l.result==null)return s.close(),o(new Error(`Cannot find model with path '${e}' in IndexedDB.`));{let c=i.delete(e),p=()=>{u=s.transaction(_u,"readwrite");let f=u.objectStore(_u).delete(e);f.onsuccess=()=>t(l.result.modelArtifactsInfo),f.onerror=d=>o(l.error)};c.onsuccess=p,c.onerror=m=>(p(),s.close(),o(l.error))}},l.onerror=c=>(s.close(),o(l.error)),a.oncomplete=()=>{u==null?s.close():u.oncomplete=()=>s.close()}},n.onerror=s=>o(n.error)})}};var _a="/",Gc="tensorflowjs_models",iN="info",q3="model_topology",H3="weight_specs",K3="weight_data",X3="model_metadata";function aN(r){return{info:[Gc,r,iN].join(_a),topology:[Gc,r,q3].join(_a),weightSpecs:[Gc,r,H3].join(_a),weightData:[Gc,r,K3].join(_a),modelMetadata:[Gc,r,X3].join(_a)}}function Y3(r){let e=r.split(_a);if(e.length<3)throw new Error(`Invalid key format: ${r}`);return e.slice(1,e.length-1).join(_a)}function Z3(r){return r.startsWith(wa.URL_SCHEME)?r.slice(wa.URL_SCHEME.length):r}var wa=class{constructor(e){if(!W().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=aN(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),o=JSON.stringify(e.weightSpecs),n=Oi(e);try{this.LS.setItem(this.keys.info,JSON.stringify(n)),this.LS.setItem(this.keys.topology,t),this.LS.setItem(this.keys.weightSpecs,o),this.LS.setItem(this.keys.weightData,JI(e.weightData));let s={format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy};return e.signature!=null&&(s.signature=e.signature),e.userDefinedMetadata!=null&&(s.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(s.modelInitializer=e.modelInitializer),this.LS.setItem(this.keys.modelMetadata,JSON.stringify(s)),{modelArtifactsInfo:n}}catch(s){throw this.LS.removeItem(this.keys.info),this.LS.removeItem(this.keys.topology),this.LS.removeItem(this.keys.weightSpecs),this.LS.removeItem(this.keys.weightData),this.LS.removeItem(this.keys.modelMetadata),new Error(`Failed to save model '${this.modelPath}' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes=${n.modelTopologyBytes}, weightSpecsBytes=${n.weightSpecsBytes}, weightDataBytes=${n.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={},o=JSON.parse(this.LS.getItem(this.keys.topology));if(o==null)throw new Error(`In local storage, the topology of model '${this.modelPath}' is missing.`);t.modelTopology=o;let n=JSON.parse(this.LS.getItem(this.keys.weightSpecs));if(n==null)throw new Error(`In local storage, the weight specs of model '${this.modelPath}' are missing.`);t.weightSpecs=n;let s=this.LS.getItem(this.keys.modelMetadata);if(s!=null){let i=JSON.parse(s);t.format=i.format,t.generatedBy=i.generatedBy,t.convertedBy=i.convertedBy,i.signature!=null&&(t.signature=i.signature),i.userDefinedMetadata!=null&&(t.userDefinedMetadata=i.userDefinedMetadata),i.modelInitializer!=null&&(t.modelInitializer=i.modelInitializer)}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=QI(a),t}};wa.URL_SCHEME="localstorage://";var lN=r=>W().getBool("IS_BROWSER")&&!Array.isArray(r)&&r.startsWith(wa.URL_SCHEME)?J3(r.slice(wa.URL_SCHEME.length)):null;Tt.registerSaveRouter(lN);Tt.registerLoadRouter(lN);function J3(r){return new wa(r)}var zb=class{constructor(){E(W().getBool("IS_BROWSER"),()=>"Current environment is not a web browser"),E(typeof window=="undefined"||typeof window.localStorage!="undefined",()=>"Current browser does not appear to support localStorage"),this.LS=window.localStorage}async listModels(){let e={},t=Gc+_a,o=_a+iN;for(let n=0;n"scheme must not be undefined or null."),e.endsWith(Uc)&&(e=e.slice(0,e.indexOf(Uc))),E(e.length>0,()=>"scheme must not be an empty string.");let o=Hr.getInstance();E(o.managers[e]==null,()=>`A model store manager is already registered for scheme '${e}'.`),o.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 jh(r){if(r.indexOf(Uc)===-1)throw new Error(`The url string provided does not contain a scheme. Supported schemes are: ${Hr.getSchemes().join(",")}`);return{scheme:r.split(Uc)[0],path:r.split(Uc)[1]}}async function uN(r,e,t=!1){E(r!==e,()=>`Old path and new path are the same: '${r}'`);let o=Tt.getLoadHandlers(r);E(o.length>0,()=>`Copying failed because no load handler is found for source URL ${r}.`),E(o.length<2,()=>`Copying failed because more than one (${o.length}) load handlers for source URL ${r}.`);let n=o[0],s=Tt.getSaveHandlers(e);E(s.length>0,()=>`Copying failed because no save handler is found for destination URL ${e}.`),E(s.length<2,()=>`Copying failed because more than one (${o.length}) save handlers for destination URL ${e}.`);let a=s[0],i=jh(r).scheme,l=jh(r).path,u=i===jh(r).scheme,c=await n.load();t&&u&&await Hr.getManager(i).removeModel(l);let p=await a.save(c);return t&&!u&&await Hr.getManager(i).removeModel(l),p.modelArtifactsInfo}async function cN(){let r=Hr.getSchemes(),e={};for(let t of r){let o=await Hr.getManager(t).listModels();for(let n in o){let s=t+Uc+n;e[s]=o[n]}}return e}async function pN(r){let e=jh(r);return Hr.getManager(e.scheme).removeModel(e.path)}async function mN(r,e){return uN(r,e,!1)}async function fN(r,e){return uN(r,e,!0)}var dN=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(W().get("IS_BROWSER")){W().setPlatform("browser",new dN);try{Hr.registerManager(wa.URL_SCHEME,new zb)}catch(r){}try{Hr.registerManager(ba.URL_SCHEME,new Lb)}catch(r){}}var Q3={importFetch:()=>hN()},Bb;var gN=class{constructor(){this.util=require("util"),this.textEncoder=new this.util.TextEncoder}fetch(e,t){return W().global.fetch!=null?W().global.fetch(e,t):(Bb==null&&(Bb=Q3.importFetch()),Bb(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)}};W().get("IS_NODE")&&W().setPlatform("node",new gN);function Ie(r,e="float32",t){return e=e||"float32",pm(r),new ct(r,e,t)}function eV(r,e){let t=v(r,"x","cast");if(!cb(e))throw new Error(`Failed to cast to unknown dtype ${e}`);if(e==="string"&&t.dtype!=="string"||e!=="string"&&t.dtype==="string")throw new Error("Only strings can be casted to strings");let o={x:t},n={dtype:e};return A.runKernel(Fo,o,n)}var ne=N({cast_:eV});function tV(r){let t={x:v(r,"x","clone","string_or_numeric")};return A.runKernel(cs,t)}var Po=N({clone_:tV});function Vb(r,e=!1){console.log(r.toString(e))}Db();var rV={buffer:Ie,cast:ne,clone:Po,print:Vb};UI(rV);var Cr={};et(Cr,{browserFiles:()=>bN,browserHTTPRequest:()=>vN,concatenateArrayBuffers:()=>Wc,copyModel:()=>mN,decodeWeights:()=>Uh,encodeWeights:()=>YI,fromMemory:()=>CN,getLoadHandlers:()=>oN,getModelArtifactsInfoForJSON:()=>Oi,getSaveHandlers:()=>rN,http:()=>Kh,isHTTPScheme:()=>Hh,listModels:()=>cN,loadWeights:()=>_N,moveModel:()=>fN,registerLoadRouter:()=>tN,registerSaveRouter:()=>eN,removeModel:()=>pN,weightsLoaderFactory:()=>Ub,withSaveHandler:()=>IN});var oV="model",nV=".json",sV=".weights.bin";function xN(r){return new Promise(e=>setTimeout(e)).then(r)}var sl=class{constructor(e){if(!W().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");e.startsWith(sl.URL_SCHEME)&&(e=e.slice(sl.URL_SCHEME.length)),(e==null||e.length===0)&&(e=oV),this.modelTopologyFileName=e+nV,this.weightDataFileName=e+sV}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 o=[{paths:["./"+this.weightDataFileName],weights:e.weightSpecs}],n={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,weightsManifest:o};e.signature!=null&&(n.signature=e.signature),e.userDefinedMetadata!=null&&(n.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(n.modelInitializer=e.modelInitializer);let s=window.URL.createObjectURL(new Blob([JSON.stringify(n)],{type:"application/json"})),a=this.jsonAnchor==null?document.createElement("a"):this.jsonAnchor;if(a.download=this.modelTopologyFileName,a.href=s,await xN(()=>a.dispatchEvent(new MouseEvent("click"))),e.weightData!=null){let i=this.weightDataAnchor==null?document.createElement("a"):this.weightDataAnchor;i.download=this.weightDataFileName,i.href=t,await xN(()=>i.dispatchEvent(new MouseEvent("click")))}return{modelArtifactsInfo:Oi(e)}}}};sl.URL_SCHEME="downloads://";var yN=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.files=e}async load(){let e=this.files[0],t=this.files.slice(1);return new Promise((o,n)=>{let s=new FileReader;s.onload=a=>{let i=JSON.parse(a.target.result),l=i.modelTopology;if(l==null){n(new Error(`modelTopology field is missing from file ${e.name}`));return}t.length===0&&o({modelTopology:l});let u=i.weightsManifest;if(u==null){n(new Error(`weightManifest field is missing from file ${e.name}`));return}let c;try{c=this.checkManifestAndWeightFiles(u,t)}catch(d){n(d);return}let p=[],m=[],f=[];u.forEach(d=>{d.paths.forEach(h=>{m.push(h),f.push(null)}),p.push(...d.weights)}),u.forEach(d=>{d.paths.forEach(h=>{let g=new FileReader;g.onload=y=>{let b=y.target.result,_=m.indexOf(h);if(f[_]=b,f.indexOf(null)===-1){let w={modelTopology:l,weightSpecs:p,weightData:Wc(f),format:i.format,generatedBy:i.generatedBy,convertedBy:i.convertedBy};i.signature!=null&&(w.signature=i.signature),i.userDefinedMetadata!=null&&(w.userDefinedMetadata=i.userDefinedMetadata),i.modelInitializer!=null&&(w.modelInitializer=i.modelInitializer),o(w)}},g.onerror=y=>n(`Failed to weights data from file of path '${h}'.`),g.readAsArrayBuffer(c[h])})})},s.onerror=a=>n(`Failed to read model topology and weights manifest JSON from file '${e.name}'. BrowserFiles supports loading Keras-style tf.Model artifacts only.`),s.readAsText(e)})}checkManifestAndWeightFiles(e,t){let o=[],n=t.map(a=>Fb(a.name)),s={};for(let a of e)a.paths.forEach(i=>{let l=Fb(i);if(o.indexOf(l)!==-1)throw new Error(`Duplicate file basename found in weights manifest: '${l}'`);if(o.push(l),n.indexOf(l)===-1)throw new Error(`Weight file with basename '${l}' is not provided.`);s[i]=t[n.indexOf(l)]});if(o.length!==t.length)throw new Error(`Mismatch in the number of files in weights manifest (${o.length}) and the number of weight files provided (${t.length}).`);return s}},aV=r=>W().getBool("IS_BROWSER")&&!Array.isArray(r)&&r.startsWith(sl.URL_SCHEME)?iV(r.slice(sl.URL_SCHEME.length)):null;Tt.registerSaveRouter(aV);function iV(r="model"){return new sl(r)}function bN(r){return new yN(r)}function Wb(r,e,t,o){a(r),t=t==null?0:t,o=o==null?1:o,i(t,o);let n=0,s=l=>(l.then(u=>{let c=t+ ++n/r.length*(o-t);return e(c),u}),l);function a(l){E(l!=null&&Array.isArray(l)&&l.length>0,()=>"promises must be a none empty array")}function i(l,u){E(l>=0&&l<=1,()=>`Progress fraction must be in range [0, 1], but got startFraction ${l}`),E(u>=0&&u<=1,()=>`Progress fraction must be in range [0, 1], but got endFraction ${u}`),E(u>=l,()=>`startFraction must be no more than endFraction, but got startFraction ${l} and endFraction ${u}`)}return Promise.all(r.map(s))}async function Gb(r,e){e==null&&(e={});let t=e.fetchFunc==null?W().platform.fetch:e.fetchFunc,o=r.map(p=>t(p,e.requestInit,{isBinary:!0})),n=0,s=.5,i=(e.onProgress==null?await Promise.all(o):await Wb(o,e.onProgress,n,s)).map(p=>p.arrayBuffer()),l=.5,u=1;return e.onProgress==null?await Promise.all(i):await Wb(i,e.onProgress,l,u)}async function _N(r,e="",t,o){return Ub(a=>Gb(a,{requestInit:o}))(r,e,t)}function Ub(r){return async(e,t="",o)=>{let n=e.map(()=>!1),s={},a=o!=null?o.map(()=>!1):[],i=[];if(e.forEach((f,d)=>{let h=0;f.weights.forEach(g=>{let y="quantization"in g?g.quantization.dtype:g.dtype,b=_m[y]*dt(g.shape),_=()=>{n[d]=!0,s[d]==null&&(s[d]=[]),s[d].push({manifestEntry:g,groupOffset:h,sizeBytes:b})};o!=null?o.forEach((w,k)=>{w===g.name&&(_(),a[k]=!0)}):_(),i.push(g.name),h+=b})}),!a.every(f=>f)){let f=o.filter((d,h)=>!a[h]);throw new Error(`Could not find weights in manifest with names: ${f.join(", ")}. +Manifest JSON has weights with names: ${i.join(", ")}.`)}let l=n.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 w=0;w{let k=g.slice(w.groupOffset,w.groupOffset+w.sizeBytes),$=Uh(k,[w.manifestEntry]);for(let T in $)p[T]=$[T]}),m+=d}),p}}var lV="application/octet-stream",uV="application/json",qh=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,()=>`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 o=[{paths:["./model.weights.bin"],weights:e.weightSpecs}],n={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,weightsManifest:o};e.signature!=null&&(n.signature=e.signature),e.userDefinedMetadata!=null&&(n.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(n.modelInitializer=e.modelInitializer),t.body.append("model.json",new Blob([JSON.stringify(n)],{type:uV}),"model.json"),e.weightData!=null&&t.body.append("model.weights.bin",new Blob([e.weightData],{type:lV}),"model.weights.bin");let s=await this.fetch(this.path,t);if(s.ok)return{modelArtifactsInfo:Oi(e),responses:[s]};throw new Error(`BrowserHTTPRequest.save() failed due to HTTP response status ${s.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(d){let h=`Failed to parse model JSON of response from ${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 o=t.modelTopology,n=t.weightsManifest,s=t.generatedBy,a=t.convertedBy,i=t.format,l=t.signature,u=t.userDefinedMetadata;if(o==null&&n==null)throw new Error(`The JSON from HTTP path ${this.path} contains neither model topology or manifest for weights.`);let c,p;n!=null&&([c,p]=await this.loadWeights(n));let m={modelTopology:o,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,[o,n]=cV(t),s=this.weightPathPrefix||o,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+n);this.weightUrlConverter&&i.push(...await Promise.all(l));let u=await Gb(i,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress});return[a,Wc(u)]}};qh.URL_SCHEME_REGEX=/^https?:\/\//;function cV(r){let e=r.lastIndexOf("/"),t=r.lastIndexOf("?"),o=r.substring(0,e),n=t>e?r.substring(t):"";return[o+"/",n]}function Hh(r){return r.match(qh.URL_SCHEME_REGEX)!=null}var wN=(r,e)=>{if(typeof fetch=="undefined"&&(e==null||e.fetchFunc==null))return null;{let t=!0;if(Array.isArray(r)?t=r.every(o=>Hh(o)):t=Hh(r),t)return Kh(r,e)}return null};Tt.registerSaveRouter(wN);Tt.registerLoadRouter(wN);function Kh(r,e){return new qh(r,e)}function vN(r,e){return Kh(r,e)}var Xh=class{constructor(e){this.modelArtifacts=e}async load(){return this.modelArtifacts}},kN=class{constructor(e){this.saveHandler=e}async save(e){return this.saveHandler(e)}};function CN(r,e,t,o){return arguments.length===1?r.modelTopology!=null||r.weightSpecs!=null?new Xh(r):(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 Xh({modelTopology:r})):(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 Xh({modelTopology:r,weightSpecs:e,weightData:t,trainingConfig:o}))}function IN(r){return new kN(r)}var NN={};et(NN,{confusionMatrix:()=>hV});function pV(r,e,t=!1,o=!1){let n=v(r,"a","matMul"),s=v(e,"b","matMul");[n,s]=Ue(n,s);let a={a:n,b:s},i={transposeA:t,transposeB:o};return A.runKernel(Yo,a,i)}var je=N({matMul_:pV});function mV(r,e,t=1,o=0){if(e<2)throw new Error(`Error in oneHot: depth must be >=2, but it is ${e}`);let s={indices:v(r,"indices","oneHot","int32")},a={depth:e,onValue:t,offValue:o};return A.runKernel(yn,s,a)}var ks=N({oneHot_:mV});function fV(r,e){let t=v(r,"x","transpose");if(e==null&&(e=t.shape.map((s,a)=>a).reverse()),E(t.rank===e.length,()=>`Error in transpose: rank of input ${t.rank} must match length of perm ${e}.`),e.forEach(s=>{E(s>=0&&s`All entries in 'perm' must be between 0 and ${t.rank-1} but got ${e}`)}),t.rank<=1)return t.clone();let o={x:t},n={perm:e};return A.runKernel(Pn,o,n)}var qe=N({transpose_:fV});function dV(r,e,t){let o=v(r,"labels","confusionMatrix"),n=v(e,"predictions","confusionMatrix");E(t==null||t>0&&Number.isInteger(t),()=>`If provided, numClasses must be a positive integer, but got ${t}`),E(o.rank===1,()=>`Expected the rank of labels to be 1, but got ${o.rank}`),E(n.rank===1,()=>`Expected the rank of predictions to be 1, but got ${n.rank}`),E(o.shape[0]===n.shape[0],()=>`Mismatch in the number of examples: ${o.shape[0]} vs. ${n.shape[0]}. Labels and predictions should have the same number of elements.`),E(t>0&&Number.isInteger(t),()=>`numClasses is required to be a positive integer, but got ${t}`);let s=ks(ne(o,"int32"),t),a=ks(ne(n,"int32"),t),i=qe(s),l=je(i,a);return ne(l,"int32")}var hV=N({confusionMatrix_:dV});var Yh={};et(Yh,{fromPixels:()=>yV,toPixels:()=>xV});function jb(r,e,t){if(Ro(r),e!=null&&e.length!==3)throw new Error("tensor3d() requires shape to have three numbers");let o=kr(r,t);if(o.length!==3&&o.length!==1)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(o.length===1&&e==null)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return qr(r,e,o,t)}var jc;function gV(r,e=3){if(e>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(r==null)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");let t=!1,o=!1,n=!1,s=!1,a=!1,i=!1;if(r.data instanceof Uint8Array)t=!0;else if(typeof ImageData!="undefined"&&r instanceof ImageData)o=!0;else if(typeof HTMLVideoElement!="undefined"&&r instanceof HTMLVideoElement)n=!0;else if(typeof HTMLImageElement!="undefined"&&r instanceof HTMLImageElement)s=!0;else if(r.getContext!=null)a=!0;else if(typeof ImageBitmap!="undefined"&&r 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 ${r.constructor.name}`);if(n){let d=2;if(n&&r.readyState element.")}if(dm(Pc,A.backendName)!=null){let d={pixels:r},h={numChannels:e};return A.runKernel(Pc,d,h)}let[u,c]=n?[r.videoWidth,r.videoHeight]:[r.width,r.height],p;a?p=r.getContext("2d").getImageData(0,0,u,c).data:o||t?p=r.data:(s||n||i)&&(jc==null&&(jc=document.createElement("canvas").getContext("2d")),jc.canvas.width=u,jc.canvas.height=c,jc.drawImage(r,0,0,u,c),p=jc.getImageData(0,0,u,c).data);let m;if(e===4)m=new Int32Array(p);else{let d=u*c;m=new Int32Array(d*e);for(let h=0;h4||s===2)throw new Error(`toPixels only supports depth of size 1, 3 or 4 but got ${s}`);if(t.dtype!=="float32"&&t.dtype!=="int32")throw new Error(`Unsupported type for toPixels: ${t.dtype}. Please use float32 or int32 tensors.`);let a=await t.data(),i=t.dtype==="float32"?255:1,l=new Uint8ClampedArray(n*o*4);for(let u=0;u1)throw new Error(`Tensor values for a float32 Tensor must be in the range [0 - 1] but encountered ${f}.`)}else if(t.dtype==="int32"&&(f<0||f>255))throw new Error(`Tensor values for a int32 Tensor must be in the range [0 - 255] but encountered ${f}.`);s===1?(c[0]=f*i,c[1]=f*i,c[2]=f*i):c[m]=f*i}let p=u*4;l[p+0]=Math.round(c[0]),l[p+1]=Math.round(c[1]),l[p+2]=Math.round(c[2]),l[p+3]=Math.round(c[3])}if(e!=null){e.width=n,e.height=o;let u=e.getContext("2d"),c=new ImageData(l,n,o);u.putImageData(c,0,0)}return t!==r&&t.dispose(),l}var yV=N({fromPixels_:gV});var Zh={};et(Zh,{prepareAndValidate:()=>SN});function SN(r,e){let t=r.shape.length,o=e.shape.length;if(t<1)throw new Error(`tf.gatherND() expects the input to be rank 1 or higher, but the rank was ${t}.`);if(o<1)throw new Error(`tf.gatherND() expects the indices to be rank 1 or higher, but the rank was ${o}.`);if(e.dtype!=="int32")throw new Error(`tf.gatherND() expects the indices to be int32 type, but the dtype was ${e.dtype}.`);if(e.shape[o-1]>t)throw new Error(`index innermost dimension length must be <= tensor rank; saw: ${e.shape[o-1]} vs. ${t}`);if(dt(r.shape)===0)throw new Error(`Requested more than 0 entries, but input is empty. Input shape: ${r.shape}.`);let n=e.shape,s=n[n.length-1],a=1;for(let p=0;pp/u),1].slice(0,s);return[l,a,u,c]}var Jh={};et(Jh,{calculateShapes:()=>TN,validateInput:()=>Qh,validateUpdateShape:()=>qb});function qb(r,e,t){let o=e.rank>1?e.shape[e.rank-1]:1,n=e.rank>1?e.rank-1:1,s=`Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: ${t.shape}, indices.shape: ${e.shape}, shape: ${r}, sliceDim: ${o}, and batchDim: ${n}.`;if(t.rank1?e.shape[o-1]:1,s=t.length,a=1;for(let p=n;pbV,computeFlatOffset:()=>wV,computeOutShape:()=>EN,getNormalizedAxes:()=>LN,isSliceContinous:()=>_V,maskToAxes:()=>eg,parseSliceParams:()=>Hb,sliceInfo:()=>vV,startForAxis:()=>PN,startIndicesWithElidedDims:()=>RN,stopForAxis:()=>MN,stopIndicesWithElidedDims:()=>FN,stridesForAxis:()=>ON,stridesWithElidedDims:()=>AN});function bV(r,e,t){let o=r.shape.length;E(o===e.length,()=>`Error in slice${o}D: Length of begin ${e} must match the rank of the array (${o}).`),E(o===t.length,()=>`Error in slice${o}D: Length of size ${t} must match the rank of the array (${o}).`);for(let n=0;n`Error in slice${o}D: begin[${n}] + size[${n}] (${e[n]+t[n]}) would overflow input.shape[${n}] (${r.shape[n]})`)}function eg(r){let e=[],t=0;for(;r>0;)r&1&&e.push(t),r/=2,t++;return e}function EN(r,e,t){let o=[];for(let n=0;n0){let f=e[0],d=t+1;c=RN(a,f,d,o,r),p=FN(i,f,d,n,r),m=AN(s,f,d,r)}else for(let f=0;f-1)s[i]=0;else{let l=DN(e,t,i),u=o[l];r&1<-1)s[i]=Number.MAX_SAFE_INTEGER;else{let l=DN(e,t,i),u=o[l];r&1<0?a=Number.MIN_SAFE_INTEGER:a=Number.MAX_SAFE_INTEGER);let l=o[n];return a<0&&(a+=l),a=Ac(0,a,l-1),a}function MN(r,e,t,o,n,s){let a=e[n],i=t[n]||1;(r&1<0?a=Number.MAX_SAFE_INTEGER:a=Number.MIN_SAFE_INTEGER);let l=o[n];return a<0&&(a+=l),i>0?a=Ac(0,a,l):a=Ac(-1,a,l-1),a}function _V(r,e,t){let o=t.length;for(let n=0;n1){o=n;break}for(let n=o+1;n0||t[n]!==r[n])return!1;return!0}function wV(r,e){let t=r.length>0?r[r.length-1]:1;for(let o=0;o{E(a!==-1,()=>"slice() does not support negative begin indexing.")});let s;return t==null?s=new Array(n).fill(-1):typeof t=="number"?s=[t,...new Array(n-1).fill(-1)]:t.lengtha>=0?a:(E(a===-1,()=>`Negative size values should be exactly -1 but got ${a} for the slice() size at index ${i}.`),r.shape[i]-o[i])),[o,s]}function vV(r,e,t,o,n,s,a,i,l){let u=e.slice(),c=t.slice(),p=o;o==null&&(p=new Array(u.length));let m=eg(a);if(m.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(a!==0&&i!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(a!==0&&l!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let f=r.length-u.length,d=eg(i),h=r.slice();d.forEach(T=>{u[T]=0,c[T]=1,h.splice(T,0,1)});let{begin:g,end:y,strides:b}=LN(h,m,f,u,c,p,n,s,a);u=g,c=y,p=b;let _=eg(l);_.forEach(T=>{c[T]=u[T]+1,p[T]=1});let w=EN(u,c,p),k=w.filter((T,F)=>_.indexOf(F)===-1);return{nonStrided:p.every(T=>T===1),$begin:u,$end:c,$strides:p,size:w,newShape:h,outShape:k}}var te={};et(te,{Serializable:()=>tg,SerializationMap:()=>va,registerClass:()=>oo});var tg=class{getClassName(){return this.constructor.className}static fromConfig(e,t){return new e(t)}},va=class{constructor(){this.classNameMap={}}static getMap(){return va.instance==null&&(va.instance=new va),va.instance}static register(e){va.getMap().classNameMap[e.className]=[e,e.fromConfig]}};function oo(r){E(r.className!=null,()=>"Class being registered does not have the static className property defined."),E(typeof r.className=="string",()=>"className is required to be a string, but got type "+typeof r.className),E(r.className.length>0,()=>"Class being registered has an empty-string as its className, which is disallowed."),va.register(r)}var zN={};et(zN,{TEST_EPSILON_FLOAT16:()=>BN,encodeStrings:()=>VN,expectArrayBuffersEqual:()=>EV,expectArraysClose:()=>CV,expectArraysEqual:()=>NV,expectNumbersClose:()=>SV,expectPromiseToFail:()=>IV,expectValuesInRange:()=>TV,testEpsilon:()=>Kb});var kV=.001,BN=.1;function CV(r,e,t){return t==null&&(t=Kb()),Xb(r,e,(o,n)=>Yb(o,n,t))}function Kb(){return A.backend.floatPrecision()===32?kV:BN}function Xb(r,e,t){let o=!0;if((nr(r)||nr(e))&&(o=!1),nr(r)&&nr(e)&&(o=!0),o){let a=r.constructor.name,i=e.constructor.name;if(a!==i)throw new Error(`Arrays are of different type. Actual: ${a}. Expected: ${i}`)}if(Array.isArray(r)&&Array.isArray(e)){let a=kr(r),i=kr(e);if(!jr(a,i))throw new Error(`Arrays have different shapes. Actual: [${a}]. Expected: [${i}]`)}let n=nr(r)?r:ns(r),s=nr(e)?e:ns(e);if(n.length!==s.length)throw new Error(`Arrays have different lengths actual: ${n.length} vs expected: ${s.length}. +Actual: ${n}. +Expected: ${s}.`);for(let a=0;ae.fail(),()=>e())}function NV(r,e){let t=typeof e=="string"||typeof e=="number"||typeof e=="boolean"?[e]:e;return ss(r)||ss(r[0])||ss(e)||ss(e[0])?Xb(r,t,(o,n)=>o==n):Xb(r,e,(o,n)=>Yb(o,n,0))}function SV(r,e,t){if(t==null&&(t=Kb()),!Yb(r,e,t))throw new Error(`Numbers differ: actual === ${r}, expected === ${e}`)}function Yb(r,e,t){return!isFinite(r)&&!isFinite(e)?!0:!(isNaN(r)||isNaN(e)||Math.abs(r-e)>t)}function TV(r,e,t){for(let o=0;ot)throw new Error(`Value out of range:${r[o]} low: ${e}, high: ${t}`)}function EV(r,e){expect(new Float32Array(r)).toEqual(new Float32Array(e))}function VN(r){for(let e=0;et.dispose())}function Dt(r){return A.keep(r)}function OV(r){return A.time(r)}function WN(r){return A.setBackend(r)}function PV(){return A.ready()}function MV(){return A.backendName}function LV(r){A.removeBackend(r)}function zV(r){return A.findBackend(r)}function BV(r){return A.findBackendFactory(r)}function wu(r,e,t=1){return A.registerBackend(r,e,t)}function Jb(){return A.backend}function VV(r,e){W().setPlatform(r,e)}function WV(r,e){let t=v(r,"a","add"),o=v(e,"b","add");[t,o]=Ue(t,o);let n={a:t,b:o};return A.runKernel(bo,n)}var ee=N({add_:WV});function GV(r,e){let t=v(r,"a","floorDiv"),o=v(e,"b","floorDiv");[t,o]=Ue(t,o);let n={a:t,b:o};return A.runKernel(sn,n)}var vu=N({floorDiv_:GV});function UV(r,e){let t=v(r,"a","div"),o=v(e,"b","div");if([t,o]=Ue(t,o),t.dtype==="int32"&&o.dtype==="int32")return vu(t,o);let n={a:t,b:o},s={};return A.runKernel(rn,n,s)}var fe=N({div_:UV});function jV(r,e){let t=v(r,"a","mul"),o=v(e,"b","mul");[t,o]=Ue(t,o);let n={a:t,b:o};return A.runKernel(xn,n)}var O=N({mul_:jV});function qV(r){let e=v(r,"x","abs");if(e.dtype==="complex64"){let t={x:e};return A.runKernel(ia,t)}else{let t={x:e};return A.runKernel(is,t)}}var Et=N({abs_:qV});function HV(r){let t={x:v(r,"x","acos")};return A.runKernel(js,t)}var wm=N({acos_:HV});function KV(r){let t={x:v(r,"x","acosh")};return A.runKernel(qs,t)}var vm=N({acosh_:KV});function XV(r){E(Array.isArray(r),()=>"The argument passed to tf.addN() must be a list of tensors"),E(r.length>=1,()=>`Must pass at least one tensor to tf.addN(), but got ${r.length}`);let e=r.map((n,s)=>v(n,`tensors${s}`,"addN")),t=e[0];e.forEach(n=>{if(n.dtype!==t.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),e.forEach(n=>{if(!jr(n.shape,t.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});let o=e;return A.runKernel(Ho,o)}var Qb=N({addN_:XV});function YV(r,e=null,t=!1){let n={x:v(r,"x","all","bool")},s={axis:e,keepDims:t};return A.runKernel(Ul,n,s)}var ku=N({all_:YV});function ZV(r,e=null,t=!1){let n={x:v(r,"x","any","bool")},s={axis:e,keepDims:t};return A.runKernel(jl,n,s)}var il=N({any_:ZV});function JV(r,e=0){let o={x:v(r,"x","argMax")},n={axis:e};return A.runKernel(Ko,o,n)}var al=N({argMax_:JV});function QV(r,e=0){let o={x:v(r,"x","argMin")},n={axis:e};return A.runKernel(oa,o,n)}var km=N({argMin_:QV});function eW(r){let t={x:v(r,"x","asin")};return A.runKernel(Hs,t)}var Cm=N({asin_:eW});function tW(r){let t={x:v(r,"x","asinh")};return A.runKernel(Ks,t)}var Im=N({asinh_:tW});function rW(r){let t={x:v(r,"x","atan")};return A.runKernel(Xs,t)}var Nm=N({atan_:rW});function oW(r,e){let t=v(r,"a","atan2"),o=v(e,"b","atan2");[t,o]=Ue(t,o);let n={a:t,b:o};return A.runKernel(Zs,n)}var Sm=N({atan2_:oW});function nW(r){let t={x:v(r,"x","atanh")};return A.runKernel(Ys,t)}var Tm=N({atanh_:nW});function sW(r,e,t,o,n="NHWC",s){let a=r[3],i=[...e,a],l=GN(n);return Cu(r,i,t,s,o,null,null,l)}function e_(r,e,t,o,n,s,a="channelsLast"){let[i,l]=rg(e),u;if(a==="channelsLast")u=[i,l,r[3],r[3]];else if(a==="channelsFirst")u=[i,l,r[1],r[1]];else throw new Error(`Unknown dataFormat ${a}`);return Cu(r,u,t,o,n,s,!1,a)}function iW(r,e,t,o,n,s,a="NDHWC"){let[i,l,u]=t_(e),c,p;if(a==="NDHWC")p="channelsLast",c=[i,l,u,r[4],r[4]];else if(a==="NCDHW")p="channelsFirst",c=[i,l,u,r[1],r[1]];else throw new Error(`Unknown dataFormat ${a}`);return UN(r,c,t,o,n,!1,p,s)}function Cu(r,e,t,o,n,s,a=!1,i="channelsLast"){let[l,u,c,p]=[-1,-1,-1,-1];if(i==="channelsLast")[l,u,c,p]=r;else if(i==="channelsFirst")[l,p,u,c]=r;else throw new Error(`Unknown dataFormat ${i}`);let[m,f,,d]=e,[h,g]=rg(t),[y,b]=rg(o),_=Hc(m,y),w=Hc(f,b),{padInfo:k,outHeight:$,outWidth:T}=aW(n,u,c,h,g,_,w,s,i),F=a?d*p:d,M;return i==="channelsFirst"?M=[l,F,$,T]:i==="channelsLast"&&(M=[l,$,T,F]),{batchSize:l,dataFormat:i,inHeight:u,inWidth:c,inChannels:p,outHeight:$,outWidth:T,outChannels:F,padInfo:k,strideHeight:h,strideWidth:g,filterHeight:m,filterWidth:f,effectiveFilterHeight:_,effectiveFilterWidth:w,dilationHeight:y,dilationWidth:b,inShape:r,outShape:M,filterShape:e}}function UN(r,e,t,o,n,s=!1,a="channelsLast",i){let[l,u,c,p,m]=[-1,-1,-1,-1,-1];if(a==="channelsLast")[l,u,c,p,m]=r;else if(a==="channelsFirst")[l,m,u,c,p]=r;else throw new Error(`Unknown dataFormat ${a}`);let[f,d,h,,g]=e,[y,b,_]=t_(t),[w,k,$]=t_(o),T=Hc(f,w),F=Hc(d,k),M=Hc(h,$),{padInfo:L,outDepth:G,outHeight:H,outWidth:U}=lW(n,u,c,p,y,b,_,T,F,M,i),Z=s?g*m:g,K;return a==="channelsFirst"?K=[l,Z,G,H,U]:a==="channelsLast"&&(K=[l,G,H,U,Z]),{batchSize:l,dataFormat:a,inDepth:u,inHeight:c,inWidth:p,inChannels:m,outDepth:G,outHeight:H,outWidth:U,outChannels:Z,padInfo:L,strideDepth:y,strideHeight:b,strideWidth:_,filterDepth:f,filterHeight:d,filterWidth:h,effectiveFilterDepth:T,effectiveFilterHeight:F,effectiveFilterWidth:M,dilationDepth:w,dilationHeight:k,dilationWidth:$,inShape:r,outShape:K,filterShape:e}}function uW(r,e,t,o,n){o==null&&(o=r_(r,e,t));let s=r[0],a=r[1],i=Iu((s-e+2*o)/t+1,n),l=Iu((a-e+2*o)/t+1,n);return[i,l]}function cW(r,e,t,o,n,s){n==null&&(n=r_(r,e,o));let a=r[0],i=r[1],l=r[2],u=Iu((a-e+2*n)/o+1,s),c=Iu((i-e+2*n)/o+1,s),p=Iu((l-e+2*n)/o+1,s);return[u,c,p,t]}function r_(r,e,t,o=1){let n=Hc(e,o);return Math.floor((r[0]*(t-1)-t+n)/2)}function rg(r){return typeof r=="number"?[r,r,r]:r.length===2?[r[0],r[1],1]:r}function t_(r){return typeof r=="number"?[r,r,r]:r}function Hc(r,e){return e<=1?r:r+(r-1)*(e-1)}function aW(r,e,t,o,n,s,a,i,l){let u,c,p;if(typeof r=="number"){u={top:r,bottom:r,left:r,right:r,type:r===0?"VALID":"NUMBER"};let f=uW([e,t],s,o,r,i);c=f[0],p=f[1]}else if(r==="same"){c=Math.ceil(e/o),p=Math.ceil(t/n);let m=Math.max(0,(c-1)*o+s-e),f=Math.max(0,(p-1)*n+a-t),d=Math.floor(m/2),h=m-d,g=Math.floor(f/2),y=f-g;u={top:d,bottom:h,left:g,right:y,type:"SAME"}}else if(r==="valid")u={top:0,bottom:0,left:0,right:0,type:"VALID"},c=Math.ceil((e-s+1)/o),p=Math.ceil((t-a+1)/n);else if(typeof r=="object"){let m=l==="channelsLast"?r[1][0]:r[2][0],f=l==="channelsLast"?r[1][1]:r[2][1],d=l==="channelsLast"?r[2][0]:r[3][0],h=l==="channelsLast"?r[2][1]:r[3][1];u={top:m,bottom:f,left:d,right:h,type:m===0&&f===0&&d===0&&h===0?"VALID":"EXPLICIT"},c=Iu((e-s+m+f)/o+1,i),p=Iu((t-a+d+h)/n+1,i)}else throw Error(`Unknown padding parameter: ${r}`);return{padInfo:u,outHeight:c,outWidth:p}}function lW(r,e,t,o,n,s,a,i,l,u,c){let p,m,f,d;if(typeof r=="number"){p={top:r,bottom:r,left:r,right:r,front:r,back:r,type:r===0?"VALID":"NUMBER"};let g=cW([e,t,o,1],i,1,n,r,c);m=g[0],f=g[1],d=g[2]}else if(r==="same"){m=Math.ceil(e/n),f=Math.ceil(t/s),d=Math.ceil(o/a);let h=(m-1)*n+i-e,g=(f-1)*s+l-t,y=(d-1)*a+u-o,b=Math.floor(h/2),_=h-b,w=Math.floor(g/2),k=g-w,$=Math.floor(y/2),T=y-$;p={top:w,bottom:k,left:$,right:T,front:b,back:_,type:"SAME"}}else if(r==="valid")p={top:0,bottom:0,left:0,right:0,front:0,back:0,type:"VALID"},m=Math.ceil((e-i+1)/n),f=Math.ceil((t-l+1)/s),d=Math.ceil((o-u+1)/a);else throw Error(`Unknown padding parameter: ${r}`);return{padInfo:p,outDepth:m,outHeight:f,outWidth:d}}function Iu(r,e){if(!e)return Math.trunc(r);switch(e){case"round":return Math.round(r);case"ceil":return Math.ceil(r);case"floor":return Math.floor(r);default:throw new Error(`Unknown roundingMode ${e}`)}}function Mo(r){let[e,t,o]=rg(r);return e===1&&t===1&&o===1}function Pt(r,e){return Mo(r)||Mo(e)}function GN(r){if(r==="NHWC")return"channelsLast";if(r==="NCHW")return"channelsFirst";throw new Error(`Unknown dataFormat ${r}`)}function pW(r,e){let o={x:v(r,"x","reshape","string_or_numeric")},n={shape:e};return A.runKernel(ds,o,n)}var z=N({reshape_:pW});function mW(r,e,t,o,n){let s=v(r,"x","avgPool","float32"),a=1;E(Pt(t,a),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${t} and dilations '${a}'`);let i=s,l=!1;s.rank===3&&(l=!0,i=z(s,[1,s.shape[0],s.shape[1],s.shape[2]])),E(i.rank===4,()=>`Error in avgPool: x must be rank 4 but got rank ${i.rank}.`),n!=null&&E(it(o),()=>`Error in avgPool: pad must be an integer when using, dimRoundingMode ${n} but got pad ${o}.`);let u={x:i},c={filterSize:e,strides:t,pad:o,dimRoundingMode:n},p=A.runKernel(Xo,u,c);return p=ne(p,s.dtype),l?z(p,[p.shape[1],p.shape[2],p.shape[3]]):p}var ka=N({avgPool_:mW});function fW(r,e,t,o,n,s="NDHWC",a){a==null?a=[1,1,1]:Ot("dilations is deprecated, this field will be gone in v3.0.0.");let i=v(r,"x","avgPool3d","float32"),l=i,u=!1;i.rank===4&&(u=!0,l=z(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]])),E(l.rank===5,()=>`Error in avgPool3d: x must be rank 5 but got rank ${l.rank}.`),E(s==="NDHWC",()=>`Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of ${s}`),E(Pt(t,a),()=>`Error in avgPool3d: Either strides or dilations must be 1. Got strides ${t} and dilations '${a}'`),n!=null&&E(it(o),()=>`Error in avgPool3d: pad must be an integer when using, dimRoundingMode ${n} but got pad ${o}.`);let c={x:l},p={filterSize:e,strides:t,pad:o,dimRoundingMode:n,dataFormat:s,dilations:a},m=A.runKernel(na,c,p);return m=ne(m,l.dtype),u?z(m,[m.shape[1],m.shape[2],m.shape[3],m.shape[4]]):m}var Em=N({avgPool3d_:fW});function dW(r,e=0){E(r.length>=1,()=>"Pass at least one tensor to concat");let t=ya(r,"tensors","concat","string_or_numeric");if(t[0].dtype==="complex64"&&t.forEach(s=>{if(s.dtype!=="complex64")throw new Error(`Cannot concatenate complex64 tensors with a tensor + with dtype ${s.dtype}. `)}),t.length===1)return Po(t[0]);let o=t,n={axis:e};return A.runKernel(as,o,n)}var Je=N({concat_:dW});function hW(r){let t={x:v(r,"x","sigmoid")};return A.runKernel(En,t)}var Kr=N({sigmoid_:hW});function gW(r,e,t){let o=v(r,"x","slice","string_or_numeric");if(o.rank===0)throw new Error("Slicing scalar is not possible");let n={x:o},s={begin:e,size:t};return A.runKernel(gs,n,s)}var Fe=N({slice_:gW});function xW(r){let t={x:v(r,"x","tanh")};return A.runKernel(On,t)}var Pi=N({tanh_:xW});function yW(r,e,t,o,n,s){let a=v(r,"forgetBias","basicLSTMCell"),i=v(e,"lstmKernel","basicLSTMCell"),l=v(t,"lstmBias","basicLSTMCell"),u=v(o,"data","basicLSTMCell"),c=v(n,"c","basicLSTMCell"),p=v(s,"h","basicLSTMCell"),m=Je([u,p],1),f=je(m,i),d=ee(f,l),h=d.shape[0],g=d.shape[1]/4,y=[h,g],b=Fe(d,[0,0],y),_=Fe(d,[0,g],y),w=Fe(d,[0,g*2],y),k=Fe(d,[0,g*3],y),$=ee(O(Kr(b),Pi(_)),O(c,Kr(ee(a,w)))),T=O(Pi($),Kr(k));return[$,T]}var bW=N({basicLSTMCell_:yW});function _W(r,e,t){let o=v(r,"x","batchToSpaceND"),n=e.reduce((i,l)=>i*l);E(o.rank>=1+e.length,()=>`input rank is ${o.rank} but should be > than blockShape.length ${e.length}`),E(t.length===e.length,()=>`crops.length is ${t.length} but should be equal to blockShape.length ${e.length}`),E(o.shape[0]%n==0,()=>`input tensor batch is ${o.shape[0]} but is not divisible by the product of the elements of blockShape ${e.join(" * ")} === ${n}`);let s={x:o},a={blockShape:e,crops:t};return A.runKernel(sa,s,a)}var Ca=N({batchToSpaceND_:_W});function jN(r){let e;return r.rank===0||r.rank===1?e=z(r,[1,1,1,r.size]):r.rank===2?e=z(r,[1,1,r.shape[0],r.shape[1]]):r.rank===3?e=z(r,[1,r.shape[0],r.shape[1],r.shape[2]]):e=r,e}function wW(r,e,t,o,n,s){s==null&&(s=.001);let a=v(r,"x","batchNorm"),i=v(e,"mean","batchNorm"),l=v(t,"variance","batchNorm"),u;n!=null&&(u=v(n,"scale","batchNorm"));let c;o!=null&&(c=v(o,"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:jN(a),scale:u,offset:c,mean:i,variance:l},f={varianceEpsilon:s},d=A.runKernel(an,m,f);return z(d,a.shape)}var Ln=N({batchNorm_:wW});function vW(r,e,t,o,n,s){let a=v(r,"x","batchNorm"),i=v(e,"mean","batchNorm"),l=v(t,"variance","batchNorm"),u;n!=null&&(u=v(n,"scale","batchNorm"));let c;return o!=null&&(c=v(o,"offset","batchNorm")),E(a.rank===2,()=>`Error in batchNorm2D: x must be rank 2 but got rank ${a.rank}.`),E(i.rank===2||i.rank===1,()=>`Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank ${i.rank}.`),E(l.rank===2||l.rank===1,()=>`Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank ${l.rank}.`),u!=null&&E(u.rank===2||u.rank===1,()=>`Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank ${u.rank}.`),c!=null&&E(c.rank===2||c.rank===1,()=>`Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank ${c.rank}.`),Ln(a,i,l,c,u,s)}var o_=N({batchNorm2d_:vW});function kW(r,e,t,o,n,s){let a=v(r,"x","batchNorm"),i=v(e,"mean","batchNorm"),l=v(t,"variance","batchNorm"),u;n!=null&&(u=v(n,"scale","batchNorm"));let c;return o!=null&&(c=v(o,"offset","batchNorm")),E(a.rank===3,()=>`Error in batchNorm3D: x must be rank 3 but got rank ${a.rank}.`),E(i.rank===3||i.rank===1,()=>`Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank ${i.rank}.`),E(l.rank===3||l.rank===1,()=>`Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank ${l.rank}.`),u!=null&&E(u.rank===3||u.rank===1,()=>`Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank ${u.rank}.`),c!=null&&E(c.rank===3||c.rank===1,()=>`Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank ${c.rank}.`),Ln(a,i,l,c,u,s)}var n_=N({batchNorm3d_:kW});function CW(r,e,t,o,n,s){let a=v(r,"x","batchNorm"),i=v(e,"mean","batchNorm"),l=v(t,"variance","batchNorm"),u;n!=null&&(u=v(n,"scale","batchNorm"));let c;return o!=null&&(c=v(o,"offset","batchNorm")),E(a.rank===4,()=>`Error in batchNorm4D: x must be rank 4 but got rank ${a.rank}.`),E(i.rank===4||i.rank===1,()=>`Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank ${i.rank}.`),E(l.rank===4||l.rank===1,()=>`Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank ${l.rank}.`),u!=null&&E(u.rank===4||u.rank===1,()=>`Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank ${u.rank}.`),c!=null&&E(c.rank===4||c.rank===1,()=>`Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank ${c.rank}.`),Ln(a,i,l,c,u,s)}var s_=N({batchNorm4d_:CW});function IW(r,e,t){let o=v(r,"x","bincount"),n=v(e,"weights","bincount");E(o.dtype==="int32",()=>`Error in bincount: input dtype must be int32, but got ${o.dtype}`),E(t>=0,()=>`size must be non-negative, but got ${t}.`),E(n.size===o.size||n.size===0,()=>`Error in bincount: weights must have the same size as input or0-length, but got input shape: ${o.shape}, weights shape: ${n.shape}.`);let s={x:o,weights:n},a={size:t};return A.runKernel(Kl,s,a)}var i_=N({bincount_:IW});function NW(r,e){let t=v(r,"broadcastTo","x"),o=t.shape;if(e.some(u=>!(u>0)||u%1!=0))throw new Error(`broadcastTo(): Invalid broadcast shape [${e}].`);if(e.lengtht.rank){let u=t.shape.slice();for(;u.length=0;u--)if(n[u]===e[u])s[u]=1;else if(t.shape[u]!==1)throw new Error(`broadcastTo(): [${o}] cannot be broadcast to [${e}].`);if(s.map((u,c)=>u>1?c:-1).filter(u=>u>=0).length===0)return Po(t);let i={x:t},l={reps:s};return A.runKernel(_o,i,l)}var ll=N({broadcastTo_:NW});function SW(r){let t={x:v(r,"x","ceil")};return A.runKernel(Js,t)}var Am=N({ceil_:SW});function TW(r,e,t){let o=v(r,"x","clipByValue");E(e<=t,()=>`Error in clip: min (${e}) must be less than or equal to max (${t}).`);let n={x:o},s={clipValueMin:e,clipValueMax:t};return A.runKernel(Oo,n,s)}var ir=N({clipByValue_:TW});function EW(r){return Je(r,0)}var a_=N({concat1d_:EW});function AW(r,e){return Je(r,e)}var l_=N({concat2d_:AW});function DW(r,e){return Je(r,e)}var u_=N({concat3d_:DW});function $W(r,e){return Je(r,e)}var c_=N({concat4d_:$W});function RW(r,e,t,o,n="NHWC",s=[1,1],a){let i=v(r,"x","conv2d"),l=v(e,"filter","conv2d"),u=i,c=!1;i.rank===3&&(c=!0,u=z(i,[1,i.shape[0],i.shape[1],i.shape[2]])),E(u.rank===4,()=>`Error in conv2d: input must be rank 4, but got rank ${u.rank}.`),E(l.rank===4,()=>`Error in conv2d: filter must be rank 4, but got rank ${l.rank}.`),a!=null&&E(it(o),()=>`Error in conv2d: pad must be an integer when using, dimRoundingMode ${a} but got pad ${o}.`);let p=n==="NHWC"?u.shape[3]:u.shape[1];E(p===l.shape[2],()=>`Error in conv2d: depth of input (${p}) must match input depth for filter ${l.shape[2]}.`),E(Pt(t,s),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${t} and dilations '${s}'`);let m={x:u,filter:l},f={strides:t,pad:o,dataFormat:n,dilations:s,dimRoundingMode:a},d=A.runKernel(Zo,m,f);return c?z(d,[d.shape[1],d.shape[2],d.shape[3]]):d}var Xr=N({conv2d_:RW});function FW(r,e,t,o,n="NWC",s=1,a){let i=v(r,"x","conv1d"),l=v(e,"filter","conv1d"),u=i,c=!1;i.rank===2&&(c=!0,u=z(i,[1,i.shape[0],i.shape[1]])),E(u.rank===3,()=>`Error in conv1d: input must be rank 3, but got rank ${u.rank}.`),E(l.rank===3,()=>`Error in conv1d: filter must be rank 3, but got rank ${l.rank}.`),a!=null&&E(it(o),()=>`Error in conv1d: pad must be an integer when using, dimRoundingMode ${a} but got pad ${o}.`),E(u.shape[2]===l.shape[1],()=>`Error in conv1d: depth of input (${u.shape[2]}) must match input depth for filter ${l.shape[1]}.`),E(Pt(t,s),()=>`Error in conv1D: Either stride or dilation must be 1. Got stride ${t} and dilation '${s}'`),E(n==="NWC",()=>`Error in conv1d: got dataFormat of ${n} but only NWC is currently supported.`);let p=z(l,[1,l.shape[0],l.shape[1],l.shape[2]]),m=z(u,[u.shape[0],1,u.shape[1],u.shape[2]]),g=Xr(m,p,[1,t],o,"NHWC",[1,s],a);return c?z(g,[g.shape[2],g.shape[3]]):z(g,[g.shape[0],g.shape[2],g.shape[3]])}var Nu=N({conv1d_:FW});function OW(r,e,t,o,n,s="NHWC",a){E(r.length===e.rank,()=>`Length of inShape (${r.length}) and rank of dy (${e.rank}) must match`);let i=r,l=e,u=!1;e.rank===3&&(u=!0,l=z(e,[1,e.shape[0],e.shape[1],e.shape[2]]),i=[1,r[0],r[1],r[2]]),E(i.length===4,()=>`Error in conv2dDerInput: inShape must be length 4, but got length ${i.length}.`),E(l.rank===4,()=>`Error in conv2dDerInput: dy must be rank 4, but got rank ${l.rank}`),E(t.rank===4,()=>`Error in conv2dDerInput: filter must be rank 4, but got rank ${t.rank}`);let c=s==="NHWC"?i[3]:i[1],p=s==="NHWC"?l.shape[3]:l.shape[1];E(c===t.shape[2],()=>`Error in conv2dDerInput: depth of input (${c}) must match input depth for filter ${t.shape[2]}.`),E(p===t.shape[3],()=>`Error in conv2dDerInput: depth of output (${p}) must match output depth for filter ${t.shape[3]}.`),a!=null&&E(it(n),()=>`Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode ${a} but got pad ${n}.`);let m={dy:l,filter:t},f={strides:o,pad:n,dataFormat:s,dimRoundingMode:a,inputShape:i},d=A.runKernel(Jo,m,f);return u?z(d,[d.shape[1],d.shape[2],d.shape[3]]):d}var Kc=N({conv2DBackpropInput_:OW});function PW(r,e,t,o,n,s){let a=v(r,"x","conv2dTranspose"),i=v(e,"filter","conv2dTranspose");return Kc(t,a,i,o,n,"NHWC",s)}var Su=N({conv2dTranspose_:PW});function MW(r,e,t,o,n="NDHWC",s=[1,1,1]){let a=v(r,"x","conv3d"),i=v(e,"filter","conv3d"),l=a,u=!1;a.rank===4&&(u=!0,l=z(a,[1,a.shape[0],a.shape[1],a.shape[2],a.shape[3]])),E(l.rank===5,()=>`Error in conv3d: input must be rank 5, but got rank ${l.rank}.`),E(i.rank===5,()=>`Error in conv3d: filter must be rank 5, but got rank ${i.rank}.`),E(l.shape[4]===i.shape[3],()=>`Error in conv3d: depth of input (${l.shape[4]}) must match input depth for filter ${i.shape[3]}.`),E(Pt(t,s),()=>`Error in conv3D: Either strides or dilations must be 1. Got strides ${t} and dilations '${s}'`),E(n==="NDHWC",()=>`Error in conv3d: got dataFormat of ${n} but only NDHWC is currently supported.`);let c={x:l,filter:i},p={strides:t,pad:o,dataFormat:n,dilations:s},m=A.runKernel(aa,c,p);return u?z(m,[m.shape[1],m.shape[2],m.shape[3],m.shape[4]]):m}var Dm=N({conv3d_:MW});function LW(r,e,t,o,n){E(r.length===e.rank,()=>`Length of inShape (${r.length}) and rank of dy (${e.rank}) must match`);let s=r,a=e,i=!1;e.rank===4&&(i=!0,a=z(e,[1,e.shape[0],e.shape[1],e.shape[2],e.shape[3]]),s=[1,r[0],r[1],r[2],r[3]]);let l=s[4],u=a.shape[4];E(s.length===5,()=>`Error in conv3dDerInput: inShape must be length 5, but got length ${s.length}.`),E(a.rank===5,()=>`Error in conv3dDerInput: dy must be rank 5, but got rank ${a.rank}`),E(t.rank===5,()=>`Error in conv3dDerInput: filter must be rank 5, but got rank ${t.rank}`),E(l===t.shape[3],()=>`Error in conv3dDerInput: depth of input (${l}) must match input depth for filter ${t.shape[3]}.`),E(u===t.shape[4],()=>`Error in conv3dDerInput: depth of output (${u}) must match output depth for filter ${t.shape[4]}.`);let c={dy:a,filter:t},p={pad:n,strides:o,inputShape:s},m=A.runKernel(Jl,c,p);return i?z(m,[m.shape[1],m.shape[2],m.shape[3],m.shape[4]]):m}var og=N({conv3DBackpropInput_:LW});function zW(r,e,t,o,n){let s=v(r,"x","conv3dTranspose"),a=v(e,"filter","conv3dTranspose");return og(t,s,a,o,n)}var BW=N({conv3dTranspose_:zW});function VW(r){let t={x:v(r,"x","cos")};return A.runKernel(Qo,t)}var Ia=N({cos_:VW});function WW(r){let t={x:v(r,"x","cosh")};return A.runKernel(Qs,t)}var Tu=N({cosh_:WW});function GW(r,e=0,t=!1,o=!1){let s={x:v(r,"x","cumsum")},a={axis:e,exclusive:t,reverse:o};return A.runKernel(en,s,a)}var Eu=N({cumsum_:GW});function UW(r,e,t,o=!1){let n=v(r,"x","denseBincount"),s=v(e,"weights","denseBincount");E(n.dtype==="int32",()=>`Error in denseBincount: input dtype must be int32, but got ${n.dtype}`),E(n.rank<=2,()=>`Error in denseBincount: input must be at most rank 2, but got rank ${n.rank}.`),E(t>=0,()=>`size must be non-negative, but got ${t}.`),E(s.size===n.size||s.size===0,()=>`Error in denseBincount: weights must have the same shape as x or 0-length, but got x shape: ${n.shape}, weights shape: ${s.shape}.`);let a={x:n,weights:s},i={size:t,binaryOutput:o};return A.runKernel(Ql,a,i)}var p_=N({denseBincount_:UW});function jW(r,e,t="NHWC"){let o=v(r,"x","depthToSpace"),n=t==="NHWC"?o.shape[1]:o.shape[2],s=t==="NHWC"?o.shape[2]:o.shape[3],a=t==="NHWC"?o.shape[3]:o.shape[1];E(n*e>=0,()=>`Negative dimension size caused by overflow when multiplying + ${n} and ${e} for depthToSpace with input shape + ${o.shape}`),E(s*e>=0,()=>`Negative dimension size caused by overflow when multiplying + ${s} and ${e} for depthToSpace with input shape + ${o.shape}`),E(a%(e*e)==0,()=>`Dimension size must be evenly divisible by ${e*e} but is ${a} for depthToSpace with input shape ${o.shape}`);let i={x:o},l={blockSize:e,dataFormat:t};return A.runKernel(ti,i,l)}var $m=N({depthToSpace_:jW});function qW(r,e,t,o,n="NHWC",s=[1,1],a){let i=v(r,"x","depthwiseConv2d"),l=v(e,"filter","depthwiseConv2d"),u=i,c=!1;i.rank===3&&(c=!0,u=z(i,[1,i.shape[0],i.shape[1],i.shape[2]])),E(u.rank===4,()=>`Error in depthwiseConv2d: input must be rank 4, but got rank ${u.rank}.`),E(l.rank===4,()=>`Error in depthwiseConv2d: filter must be rank 4, but got rank ${l.rank}.`),E(u.shape[3]===l.shape[2],()=>`Error in depthwiseConv2d: number of input channels (${u.shape[3]}) must match the inChannels dimension in filter ${l.shape[2]}.`),a!=null&&E(it(o),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${a} but got pad ${o}.`);let p={x:u,filter:l},m={strides:t,pad:o,dataFormat:n,dilations:s,dimRoundingMode:a},f=A.runKernel(tn,p,m);return c?z(f,[f.shape[1],f.shape[2],f.shape[3]]):f}var Lo=N({depthwiseConv2d_:qW});function HW(r){let t={x:v(r,"x","diag")};return A.runKernel(ru,t)}var KW=N({diag_:HW});function XW(r,e,t,o,n=[1,1],s="NHWC"){let a=v(r,"x","dilation2d"),i=v(e,"filter","dilation2d");E(a.rank===3||a.rank===4,()=>`Error in dilation2d: input must be rank 3 or 4, but got rank ${a.rank}.`),E(i.rank===3,()=>`Error in dilation2d: filter must be rank 3, but got rank ${i.rank}.`),E(s==="NHWC",()=>`Error in dilation2d: Only NHWC is currently supported, but got dataFormat of ${s}`);let l=a,u=!1;a.rank===3&&(l=z(a,[1,a.shape[0],a.shape[1],a.shape[2]]),u=!0);let c={x:l,filter:i},p={strides:t,pad:o,dilations:n},m=A.runKernel(la,c,p);return u?z(m,[m.shape[1],m.shape[2],m.shape[3]]):m}var Rm=N({dilation2d_:XW});function YW(r,e){let t=r.length,o=[];for(let n=0;n1&&a===1&&o.unshift(s)}return o}function Nt(r,e){let t=[];for(let o=0;o1)&&t.unshift(s)}return t}function Ve(r,e){let t=[],o=Math.max(r.length,e.length);for(let n=0;n"The first dimension of `a` must match the size of `condition`."),s.rank!==1&&Ge(s.shape,l.shape,"Error in where: ");let u={condition:s,t:i,e:l};return A.runKernel(hs,u)}var $t=N({where_:JW});function QW(r){let t={x:v(r,"x","zerosLike")};return A.runKernel(bs,t)}var Ne=N({zerosLike_:QW});function eG(r,e){let t=v(r,"a","div"),o=v(e,"b","div");[t,o]=Ue(t,o);let n=fe(t,o),s=Ne(n),a=Yr(o,s);return $t(a,s,n)}var Fm=N({divNoNan_:eG});function tG(r,e){let t=v(r,"t1","dot"),o=v(e,"t2","dot");E((t.rank===1||t.rank===2)&&(o.rank===1||o.rank===2),()=>`Error in dot: inputs must all be rank 1 or 2, but got ranks ${t.rank} and ${o.rank}.`);let n=t.rank===1?t.size:t.shape[1],s=o.rank===1?o.size:o.shape[0];if(E(n===s,()=>`Error in dot: inner dimensions of inputs must match, but got ${n} and ${s}.`),t.rank===1&&o.rank===1){let a=z(t,[1,-1]),i=z(o,[-1,1]),l=je(a,i);return z(l,[])}else if(t.rank===1&&o.rank===2){let a=z(t,[1,-1]),i=z(o,[o.shape[0],o.shape[1]]),l=je(a,i);return z(l,[l.size])}else if(t.rank===2&&o.rank===1){let a=z(o,[-1,1]),i=je(t,a);return z(i,[i.size])}else{let a=z(o,[o.shape[0],o.shape[1]]);return je(t,a)}}var m_=N({dot_:tG});function rG(r){let t={x:v(r,"x","elu")};return A.runKernel(ri,t)}var Is=N({elu_:rG});function oG(r){let e=v(r,"x","erf");E(e.dtype==="int32"||e.dtype==="float32",()=>"Input dtype must be `int32` or `float32`."),e.dtype==="int32"&&(e=ne(e,"float32"));let t={x:e};return A.runKernel(oi,t)}var Om=N({erf_:oG});function nG(r){let t={x:v(r,"x","exp")};return A.runKernel(on,t)}var Qt=N({exp_:nG});function sG(r,e=0){let t=v(r,"x","expandDims","string_or_numeric");E(e<=t.rank,()=>"Axis must be <= rank of the tensor");let o={input:t},n={dim:e};return A.runKernel(ls,o,n)}var br=N({expandDims_:sG});function iG(r){let t={x:v(r,"x","expm1")};return A.runKernel(si,t)}var Pm=N({expm1_:iG});function aG(r,e){let t=v(r,"x","tile","string_or_numeric");E(t.rank===e.length,()=>`Error in transpose: rank of input ${t.rank} must match length of reps ${e}.`);let o={x:t},n={reps:e};return A.runKernel(_o,o,n)}var zo=N({tile_:aG});function lG(r,e,t,o="float32"){e==null&&(e=r);let n=Ie([r,e],o),s=r<=e?r:e;for(let i=0;i`Error in localResponseNormalization: x must be rank 3 or 4 but got + rank ${s.rank}.`),E(it(e),()=>`Error in localResponseNormalization: depthRadius must be an integer but got depthRadius ${e}.`);let a=s,i=!1;s.rank===3&&(i=!0,a=z(s,[1,s.shape[0],s.shape[1],s.shape[2]]));let l={x:a},u={depthRadius:e,bias:t,alpha:o,beta:n},c=A.runKernel(ca,l,u);return i?z(c,[c.shape[1],c.shape[2],c.shape[3]]):c}var Mm=N({localResponseNormalization_:_G});function wG(r){let t={x:v(r,"x","log")};return A.runKernel(cn,t)}var ar=N({log_:wG});function vG(r){let t={x:v(r,"x","log1p")};return A.runKernel(di,t)}var Du=N({log1p_:vG});function kG(r){return E(Gs(r),()=>"The f passed in grad(f) must be a function"),(e,t)=>{let o=v(e,"x","tf.grad","string_or_numeric"),n=t!=null?v(t,"dy","tf.grad"):null;return A.tidy(()=>{let{value:s,grads:a}=A.gradients(()=>r(o),[o],n);return n!=null&&Ge(s.shape,n.shape,"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)"),ng(a),a[0]})}}function CG(r){return E(Gs(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 o=ya(e,"args","tf.grads","string_or_numeric"),n=t!=null?v(t,"dy","tf.grads"):null;return A.tidy(()=>{let{value:s,grads:a}=A.gradients(()=>r(...o),o,n);return n!=null&&Ge(s.shape,n.shape,"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),ng(a),a})}}function IG(r){return E(Gs(r),()=>"The f passed in valueAndGrad(f) must be a function"),(e,t)=>{E(e instanceof R,()=>"The x passed in valueAndGrad(f)(x) must be a tensor"),E(t==null||t instanceof R,()=>"The dy passed in valueAndGrad(f)(x, dy) must be a tensor");let{grads:o,value:n}=A.gradients(()=>r(e),[e],t);return ng(o),{grad:o[0],value:n}}}function NG(r){return E(Gs(r),()=>"The f passed in valueAndGrads(f) must be a function"),(e,t)=>{E(Array.isArray(e)&&e.every(n=>n instanceof R),()=>"The args passed in valueAndGrads(f)(args) must be array of tensors"),E(t==null||t instanceof R,()=>"The dy passed in valueAndGrads(f)(args, dy) must be a tensor");let o=A.gradients(()=>r(...e),e,t);return t!=null&&Ge(o.value.shape,t.shape,"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),ng(o.grads),o}}function sg(r,e){E(Gs(r),()=>"The f passed in variableGrads(f) must be a function"),E(e==null||Array.isArray(e)&&e.every(u=>u instanceof ol),()=>"The varList passed in variableGrads(f, varList) must be an array of variables");let t=e!=null;if(!t){e=[];for(let u in A.registeredVariables)e.push(A.registeredVariables[u])}let o=t?e.filter(u=>!u.trainable):null,n=e.length;e=e.filter(u=>u.trainable),E(e.length>0,()=>`variableGrads() expects at least one of the input variables to be trainable, but none of the ${n} variables is trainable.`);let s=!0,{value:a,grads:i}=A.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,()=>`The f passed in variableGrads(f) must return a scalar, but it returned a rank-${a.rank} tensor`);let l={};return e.forEach((u,c)=>{i[c]!=null&&(l[u.name]=i[c])}),o!=null&&o.forEach(u=>l[u.name]=null),{value:a,grads:l}}function Zr(r){return A.customGrad(r)}function ng(r){if(r.filter(t=>t==null).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.`)}function SG(r){let t={x:v(r,"x","neg")};return A.runKernel(ps,t)}var He=N({neg_:SG});function TG(r){let t={x:v(r,"x","softplus")};return A.runKernel(Si,t)}var Ss=N({softplus_:TG});function EG(r){let e=v(r,"x","logSigmoid");return Zr(o=>({value:He(Ss(He(o))),gradFunc:a=>O(a,Kr(He(o)))}))(e)}var x_=N({logSigmoid_:EG});function AG(r,e=null,t=!1){let n={x:v(r,"x","max")},s={reductionIndices:e,keepDims:t};return A.runKernel(pn,n,s)}var lr=N({max_:AG});function DG(r,e){let t=v(r,"a","sub"),o=v(e,"b","sub");[t,o]=Ue(t,o);let n={a:t,b:o};return A.runKernel(Fn,n)}var pe=N({sub_:DG});function $G(r,e=null,t=!1){let o=v(r,"x","sum");o.dtype==="bool"&&(o=ne(o,"int32"));let n={x:o},s={axis:e,keepDims:t};return A.runKernel(Dn,n,s)}var be=N({sum_:$G});function RG(r,e=-1){let t=v(r,"logits","logSoftmax");if(e===-1&&(e=t.rank-1),e!==t.rank-1)throw Error(`Log Softmax along a non-last dimension is not yet supported. Logits was rank ${t.rank} and axis was ${e}`);return Zr((n,s)=>{let a=!0,i=lr(n,e,!0),l=pe(n,i),u=pe(ne(l,"float32"),ar(be(Qt(l),e,a)));return s([u]),{value:u,gradFunc:(p,m)=>{let[f]=m,d=!0,h=Qt(f);return pe(p,O(be(p,e,d),h))}}})(t)}var $u=N({logSoftmax_:RG});function y_(r,e){for(let t=0;tr[s]);return[t,n]}function Bn(r,e){let t=e.map(o=>1);return qN(r,t,e)}function FG(r,e,t){E(y_(e,t),()=>`${r} supports only inner-most axes for now. Got axes ${e} and rank-${t} input.`)}function __(r,e){if(y_(r,e))return null;let t=[];for(let o=0;ot.push(o)),t}function Lm(r){return r.map((e,t)=>[t,e]).sort((e,t)=>e[1]-t[1]).map(e=>e[0])}function OG(r,e){let t=[];for(let o=e-r;o`Error in maxPool: input must be rank 4 but got rank ${i.rank}.`),E(Pt(t,a),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${t} and dilations '${a}'`),n!=null&&E(it(o),()=>`Error in maxPool: pad must be an integer when using, dimRoundingMode ${n} but got pad ${o}.`);let u={x:i},c={filterSize:e,strides:t,pad:o,dimRoundingMode:n},p=A.runKernel(fn,u,c);return l?z(p,[p.shape[1],p.shape[2],p.shape[3]]):p}var Aa=N({maxPool_:VG});function WG(r,e=[1,1,1],t,o,n,s="NDHWC",a){a==null?a=[1,1,1]:Ot("dilations is deprecated, this field will be gone in v3.0.0.");let i=v(r,"x","maxPool3d"),l=i,u=!1;i.rank===4&&(u=!0,l=z(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]])),E(l.rank===5,()=>`Error in maxPool3d: x must be rank 5 but got rank ${l.rank}.`),E(s==="NDHWC",()=>`Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of ${s}`),E(Pt(t,a),()=>`Error in maxPool3d: Either strides or dilations must be 1. Got strides ${t} and dilations '${a}'`),n!=null&&E(it(o),()=>`Error in maxPool3d: pad must be an integer when using, dimRoundingMode ${n} but got pad ${o}.`);let c={x:l},p={filterSize:e,strides:t,pad:o,dimRoundingMode:n,dataFormat:s,dilations:a},m=A.runKernel(pa,c,p);return u?z(m,[m.shape[1],m.shape[2],m.shape[3],m.shape[4]]):m}var Bm=N({maxPool3d_:WG});function GG(r,e,t,o,n=!1){let a={x:v(r,"x","maxPoolWithArgmax")},i={filterSize:e,strides:t,pad:o,includeBatchInIndex:n},l=A.runKernel(pu,a,i);return{result:l[0],indexes:l[1]}}var v_=N({maxPoolWithArgmax_:GG});function UG(r,e){let t=v(r,"a","maximum"),o=v(e,"b","maximum");[t,o]=Ue(t,o),t.dtype==="bool"&&(t=ne(t,"int32"),o=ne(o,"int32")),Ve(t.shape,o.shape);let n={a:t,b:o};return A.runKernel(mn,n)}var Ir=N({maximum_:UG});function jG(r,e=null,t=!1){let n={x:v(r,"x","mean")},s={axis:e,keepDims:t};return A.runKernel(dn,n,s)}var bt=N({mean_:jG});function qG(r,e=null,t=!1){let n={x:v(r,"x","min")},s={axis:e,keepDims:t};return A.runKernel(hn,n,s)}var Mi=N({min_:qG});function HG(r,e){let t=v(r,"a","minimum"),o=v(e,"b","minimum");[t,o]=Ue(t,o),t.dtype==="bool"&&(t=ne(t,"int32"),o=ne(o,"int32")),Ve(t.shape,o.shape);let n={a:t,b:o};return A.runKernel(gn,n)}var Bo=N({minimum_:HG});function KG(r,e,t){E(t==="reflect"||t==="symmetric",()=>`Invalid mode. Mode must be either reflect or symmetric. Got ${t}.`);let o=v(r,"x","mirrorPad");if(o.rank===0)throw new Error("mirrorPad(scalar) is not defined. Pass non-scalar to mirrorPad");E(e.length===o.rank,()=>`Padding doesn't match input. Must be ${o.rank}. Got ${e.length}.`);let n=t==="reflect"?1:0;for(let i=0;i"Invalid number of paddings. Must be length of 2 each."),E(e[i][0]>=0&&e[i][0]<=o.shape[i]-n&&e[i][1]>=0&&e[i][1]<=o.shape[i]-n,()=>`Padding in dimension ${i} cannot be greater than or equal to ${o.shape[i]-n} or less than 0 for input of shape ${o.shape}`);let s={paddings:e,mode:t},a={x:o};return A.runKernel(ma,a,s)}var Vm=N({mirrorPad_:KG});function XG(r,e){let t=v(r,"a","mod"),o=v(e,"b","mod");[t,o]=Ue(t,o);let n={a:t,b:o};return A.runKernel(gi,n)}var Fu=N({mod_:XG});function YG(r){let e=v(r,"x","square"),t={};return A.runKernel("Square",{x:e},t)}var Me=N({square_:YG});function ZG(r,e=null,t=!1){r=v(r,"x","moments");let o=tr(e,r.shape),n=bt(r,o,t),s=n.shape;t||(s=Bn(n.shape,o));let a=Me(pe(ne(r,"float32"),z(n,s))),i=bt(a,o,t);return{mean:n,variance:i}}var Yc=N({moments_:ZG});function JG(r,e,t,o){let n=v(e,"data","multiRNNCell"),s=ya(t,"c","multiRNNCell"),a=ya(o,"h","multiRNNCell"),i=n,l=[];for(let p=0;p2)throw new Error(`Rank of probabilities must be 1 or 2, but is ${a}`);t=t||Math.random();let l={logits:a===1?z(n,[1,-1]):n},u={numSamples:e,seed:t,normalized:o},c=A.runKernel(mu,l,u);return a===1?z(c,[c.size]):c}var k_=N({multinomial_:e4});function t4(r,e){let t=v(r,"a","notEqual"),o=v(e,"b","notEqual");[t,o]=Ue(t,o),Ve(t.shape,o.shape);let n={a:t,b:o};return A.runKernel(xi,n)}var vo=N({notEqual_:t4});function pt(r,e="float32"){if(e==="complex64"){let o=pt(r,"float32"),n=pt(r,"float32");return wo(o,n)}let t=Rc(dt(r),e);return A.makeTensor(t,r,e)}function Nr(r,e="float32"){if(e==="complex64"){let o=Nr(r,"float32"),n=pt(r,"float32");return wo(o,n)}let t=cm(dt(r),e);return A.makeTensor(t,r,e)}function r4(r){let t={x:v(r,"x","onesLike")};return A.runKernel(ms,t)}var rr=N({onesLike_:r4});function o4(r,e){let t=v(r,"v1","outerProduct"),o=v(e,"v2","outerProduct");E(t.rank===1&&o.rank===1,()=>`Error in outerProduct: inputs must be rank 1, but got ranks ${t.rank} and ${o.rank}.`);let n=z(t,[-1,1]),s=z(o,[1,-1]);return je(n,s)}var n4=N({outerProduct_:o4});function s4(r,e,t=0){let o=v(r,"x","pad");if(o.rank===0)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");let n={paddings:e,constantValue:t},s={x:o};return A.runKernel(bn,s,n)}var Pr=N({pad_:s4});function i4(r,e,t=0){return E(e.length===2,()=>"Invalid number of paddings. Must be length of 2."),Pr(r,[e],t)}var a4=N({pad1d_:i4});function l4(r,e,t=0){return E(e.length===2&&e[0].length===2&&e[1].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),Pr(r,e,t)}var u4=N({pad2d_:l4});function c4(r,e,t=0){return E(e.length===3&&e[0].length===2&&e[1].length===2&&e[2].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),Pr(r,e,t)}var p4=N({pad3d_:c4});function m4(r,e,t=0){return E(e.length===4&&e[0].length===2&&e[1].length===2&&e[2].length===2&&e[3].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),Pr(r,e,t)}var f4=N({pad4d_:m4});function d4(r,e,t){let o=v(r,"x","spaceToBatchND");E(o.rank>=1+e.length,()=>`input rank ${o.rank} should be > than [blockShape] ${e.length}`),E(t.length===e.length,()=>`paddings.shape[0] ${t.length} must be equal to [blockShape] ${e.length}`),E(o.shape.reduce((a,i,l)=>l>0&&l<=e.length?a&&(i+t[l-1][0]+t[l-1][1])%e[l-1]==0:a,!0),()=>`input spatial dimensions ${o.shape.slice(1)} with paddings ${t.toString()} must be divisible by blockShapes ${e.toString()}`);let n={x:o},s={blockShape:e,paddings:t};return A.runKernel(ha,n,s)}var Da=N({spaceToBatchND_:d4});function x4(r,e,t,o,n,s){n==null&&(n=[1,1]),s==null&&(s=1),o===0&&(o="valid");let a=v(r,"x","maxPool"),i=a,l=!1;a.rank===3&&(l=!0,i=z(a,[1,a.shape[0],a.shape[1],a.shape[2]])),E(Pt(s,n),()=>`Error in pool: Either strides or dilations must be 1. Got strides ${s} and dilations '${n}'`);let u=e_(i.shape,e,s,n,o),c=[u.dilationHeight,u.dilationWidth],p;o==="same"?p=g4([u.filterHeight,u.filterWidth],c):p=[[0,0],[0,0]];let m=c[0]===1&&c[1]===1,[f,d]=h4([u.inHeight,u.inWidth],c,p),h=m?o:"valid",g=m?i:Da(i,c,f),b=(t==="avg"?()=>ka(g,e,s,h):()=>Aa(g,e,s,h))(),_=m?b:Ca(b,c,d);return l?z(_,[_.shape[1],_.shape[2],_.shape[3]]):_}function h4(r,e,t){let o=t.map(c=>c[0]),n=t.map(c=>c[1]),s=r.concat(o,n),a=e.map((c,p)=>(c-s[p]%c)%c),i=n.map((c,p)=>c+a[p]),l=e.map((c,p)=>[o[p],i[p]]),u=e.map((c,p)=>[0,a[p]]);return[l,u]}function g4(r,e){let o=r.map((a,i)=>a+(a-1)*(e[i]-1)).map(a=>a-1),n=o.map(a=>Math.floor(a/2)),s=o.map((a,i)=>a-n[i]);return o.map((a,i)=>[n[i],s[i]])}var C_=N({pool_:x4});function y4(r,e){let t=v(r,"base","pow"),o=v(e,"exp","pow");[t,o]=Ue(t,o);let n={a:t,b:o};return A.runKernel(_n,n)}var _r=N({pow_:y4});function b4(r,e){let t=v(r,"x","prelu"),o=v(e,"alpha","prelu"),n={x:t,alpha:o};return A.runKernel(wn,n)}var $a=N({prelu_:b4});function _4(r,e=null,t=!1){let o=v(r,"x","prod");o.dtype==="bool"&&(o=ne(o,"int32"));let n={x:o},s={axis:e,keepDims:t};return A.runKernel(wi,n,s)}var Ou=N({prod_:_4});function w4(r,e,t){let o=dt(r),n=null;if(t==null||t==="float32")n=new Float32Array(o);else if(t==="int32")n=new Int32Array(o);else if(t==="bool")n=new Uint8Array(o);else throw new Error(`Unknown data type ${t}`);for(let s=0;s=1||a===0);let i=Math.sqrt(-2*Math.log(a)/a);e=this.mean+this.stdDev*n*i,t=this.mean+this.stdDev*s*i,(!this.truncated||this.isValidTruncated(e))&&(o=!0)}return(!this.truncated||this.isValidTruncated(t))&&(this.nextVal=this.convertValue(t)),this.convertValue(e)}convertValue(e){return this.dtype==null||this.dtype==="float32"?e:Math.round(e)}isValidTruncated(e){return e<=this.upper&&e>=this.lower}},D_=class{constructor(e,t,o,n){this.alpha=e,this.beta=1/t,this.dtype=o;let s=n||Math.random();this.randu=ag.alea(s.toString()),this.randn=new Zc(0,1,o,!1,this.randu()),e<1?this.d=e+2/3:this.d=e-1/3,this.c=1/Math.sqrt(9*this.d)}nextValue(){let e,t,o,n,s,a;for(;;){do n=this.randn.nextValue(),a=1+this.c*n;while(a<=0);if(a*=a*a,e=n*n,t=1-.331*e*e,o=.5*e+this.d*(1-a+Math.log(a)),s=this.randu(),sthis.dtype==null||this.dtype==="float32",this.min=e,this.range=t-e,this.dtype=o,n==null&&(n=Math.random()),typeof n=="number"&&(n=n.toString()),!this.canReturnFloat()&&this.range<=1)throw new Error(`The difference between ${e} - ${t} <= 1 and dtype is not float`);this.random=ag.alea(n)}convertValue(e){return this.canReturnFloat()?e:Math.round(e)}nextValue(){return this.convertValue(this.min+this.range*this.random())}};function E4(r,e,t=1,o="float32",n){if(t==null&&(t=1),o==null&&(o="float32"),o!=="float32"&&o!=="int32")throw new Error(`Unsupported data type ${o}`);let s=new D_(e,t,o,n),a=Ie(r,o);for(let i=0;i`Error in reverse1D: x must be rank 1 but got rank ${e.rank}.`),Yt(e,0)}var z4=N({reverse1d_:L4});function B4(r,e){let t=v(r,"x","reverse");return E(t.rank===2,()=>`Error in reverse2D: x must be rank 2 but got rank ${t.rank}.`),Yt(t,e)}var V4=N({reverse2d_:B4});function W4(r,e){let t=v(r,"x","reverse");return E(t.rank===3,()=>`Error in reverse3D: x must be rank 3 but got rank ${t.rank}.`),Yt(t,e)}var G4=N({reverse3d_:W4});function U4(r,e){let t=v(r,"x","reverse");return E(t.rank===4,()=>`Error in reverse4D: x must be rank 4 but got rank ${t.rank}.`),Yt(t,e)}var j4=N({reverse4d_:U4});function q4(r){let t={x:v(r,"x","round")};return A.runKernel(Nn,t)}var Um=N({round_:q4});function H4(r){let t={x:v(r,"x","rsqrt")};return A.runKernel(Sn,t)}var Lu=N({rsqrt_:H4});function ce(r,e){if((nr(r)&&e!=="string"||Array.isArray(r))&&e!=="complex64")throw new Error("Error creating a new Scalar: value must be a primitive (number|boolean|string)");if(e==="string"&&nr(r)&&!(r instanceof Uint8Array))throw new Error("When making a scalar from encoded string, the value must be `Uint8Array`.");return qr(r,[],[],e)}function K4(r){let t={x:v(r,"x","selu")};return A.runKernel(Ci,t)}var zu=N({selu_:K4});function X4(r,e,t,o,n,s=[1,1],a="NHWC"){let i=v(r,"x","separableConv2d"),l=v(e,"depthwiseFilter","separableConv2d"),u=v(t,"pointwiseFilter","separableConv2d"),c=i,p=!1;if(i.rank===3&&(p=!0,c=z(i,[1,i.shape[0],i.shape[1],i.shape[2]])),a==="NCHW")throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");E(c.rank===4,()=>`Error in separableConv2d: input must be rank 4, but got rank ${c.rank}.`),E(l.rank===4,()=>`Error in separableConv2d: depthwise filter must be rank 4, but got rank ${l.rank}.`),E(u.rank===4,()=>`Error in separableConv2d: pointwise filter must be rank 4, but got rank ${l.rank}.`),E(u.shape[0]===1,()=>`Error in separableConv2d: the first dimension of pointwise filter must be 1, but got ${u.shape[0]}.`),E(u.shape[1]===1,()=>`Error in separableConv2d: the second dimension of pointwise filter must be 1, but got ${u.shape[1]}.`);let m=l.shape[2],f=l.shape[3];E(u.shape[2]===m*f,()=>`Error in separableConv2d: the third dimension of pointwise filter must be ${m*f}, but got ${u.shape[2]}.`);let d=Lo(c,l,o,n,a,s),g=Xr(d,u,1,"valid",a);return p?z(g,[g.shape[1],g.shape[2],g.shape[3]]):g}var jm=N({separableConv2d_:X4});async function Y4(r,e){let t=v(r,"x","setdiff1d"),o=v(e,"y","setdiff1d");E(t.dtype===o.dtype,()=>`x and y should have the same dtype, but got x (${t.dtype}) and y (${o.dtype}).`),E(t.rank===1,()=>`x should be 1D tensor, but got x (${t.shape}).`),E(o.rank===1,()=>`y should be 1D tensor, but got y (${o.shape}).`);let n=await t.data(),s=await o.data(),a=new Set(s),i=0;for(let c=0;c`slice1d expects a rank-1 tensor, but got a rank-${o.rank} tensor`),Fe(o,[e],[t])}var Hm=N({slice1d_:eU});function tU(r,e,t){let o=v(r,"x","slice2d");return E(o.rank===2,()=>`slice2d expects a rank-2 tensor, but got a rank-${o.rank} tensor`),Fe(o,e,t)}var ug=N({slice2d_:tU});function rU(r,e,t){let o=v(r,"x","slice3d");return E(o.rank===3,()=>`slice3d expects a rank-3 tensor, but got a rank-${o.rank} tensor`),Fe(o,e,t)}var Km=N({slice3d_:rU});function oU(r,e,t){let o=v(r,"x","slice4d");return E(o.rank===4,()=>`slice4d expects a rank-4 tensor, but got a rank-${o.rank} tensor`),Fe(o,e,t)}var Qc=N({slice4d_:oU});function nU(r,e=-1){let t=v(r,"logits","softmax","float32");if(e===-1&&(e=t.rank-1),e!==t.rank-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${t.rank} and dim was ${e}`);let o={logits:t},n={dim:e};return A.runKernel($n,o,n)}var Ra=N({softmax_:nU});function sU(r){E(r.dtype==="complex64",()=>`The dtype for tf.spectral.fft() must be complex64 but got ${r.dtype}.`);let e={input:r};return A.runKernel(nu,e)}var Fa=N({fft_:sU});function iU(r){E(r.dtype==="complex64",()=>`The dtype for tf.spectral.ifft() must be complex64 but got ${r.dtype}.`);let e={input:r};return A.runKernel(su,e)}var Li=N({ifft_:iU});function aU(r){let e=r.shape[r.shape.length-1],t=r.size/e,o;if(e<=2){let n=z(r,[t,e]);o=Li(n)}else{let n=[t,2*(e-1)],s=z(ul(r),[t,e]),a=z(Au(r),[t,e]),i=Yt(Fe(s,[0,1],[t,e-2]),1),l=O(Yt(Fe(a,[0,1],[t,e-2]),1),ce(-1)),u=Je([s,i],1),c=Je([a,l],1),p=z(wo(u,c),[n[0],n[1]]);o=Li(p)}if(o=ul(o),r.rank===3&&r.shape[0]!==0){let n=o,s=r.shape[0];o=z(o,[s,o.shape[0]/s,o.shape[1]]),n.dispose()}return o}var Wu=N({irfft_:aU});function lU(r,e,t=0){let n={x:v(r,"x","split")},s={numOrSizeSplits:e,axis:t};return A.runKernel(xs,n,s)}var ur=N({split_:lU});function uU(r,e){E(r.dtype==="float32",()=>`The dtype for rfft() must be real value but got ${r.dtype}`);let t=r.shape[r.shape.length-1],o=r.size/t,n;if(e!=null&&e0),h=r.shape.map(g=>g);h[r.shape.length-1]=e,n=Fe(r,d,h),t=e}else if(e!=null&&e>t){let d=r.shape.map(h=>h);d[r.shape.length-1]=e-t,n=Je([r,pt(d)],r.shape.length-1),t=e}else n=r;let s=Ne(n),a=z(wo(n,s),[o,t]),i=Fa(a),l=Math.floor(t/2)+1,u=ul(i),c=Au(i),p=ur(u,[l,t-l],u.shape.length-1),m=ur(c,[l,t-l],c.shape.length-1),f=n.shape.slice();return f[n.shape.length-1]=l,z(wo(p[0],m[0]),f)}var Oa=N({rfft_:uU});function cU(r){let t={x:v(r,"x","sqrt")};return A.runKernel(An,t)}var _t=N({sqrt_:cU});function pU(r,e){let t=v(r,"a","squaredDifference"),o=v(e,"b","squaredDifference");[t,o]=Ue(t,o),Ve(t.shape,o.shape);let n={a:t,b:o},s={};return A.runKernel(Rn,n,s)}var Pa=N({squaredDifference_:pU});function mU(r,e){let t=v(r,"x","squeeze");return z(t,ib(t.shape,e).newShape)}var ko=N({squeeze_:mU});function fU(r,e=0){let t=ya(r,"tensors","stack","string_or_numeric");E(t.length>=1,()=>"Pass at least one tensor to tf.stack"),t.length>0&&E(e<=t[0].rank,()=>"Axis must be <= rank of the tensor");let o=t,n={axis:e};return A.runKernel(fs,o,n)}var Wt=N({stack_:fU});function dU(r,e=0){let o={x:v(r,"x","step")},n={alpha:e};return A.runKernel(Di,o,n)}var Es=N({step_:dU});function hU(r,e,t,o,n=0,s=0,a=0,i=0,l=0){let c={x:v(r,"x","stridedSlice")},p={begin:e,end:t,strides:o,beginMask:n,endMask:s,ellipsisMask:a,newAxisMask:i,shrinkAxisMask:l};return A.runKernel(Ti,c,p)}var Xm=N({stridedSlice_:hU});function gU(r){let t={x:v(r,"x","tan")};return A.runKernel(Ei,t)}var Ym=N({tan_:gU});function Gt(r,e){Ro(r);let t=kr(r,e);if(t.length!==1)throw new Error("tensor1d() requires values to be a flat/TypedArray");return qr(r,null,t,e)}function zi(r,e,t){if(Ro(r),e!=null&&e.length!==2)throw new Error("tensor2d() requires shape to have two numbers");let o=kr(r,t);if(o.length!==2&&o.length!==1)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(o.length===1&&e==null)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return qr(r,e,o,t)}function xU(r,e,t){if(Ro(r),e!=null&&e.length!==4)throw new Error("tensor4d() requires shape to have four numbers");let o=kr(r,t);if(o.length!==4&&o.length!==1)throw new Error("tensor4d() requires values to be number[][][][] or flat/TypedArray");if(o.length===1&&e==null)throw new Error("tensor4d() requires shape to be provided when `values` are a flat array");return qr(r,e,o,t)}function yU(r,e,t){if(Ro(r),e!=null&&e.length!==5)throw new Error("tensor5d() requires shape to have five numbers");let o=kr(r,t);if(o.length!==5&&o.length!==1)throw new Error("tensor5d() requires values to be number[][][][][] or flat/TypedArray");if(o.length===1&&e==null)throw new Error("tensor5d() requires shape to be provided when `values` are a flat array");return qr(r,e,o,t)}function bU(r,e,t){if(Ro(r),e!=null&&e.length!==6)throw new Error("tensor6d() requires shape to have six numbers");let o=kr(r,t);if(o.length!==6&&o.length!==1)throw new Error("tensor6d() requires values to be number[][][][][][] or flat/TypedArray");if(o.length===1&&e==null)throw new Error("tensor6d() requires shape to be provided when `values` are a flat array");return e=e||o,qr(r,e,o,t)}function _U(r,e=1,t=!0){let o=v(r,"x","topk");if(o.rank===0)throw new Error("topk() expects the input to be of rank 1 or higher");let n=o.shape[o.shape.length-1];if(e>n)throw new Error(`'k' passed to topk() must be <= the last dimension (${n}) but got ${e}`);let s={x:o},a={k:e,sorted:t},[i,l]=A.runKernel(Ai,s,a);return{values:i,indices:l}}var Zm=N({topk_:_U});function wU(r,e=0,t=1,o,n){if(o!=null&&o==="bool")throw new Error("Unsupported data type $ { dtype }");let s=new Zc(e,t,o,!0,n),a=Ie(r,o);for(let i=0;i0,()=>"The input tensor must be at least 1D");let o={x:t},n={axis:e},[s,a]=A.runKernel(xu,o,n);return{values:s,indices:a}}var ep=N({unique_:vU});function kU(r,e,t){let o=v(r,"x","unsortedSegmentSum"),n=v(e,"segmentIds","unsortedSegmentSum","int32");E(it(t),()=>"numSegments must be of dtype int");let s={x:o,segmentIds:n},a={numSegments:t};return A.runKernel(xa,s,a)}var Jm=N({unsortedSegmentSum_:kU});function CU(r,e=0){let t=v(r,"x","unstack","string_or_numeric");E(e>=-t.shape.length&&e`Axis = ${e} is not in [-${t.shape.length}, ${t.shape.length})`);let o={value:t},n={axis:e};return A.runKernel(ys,o,n)}var cr=N({unstack_:CU});function F_(r,e=!0,t,o){return A.makeVariable(r,e,t,o)}function O_(r,e){let t=[];for(let s=0;s0,()=>"mask cannot be scalar"),Ge(i.slice(s,s+a),n.shape,"mask's shape must match the first K dimensions of tensor's shape,");let l=1;for(let h=s;h"Shape mismatch in v and x");let l=ce(1),u=pe(l,i),c=O(pe(a,s),u);if(n){E(o!=null,()=>"When using zeroDebias: true, step is required.");let p=v(o,"step","movingAverage");c=fe(c,pe(l,_r(i,p)))}return ee(s,c)}var jU=N({movingAverage_:UU});function qU(r,e,t){let o=v(r,"indices","scatterND","int32"),n=v(e,"updates","scatterND");Qh(n,o,t);let s={indices:o,updates:n},a={shape:t};return A.runKernel(ki,s,a)}var Z_=N({scatterND_:qU});function uS(r,e,t,o){if(r.dtype!=="int32")throw new Error(`tf.sparseToDense() expects the indices to be int32 type, but the dtype was ${r.dtype}.`);if(r.rank>2)throw new Error(`sparseIndices should be a scalar, vector, or matrix, but got shape ${r.shape}.`);let n=r.rank>0?r.shape[0]:1,s=r.rank>1?r.shape[1]:1;if(t.length!==s)throw new Error(`outputShape has incorrect number of elements:, ${t.length}, should be: ${s}.`);let a=e.size;if(!(e.rank===0||e.rank===1&&a===n))throw new Error(`sparseValues has incorrect shape ${e.shape}, should be [] or [${n}]`);if(e.dtype!==o.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}function HU(r,e,t,o=0){let n=v(r,"sparseIndices","sparseToDense","int32"),s=v(e,"sparseValues","sparseToDense"),a=v(o,"defaultValue","sparseToDense",s.dtype);uS(n,s,t,a);let i={sparseIndices:n,sparseValues:s,defaultValue:a},l={outputShape:t};return A.runKernel(gu,i,l)}var ef=N({sparseToDense_:HU});function KU(r,e){let t=v(e,"indices","gatherND","int32"),n={params:v(r,"x","gatherND"),indices:t};return A.runKernel(ai,n)}var J_=N({gatherND_:KU});function cS(r,e){if(e==null)return r.shape.slice();if(jr(r.shape,e))return e;if(r.shape.length===e.length){let t=[];for(let o=0;o`x has to be a floating point tensor since it's going to be scaled, but got a ${n.dtype} tensor instead.`),E(e>=0&&e<1,()=>`rate must be a float in the range [0, 1), but got ${e}.`),e===0)return r instanceof R?n.clone():n;let s=cS(n,t),a=1-e,i=fe(Ns(ee(Ts(s,0,1,"float32",o),a)),a);return O(n,i)}var Q_=N({dropout_:XU});function ew(r){return Math.floor(Math.pow(2,Math.ceil(Math.log(r)/Math.log(2))))}function tf(r,e,t){let o=1-r%2,n=new Float32Array(r);for(let s=0;s1,()=>`inTopK() expects the predictions to be of rank 2 or higher, but got ${o.rank}`),E(o.rank-1===n.rank,()=>`predictions rank should be 1 larger than targets rank, but got predictions rank ${o.rank} and targets rank ${n.rank}`),Ge(o.shape.slice(0,o.shape.length-1),n.shape,"predictions's shape should be align with the targets' shape, except the last dimension.");let s=o.shape[o.shape.length-1];E(t>0&&t<=s,()=>`'k' passed to inTopK() must be > 0 && <= the predictions last dimension (${s}), but got ${t}`);let a=await o.data(),i=await n.data(),[l,u]=[a.length/s,s],c=ab("bool",l);for(let p=0;pg.value-h.value),c[p]=0;for(let h=0;hej,depthwiseConv2d:()=>nj,matMul:()=>ij});function JU(r,e,t,o,n,s="NHWC",a){let i=r;r.rank===3&&(i=z(r,[1,r.shape[0],r.shape[1],r.shape[2]]));let l=e;l.rank===3&&(l=z(e,[1,e.shape[0],e.shape[1],e.shape[2]])),E(i.rank===4,()=>`Error in conv2dDerFilter: input must be rank 4, but got shape ${i.shape}.`),E(l.rank===4,()=>`Error in conv2dDerFilter: dy must be rank 4, but got shape ${l.shape}.`),E(t.length===4,()=>`Error in conv2dDerFilter: filterShape must be length 4, but got ${t}.`);let u=s==="NHWC"?i.shape[3]:i.shape[1],c=s==="NHWC"?l.shape[3]:l.shape[1];E(u===t[2],()=>`Error in conv2dDerFilter: depth of input ${u}) must match input depth in filter (${t[2]}.`),E(c===t[3],()=>`Error in conv2dDerFilter: depth of dy (${c}) must match output depth for filter (${t[3]}).`),a!=null&&E(it(n),()=>`Error in conv2dDerFilter: pad must be an integer when using, dimRoundingMode ${a} but got pad ${n}.`);let p={x:i,dy:l},m={strides:o,pad:n,dataFormat:s,dimRoundingMode:a,filterShape:t};return A.runKernel(Yl,p,m)}var tp=N({conv2DBackpropFilter_:JU});function ju(r,e,t){if(t==null||t==="linear")return r;if(t==="relu")return O(r,Es(e));throw new Error(`Cannot compute gradient for fused activation ${t}.`)}function qu(r,e){let t=e,o=Nt(r.shape,e.shape);return o.length>0&&(t=be(t,o)),z(t,r.shape)}function Hu(r,e,t,o){if(e==="linear")return r;if(e==="relu")return Sr(r);if(e==="elu")return Is(r);if(e==="relu6")return Mu(r);if(e==="prelu")return $a(r,t);if(e==="leakyrelu")return Sa(r,o);throw new Error(`Unknown fused activation ${e}.`)}var Ku=(r,e)=>!(r>0)||e==="linear";function QU({x:r,filter:e,strides:t,pad:o,dataFormat:n="NHWC",dilations:s=[1,1],dimRoundingMode:a,bias:i,activation:l="linear",preluActivationWeights:u,leakyreluAlpha:c}){if(l=l||"linear",Ku(A.state.gradientDepth,l)===!1){let k=Xr(r,e,t,o,n,s,a);return i!=null&&(k=ee(k,i)),Hu(k,l,u,c)}let p=v(r,"x","conv2d"),m=v(e,"filter","conv2d"),f=p,d=!1;p.rank===3&&(d=!0,f=z(p,[1,p.shape[0],p.shape[1],p.shape[2]])),E(f.rank===4,()=>`Error in fused conv2d: input must be rank 4, but got rank ${f.rank}.`),E(m.rank===4,()=>`Error in fused conv2d: filter must be rank 4, but got rank ${m.rank}.`),a!=null&&E(it(o),()=>`Error in fused conv2d: pad must be an integer when using, dimRoundingMode ${a} but got pad ${o}.`),E(f.shape[3]===m.shape[2],()=>`Error in conv2d: depth of input (${f.shape[3]}) must match input depth for filter ${m.shape[2]}.`),E(Pt(t,s),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${t} and dilations '${s}'`),E(n==="NHWC",()=>`Error in conv2d: got dataFormat of ${n} but only NHWC is currently supported.`);let h=Cu(f.shape,m.shape,t,s,o,a),g;i!=null&&(g=v(i,"bias","fused conv2d"),[g]=Ue(g,p),Ve(h.outShape,g.shape));let y;u!=null&&(y=v(u,"prelu weights","fused conv2d"));let b=(k,$)=>{let[T,F,M,L]=$,G=ju(k,M,l);E(Mo(s),()=>`Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${s}'`);let H=Kc(F.shape,G,T,t,o),U=tp(F,G,T.shape,t,o),Z=[H,U];if(L!=null){let K=qu(L,G);Z.push(K)}return Z},_={x:f,filter:m,bias:g,preluActivationWeights:y},w={strides:t,pad:o,dataFormat:n,dilations:s,dimRoundingMode:a,activation:l,leakyreluAlpha:c};return i==null?Zr(($,T,F)=>{let M=A.runKernel(ws,_,w);return F([T,$,M]),d&&(M=z(M,[M.shape[1],M.shape[2],M.shape[3]])),{value:M,gradFunc:b}})(f,m):Zr(($,T,F,M)=>{let L=A.runKernel(ws,_,w);return M([T,$,L,F]),d&&(L=z(L,[L.shape[1],L.shape[2],L.shape[3]])),{value:L,gradFunc:b}})(f,m,g)}var ej=N({fusedConv2d_:QU});function tj(r,e,t,o,n,s=[1,1],a){let i=r;r.rank===3&&(i=z(r,[1,r.shape[0],r.shape[1],r.shape[2]]));let l=e;l.rank===3&&(l=z(e,[1,e.shape[0],e.shape[1],e.shape[2]]));let u={x:i,dy:l},c={strides:o,pad:n,dimRoundingMode:a,dilations:s,filterShape:t};return A.runKernel(eu,u,c)}var cg=N({depthwiseConv2dNativeBackpropFilter_:tj});function rj(r,e,t,o,n,s=[1,1],a){let i=e,l=!1;e.rank===3&&(l=!0,i=z(e,[1,e.shape[0],e.shape[1],e.shape[2]]));let u={dy:i,filter:t},c={strides:o,pad:n,dimRoundingMode:a,dilations:s,inputShape:r},p=A.runKernel(tu,u,c);return l?z(p,[p.shape[1],p.shape[2],p.shape[3]]):p}var pg=N({depthwiseConv2dNativeBackpropInput_:rj});function oj({x:r,filter:e,strides:t,pad:o,dataFormat:n="NHWC",dilations:s=[1,1],dimRoundingMode:a,bias:i,activation:l="linear",preluActivationWeights:u,leakyreluAlpha:c}){if(Ku(A.state.gradientDepth,l)===!1){let k=Lo(r,e,t,o,n,s,a);return i!=null&&(k=ee(k,i)),Hu(k,l,u,c)}let p=v(r,"x","depthwiseConv2d"),m=v(e,"filter","depthwiseConv2d"),f=p,d=!1;p.rank===3&&(d=!0,f=z(p,[1,p.shape[0],p.shape[1],p.shape[2]])),E(f.rank===4,()=>`Error in fused depthwiseConv2d: input must be rank 4, but got rank ${f.rank}.`),E(m.rank===4,()=>`Error in fused depthwiseConv2d: filter must be rank 4, but got rank ${m.rank}.`),E(f.shape[3]===m.shape[2],()=>`Error in fused depthwiseConv2d: number of input channels (${f.shape[3]}) must match the inChannels dimension in filter ${m.shape[2]}.`),s==null&&(s=[1,1]),E(Pt(t,s),()=>`Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides ${t} and dilations '${s}'`),a!=null&&E(it(o),()=>`Error in fused depthwiseConv2d: pad must be an integer when using dimRoundingMode ${a} but got pad ${o}.`);let h=Cu(f.shape,m.shape,t,s,o,a,!0),g;i!=null&&(g=v(i,"bias","fused conv2d"),[g]=Ue(g,p),Ve(h.outShape,g.shape));let y;u!=null&&(y=v(u,"prelu weights","fused depthwiseConv2d"));let b=(k,$)=>{E(Mo(s),()=>`Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '${s}'`);let[T,F,M,L]=$,G=ju(k,M,l),H=pg(F.shape,G,T,t,o,s,a),U=cg(F,G,T.shape,t,o,s,a);if(L!=null){let Z=qu(g,G);return[H,U,Z]}return[H,U]},_={x:f,filter:m,bias:g,preluActivationWeights:y},w={strides:t,pad:o,dataFormat:n,dilations:s,dimRoundingMode:a,activation:l,leakyreluAlpha:c};return i==null?Zr(($,T,F)=>{let M=A.runKernel(vs,_,w);return F([T,$,M]),d&&(M=z(M,[M.shape[1],M.shape[2],M.shape[3]])),{value:M,gradFunc:b}})(f,m):Zr(($,T,F,M)=>{let L=A.runKernel(vs,_,w);return M([T,$,L,F]),d&&(L=z(L,[L.shape[1],L.shape[2],L.shape[3]])),{value:L,gradFunc:b}})(f,m,g)}var nj=N({fusedDepthwiseConv2d_:oj});function sj({a:r,b:e,transposeA:t=!1,transposeB:o=!1,bias:n,activation:s="linear",preluActivationWeights:a,leakyreluAlpha:i}){if(Ku(A.state.gradientDepth,s)===!1){let L=je(r,e,t,o);return n!=null&&(L=ee(L,n)),Hu(L,s,a,i)}let l=v(r,"a","fused matMul"),u=v(e,"b","fused matMul");[l,u]=Ue(l,u);let c=t?l.shape[l.rank-2]:l.shape[l.rank-1],p=o?u.shape[u.rank-1]:u.shape[u.rank-2],m=t?l.shape[l.rank-1]:l.shape[l.rank-2],f=o?u.shape[u.rank-2]:u.shape[u.rank-1],d=l.shape.slice(0,-2),h=u.shape.slice(0,-2),g=dt(d),y=dt(h);E(l.rank>=2&&u.rank>=2&&l.rank===u.rank,()=>`Error in fused matMul: inputs must have the same rank of at least 2, got ranks ${l.rank} and ${u.rank}.`),E(jr(d,h),()=>`Error in fused matMul: outer dimensions (${d}) and (${h}) of Tensors with shapes ${l.shape} and ${u.shape} must match.`),E(c===p,()=>`Error in fused matMul: inner shapes (${c}) and (${p}) of Tensors with shapes ${l.shape} and ${u.shape} and transposeA=${t} and transposeB=${o} must match.`);let b=l.shape.slice(0,-2).concat([m,f]),_=t?z(l,[g,c,m]):z(l,[g,m,c]),w=o?z(u,[y,f,p]):z(u,[y,p,f]),k;n!=null&&(k=v(n,"bias","fused matMul"),[k]=Ue(k,l),Ve(b,k.shape));let $;a!=null&&($=v(a,"prelu weights","fused matMul"));let T=(L,G)=>{let[H,U,Z,K]=G,X=ju(z(L,Z.shape),Z,s),oe,J;if(!t&&!o?(oe=je(X,U,!1,!0),J=je(H,X,!0,!1)):!t&&o?(oe=je(X,U,!1,!1),J=je(X,H,!0,!1)):t&&!o?(oe=je(U,X,!1,!0),J=je(H,X,!1,!1)):(oe=je(U,X,!0,!0),J=je(X,H,!0,!0)),n!=null){let Q=qu(K,X);return[oe,J,Q]}else return[oe,J]},F={a:_,b:w,bias:k,preluActivationWeights:$},M={transposeA:t,transposeB:o,activation:s,leakyreluAlpha:i};return n==null?Zr((G,H,U)=>{let Z=A.runKernel(_s,F,M);return U([G,H,Z]),{value:z(Z,b),gradFunc:T}})(_,w):Zr((G,H,U,Z)=>{let K=A.runKernel(_s,F,M);return Z([G,H,K,U]),{value:z(K,b),gradFunc:T}})(_,w,k)}var ij=N({fusedMatMul_:sj});function aj(r){return tf(r,.54,.46)}var pS=N({hammingWindow_:aj});function lj(r){return tf(r,.5,.5)}var mg=N({hannWindow_:lj});function uj(r,e,t,o=!1,n=0){let s=0,a=[];for(;s+e<=r.size;)a.push(Fe(r,s,e)),s+=t;if(o)for(;s`Error in cropAndResize: image must be rank 4,but got rank ${a.rank}.`),E(i.rank===2&&i.shape[1]===4,()=>`Error in cropAndResize: boxes must be have size [${u},4] but had shape ${i.shape}.`),E(l.rank===1&&l.shape[0]===u,()=>`Error in cropAndResize: boxInd must be have size [${u}] but had shape ${i.shape}.`),E(o.length===2,()=>`Error in cropAndResize: cropSize must be of length 2, but got length ${o.length}.`),E(o[0]>=1&&o[1]>=1,()=>`cropSize must be atleast [1,1], but was ${o}`),E(n==="bilinear"||n==="nearest",()=>`method must be bilinear or nearest, but was ${n}`);let c={image:a,boxes:i,boxInd:l},p={method:n,extrapolationValue:s,cropSize:o};return A.runKernel(ei,c,p)}var fS=N({cropAndResize_:pj});function mj(r){let e=v(r,"image","flipLeftRight","float32");E(e.rank===4,()=>`Error in flipLeftRight: image must be rank 4,but got rank ${e.rank}.`);let t={image:e};return A.runKernel(ii,t,{})}var dS=N({flipLeftRight_:mj});function fj(r,e,t=0,o=.5){let n=v(r,"image","rotateWithOffset","float32");E(n.rank===4,()=>`Error in rotateWithOffset: image must be rank 4,but got rank ${n.rank}.`);let s={image:n},a={radians:e,fillValue:t,center:o};return A.runKernel($i,s,a)}var hS=N({rotateWithOffset_:fj});function Wn(r,e,t,o,n,s){o==null&&(o=.5),n==null&&(n=Number.NEGATIVE_INFINITY),s==null&&(s=0);let a=r.shape[0];return t=Math.min(t,a),E(0<=o&&o<=1,()=>`iouThreshold must be in [0, 1], but was '${o}'`),E(r.rank===2,()=>`boxes must be a 2D tensor, but was of rank '${r.rank}'`),E(r.shape[1]===4,()=>`boxes must have 4 columns, but 2nd dimension was ${r.shape[1]}`),E(e.rank===1,()=>"scores must be a 1D tensor"),E(e.shape[0]===a,()=>`scores has incompatible shape with boxes. Expected ${a}, but was ${e.shape[0]}`),E(0<=s&&s<=1,()=>`softNmsSigma must be in [0, 1], but was '${s}'`),{maxOutputSize:t,iouThreshold:o,scoreThreshold:n,softNmsSigma:s}}function dj(r,e,t,o=.5,n=Number.NEGATIVE_INFINITY){let s=v(r,"boxes","nonMaxSuppression"),a=v(e,"scores","nonMaxSuppression"),i=Wn(s,a,t,o,n);t=i.maxOutputSize,o=i.iouThreshold,n=i.scoreThreshold;let l={maxOutputSize:t,iouThreshold:o,scoreThreshold:n};return A.runKernel(yi,{boxes:s,scores:a},l)}var gS=N({nonMaxSuppression_:dj});function xS(r,e,t){let o=hj(r,e,t),n=o<0?-(o+1):o;r.splice(n,0,e)}function hj(r,e,t){return xj(r,e,t||gj)}function gj(r,e){return r>e?1:r>>1);let i=t(e,r[s]);i>0?o=s+1:(n=s,a=!i)}return a?o:-o-1}function rw(r,e,t,o,n){return tw(r,e,t,o,n,0)}function ow(r,e,t,o,n,s){return tw(r,e,t,o,n,0,!1,s,!0)}function nw(r,e,t,o,n,s){return tw(r,e,t,o,n,s,!0)}function tw(r,e,t,o,n,s,a=!1,i=!1,l=!1){let u=[];for(let g=0;gn&&u.push({score:e[g],boxIndex:g,suppressBeginIndex:0});u.sort(yS);let c=s>0?-.5/s:0,p=[],m=[];for(;p.length0;){let g=u.pop(),{score:y,boxIndex:b,suppressBeginIndex:_}=g;if(y=_;--k){let $=yj(r,b,p[k]);if($>=o){w=!0;break}if(g.score=g.score*bj(o,c,$),g.score<=n)break}g.suppressBeginIndex=p.length,w||(g.score===y?(p.push(b),m.push(g.score)):g.score>n&&xS(u,g,yS))}let f=p.length,d=t-f;i&&d>0&&(p.push(...new Array(d).fill(0)),m.push(...new Array(d).fill(0)));let h={selectedIndices:p};return a&&(h.selectedScores=m),l&&(h.validOutputs=f),h}function yj(r,e,t){let o=r.subarray(e*4,e*4+4),n=r.subarray(t*4,t*4+4),s=Math.min(o[0],o[2]),a=Math.min(o[1],o[3]),i=Math.max(o[0],o[2]),l=Math.max(o[1],o[3]),u=Math.min(n[0],n[2]),c=Math.min(n[1],n[3]),p=Math.max(n[0],n[2]),m=Math.max(n[1],n[3]),f=(i-s)*(l-a),d=(p-u)*(m-c);if(f<=0||d<=0)return 0;let h=Math.max(s,u),g=Math.max(a,c),y=Math.min(i,p),b=Math.min(l,m),_=Math.max(y-h,0)*Math.max(b-g,0);return _/(f+d-_)}function bj(r,e,t){let o=Math.exp(e*t*t);return t<=r?o:0}function yS(r,e){return r.score-e.score||r.score===e.score&&e.boxIndex-r.boxIndex}async function _j(r,e,t,o=.5,n=Number.NEGATIVE_INFINITY){let s=v(r,"boxes","nonMaxSuppressionAsync"),a=v(e,"scores","nonMaxSuppressionAsync"),i=Wn(s,a,t,o,n);t=i.maxOutputSize,o=i.iouThreshold,n=i.scoreThreshold;let l=await Promise.all([s.data(),a.data()]),u=l[0],c=l[1],{selectedIndices:p}=rw(u,c,t,o,n);return s!==r&&s.dispose(),a!==e&&a.dispose(),Gt(p,"int32")}var bS=_j;function wj(r,e,t,o=.5,n=Number.NEGATIVE_INFINITY,s=0){let a=v(r,"boxes","nonMaxSuppression"),i=v(e,"scores","nonMaxSuppression"),l=Wn(a,i,t,o,n,s);t=l.maxOutputSize,o=l.iouThreshold,n=l.scoreThreshold,s=l.softNmsSigma;let u={boxes:a,scores:i},c={maxOutputSize:t,iouThreshold:o,scoreThreshold:n,softNmsSigma:s},p=A.runKernel(_i,u,c);return{selectedIndices:p[0],selectedScores:p[1]}}var _S=N({nonMaxSuppressionWithScore_:wj});async function vj(r,e,t,o=.5,n=Number.NEGATIVE_INFINITY,s=0){let a=v(r,"boxes","nonMaxSuppressionAsync"),i=v(e,"scores","nonMaxSuppressionAsync"),l=Wn(a,i,t,o,n,s);t=l.maxOutputSize,o=l.iouThreshold,n=l.scoreThreshold,s=l.softNmsSigma;let u=await Promise.all([a.data(),i.data()]),c=u[0],p=u[1],{selectedIndices:m,selectedScores:f}=nw(c,p,t,o,n,s);return a!==r&&a.dispose(),i!==e&&i.dispose(),{selectedIndices:Gt(m,"int32"),selectedScores:Gt(f)}}var wS=vj;function kj(r,e,t,o=.5,n=Number.NEGATIVE_INFINITY,s=!1){let a=v(r,"boxes","nonMaxSuppression"),i=v(e,"scores","nonMaxSuppression"),l=Wn(a,i,t,o,n,null),u=l.maxOutputSize,c=l.iouThreshold,p=l.scoreThreshold,m={boxes:a,scores:i},f={maxOutputSize:u,iouThreshold:c,scoreThreshold:p,padToMaxOutputSize:s},d=A.runKernel(bi,m,f);return{selectedIndices:d[0],validOutputs:d[1]}}var vS=N({nonMaxSuppressionPadded_:kj});async function Cj(r,e,t,o=.5,n=Number.NEGATIVE_INFINITY,s=!1){let a=v(r,"boxes","nonMaxSuppressionAsync"),i=v(e,"scores","nonMaxSuppressionAsync"),l=Wn(a,i,t,o,n,null),u=l.maxOutputSize,c=l.iouThreshold,p=l.scoreThreshold,[m,f]=await Promise.all([a.data(),i.data()]),{selectedIndices:d,validOutputs:h}=ow(m,f,u,c,p,s);return a!==r&&a.dispose(),i!==e&&i.dispose(),{selectedIndices:Gt(d,"int32"),validOutputs:ce(h,"int32")}}var kS=Cj;function Ij(r,e,t=!1,o=!1){let n=v(r,"images","resizeBilinear");E(n.rank===3||n.rank===4,()=>`Error in resizeBilinear: x must be rank 3 or 4, but got rank ${n.rank}.`),E(e.length===2,()=>`Error in resizeBilinear: new shape must 2D, but got shape ${e}.`),E(o===!1||t===!1,()=>"Error in resizeBilinear: If halfPixelCenters is true, alignCorners must be false.");let s=n,a=!1;n.rank===3&&(a=!0,s=z(n,[1,n.shape[0],n.shape[1],n.shape[2]]));let[]=e,i={images:s},l={alignCorners:t,halfPixelCenters:o,size:e},u=A.runKernel(kn,i,l);return a?z(u,[u.shape[1],u.shape[2],u.shape[3]]):u}var dg=N({resizeBilinear_:Ij});function Nj(r,e,t=!1,o=!1){let n=v(r,"images","resizeNearestNeighbor");E(n.rank===3||n.rank===4,()=>`Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank ${n.rank}.`),E(e.length===2,()=>`Error in resizeNearestNeighbor: new shape must 2D, but got shape ${e}.`),E(n.dtype==="float32"||n.dtype==="int32",()=>"`images` must have `int32` or `float32` as dtype"),E(o===!1||t===!1,()=>"Error in resizeNearestNeighbor: If halfPixelCenters is true, alignCorners must be false.");let s=n,a=!1;n.rank===3&&(a=!0,s=z(n,[1,n.shape[0],n.shape[1],n.shape[2]]));let[]=e,i={images:s},l={alignCorners:t,halfPixelCenters:o,size:e},u=A.runKernel(da,i,l);return a?z(u,[u.shape[1],u.shape[2],u.shape[3]]):u}var hg=N({resizeNearestNeighbor_:Nj});function Sj(r,e,t){E(e%1==0,()=>`bandPart(): numLower must be an integer, got ${e}.`),E(t%1==0,()=>`bandPart(): numUpper must be an integer, got ${t}.`);let o=v(r,"a","bandPart");E(o.rank>=2,()=>`bandPart(): Rank must be at least 2, got ${o.rank}.`);let n=o.shape,[s,a]=o.shape.slice(-2);if(!(e<=s))throw new Error(`bandPart(): numLower (${e}) must not be greater than the number of rows (${s}).`);if(!(t<=a))throw new Error(`bandPart(): numUpper (${t}) must not be greater than the number of columns (${a}).`);e<0&&(e=s),t<0&&(t=a);let i=z(Jc(0,s,1,"int32"),[-1,1]),l=Jc(0,a,1,"int32"),u=pe(i,l),c=dr(no(u,ce(+e,"int32")),Or(u,ce(-t,"int32"))),p=pt([s,a],o.dtype);return z(Wt(cr(z(o,[-1,s,a])).map(m=>$t(c,m,p))),n)}var CS=N({bandPart_:Sj});function Tj(r){let e;if(Array.isArray(r)){e=!1,E(r!=null&&r.length>0,()=>"Gram-Schmidt process: input must not be null, undefined, or empty");let n=r[0].shape[0];for(let s=1;s`Gram-Schmidt: Non-unique lengths found in the input vectors: (${r[s].shape[0]} vs. ${n})`)}else e=!0,r=ur(r,r.shape[0],0).map(n=>ko(n,[0]));E(r.length<=r[0].shape[0],()=>`Gram-Schmidt: Number of vectors (${r.length}) exceeds number of dimensions (${r[0].shape[0]}).`);let t=[],o=r;for(let n=0;n{let s=o[n];if(n>0)for(let a=0;a=2,()=>`qr() requires input tensor to have a rank >= 2, but got rank ${r.rank}`),r.rank===2)return NS(r,e);{let t=r.shape.slice(0,r.shape.length-2).reduce((l,u)=>l*u),o=cr(z(r,[t,r.shape[r.shape.length-2],r.shape[r.shape.length-1]]),0),n=[],s=[];o.forEach(l=>{let[u,c]=NS(l,e);n.push(u),s.push(c)});let a=z(Wt(n,0),r.shape),i=z(Wt(s,0),r.shape);return[a,i]}}function NS(r,e=!1){return A.tidy(()=>{E(r.shape.length===2,()=>`qr2d() requires a 2D Tensor, but got a ${r.shape.length}D Tensor.`);let t=r.shape[0],o=r.shape[1],n=Xc(t),s=Po(r),a=zi([[1]],[1,1]),i=Po(a),l=t>=o?o:t;for(let u=0;u{let f=Fe(s,[u,u],[t-u,1]),d=Uu(f),h=Fe(s,[u,u],[1,1]),g=$t(Xt(h,0),zi([[-1]]),zi([[1]])),y=pe(h,O(g,d)),b=fe(f,y);b.shape[0]===1?i=Po(a):i=Je([a,Fe(b,[1,0],[b.shape[0]-1,b.shape[1]])],0);let _=He(fe(je(g,y),d)),w=Fe(s,[u,0],[t-u,o]),k=O(_,i),$=qe(i);if(u===0)s=pe(w,je(k,je($,w)));else{let M=pe(w,je(k,je($,w)));s=Je([Fe(s,[0,0],[u,o]),M],0)}let T=qe(k),F=Fe(n,[0,u],[t,n.shape[1]-u]);if(u===0)n=pe(F,je(je(F,i),T));else{let M=pe(F,je(je(F,i),T));n=Je([Fe(n,[0,0],[t,u]),M],1)}return[i,s,n]}),Ae([c,p,m])}return!e&&t>o&&(n=Fe(n,[0,0],[t,o]),s=Fe(s,[0,0],[o,o])),[n,s]})}var SS=N({qr_:Ej});var Ut;(function(r){r[r.NONE=0]="NONE",r[r.MEAN=1]="MEAN",r[r.SUM=2]="SUM",r[r.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"})(Ut||(Ut={}));function Aj(r,e,t=Ut.SUM_BY_NONZERO_WEIGHTS){let o=v(r,"losses","computeWeightedLoss"),n=null;e!=null&&(n=v(e,"weights","computeWeightedLoss"));let s=n==null?o:O(o,n);if(t===Ut.NONE)return s;if(t===Ut.SUM)return be(s);if(t===Ut.MEAN){if(n==null)return bt(s);{let a=o.size/n.size,i=fe(be(s),be(n));return a>1?fe(i,ce(a)):i}}if(t===Ut.SUM_BY_NONZERO_WEIGHTS){if(n==null)return fe(be(s),ce(o.size));{let a=O(n,Nr(o.shape)),i=ne(be(vo(a,ce(0))),"float32");return fe(be(s),i)}}throw Error(`Unknown reduction: ${t}`)}var Tr=N({computeWeightedLoss_:Aj});function Dj(r,e,t,o=Ut.SUM_BY_NONZERO_WEIGHTS){let n=v(r,"labels","absoluteDifference"),s=v(e,"predictions","absoluteDifference"),a=null;t!=null&&(a=v(t,"weights","absoluteDifference")),Ge(n.shape,s.shape,"Error in absoluteDifference: ");let i=Et(pe(n,s));return Tr(i,a,o)}var TS=N({absoluteDifference_:Dj});function $j(r,e,t,o,n=Ut.SUM_BY_NONZERO_WEIGHTS){let s=v(r,"labels","cosineDistance"),a=v(e,"predictions","cosineDistance"),i=null;o!=null&&(i=v(o,"weights","cosineDistance")),Ge(s.shape,a.shape,"Error in cosineDistance: ");let l=ce(1),u=pe(l,be(O(s,a),t,!0));return Tr(u,i,n)}var ES=N({cosineDistance_:$j});function Rj(r,e,t,o=Ut.SUM_BY_NONZERO_WEIGHTS){let n=v(r,"labels","hingeLoss"),s=v(e,"predictions","hingeLoss"),a=null;t!=null&&(a=v(t,"weights","hingeLoss")),Ge(n.shape,s.shape,"Error in hingeLoss: ");let i=ce(1);n=pe(O(ce(2),n),i);let l=Sr(pe(i,O(n,s)));return Tr(l,a,o)}var AS=N({hingeLoss_:Rj});function Fj(r,e,t,o=1,n=Ut.SUM_BY_NONZERO_WEIGHTS){let s=v(r,"labels","huberLoss"),a=v(e,"predictions","huberLoss"),i=null;t!=null&&(i=v(t,"weights","huberLoss")),Ge(s.shape,a.shape,"Error in huberLoss: ");let l=ce(o),u=Et(pe(a,s)),c=Bo(u,l),p=pe(u,c),m=ee(O(ce(.5),Me(c)),O(l,p));return Tr(m,i,n)}var DS=N({huberLoss_:Fj});function Oj(r,e,t,o=1e-7,n=Ut.SUM_BY_NONZERO_WEIGHTS){let s=v(r,"labels","logLoss"),a=v(e,"predictions","logLoss"),i=null;t!=null&&(i=v(t,"weights","logLoss")),Ge(s.shape,a.shape,"Error in logLoss: ");let l=ce(1),u=ce(o),c=He(O(s,ar(ee(a,u)))),p=O(pe(l,s),ar(ee(pe(l,a),u))),m=pe(c,p);return Tr(m,i,n)}var $S=N({logLoss_:Oj});function Pj(r,e,t,o=Ut.SUM_BY_NONZERO_WEIGHTS){let n=v(r,"labels","meanSquaredError"),s=v(e,"predictions","meanSquaredError"),a=null;t!=null&&(a=v(t,"weights","meanSquaredError")),Ge(n.shape,s.shape,"Error in meanSquaredError: ");let i=Pa(n,s);return Tr(i,a,o)}var RS=N({meanSquaredError_:Pj});function Mj(r,e){let t=v(r,"labels","sigmoidCrossEntropyWithLogits"),o=v(e,"logits","sigmoidCrossEntropyWithLogits");Ge(t.shape,o.shape,"Error in sigmoidCrossEntropyWithLogits: ");let n=Sr(o),s=O(o,t),a=Du(Qt(He(Et(o))));return ee(pe(n,s),a)}function Lj(r,e,t,o=0,n=Ut.SUM_BY_NONZERO_WEIGHTS){let s=v(r,"multiClassLabels","sigmoidCrossEntropy"),a=v(e,"logits","sigmoidCrossEntropy"),i=null;if(t!=null&&(i=v(t,"weights","sigmoidCrossEntropy")),Ge(s.shape,a.shape,"Error in sigmoidCrossEntropy: "),o>0){let u=ce(o),c=ce(1),p=ce(.5);s=ee(O(s,pe(c,u)),O(p,u))}let l=Mj(s,a);return Tr(l,i,n)}var FS=N({sigmoidCrossEntropy_:Lj});function zj(r,e,t=-1){if(t===-1&&(t=e.rank-1),t!==e.rank-1)throw Error(`Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank ${e.rank} and dim was ${t}`);return Zr((n,s,a)=>{let l=zm(s,[t],!0),u=pe(ne(s,"float32"),l);a([n,u]);let c=He(O(u,n));return{value:be(c,[t]),gradFunc:(f,d)=>{let[h,g]=d,y=Bn(f.shape,[t]);return[O(z(f,y),pe(ne(h,"float32"),Qt(g))),O(z(f,y),pe(Qt(g),ne(h,"float32")))]}}})(r,e)}function Bj(r,e,t,o=0,n=Ut.SUM_BY_NONZERO_WEIGHTS){let s=v(r,"onehotLabels","softmaxCrossEntropy"),a=v(e,"logits","softmaxCrossEntropy"),i=null;if(t!=null&&(i=v(t,"weights","softmaxCrossEntropy")),Ge(s.shape,a.shape,"Error in softmaxCrossEntropy: "),o>0){let u=ce(o),c=ce(1),p=ce(s.shape[1]);s=ee(O(s,pe(c,u)),fe(u,p))}let l=zj(s,a);return Tr(l,i,n)}var OS=N({softmaxCrossEntropy_:Bj});var Vj={fft:Fa,ifft:Li,rfft:Oa,irfft:Wu},Wj={hammingWindow:pS,hannWindow:mg,frame:fg,stft:mS},As={flipLeftRight:dS,resizeNearestNeighbor:hg,resizeBilinear:dg,rotateWithOffset:hS,cropAndResize:fS,nonMaxSuppression:gS,nonMaxSuppressionAsync:bS,nonMaxSuppressionWithScore:_S,nonMaxSuppressionWithScoreAsync:wS,nonMaxSuppressionPadded:vS,nonMaxSuppressionPaddedAsync:kS},sw={bandPart:CS,gramSchmidt:IS,qr:SS},Gj={absoluteDifference:TS,computeWeightedLoss:Tr,cosineDistance:ES,hingeLoss:AS,huberLoss:DS,logLoss:$S,meanSquaredError:RS,sigmoidCrossEntropy:FS,softmaxCrossEntropy:OS};var Mr=class extends tg{minimize(e,t=!1,o){let{value:n,grads:s}=this.computeGradients(e,o);if(o!=null){let a=o.map(i=>({name:i.name,tensor:s[i.name]}));this.applyGradients(a)}else this.applyGradients(s);return Ae(s),t?n:(n.dispose(),null)}get iterations(){return this.iterations_==null&&(this.iterations_=0),this.iterations_}incrementIterations(){this.iterations_=this.iterations+1}computeGradients(e,t){return sg(e,t)}dispose(){this.iterations_!=null&&Ae(this.iterations_)}async saveIterations(){return this.iterations_==null&&(this.iterations_=0),{name:"iter",tensor:ce(this.iterations_,"int32")}}async getWeights(){throw new Error("getWeights() is not implemented for this optimizer yet.")}async setWeights(e){throw new Error(`setWeights() is not implemented for this optimizer class ${this.getClassName()}`)}async extractIterations(e){return this.iterations_=(await e[0].tensor.data())[0],e.slice(1)}};Object.defineProperty(Mr,Symbol.hasInstance,{value:r=>r.minimize!=null&&r.computeGradients!=null&&r.applyGradients!=null});var rp=class extends Mr{constructor(e,t,o=null){super();this.learningRate=e,this.rho=t,this.epsilon=o,this.accumulatedGrads=[],this.accumulatedUpdates=[],o==null&&(this.epsilon=A.backend.epsilon())}applyGradients(e){(Array.isArray(e)?e.map(o=>o.name):Object.keys(e)).forEach((o,n)=>{let s=A.registeredVariables[o],a=!1;this.accumulatedGrads[n]==null&&(this.accumulatedGrads[n]={originalName:`${o}/accum_grad`,variable:V(()=>Ne(s).variable(a))}),this.accumulatedUpdates[n]==null&&(this.accumulatedUpdates[n]={originalName:`${o}/accum_var`,variable:V(()=>Ne(s).variable(a))});let i=Array.isArray(e)?e[n].tensor:e[o];if(i==null)return;let l=this.accumulatedGrads[n].variable,u=this.accumulatedUpdates[n].variable;V(()=>{let c=ee(O(l,this.rho),O(Me(i),1-this.rho)),p=O(fe(_t(ee(u,this.epsilon)),_t(ee(l,this.epsilon))),i),m=ee(O(u,this.rho),O(Me(p),1-this.rho));l.assign(c),u.assign(m);let f=ee(O(p,-this.learningRate),s);s.assign(f)})}),this.incrementIterations()}dispose(){this.accumulatedUpdates!=null&&(Ae(this.accumulatedGrads.map(e=>e.variable)),Ae(this.accumulatedUpdates.map(e=>e.variable)))}async getWeights(){let e=[...this.accumulatedGrads,...this.accumulatedUpdates];return[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=e.length/2,o=!1;this.accumulatedGrads=e.slice(0,t).map(n=>({originalName:n.name,variable:n.tensor.variable(o)})),this.accumulatedUpdates=e.slice(t,t*2).map(n=>({originalName:n.name,variable:n.tensor.variable(o)}))}getConfig(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.rho,t.epsilon)}};rp.className="Adadelta";oo(rp);var op=class extends Mr{constructor(e,t=.1){super();this.learningRate=e,this.initialAccumulatorValue=t,this.accumulatedGrads=[]}applyGradients(e){(Array.isArray(e)?e.map(o=>o.name):Object.keys(e)).forEach((o,n)=>{let s=A.registeredVariables[o];if(this.accumulatedGrads[n]==null){let l=!1;this.accumulatedGrads[n]={originalName:`${o}/accumulator`,variable:V(()=>Na(s.shape,this.initialAccumulatorValue).variable(l))}}let a=Array.isArray(e)?e[n].tensor:e[o];if(a==null)return;let i=this.accumulatedGrads[n].variable;V(()=>{let l=ee(i,Me(a));i.assign(l);let u=ee(O(fe(a,_t(ee(l,A.backend.epsilon()))),-this.learningRate),s);s.assign(u)})}),this.incrementIterations()}dispose(){this.accumulatedGrads!=null&&Ae(this.accumulatedGrads.map(e=>e.variable))}async getWeights(){return[await this.saveIterations()].concat(this.accumulatedGrads.map(e=>({name:e.originalName,tensor:e.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=!1;this.accumulatedGrads=e.map(o=>({originalName:o.name,variable:o.tensor.variable(t)}))}getConfig(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}}static fromConfig(e,t){return new e(t.learningRate,t.initialAccumulatorValue)}};op.className="Adagrad";oo(op);var np=class extends Mr{constructor(e,t,o,n=null){super();this.learningRate=e,this.beta1=t,this.beta2=o,this.epsilon=n,this.accumulatedFirstMoment=[],this.accumulatedSecondMoment=[],V(()=>{this.accBeta1=ce(t).variable(),this.accBeta2=ce(o).variable()}),n==null&&(this.epsilon=A.backend.epsilon())}applyGradients(e){let t=Array.isArray(e)?e.map(o=>o.name):Object.keys(e);V(()=>{let o=pe(1,this.accBeta1),n=pe(1,this.accBeta2);t.forEach((s,a)=>{let i=A.registeredVariables[s],l=!1;this.accumulatedFirstMoment[a]==null&&(this.accumulatedFirstMoment[a]={originalName:`${s}/m`,variable:V(()=>Ne(i).variable(l))}),this.accumulatedSecondMoment[a]==null&&(this.accumulatedSecondMoment[a]={originalName:`${s}/v`,variable:V(()=>Ne(i).variable(l))});let u=Array.isArray(e)?e[a].tensor:e[s];if(u==null)return;let c=this.accumulatedFirstMoment[a].variable,p=this.accumulatedSecondMoment[a].variable,m=ee(O(c,this.beta1),O(u,1-this.beta1)),f=ee(O(p,this.beta2),O(Me(u),1-this.beta2)),d=fe(m,o),h=fe(f,n);c.assign(m),p.assign(f);let g=ee(O(fe(d,ee(_t(h),this.epsilon)),-this.learningRate),i);i.assign(g)}),this.accBeta1.assign(O(this.accBeta1,this.beta1)),this.accBeta2.assign(O(this.accBeta2,this.beta2))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.accBeta2.dispose(),this.accumulatedFirstMoment!=null&&Ae(this.accumulatedFirstMoment.map(e=>e.variable)),this.accumulatedSecondMoment!=null&&Ae(this.accumulatedSecondMoment.map(e=>e.variable))}async getWeights(){let e=[...this.accumulatedFirstMoment,...this.accumulatedSecondMoment];return[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e),V(()=>{this.accBeta1.assign(_r(this.beta1,this.iterations_+1)),this.accBeta2.assign(_r(this.beta2,this.iterations_+1))});let t=e.length/2,o=!1;this.accumulatedFirstMoment=e.slice(0,t).map(n=>({originalName:n.name,variable:n.tensor.variable(o)})),this.accumulatedSecondMoment=e.slice(t,t*2).map(n=>({originalName:n.name,variable:n.tensor.variable(o)}))}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon)}};np.className="Adam";oo(np);var sp=class extends Mr{constructor(e,t,o,n=null,s=0){super();this.learningRate=e,this.beta1=t,this.beta2=o,this.epsilon=n,this.decay=s,this.accumulatedFirstMoment=[],this.accumulatedWeightedInfNorm=[],V(()=>{this.iteration=ce(0).variable(),this.accBeta1=ce(t).variable()}),n==null&&(this.epsilon=A.backend.epsilon())}applyGradients(e){let t=Array.isArray(e)?e.map(o=>o.name):Object.keys(e);V(()=>{let o=pe(1,this.accBeta1),n=fe(-this.learningRate,ee(O(this.iteration,this.decay),1));t.forEach((s,a)=>{let i=A.registeredVariables[s],l=!1;this.accumulatedFirstMoment[a]==null&&(this.accumulatedFirstMoment[a]={originalName:`${s}/m`,variable:Ne(i).variable(l)}),this.accumulatedWeightedInfNorm[a]==null&&(this.accumulatedWeightedInfNorm[a]={originalName:`${s}/v`,variable:Ne(i).variable(l)});let u=Array.isArray(e)?e[a].tensor:e[s];if(u==null)return;let c=this.accumulatedFirstMoment[a].variable,p=this.accumulatedWeightedInfNorm[a].variable,m=ee(O(c,this.beta1),O(u,1-this.beta1)),f=O(p,this.beta2),d=Et(u),h=Ir(f,d);c.assign(m),p.assign(h);let g=ee(O(fe(n,o),fe(m,ee(h,this.epsilon))),i);i.assign(g)}),this.iteration.assign(ee(this.iteration,1)),this.accBeta1.assign(O(this.accBeta1,this.beta1))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.iteration.dispose(),this.accumulatedFirstMoment!=null&&Ae(this.accumulatedFirstMoment.map(e=>e.variable)),this.accumulatedWeightedInfNorm!=null&&Ae(this.accumulatedWeightedInfNorm.map(e=>e.variable))}async getWeights(){throw new Error("getWeights() is not implemented for Adamax yet.")}async setWeights(e){throw new Error("setWeights() is not implemented for Adamax yet.")}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}}static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon,t.decay)}};sp.className="Adamax";oo(sp);var cl=class extends Mr{constructor(e){super();this.learningRate=e,this.setLearningRate(e)}applyGradients(e){(Array.isArray(e)?e.map(o=>o.name):Object.keys(e)).forEach((o,n)=>{let s=Array.isArray(e)?e[n].tensor:e[o];if(s==null)return;let a=A.registeredVariables[o];V(()=>{let i=ee(O(this.c,s),a);a.assign(i)})}),this.incrementIterations()}setLearningRate(e){this.learningRate=e,this.c!=null&&this.c.dispose(),this.c=Dt(ce(-e))}dispose(){this.c.dispose()}async getWeights(){return[await this.saveIterations()]}async setWeights(e){if(e=await this.extractIterations(e),e.length!==0)throw new Error("SGD optimizer does not have settable weights.")}getConfig(){return{learningRate:this.learningRate}}static fromConfig(e,t){return new e(t.learningRate)}};cl.className="SGD";oo(cl);var ip=class extends cl{constructor(e,t,o=!1){super(e);this.learningRate=e,this.momentum=t,this.useNesterov=o,this.accumulations=[],this.m=ce(this.momentum)}applyGradients(e){(Array.isArray(e)?e.map(o=>o.name):Object.keys(e)).forEach((o,n)=>{let s=A.registeredVariables[o];if(this.accumulations[n]==null){let l=!1;this.accumulations[n]={originalName:`${o}/momentum`,variable:V(()=>Ne(s).variable(l))}}let a=this.accumulations[n].variable,i=Array.isArray(e)?e[n].tensor:e[o];i!=null&&V(()=>{let l,u=ee(O(this.m,a),i);this.useNesterov?l=ee(O(this.c,ee(i,O(u,this.m))),s):l=ee(O(this.c,u),s),a.assign(u),s.assign(l)})}),this.incrementIterations()}dispose(){this.m.dispose(),this.accumulations!=null&&Ae(this.accumulations.map(e=>e.variable))}setMomentum(e){this.momentum=e}async getWeights(){return[await this.saveIterations()].concat(this.accumulations.map(e=>({name:e.originalName,tensor:e.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=!1;this.accumulations=e.map(o=>({originalName:o.name,variable:o.tensor.variable(t)}))}getConfig(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}}static fromConfig(e,t){return new e(t.learningRate,t.momentum,t.useNesterov)}};ip.className="Momentum";oo(ip);var ap=class extends Mr{constructor(e,t=.9,o=0,n=null,s=!1){super();if(this.learningRate=e,this.decay=t,this.momentum=o,this.epsilon=n,this.accumulatedMeanSquares=[],this.accumulatedMoments=[],this.accumulatedMeanGrads=[],this.centered=s,n==null&&(this.epsilon=A.backend.epsilon()),e==null)throw new Error("learningRate for RMSPropOptimizer must be defined.")}applyGradients(e){(Array.isArray(e)?e.map(o=>o.name):Object.keys(e)).forEach((o,n)=>{let s=A.registeredVariables[o],a=!1;this.accumulatedMeanSquares[n]==null&&(this.accumulatedMeanSquares[n]={originalName:`${o}/rms`,variable:V(()=>Ne(s).variable(a))}),this.accumulatedMoments[n]==null&&(this.accumulatedMoments[n]={originalName:`${o}/momentum`,variable:V(()=>Ne(s).variable(a))}),this.accumulatedMeanGrads[n]==null&&this.centered&&(this.accumulatedMeanGrads[n]={originalName:`${o}/mg`,variable:V(()=>Ne(s).variable(a))});let i=Array.isArray(e)?e[n].tensor:e[o];if(i==null)return;let l=this.accumulatedMeanSquares[n].variable,u=this.accumulatedMoments[n].variable;V(()=>{let c=ee(O(l,this.decay),O(Me(i),1-this.decay));if(this.centered){let p=this.accumulatedMeanGrads[n].variable,m=ee(O(p,this.decay),O(i,1-this.decay)),f=fe(O(i,this.learningRate),_t(pe(c,ee(Me(m),this.epsilon)))),d=ee(O(u,this.momentum),f);l.assign(c),p.assign(m),u.assign(d);let h=pe(s,d);s.assign(h)}else{let p=ee(O(l,this.decay),O(Me(i),1-this.decay)),m=ee(O(u,this.momentum),fe(O(i,this.learningRate),_t(ee(p,this.epsilon))));l.assign(p),u.assign(m);let f=pe(s,m);s.assign(f)}})}),this.incrementIterations()}dispose(){this.accumulatedMeanSquares!=null&&Ae(this.accumulatedMeanSquares.map(e=>e.variable)),this.accumulatedMeanGrads!=null&&this.centered&&Ae(this.accumulatedMeanGrads.map(e=>e.variable)),this.accumulatedMoments!=null&&Ae(this.accumulatedMoments.map(e=>e.variable))}async getWeights(){let e=[...this.accumulatedMeanSquares,...this.accumulatedMoments];return this.centered&&e.push(...this.accumulatedMeanGrads),[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=this.centered?e.length/3:e.length/2,o=!1;this.accumulatedMeanSquares=e.slice(0,t).map(n=>({originalName:n.name,variable:n.tensor.variable(o)})),this.accumulatedMoments=e.slice(t,t*2).map(n=>({originalName:n.name,variable:n.tensor.variable(o)})),this.centered&&(this.accumulatedMeanGrads=e.slice(t*2,t*3).map(n=>({originalName:n.name,variable:n.tensor.variable(o)})))}getConfig(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}}static fromConfig(e,t){return new e(t.learningRate,t.decay,t.momentum,t.epsilon,t.centered)}};ap.className="RMSProp";oo(ap);var Ma=class{static sgd(e){return new cl(e)}static momentum(e,t,o=!1){return new ip(e,t,o)}static rmsprop(e,t=.9,o=0,n=null,s=!1){return new ap(e,t,o,n,s)}static adam(e=.001,t=.9,o=.999,n=null){return new np(e,t,o,n)}static adadelta(e=.001,t=.95,o=null){return new rp(e,t,o)}static adamax(e=.002,t=.9,o=.999,n=null,s=0){return new sp(e,t,o,n,s)}static adagrad(e,t=.1){return new op(e,t)}};var pl={sgd:Ma.sgd,momentum:Ma.momentum,adadelta:Ma.adadelta,adagrad:Ma.adagrad,rmsprop:Ma.rmsprop,adamax:Ma.adamax,adam:Ma.adam};var Uj=(()=>typeof requestAnimationFrame!="undefined"?requestAnimationFrame:typeof setImmediate!="undefined"?setImmediate:r=>r())();function rf(){return new Promise(r=>Uj(()=>r()))}var S={};et(S,{ERF_A1:()=>tq,ERF_A2:()=>rq,ERF_A3:()=>oq,ERF_A4:()=>nq,ERF_A5:()=>sq,ERF_P:()=>eq,PARALLELIZE_THRESHOLD:()=>gg,SELU_SCALE:()=>aw,SELU_SCALEALPHA:()=>iw,applyActivation:()=>Hu,assertAndGetBroadcastShape:()=>Ve,assertAxesAreInnerMostDims:()=>FG,assertParamsConsistent:()=>jj,assignToTypedArray:()=>fq,axesAreInnerMostDims:()=>y_,calculateShapes:()=>TN,castTensor:()=>_q,combineLocations:()=>qN,complexWithEvenIndex:()=>cq,complexWithOddIndex:()=>pq,computeConv2DInfo:()=>Cu,computeConv3DInfo:()=>UN,computeDefaultPad:()=>r_,computeDilation2DInfo:()=>sW,computeOptimalWindowSize:()=>Hj,computeOutAndReduceShapes:()=>b_,computeOutShape:()=>qj,computePool2DInfo:()=>e_,computePool3DInfo:()=>iW,convertConv2DDataFormat:()=>GN,eitherStridesOrDilationsAreOne:()=>Pt,expandShapeToKeepDim:()=>Bn,exponent:()=>hq,exponents:()=>dq,fromStringArrayToUint8:()=>kq,fromUint8ToStringArray:()=>vq,getAxesPermutation:()=>__,getBroadcastDims:()=>YW,getComplexWithIndex:()=>mq,getFusedBiasGradient:()=>qu,getFusedDyActivation:()=>ju,getImageCenter:()=>Kj,getInnerMostAxes:()=>OG,getPermuted:()=>Yj,getReductionAxes:()=>Nt,getReshaped:()=>Xj,getReshapedPermuted:()=>Zj,getSliceBeginCoords:()=>Jj,getSliceSize:()=>Qj,getUndoAxesPermutation:()=>Lm,log:()=>aq,mergeRealAndImagArrays:()=>lq,prepareAndValidate:()=>SN,prepareSplitSize:()=>gq,reshapeTensor:()=>wq,segment_util:()=>PS,shouldFuse:()=>Ku,slice_util:()=>sr,splitRealAndImagArrays:()=>uq,tupleValuesAreOne:()=>Mo,upcastType:()=>fr,validateInput:()=>Qh,validateUpdateShape:()=>qb,warn:()=>iq});function jj(r,e){let t=r[0].length;r.forEach((n,s)=>{E(n.length===t,()=>`Error in concat${t}D: rank of tensors[${s}] must be the same as the rank of the rest (${t})`)}),E(e>=0&&e`Error in concat${t}D: axis must be between 0 and ${t-1}.`);let o=r[0];r.forEach((n,s)=>{for(let a=0;a`Error in concat${t}D: Shape of tensors[${s}] (${n}) does not match the shape of the rest (${o}) along the non-concatenated axis ${s}.`)})}function qj(r,e){let t=r[0].slice();for(let o=1;o=e*2+1||a%2==1?s.push(a):n.push(a);o.push(...n),o.push(0),o.push(...s)}return o}function Zj(r,e,t,o=!0){let n=[];o?n.push(r[0]/t):n.push(r[0]*t);for(let s=1;s"Number of splits must evenly divide the axis."),o=new Array(e).fill(r.shape[t]/e);else{let n=e.reduce((a,i)=>(i===-1&&(a+=1),a),0);E(n<=1,()=>"There should be only one negative value in split array.");let s=e.indexOf(-1);if(s!==-1){let a=e.reduce((i,l)=>l>0?i+l:i);e[s]=r.shape[t]-a}E(r.shape[t]===e.reduce((a,i)=>a+i),()=>"The sum of sizes must match the size of the axis dimension."),o=e}return o}var PS={};et(PS,{collectGatherOpShapeInfo:()=>bq,computeOutShape:()=>yq,segOpComputeOptimalWindowSize:()=>xq});function xq(r,e){let t=!1,o;for(r<=gg?(o=r,t=!0):o=$c(r,Math.floor(Math.sqrt(r)));!t;)o>e||o===r?t=!0:o=$c(r,o+1);return o}function yq(r,e,t){let o=[],n=r.length;for(let s=0;sn))throw new Error(`Expect batchDims in the range of [-${n}, ${n}], but got ${o}`);if(o<0&&(o+=n),o>s)throw new Error(`batchDims (${o}) must be less than rank(x) ( + ${s}).`);if(tzc(e))}catch(e){throw new Error(`Failed to decode encoded string bytes into utf-8, error: ${e}`)}}function kq(r){return r.map(e=>rl(e))}var Er={};et(Er,{nonMaxSuppressionV3Impl:()=>rw,nonMaxSuppressionV4Impl:()=>ow,nonMaxSuppressionV5Impl:()=>nw,whereImpl:()=>O_});var xg={kernelName:is,inputsToSave:["x"],gradFunc:(r,e)=>{let[t]=e;return{x:()=>O(r,Es(ne(t,"float32"),-1))}}};var MS={kernelName:js,inputsToSave:["x"],gradFunc:(r,e)=>{let[t]=e;return{x:()=>{let o=Me(ne(t,"float32")),n=_t(pe(ce(1),o));return He(fe(r,n))}}}};var LS={kernelName:qs,inputsToSave:["x"],gradFunc:(r,e)=>{let[t]=e;return{x:()=>{let o=_t(pe(Me(ne(t,"float32")),1));return fe(r,o)}}}};var zS={kernelName:bo,inputsToSave:["a","b"],gradFunc:(r,e)=>{let[t,o]=e,n=Ve(t.shape,o.shape);return{a:()=>{let i=r,l=Nt(t.shape,n);return l.length>0&&(i=be(i,l)),z(i,t.shape)},b:()=>{let i=r,l=Nt(o.shape,n);return l.length>0&&(i=be(i,l)),z(i,o.shape)}}}};var BS={kernelName:Ho,saveAllInputs:!0,gradFunc:(r,e)=>{let t={};return e.forEach((o,n)=>{t[n]=()=>r.clone()}),t}};var VS={kernelName:Ko,inputsToSave:["x"],gradFunc:(r,e)=>{let[t]=e;return{x:()=>Ne(t)}}};var WS={kernelName:oa,inputsToSave:["x"],gradFunc:(r,e)=>{let[t]=e;return{x:()=>Ne(t)}}};var GS={kernelName:Hs,inputsToSave:["x"],gradFunc:(r,e)=>{let[t]=e;return{x:()=>fe(r,_t(pe(ce(1),Me(ne(t,"float32")))))}}};var US={kernelName:Ks,inputsToSave:["x"],gradFunc:(r,e)=>{let[t]=e;return{x:()=>{let o=_t(ee(ce(1),Me(ne(t,"float32"))));return fe(r,o)}}}};var jS={kernelName:Zs,inputsToSave:["a","b"],gradFunc:(r,e)=>{let[t,o]=e,n=Ve(t.shape,o.shape);return{a:()=>{let i=ee(Me(t),Me(o)),l=O(r,fe(o,i)),u=Nt(t.shape,n);return u.length>0&&(l=be(l,u)),z(l,t.shape)},b:()=>{let i=ee(Me(t),Me(o)),l=He(O(r,fe(t,i))),u=Nt(o.shape,n);return u.length>0&&(l=be(l,u)),z(l,o.shape)}}}};var qS={kernelName:Xs,inputsToSave:["x"],gradFunc:(r,e)=>{let[t]=e;return{x:()=>fe(r,ee(Me(ne(t,"float32")),1))}}};var HS={kernelName:Ys,inputsToSave:["x"],gradFunc:(r,e)=>{let[t]=e;return{x:()=>fe(r,pe(ce(1),Me(ne(t,"float32"))))}}};function Cq(r,e,t,o,n=[1,1,1],s,a){let i=v(r,"dy","avgPool3dGrad"),l=v(e,"input","avgPool3dGrad"),u=i,c=l,p=!1;l.rank===4&&(p=!0,u=z(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]]),c=z(l,[1,l.shape[0],l.shape[1],l.shape[2],l.shape[3]])),E(u.rank===5,()=>`Error in avgPool3dGrad: dy must be rank 5 but got rank ${u.rank}.`),E(c.rank===5,()=>`Error in avgPool3dGrad: input must be rank 5 but got rank ${c.rank}.`),E(Pt(o,n),()=>`Error in avgPool3dGrad: Either strides or dilations must be 1. Got strides ${o} and dilations '${n}'`),a!=null&&E(it(s),()=>`Error in avgPool3dGrad: pad must be an integer when using, dimRoundingMode ${a} but got pad ${s}.`);let m={dy:u,input:c},f={filterSize:t,strides:o,dilations:n,pad:s,dimRoundingMode:a},d=A.runKernel(Hl,m,f);return p?z(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}var KS=N({avgPool3dGrad_:Cq});var XS={kernelName:na,inputsToSave:["x"],gradFunc:(r,e,t)=>{let[o]=e,{filterSize:n,strides:s,dilations:a,pad:i,dimRoundingMode:l}=t,u=a==null?[1,1,1]:a;return{x:()=>KS(r,o,n,s,u,i,l)}}};function Iq(r,e,t,o,n){let s=v(r,"dy","avgPoolGrad"),a=v(e,"input","avgPoolGrad");E(a.rank===s.rank,()=>`Rank of input (${a.rank}) does not match rank of dy (${s.rank})`);let i=a,l=s,u=!1;a.rank===3&&(u=!0,i=z(a,[1,a.shape[0],a.shape[1],a.shape[2]]),l=z(s,[1,s.shape[0],s.shape[1],s.shape[2]])),E(l.rank===4,()=>`Error in avgPoolGrad: dy must be rank 4 but got rank ${l.rank}.`),E(i.rank===4,()=>`Error in avgPoolGrad: input must be rank 4 but got rank ${i.rank}.`);let c={dy:l,input:i},p={filterSize:t,strides:o,pad:n},m=A.runKernel(ql,c,p);return u?z(m,[m.shape[1],m.shape[2],m.shape[3]]):m}var YS=N({avgPoolGrad_:Iq});var ZS={kernelName:Xo,inputsToSave:["x"],gradFunc:(r,e,t)=>{let[o]=e,{filterSize:n,strides:s,pad:a}=t;return{x:()=>YS(r,o,n,s,a)}}};var JS={kernelName:Yo,inputsToSave:["a","b"],gradFunc:(r,e,t)=>{let[o,n]=e,{transposeA:s,transposeB:a}=t;return!s&&!a?{a:()=>je(r,n,!1,!0),b:()=>je(o,r,!0,!1)}:!s&&a?{a:()=>je(r,n,!1,!1),b:()=>je(r,o,!0,!1)}:s&&!a?{a:()=>je(n,r,!1,!0),b:()=>je(o,r,!1,!1)}:{a:()=>je(n,r,!0,!0),b:()=>je(r,o,!0,!0)}}};var QS={kernelName:sa,gradFunc:(r,e,t)=>{let{blockShape:o,crops:n}=t;return{x:()=>Da(r,o,n)}}};var e0={kernelName:yb,gradFunc:(r,e,t)=>{let o=t,n=o.inputShape,s=o.shape,a=Array.from(s);for(let l=n.length-1;l>=0;l--)if(n[l]===s[l])a[l]=1;else if(n[l]!==1)throw new Error(`broadcastTo(): [${n}] cannot be broadcast to [${s}].`);let i=[];for(let l=0;l1&&i.push(l);return{x:()=>be(r,i,!0)}}};var t0={kernelName:Fo,gradFunc:r=>({x:()=>r.clone()})};var r0={kernelName:Js,gradFunc:r=>({x:()=>Ne(r)})};var o0={kernelName:Oo,inputsToSave:["x"],gradFunc:(r,e,t)=>{let[o]=e,{clipValueMin:n,clipValueMax:s}=t;return{x:()=>$t(dr(Or(o,n),no(o,s)),r,Ne(r))}}};var n0={kernelName:ia,inputsToSave:["x"],gradFunc:xg.gradFunc};var s0={kernelName:as,saveAllInputs:!0,gradFunc:(r,e,t)=>{let o=e.map(l=>l.shape),{axis:n}=t,s=tr(n,e[0].shape)[0],a=o.map(l=>l[s]);return ur(r,a,s).map(l=>()=>l)}};var i0={kernelName:Zo,inputsToSave:["x","filter"],gradFunc:(r,e,t)=>{let[o,n]=e,{dilations:s,strides:a,pad:i,dataFormat:l}=t;return E(Mo(s),()=>`Error in gradient of conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${s}'`),{x:()=>Kc(o.shape,r,n,a,i,l),filter:()=>tp(o,r,n.shape,a,i,l)}}};var a0={kernelName:Jo,inputsToSave:["dy","filter"],gradFunc:(r,e,t)=>{let[o,n]=e,{strides:s,pad:a,dataFormat:i,dimRoundingMode:l}=t;return{dy:()=>Xr(r,n,s,a,i,1,l),filter:()=>tp(r,o,n.shape,s,a,i,l)}}};function Nq(r,e,t,o,n){let s=r;r.rank===4&&(s=z(r,[1,r.shape[0],r.shape[1],r.shape[2],r.shape[3]]));let a=e;a.rank===4&&(a=z(e,[1,e.shape[0],e.shape[1],e.shape[2],e.shape[3]])),E(s.rank===5,()=>`Error in conv3dDerFilter: input must be rank 5, but got shape ${s.shape}.`),E(a.rank===5,()=>`Error in conv3dDerFilter: dy must be rank 5, but got shape ${a.shape}.`),E(t.length===5,()=>`Error in conv3dDerFilter: filterShape must be length 5, but got ${t}.`),E(s.shape[4]===t[3],()=>`Error in conv3dDerFilter: depth of input ${s.shape[4]}) must match input depth in filter (${t[3]}.`),E(a.shape[4]===t[4],()=>`Error in conv3dDerFilter: depth of dy (${a.shape[4]}) must match output depth for filter (${t[4]}).`);let i={x:s,dy:a},l={strides:o,pad:n,filterShape:t};return A.runKernel(Zl,i,l)}var l0=N({conv3DBackpropFilter_:Nq});var u0={kernelName:aa,inputsToSave:["x","filter"],gradFunc:(r,e,t)=>{let{dilations:o,strides:n,pad:s}=t;E(Mo(o),()=>`Error in gradient of conv3D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${o}'`);let[a,i]=e;return{x:()=>og(a.shape,r,i,n,s),filter:()=>l0(a,r,i.shape,n,s)}}};var c0={kernelName:Qo,inputsToSave:["x"],gradFunc:(r,e)=>{let[t]=e;return{x:()=>O(He(Bu(ne(t,"float32"))),r)}}};var p0={kernelName:Qs,inputsToSave:["x"],gradFunc:(r,e)=>{let[t]=e;return{x:()=>O(Vu(ne(t,"float32")),r)}}};var m0={kernelName:en,inputsToSave:["x"],gradFunc:(r,e,t)=>{let[o]=e,{axis:n,exclusive:s,reverse:a}=t;return{x:()=>{let i=__([n],o.rank),l=Eu(r,n,s,!a);return i!=null&&(l=qe(l,i)),l}}}};var f0={kernelName:tn,inputsToSave:["x","filter"],gradFunc:(r,e,t)=>{let{dilations:o,strides:n,pad:s,dimRoundingMode:a}=t,i=o==null?[1,1]:o;E(Mo(i),()=>`Error in gradient of depthwiseConv2dNative: dilation rates greater than 1 are not yet supported. Got dilations '${i}'`);let[l,u]=e;return E(l.rank===4,()=>`Error in gradient of depthwiseConv2dNative: input must be rank 4, but got rank ${l.rank}.`),E(u.rank===4,()=>`Error in gradient of depthwiseConv2dNative: filter must be rank 4, but got rank ${u.rank}.`),E(l.shape[3]===u.shape[2],()=>`Error in gradient of depthwiseConv2d: number of input channels (${l.shape[3]}) must match the inChannels dimension in filter ${u.shape[2]}.`),E(Pt(n,i),()=>`Error in gradient of depthwiseConv2d: Either strides or dilations must be 1. Got strides ${n} and dilations '${i}'.`),a!=null&&E(it(s),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${a} but got pad ${s}.`),{x:()=>pg(l.shape,r,u,n,s,o,a),filter:()=>cg(l,r,u.shape,n,s,o,a)}}};var d0={kernelName:la,inputsToSave:["x","filter"],gradFunc:(r,e,t)=>{let[o,n]=e,s={x:o,filter:n,dy:r},a={x:o,filter:n,dy:r};return{x:()=>A.runKernel(Fc,s,t),filter:()=>A.runKernel(Oc,a,t)}}};var h0={kernelName:ri,outputsToSave:[!0],gradFunc:(r,e)=>{let[t]=e,o={dy:r,y:t};return{x:()=>A.runKernel(ou,o)}}};var g0={kernelName:oi,inputsToSave:["x"],gradFunc:(r,e)=>{let[t]=e,o=O(Qt(He(Me(t))),2/Math.sqrt(Math.PI));return{x:()=>O(r,o)}}};var x0={kernelName:on,outputsToSave:[!0],gradFunc:(r,e)=>{let[t]=e;return{x:()=>O(r,t)}}};var y0={kernelName:ls,inputsToSave:["input"],gradFunc:(r,e)=>{let[t]=e;return{input:()=>z(r,t.shape)}}};var b0={kernelName:si,inputsToSave:["x"],gradFunc:(r,e)=>{let[t]=e;return{x:()=>O(r,Qt(t))}}};var _0={kernelName:nn,gradFunc:r=>({x:()=>Ne(r)})};var w0={kernelName:sn,inputsToSave:["a","b"],gradFunc:(r,e)=>{let[t,o]=e,n=Ve(t.shape,o.shape);return{a:()=>{let i=fe(r,ne(o,"float32")),l=Nt(t.shape,n);return l.length>0?z(be(i,l),t.shape):i},b:()=>{let i=O(r,ne(t,"float32")),l=Nt(o.shape,n);l.length>0&&(i=z(be(i,l),o.shape));let u=Me(o);return He(fe(i,ne(u,"float32")))}}}};var v0={kernelName:an,inputsToSave:["x","mean","variance","scale"],gradFunc:(r,e,t)=>{let{varianceEpsilon:o}=t,[n,s,a,i]=e,l=i==null?ce(1):i,u=Nt(s.shape,n.shape),c=[];if(s.rank===1){for(let w=0;ws.rank===1?z(O(O(r,zo(z(f,[1,1,1,s.shape[0]]),c)),l),n.shape):z(O(O(r,f),l),n.shape),mean:()=>{let w=O(O(f,ce(-1)),m);return s.rank===1&&(w=be(w,u)),z(w,s.shape)},variance:()=>{let w=O(O(d,p),m);return s.rank===1&&(w=be(w,u)),z(w,s.shape)},scale:()=>{let w=O(p,f),k=O(r,w);return s.rank===1&&(k=be(k,u)),z(k,s.shape)},offset:()=>{let w=r;return s.rank===1&&(w=be(w,u)),z(w,s.shape)}}}};var I0={kernelName:us,inputsToSave:["x","indices"],gradFunc:(r,e,t)=>{let[o,n]=e,{axis:s}=t,a=tr(s,o.shape)[0];return{x:()=>{let l=o.shape,u=n.size,c=l.slice(0,a),p=c.length,m=l.slice(s,l.length).slice(1),f=m.length,d=k0(0,p),h=k0(p+1,p+1+f),g=C0([c,[u],m]),y=z(r,g),b=z(n,[u]),_=C0([[p],d,h]),w=qe(y,_),k=Jm(w,b,o.shape[a]),$=Lm(_);return k=qe(k,$),k},indices:()=>n}}};function k0(r,e){let t=[];for(let o=r;o{let[t,o]=e;return{a:()=>Ne(t),b:()=>Ne(o)}}};var S0={kernelName:cs,gradFunc:r=>({x:()=>ne(r,"float32")})};var T0={kernelName:ui,gradFunc:r=>({x:()=>Ne(r)})};var E0={kernelName:ci,gradFunc:r=>({x:()=>Ne(r)})};var A0={kernelName:pi,gradFunc:r=>({x:()=>Ne(r)})};var D0={kernelName:un,inputsToSave:["x"],gradFunc:(r,e,t)=>{let[o]=e,{alpha:n}=t,s=Xt(o,0);return{x:()=>$t(s,r,O(r,n))}}};var $0={kernelName:di,inputsToSave:["x"],gradFunc:(r,e)=>{let[t]=e;return{x:()=>fe(r,ee(t,1))}}};var R0={kernelName:cn,inputsToSave:["x"],gradFunc:(r,e)=>{let[t]=e;return{x:()=>fe(r,ne(t,"float32"))}}};var F0={kernelName:bb,inputsToSave:[],outputsToSave:[!0],gradFunc:(r,e,t)=>{let[o]=e,{axis:n}=t;return{logits:()=>{let s=!0,a=Qt(o);return pe(r,O(be(r,n,s),a))}}}};function Sq(r,e,t,o=5,n=1,s=1,a=.5){let i={x:r,y:e,dy:t},l={depthRadius:o,bias:n,alpha:s,beta:a};return A.runKernel(lu,i,l)}var O0=N({localResponseNormalizationBackprop_:Sq});var P0={kernelName:ca,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(r,e,t)=>{let[o,n]=e,{depthRadius:s,bias:a,alpha:i,beta:l}=t;return{x:()=>O0(o,n,r,s,a,i,l)}}};function yg(r,e,t,o){return e.rankO(r,ne(Yr(t,e),r.dtype))}}var lw={kernelName:pn,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(r,e,t)=>{let o=t,{reductionIndices:n}=o,s=e[0],a=e[1],i=tr(n,s.shape),l=yg(r,a,s,i);return{x:()=>l.x()}}};var M0={kernelName:mn,inputsToSave:["a","b"],gradFunc:(r,e)=>{let[t,o]=e;return{a:()=>O(r,ne(Or(t,o),"float32")),b:()=>O(r,ne(Ta(t,o),"float32"))}}};function Tq(r,e,t,o,n,s=[1,1,1],a,i){let l=v(r,"dy","maxPool3dGrad"),u=v(e,"input","maxPool3dGrad"),c=v(t,"output","maxPool3dGrad"),p=l,m=u,f=c,d=!1;u.rank===4&&(d=!0,p=z(l,[1,l.shape[0],l.shape[1],l.shape[2],l.shape[3]]),m=z(u,[1,u.shape[0],u.shape[1],u.shape[2],u.shape[3]]),f=z(c,[1,c.shape[0],c.shape[1],c.shape[2],c.shape[3]])),E(p.rank===5,()=>`Error in maxPool3dGrad: dy must be rank 5 but got rank ${p.rank}.`),E(m.rank===5,()=>`Error in maxPool3dGrad: input must be rank 5 but got rank ${m.rank}.`),E(f.rank===5,()=>`Error in maxPool3dGrad: output must be rank 5 but got rank ${f.rank}.`),E(Pt(n,s),()=>`Error in maxPool3dGrad: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`),i!=null&&E(it(a),()=>`Error in maxPool3dGrad: pad must be an integer when using, dimRoundingMode ${i} but got pad ${a}.`);let h={dy:p,input:m,output:f},g={filterSize:o,strides:n,dilations:s,pad:a,dimRoundingMode:i},y=A.runKernel(cu,h,g);return d?z(y,[y.shape[1],y.shape[2],y.shape[3],y.shape[4]]):y}var L0=N({maxPool3dGrad_:Tq});var z0={kernelName:pa,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(r,e,t)=>{let[o,n]=e,{filterSize:s,strides:a,dilations:i,pad:l,dimRoundingMode:u}=t,c=i==null?[1,1,1]:i;return{x:()=>L0(r,o,n,s,a,c,l,u)}}};function Eq(r,e,t,o,n,s,a){let i=v(r,"dy","maxPoolGrad"),l=v(e,"input","maxPoolGrad"),u=v(t,"output","maxPoolGrad");E(l.rank===i.rank,()=>`Rank of input (${l.rank}) does not match rank of dy (${i.rank})`),E(i.rank===4,()=>`Error in maxPoolGrad: dy must be rank 4 but got rank ${i.rank}.`),E(l.rank===4,()=>`Error in maxPoolGrad: input must be rank 4 but got rank ${l.rank}.`),a!=null&&E(it(s),()=>`Error in maxPoolGrad: pad must be an integer when using, dimRoundingMode ${a} but got pad ${s}.`);let c={dy:i,input:l,output:u},p={filterSize:o,strides:n,pad:s,dimRoundingMode:a};return A.runKernel(uu,c,p)}var B0=N({maxPoolGrad_:Eq});var V0={kernelName:fn,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(r,e,t)=>{let[o,n]=e,{filterSize:s,strides:a,pad:i}=t;return{x:()=>B0(r,o,n,s,a,i)}}};var W0={kernelName:dn,inputsToSave:["x"],gradFunc:(r,e,t)=>{let[o]=e,{axis:n}=t,s=tr(n,o.shape),i=b_(o.shape,s)[1],l=dt(i);return{x:()=>{let c=o.shape.slice();s.forEach(f=>{c[f]=1});let p=z(r,c);return fe(O(p,Nr(o.shape,"float32")),l)}}}};var G0={kernelName:hn,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(r,e,t)=>{let o=t,{axis:n}=o,[s,a]=e,i=tr(n,s.shape),l=yg(r,a,s,i);return{x:()=>l.x()}}};var U0={kernelName:gn,inputsToSave:["a","b"],gradFunc:(r,e)=>{let[t,o]=e;return{a:()=>O(r,ne(no(t,o),"float32")),b:()=>O(r,ne(Xt(t,o),"float32"))}}};var j0={kernelName:ma,inputsToSave:["x"],gradFunc:(r,e,t)=>{let o=e[0],{paddings:n}=t,s=n.map(a=>a[0]);return{x:()=>Fe(r,s,o.shape)}}};var q0={kernelName:gi,inputsToSave:["a","b"],gradFunc:(r,e)=>{let[t,o]=e,n=Ve(t.shape,o.shape);return{a:()=>{let i=Nt(t.shape,n);return i.length>0?z(be(r,i),t.shape):r},b:()=>{let i=O(r,He(Ns(fe(t,o)))),l=Nt(o.shape,n);return l.length>0?z(be(i,l),o.shape):i}}}};var H0={kernelName:xn,inputsToSave:["a","b"],gradFunc:(r,e)=>{let[t,o]=e,n=Ve(t.shape,o.shape);return{a:()=>{let i=O(r,ne(o,"float32")),l=Nt(t.shape,n);return l.length>0?z(be(i,l),t.shape):i},b:()=>{let i=O(r,ne(t,"float32")),l=Nt(o.shape,n);return l.length>0?z(be(i,l),o.shape):i}}}};var K0={kernelName:ps,gradFunc:r=>({x:()=>He(r)})};var X0={kernelName:yn,inputsToSave:["indices"],gradFunc:(r,e)=>{let t=e[0];return{indices:()=>pt(t.shape,"float32")}}};var Y0={kernelName:ms,gradFunc:r=>({x:()=>Ne(r)})};var Z0={kernelName:fs,saveAllInputs:!0,gradFunc:(r,e,t)=>{let{axis:o}=t;return cr(r,o).map(s=>()=>s)}};var uw={kernelName:bn,inputsToSave:["x"],gradFunc:(r,e,t)=>{let o=e[0],{paddings:n}=t,s=n.map(a=>a[0]);return{x:()=>Fe(r,s,o.shape)}}};var J0={kernelName:_n,inputsToSave:["a","b"],outputsToSave:[!0],gradFunc:(r,e)=>{let[t,o,n]=e,s=t,a=o,i=Ve(s.shape,a.shape);return{a:()=>{let c=ne(a,"float32"),p=O(r,O(c,_r(s,pe(c,ce(1))))),m=Nt(s.shape,i);return m.length>0&&(p=be(p,m)),z(p,s.shape)},b:()=>{let c=Xt(s,0),p=$t(c,ar(s),Ne(s)),m=O(r,O(n,p)),f=Nt(a.shape,i);return f.length>0&&(m=be(m,f)),z(m,a.shape)}}}};var Q0={kernelName:wn,inputsToSave:["x","alpha"],gradFunc:(r,e)=>{let[t,o]=e,n=Xt(t,0);return{x:()=>$t(n,r,O(r,o)),alpha:()=>{let s=$t(n,Ne(r),O(r,t)),a=Nt(o.shape,r.shape);return a.length>0&&(s=be(s,a)),z(s,o.shape)}}}};var eT={kernelName:rn,inputsToSave:["a","b"],gradFunc:(r,e)=>{let[t,o]=e,n=Ve(t.shape,o.shape);return{a:()=>{let i=fe(r,ne(o,"float32")),l=Nt(t.shape,n);return l.length>0?z(be(i,l),t.shape):i},b:()=>{let i=O(r,ne(t,"float32")),l=Nt(o.shape,n);l.length>0&&(i=z(be(i,l),o.shape));let u=Me(o);return He(fe(i,ne(u,"float32")))}}}};var tT={kernelName:vi,inputsToSave:["x"],gradFunc:(r,e)=>{let[t]=e;return{x:()=>fe(r,He(Me(t)))}}};var rT={kernelName:Cn,inputsToSave:["x"],gradFunc:(r,e)=>{let[t]=e,o=O(no(t,6),Es(t));return{x:()=>O(r,ne(o,"float32"))}}};var oT={kernelName:vn,inputsToSave:["x"],gradFunc:(r,e)=>{let[t]=e;return{x:()=>O(r,ne(Es(t),"float32"))}}};var nT={kernelName:ds,inputsToSave:["x"],gradFunc:(r,e)=>{let[t]=e;return{x:()=>z(r,t.shape)}}};var sT={kernelName:kn,inputsToSave:["images"],gradFunc:(r,e,t)=>{let[o]=e,n={dy:r,images:o};return{images:()=>A.runKernel(hu,n,t)}}};var iT={kernelName:da,inputsToSave:["images"],gradFunc:(r,e,t)=>{let[o]=e,n={dy:r,images:o};return{images:()=>A.runKernel(du,n,t)}}};var aT={kernelName:In,gradFunc:(r,e,t)=>{let{dims:o}=t,n=tr(o,r.shape);return{x:()=>Yt(r,n)}}};var lT={kernelName:Nn,gradFunc:r=>({x:()=>Ne(r)})};var uT={kernelName:Sn,inputsToSave:["x"],gradFunc:(r,e)=>{let[t]=e;return{x:()=>He(fe(r,O(_r(t,1.5),2)))}}};var cT={kernelName:hs,inputsToSave:["condition"],gradFunc:(r,e)=>{let[t]=e;return{condition:()=>ne(Ne(t),"float32"),t:()=>O(r,ne(t,r.dtype)),e:()=>O(r,ne(Ea(t),r.dtype))}}};var pT={kernelName:Ci,inputsToSave:["x"],gradFunc:(r,e)=>{let[t]=e;return{x:()=>{let o=Xt(t,ce(0)),n=ce(iw),s=ce(aw),a=O(r,s),i=O(O(r,n),Qt(ne(t,"float32")));return $t(o,a,i)}}}};var mT={kernelName:En,outputsToSave:[!0],gradFunc:(r,e)=>{let[t]=e;return{x:()=>O(r,O(t,pe(ce(1),t)))}}};var fT={kernelName:Ni,gradFunc:r=>({x:()=>Ne(r)})};var dT={kernelName:Tn,inputsToSave:["x"],gradFunc:(r,e)=>{let[t]=e;return{x:()=>O(Ia(ne(t,"float32")),r)}}};var hT={kernelName:Ii,inputsToSave:["x"],gradFunc:(r,e)=>{let[t]=e;return{x:()=>O(Tu(ne(t,"float32")),r)}}};var gT={kernelName:gs,inputsToSave:["x"],gradFunc:(r,e,t)=>{let[o]=e,{begin:n,size:s}=t,a=o.shape,[i,l]=Hb(o,n,s),u=[];for(let c=0;cPr(r,u)}}};var xT={kernelName:$n,outputsToSave:[!0],gradFunc:(r,e,t)=>{let[o]=e,{dim:n}=t,s=!0,a=O(r,o);return{logits:()=>pe(a,O(be(a,[n],s),o))}}};var yT={kernelName:Si,inputsToSave:["x"],gradFunc:(r,e)=>{let[t]=e;return{x:()=>O(r,Kr(t))}}};var cw={kernelName:ha,gradFunc:(r,e,t)=>{let{blockShape:o,paddings:n}=t;return{x:()=>Ca(r,o,n)}}};var pw={kernelName:xs,gradFunc:(r,e,t)=>{let{axis:o}=t;return{x:()=>Je(r,o)}}};var bT={kernelName:An,inputsToSave:["x"],gradFunc:(r,e)=>{let[t]=e;return{x:()=>fe(r,O(_t(ne(t,"float32")),2))}}};var _T={kernelName:ga,inputsToSave:["x"],gradFunc:(r,e)=>{let[t]=e;return{x:()=>O(r,O(ne(t,"float32"),2))}}};var wT={kernelName:Rn,inputsToSave:["a","b"],gradFunc:(r,e)=>{let[t,o]=e,n=ce(2);return{a:()=>O(r,O(n,pe(t,o))),b:()=>O(r,O(n,pe(o,t)))}}};var vT={kernelName:Di,gradFunc:r=>({x:()=>Ne(r)})};var kT={kernelName:Fn,inputsToSave:["a","b"],gradFunc:(r,e)=>{let[t,o]=e,n=Ve(t.shape,o.shape);return{a:()=>{let i=r,l=Nt(t.shape,n);return l.length>0&&(i=be(i,l)),z(i,t.shape)},b:()=>{let i=r,l=Nt(o.shape,n);return l.length>0&&(i=be(i,l)),z(He(i),o.shape)}}}};var CT={kernelName:Dn,inputsToSave:["x"],gradFunc:(r,e,t)=>{let[o]=e,n=o.shape.slice(),{axis:s}=t;tr(s,o.shape).forEach(u=>{n[u]=1});let i=z(r,n),l=O(i,Nr(o.shape,"float32"));return{x:()=>l}}};var IT={kernelName:Ei,inputsToSave:["x"],gradFunc:(r,e)=>{let[t]=e;return{x:()=>fe(r,Me(Ia(t)))}}};var NT={kernelName:On,outputsToSave:[!0],gradFunc:(r,e)=>{let[t]=e;return{x:()=>O(pe(ce(1),Me(t)),r)}}};var ST={kernelName:_o,inputsToSave:["x"],gradFunc:(r,e,t)=>{let[o]=e,{reps:n}=t;return{x:()=>{let a=Ne(o);if(o.rank===1)for(let i=0;i{let o=t,{perm:n}=o,s=Lm(n);return{x:()=>qe(r,s)}}};var ET={kernelName:ys,gradFunc:(r,e,t)=>{let o=t,{axis:n}=o;return{value:()=>Wt(r,n)}}};var AT={kernelName:xa,inputsToSave:["segmentIds"],gradFunc:(r,e)=>{let[t]=e;return{x:()=>Aq(r,t)}}};function Aq(r,e){let t=Ir(e,Ne(e)),o=zn(r,t),n=Or(e,ce(0,"int32")),s=o.rank-n.rank;for(let i=0;i({x:()=>Ne(r)})};var Dq=[xg,MS,LS,zS,BS,VS,WS,GS,US,jS,qS,HS,XS,ZS,JS,QS,e0,t0,r0,o0,n0,s0,a0,i0,u0,c0,p0,m0,f0,d0,eT,h0,g0,x0,y0,b0,w0,_0,v0,I0,N0,S0,T0,E0,A0,D0,$0,R0,F0,P0,lw,lw,M0,z0,V0,W0,G0,U0,j0,q0,H0,K0,X0,Y0,Z0,uw,uw,J0,Q0,tT,rT,oT,nT,sT,iT,aT,lT,uT,cT,pT,mT,fT,dT,hT,gT,xT,yT,cw,cw,pw,pw,bT,wT,_T,vT,kT,CT,IT,NT,ST,TT,ET,AT,DT];for(let r of Dq)wb(r);R.prototype.abs=function(){return this.throwIfDisposed(),Et(this)};R.prototype.acos=function(){return this.throwIfDisposed(),wm(this)};R.prototype.acosh=function(){return this.throwIfDisposed(),vm(this)};R.prototype.addStrict=function(r){return this.throwIfDisposed(),W_(this,r)};R.prototype.add=function(r){return this.throwIfDisposed(),ee(this,r)};R.prototype.all=function(r,e){return this.throwIfDisposed(),ku(this,r,e)};R.prototype.any=function(r,e){return this.throwIfDisposed(),il(this,r,e)};R.prototype.argMax=function(r){return this.throwIfDisposed(),al(this,r)};R.prototype.argMin=function(r){return this.throwIfDisposed(),km(this,r)};R.prototype.asScalar=function(){return this.throwIfDisposed(),E(this.size===1,()=>"The array must have only 1 element."),z(this,[])};R.prototype.asType=function(r){return this.throwIfDisposed(),ne(this,r)};R.prototype.as1D=function(){return this.throwIfDisposed(),z(this,[this.size])};R.prototype.as2D=function(r,e){return this.throwIfDisposed(),z(this,[r,e])};R.prototype.as3D=function(r,e,t){return this.throwIfDisposed(),z(this,[r,e,t])};R.prototype.as4D=function(r,e,t,o){return this.throwIfDisposed(),z(this,[r,e,t,o])};R.prototype.as5D=function(r,e,t,o,n){return this.throwIfDisposed(),z(this,[r,e,t,o,n])};R.prototype.asin=function(){return this.throwIfDisposed(),Cm(this)};R.prototype.asinh=function(){return this.throwIfDisposed(),Im(this)};R.prototype.atan=function(){return this.throwIfDisposed(),Nm(this)};R.prototype.atan2=function(r){return this.throwIfDisposed(),Sm(this,r)};R.prototype.atanh=function(){return this.throwIfDisposed(),Tm(this)};R.prototype.avgPool=function(r,e,t,o){return this.throwIfDisposed(),ka(this,r,e,t,o)};R.prototype.batchToSpaceND=function(r,e){return this.throwIfDisposed(),Ca(this,r,e)};R.prototype.batchNorm=function(r,e,t,o,n){return this.throwIfDisposed(),Ln(this,r,e,t,o,n)};R.prototype.broadcastTo=function(r){return this.throwIfDisposed(),ll(this,r)};R.prototype.cast=function(r){return this.throwIfDisposed(),ne(this,r)};R.prototype.ceil=function(){return this.throwIfDisposed(),Am(this)};R.prototype.clipByValue=function(r,e){return this.throwIfDisposed(),ir(this,r,e)};R.prototype.concat=function(r,e){return this.throwIfDisposed(),r instanceof R&&(r=[r]),Je([this,...r],e)};R.prototype.conv1d=function(r,e,t,o,n,s){return this.throwIfDisposed(),Nu(this,r,e,t,o,n,s)};R.prototype.conv2dTranspose=function(r,e,t,o,n){return this.throwIfDisposed(),Su(this,r,e,t,o,n)};R.prototype.conv2d=function(r,e,t,o,n,s){return this.throwIfDisposed(),Xr(this,r,e,t,o,n,s)};R.prototype.cos=function(){return this.throwIfDisposed(),Ia(this)};R.prototype.cosh=function(){return this.throwIfDisposed(),Tu(this)};R.prototype.cumsum=function(r,e,t){return this.throwIfDisposed(),Eu(this,r,e,t)};R.prototype.depthToSpace=function(r,e){return this.throwIfDisposed(),$m(this,r,e)};R.prototype.depthwiseConv2D=function(r,e,t,o,n,s){return Ot("depthwiseConv2D is deprecated, use depthwiseConv2d instead"),this.throwIfDisposed(),Lo(this,r,e,t,o,n,s)};R.prototype.depthwiseConv2d=function(r,e,t,o,n,s){return this.throwIfDisposed(),Lo(this,r,e,t,o,n,s)};R.prototype.dilation2d=function(r,e,t,o,n){return this.throwIfDisposed(),Rm(this,r,e,t,o,n)};R.prototype.divNoNan=function(r){return this.throwIfDisposed(),Fm(this,r)};R.prototype.divStrict=function(r){return this.throwIfDisposed(),G_(this,r)};R.prototype.div=function(r){return this.throwIfDisposed(),fe(this,r)};R.prototype.dot=function(r){return this.throwIfDisposed(),m_(this,r)};R.prototype.elu=function(){return this.throwIfDisposed(),Is(this)};R.prototype.equalStrict=function(r){return this.throwIfDisposed(),P_(this,r)};R.prototype.equal=function(r){return this.throwIfDisposed(),Yr(this,r)};R.prototype.erf=function(){return this.throwIfDisposed(),Om(this)};R.prototype.exp=function(){return this.throwIfDisposed(),Qt(this)};R.prototype.expandDims=function(r){return this.throwIfDisposed(),br(this,r)};R.prototype.expm1=function(){return this.throwIfDisposed(),Pm(this)};R.prototype.fft=function(){return this.throwIfDisposed(),Fa(this)};R.prototype.flatten=function(){return this.throwIfDisposed(),z(this,[this.size])};R.prototype.floor=function(){return this.throwIfDisposed(),Ns(this)};R.prototype.floorDiv=function(r){return this.throwIfDisposed(),vu(this,r)};R.prototype.gather=function(r,e){return this.throwIfDisposed(),zn(this,r,e)};R.prototype.greaterEqualStrict=function(r){return this.throwIfDisposed(),M_(this,r)};R.prototype.greaterEqual=function(r){return this.throwIfDisposed(),Or(this,r)};R.prototype.greaterStrict=function(r){return this.throwIfDisposed(),L_(this,r)};R.prototype.greater=function(r){return this.throwIfDisposed(),Xt(this,r)};R.prototype.ifft=function(){return this.throwIfDisposed(),Li(this)};R.prototype.irfft=function(){return this.throwIfDisposed(),Wu(this)};R.prototype.isFinite=function(){return this.throwIfDisposed(),f_(this)};R.prototype.isInf=function(){return this.throwIfDisposed(),d_(this)};R.prototype.isNaN=function(){return this.throwIfDisposed(),h_(this)};R.prototype.leakyRelu=function(r){return this.throwIfDisposed(),Sa(this,r)};R.prototype.lessEqualStrict=function(r){return this.throwIfDisposed(),z_(this,r)};R.prototype.lessEqual=function(r){return this.throwIfDisposed(),no(this,r)};R.prototype.lessStrict=function(r){return this.throwIfDisposed(),B_(this,r)};R.prototype.less=function(r){return this.throwIfDisposed(),Ta(this,r)};R.prototype.localResponseNormalization=function(r,e,t,o){return this.throwIfDisposed(),Mm(this,r,e,t,o)};R.prototype.logSigmoid=function(){return this.throwIfDisposed(),x_(this)};R.prototype.logSoftmax=function(r){return this.throwIfDisposed(),$u(this,r)};R.prototype.logSumExp=function(r,e){return this.throwIfDisposed(),zm(this,r,e)};R.prototype.log=function(){return this.throwIfDisposed(),ar(this)};R.prototype.log1p=function(){return this.throwIfDisposed(),Du(this)};R.prototype.logicalAnd=function(r){return this.throwIfDisposed(),dr(this,r)};R.prototype.logicalNot=function(){return this.throwIfDisposed(),Ea(this)};R.prototype.logicalOr=function(r){return this.throwIfDisposed(),Ru(this,r)};R.prototype.logicalXor=function(r){return this.throwIfDisposed(),w_(this,r)};R.prototype.matMul=function(r,e,t){return this.throwIfDisposed(),je(this,r,e,t)};R.prototype.maxPool=function(r,e,t,o){return this.throwIfDisposed(),Aa(this,r,e,t,o)};R.prototype.max=function(r,e){return this.throwIfDisposed(),lr(this,r,e)};R.prototype.maximumStrict=function(r){return this.throwIfDisposed(),U_(this,r)};R.prototype.maximum=function(r){return this.throwIfDisposed(),Ir(this,r)};R.prototype.mean=function(r,e){return this.throwIfDisposed(),bt(this,r,e)};R.prototype.min=function(r,e){return this.throwIfDisposed(),Mi(this,r,e)};R.prototype.minimumStrict=function(r){return this.throwIfDisposed(),j_(this,r)};R.prototype.minimum=function(r){return this.throwIfDisposed(),Bo(this,r)};R.prototype.mirrorPad=function(r,e){return this.throwIfDisposed(),Vm(this,r,e)};R.prototype.modStrict=function(r){return this.throwIfDisposed(),q_(this,r)};R.prototype.mod=function(r){return this.throwIfDisposed(),Fu(this,r)};R.prototype.mulStrict=function(r){return this.throwIfDisposed(),H_(this,r)};R.prototype.mul=function(r){return this.throwIfDisposed(),O(this,r)};R.prototype.neg=function(){return this.throwIfDisposed(),He(this)};R.prototype.norm=function(r,e,t){return this.throwIfDisposed(),Uu(this,r,e,t)};R.prototype.notEqualStrict=function(r){return this.throwIfDisposed(),V_(this,r)};R.prototype.notEqual=function(r){return this.throwIfDisposed(),vo(this,r)};R.prototype.oneHot=function(r,e=1,t=0){return this.throwIfDisposed(),ks(this,r,e,t)};R.prototype.onesLike=function(){return this.throwIfDisposed(),rr(this)};R.prototype.pad=function(r,e){return this.throwIfDisposed(),Pr(this,r,e)};R.prototype.pool=function(r,e,t,o,n){return this.throwIfDisposed(),C_(this,r,e,t,o,n)};R.prototype.powStrict=function(r){return this.throwIfDisposed(),K_(this,r)};R.prototype.pow=function(r){return this.throwIfDisposed(),_r(this,r)};R.prototype.prelu=function(r){return this.throwIfDisposed(),$a(this,r)};R.prototype.prod=function(r,e){return this.throwIfDisposed(),Ou(this,r,e)};R.prototype.reciprocal=function(){return this.throwIfDisposed(),Gm(this)};R.prototype.relu=function(){return this.throwIfDisposed(),Sr(this)};R.prototype.relu6=function(){return this.throwIfDisposed(),Mu(this)};R.prototype.reshapeAs=function(r){return this.throwIfDisposed(),z(this,r.shape)};R.prototype.reshape=function(r){return this.throwIfDisposed(),z(this,r)};R.prototype.resizeBilinear=function(r,e,t){return this.throwIfDisposed(),dg(this,r,e,t)};R.prototype.resizeNearestNeighbor=function(r,e,t){return this.throwIfDisposed(),hg(this,r,e,t)};R.prototype.reverse=function(r){return this.throwIfDisposed(),Yt(this,r)};R.prototype.rfft=function(){return this.throwIfDisposed(),Oa(this)};R.prototype.round=function(){return this.throwIfDisposed(),Um(this)};R.prototype.rsqrt=function(){return this.throwIfDisposed(),Lu(this)};R.prototype.selu=function(){return this.throwIfDisposed(),zu(this)};R.prototype.separableConv2d=function(r,e,t,o,n,s){return this.throwIfDisposed(),jm(this,r,e,t,o,n,s)};R.prototype.sigmoid=function(){return this.throwIfDisposed(),Kr(this)};R.prototype.sign=function(){return this.throwIfDisposed(),qm(this)};R.prototype.sin=function(){return this.throwIfDisposed(),Bu(this)};R.prototype.sinh=function(){return this.throwIfDisposed(),Vu(this)};R.prototype.slice=function(r,e){return this.throwIfDisposed(),Fe(this,r,e)};R.prototype.softmax=function(r){return this.throwIfDisposed(),Ra(this,r)};R.prototype.softplus=function(){return this.throwIfDisposed(),Ss(this)};R.prototype.spaceToBatchND=function(r,e){return this.throwIfDisposed(),Da(this,r,e)};R.prototype.split=function(r,e){return this.throwIfDisposed(),ur(this,r,e)};R.prototype.sqrt=function(){return this.throwIfDisposed(),_t(this)};R.prototype.square=function(){return this.throwIfDisposed(),Me(this)};R.prototype.squaredDifference=function(r){return this.throwIfDisposed(),Pa(this,r)};R.prototype.squaredDifferenceStrict=function(r){return this.throwIfDisposed(),X_(this,r)};R.prototype.squeeze=function(r){return this.throwIfDisposed(),ko(this,r)};R.prototype.stack=function(r,e){this.throwIfDisposed();let t=r instanceof R?[this,r]:[this,...r];return Wt(t,e)};R.prototype.step=function(r){return this.throwIfDisposed(),Es(this,r)};R.prototype.stridedSlice=function(r,e,t,o,n,s,a,i){return this.throwIfDisposed(),Xm(this,r,e,t,o,n,s,a,i)};R.prototype.subStrict=function(r){return this.throwIfDisposed(),Y_(this,r)};R.prototype.sub=function(r){return this.throwIfDisposed(),pe(this,r)};R.prototype.sum=function(r,e){return this.throwIfDisposed(),be(this,r,e)};R.prototype.tan=function(){return this.throwIfDisposed(),Ym(this)};R.prototype.tanh=function(){return this.throwIfDisposed(),Pi(this)};R.prototype.tile=function(r){return this.throwIfDisposed(),zo(this,r)};R.prototype.toBool=function(){return this.throwIfDisposed(),ne(this,"bool")};R.prototype.toFloat=function(){return this.throwIfDisposed(),ne(this,"float32")};R.prototype.toInt=function(){return this.throwIfDisposed(),ne(this,"int32")};R.prototype.topk=function(r,e){return this.throwIfDisposed(),Zm(this,r,e)};R.prototype.transpose=function(r){return this.throwIfDisposed(),qe(this,r)};R.prototype.unique=function(r){return this.throwIfDisposed(),ep(this,r)};R.prototype.unsortedSegmentSum=function(r,e){return this.throwIfDisposed(),Jm(this,r,e)};R.prototype.unstack=function(r){return this.throwIfDisposed(),cr(this,r)};R.prototype.where=function(r,e){return this.throwIfDisposed(),$t(r,this,e)};R.prototype.zerosLike=function(){return this.throwIfDisposed(),Ne(this)};var xw={};et(xw,{maxNorm:()=>Rq,minMaxNorm:()=>Pq,nonNeg:()=>Oq,unitNorm:()=>Fq});var mw;function er(){return mw==null&&(mw=Jb().epsilon()),mw}function Jr(){return"channelsLast"}var Co=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,Co.prototype)}},Lr=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,Lr.prototype)}},B=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,B.prototype)}},Se=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,Se.prototype)}},of=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,of.prototype)}},fw=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,fw.prototype)}};function Gn(r,e){if(Array.isArray(r)){let t=[];for(let o=0;ot.toUpperCase())}var jn={};function lp(r){if(r==null)return null;let e={};return e.className=r.getClassName(),e.config=r.getConfig(),e}function hw(r){if(!(r==null||typeof r!="object"))if(Array.isArray(r))r.forEach(e=>hw(e));else{let e=Object.keys(r);for(let t of e){let o=r[t];o!=null&&typeof o=="object"&&(!Array.isArray(o)&&o.type==="ndarray"&&typeof o.value=="number"?r[t]=o.value:hw(o))}}}function Bi(r,e={},t={},o="object",n=!1){if(typeof r=="string"){let s=r,a;if(s in t)a=t[s];else if(s in jn)a=jn[s];else if(a=e[s],a==null)throw new B(`Unknown ${o}: ${r}. This may be due to one of the following reasons: +1. The ${o} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code. +2. The custom ${o} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);return a}else{let s=r;if(s.className==null||s.config==null)throw new B(`${o}: Improper config format: ${JSON.stringify(s)}. +'className' and 'config' must set.`);let a=s.className,i,l;if(a in t?[i,l]=t[a]:a in jn?[i,l]=jn.className:a in e&&([i,l]=e[a]),i==null)throw new B(`Unknown ${o}: ${a}. This may be due to one of the following reasons: +1. The ${o} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code. +2. The custom ${o} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);if(l!=null){let u={};for(let f of Object.keys(jn))u[f]=jn[f];for(let f of Object.keys(t))u[f]=t[f];let c=s.config;c.customObjects=u;let p=Object.assign({},jn);for(let f of Object.keys(t))jn[f]=t[f];hw(s.config);let m=l(i,s.config,t,n);return jn=Object.assign({},p),m}else{let u=Object.assign({},jn);for(let p of Object.keys(t))jn[p]=t[p];let c=new i(s.config);return jn=Object.assign({},u),c}}}function $q(r,e){return re?1:0}function nf(r,e){return-1*$q(r,e)}function qn(r){if(r==null)return r;let e=[];for(let t of r)e.indexOf(t)===-1&&e.push(t);return e}function $T(r){if(r==null)throw new B(`Invalid value in obj: ${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 B(`${t} is not a valid ${e}. Valid values are ${r} or null/undefined.`)}function bg(r,e,t=0,o=Infinity){return Vo(t>=0),Vo(o>=t),Array.isArray(r)&&r.length>=t&&r.length<=o&&r.every(n=>typeof n===e)}function jt(r,e){Array.isArray(r)?(x.assert(r.length>0,()=>`${e} is unexpectedly an empty array.`),r.forEach((t,o)=>jt(t,`element ${o+1} of ${e}`))):x.assert(Number.isInteger(r)&&r>0,()=>`Expected ${e} to be a positive integer, but got ${RT(r)}.`)}function RT(r){return r===null?"null":Array.isArray(r)?"["+r.map(e=>RT(e)).join(",")+"]":typeof r=="string"?`"${r}"`:`${r}`}function FT(r,e){let t=x.now(),o;return(...s)=>{let a=x.now();return a-t_t(be(O(r,r),e,!0)))}var up=class extends te.Serializable{getConfig(){return{}}},sf=class extends up{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 V(()=>{let t=gw(e,this.axis),o=ir(t,0,this.maxValue);return O(e,fe(o,ee(er(),t)))})}getConfig(){return{maxValue:this.maxValue,axis:this.axis}}};sf.className="MaxNorm";te.registerClass(sf);var af=class extends up{constructor(e){super();this.defaultAxis=0,this.axis=e.axis!=null?e.axis:this.defaultAxis}apply(e){return V(()=>fe(e,ee(er(),gw(e,this.axis))))}getConfig(){return{axis:this.axis}}};af.className="UnitNorm";te.registerClass(af);var lf=class extends up{apply(e){return Sr(e)}};lf.className="NonNeg";te.registerClass(lf);var uf=class extends up{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 V(()=>{let t=gw(e,this.axis),o=ee(O(this.rate,ir(t,this.minValue,this.maxValue)),O(1-this.rate,t));return O(e,fe(o,ee(er(),t)))})}getConfig(){return{minValue:this.minValue,maxValue:this.maxValue,rate:this.rate,axis:this.axis}}};uf.className="MinMaxNorm";te.registerClass(uf);var OT={maxNorm:"MaxNorm",minMaxNorm:"MinMaxNorm",nonNeg:"NonNeg",unitNorm:"UnitNorm"};function Mt(r){return lp(r)}function PT(r,e={}){return Bi(r,te.SerializationMap.getMap().classNameMap,e,"constraint")}function Lt(r){if(r==null)return null;if(typeof r=="string"){let t={className:r in OT?OT[r]:r,config:{}};return PT(t)}else return r instanceof up?r:PT(r)}function Rq(r){return new sf(r)}function Fq(r){return new af(r)}function Oq(){return new lf}function Pq(r){return new uf(r)}var vw={};et(vw,{constant:()=>Uq,glorotNormal:()=>Zq,glorotUniform:()=>Yq,heNormal:()=>Jq,heUniform:()=>Qq,identity:()=>Kq,leCunNormal:()=>eH,leCunUniform:()=>tH,ones:()=>Gq,orthogonal:()=>rH,randomNormal:()=>qq,randomUniform:()=>jq,truncatedNormal:()=>Hq,varianceScaling:()=>Xq,zeros:()=>Wq});var MT=["channelsFirst","channelsLast"],LT=["nearest","bilinear"],zT=["valid","same","causal"],BT=["max","avg"],VT=["sum","mul","concat","ave"];var cp=new Map;function Rt(r){Vi(MT,"DataFormat",r)}function WT(r){Vi(LT,"InterpolationFormat",r)}function Qr(r){Vi(zT,"PaddingMode",r)}function yw(r){Vi(BT,"PoolMode",r)}var cf=[],GT="/";function Ds(r,e){cf.push(r);try{let t=e();return cf.pop(),t}catch(t){throw cf.pop(),t}}function Mq(){return cf.length===0?"":cf.join(GT)+GT}function wg(r){if(!UT(r))throw new Error("Not a valid tensor name: '"+r+"'");return Mq()+r}function vg(r){if(!UT(r))throw new Error("Not a valid tensor name: '"+r+"'");cp.has(r)||cp.set(r,0);let e=cp.get(r);if(cp.set(r,cp.get(r)+1),e>0){let t=`${r}_${e}`;return cp.set(t,1),t}else return r}var Lq=new RegExp(/^[A-Za-z0-9][-A-Za-z0-9\._\/]*$/);function UT(r){return!!r.match(Lq)}function jT(r){return r===parseInt(r.toString(),10)}function Hn(r,e,t){e==null&&(e=0),t==null&&(t=r.length);let o=1;for(let n=e;n{if(r.shape.length!==2)throw new B(`repeat() expects a rank-2 tensor, but received a rank-${r.shape.length} tensor.`);let t=Ba(r,1);return kg(t,[1,e,1])})}function KT(r){let e=[Hn(r.shape)];return r.reshape(e)}function XT(r){if(r.rank<=1)throw new B(`batchFlatten requires a minimum rank of 2. Got rank: ${r.rank}.`);let e=[r.shape[0],Hn(r.shape,1)];return r.reshape(e)}function Va(r,e,t){return V(()=>{switch(r.rank){case 1:return Hm(r,e,t);case 2:return ug(r,[e,0],[t,r.shape[1]]);case 3:return Km(r,[e,0,0],[t,r.shape[1],r.shape[2]]);case 4:return Qc(r,[e,0,0,0],[t,r.shape[1],r.shape[2],r.shape[3]]);case 5:return Fe(r,[e,0,0,0,0],[t,r.shape[1],r.shape[2],r.shape[3],r.shape[4]]);case 6:return Fe(r,[e,0,0,0,0,0],[t,r.shape[1],r.shape[2],r.shape[3],r.shape[4],r.shape[5]]);default:throw new B(`sliceAlongFirstAxis() received an unsupported tensor rank: ${r.rank}`)}})}function bw(r,e,t){return V(()=>{switch(r.rank){case 1:return Hm(r,e,t);case 2:return ug(r,[0,e],[r.shape[0],t]);case 3:return Km(r,[0,0,e],[r.shape[0],r.shape[1],t]);case 4:return Qc(r,[0,0,0,e],[r.shape[0],r.shape[1],r.shape[2],t]);default:throw new B(`sliceAlongLastAxis() received an unsupported tensor rank: ${r.rank}`)}})}function pf(r,e,t,o){return V(()=>{switch(r.rank){case 1:return Hm(r,e,t);case 2:switch(o){case 1:return Va(r,e,t);case 2:return bw(r,e,t);default:throw new B(`The axis is not within the rank of the tensor ${o}`)}case 3:switch(o){case 1:return Va(r,e,t);case 2:return Km(r,[0,e,0],[r.shape[0],t,r.shape[2]]);case 3:return bw(r,e,t);default:throw new B(`The axis is not within the rank of the tensor ${o}`)}case 4:switch(o){case 1:return Va(r,e,t);case 2:return Qc(r,[0,e,0,0],[r.shape[0],t,r.shape[2],r.shape[3]]);case 3:return Qc(r,[0,0,e,0],[r.shape[0],r.shape[1],t,r.shape[3]]);case 4:return bw(r,e,t);default:throw new B(`The axis is not within the rank of the tensor ${o}`)}default:throw new B(`sliceAlongLastAxis() received an unsupported tensor rank: ${r.rank}`)}})}function pp(r,e=-1){let t;return e<0&&(t=r[0].rank,t!==0?e=t:e=0),e===r[0].rank&&(e=-1),Je(r,e)}function _w(r,e){switch(r.rank){case 1:return a_([r,e]);case 2:return l_([r,e],0);case 3:return u_([r,e],0);case 4:return c_([r,e],0);default:throw new B(`concatAlongFirstAxis() received an unsupported tensor rank: ${r.rank}`)}}function kg(r,e){if(Array.isArray(e)||(e=[e]),r.rank!==e.length)throw new B(`The length of input n (${e.length}) does not match the number of dimensions in input x (${r.rank})`);return zo(r,e)}function mp(r,e=0,t=1,o,n){return lg(r,e,t,o,n)}function Kn(r,e,t,o){if(r.rank<2||e.rank<2)throw new Se(`dot requires both inputs to be rank >= 2 but got x shape = ${r.shape} and y shape = ${e.shape}`);if(e.rank>=3){let n=r.shape.slice(-1)[0],s=e.shape.slice(-2)[0];if(n!==s)throw new Se(`If rank y >= 3, then the second last dim of y must equal the last dim of x but got x shape = ${r.shape} and y shape = ${e.shape}`)}if(r.rank===2&&e.rank===2){let n=!1,s=!1;return Vn.matMul({a:r,b:e,transposeA:n,transposeB:s,bias:o?ww(r.rank,o,Jr()):null,activation:t})}else{let n=r.shape.slice(),s=n.pop();r=r.reshape([-1,s]);let a=e.shape.slice(),i=a.pop(),l=a.pop(),u=[...a,i],c=Array.from({length:e.rank},(d,h)=>h===0?e.rank-2:h<=e.rank-2?h-1:h);e=e.transpose(c).reshape([l,-1]);let p=[...n,...u],m=!1,f=!1;return Vn.matMul({a:r,b:e,transposeA:m,transposeB:f,bias:o?ww(r.rank,o,Jr()):null,activation:t}).reshape(p)}}function Cg(r,e,t){return V(()=>(Array.isArray(e)?e=Gt(e,"int32"):e=e.toInt(),zn(r,e,t)))}function Yu(r){return O(r,r)}function ww(r,e,t){let o=e.shape;if(e.rank!==1&&e.rank!==r)throw new B(`Unexpected bias dimensions: ${e.rank}; expected it to be 1 or ${r}`);if(r===5){if(t==="channelsFirst")return o.length===1?e.reshape([1,o[0],1,1,1]):e.reshape([1,o[3],o[0],o[1],o[2]]);if(t==="channelsLast")return o.length===1?e.reshape([1,1,1,1,o[0]]):e.reshape([1].concat(o))}else if(r===4){if(t==="channelsFirst")return o.length===1?e.reshape([1,o[0],1,1]):e.reshape([1,o[2],o[0],o[1]]);if(t==="channelsLast")return o.length===1?e.reshape([1,1,1,o[0]]):e.reshape([1].concat(o))}else if(r===3){if(t==="channelsFirst")return o.length===1?e.reshape([1,o[0],1]):e.reshape([1,o[1],o[0]]);if(t==="channelsLast")return o.length===1?e.reshape([1,1,o[0]]):e.reshape([1].concat(o))}else if(r<3)return e;throw new B(`Unsupported input rank by biasAdd: ${e.rank}`)}function so(r,e,t){return V(()=>(t==null&&(t=Jr()),Rt(t),r.add(ww(r.rank,e,t))))}function YT(r,e=1){if(e!==1)throw new Se(`Support for alpha values other than 1 (${e}) is not implemented yet.`);return Is(r)}function ZT(r){return V(()=>fe(r,Et(r).add(1)))}function Ig(r,e,t,o){return V(()=>Q_(r,e,t,o))}function JT(r){return V(()=>{let e=ee(.5,O(.2,r));return ir(e,0,1)})}function ml(r,e,t=!1){return t?r():e()}var QT=["fanIn","fanOut","fanAvg"],e1=["normal","uniform","truncatedNormal"];function zq(r){Vi(QT,"FanMode",r)}function Bq(r){Vi(e1,"Distribution",r)}var io=class extends te.Serializable{fromConfigUsesCustomObjects(){return!1}getConfig(){return{}}},mf=class extends io{apply(e,t){return pt(e,t)}};mf.className="Zeros";te.registerClass(mf);var Zu=class extends io{apply(e,t){return Nr(e,t)}};Zu.className="Ones";te.registerClass(Zu);var ff=class extends io{constructor(e){super();if(typeof e!="object")throw new B(`Expected argument of type ConstantConfig but got ${e}`);if(e.value===void 0)throw new B(`config must have value set but got ${e}`);this.value=e.value}apply(e,t){return V(()=>O(ce(this.value),Nr(e,t)))}getConfig(){return{value:this.value}}};ff.className="Constant";te.registerClass(ff);var df=class extends io{constructor(e){super();this.DEFAULT_MINVAL=-.05,this.DEFAULT_MAXVAL=.05,this.minval=e.minval||this.DEFAULT_MINVAL,this.maxval=e.maxval||this.DEFAULT_MAXVAL,this.seed=e.seed}apply(e,t){return Ts(e,this.minval,this.maxval,t)}getConfig(){return{minval:this.minval,maxval:this.maxval,seed:this.seed}}};df.className="RandomUniform";te.registerClass(df);var hf=class extends io{constructor(e){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=e.mean||this.DEFAULT_MEAN,this.stddev=e.stddev||this.DEFAULT_STDDEV,this.seed=e.seed}apply(e,t){if(t=t||"float32",t!=="float32"&&t!=="int32")throw new Se(`randomNormal does not support dType ${t}.`);return mp(e,this.mean,this.stddev,t,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};hf.className="RandomNormal";te.registerClass(hf);var gf=class extends io{constructor(e){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=e.mean||this.DEFAULT_MEAN,this.stddev=e.stddev||this.DEFAULT_STDDEV,this.seed=e.seed}apply(e,t){if(t=t||"float32",t!=="float32"&&t!=="int32")throw new Se(`truncatedNormal does not support dType ${t}.`);return Gu(e,this.mean,this.stddev,t,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};gf.className="TruncatedNormal";te.registerClass(gf);var xf=class extends io{constructor(e){super();this.gain=e.gain!=null?e.gain:1}apply(e,t){return V(()=>{if(e.length!==2||e[0]!==e[1])throw new B("Identity matrix initializer can only be used for 2D square matrices.");return O(this.gain,Xc(e[0]))})}getConfig(){return{gain:this.gain}}};xf.className="Identity";te.registerClass(xf);function Vq(r,e="channelsLast"){let t,o;if(Rt(e),r.length===2)t=r[0],o=r[1];else if([3,4,5].indexOf(r.length)!==-1){if(e==="channelsFirst"){let n=Hn(r,2);t=r[1]*n,o=r[0]*n}else if(e==="channelsLast"){let n=Hn(r,0,r.length-2);t=r[r.length-2]*n,o=r[r.length-1]*n}}else{let n=Hn(r);t=Math.sqrt(n),o=Math.sqrt(n)}return[t,o]}var Br=class extends io{constructor(e){super();if(e.scale<0)throw new B(`scale must be a positive float. Got: ${e.scale}`);this.scale=e.scale==null?1:e.scale,this.mode=e.mode==null?"fanIn":e.mode,zq(this.mode),this.distribution=e.distribution==null?"normal":e.distribution,Bq(this.distribution),this.seed=e.seed}apply(e,t){let o=Vq(e),n=o[0],s=o[1],a=this.scale;if(this.mode==="fanIn"?a/=Math.max(1,n):this.mode==="fanOut"?a/=Math.max(1,s):a/=Math.max(1,(n+s)/2),this.distribution==="normal"){let i=Math.sqrt(a);if(t=t||"float32",t!=="float32"&&t!=="int32")throw new Se(`${this.getClassName()} does not support dType ${t}.`);return Gu(e,0,i,t,this.seed)}else{let i=Math.sqrt(3*a);return Ts(e,-i,i,t)}}getConfig(){return{scale:this.scale,mode:this.mode,distribution:this.distribution,seed:this.seed}}};Br.className="VarianceScaling";te.registerClass(Br);var fp=class extends Br{constructor(e){super({scale:1,mode:"fanAvg",distribution:"uniform",seed:e==null?null:e.seed})}getClassName(){return Br.className}};fp.className="GlorotUniform";te.registerClass(fp);var dp=class extends Br{constructor(e){super({scale:1,mode:"fanAvg",distribution:"normal",seed:e==null?null:e.seed})}getClassName(){return Br.className}};dp.className="GlorotNormal";te.registerClass(dp);var hp=class extends Br{constructor(e){super({scale:2,mode:"fanIn",distribution:"normal",seed:e==null?null:e.seed})}getClassName(){return Br.className}};hp.className="HeNormal";te.registerClass(hp);var gp=class extends Br{constructor(e){super({scale:2,mode:"fanIn",distribution:"uniform",seed:e==null?null:e.seed})}getClassName(){return Br.className}};gp.className="HeUniform";te.registerClass(gp);var xp=class extends Br{constructor(e){super({scale:1,mode:"fanIn",distribution:"normal",seed:e==null?null:e.seed})}getClassName(){return Br.className}};xp.className="LeCunNormal";te.registerClass(xp);var yp=class extends Br{constructor(e){super({scale:1,mode:"fanIn",distribution:"uniform",seed:e==null?null:e.seed})}getClassName(){return Br.className}};yp.className="LeCunNormal";te.registerClass(yp);var yf=class extends io{constructor(e){super();if(this.DEFAULT_GAIN=1,this.gain=e.gain==null?this.DEFAULT_GAIN:e.gain,this.seed=e.seed,this.seed!=null)throw new Se("Random seed is not implemented for Orthogonal Initializer yet.")}apply(e,t){return V(()=>{if(e.length<2)throw new Se("Shape must be at least 2D.");e[0]*e[1]>2e3&&console.warn(`Orthogonal initializer is being called on a matrix with more than 2000 (${e[0]*e[1]}) elements: Slowness may result.`);let o=e[0]>e[1]?[e[1],e[0]]:e,n=mp(o,0,1,"float32"),s=sw.gramSchmidt(n);return e[0]>e[1]&&(s=s.transpose()),O(this.gain,s)})}getConfig(){return{gain:this.gain,seed:this.seed}}};yf.className="Orthogonal";te.registerClass(yf);var t1={constant:"Constant",glorotNormal:"GlorotNormal",glorotUniform:"GlorotUniform",heNormal:"HeNormal",heUniform:"HeUniform",identity:"Identity",leCunNormal:"LeCunNormal",leCunUniform:"LeCunUniform",ones:"Ones",orthogonal:"Orthogonal",randomNormal:"RandomNormal",randomUniform:"RandomUniform",truncatedNormal:"TruncatedNormal",varianceScaling:"VarianceScaling",zeros:"Zeros"};function r1(r,e={}){return Bi(r,te.SerializationMap.getMap().classNameMap,e,"initializer")}function St(r){return lp(r)}function ht(r){if(typeof r=="string"){let e=r in t1?t1[r]:r;if(e==="GlorotNormal")return new dp;if(e==="GlorotUniform")return new fp;if(e==="HeNormal")return new hp;if(e==="HeUniform")return new gp;if(e==="LeCunNormal")return new xp;if(e==="LeCunUniform")return new yp;{let t={};return t.className=e,t.config={},r1(t)}}else return r instanceof io?r:r1(r)}function Wq(){return new mf}function Gq(){return new Zu}function Uq(r){return new ff(r)}function jq(r){return new df(r)}function qq(r){return new hf(r)}function Hq(r){return new gf(r)}function Kq(r){return new xf(r)}function Xq(r){return new Br(r)}function Yq(r){return new fp(r)}function Zq(r){return new dp(r)}function Jq(r){return new hp(r)}function Qq(r){return new gp(r)}function eH(r){return new xp(r)}function tH(r){return new yp(r)}function rH(r){return new yf(r)}var nv={};et(nv,{Layer:()=>Le,RNN:()=>co,RNNCell:()=>wl,activation:()=>_K,add:()=>EK,alphaDropout:()=>m6,average:()=>AK,averagePooling1d:()=>sv,averagePooling2d:()=>iv,averagePooling3d:()=>av,avgPool1d:()=>zK,avgPool2d:()=>VK,avgPool3d:()=>GK,avgPooling1d:()=>BK,avgPooling2d:()=>WK,avgPooling3d:()=>UK,batchNormalization:()=>PK,bidirectional:()=>n6,concatenate:()=>DK,conv1d:()=>mK,conv2d:()=>fK,conv2dTranspose:()=>dK,conv3d:()=>hK,convLstm2d:()=>e6,convLstm2dCell:()=>t6,cropping2D:()=>xK,dense:()=>wK,depthwiseConv2d:()=>bK,dot:()=>OK,dropout:()=>vK,elu:()=>iK,embedding:()=>TK,flatten:()=>CK,gaussianDropout:()=>p6,gaussianNoise:()=>c6,globalAveragePooling1d:()=>jK,globalAveragePooling2d:()=>qK,globalMaxPool1d:()=>i6,globalMaxPool2d:()=>a6,globalMaxPooling1d:()=>M1,globalMaxPooling2d:()=>L1,gru:()=>KK,gruCell:()=>XK,input:()=>Hg,inputLayer:()=>sK,layerNormalization:()=>MK,leakyReLU:()=>lK,lstm:()=>YK,lstmCell:()=>ZK,masking:()=>f6,maxPool1d:()=>l6,maxPool2d:()=>u6,maxPooling1d:()=>z1,maxPooling2d:()=>B1,maxPooling3d:()=>HK,maximum:()=>$K,minimum:()=>RK,multiply:()=>FK,permute:()=>SK,prelu:()=>uK,reLU:()=>aK,repeatVector:()=>IK,reshape:()=>NK,rnn:()=>r6,separableConv2d:()=>gK,simpleRNN:()=>JK,simpleRNNCell:()=>QK,softmax:()=>cK,spatialDropout1d:()=>kK,stackedRNNCells:()=>o6,thresholdedReLU:()=>pK,timeDistributed:()=>s6,upSampling2d:()=>yK,zeroPadding2d:()=>LK});var oH=0;function Ng(){return oH++}var Sg={};function fl(r=""){return r in Sg||(Sg[r]=0),Sg[r]+=1,r+Sg[r].toString()}function Tg(r){return Array.isArray(r)&&Array.isArray(r[0])}function bp(r){return r.length===0?[]:Array.isArray(r[0])?r:[r]}function Oe(r){let e;if(Array.isArray(r)){if(r.length!==1)throw new B(`Expected Tensor length to be 1; got ${r.length}`);e=r[0]}else e=r;return e}function Qe(r){if(Array.isArray(r)&&Array.isArray(r[0])){if(r.length===1)return r=r,r[0];throw new B(`Expected exactly 1 Shape; got ${r.length}`)}else return r}function _p(r){let e=0;for(let t of r)t.shape.length===0?e+=1:e+=t.shape.reduce((o,n)=>o*n);return e}var o1="Variable",bf=class{constructor(e,t="float32",o=o1,n=!0,s=null){this.dtype=t==null?"float32":t,this.shape=e.shape,this.id=Ng(),o=o==null?o1:o,this.originalName=wg(o),this.name=vg(this.originalName),this.trainable_=n,this.constraint=s,this.val=F_(e,this.trainable_,this.name,this.dtype)}read(){return this.assertNotDisposed(),this.val}write(e){return this.assertNotDisposed(),nH(this.val,e),this.val.id!==e.id&&(this.val.assign(e),this.constraint!=null&&this.val.assign(this.constraint.apply(this.val))),this}dispose(){this.assertNotDisposed(),this.val.dispose()}assertNotDisposed(){if(this.val.isDisposed)throw new Error(`LayersVariable ${this.name} is already disposed.`)}get trainable(){return this.trainable_}set trainable(e){this.trainable_=e,this.val.trainable=e}};function nH(r,e){if(r.shape.toString()!==e.shape.toString())throw new Error("Shape mismatch: "+JSON.stringify(r.shape)+" vs. "+JSON.stringify(e.shape))}function _f(r){return r.map(e=>e.read())}function wp(r){r.forEach(e=>{e[0].write(e[1])})}var At=class{constructor(e){this.dtype=e.dtype,this.shape=e.shape,e.shape!=null?this.ndim=e.shape.length:this.ndim=e.ndim,this.maxNDim=e.maxNDim,this.minNDim=e.minNDim,this.axes=e.axes||{}}},Vr=class{constructor(e,t,o,n,s,a,i){this.dtype=e,this.shape=t,this.sourceLayer=o,this.inputs=n,this.callArgs=s,this.outputTensorIndex=i,this.id=Ng(),a!=null&&(this.originalName=wg(a),this.name=vg(this.originalName)),this.rank=t.length}},sH=0,dl=class{constructor(e,t){this.callArgs=t,this.id=sH++,this.outboundLayer=e.outboundLayer,this.inboundLayers=e.inboundLayers,this.nodeIndices=e.nodeIndices,this.tensorIndices=e.tensorIndices,this.inputTensors=e.inputTensors,this.outputTensors=e.outputTensors,this.inputMasks=e.inputMasks,this.outputMasks=e.outputMasks,this.inputShapes=e.inputShapes,this.outputShapes=e.outputShapes;for(let o of e.inboundLayers)o!=null&&o.outboundNodes.push(this);e.outboundLayer.inboundNodes.push(this)}getConfig(){let e=[];for(let t of this.inboundLayers)t!=null?e.push(t.name):e.push(null);return{outboundLayer:this.outboundLayer?this.outboundLayer.name:null,inboundLayers:e,nodeIndices:this.nodeIndices,tensorIndices:this.tensorIndices}}},iH=0,Le=class extends te.Serializable{constructor(e={}){super();this._callHook=null,this._addedWeightNames=[],this._stateful=!1,this.id=iH++,this.activityRegularizer=null,this.inputSpec=null,this.supportsMasking=!1,this._trainableWeights=[],this._nonTrainableWeights=[],this._losses=[],this._updates=[],this._built=!1,this.inboundNodes=[],this.outboundNodes=[];let t=e.name;if(!t){let o=this.getClassName();t=Un(o)+"_"+fl(o)}if(this.name=t,this.trainable_=e.trainable==null?!0:e.trainable,e.inputShape!=null||e.batchInputShape!=null){let o;if(e.batchInputShape!=null)o=e.batchInputShape;else if(e.inputShape!=null){let s=null;e.batchSize!=null&&(s=e.batchSize),o=[s].concat(e.inputShape)}this.batchInputShape=o;let n=e.dtype;n==null&&(n=e.inputDType),n==null&&(n="float32"),this.dtype=n}e.weights!=null?this.initialWeights=e.weights:this.initialWeights=null,this._refCount=null,this.fastWeightInitDuringBuild=!1}static nodeKey(e,t){return e.name+"_ib-"+t.toString()}getNodeAtIndex(e,t){if(this.inboundNodes.length===0)throw new Lr(`The layer has never been called and thus has no defined ${t}.`);if(this.inboundNodes.length<=e)throw new B(`Asked to get ${t} at node ${e}, but the layer has only ${this.inboundNodes.length} inbound nodes.`);return this.inboundNodes[e]}getInputAt(e){return hr(this.getNodeAtIndex(e,"input").inputTensors)}getOutputAt(e){return hr(this.getNodeAtIndex(e,"output").outputTensors)}get input(){if(this.inboundNodes.length>1)throw new Co(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer input" is ill-defined. Use \`getInputAt(nodeIndex)\` instead.`);if(this.inboundNodes.length===0)throw new Co(`Layer ${this.name} is not connected, no input to return.`);return hr(this.getNodeAtIndex(0,"input").inputTensors)}get output(){if(this.inboundNodes.length===0)throw new Co(`Layer ${this.name} has no inbound nodes.`);if(this.inboundNodes.length>1)throw new Co(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer output" is ill-defined. Use \`getOutputAt(nodeIndex)\` instead.`);return hr(this.getNodeAtIndex(0,"output").outputTensors)}get losses(){return this._losses}calculateLosses(){return this.losses.map(e=>e())}get updates(){return this._updates}get built(){return this._built}set built(e){this._built=e}get trainable(){return this.trainable_}set trainable(e){this._trainableWeights.forEach(t=>t.trainable=e),this.trainable_=e}get trainableWeights(){return this.trainable_?this._trainableWeights.filter(e=>e.trainable):[]}set trainableWeights(e){this._trainableWeights=e}get nonTrainableWeights(){return this.trainable?this._trainableWeights.filter(e=>!e.trainable).concat(this._nonTrainableWeights):this._trainableWeights.concat(this._nonTrainableWeights)}set nonTrainableWeights(e){this._nonTrainableWeights=e}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}get stateful(){return this._stateful}resetStates(){if(!this.stateful)throw new Error("Cannot call the resetStates() method of a non-stateful Layer object.")}assertInputCompatibility(e){if(e=wt(e),this.inputSpec==null||this.inputSpec.length===0)return;let t=wt(this.inputSpec);if(e.length!==t.length)throw new B(`Layer ${this.name} expects ${t.length} inputs, but it received ${e.length} input tensors. Input received: ${e}`);for(let o=0;os.maxNDim)throw new B(`Input ${o} is incompatible with layer ${this.name}: expected max_ndim=${s.maxNDim}, found ndim=${a}`);if(s.minNDim!=null&&a=0?i[u]:i[i.length+u];if(c!=null&&[c,null].indexOf(p)===-1)throw new B(`Input ${o} is incompatible with layer ${this.name}: expected axis ${u} of input shape to have value ${c} but got shape ${i}.`)}}if(s.shape!=null)for(let i=0;i{if(!this.built){this.assertInputCompatibility(e);let a=[];for(let i of wt(e))a.push(i.shape);this.build(hr(a)),this.built=!0,this.initialWeights&&this.setWeights(this.initialWeights),this._refCount===null&&s&&(this._refCount=1)}if(this.assertInputCompatibility(e),s){let a=this.call(e,t),i=wt(a),l=[];for(let u of i)o.indexOf(u)!==-1&&(u=u.clone()),l.push(u);if(a=hr(l),this.activityRegularizer!=null)throw new Se("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return a}else{let a=aH(e),i=this.computeOutputShape(a),l,u=lH(e);if(this.warnOnIncompatibleInputShape(Array.isArray(e)?a[0]:a),i!=null&&i.length>0&&Array.isArray(i[0])?l=i.map((c,p)=>new Vr(u,c,this,wt(e),t,this.name,p)):l=new Vr(u,i,this,wt(e),t,this.name),this.addInboundNode(e,l,null,null,a,i,t),this._refCount++,this.activityRegularizer!=null)throw new Se("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return l}})}warnOnIncompatibleInputShape(e){if(this.batchInputShape!=null)if(e.length!==this.batchInputShape.length)console.warn(`The rank of the input tensor provided (shape: ${JSON.stringify(e)}) does not match that of the batchInputShape (${JSON.stringify(this.batchInputShape)}) of the layer ${this.name}`);else{let t=!1;this.batchInputShape.forEach((o,n)=>{o!=null&&e[n]!=null&&e[n]!==o&&(t=!0)}),t&&console.warn(`The shape of the input tensor (${JSON.stringify(e)}) does not match the expectation of layer ${this.name}: ${JSON.stringify(this.batchInputShape)}`)}}get outputShape(){if(this.inboundNodes==null||this.inboundNodes.length===0)throw new Co(`The layer ${this.name} has never been called and thus has no defined output shape.`);let e=[];for(let t of this.inboundNodes){let o=JSON.stringify(t.outputShapes);e.indexOf(o)===-1&&e.push(o)}if(e.length===1){let t=this.inboundNodes[0].outputShapes;return Array.isArray(t)&&Array.isArray(t[0])&&t.length===1?t[0]:t}else throw new Co(`The layer ${this.name} has multiple inbound nodes with different output shapes. Hence the notion of "output shape" is ill-defined for the layer.`)}countParams(){if(!this.built)throw new Lr(`You tried to call countParams() on ${this.name}, but the layer is not built yet. Build it first by calling build(batchInputShape).`);return _p(this.weights)}build(e){this.built=!0}getWeights(e=!1){return _f(e?this.trainableWeights:this.weights)}setWeights(e){V(()=>{let t=this.weights;if(t.length!==e.length)throw new B(`You called setWeights(weights) on layer "${this.name}" with a weight list of length ${e.length}, but the layer was expecting ${t.length} weights. Provided weights: ${e}...`);if(t.length===0)return;let o=[],n=_f(t);for(let s=0;ss.apply(u.read())),a==null&&(a=!0),a?this._trainableWeights.push(u):this._nonTrainableWeights.push(u),u}setFastWeightInitDuringBuild(e){this.fastWeightInitDuringBuild=e}addLoss(e){e==null||Array.isArray(e)&&e.length===0||(e=wt(e),this._losses!==void 0&&this._losses!==null&&this.losses.push(...e))}computeOutputShape(e){return e}computeMask(e,t){if(!this.supportsMasking){if(t!=null)if(Array.isArray(t))t.forEach(o=>{if(o!=null)throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`)});else throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`);return null}return t}addInboundNode(e,t,o,n,s,a,i=null){let l=wt(e);t=wt(t),o=wt(o),n=wt(n),s=bp(s),a=bp(a);let u=[],c=[],p=[];for(let m of l)u.push(m.sourceLayer),c.push(m.nodeIndex),p.push(m.tensorIndex);new dl({outboundLayer:this,inboundLayers:u,nodeIndices:c,tensorIndices:p,inputTensors:l,outputTensors:t,inputMasks:o,outputMasks:n,inputShapes:s,outputShapes:a},i);for(let m=0;me.dispose()),this.weights.length}assertNotDisposed(){if(this._refCount===0)throw new Error(`Layer '${this.name}' is already disposed.`)}dispose(){if(!this.built)throw new Error(`Cannot dispose Layer ${this.name} because it has not been built yet.`);if(this._refCount===null)throw new Error(`Cannot dispose Layer ${this.name} because it has not been used yet.`);this.assertNotDisposed();let e=0;return--this._refCount==0&&(e=this.disposeWeights()),{refCountAfterDispose:this._refCount,numDisposedVariables:e}}};function aH(r){r=wt(r);let e=[];for(let t of r)e.push(t.shape);return hr(e)}function lH(r){return"float32"}function kw(r,e,t){if((e==null||t!=null&&t>0)&&(e=r.sourceLayer,t=r.nodeIndex),e.inboundNodes.length===0)return[r];{let o=e.inboundNodes[t];if(o.inboundLayers.length===0)return o.inputTensors;{let n=[];for(let s=0;s0){let n=await Promise.all(e);for(let s=0;see(this.totals[n],O(s,o)));this.totals[n]=i,a!=null&&a.dispose()}}}async onEpochEnd(e,t){if(t!=null)for(let o of this.params.metrics)this.totals[o]!=null&&(typeof this.totals[o]=="number"?t[o]=this.totals[o]/this.seen:V(()=>{let n=O(fe(1,this.seen),this.totals[o]);t[o]=n,this.totals[o].dispose(),Dt(t[o])}))}},$g=class extends hl{async onTrainBegin(e){this.epoch=[],this.history={}}async onEpochEnd(e,t){t==null&&(t={}),this.epoch.push(e);for(let o in t)this.history[o]==null&&(this.history[o]=[]),this.history[o].push(t[o])}async syncData(){let e=[],t=[],o=[];for(let s in this.history){let a=this.history[s];for(let i=0;inew Rg(o,e))}var ao=class{constructor(){}static registerCallbackConstructor(e,t){x.assert(e>=0&&Number.isInteger(e),()=>`Verbosity level is expected to be an integer >= 0, but got ${e}`),ao.checkForDuplicate(t),ao.constructors[e]==null&&(ao.constructors[e]=[]),ao.constructors[e].push(t)}static checkForDuplicate(e){for(let t in ao.constructors)ao.constructors[+t].forEach(n=>{if(n===e)throw new B("Duplicate callback constructor.")})}static clear(){ao.constructors={}}static createCallbacks(e){let t=[];for(let o in ao.constructors){let n=+o;e>=n&&t.push(...ao.constructors[n])}return t.map(o=>new o)}};ao.constructors={};function Og(r,e,t,o,n,s,a,i,l){let u=new $g,c=[new s1,...ao.createCallbacks(e)];r!=null&&c.push(...r),c.push(u);let p=new Dg(c);return p.setParams({epochs:t,initialEpoch:o,samples:n,steps:s,batchSize:a,verbose:e,doValidation:i,metrics:l}),{callbackList:p,history:u}}function eo(r,e={},t=!1){return Bi(r,te.SerializationMap.getMap().classNameMap,e,"layer",t)}function wf(r,e){return V(()=>{r.dtype!=="float32"&&(r=r.asType("float32"));let t=be(Yu(r),e,!0),o=Na(t.shape,er()),n=_t(Ir(t,o));return fe(r,n)})}function Ui(r,e){return V(()=>bt(Yu(pe(e,r)),-1))}function vp(r,e){return V(()=>bt(Et(pe(e,r)),-1))}function gl(r,e){return V(()=>{let t=pe(r,e),o=ir(Et(r),er(),Number.MAX_VALUE),n=Et(fe(t,o));return O(100,bt(n,-1))})}function cH(r,e){return V(()=>{let t=ir(e,er(),Number.MAX_VALUE),o=ar(ee(1,t)),n=ir(r,er(),Number.MAX_VALUE),s=ar(ee(1,n));return bt(Yu(pe(o,s)),-1)})}function pH(r,e){return V(()=>{let t=Ir(0,pe(1,O(r,e)));return bt(Yu(t),-1)})}function mH(r,e){return V(()=>{let t=Ir(0,pe(1,O(r,e)));return bt(t,-1)})}function fH(r,e){return V(()=>{let t=be(O(r,e),-1),o=lr(O(pe(1,r),e),-1);return Ir(0,ee(1,pe(o,t)))})}function dH(r,e){return V(()=>{let t=Math.log(2),o=pe(e,r),n=pe(ee(o,Ss(O(-2,o))),t);return bt(n,-1)})}function Ju(r,e,t=!1){return V(()=>{if(t)e=Ra(e);else{let o=be(e,e.shape.length-1,!0);e=fe(e,o)}return e=ir(e,er(),1-er()),He(be(O(r.toFloat(),ar(e)),e.shape.length-1))})}function kp(r,e,t=!1){return V(()=>{let o=Ns(KT(r)).toInt();e=ir(e,er(),1-er());let n=e.shape,s=ks(o,n[n.length-1]).reshape(n);return Ju(s,e,t)})}function hH(r,e){if(!x.arraysEqual(r.shape,e.shape))throw new B(`logits and labels must have the same shape, but got shapes ${JSON.stringify(r.shape)} and ${JSON.stringify(e.shape)}`);return V(()=>{let t=e.relu(),o=e.abs().neg();return t.sub(e.mul(r)).add(o.exp().log1p())})}function Cp(r,e){return V(()=>{let t;return t=ir(e,er(),1-er()),t=ar(fe(t,pe(1,t))),bt(hH(r,t),-1)})}function gH(r,e){return V(()=>{let t=ir(r,er(),1),o=ir(e,er(),1);return be(O(r,ar(fe(t,o))),-1)})}function xH(r,e){return V(()=>{let t=ar(ee(er(),e));return bt(pe(e,O(r,t)),-1)})}function vf(r,e){return V(()=>{let t=wf(r,-1),o=wf(e,-1),n=O(t,o);return He(be(n,-1))})}var kf={meanSquaredError:Ui,meanAbsoluteError:vp,meanAbsolutePercentageError:gl,meanSquaredLogarithmicError:cH,squaredHinge:pH,hinge:mH,categoricalHinge:fH,logcosh:dH,categoricalCrossentropy:Ju,sparseCategoricalCrossentropy:kp,binaryCrossentropy:Cp,kullbackLeiblerDivergence:gH,poisson:xH,cosineProximity:vf};function Pg(r){if(typeof r=="string"){if(r in kf)return kf[r];let e=`Unknown loss ${r}`;throw r.toLowerCase().includes("softmaxcrossentropy")&&(e=`Unknown loss ${r}. Use "categoricalCrossentropy" as the string name for tf.losses.softmaxCrossEntropy`),new B(e)}else return r}function Cf(r,e){return V(()=>{let t=O(.5,rr(e)),o=za(Xt(e,t),r.dtype);return bt(Yr(r,o),-1)})}function If(r,e){return V(()=>za(Yr(al(r,-1),al(e,-1)),"float32"))}function i1(r,e){return V(()=>dr(r.equal(1),e.equal(1)).sum().cast("float32"))}function yH(r,e){return V(()=>dr(r.equal(1),e.equal(0)).sum().cast("float32"))}function bH(r,e){return V(()=>dr(r.equal(0),e.equal(1)).sum().cast("float32"))}function Cw(r,e){return V(()=>{let t=i1(r,e),o=bH(r,e),n=t.add(o);return $t(Xt(n,0),t.div(n),0).cast("float32")})}function a1(r,e){return V(()=>{let t=i1(r,e),o=yH(r,e),n=t.add(o);return $t(Xt(n,0),t.div(n),0).cast("float32")})}function Mg(r,e){return Cp(r,e)}function Lg(r,e){return r.rank===e.rank&&(r=r.squeeze([r.rank-1])),e=e.argMax(-1),e.dtype!==r.dtype&&(e=e.asType(r.dtype)),Yr(r,e).asType("float32")}var _H=Ui,wH=Ui,vH=vp,kH=vp,CH=gl,IH=gl,Nf=Ju,NH=vf,Iw=kp,zg={binaryAccuracy:Cf,categoricalAccuracy:If,precision:Cw,categoricalCrossentropy:Nf,sparseCategoricalCrossentropy:Iw,mse:_H,MSE:wH,mae:vH,MAE:kH,mape:CH,MAPE:IH,cosine:NH};function l1(r){if(typeof r=="string"&&r in zg)return zg[r];if(typeof r!="string"&&r!=null)return r;throw new B(`Unknown metric ${r}`)}function Sf(r){if(Vo(r!==null,`Unknown LossOrMetricFn ${r}`),typeof r=="string")return r;{let e;for(let t of Object.keys(kf))if(kf[t]===r){e=t;break}if(e!==void 0)return e;for(let t of Object.keys(zg))if(zg[t]===r){e=t;break}return e!==void 0?e:r.name}}function u1(r){let e={Adagrad:()=>pl.adagrad(.01),Adadelta:()=>pl.adadelta(1,.95,er()),Adam:()=>pl.adam(.001,.9,.999,er()),Adamax:()=>pl.adamax(.002,.9,.999,er(),0),RMSProp:()=>pl.rmsprop(.001,.9,0,er()),SGD:()=>pl.sgd(.01)};if(e.adagrad=e.Adagrad,e.adadelta=e.Adadelta,e.adam=e.Adam,e.adamax=e.Adamax,e.rmsprop=e.RMSProp,e.sgd=e.SGD,r in e)return e[r]();throw new B(`Unknown Optimizer ${r}`)}var c1=1*1024*1024;function Sw(r,e,t=!1){if(r==null||typeof r!="object"||Object.getPrototypeOf(r)!==Object.prototype||!Nw(r))throw new Error("User-defined metadata is expected to be a JSON object, but is not.");if(t){let o=JSON.stringify(r);o.length>c1&&console.warn(`User-defined metadata of model "${e}" is too large in size (length=${o.length} when serialized). It is not recommended to store such large objects in user-defined metadata. Please make sure its serialized length is <= ${c1}.`)}}function Nw(r){if(r===null)return!0;if(typeof r=="object")if(Object.getPrototypeOf(r)===Object.prototype){let e=Object.keys(r);for(let t of e)if(typeof t!="string"||!Nw(r[t]))return!1;return!0}else if(Array.isArray(r)){for(let e of r)if(!Nw(e))return!1;return!0}else return!1;else{let e=typeof r;return e==="string"||e==="number"||e==="boolean"}}function p1(r,e,t,o=console.log){let n=TH(r),s=["Layer (type)","Output shape","Param #"];n?(e=e||65,t=t||[.45,.85,1]):(e=e||98,t=t||[.33,.55,.67,1]),t[t.length-1]<=1&&(t=t.map(c=>Math.floor(e*c)));let a;if(!n){s.push("Receives inputs"),a=[];for(let c in r.nodesByDepth)a.push(...r.nodesByDepth[c])}o("_".repeat(e)),Bg(s,t,o),o("=".repeat(e));let i=r.layers;for(let c=0;c1||n.length===1&&n[0].inboundLayers.length>1){e=!1;break}o.push(...n)}if(e)for(let n of r.layers){let s=!1;for(let a of n.inboundNodes)if(o.indexOf(a)!==-1)if(s){e=!1;break}else s=!0;if(!e)break}return e}function Bg(r,e,t=console.log){let o="";for(let n=0;n0&&(o=o.slice(0,o.length-1)+" "),o+=r[n],o=o.slice(0,e[n]),o+=" ".repeat(e[n]-o.length);t(o)}function EH(r,e,t){let o;try{o=JSON.stringify(r.outputShape)}catch(i){o="multiple"}let n=r.name,s=r.getClassName(),a=[`${n} (${s})`,o,r.countParams().toString()];Bg(a,e,t)}function AH(r,e,t,o){let n;try{n=JSON.stringify(r.outputShape)}catch(c){n="multiple"}let s=[];for(let c of r.inboundNodes)if(!(t!=null&&t.length>0&&t.indexOf(c)===-1))for(let p=0;pd.name),l=[],u=e.names();for(let d of i)u.indexOf(d)!==-1?l.push(e.getValue(d)):l.push(null);o!=null&&(o.maxNumTensors=-Infinity,o.minNumTensors=Infinity);let c=i.join(",")+"|"+e.names().join(","),p,m;if(Tw[c]==null){let d=$H(a,e);p=d.sorted,m=d.recipientCounts,Tw[c]=p,f1[c]=m}p=Tw[c],m={},n||Object.assign(m,f1[c]);let f=new Rs(e);for(let d=0;do.maxNumTensors&&(o.maxNumTensors=M),M0,()=>"Expected at least one fetch, got none");let t=[],o={};if(r.length===1){let n=d1(r[0],e);t=n.sorted,o=n.recipientMap}else{let n=new Set;for(let s of r){let{sorted:a,recipientMap:i}=d1(s,e);for(let l of a)n.has(l.name)||(t.push(l),n.add(l.name));for(let l in i)o[l]==null&&(o[l]=new Set),i[l].forEach(u=>o[l].add(u))}}return{sorted:t,recipientCounts:FH(o)}}function FH(r){let e={};for(let t in r)e[t]=r[t].size;return e}function d1(r,e){let t=new Set,o=[],n={};for(let i of e.names())t.add(i);let s=[],a=[];for(s.push(r);s.length>0;){let i=s[s.length-1];if(t.has(i.name)){s.pop();continue}let l=a[a.length-1]===s.length-1;if(i.inputs.length===0||l)s.pop(),o.push(i),t.add(i.name),l&&a.pop();else{a.push(s.length-1);for(let u of i.inputs)n[u.name]==null&&(n[u.name]=new Set),n[u.name].add(i.name),!t.has(u.name)&&s.push(u)}}return{sorted:o,recipientMap:n}}function RH(r){let e;if(r.sourceLayer.inboundNodes.length===1)e=r.sourceLayer.output;else{let t=null;for(let o=0;ob.name)}`);qn(this.outputs).length!==this.outputs.length&&console.warn(`The list of outputs passed to the model is redundant. All outputs should only appear once. Found: ${this.outputs.map(b=>b.name)}`),this.inputLayers=[],this.inputLayersNodeIndices=[],this.inputLayersTensorIndices=[],this.outputLayers=[],this.outputLayersNodeIndices=[],this.outputLayersTensorIndices=[],this.layers=[],this.internalContainerRefs=[];for(let b of this.outputs){let _=b.sourceLayer,w=b.nodeIndex,k=b.tensorIndex;this.outputLayers.push(_),this.outputLayersNodeIndices.push(w),this.outputLayersTensorIndices.push(k)}for(let b of this.inputs){let _=b.sourceLayer,w=b.nodeIndex,k=b.tensorIndex;Vo(w===0,"input layer has >1 nodes"),Vo(k===0,"input layer has >1 tensors"),this.inputLayers.push(_),this.inputLayersNodeIndices.push(w),this.inputLayersTensorIndices.push(k)}this.inputNames=[],this.outputNames=[],this.feedInputShapes=[],this.feedInputNames=[],this.feedOutputNames=[];for(let b=0;bb.shape),this.internalOutputShapes=this.outputs.map(b=>b.shape);let t={},o={},n={},s={},a={},i=[],l=(b,_,w,k,$,T)=>{(k==null||$==null||T==null)&&(k=b.sourceLayer,$=b.nodeIndex,T=b.tensorIndex);let F=k.inboundNodes[$];if(w.indexOf(F)!==-1)throw new Lr(`The tensor ${b.name} at layer "${k.name}" is part of a cycle.`);if(_.indexOf(F)!==-1)return;this.containerNodes.add(Wo.nodeKey(k,$)),k.id in a||(a[k.id]=Object.keys(a).length),w.indexOf(F)===-1&&w.push(F);let M=F.inboundLayers.length;for(let L=0;L=0;)w.splice(w.indexOf(F),1);i.push(F)},u=[],c=[];for(let b of this.outputs)l(b,u,c);let p=i.slice().reverse();for(let b of p){o[b.id]=b,b.id in t||(t[b.id]=0);let _=t[b.id],w=n[b.outboundLayer.id]==null?0:n[b.outboundLayer.id];_=Math.max(_,w),n[b.outboundLayer.id]=_,s[b.outboundLayer.id]=b.outboundLayer,t[b.id]=_;for(let k=0;kparseInt(b,10)).sort(nf);this.layers=[];for(let b of d){let _=f[b];_.sort((w,k)=>{let $=a[w.id],T=a[k.id];return $T?1:0});for(let w of _)w instanceof Wo&&this.internalContainerRefs.push(w),this.layers.push(w)}this.layersByDepth=f,d=Object.keys(m).map(b=>parseInt(b,10)).sort(nf);let h=this.inputs.slice(),g=[];for(let b of d)for(let _ of m[b]){let w=_.outboundLayer;if(w!=null){for(let k of _.inputTensors)if(h.indexOf(k)===-1)throw new Lr(`Graph disconnected: cannot obtain value for tensor ${k} at layer "${w.name}". The following previous layers were accessed without issue: ${g}`);for(let k of _.outputTensors)h.push(k);g.push(w.name)}}this.nodesByDepth=m;let y=this.layers.map(b=>b.name);for(let b of y){let _=y.filter(w=>w===b).length;if(_!==1)throw new Lr(`The name "${b}" is used ${_} times in the model. All layer names should be unique. Layer names: `+JSON.stringify(y))}this.outboundNodes=[],this.inboundNodes=[],new dl({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:this.inputs.map(b=>null),outputMasks:this.outputs.map(b=>null),inputShapes:this.inputs.map(b=>b.shape),outputShapes:this.outputs.map(b=>b.shape)}),this.built=!0,this._refCount=1}assertNotDisposed(){if(this._refCount===0)throw new Error(`Container '${this.name}' is already disposed.`)}dispose(){this.assertNotDisposed();let e={refCountAfterDispose:null,numDisposedVariables:0};if(--this._refCount==0){for(let t of this.layers)e.numDisposedVariables+=t.dispose().numDisposedVariables;for(let t of this.internalContainerRefs)e.numDisposedVariables+=t.dispose().numDisposedVariables}return e.refCountAfterDispose=this._refCount,e}get trainable(){return this.trainable_}set trainable(e){this.layers.forEach(t=>{t._trainableWeights.forEach(o=>o.trainable=e)}),this.trainable_=e}get trainableWeights(){if(this._trainableWeights.length>0)throw new B("Container instance unexpectedly contains _trainableWeights.The trainable weights of a Container are a union of the trainable weights of its consituent Layers. Its own _trainableWeights must remain an empty Array.");if(!this.trainable)return[];let e=[];for(let t of this.layers)e=e.concat(t.trainableWeights);return e}get nonTrainableWeights(){let e=[];for(let t of this.layers)e.push(...t.nonTrainableWeights);if(!this.trainable){let t=[];for(let o of this.layers)t.push(...o.trainableWeights);return t.concat(e)}return e}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}loadWeights(e,t=!0){let o={},n=0;for(let a of this.layers)for(let i of a.weights){if(o[i.originalName]!=null)throw new B(`Duplicate weight name: ${i.originalName}`);o[i.originalName]=i,n++}let s=[];for(let a in e){let i=a;if(o[a]==null){let l=a.split("/");i=l.slice(0,-2).concat([l[l.length-1]]).join("/")}if(o[i]!=null)s.push([o[i],e[a]]);else if(t)throw new B(`Provided weight data has no target variable: ${a}`);delete o[i]}if(t){let a=[];for(let i in o)a.push(i);if(a.length>0)throw new B(`${a.length} of ${n} weights are not set: ${a}`)}wp(s)}updatedConfig(){let e=this.getConfig(),t={};return t.className=this.getClassName(),t.config=e,t.kerasVersion=`tfjs-layers ${xl}`,t.backend="TensorFlow.js",t}toJSON(e,t=!0){let o=Vg(this.updatedConfig());return t?JSON.stringify(o):o}call(e,t){return V(()=>{e=wt(e);let o=new Rs;for(let n=0;n{e=wt(e);let o;return t==null?o=Gn(null,e.length):o=wt(t),this.runInternalGraph(e,o)[1]})}computeOutputShape(e){let t=bp(e);if(t.length!==this.inputLayers.length)throw new B(`Invalid inputShape argument ${e}: model has ${this.inputLayers.length} tensor inputs.`);let o={};for(let i=0;iparseInt(i,10)).sort(nf);if(n.length>1)for(let i of n){let l=this.nodesByDepth[i];for(let u of l){let c=u.outboundLayer;if(this.inputLayers.map(h=>h.id).indexOf(c.id)!==-1)continue;let p=[];for(let h=0;hparseInt(l,10)).sort(nf);for(let l of n){let u=this.nodesByDepth[l];for(let c of u){let p=c.outboundLayer,m=c.inputTensors,f=c.outputTensors,d=new Array;for(let h of m)h.id in o&&d.push(o[h.id]);if(d.length===m.length){let h={},g,y,b,_;if(c.callArgs!=null&&(h=c.callArgs),d.length===1){let[w,k]=d[0];h.mask==null&&(h.mask=k),b=wt(p.call(w,h)),_=wt(p.computeMask(w,k)),g=[w],y=[k]}else g=d.map(w=>w[0]),y=d.map(w=>w[1]),h.mask==null&&(h.mask=y),b=wt(p.call(g,h)),_=wt(p.computeMask(g,y));if(p.activityRegularizer)throw new Se("LayersModel invocation with concrete Tensor value(s) in the presence of activity regularizer(s) is not supported yet.");for(let w=0;w{let e=[];for(let t of this.layers)for(let o=0;o0){let h=[];for(let g=0;g0&&g.apply(hr(b),_)}function u(g){let y=g.name,b=eo(g,t.customObjects!=null?t.customObjects:{});b.setFastWeightInitDuringBuild(n),s[y]=b,g.inboundNodes.forEach(w=>{if(!(w instanceof Array))throw new B(`Corrupted configuration, expected array for nodeData: ${w}`);i(b,w)})}let c=t.name,p=t.layers;for(let g of p)u(g);for(;!$T(a);)for(let g of p){let y=s[g.name];if(y.name in a){let b=a[y.name];delete a[y.name];for(let _ of b)l(y,_)}}let m=[],f=[],d=t.inputLayers;for(let g of d){let y=g[0],b=g[1],_=g[2];Vo(y in s);let k=s[y].inboundNodes[b].outputTensors;m.push(k[_])}let h=t.outputLayers;for(let g of h){let y=g[0],b=g[1],_=g[2];Vo(y in s);let k=s[y].inboundNodes[b].outputTensors;f.push(k[_])}return new e({inputs:m,outputs:f,name:c})}get stateful(){if(this._stateful)throw new B("Container instance unexpectedly has _stateful = true. The statefulness of a Container is determined by the Layers it contains. Its _stateful property must remain the default false.");for(let e of this.layers)if(e.stateful)return!0;return!1}resetStates(){V(()=>{this.layers.forEach(e=>{e.stateful&&e.resetStates()})})}};function OH(r,e,t){let o=e.length;if(r==null||Array.isArray(r)&&r.length===0)return e.map(n=>null);if(o===1)return Array.isArray(r)&&r.length===1?r:typeof r=="object"&&e[0]in r?[r[e[0]]]:[r];if(Array.isArray(r)){if(r.length!==o)throw new Error(`Provided ${t} is an array of ${r.length} element(s), but the model has ${o} outputs. Make sure a set of weights is provided for each model output.`);return r}else if(typeof r=="object"&&Object.keys(r).length>0&&typeof r[Object.keys(r)[0]]=="object"){let n=[];return e.forEach(s=>{s in r?n.push(r[s]):n.push(null)}),n}else throw new Error(`The model has multiple (${o}) outputs, so ${t} must be either an array with ${o} elements or an object with ${e} keys. Provided ${t} not understood: ${JSON.stringify(r)}`)}function Wg(r,e){return OH(r,e,"classWeight")}async function Gg(r,e,t,o){if(e!=null||o!=null)throw new Error("Support sampleWeight is not implemented yet");if(t!=null){let n=V(()=>{if(r.shape.length===1)return r.clone();if(r.shape.length===2)if(r.shape[1]>1){let i=1;return r.argMax(i)}else{if(r.shape[1]===1)return r.reshape([r.shape[0]]);throw new Error(`Encountered unexpected last-dimension size (${r.shape[1]}) during handling of class weights. The size is expected to be >= 1.`)}else throw new Error(`Unexpected rank of target (y) tensor (${r.rank}) during handling of class weights. The rank is expected to be 1 or 2.`)}),s=Array.from(await n.data());Ae(n);let a=[];return s.forEach(i=>{if(t[i]==null)throw new Error(`classWeight must contain all classes in the training data. The class ${i} exists in the data but not in classWeight`);a.push(t[i])}),Gt(a,"float32")}else return null}function h1(r,e){return O(r,e)}var PH=32;function x1(r,e){let t,o,n=e;t=n.xs,o=n.ys,x.assert(t!=null&&o!=null,()=>`A Dataset iterator for fitDataset() is expected to generate objects of the form \`{xs: xVal, ys: yVal}\`, where the two values may be \`tf.Tensor\`, an array of Tensors, or a map of string to Tensor. The provided Dataset instead generates ${e}`);let s=g1("input",r.inputNames,t),a=g1("output",r.outputNames,o),i=s[0].shape[0];x.assert(s.length===r.inputs.length,()=>`LayersModel has ${r.inputs.length} inputs, but the dataset provides ${s.length} inputs. (Expected input keys: ${JSON.stringify(r.inputNames)})`),x.assert(a.length===r.outputs.length,()=>`LayersModel has ${r.outputs.length} outputs, but the dataset provides ${a.length} outputs. (Expected output keys: ${JSON.stringify(r.outputNames)})`);for(let l=0;l`Batch size mismatch: input ${r.inputNames[l]} has ${s[l].shape[0]}; expected ${i} based on input ${r.inputNames[0]}.`);for(let l=0;l`Batch size mismatch: output ${r.outputNames[l]} has ${a[l].shape[0]}; expected ${i} based on input ${r.inputNames[0]}.`);return{xs:s,ys:a}}function g1(r,e,t){if(t instanceof R)return[t];if(Array.isArray(t))return x.assert(t.length===e.length,()=>`Received an array of ${t.length} Tensors, but expected ${e.length} to match the ${r} keys ${e}.`),t;{let o=[];for(let n of e){if(t[n]==null)throw new B(`The feature data generated by the dataset lacks the required ${r} key '${n}'.`);o.push(t[n])}return o}}function MH(r){if(r.length===3)throw new Se("Validation with sample weights is not implemented yet.");return{xs:r[0],ys:r[1]}}async function b1(r,e,t){let o=t.batchesPerEpoch!=null;if(x.assert(r.optimizer!=null,()=>"You must compile a model before training/testing. Use LayersModel.compile(modelCompileConfig)."),x.assert(t!=null,()=>"For fitDataset(), the 2nd argument (config) is required, but it is not provided in this call."),x.assert(t.epochs!=null&&t.epochs>0&&Number.isInteger(t.epochs),()=>`For fitDataset(), config.epochs is expected to be a positive integer, but got ${t.epochs}`),x.assert(!o||t.batchesPerEpoch>0&&Number.isInteger(t.batchesPerEpoch),()=>`For fitDataset(), config.batchesPerEpoch is expected to be a positive integer if specified, but got ${t.batchesPerEpoch}`),x.assert(t.validationSplit==null,()=>"`validationSplit` is not supported by `fitDataset()`. Use validationData instead."),r.isTraining)throw new Error("Cannot start training because another fit() call is ongoing.");r.isTraining=!0;try{let n=t.validationData!=null,s,a;if(n)if(y1(t.validationData))x.assert(t.validationBatches==null||t.validationBatches>0&&Number.isInteger(t.validationBatches),()=>`For fitDataset() with dataset-based validation, config.validationBatches is expected not to be provided, or to be a positive integer, but got ${t.validationBatches}`);else{let g=MH(t.validationData);s=g.xs,a=g.ys}let i=r.makeTrainFunction(),l=r.getDedupedMetricsNames(),u;n?u=l.slice().concat(l.map(g=>"val_"+g)):u=l.slice();let c=Fg(t.callbacks,t.yieldEvery),p=t.verbose==null?1:t.verbose,{callbackList:m,history:f}=Og(c,p,t.epochs,null,null,LH(e,t),null,n,u);m.setModel(r),r.history=f,await m.onTrainBegin(),r.stopTraining_=!1;let d=t.initialEpoch==null?0:t.initialEpoch,h=await e.iterator();for(;d=t.batchesPerEpoch:_.done){if(n){let w;y1(t.validationData)?w=wt(await r.evaluateDataset(t.validationData,{batches:t.validationBatches})):w=wt(r.evaluate(s,a,{batchSize:t.validationBatchSize==null?PH:t.validationBatchSize,verbose:0}));for(let k=0;k0)throw new Se("Verbose mode is not implemented yet.");x.assert(!o||t.batches>0&&Number.isInteger(t.batches),()=>`Test loop expects \`batches\` to be a positive integer, but received ${JSON.stringify(t.batches)}`);let a=zH(e)?e:await e.iterator(),i=0,l=0;for(;o?l{if(u.value){let{xs:c,ys:p}=x1(r,u.value),m=c.concat(p),f=V(()=>n(m));if(Ae(m),l===0)for(let h=0;hee(s[h],O(d,g))),l>0&&Ae(y)}Ae(f),i+=d,++l}return s}),u.done){o&&console.warn(`Your dataset iterator ran out of data during evaluateDataset(). Interrupting evalution. Make sure that your dataset can generate at least \`batches\` batches (in this case, ${t.batches} batches). You may need to use the repeat() function when building your dataset.`);break}}for(let u=0;u0&&Number.isInteger(r),()=>`batchSize is required to be a positive integer, but got ${r}`)}function Ip(r,e,t){return r==null?[null]:Array.isArray(r)?r.map(o=>Va(o,e,t-e)):Va(r,e,t-e)}function jg(r,e){return V(()=>r==null?null:Array.isArray(r)?r.map(t=>jg(t,e)):Cg(r,e.dtype==="int32"?e:e.toInt()))}function qg(r,e){let t=[],o=0,n=null;for(;o=r&&(n=r),t.push([o,n]),o=n;return t}async function BH(r,e,t,o,n,s,a,i,l,u,c,p,m,f,d){n==null&&(n=32),s==null&&(s=1),c==null&&(c=!0),m==null&&(m=0);let h=!1;if(l!=null&&u!=null&&(h=!0),d!=null&&(h=!0,f==null))throw new B("Can only use `validationSteps` when doing step-wise training, i.e., `stepsPerEpoch` must be set.");let g=r.checkNumSamples(t,n,f,"steps_per_epoch"),y;g!=null&&(y=zr(0,g)),a==null&&(a=1);let{callbackList:b,history:_}=Og(i,a,s,m,g,f,n,h,p);b.setModel(r),r.history=_,await b.onTrainBegin(),r.stopTraining_=!1;for(let w=m;w{let L=T[F][0],G=T[F][1],H=Va($,L,G-L);M.batch=F,M.size=G-L;let U=jg(t,H),Z=e(U);for(let K=0;K0){if(d=!0,o.validationData.length===2)a=o.validationData[0],i=o.validationData[1];else throw o.validationData.length===3?new Se("validationData including sample weights is not supported yet."):new B(`When passing validation data, it must contain 2 (valX, valY) or 3 (valX, valY, valSampleWeight) items; ${o.validationData} is invalid.`);let T=!0,F=await r.standardizeUserData(a,i,null,null,T,p);l=F[0],u=F[1],h=l.concat(u)}else if(o.validationSplit!=null&&o.validationSplit>0&&o.validationSplit<1){d=!0;let T=Math.floor(n[0].shape[0]*(1-o.validationSplit)),F=n[0].shape[0];l=Ip(n,T,F),n=Ip(n,0,T),u=Ip(s,T,F),s=Ip(s,0,T),h=l.concat(u)}else o.validationSteps!=null&&(d=!0);let g=n.concat(s).concat(c);r.checkTrainableWeightsConsistency();let y=r.makeTrainFunction(),b=r.getDedupedMetricsNames(),_,w;d?(r.makeTestFunction(),_=r.testFunction,w=b.slice().concat(b.map(T=>"val_"+T))):(_=null,h=[],w=b.slice());let k=Fg(o.callbacks,o.yieldEvery);return await BH(r,y,g,b,p,o.epochs,o.verbose,k,_,h,o.shuffle,w,o.initialEpoch,null,null)}finally{r.isTraining=!1,yl(n,e),yl(s,t),yl(l,a),yl(u,i),c!=null&&Ae(c)}}function Ew(r){let e=[];r instanceof R&&(r=[r]);for(let t=0;tt.push(n.id));else if(e!=null)for(let n in e){let s=e[n];t.push(s.id)}let o=[];if(r instanceof R)t.indexOf(r.id)===-1&&o.push(r);else if(Array.isArray(r))r.forEach(n=>{t.indexOf(n.id)===-1&&o.push(n)});else if(r!=null)for(let n in r){let s=r[n];t.indexOf(s.id)===-1&&o.push(s)}o.forEach(n=>{n.isDisposed||n.dispose()})}function VH(r){return r instanceof R}function Aw(r){return Array.isArray(r)}function v1(r){return!VH(r)&&!Aw(r)}function k1(r,e,t,o=!0,n=""){if(e==null||e.length===0){if(r!=null){let a=!1;if(Aw(r)&&r.length>0)a=!0;else if(v1(r)){for(let i in r)if(r.hasOwnProperty(i)){a=!0;break}}else a=!0;if(a)throw new B(`Error when checking model ${n} expected no data, but got ${r}`)}return[]}if(r==null)return e.map(a=>null);let s;if(v1(r)){r=r,s=[];for(let a of e){if(r[a]==null)throw new B(`No data provided for "${a}". Need data for each key in: ${e}`);s.push(r[a])}}else if(Aw(r)){if(r=r,r.length!==e.length)throw new B(`Error when checking model ${n}: the Array of Tensors that you are passing to your model is not the size the model expected. Expected to see ${e.length} Tensor(s), but instead got the following list of Tensor(s): ${r}`);s=r}else{if(r=r,e.length>1)throw new B(`The model ${n} expects ${e.length} Tensor(s), but only received one Tensor. Found: Tensor with shape ${r.shape}`);s=[r]}if(s=Ew(s),t!=null)for(let a=0;a=0&&u!==c)throw new B(`Error when checking ${n}: expected ${e[a]} to have shape [${t[a]}], but got array with shape [${i.shape}].`)}}return s}function WH(r,e,t){let o=qn(r.map(s=>s.shape[0]));o.sort();let n=qn(e.map(s=>s.shape[0]));if(n.sort(),o.length>1)throw new B(`All input Tensors (x) should have the same number of samples. Got array shapes: ${JSON.stringify(r.map(s=>s.shape))}`);if(n.length>1)throw new B(`All target Tensors (y) should have the same number of samples. Got array shapes: ${JSON.stringify(e.map(s=>s.shape))}`);if(o.length>0&&n.length>0&&!x.arraysEqual(o,n))throw new B(`Input Tensors should have the same number of samples as target Tensors. Found ${o[0]} input sample(s) and ${n[0]} target sample(s).`)}function GH(r,e,t){let o=[Ui,Cp,Ju];for(let n=0;n1)throw new B(`The model expects ${e.length} ${n} Tensors, but only received one Tensor. Found: array with shape ${JSON.stringify(r.shape)}.`);s=[r]}if(t!=null)for(let a=0;a[]);let t;if(typeof r=="string"||typeof r=="function")t=[r];else if(Array.isArray(r)||typeof r=="object")t=r;else throw new TypeError(`Type of metrics argument not understood. Expected an string,function, Array, or Object, found: ${r}`);if(Array.isArray(t))return e.map(o=>t);{let o=[];for(let n of e){let s=t.hasOwnProperty(n)?t[n]:[];Array.isArray(s)||(s=[s]),o.push(s)}return o}}var jH="layers-model",Io=class extends Wo{constructor(e){super(e);this.isTraining=!1}summary(e,t,o=console.log){if(!this.built)throw new B("This model has never been called, thus its weights have not been created yet. So no summary can be displayed. Build the model first (e.g., by calling it on some test data).");p1(this,e,t,o)}compile(e){if(e.loss==null&&(e.loss=[]),this.loss=e.loss,typeof e.optimizer=="string")this.optimizer_=u1(e.optimizer),this.isOptimizerOwned=!0;else{if(!(e.optimizer instanceof Mr))throw new B("User-defined optimizer must be an instance of tf.Optimizer.");this.optimizer_=e.optimizer,this.isOptimizerOwned=!1}let t=[];if(!Array.isArray(e.loss)&&typeof e.loss!="string"&&typeof e.loss!="function"){e.loss=e.loss;for(let a in e.loss)if(this.outputNames.indexOf(a)===-1)throw new B(`Unknown entry in loss dictionary: "${a}". Only expected the following keys: ${this.outputNames}`);for(let a of this.outputNames)e.loss[a]==null&&console.warn(`Output "${a}" is missing from loss dictionary. We assume this was done on purpose, and we will not be expecting data to be passed to ${a} during training`),t.push(Pg(e.loss[a]))}else if(Array.isArray(e.loss)){if(e.loss.length!==this.outputs.length)throw new B(`When passing an Array as loss, it should have one entry per model output. The model has ${this.outputs.length} output(s), but you passed loss=${e.loss}.`);t=e.loss.map(i=>Pg(i))}else{let a=Pg(e.loss);this.outputs.forEach(i=>{t.push(a)})}this.lossFunctions=t,this.feedOutputNames=[],this.feedOutputShapes=[],this.feedLossFns=[];for(let a=0;a{for(let a=0;a1&&(this.metricsTensors.push([i,a]),this.metricsNames.push(this.outputNames[a]+"_loss"))}});let n=UH(e.metrics,this.outputNames),s=(a,i,l)=>{this.outputNames.length>1&&(i=this.outputNames[a]+"_"+i),this.metricsNames.push(i),this.metricsTensors.push([l,a])};Ds("metric",()=>{for(let a=0;a{let c="",p,m,f;for(let d of u){if(typeof d=="string"&&["accuracy","acc","crossentropy","ce"].indexOf(d)!==-1){let g=this.internalOutputShapes[a];g[g.length-1]===1||this.lossFunctions[a]===Cp?["accuracy","acc"].indexOf(d)!==-1?m=Cf:["crossentropy","ce"].indexOf(d)!==-1&&(m=Mg):this.lossFunctions[a]===kp?["accuracy","acc"].indexOf(d)!==-1?m=Lg:["crossentropy","ce"].indexOf(d)!==-1&&(m=Iw):["accuracy","acc"].indexOf(d)!==-1?m=If:["crossentropy","ce"].indexOf(d)!==-1&&(m=Nf);let y;["accuracy","acc"].indexOf(d)!==-1?y="acc":["crossentropy","ce"].indexOf(d)!==-1&&(y="ce"),f=m,p=c+y}else f=l1(d),p=c+Sf(d);let h;Ds(p,()=>{h=f}),s(a,p,h)}})(i)}}),this.collectedTrainableWeights=this.trainableWeights}checkTrainableWeightsConsistency(){this.collectedTrainableWeights!=null&&this.trainableWeights.length!==this.collectedTrainableWeights.length&&console.warn("Discrepancy between trainableweights and collected trainable weights. Did you set `model.trainable` without calling `model.compile()` afterwards?")}evaluate(e,t,o={}){let n=o.batchSize==null?32:o.batchSize;Ug(n);let s=!0,a=this.standardizeUserDataXY(e,t,s,n);try{let i=a[0].concat(a[1]);this.makeTestFunction();let l=this.testFunction,u=this.testLoop(l,i,n,o.verbose,o.steps);return hr(u)}finally{yl(a[0],e),yl(a[1],t)}}async evaluateDataset(e,t){return this.makeTestFunction(),_1(this,e,t)}checkNumSamples(e,t,o,n="steps"){let s;if(o!=null){if(s=null,t!=null)throw new B(`If ${n} is set, batchSize must be null or undefined.Got batchSize = ${t}`)}else if(e!=null)Array.isArray(e)?s=e[0].shape[0]:s=e.shape[0];else throw new B(`Either the input data should have a defined shape, or ${n} shoud be specified.`);return s}execute(e,t){if(Array.isArray(t)&&t.length===0)throw new B("`outputs` is an empty Array, which is not allowed.");let o=Array.isArray(t),n=o?t:[t],s=this.retrieveSymbolicTensors(n),a=new Rs;if(e instanceof R&&(e=[e]),Array.isArray(e)){if(e.length!==this.inputs.length)throw new B(`The number of inputs provided (${e.length}) does not match the number of inputs of this model (${this.inputs.length}).`);for(let l=0;li.name);for(let i=0;i0){let n=[];throw t.forEach((s,a)=>{s==null&&n.push(e[a])}),new B(`Cannot find SymbolicTensors for output name(s): ${JSON.stringify(n)}`)}return t}predictLoop(e,t=32,o=!1){return V(()=>{let n=this.checkNumSamples(e);if(o)throw new Se("Verbose predictLoop() is not implemented yet.");let s=qg(n,t),a=this.outputs.map(i=>[]);for(let i=0;i{let u=s[i][0],c=s[i][1],p=Ip(e,u,c),m=[];if(Array.isArray(p))for(let d=0;da[c].push(u));return hr(a.map(i=>Je(i,0)))})}predict(e,t={}){let o=Ew(e);C1(o,this.inputNames,this.feedInputShapes,!1);try{let n=t.batchSize==null?32:t.batchSize;return Ug(n),this.predictLoop(o,n)}finally{yl(o,e)}}predictOnBatch(e){C1(e,this.inputNames,this.feedInputShapes,!0);let t=(Array.isArray(e)?e[0]:e).shape[0];return this.predictLoop(e,t)}standardizeUserDataXY(e,t,o=!0,n){if(this.optimizer_==null)throw new Lr("You must compile a model before training/testing. Use LayersModel.compile(modelCompileArgs).");let s=[];for(let a=0;a0&&e[0].shape[0]%n!=0)throw new B(`In a stateful network, you should only pass inputs with a number of samples that is divisible by the batch size ${n}. Found: ${e[0].shape[0]} sample(s).`);return[e,t]}async standardizeUserData(e,t,o,n,s=!0,a){let[i,l]=this.standardizeUserDataXY(e,t,s,a);if(o!=null)throw new Error("sample weight is not supported yet.");let u=null;if(n!=null){let c=Wg(n,this.outputNames);u=[];for(let p=0;p{let a=this.checkNumSamples(t,o,s,"steps"),i=[];if(n>0)throw new Se("Verbose mode is not implemented yet.");if(s!=null)throw new Se("steps mode in testLoop() is not implemented yet");{let l=qg(a,o),u=Gt(zr(0,a));for(let c=0;c1&&(s+=`_${dw(e.slice(0,o),n)}`),t.push(s)}return t}makeTrainFunction(){return e=>{let t=[],o=e.slice(0,this.inputs.length),n=e.slice(this.inputs.length,this.inputs.length+this.outputs.length),s=e.slice(this.inputs.length+this.outputs.length,this.inputs.length+this.outputs.length*2),a=[],i=()=>{let p=[];for(let h=0;h1&&h{d=ee(d,h)}),d},l=this.collectedTrainableWeights.map(p=>p.read()),u=!0;return[this.optimizer_.minimize(i,u,l)].concat(a)}}makeTestFunction(){this.testFunction=e=>V(()=>{let t=[],o,n=e.slice(0,this.inputs.length),s=e.slice(this.inputs.length,this.inputs.length+this.outputs.length),a=[];for(let u=0;uUn(t))}else{let t=Object.keys(this.loss);e={};let o=this.loss;for(let n of t)if(typeof o[n]=="string")e[n]=Un(o[n]);else throw new Error("Serialization of non-string loss is not supported.")}return e}getMetricIdentifiers(){if(typeof this.metrics=="string"||typeof this.metrics=="function")return[Un(Sf(this.metrics))];if(Array.isArray(this.metrics))return this.metrics.map(e=>Un(Sf(e)));{let e={};for(let t in this.metrics)e[t]=Un(Sf(this.metrics[t]));return e}}getTrainingConfig(){return{loss:this.getLossIdentifiers(),metrics:this.getMetricIdentifiers(),optimizer_config:{class_name:this.optimizer.getClassName(),config:this.optimizer.getConfig()}}}loadTrainingConfig(e){if(e.weighted_metrics!=null)throw new Error("Loading weight_metrics is not supported yet.");if(e.loss_weights!=null)throw new Error("Loading loss_weights is not supported yet.");if(e.sample_weight_mode!=null)throw new Error("Loading sample_weight_mode is not supported yet.");let t=Qu(e.optimizer_config),o=eo(t),n;if(typeof e.loss=="string")n=La(e.loss);else if(Array.isArray(e.loss))n=e.loss.map(a=>La(a));else if(e.loss!=null){n={};for(let a in e.loss)n[a]=La(e.loss[a])}let s;if(Array.isArray(e.metrics))s=e.metrics.map(a=>La(a));else if(e.metrics!=null){s={};for(let a in e.metrics)s[a]=La(e.metrics[a])}this.compile({loss:n,metrics:s,optimizer:o})}async save(e,t){if(typeof e=="string"){let u=Cr.getSaveHandlers(e);if(u.length===0)throw new B(`Cannot find any save handlers for URL '${e}'`);if(u.length>1)throw new B(`Found more than one (${u.length}) save handlers for URL '${e}'`);e=u[0]}if(e.save==null)throw new B("LayersModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");let o=await Cr.encodeWeights(this.getNamedWeights(t)),n=!1,s=null,i={modelTopology:this.toJSON(s,n),format:jH,generatedBy:`TensorFlow.js tfjs-layers v${xl}`,convertedBy:null};if((t==null?!1:t.includeOptimizer)&&this.optimizer!=null){i.trainingConfig=this.getTrainingConfig();let u="optimizer",{data:c,specs:p}=await Cr.encodeWeights(await this.optimizer.getWeights(),u);o.specs.push(...p),o.data=Cr.concatenateArrayBuffers([o.data,c])}if(this.userDefinedMetadata!=null){let u=!0;Sw(this.userDefinedMetadata,this.name,u),i.userDefinedMetadata=this.userDefinedMetadata}return i.weightData=o.data,i.weightSpecs=o.specs,e.save(i)}setUserDefinedMetadata(e){Sw(e,this.name),this.userDefinedMetadata=e}getUserDefinedMetadata(){return this.userDefinedMetadata}};Io.className="Model";te.registerClass(Io);var Dw=class extends Io{};Dw.className="Functional";te.registerClass(Dw);async function I1(r,e){"modelTopology"in r||(r={modelTopology:r}),r=r;let t=r.modelTopology;t.model_config!=null&&(t=t.model_config);let o=Qu(t),n=eo(o,e);if(r.weightsManifest!=null){let s=await Cr.loadWeights(r.weightsManifest,r.pathPrefix,n.weights.map(i=>i.originalName)),a={};for(let i of n.weights)a[i.originalName]=s[i.originalName];n.loadWeights(a),Ae(s)}return n}async function N1(r,e){if(e==null&&(e={}),typeof r=="string"){let t=Cr.getLoadHandlers(r,e);if(t.length===0)t.push(Cr.browserHTTPRequest(r,e));else if(t.length>1)throw new B(`Found more than one (${t.length}) load handlers for URL '${r}'`);r=t[0]}return qH(r,void 0,e)}async function qH(r,e,t){if(t==null&&(t={}),r.load==null)throw new B("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let o=await r.load(),n=o.modelTopology;n.model_config!=null&&(n=n.model_config);let s=t.strict==null?!0:t.strict,a=o.weightData!=null&&o.weightSpecs!=null&&s,i=eo(Qu(n),e,a),l=o.trainingConfig;if(l!=null&&i.loadTrainingConfig(l),o.userDefinedMetadata!=null&&i.setUserDefinedMetadata(o.userDefinedMetadata),o.weightData!=null){if(o.weightSpecs==null)throw new B("LayersModel artifacts contains weight data, but not weight specs. Therefore loading of weights cannot proceed.");let{modelWeights:u,optimizerWeights:c}=HH(o.weightData,o.weightSpecs);i.loadWeights(u,s),i.optimizer!=null&&c.length>0&&await i.optimizer.setWeights(c),Ae(u),Ae(c.map(p=>p.tensor))}return i}function HH(r,e){let t=Cr.decodeWeights(r,e),o={},n=[];return e.forEach(s=>{s.group==="optimizer"?n.push({name:s.name,tensor:t[s.name]}):o[s.name]=t[s.name]}),{modelWeights:o,optimizerWeights:n}}var ji=class extends Io{constructor(e){super({inputs:[],outputs:[]});if(e=e||{},this.trainable=!0,this.built=!1,this.name=e.name!=null?e.name:fl("sequential_"),e.layers!=null)for(let t of e.layers)this.add(t)}checkShape(e){if(e.inboundNodes[0].outputTensors[0].shape.some(o=>o<0))throw new B(`Negative dimension size caused by adding layer ${e.name} with input shape [${e.inboundNodes[0].inputTensors[0].shape}]`)}add(e){let t=e instanceof ji||e instanceof Io,o;if(t){if(o=e,o.outputs.length!==1)throw new B("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");if(o.inputs.length!==1)throw new B("All layers in a Sequential model should have a single input tensor. For multi-input layers, use the functional API.")}if(this.outputs.length===0){if(e.inboundNodes.length===0){if(e.batchInputShape==null)throw new B("The first layer in a Sequential model must get an `inputShape` or `batchInputShape` argument.");let n=Eg({batchShape:e.batchInputShape,dtype:e.dtype,name:e.name+"_input"});e.apply(n)}if(t)this.outputs=o.outputs,this.inputs=o.inputs;else{if(e.inboundNodes.length!==1)throw new B(`A layer added to a Sequential model must not already be connected somewhere else. LayersModel received layer ${e.name} which has ${e.inboundNodes.length} pre-existing inbound connections.`);if(e.inboundNodes[0].outputTensors.length!==1)throw new B("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(e),this.outputs=[e.inboundNodes[0].outputTensors[0]],this.inputs=kw(this.outputs[0])}this.inboundNodes=[],new dl({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:Gn(null,this.inputs.length),outputMasks:[null],inputShapes:this.inputs.map(n=>n.shape),outputShapes:this.outputs[0].shape})}else{let n=e.apply(this.outputs[0]);if(Array.isArray(n))throw new TypeError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(e),this.outputs=[n],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}this.layers.push(e),this.built=!1}pop(){if(this.layers.length===0)throw new TypeError("There are no layers in the model.");if(this.layers.pop(),this.layers.length===0)this.outputs=[],this.inboundNodes=[],this.outboundNodes=[];else{let e=this.layers.length-1;this.layers[e].outboundNodes=[],this.outputs=[this.layers[e].output],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}}call(e,t){return this.model==null&&this.build(),this.model.call(e,t)}build(e){if(Qe(e),this.inputs.length===0||this.outputs.length===0)throw new TypeError("Sequential model cannot be built: model is empty. Add some layers first.");this.model=new Io({inputs:this.inputs,outputs:this.outputs[0],name:this.name+"_model"}),this.model.trainable=this.trainable,this.supportsMasking=this.model.supportsMasking,this.inputLayers=this.model.inputLayers,this.inputLayersNodeIndices=this.model.inputLayersNodeIndices,this.inputLayersTensorIndices=this.model.inputLayersTensorIndices,this.outputLayers=this.model.outputLayers,this.outputLayersNodeIndices=this.model.outputLayersNodeIndices,this.outputLayersTensorIndices=this.model.outputLayersTensorIndices,this.nodesByDepth=this.model.nodesByDepth,this.containerNodes=this.model.containerNodes,this.outputNames=this.model.outputNames,this.inputNames=this.model.inputNames,this.built=!0}countParams(){return this.built||this.build(),super.countParams()}summary(e,t,o=console.log){this.built||this.build(),super.summary(e,t,o)}setWeights(e){this.model==null&&this.build(),this.model.setWeights(e)}evaluate(e,t,o={}){if(!this.built)throw new Lr("The model needs to be compiled before being used.");return this.model.evaluate(e,t,o)}async evaluateDataset(e,t){if(!this.built)throw new Lr("The model needs to be compiled before being used.");return this.model.evaluateDataset(e,t)}predict(e,t={}){return this.model==null&&this.build(),this.model.predict(e,t)}predictOnBatch(e){return this.model==null&&this.build(),this.model.predictOnBatch(e)}compile(e){this.build(),this.model.compile(e),this.optimizer_=this.model.optimizer,this.isOptimizerOwned=this.model.isOptimizerOwned,this.loss=this.model.loss,this.metrics=this.model.metrics,this.metricsTensors=this.model.metricsTensors,this.metricsNames=this.model.metricsNames}get optimizer(){return this.model==null?void 0:this.model.optimizer}set optimizer(e){this.model.optimizer=e}async fit(e,t,o={}){if(!this.built)throw new Lr("The model needs to be compiled before being used.");return this.model.fit(e,t,o)}async fitDataset(e,t){if(!this.built)throw new Lr("The model needs to be compiled before being used.");return this.model.fitDataset(e,t)}async trainOnBatch(e,t){return this.model.trainOnBatch(e,t)}static fromConfig(e,t,o={},n=!1){let s,a={};if(t instanceof Array){if(t[0].className==null||t[0].className==="Merge")throw new B("Legacy serialization format not supported yet.");s=t}else x.assert(t.layers!=null,()=>"When the config data for a Sequential model is not an Array, it must be an Object that contains the 'layers' field."),s=t.layers,delete t.layers,a=t;let i=new e(a);if(!(i instanceof ji))throw new Se(`Sequential.fromConfig called on non-Sequential input: ${i}`);for(let l of s){let c=eo(l,void 0,n);n&&c.setFastWeightInitDuringBuild(!0),i.add(c)}return i}set stopTraining(e){if(this.model==null)throw new B("Cannot set the stopTraining property of a sequential model before it is compiled.");this.model.stopTraining=e}get stopTraining(){if(this.model==null)throw new B("Cannot get the stopTraining property of a sequential model before it is compiled.");return this.model.stopTraining}getConfig(){let e=[];for(let t of this.layers){let o={};o.className=t.getClassName(),o.config=t.getConfig(),e.push(o)}return{name:this.name,layers:e}}};ji.className="Sequential";te.registerClass(ji);function S1(r){return new Io(r)}function T1(r){return new ji(r)}function E1(r,e){return e==null&&(e={}),N1(r,e)}function Hg(r){return Eg(r)}function A1(r,e){ao.registerCallbackConstructor(r,e)}var lo=class extends te.Serializable{getConfig(){return{}}},$w=class extends lo{apply(e,t=1){return YT(e,t)}};$w.className="elu";te.registerClass($w);var Rw=class extends lo{apply(e){return zu(e)}};Rw.className="selu";te.registerClass(Rw);var Fw=class extends lo{apply(e){return Sr(e)}};Fw.className="relu";te.registerClass(Fw);var Ow=class extends lo{apply(e){return V(()=>Bo(6,Sr(e)))}};Ow.className="relu6";te.registerClass(Ow);var Pw=class extends lo{apply(e){return e}};Pw.className="linear";te.registerClass(Pw);var Mw=class extends lo{apply(e){return Kr(e)}};Mw.className="sigmoid";te.registerClass(Mw);var Lw=class extends lo{apply(e){return JT(e)}};Lw.className="hardSigmoid";te.registerClass(Lw);var zw=class extends lo{apply(e){return Ss(e)}};zw.className="softplus";te.registerClass(zw);var Bw=class extends lo{apply(e){return ZT(e)}};Bw.className="softsign";te.registerClass(Bw);var Vw=class extends lo{apply(e){return Pi(e)}};Vw.className="tanh";te.registerClass(Vw);var Tf=class extends lo{apply(e,t=-1){return Ra(e,t)}};Tf.className="softmax";te.registerClass(Tf);var Ww=class extends lo{apply(e,t=-1){return $u(e,t)}};Ww.className="logSoftmax";te.registerClass(Ww);var Gw=class extends lo{apply(e,t=1){return V(()=>Kr(e.mul(t)).mul(e))}};Gw.className="swish";te.registerClass(Gw);function Fs(r){return r.getClassName()}function Uw(r,e={}){return Bi(r,te.SerializationMap.getMap().classNameMap,e,"activation")}function Os(r){if(r==null){let e={};return e.className="linear",e.config={},Uw(e)}if(typeof r=="string"){let e={};return e.className=r,e.config={},Uw(e)}else return r instanceof lo?r:Uw(r)}function jw(r){if(r!=null&&typeof r!="object")throw new Error(`Argument to L1L2 regularizer's constructor is expected to be an object, but received: ${r}`)}var qw=class extends te.Serializable{},tc=class extends qw{constructor(e){super();jw(e),this.l1=e==null||e.l1==null?.01:e.l1,this.l2=e==null||e.l2==null?.01:e.l2,this.hasL1=this.l1!==0,this.hasL2=this.l2!==0}apply(e){return V(()=>{let t=pt([1]);return this.hasL1&&(t=ee(t,be(O(this.l1,Et(e))))),this.hasL2&&(t=ee(t,be(O(this.l2,Yu(e))))),t.asScalar()})}getConfig(){return{l1:this.l1,l2:this.l2}}static fromConfig(e,t){return new e({l1:t.l1,l2:t.l2})}};tc.className="L1L2";te.registerClass(tc);function D1(r){return jw(r),new tc({l1:r!=null?r.l1:null,l2:0})}function $1(r){return jw(r),new tc({l2:r!=null?r.l2:null,l1:0})}var R1={l1l2:"L1L2"};function ut(r){return lp(r)}function F1(r,e={}){return Bi(r,te.SerializationMap.getMap().classNameMap,e,"regularizer")}function vt(r){if(r==null)return null;if(typeof r=="string"){let t={className:r in R1?R1[r]:r,config:{}};return F1(t)}else return r instanceof qw?r:F1(r)}var Ef=class extends Le{constructor(e){super(e==null?{}:e);this.supportsMasking=!0,e!=null&&(this.maxValue=e.maxValue)}call(e,t){e=Oe(e);let o=Sr(e);return this.maxValue!=null&&(o=ir(o,0,this.maxValue)),o}computeOutputShape(e){return e}getConfig(){let e={maxValue:this.maxValue},t=super.getConfig();return Object.assign(e,t),e}};Ef.className="ReLU";te.registerClass(Ef);var Af=class extends Le{constructor(e){super(e==null?{}:e);this.DEFAULT_ALPHA=.3,e==null&&(e={}),this.alpha=e.alpha==null?this.DEFAULT_ALPHA:e.alpha}call(e,t){let o=Oe(e);return Sa(o,this.alpha)}computeOutputShape(e){return e}getConfig(){let e={alpha:this.alpha},t=super.getConfig();return Object.assign(e,t),e}};Af.className="LeakyReLU";te.registerClass(Af);var Df=class extends Le{constructor(e){super(e==null?{}:e);if(this.DEFAULT_ALPHA_INITIALIZER="zeros",e==null&&(e={}),this.supportsMasking=!0,this.alphaInitializer=ht(e.alphaInitializer||this.DEFAULT_ALPHA_INITIALIZER),this.alphaRegularizer=vt(e.alphaRegularizer),this.alphaConstraint=Lt(e.alphaConstraint),e.sharedAxes==null)this.sharedAxes=null;else if(Array.isArray(e.sharedAxes))this.sharedAxes=e.sharedAxes;else if(typeof e.sharedAxes=="number")this.sharedAxes=[e.sharedAxes];else throw new B(`Expected sharedAxes to be a number or an array of numbers, but got ${e.sharedAxes}`)}build(e){e=Qe(e);let t=e.slice(1);if(this.sharedAxes!=null)for(let n of this.sharedAxes)t[n-1]=1;this.alpha=this.addWeight("alpha",t,"float32",this.alphaInitializer,this.alphaRegularizer,!0,this.alphaConstraint);let o={};if(this.sharedAxes!=null)for(let n=1;n(Rt(e),e==="channelsFirst"?qe(r,[0,2,3,1]):r))}function Hw(r,e){return V(()=>(Rt(e),e==="channelsFirst"?qe(r,[0,2,3,4,1]):r))}function KH(r,e,t,o=1,n="valid",s,a=1){return V(()=>{if(s==null&&(s=Jr()),Rt(s),r.shape.length!==3)throw new B(`The input of a conv1dWithBias operation should be 3, but is ${r.shape.length} instead.`);if(e.shape.length!==3)throw new B(`The kernel for a conv1dWithBias operation should be 3, but is ${e.shape.length} instead`);if(t!=null&&t.shape.length!==1)throw new B(`The bias for a conv1dWithBias operation should be 1, but is ${e.shape.length} instead`);if(s==="channelsFirst"&&(r=qe(r,[0,2,1])),n==="causal")throw new Se("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");let i=Nu(r,e,o,n==="same"?"same":"valid","NWC",a);return t!=null&&(i=so(i,t)),i})}function O1(r,e,t,o=[1,1],n="valid",s,a,i=null){return V(()=>{if(s==null&&(s=Jr()),Rt(s),r.rank!==3&&r.rank!==4)throw new B(`conv2dWithBiasActivation expects input to be of rank 3 or 4, but received ${r.rank}.`);if(e.rank!==3&&e.rank!==4)throw new B(`conv2dWithBiasActivation expects kernel to be of rank 3 or 4, but received ${r.rank}.`);let l=Pf(r,s);if(n==="causal")throw new Se("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");return l=Vn.conv2d({x:l,filter:e,strides:o,pad:n==="same"?"same":"valid",dilations:a,dataFormat:"NHWC",bias:t,activation:i}),s==="channelsFirst"&&(l=qe(l,[0,3,1,2])),l})}function XH(r,e,t,o=[1,1,1],n="valid",s,a){return V(()=>{if(s==null&&(s=Jr()),Rt(s),r.rank!==4&&r.rank!==5)throw new B(`conv3dWithBias expects input to be of rank 4 or 5, but received ${r.rank}.`);if(e.rank!==4&&e.rank!==5)throw new B(`conv3dWithBias expects kernel to be of rank 4 or 5, but received ${r.rank}.`);let i=Hw(r,s);if(n==="causal")throw new Se("The support for CAUSAL padding mode in conv3dWithBias is not implemented yet.");return i=Dm(i,e,o,n==="same"?"same":"valid","NDHWC",a),t!=null&&(i=so(i,t)),s==="channelsFirst"&&(i=qe(i,[0,4,1,2,3])),i})}var Np=class extends Le{constructor(e,t){super(t);if(this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",Np.verifyArgs(t),this.rank=e,jt(this.rank,"rank"),this.rank!==1&&this.rank!==2&&this.rank!==3)throw new Se(`Convolution layer for rank other than 1, 2, or 3 (${this.rank}) is not implemented yet.`);if(this.kernelSize=bl(t.kernelSize,e,"kernelSize"),this.strides=bl(t.strides==null?1:t.strides,e,"strides"),this.padding=t.padding==null?"valid":t.padding,Qr(this.padding),this.dataFormat=t.dataFormat==null?"channelsLast":t.dataFormat,Rt(this.dataFormat),this.activation=Os(t.activation),this.useBias=t.useBias==null?!0:t.useBias,this.biasInitializer=ht(t.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.biasConstraint=Lt(t.biasConstraint),this.biasRegularizer=vt(t.biasRegularizer),this.activityRegularizer=vt(t.activityRegularizer),this.dilationRate=bl(t.dilationRate==null?1:t.dilationRate,e,"dilationRate"),this.rank===1&&Array.isArray(this.dilationRate)&&this.dilationRate.length!==1)throw new B(`dilationRate must be a number or an array of a single number for 1D convolution, but received ${JSON.stringify(this.dilationRate)}`);if(this.rank===2){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==2)throw new B(`dilationRate must be a number or array of two numbers for 2D convolution, but received ${JSON.stringify(this.dilationRate)}`)}else if(this.rank===3){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==3)throw new B(`dilationRate must be a number or array of three numbers for 3D convolution, but received ${JSON.stringify(this.dilationRate)}`)}}static verifyArgs(e){if(Vo("kernelSize"in e,"required key 'kernelSize' not in config"),typeof e.kernelSize!="number"&&!bg(e.kernelSize,"number",1,3))throw new B(`BaseConv expects config.kernelSize to be number or number[] with length 1, 2, or 3, but received ${JSON.stringify(e.kernelSize)}.`)}getConfig(){let e={kernelSize:this.kernelSize,strides:this.strides,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,activation:Fs(this.activation),useBias:this.useBias,biasInitializer:St(this.biasInitializer),biasRegularizer:ut(this.biasRegularizer),activityRegularizer:ut(this.activityRegularizer),biasConstraint:Mt(this.biasConstraint)},t=super.getConfig();return Object.assign(e,t),e}},rc=class extends Np{constructor(e,t){super(e,t);this.kernel=null,rc.verifyArgs(t),this.filters=t.filters,jt(this.filters,"filters"),this.kernelInitializer=ht(t.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.kernelConstraint=Lt(t.kernelConstraint),this.kernelRegularizer=vt(t.kernelRegularizer)}build(e){e=Qe(e);let t=this.dataFormat==="channelsFirst"?1:e.length-1;if(e[t]==null)throw new B(`The channel dimension of the input should be defined. Found ${e[t]}`);let o=e[t],n=this.kernelSize.concat([o,this.filters]);this.kernel=this.addWeight("kernel",n,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[{ndim:this.rank+2,axes:{[t]:o}}],this.built=!0}call(e,t){return V(()=>{e=Oe(e);let o,n=this.bias==null?null:this.bias.read(),s=_g(this.activation.getClassName());if(s!=null&&this.rank===2)o=O1(e,this.kernel.read(),n,this.strides,this.padding,this.dataFormat,this.dilationRate,s);else{if(this.rank===1)o=KH(e,this.kernel.read(),n,this.strides[0],this.padding,this.dataFormat,this.dilationRate[0]);else if(this.rank===2)o=O1(e,this.kernel.read(),n,this.strides,this.padding,this.dataFormat,this.dilationRate);else if(this.rank===3)o=XH(e,this.kernel.read(),n,this.strides,this.padding,this.dataFormat,this.dilationRate);else throw new Se("convolutions greater than 3D are not implemented yet.");this.activation!=null&&(o=this.activation.apply(o))}return o})}computeOutputShape(e){e=Qe(e);let t=[],o=this.dataFormat==="channelsLast"?e.slice(1,e.length-1):e.slice(2);for(let s=0;s 0 but got ${JSON.stringify(e.filters)}`)}},_l=class extends rc{constructor(e){super(2,e);_l.verifyArgs(e)}getConfig(){let e=super.getConfig();return delete e.rank,e}static verifyArgs(e){if(typeof e.kernelSize!="number"&&!bg(e.kernelSize,"number",1,2))throw new B(`Conv2D expects config.kernelSize to be number or number[] with length 1 or 2, but received ${JSON.stringify(e.kernelSize)}.`)}};_l.className="Conv2D";te.registerClass(_l);var oc=class extends rc{constructor(e){super(3,e);oc.verifyArgs(e)}getConfig(){let e=super.getConfig();return delete e.rank,e}static verifyArgs(e){if(typeof e.kernelSize!="number"&&!(Array.isArray(e.kernelSize)&&(e.kernelSize.length===1||e.kernelSize.length===3)))throw new B(`Conv3D expects config.kernelSize to be number or [number, number, number], but received ${JSON.stringify(e.kernelSize)}.`)}};oc.className="Conv3D";te.registerClass(oc);var Mf=class extends _l{constructor(e){super(e);if(this.inputSpec=[new At({ndim:4})],this.padding!=="same"&&this.padding!=="valid")throw new B(`Conv2DTranspose currently supports only padding modes 'same' and 'valid', but received padding mode ${this.padding}`)}build(e){if(e=Qe(e),e.length!==4)throw new B("Input should have rank 4; Received input shape: "+JSON.stringify(e));let t=this.dataFormat==="channelsFirst"?1:e.length-1;if(e[t]==null)throw new B("The channel dimension of the inputs should be defined. Found `None`.");let o=e[t],n=this.kernelSize.concat([this.filters,o]);this.kernel=this.addWeight("kernel",n,"float32",this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],"float32",this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[new At({ndim:4,axes:{[t]:o}})],this.built=!0}call(e,t){return V(()=>{let o=Oe(e);if(o.shape.length!==4)throw new B(`Conv2DTranspose.call() expects input tensor to be rank-4, but received a tensor of rank-${o.shape.length}`);let n=o.shape,s=n[0],a,i;this.dataFormat==="channelsFirst"?(a=2,i=3):(a=1,i=2);let l=n[a],u=n[i],c=this.kernelSize[0],p=this.kernelSize[1],m=this.strides[0],f=this.strides[1],d=Of(l,m,c,this.padding),h=Of(u,f,p,this.padding),g=[s,d,h,this.filters];this.dataFormat!=="channelsLast"&&(o=qe(o,[0,2,3,1]));let y=Su(o,this.kernel.read(),g,this.strides,this.padding);return this.dataFormat!=="channelsLast"&&(y=qe(y,[0,3,1,2])),this.bias!=null&&(y=so(y,this.bias.read(),this.dataFormat)),this.activation!=null&&(y=this.activation.apply(y)),y})}computeOutputShape(e){e=Qe(e);let t=e.slice(),o,n,s;this.dataFormat==="channelsFirst"?(o=1,n=2,s=3):(o=3,n=1,s=2);let a=this.kernelSize[0],i=this.kernelSize[1],l=this.strides[0],u=this.strides[1];return t[o]=this.filters,t[n]=Of(t[n],l,a,this.padding),t[s]=Of(t[s],u,i,this.padding),t}getConfig(){let e=super.getConfig();return delete e.dilationRate,e}};Mf.className="Conv2DTranspose";te.registerClass(Mf);var Kw=class extends rc{constructor(e,t){super(e,t);if(this.DEFAULT_DEPTHWISE_INITIALIZER="glorotUniform",this.DEFAULT_POINTWISE_INITIALIZER="glorotUniform",this.depthwiseKernel=null,this.pointwiseKernel=null,t.filters==null)throw new B("The `filters` configuration field is required by SeparableConv, but is unspecified.");if(t.kernelInitializer!=null||t.kernelRegularizer!=null||t.kernelConstraint!=null)throw new B("Fields kernelInitializer, kernelRegularizer and kernelConstraint are invalid for SeparableConv2D. Use depthwiseInitializer, depthwiseRegularizer, depthwiseConstraint, pointwiseInitializer, pointwiseRegularizer and pointwiseConstraint instead.");if(t.padding!=null&&t.padding!=="same"&&t.padding!=="valid")throw new B(`SeparableConv${this.rank}D supports only padding modes: 'same' and 'valid', but received ${JSON.stringify(t.padding)}`);this.depthMultiplier=t.depthMultiplier==null?1:t.depthMultiplier,this.depthwiseInitializer=ht(t.depthwiseInitializer||this.DEFAULT_DEPTHWISE_INITIALIZER),this.depthwiseRegularizer=vt(t.depthwiseRegularizer),this.depthwiseConstraint=Lt(t.depthwiseConstraint),this.pointwiseInitializer=ht(t.depthwiseInitializer||this.DEFAULT_POINTWISE_INITIALIZER),this.pointwiseRegularizer=vt(t.pointwiseRegularizer),this.pointwiseConstraint=Lt(t.pointwiseConstraint)}build(e){if(e=Qe(e),e.length{e=Oe(e);let o;if(this.rank===1)throw new Se("1D separable convolution is not implemented yet.");return this.rank===2&&(this.dataFormat==="channelsFirst"&&(e=qe(e,[0,2,3,1])),o=jm(e,this.depthwiseKernel.read(),this.pointwiseKernel.read(),this.strides,this.padding,this.dilationRate,"NHWC")),this.useBias&&(o=so(o,this.bias.read(),this.dataFormat)),this.activation!=null&&(o=this.activation.apply(o)),this.dataFormat==="channelsFirst"&&(o=qe(o,[0,3,1,2])),o})}getConfig(){let e=super.getConfig();return delete e.rank,delete e.kernelInitializer,delete e.kernelRegularizer,delete e.kernelConstraint,e.depthwiseInitializer=St(this.depthwiseInitializer),e.pointwiseInitializer=St(this.pointwiseInitializer),e.depthwiseRegularizer=ut(this.depthwiseRegularizer),e.pointwiseRegularizer=ut(this.pointwiseRegularizer),e.depthwiseConstraint=Mt(this.depthwiseConstraint),e.pointwiseConstraint=Mt(this.pointwiseConstraint),e}};Kw.className="SeparableConv";var Lf=class extends Kw{constructor(e){super(2,e)}};Lf.className="SeparableConv2D";te.registerClass(Lf);var nc=class extends rc{constructor(e){super(1,e);nc.verifyArgs(e),this.inputSpec=[{ndim:3}]}getConfig(){let e=super.getConfig();return delete e.rank,delete e.dataFormat,e}static verifyArgs(e){if(typeof e.kernelSize!="number"&&!bg(e.kernelSize,"number",1,1))throw new B(`Conv1D expects config.kernelSize to be number or number[] with length 1, but received ${JSON.stringify(e.kernelSize)}.`)}};nc.className="Conv1D";te.registerClass(nc);var zf=class extends Le{constructor(e){super(e);typeof e.cropping=="number"?this.cropping=[[e.cropping,e.cropping],[e.cropping,e.cropping]]:typeof e.cropping[0]=="number"?this.cropping=[[e.cropping[0],e.cropping[0]],[e.cropping[1],e.cropping[1]]]:this.cropping=e.cropping,this.dataFormat=e.dataFormat===void 0?"channelsLast":e.dataFormat,this.inputSpec=[{ndim:4}]}computeOutputShape(e){return this.dataFormat==="channelsFirst"?[e[0],e[1],e[2]-this.cropping[0][0]-this.cropping[0][1],e[3]-this.cropping[1][0]-this.cropping[1][1]]:[e[0],e[1]-this.cropping[0][0]-this.cropping[0][1],e[2]-this.cropping[1][0]-this.cropping[1][1],e[3]]}call(e,t){return V(()=>{if(e=Oe(e),this.dataFormat==="channelsLast"){let o=pf(e,this.cropping[0][0],e.shape[1]-this.cropping[0][0]-this.cropping[0][1],2);return pf(o,this.cropping[1][0],e.shape[2]-this.cropping[1][1]-this.cropping[1][0],3)}else{let o=pf(e,this.cropping[0][0],e.shape[2]-this.cropping[0][0]-this.cropping[0][1],3);return pf(o,this.cropping[1][0],e.shape[3]-this.cropping[1][1]-this.cropping[1][0],4)}})}getConfig(){let e={cropping:this.cropping,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}};zf.className="Cropping2D";te.registerClass(zf);var Bf=class extends Le{constructor(e){super(e);this.DEFAULT_SIZE=[2,2],this.inputSpec=[{ndim:4}],this.size=e.size==null?this.DEFAULT_SIZE:e.size,this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Rt(this.dataFormat),this.interpolation=e.interpolation==null?"nearest":e.interpolation,WT(this.interpolation)}computeOutputShape(e){if(this.dataFormat==="channelsFirst"){let t=e[2]==null?null:this.size[0]*e[2],o=e[3]==null?null:this.size[1]*e[3];return[e[0],e[1],t,o]}else{let t=e[1]==null?null:this.size[0]*e[1],o=e[2]==null?null:this.size[1]*e[2];return[e[0],t,o,e[3]]}}call(e,t){return V(()=>{let o=Oe(e),n=o.shape;if(this.dataFormat==="channelsFirst"){o=qe(o,[0,2,3,1]);let s=this.size[0]*n[2],a=this.size[1]*n[3],i=this.interpolation==="nearest"?o.resizeNearestNeighbor([s,a]):o.resizeBilinear([s,a]);return qe(i,[0,3,1,2])}else{let s=this.size[0]*n[1],a=this.size[1]*n[2];return this.interpolation==="nearest"?o.resizeNearestNeighbor([s,a]):o.resizeBilinear([s,a])}})}getConfig(){let e={size:this.size,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}};Bf.className="UpSampling2D";te.registerClass(Bf);function YH(r,e,t=[1,1],o="valid",n,s){return V(()=>{n==null&&(n=Jr()),Rt(n);let a=Pf(r,n);if(r.rank!==4)throw new B(`Input for depthwiseConv2d is required to be 4-D, but is instead ${r.rank}-D`);if(e.rank!==4)throw new B(`depthwiseKernel is required to be 4-D, but is instead ${e.rank}-D`);return a=Lo(a,e,t,o==="same"?"same":"valid","NHWC",s),n==="channelsFirst"&&(a=qe(a,[0,3,1,2])),a})}var Vf=class extends Np{constructor(e){super(2,e);this.depthwiseKernel=null,this.depthMultiplier=e.depthMultiplier==null?1:e.depthMultiplier,this.depthwiseInitializer=ht(e.depthwiseInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.depthwiseConstraint=Lt(e.depthwiseConstraint),this.depthwiseRegularizer=vt(e.depthwiseRegularizer)}build(e){if(e=Qe(e),e.length<4)throw new B(`Inputs to DepthwiseConv2D should have rank 4. Received input shape: ${JSON.stringify(e)}.`);let t=this.dataFormat==="channelsFirst"?1:3;if(e[t]==null||e[t]<0)throw new B(`The channel dimension of the inputs to DepthwiseConv2D should be defined, but is not (${e[t]}).`);let o=e[t],n=[this.kernelSize[0],this.kernelSize[1],o,this.depthMultiplier];this.depthwiseKernel=this.addWeight("depthwise_kernel",n,null,this.depthwiseInitializer,this.depthwiseRegularizer,!0,this.depthwiseConstraint),this.useBias?this.bias=this.addWeight("bias",[o*this.depthMultiplier],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(e,t){return V(()=>{e=Oe(e);let o=YH(e,this.depthwiseKernel.read(),this.strides,this.padding,this.dataFormat,null);return this.useBias&&(o=so(o,this.bias.read(),this.dataFormat)),this.activation!=null&&(o=this.activation.apply(o)),o})}computeOutputShape(e){e=Qe(e);let t=this.dataFormat==="channelsFirst"?e[2]:e[1],o=this.dataFormat==="channelsFirst"?e[3]:e[2],n=this.dataFormat==="channelsFirst"?e[1]*this.depthMultiplier:e[3]*this.depthMultiplier,s=uo(t,this.kernelSize[0],this.padding,this.strides[0]),a=uo(o,this.kernelSize[1],this.padding,this.strides[1]);return this.dataFormat==="channelsFirst"?[e[0],n,s,a]:[e[0],s,a,n]}getConfig(){let e=super.getConfig();return e.depthMultiplier=this.depthMultiplier,e.depthwiseInitializer=St(this.depthwiseInitializer),e.depthwiseRegularizer=ut(this.depthwiseRegularizer),e.depthwiseConstraint=Mt(this.depthwiseRegularizer),e}};Vf.className="DepthwiseConv2D";te.registerClass(Vf);function Xw(r,e,t,o){if(Array.isArray(r)){if(e!=null||t!=null)throw new B("When inputs is an array, neither initialState or constants should be provided");o!=null&&(t=r.slice(r.length-o,r.length),r=r.slice(0,r.length-o)),r.length>1&&(e=r.slice(1,r.length)),r=r[0]}function n(s){return s==null||Array.isArray(s)?s:[s]}return e=n(e),t=n(t),{inputs:r,initialState:e,constants:t}}function Yw(r,e,t,o=!1,n,s,a=!1,i=!1){return V(()=>{let l=e.shape.length;if(l<3)throw new B(`Input should be at least 3D, but is ${l}D.`);let u=[1,0].concat(zr(2,l));if(e=qe(e,u),s!=null)throw new Se("The rnn() functoin of the deeplearn.js backend does not support constants yet.");a&&console.warn("Backend rnn(): the unroll = true option is not applicable to the imperative deeplearn.js backend."),n!=null&&(n=n.asType("bool").asType("float32"),n.rank===l-1&&(n=br(n,-1)),n=qe(n,u)),o&&(e=Yt(e,0),n!=null&&(n=Yt(n,0)));let c=[],p,m=t,f=e.shape[0],d=cr(e),h;n!=null&&(h=cr(n));for(let y=0;yr(b,m));if(n==null)p=_[0],m=_[1];else{let w=V(()=>{let k=h[y],$=rr(k).sub(k),T=_[0].mul(k).add(m[0].mul($)),F=m.map((M,L)=>_[1][L].mul(k).add(M.mul($)));return{output:T,newStates:F}});p=w.output,m=w.newStates}i&&c.push(p)}let g;return i&&(g=Wt(c,1)),[p,g,m]})}var co=class extends Le{constructor(e){super(e);let t;if(e.cell==null)throw new B("cell property is missing for the constructor of RNN.");if(Array.isArray(e.cell)?t=new Sp({cells:e.cell}):t=e.cell,t.stateSize==null)throw new B("The RNN cell should have an attribute `stateSize` (tuple of integers, one integer per RNN state).");this.cell=t,this.returnSequences=e.returnSequences==null?!1:e.returnSequences,this.returnState=e.returnState==null?!1:e.returnState,this.goBackwards=e.goBackwards==null?!1:e.goBackwards,this._stateful=e.stateful==null?!1:e.stateful,this.unroll=e.unroll==null?!1:e.unroll,this.supportsMasking=!0,this.inputSpec=[new At({ndim:3})],this.stateSpec=null,this.states_=null,this.numConstants=null,this.keptStates=[]}getStates(){if(this.states_==null){let e=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;return zr(0,e).map(t=>null)}else return this.states_}setStates(e){this.states_=e}computeOutputShape(e){Tg(e)&&(e=e[0]),e=e;let t=this.cell.stateSize;Array.isArray(t)||(t=[t]);let o=t[0],n;if(this.returnSequences?n=[e[0],e[1],o]:n=[e[0],o],this.returnState){let s=[];for(let a of t)s.push([e[0],a]);return[n].concat(s)}else return n}computeMask(e,t){return V(()=>{Array.isArray(t)&&(t=t[0]);let o=this.returnSequences?t:null;if(this.returnState){let n=this.states.map(s=>null);return[o].concat(n)}else return o})}get states(){if(this.states_==null){let e=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1,t=[];for(let o=0;oi.shape[i.shape.length-1]),a))throw new B(`An initialState was passed that is not compatible with cell.stateSize. Received stateSpec=${this.stateSpec}; However cell.stateSize is ${this.cell.stateSize}`)}else this.stateSpec=a.map(i=>new At({shape:[null,i]}));this.stateful&&this.resetStates()}resetStates(e,t=!1){V(()=>{if(!this.stateful)throw new Co("Cannot call resetStates() on an RNN Layer that is not stateful.");let o=this.inputSpec[0].shape[0];if(o==null)throw new B("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.states_==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(n=>pt([o,n])):this.states_=[pt([o,this.cell.stateSize])];else if(e==null)Ae(this.states_),this.keptStates!=null&&(Ae(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(n=>pt([o,n])):this.states_[0]=pt([o,this.cell.stateSize]);else{if(Array.isArray(e)||(e=[e]),e.length!==this.states_.length)throw new B(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${e.length} state value(s). Input received: ${e}`);t===!0?this.keptStates.push(this.states_.slice()):Ae(this.states_);for(let n=0;nDt(n.clone()))})}apply(e,t){let o=t==null?null:t.initialState,n=t==null?null:t.constants;t==null&&(t={});let s=Xw(e,o,n,this.numConstants);e=s.inputs,o=s.initialState,n=s.constants;let a=[],i=[];if(o!=null){t.initialState=o,a=a.concat(o),this.stateSpec=[];for(let u of o)this.stateSpec.push(new At({shape:u.shape}));i=i.concat(this.stateSpec)}if(n!=null&&(t.constants=n,a=a.concat(n),this.numConstants=n.length),a[0]instanceof Vr){let u=[e].concat(a),c=this.inputSpec.concat(i),p=this.inputSpec;this.inputSpec=c;let m=super.apply(u,t);return this.inputSpec=p,m}else return super.apply(e,t)}call(e,t){return V(()=>{let o=t==null?null:t.mask,n=t==null?null:t.training,s=t==null?null:t.initialState;e=Oe(e),s==null&&(this.stateful?s=this.states_:s=this.getInitialState(e));let a=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;if(s.length!==a)throw new B(`RNN Layer has ${a} state(s) but was passed ${s.length} initial state(s).`);this.unroll&&console.warn("Ignoring unroll = true for RNN layer, due to imperative backend.");let i={training:n},u=Yw((d,h)=>{let g=this.cell.call([d].concat(h),i);return[g[0],g.slice(1)]},e,s,this.goBackwards,o,null,this.unroll,this.returnSequences),c=u[0],p=u[1],m=u[2];this.stateful&&this.resetStates(m,n);let f=this.returnSequences?p:c;return this.returnState?[f].concat(m):f})}getInitialState(e){return V(()=>{let t=pt(e.shape);return t=be(t,[1,2]),t=Ba(t),Array.isArray(this.cell.stateSize)?this.cell.stateSize.map(o=>o>1?kg(t,[1,o]):t):this.cell.stateSize>1?[kg(t,[1,this.cell.stateSize])]:[t]})}get trainableWeights(){return this.trainable?this.cell.trainableWeights:[]}get nonTrainableWeights(){return this.trainable?this.cell.nonTrainableWeights:this.cell.weights}setFastWeightInitDuringBuild(e){super.setFastWeightInitDuringBuild(e),this.cell!=null&&this.cell.setFastWeightInitDuringBuild(e)}getConfig(){let e=super.getConfig(),t={returnSequences:this.returnSequences,returnState:this.returnState,goBackwards:this.goBackwards,stateful:this.stateful,unroll:this.unroll};this.numConstants!=null&&(t.numConstants=this.numConstants);let o=this.cell.getConfig();return this.getClassName()===co.className&&(t.cell={className:this.cell.getClassName(),config:o}),Object.assign({},o,e,t)}static fromConfig(e,t,o={}){let n=t.cell,s=eo(n,o);return new e(Object.assign(t,{cell:s}))}};co.className="RNN";te.registerClass(co);var wl=class extends Le{},Tp=class extends wl{constructor(e){super(e);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=e.units,jt(this.units,"units"),this.activation=Os(e.activation==null?this.DEFAULT_ACTIVATION:e.activation),this.useBias=e.useBias==null?!0:e.useBias,this.kernelInitializer=ht(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=ht(e.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=ht(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=vt(e.kernelRegularizer),this.recurrentRegularizer=vt(e.recurrentRegularizer),this.biasRegularizer=vt(e.biasRegularizer),this.kernelConstraint=Lt(e.kernelConstraint),this.recurrentConstraint=Lt(e.recurrentConstraint),this.biasConstraint=Lt(e.biasConstraint),this.dropout=Xu([1,$s([0,e.dropout==null?0:e.dropout])]),this.recurrentDropout=Xu([1,$s([0,e.recurrentDropout==null?0:e.recurrentDropout])]),this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(e){e=Qe(e),this.kernel=this.addWeight("kernel",[e[e.length-1],this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(e,t){return V(()=>{if(e=e,e.length!==2)throw new B(`SimpleRNNCell expects 2 input Tensors, got ${e.length}.`);let o=e[1];e=e[0];let n=t.training==null?!1:t.training;0rr(e),rate:this.dropout,training:n})),0rr(o),rate:this.recurrentDropout,training:n}));let s,a=this.dropoutMask,i=this.recurrentDropoutMask;a!=null?s=Kn(O(e,a),this.kernel.read()):s=Kn(e,this.kernel.read()),this.bias!=null&&(s=so(s,this.bias.read())),i!=null&&(o=O(o,i));let l=ee(s,Kn(o,this.recurrentKernel.read()));return this.activation!=null&&(l=this.activation.apply(l)),[l,l]})}getConfig(){let e=super.getConfig(),t={units:this.units,activation:Fs(this.activation),useBias:this.useBias,kernelInitializer:St(this.kernelInitializer),recurrentInitializer:St(this.recurrentInitializer),biasInitializer:St(this.biasInitializer),kernelRegularizer:ut(this.kernelRegularizer),recurrentRegularizer:ut(this.recurrentRegularizer),biasRegularizer:ut(this.biasRegularizer),activityRegularizer:ut(this.activityRegularizer),kernelConstraint:Mt(this.kernelConstraint),recurrentConstraint:Mt(this.recurrentConstraint),biasConstraint:Mt(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout};return Object.assign({},e,t)}};Tp.className="SimpleRNNCell";te.registerClass(Tp);var Wf=class extends co{constructor(e){e.cell=new Tp(e),super(e)}call(e,t){return V(()=>{this.cell.dropoutMask!=null&&(Ae(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Ae(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let o=t==null?null:t.mask,n=t==null?null:t.training,s=t==null?null:t.initialState;return super.call(e,{mask:o,training:n,initialState:s})})}static fromConfig(e,t){return new e(t)}};Wf.className="SimpleRNN";te.registerClass(Wf);var Ep=class extends wl{constructor(e){super(e);if(this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",e.resetAfter)throw new B("GRUCell does not support reset_after parameter set to true.");this.units=e.units,jt(this.units,"units"),this.activation=Os(e.activation===void 0?this.DEFAULT_ACTIVATION:e.activation),this.recurrentActivation=Os(e.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:e.recurrentActivation),this.useBias=e.useBias==null?!0:e.useBias,this.kernelInitializer=ht(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=ht(e.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=ht(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=vt(e.kernelRegularizer),this.recurrentRegularizer=vt(e.recurrentRegularizer),this.biasRegularizer=vt(e.biasRegularizer),this.kernelConstraint=Lt(e.kernelConstraint),this.recurrentConstraint=Lt(e.recurrentConstraint),this.biasConstraint=Lt(e.biasConstraint),this.dropout=Xu([1,$s([0,e.dropout==null?0:e.dropout])]),this.recurrentDropout=Xu([1,$s([0,e.recurrentDropout==null?0:e.recurrentDropout])]),this.implementation=e.implementation,this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(e){e=Qe(e);let t=e[e.length-1];this.kernel=this.addWeight("kernel",[t,this.units*3],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*3],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units*3],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(e,t){return V(()=>{if(e=e,e.length!==2)throw new B(`GRUCell expects 2 input Tensors (inputs, h, c), got ${e.length}.`);let o=t.training==null?!1:t.training,n=e[1];e=e[0],0rr(e),rate:this.dropout,training:o,count:3})),0rr(n),rate:this.recurrentDropout,training:o,count:3}));let s=this.dropoutMask,a=this.recurrentDropoutMask,i,l,u;0{this.cell.dropoutMask!=null&&(Ae(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Ae(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let o=t==null?null:t.mask,n=t==null?null:t.training,s=t==null?null:t.initialState;return super.call(e,{mask:o,training:n,initialState:s})})}static fromConfig(e,t){return t.implmentation===0&&(t.implementation=1),new e(t)}};Gf.className="GRU";te.registerClass(Gf);var vl=class extends wl{constructor(e){super(e);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=e.units,jt(this.units,"units"),this.activation=Os(e.activation===void 0?this.DEFAULT_ACTIVATION:e.activation),this.recurrentActivation=Os(e.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:e.recurrentActivation),this.useBias=e.useBias==null?!0:e.useBias,this.kernelInitializer=ht(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=ht(e.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=ht(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.unitForgetBias=e.unitForgetBias,this.kernelRegularizer=vt(e.kernelRegularizer),this.recurrentRegularizer=vt(e.recurrentRegularizer),this.biasRegularizer=vt(e.biasRegularizer),this.kernelConstraint=Lt(e.kernelConstraint),this.recurrentConstraint=Lt(e.recurrentConstraint),this.biasConstraint=Lt(e.biasConstraint),this.dropout=Xu([1,$s([0,e.dropout==null?0:e.dropout])]),this.recurrentDropout=Xu([1,$s([0,e.recurrentDropout==null?0:e.recurrentDropout])]),this.implementation=e.implementation,this.stateSize=[this.units,this.units],this.dropoutMask=null,this.recurrentDropoutMask=null}build(e){var t;e=Qe(e);let o=e[e.length-1];this.kernel=this.addWeight("kernel",[o,this.units*4],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*4],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint);let n;if(this.useBias){if(this.unitForgetBias){let s=this.biasInitializer,a=this.units;n=new(t=class extends io{apply(l,u){let c=s.apply([a]),p=new Zu().apply([a]),m=s.apply([a*2]);return _w(_w(c,p),m)}},t.className="CustomInit",t)}else n=this.biasInitializer;this.bias=this.addWeight("bias",[this.units*4],null,n,this.biasRegularizer,!0,this.biasConstraint)}else this.bias=null;this.built=!0}call(e,t){return V(()=>{let o=t.training==null?!1:t.training;if(e=e,e.length!==3)throw new B(`LSTMCell expects 3 input Tensors (inputs, h, c), got ${e.length}.`);let n=e[1],s=e[2];e=e[0],0rr(e),rate:this.dropout,training:o,count:4})),0rr(n),rate:this.recurrentDropout,training:o,count:4}));let a=this.dropoutMask,i=this.recurrentDropoutMask,l,u,c,p;0{this.cell.dropoutMask!=null&&(Ae(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Ae(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let o=t==null?null:t.mask,n=t==null?null:t.training,s=t==null?null:t.initialState;return super.call(e,{mask:o,training:n,initialState:s})})}static fromConfig(e,t){return t.implmentation===0&&(t.implementation=1),new e(t)}};Uf.className="LSTM";te.registerClass(Uf);var Sp=class extends wl{constructor(e){super(e);this.cells=e.cells}get stateSize(){let e=[];for(let t of this.cells.slice().reverse())Array.isArray(t.stateSize)?e.push(...t.stateSize):e.push(t.stateSize);return e}call(e,t){return V(()=>{e=e;let o=e.slice(1),n=[];for(let i of this.cells.slice().reverse())Array.isArray(i.stateSize)?n.push(o.splice(0,i.stateSize.length)):n.push(o.splice(0,1));n.reverse();let s=[],a;for(let i=0;i{Ds(`RNNCell_${n}`,()=>{o.build(e),Array.isArray(o.stateSize)?t=o.stateSize[0]:t=o.stateSize,e=[e[0],t]})}),this.built=!0}getConfig(){let e=super.getConfig(),t=s=>({className:s.getClassName(),config:s.getConfig()}),n={cells:this.cells.map(t)};return Object.assign({},e,n)}static fromConfig(e,t,o={}){let n=[];for(let s of t.cells)n.push(eo(s,o));return new e({cells:n})}get trainableWeights(){if(!this.trainable)return[];let e=[];for(let t of this.cells)e.push(...t.trainableWeights);return e}get nonTrainableWeights(){let e=[];for(let t of this.cells)e.push(...t.nonTrainableWeights);if(!this.trainable){let t=[];for(let o of this.cells)t.push(...o.trainableWeights);return t.concat(e)}return e}getWeights(){let e=[];for(let t of this.cells)e.push(...t.weights);return _f(e)}setWeights(e){let t=[];for(let o of this.cells){let n=o.weights.length,s=e.splice(n);for(let a=0;aIg(e(),t),a=()=>ml(s,e,o);return!n||n<=1?Dt(a().clone()):Array(n).fill(void 0).map(a).map(l=>Dt(l.clone()))}var ZH=function(r,e){var t={};for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&e.indexOf(o)<0&&(t[o]=r[o]);if(r!=null&&typeof Object.getOwnPropertySymbols=="function")for(var n=0,o=Object.getOwnPropertySymbols(r);n{if(this.cell.dropoutMask!=null&&(Ae(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Ae(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null),t&&t.constants)throw new B("ConvRNN2D cell does not support constants");let o=t==null?null:t.mask,n=t==null?null:t.training,s=t==null?null:t.initialState;return super.call(e,{mask:o,training:n,initialState:s})})}computeOutputShape(e){let t=this.computeSingleOutputShape(e);return this.returnSequences||(t=[t[0],...t.slice(2)]),this.returnState&&(t=[t,...Array(2).fill([e[0],...t.slice(-3)])]),t}getInitialState(e){return V(()=>{let{stateSize:t}=this.cell,o=e.shape,n=this.computeSingleOutputShape(o),s=[n[0],...n.slice(2)],a=pt(s);return Array.isArray(t)?Array(t.length).fill(a):[a]})}resetStates(e,t=!1){V(()=>{if(!this.stateful)throw new Co("Cannot call resetStates() on an RNN Layer that is not stateful.");let o=this.inputSpec[0].shape,n=this.computeSingleOutputShape(o),s=[n[0],...n.slice(2)];if(o[0]==null)throw new B("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.getStates()==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>pt(s)):this.states_=[pt(s)];else if(e==null)Ae(this.states_),this.keptStates!=null&&(Ae(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>pt(s)):this.states_[0]=pt(s);else{if(Array.isArray(e)||(e=[e]),e.length!==this.states_.length)throw new B(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${e.length} state value(s). Input received: ${e}`);t?this.keptStates.push(this.states_.slice()):Ae(this.states_);for(let i=0;iDt(i.clone()))})}computeSingleOutputShape(e){let{dataFormat:t,filters:o,kernelSize:n,padding:s,strides:a,dilationRate:i}=this.cell,l=t==="channelsFirst",u=e[l?3:2],c=e[l?4:3],p=uo(u,n[0],s,a[0],i[0]),m=uo(c,n[1],s,a[1],i[1]);return[...e.slice(0,2),...l?[o,p,m]:[p,m,o]]}};Zw.className="ConvRNN2D";var Ap=class extends vl{constructor(e){let{filters:t,kernelSize:o,strides:n,padding:s,dataFormat:a,dilationRate:i}=e;super(Object.assign({},e,{units:t}));this.filters=t,jt(this.filters,"filters"),this.kernelSize=bl(o,2,"kernelSize"),this.kernelSize.forEach(l=>jt(l,"kernelSize")),this.strides=bl(n||1,2,"strides"),this.strides.forEach(l=>jt(l,"strides")),this.padding=s||"valid",Qr(this.padding),this.dataFormat=a||"channelsLast",Rt(this.dataFormat),this.dilationRate=bl(i||1,2,"dilationRate"),this.dilationRate.forEach(l=>jt(l,"dilationRate"))}build(e){var t;e=Qe(e);let o=this.dataFormat==="channelsFirst"?1:e.length-1;if(e[o]==null)throw new B(`The channel dimension of the input should be defined. Found ${e[o]}`);let n=e[o],s=4,a=this.kernelSize.concat([n,this.filters*s]);this.kernel=this.addWeight("kernel",a,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint);let i=this.kernelSize.concat([this.filters,this.filters*s]);if(this.recurrentKernel=this.addWeight("recurrent_kernel",i,null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias){let l;if(this.unitForgetBias){let u=this.biasInitializer,c=this.filters;l=new(t=class extends io{apply(m,f){let d=u.apply([c]),h=Nr([c]),g=u.apply([c*2]);return pp([d,h,g])}},t.className="CustomInit",t)}else l=this.biasInitializer;this.bias=this.addWeight("bias",[this.filters*s],null,l,this.biasRegularizer,!0,this.biasConstraint)}this.built=!0}call(e,t){return V(()=>{if(e.length!==3)throw new B(`ConvLSTM2DCell expects 3 input Tensors (inputs, h, c), got ${e.length}.`);let o=t.training||!1,n=e[0],s=e[1],a=e[2],i=4;0rr(n),rate:this.dropout,training:o,count:i}));let l=this.dropoutMask,u=(ie,ae,ue)=>!ae||!ae[ue]?ie:O(ae[ue],ie),c=u(n,l,0),p=u(n,l,1),m=u(n,l,2),f=u(n,l,3);0rr(s),rate:this.recurrentDropout,training:o,count:i}));let d=this.recurrentDropoutMask,h=u(s,d,0),g=u(s,d,1),y=u(s,d,2),b=u(s,d,3),_=3,[w,k,$,T]=ur(this.kernel.read(),i,_),[F,M,L,G]=this.useBias?ur(this.bias.read(),i):[null,null,null,null];c=this.inputConv(c,w,F,this.padding),p=this.inputConv(p,k,M,this.padding),m=this.inputConv(m,$,L,this.padding),f=this.inputConv(f,T,G,this.padding);let[H,U,Z,K]=ur(this.recurrentKernel.read(),i,_);h=this.recurrentConv(h,H),g=this.recurrentConv(g,U),y=this.recurrentConv(y,Z),b=this.recurrentConv(b,K);let X=this.recurrentActivation.apply(ee(c,h)),oe=this.recurrentActivation.apply(ee(p,g)),J=ee(O(oe,a),O(X,this.activation.apply(ee(m,y)))),Q=O(this.recurrentActivation.apply(ee(f,b)),this.activation.apply(J));return[Q,Q,J]})}getConfig(){let e=super.getConfig(),{units:t}=e,o=ZH(e,["units"]),n={filters:this.filters,kernelSize:this.kernelSize,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,strides:this.strides};return Object.assign({},o,n)}inputConv(e,t,o,n){let s=Xr(e,t,this.strides,n||"valid",this.dataFormat==="channelsFirst"?"NCHW":"NHWC",this.dilationRate);return o?so(s,o,this.dataFormat):s}recurrentConv(e,t){return Xr(e,t,1,"same",this.dataFormat==="channelsFirst"?"NCHW":"NHWC")}};Ap.className="ConvLSTM2DCell";te.registerClass(Ap);var jf=class extends Zw{constructor(e){let t=new Ap(e);super(Object.assign({},e,{cell:t}))}static fromConfig(e,t){return new e(t)}};jf.className="ConvLSTM2D";te.registerClass(jf);var Dp=class extends Le{constructor(e){super(e);this.rate=Math.max(Math.min(e.rate,1),0),this.noiseShape=e.noiseShape,this.seed=e.seed,this.supportsMasking=!0}getNoiseShape(e){if(this.noiseShape==null)return this.noiseShape;let t=e.shape,o=[];for(let n=0;n{this.invokeCallHook(e,t);let o=Oe(e);if(0Ig(o,this.rate,s,this.seed),()=>o,n)}return e})}getConfig(){let e={rate:this.rate,noiseShape:this.noiseShape,seed:this.seed},t=super.getConfig();return Object.assign(e,t),e}dispose(){return super.dispose()}};Dp.className="Dropout";te.registerClass(Dp);var qf=class extends Dp{constructor(e){super(e);this.inputSpec=[{ndim:3}]}getNoiseShape(e){let t=e.shape;return[t[0],1,t[2]]}};qf.className="SpatialDropout1D";te.registerClass(qf);var Hf=class extends Le{constructor(e){super(e);if(this.activation=null,this.useBias=!0,this.kernel=null,this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",e.batchInputShape==null&&e.inputShape==null&&e.inputDim!=null){let t=null;e.batchSize!=null&&(t=e.batchSize),this.batchInputShape=[t,e.inputDim]}this.units=e.units,jt(this.units,"units"),this.activation=Os(e.activation),e.useBias!=null&&(this.useBias=e.useBias),this.kernelInitializer=ht(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.biasInitializer=ht(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelConstraint=Lt(e.kernelConstraint),this.biasConstraint=Lt(e.biasConstraint),this.kernelRegularizer=vt(e.kernelRegularizer),this.biasRegularizer=vt(e.biasRegularizer),this.activityRegularizer=vt(e.activityRegularizer),this.supportsMasking=!0,this.inputSpec=[{minNDim:2}]}build(e){e=Qe(e);let t=e[e.length-1];this.kernel==null&&(this.kernel=this.addWeight("kernel",[t,this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint))),this.inputSpec=[{minNDim:2,axes:{[-1]:t}}],this.built=!0}computeOutputShape(e){e=Qe(e);let t=e.slice();return t[t.length-1]=this.units,t}call(e,t){return V(()=>{this.invokeCallHook(e,t);let o=Oe(e),n=_g(this.activation.getClassName()),s;return n!=null?s=Kn(o,this.kernel.read(),n,this.bias?this.bias.read():null):(s=Kn(o,this.kernel.read()),this.bias!=null&&(s=so(s,this.bias.read())),this.activation!=null&&(s=this.activation.apply(s))),s})}getConfig(){let e={units:this.units,activation:Fs(this.activation),useBias:this.useBias,kernelInitializer:St(this.kernelInitializer),biasInitializer:St(this.biasInitializer),kernelRegularizer:ut(this.kernelRegularizer),biasRegularizer:ut(this.biasRegularizer),activityRegularizer:ut(this.activityRegularizer),kernelConstraint:Mt(this.kernelConstraint),biasConstraint:Mt(this.biasConstraint)},t=super.getConfig();return Object.assign(e,t),e}};Hf.className="Dense";te.registerClass(Hf);var Kf=class extends Le{constructor(e){e=e||{},super(e),this.inputSpec=[{minNDim:3}],this.dataFormat=e.dataFormat}computeOutputShape(e){e=Qe(e);for(let t of e.slice(1))if(t==null)throw new B(`The shape of the input to "Flatten" is not fully defined (got ${e.slice(1)}). Make sure to pass a complete "input_shape" or "batch_input_shape" argument to the first layer in your model.`);return[e[0],Hn(e,1)]}call(e,t){return V(()=>{this.invokeCallHook(e,t);let o=Oe(e);if(this.dataFormat==="channelsFirst"&&o.rank>1){let n=[0];for(let s=2;s{this.invokeCallHook(e,t);let o=Oe(e);return this.activation.apply(o)})}getConfig(){let e={activation:Fs(this.activation)},t=super.getConfig();return Object.assign(e,t),e}};Xf.className="Activation";te.registerClass(Xf);var Yf=class extends Le{constructor(e){super(e);this.n=e.n,this.inputSpec=[{ndim:2}]}computeOutputShape(e){return[e[0],this.n,e[1]]}call(e,t){return V(()=>(e=Oe(e),HT(e,this.n)))}getConfig(){let e={n:this.n},t=super.getConfig();return Object.assign(e,t),e}};Yf.className="RepeatVector";te.registerClass(Yf);var Zf=class extends Le{constructor(e){super(e);this.targetShape=e.targetShape;for(let t=0;t{this.invokeCallHook(e,t);let o=Oe(e),n=o.shape,s=n.slice(0,1).concat(this.fixUnknownDimension(n.slice(1),this.targetShape));return o.reshape(s)})}getConfig(){let e={targetShape:this.targetShape},t=super.getConfig();return Object.assign(e,t),e}};Zf.className="Reshape";te.registerClass(Zf);var Jf=class extends Le{constructor(e){super(e);if(e.dims==null)throw new Error("Required configuration field `dims` is missing during Permute constructor call.");if(!Array.isArray(e.dims))throw new Error(`Permute constructor requires \`dims\` to be an Array, but received ${e.dims} instead.`);let t=zr(1,e.dims.length+1);if(!x.arraysEqual(e.dims.slice().sort(),t))throw new Error("Invalid permutation `dims`: "+JSON.stringify(e.dims)+" `dims` must contain consecutive integers starting from 1.");this.dims=e.dims,this.dimsIncludingBatch=[0].concat(this.dims),this.inputSpec=[new At({ndim:this.dims.length+1})]}computeOutputShape(e){e=Qe(e);let t=e.slice();return this.dims.forEach((o,n)=>{t[n+1]=e[o]}),t}call(e,t){return qe(Oe(e),this.dimsIncludingBatch)}getConfig(){let e={dims:this.dims},t=super.getConfig();return Object.assign(e,t),e}};Jf.className="Permute";te.registerClass(Jf);var Qf=class extends Le{constructor(e){super(e==null?{}:e);this.supportsMasking=!0,e!=null?this.maskValue=e.maskValue==null?0:e.maskValue:this.maskValue=0}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={maskValue:this.maskValue};return Object.assign(t,e),t}computeMask(e,t){let o=Oe(e),n=-1;return il(vo(o,this.maskValue),n)}call(e,t){return V(()=>{this.invokeCallHook(e,t);let o=Oe(e),n=-1,s=!0,a=il(vo(o,this.maskValue),n,s);return o.mul(a.asType(o.dtype))})}};Qf.className="Masking";te.registerClass(Qf);var ed=class extends Le{constructor(e){super(e);if(this.embeddings=null,this.DEFAULT_EMBEDDINGS_INITIALIZER="randomUniform",e.batchInputShape==null&&e.inputShape==null){let t=null;e.batchSize!=null&&(t=e.batchSize),e.inputLength==null?this.batchInputShape=[t,null]:this.batchInputShape=[t].concat(wt(e.inputLength))}this.inputDim=e.inputDim,jt(this.inputDim,"inputDim"),this.outputDim=e.outputDim,jt(this.outputDim,"outputDim"),this.embeddingsInitializer=ht(e.embeddingsInitializer||this.DEFAULT_EMBEDDINGS_INITIALIZER),this.embeddingsRegularizer=vt(e.embeddingsRegularizer),this.activityRegularizer=vt(e.activityRegularizer),this.embeddingsConstraint=Lt(e.embeddingsConstraint),this.maskZero=e.maskZero,this.supportsMasking=e.maskZero,this.inputLength=e.inputLength}build(e){this.embeddings=this.addWeight("embeddings",[this.inputDim,this.outputDim],this.dtype,this.embeddingsInitializer,this.embeddingsRegularizer,!0,this.embeddingsConstraint),this.built=!0}warnOnIncompatibleInputShape(e){}computeMask(e,t){return V(()=>this.maskZero?(e=Oe(e),vo(e,Ne(e))):null)}computeOutputShape(e){if(e=Qe(e),this.inputLength==null)return[...e,this.outputDim];let t=wt(this.inputLength);if(t.length!==e.length-1)throw new B(`"inputLength" is ${this.inputLength}, but received input shape has shape ${e}`);{let o=0;for(let n=0;n{this.invokeCallHook(e,t);let o=Oe(e);return o.dtype!=="int32"&&(o=za(o,"int32")),Cg(this.embeddings.read(),o.as1D()).reshape(Qe(this.computeOutputShape(o.shape)))})}getConfig(){let e={inputDim:this.inputDim,outputDim:this.outputDim,embeddingsInitializer:St(this.embeddingsInitializer),embeddingsRegularizer:ut(this.embeddingsRegularizer),activityRegularizer:ut(this.activityRegularizer),embeddingsConstraint:Mt(this.embeddingsConstraint),maskZero:this.maskZero,inputLength:this.inputLength},t=super.getConfig();return Object.assign(e,t),e}};ed.className="Embedding";te.registerClass(ed);var kl=class extends Le{constructor(e){super(e||{});this.supportsMasking=!0}mergeFunction(e){throw new Se}computeElementwiseOpOutputShape(e,t){if(e==null||t==null)return null;if(e.length1)throw new B(`Can not merge tensors with different batch sizes. Got tensors with shapes: ${JSON.stringify(e)}.`);let o=e[0]==null?null:e[0].slice(1);for(let s=1;ss.length);e.indexOf(null)===-1&&qn(n).length===1?this.reshapeRequired=!1:this.reshapeRequired=!0}call(e,t){return V(()=>{if(e=e,this.reshapeRequired){let o=[],n=e.map(s=>s.rank);if(n.indexOf(null)===-1){let s=$s(n);for(let a of e){let i=a.rank;for(let l=0;l1){let c=zr(1,u).concat([0]);o.push(qe(l,c)),s=!0}else o.push(l)}let a=this.mergeFunction(o),i=a.rank;if(s){if(i==null){let l=a.shape,u=l.length,c=l[u-1],p=[c].concat(l.slice(0,l.length-1));a=qe(a.reshape([-1,c]),[1,0]).reshape(p)}else if(i>1){let l=[i-1].concat(zr(0,i-1));a=qe(a,l)}}return a}}else return this.mergeFunction(e)})}computeOutputShape(e){e=e;let t;e[0]==null?t=null:t=e[0].slice(1);for(let n=1;n{if(t==null)return null;if(!Array.isArray(t))throw new B("`mask` should be an Array");if(!Array.isArray(e))throw new B("`inputs` should be an Array");if(t.length!==e.length)throw new B(`The Array 'inputs' and 'mask' are expected to have the same length, but have different lengths (${e.length} vs ${t.length})`);if(t.every(n=>n==null))return null;t=t.map(n=>n==null?n:br(n,0));let o=t[0];for(let n=1;n{let t=e[0].clone();for(let o=1;o{let t=e[0].clone();for(let o=1;o{let t=e[0].clone();for(let o=1;o{let t=e[0];for(let o=1;o{let t=e[0];for(let o=1;o1)throw new B("A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got input shapes: "+JSON.stringify(e))}mergeFunction(e){return V(()=>pp(e,this.axis))}computeOutputShape(e){if(!(Array.isArray(e)&&Array.isArray(e[0])))throw new B("A `Concatenate` layer should be called on a list of inputs.");let t=e,o=t[0].slice(),n=this.axis<0?o.length+this.axis:this.axis;for(let s of t.slice(1)){if(o[n]==null||s[n]==null){o[n]=null;break}o[n]+=s[n]}return o}computeMask(e,t){if(t==null)return null;if(!Array.isArray(t))throw new B("`mask` should be an array for Concatenate");if(!Array.isArray(e))throw new B("`inputs` should be an array for Concatenate");if(t.length!==e.length)throw new B(`Mismatch in the length of mask (${t.length}) and the legnth of inputs (${e.length})`);return V(()=>{let o=!0;if(t.forEach(a=>{if(a!=null){o=!1;return}}),o)return null;let n=[];for(let a=0;a3||e.shape.length>3)throw new Se("batchDot is not implemented for tensors of 4D or higher rank yet");if(x.assert(r.shape.length>=2,()=>`batchDot requires the rank of x to be >= 2, but got ${r.shape.length}`),x.assert(r.shape.length>=2,()=>`batchDot requires the rank of y to be >= 2, but got ${e.shape.length}`),typeof t=="number"&&(t=[t,t]),r.dtype==="complex64"||e.dtype==="complex64")throw new Se("batchDot is not implemented for complex64-type Tensors yet.");let o=r.shape.length,n=e.shape.length;t==null&&(t=[o-1,n-2]);let s=t;return V(()=>{let a;if(o>n){a=o-n;let l=[];for(let u=0;uo){a=n-o;let l=[];for(let u=0;u0){let l;o>n?l=o+n-3:l=o-1;let u=[];for(let c=l;c"A `Dot` layer should be called on a list of exactly 2 inputs.");let t=e[0],o=e[1];if(t.length>3||o.length>3)throw new Se("Dot layer does not support tensors of 4D or higher rank yet.");let n=this.interpretAxes(t,o);if(t[n[0]]!==o[n[1]])throw new B(`Dimension incompatibility: ${t[n[0]]} !== ${o[n[1]]}`)}mergeFunction(e){if(e.length!==2)throw new B(`A \`Dot\` layer must be called on exactly 2 inputs, but received ${e.length} input(s).`);let t=e[0],o=e[1],n;return Array.isArray(this.axes)?n=this.axes.map((s,a)=>ad(s,e[a].shape.length)):n=[ad(this.axes,t.shape.length),ad(this.axes,o.shape.length)],this.normalize&&(t=wf(t,n[0]),o=wf(o,n[1])),JH(t,o,n)}interpretAxes(e,t){let o;return Array.isArray(this.axes)?o=this.axes:o=[ad(this.axes,e.length),ad(this.axes,t.length)],o}computeOutputShape(e){x.assert(Array.isArray(e)&&e.length===2&&Array.isArray(e[0])&&Array.isArray(e[1]),()=>"A `Dot` layer should be called on a list of exactly 2 inputs.");let t=e[0].slice(),o=e[1].slice();if(t.length>3||o.length>3)throw new Se("Dot layer does not support tensors of 4D or higher rank yet.");let n=this.interpretAxes(t,o);t.splice(n[0],1),o.splice(n[1],1),o.splice(0,1);let s=t.concat(o);return s.length===1&&s.push(1),s}computeMask(e,t){return null}getConfig(){let e={axes:this.axes,normalize:this.normalize},t=super.getConfig();return Object.assign(e,t),e}};ld.className="Dot";te.registerClass(ld);var ud=class extends Le{constructor(e){super(e);this.supportsMasking=!0,this.stddev=e.stddev}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={stddev:this.stddev};return Object.assign(t,e),t}call(e,t){return V(()=>{this.invokeCallHook(e,t);let o=Oe(e);return ml(()=>mp(o.shape,0,this.stddev).add(o),()=>o,t.training||!1)})}};ud.className="GaussianNoise";te.registerClass(ud);var cd=class extends Le{constructor(e){super(e);this.supportsMasking=!0,this.rate=e.rate}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={rate:this.rate};return Object.assign(t,e),t}call(e,t){return V(()=>{this.invokeCallHook(e,t);let o=Oe(e);return this.rate>0&&this.rate<1?ml(()=>{let s=Math.sqrt(this.rate/(1-this.rate));return o.mul(mp(o.shape,1,s))},()=>o,t.training||!1):o})}};cd.className="GaussianDropout";te.registerClass(cd);var pd=class extends Le{constructor(e){super(e);this.supportsMasking=!0,this.rate=e.rate,this.noiseShape=e.noiseShape}_getNoiseShape(e){return this.noiseShape||Oe(e).shape}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={rate:this.rate};return Object.assign(t,e),t}call(e,t){return V(()=>{if(this.rate<1&&this.rate>0){let o=this._getNoiseShape(e);return ml(()=>{let s=Oe(e),a=1.6732632423543772,i=1.0507009873554805,l=-a*i,u=Or(Ts(o),this.rate);u=za(u,"float32");let c=((1-this.rate)*(1+this.rate*l**2))**-.5,p=-c*l*this.rate;return s.mul(u).add(u.add(-1).mul(l)).mul(c).add(p)},()=>Oe(e),t.training||!1)}return e})}};pd.className="AlphaDropout";te.registerClass(pd);function md(r,e,t,o,n,s=.001){let a;if(r.rank===2)a=o_(r,e,t,o,n,s);else if(r.rank===3)a=n_(r,e,t,o,n,s);else if(r.rank===4)a=s_(r,e,t,o,n,s);else throw new Se(`batchNormalization is not implemented for array of rank ${r.rank} yet`);return a}function QH(r,e,t,o,n=.001){return V(()=>{let s=Yc(r,o),a=s.mean,i=s.variance;return[md(r,a,i,t,e,n),a,i]})}function eK(r,e,t,o,n=.001){return V(()=>{let s=Yc(r,o),a=s.mean,i=s.variance,l=[];for(let d of zr(0,r.rank))o.indexOf(d)!==-1?l.push(1):l.push(r.shape[d]);let u=a.reshape(l),c=i.reshape(l),p=e==null?null:e.reshape(l),m=t==null?null:t.reshape(l);return[md(r,u,c,m,p,n),a,i]})}function tK(r,e,t,o,n=.001){return x.arraysEqual(o.slice().sort(),zr(0,r.rank-1))?QH(r,e,t,o,n):eK(r,e,t,o,n)}var fd=class extends Le{constructor(e){e==null&&(e={}),super(e),this.supportsMasking=!0,this.axis=e.axis==null?-1:e.axis,this.momentum=e.momentum==null?.99:e.momentum,this.epsilon=e.epsilon==null?.001:e.epsilon,this.center=e.center==null?!0:e.center,this.scale=e.scale==null?!0:e.scale,this.betaInitializer=ht(e.betaInitializer||"zeros"),this.gammaInitializer=ht(e.gammaInitializer||"ones"),this.movingMeanInitializer=ht(e.movingMeanInitializer||"zeros"),this.movingVarianceInitializer=ht(e.movingVarianceInitializer||"ones"),this.betaConstraint=Lt(e.betaConstraint),this.gammaConstraint=Lt(e.gammaConstraint),this.betaRegularizer=vt(e.betaRegularizer),this.gammaRegularizer=vt(e.gammaRegularizer)}build(e){e=Qe(e);let t=this.axis>=0?this.axis:this.axis+e.length,o=e[t];if(o==null)throw new B(`Axis ${t} of input tensor should have a defined dimension but the layer received an input with shape ${JSON.stringify(e)}.`);this.inputSpec=[new At({ndim:e.length,axes:{[t]:o}})];let n=[o];this.scale&&(this.gamma=this.addWeight("gamma",n,null,this.gammaInitializer,this.gammaRegularizer,!0,this.gammaConstraint)),this.center&&(this.beta=this.addWeight("beta",n,null,this.betaInitializer,this.betaRegularizer,!0,this.betaConstraint)),this.movingMean=this.addWeight("moving_mean",n,null,this.movingMeanInitializer,null,!1),this.movingVariance=this.addWeight("moving_variance",n,null,this.movingVarianceInitializer,null,!1),this.built=!0}call(e,t){return V(()=>{let o=t.training==null?!1:t.training,n=Oe(e),s=n.shape,a=s.length,i=zr(0,a),l=this.axis>=0?this.axis:this.axis+a;i.splice(l,1);let u=Gn(1,a);u[l]=s[l];let c=i.slice();c.sort();let p=!x.arraysEqual(c,zr(0,a).slice(0,a-1)),m=()=>{if(p){let b=this.movingMean.read().reshape(u),_=this.movingVariance.read().reshape(u),w=this.center?this.beta.read().reshape(u):null,k=this.scale?this.gamma.read().reshape(u):null;return md(n,b,_,w,k,this.epsilon)}else return md(n,this.movingMean.read(),this.movingVariance.read(),this.beta==null?null:this.beta.read(),this.gamma==null?null:this.gamma.read(),this.epsilon)};if(!o)return m();let[f,d,h]=tK(n,this.gamma.read(),this.beta.read(),i,this.epsilon),g=(b,_,w)=>{V(()=>{let k=1-w,$=b.read(),T=$.sub(_).mul(k);b.write($.sub(T))})};return(()=>{g(this.movingMean,d,this.momentum),g(this.movingVariance,h,this.momentum)})(),f})}getConfig(){let e={axis:this.axis,momentum:this.momentum,epsilon:this.epsilon,center:this.center,scale:this.scale,betaInitializer:St(this.betaInitializer),gammaInitializer:St(this.gammaInitializer),movingMeanInitializer:St(this.movingMeanInitializer),movingVarianceInitializer:St(this.movingVarianceInitializer),betaRegularizer:ut(this.betaRegularizer),gammaRegularizer:ut(this.gammaRegularizer),betaConstraint:Mt(this.betaConstraint),gammaConstraint:Mt(this.gammaConstraint)},t=super.getConfig();return Object.assign(e,t),e}};fd.className="BatchNormalization";te.registerClass(fd);var dd=class extends Le{constructor(e){if(e==null&&(e={}),super(e),this.axis=e.axis==null?-1:e.axis,typeof this.axis=="number"){if(!Number.isInteger(this.axis))throw new Error(`Expected axis to be an integer, but received ${this.axis}`)}else if(Array.isArray(this.axis)){for(let t of this.axis)if(!Number.isInteger(t))throw new Error(`Expected axis to be an array of integers, but received ${JSON.stringify(this.axis)}`)}else throw new Error(`Expected axis to be an integer or an array of integers, but received ${JSON.stringify(this.axis)}`);this.epsilon=e.epsilon==null?.001:e.epsilon,this.center=e.center==null?!0:e.center,this.scale=e.scale==null?!0:e.scale,this.betaInitializer=ht(e.betaInitializer||"zeros"),this.gammaInitializer=ht(e.gammaInitializer||"ones"),this.betaRegularizer=vt(e.betaRegularizer),this.gammaRegularizer=vt(e.gammaRegularizer),this.supportsMasking=!0}build(e){e=Qe(e);let t=e.length;typeof this.axis=="number"&&(this.axis=[this.axis]);for(let s=0;s=t)throw new Error(`Invalid axis: ${s}`);if(this.axis.length!==qn(this.axis).length)throw new Error(`Found duplicate axes in: ${this.axis}`);let o=this.axis.map(s=>e[s]),n=!0;this.scale?this.gamma=this.addWeight("gamma",o,"float32",this.gammaInitializer,this.gammaRegularizer,n):this.gamma=null,this.center?this.beta=this.addWeight("beta",o,"float32",this.betaInitializer,this.betaRegularizer,n):this.beta=null,this.built=!0}call(e,t){let o=Oe(e),n=o.shape,s=n.length;return V(()=>{let a=!0,{mean:i,variance:l}=Yc(o,this.axis,a),u=Gn(1,s);for(let h of this.axis)u[h]=n[h];let c=h=>h!=null&&h.shape.length!==s&&this.axis!==[s-1]?h.reshape(u):h,p=c(this.gamma.read()),m=c(this.beta.read()),f=[],d=[];for(let h=0;h{if(r.rank!==4)throw new B(`temporalPadding expects input tensor to be 4-D, but received a ${r.rank}-D tensor.`);if(e==null&&(e=[[1,1],[1,1]]),e.length!==2||e[0].length!==2||e[1].length!==2)throw new B("spatial2dPadding expects `padding` to be an Array of two Arrays, each of which is an Array of two integers.");if(t==null&&(t=Jr()),t!=="channelsLast"&&t!=="channelsFirst")throw new B(`Unknown data format: ${t}. Supported data formats are 'channelsLast' and 'channelsFirst.`);let o;return t==="channelsFirst"?o=[[0,0],[0,0],e[0],e[1]]:o=[[0,0],e[0],e[1],[0,0]],Pr(r,o)})}var hd=class extends Le{constructor(e){if(e==null&&(e={}),super(e),this.dataFormat=e.dataFormat==null?Jr():e.dataFormat,e.padding==null)this.padding=[[1,1],[1,1]];else if(typeof e.padding=="number")this.padding=[[e.padding,e.padding],[e.padding,e.padding]];else{if(e.padding=e.padding,e.padding.length!==2)throw new B(`ZeroPadding2D expects padding to be a length-2 array, but received a length-${e.padding.length} array.`);let t,o;if(typeof e.padding[0]=="number")t=[e.padding[0],e.padding[0]],o=[e.padding[1],e.padding[1]];else{if(e.padding=e.padding,e.padding[0].length!==2)throw new B(`ZeroPadding2D expects height padding to be a length-2 array, but received a length-${e.padding[0].length} array.`);if(t=e.padding[0],e.padding[1].length!==2)throw new B(`ZeroPadding2D expects width padding to be a length-2 array, but received a length-${e.padding[1].length} array.`);o=e.padding[1]}this.padding=[t,o]}this.inputSpec=[new At({ndim:4})]}computeOutputShape(e){e=Qe(e);let t,o;return this.dataFormat==="channelsFirst"?(e[2]!=null&&e[2]>=0?t=e[2]+this.padding[0][0]+this.padding[0][1]:t=null,e[3]!=null&&e[3]>=0?o=e[3]+this.padding[1][0]+this.padding[1][1]:o=null,[e[0],e[1],t,o]):(e[1]!=null&&e[1]>=0?t=e[1]+this.padding[0][0]+this.padding[0][1]:t=null,e[2]!=null&&e[2]>=0?o=e[2]+this.padding[1][0]+this.padding[1][1]:o=null,[e[0],t,o,e[3]])}call(e,t){return V(()=>rK(Oe(e),this.padding,this.dataFormat))}getConfig(){let e={padding:this.padding,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}};hd.className="ZeroPadding2D";te.registerClass(hd);function Kg(r,e,t,o,n,s){return V(()=>{Rt(n),yw(s),Qr(o),t==null&&(t=[1,1]),o==null&&(o="valid"),n==null&&(n=Jr()),s==null&&(s="max"),r=Pf(r,n);let a,i=o==="same"?"same":"valid";return s==="max"?a=Aa(r,e,t,i):a=ka(r,e,t,i),n==="channelsFirst"&&(a=qe(a,[0,3,1,2])),a})}function P1(r,e,t,o,n,s){return V(()=>{Rt(n),yw(s),Qr(o),t==null&&(t=[1,1,1]),o==null&&(o="valid"),n==null&&(n=Jr()),s==null&&(s="max"),r=Hw(r,n);let a,i=o==="same"?"same":"valid";return s==="max"?a=Bm(r,e,t,i):a=Em(r,e,t,i),n==="channelsFirst"&&(a=qe(a,[0,4,1,2,3])),a})}var Jw=class extends Le{constructor(e){if(e.poolSize==null&&(e.poolSize=2),super(e),typeof e.poolSize=="number")this.poolSize=[e.poolSize];else if(Array.isArray(e.poolSize)&&e.poolSize.length===1&&typeof e.poolSize[0]=="number")this.poolSize=e.poolSize;else throw new B(`poolSize for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(e.poolSize)}`);if(jt(this.poolSize,"poolSize"),e.strides==null)this.strides=this.poolSize;else if(typeof e.strides=="number")this.strides=[e.strides];else if(Array.isArray(e.strides)&&e.strides.length===1&&typeof e.strides[0]=="number")this.strides=e.strides;else throw new B(`strides for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(e.strides)}`);jt(this.strides,"strides"),this.padding=e.padding==null?"valid":e.padding,Qr(this.padding),this.inputSpec=[new At({ndim:3})]}computeOutputShape(e){e=Qe(e);let t=uo(e[1],this.poolSize[0],this.padding,this.strides[0]);return[e[0],t,e[2]]}call(e,t){return V(()=>{this.invokeCallHook(e,t),e=Ba(Oe(e),2);let o=this.poolingFunction(Oe(e),[this.poolSize[0],1],[this.strides[0],1],this.padding,"channelsLast");return ko(o,[2])})}getConfig(){let e={poolSize:this.poolSize,padding:this.padding,strides:this.strides},t=super.getConfig();return Object.assign(e,t),e}},gd=class extends Jw{constructor(e){super(e)}poolingFunction(e,t,o,n,s){return Rt(s),Qr(n),Kg(e,t,o,n,s,"max")}};gd.className="MaxPooling1D";te.registerClass(gd);var xd=class extends Jw{constructor(e){super(e)}poolingFunction(e,t,o,n,s){return Rt(s),Qr(n),Kg(e,t,o,n,s,"avg")}};xd.className="AveragePooling1D";te.registerClass(xd);var Qw=class extends Le{constructor(e){if(e.poolSize==null&&(e.poolSize=[2,2]),super(e),this.poolSize=Array.isArray(e.poolSize)?e.poolSize:[e.poolSize,e.poolSize],e.strides==null)this.strides=this.poolSize;else if(Array.isArray(e.strides)){if(e.strides.length!==2)throw new B(`If the strides property of a 2D pooling layer is an Array, it is expected to have a length of 2, but received length ${e.strides.length}.`);this.strides=e.strides}else this.strides=[e.strides,e.strides];jt(this.poolSize,"poolSize"),jt(this.strides,"strides"),this.padding=e.padding==null?"valid":e.padding,this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Rt(this.dataFormat),Qr(this.padding),this.inputSpec=[new At({ndim:4})]}computeOutputShape(e){e=Qe(e);let t=this.dataFormat==="channelsFirst"?e[2]:e[1],o=this.dataFormat==="channelsFirst"?e[3]:e[2];return t=uo(t,this.poolSize[0],this.padding,this.strides[0]),o=uo(o,this.poolSize[1],this.padding,this.strides[1]),this.dataFormat==="channelsFirst"?[e[0],e[1],t,o]:[e[0],t,o,e[3]]}call(e,t){return V(()=>(this.invokeCallHook(e,t),this.poolingFunction(Oe(e),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let e={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}},yd=class extends Qw{constructor(e){super(e)}poolingFunction(e,t,o,n,s){return Rt(s),Qr(n),Kg(e,t,o,n,s,"max")}};yd.className="MaxPooling2D";te.registerClass(yd);var bd=class extends Qw{constructor(e){super(e)}poolingFunction(e,t,o,n,s){return Rt(s),Qr(n),Kg(e,t,o,n,s,"avg")}};bd.className="AveragePooling2D";te.registerClass(bd);var ev=class extends Le{constructor(e){if(e.poolSize==null&&(e.poolSize=[2,2,2]),super(e),this.poolSize=Array.isArray(e.poolSize)?e.poolSize:[e.poolSize,e.poolSize,e.poolSize],e.strides==null)this.strides=this.poolSize;else if(Array.isArray(e.strides)){if(e.strides.length!==3)throw new B(`If the strides property of a 3D pooling layer is an Array, it is expected to have a length of 3, but received length ${e.strides.length}.`);this.strides=e.strides}else this.strides=[e.strides,e.strides,e.strides];jt(this.poolSize,"poolSize"),jt(this.strides,"strides"),this.padding=e.padding==null?"valid":e.padding,this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Rt(this.dataFormat),Qr(this.padding),this.inputSpec=[new At({ndim:5})]}computeOutputShape(e){e=Qe(e);let t=this.dataFormat==="channelsFirst"?e[2]:e[1],o=this.dataFormat==="channelsFirst"?e[3]:e[2],n=this.dataFormat==="channelsFirst"?e[4]:e[3];return t=uo(t,this.poolSize[0],this.padding,this.strides[0]),o=uo(o,this.poolSize[1],this.padding,this.strides[1]),n=uo(n,this.poolSize[2],this.padding,this.strides[2]),this.dataFormat==="channelsFirst"?[e[0],e[1],t,o,n]:[e[0],t,o,n,e[4]]}call(e,t){return V(()=>(this.invokeCallHook(e,t),this.poolingFunction(Oe(e),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let e={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}},_d=class extends ev{constructor(e){super(e)}poolingFunction(e,t,o,n,s){return Rt(s),Qr(n),P1(e,t,o,n,s,"max")}};_d.className="MaxPooling3D";te.registerClass(_d);var wd=class extends ev{constructor(e){super(e)}poolingFunction(e,t,o,n,s){return Rt(s),Qr(n),P1(e,t,o,n,s,"avg")}};wd.className="AveragePooling3D";te.registerClass(wd);var tv=class extends Le{constructor(e){super(e);this.inputSpec=[new At({ndim:3})]}computeOutputShape(e){return[e[0],e[2]]}call(e,t){throw new Se}},vd=class extends tv{constructor(e){super(e||{})}call(e,t){return V(()=>{let o=Oe(e);return bt(o,1)})}};vd.className="GlobalAveragePooling1D";te.registerClass(vd);var kd=class extends tv{constructor(e){super(e||{})}call(e,t){return V(()=>{let o=Oe(e);return lr(o,1)})}};kd.className="GlobalMaxPooling1D";te.registerClass(kd);var rv=class extends Le{constructor(e){super(e);this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Rt(this.dataFormat),this.inputSpec=[new At({ndim:4})]}computeOutputShape(e){return e=e,this.dataFormat==="channelsLast"?[e[0],e[3]]:[e[0],e[1]]}call(e,t){throw new Se}getConfig(){let e={dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}},Cd=class extends rv{call(e,t){return V(()=>{let o=Oe(e);return this.dataFormat==="channelsLast"?bt(o,[1,2]):bt(o,[2,3])})}};Cd.className="GlobalAveragePooling2D";te.registerClass(Cd);var Id=class extends rv{call(e,t){return V(()=>{let o=Oe(e);return this.dataFormat==="channelsLast"?lr(o,[1,2]):lr(o,[2,3])})}};Id.className="GlobalMaxPooling2D";te.registerClass(Id);var ov=class extends Le{constructor(e){super(e);this.layer=e.layer}build(e){this.built=!0}get trainable(){return this.layer!=null?this.layer.trainable:!1}set trainable(e){this.layer!=null&&(this.layer.trainable=e)}get trainableWeights(){return this.layer.trainableWeights}get nonTrainableWeights(){return this.layer.nonTrainableWeights}get updates(){return this.layer._updates}get losses(){return this.layer.losses}getWeights(){return this.layer.getWeights()}setWeights(e){this.layer.setWeights(e)}getConfig(){let e={layer:{className:this.layer.getClassName(),config:this.layer.getConfig()}},t=super.getConfig();return Object.assign(e,t),e}setFastWeightInitDuringBuild(e){super.setFastWeightInitDuringBuild(e),this.layer!=null&&this.layer.setFastWeightInitDuringBuild(e)}static fromConfig(e,t,o={}){let n=t.layer,s=eo(n,o);delete t.layer;let a={layer:s};return Object.assign(a,t),new e(a)}},Nd=class extends ov{constructor(e){super(e);this.supportsMasking=!0}build(e){if(e=Qe(e),e.length<3)throw new B(`TimeDistributed layer expects an input shape >= 3D, but received input shape ${JSON.stringify(e)}`);this.inputSpec=[{shape:e}];let t=[e[0]].concat(e.slice(2));this.layer.built||(this.layer.build(t),this.layer.built=!0),super.build(e)}computeOutputShape(e){e=Qe(e);let t=[e[0]].concat(e.slice(2)),o=this.layer.computeOutputShape(t),n=e[1];return[o[0],n].concat(o.slice(1))}call(e,t){return V(()=>(e=Oe(e),Yw((a,i)=>[Oe(this.layer.call(a,t)),[]],e,[],!1,null,null,!1,!0)[1]))}};Nd.className="TimeDistributed";te.registerClass(Nd);function oK(r){Vi(VT,"BidirectionalMergeMode",r)}var nK="concat",Sd=class extends ov{constructor(e){super(e);let t=e.layer.getConfig(),o={};o.className=e.layer.getClassName(),o.config=t,this.forwardLayer=eo(o),t.goBackwards=t.goBackwards!==!0;let n={};if(n.className=e.layer.getClassName(),n.config=t,this.backwardLayer=eo(n),this.forwardLayer.name="forward_"+this.forwardLayer.name,this.backwardLayer.name="backward_"+this.backwardLayer.name,this.mergeMode=e.mergeMode===void 0?nK:e.mergeMode,oK(this.mergeMode),e.weights)throw new Se("weights support is not implemented for Bidirectional layer yet.");this._stateful=e.layer.stateful,this.returnSequences=e.layer.returnSequences,this.returnState=e.layer.returnState,this.supportsMasking=!0,this._trainable=!0,this.inputSpec=e.layer.inputSpec,this.numConstants=null}get trainable(){return this._trainable}set trainable(e){this._trainable=e,this.forwardLayer!=null&&(this.forwardLayer.trainable=e),this.backwardLayer!=null&&(this.backwardLayer.trainable=e)}getWeights(){return this.forwardLayer.getWeights().concat(this.backwardLayer.getWeights())}setWeights(e){let t=e.length,o=Math.floor(t/2);this.forwardLayer.setWeights(e.slice(0,o)),this.backwardLayer.setWeights(e.slice(o))}computeOutputShape(e){let t=this.forwardLayer.computeOutputShape(e);Array.isArray(t)&&Array.isArray(t[0])||(t=[t]),t=t;let o,n,s;return this.returnState&&(s=t.slice(1)),o=t[0],o=o,this.mergeMode==="concat"?(o[o.length-1]*=2,n=[o]):this.mergeMode==null?n=[o,o.slice()]:n=[o],this.returnState?this.mergeMode==null?n.concat(s).concat(s.slice()):[o].concat(s).concat(s.slice()):hr(n)}apply(e,t){let o=t==null?null:t.initialState,n=t==null?null:t.constants;t==null&&(t={});let s=Xw(e,o,n,this.numConstants);if(e=s.inputs,o=s.initialState,n=s.constants,Array.isArray(e)&&(o=e.slice(1),e=e[0]),(o==null||o.length===0)&&n==null)return super.apply(e,t);let a=[],i=[];if(o!=null){let u=o.length;if(u%2>0)throw new B("When passing `initialState` to a Bidrectional RNN, the state should be an Array containing the states of the underlying RNNs.");t.initialState=o,a.push(...o);let c=o.map(p=>new At({shape:p.shape}));this.forwardLayer.stateSpec=c.slice(0,u/2),this.backwardLayer.stateSpec=c.slice(u/2),i.push(...c)}if(n!=null)throw new Se("Support for constants in Bidirectional layers is not implemented yet.");let l=a[0]instanceof Vr;for(let u of a)if(u instanceof Vr!==l)throw new B("The initial state of a Bidirectional layer cannot be specified as a mix of symbolic and non-symbolic tensors");if(l){let u=[e].concat(a),c=this.inputSpec.concat(i),p=this.inputSpec;this.inputSpec=c;let m=super.apply(u,t);return this.inputSpec=p,m}else return super.apply(e,t)}call(e,t){return V(()=>{let o=t.initialState,n,s;if(o==null)n=this.forwardLayer.call(e,t),s=this.backwardLayer.call(e,t);else{let l=o.slice(0,o.length/2),u=o.slice(o.length/2);n=this.forwardLayer.call(e,Object.assign(t,{initialState:l})),s=this.backwardLayer.call(e,Object.assign(t,{initialState:u}))}let a;this.returnState&&(Array.isArray(n)&&(a=n.slice(1).concat(s.slice(1))),n=n[0],s=s[0]),this.returnSequences&&(s=Yt(s,1));let i;return this.mergeMode==="concat"?i=pp([n,s]):this.mergeMode==="sum"?i=ee(n,s):this.mergeMode==="ave"?i=O(.5,ee(n,s)):this.mergeMode==="mul"?i=O(n,s):this.mergeMode==null&&(i=[n,s]),this.returnState?this.mergeMode==null?i.concat(a):[i].concat(a):i})}resetStates(e){this.forwardLayer.resetStates(),this.backwardLayer.resetStates()}build(e){Ds(this.forwardLayer.name,()=>{this.forwardLayer.build(e)}),Ds(this.backwardLayer.name,()=>{this.backwardLayer.build(e)}),this.built=!0}computeMask(e,t){Array.isArray(t)&&(t=t[0]);let o;if(this.returnSequences?this.mergeMode==null?o=[t,t]:o=t:this.mergeMode==null?o=[null,null]:o=null,this.returnState){let s=this.forwardLayer.states.map(a=>null);return Array.isArray(o)?o.concat(s).concat(s):[o].concat(s).concat(s)}else return o}get trainableWeights(){return this.forwardLayer.trainableWeights.concat(this.backwardLayer.trainableWeights)}get nonTrainableWeights(){return this.forwardLayer.nonTrainableWeights.concat(this.backwardLayer.nonTrainableWeights)}setFastWeightInitDuringBuild(e){super.setFastWeightInitDuringBuild(e),this.forwardLayer!=null&&this.forwardLayer.setFastWeightInitDuringBuild(e),this.backwardLayer!=null&&this.backwardLayer.setFastWeightInitDuringBuild(e)}getConfig(){let e={mergeMode:this.mergeMode},t=super.getConfig();return Object.assign(e,t),e}static fromConfig(e,t){let o=eo(t.layer);if(delete t.layer,t.numConstants!=null)throw new Se("Deserialization of a Bidirectional layer with numConstants present is not supported yet.");let n=t;return n.layer=o,new e(n)}};Sd.className="Bidirectional";te.registerClass(Sd);function sK(r){return new Wi(r)}function iK(r){return new $f(r)}function aK(r){return new Ef(r)}function lK(r){return new Af(r)}function uK(r){return new Df(r)}function cK(r){return new Ff(r)}function pK(r){return new Rf(r)}function mK(r){return new nc(r)}function fK(r){return new _l(r)}function dK(r){return new Mf(r)}function hK(r){return new oc(r)}function gK(r){return new Lf(r)}function xK(r){return new zf(r)}function yK(r){return new Bf(r)}function bK(r){return new Vf(r)}function _K(r){return new Xf(r)}function wK(r){return new Hf(r)}function vK(r){return new Dp(r)}function kK(r){return new qf(r)}function CK(r){return new Kf(r)}function IK(r){return new Yf(r)}function NK(r){return new Zf(r)}function SK(r){return new Jf(r)}function TK(r){return new ed(r)}function EK(r){return new td(r)}function AK(r){return new od(r)}function DK(r){return new id(r)}function $K(r){return new nd(r)}function RK(r){return new sd(r)}function FK(r){return new rd(r)}function OK(r){return new ld(r)}function PK(r){return new fd(r)}function MK(r){return new dd(r)}function LK(r){return new hd(r)}function sv(r){return new xd(r)}function zK(r){return sv(r)}function BK(r){return sv(r)}function iv(r){return new bd(r)}function VK(r){return iv(r)}function WK(r){return iv(r)}function av(r){return new wd(r)}function GK(r){return av(r)}function UK(r){return av(r)}function jK(r){return new vd(r)}function qK(r){return new Cd(r)}function M1(r){return new kd(r)}function L1(r){return new Id(r)}function z1(r){return new gd(r)}function B1(r){return new yd(r)}function HK(r){return new _d(r)}function KK(r){return new Gf(r)}function XK(r){return new Ep(r)}function YK(r){return new Uf(r)}function ZK(r){return new vl(r)}function JK(r){return new Wf(r)}function QK(r){return new Tp(r)}function e6(r){return new jf(r)}function t6(r){return new Ap(r)}function r6(r){return new co(r)}function o6(r){return new Sp(r)}function n6(r){return new Sd(r)}function s6(r){return new Nd(r)}var i6=M1,a6=L1,l6=z1,u6=B1;function c6(r){return new ud(r)}function p6(r){return new cd(r)}function m6(r){return new pd(r)}function f6(r){return new Qf(r)}var lv={};et(lv,{MAPE:()=>C6,MSE:()=>S6,binaryAccuracy:()=>d6,binaryCrossentropy:()=>h6,categoricalAccuracy:()=>x6,categoricalCrossentropy:()=>y6,cosineProximity:()=>w6,mape:()=>I6,meanAbsoluteError:()=>v6,meanAbsolutePercentageError:()=>k6,meanSquaredError:()=>N6,mse:()=>T6,precision:()=>b6,recall:()=>_6,sparseCategoricalAccuracy:()=>g6});function d6(r,e){return Cf(r,e)}function h6(r,e){return Mg(r,e)}function g6(r,e){return Lg(r,e)}function x6(r,e){return If(r,e)}function y6(r,e){return Nf(r,e)}function b6(r,e){return Cw(r,e)}function _6(r,e){return a1(r,e)}function w6(r,e){return vf(r,e)}function v6(r,e){return vp(r,e)}function k6(r,e){return gl(r,e)}function C6(r,e){return gl(r,e)}function I6(r,e){return gl(r,e)}function N6(r,e){return Ui(r,e)}function S6(r,e){return Ui(r,e)}function T6(r,e){return Ui(r,e)}var uv={};et(uv,{modelFromJSON:()=>I1});var cv={};et(cv,{l1:()=>A6,l1l2:()=>E6,l2:()=>D6});function E6(r){return new tc(r)}function A6(r){return D1(r)}function D6(r){return $1(r)}var Xg=class extends hl{constructor(){super(...arguments);this.model=null}setModel(e){if(!(e instanceof Io))throw new Error("model must be a LayersModel, not some other Container");this.model=e}};function Yg(r,e){return re}var Zg=class extends Xg{constructor(e){super();if(e==null&&(e={}),e.restoreBestWeights)throw new Se("restoreBestWeights = True is not implemented in EarlyStopping yet.");this.monitor=e.monitor||"val_loss",this.minDelta=Math.abs(e.minDelta||0),this.patience=e.patience||0,this.verbose=e.verbose||0,this.mode=e.mode||"auto",this.baseline=e.baseline,["auto","min","max"].indexOf(this.mode)===-1&&(console.warn(`EarlyStopping mode '${this.mode}' is invalid. Falling back to mode 'auto'.`),this.mode="auto"),this.mode==="min"?this.monitorFunc=Yg:this.mode==="max"?this.monitorFunc=V1:this.monitor.indexOf("acc")!==-1?this.monitorFunc=V1:this.monitorFunc=Yg,this.monitorFunc===Yg&&(this.minDelta*=-1)}async onTrainBegin(e){this.wait=0,this.stoppedEpoch=0,this.baseline!=null?this.best=this.baseline:this.best=this.monitorFunc===Yg?Infinity:-Infinity}async onEpochEnd(e,t){await Gi(t);let o=this.getMonitorValue(t);o!=null&&(this.monitorFunc(o-this.minDelta,this.best)?(this.best=o,this.wait=0):(this.wait++,this.wait>=this.patience&&(this.stoppedEpoch=e,this.model.stopTraining=!0)))}async onTrainEnd(e){this.stoppedEpoch>0&&this.verbose&&console.log(`Epoch ${this.stoppedEpoch}: early stopping.`)}getMonitorValue(e){e==null&&(e={});let t=e[this.monitor];return t==null&&console.warn(`Metric for EarlyStopping ${this.monitor} is not available. Available metrics are: ${Object.keys(e)}`),t}};function $6(r){return new Zg(r)}var W1={earlyStopping:$6};var Xn;(function(r){r[r.DT_INVALID=0]="DT_INVALID",r[r.DT_FLOAT=1]="DT_FLOAT",r[r.DT_DOUBLE=2]="DT_DOUBLE",r[r.DT_INT32=3]="DT_INT32",r[r.DT_UINT8=4]="DT_UINT8",r[r.DT_INT16=5]="DT_INT16",r[r.DT_INT8=6]="DT_INT8",r[r.DT_STRING=7]="DT_STRING",r[r.DT_COMPLEX64=8]="DT_COMPLEX64",r[r.DT_INT64=9]="DT_INT64",r[r.DT_BOOL=10]="DT_BOOL",r[r.DT_QINT8=11]="DT_QINT8",r[r.DT_QUINT8=12]="DT_QUINT8",r[r.DT_QINT32=13]="DT_QINT32",r[r.DT_BFLOAT16=14]="DT_BFLOAT16",r[r.DT_FLOAT_REF=101]="DT_FLOAT_REF",r[r.DT_DOUBLE_REF=102]="DT_DOUBLE_REF",r[r.DT_INT32_REF=103]="DT_INT32_REF",r[r.DT_UINT8_REF=104]="DT_UINT8_REF",r[r.DT_INT16_REF=105]="DT_INT16_REF",r[r.DT_INT8_REF=106]="DT_INT8_REF",r[r.DT_STRING_REF=107]="DT_STRING_REF",r[r.DT_COMPLEX64_REF=108]="DT_COMPLEX64_REF",r[r.DT_INT64_REF=109]="DT_INT64_REF",r[r.DT_BOOL_REF=110]="DT_BOOL_REF",r[r.DT_QINT8_REF=111]="DT_QINT8_REF",r[r.DT_QUINT8_REF=112]="DT_QUINT8_REF",r[r.DT_QINT32_REF=113]="DT_QINT32_REF",r[r.DT_BFLOAT16_REF=114]="DT_BFLOAT16_REF"})(Xn||(Xn={}));var G1;(function(r){let e;(function(t){t[t.LEGACY=0]="LEGACY",t[t.V1=1]="V1",t[t.V2=2]="V2"})(e=r.CheckpointFormatVersion||(r.CheckpointFormatVersion={}))})(G1||(G1={}));var pv={};function U1(r,e){let t={tfOpName:r,category:"custom",inputs:[],attrs:[],customExecutor:e};pv[r]=t}function Jg(r){return pv[r]}function j1(r){delete pv[r]}function C(r,e,t,o,n){let s=e.inputParams[r];if(s&&s.inputIndexStart!==void 0){let i=s.inputIndexStart,l=s.inputIndexEnd===0?void 0:s.inputIndexEnd===void 0?i+1:s.inputIndexEnd;if(s.type==="tensor")return gr(e.inputNames[s.inputIndexStart],t,o,n);if(s.type==="tensors")return e.inputNames.slice(i,l).map(m=>gr(m,t,o,n));let u=gr(e.inputNames.slice(i)[0],t,o,n),c=u.dataSync();return s.type==="number"?c[0]:x.toNestedArray(u.shape,c)}let a=e.attrParams[r];return a&&a.value}function gr(r,e,t,o){let[n,s]=to(r);if(o!=null){let i=o.getHashTableHandleByName(n);if(i!=null)return i}let a=t.currentContextIds.find(i=>!!e[Qg(n,i)]);return a!==void 0?e[Qg(n,a)][s]:void 0}function q1(r,e,t){return e[Qg(r,t.currentContextId)]}function Ps(r,e){let[t,o]=to(r);return[Qg(t,e&&e.currentContextId),o]}function Qg(r,e){return e?`${r}-${e}`:r}function to(r){let e=r.split(":");return e.length===1?[r,0]:[e[0],Number(e[e.length-1])]}function Td(r,e,t){let o=C("pad",r,e,t);if(o==="explicit"){o=C("explicitPaddings",r,e,t);let n=[[0,0],[0,0],[0,0],[0,0]];for(let s=0;s<4;s++)n[s][0]=o[s*2],n[s][1]=o[s*2+1];return n}return o}function Ms(r){return r.kept?r:Po(r)}var mv={};et(mv,{json:()=>R6});var R6=[{tfOpName:"Add",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddV2",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddN",category:"arithmetic",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"BiasAdd",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"Sub",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"RealDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Div",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"DivNoNan",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mul",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Maximum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Minimum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Pow",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SquaredDifference",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorMod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}];var fv={};et(fv,{json:()=>F6});var F6=[{tfOpName:"Abs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan2",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ceil",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ClipByValue",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"clipValueMin",type:"number"},{start:2,name:"clipValueMax",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Complex",category:"basic_math",inputs:[{start:0,name:"real",type:"tensor"},{start:1,name:"imag",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ComplexAbs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Elu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Exp",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Floor",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Imag",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Neg",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Real",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Prelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"alpha",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu6",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Selu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sigmoid",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Rsqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Square",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sign",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Round",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Expm1",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log1p",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Reciprocal",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Softplus",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Erf",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Prod",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axes",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LeakyRelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"alpha",name:"alpha",type:"number",defaultValue:.2},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}];var dv={};et(dv,{json:()=>O6});var O6=[{tfOpName:"EmptyTensorList",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"maxNumElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"LoopCond",category:"control",inputs:[{start:0,name:"pred",type:"tensor"}]},{tfOpName:"Switch",category:"control",inputs:[{start:0,name:"data",type:"tensor"},{start:1,name:"pred",type:"tensor"}]},{tfOpName:"Merge",category:"control",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"Enter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"frame_name",name:"frameName",type:"string"},{tfName:"is_constant",name:"isConstant",type:"bool"}]},{tfOpName:"Exit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NextIteration",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayV3",category:"control",inputs:[{start:0,name:"size",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"dynamic_size",name:"dynamicSize",type:"bool"},{tfName:"clear_after_read",name:"clearAfterRead",type:"bool"},{tfName:"identical_element_shapes",name:"identicalElementShapes",type:"bool"},{tfName:"tensor_array_name",name:"name",type:"string"}]},{tfOpName:"TensorArrayWriteV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayReadV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayGatherV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"}]},{tfOpName:"TensorArrayScatterV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArrayConcatV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape_except0",name:"elementShapeExcept0",type:"shape",notSupported:!0}]},{tfOpName:"TensorArraySplitV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"tensor",type:"tensor"},{start:2,name:"lengths",type:"number[]"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArraySizeV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}]},{tfOpName:"TensorArrayCloseV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"}]},{tfOpName:"StatelessIf",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"If",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"StatelessWhile",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"While",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"TensorListScatter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListScatterV2",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"},{start:3,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGather",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListSetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListReserve",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListFromTensor",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListStack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"},{tfName:"num_elements",name:"numElements",type:"dtype"}]},{tfOpName:"TensorListSplit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"},{start:2,name:"lengths",type:"number[]"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListConcat",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"}],attrs:[{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPopBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPushBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]}];var hv={};et(hv,{json:()=>P6});var P6=[{tfOpName:"AvgPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[],notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPoolWithArgmax",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"include_batch_in_index",name:"includeBatchInIndex",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AvgPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Conv1D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"stride",name:"stride",type:"number"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NWC"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"dilation",name:"dilation",type:"number",defaultValue:1}]},{tfOpName:"Conv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"useCudnnOnGpu",name:"useCudnnOnGpu",type:"bool"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"_FusedConv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"use_cudnn_on_gpu",name:"useCudnnOnGpu",type:"bool",defaultValue:!0},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"leakyrelu_alpha",name:"leakyreluAlpha",type:"number"}]},{tfOpName:"Conv2DBackpropInput",category:"convolution",inputs:[{start:2,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:0,name:"outputShape",type:"number[]"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]",notSupported:!0}]},{tfOpName:"DepthwiseConv2d",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"DepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"FusedDepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]}]},{tfOpName:"Conv3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"Dilation2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"rates",name:"dilations",type:"number[]"},{tfName:"padding",name:"pad",type:"string"}]}];var gv={};et(gv,{json:()=>M6});var M6=[{tfOpName:"Fill",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"},{start:1,name:"value",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"LinSpace",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"num",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"OneHot",category:"creation",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"depth",type:"number"},{start:2,name:"onValue",type:"number",defaultValue:1},{start:3,name:"offValue",type:"number",defaultValue:0}],attrs:[{tfName:"axis",name:"axis",type:"number",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ones",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"OnesLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"RandomUniform",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"minval",name:"minval",type:"number",defaultValue:0},{tfName:"maxval",name:"maxval",type:"number",defaultValue:1},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"seed",name:"seed",type:"number",defaultValue:0},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Range",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"step",type:"number",defaultValue:0}],attrs:[{tfName:"Tidx",name:"dtype",type:"dtype"}]},{tfOpName:"TruncatedNormal",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"means",name:"mean",type:"number",defaultValue:0},{tfName:"stddev",name:"stdDev",type:"number",defaultValue:1},{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Zeros",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"ZerosLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"Multinomial",category:"creation",inputs:[{start:0,name:"logits",type:"tensor"},{start:1,name:"numSamples",type:"number"}],attrs:[{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number"},{tfName:"T",name:"dtype",type:"dtype"},{tfName:"output_dtype",name:"output_dtype",type:"dtype"}]}];var xv={};et(xv,{json:()=>L6});var L6=[{tfOpName:"NonMaxSuppressionV2",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV3",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV4",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"T_threshold",name:"threshold",type:"dtype",notSupported:!0},{tfName:"pad_to_max_output_size",name:"padToMaxOutputSize",type:"bool"}]},{tfOpName:"NonMaxSuppressionV5",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"},{start:5,name:"softNmsSigma",type:"number"}]},{tfOpName:"Where",category:"dynamic",inputs:[{start:0,name:"condition",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ListDiff",category:"dynamic",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}];var yv={};et(yv,{json:()=>z6});var z6=[{tfOpName:"TopKV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"k",type:"number"}],attrs:[{tfName:"sorted",name:"sorted",type:"bool"}]},{tfOpName:"Unique",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"UniqueV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]}];var bv={};et(bv,{json:()=>B6});var B6=[{tfOpName:"PlaceholderWithDefault",category:"graph",inputs:[{start:0,name:"default",type:"tensor"}],attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Placeholder",category:"graph",attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Const",category:"graph"},{tfOpName:"Identity",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IdentityN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Snapshot",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Rank",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Size",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Shape",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"ShapeN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Print",category:"graph",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"data",type:"tensors"}],attrs:[{tfName:"message",name:"message",type:"string"},{tfName:"first_n",name:"firstN",type:"number",notSupported:!0},{tfName:"summarize",name:"summarize",type:"number",defaultValue:3}]},{tfOpName:"NoOp",category:"graph",inputs:[]},{tfOpName:"StopGradient",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"FakeQuantWithMinMaxVars",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"min",name:"min",type:"number"},{tfName:"max",name:"max",type:"number"}]}];var _v={};et(_v,{json:()=>V6});var V6=[{tfOpName:"HashTable",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"HashTableV2",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"LookupTableImport",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableImportV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFind",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFindV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]}];var wv={};et(wv,{json:()=>W6});var W6=[{tfOpName:"ResizeBilinear",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"half_pixel_centers",name:"halfPixelCenters",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ResizeNearestNeighbor",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"half_pixel_centers",name:"halfPixelCenters",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"CropAndResize",category:"image",inputs:[{start:0,name:"image",type:"tensor"},{start:1,name:"boxes",type:"tensor"},{start:2,name:"boxInd",type:"tensor"},{start:3,name:"cropSize",type:"number[]"}],attrs:[{tfName:"method",name:"method",type:"string"},{tfName:"extrapolation_value",name:"extrapolationValue",type:"number"}]}];var vv={};et(vv,{json:()=>G6});var G6=[{tfOpName:"Equal",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NotEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Greater",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"GreaterEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Less",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LessEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalAnd",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalNot",category:"logical",inputs:[{start:0,name:"a",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalOr",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Select",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SelectV2",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}];var kv={};et(kv,{json:()=>U6});var U6=[{tfOpName:"_FusedMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMulV2",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Transpose",category:"matrices",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"perm",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}];var Cv={};et(Cv,{json:()=>j6});var j6=[{tfOpName:"FusedBatchNorm",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV2",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV3",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"LRN",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"depth_radius",name:"radius",type:"number",defaultValue:5},{tfName:"bias",name:"bias",type:"number",defaultValue:1},{tfName:"alpha",name:"alpha",type:"number",defaultValue:1},{tfName:"beta",name:"beta",type:"number",defaultValue:.5}]},{tfOpName:"Softmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"LogSoftmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"SparseToDense",category:"normalization",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!0,notSupported:!0}]}];var Iv={};et(Iv,{json:()=>q6});var q6=[{tfOpName:"Bincount",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"size",type:"number"},{start:2,name:"weights",type:"tensor"}]},{tfOpName:"DenseBincount",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"size",type:"number"},{start:2,name:"weights",type:"tensor"}],attrs:[{tfName:"binary_output",name:"binaryOutput",type:"bool"}]},{tfOpName:"Max",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Mean",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Min",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Sum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"All",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Any",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"ArgMax",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"ArgMin",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"Prod",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Cumsum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}],attrs:[{tfName:"exclusive",name:"exclusive",type:"bool"},{tfName:"reverse",name:"reverse",type:"bool"}]}];var Nv={};et(Nv,{json:()=>H6});var H6=[{tfOpName:"ConcatV2",category:"slice_join",inputs:[{start:0,end:-1,name:"tensors",type:"tensors"},{start:-1,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"Concat",category:"slice_join",inputs:[{start:1,end:0,name:"tensors",type:"tensors"},{start:0,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"GatherV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"},{start:2,name:"axis",type:"number",defaultValue:0}],attrs:[{tfName:"batch_dims",name:"batchDims",type:"number",defaultValue:0}]},{tfOpName:"Gather",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",notSupported:!0}]},{tfOpName:"Reverse",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"dims",type:"bool[]"}]},{tfOpName:"ReverseV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}]},{tfOpName:"Slice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"size",type:"number[]"}]},{tfOpName:"StridedSlice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"end",type:"number[]"},{start:3,name:"strides",type:"number[]"}],attrs:[{tfName:"begin_mask",name:"beginMask",type:"number",defaultValue:0},{tfName:"end_mask",name:"endMask",type:"number",defaultValue:0},{tfName:"new_axis_mask",name:"newAxisMask",type:"number",defaultValue:0},{tfName:"ellipsis_mask",name:"ellipsisMask",type:"number",defaultValue:0},{tfName:"shrink_axis_mask",name:"shrinkAxisMask",type:"number",defaultValue:0}]},{tfOpName:"Pack",category:"slice_join",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0}]},{tfOpName:"Unpack",category:"slice_join",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0},{tfName:"num",name:"num",type:"number",defaultValue:0,notSupported:!0}]},{tfOpName:"Tile",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"reps",type:"number[]"}]},{tfOpName:"Split",category:"slice_join",inputs:[{start:0,name:"axis",type:"number",defaultValue:0},{start:1,name:"x",type:"tensor"}],attrs:[{tfName:"num_split",name:"numOrSizeSplits",type:"number",defaultValue:1}]},{tfOpName:"SplitV",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"numOrSizeSplits",type:"number[]"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"ScatterNd",category:"slice_join",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"values",type:"tensor"},{start:2,name:"shape",type:"number[]"}]},{tfOpName:"GatherNd",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}]},{tfOpName:"SparseToDense",category:"slice_join",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!1,notSupported:!0}]}];var Sv={};et(Sv,{json:()=>K6});var K6=[{tfOpName:"FFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"RFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]},{tfOpName:"IRFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]}];var Tv={};et(Tv,{json:()=>X6});var X6=[{tfOpName:"Cast",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"SrcT",name:"sdtype",type:"dtype",notSupported:!0},{tfName:"DstT",name:"dtype",type:"dtype"}]},{tfOpName:"ExpandDims",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"MirrorPad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"mode",name:"mode",type:"string"}]},{tfOpName:"Pad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"constant_value",name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"PadV2",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"},{start:2,name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"Reshape",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}]},{tfOpName:"Squeeze",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"axis",tfDeprecatedName:"squeeze_dims",name:"axis",type:"number[]"}]},{tfOpName:"SpaceToBatchND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"paddings",type:"number[]"}]},{tfOpName:"BatchToSpaceND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"crops",type:"number[]"}]},{tfOpName:"DepthToSpace",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"block_size",name:"blockSize",type:"number"},{tfName:"data_format",name:"dataFormat",type:"string"}]},{tfOpName:"BroadcastTo",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}],attrs:[]}];var ex=class{static get Instance(){return this._instance||(this._instance=new this)}constructor(){let e=[mv,fv,dv,hv,gv,xv,yv,vv,wv,bv,kv,Cv,Iv,Nv,Sv,Tv,_v],t=[].concat(...e.map(o=>o.json));this.opMappers=t.reduce((o,n)=>(o[n.tfOpName]=n,o),{})}transformGraph(e,t={}){let o=e.node,n=[],s=[],a=[],i=o.reduce((h,g)=>(h[g.name]=this.mapNode(g),g.op.startsWith("Placeholder")?n.push(h[g.name]):g.op==="Const"?s.push(h[g.name]):(g.input==null||g.input.length===0)&&a.push(h[g.name]),h),{}),l=[],u=[],c={},p={};t!=null&&(c=this.mapSignatureEntries(t.inputs),p=this.mapSignatureEntries(t.outputs));let m=Object.keys(i);m.forEach(h=>{let g=i[h];g.inputNames.forEach(y=>{let[b]=Ps(y);g.inputs.push(i[b]),i[b].children.push(g)})}),Object.keys(p).length===0?m.forEach(h=>{let g=i[h];g.children.length===0&&u.push(g)}):Object.keys(p).forEach(h=>{let[g]=Ps(h),y=i[g];y!=null&&(y.signatureKey=p[h],u.push(y))}),Object.keys(c).length>0?Object.keys(c).forEach(h=>{let[g]=Ps(h),y=i[g];y&&(y.signatureKey=c[h],l.push(y))}):l=n;let f={};e.library!=null&&e.library.function!=null&&(f=e.library.function.reduce((h,g)=>(h[g.signature.name]=this.mapFunction(g),h),{}));let d={nodes:i,inputs:l,outputs:u,weights:s,placeholders:n,signature:t,functions:f};return a.length>0&&(d.initNodes=a),d}mapSignatureEntries(e){return Object.keys(e||{}).reduce((t,o)=>(t[e[o].name]=o,t),{})}mapNode(e){let t=Jg(e.op)||this.opMappers[e.op]||{};e.attr==null&&(e.attr={});let o={name:e.name,op:e.op,category:t.category,inputNames:(e.input||[]).map(n=>n.startsWith("^")?n.substr(1):n),inputs:[],children:[],inputParams:{},attrParams:{},rawAttrs:e.attr};return t.inputs!=null&&(o.inputParams=t.inputs.reduce((n,s)=>(n[s.name]={type:s.type,inputIndexStart:s.start,inputIndexEnd:s.end},n),{})),t.attrs!=null&&(o.attrParams=t.attrs.reduce((n,s)=>{let a=s.type,i;switch(s.type){case"string":i=tx(e.attr,s.tfName,s.defaultValue),i===void 0&&!!s.tfDeprecatedName&&(i=tx(e.attr,s.tfDeprecatedName,s.defaultValue));break;case"string[]":i=lx(e.attr,s.tfName,s.defaultValue),i===void 0&&!!s.tfDeprecatedName&&(i=lx(e.attr,s.tfDeprecatedName,s.defaultValue));break;case"number":i=ox(e.attr,s.tfName,s.defaultValue||0),i===void 0&&!!s.tfDeprecatedName&&(i=ox(e.attr,s.tfDeprecatedName,s.defaultValue));break;case"number[]":i=ax(e.attr,s.tfName,s.defaultValue),i===void 0&&!!s.tfDeprecatedName&&(i=ax(e.attr,s.tfDeprecatedName,s.defaultValue));break;case"bool":i=rx(e.attr,s.tfName,s.defaultValue),i===void 0&&!!s.tfDeprecatedName&&(i=rx(e.attr,s.tfDeprecatedName,s.defaultValue));break;case"bool[]":i=cx(e.attr,s.tfName,s.defaultValue),i===void 0&&!!s.tfDeprecatedName&&(i=cx(e.attr,s.tfDeprecatedName,s.defaultValue));break;case"shape":i=ix(e.attr,s.tfName,s.defaultValue),i===void 0&&!!s.tfDeprecatedName&&(i=ix(e.attr,s.tfDeprecatedName,s.defaultValue));break;case"shape[]":i=ux(e.attr,s.tfName,s.defaultValue),i===void 0&&!!s.tfDeprecatedName&&(i=ux(e.attr,s.tfDeprecatedName,s.defaultValue));break;case"dtype":i=nx(e.attr,s.tfName,s.defaultValue),i===void 0&&!!s.tfDeprecatedName&&(i=nx(e.attr,s.tfDeprecatedName,s.defaultValue));break;case"dtype[]":i=sx(e.attr,s.tfName,s.defaultValue),i===void 0&&!!s.tfDeprecatedName&&(i=sx(e.attr,s.tfDeprecatedName,s.defaultValue));break;case"func":i=H1(e.attr,s.tfName,s.defaultValue),i===void 0&&!!s.tfDeprecatedName&&(i=H1(e.attr,s.tfDeprecatedName,s.defaultValue));break;case"tensor":case"tensors":break;default:throw new Error(`Unsupported param type: ${s.type} for op: ${e.op}`)}return n[s.name]={value:i,type:a},n},{})),o}mapFunction(e){let t=e.nodeDef,o=[],n=[],s={};t!=null&&(s=t.reduce((p,m)=>(p[m.name]=this.mapNode(m),m.op==="Const"&&n.push(p[m.name]),p),{}));let a=[],i=[];e.signature.inputArg.forEach(p=>{let[m]=Ps(p.name),f={name:m,op:"Placeholder",inputs:[],inputNames:[],category:"graph",inputParams:{},attrParams:{dtype:{value:Ev(p.type),type:"dtype"}},children:[]};f.signatureKey=p.name,a.push(f),s[m]=f}),Object.keys(s).forEach(p=>{let m=s[p];m.inputNames.forEach(f=>{let[d]=Ps(f);m.inputs.push(s[d]),s[d].children.push(m)})});let u=e.ret;e.signature.outputArg.forEach(p=>{let[m,f]=Ps(u[p.name]),d=s[m];d!=null&&(d.defaultOutput=f,i.push(d))});let c=this.mapArgsToSignature(e);return{nodes:s,inputs:a,outputs:i,weights:n,placeholders:o,signature:c}}mapArgsToSignature(e){return{methodName:e.signature.name,inputs:e.signature.inputArg.reduce((t,o)=>(t[o.name]=this.mapArgToTensorInfo(o),t),{}),outputs:e.signature.outputArg.reduce((t,o)=>(t[o.name]=this.mapArgToTensorInfo(o,e.ret),t),{})}}mapArgToTensorInfo(e,t){let o=e.name;return t!=null&&(o=t[o]),{name:o,dtype:e.type}}};function Y6(r){let e=W().global;if(typeof e.atob!="undefined")return e.atob(r);if(typeof Buffer!="undefined")return new Buffer(r,"base64").toString();throw new Error("Unable to decode base64 in this environment. Missing built-in atob() or Buffer()")}function K1(r,e){let t=Array.isArray(r)?String.fromCharCode.apply(null,r):Y6(r);return e?t:t.toLowerCase()}function tx(r,e,t,o=!1){let n=r[e];return n!=null?K1(n.s,o):t}function rx(r,e,t){let o=r[e];return o?o.b:t}function ox(r,e,t){let o=r[e]||{},n=o.i!=null?o.i:o.f!=null?o.f:t;return typeof n=="number"?n:parseInt(n,10)}function Ev(r){switch(typeof r=="string"&&(r=Xn[r]),r){case Xn.DT_FLOAT:return"float32";case Xn.DT_INT32:case Xn.DT_INT64:case Xn.DT_INT8:case Xn.DT_UINT8:return"int32";case Xn.DT_BOOL:return"bool";case Xn.DT_DOUBLE:return"float32";case Xn.DT_STRING:return"string";default:return null}}function H1(r,e,t){let o=r[e];return o&&o.func?o.func.name:t}function nx(r,e,t){let o=r[e];return o&&o.type?Ev(o.type):t}function sx(r,e,t){let o=r[e];return o&&o.list&&o.list.type?o.list.type.map(n=>Ev(n)):t}function X1(r){if(!r.unknownRank)return r.dim!=null?r.dim.map(e=>typeof e.size=="number"?e.size:parseInt(e.size,10)):[]}function ix(r,e,t){let o=r[e];return o&&o.shape?X1(o.shape):t}function ax(r,e,t){let o=r[e];return o?((o.list.f&&o.list.f.length?o.list.f:o.list.i)||[]).map(n=>typeof n=="number"?n:parseInt(n,10)):t}function lx(r,e,t,o=!1){let n=r[e];return n&&n.list&&n.list.s?n.list.s.map(s=>K1(s,o)):t}function ux(r,e,t){let o=r[e];return o&&o.list&&o.list.shape?o.list.shape.map(n=>X1(n)):t}function cx(r,e,t){let o=r[e];return o&&o.list&&o.list.b?o.list.b:t}var Av=class{constructor(e,t,o){this.node=e,this.tensorMap=t,this.context=o,this.inputs=[],this.attrs={},this.inputs=e.inputNames.map(n=>this.getInput(n)),e.rawAttrs!=null&&(this.attrs=Object.keys(e.rawAttrs).reduce((n,s)=>(n[s]=this.getAttr(s),n),{}))}getInput(e){return gr(e,this.tensorMap,this.context)}getAttr(e,t){let o=this.node.rawAttrs[e];if(o.tensor!=null)return gr(e,this.tensorMap,this.context);if(o.i!=null||o.f!=null)return ox(this.node.rawAttrs,e,t);if(o.s!=null)return tx(this.node.rawAttrs,e,t);if(o.b!=null)return rx(this.node.rawAttrs,e,t);if(o.shape!=null)return ix(this.node.rawAttrs,e,t);if(o.type!=null)return nx(this.node.rawAttrs,e,t);if(o.list!=null){if(o.list.i!=null||o.list.f!=null)return ax(this.node.rawAttrs,e,t);if(o.list.s!=null)return lx(this.node.rawAttrs,e,t);if(o.list.shape!=null)return ux(this.node.rawAttrs,e,t);if(o.list.b!=null)return cx(this.node.rawAttrs,e,t);if(o.list.type!=null)return sx(this.node.rawAttrs,e,t)}return t}};var Y1=(r,e,t)=>{switch(r.op){case"BiasAdd":case"AddV2":case"Add":return[ee(C("a",r,e,t),C("b",r,e,t))];case"AddN":return[Qb(C("tensors",r,e,t))];case"FloorMod":case"Mod":return[Fu(C("a",r,e,t),C("b",r,e,t))];case"Mul":return[O(C("a",r,e,t),C("b",r,e,t))];case"RealDiv":case"Div":return[fe(C("a",r,e,t),C("b",r,e,t))];case"DivNoNan":return[Fm(C("a",r,e,t),C("b",r,e,t))];case"FloorDiv":return[vu(C("a",r,e,t),C("b",r,e,t))];case"Sub":return[pe(C("a",r,e,t),C("b",r,e,t))];case"Minimum":return[Bo(C("a",r,e,t),C("b",r,e,t))];case"Maximum":return[Ir(C("a",r,e,t),C("b",r,e,t))];case"Pow":return[_r(C("a",r,e,t),C("b",r,e,t))];case"SquaredDifference":return[Pa(C("a",r,e,t),C("b",r,e,t))];default:throw TypeError(`Node type ${r.op} is not implemented`)}};var Z1=(r,e,t)=>{switch(r.op){case"Abs":case"ComplexAbs":return[Et(C("x",r,e,t))];case"Acos":return[wm(C("x",r,e,t))];case"Acosh":return[vm(C("x",r,e,t))];case"Asin":return[Cm(C("x",r,e,t))];case"Asinh":return[Im(C("x",r,e,t))];case"Atan":return[Nm(C("x",r,e,t))];case"Atan2":return[Sm(C("x",r,e,t),C("y",r,e,t))];case"Atanh":return[Tm(C("x",r,e,t))];case"Ceil":return[Am(C("x",r,e,t))];case"Complex":return[wo(C("real",r,e,t),C("imag",r,e,t))];case"Cos":return[Ia(C("x",r,e,t))];case"Cosh":return[Tu(C("x",r,e,t))];case"Elu":return[Is(C("x",r,e,t))];case"Erf":return[Om(C("x",r,e,t))];case"Exp":return[Qt(C("x",r,e,t))];case"Expm1":return[Pm(C("x",r,e,t))];case"Floor":return[Ns(C("x",r,e,t))];case"Log":return[ar(C("x",r,e,t))];case"Log1p":return[Du(C("x",r,e,t))];case"Imag":return[Au(C("x",r,e,t))];case"Neg":return[He(C("x",r,e,t))];case"Reciprocal":return[Gm(C("x",r,e,t))];case"Real":return[ul(C("x",r,e,t))];case"Relu":return[Sr(C("x",r,e,t))];case"Round":return[Um(C("x",r,e,t))];case"Selu":return[zu(C("x",r,e,t))];case"Sigmoid":return[Kr(C("x",r,e,t))];case"Sin":return[Bu(C("x",r,e,t))];case"Sign":return[qm(C("x",r,e,t))];case"Sinh":return[Vu(C("x",r,e,t))];case"Softplus":return[Ss(C("x",r,e,t))];case"Sqrt":return[_t(C("x",r,e,t))];case"Square":return[Me(C("x",r,e,t))];case"Tanh":return[Pi(C("x",r,e,t))];case"Tan":return[Ym(C("x",r,e,t))];case"ClipByValue":return[ir(C("x",r,e,t),C("clipValueMin",r,e,t),C("clipValueMax",r,e,t))];case"Relu6":return[Mu(C("x",r,e,t))];case"Rsqrt":return[Lu(gr(r.inputNames[0],e,t))];case"Prod":return[Ou(C("x",r,e,t),C("axes",r,e,t))];case"LeakyRelu":return[Sa(C("x",r,e,t),C("alpha",r,e,t))];case"Prelu":return[$a(C("x",r,e,t),C("alpha",r,e,t))];default:throw TypeError(`Node type ${r.op} is not implemented`)}};function No(r,e,t=""){x.assert(Z6(r,e),()=>t+` Shapes ${r} and ${e} must match`)}function Z6(r,e){if(r.length!==e.length)return!1;for(let t=0;t{(e==null||!e.has(t.tensor.id))&&t.tensor.dispose()}),this.tensors=[],this.closed_=!0,this.idTensor.dispose()}size(){return this.tensors.length}read(e){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(e<0||e>=this.size())throw new Error(`Tried to read from index ${e}, but array size is: ${this.size()}`);let t=this.tensors[e];if(t.cleared)throw new Error(`TensorArray ${this.name}: Could not read index ${e} twice because it was cleared after a previous read (perhaps try setting clear_after_read = false?).`);return this.clearAfterRead&&(t.cleared=!0),t.read=!0,t.tensor}readMany(e){return e.map(t=>this.read(t))}write(e,t){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(e<0||!this.dynamicSize&&e>=this.maxSize)throw new Error(`Tried to write to index ${e}, but array is not resizeable and size is: ${this.maxSize}`);let o=this.tensors[e]||{};if(t.dtype!==this.dtype)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e}, + because the value dtype is ${t.dtype}, but TensorArray dtype is ${this.dtype}.`);if(this.size()===0&&(this.elementShape==null||this.elementShape.length===0)&&(this.elementShape=t.shape),No(this.elementShape,t.shape,`TensorArray ${this.name}: Could not write to TensorArray index ${e}.`),o.read)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e}, because it has already been read.`);if(o.written)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e}, because it has already been written.`);o.tensor=t,Dt(t),o.written=!0,this.tensors[e]=o}writeMany(e,t){if(e.length!==t.length)throw new Error(`TensorArray ${this.name}: could not write multiple tensors,because the index size: ${e.length} is not the same as tensors size: ${t.length}.`);e.forEach((o,n)=>this.write(o,t[n]))}gather(e,t){if(!!t&&t!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but gather requested dtype ${t}`);if(e)e=e.slice(0,this.size());else{e=[];for(let n=0;n=this.maxSize)throw new Error(`Max index must be < array size (${o} vs. ${this.maxSize})`);this.writeMany(e,cr(t,0))}split(e,t){if(t.dtype!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but tensor has dtype ${t.dtype}`);let o=0,n=e.map(l=>(o+=l,o));if(o!==t.shape[0])throw new Error(`Expected sum of lengths to be equal to tensor.shape[0], but sum of lengths is - ${totalLength}, and tensor's shape is: ${tensor2.shape}`);if(!this.dynamicSize&&length.length!==this.maxSize)throw new Error(`TensorArray's size is not equal to the size of lengths (${this.maxSize} vs. ${length.length}), and the TensorArray is not marked as dynamically resizeable`);let elementPerRow=totalLength===0?0:tensor2.size/totalLength,tensors=[];tidy(()=>{tensor2=reshape(tensor2,[1,totalLength,elementPerRow]);for(let i=0;i{if(elementDtype!==tensor2.dtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${tensor2.dtype}`);assertShapesMatchAllowUndefinedSize(elementShape,tensor2.shape,"TensorList shape mismatch: "),keep(tensor2)}),this.idTensor=scalar(0),this.maxNumElements=maxNumElements,keep(this.idTensor)}get id(){return this.idTensor.id}copy(){return new TensorList([...this.tensors],this.elementShape,this.elementDtype)}clearAndClose(keepIds){this.tensors.forEach(tensor2=>{(keepIds==null||!keepIds.has(tensor2.id))&&tensor2.dispose()}),this.tensors.length=0,this.idTensor.dispose()}size(){return this.tensors.length}stack(elementShape,elementDtype,numElements=-1){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(numElements!==-1&&this.tensors.length!==numElements)throw new Error(`Operation expected a list with ${numElements} elements but got a list with ${this.tensors.length} elements.`);return assertShapesMatchAllowUndefinedSize(elementShape,this.elementShape,"TensorList shape mismatch: "),tidy(()=>{let reshapedTensors=this.tensors.map(tensor2=>reshape(tensor2,elementShape));return stack(reshapedTensors,0)})}popBack(elementShape,elementDtype){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(this.size()===0)throw new Error("Trying to pop from an empty list.");let tensor2=this.tensors.pop();return assertShapesMatchAllowUndefinedSize(tensor2.shape,elementShape,"TensorList shape mismatch: "),reshape(tensor2,elementShape)}pushBack(tensor2){if(tensor2.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${tensor2.dtype}, but list elements ${this.elementDtype}`);if(assertShapesMatchAllowUndefinedSize(tensor2.shape,this.elementShape,"TensorList shape mismatch: "),this.maxNumElements===this.size())throw new Error("Trying to push element into a full list.");keep(tensor2),this.tensors.push(tensor2)}resize(size){if(size<0)throw new Error(`TensorListResize expects size to be non-negative. Got: ${size}`);if(this.maxNumElements!==-1&&size>this.maxNumElements)throw new Error(`TensorListResize input size ${size} is greater maxNumElement ${this.maxNumElements}.`);this.tensors.length=size}getItem(elementIndex,elementShape,elementDtype){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);if(elementIndex<0||elementIndex>this.tensors.length)throw new Error(`Trying to access element ${elementIndex} in a list with ${this.tensors.length} elements.`);if(this.tensors[elementIndex]==null)throw new Error(`element at index ${elementIndex} is null.`);return assertShapesMatchAllowUndefinedSize(this.tensors[elementIndex].shape,elementShape,"TensorList shape mismatch: "),this.tensors[elementIndex]}setItem(elementIndex,tensor2){if(tensor2.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${tensor2.dtype}, but list elements ${this.elementDtype}`);if(elementIndex<0||this.maxNumElements!==-1&&elementIndex>=this.maxNumElements)throw new Error(`Trying to set element ${elementIndex} in a list with max ${this.maxNumElements} elements.`);assertShapesMatchAllowUndefinedSize(this.elementShape,tensor2.shape,"TensorList shape mismatch: "),keep(tensor2),this.tensors[elementIndex]=tensor2}gather(indices,elementDtype,elementShape){if(elementDtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${elementDtype}, but list elements ${this.elementDtype}`);return assertShapesMatchAllowUndefinedSize(this.elementShape,elementShape,"TensorList shape mismatch: "),indices=indices.slice(0,this.size()),indices.length===0?tensor([],[0].concat(this.elementShape)):tidy(()=>{let tensors=indices.map(i=>reshape(this.tensors[i],elementShape));return stack(tensors,0)})}concat(elementDtype,elementShape){if(!!elementDtype&&elementDtype!==this.elementDtype)throw new Error(`TensorList dtype is ${this.elementDtype} but concat requested dtype ${elementDtype}`);return assertShapesMatchAllowUndefinedSize(this.elementShape,elementShape,"TensorList shape mismatch: "),this.size()===0?tensor([],[0].concat(this.elementShape)):tidy(()=>{let tensors=this.tensors.map(t=>reshape(t,elementShape));return concat(tensors,0)})}};function fromTensor(tensor2,elementShape,elementDtype){let dtype=tensor2.dtype;if(tensor2.shape.length<1)throw new Error(`Tensor must be at least a vector, but saw shape: ${tensor2.shape}`);if(tensor2.dtype!==elementDtype)throw new Error(`Invalid data types; op elements ${tensor2.dtype}, but list elements ${elementDtype}`);let outputShape=tensor2.shape.slice(1);assertShapesMatchAllowUndefinedSize(outputShape,elementShape,"TensorList shape mismatch: ");let tensorList=unstack(tensor2);return new TensorList(tensorList,elementShape,dtype)}function reserve(elementShape,elementDtype,numElements){return new TensorList([],elementShape,elementDtype,numElements)}function scatter(tensor2,indices,elementShape,numElements){if(indices.length!==tensor2.shape[0])throw new Error(`Expected len(indices) == tensor.shape[0], but saw: ${indices.length} vs. ${tensor2.shape[0]}`);let maxIndex=Math.max(...indices);if(numElements!=null&&numElements!==-1&&maxIndex>=numElements)throw new Error(`Max index must be < array size (${maxIndex} vs. ${numElements})`);let list=new TensorList([],elementShape,tensor2.dtype,numElements),tensors=unstack(tensor2,0);return indices.forEach((value,index)=>{list.setItem(value,tensors[index])}),list}function split2(tensor2,length,elementShape){let totalLength=0,cumulativeLengths=length.map(len=>(totalLength+=len,totalLength));if(totalLength!==tensor2.shape[0])throw new Error(`Expected sum of lengths to be equal to + ${o}, and tensor's shape is: ${t.shape}`);if(!this.dynamicSize&&e.length!==this.maxSize)throw new Error(`TensorArray's size is not equal to the size of lengths (${this.maxSize} vs. ${e.length}), and the TensorArray is not marked as dynamically resizeable`);let s=o===0?0:t.size/o,a=[];V(()=>{t=z(t,[1,o,s]);for(let l=0;l{if(o!==s.dtype)throw new Error(`Invalid data types; op elements ${o}, but list elements ${s.dtype}`);No(t,s.shape,"TensorList shape mismatch: "),Dt(s)}),this.idTensor=ce(0),this.maxNumElements=n,Dt(this.idTensor)}get id(){return this.idTensor.id}copy(){return new sc([...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,o=-1){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);if(o!==-1&&this.tensors.length!==o)throw new Error(`Operation expected a list with ${o} elements but got a list with ${this.tensors.length} elements.`);return No(e,this.elementShape,"TensorList shape mismatch: "),V(()=>{let n=this.tensors.map(s=>z(s,e));return Wt(n,0)})}popBack(e,t){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);if(this.size()===0)throw new Error("Trying to pop from an empty list.");let o=this.tensors.pop();return No(o.shape,e,"TensorList shape mismatch: "),z(o,e)}pushBack(e){if(e.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${e.dtype}, but list elements ${this.elementDtype}`);if(No(e.shape,this.elementShape,"TensorList shape mismatch: "),this.maxNumElements===this.size())throw new Error("Trying to push element into a full list.");Dt(e),this.tensors.push(e)}resize(e){if(e<0)throw new Error(`TensorListResize expects size to be non-negative. Got: ${e}`);if(this.maxNumElements!==-1&&e>this.maxNumElements)throw new Error(`TensorListResize input size ${e} is greater maxNumElement ${this.maxNumElements}.`);this.tensors.length=e}getItem(e,t,o){if(o!==this.elementDtype)throw new Error(`Invalid data types; op elements ${o}, but list elements ${this.elementDtype}`);if(e<0||e>this.tensors.length)throw new Error(`Trying to access element ${e} in a list with ${this.tensors.length} elements.`);if(this.tensors[e]==null)throw new Error(`element at index ${e} is null.`);return No(this.tensors[e].shape,t,"TensorList shape mismatch: "),this.tensors[e]}setItem(e,t){if(t.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t.dtype}, but list elements ${this.elementDtype}`);if(e<0||this.maxNumElements!==-1&&e>=this.maxNumElements)throw new Error(`Trying to set element ${e} in a list with max ${this.maxNumElements} elements.`);No(this.elementShape,t.shape,"TensorList shape mismatch: "),Dt(t),this.tensors[e]=t}gather(e,t,o){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);return No(this.elementShape,o,"TensorList shape mismatch: "),e=e.slice(0,this.size()),e.length===0?Fr([],[0].concat(this.elementShape)):V(()=>{let n=e.map(s=>z(this.tensors[s],o));return Wt(n,0)})}concat(e,t){if(!!e&&e!==this.elementDtype)throw new Error(`TensorList dtype is ${this.elementDtype} but concat requested dtype ${e}`);return No(this.elementShape,t,"TensorList shape mismatch: "),this.size()===0?Fr([],[0].concat(this.elementShape)):V(()=>{let o=this.tensors.map(n=>z(n,t));return Je(o,0)})}};function J1(r,e,t){let o=r.dtype;if(r.shape.length<1)throw new Error(`Tensor must be at least a vector, but saw shape: ${r.shape}`);if(r.dtype!==t)throw new Error(`Invalid data types; op elements ${r.dtype}, but list elements ${t}`);let n=r.shape.slice(1);No(n,e,"TensorList shape mismatch: ");let s=cr(r);return new sc(s,e,o)}function Q1(r,e,t){return new sc([],r,e,t)}function eE(r,e,t,o){if(e.length!==r.shape[0])throw new Error(`Expected len(indices) == tensor.shape[0], but saw: ${e.length} vs. ${r.shape[0]}`);let n=Math.max(...e);if(o!=null&&o!==-1&&n>=o)throw new Error(`Max index must be < array size (${n} vs. ${o})`);let s=new sc([],t,r.dtype,o),a=cr(r,0);return e.forEach((i,l)=>{s.setItem(i,a[l])}),s}function tE(r,e,t){let o=0,n=e.map(l=>(o+=l,o));if(o!==r.shape[0])throw new Error(`Expected sum of lengths to be equal to tensor.shape[0], but sum of lengths is - ${totalLength}, and tensor's shape is: ${tensor2.shape}`);let elementPerRow=totalLength===0?0:tensor2.size/totalLength,tensors=tidy(()=>{let tensors2=[];tensor2=reshape(tensor2,[1,totalLength,elementPerRow]);for(let i=0;i{switch(node.op){case"If":case"StatelessIf":{let thenFunc=getParamValue("thenBranch",node,tensorMap,context),elseFunc=getParamValue("elseBranch",node,tensorMap,context),cond=getParamValue("cond",node,tensorMap,context),args=getParamValue("args",node,tensorMap,context);return(await cond.data())[0]?context.functionMap[thenFunc].executeFunctionAsync(args,context.tensorArrayMap,context.tensorListMap):context.functionMap[elseFunc].executeFunctionAsync(args,context.tensorArrayMap,context.tensorListMap)}case"While":case"StatelessWhile":{let bodyFunc=getParamValue("body",node,tensorMap,context),condFunc=getParamValue("cond",node,tensorMap,context),args=getParamValue("args",node,tensorMap,context),condResult=await context.functionMap[condFunc].executeFunctionAsync(args,context.tensorArrayMap,context.tensorListMap),argIds=args.map(tensor2=>tensor2.id),condValue=await condResult[0].data();condResult.forEach(tensor2=>{!tensor2.kept&&argIds.indexOf(tensor2.id)===-1&&tensor2.dispose()});let result=args;for(;condValue[0];){let origResult=result;result=await context.functionMap[bodyFunc].executeFunctionAsync(result,context.tensorArrayMap,context.tensorListMap);let resultIds=result.map(tensor2=>tensor2.id);origResult.forEach(tensor2=>{!tensor2.kept&&argIds.indexOf(tensor2.id)===-1&&resultIds.indexOf(tensor2.id)===-1&&tensor2.dispose()});let condResult2=await context.functionMap[condFunc].executeFunctionAsync(result,context.tensorArrayMap,context.tensorListMap);condValue=await condResult2[0].data(),condResult2.forEach(tensor2=>{!tensor2.kept&&argIds.indexOf(tensor2.id)===-1&&resultIds.indexOf(tensor2.id)===-1&&tensor2.dispose()})}return result}case"LoopCond":{let pred=getParamValue("pred",node,tensorMap,context);return[cloneTensor(pred)]}case"Switch":{let pred=getParamValue("pred",node,tensorMap,context),data=getParamValue("data",node,tensorMap,context);return data.kept||(data=cloneTensor(data)),(await pred.data())[0]?[void 0,data]:[data,void 0]}case"Merge":{let inputName=node.inputNames.find(name=>getTensor(name,tensorMap,context)!==void 0);if(inputName){let data=getTensor(inputName,tensorMap,context);return[cloneTensor(data)]}return}case"Enter":{let frameId=getParamValue("frameName",node,tensorMap,context),data=getParamValue("tensor",node,tensorMap,context);return context.enterFrame(frameId),[cloneTensor(data)]}case"Exit":{let data=getParamValue("tensor",node,tensorMap,context);return context.exitFrame(),[cloneTensor(data)]}case"NextIteration":{let data=getParamValue("tensor",node,tensorMap,context);return context.nextIteration(),[cloneTensor(data)]}case"TensorArrayV3":{let size=getParamValue("size",node,tensorMap,context),dtype=getParamValue("dtype",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),dynamicSize=getParamValue("dynamicSize",node,tensorMap,context),clearAfterRead=getParamValue("clearAfterRead",node,tensorMap,context),identicalElementShapes=getParamValue("identicalElementShapes",node,tensorMap,context),name=getParamValue("name",node,tensorMap,context),tensorArray=new TensorArray(name,dtype,size,elementShape,identicalElementShapes,dynamicSize,clearAfterRead);return context.addTensorArray(tensorArray),[tensorArray.idTensor,scalar(1)]}case"TensorArrayWriteV3":{let id=getParamValue("tensorArrayId",node,tensorMap,context),index=getParamValue("index",node,tensorMap,context),writeTensor=getParamValue("tensor",node,tensorMap,context),writeTensorArray=context.getTensorArray(id.id);return writeTensorArray.write(index,writeTensor),[writeTensorArray.idTensor]}case"TensorArrayReadV3":{let readId=getParamValue("tensorArrayId",node,tensorMap,context),readIndex=getParamValue("index",node,tensorMap,context);return[context.getTensorArray(readId.id).read(readIndex)]}case"TensorArrayGatherV3":{let gatherId=getParamValue("tensorArrayId",node,tensorMap,context),gatherIndices=getParamValue("indices",node,tensorMap,context),gatherDtype=getParamValue("dtype",node,tensorMap,context);return[context.getTensorArray(gatherId.id).gather(gatherIndices,gatherDtype)]}case"TensorArrayScatterV3":{let scatterId=getParamValue("tensorArrayId",node,tensorMap,context),scatterIndices=getParamValue("indices",node,tensorMap,context),scatterTensor=getParamValue("tensor",node,tensorMap,context),scatterTensorArray=context.getTensorArray(scatterId.id);return scatterTensorArray.scatter(scatterIndices,scatterTensor),[scatterTensorArray.idTensor]}case"TensorArrayConcatV3":{let concatId=getParamValue("tensorArrayId",node,tensorMap,context),concatTensorArray=context.getTensorArray(concatId.id),concatDtype=getParamValue("dtype",node,tensorMap,context);return[concatTensorArray.concat(concatDtype)]}case"TensorArraySplitV3":{let splitId=getParamValue("tensorArrayId",node,tensorMap,context),splitTensor=getParamValue("tensor",node,tensorMap,context),lengths=getParamValue("lengths",node,tensorMap,context),splitTensorArray=context.getTensorArray(splitId.id);return splitTensorArray.split(lengths,splitTensor),[splitTensorArray.idTensor]}case"TensorArraySizeV3":{let sizeId=getParamValue("tensorArrayId",node,tensorMap,context),sizeTensorArray=context.getTensorArray(sizeId.id);return[scalar(sizeTensorArray.size(),"int32")]}case"TensorArrayCloseV3":{let closeId=getParamValue("tensorArrayId",node,tensorMap,context),closeTensorArray=context.getTensorArray(closeId.id);return closeTensorArray.clearAndClose(),[closeTensorArray.idTensor]}case"TensorListSetItem":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),index=getParamValue("index",node,tensorMap,context),writeTensor=getParamValue("tensor",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return tensorList.setItem(index,writeTensor),[tensorList.idTensor]}case"TensorListGetItem":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),readIndex=getParamValue("index",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDType=getParamValue("elementDType",node,tensorMap,context);return[context.getTensorList(idTensor.id).getItem(readIndex,elementShape,elementDType)]}case"TensorListScatterV2":case"TensorListScatter":{let scatterIndices=getParamValue("indices",node,tensorMap,context),scatterTensor=getParamValue("tensor",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),numElements=getParamValue("numElements",node,tensorMap,context),tensorList=scatter(scatterTensor,scatterIndices,elementShape,numElements);return context.addTensorList(tensorList),[tensorList.idTensor]}case"TensorListReserve":case"EmptyTensorList":{let elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),numElementsParam;node.op==="TensorListReserve"?numElementsParam="numElements":numElementsParam="maxNumElements";let numElements=getParamValue(numElementsParam,node,tensorMap,context),tensorList=reserve(elementShape,elementDtype,numElements);return context.addTensorList(tensorList),[tensorList.idTensor]}case"TensorListGather":{let gatherId=getParamValue("tensorListId",node,tensorMap,context),gatherIndices=getParamValue("indices",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context);return[context.getTensorList(gatherId.id).gather(gatherIndices,elementDtype,elementShape)]}case"TensorListStack":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),numElements=getParamValue("numElements",node,tensorMap,context);return[context.getTensorList(idTensor.id).stack(elementShape,elementDtype,numElements)]}case"TensorListFromTensor":{let tensor2=getParamValue("tensor",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDtype=getParamValue("elementDType",node,tensorMap,context),tensorList=fromTensor(tensor2,elementShape,elementDtype);return context.addTensorList(tensorList),[tensorList.idTensor]}case"TensorListConcat":{let concatId=getParamValue("tensorListId",node,tensorMap,context),tensorList=context.getTensorList(concatId.id),concatDtype=getParamValue("dtype",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context);return[tensorList.concat(concatDtype,elementShape)]}case"TensorListPushBack":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),writeTensor=getParamValue("tensor",node,tensorMap,context),tensorList=context.getTensorList(idTensor.id);return tensorList.pushBack(writeTensor),[tensorList.idTensor]}case"TensorListPopBack":{let idTensor=getParamValue("tensorListId",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),elementDType=getParamValue("elementDType",node,tensorMap,context);return[context.getTensorList(idTensor.id).popBack(elementShape,elementDType)]}case"TensorListSplit":{let splitTensor=getParamValue("tensor",node,tensorMap,context),elementShape=getParamValue("elementShape",node,tensorMap,context),lengths=getParamValue("lengths",node,tensorMap,context),tensorList=split2(splitTensor,lengths,elementShape);return context.addTensorList(tensorList),[tensorList.idTensor]}default:throw TypeError(`Node type ${node.op} is not implemented`)}};function fusedConvAndDepthWiseParams(node,tensorMap,context){let[extraOp,activationFunc]=getParamValue("fusedOps",node,tensorMap,context),isBiasAdd=extraOp==="biasadd",isPrelu=activationFunc==="prelu",isBatchNorm=extraOp==="fusedbatchnorm",numArgs=getParamValue("numArgs",node,tensorMap,context);if(isBiasAdd){if(isPrelu&&numArgs!==2)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!isPrelu&&numArgs!==1)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd must have one extra argument: bias.")}if(isBatchNorm)throw new Error("FusedConv2d and DepthwiseConv2d with FusedBatchNorm is not supported.");let stride=getParamValue("strides",node,tensorMap,context),pad3=getPadding(node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilations=getParamValue("dilations",node,tensorMap,context),[biasArg,preluArg]=getParamValue("args",node,tensorMap,context),leakyreluAlpha=getParamValue("leakyreluAlpha",node,tensorMap,context);return{stride,pad:pad3,dataFormat,dilations,biasArg,preluArg,activationFunc,leakyreluAlpha}}var executeOp4=(node,tensorMap,context)=>{switch(node.op){case"Conv1D":{let stride=getParamValue("stride",node,tensorMap,context),pad3=getParamValue("pad",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilation=getParamValue("dilation",node,tensorMap,context);return[conv1d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),stride,pad3,dataFormat,dilation)]}case"Conv2D":{let stride=getParamValue("strides",node,tensorMap,context),pad3=getPadding(node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilations=getParamValue("dilations",node,tensorMap,context);return[conv2d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[stride[1],stride[2]],pad3,dataFormat,[dilations[1],dilations[2]])]}case"_FusedConv2D":{let{stride,pad:pad3,dataFormat,dilations,biasArg,preluArg,activationFunc,leakyreluAlpha}=fusedConvAndDepthWiseParams(node,tensorMap,context);return[fused_ops_exports.conv2d({x:getParamValue("x",node,tensorMap,context),filter:getParamValue("filter",node,tensorMap,context),strides:[stride[1],stride[2]],pad:pad3,dataFormat,dilations:[dilations[1],dilations[2]],bias:biasArg,activation:activationFunc,preluActivationWeights:preluArg,leakyreluAlpha})]}case"FusedDepthwiseConv2dNative":{let{stride,pad:pad3,dataFormat,dilations,biasArg,preluArg,activationFunc,leakyreluAlpha}=fusedConvAndDepthWiseParams(node,tensorMap,context);return[fused_ops_exports.depthwiseConv2d({x:getParamValue("x",node,tensorMap,context),filter:getParamValue("filter",node,tensorMap,context),strides:[stride[1],stride[2]],pad:pad3,dataFormat,dilations:[dilations[1],dilations[2]],bias:biasArg,activation:activationFunc,preluActivationWeights:preluArg,leakyreluAlpha})]}case"Conv2DBackpropInput":case"Conv2dTranspose":{let shape=getParamValue("outputShape",node,tensorMap,context),stride=getParamValue("strides",node,tensorMap,context),pad3=getPadding(node,tensorMap,context);return[conv2dTranspose(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),shape,[stride[1],stride[2]],pad3)]}case"DepthwiseConv2dNative":case"DepthwiseConv2d":{let stride=getParamValue("strides",node,tensorMap,context),pad3=getPadding(node,tensorMap,context),dilations=getParamValue("dilations",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase();return[depthwiseConv2d(getParamValue("input",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[stride[1],stride[2]],pad3,dataFormat,[dilations[1],dilations[2]])]}case"Conv3D":{let stride=getParamValue("strides",node,tensorMap,context),pad3=getParamValue("pad",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase(),dilations=getParamValue("dilations",node,tensorMap,context);return[conv3d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[stride[1],stride[2],stride[3]],pad3,dataFormat,[dilations[1],dilations[2],dilations[3]])]}case"AvgPool":{let stride=getParamValue("strides",node,tensorMap,context),pad3=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[avgPool(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2]],[stride[1],stride[2]],pad3)]}case"MaxPool":{let stride=getParamValue("strides",node,tensorMap,context),pad3=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[maxPool(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2]],[stride[1],stride[2]],pad3)]}case"MaxPoolWithArgmax":{let stride=getParamValue("strides",node,tensorMap,context),pad3=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context),includeBatchInIndex=getParamValue("includeBatchInIndex",node,tensorMap,context),{result,indexes}=maxPoolWithArgmax(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2]],[stride[1],stride[2]],pad3,includeBatchInIndex);return[result,indexes]}case"AvgPool3D":{let stride=getParamValue("strides",node,tensorMap,context),pad3=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[avgPool3d(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2],kernelSize[3]],[stride[1],stride[2],stride[3]],pad3)]}case"MaxPool3D":{let stride=getParamValue("strides",node,tensorMap,context),pad3=getParamValue("pad",node,tensorMap,context),kernelSize=getParamValue("kernelSize",node,tensorMap,context);return[maxPool3d(getParamValue("x",node,tensorMap,context),[kernelSize[1],kernelSize[2],kernelSize[3]],[stride[1],stride[2],stride[3]],pad3)]}case"Dilation2D":{let strides=getParamValue("strides",node,tensorMap,context),pad3=getParamValue("pad",node,tensorMap,context),dilations=getParamValue("dilations",node,tensorMap,context),strideHeight=strides[1],strideWidth=strides[2],dilationHeight=dilations[1],dilationWidth=dilations[2];return[dilation2d(getParamValue("x",node,tensorMap,context),getParamValue("filter",node,tensorMap,context),[strideHeight,strideWidth],pad3,[dilationHeight,dilationWidth],"NHWC")]}default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp5=(node,tensorMap,context)=>{switch(node.op){case"Fill":{let shape=getParamValue("shape",node,tensorMap,context),dtype=getParamValue("dtype",node,tensorMap,context),value=getParamValue("value",node,tensorMap,context);return[fill(shape,value,dtype)]}case"LinSpace":{let start=getParamValue("start",node,tensorMap,context),stop=getParamValue("stop",node,tensorMap,context),num=getParamValue("num",node,tensorMap,context);return[linspace(start,stop,num)]}case"Multinomial":{let logits=getParamValue("logits",node,tensorMap,context),numSamples=getParamValue("numSamples",node,tensorMap,context),seed=getParamValue("seed",node,tensorMap,context);return[multinomial(logits,numSamples,seed)]}case"OneHot":{let indices=getParamValue("indices",node,tensorMap,context),depth=getParamValue("depth",node,tensorMap,context),onValue=getParamValue("onValue",node,tensorMap,context),offValue=getParamValue("offValue",node,tensorMap,context);return[oneHot(indices,depth,onValue,offValue)]}case"Ones":return[ones2(getParamValue("shape",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"OnesLike":return[onesLike(getParamValue("x",node,tensorMap,context))];case"RandomUniform":return[randomUniform(getParamValue("shape",node,tensorMap,context),getParamValue("minval",node,tensorMap,context),getParamValue("maxval",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"Range":{let start=getParamValue("start",node,tensorMap,context),stop=getParamValue("stop",node,tensorMap,context),step4=getParamValue("step",node,tensorMap,context);return[range(start,stop,step4,getParamValue("dtype",node,tensorMap,context))]}case"TruncatedNormal":{let shape=getParamValue("shape",node,tensorMap,context),mean4=getParamValue("mean",node,tensorMap,context),stdDev=getParamValue("stdDev",node,tensorMap,context),seed=getParamValue("seed",node,tensorMap,context);return[truncatedNormal(shape,mean4,stdDev,getParamValue("dtype",node,tensorMap,context),seed)]}case"Zeros":return[zeros(getParamValue("shape",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"ZerosLike":return[zerosLike(getParamValue("x",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};function nmsParams(node,tensorMap,context){let boxes=getParamValue("boxes",node,tensorMap,context),scores=getParamValue("scores",node,tensorMap,context),maxOutputSize=getParamValue("maxOutputSize",node,tensorMap,context),iouThreshold=getParamValue("iouThreshold",node,tensorMap,context),scoreThreshold=getParamValue("scoreThreshold",node,tensorMap,context),softNmsSigma=getParamValue("softNmsSigma",node,tensorMap,context);return{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}}var executeOp6=async(node,tensorMap,context)=>{switch(node.op){case"NonMaxSuppressionV5":{let{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}=nmsParams(node,tensorMap,context),result=await image.nonMaxSuppressionWithScoreAsync(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma);return[result.selectedIndices,result.selectedScores]}case"NonMaxSuppressionV4":{let{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold}=nmsParams(node,tensorMap,context),padToMaxOutputSize=getParamValue("padToMaxOutputSize",node,tensorMap,context),result=await image.nonMaxSuppressionPaddedAsync(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize);return[result.selectedIndices,result.validOutputs]}case"NonMaxSuppressionV3":case"NonMaxSuppressionV2":{let{boxes,scores,maxOutputSize,iouThreshold,scoreThreshold}=nmsParams(node,tensorMap,context);return[await image.nonMaxSuppressionAsync(boxes,scores,maxOutputSize,iouThreshold,scoreThreshold)]}case"Where":{let condition=cast(getParamValue("condition",node,tensorMap,context),"bool"),result=[await whereAsync(condition)];return condition.dispose(),result}case"ListDiff":return setdiff1dAsync(getParamValue("x",node,tensorMap,context),getParamValue("y",node,tensorMap,context));default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp7=(node,tensorMap,context)=>{switch(node.op){case"TopKV2":{let x=getParamValue("x",node,tensorMap,context),k=getParamValue("k",node,tensorMap,context),sorted=getParamValue("sorted",node,tensorMap,context),result=topk(x,k,sorted);return[result.values,result.indices]}case"Unique":{let x=getParamValue("x",node,tensorMap,context),result=unique(x);return[result.values,result.indices]}case"UniqueV2":{let x=getParamValue("x",node,tensorMap,context),axis=getParamValue("axis",node,tensorMap,context),result=unique(x,axis);return[result.values,result.indices]}default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp8=(node,tensorMap,context)=>{switch(node.op){case"Const":return tensorMap[node.name];case"PlaceholderWithDefault":let def=getParamValue("default",node,tensorMap,context);return[getTensor(node.name,tensorMap,context)||def];case"Placeholder":return[getTensor(node.name,tensorMap,context)];case"Identity":case"StopGradient":case"FakeQuantWithMinMaxVars":{let data2=getParamValue("x",node,tensorMap,context);return[cloneTensor(data2)]}case"IdentityN":return getParamValue("x",node,tensorMap,context).map(t=>cloneTensor(t));case"Snapshot":let snapshot=getParamValue("x",node,tensorMap,context);return[cloneTensor(snapshot)];case"Shape":return[tensor1d(getParamValue("x",node,tensorMap,context).shape,"int32")];case"ShapeN":return getParamValue("x",node,tensorMap,context).map(t=>tensor1d(t.shape));case"Size":return[scalar(getParamValue("x",node,tensorMap,context).size,"int32")];case"Rank":return[scalar(getParamValue("x",node,tensorMap,context).rank,"int32")];case"NoOp":return[scalar(1)];case"Print":let input2=getParamValue("x",node,tensorMap,context),data=getParamValue("data",node,tensorMap,context),message=getParamValue("message",node,tensorMap,context),summarize=getParamValue("summarize",node,tensorMap,context);console.warn("The graph has a tf.print() operation,usually used for debugging, which slows down performance."),console.log(message);for(let i=0;ivalue.dispose()),this.tensorMap.clear(),this.handle.dispose()}size(){return this.tensorMap.size}async import(keys,values){this.checkKeyAndValueTensor(keys,values);let $keys=await keys.data();return this.tensorMap.forEach(value=>value.dispose()),this.tensorMap.clear(),tidy(()=>{let $values=unstack(values),keysLength=$keys.length,valuesLength=$values.length;util_exports.assert(keysLength===valuesLength,()=>`The number of elements doesn't match, keys has ${keysLength} elements, the values has ${valuesLength} elements.`);for(let i=0;i{let result=[];for(let i=0;i<$keys.length;i++){let key=$keys[i],value=this.findWithDefault(key,defaultValue);result.push(value)}return stack(result)})}findWithDefault(key,defaultValue){let result=this.tensorMap.get(key);return result!=null?result:defaultValue}checkKeyAndValueTensor(key,value){if(key.dtype!==this.keyDType)throw new Error(`Expect key dtype ${this.keyDType}, but got ${key.dtype}`);if(value.dtype!==this.valueDType)throw new Error(`Expect value dtype ${this.valueDType}, but got ${value.dtype}`)}};var executeOp9=async(node,tensorMap,context,resourceManager)=>{switch(node.op){case"HashTable":case"HashTableV2":{let keyDType=getParamValue("keyDType",node,tensorMap,context),valueDType=getParamValue("valueDType",node,tensorMap,context),hashTable2=new HashTable(keyDType,valueDType);return resourceManager.addHashTable(node.name,hashTable2),[hashTable2.handle]}case"LookupTableImport":case"LookupTableImportV2":{let handle=getParamValue("tableHandle",node,tensorMap,context,resourceManager),keys=getParamValue("keys",node,tensorMap,context),values=getParamValue("values",node,tensorMap,context);return[await resourceManager.getHashTableById(handle.id).import(keys,values)]}case"LookupTableFind":case"LookupTableFindV2":{let handle=getParamValue("tableHandle",node,tensorMap,context,resourceManager),keys=getParamValue("keys",node,tensorMap,context),defaultValue=getParamValue("defaultValue",node,tensorMap,context);return[await resourceManager.getHashTableById(handle.id).find(keys,defaultValue)]}default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp10=(node,tensorMap,context)=>{switch(node.op){case"ResizeBilinear":{let images=getParamValue("images",node,tensorMap,context),size=getParamValue("size",node,tensorMap,context),alignCorners=getParamValue("alignCorners",node,tensorMap,context),halfPixelCenters=getParamValue("halfPixelCenters",node,tensorMap,context);return[image.resizeBilinear(images,[size[0],size[1]],alignCorners,halfPixelCenters)]}case"ResizeNearestNeighbor":{let images=getParamValue("images",node,tensorMap,context),size=getParamValue("size",node,tensorMap,context),alignCorners=getParamValue("alignCorners",node,tensorMap,context),halfPixelCenters=getParamValue("halfPixelCenters",node,tensorMap,context);return[image.resizeNearestNeighbor(images,[size[0],size[1]],alignCorners,halfPixelCenters)]}case"CropAndResize":{let image3=getParamValue("image",node,tensorMap,context),boxes=getParamValue("boxes",node,tensorMap,context),boxInd=getParamValue("boxInd",node,tensorMap,context),cropSize=getParamValue("cropSize",node,tensorMap,context),method=getParamValue("method",node,tensorMap,context),extrapolationValue=getParamValue("extrapolationValue",node,tensorMap,context);return[image.cropAndResize(image3,boxes,boxInd,cropSize,method,extrapolationValue)]}default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp11=(node,tensorMap,context)=>{switch(node.op){case"Equal":return[equal(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"NotEqual":return[notEqual(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Greater":return[greater(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"GreaterEqual":return[greaterEqual(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Less":return[less(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"LessEqual":return[lessEqual(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"LogicalAnd":return[logicalAnd(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"LogicalNot":return[logicalNot(getParamValue("a",node,tensorMap,context))];case"LogicalOr":return[logicalOr(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];case"Select":case"SelectV2":return[where(getParamValue("condition",node,tensorMap,context),getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp12=(node,tensorMap,context)=>{switch(node.op){case"BatchMatMul":case"BatchMatMulV2":case"MatMul":return[matMul(getParamValue("a",node,tensorMap,context),getParamValue("b",node,tensorMap,context),getParamValue("transposeA",node,tensorMap,context),getParamValue("transposeB",node,tensorMap,context))];case"Transpose":return[transpose(getParamValue("x",node,tensorMap,context),getParamValue("perm",node,tensorMap,context))];case"_FusedMatMul":let[extraOp,activationFunc]=getParamValue("fusedOps",node,tensorMap,context),isBiasAdd=extraOp==="biasadd",isPrelu=activationFunc==="prelu",numArgs=getParamValue("numArgs",node,tensorMap,context),leakyreluAlpha=getParamValue("leakyreluAlpha",node,tensorMap,context);if(isBiasAdd){if(isPrelu&&numArgs!==2)throw new Error("Fused MatMul with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!isPrelu&&numArgs!==1)throw new Error("Fused MatMul with BiasAdd must have one extra argument: bias.")}let[biasArg,preluArg]=getParamValue("args",node,tensorMap,context);return[fused_ops_exports.matMul({a:getParamValue("a",node,tensorMap,context),b:getParamValue("b",node,tensorMap,context),transposeA:getParamValue("transposeA",node,tensorMap,context),transposeB:getParamValue("transposeB",node,tensorMap,context),bias:biasArg,activation:activationFunc,preluActivationWeights:preluArg,leakyreluAlpha})];default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp13=(node,tensorMap,context)=>{switch(node.op){case"FusedBatchNorm":case"FusedBatchNormV2":return[batchNorm(getParamValue("x",node,tensorMap,context),getParamValue("mean",node,tensorMap,context),getParamValue("variance",node,tensorMap,context),getParamValue("offset",node,tensorMap,context),getParamValue("scale",node,tensorMap,context),getParamValue("epsilon",node,tensorMap,context))];case"FusedBatchNormV3":return[batchNorm(getParamValue("x",node,tensorMap,context),getParamValue("mean",node,tensorMap,context),getParamValue("variance",node,tensorMap,context),getParamValue("offset",node,tensorMap,context),getParamValue("scale",node,tensorMap,context),getParamValue("epsilon",node,tensorMap,context))];case"LRN":return[localResponseNormalization(getParamValue("x",node,tensorMap,context),getParamValue("radius",node,tensorMap,context),getParamValue("bias",node,tensorMap,context),getParamValue("alpha",node,tensorMap,context),getParamValue("beta",node,tensorMap,context))];case"Softmax":return[softmax(getParamValue("x",node,tensorMap,context))];case"LogSoftmax":return[logSoftmax(getParamValue("x",node,tensorMap,context))];case"SparseToDense":return[sparseToDense(getParamValue("sparseIndices",node,tensorMap,context),getParamValue("outputShape",node,tensorMap,context),getParamValue("sparseValues",node,tensorMap,context),getParamValue("defaultValue",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp14=(node,tensorMap,context)=>{switch(node.op){case"Max":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[max(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Mean":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[mean(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Min":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[min(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Sum":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[sum2(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"All":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[all(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Any":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[any(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"ArgMax":{let axis=getParamValue("axis",node,tensorMap,context);return[argMax(getParamValue("x",node,tensorMap,context),axis)]}case"ArgMin":{let axis=getParamValue("axis",node,tensorMap,context);return[argMin(getParamValue("x",node,tensorMap,context),axis)]}case"Prod":{let axis=getParamValue("axis",node,tensorMap,context),keepDims=getParamValue("keepDims",node,tensorMap,context);return[prod(getParamValue("x",node,tensorMap,context),axis,keepDims)]}case"Cumsum":{let axis=getParamValue("axis",node,tensorMap,context),exclusive=getParamValue("exclusive",node,tensorMap,context),reverse5=getParamValue("reverse",node,tensorMap,context);return[cumsum(getParamValue("x",node,tensorMap,context),axis,exclusive,reverse5)]}case"Bincount":let x=getParamValue("x",node,tensorMap,context),weights=getParamValue("weights",node,tensorMap,context),size=getParamValue("size",node,tensorMap,context);return[bincount(x,weights,size)];case"DenseBincount":{let x2=getParamValue("x",node,tensorMap,context),weights2=getParamValue("weights",node,tensorMap,context),size2=getParamValue("size",node,tensorMap,context),binaryOutput=getParamValue("binaryOutput",node,tensorMap,context);return[denseBincount(x2,weights2,size2,binaryOutput)]}default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp15=(node,tensorMap,context)=>{switch(node.op){case"ConcatV2":case"Concat":{let n=getParamValue("n",node,tensorMap,context),axis=getParamValue("axis",node,tensorMap,context),inputs=getParamValue("tensors",node,tensorMap,context);return inputs=inputs.slice(0,n),[concat(inputs,axis)]}case"Gather":{let input2=getParamValue("x",node,tensorMap,context),indices=getParamValue("indices",node,tensorMap,context);return[gather(input2,cast(indices,"int32"),0)]}case"GatherV2":{let axis=getParamValue("axis",node,tensorMap,context),batchDims=getParamValue("batchDims",node,tensorMap,context),input2=getParamValue("x",node,tensorMap,context),indices=getParamValue("indices",node,tensorMap,context);return[gather(input2,cast(indices,"int32"),axis,batchDims)]}case"Reverse":{let dims=getParamValue("dims",node,tensorMap,context),axis=[];for(let i=0;i{let axis=getParamValue("axis",node,tensorMap,context),tensors=getParamValue("tensors",node,tensorMap,context),shape=tensors[0].shape,squeezedShape=squeeze(tensors[0]).shape,mapped=tensors.map(tensor2=>{let sameShape=util_exports.arraysEqual(tensor2.shape,shape);if(!sameShape&&!util_exports.arraysEqual(squeeze(tensor2).shape,squeezedShape))throw new Error("the input tensors shape does not match");return sameShape?tensor2:reshape(tensor2,shape)});return[stack(mapped,axis)]});case"Unpack":{let axis=getParamValue("axis",node,tensorMap,context),tensor2=getParamValue("tensor",node,tensorMap,context);return unstack(tensor2,axis)}case"Tile":{let reps=getParamValue("reps",node,tensorMap,context);return[tile(getParamValue("x",node,tensorMap,context),reps)]}case"Split":case"SplitV":{let axis=getParamValue("axis",node,tensorMap,context),numOrSizeSplits=getParamValue("numOrSizeSplits",node,tensorMap,context),tensor2=getParamValue("x",node,tensorMap,context);return split(tensor2,numOrSizeSplits,axis)}case"ScatterNd":{let indices=getParamValue("indices",node,tensorMap,context),values=getParamValue("values",node,tensorMap,context),shape=getParamValue("shape",node,tensorMap,context);return[scatterND(indices,values,shape)]}case"GatherNd":{let x=getParamValue("x",node,tensorMap,context),indices=getParamValue("indices",node,tensorMap,context);return[gatherND(x,indices)]}case"SparseToDense":{let indices=getParamValue("sparseIndices",node,tensorMap,context),shape=getParamValue("outputShape",node,tensorMap,context),sparseValues=getParamValue("sparseValues",node,tensorMap,context),defaultValue=getParamValue("defaultValue",node,tensorMap,context);return[sparseToDense(indices,sparseValues,shape,sparseValues.dtype===defaultValue.dtype?defaultValue:cast(defaultValue,sparseValues.dtype))]}default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp16=(node,tensorMap,context)=>{switch(node.op){case"FFT":return[fft(getParamValue("x",node,tensorMap,context))];case"IFFT":return[ifft(getParamValue("x",node,tensorMap,context))];case"RFFT":return[rfft(getParamValue("x",node,tensorMap,context))];case"IRFFT":return[irfft(getParamValue("x",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};var executeOp17=(node,tensorMap,context)=>{switch(node.op){case"Cast":return[cast(getParamValue("x",node,tensorMap,context),getParamValue("dtype",node,tensorMap,context))];case"ExpandDims":{let axis=getParamValue("axis",node,tensorMap,context);return[expandDims(getParamValue("x",node,tensorMap,context),axis)]}case"Squeeze":{let axis=getParamValue("axis",node,tensorMap,context);return[squeeze(getParamValue("x",node,tensorMap,context),axis)]}case"Reshape":return[reshape(getParamValue("x",node,tensorMap,context),getParamValue("shape",node,tensorMap,context))];case"MirrorPad":return[mirrorPad(getParamValue("x",node,tensorMap,context),getParamValue("padding",node,tensorMap,context),getParamValue("mode",node,tensorMap,context))];case"PadV2":case"Pad":return[pad(getParamValue("x",node,tensorMap,context),getParamValue("padding",node,tensorMap,context),getParamValue("constantValue",node,tensorMap,context))];case"SpaceToBatchND":{let blockShape=getParamValue("blockShape",node,tensorMap,context),paddings=getParamValue("paddings",node,tensorMap,context);return[spaceToBatchND(getParamValue("x",node,tensorMap,context),blockShape,paddings)]}case"BatchToSpaceND":{let blockShape=getParamValue("blockShape",node,tensorMap,context),crops=getParamValue("crops",node,tensorMap,context);return[batchToSpaceND(getParamValue("x",node,tensorMap,context),blockShape,crops)]}case"DepthToSpace":{let blockSize=getParamValue("blockSize",node,tensorMap,context),dataFormat=getParamValue("dataFormat",node,tensorMap,context).toUpperCase();return[depthToSpace(getParamValue("x",node,tensorMap,context),blockSize,dataFormat)]}case"BroadcastTo":return[broadcastTo(getParamValue("x",node,tensorMap,context),getParamValue("shape",node,tensorMap,context))];default:throw TypeError(`Node type ${node.op} is not implemented`)}};function executeOp18(node,tensorMap,context,resourceManager){let value=((node2,tensorMap2,context2)=>{switch(node2.category){case"arithmetic":return tidy(()=>executeOp(node2,tensorMap2,context2));case"basic_math":return tidy(()=>executeOp2(node2,tensorMap2,context2));case"control":return executeOp3(node2,tensorMap2,context2);case"convolution":return tidy(()=>executeOp4(node2,tensorMap2,context2));case"creation":return tidy(()=>executeOp5(node2,tensorMap2,context2));case"dynamic":return executeOp6(node2,tensorMap2,context2);case"evaluation":return tidy(()=>executeOp7(node2,tensorMap2,context2));case"image":return tidy(()=>executeOp10(node2,tensorMap2,context2));case"graph":return tidy(()=>executeOp8(node2,tensorMap2,context2));case"logical":return tidy(()=>executeOp11(node2,tensorMap2,context2));case"matrices":return tidy(()=>executeOp12(node2,tensorMap2,context2));case"normalization":return tidy(()=>executeOp13(node2,tensorMap2,context2));case"reduction":return tidy(()=>executeOp14(node2,tensorMap2,context2));case"slice_join":return tidy(()=>executeOp15(node2,tensorMap2,context2));case"spectral":return tidy(()=>executeOp16(node2,tensorMap2,context2));case"transformation":return tidy(()=>executeOp17(node2,tensorMap2,context2));case"hash_table":return executeOp9(node2,tensorMap2,context2,resourceManager);case"custom":let opMapper=getRegisteredOp(node2.op);if(opMapper&&opMapper.customExecutor)return opMapper.customExecutor(new NodeValueImpl(node2,tensorMap2,context2));throw TypeError(`Custom op ${node2.op} is not registered.`);default:throw TypeError(`Unknown op '${node2.op}'. File an issue at https://github.com/tensorflow/tfjs/issues so we can add it, or register a custom execution with tf.registerOp()`)}})(node,tensorMap,context);return util_exports.isPromise(value)?value.then(data=>[].concat(data)):[].concat(value)}var ExecutionContext=class{constructor(weightMap={},tensorArrayMap={},tensorListMap={},functionMap={}){this.weightMap=weightMap,this.tensorArrayMap=tensorArrayMap,this.tensorListMap=tensorListMap,this.functionMap=functionMap,this.rootContext={id:0,frameName:"",iterationId:0},this.contexts=[this.rootContext],this.lastId=0,this.generateCurrentContextIds()}newFrame(id,frameName){return{id,frameName,iterationId:0}}set currentContext(contexts2){this.contexts!==contexts2&&(this.contexts=contexts2,this.generateCurrentContextIds())}get currentContext(){return this.contexts}get currentContextId(){return this._currentContextIds[0]}get currentContextIds(){return this._currentContextIds}generateCurrentContextIds(){let names=[];for(let i=0;icontext.id===0&&context.iterationId===0?"":`${context.frameName}-${context.iterationId}`).join("/"):""}enterFrame(frameId){this.contexts&&(this.lastId++,this.contexts=this.contexts.slice(),this.contexts.push(this.newFrame(this.lastId,frameId)),this._currentContextIds.unshift(this.contextIdforContexts(this.contexts)))}exitFrame(){if(this.contexts&&this.contexts.length>1)this.contexts=this.contexts.slice(),this.contexts.splice(-1),this.currentContextIds.shift();else throw new Error("Cannot exit frame, the context is empty")}nextIteration(){if(this.contexts&&this.contexts.length>0){this.contexts=this.contexts.slice(),this.lastId++;let context=Object.assign({},this.contexts[this.contexts.length-1]);context.iterationId+=1,context.id=this.lastId,this.contexts.splice(-1,1,context),this._currentContextIds.splice(0,1,this.contextIdforContexts(this.contexts))}else throw new Error("Cannot increase frame iteration, the context is empty")}getWeight(name){return this.weightMap[name]}addTensorArray(tensorArray){this.tensorArrayMap[tensorArray.id]=tensorArray}getTensorArray(id){return this.tensorArrayMap[id]}addTensorList(tensorList){this.tensorListMap[tensorList.id]=tensorList}getTensorList(id){return this.tensorListMap[id]}dispose(keepIds){for(let key in this.tensorArrayMap)this.tensorArrayMap[key].clearAndClose(keepIds);for(let key in this.tensorListMap)this.tensorListMap[key].clearAndClose(keepIds)}};function getExecutionSubgraph(inputs,outputs,weightMap,initNodes){let usedNodes=new Set,missingInputs=[],dynamicNode=null,syncInputs=null,seen=new Set,inputNodeNames=Object.keys(inputs).map(name=>parseNodeName(name)[0]),initNodeNames=[];initNodes!=null&&(initNodeNames=initNodes.map(node=>parseNodeName(node.name)[0]));let frontier=[...outputs];for(;frontier.length>0;){let node=frontier.pop();if((isControlFlow(node)||isDynamicShape(node)||isHashTable(node))&&dynamicNode==null&&(dynamicNode=node,syncInputs=dynamicNode.children.map(child=>child.name).filter(name=>usedNodes.has(name))),usedNodes.add(node.name),weightMap[node.name]==null&&inputNodeNames.indexOf(node.name)===-1&&initNodeNames.indexOf(node.name)===-1){if(node.inputs.length===0){missingInputs.push(node.name);continue}node.inputs.forEach(input2=>{seen.has(input2.name)||(seen.add(input2.name),frontier.push(input2))})}}return{inputs,outputs,usedNodes,missingInputs,dynamicNode,syncInputs}}function getNodesInTopologicalOrder(graph2,weightMap,executionInfo){let{usedNodes,inputs}=executionInfo,frontier=[],inputNodes=Object.keys(inputs).map(name=>parseNodeName(name)[0]).map(name=>graph2.nodes[name]),initNodes=graph2.initNodes;inputNodes.forEach(input2=>{usedNodes.has(input2.name)&&frontier.push(input2)}),graph2.weights.forEach(weight=>{usedNodes.has(weight.name)&&frontier.push(weight)}),initNodes!=null&&initNodes.forEach(node=>{usedNodes.has(node.name)&&frontier.push(node)});let seen=new Set,orderedNodes=[];for(;frontier.length>0;){let node=frontier.pop();seen.add(node.name),weightMap[node.name]||orderedNodes.push(node),node.children.forEach(child=>{!seen.has(child.name)&&usedNodes.has(child.name)&&child.inputs.every(input2=>seen.has(input2.name))&&frontier.push(child)})}return orderedNodes}var CONTROL_FLOW_OPS=["Switch","Merge","Enter","Exit","NextIteration","StatelessIf","StatelessWhile","if","While"],DYNAMIC_SHAPE_OPS=["NonMaxSuppressionV2","NonMaxSuppressionV3","NonMaxSuppressionV5","Where"],HASH_TABLE_OPS=["HashTable","HashTableV2","LookupTableImport","LookupTableImportV2","LookupTableFind","LookupTableFindV2"];function isControlFlow(node){return CONTROL_FLOW_OPS.indexOf(node.op)>=0}function isDynamicShape(node){return DYNAMIC_SHAPE_OPS.indexOf(node.op)>=0}function isHashTable(node){return HASH_TABLE_OPS.indexOf(node.op)>=0}var GraphExecutor=class{constructor(graph2,parent){this.graph=graph2,this.parent=parent,this.compiledMap=new Map,this._weightMap={},this.SEPERATOR=",",this._functions={},this._functionExecutorMap={},this._outputs=graph2.outputs,this._inputs=graph2.inputs,this._initNodes=graph2.initNodes,this._signature=graph2.signature,this._functions=graph2.functions,graph2.functions!=null&&Object.keys(graph2.functions).forEach(name=>{this._functionExecutorMap[name]=new GraphExecutor(graph2.functions[name],this)})}get weightIds(){return this.parent?this.parent.weightIds:this._weightIds}get functionExecutorMap(){return this.parent?this.parent.functionExecutorMap:this._functionExecutorMap}get weightMap(){return this.parent?this.parent.weightMap:this._weightMap}set weightMap(weightMap){let weightIds=Object.keys(weightMap).map(key=>weightMap[key].map(tensor2=>tensor2.id));this._weightIds=[].concat(...weightIds),this._weightMap=weightMap}set resourceManager(resourceManager){this._resourceManager=resourceManager}get inputs(){return this._inputs.map(node=>({name:node.name,shape:node.attrParams.shape?node.attrParams.shape.value:void 0,dtype:node.attrParams.dtype?node.attrParams.dtype.value:void 0}))}get outputs(){return this._outputs.map(node=>({name:node.name,shape:node.attrParams.shape?node.attrParams.shape.value:void 0,dtype:node.attrParams.dtype?node.attrParams.dtype.value:void 0}))}get inputNodes(){return this._inputs.map(node=>node.signatureKey||node.name)}get outputNodes(){return this._outputs.map(node=>{let name=node.signatureKey||node.name;return node.defaultOutput?`${name}:${node.defaultOutput}`:name})}get functions(){return Object.keys(this._functions).reduce((map,key)=>(map[key]=this._functions[key].signature,map),{})}getCompilationKey(inputs,outputs){let sortedInputs=inputs.map(node=>node.name).sort(),sortedOutputs=outputs.map(node=>node.name).sort();return sortedInputs.join(this.SEPERATOR)+"--"+sortedOutputs.join(this.SEPERATOR)}compile(inputs,outputs){let executionInfo=getExecutionSubgraph(inputs,outputs,this.weightMap,this._initNodes),{missingInputs,dynamicNode,syncInputs}=executionInfo;if(dynamicNode!=null)throw new Error(`This execution contains the node '${dynamicNode.name}', which has the dynamic op '${dynamicNode.op}'. Please use model.executeAsync() instead. Alternatively, to avoid the dynamic ops, specify the inputs [${syncInputs}]`);if(missingInputs.length>0){let outNames=outputs.map(n=>n.name),inNames=Object.keys(inputs);throw new Error(`Cannot compute the outputs [${outNames}] from the provided inputs [${inNames}]. Missing the following inputs: [${missingInputs}]`)}return getNodesInTopologicalOrder(this.graph,this.weightMap,executionInfo)}execute(inputs,outputs){inputs=this.mapInputs(inputs);let names=Object.keys(inputs).sort();this.checkInputs(inputs),this.checkInputShapeAndType(inputs),outputs=this.mapOutputs(outputs),this.checkOutputs(outputs);let inputNodes=names.map(name=>this.graph.nodes[parseNodeName(name)[0]]),outputNodeNames=outputs.map(name=>parseNodeName(name)[0]),outputNodes=outputNodeNames.map(name=>this.graph.nodes[name]);outputNodes.length===0&&(outputNodes=this._outputs);let compilationKey=this.getCompilationKey(inputNodes,outputNodes),orderedNodes=this.compiledMap.get(compilationKey);orderedNodes==null&&(orderedNodes=this.compile(inputs,outputNodes),this.compiledMap.set(compilationKey,orderedNodes));let tensorArrayMap={},tensorListMap={};return tidy(()=>{let context=new ExecutionContext(this.weightMap,tensorArrayMap,tensorListMap,this.functionExecutorMap),tensorsMap=Object.assign({},this.weightMap);Object.keys(inputs).forEach(name=>{let[nodeName,index]=parseNodeName(name),tensors=[];tensors[index]=inputs[name],tensorsMap[nodeName]=tensors});let tensorsToKeep=this.getFrozenTensorIds(tensorsMap),intermediateTensorConsumerCount={};for(let i=0;igetTensor(name,tensorsMap,context))})}getFrozenTensorIds(tensorMap){let ids=[].concat.apply([],Object.keys(tensorMap).map(key=>tensorMap[key]).map(tensors=>tensors.map(tensor2=>tensor2.id)));return new Set(ids)}checkTensorForDisposal(nodeName,node,tensorMap,context,tensorsToKeep,outputNames,intermediateTensorConsumerCount){node.category==="control"||outputNames.indexOf(nodeName)!==-1||(tensorMap[nodeName].forEach(tensor2=>{tensor2!=null&&(intermediateTensorConsumerCount[tensor2.id]=(intermediateTensorConsumerCount[tensor2.id]||0)+node.children.length)}),node.inputs.forEach(input2=>{if(input2.category!=="control"){let tensors=getTensorsForCurrentContenxt(input2.name,tensorMap,context);tensors!=null&&tensors.forEach(tensor2=>{if(tensor2&&!tensorsToKeep.has(tensor2.id)){let count2=intermediateTensorConsumerCount[tensor2.id];count2===1?(tensor2.dispose(),delete intermediateTensorConsumerCount[tensor2.id]):count2!=null&&intermediateTensorConsumerCount[tensor2.id]--}})}}))}async executeAsync(inputs,outputs){return this._executeAsync(inputs,outputs)}async _executeAsync(inputs,outputs,isFunctionExecution=!1,tensorArrayMap={},tensorListMap={}){isFunctionExecution||(inputs=this.mapInputs(inputs),this.checkInputs(inputs),this.checkInputShapeAndType(inputs),outputs=this.mapOutputs(outputs),this.checkOutputs(outputs));let context=new ExecutionContext(this.weightMap,tensorArrayMap,tensorListMap,this.functionExecutorMap),tensorMap=await this.executeWithControlFlow(inputs,context,outputs,isFunctionExecution),results=outputs.map(name=>getTensor(name,tensorMap,context)),outputIds=results.map(t=>t.id),inputIds=Object.keys(inputs).map(name=>inputs[name].id),keepIds=new Set([...outputIds,...inputIds,...this.weightIds]);return Object.keys(tensorMap).forEach(key=>{tensorMap[key].forEach(tensor2=>{tensor2&&!tensor2.isDisposed&&!keepIds.has(tensor2.id)&&tensor2.dispose()})}),this.parent==null&&context.dispose(keepIds),results}async executeFunctionAsync(inputs,tensorArrayMap,tensorListMap){let mappedInputs=inputs.reduce((map,tensor2,index)=>(map[this.inputs[index].name]=tensor2,map),{});return this._executeAsync(mappedInputs,this.outputNodes,!0,tensorArrayMap,tensorListMap)}async executeWithControlFlow(inputs,context,outputNames,isFunctionExecution){let names=Object.keys(inputs),inputNodes=names.map(name=>this.graph.nodes[parseNodeName(name)[0]]),outputNodeNames=outputNames.map(name=>parseNodeName(name)[0]),outputNodes=outputNodeNames.map(name=>this.graph.nodes[name]);outputNodes.length===0&&(outputNodes=this._outputs);let{usedNodes,missingInputs,dynamicNode,syncInputs}=getExecutionSubgraph(inputs,outputNodes,this.weightMap,this._initNodes),stack2=[...inputNodes,...this.graph.weights,...this._initNodes||[]].map(node=>({node,contexts:context.currentContext})),tensorsMap=Object.assign({},this.weightMap);Object.keys(inputs).forEach(name=>{let[nodeName,index]=parseNodeName(name),tensors=[];tensors[index]=inputs[name],tensorsMap[nodeName]=tensors});let intermediateTensorConsumerCount={},tensorsToKeep=this.getFrozenTensorIds(tensorsMap),added={};for(;stack2.length>0;){let promises=this.processStack(inputNodes,stack2,context,tensorsMap,added,tensorsToKeep,outputNodeNames,intermediateTensorConsumerCount,usedNodes);await Promise.all(promises)}dynamicNode==null&&!isFunctionExecution&&console.warn("This model execution did not contain any nodes with control flow or dynamic output shapes. You can use model.execute() instead.");let missingOutputs=outputNodes.filter(node=>!isControlFlow(node)&&!getTensor(node.name,tensorsMap,context)).map(node=>node.name);if(missingOutputs.length>0){let alternativeMsg="";throw dynamicNode!=null&&(alternativeMsg=`Alternatively, to avoid the dynamic ops, use model.execute() and specify the inputs [${syncInputs}]`),new Error(`Cannot compute the outputs [${missingOutputs}] from the provided inputs [${names}]. Consider providing the following inputs: [${missingInputs}]. ${alternativeMsg}`)}return tensorsMap}processStack(inputNodes,stack2,context,tensorMap,added,tensorsToKeep,outputNames,intermediateTensorConsumerCount,usedNodes){let promises=[];for(;stack2.length>0;){let item=stack2.pop();context.currentContext=item.contexts;let nodeName="";if(item.node.op==="Enter"&&getParamValue("isConstant",item.node,tensorMap,context)&&([nodeName]=getNodeNameAndIndex(item.node.name,context)),tensorMap[item.node.name]==null){let tensors=executeOp18(item.node,tensorMap,context,this._resourceManager);nodeName||([nodeName]=getNodeNameAndIndex(item.node.name,context));let currentContext=context.currentContext;util_exports.isPromise(tensors)?promises.push(tensors.then(t=>(tensorMap[nodeName]=t,context.currentContext=currentContext,this.checkTensorForDisposal(nodeName,item.node,tensorMap,context,tensorsToKeep,outputNames,intermediateTensorConsumerCount),this.processChildNodes(item.node,stack2,context,tensorMap,added,usedNodes),t))):(tensorMap[nodeName]=tensors,this.checkTensorForDisposal(nodeName,item.node,tensorMap,context,tensorsToKeep,outputNames,intermediateTensorConsumerCount),this.processChildNodes(item.node,stack2,context,tensorMap,added,usedNodes))}else this.processChildNodes(item.node,stack2,context,tensorMap,added,usedNodes)}return promises}processChildNodes(node,stack2,context,tensorMap,added,usedNodes){node.children.forEach(childNode=>{let[nodeName]=getNodeNameAndIndex(childNode.name,context);added[nodeName]||!usedNodes.has(childNode.name)||(childNode.op==="Merge"?childNode.inputNames.some(name=>!!getTensor(name,tensorMap,context))&&(added[nodeName]=!0,stack2.push({contexts:context.currentContext,node:childNode})):childNode.inputNames.every(name=>!!getTensor(name,tensorMap,context))&&(added[nodeName]=!0,stack2.push({contexts:context.currentContext,node:childNode})))})}dispose(){Object.keys(this.weightMap).forEach(key=>this.weightMap[key].forEach(tensor2=>tensor2.dispose()))}checkInputShapeAndType(inputs){Object.keys(inputs).forEach(name=>{let input2=inputs[name],[nodeName]=parseNodeName(name),node=this.graph.nodes[nodeName];if(node.attrParams.shape&&node.attrParams.shape.value){let shape=node.attrParams.shape.value,match=shape.length===input2.shape.length&&input2.shape.every((dim,index)=>shape[index]===-1||shape[index]===dim);util_exports.assert(match,()=>`The shape of dict['${node.name}'] provided in model.execute(dict) must be [${shape}], but was [${input2.shape}]`)}node.attrParams.dtype&&node.attrParams.dtype.value&&util_exports.assert(input2.dtype===node.attrParams.dtype.value,()=>`The dtype of dict['${node.name}'] provided in model.execute(dict) must be ${node.attrParams.dtype.value}, but was ${input2.dtype}`)})}mapInputs(inputs){let result={};for(let inputName in inputs)if(this._signature!=null&&this._signature.inputs!=null&&this._signature.inputs[inputName]!=null){let tensor2=this._signature.inputs[inputName];result[tensor2.name]=inputs[inputName]}else result[inputName]=inputs[inputName];return result}checkInputs(inputs){let notInGraph=Object.keys(inputs).filter(name=>{let[nodeName]=parseNodeName(name);return this.graph.nodes[nodeName]==null});if(notInGraph.length>0)throw new Error(`The dict provided in model.execute(dict) has keys: [${notInGraph}] that are not part of graph`)}mapOutputs(outputs){return outputs.map(name=>this._signature!=null&&this._signature.outputs!=null&&this._signature.outputs[name]!=null?this._signature.outputs[name].name:name,{})}checkOutputs(outputs){outputs.forEach(name=>{let[normalizedName]=parseNodeName(name);if(!this.graph.nodes[normalizedName])throw new Error(`The output '${name}' is not found in the graph`)})}};var ResourceManager=class{constructor(hashTableNameToHandle={},hashTableMap={}){this.hashTableNameToHandle=hashTableNameToHandle,this.hashTableMap=hashTableMap}addHashTable(name,hashTable2){this.hashTableNameToHandle[name]=hashTable2.handle,this.hashTableMap[hashTable2.id]=hashTable2}getHashTableHandleByName(name){return this.hashTableNameToHandle[name]}getHashTableById(id){return this.hashTableMap[id]}dispose(){for(let key in this.hashTableMap)this.hashTableMap[key].clearAndClose(),delete this.hashTableMap[key];for(let name in this.hashTableNameToHandle)this.hashTableNameToHandle[name].dispose(),delete this.hashTableNameToHandle[name]}};var TFHUB_SEARCH_PARAM="?tfjs-format=file",DEFAULT_MODEL_NAME="model.json",GraphModel=class{constructor(modelUrl,loadOptions={}){this.modelUrl=modelUrl,this.loadOptions=loadOptions,this.version="n/a",loadOptions==null&&(this.loadOptions={}),this.resourceManager=new ResourceManager}get modelVersion(){return this.version}get inputNodes(){return this.executor.inputNodes}get outputNodes(){return this.executor.outputNodes}get inputs(){return this.executor.inputs}get outputs(){return this.executor.outputs}get weights(){return this.executor.weightMap}get metadata(){return this.artifacts.userDefinedMetadata}get modelSignature(){return this.signature}findIOHandler(){let path=this.modelUrl;if(path.load!=null)this.handler=path;else if(this.loadOptions.requestInit!=null)this.handler=io_exports.browserHTTPRequest(path,this.loadOptions);else{let handlers=io_exports.getLoadHandlers(path,this.loadOptions);if(handlers.length===0)handlers.push(io_exports.browserHTTPRequest(path,this.loadOptions));else if(handlers.length>1)throw new Error(`Found more than one (${handlers.length}) load handlers for URL '${[path]}'`);this.handler=handlers[0]}}async load(){if(this.findIOHandler(),this.handler.load==null)throw new Error("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let artifacts=await this.handler.load();return this.loadSync(artifacts)}loadSync(artifacts){this.artifacts=artifacts;let graph2=this.artifacts.modelTopology,signature;this.artifacts.userDefinedMetadata!=null&&this.artifacts.userDefinedMetadata.signature!=null?signature=this.artifacts.userDefinedMetadata.signature:signature=this.artifacts.signature,this.signature=signature,this.version=`${graph2.versions.producer}.${graph2.versions.minConsumer}`;let weightMap=io_exports.decodeWeights(this.artifacts.weightData,this.artifacts.weightSpecs);if(this.executor=new GraphExecutor(OperationMapper.Instance.transformGraph(graph2,this.signature)),this.executor.weightMap=this.convertTensorMapToTensorsMap(weightMap),this.executor.resourceManager=this.resourceManager,artifacts.modelInitializer!=null&&artifacts.modelInitializer.node!=null){let initializer=OperationMapper.Instance.transformGraph(artifacts.modelInitializer);this.initializer=new GraphExecutor(initializer),this.initializer.weightMap=this.executor.weightMap,this.initializer.resourceManager=this.resourceManager,this.initializer.executeAsync({},[])}return!0}async save(handlerOrURL,config){if(typeof handlerOrURL=="string"){let handlers=io_exports.getSaveHandlers(handlerOrURL);if(handlers.length===0)throw new Error(`Cannot find any save handlers for URL '${handlerOrURL}'`);if(handlers.length>1)throw new Error(`Found more than one (${handlers.length}) save handlers for URL '${handlerOrURL}'`);handlerOrURL=handlers[0]}if(handlerOrURL.save==null)throw new Error("GraphModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");return handlerOrURL.save(this.artifacts)}predict(inputs,config){return this.execute(inputs,this.outputNodes)}normalizeInputs(inputs){if(!(inputs instanceof Tensor)&&!Array.isArray(inputs))return inputs;if(inputs=Array.isArray(inputs)?inputs:[inputs],inputs.length!==this.inputNodes.length)throw new Error(`Input tensor count mismatch,the graph model has ${this.inputNodes.length} placeholders, while there are ${inputs.length} input tensors.`);return this.inputNodes.reduce((map,inputName,i)=>(map[inputName]=inputs[i],map),{})}normalizeOutputs(outputs){return outputs=outputs||this.outputNodes,Array.isArray(outputs)?outputs:[outputs]}execute(inputs,outputs){inputs=this.normalizeInputs(inputs),outputs=this.normalizeOutputs(outputs);let result=this.executor.execute(inputs,outputs);return result.length>1?result:result[0]}async executeAsync(inputs,outputs){inputs=this.normalizeInputs(inputs),outputs=this.normalizeOutputs(outputs);let result=await this.executor.executeAsync(inputs,outputs);return result.length>1?result:result[0]}convertTensorMapToTensorsMap(map){return Object.keys(map).reduce((newMap,key)=>(newMap[key]=[map[key]],newMap),{})}dispose(){this.executor.dispose(),this.initializer&&this.initializer.dispose(),this.resourceManager.dispose()}};async function loadGraphModel(modelUrl,options={}){if(modelUrl==null)throw new Error("modelUrl in loadGraphModel() cannot be null. Please provide a url or an IOHandler that loads the model");options==null&&(options={}),options.fromTFHub&&modelUrl.load==null&&(modelUrl.endsWith("/")||(modelUrl=modelUrl+"/"),modelUrl=`${modelUrl}${DEFAULT_MODEL_NAME}${TFHUB_SEARCH_PARAM}`);let model2=new GraphModel(modelUrl,options);return await model2.load(),model2}var version3="2.8.3";var dist_exports={};__export(dist_exports,{CSVDataset:()=>CSVDataset,Dataset:()=>Dataset,FileDataSource:()=>FileDataSource,TextLineDataset:()=>TextLineDataset,URLDataSource:()=>URLDataSource,array:()=>array,csv:()=>csv,func:()=>func,generator:()=>generator,microphone:()=>microphone,version_data:()=>version4,webcam:()=>webcam,zip:()=>zip});var seedrandom3=__toModule(require_seedrandom2());var seedrandom2=__toModule(require_seedrandom2());function deepMap(input2,mapFn){return deepMapInternal(input2,mapFn)}function deepMapInternal(input2,mapFn,seen=new Map,containedIn=new Set){if(input2==null)return null;if(containedIn.has(input2))throw new Error("Circular references are not supported.");if(seen.has(input2))return seen.get(input2);let result=mapFn(input2);if(result.recurse&&result.value!==null)throw new Error("A deep map function may not return both a value and recurse=true.");if(result.recurse)if(isIterable2(input2)){let mappedIterable=Array.isArray(input2)?[]:{};containedIn.add(input2);for(let k in input2){let child=input2[k],childResult=deepMapInternal(child,mapFn,seen,containedIn);mappedIterable[k]=childResult}return containedIn.delete(input2),mappedIterable}else throw new Error(`Can't recurse into non-iterable type: ${input2}`);else return seen.set(input2,result.value),result.value}function deepZip(inputs,zipFn=zipToList){return deepZipInternal(inputs,zipFn)}function deepZipInternal(inputs,zipFn,containedIn=new Set){let input2=inputs[0];if(containedIn.has(input2))throw new Error("Circular references are not supported.");let result=zipFn(inputs);if(result.recurse&&result.value!==null)throw new Error("A deep zip function may not return both a value and recurse=true.");if(result.recurse)if(isIterable2(input2)){let mappedIterable=Array.isArray(input2)?[]:{};containedIn.add(input2);for(let k in input2){let children=inputs.map(x=>x[k]),childResult=deepZipInternal(children,zipFn,containedIn);mappedIterable[k]=childResult}return containedIn.delete(input2),mappedIterable}else throw new Error(`Can't recurse into non-iterable type: ${input2}`);else return result.value}function zipToList(x){return x===null?null:isIterable2(x[0])?{value:null,recurse:!0}:{value:x,recurse:!1}}async function deepMapAndAwaitAll(input2,mapFn){let seen=new Map;deepMapInternal(input2,mapFn,seen);for(let key of Array.from(seen.keys())){let value=seen.get(key);if(util_exports.isPromise(value)){let mappedValue=await value;seen.set(key,mappedValue)}}return deepMapInternal(input2,mapFn,seen)}function isIterable2(obj){return obj!=null&&!ArrayBuffer.isView(obj)&&(Array.isArray(obj)||typeof obj=="object"&&!(obj instanceof Tensor))}function canTensorify(obj){return obj==null||isPrimitive(obj)||Array.isArray(obj)||typeof obj=="object"&&obj instanceof Tensor||util_exports.isTypedArray(obj)}function isPrimitive(value){return value===null||typeof value!="object"&&typeof value!="function"}function deepClone(container){return deepMap(container,cloneIfTensor)}function cloneIfTensor(item){return item instanceof Tensor?{value:item.clone(),recurse:!1}:isIterable2(item)?{value:null,recurse:!0}:{value:item,recurse:!1}}var RingBuffer=class{constructor(capacity){if(this.capacity=capacity,this.begin=0,this.end=0,capacity==null)throw new RangeError("Can't create a ring buffer of unknown capacity.");if(capacity<1)throw new RangeError("Can't create ring buffer of capacity < 1.");this.data=new Array(capacity),this.doubledCapacity=2*capacity}wrap(index){for(;index<0;)index+=this.doubledCapacity;return index%this.doubledCapacity}get(index){if(index<0)throw new RangeError("Can't get item at a negative index.");return this.data[index%this.capacity]}set(index,value){if(index<0)throw new RangeError("Can't set item at a negative index.");this.data[index%this.capacity]=value}length(){let length=this.end-this.begin;return length<0&&(length=this.doubledCapacity+length),length}isFull(){return this.length()===this.capacity}isEmpty(){return this.length()===0}push(value){if(this.isFull())throw new RangeError("Ring buffer is full.");this.set(this.end,value),this.end=this.wrap(this.end+1)}pushAll(values){for(let value of values)this.push(value)}pop(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");this.end=this.wrap(this.end-1);let result=this.get(this.end);return this.set(this.end,void 0),result}unshift(value){if(this.isFull())throw new RangeError("Ring buffer is full.");this.begin=this.wrap(this.begin-1),this.set(this.begin,value)}shift(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let result=this.get(this.begin);return this.set(this.begin,void 0),this.begin=this.wrap(this.begin+1),result}shuffleExcise(relativeIndex){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let index=this.wrap(this.begin+relativeIndex),result=this.get(index);return this.set(index,this.pop()),result}};var GrowingRingBuffer=class extends RingBuffer{constructor(){super(GrowingRingBuffer.INITIAL_CAPACITY)}isFull(){return!1}push(value){super.isFull()&&this.expand(),super.push(value)}unshift(value){super.isFull()&&this.expand(),super.unshift(value)}expand(){let newCapacity=this.capacity*2,newData=new Array(newCapacity),len=this.length();for(let i=0;ix===!0)}rowMajorBatch(batchSize,smallLastBatch=!0){return new RowMajorBatchIterator(this,batchSize,smallLastBatch)}columnMajorBatch(batchSize,smallLastBatch=!0,zipFn=zipToList){return this.rowMajorBatch(batchSize,smallLastBatch).map(x=>deepZip(x,zipFn))}concatenate(iterator,baseErrorHandler){return new ChainedIterator(iteratorFromItems([this,iterator]),baseErrorHandler)}take(count2){return count2<0||count2==null?this:new TakeIterator(this,count2)}skip(count2){return count2<0||count2==null?this:new SkipIterator(this,count2)}prefetch(bufferSize){return new PrefetchIterator(this,bufferSize)}shuffle(windowSize,seed){return new ShuffleIterator(this,windowSize,seed)}serial(){return new SerialIterator(this)}},ArrayIterator=class extends LazyIterator{constructor(items){super();this.items=items,this.trav=0}summary(){return`Array of ${this.items.length} items`}async next(){if(this.trav>=this.items.length)return{value:null,done:!0};let item=this.items[this.trav];return this.trav++,{value:deepClone(item),done:!1}}},FunctionCallIterator=class extends LazyIterator{constructor(nextFn){super();this.nextFn=nextFn}summary(){return"Function call"}async next(){try{return this.nextFn()}catch(e){throw e.message=`Error thrown while iterating through a dataset: ${e.message}`,e}}},SerialIterator=class extends LazyIterator{constructor(upstream){super();this.upstream=upstream,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Serial`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){return this.upstream.next()}},SkipIterator=class extends LazyIterator{constructor(upstream,maxCount){super();this.upstream=upstream,this.maxCount=maxCount,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Skip`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.count++ Take`}async next(){return this.count++>=this.maxCount?{value:null,done:!0}:this.upstream.next()}},RowMajorBatchIterator=class extends LazyIterator{constructor(upstream,batchSize,enableSmallLastBatch=!0){super();this.upstream=upstream,this.batchSize=batchSize,this.enableSmallLastBatch=enableSmallLastBatch,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> RowMajorBatch`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){let batch=[];for(;batch.length0?{value:batch,done:!1}:{value:null,done:!0};batch.push(item.value)}return{value:batch,done:!1}}},FilterIterator=class extends LazyIterator{constructor(upstream,predicate){super();this.upstream=upstream,this.predicate=predicate,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Filter`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;){let item=await this.upstream.next();if(item.done||this.predicate(item.value))return item;dispose(item.value)}}},MapIterator=class extends LazyIterator{constructor(upstream,transform){super();this.upstream=upstream,this.transform=transform}summary(){return`${this.upstream.summary()} -> Map`}async next(){let item=await this.upstream.next();if(item.done)return{value:null,done:!0};let inputTensors=tensor_util_exports.getTensorsInContainer(item.value),mapped=this.transform(item.value),outputTensors=tensor_util_exports.getTensorsInContainer(mapped);for(let t of inputTensors)tensor_util_exports.isTensorInList(t,outputTensors)||t.dispose();return{value:mapped,done:!1}}},ErrorHandlingLazyIterator=class extends LazyIterator{constructor(upstream,handler){super();this.upstream=upstream,this.handler=handler,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> handleErrors`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;)try{return await this.upstream.next()}catch(e){if(!this.handler(e))return{value:null,done:!0}}}},AsyncMapIterator=class extends LazyIterator{constructor(upstream,transform){super();this.upstream=upstream,this.transform=transform}summary(){return`${this.upstream.summary()} -> AsyncMap`}async next(){let item=await this.upstream.next();if(item.done)return{value:null,done:!0};let inputTensors=tensor_util_exports.getTensorsInContainer(item.value),mapped=await this.transform(item.value),outputTensors=tensor_util_exports.getTensorsInContainer(mapped);for(let t of inputTensors)tensor_util_exports.isTensorInList(t,outputTensors)||t.dispose();return{value:mapped,done:!1}}},OneToManyIterator=class extends LazyIterator{constructor(){super();this.outputQueue=new GrowingRingBuffer,this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.outputQueue.length()===0;)if(!await this.pump())return{value:null,done:!0};return{value:this.outputQueue.shift(),done:!1}}},FlatmapIterator=class extends OneToManyIterator{constructor(upstream,transform){super();this.upstream=upstream,this.transform=transform}summary(){return`${this.upstream.summary()} -> Flatmap`}async pump(){let item=await this.upstream.next();if(item.done)return!1;let inputTensors=tensor_util_exports.getTensorsInContainer(item.value),mappedArray=this.transform(item.value),outputTensors=tensor_util_exports.getTensorsInContainer(mappedArray);this.outputQueue.pushAll(mappedArray);for(let t of inputTensors)tensor_util_exports.isTensorInList(t,outputTensors)||t.dispose();return!0}},ChainedIterator=class extends LazyIterator{constructor(iterators,baseErrorHandler){super();this.baseErrorHandler=baseErrorHandler,this.lastRead=null,this.iterator=null,this.moreIterators=iterators}summary(){return"TODO: fill in upstream of chained summaries -> Chained"}async next(){return this.lastRead=this.readFromChain(this.lastRead),this.lastRead}async readFromChain(lastRead){if(await lastRead,this.iterator==null){let iteratorResult=await this.moreIterators.next();if(iteratorResult.done)return{value:null,done:!0};this.iterator=iteratorResult.value,this.baseErrorHandler!=null&&(this.iterator=this.iterator.handleErrors(this.baseErrorHandler))}let itemResult=await this.iterator.next();return itemResult.done?(this.iterator=null,this.readFromChain(lastRead)):itemResult}},ZipMismatchMode;(function(ZipMismatchMode2){ZipMismatchMode2[ZipMismatchMode2.FAIL=0]="FAIL",ZipMismatchMode2[ZipMismatchMode2.SHORTEST=1]="SHORTEST",ZipMismatchMode2[ZipMismatchMode2.LONGEST=2]="LONGEST"})(ZipMismatchMode||(ZipMismatchMode={}));var ZipIterator=class extends LazyIterator{constructor(iterators,mismatchMode=ZipMismatchMode.FAIL){super();this.iterators=iterators,this.mismatchMode=mismatchMode,this.count=0,this.currentPromise=null}summary(){return"{TODO: fill in upstream of zip summaries} -> Zip"}async nextState(afterState){await afterState;let numIterators=0,iteratorsDone=0;function getNext(container){return container instanceof LazyIterator?{value:container.next().then(x=>(numIterators++,x.done&&iteratorsDone++,x.value)),recurse:!1}:{value:null,recurse:!0}}let mapped=await deepMapAndAwaitAll(this.iterators,getNext);if(numIterators===iteratorsDone)return{value:null,done:!0};if(iteratorsDone>0)switch(this.mismatchMode){case ZipMismatchMode.FAIL:throw new Error(`Zipped streams should have the same length. Mismatched at element ${this.count}.`);case ZipMismatchMode.SHORTEST:return{value:null,done:!0};case ZipMismatchMode.LONGEST:default:}return this.count++,{value:mapped,done:!1}}async next(){return this.currentPromise=this.nextState(this.currentPromise),this.currentPromise}},PrefetchIterator=class extends LazyIterator{constructor(upstream,bufferSize){super();this.upstream=upstream,this.bufferSize=bufferSize,this.buffer=new RingBuffer(bufferSize)}summary(){return`${this.upstream.summary()} -> Prefetch`}refill(){for(;!this.buffer.isFull();){let v=this.upstream.next();this.buffer.push(v)}}next(){return this.refill(),this.buffer.shift()}},ShuffleIterator=class extends PrefetchIterator{constructor(upstream,windowSize,seed){super(upstream,windowSize);this.upstream=upstream,this.windowSize=windowSize,this.upstreamExhausted=!1,this.random=seedrandom2.alea(seed||util_exports.now().toString()),this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}randomInt(max6){return Math.floor(this.random()*max6)}chooseIndex(){return this.randomInt(this.buffer.length())}async serialNext(){for(this.upstreamExhausted||this.refill();!this.buffer.isEmpty();){let chosenIndex=this.chooseIndex(),result=await this.buffer.shuffleExcise(chosenIndex);if(result.done)this.upstreamExhausted=!0;else return this.refill(),result}return{value:null,done:!0}}};var Dataset=class{constructor(){this.size=null}batch(batchSize,smallLastBatch=!0){let base2=this;util_exports.assert(batchSize>0,()=>`batchSize needs to be positive, but it is - ${batchSize}`);let size;return this.size===Infinity||this.size==null?size=this.size:smallLastBatch?size=Math.ceil(this.size/batchSize):size=Math.floor(this.size/batchSize),datasetFromIteratorFn(async()=>(await base2.iterator()).columnMajorBatch(batchSize,smallLastBatch,deepBatchConcat),size)}concatenate(dataset){let base2=this,size;return this.size===Infinity||dataset.size===Infinity?size=Infinity:this.size!=null&&dataset.size!=null?size=this.size+dataset.size:size=null,datasetFromIteratorFn(async()=>(await base2.iterator()).concatenate(await dataset.iterator()),size)}filter(predicate){let base2=this,size;return this.size===Infinity?size=Infinity:size=null,datasetFromIteratorFn(async()=>(await base2.iterator()).filter(x=>tidy(()=>predicate(x))),size)}async forEachAsync(f){return(await this.iterator()).forEachAsync(f)}map(transform){let base2=this;return datasetFromIteratorFn(async()=>(await base2.iterator()).map(x=>tidy(()=>transform(x))),this.size)}mapAsync(transform){let base2=this;return datasetFromIteratorFn(async()=>(await base2.iterator()).mapAsync(transform),this.size)}prefetch(bufferSize){if(bufferSize==null)throw new RangeError("`Dataset.prefetch()` requires bufferSize to be specified.");let base2=this;return datasetFromIteratorFn(async()=>(await base2.iterator()).prefetch(bufferSize),this.size)}repeat(count2){let base2=this,size;return this.size!=null&&count2>0?size=this.size*count2:count2===0?size=0:this.size!=null&&(count2===void 0||count2<0)?size=Infinity:size=null,datasetFromIteratorFn(async()=>{let iteratorIterator=iteratorFromFunction(async()=>({value:await base2.iterator(),done:!1}));return iteratorFromConcatenated(iteratorIterator.take(count2))},size)}skip(count2){let base2=this,size;return this.size!=null&&count2>=0&&this.size>=count2?size=this.size-count2:this.size!=null&&(this.size(await base2.iterator()).skip(count2),size)}shuffle(bufferSize,seed,reshuffleEachIteration=!0){if(bufferSize==null||bufferSize<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)`);let base2=this,random=seedrandom3.alea(seed||util_exports.now().toString());return datasetFromIteratorFn(async()=>{let seed2=random.int32();return reshuffleEachIteration&&(seed2+=random.int32()),(await base2.iterator()).shuffle(bufferSize,seed2.toString())},this.size)}take(count2){let base2=this,size;return this.size!=null&&this.size>count2?size=count2:this.size!=null&&this.size<=count2?size=this.size:size=null,datasetFromIteratorFn(async()=>(await base2.iterator()).take(count2),size)}async toArray(){if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArray()}async toArrayForTest(){if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArrayForTest()}};Dataset.MAX_BUFFER_SIZE=1e4;function datasetFromIteratorFn(iteratorFn,size=null){return new class extends Dataset{constructor(){super(...arguments);this.size=size}async iterator(){return iteratorFn()}}}function array(items){return datasetFromIteratorFn(async()=>iteratorFromItems(items),items.length)}function zip(datasets){if(!isIterable2(datasets))throw new Error("The argument to zip() must be an object or array.");let size;if(Array.isArray(datasets))for(let i=0;i{let streams=await deepMapAndAwaitAll(datasets,d=>{if(d instanceof Dataset)return{value:d.iterator(),recurse:!1};if(isIterable2(d))return{value:null,recurse:!0};throw new Error("Leaves of the structure passed to zip() must be Datasets, not primitives.")});return iteratorFromZipped(streams,ZipMismatchMode.SHORTEST)},size)}function deepBatchConcat(rows){if(rows===null)return null;let exampleRow=rows[0];return canTensorify(exampleRow)?{value:batchConcat(rows),recurse:!1}:{value:null,recurse:!0}}function batchConcat(arrays){if(arrays.length===0)throw new Error("Can't make a batch of zero elements.");return arrays[0]instanceof Tensor?stack(arrays):tensor(arrays)}var TextLineDataset=class extends Dataset{constructor(input2){super();this.input=input2}async iterator(){return(await this.input.iterator()).decodeUTF8().split(` -`).map(line=>(line.endsWith("\r")&&(line=line.slice(0,-1)),line))}};var CODE_QUOTE='"',STATE_OUT=Symbol("out"),STATE_FIELD=Symbol("field"),STATE_QUOTE=Symbol("quote"),STATE_QUOTE_AFTER_QUOTE=Symbol("quoteafterquote"),STATE_WITHIN_QUOTE_IN_QUOTE=Symbol("quoteinquote"),CSVDataset=class extends Dataset{constructor(input2,csvConfig){super();this.input=input2,this.hasHeader=!0,this.fullColumnNames=null,this.columnNamesValidated=!1,this.columnConfigs=null,this.configuredColumnsOnly=!1,this.delimiter=",",this.delimWhitespace=!1,this.base=new TextLineDataset(input2),csvConfig||(csvConfig={}),this.hasHeader=csvConfig.hasHeader!==!1,this.fullColumnNames=csvConfig.columnNames,this.columnConfigs=csvConfig.columnConfigs,this.configuredColumnsOnly=csvConfig.configuredColumnsOnly,csvConfig.delimWhitespace?(util_exports.assert(csvConfig.delimiter==null,()=>"Delimiter should not be provided when delimWhitespace is true."),this.delimWhitespace=!0,this.delimiter=" "):this.delimiter=csvConfig.delimiter?csvConfig.delimiter:","}async columnNames(){return this.columnNamesValidated||await this.setColumnNames(),this.configuredColumnsOnly?Object.keys(this.columnConfigs):this.fullColumnNames}async setColumnNames(){let columnNamesFromFile=await this.maybeReadHeaderLine();if(!this.fullColumnNames&&!columnNamesFromFile)throw new Error("Column names must be provided if there is no header line.");this.fullColumnNames&&columnNamesFromFile&&util_exports.assert(columnNamesFromFile.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 ("+columnNamesFromFile.length.toString()+")."),this.fullColumnNames||(this.fullColumnNames=columnNamesFromFile);let counts=this.fullColumnNames.reduce((countAcc,name)=>(countAcc[name]=countAcc[name]+1||1,countAcc),{}),duplicateNames=Object.keys(counts).filter(name=>counts[name]>1);if(util_exports.assert(duplicateNames.length===0,()=>"Duplicate column names found: "+duplicateNames.toString()),this.columnConfigs){for(let key of Object.keys(this.columnConfigs))if(this.fullColumnNames.indexOf(key)===-1)throw new Error('The key "'+key+'" provided in columnConfigs does not match any of the column names ('+this.fullColumnNames.toString()+").")}this.columnNamesValidated=!0}async maybeReadHeaderLine(){if(this.hasHeader){let firstElement=await(await this.base.iterator()).next();if(firstElement.done)throw new Error("No data was found for CSV parsing.");let firstLine=firstElement.value;return this.parseRow(firstLine,!1)}else return null}async iterator(){this.columnNamesValidated||await this.setColumnNames();let lines=await this.base.iterator();return this.hasHeader&&(lines=lines.skip(1)),lines.map(x=>this.makeDataElement(x))}makeDataElement(line){let values=this.parseRow(line),features={},labels={};for(let i=0;i14||!Number.isInteger(fftSizeLog2))throw new Error(`Invalid fftSize: it must be a power of 2 between 2 to 4 and 2 to 14, but got ${this.fftSize}`);if(this.numFrames=microphoneConfig.numFramesPerSpectrogram||43,this.sampleRateHz=microphoneConfig.sampleRateHz,this.columnTruncateLength=microphoneConfig.columnTruncateLength||this.fftSize,this.audioTrackConstraints=microphoneConfig.audioTrackConstraints,this.smoothingTimeConstant=microphoneConfig.smoothingTimeConstant||0,this.includeSpectrogram=microphoneConfig.includeSpectrogram!==!1,this.includeWaveform=microphoneConfig.includeWaveform===!0,!this.includeSpectrogram&&!this.includeWaveform)throw new Error("Both includeSpectrogram and includeWaveform are false. At least one type of data should be returned.")}summary(){return"microphone"}static async create(microphoneConfig={}){if(env().get("IS_NODE"))throw new Error("microphone API is only supported in browser environment.");let microphoneIterator=new MicrophoneIterator(microphoneConfig);return await microphoneIterator.start(),microphoneIterator}async start(){try{this.stream=await navigator.mediaDevices.getUserMedia({audio:this.audioTrackConstraints==null?!0:this.audioTrackConstraints,video:!1})}catch(e){throw new Error(`Error thrown while initializing video stream: ${e.message}`)}if(!this.stream)throw new Error("Could not obtain audio from microphone.");let ctxConstructor=window.AudioContext||window.webkitAudioContext;if(this.audioContext=new ctxConstructor,!this.sampleRateHz)this.sampleRateHz=this.audioContext.sampleRate;else if(this.audioContext.sampleRate!==this.sampleRateHz)throw new Error(`Mismatch in sampling rate: Expected: ${this.sampleRateHz}; Actual: ${this.audioContext.sampleRate}`);let streamSource=this.audioContext.createMediaStreamSource(this.stream);this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=this.fftSize*2,this.analyser.smoothingTimeConstant=this.smoothingTimeConstant,streamSource.connect(this.analyser),this.freqData=new Float32Array(this.fftSize),this.timeData=new Float32Array(this.fftSize)}async next(){if(this.isClosed)return{value:null,done:!0};let spectrogramTensor,waveformTensor,audioDataQueue=await this.getAudioData();if(this.includeSpectrogram){let freqData=this.flattenQueue(audioDataQueue.freqDataQueue);spectrogramTensor=this.getTensorFromAudioDataArray(freqData,[this.numFrames,this.columnTruncateLength,1])}if(this.includeWaveform){let timeData=this.flattenQueue(audioDataQueue.timeDataQueue);waveformTensor=this.getTensorFromAudioDataArray(timeData,[this.numFrames*this.fftSize,1])}return{value:{spectrogram:spectrogramTensor,waveform:waveformTensor},done:!1}}async capture(){return(await this.next()).value}async getAudioData(){let freqDataQueue=[],timeDataQueue=[],currentFrames=0;return new Promise(resolve=>{let intervalID=setInterval(()=>{this.includeSpectrogram&&(this.analyser.getFloatFrequencyData(this.freqData),this.freqData[0]===-Infinity&&resolve({freqDataQueue,timeDataQueue}),freqDataQueue.push(this.freqData.slice(0,this.columnTruncateLength))),this.includeWaveform&&(this.analyser.getFloatTimeDomainData(this.timeData),timeDataQueue.push(this.timeData.slice())),++currentFrames===this.numFrames&&(clearInterval(intervalID),resolve({freqDataQueue,timeDataQueue}))},this.fftSize/this.sampleRateHz*1e3)})}stop(){this.isClosed||(this.isClosed=!0,this.analyser.disconnect(),this.audioContext.close(),this.stream!=null&&this.stream.getTracks().length>0&&this.stream.getTracks()[0].stop())}toArray(){throw new Error("Can not convert infinite audio stream to array.")}getSampleRate(){return this.sampleRateHz}flattenQueue(queue){let frameSize=queue[0].length,freqData=new Float32Array(queue.length*frameSize);return queue.forEach((data,i)=>freqData.set(data,i*frameSize)),freqData}getTensorFromAudioDataArray(freqData,shape){let vals=new Float32Array(util_exports.sizeFromShape(shape));return vals.set(freqData,vals.length-freqData.length),tensor(vals,shape)}};var WebcamIterator=class extends LazyIterator{constructor(webcamVideoElement,webcamConfig){super();if(this.webcamVideoElement=webcamVideoElement,this.webcamConfig=webcamConfig,this.isClosed=!0,this.resize=!1,this.needToResize())if(this.resize=!0,this.cropSize=[this.webcamConfig.resizeHeight,this.webcamConfig.resizeWidth],this.cropBoxInd=tensor1d([0],"int32"),this.webcamConfig.centerCrop){let widthCroppingRatio=this.webcamConfig.resizeWidth*1/this.webcamVideoElement.width,heightCroppingRatio=this.webcamConfig.resizeHeight*1/this.webcamVideoElement.height,widthCropStart=(1-widthCroppingRatio)/2,heightCropStart=(1-heightCroppingRatio)/2,widthCropEnd=widthCropStart+widthCroppingRatio,heightCropEnd=heightCroppingRatio+heightCropStart;this.cropBox=tensor2d([heightCropStart,widthCropStart,heightCropEnd,widthCropEnd],[1,4])}else this.cropBox=tensor2d([0,0,1,1],[1,4])}summary(){return"webcam"}static async create(webcamVideoElement,webcamConfig={}){if(env().get("IS_NODE"))throw new Error("tf.data.webcam is only supported in browser environment.");if(!webcamVideoElement){if(webcamVideoElement=document.createElement("video"),!webcamConfig.resizeWidth||!webcamConfig.resizeHeight)throw new Error("Please provide webcam video element, or resizeWidth and resizeHeight to create a hidden video element.");webcamVideoElement.width=webcamConfig.resizeWidth,webcamVideoElement.height=webcamConfig.resizeHeight}let webcamIterator=new WebcamIterator(webcamVideoElement,webcamConfig);return await webcamIterator.start(),webcamIterator}async start(){this.webcamConfig.facingMode&&util_exports.assert(this.webcamConfig.facingMode==="user"||this.webcamConfig.facingMode==="environment",()=>`Invalid webcam facing mode: ${this.webcamConfig.facingMode}. Please provide 'user' or 'environment'`);try{this.stream=await navigator.mediaDevices.getUserMedia({video:{deviceId:this.webcamConfig.deviceId,facingMode:this.webcamConfig.facingMode?this.webcamConfig.facingMode:"user",width:this.webcamVideoElement.width,height:this.webcamVideoElement.height}})}catch(e){throw e.message=`Error thrown while initializing video stream: ${e.message}`,e}if(!this.stream)throw new Error("Could not obtain video from webcam.");try{this.webcamVideoElement.srcObject=this.stream}catch(error){console.log(error),this.webcamVideoElement.src=window.URL.createObjectURL(this.stream)}return this.webcamVideoElement.play(),this.isClosed=!1,new Promise(resolve=>{this.webcamVideoElement.onloadedmetadata=()=>{resolve()}})}async next(){if(this.isClosed)return{value:null,done:!0};let img;try{img=browser_exports.fromPixels(this.webcamVideoElement)}catch(e){throw new Error(`Error thrown converting video to pixels: ${JSON.stringify(e)}`)}if(this.resize)try{return{value:this.cropAndResizeFrame(img),done:!1}}catch(e){throw new Error(`Error thrown cropping the video: ${e.message}`)}finally{img.dispose()}else return{value:img,done:!1}}needToResize(){return!!(this.webcamConfig.resizeWidth&&this.webcamConfig.resizeHeight&&(this.webcamVideoElement.width!==this.webcamConfig.resizeWidth||this.webcamVideoElement.height!==this.webcamConfig.resizeHeight))}cropAndResizeFrame(img){return tidy(()=>{let expandedImage=img.toFloat().expandDims(0),resizedImage;resizedImage=image.cropAndResize(expandedImage,this.cropBox,this.cropBoxInd,this.cropSize,"bilinear");let shape=resizedImage.shape;return resizedImage.reshape(shape.slice(1))})}async capture(){return(await this.next()).value}stop(){this.stream.getTracks().forEach(track=>track.stop());try{this.webcamVideoElement.srcObject=null}catch(error){console.log(error),this.webcamVideoElement.src=null}this.isClosed=!0}toArray(){throw new Error("Can not convert infinite video stream to array.")}};var DataSource=class{};var StringIterator=class extends LazyIterator{split(separator){return new SplitIterator(this,separator)}},SplitIterator=class extends StringIterator{constructor(upstream,separator){super();this.upstream=upstream,this.impl=new SplitIteratorImpl(upstream,separator)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},SplitIteratorImpl=class extends OneToManyIterator{constructor(upstream,separator){super();this.upstream=upstream,this.separator=separator,this.carryover=""}summary(){return`${this.upstream.summary()} -> Split('${this.separator}')`}async pump(){let chunkResult=await this.upstream.next();if(chunkResult.done)return this.carryover===""?!1:(this.outputQueue.push(this.carryover),this.carryover="",!0);let lines=chunkResult.value.split(this.separator);lines[0]=this.carryover+lines[0];for(let line of lines.slice(0,-1))this.outputQueue.push(line);return this.carryover=lines[lines.length-1],!0}};var ByteChunkIterator=class extends LazyIterator{decodeUTF8(){return new Utf8Iterator(this)}},Utf8Iterator=class extends StringIterator{constructor(upstream){super();this.upstream=upstream,this.impl=new Utf8IteratorImpl(upstream)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},Utf8IteratorImpl=class extends OneToManyIterator{constructor(upstream){super();if(this.upstream=upstream,env().get("IS_BROWSER"))this.decoder=new TextDecoder("utf-8");else{let{StringDecoder}=require_string_decoder();this.decoder=new StringDecoder("utf8")}}summary(){return`${this.upstream.summary()} -> Utf8`}async pump(){let chunkResult=await this.upstream.next(),chunk;if(chunkResult.done)return!1;chunk=chunkResult.value;let text;return env().get("IS_BROWSER")?text=this.decoder.decode(chunk,{stream:!0}):text=this.decoder.write(Buffer.from(chunk.buffer)),this.outputQueue.push(text),!0}};var FileChunkIterator=class extends ByteChunkIterator{constructor(file,options={}){super();this.file=file,this.options=options,util_exports.assert(file instanceof Uint8Array||(env().get("IS_BROWSER")?file instanceof File||file instanceof Blob:!1),()=>"FileChunkIterator only supports File, Blob and Uint8Array right now."),this.offset=options.offset||0,this.chunkSize=options.chunkSize||1024*1024}summary(){return`FileChunks ${this.file}`}async next(){return this.offset>=(this.file instanceof Uint8Array?this.file.byteLength:this.file.size)?{value:null,done:!0}:{value:await new Promise((resolve,reject)=>{let end=this.offset+this.chunkSize;if(this.file instanceof Uint8Array)resolve(new Uint8Array(this.file.slice(this.offset,end)));else{let fileReader=new FileReader;fileReader.onload=event=>{let data=fileReader.result;if(data instanceof ArrayBuffer&&(data=new Uint8Array(data)),!(data instanceof Uint8Array))return reject(new TypeError("FileReader returned unknown type."));resolve(data)},fileReader.onabort=event=>reject(new Error("Aborted")),fileReader.onerror=event=>reject(new Error(event.type));let slice5=this.file.slice(this.offset,end);fileReader.readAsArrayBuffer(slice5)}this.offset=end}),done:!1}}};async function urlChunkIterator(url,options={}){let urlString,requestInit;typeof url=="string"?urlString=url:(urlString=url.url,requestInit=getRequestInitFromRequest(url));let response=await util_exports.fetch(urlString,requestInit);if(response.ok){let uint8Array=new Uint8Array(await response.arrayBuffer());return new FileChunkIterator(uint8Array,options)}else throw new Error(response.statusText)}var getRequestInitFromRequest=request=>({method:request.method,headers:request.headers,body:request.body,mode:request.mode,credentials:request.credentials,cache:request.cache,redirect:request.redirect,referrer:request.referrer,integrity:request.integrity});function isLocalPath(source){return typeof source=="string"&&source.substr(0,7)==="file://"}var FileDataSource=class extends DataSource{constructor(input2,options={}){super();this.input=input2,this.options=options}async iterator(){if(isLocalPath(this.input)&&env().get("IS_NODE")){let fs=require("fs");this.input=fs.readFileSync(this.input.substr(7))}return new FileChunkIterator(this.input,this.options)}};var URLDataSource=class extends DataSource{constructor(url,fileOptions={}){super();this.url=url,this.fileOptions=fileOptions}async iterator(){return isLocalPath(this.url)?new FileDataSource(this.url,this.fileOptions).iterator():urlChunkIterator(this.url,this.fileOptions)}};function csv(source,csvConfig={}){return new CSVDataset(new URLDataSource(source),csvConfig)}function func(f){let iter=iteratorFromFunction(f);return datasetFromIteratorFn(async()=>iter)}function generator(generator2){return datasetFromIteratorFn(async()=>{let gen=await generator2();return iteratorFromFunction(()=>gen.next())})}async function webcam(webcamVideoElement,webcamConfig){return WebcamIterator.create(webcamVideoElement,webcamConfig)}async function microphone(microphoneConfig){return MicrophoneIterator.create(microphoneConfig)}var version4="2.8.3";function assertNotComplex(tensor2,opName){Array.isArray(tensor2)||(tensor2=[tensor2]),tensor2.forEach(t=>{t!=null&&util_exports.assert(t.dtype!=="complex64",()=>`${opName} does not support complex64 tensors in the CPU backend.`)})}var whereImpl2=kernel_impls_exports.whereImpl,MathBackendCPU=class extends KernelBackend{constructor(){super();this.blockSize=48,this.firstUse=!0,this.data=new DataStorage(this,engine())}write(values,shape,dtype){this.firstUse&&(this.firstUse=!1,env().get("IS_NODE")&&backend_util_exports.warn(` + ${o}, and tensor's shape is: ${r.shape}`);let s=o===0?0:r.size/o,a=V(()=>{let l=[];r=z(r,[1,o,s]);for(let u=0;u{switch(r.op){case"If":case"StatelessIf":{let o=C("thenBranch",r,e,t),n=C("elseBranch",r,e,t),s=C("cond",r,e,t),a=C("args",r,e,t);return(await s.data())[0]?t.functionMap[o].executeFunctionAsync(a,t.tensorArrayMap,t.tensorListMap):t.functionMap[n].executeFunctionAsync(a,t.tensorArrayMap,t.tensorListMap)}case"While":case"StatelessWhile":{let o=C("body",r,e,t),n=C("cond",r,e,t),s=C("args",r,e,t),a=await t.functionMap[n].executeFunctionAsync(s,t.tensorArrayMap,t.tensorListMap),i=s.map(c=>c.id),l=await a[0].data();a.forEach(c=>{!c.kept&&i.indexOf(c.id)===-1&&c.dispose()});let u=s;for(;l[0];){let c=u;u=await t.functionMap[o].executeFunctionAsync(u,t.tensorArrayMap,t.tensorListMap);let p=u.map(f=>f.id);c.forEach(f=>{!f.kept&&i.indexOf(f.id)===-1&&p.indexOf(f.id)===-1&&f.dispose()});let m=await t.functionMap[n].executeFunctionAsync(u,t.tensorArrayMap,t.tensorListMap);l=await m[0].data(),m.forEach(f=>{!f.kept&&i.indexOf(f.id)===-1&&p.indexOf(f.id)===-1&&f.dispose()})}return u}case"LoopCond":{let o=C("pred",r,e,t);return[Ms(o)]}case"Switch":{let o=C("pred",r,e,t),n=C("data",r,e,t);return n.kept||(n=Ms(n)),(await o.data())[0]?[void 0,n]:[n,void 0]}case"Merge":{let o=r.inputNames.find(n=>gr(n,e,t)!==void 0);if(o){let n=gr(o,e,t);return[Ms(n)]}return}case"Enter":{let o=C("frameName",r,e,t),n=C("tensor",r,e,t);return t.enterFrame(o),[Ms(n)]}case"Exit":{let o=C("tensor",r,e,t);return t.exitFrame(),[Ms(o)]}case"NextIteration":{let o=C("tensor",r,e,t);return t.nextIteration(),[Ms(o)]}case"TensorArrayV3":{let o=C("size",r,e,t),n=C("dtype",r,e,t),s=C("elementShape",r,e,t),a=C("dynamicSize",r,e,t),i=C("clearAfterRead",r,e,t),l=C("identicalElementShapes",r,e,t),u=C("name",r,e,t),c=new Dv(u,n,o,s,l,a,i);return t.addTensorArray(c),[c.idTensor,ce(1)]}case"TensorArrayWriteV3":{let o=C("tensorArrayId",r,e,t),n=C("index",r,e,t),s=C("tensor",r,e,t),a=t.getTensorArray(o.id);return a.write(n,s),[a.idTensor]}case"TensorArrayReadV3":{let o=C("tensorArrayId",r,e,t),n=C("index",r,e,t);return[t.getTensorArray(o.id).read(n)]}case"TensorArrayGatherV3":{let o=C("tensorArrayId",r,e,t),n=C("indices",r,e,t),s=C("dtype",r,e,t);return[t.getTensorArray(o.id).gather(n,s)]}case"TensorArrayScatterV3":{let o=C("tensorArrayId",r,e,t),n=C("indices",r,e,t),s=C("tensor",r,e,t),a=t.getTensorArray(o.id);return a.scatter(n,s),[a.idTensor]}case"TensorArrayConcatV3":{let o=C("tensorArrayId",r,e,t),n=t.getTensorArray(o.id),s=C("dtype",r,e,t);return[n.concat(s)]}case"TensorArraySplitV3":{let o=C("tensorArrayId",r,e,t),n=C("tensor",r,e,t),s=C("lengths",r,e,t),a=t.getTensorArray(o.id);return a.split(s,n),[a.idTensor]}case"TensorArraySizeV3":{let o=C("tensorArrayId",r,e,t),n=t.getTensorArray(o.id);return[ce(n.size(),"int32")]}case"TensorArrayCloseV3":{let o=C("tensorArrayId",r,e,t),n=t.getTensorArray(o.id);return n.clearAndClose(),[n.idTensor]}case"TensorListSetItem":{let o=C("tensorListId",r,e,t),n=C("index",r,e,t),s=C("tensor",r,e,t),a=t.getTensorList(o.id);return a.setItem(n,s),[a.idTensor]}case"TensorListGetItem":{let o=C("tensorListId",r,e,t),n=C("index",r,e,t),s=C("elementShape",r,e,t),a=C("elementDType",r,e,t);return[t.getTensorList(o.id).getItem(n,s,a)]}case"TensorListScatterV2":case"TensorListScatter":{let o=C("indices",r,e,t),n=C("tensor",r,e,t),s=C("elementShape",r,e,t),a=C("numElements",r,e,t),i=eE(n,o,s,a);return t.addTensorList(i),[i.idTensor]}case"TensorListReserve":case"EmptyTensorList":{let o=C("elementShape",r,e,t),n=C("elementDType",r,e,t),s;r.op==="TensorListReserve"?s="numElements":s="maxNumElements";let a=C(s,r,e,t),i=Q1(o,n,a);return t.addTensorList(i),[i.idTensor]}case"TensorListGather":{let o=C("tensorListId",r,e,t),n=C("indices",r,e,t),s=C("elementShape",r,e,t),a=C("elementDType",r,e,t);return[t.getTensorList(o.id).gather(n,a,s)]}case"TensorListStack":{let o=C("tensorListId",r,e,t),n=C("elementShape",r,e,t),s=C("elementDType",r,e,t),a=C("numElements",r,e,t);return[t.getTensorList(o.id).stack(n,s,a)]}case"TensorListFromTensor":{let o=C("tensor",r,e,t),n=C("elementShape",r,e,t),s=C("elementDType",r,e,t),a=J1(o,n,s);return t.addTensorList(a),[a.idTensor]}case"TensorListConcat":{let o=C("tensorListId",r,e,t),n=t.getTensorList(o.id),s=C("dtype",r,e,t),a=C("elementShape",r,e,t);return[n.concat(s,a)]}case"TensorListPushBack":{let o=C("tensorListId",r,e,t),n=C("tensor",r,e,t),s=t.getTensorList(o.id);return s.pushBack(n),[s.idTensor]}case"TensorListPopBack":{let o=C("tensorListId",r,e,t),n=C("elementShape",r,e,t),s=C("elementDType",r,e,t);return[t.getTensorList(o.id).popBack(n,s)]}case"TensorListSplit":{let o=C("tensor",r,e,t),n=C("elementShape",r,e,t),s=C("lengths",r,e,t),a=tE(o,s,n);return t.addTensorList(a),[a.idTensor]}default:throw TypeError(`Node type ${r.op} is not implemented`)}};function oE(r,e,t){let[o,n]=C("fusedOps",r,e,t),s=o==="biasadd",a=n==="prelu",i=o==="fusedbatchnorm",l=C("numArgs",r,e,t);if(s){if(a&&l!==2)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!a&&l!==1)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd must have one extra argument: bias.")}if(i)throw new Error("FusedConv2d and DepthwiseConv2d with FusedBatchNorm is not supported.");let u=C("strides",r,e,t),c=Td(r,e,t),p=C("dataFormat",r,e,t).toUpperCase(),m=C("dilations",r,e,t),[f,d]=C("args",r,e,t),h=C("leakyreluAlpha",r,e,t);return{stride:u,pad:c,dataFormat:p,dilations:m,biasArg:f,preluArg:d,activationFunc:n,leakyreluAlpha:h}}var nE=(r,e,t)=>{switch(r.op){case"Conv1D":{let o=C("stride",r,e,t),n=C("pad",r,e,t),s=C("dataFormat",r,e,t).toUpperCase(),a=C("dilation",r,e,t);return[Nu(C("x",r,e,t),C("filter",r,e,t),o,n,s,a)]}case"Conv2D":{let o=C("strides",r,e,t),n=Td(r,e,t),s=C("dataFormat",r,e,t).toUpperCase(),a=C("dilations",r,e,t);return[Xr(C("x",r,e,t),C("filter",r,e,t),[o[1],o[2]],n,s,[a[1],a[2]])]}case"_FusedConv2D":{let{stride:o,pad:n,dataFormat:s,dilations:a,biasArg:i,preluArg:l,activationFunc:u,leakyreluAlpha:c}=oE(r,e,t);return[Vn.conv2d({x:C("x",r,e,t),filter:C("filter",r,e,t),strides:[o[1],o[2]],pad:n,dataFormat:s,dilations:[a[1],a[2]],bias:i,activation:u,preluActivationWeights:l,leakyreluAlpha:c})]}case"FusedDepthwiseConv2dNative":{let{stride:o,pad:n,dataFormat:s,dilations:a,biasArg:i,preluArg:l,activationFunc:u,leakyreluAlpha:c}=oE(r,e,t);return[Vn.depthwiseConv2d({x:C("x",r,e,t),filter:C("filter",r,e,t),strides:[o[1],o[2]],pad:n,dataFormat:s,dilations:[a[1],a[2]],bias:i,activation:u,preluActivationWeights:l,leakyreluAlpha:c})]}case"Conv2DBackpropInput":case"Conv2dTranspose":{let o=C("outputShape",r,e,t),n=C("strides",r,e,t),s=Td(r,e,t);return[Su(C("x",r,e,t),C("filter",r,e,t),o,[n[1],n[2]],s)]}case"DepthwiseConv2dNative":case"DepthwiseConv2d":{let o=C("strides",r,e,t),n=Td(r,e,t),s=C("dilations",r,e,t),a=C("dataFormat",r,e,t).toUpperCase();return[Lo(C("input",r,e,t),C("filter",r,e,t),[o[1],o[2]],n,a,[s[1],s[2]])]}case"Conv3D":{let o=C("strides",r,e,t),n=C("pad",r,e,t),s=C("dataFormat",r,e,t).toUpperCase(),a=C("dilations",r,e,t);return[Dm(C("x",r,e,t),C("filter",r,e,t),[o[1],o[2],o[3]],n,s,[a[1],a[2],a[3]])]}case"AvgPool":{let o=C("strides",r,e,t),n=C("pad",r,e,t),s=C("kernelSize",r,e,t);return[ka(C("x",r,e,t),[s[1],s[2]],[o[1],o[2]],n)]}case"MaxPool":{let o=C("strides",r,e,t),n=C("pad",r,e,t),s=C("kernelSize",r,e,t);return[Aa(C("x",r,e,t),[s[1],s[2]],[o[1],o[2]],n)]}case"MaxPoolWithArgmax":{let o=C("strides",r,e,t),n=C("pad",r,e,t),s=C("kernelSize",r,e,t),a=C("includeBatchInIndex",r,e,t),{result:i,indexes:l}=v_(C("x",r,e,t),[s[1],s[2]],[o[1],o[2]],n,a);return[i,l]}case"AvgPool3D":{let o=C("strides",r,e,t),n=C("pad",r,e,t),s=C("kernelSize",r,e,t);return[Em(C("x",r,e,t),[s[1],s[2],s[3]],[o[1],o[2],o[3]],n)]}case"MaxPool3D":{let o=C("strides",r,e,t),n=C("pad",r,e,t),s=C("kernelSize",r,e,t);return[Bm(C("x",r,e,t),[s[1],s[2],s[3]],[o[1],o[2],o[3]],n)]}case"Dilation2D":{let o=C("strides",r,e,t),n=C("pad",r,e,t),s=C("dilations",r,e,t),a=o[1],i=o[2],l=s[1],u=s[2];return[Rm(C("x",r,e,t),C("filter",r,e,t),[a,i],n,[l,u],"NHWC")]}default:throw TypeError(`Node type ${r.op} is not implemented`)}};var sE=(r,e,t)=>{switch(r.op){case"Fill":{let o=C("shape",r,e,t),n=C("dtype",r,e,t),s=C("value",r,e,t);return[Na(o,s,n)]}case"LinSpace":{let o=C("start",r,e,t),n=C("stop",r,e,t),s=C("num",r,e,t);return[g_(o,n,s)]}case"Multinomial":{let o=C("logits",r,e,t),n=C("numSamples",r,e,t),s=C("seed",r,e,t);return[k_(o,n,s)]}case"OneHot":{let o=C("indices",r,e,t),n=C("depth",r,e,t),s=C("onValue",r,e,t),a=C("offValue",r,e,t);return[ks(o,n,s,a)]}case"Ones":return[Nr(C("shape",r,e,t),C("dtype",r,e,t))];case"OnesLike":return[rr(C("x",r,e,t))];case"RandomUniform":return[Ts(C("shape",r,e,t),C("minval",r,e,t),C("maxval",r,e,t),C("dtype",r,e,t))];case"Range":{let o=C("start",r,e,t),n=C("stop",r,e,t),s=C("step",r,e,t);return[Jc(o,n,s,C("dtype",r,e,t))]}case"TruncatedNormal":{let o=C("shape",r,e,t),n=C("mean",r,e,t),s=C("stdDev",r,e,t),a=C("seed",r,e,t);return[Gu(o,n,s,C("dtype",r,e,t),a)]}case"Zeros":return[pt(C("shape",r,e,t),C("dtype",r,e,t))];case"ZerosLike":return[Ne(C("x",r,e,t))];default:throw TypeError(`Node type ${r.op} is not implemented`)}};function $v(r,e,t){let o=C("boxes",r,e,t),n=C("scores",r,e,t),s=C("maxOutputSize",r,e,t),a=C("iouThreshold",r,e,t),i=C("scoreThreshold",r,e,t),l=C("softNmsSigma",r,e,t);return{boxes:o,scores:n,maxOutputSize:s,iouThreshold:a,scoreThreshold:i,softNmsSigma:l}}var iE=async(r,e,t)=>{switch(r.op){case"NonMaxSuppressionV5":{let{boxes:o,scores:n,maxOutputSize:s,iouThreshold:a,scoreThreshold:i,softNmsSigma:l}=$v(r,e,t),u=await As.nonMaxSuppressionWithScoreAsync(o,n,s,a,i,l);return[u.selectedIndices,u.selectedScores]}case"NonMaxSuppressionV4":{let{boxes:o,scores:n,maxOutputSize:s,iouThreshold:a,scoreThreshold:i}=$v(r,e,t),l=C("padToMaxOutputSize",r,e,t),u=await As.nonMaxSuppressionPaddedAsync(o,n,s,a,i,l);return[u.selectedIndices,u.validOutputs]}case"NonMaxSuppressionV3":case"NonMaxSuppressionV2":{let{boxes:o,scores:n,maxOutputSize:s,iouThreshold:a,scoreThreshold:i}=$v(r,e,t);return[await As.nonMaxSuppressionAsync(o,n,s,a,i)]}case"Where":{let o=ne(C("condition",r,e,t),"bool"),n=[await Qm(o)];return o.dispose(),n}case"ListDiff":return R_(C("x",r,e,t),C("y",r,e,t));default:throw TypeError(`Node type ${r.op} is not implemented`)}};var aE=(r,e,t)=>{switch(r.op){case"TopKV2":{let o=C("x",r,e,t),n=C("k",r,e,t),s=C("sorted",r,e,t),a=Zm(o,n,s);return[a.values,a.indices]}case"Unique":{let o=C("x",r,e,t),n=ep(o);return[n.values,n.indices]}case"UniqueV2":{let o=C("x",r,e,t),n=C("axis",r,e,t),s=ep(o,n);return[s.values,s.indices]}default:throw TypeError(`Node type ${r.op} is not implemented`)}};var lE=(r,e,t)=>{switch(r.op){case"Const":return e[r.name];case"PlaceholderWithDefault":let o=C("default",r,e,t);return[gr(r.name,e,t)||o];case"Placeholder":return[gr(r.name,e,t)];case"Identity":case"StopGradient":case"FakeQuantWithMinMaxVars":{let u=C("x",r,e,t);return[Ms(u)]}case"IdentityN":return C("x",r,e,t).map(u=>Ms(u));case"Snapshot":let n=C("x",r,e,t);return[Ms(n)];case"Shape":return[Gt(C("x",r,e,t).shape,"int32")];case"ShapeN":return C("x",r,e,t).map(u=>Gt(u.shape));case"Size":return[ce(C("x",r,e,t).size,"int32")];case"Rank":return[ce(C("x",r,e,t).rank,"int32")];case"NoOp":return[ce(1)];case"Print":let s=C("x",r,e,t),a=C("data",r,e,t),i=C("message",r,e,t),l=C("summarize",r,e,t);console.warn("The graph has a tf.print() operation,usually used for debugging, which slows down performance."),console.log(i);for(let u=0;ue.dispose()),this.tensorMap.clear(),this.handle.dispose()}size(){return this.tensorMap.size}async import(e,t){this.checkKeyAndValueTensor(e,t);let o=await e.data();return this.tensorMap.forEach(n=>n.dispose()),this.tensorMap.clear(),V(()=>{let n=cr(t),s=o.length,a=n.length;x.assert(s===a,()=>`The number of elements doesn't match, keys has ${s} elements, the values has ${a} elements.`);for(let i=0;i{let n=[];for(let s=0;s{switch(r.op){case"HashTable":case"HashTableV2":{let n=C("keyDType",r,e,t),s=C("valueDType",r,e,t),a=new Rv(n,s);return o.addHashTable(r.name,a),[a.handle]}case"LookupTableImport":case"LookupTableImportV2":{let n=C("tableHandle",r,e,t,o),s=C("keys",r,e,t),a=C("values",r,e,t);return[await o.getHashTableById(n.id).import(s,a)]}case"LookupTableFind":case"LookupTableFindV2":{let n=C("tableHandle",r,e,t,o),s=C("keys",r,e,t),a=C("defaultValue",r,e,t);return[await o.getHashTableById(n.id).find(s,a)]}default:throw TypeError(`Node type ${r.op} is not implemented`)}};var cE=(r,e,t)=>{switch(r.op){case"ResizeBilinear":{let o=C("images",r,e,t),n=C("size",r,e,t),s=C("alignCorners",r,e,t),a=C("halfPixelCenters",r,e,t);return[As.resizeBilinear(o,[n[0],n[1]],s,a)]}case"ResizeNearestNeighbor":{let o=C("images",r,e,t),n=C("size",r,e,t),s=C("alignCorners",r,e,t),a=C("halfPixelCenters",r,e,t);return[As.resizeNearestNeighbor(o,[n[0],n[1]],s,a)]}case"CropAndResize":{let o=C("image",r,e,t),n=C("boxes",r,e,t),s=C("boxInd",r,e,t),a=C("cropSize",r,e,t),i=C("method",r,e,t),l=C("extrapolationValue",r,e,t);return[As.cropAndResize(o,n,s,a,i,l)]}default:throw TypeError(`Node type ${r.op} is not implemented`)}};var pE=(r,e,t)=>{switch(r.op){case"Equal":return[Yr(C("a",r,e,t),C("b",r,e,t))];case"NotEqual":return[vo(C("a",r,e,t),C("b",r,e,t))];case"Greater":return[Xt(C("a",r,e,t),C("b",r,e,t))];case"GreaterEqual":return[Or(C("a",r,e,t),C("b",r,e,t))];case"Less":return[Ta(C("a",r,e,t),C("b",r,e,t))];case"LessEqual":return[no(C("a",r,e,t),C("b",r,e,t))];case"LogicalAnd":return[dr(C("a",r,e,t),C("b",r,e,t))];case"LogicalNot":return[Ea(C("a",r,e,t))];case"LogicalOr":return[Ru(C("a",r,e,t),C("b",r,e,t))];case"Select":case"SelectV2":return[$t(C("condition",r,e,t),C("a",r,e,t),C("b",r,e,t))];default:throw TypeError(`Node type ${r.op} is not implemented`)}};var mE=(r,e,t)=>{switch(r.op){case"BatchMatMul":case"BatchMatMulV2":case"MatMul":return[je(C("a",r,e,t),C("b",r,e,t),C("transposeA",r,e,t),C("transposeB",r,e,t))];case"Transpose":return[qe(C("x",r,e,t),C("perm",r,e,t))];case"_FusedMatMul":let[o,n]=C("fusedOps",r,e,t),s=o==="biasadd",a=n==="prelu",i=C("numArgs",r,e,t),l=C("leakyreluAlpha",r,e,t);if(s){if(a&&i!==2)throw new Error("Fused MatMul with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!a&&i!==1)throw new Error("Fused MatMul with BiasAdd must have one extra argument: bias.")}let[u,c]=C("args",r,e,t);return[Vn.matMul({a:C("a",r,e,t),b:C("b",r,e,t),transposeA:C("transposeA",r,e,t),transposeB:C("transposeB",r,e,t),bias:u,activation:n,preluActivationWeights:c,leakyreluAlpha:l})];default:throw TypeError(`Node type ${r.op} is not implemented`)}};var fE=(r,e,t)=>{switch(r.op){case"FusedBatchNorm":case"FusedBatchNormV2":return[Ln(C("x",r,e,t),C("mean",r,e,t),C("variance",r,e,t),C("offset",r,e,t),C("scale",r,e,t),C("epsilon",r,e,t))];case"FusedBatchNormV3":return[Ln(C("x",r,e,t),C("mean",r,e,t),C("variance",r,e,t),C("offset",r,e,t),C("scale",r,e,t),C("epsilon",r,e,t))];case"LRN":return[Mm(C("x",r,e,t),C("radius",r,e,t),C("bias",r,e,t),C("alpha",r,e,t),C("beta",r,e,t))];case"Softmax":return[Ra(C("x",r,e,t))];case"LogSoftmax":return[$u(C("x",r,e,t))];case"SparseToDense":return[ef(C("sparseIndices",r,e,t),C("outputShape",r,e,t),C("sparseValues",r,e,t),C("defaultValue",r,e,t))];default:throw TypeError(`Node type ${r.op} is not implemented`)}};var dE=(r,e,t)=>{switch(r.op){case"Max":{let a=C("axis",r,e,t),i=C("keepDims",r,e,t);return[lr(C("x",r,e,t),a,i)]}case"Mean":{let a=C("axis",r,e,t),i=C("keepDims",r,e,t);return[bt(C("x",r,e,t),a,i)]}case"Min":{let a=C("axis",r,e,t),i=C("keepDims",r,e,t);return[Mi(C("x",r,e,t),a,i)]}case"Sum":{let a=C("axis",r,e,t),i=C("keepDims",r,e,t);return[be(C("x",r,e,t),a,i)]}case"All":{let a=C("axis",r,e,t),i=C("keepDims",r,e,t);return[ku(C("x",r,e,t),a,i)]}case"Any":{let a=C("axis",r,e,t),i=C("keepDims",r,e,t);return[il(C("x",r,e,t),a,i)]}case"ArgMax":{let a=C("axis",r,e,t);return[al(C("x",r,e,t),a)]}case"ArgMin":{let a=C("axis",r,e,t);return[km(C("x",r,e,t),a)]}case"Prod":{let a=C("axis",r,e,t),i=C("keepDims",r,e,t);return[Ou(C("x",r,e,t),a,i)]}case"Cumsum":{let a=C("axis",r,e,t),i=C("exclusive",r,e,t),l=C("reverse",r,e,t);return[Eu(C("x",r,e,t),a,i,l)]}case"Bincount":let o=C("x",r,e,t),n=C("weights",r,e,t),s=C("size",r,e,t);return[i_(o,n,s)];case"DenseBincount":{let a=C("x",r,e,t),i=C("weights",r,e,t),l=C("size",r,e,t),u=C("binaryOutput",r,e,t);return[p_(a,i,l,u)]}default:throw TypeError(`Node type ${r.op} is not implemented`)}};var hE=(r,e,t)=>{switch(r.op){case"ConcatV2":case"Concat":{let o=C("n",r,e,t),n=C("axis",r,e,t),s=C("tensors",r,e,t);return s=s.slice(0,o),[Je(s,n)]}case"Gather":{let o=C("x",r,e,t),n=C("indices",r,e,t);return[zn(o,ne(n,"int32"),0)]}case"GatherV2":{let o=C("axis",r,e,t),n=C("batchDims",r,e,t),s=C("x",r,e,t),a=C("indices",r,e,t);return[zn(s,ne(a,"int32"),o,n)]}case"Reverse":{let o=C("dims",r,e,t),n=[];for(let a=0;a{let o=C("axis",r,e,t),n=C("tensors",r,e,t),s=n[0].shape,a=ko(n[0]).shape,i=n.map(l=>{let u=x.arraysEqual(l.shape,s);if(!u&&!x.arraysEqual(ko(l).shape,a))throw new Error("the input tensors shape does not match");return u?l:z(l,s)});return[Wt(i,o)]});case"Unpack":{let o=C("axis",r,e,t),n=C("tensor",r,e,t);return cr(n,o)}case"Tile":{let o=C("reps",r,e,t);return[zo(C("x",r,e,t),o)]}case"Split":case"SplitV":{let o=C("axis",r,e,t),n=C("numOrSizeSplits",r,e,t),s=C("x",r,e,t);return ur(s,n,o)}case"ScatterNd":{let o=C("indices",r,e,t),n=C("values",r,e,t),s=C("shape",r,e,t);return[Z_(o,n,s)]}case"GatherNd":{let o=C("x",r,e,t),n=C("indices",r,e,t);return[J_(o,n)]}case"SparseToDense":{let o=C("sparseIndices",r,e,t),n=C("outputShape",r,e,t),s=C("sparseValues",r,e,t),a=C("defaultValue",r,e,t);return[ef(o,s,n,s.dtype===a.dtype?a:ne(a,s.dtype))]}default:throw TypeError(`Node type ${r.op} is not implemented`)}};var gE=(r,e,t)=>{switch(r.op){case"FFT":return[Fa(C("x",r,e,t))];case"IFFT":return[Li(C("x",r,e,t))];case"RFFT":return[Oa(C("x",r,e,t))];case"IRFFT":return[Wu(C("x",r,e,t))];default:throw TypeError(`Node type ${r.op} is not implemented`)}};var xE=(r,e,t)=>{switch(r.op){case"Cast":return[ne(C("x",r,e,t),C("dtype",r,e,t))];case"ExpandDims":{let o=C("axis",r,e,t);return[br(C("x",r,e,t),o)]}case"Squeeze":{let o=C("axis",r,e,t);return[ko(C("x",r,e,t),o)]}case"Reshape":return[z(C("x",r,e,t),C("shape",r,e,t))];case"MirrorPad":return[Vm(C("x",r,e,t),C("padding",r,e,t),C("mode",r,e,t))];case"PadV2":case"Pad":return[Pr(C("x",r,e,t),C("padding",r,e,t),C("constantValue",r,e,t))];case"SpaceToBatchND":{let o=C("blockShape",r,e,t),n=C("paddings",r,e,t);return[Da(C("x",r,e,t),o,n)]}case"BatchToSpaceND":{let o=C("blockShape",r,e,t),n=C("crops",r,e,t);return[Ca(C("x",r,e,t),o,n)]}case"DepthToSpace":{let o=C("blockSize",r,e,t),n=C("dataFormat",r,e,t).toUpperCase();return[$m(C("x",r,e,t),o,n)]}case"BroadcastTo":return[ll(C("x",r,e,t),C("shape",r,e,t))];default:throw TypeError(`Node type ${r.op} is not implemented`)}};function Fv(r,e,t,o){let n=((s,a,i)=>{switch(s.category){case"arithmetic":return V(()=>Y1(s,a,i));case"basic_math":return V(()=>Z1(s,a,i));case"control":return rE(s,a,i);case"convolution":return V(()=>nE(s,a,i));case"creation":return V(()=>sE(s,a,i));case"dynamic":return iE(s,a,i);case"evaluation":return V(()=>aE(s,a,i));case"image":return V(()=>cE(s,a,i));case"graph":return V(()=>lE(s,a,i));case"logical":return V(()=>pE(s,a,i));case"matrices":return V(()=>mE(s,a,i));case"normalization":return V(()=>fE(s,a,i));case"reduction":return V(()=>dE(s,a,i));case"slice_join":return V(()=>hE(s,a,i));case"spectral":return V(()=>gE(s,a,i));case"transformation":return V(()=>xE(s,a,i));case"hash_table":return uE(s,a,i,o);case"custom":let l=Jg(s.op);if(l&&l.customExecutor)return l.customExecutor(new Av(s,a,i));throw TypeError(`Custom op ${s.op} is not registered.`);default:throw TypeError(`Unknown op '${s.op}'. File an issue at https://github.com/tensorflow/tfjs/issues so we can add it, or register a custom execution with tf.registerOp()`)}})(r,e,t);return x.isPromise(n)?n.then(s=>[].concat(s)):[].concat(n)}var px=class{constructor(e={},t={},o={},n={}){this.weightMap=e,this.tensorArrayMap=t,this.tensorListMap=o,this.functionMap=n,this.rootContext={id:0,frameName:"",iterationId:0},this.contexts=[this.rootContext],this.lastId=0,this.generateCurrentContextIds()}newFrame(e,t){return{id:e,frameName:t,iterationId:0}}set currentContext(e){this.contexts!==e&&(this.contexts=e,this.generateCurrentContextIds())}get currentContext(){return this.contexts}get currentContextId(){return this._currentContextIds[0]}get currentContextIds(){return this._currentContextIds}generateCurrentContextIds(){let e=[];for(let t=0;tt.id===0&&t.iterationId===0?"":`${t.frameName}-${t.iterationId}`).join("/"):""}enterFrame(e){this.contexts&&(this.lastId++,this.contexts=this.contexts.slice(),this.contexts.push(this.newFrame(this.lastId,e)),this._currentContextIds.unshift(this.contextIdforContexts(this.contexts)))}exitFrame(){if(this.contexts&&this.contexts.length>1)this.contexts=this.contexts.slice(),this.contexts.splice(-1),this.currentContextIds.shift();else throw new Error("Cannot exit frame, the context is empty")}nextIteration(){if(this.contexts&&this.contexts.length>0){this.contexts=this.contexts.slice(),this.lastId++;let e=Object.assign({},this.contexts[this.contexts.length-1]);e.iterationId+=1,e.id=this.lastId,this.contexts.splice(-1,1,e),this._currentContextIds.splice(0,1,this.contextIdforContexts(this.contexts))}else throw new Error("Cannot increase frame iteration, the context is empty")}getWeight(e){return this.weightMap[e]}addTensorArray(e){this.tensorArrayMap[e.id]=e}getTensorArray(e){return this.tensorArrayMap[e]}addTensorList(e){this.tensorListMap[e.id]=e}getTensorList(e){return this.tensorListMap[e]}dispose(e){for(let t in this.tensorArrayMap)this.tensorArrayMap[t].clearAndClose(e);for(let t in this.tensorListMap)this.tensorListMap[t].clearAndClose(e)}};function Pv(r,e,t,o){let n=new Set,s=[],a=null,i=null,l=new Set,u=Object.keys(r).map(m=>to(m)[0]),c=[];o!=null&&(c=o.map(m=>to(m.name)[0]));let p=[...e];for(;p.length>0;){let m=p.pop();if((Ov(m)||J6(m)||Q6(m))&&a==null&&(a=m,i=a.children.map(f=>f.name).filter(f=>n.has(f))),n.add(m.name),t[m.name]==null&&u.indexOf(m.name)===-1&&c.indexOf(m.name)===-1){if(m.inputs.length===0){s.push(m.name);continue}m.inputs.forEach(f=>{l.has(f.name)||(l.add(f.name),p.push(f))})}}return{inputs:r,outputs:e,usedNodes:n,missingInputs:s,dynamicNode:a,syncInputs:i}}function yE(r,e,t){let{usedNodes:o,inputs:n}=t,s=[],a=Object.keys(n).map(c=>to(c)[0]).map(c=>r.nodes[c]),i=r.initNodes;a.forEach(c=>{o.has(c.name)&&s.push(c)}),r.weights.forEach(c=>{o.has(c.name)&&s.push(c)}),i!=null&&i.forEach(c=>{o.has(c.name)&&s.push(c)});let l=new Set,u=[];for(;s.length>0;){let c=s.pop();l.add(c.name),e[c.name]||u.push(c),c.children.forEach(p=>{!l.has(p.name)&&o.has(p.name)&&p.inputs.every(m=>l.has(m.name))&&s.push(p)})}return u}var e5=["Switch","Merge","Enter","Exit","NextIteration","StatelessIf","StatelessWhile","if","While"],t5=["NonMaxSuppressionV2","NonMaxSuppressionV3","NonMaxSuppressionV5","Where"],r5=["HashTable","HashTableV2","LookupTableImport","LookupTableImportV2","LookupTableFind","LookupTableFindV2"];function Ov(r){return e5.indexOf(r.op)>=0}function J6(r){return t5.indexOf(r.op)>=0}function Q6(r){return r5.indexOf(r.op)>=0}var $p=class{constructor(e,t){this.graph=e,this.parent=t,this.compiledMap=new Map,this._weightMap={},this.SEPERATOR=",",this._functions={},this._functionExecutorMap={},this._outputs=e.outputs,this._inputs=e.inputs,this._initNodes=e.initNodes,this._signature=e.signature,this._functions=e.functions,e.functions!=null&&Object.keys(e.functions).forEach(o=>{this._functionExecutorMap[o]=new $p(e.functions[o],this)})}get weightIds(){return this.parent?this.parent.weightIds:this._weightIds}get functionExecutorMap(){return this.parent?this.parent.functionExecutorMap:this._functionExecutorMap}get weightMap(){return this.parent?this.parent.weightMap:this._weightMap}set weightMap(e){let t=Object.keys(e).map(o=>e[o].map(n=>n.id));this._weightIds=[].concat(...t),this._weightMap=e}set resourceManager(e){this._resourceManager=e}get inputs(){return this._inputs.map(e=>({name:e.name,shape:e.attrParams.shape?e.attrParams.shape.value:void 0,dtype:e.attrParams.dtype?e.attrParams.dtype.value:void 0}))}get outputs(){return this._outputs.map(e=>({name:e.name,shape:e.attrParams.shape?e.attrParams.shape.value:void 0,dtype:e.attrParams.dtype?e.attrParams.dtype.value:void 0}))}get inputNodes(){return this._inputs.map(e=>e.signatureKey||e.name)}get outputNodes(){return this._outputs.map(e=>{let t=e.signatureKey||e.name;return e.defaultOutput?`${t}:${e.defaultOutput}`:t})}get functions(){return Object.keys(this._functions).reduce((e,t)=>(e[t]=this._functions[t].signature,e),{})}getCompilationKey(e,t){let o=e.map(s=>s.name).sort(),n=t.map(s=>s.name).sort();return o.join(this.SEPERATOR)+"--"+n.join(this.SEPERATOR)}compile(e,t){let o=Pv(e,t,this.weightMap,this._initNodes),{missingInputs:n,dynamicNode:s,syncInputs:a}=o;if(s!=null)throw new Error(`This execution contains the node '${s.name}', which has the dynamic op '${s.op}'. Please use model.executeAsync() instead. Alternatively, to avoid the dynamic ops, specify the inputs [${a}]`);if(n.length>0){let i=t.map(u=>u.name),l=Object.keys(e);throw new Error(`Cannot compute the outputs [${i}] from the provided inputs [${l}]. Missing the following inputs: [${n}]`)}return yE(this.graph,this.weightMap,o)}execute(e,t){e=this.mapInputs(e);let o=Object.keys(e).sort();this.checkInputs(e),this.checkInputShapeAndType(e),t=this.mapOutputs(t),this.checkOutputs(t);let n=o.map(p=>this.graph.nodes[to(p)[0]]),s=t.map(p=>to(p)[0]),a=s.map(p=>this.graph.nodes[p]);a.length===0&&(a=this._outputs);let i=this.getCompilationKey(n,a),l=this.compiledMap.get(i);l==null&&(l=this.compile(e,a),this.compiledMap.set(i,l));let u={},c={};return V(()=>{let p=new px(this.weightMap,u,c,this.functionExecutorMap),m=Object.assign({},this.weightMap);Object.keys(e).forEach(h=>{let[g,y]=to(h),b=[];b[y]=e[h],m[g]=b});let f=this.getFrozenTensorIds(m),d={};for(let h=0;hgr(h,m,p))})}getFrozenTensorIds(e){let t=[].concat.apply([],Object.keys(e).map(o=>e[o]).map(o=>o.map(n=>n.id)));return new Set(t)}checkTensorForDisposal(e,t,o,n,s,a,i){t.category==="control"||a.indexOf(e)!==-1||(o[e].forEach(l=>{l!=null&&(i[l.id]=(i[l.id]||0)+t.children.length)}),t.inputs.forEach(l=>{if(l.category!=="control"){let u=q1(l.name,o,n);u!=null&&u.forEach(c=>{if(c&&!s.has(c.id)){let p=i[c.id];p===1?(c.dispose(),delete i[c.id]):p!=null&&i[c.id]--}})}}))}async executeAsync(e,t){return this._executeAsync(e,t)}async _executeAsync(e,t,o=!1,n={},s={}){o||(e=this.mapInputs(e),this.checkInputs(e),this.checkInputShapeAndType(e),t=this.mapOutputs(t),this.checkOutputs(t));let a=new px(this.weightMap,n,s,this.functionExecutorMap),i=await this.executeWithControlFlow(e,a,t,o),l=t.map(m=>gr(m,i,a)),u=l.map(m=>m.id),c=Object.keys(e).map(m=>e[m].id),p=new Set([...u,...c,...this.weightIds]);return Object.keys(i).forEach(m=>{i[m].forEach(d=>{d&&!d.isDisposed&&!p.has(d.id)&&d.dispose()})}),this.parent==null&&a.dispose(p),l}async executeFunctionAsync(e,t,o){let n=e.reduce((s,a,i)=>(s[this.inputs[i].name]=a,s),{});return this._executeAsync(n,this.outputNodes,!0,t,o)}async executeWithControlFlow(e,t,o,n){let s=Object.keys(e),a=s.map(_=>this.graph.nodes[to(_)[0]]),i=o.map(_=>to(_)[0]),l=i.map(_=>this.graph.nodes[_]);l.length===0&&(l=this._outputs);let{usedNodes:u,missingInputs:c,dynamicNode:p,syncInputs:m}=Pv(e,l,this.weightMap,this._initNodes),f=[...a,...this.graph.weights,...this._initNodes||[]].map(_=>({node:_,contexts:t.currentContext})),d=Object.assign({},this.weightMap);Object.keys(e).forEach(_=>{let[w,k]=to(_),$=[];$[k]=e[_],d[w]=$});let h={},g=this.getFrozenTensorIds(d),y={};for(;f.length>0;){let _=this.processStack(a,f,t,d,y,g,i,h,u);await Promise.all(_)}p==null&&!n&&console.warn("This model execution did not contain any nodes with control flow or dynamic output shapes. You can use model.execute() instead.");let b=l.filter(_=>!Ov(_)&&!gr(_.name,d,t)).map(_=>_.name);if(b.length>0){let _="";throw p!=null&&(_=`Alternatively, to avoid the dynamic ops, use model.execute() and specify the inputs [${m}]`),new Error(`Cannot compute the outputs [${b}] from the provided inputs [${s}]. Consider providing the following inputs: [${c}]. ${_}`)}return d}processStack(e,t,o,n,s,a,i,l,u){let c=[];for(;t.length>0;){let p=t.pop();o.currentContext=p.contexts;let m="";if(p.node.op==="Enter"&&C("isConstant",p.node,n,o)&&([m]=Ps(p.node.name,o)),n[p.node.name]==null){let f=Fv(p.node,n,o,this._resourceManager);m||([m]=Ps(p.node.name,o));let d=o.currentContext;x.isPromise(f)?c.push(f.then(h=>(n[m]=h,o.currentContext=d,this.checkTensorForDisposal(m,p.node,n,o,a,i,l),this.processChildNodes(p.node,t,o,n,s,u),h))):(n[m]=f,this.checkTensorForDisposal(m,p.node,n,o,a,i,l),this.processChildNodes(p.node,t,o,n,s,u))}else this.processChildNodes(p.node,t,o,n,s,u)}return c}processChildNodes(e,t,o,n,s,a){e.children.forEach(i=>{let[l]=Ps(i.name,o);s[l]||!a.has(i.name)||(i.op==="Merge"?i.inputNames.some(u=>!!gr(u,n,o))&&(s[l]=!0,t.push({contexts:o.currentContext,node:i})):i.inputNames.every(u=>!!gr(u,n,o))&&(s[l]=!0,t.push({contexts:o.currentContext,node:i})))})}dispose(){Object.keys(this.weightMap).forEach(e=>this.weightMap[e].forEach(t=>t.dispose()))}checkInputShapeAndType(e){Object.keys(e).forEach(t=>{let o=e[t],[n]=to(t),s=this.graph.nodes[n];if(s.attrParams.shape&&s.attrParams.shape.value){let a=s.attrParams.shape.value,i=a.length===o.shape.length&&o.shape.every((l,u)=>a[u]===-1||a[u]===l);x.assert(i,()=>`The shape of dict['${s.name}'] provided in model.execute(dict) must be [${a}], but was [${o.shape}]`)}s.attrParams.dtype&&s.attrParams.dtype.value&&x.assert(o.dtype===s.attrParams.dtype.value,()=>`The dtype of dict['${s.name}'] provided in model.execute(dict) must be ${s.attrParams.dtype.value}, but was ${o.dtype}`)})}mapInputs(e){let t={};for(let o in e)if(this._signature!=null&&this._signature.inputs!=null&&this._signature.inputs[o]!=null){let n=this._signature.inputs[o];t[n.name]=e[o]}else t[o]=e[o];return t}checkInputs(e){let t=Object.keys(e).filter(o=>{let[n]=to(o);return this.graph.nodes[n]==null});if(t.length>0)throw new Error(`The dict provided in model.execute(dict) has keys: [${t}] that are not part of graph`)}mapOutputs(e){return e.map(t=>this._signature!=null&&this._signature.outputs!=null&&this._signature.outputs[t]!=null?this._signature.outputs[t].name:t,{})}checkOutputs(e){e.forEach(t=>{let[o]=to(t);if(!this.graph.nodes[o])throw new Error(`The output '${t}' is not found in the graph`)})}};var Mv=class{constructor(e={},t={}){this.hashTableNameToHandle=e,this.hashTableMap=t}addHashTable(e,t){this.hashTableNameToHandle[e]=t.handle,this.hashTableMap[t.id]=t}getHashTableHandleByName(e){return this.hashTableNameToHandle[e]}getHashTableById(e){return this.hashTableMap[e]}dispose(){for(let e in this.hashTableMap)this.hashTableMap[e].clearAndClose(),delete this.hashTableMap[e];for(let e in this.hashTableNameToHandle)this.hashTableNameToHandle[e].dispose(),delete this.hashTableNameToHandle[e]}};var o5="?tfjs-format=file",n5="model.json",mx=class{constructor(e,t={}){this.modelUrl=e,this.loadOptions=t,this.version="n/a",t==null&&(this.loadOptions={}),this.resourceManager=new Mv}get modelVersion(){return this.version}get inputNodes(){return this.executor.inputNodes}get outputNodes(){return this.executor.outputNodes}get inputs(){return this.executor.inputs}get outputs(){return this.executor.outputs}get weights(){return this.executor.weightMap}get metadata(){return this.artifacts.userDefinedMetadata}get modelSignature(){return this.signature}findIOHandler(){let e=this.modelUrl;if(e.load!=null)this.handler=e;else if(this.loadOptions.requestInit!=null)this.handler=Cr.browserHTTPRequest(e,this.loadOptions);else{let t=Cr.getLoadHandlers(e,this.loadOptions);if(t.length===0)t.push(Cr.browserHTTPRequest(e,this.loadOptions));else if(t.length>1)throw new Error(`Found more than one (${t.length}) load handlers for URL '${[e]}'`);this.handler=t[0]}}async load(){if(this.findIOHandler(),this.handler.load==null)throw new Error("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let e=await this.handler.load();return this.loadSync(e)}loadSync(e){this.artifacts=e;let t=this.artifacts.modelTopology,o;this.artifacts.userDefinedMetadata!=null&&this.artifacts.userDefinedMetadata.signature!=null?o=this.artifacts.userDefinedMetadata.signature:o=this.artifacts.signature,this.signature=o,this.version=`${t.versions.producer}.${t.versions.minConsumer}`;let n=Cr.decodeWeights(this.artifacts.weightData,this.artifacts.weightSpecs);if(this.executor=new $p(ex.Instance.transformGraph(t,this.signature)),this.executor.weightMap=this.convertTensorMapToTensorsMap(n),this.executor.resourceManager=this.resourceManager,e.modelInitializer!=null&&e.modelInitializer.node!=null){let s=ex.Instance.transformGraph(e.modelInitializer);this.initializer=new $p(s),this.initializer.weightMap=this.executor.weightMap,this.initializer.resourceManager=this.resourceManager,this.initializer.executeAsync({},[])}return!0}async save(e,t){if(typeof e=="string"){let o=Cr.getSaveHandlers(e);if(o.length===0)throw new Error(`Cannot find any save handlers for URL '${e}'`);if(o.length>1)throw new Error(`Found more than one (${o.length}) save handlers for URL '${e}'`);e=o[0]}if(e.save==null)throw new Error("GraphModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");return e.save(this.artifacts)}predict(e,t){return this.execute(e,this.outputNodes)}normalizeInputs(e){if(!(e instanceof R)&&!Array.isArray(e))return e;if(e=Array.isArray(e)?e:[e],e.length!==this.inputNodes.length)throw new Error(`Input tensor count mismatch,the graph model has ${this.inputNodes.length} placeholders, while there are ${e.length} input tensors.`);return this.inputNodes.reduce((t,o,n)=>(t[o]=e[n],t),{})}normalizeOutputs(e){return e=e||this.outputNodes,Array.isArray(e)?e:[e]}execute(e,t){e=this.normalizeInputs(e),t=this.normalizeOutputs(t);let o=this.executor.execute(e,t);return o.length>1?o:o[0]}async executeAsync(e,t){e=this.normalizeInputs(e),t=this.normalizeOutputs(t);let o=await this.executor.executeAsync(e,t);return o.length>1?o:o[0]}convertTensorMapToTensorsMap(e){return Object.keys(e).reduce((t,o)=>(t[o]=[e[o]],t),{})}dispose(){this.executor.dispose(),this.initializer&&this.initializer.dispose(),this.resourceManager.dispose()}};async function bE(r,e={}){if(r==null)throw new Error("modelUrl in loadGraphModel() cannot be null. Please provide a url or an IOHandler that loads the model");e==null&&(e={}),e.fromTFHub&&r.load==null&&(r.endsWith("/")||(r=r+"/"),r=`${r}${n5}${o5}`);let t=new mx(r,e);return await t.load(),t}var fx="2.8.3";var jv={};et(jv,{CSVDataset:()=>Rd,Dataset:()=>qi,FileDataSource:()=>Ld,TextLineDataset:()=>Dd,URLDataSource:()=>zd,array:()=>VE,csv:()=>ZE,func:()=>JE,generator:()=>QE,microphone:()=>tA,version_data:()=>_x,webcam:()=>eA,zip:()=>WE});var BE=Ec(Wm());var IE=Ec(Wm());function _E(r,e){return dx(r,e)}function dx(r,e,t=new Map,o=new Set){if(r==null)return null;if(o.has(r))throw new Error("Circular references are not supported.");if(t.has(r))return t.get(r);let n=e(r);if(n.recurse&&n.value!==null)throw new Error("A deep map function may not return both a value and recurse=true.");if(n.recurse)if(Cl(r)){let s=Array.isArray(r)?[]:{};o.add(r);for(let a in r){let i=r[a],l=dx(i,e,t,o);s[a]=l}return o.delete(r),s}else throw new Error(`Can't recurse into non-iterable type: ${r}`);else return t.set(r,n.value),n.value}function vE(r,e=Lv){return wE(r,e)}function wE(r,e,t=new Set){let o=r[0];if(t.has(o))throw new Error("Circular references are not supported.");let n=e(r);if(n.recurse&&n.value!==null)throw new Error("A deep zip function may not return both a value and recurse=true.");if(n.recurse)if(Cl(o)){let s=Array.isArray(o)?[]:{};t.add(o);for(let a in o){let i=r.map(u=>u[a]),l=wE(i,e,t);s[a]=l}return t.delete(o),s}else throw new Error(`Can't recurse into non-iterable type: ${o}`);else return n.value}function Lv(r){return r===null?null:Cl(r[0])?{value:null,recurse:!0}:{value:r,recurse:!1}}async function hx(r,e){let t=new Map;dx(r,e,t);for(let n of Array.from(t.keys())){let s=t.get(n);if(x.isPromise(s)){let a=await s;t.set(n,a)}}return dx(r,e,t)}function Cl(r){return r!=null&&!ArrayBuffer.isView(r)&&(Array.isArray(r)||typeof r=="object"&&!(r instanceof R))}function kE(r){return r==null||s5(r)||Array.isArray(r)||typeof r=="object"&&r instanceof R||x.isTypedArray(r)}function s5(r){return r===null||typeof r!="object"&&typeof r!="function"}function CE(r){return _E(r,i5)}function i5(r){return r instanceof R?{value:r.clone(),recurse:!1}:Cl(r)?{value:null,recurse:!0}:{value:r,recurse:!1}}var Ed=class{constructor(e){if(this.capacity=e,this.begin=0,this.end=0,e==null)throw new RangeError("Can't create a ring buffer of unknown capacity.");if(e<1)throw new RangeError("Can't create ring buffer of capacity < 1.");this.data=new Array(e),this.doubledCapacity=2*e}wrap(e){for(;e<0;)e+=this.doubledCapacity;return e%this.doubledCapacity}get(e){if(e<0)throw new RangeError("Can't get item at a negative index.");return this.data[e%this.capacity]}set(e,t){if(e<0)throw new RangeError("Can't set item at a negative index.");this.data[e%this.capacity]=t}length(){let e=this.end-this.begin;return e<0&&(e=this.doubledCapacity+e),e}isFull(){return this.length()===this.capacity}isEmpty(){return this.length()===0}push(e){if(this.isFull())throw new RangeError("Ring buffer is full.");this.set(this.end,e),this.end=this.wrap(this.end+1)}pushAll(e){for(let t of e)this.push(t)}pop(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");this.end=this.wrap(this.end-1);let e=this.get(this.end);return this.set(this.end,void 0),e}unshift(e){if(this.isFull())throw new RangeError("Ring buffer is full.");this.begin=this.wrap(this.begin-1),this.set(this.begin,e)}shift(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let e=this.get(this.begin);return this.set(this.begin,void 0),this.begin=this.wrap(this.begin+1),e}shuffleExcise(e){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let t=this.wrap(this.begin+e),o=this.get(t);return this.set(t,this.pop()),o}};var Rp=class extends Ed{constructor(){super(Rp.INITIAL_CAPACITY)}isFull(){return!1}push(e){super.isFull()&&this.expand(),super.push(e)}unshift(e){super.isFull()&&this.expand(),super.unshift(e)}expand(){let e=this.capacity*2,t=new Array(e),o=this.length();for(let n=0;nt===!0)}rowMajorBatch(e,t=!0){return new FE(this,e,t)}columnMajorBatch(e,t=!0,o=Lv){return this.rowMajorBatch(e,t).map(s=>vE(s,o))}concatenate(e,t){return new Bv(zv([this,e]),t)}take(e){return e<0||e==null?this:new RE(this,e)}skip(e){return e<0||e==null?this:new $E(this,e)}prefetch(e){return new Wv(this,e)}shuffle(e,t){return new zE(this,e,t)}serial(){return new DE(this)}},NE=class extends Zt{constructor(e){super();this.items=e,this.trav=0}summary(){return`Array of ${this.items.length} items`}async next(){if(this.trav>=this.items.length)return{value:null,done:!0};let e=this.items[this.trav];return this.trav++,{value:CE(e),done:!1}}},SE=class extends Zt{constructor(e){super();this.nextFn=e}summary(){return"Function call"}async next(){try{return this.nextFn()}catch(e){throw e.message=`Error thrown while iterating through a dataset: ${e.message}`,e}}},DE=class extends Zt{constructor(e){super();this.upstream=e,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Serial`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){return this.upstream.next()}},$E=class extends Zt{constructor(e,t){super();this.upstream=e,this.maxCount=t,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Skip`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.count++ Take`}async next(){return this.count++>=this.maxCount?{value:null,done:!0}:this.upstream.next()}},FE=class extends Zt{constructor(e,t,o=!0){super();this.upstream=e,this.batchSize=t,this.enableSmallLastBatch=o,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> RowMajorBatch`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){let e=[];for(;e.length0?{value:e,done:!1}:{value:null,done:!0};e.push(t.value)}return{value:e,done:!1}}},OE=class extends Zt{constructor(e,t){super();this.upstream=e,this.predicate=t,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Filter`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;){let e=await this.upstream.next();if(e.done||this.predicate(e.value))return e;Ae(e.value)}}},PE=class extends Zt{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> Map`}async next(){let e=await this.upstream.next();if(e.done)return{value:null,done:!0};let t=Mn.getTensorsInContainer(e.value),o=this.transform(e.value),n=Mn.getTensorsInContainer(o);for(let s of t)Mn.isTensorInList(s,n)||s.dispose();return{value:o,done:!1}}},ME=class extends Zt{constructor(e,t){super();this.upstream=e,this.handler=t,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> handleErrors`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;)try{return await this.upstream.next()}catch(e){if(!this.handler(e))return{value:null,done:!0}}}},Vv=class extends Zt{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> AsyncMap`}async next(){let e=await this.upstream.next();if(e.done)return{value:null,done:!0};let t=Mn.getTensorsInContainer(e.value),o=await this.transform(e.value),n=Mn.getTensorsInContainer(o);for(let s of t)Mn.isTensorInList(s,n)||s.dispose();return{value:o,done:!1}}},Fp=class extends Zt{constructor(){super();this.outputQueue=new Rp,this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.outputQueue.length()===0;)if(!await this.pump())return{value:null,done:!0};return{value:this.outputQueue.shift(),done:!1}}},LE=class extends Fp{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> Flatmap`}async pump(){let e=await this.upstream.next();if(e.done)return!1;let t=Mn.getTensorsInContainer(e.value),o=this.transform(e.value),n=Mn.getTensorsInContainer(o);this.outputQueue.pushAll(o);for(let s of t)Mn.isTensorInList(s,n)||s.dispose();return!0}},Bv=class extends Zt{constructor(e,t){super();this.baseErrorHandler=t,this.lastRead=null,this.iterator=null,this.moreIterators=e}summary(){return"TODO: fill in upstream of chained summaries -> Chained"}async next(){return this.lastRead=this.readFromChain(this.lastRead),this.lastRead}async readFromChain(e){if(await e,this.iterator==null){let o=await this.moreIterators.next();if(o.done)return{value:null,done:!0};this.iterator=o.value,this.baseErrorHandler!=null&&(this.iterator=this.iterator.handleErrors(this.baseErrorHandler))}let t=await this.iterator.next();return t.done?(this.iterator=null,this.readFromChain(e)):t}},Ga;(function(r){r[r.FAIL=0]="FAIL",r[r.SHORTEST=1]="SHORTEST",r[r.LONGEST=2]="LONGEST"})(Ga||(Ga={}));var EE=class extends Zt{constructor(e,t=Ga.FAIL){super();this.iterators=e,this.mismatchMode=t,this.count=0,this.currentPromise=null}summary(){return"{TODO: fill in upstream of zip summaries} -> Zip"}async nextState(e){await e;let t=0,o=0;function n(a){return a instanceof Zt?{value:a.next().then(l=>(t++,l.done&&o++,l.value)),recurse:!1}:{value:null,recurse:!0}}let s=await hx(this.iterators,n);if(t===o)return{value:null,done:!0};if(o>0)switch(this.mismatchMode){case Ga.FAIL:throw new Error(`Zipped streams should have the same length. Mismatched at element ${this.count}.`);case Ga.SHORTEST:return{value:null,done:!0};case Ga.LONGEST:default:}return this.count++,{value:s,done:!1}}async next(){return this.currentPromise=this.nextState(this.currentPromise),this.currentPromise}},Wv=class extends Zt{constructor(e,t){super();this.upstream=e,this.bufferSize=t,this.buffer=new Ed(t)}summary(){return`${this.upstream.summary()} -> Prefetch`}refill(){for(;!this.buffer.isFull();){let e=this.upstream.next();this.buffer.push(e)}}next(){return this.refill(),this.buffer.shift()}},zE=class extends Wv{constructor(e,t,o){super(e,t);this.upstream=e,this.windowSize=t,this.upstreamExhausted=!1,this.random=IE.alea(o||x.now().toString()),this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}randomInt(e){return Math.floor(this.random()*e)}chooseIndex(){return this.randomInt(this.buffer.length())}async serialNext(){for(this.upstreamExhausted||this.refill();!this.buffer.isEmpty();){let e=this.chooseIndex(),t=await this.buffer.shuffleExcise(e);if(t.done)this.upstreamExhausted=!0;else return this.refill(),t}return{value:null,done:!0}}};var qi=class{constructor(){this.size=null}batch(e,t=!0){let o=this;x.assert(e>0,()=>`batchSize needs to be positive, but it is + ${e}`);let n;return this.size===Infinity||this.size==null?n=this.size:t?n=Math.ceil(this.size/e):n=Math.floor(this.size/e),po(async()=>(await o.iterator()).columnMajorBatch(e,t,a5),n)}concatenate(e){let t=this,o;return this.size===Infinity||e.size===Infinity?o=Infinity:this.size!=null&&e.size!=null?o=this.size+e.size:o=null,po(async()=>(await t.iterator()).concatenate(await e.iterator()),o)}filter(e){let t=this,o;return this.size===Infinity?o=Infinity:o=null,po(async()=>(await t.iterator()).filter(n=>V(()=>e(n))),o)}async forEachAsync(e){return(await this.iterator()).forEachAsync(e)}map(e){let t=this;return po(async()=>(await t.iterator()).map(o=>V(()=>e(o))),this.size)}mapAsync(e){let t=this;return po(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 po(async()=>(await t.iterator()).prefetch(e),this.size)}repeat(e){let t=this,o;return this.size!=null&&e>0?o=this.size*e:e===0?o=0:this.size!=null&&(e===void 0||e<0)?o=Infinity:o=null,po(async()=>{let n=Ad(async()=>({value:await t.iterator(),done:!1}));return TE(n.take(e))},o)}skip(e){let t=this,o;return this.size!=null&&e>=0&&this.size>=e?o=this.size-e:this.size!=null&&(this.size(await t.iterator()).skip(e),o)}shuffle(e,t,o=!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)`);let n=this,s=BE.alea(t||x.now().toString());return po(async()=>{let a=s.int32();return o&&(a+=s.int32()),(await n.iterator()).shuffle(e,a.toString())},this.size)}take(e){let t=this,o;return this.size!=null&&this.size>e?o=e:this.size!=null&&this.size<=e?o=this.size:o=null,po(async()=>(await t.iterator()).take(e),o)}async toArray(){if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArray()}async toArrayForTest(){if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArrayForTest()}};qi.MAX_BUFFER_SIZE=1e4;function po(r,e=null){return new class extends qi{constructor(){super(...arguments);this.size=e}async iterator(){return r()}}}function VE(r){return po(async()=>zv(r),r.length)}function WE(r){if(!Cl(r))throw new Error("The argument to zip() must be an object or array.");let e;if(Array.isArray(r))for(let t=0;t{let t=await hx(r,o=>{if(o instanceof qi)return{value:o.iterator(),recurse:!1};if(Cl(o))return{value:null,recurse:!0};throw new Error("Leaves of the structure passed to zip() must be Datasets, not primitives.")});return AE(t,Ga.SHORTEST)},e)}function a5(r){if(r===null)return null;let e=r[0];return kE(e)?{value:l5(r),recurse:!1}:{value:null,recurse:!0}}function l5(r){if(r.length===0)throw new Error("Can't make a batch of zero elements.");return r[0]instanceof R?Wt(r):Fr(r)}var Dd=class extends qi{constructor(e){super();this.input=e}async iterator(){return(await this.input.iterator()).decodeUTF8().split(` +`).map(n=>(n.endsWith("\r")&&(n=n.slice(0,-1)),n))}};var gx='"',$d=Symbol("out"),GE=Symbol("field"),xx=Symbol("quote"),Gv=Symbol("quoteafterquote"),UE=Symbol("quoteinquote"),Rd=class extends qi{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 Dd(e),t||(t={}),this.hasHeader=t.hasHeader!==!1,this.fullColumnNames=t.columnNames,this.columnConfigs=t.columnConfigs,this.configuredColumnsOnly=t.configuredColumnsOnly,t.delimWhitespace?(x.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&&x.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((n,s)=>(n[s]=n[s]+1||1,n),{}),o=Object.keys(t).filter(n=>t[n]>1);if(x.assert(o.length===0,()=>"Duplicate column names found: "+o.toString()),this.columnConfigs){for(let n of Object.keys(this.columnConfigs))if(this.fullColumnNames.indexOf(n)===-1)throw new Error('The key "'+n+'" 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 o=t.value;return this.parseRow(o,!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),o={},n={};for(let s=0;s14||!Number.isInteger(t))throw new Error(`Invalid fftSize: it must be a power of 2 between 2 to 4 and 2 to 14, but got ${this.fftSize}`);if(this.numFrames=e.numFramesPerSpectrogram||43,this.sampleRateHz=e.sampleRateHz,this.columnTruncateLength=e.columnTruncateLength||this.fftSize,this.audioTrackConstraints=e.audioTrackConstraints,this.smoothingTimeConstant=e.smoothingTimeConstant||0,this.includeSpectrogram=e.includeSpectrogram!==!1,this.includeWaveform=e.includeWaveform===!0,!this.includeSpectrogram&&!this.includeWaveform)throw new Error("Both includeSpectrogram and includeWaveform are false. At least one type of data should be returned.")}summary(){return"microphone"}static async create(e={}){if(W().get("IS_NODE"))throw new Error("microphone API is only supported in browser environment.");let t=new Fd(e);return await t.start(),t}async start(){try{this.stream=await navigator.mediaDevices.getUserMedia({audio:this.audioTrackConstraints==null?!0:this.audioTrackConstraints,video:!1})}catch(o){throw new Error(`Error thrown while initializing video stream: ${o.message}`)}if(!this.stream)throw new Error("Could not obtain audio from microphone.");let e=window.AudioContext||window.webkitAudioContext;if(this.audioContext=new e,!this.sampleRateHz)this.sampleRateHz=this.audioContext.sampleRate;else if(this.audioContext.sampleRate!==this.sampleRateHz)throw new Error(`Mismatch in sampling rate: Expected: ${this.sampleRateHz}; Actual: ${this.audioContext.sampleRate}`);let t=this.audioContext.createMediaStreamSource(this.stream);this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=this.fftSize*2,this.analyser.smoothingTimeConstant=this.smoothingTimeConstant,t.connect(this.analyser),this.freqData=new Float32Array(this.fftSize),this.timeData=new Float32Array(this.fftSize)}async next(){if(this.isClosed)return{value:null,done:!0};let e,t,o=await this.getAudioData();if(this.includeSpectrogram){let n=this.flattenQueue(o.freqDataQueue);e=this.getTensorFromAudioDataArray(n,[this.numFrames,this.columnTruncateLength,1])}if(this.includeWaveform){let n=this.flattenQueue(o.timeDataQueue);t=this.getTensorFromAudioDataArray(n,[this.numFrames*this.fftSize,1])}return{value:{spectrogram:e,waveform:t},done:!1}}async capture(){return(await this.next()).value}async getAudioData(){let e=[],t=[],o=0;return new Promise(n=>{let s=setInterval(()=>{this.includeSpectrogram&&(this.analyser.getFloatFrequencyData(this.freqData),this.freqData[0]===-Infinity&&n({freqDataQueue:e,timeDataQueue:t}),e.push(this.freqData.slice(0,this.columnTruncateLength))),this.includeWaveform&&(this.analyser.getFloatTimeDomainData(this.timeData),t.push(this.timeData.slice())),++o===this.numFrames&&(clearInterval(s),n({freqDataQueue:e,timeDataQueue:t}))},this.fftSize/this.sampleRateHz*1e3)})}stop(){this.isClosed||(this.isClosed=!0,this.analyser.disconnect(),this.audioContext.close(),this.stream!=null&&this.stream.getTracks().length>0&&this.stream.getTracks()[0].stop())}toArray(){throw new Error("Can not convert infinite audio stream to array.")}getSampleRate(){return this.sampleRateHz}flattenQueue(e){let t=e[0].length,o=new Float32Array(e.length*t);return e.forEach((n,s)=>o.set(n,s*t)),o}getTensorFromAudioDataArray(e,t){let o=new Float32Array(x.sizeFromShape(t));return o.set(e,o.length-e.length),Fr(o,t)}};var Od=class extends Zt{constructor(e,t){super();if(this.webcamVideoElement=e,this.webcamConfig=t,this.isClosed=!0,this.resize=!1,this.needToResize())if(this.resize=!0,this.cropSize=[this.webcamConfig.resizeHeight,this.webcamConfig.resizeWidth],this.cropBoxInd=Gt([0],"int32"),this.webcamConfig.centerCrop){let o=this.webcamConfig.resizeWidth*1/this.webcamVideoElement.width,n=this.webcamConfig.resizeHeight*1/this.webcamVideoElement.height,s=(1-o)/2,a=(1-n)/2,i=s+o,l=n+a;this.cropBox=zi([a,s,l,i],[1,4])}else this.cropBox=zi([0,0,1,1],[1,4])}summary(){return"webcam"}static async create(e,t={}){if(W().get("IS_NODE"))throw new Error("tf.data.webcam is only supported in browser environment.");if(!e){if(e=document.createElement("video"),!t.resizeWidth||!t.resizeHeight)throw new Error("Please provide webcam video element, or resizeWidth and resizeHeight to create a hidden video element.");e.width=t.resizeWidth,e.height=t.resizeHeight}let o=new Od(e,t);return await o.start(),o}async start(){this.webcamConfig.facingMode&&x.assert(this.webcamConfig.facingMode==="user"||this.webcamConfig.facingMode==="environment",()=>`Invalid webcam facing mode: ${this.webcamConfig.facingMode}. Please provide 'user' or 'environment'`);try{this.stream=await navigator.mediaDevices.getUserMedia({video:{deviceId:this.webcamConfig.deviceId,facingMode:this.webcamConfig.facingMode?this.webcamConfig.facingMode:"user",width:this.webcamVideoElement.width,height:this.webcamVideoElement.height}})}catch(e){throw e.message=`Error thrown while initializing video stream: ${e.message}`,e}if(!this.stream)throw new Error("Could not obtain video from webcam.");try{this.webcamVideoElement.srcObject=this.stream}catch(e){console.log(e),this.webcamVideoElement.src=window.URL.createObjectURL(this.stream)}return this.webcamVideoElement.play(),this.isClosed=!1,new Promise(e=>{this.webcamVideoElement.onloadedmetadata=()=>{e()}})}async next(){if(this.isClosed)return{value:null,done:!0};let e;try{e=Yh.fromPixels(this.webcamVideoElement)}catch(t){throw new Error(`Error thrown converting video to pixels: ${JSON.stringify(t)}`)}if(this.resize)try{return{value:this.cropAndResizeFrame(e),done:!1}}catch(t){throw new Error(`Error thrown cropping the video: ${t.message}`)}finally{e.dispose()}else return{value:e,done:!1}}needToResize(){return!!(this.webcamConfig.resizeWidth&&this.webcamConfig.resizeHeight&&(this.webcamVideoElement.width!==this.webcamConfig.resizeWidth||this.webcamVideoElement.height!==this.webcamConfig.resizeHeight))}cropAndResizeFrame(e){return V(()=>{let t=e.toFloat().expandDims(0),o;o=As.cropAndResize(t,this.cropBox,this.cropBoxInd,this.cropSize,"bilinear");let n=o.shape;return o.reshape(n.slice(1))})}async capture(){return(await this.next()).value}stop(){this.stream.getTracks().forEach(t=>t.stop());try{this.webcamVideoElement.srcObject=null}catch(t){console.log(t),this.webcamVideoElement.src=null}this.isClosed=!0}toArray(){throw new Error("Can not convert infinite video stream to array.")}};var Pd=class{};var yx=class extends Zt{split(e){return new jE(this,e)}},jE=class extends yx{constructor(e,t){super();this.upstream=e,this.impl=new qE(e,t)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},qE=class extends Fp{constructor(e,t){super();this.upstream=e,this.separator=t,this.carryover=""}summary(){return`${this.upstream.summary()} -> Split('${this.separator}')`}async pump(){let e=await this.upstream.next();if(e.done)return this.carryover===""?!1:(this.outputQueue.push(this.carryover),this.carryover="",!0);let t=e.value.split(this.separator);t[0]=this.carryover+t[0];for(let o of t.slice(0,-1))this.outputQueue.push(o);return this.carryover=t[t.length-1],!0}};var Uv=class extends Zt{decodeUTF8(){return new KE(this)}},KE=class extends yx{constructor(e){super();this.upstream=e,this.impl=new XE(e)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},XE=class extends Fp{constructor(e){super();if(this.upstream=e,W().get("IS_BROWSER"))this.decoder=new TextDecoder("utf-8");else{let{StringDecoder:t}=HE();this.decoder=new t("utf8")}}summary(){return`${this.upstream.summary()} -> Utf8`}async pump(){let e=await this.upstream.next(),t;if(e.done)return!1;t=e.value;let o;return W().get("IS_BROWSER")?o=this.decoder.decode(t,{stream:!0}):o=this.decoder.write(Buffer.from(t.buffer)),this.outputQueue.push(o),!0}};var Md=class extends Uv{constructor(e,t={}){super();this.file=e,this.options=t,x.assert(e instanceof Uint8Array||(W().get("IS_BROWSER")?e instanceof File||e instanceof Blob:!1),()=>"FileChunkIterator only supports File, Blob and Uint8Array right now."),this.offset=t.offset||0,this.chunkSize=t.chunkSize||1024*1024}summary(){return`FileChunks ${this.file}`}async next(){return this.offset>=(this.file instanceof Uint8Array?this.file.byteLength:this.file.size)?{value:null,done:!0}:{value:await new Promise((t,o)=>{let n=this.offset+this.chunkSize;if(this.file instanceof Uint8Array)t(new Uint8Array(this.file.slice(this.offset,n)));else{let s=new FileReader;s.onload=i=>{let l=s.result;if(l instanceof ArrayBuffer&&(l=new Uint8Array(l)),!(l instanceof Uint8Array))return o(new TypeError("FileReader returned unknown type."));t(l)},s.onabort=i=>o(new Error("Aborted")),s.onerror=i=>o(new Error(i.type));let a=this.file.slice(this.offset,n);s.readAsArrayBuffer(a)}this.offset=n}),done:!1}}};async function YE(r,e={}){let t,o;typeof r=="string"?t=r:(t=r.url,o=u5(r));let n=await x.fetch(t,o);if(n.ok){let s=new Uint8Array(await n.arrayBuffer());return new Md(s,e)}else throw new Error(n.statusText)}var u5=r=>({method:r.method,headers:r.headers,body:r.body,mode:r.mode,credentials:r.credentials,cache:r.cache,redirect:r.redirect,referrer:r.referrer,integrity:r.integrity});function bx(r){return typeof r=="string"&&r.substr(0,7)==="file://"}var Ld=class extends Pd{constructor(e,t={}){super();this.input=e,this.options=t}async iterator(){if(bx(this.input)&&W().get("IS_NODE")){let e=require("fs");this.input=e.readFileSync(this.input.substr(7))}return new Md(this.input,this.options)}};var zd=class extends Pd{constructor(e,t={}){super();this.url=e,this.fileOptions=t}async iterator(){return bx(this.url)?new Ld(this.url,this.fileOptions).iterator():YE(this.url,this.fileOptions)}};function ZE(r,e={}){return new Rd(new zd(r),e)}function JE(r){let e=Ad(r);return po(async()=>e)}function QE(r){return po(async()=>{let e=await r();return Ad(()=>e.next())})}async function eA(r,e){return Od.create(r,e)}async function tA(r){return Fd.create(r)}var _x="2.8.3";function re(r,e){Array.isArray(r)||(r=[r]),r.forEach(t=>{t!=null&&x.assert(t.dtype!=="complex64",()=>`${e} does not support complex64 tensors in the CPU backend.`)})}var c5=Er.whereImpl,qv=class extends Ws{constructor(){super();this.blockSize=48,this.firstUse=!0,this.data=new Ja(this,Cs())}write(e,t,o){this.firstUse&&(this.firstUse=!1,W().get("IS_NODE")&&S.warn(` ============================ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To speed things up dramatically, install our node backend, which binds to TensorFlow C++, by running npm i @tensorflow/tfjs-node, or npm i @tensorflow/tfjs-node-gpu if you have CUDA. Then call require('@tensorflow/tfjs-node'); (-gpu suffix for CUDA) at the start of your program. Visit https://github.com/tensorflow/tfjs-node for more details. -============================`));let dataId={};return this.data.set(dataId,{values,dtype,refCount:1}),dataId}makeTensorInfo(shape,dtype,values){let outId;if(dtype==="string"&&values!=null&&values.length>0&&util_exports.isString(values[0])){let encodedValues=values.map(d=>util_exports.encodeString(d));outId=this.write(encodedValues,shape,dtype)}else outId=this.write(values,shape,dtype);return{dataId:outId,shape,dtype}}incRef(dataId){let tensorData=this.data.get(dataId);tensorData.refCount++}decRef(dataId){if(this.data.has(dataId)){let tensorData=this.data.get(dataId);tensorData.refCount--}}move(dataId,values,shape,dtype){this.data.set(dataId,{values,dtype,refCount:1})}numDataIds(){return this.data.numDataIds()}async read(dataId){return this.readSync(dataId)}readSync(dataId){let{dtype,complexTensorInfos}=this.data.get(dataId);if(dtype==="complex64"){let realValues=this.readSync(complexTensorInfos.real.dataId),imagValues=this.readSync(complexTensorInfos.imag.dataId);return backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}return this.data.get(dataId).values}bufferSync(t){let data=this.readSync(t.dataId),decodedData=data;if(t.dtype==="string")try{decodedData=data.map(d=>util_exports.decodeString(d))}catch(_a){throw new Error("Failed to decode encoded string bytes into utf-8")}return buffer(t.shape,t.dtype,decodedData)}makeOutput(values,shape,dtype){let dataId=this.write(values,shape,dtype);return engine().makeTensorFromDataId(dataId,shape,dtype,this)}disposeData(dataId){if(this.data.has(dataId)){let{complexTensorInfos}=this.data.get(dataId);complexTensorInfos!=null&&(this.disposeData(complexTensorInfos.real.dataId),this.disposeData(complexTensorInfos.imag.dataId)),this.data.delete(dataId)}}disposeIntermediateTensorInfo(tensorInfo){let dataId=tensorInfo.dataId;if(this.data.has(dataId)){let tensorData=this.data.get(dataId);tensorData.refCount--,tensorData.refCount<1&&this.disposeData(dataId)}}async time(f){let start=util_exports.now();return f(),{kernelMs:util_exports.now()-start}}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(condition){assertNotComplex([condition],"where");let condVals=this.readSync(condition.dataId);return whereImpl2(condition.shape,condVals)}dispose(){}floatPrecision(){return 32}epsilon(){return super.epsilon()}};var shared_exports={};__export(shared_exports,{addImpl:()=>addImpl,bincountImpl:()=>bincountImpl,bincountReduceImpl:()=>bincountReduceImpl,ceilImpl:()=>ceilImpl,concatImpl:()=>concatImpl,expImpl:()=>expImpl,expm1Impl:()=>expm1Impl,floorImpl:()=>floorImpl,gatherV2Impl:()=>gatherV2Impl,greaterImpl:()=>greaterImpl,lessImpl:()=>lessImpl,linSpaceImpl:()=>linSpaceImpl,logImpl:()=>logImpl,maxImpl:()=>maxImpl,maximumImpl:()=>maximumImpl,minimumImpl:()=>minimumImpl,multiplyImpl:()=>multiplyImpl,negImpl:()=>negImpl,notEqualImpl:()=>notEqualImpl,prodImpl:()=>prodImpl,rangeImpl:()=>rangeImpl,rsqrtImpl:()=>rsqrtImpl,simpleAbsImpl:()=>simpleAbsImpl,sliceImpl:()=>sliceImpl,squaredDifferenceImpl:()=>squaredDifferenceImpl,stridedSliceImpl:()=>stridedSliceImpl,subImpl:()=>subImpl,tileImpl:()=>tileImpl,topKImpl:()=>topKImpl,transposeImpl:()=>transposeImpl,uniqueImpl:()=>uniqueImpl});function simpleAbsImpl(vals){let resultValues=new Float32Array(vals.length);for(let i=0;i{let{x}=args.inputs,cpuBackend=args.backend;assertNotComplex(x,"abs");let resultValues=new Float32Array(util_exports.sizeFromShape(x.shape)),values=cpuBackend.data.get(x.dataId).values;return resultValues=simpleAbsImpl(values),cpuBackend.makeOutput(resultValues,x.shape,"float32")},absConfig={kernelName:Abs,backendName:"cpu",kernelFunc:abs2};function createSimpleBinaryKernelImpl(op2){return(aShape,bShape,aVals,bVals,dtype)=>{let newShape=backend_util_exports.assertAndGetBroadcastShape(aShape,bShape),resultRank=newShape.length,resultStrides=util_exports.computeStrides(newShape),resultSize=util_exports.sizeFromShape(newShape),result=util_exports.getTypedArrayFromDType(dtype,resultSize),aRank=aShape.length,bRank=bShape.length,aStrides=util_exports.computeStrides(aShape),bStrides=util_exports.computeStrides(bShape),aBroadcastDims=backend_util_exports.getBroadcastDims(aShape,newShape),bBroadcastDims=backend_util_exports.getBroadcastDims(bShape,newShape);if(aBroadcastDims.length+bBroadcastDims.length===0)for(let i=0;iaLoc[d]=0);let aIndex=util_exports.locToIndex(aLoc,aRank,aStrides),bLoc=loc.slice(-bRank);bBroadcastDims.forEach(d=>bLoc[d]=0);let bIndex=util_exports.locToIndex(bLoc,bRank,bStrides);result[i]=op2(aVals[aIndex],bVals[bIndex])}return[result,newShape]}}function complex2(args){let{inputs,backend:backend2}=args,{real:real4,imag:imag4}=inputs,realVals=backend2.data.get(real4.dataId).values,imagVals=backend2.data.get(imag4.dataId).values,complexInfo=backend2.makeTensorInfo(real4.shape,"complex64"),complex4=backend2.data.get(complexInfo.dataId);return complex4.complexTensorInfos={real:backend2.makeTensorInfo(real4.shape,"float32",realVals),imag:backend2.makeTensorInfo(imag4.shape,"float32",imagVals)},complexInfo}var complexConfig={kernelName:Complex,backendName:"cpu",kernelFunc:complex2};function zeros3(backend2,shape,dtype="float32"){if(dtype==="complex64"){let real4=zeros3(backend2,shape,"float32"),imag4=zeros3(backend2,shape,"float32");return complex2({inputs:{real:real4,imag:imag4},backend:backend2})}let values=util_exports.makeZerosTypedArray(util_exports.sizeFromShape(shape),dtype);return backend2.makeTensorInfo(shape,dtype,values)}function identity2(args){let{inputs,backend:backend2}=args,{x}=inputs;return backend2.incRef(x.dataId),{dataId:x.dataId,shape:x.shape,dtype:x.dtype}}var identityConfig={kernelName:Identity,backendName:"cpu",kernelFunc:identity2};function real2(args){let{inputs,backend:backend2}=args,{input:input2}=inputs,real4=backend2.data.get(input2.dataId).complexTensorInfos.real,realVal=backend2.data.get(real4.dataId).values;return backend2.makeTensorInfo(real4.shape,real4.dtype,realVal)}var realConfig={kernelName:Real,backendName:"cpu",kernelFunc:real2};function cast3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{dtype}=attrs;if(dtype==="complex64"){if(x.dtype==="complex64")return identity2({inputs:{x},backend:backend2});let zerosTensorInfo=zeros3(backend2,x.shape,x.dtype),floatX=cast3({inputs:{x},backend:backend2,attrs:{dtype:"float32"}}),result=complex2({inputs:{real:floatX,imag:zerosTensorInfo},backend:backend2});return backend2.disposeIntermediateTensorInfo(zerosTensorInfo),backend2.disposeIntermediateTensorInfo(floatX),result}if(x.dtype==="complex64"){let realPart=real2({inputs:{input:x},backend:backend2}),result=cast3({inputs:{x:realPart},backend:backend2,attrs:{dtype}});return backend2.disposeIntermediateTensorInfo(realPart),result}if(!util_exports.hasEncodingLoss(x.dtype,dtype)){let result=identity2({inputs:{x},backend:backend2});return{dataId:result.dataId,shape:result.shape,dtype}}if(dtype==="int32"){let values=backend2.data.get(x.dataId).values,resultValues=Int32Array.from(values);return backend2.makeTensorInfo(x.shape,"int32",resultValues)}if(dtype==="bool"){let xVals=backend2.data.get(x.dataId).values,zero=util_exports.toTypedArray([0],x.dtype),[resultData,resultShape]=createSimpleBinaryKernelImpl((a,b)=>a!==b?1:0)(x.shape,[],xVals,zero,"bool");return backend2.makeTensorInfo(resultShape,"bool",resultData)}throw new Error(`Error in Cast: failed to cast ${x.dtype} to ${dtype}`)}var castConfig={kernelName:Cast,backendName:"cpu",kernelFunc:cast3};function binaryKernelFunc(name,simpleImpl,complexImpl,dtype){return complexImpl==null?({inputs,backend:backend2})=>{let{a,b}=inputs,cpuBackend=backend2;assertNotComplex([a,b],name);let aVals=cpuBackend.data.get(a.dataId).values,bVals=cpuBackend.data.get(b.dataId).values,$dtype=dtype||a.dtype,[resultData,resultShape]=simpleImpl(a.shape,b.shape,aVals,bVals,$dtype);return cpuBackend.makeTensorInfo(resultShape,$dtype,resultData)}:({inputs,backend:backend2})=>{let{a,b}=inputs,cpuBackend=backend2;if(a.dtype==="complex64"||b.dtype==="complex64"){let $aComplex=cast3({inputs:{x:a},backend:cpuBackend,attrs:{dtype:"complex64"}}),$aComplexVals=cpuBackend.data.get($aComplex.dataId),aReal=$aComplexVals.complexTensorInfos.real,aImag=$aComplexVals.complexTensorInfos.imag,aRealVals=cpuBackend.data.get(aReal.dataId).values,aImagVals=cpuBackend.data.get(aImag.dataId).values,$bComplex=cast3({inputs:{x:b},backend:cpuBackend,attrs:{dtype:"complex64"}}),$bComplexVals=cpuBackend.data.get($bComplex.dataId),bReal=$bComplexVals.complexTensorInfos.real,bImag=$bComplexVals.complexTensorInfos.imag,bRealVals=cpuBackend.data.get(bReal.dataId).values,bImagVals=cpuBackend.data.get(bImag.dataId).values,[resultRealData,resultImagData,resultShape]=complexImpl(a.shape,b.shape,aRealVals,aImagVals,bRealVals,bImagVals),resultReal=cpuBackend.makeTensorInfo(resultShape,"float32",resultRealData),resultImag=cpuBackend.makeTensorInfo(resultShape,"float32",resultImagData),result=complex2({inputs:{real:resultReal,imag:resultImag},backend:cpuBackend});return cpuBackend.disposeIntermediateTensorInfo($aComplex),cpuBackend.disposeIntermediateTensorInfo($bComplex),cpuBackend.disposeIntermediateTensorInfo(resultReal),cpuBackend.disposeIntermediateTensorInfo(resultImag),result}else{let aVals=cpuBackend.data.get(a.dataId).values,bVals=cpuBackend.data.get(b.dataId).values,$dtype=dtype||a.dtype,[resultData,resultShape]=simpleImpl(a.shape,b.shape,aVals,bVals,$dtype);return cpuBackend.makeTensorInfo(resultShape,$dtype,resultData)}}}function createComplexBinaryKernelImpl(op2){return(aShape,bShape,aRealVals,aImagVals,bRealVals,bImagVals)=>{let resultShape=backend_util_exports.assertAndGetBroadcastShape(aShape,bShape),resultSize=util_exports.sizeFromShape(resultShape),resultRank=resultShape.length,resultStrides=util_exports.computeStrides(resultShape),resultRealVals=util_exports.getTypedArrayFromDType("float32",resultSize),resultImagVals=util_exports.getTypedArrayFromDType("float32",resultSize),aBroadcastDims=backend_util_exports.getBroadcastDims(aShape,resultShape),bBroadcastDims=backend_util_exports.getBroadcastDims(bShape,resultShape),aVals=backend_util_exports.mergeRealAndImagArrays(aRealVals,aImagVals),bVals=backend_util_exports.mergeRealAndImagArrays(bRealVals,bImagVals),aRank=aShape.length,aStrides=util_exports.computeStrides(aShape),bRank=bShape.length,bStrides=util_exports.computeStrides(bShape);if(aBroadcastDims.length+bBroadcastDims.length===0)for(let i=0;iaLoc[d]=0);let aIndex=util_exports.locToIndex(aLoc,aRank,aStrides),bLoc=loc.slice(-bRank);bBroadcastDims.forEach(d=>bLoc[d]=0);let bIndex=util_exports.locToIndex(bLoc,bRank,bStrides),opResult=op2(aVals[aIndex*2],aVals[aIndex*2+1],bVals[bIndex*2],bVals[bIndex*2+1]);resultRealVals[i]=opResult.real,resultImagVals[i]=opResult.imag}return[resultRealVals,resultImagVals,resultShape]}}var addImpl=createSimpleBinaryKernelImpl((a,b)=>a+b),addComplexImpl=createComplexBinaryKernelImpl((aReal,aImag,bReal,bImag)=>({real:aReal+bReal,imag:aImag+bImag})),add4=binaryKernelFunc(Add,addImpl,addComplexImpl),addConfig={kernelName:Add,backendName:"cpu",kernelFunc:add4};function bincountImpl(xVals,weightsVals,weightsDtype,weightsShape,size){let weightsSize=util_exports.sizeFromShape(weightsShape),outVals=util_exports.makeZerosTypedArray(size,weightsDtype);for(let i=0;i=size||(weightsSize>0?outVals[value]+=weightsVals[i]:outVals[value]+=1)}return outVals}function bincountReduceImpl(xBuf,weightsBuf,size,binaryOutput=!1){let numRows=xBuf.shape[0],numCols=xBuf.shape[1],outBuf=buffer([numRows,size],weightsBuf.dtype);for(let i=0;i=size||(binaryOutput?outBuf.set(1,i,value):weightsBuf.size>0?outBuf.set(outBuf.get(i,value)+weightsBuf.get(i,j),i,value):outBuf.set(outBuf.get(i,value)+1,i,value))}return outBuf}function createSimpleUnaryImpl(op2){return(values,dtype,attrs)=>{let newValues=util_exports.getTypedArrayFromDType(dtype,values.length);for(let i=0;i{let{x}=inputs;if(assertNotComplex(x,name),x.dtype==="string"||dtype==="string")throw new Error("unaryKernelFunc does not support string input/output");let cpuBackend=backend2,values=cpuBackend.data.get(x.dataId).values,xSize=util_exports.sizeFromShape(x.shape),$dtype=dtype||x.dtype,newValues=util_exports.getArrayFromDType($dtype,xSize);for(let i=0;i{let{x}=inputs;if(assertNotComplex(x,name),x.dtype==="string"||dtype==="string")throw new Error("unaryKernelFunc does not support string input/output");let cpuBackend=backend2,values=cpuBackend.data.get(x.dataId).values,$dtype=dtype||x.dtype,newValues=unaryImpl(values,$dtype,attrs);return cpuBackend.makeTensorInfo(x.shape,$dtype,newValues)}}var ceilImpl=createSimpleUnaryImpl(xi=>Math.ceil(xi)),ceil2=unaryKernelFuncFromImpl(Ceil,ceilImpl),ceilConfig={kernelName:Ceil,backendName:"cpu",kernelFunc:ceil2};function concatImpl(inputs,outShape,dtype,simplyConcat){let outVals=util_exports.getArrayFromDType(dtype,util_exports.sizeFromShape(outShape));if(simplyConcat&&dtype!=="string"){let offset=0;inputs.forEach(input2=>{let size=util_exports.sizeFromShape(input2.shape);outVals.set(input2.vals,offset),offset+=size})}else{let colOffset=0;inputs.forEach(input2=>{let decodedData=dtype==="string"?backend_util_exports.fromUint8ToStringArray(input2.vals):input2.vals,tIdx=0;for(let row=0;rowMath.exp(xi)),exp2=unaryKernelFuncFromImpl(Exp,expImpl),expConfig={kernelName:Exp,backendName:"cpu",kernelFunc:exp2};var expm1Impl=createSimpleUnaryImpl(xi=>Math.expm1(xi)),expm12=unaryKernelFuncFromImpl(Expm1,expm1Impl),expm1Config={kernelName:Expm1,backendName:"cpu",kernelFunc:expm12};var floorImpl=createSimpleUnaryImpl(xi=>Math.floor(xi)),floor2=unaryKernelFuncFromImpl(Floor,floorImpl),floorConfig={kernelName:Floor,backendName:"cpu",kernelFunc:floor2};function gatherV2Impl(xBuf,indicesBuf,flattenOutputShape){let outBuf=buffer(flattenOutputShape,xBuf.dtype);for(let i=0;ia>b?1:0),greater3=binaryKernelFunc(Greater,greaterImpl,null,"bool"),greaterConfig={kernelName:Greater,backendName:"cpu",kernelFunc:greater3};var lessImpl=createSimpleBinaryKernelImpl((a,b)=>aMath.log(xi)),log3=unaryKernelFuncFromImpl(Log,logImpl),logConfig={kernelName:Log,backendName:"cpu",kernelFunc:log3};function maxImpl(aVals,reduceSize,outShape,dtype){let vals=util_exports.getTypedArrayFromDType(dtype,util_exports.sizeFromShape(outShape));for(let i=0;imax6&&(max6=value)}vals[i]=max6}return vals}var maximumImpl=createSimpleBinaryKernelImpl((aValue,bValue)=>Math.max(aValue,bValue)),maximum3=binaryKernelFunc(Maximum,maximumImpl),maximumConfig={kernelName:Maximum,backendName:"cpu",kernelFunc:maximum3};var minimumImpl=createSimpleBinaryKernelImpl((aValue,bValue)=>Math.min(aValue,bValue)),minimum3=binaryKernelFunc(Minimum,minimumImpl),minimumConfig={kernelName:Minimum,backendName:"cpu",kernelFunc:minimum3};var multiplyImpl=createSimpleBinaryKernelImpl((aValue,bValue)=>aValue*bValue),multiplyComplexImpl=createComplexBinaryKernelImpl((aReal,aImag,bReal,bImag)=>({real:aReal*bReal-aImag*bImag,imag:aReal*bImag+aImag*bReal})),multiply2=binaryKernelFunc(Multiply,multiplyImpl,multiplyComplexImpl),multiplyConfig={kernelName:Multiply,backendName:"cpu",kernelFunc:multiply2};function negImpl(xVals,xShape,xDtype){let minusOne=util_exports.createScalarValue(-1,xDtype);return multiplyImpl([],xShape,minusOne,xVals,xDtype)}function neg2(args){let{inputs,backend:backend2}=args,{x}=inputs;assertNotComplex(x,"neg");let xVals=backend2.data.get(x.dataId).values,[res,newShape]=negImpl(xVals,x.shape,x.dtype);return backend2.makeTensorInfo(newShape,x.dtype,res)}var negConfig={kernelName:Neg,backendName:"cpu",kernelFunc:neg2};var notEqualImpl=createSimpleBinaryKernelImpl((a,b)=>a!==b?1:0),notEqual2=binaryKernelFunc(NotEqual,notEqualImpl,null,"bool"),notEqualConfig={kernelName:NotEqual,backendName:"cpu",kernelFunc:notEqual2};function transposeImpl(xVals,xShape,dtype,perm,newShape){let xRank=xShape.length,xSize=util_exports.sizeFromShape(xShape),xStrides=util_exports.computeStrides(xShape),newStrides=util_exports.computeStrides(newShape),result=util_exports.getTypedArrayFromDType(dtype,util_exports.sizeFromShape(newShape));for(let i=0;ibackend2.disposeIntermediateTensorInfo(t)),backend2.makeTensorInfo(resultShape,outDtype,outVals)}var prodConfig={kernelName:Prod,backendName:"cpu",kernelFunc:prod2};function rangeImpl(start,stop,step4,dtype){let sameStartStop=start===stop,increasingRangeNegativeStep=start1;if(sameStartStop||increasingRangeNegativeStep||decreasingRangePositiveStep)return util_exports.makeZerosTypedArray(0,dtype);let numElements=Math.abs(Math.ceil((stop-start)/step4)),values=util_exports.makeZerosTypedArray(numElements,dtype);stop1/Math.sqrt(xi)),rsqrt2=unaryKernelFuncFromImpl(Rsqrt,rsqrtImpl),rsqrtConfig={kernelName:Rsqrt,backendName:"cpu",kernelFunc:rsqrt2};function sliceImpl(vals,begin,size,shape,dtype){let isContinous=slice_util_exports.isSliceContinous(shape,begin,size),length=util_exports.sizeFromShape(size),xStrides=util_exports.computeStrides(shape);if(isContinous){let flatOffset=slice_util_exports.computeFlatOffset(begin,xStrides);return dtype==="string"?vals.slice(flatOffset,flatOffset+length):vals.subarray(flatOffset,flatOffset+length)}let decodedData=dtype==="string"?backend_util_exports.fromUint8ToStringArray(vals):vals,inBuf=buffer(shape,dtype,decodedData),outBuf=buffer(size,dtype);for(let i=0;iidx+begin[j]);outBuf.set(inBuf.get(...inLoc),...outLoc)}return dtype==="string"?backend_util_exports.fromStringArrayToUint8(outBuf.values):outBuf.values}function slice2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{begin,size}=attrs;assertNotComplex(x,"slice");let[$begin,$size]=slice_util_exports.parseSliceParams(x,begin,size);slice_util_exports.assertParamsValid(x,$begin,$size);let vals=backend2.data.get(x.dataId).values,outVals=sliceImpl(vals,$begin,$size,x.shape,x.dtype);return backend2.makeTensorInfo($size,x.dtype,outVals)}var sliceConfig={kernelName:Slice,backendName:"cpu",kernelFunc:slice2};var squaredDifferenceImpl=createSimpleBinaryKernelImpl((a,b)=>{let diff=a-b;return diff*diff}),squaredDifference2=binaryKernelFunc(SquaredDifference,squaredDifferenceImpl),squaredDifferenceConfig={kernelName:SquaredDifference,backendName:"cpu",kernelFunc:squaredDifference2};function stridedSliceImpl(outShape,xBuf,strides,begin){let outBuf=buffer(outShape,xBuf.dtype);for(let i=0;iaValue-bValue),subComplexImpl=createComplexBinaryKernelImpl((aReal,aImag,bReal,bImag)=>({real:aReal-bReal,imag:aImag-bImag})),sub2=binaryKernelFunc(Sub,subImpl,subComplexImpl),subConfig={kernelName:Sub,backendName:"cpu",kernelFunc:sub2};function tileImpl(xBuf,reps){let newShape=new Array(xBuf.rank);for(let i=0;ib2.value-a.value);let outOffset=b*k,topKVals=allTopKVals.subarray(outOffset,outOffset+k),topKIndices=allTopKIndices.subarray(outOffset,outOffset+k);for(let i=0;i{for(let m=0;mnew MathBackendCPU,1);var elu4=unaryKernelFunc(Elu,xi=>xi>=0?xi:Math.exp(xi)-1),eluConfig={kernelName:Elu,backendName:"cpu",kernelFunc:elu4};function leakyRelu2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{alpha}=attrs;assertNotComplex([x],"leakyRelu");let xSize=util_exports.sizeFromShape(x.shape),xVals=backend2.data.get(x.dataId).values,outVals=util_exports.getTypedArrayFromDType("float32",xSize);for(let i=0;ixValue<0?aValue*xValue:xValue);function prelu3(args){let{inputs,backend:backend2}=args,{x,alpha}=inputs;assertNotComplex([x,alpha],"prelu");let aVals=backend2.data.get(x.dataId).values,bVals=backend2.data.get(alpha.dataId).values,[resultData,resultShape]=preluImpl(x.shape,alpha.shape,aVals,bVals,x.dtype);return backend2.makeTensorInfo(resultShape,x.dtype,resultData)}var preluConfig={kernelName:Prelu,backendName:"cpu",kernelFunc:prelu3};var relu2=unaryKernelFunc(Relu,xi=>Math.max(0,xi)),reluConfig={kernelName:Relu,backendName:"cpu",kernelFunc:relu2};var relu62=unaryKernelFunc(Relu6,xi=>Math.min(Math.max(0,xi),6)),relu6Config={kernelName:Relu6,backendName:"cpu",kernelFunc:relu62};function applyActivation2(backend2,x,activation2,preluActivationWeights,leakyreluAlpha){if(activation2==="linear")return identity2({inputs:{x},backend:backend2});if(activation2==="relu")return relu2({inputs:{x},backend:backend2});if(activation2==="elu")return elu4({inputs:{x},backend:backend2});if(activation2==="relu6")return relu62({inputs:{x},backend:backend2});if(activation2==="prelu")return prelu3({inputs:{x,alpha:preluActivationWeights},backend:backend2});if(activation2==="leakyrelu")return leakyRelu2({inputs:{x},backend:backend2,attrs:{alpha:leakyreluAlpha}});throw new Error(`Activation ${activation2} has not been implemented for the CPU backend.`)}function reshape3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{shape}=attrs,xSize=util_exports.sizeFromShape(x.shape),$shape=util_exports.inferFromImplicitShape(shape,xSize),$xSize=util_exports.sizeFromShape($shape);util_exports.assert(xSize===$xSize,()=>`The new shape (${$shape}) has ${$xSize} elements and the old shape (${x.shape}) has ${xSize} elements. The new shape and old shape must have the same number of elements.`),backend2.incRef(x.dataId);let xData=backend2.data.get(x.dataId);if(xData.complexTensorInfos!=null){let real4=xData.complexTensorInfos.real,imag4=xData.complexTensorInfos.imag;real4.shape=$shape,imag4.shape=$shape}return{dataId:x.dataId,shape:$shape,dtype:x.dtype}}var reshapeConfig={kernelName:Reshape,backendName:"cpu",kernelFunc:reshape3};function batchMatMul(args){let{inputs,backend:backend2,attrs}=args,{a,b}=inputs,{transposeA,transposeB}=attrs;assertNotComplex([a,b],"matMul");let aRank=a.shape.length,bRank=b.shape.length,innerShapeA=transposeA?a.shape[aRank-2]:a.shape[aRank-1],innerShapeB=transposeB?b.shape[bRank-1]:b.shape[bRank-2],outerShapeA=transposeA?a.shape[aRank-1]:a.shape[aRank-2],outerShapeB=transposeB?b.shape[bRank-2]:b.shape[bRank-1],outerDimsA=a.shape.slice(0,-2),outerDimsB=b.shape.slice(0,-2),batchDimA=util_exports.sizeFromShape(outerDimsA),batchDimB=util_exports.sizeFromShape(outerDimsB),batchDimsCompatible=batchDimA===batchDimB||batchDimA===1||batchDimB===1;util_exports.assert(aRank>=2&&bRank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`);let outShape=(batchDimA>batchDimB?a.shape.slice(0,-2):b.shape.slice(0,-2)).concat([outerShapeA,outerShapeB]);util_exports.assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${a.shape} and ${b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let a3dShape=transposeA?[batchDimA,innerShapeA,outerShapeA]:[batchDimA,outerShapeA,innerShapeA],b3dShape=transposeB?[batchDimB,outerShapeB,innerShapeB]:[batchDimB,innerShapeB,outerShapeB],a3d=reshape3({inputs:{x:a},backend:backend2,attrs:{shape:a3dShape}}),b3d=reshape3({inputs:{x:b},backend:backend2,attrs:{shape:b3dShape}}),sharedDim=transposeA?a3d.shape[1]:a3d.shape[2],leftDim=transposeA?a3d.shape[2]:a3d.shape[1],rightDim=transposeB?b3d.shape[1]:b3d.shape[2],batchDim=Math.max(batchDimA,batchDimB),a3dValues=backend2.data.get(a3d.dataId).values,b3dValues=backend2.data.get(b3d.dataId).values,a3dStrides=util_exports.computeStrides(a3d.shape),b3dStrides=util_exports.computeStrides(b3d.shape),[aBatch,aOuterStep,aInnerStep]=transposeA?[a3dStrides[0],1,a3dStrides[1]]:[a3dStrides[0],a3dStrides[1],1],[bInnerStep,bOuterStep,bBatch]=transposeB?[1,b3dStrides[1],b3dStrides[0]]:[b3dStrides[1],1,b3dStrides[0]],size=leftDim*rightDim,result=buffer([batchDim,leftDim,rightDim],a3d.dtype),resVals=result.values,blockSize=backend2.blockSize;for(let bi=0;biMath.acos(xi)),acosConfig={kernelName:Acos,backendName:"cpu",kernelFunc:acos2};var acosh2=unaryKernelFunc(Acosh,xi=>Math.acosh(xi)),acoshConfig={kernelName:Acosh,backendName:"cpu",kernelFunc:acosh2};function addN2(args){let{inputs,backend:backend2}=args,tensors=inputs;assertNotComplex(inputs,"addN");let vals=tensors.map(t=>backend2.data.get(t.dataId).values),outBuf=buffer(tensors[0].shape,tensors[0].dtype),outVals=outBuf.values;for(let i=0;imax6&&(max6=value,maxIndex=j)}vals[i]=maxIndex}return intermediateTensorInfos.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),backend2.makeTensorInfo(outShape,"int32",vals)}var argMaxConfig={kernelName:ArgMax,backendName:"cpu",kernelFunc:argMax2};function argMin2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{axis}=attrs;assertNotComplex(x,"argMin");let axes=util_exports.parseAxisParam(axis,x.shape),permutedAxes=backend_util_exports.getAxesPermutation(axes,x.shape.length),$x=x,intermediateTensorInfos=[];permutedAxes!=null&&($x=transpose2({inputs:{x},backend:backend2,attrs:{perm:permutedAxes}}),intermediateTensorInfos.push($x),axes=backend_util_exports.getInnerMostAxes(axes.length,$x.shape.length)),axes=[axes[0]],backend_util_exports.assertAxesAreInnerMostDims("argMin",axes,$x.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes($x.shape,axes),outSize=util_exports.sizeFromShape(outShape),vals=util_exports.makeZerosTypedArray(outSize,"int32"),reduceSize=util_exports.sizeFromShape(reduceShape),aVals=backend2.data.get($x.dataId).values;for(let i=0;ibackend2.disposeIntermediateTensorInfo(t)),backend2.makeTensorInfo(outShape,"int32",vals)}var argMinConfig={kernelName:ArgMin,backendName:"cpu",kernelFunc:argMin2};var asin2=unaryKernelFunc(Asin,xi=>Math.asin(xi)),asinConfig={kernelName:Asin,backendName:"cpu",kernelFunc:asin2};var asinh2=unaryKernelFunc(Asinh,xi=>Math.asinh(xi)),asinhConfig={kernelName:Asinh,backendName:"cpu",kernelFunc:asinh2};var atan3=unaryKernelFunc(Atan,xi=>Math.atan(xi)),atanConfig={kernelName:Atan,backendName:"cpu",kernelFunc:atan3};var atan2Impl=createSimpleBinaryKernelImpl((aValue,bValue)=>Math.atan2(aValue,bValue)),atan22=binaryKernelFunc(Atan2,atan2Impl),atan2Config={kernelName:Atan2,backendName:"cpu",kernelFunc:atan22};var atanh2=unaryKernelFunc(Atanh,xi=>Math.atanh(xi)),atanhConfig={kernelName:Atanh,backendName:"cpu",kernelFunc:atanh2};function pool2(xValues,xShape,dtype,strides,convInfo,poolType){let strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,initialValue=poolType==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,output=buffer(convInfo.outShape,dtype),outputVals=output.values,outputBatchStrides=convInfo.outShape[1]*convInfo.outShape[2]*convInfo.outShape[3],outputRowStrides=convInfo.outShape[2]*convInfo.outShape[3],outputColStrides=convInfo.outShape[3];for(let b=0;bminMaxValue?minMaxValue=pixel:poolType==="avg"&&(avgValue+=pixel,count2++)}if(isNaN(minMaxValue))break}let outputOffset=outputRowOffset+yC*outputColStrides+d;outputVals[outputOffset]=poolType==="avg"?avgValue/count2:minMaxValue}}}return output}function maxPoolPositions(xValues,xShape,dtype,convInfo,flattenPositions=!1,includeBatchInIndex=!1){let maxPositions=buffer(convInfo.outShape,"int32"),strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,xBuf=buffer(xShape,dtype,xValues);for(let b=0;bmaxValue&&(maxValue=pixel,flattenPositions?maxPosition=includeBatchInIndex?((b*convInfo.inHeight+xR)*convInfo.inWidth+xC)*convInfo.inChannels+d:(xR*convInfo.inWidth+xC)*convInfo.inChannels+d:maxPosition=wR*effectiveFilterWidth+wC)}}maxPositions.set(maxPosition,b,yR,yC,d)}}return maxPositions}function pool3d2(xValues,xShape,dtype,strides,convInfo,poolType){let strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=convInfo.padInfo.front,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,initialValue=poolType==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,output=buffer(convInfo.outShape,dtype),outputVals=output.values,outputBatchStrides=convInfo.outShape[1]*convInfo.outShape[2]*convInfo.outShape[3]*convInfo.outShape[4],outputDepthStrides=convInfo.outShape[2]*convInfo.outShape[3]*convInfo.outShape[4],outputRowStrides=convInfo.outShape[3]*convInfo.outShape[4],outputColStrides=convInfo.outShape[4];for(let batch=0;batchminMaxValue?minMaxValue=pixel:poolType==="avg"&&(avgValue+=pixel,count2++),isNaN(minMaxValue))break}if(isNaN(minMaxValue))break}if(isNaN(minMaxValue))break}let outputOffset=outputColOffset+channel;outputVals[outputOffset]=poolType==="avg"?avgValue/count2:minMaxValue}}}}return output}function maxPool3dPositions(xBuf,convInfo){let maxPositions=buffer(convInfo.outShape,"int32"),strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=convInfo.padInfo.front,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left;for(let batch=0;batch=maxValue&&(maxValue=pixel,maxPosition=wDepth*effectiveFilterHeight*effectiveFilterWidth+wRow*effectiveFilterHeight+wCol)}}}maxPositions.set(maxPosition,batch,yDepth,yRow,yCol,channel)}}}return maxPositions}function avgPool2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs;assertNotComplex(x,"avgPool");let{filterSize,strides,pad:pad3,dimRoundingMode}=attrs,dilations=1;util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad3,dimRoundingMode),res;if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))res=identity2({inputs:{x},backend:backend2});else{let xValues=backend2.data.get(x.dataId).values,strides2=util_exports.computeStrides(x.shape),buffer2=pool2(xValues,x.shape,x.dtype,strides2,convInfo,"avg");res=backend2.makeTensorInfo(convInfo.outShape,x.dtype,buffer2.values)}return res}var avgPoolConfig={kernelName:AvgPool,backendName:"cpu",kernelFunc:avgPool2};function avgPool3D(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{filterSize,strides,pad:pad3,dimRoundingMode,dataFormat,dilations}=attrs;assertNotComplex(x,"avgPool3d");let $dilations=dilations;$dilations==null&&($dilations=[1,1,1]);let convInfo=backend_util_exports.computePool3DInfo(x.shape,filterSize,strides,$dilations,pad3,dimRoundingMode,dataFormat),xValues=backend2.data.get(x.dataId).values,outBuf=pool3d2(xValues,x.shape,x.dtype,util_exports.computeStrides(x.shape),convInfo,"avg");return backend2.makeTensorInfo(outBuf.shape,"float32",outBuf.values)}var avgPool3DConfig={kernelName:AvgPool3D,backendName:"cpu",kernelFunc:avgPool3D};function avgPool3DGrad(args){let{inputs,backend:backend2,attrs}=args,{dy,input:input2}=inputs,{filterSize,strides,pad:pad3,dilations,dimRoundingMode}=attrs;assertNotComplex([dy,input2],"avgPool3DGrad");let convInfo=backend_util_exports.computePool3DInfo(input2.shape,filterSize,strides,dilations,pad3,dimRoundingMode),strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,filterDepth=convInfo.filterDepth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=effectiveFilterDepth-1-convInfo.padInfo.front,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(input2.shape,"float32"),avgMultiplier=1/(filterDepth*filterHeight*filterWidth),dyBuf=backend2.bufferSync(dy);for(let batch=0;batch=convInfo.outDepth||Math.floor(dyDepth)!==dyDepth))for(let wRow=0;wRow=convInfo.outHeight||Math.floor(dyRow)!==dyRow))for(let wCol=0;wCol=convInfo.outWidth||Math.floor(dyCol)!==dyCol)continue;dotProd+=dyBuf.get(batch,dyDepth,dyRow,dyCol,channel)}}}dx.set(dotProd*avgMultiplier,batch,dxDepth,dxRow,dxCol,channel)}return backend2.makeTensorInfo(dx.shape,dx.dtype,dx.values)}var avgPool3DGradConfig2={kernelName:AvgPool3DGrad,backendName:"cpu",kernelFunc:avgPool3DGrad};function avgPoolGrad2(args){let{inputs,backend:backend2,attrs}=args,{dy,input:input2}=inputs,x=input2;assertNotComplex([dy,input2],"avgPoolGrad");let{filterSize,strides,pad:pad3}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad3),strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),avgMultiplier=1/(filterHeight*filterWidth),dyData=backend2.data.get(dy.dataId).values,dyBuf=buffer(dy.shape,"float32",dyData);for(let b=0;b=convInfo.outHeight||Math.floor(dyR)!==dyR))for(let wC=0;wC=convInfo.outWidth||Math.floor(dyC)!==dyC)continue;dotProd+=dyBuf.get(b,dyR,dyC,d)}}dx.set(dotProd*avgMultiplier,b,dxR,dxC,d)}return backend2.makeTensorInfo(dx.shape,dx.dtype,dx.values)}var avgPoolGradConfig2={kernelName:AvgPoolGrad,backendName:"cpu",kernelFunc:avgPoolGrad2};function batchNorm2(args){let{inputs,backend:backend2,attrs}=args,{x,scale:scale2,offset,mean:mean4,variance}=inputs;util_exports.assert(mean4.shape.length===variance.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),util_exports.assert(offset==null||mean4.shape.length===offset.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),util_exports.assert(scale2==null||mean4.shape.length===scale2.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks."),assertNotComplex([x,mean4,variance,scale2,offset],"batchNorm");let{varianceEpsilon}=attrs;varianceEpsilon==null&&(varianceEpsilon=.001);let xVals=backend2.data.get(x.dataId).values,mVals=backend2.data.get(mean4.dataId).values,varVals=backend2.data.get(variance.dataId).values,sVals=scale2?backend2.data.get(scale2.dataId).values:new Float32Array([1]),offVals=offset?backend2.data.get(offset.dataId).values:new Float32Array([0]),outVals=new Float32Array(xVals.length),offValsLength=offVals.length,sValsLength=sVals.length,varValsLength=varVals.length,mValsLength=mVals.length,offi=0,mi=0,si=0,vi=0;for(let i=0;i=offValsLength&&(offi=0),mi>=mValsLength&&(mi=0),si>=sValsLength&&(si=0),vi>=varValsLength&&(vi=0);return backend2.makeTensorInfo(x.shape,x.dtype,outVals)}var batchNormConfig={kernelName:FusedBatchNorm,backendName:"cpu",kernelFunc:batchNorm2};function batchToSpaceND2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{blockShape,crops}=attrs;assertNotComplex([x],"batchToSpaceND");let prod5=blockShape.reduce((a,b)=>a*b),reshaped=backend_util_exports.getReshaped(x.shape,blockShape,prod5),permuted=backend_util_exports.getPermuted(reshaped.length,blockShape.length),reshapedPermuted=backend_util_exports.getReshapedPermuted(x.shape,blockShape,prod5),sliceBeginCoords=backend_util_exports.getSliceBeginCoords(crops,blockShape.length),sliceSize=backend_util_exports.getSliceSize(reshapedPermuted,crops,blockShape.length),xReshaped=reshape3({inputs:{x},backend:backend2,attrs:{shape:reshaped}}),xTransposed=transpose2({inputs:{x:xReshaped},backend:backend2,attrs:{perm:permuted}}),xTransposedReshaped=reshape3({inputs:{x:xTransposed},backend:backend2,attrs:{shape:reshapedPermuted}}),result=slice2({inputs:{x:xTransposedReshaped},backend:backend2,attrs:{begin:sliceBeginCoords,size:sliceSize}});return backend2.disposeIntermediateTensorInfo(xReshaped),backend2.disposeIntermediateTensorInfo(xTransposed),backend2.disposeIntermediateTensorInfo(xTransposedReshaped),result}var batchToSpaceNDConfig={kernelName:BatchToSpaceND,backendName:"cpu",kernelFunc:batchToSpaceND2};function bincount2(args){let{inputs,backend:backend2,attrs}=args,{x,weights}=inputs,{size}=attrs,xVals=backend2.data.get(x.dataId).values,weightsVals=backend2.data.get(weights.dataId).values,outVals=bincountImpl(xVals,weightsVals,weights.dtype,weights.shape,size);return backend2.makeTensorInfo([size],weights.dtype,outVals)}var bincountConfig={kernelName:Bincount,backendName:"cpu",kernelFunc:bincount2};var clip=unaryKernelFunc(ClipByValue,(xi,attrs)=>{let clipAttrs=attrs;return xi>clipAttrs.clipValueMax?clipAttrs.clipValueMax:xi{let{x}=args.inputs,cpuBackend=args.backend,resultValues=new Float32Array(util_exports.sizeFromShape(x.shape)),complexVals=cpuBackend.data.get(x.dataId),real4=complexVals.complexTensorInfos.real,imag4=complexVals.complexTensorInfos.imag,realVals=cpuBackend.data.get(real4.dataId).values,imagVals=cpuBackend.data.get(imag4.dataId).values;for(let i=0;it.shape),$axis);if(util_exports.sizeFromShape(outShape)===0)return backend2.makeTensorInfo(outShape,inputs[0].dtype,[]);let $inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return identity2({inputs:{x:$inputs[0]},backend:backend2});let shapes=$inputs.map(t=>t.shape);if(backend_util_exports.assertParamsConsistent(shapes,$axis),$inputs[0].dtype==="complex64"){let reals=$inputs.map(t=>real2({inputs:{input:t},backend:backend2})),imags=$inputs.map(t=>imag2({inputs:{input:t},backend:backend2})),realConcated=concat2({inputs:reals,backend:backend2,attrs:{axis:$axis}}),imagConcated=concat2({inputs:imags,backend:backend2,attrs:{axis:$axis}}),result=complex2({inputs:{real:realConcated,imag:imagConcated},backend:backend2});return reals.forEach(r=>backend2.disposeIntermediateTensorInfo(r)),imags.forEach(i=>backend2.disposeIntermediateTensorInfo(i)),backend2.disposeIntermediateTensorInfo(realConcated),backend2.disposeIntermediateTensorInfo(imagConcated),result}let inputs2D=$inputs.map(t=>{let innerSize=util_exports.sizeFromShape(t.shape.slice($axis));return reshape3({inputs:{x:t},backend:backend2,attrs:{shape:[-1,innerSize]}})}),inputsValShapes=inputs2D.map(t=>({vals:backend2.data.get(t.dataId).values,shape:t.shape}));outShape=backend_util_exports.computeOutShape(inputs2D.map(t=>t.shape),1);let simplyConcat=inputs2D[0].shape[0]===1,outVals=concatImpl(inputsValShapes,outShape,inputs[0].dtype,simplyConcat),finalOutShape=backend_util_exports.computeOutShape($inputs.map(t=>t.shape),$axis),outInfo=backend2.makeTensorInfo(finalOutShape,inputs[0].dtype,outVals);return inputs2D.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),outInfo}var concatConfig={kernelName:Concat,backendName:"cpu",kernelFunc:concat2};function conv2D(args){let{inputs,backend:backend2,attrs}=args,{x,filter}=inputs,{strides,pad:pad3,dataFormat,dilations,dimRoundingMode}=attrs;assertNotComplex([x,filter],"conv2d");let $dataFormat=backend_util_exports.convertConv2DDataFormat(dataFormat),convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad3,dimRoundingMode,!1,$dataFormat),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,padLeft=convInfo.padInfo.left,padTop=convInfo.padInfo.top,isChannelsLast=convInfo.dataFormat==="channelsLast",y=new TensorBuffer(convInfo.outShape,x.dtype),xStrides=util_exports.computeStrides(x.shape),filterStrides=util_exports.computeStrides(filter.shape),xBatchStride=xStrides[0],xRowStride=isChannelsLast?xStrides[1]:xStrides[2],xColStride=isChannelsLast?xStrides[2]:1,xChannelStride=isChannelsLast?1:xStrides[1],yBatchStride=y.strides[0],yRowStride=isChannelsLast?y.strides[1]:y.strides[2],yColStride=isChannelsLast?y.strides[2]:1,yChannelStride=isChannelsLast?1:y.strides[1],xVals=backend2.data.get(x.dataId).values,wVals=backend2.data.get(filter.dataId).values,yVals=y.values;for(let b=0;b=convInfo.inHeight)continue;let wOffset1=wR*filterStrides[0],xOffset2=xOffset1+xR*xRowStride;for(let yC=0;yC=convInfo.inWidth)continue;let wOffset2=wOffset1+wC*filterStrides[1],xOffset3=xOffset2+xC*xColStride,wOffset3=wOffset2;for(let d1=0;d1=convInfo.inDepth)continue;let wOffset1=wF*filterStrides[0],xOffset2=xOffset1+xF*xStrides[1];for(let yR=0;yR=convInfo.inHeight)continue;let wOffset2=wOffset1+wR*filterStrides[1],xOffset3=xOffset2+xR*xStrides[2];for(let yC=0;yC=convInfo.inWidth)continue;let wOffset3=wOffset2+wC*filterStrides[2],xOffset4=xOffset3+xC*convInfo.inChannels,wOffset4=wOffset3;for(let d1=0;d1Math.cos(xi)),cosConfig={kernelName:Cos,backendName:"cpu",kernelFunc:cos2};var cosh2=unaryKernelFunc(Cosh,xi=>Math.cosh(xi)),coshConfig={kernelName:Cosh,backendName:"cpu",kernelFunc:cosh2};function cropAndResize2(args){let{inputs,backend:backend2,attrs}=args,{image:image3,boxes,boxInd}=inputs,{cropSize,method,extrapolationValue}=attrs,[batch,imageHeight,imageWidth,numChannels]=image3.shape,numBoxes=boxes.shape[0],[cropHeight,cropWidth]=cropSize,output=buffer([numBoxes,cropHeight,cropWidth,numChannels],"float32"),boxVals=backend2.data.get(boxes.dataId).values,boxIndVals=backend2.data.get(boxInd.dataId).values,imageVals=backend2.data.get(image3.dataId).values,inStride=util_exports.computeStrides(image3.shape),outStride=util_exports.computeStrides(output.shape);for(let b=0;b=batch)continue;let heightScale=cropHeight>1?(y2-y1)*(imageHeight-1)/(cropHeight-1):0,widthScale=cropWidth>1?(x2-x1)*(imageWidth-1)/(cropWidth-1):0;for(let y=0;y1?y1*(imageHeight-1)+y*heightScale:.5*(y1+y2)*(imageHeight-1);if(yInd<0||yInd>imageHeight-1){for(let x=0;x1?x1*(imageWidth-1)+x*widthScale:.5*(x1+x2)*(imageWidth-1);if(xInd<0||xInd>imageWidth-1){for(let c=0;c1?x1*(imageWidth-1)+x*widthScale:.5*(x1+x2)*(imageWidth-1);if(xInd<0||xInd>imageWidth-1){for(let c=0;ci+finalDim-j-1:(i,j)=>i+j;for(let i=0;i`Only NHWC dataFormat supported on CPU for depthToSpace. Got ${dataFormat}`),util_exports.assert(blockSize>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=x.shape[1],inputWidth=x.shape[2],inputDepth=x.shape[3],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),xValues=backend2.data.get(x.dataId).values,result=new Float32Array(batchSize*outputHeight*outputWidth*outputDepth),outputIdx=0;for(let b=0;b`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${$dilations}'`);let convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,$dilations,pad3,dimRoundingMode,!0),{filterHeight,filterWidth,dilationHeight,dilationWidth,padInfo}=convInfo,padLeft=padInfo.left,padTop=padInfo.top,chMul=convInfo.outChannels/convInfo.inChannels,y=new TensorBuffer(convInfo.outShape,x.dtype),xVals=backend2.data.get(x.dataId).values,wVals=backend2.data.get(filter.dataId).values,yVals=y.values;for(let b=0;b=convInfo.inHeight)continue;let wOffset1=wR*filterStrides[0],xOffset2=xOffset1+xR*xStrides[1];for(let yC=0;yC=convInfo.inWidth)continue;let wOffset2=wOffset1+wC*filterStrides[1],xOffset3=xOffset2+xC*convInfo.inChannels,yOffset4=yOffset3,wOffset3=wOffset2;for(let d1=0;d1{let{x,filter}=inputs,{strides,pad:pad3,dilations}=attrs,cpuBackend=backend2,xVals=cpuBackend.data.get(x.dataId).values,xRank=x.shape.length,filterVals=cpuBackend.data.get(filter.dataId).values,filterRank=filter.shape.length,{batchSize,inHeight,inWidth,inChannels,outHeight,outWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth,outShape}=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad3,"NHWC",dilations),outSize=util_exports.sizeFromShape(outShape),outRank=outShape.length,outputVals=util_exports.getArrayFromDType(x.dtype,outSize);for(let b=0;b=0&&hIn=0&&wIncurVal&&(curVal=val)}}}let outputIndex=util_exports.locToIndex([b,hOut,wOut,d],outRank,util_exports.computeStrides(outShape));outputVals[outputIndex]=curVal}}}return{dataId:cpuBackend.write(util_exports.toTypedArray(outputVals,x.dtype),outShape,x.dtype),shape:outShape,dtype:x.dtype}}};var dilation2dBackpropFilterConfig={kernelName:Dilation2DBackpropFilter,backendName:"cpu",kernelFunc:({inputs,backend:backend2,attrs})=>{let{x,filter,dy}=inputs,{strides,pad:pad3,dilations}=attrs,cpuBackend=backend2,$x=util_exports.toNestedArray(x.shape,cpuBackend.data.get(x.dataId).values),$filter=util_exports.toNestedArray(filter.shape,cpuBackend.data.get(filter.dataId).values),{batchSize,inHeight,inWidth,inChannels,outHeight,outWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth,outShape}=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad3,"NHWC",dilations);util_exports.assert(dy.rank===outShape.length,()=>`Error in ${Dilation2DBackpropFilter}, dy must have the same rank as output ${outShape.length}, but got ${dy.rank}`);let $dy=util_exports.toNestedArray(outShape,cpuBackend.data.get(dy.dataId).values),gradients=util_exports.makeZerosNestedTypedArray(filter.shape,filter.dtype);for(let b=0;b=0&&hIn=0&&wIncurVal&&(curVal=val,hMax=h,wMax=w)}}}gradients[hMax][wMax][d]+=$dy[b][hOut][wOut][d]}}}return{dataId:cpuBackend.write(util_exports.toTypedArray(gradients,x.dtype),filter.shape,filter.dtype),shape:filter.shape,dtype:filter.dtype}}};var dilation2dBackpropInputConfig={kernelName:Dilation2DBackpropInput,backendName:"cpu",kernelFunc:({inputs,backend:backend2,attrs})=>{let{x,filter,dy}=inputs,{strides,pad:pad3,dilations}=attrs,cpuBackend=backend2,$x=util_exports.toNestedArray(x.shape,cpuBackend.data.get(x.dataId).values),$filter=util_exports.toNestedArray(filter.shape,cpuBackend.data.get(filter.dataId).values),{batchSize,inHeight,inWidth,inChannels,outHeight,outWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth,outShape}=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad3,"NHWC",dilations);util_exports.assert(dy.rank===outShape.length,()=>`Error in ${Dilation2DBackpropInput}, dy must have the same rank as output ${outShape.length}, but got ${dy.rank}`);let $dy=util_exports.toNestedArray(outShape,cpuBackend.data.get(dy.dataId).values),gradients=util_exports.makeZerosNestedTypedArray(x.shape,x.dtype);for(let b=0;b=0&&hIn=0&&wIncurVal&&(curVal=val,hInMax=hIn,wInMax=wIn)}}}gradients[b][hInMax][wInMax][d]+=$dy[b][hOut][wOut][d]}}}return{dataId:cpuBackend.write(util_exports.toTypedArray(gradients,x.dtype),x.shape,x.dtype),shape:x.shape,dtype:x.dtype}}};function eluGrad(args){let{inputs,backend:backend2}=args,{dy,y}=inputs;assertNotComplex([dy,y],"eluGrad");let resultValues=new Float32Array(util_exports.sizeFromShape(y.shape)),values=backend2.data.get(y.dataId).values,dyValues=backend2.data.get(dy.dataId).values;for(let i=0;i=1?resultValues[i]=dyValues[i]:resultValues[i]=dyValues[i]*(v+1)}return backend2.makeTensorInfo(y.shape,"float32",resultValues)}var eluGradConfig2={kernelName:EluGrad,backendName:"cpu",kernelFunc:eluGrad};var equalImpl=createSimpleBinaryKernelImpl((a,b)=>a===b?1:0),equal2=binaryKernelFunc(Equal,equalImpl,null,"bool"),equalConfig={kernelName:Equal,backendName:"cpu",kernelFunc:equal2};var p=backend_util_exports.ERF_P,a1=backend_util_exports.ERF_A1,a2=backend_util_exports.ERF_A2,a3=backend_util_exports.ERF_A3,a4=backend_util_exports.ERF_A4,a5=backend_util_exports.ERF_A5,erf2=unaryKernelFunc(Erf,xi=>{let sign4=Math.sign(xi),v=Math.abs(xi),t=1/(1+p*v);return sign4*(1-((((a5*t+a4)*t+a3)*t+a2)*t+a1)*t*Math.exp(-v*v))}),erfConfig={kernelName:Erf,backendName:"cpu",kernelFunc:erf2};function expandDims3(args){let{inputs,backend:backend2,attrs}=args,{input:input2}=inputs,{dim}=attrs,inputRank=input2.shape.length,newShape=input2.shape.slice(),$dim=dim;return dim<0&&(util_exports.assert(-(inputRank+1)<=dim,()=>`Axis must be in the interval [${-(inputRank+1)}, ${inputRank}]`),$dim=inputRank+dim+1),newShape.splice($dim,0,1),reshape3({inputs:{x:input2},backend:backend2,attrs:{shape:newShape}})}var expandDimsConfig={kernelName:ExpandDims,backendName:"cpu",kernelFunc:expandDims3};var realDivImpl=createSimpleBinaryKernelImpl((a,b)=>a/b),div2=binaryKernelFunc(RealDiv,realDivImpl),realDivConfig={kernelName:RealDiv,backendName:"cpu",kernelFunc:div2};function fftBatch(input2,inverse,cpuBackend){let inputShape=input2.shape,batch=inputShape[0],innerDim=inputShape[1],inputVals=cpuBackend.data.get(input2.dataId),real2D=inputVals.complexTensorInfos.real,imag2D=inputVals.complexTensorInfos.imag,resultShape=[batch,innerDim],resultSize=util_exports.sizeFromShape(resultShape),resultReal=util_exports.getTypedArrayFromDType("float32",resultSize),resultImag=util_exports.getTypedArrayFromDType("float32",resultSize);for(let b=0;b{let{image:image3}=inputs,cpuBackend=backend2,output=util_exports.getTypedArrayFromDType(image3.dtype,util_exports.sizeFromShape(image3.shape)),[batch,imageHeight,imageWidth,numChannels]=image3.shape,imageVals=cpuBackend.data.get(image3.dataId).values;for(let batchIdx=0;batchIdx=0&&coordXMath.floor(a/b)),floorDiv2=binaryKernelFunc(FloorDiv,floorDivImpl,null,"int32"),floorDivConfig={kernelName:FloorDiv,backendName:"cpu",kernelFunc:floorDiv2};function fusedConv2D(args){let{inputs,backend:backend2,attrs}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad3,dataFormat,dilations,dimRoundingMode,activation:activation2,leakyreluAlpha}=attrs,result=conv2D({inputs:{x,filter},backend:backend2,attrs:{strides,pad:pad3,dataFormat,dilations,dimRoundingMode}});if(bias){let resultOld=result;result=add4({inputs:{a:result,b:bias},backend:backend2}),backend2.disposeIntermediateTensorInfo(resultOld)}if(activation2){let resultOld=result;result=applyActivation2(backend2,result,activation2,preluActivationWeights,leakyreluAlpha),backend2.disposeIntermediateTensorInfo(resultOld)}return result}var fusedConv2DConfig={kernelName:FusedConv2D,backendName:"cpu",kernelFunc:fusedConv2D};function fusedDepthwiseConv2D(args){let{inputs,backend:backend2,attrs}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad3,dataFormat,dilations,dimRoundingMode,activation:activation2,leakyreluAlpha}=attrs,result=depthwiseConv2dNative({inputs:{x,filter},backend:backend2,attrs:{strides,pad:pad3,dataFormat,dilations,dimRoundingMode}});if(bias){let oldResult=result;result=add4({inputs:{a:result,b:bias},backend:backend2}),backend2.disposeIntermediateTensorInfo(oldResult)}if(activation2){let oldResult=result;result=applyActivation2(backend2,result,activation2,preluActivationWeights,leakyreluAlpha),backend2.disposeIntermediateTensorInfo(oldResult)}return result}var fusedDepthwiseConv2DConfig={kernelName:FusedDepthwiseConv2D,backendName:"cpu",kernelFunc:fusedDepthwiseConv2D};function gatherNd(args){let{inputs,backend:backend2}=args,{params,indices}=inputs,paramsSize=util_exports.sizeFromShape(params.shape),indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],[resultShape,numSlices,sliceSize,strides]=backend_util_exports.prepareAndValidate(params,indices);if(numSlices===0)return backend2.makeTensorInfo(resultShape,params.dtype,[]);let outBuf=buffer([numSlices,sliceSize],params.dtype),indicesData=backend2.data.get(indices.dataId).values,paramsData=backend2.data.get(params.dataId).values;for(let i=0;i=paramsSize/sliceSize)throw new Error(`Invalid indices: ${index} does not index into ${params.shape}`);for(let k=0;ka>=b?1:0),greaterEqual2=binaryKernelFunc(GreaterEqual,greaterEqualImpl,null,"bool"),greaterEqualConfig={kernelName:GreaterEqual,backendName:"cpu",kernelFunc:greaterEqual2};function ifft2(args){let{inputs,backend:backend2}=args,{input:input2}=inputs,inputSize=util_exports.sizeFromShape(input2.shape),innerDimensionSize=input2.shape[input2.shape.length-1],batch=inputSize/innerDimensionSize,input2D=reshape3({inputs:{x:input2},backend:backend2,attrs:{shape:[batch,innerDimensionSize]}}),result=fftBatch(input2D,!0,backend2),resultReshaped=reshape3({inputs:{x:result},backend:backend2,attrs:{shape:input2.shape}});return backend2.disposeIntermediateTensorInfo(input2D),backend2.disposeIntermediateTensorInfo(result),resultReshaped}var ifftConfig={kernelName:IFFT,backendName:"cpu",kernelFunc:ifft2};var isFinite3=unaryKernelFunc(IsFinite,xi=>Number.isFinite(xi)?1:0,"bool"),isFiniteConfig={kernelName:IsFinite,backendName:"cpu",kernelFunc:isFinite3};var isInf2=unaryKernelFunc(IsInf,xi=>Math.abs(xi)===Infinity?1:0,"bool"),isInfConfig={kernelName:IsInf,backendName:"cpu",kernelFunc:isInf2};var isNaN3=unaryKernelFunc(IsNan,xi=>Number.isNaN(xi)?1:0,"bool"),isNaNConfig={kernelName:IsNan,backendName:"cpu",kernelFunc:isNaN3};var lessEqualImpl=createSimpleBinaryKernelImpl((a,b)=>a<=b?1:0),lessEqual2=binaryKernelFunc(LessEqual,lessEqualImpl,null,"bool"),lessEqualConfig={kernelName:LessEqual,backendName:"cpu",kernelFunc:lessEqual2};function linSpace(args){let{backend:backend2,attrs}=args,{start,stop,num}=attrs,outVals=linSpaceImpl(start,stop,num);return backend2.makeTensorInfo([outVals.length],"float32",outVals)}var linSpaceConfig={kernelName:LinSpace,backendName:"cpu",kernelFunc:linSpace};var log1p2=unaryKernelFunc(Log1p,xi=>Math.log1p(xi)),log1pConfig={kernelName:Log1p,backendName:"cpu",kernelFunc:log1p2};var logicalAndImpl=createSimpleBinaryKernelImpl((a,b)=>a&&b),logicalAnd2=binaryKernelFunc(LogicalAnd,logicalAndImpl,null,"bool"),logicalAndConfig={kernelName:LogicalAnd,backendName:"cpu",kernelFunc:logicalAnd2};var logicalNot2=unaryKernelFunc(LogicalNot,xi=>xi?0:1,"bool"),logicalNotConfig={kernelName:LogicalNot,backendName:"cpu",kernelFunc:logicalNot2};var logicalOrImpl=createSimpleBinaryKernelImpl((a,b)=>a||b),logicalOr2=binaryKernelFunc(LogicalOr,logicalOrImpl,null,"bool"),logicalOrConfig={kernelName:LogicalOr,backendName:"cpu",kernelFunc:logicalOr2};function lRN(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{depthRadius,bias,alpha,beta}=attrs;assertNotComplex(x,"LRN");let channels=x.shape[3],maxD=channels-1,xValues=backend2.data.get(x.dataId).values,size=util_exports.sizeFromShape(x.shape),result=new Float32Array(size);function sumAcrossChannels(offset){let currentChannel=offset%channels,beginSumOffset=offset-currentChannel+Math.max(0,currentChannel-depthRadius),endSumOffset=offset-currentChannel+Math.min(currentChannel+depthRadius,maxD),sum6=0;for(;beginSumOffset<=endSumOffset;beginSumOffset++){let z=xValues[beginSumOffset];sum6+=z*z}return sum6}for(let offset=0;offset`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad3,dimRoundingMode),res;if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))res=identity2({inputs:{x},backend:backend2});else{let xValues=backend2.data.get(x.dataId).values,strides2=util_exports.computeStrides(x.shape),buffer2=pool2(xValues,x.shape,x.dtype,strides2,convInfo,"max");res=backend2.makeTensorInfo(convInfo.outShape,x.dtype,buffer2.values)}return res}var maxPoolConfig={kernelName:MaxPool,backendName:"cpu",kernelFunc:maxPool2};function maxPool3D(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{filterSize,strides,pad:pad3,dimRoundingMode,dataFormat,dilations}=attrs;assertNotComplex(x,"maxPool3d");let $dilations=dilations;$dilations==null&&($dilations=[1,1,1]);let convInfo=backend_util_exports.computePool3DInfo(x.shape,filterSize,strides,$dilations,pad3,dimRoundingMode,dataFormat),xValues=backend2.data.get(x.dataId).values,outBuf=pool3d2(xValues,x.shape,x.dtype,util_exports.computeStrides(x.shape),convInfo,"max");return backend2.makeTensorInfo(outBuf.shape,"float32",outBuf.values)}var maxPool3DConfig={kernelName:MaxPool3D,backendName:"cpu",kernelFunc:maxPool3D};function maxPool3DGrad(args){let{inputs,backend:backend2,attrs}=args,{dy,input:input2}=inputs,{filterSize,strides,pad:pad3,dilations,dimRoundingMode}=attrs;assertNotComplex([dy,input2],"maxPool3DGrad");let convInfo=backend_util_exports.computePool3DInfo(input2.shape,filterSize,strides,dilations,pad3,dimRoundingMode),inputBuf=backend2.bufferSync(input2),maxPosBuf=maxPool3dPositions(inputBuf,convInfo),strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=effectiveFilterDepth-1-convInfo.padInfo.front,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(input2.shape,"float32"),dyBuf=backend2.bufferSync(dy);for(let batch=0;batch=convInfo.outDepth||Math.floor(dyDepth)!==dyDepth))for(let wRow=0;wRow=convInfo.outHeight||Math.floor(dyRow)!==dyRow))for(let wCol=0;wCol=convInfo.outWidth||Math.floor(dyCol)!==dyCol)continue;let maxPos=effectiveFilterDepth*effectiveFilterHeight*effectiveFilterWidth-1-maxPosBuf.get(batch,dyDepth,dyRow,dyCol,channel),curPos=wDepth*effectiveFilterHeight*effectiveFilterWidth+wRow*effectiveFilterWidth+wCol,mask=maxPos===curPos?1:0;if(mask===0)continue;dotProd+=dyBuf.get(batch,dyDepth,dyRow,dyCol,channel)*mask}}}dx.set(dotProd,batch,dxDepth,dxRow,dxCol,channel)}return backend2.makeTensorInfo(dx.shape,dx.dtype,dx.values)}var maxPool3DGradConfig2={kernelName:MaxPool3DGrad,backendName:"cpu",kernelFunc:maxPool3DGrad};function maxPoolGrad2(args){let{inputs,backend:backend2,attrs}=args,{dy,input:input2,output}=inputs,x=input2;assertNotComplex([input2,output],"maxPoolGrad");let{filterSize,strides,pad:pad3,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad3,dimRoundingMode),xValues=backend2.data.get(x.dataId).values,maxPosBuf=buffer(convInfo.outShape,x.dtype,maxPoolPositions(xValues,x.shape,x.dtype,convInfo).values),strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,dx=buffer(x.shape,"float32"),dyData=backend2.data.get(dy.dataId).values,dyBuf=buffer(dy.shape,"float32",dyData);for(let b=0;b=convInfo.outHeight||Math.floor(dyR)!==dyR))for(let wC=0;wC=convInfo.outWidth||Math.floor(dyC)!==dyC)continue;let maxPos=effectiveFilterHeight*effectiveFilterWidth-1-maxPosBuf.get(b,dyR,dyC,d),curPos=wR*effectiveFilterWidth+wC,mask=maxPos===curPos?1:0;if(mask===0)continue;dotProd+=dyBuf.get(b,dyR,dyC,d)*mask}}dx.set(dotProd,b,dxR,dxC,d)}return backend2.makeTensorInfo(dx.shape,dx.dtype,dx.values)}var maxPoolGradConfig2={kernelName:MaxPoolGrad,backendName:"cpu",kernelFunc:maxPoolGrad2};function maxPoolWithArgmaxImpl(xValues,xShape,dtype,includeBatchInIndex,convInfo){let strides=util_exports.computeStrides(xShape),maxPools=pool2(xValues,xShape,dtype,strides,convInfo,"max"),maxPositions=maxPoolPositions(xValues,xShape,dtype,convInfo,!0,includeBatchInIndex);return[maxPools.values,maxPositions.values]}var maxPoolWithArgmaxConfig={kernelName:MaxPoolWithArgmax,backendName:"cpu",kernelFunc:({inputs,attrs,backend:backend2})=>{let{x}=inputs,{filterSize,strides,pad:pad3,includeBatchInIndex}=attrs,cpuBackend=backend2;assertNotComplex(x,"MaxPoolWithArgmax");let values=cpuBackend.data.get(x.dataId).values,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,[1,1],pad3),[pooled,indexes]=maxPoolWithArgmaxImpl(values,x.shape,x.dtype,includeBatchInIndex,convInfo),pooledDataId=cpuBackend.write(pooled,convInfo.outShape,x.dtype),indexesDataId=cpuBackend.write(indexes,convInfo.outShape,x.dtype);return[{dataId:pooledDataId,shape:convInfo.outShape,dtype:x.dtype},{dataId:indexesDataId,shape:convInfo.outShape,dtype:"int32"}]}};function sum3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{axis,keepDims}=attrs;assertNotComplex(x,"sum");let $x;x.dtype==="bool"?$x=cast3({inputs:{x},backend:backend2,attrs:{dtype:"int32"}}):$x=identity2({inputs:{x},backend:backend2});let xRank=$x.shape.length,axes=util_exports.parseAxisParam(axis,$x.shape),permutation=backend_util_exports.getAxesPermutation(axes,xRank),reductionAxes=axes,permutedX=$x;permutation!=null&&(permutedX=transpose2({inputs:{x:$x},backend:backend2,attrs:{perm:permutation}}),reductionAxes=backend_util_exports.getInnerMostAxes(reductionAxes.length,xRank)),backend_util_exports.assertAxesAreInnerMostDims("sum",reductionAxes,permutedX.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(permutedX.shape,reductionAxes),resultDtype=backend_util_exports.upcastType(permutedX.dtype,"int32"),result=zeros3(backend2,outShape,resultDtype),reduceSize=util_exports.sizeFromShape(reduceShape),vals=backend2.data.get(result.dataId).values,aVals=backend2.data.get(permutedX.dataId).values;for(let i=0;ibackend2.disposeIntermediateTensorInfo(t)),result}var meanConfig={kernelName:Mean,backendName:"cpu",kernelFunc:mean2};function min3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{axis,keepDims}=attrs;assertNotComplex(x,"min");let origAxes=util_exports.parseAxisParam(axis,x.shape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,x.shape.length),$x=x;permutedAxes!=null&&($x=transpose2({inputs:{x},backend:backend2,attrs:{perm:permutedAxes}}),axes=backend_util_exports.getInnerMostAxes(axes.length,x.shape.length)),backend_util_exports.assertAxesAreInnerMostDims("min",axes,$x.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes($x.shape,axes),reduceSize=util_exports.sizeFromShape(reduceShape),vals=util_exports.makeZerosTypedArray(util_exports.sizeFromShape(outShape),$x.dtype),aVals=backend2.data.get($x.dataId).values;for(let i=0;ip2[0]+x.shape[i]+p2[1]),start=paddings.map(p2=>p2[0]),end=paddings.map((p2,i)=>p2[0]+x.shape[i]),offset=mode==="reflect"?0:1,xVals=backend2.data.get(x.dataId).values,xRank=x.shape.length,xStrides=util_exports.computeStrides(x.shape),resultSize=util_exports.sizeFromShape(outShape),resultRank=outShape.length,resultStrides=util_exports.computeStrides(outShape),resVals=util_exports.getTypedArrayFromDType(x.dtype,resultSize);for(let i=0;i=end[i2]&&(coords2[i2]=(end[i2]-1)*2-coords2[i2]+offset);coords2=coords2.map((c,i2)=>c-start[i2]);let inIndex=util_exports.locToIndex(coords2,xRank,xStrides);resVals[i]=xVals[inIndex]}return{dataId:backend2.write(resVals,outShape,x.dtype),shape:outShape,dtype:x.dtype}}var mirrorPadConfig={kernelName:MirrorPad,backendName:"cpu",kernelFunc:mirrorPad2};var modImpl=createSimpleBinaryKernelImpl((aValue,bValue)=>{let rem=aValue%bValue;return aValue<0&&bValue<0||aValue>=0&&bValue>=0?rem:(rem+bValue)%bValue}),mod2=binaryKernelFunc(Mod,modImpl),modConfig={kernelName:Mod,backendName:"cpu",kernelFunc:mod2};var seedrandom4=__toModule(require_seedrandom2());function softmax3(args){let{inputs,backend:backend2,attrs}=args,{logits}=inputs,{dim}=attrs,logitsRank=logits.shape.length,$dim=dim;if($dim===-1&&($dim=logitsRank-1),$dim!==logitsRank-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${logitsRank} and dim was ${$dim}`);let axes=util_exports.parseAxisParam([$dim],logits.shape),maxLogit=max3({inputs:{x:logits},backend:backend2,attrs:{reductionIndices:axes,keepDims:!1}}),expandedShape=backend_util_exports.expandShapeToKeepDim(maxLogit.shape,axes),maxLogitReshaped=reshape3({inputs:{x:maxLogit},backend:backend2,attrs:{shape:expandedShape}}),a=sub2({inputs:{a:logits,b:maxLogitReshaped},backend:backend2}),b=exp2({inputs:{x:a},backend:backend2}),sumExp=sum3({inputs:{x:b},backend:backend2,attrs:{axis:axes,keepDims:!1}}),sumReshaped=reshape3({inputs:{x:sumExp},backend:backend2,attrs:{shape:expandedShape}}),result=div2({inputs:{a:b,b:sumReshaped},backend:backend2});return backend2.disposeIntermediateTensorInfo(maxLogit),backend2.disposeIntermediateTensorInfo(maxLogitReshaped),backend2.disposeIntermediateTensorInfo(a),backend2.disposeIntermediateTensorInfo(b),backend2.disposeIntermediateTensorInfo(sumExp),backend2.disposeIntermediateTensorInfo(sumReshaped),result}var softmaxConfig={kernelName:Softmax,backendName:"cpu",kernelFunc:softmax3};function multinomial2(args){let{inputs,backend:backend2,attrs}=args,{logits}=inputs,{numSamples,seed,normalized}=attrs;assertNotComplex(logits,"multinomial");let probabilities=normalized?logits:softmax3({inputs:{logits},backend:backend2,attrs:{dim:-1}}),batchSize=probabilities.shape[0],numEvents=probabilities.shape[1],probVals=backend2.data.get(probabilities.dataId).values,resShape=[batchSize,numSamples],resVals=util_exports.makeZerosTypedArray(util_exports.sizeFromShape(resShape),"int32");for(let b=0;b=0&&indicesVal[event]{util_exports.assertShapesMatch(shape,t.shape,"All tensors passed to stack must have matching shapes"),util_exports.assert(dtype===t.dtype,()=>"All tensors passed to stack must have matching dtypes")});let intermediateTensorInfos=[],expandedTensors=inputs.map(t=>{let expandedT=expandDims3({inputs:{input:t},backend:backend2,attrs:{dim:axis}});return intermediateTensorInfos.push(expandedT),expandedT}),result=concat2({inputs:expandedTensors,backend:backend2,attrs:{axis}});return intermediateTensorInfos.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),result}var packConfig={kernelName:Pack,backendName:"cpu",kernelFunc:pack};function padV2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{paddings,constantValue}=attrs;assertNotComplex(x,"pad");let outShape=paddings.map((p2,i)=>p2[0]+x.shape[i]+p2[1]),start=paddings.map(p2=>p2[0]),xVals=backend2.data.get(x.dataId).values,xSize=util_exports.sizeFromShape(x.shape),xRank=x.shape.length,xStrides=util_exports.computeStrides(x.shape),resultSize=util_exports.sizeFromShape(outShape),resultRank=outShape.length,resultStrides=util_exports.computeStrides(outShape),resVals=util_exports.getTypedArrayFromDType(x.dtype,resultSize);constantValue!==0&&resVals.fill(constantValue);for(let i=0;ic+start[i2]),outIndex=util_exports.locToIndex(outCoords,resultRank,resultStrides);resVals[outIndex]=xVals[i]}return{dataId:backend2.write(resVals,outShape,x.dtype),shape:outShape,dtype:x.dtype}}var padV2Config={kernelName:PadV2,backendName:"cpu",kernelFunc:padV2};var powImpl=createSimpleBinaryKernelImpl((a,b)=>Math.pow(a,b)),pow2=binaryKernelFunc(Pow,powImpl),powConfig={kernelName:Pow,backendName:"cpu",kernelFunc:pow2};function range3(args){let{backend:backend2,attrs}=args,{start,stop,dtype,step:step4}=attrs,values=rangeImpl(start,stop,step4,dtype);return backend2.makeTensorInfo([values.length],dtype,values)}var rangeConfig={kernelName:Range,backendName:"cpu",kernelFunc:range3};var reciprocal2=unaryKernelFunc(Reciprocal,xi=>1/xi),reciprocalConfig={kernelName:Reciprocal,backendName:"cpu",kernelFunc:reciprocal2};function resizeBilinear2(args){let{inputs,backend:backend2,attrs}=args,{images}=inputs,{alignCorners,halfPixelCenters,size}=attrs;assertNotComplex(images,"resizeBilinear");let imagesStrides=util_exports.computeStrides(images.shape),[newHeight,newWidth]=size,[batch,oldHeight,oldWidth,numChannels]=images.shape,xValues=backend2.data.get(images.dataId).values,result=new Float32Array(util_exports.sizeFromShape([batch,newHeight,newWidth,numChannels])),effectiveInputSize=[alignCorners&&newHeight>1?oldHeight-1:oldHeight,alignCorners&&newWidth>1?oldWidth-1:oldWidth],effectiveOutputSize=[alignCorners&&newHeight>1?newHeight-1:newHeight,alignCorners&&newWidth>1?newWidth-1:newWidth],outputIdx=0,effectiveRowSizeRatio=effectiveInputSize[0]/effectiveOutputSize[0],effectiveColSizeRatio=effectiveInputSize[1]/effectiveOutputSize[1];for(let b=0;b1?xHeight-1:xHeight,alignCorners&&yWidth>1?xWidth-1:xWidth],effectiveYSize=[alignCorners&&yHeight>1?yHeight-1:yHeight,alignCorners&&yWidth>1?yWidth-1:yWidth],heightScale=effectiveXSize[0]/effectiveYSize[0],widthScale=effectiveXSize[1]/effectiveYSize[1],dyValues=backend2.data.get(dy.dataId).values,offset=0;for(let b=0;b1?oldHeight-1:oldHeight,alignCorners&&newWidth>1?oldWidth-1:oldWidth],effectiveOutputSize=[alignCorners&&newHeight>1?newHeight-1:newHeight,alignCorners&&newWidth>1?newWidth-1:newWidth],effectiveRowSizeRatio=effectiveInputSize[0]/effectiveOutputSize[0],effectiveColSizeRatio=effectiveInputSize[1]/effectiveOutputSize[1],outputOffset=0;for(let b=0;b1?xHeight-1:xHeight,alignCorners&&yWidth>1?xWidth-1:xWidth],effectiveYSize=[alignCorners&&yHeight>1?yHeight-1:yHeight,alignCorners&&yWidth>1?yWidth-1:yWidth],heightScale=effectiveXSize[0]/effectiveYSize[0],widthScale=effectiveXSize[1]/effectiveYSize[1],invHeightScale=1/heightScale,invWidthScale=1/widthScale,winHeight=Math.ceil(invHeightScale)*2+2,winWidth=Math.ceil(invWidthScale)*2+2;for(let b=0;b=yHeight)continue;let dyROffset=batchOffset+dyR*dyStrides[1],sourceFracRow=dyR*heightScale,sourceNearestRow=Math.min(xHeight-1,alignCorners?Math.round(sourceFracRow):Math.floor(sourceFracRow));if(r===sourceNearestRow)for(let dyCIndex=0;dyCIndex=yWidth)continue;let dyCOffset=dyROffset+dyC*dyStrides[2],sourceFracCol=dyC*widthScale,sourceNearestCol=Math.min(xWidth-1,alignCorners?Math.round(sourceFracCol):Math.floor(sourceFracCol));c===sourceNearestCol&&(accum+=dyValues[dyCOffset+d])}}output[colOffset+d]=accum}}}}return backend2.makeTensorInfo(images.shape,images.dtype,output)}var resizeNearestNeighborGradConfig2={kernelName:ResizeNearestNeighborGrad,backendName:"cpu",kernelFunc:resizeNearestNeighborGrad};function reverse2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{dims}=attrs;assertNotComplex(x,"reverse");let xRank=x.shape.length,$dims=util_exports.parseAxisParam(dims,x.shape);if(xRank===0)return identity2({inputs:{x},backend:backend2});let outBuf=new TensorBuffer(x.shape,x.dtype),xBuf=backend2.bufferSync(x);for(let i=0;iinLoc[d]=x.shape[d]-1-inLoc[d]),outBuf.set(xBuf.get(...inLoc),...outLoc)}return backend2.makeTensorInfo(outBuf.shape,outBuf.dtype,outBuf.values)}var reverseConfig={kernelName:Reverse,backendName:"cpu",kernelFunc:reverse2};var rotateWithOffsetConfig={kernelName:RotateWithOffset,backendName:"cpu",kernelFunc:({inputs,attrs,backend:backend2})=>{let{image:image3}=inputs,{radians,fillValue,center}=attrs,cpuBackend=backend2,output=util_exports.getTypedArrayFromDType(image3.dtype,util_exports.sizeFromShape(image3.shape)),[batch,imageHeight,imageWidth,numChannels]=image3.shape,[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),fullOpacityValue=255,sinFactor=Math.sin(radians),cosFactor=Math.cos(radians),imageVals=cpuBackend.data.get(image3.dataId).values;for(let batchIdx=0;batchIdx=0&&coordX=0&&coordY{let base2=Math.floor(xi);return xi-base2<.5?Math.floor(xi):xi-base2>.5?Math.ceil(xi):base2%2==0?base2:base2+1}),roundConfig={kernelName:Round,backendName:"cpu",kernelFunc:round3};function scatterImpl(indices,updates,shape,outputSize,sliceSize,numUpdates,sliceRank,strides,defaultValue,sumDupeIndices){let flattenShape=[outputSize/sliceSize,sliceSize],indicesData=indices.values,updatesData=updates.values;if(outputSize===0)return buffer(shape,updates.dtype);let outBuf=buffer(flattenShape,updates.dtype);outBuf.values.fill(defaultValue);for(let i=0;i=outputSize/sliceSize)throw new Error(`Invalid indices: ${index} does not index into ${shape}`);for(let k=0;k1||t.shape.length===1?1:util_exports.sizeFromShape(t.shape.slice(1));for(let i=0;ixi>=0?scale*xi:scaleAlpha*(Math.exp(xi)-1)),seluConfig={kernelName:Selu,backendName:"cpu",kernelFunc:selu2};var sigmoid2=unaryKernelFunc(Sigmoid,xi=>1/(1+Math.exp(-xi))),sigmoidConfig={kernelName:Sigmoid,backendName:"cpu",kernelFunc:sigmoid2};var sign2=unaryKernelFunc(Sign,xi=>xi<0?-1:xi>0?1:0),signConfig={kernelName:Sign,backendName:"cpu",kernelFunc:sign2};var sin2=unaryKernelFunc(Sin,xi=>Math.sin(xi)),sinConfig={kernelName:Sin,backendName:"cpu",kernelFunc:sin2};var sinh2=unaryKernelFunc(Sinh,xi=>Math.sinh(xi)),sinhConfig={kernelName:Sinh,backendName:"cpu",kernelFunc:sinh2};var epsilon2=11920928955078125e-23,threshold=Math.log(epsilon2)+2,softplus2=unaryKernelFunc(Softplus,xi=>{let tooLarge=xi>-threshold,tooSmall=xi{let sliceSize=[...size];sliceSize[$axis]=s;let sliceT=slice2({inputs:{x},backend:backend2,attrs:{begin,size:sliceSize}});return begin[$axis]+=s,sliceT})}var splitVConfig={kernelName:SplitV,backendName:"cpu",kernelFunc:splitV};var sqrt2=unaryKernelFunc(Sqrt,xi=>Math.sqrt(xi)),sqrtConfig={kernelName:Sqrt,backendName:"cpu",kernelFunc:sqrt2};var squareConfig={kernelName:Square,backendName:"cpu",kernelFunc:({inputs,backend:backend2})=>{let{x}=inputs,cpuBackend=backend2;assertNotComplex(x,"square");let values=cpuBackend.data.get(x.dataId).values,newValues=new Float32Array(values.length);for(let i=0;i{let stepAttrs=attrs;return isNaN(xi)?NaN:xi>0?1:stepAttrs.alpha}),stepConfig={kernelName:Step,backendName:"cpu",kernelFunc:step2};function stridedSlice2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask}=attrs;assertNotComplex(x,"stridedSlice");let{nonStrided,$begin,$strides,size,newShape,outShape}=slice_util_exports.sliceInfo(x.shape,begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask),$x=reshape3({inputs:{x},backend:backend2,attrs:{shape:newShape}}),result;if(nonStrided){let sliced=slice2({inputs:{x:$x},backend:backend2,attrs:{begin:$begin,size}});result=reshape3({inputs:{x:sliced},backend:backend2,attrs:{shape:outShape}}),backend2.disposeIntermediateTensorInfo(sliced)}else if(outShape.some(axis=>axis===0))result=backend2.makeTensorInfo(outShape,x.dtype,[]);else{let xBuf=backend2.bufferSync($x),outBuf=stridedSliceImpl(outShape,xBuf,$strides,$begin);result=backend2.makeTensorInfo(outBuf.shape,outBuf.dtype,outBuf.values)}let resultReshaped=reshape3({inputs:{x:result},backend:backend2,attrs:{shape:outShape}});return backend2.disposeIntermediateTensorInfo($x),backend2.disposeIntermediateTensorInfo(result),resultReshaped}var stridedSliceConfig={kernelName:StridedSlice,backendName:"cpu",kernelFunc:stridedSlice2};var tan2=unaryKernelFunc(Tan,xi=>Math.tan(xi)),tanConfig={kernelName:Tan,backendName:"cpu",kernelFunc:tan2};var tanh3=unaryKernelFunc(Tanh,xi=>Math.tanh(xi)),tanhConfig={kernelName:Tanh,backendName:"cpu",kernelFunc:tanh3};function tile3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{reps}=attrs;assertNotComplex(x,"tile");let outBuf=tileImpl(backend2.bufferSync(x),reps);return backend2.makeTensorInfo(outBuf.shape,outBuf.dtype,outBuf.values)}var tileConfig={kernelName:Tile,backendName:"cpu",kernelFunc:tile3};function topK(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{k,sorted}=attrs;assertNotComplex(x,"topk");let xVals=backend2.data.get(x.dataId).values,[allTopKVals,allTopKIndices]=topKImpl(xVals,x.shape,x.dtype,k,sorted);return[backend2.makeTensorInfo(allTopKVals.shape,allTopKVals.dtype,allTopKVals.values),backend2.makeTensorInfo(allTopKIndices.shape,allTopKIndices.dtype,allTopKIndices.values)]}var topKConfig={kernelName:TopK,backendName:"cpu",kernelFunc:topK};function unique3(args){let{inputs,attrs,backend:backend2}=args,{axis}=attrs,{x}=inputs;assertNotComplex(x,"unique");let values=backend2.data.get(x.dataId).values,{outputValues,outputShape,indices}=uniqueImpl(values,axis,x.shape,x.dtype);return[backend2.makeTensorInfo(outputShape,x.dtype,outputValues),backend2.makeTensorInfo([indices.length],"int32",indices)]}var uniqueConfig={kernelName:Unique,backendName:"cpu",kernelFunc:unique3};function unpack(args){let{inputs,backend:backend2,attrs}=args,{value}=inputs,{axis}=attrs;axis<0&&(axis+=value.shape.length);let valueRank=value.shape.length,num=value.shape[axis],outShape=new Array(valueRank-1),outIndex=0;for(let i=0;ibackend2.disposeIntermediateTensorInfo(t)),result}var unsortedSegmentSumConfig={kernelName:UnsortedSegmentSum,backendName:"cpu",kernelFunc:unsortedSegmentSum2};var kernelConfigs=[_fusedMatMulConfig,absConfig,acosConfig,acoshConfig,addConfig,addNConfig,allConfig,anyConfig,argMaxConfig,argMinConfig,asinConfig,asinhConfig,atanConfig,atan2Config,atanhConfig,avgPoolConfig,avgPool3DConfig,avgPool3DGradConfig2,avgPoolGradConfig2,batchMatMulConfig,batchNormConfig,batchToSpaceNDConfig,bincountConfig,castConfig,ceilConfig,clipConfig,complexConfig,complexAbsConfig,concatConfig,conv2DBackpropFilterConfig,conv2DBackpropInputConfig,conv2DConfig,conv3DBackpropFilterV2Config,conv3DBackpropInputV2Config,conv3DConfig,cosConfig,coshConfig,cropAndResizeConfig,cumsumConfig,denseBincountConfig,depthToSpaceConfig,depthwiseConv2dNativeConfig,depthwiseConv2dNativeBackpropFilterConfig,depthwiseConv2dNativeBackpropInputConfig,diagConfig,dilation2dConfig,dilation2dBackpropInputConfig,dilation2dBackpropFilterConfig,realDivConfig,eluConfig,eluGradConfig2,equalConfig,erfConfig,expConfig,expandDimsConfig,expm1Config,fftConfig,fillConfig,flipLeftRightConfig,floorConfig,floorDivConfig,fusedConv2DConfig,fusedDepthwiseConv2DConfig,gatherNdConfig,gatherV2Config,greaterConfig,greaterEqualConfig,identityConfig,ifftConfig,imagConfig,isFiniteConfig,isInfConfig,isNaNConfig,leakyReluConfig,lessConfig,lessEqualConfig,linSpaceConfig,logConfig,log1pConfig,logicalAndConfig,logicalNotConfig,logicalOrConfig,lRNConfig,lRNGradConfig,maximumConfig,maxPoolConfig,maxPool3DConfig,maxPool3DGradConfig2,maxPoolGradConfig2,maxPoolWithArgmaxConfig,maxConfig,meanConfig,minConfig,minimumConfig,mirrorPadConfig,modConfig,multinomialConfig,multiplyConfig,negConfig,nonMaxSuppressionV3Config,nonMaxSuppressionV4Config,nonMaxSuppressionV5Config,notEqualConfig,oneHotConfig,onesLikeConfig,packConfig,padV2Config,powConfig,preluConfig,prodConfig,rangeConfig,realConfig,reciprocalConfig,reluConfig,relu6Config,reshapeConfig,resizeBilinearConfig,resizeBilinearGradConfig2,resizeNearestNeighborConfig,resizeNearestNeighborGradConfig2,reverseConfig,rotateWithOffsetConfig,roundConfig,rsqrtConfig,scatterNdConfig,selectConfig,seluConfig,sigmoidConfig,signConfig,sinConfig,sinhConfig,sliceConfig,softmaxConfig,softplusConfig,spaceToBatchNDConfig,sparseToDenseConfig,splitVConfig,sqrtConfig,squareConfig,squaredDifferenceConfig,stepConfig,stridedSliceConfig,subConfig,sumConfig,tanConfig,tanhConfig,tileConfig,topKConfig,transposeConfig,uniqueConfig,unpackConfig,unsortedSegmentSumConfig,zerosLikeConfig];for(let kernelConfig of kernelConfigs)registerKernel(kernelConfig);var contexts={},WEBGL_ATTRIBUTES={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function setWebGLContext(webGLVersion,gl){contexts[webGLVersion]=gl}function getWebGLContext(webGLVersion){if(!(webGLVersion in contexts)){let newCtx=getWebGLRenderingContext(webGLVersion);if(newCtx!==null)contexts[webGLVersion]=newCtx;else return console.log("Could not get context for WebGL version",webGLVersion),null}let gl=contexts[webGLVersion];return gl.isContextLost()?(delete contexts[webGLVersion],getWebGLContext(webGLVersion)):(gl.disable(gl.DEPTH_TEST),gl.disable(gl.STENCIL_TEST),gl.disable(gl.BLEND),gl.disable(gl.DITHER),gl.disable(gl.POLYGON_OFFSET_FILL),gl.disable(gl.SAMPLE_COVERAGE),gl.enable(gl.SCISSOR_TEST),gl.enable(gl.CULL_FACE),gl.cullFace(gl.BACK),contexts[webGLVersion])}function createCanvas(webGLVersion){if(typeof OffscreenCanvas!="undefined"&&webGLVersion===2)return new OffscreenCanvas(300,150);if(typeof document!="undefined")return document.createElement("canvas");throw new Error("Cannot create a canvas in this context")}function getWebGLRenderingContext(webGLVersion){if(webGLVersion!==1&&webGLVersion!==2)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");let canvas=createCanvas(webGLVersion);return canvas.addEventListener("webglcontextlost",ev=>{ev.preventDefault(),delete contexts[webGLVersion]},!1),webGLVersion===1?canvas.getContext("webgl",WEBGL_ATTRIBUTES)||canvas.getContext("experimental-webgl",WEBGL_ATTRIBUTES):canvas.getContext("webgl2",WEBGL_ATTRIBUTES)}var PackingScheme;(function(PackingScheme2){PackingScheme2[PackingScheme2.DENSE=0]="DENSE",PackingScheme2[PackingScheme2.SHARED_BATCH=1]="SHARED_BATCH"})(PackingScheme||(PackingScheme={}));var TextureUsage;(function(TextureUsage2){TextureUsage2[TextureUsage2.RENDER=0]="RENDER",TextureUsage2[TextureUsage2.UPLOAD=1]="UPLOAD",TextureUsage2[TextureUsage2.PIXELS=2]="PIXELS",TextureUsage2[TextureUsage2.DOWNLOAD=3]="DOWNLOAD"})(TextureUsage||(TextureUsage={}));var PhysicalTextureType;(function(PhysicalTextureType2){PhysicalTextureType2[PhysicalTextureType2.UNPACKED_FLOAT16=0]="UNPACKED_FLOAT16",PhysicalTextureType2[PhysicalTextureType2.UNPACKED_FLOAT32=1]="UNPACKED_FLOAT32",PhysicalTextureType2[PhysicalTextureType2.PACKED_4X1_UNSIGNED_BYTE=2]="PACKED_4X1_UNSIGNED_BYTE",PhysicalTextureType2[PhysicalTextureType2.PACKED_2X2_FLOAT32=3]="PACKED_2X2_FLOAT32",PhysicalTextureType2[PhysicalTextureType2.PACKED_2X2_FLOAT16=4]="PACKED_2X2_FLOAT16"})(PhysicalTextureType||(PhysicalTextureType={}));function getUnpackedMatrixTextureShapeWidthHeight(rows,columns){return[columns,rows]}function getUnpackedArraySizeFromMatrixSize(matrixSize,channelsPerTexture){return matrixSize*channelsPerTexture}function getDenseTexShape(shape){let size=util_exports.sizeFromShape(shape),texelsNeeded=Math.ceil(size/4);return util_exports.sizeToSquarishShape(texelsNeeded)}function getPackedMatrixTextureShapeWidthHeight(rows,columns){return[Math.max(1,Math.ceil(columns/2)),Math.max(1,Math.ceil(rows/2))]}function getPackedRGBAArraySizeFromMatrixShape(rows,columns){let[w,h]=getPackedMatrixTextureShapeWidthHeight(rows,columns);return w*h*4}function getTextureConfig(gl,textureHalfFloatExtension){let glany=gl,internalFormatFloat,internalFormatHalfFloat,internalFormatPackedHalfFloat,internalFormatPackedFloat,textureFormatFloat,downloadTextureFormat,downloadUnpackNumChannels,defaultNumChannels,textureTypeHalfFloat,textureTypeFloat;return env().getNumber("WEBGL_VERSION")===2?(internalFormatFloat=glany.R32F,internalFormatHalfFloat=glany.R16F,internalFormatPackedHalfFloat=glany.RGBA16F,internalFormatPackedFloat=glany.RGBA32F,textureFormatFloat=glany.RED,downloadUnpackNumChannels=4,defaultNumChannels=1,textureTypeHalfFloat=glany.HALF_FLOAT,textureTypeFloat=glany.FLOAT):(internalFormatFloat=gl.RGBA,internalFormatHalfFloat=gl.RGBA,internalFormatPackedHalfFloat=gl.RGBA,internalFormatPackedFloat=glany.RGBA,textureFormatFloat=gl.RGBA,downloadUnpackNumChannels=4,defaultNumChannels=4,textureTypeHalfFloat=textureHalfFloatExtension!=null?textureHalfFloatExtension.HALF_FLOAT_OES:null,textureTypeFloat=gl.FLOAT),downloadTextureFormat=gl.RGBA,{internalFormatFloat,internalFormatHalfFloat,internalFormatPackedHalfFloat,internalFormatPackedFloat,textureFormatFloat,downloadTextureFormat,downloadUnpackNumChannels,defaultNumChannels,textureTypeHalfFloat,textureTypeFloat}}function callAndCheck(gl,func2){let returnValue=func2();return env().getBool("DEBUG")&&checkWebGLError(gl),returnValue}function checkWebGLError(gl){let error=gl.getError();if(error!==gl.NO_ERROR)throw new Error("WebGL Error: "+getWebGLErrorMessage(gl,error))}var MIN_FLOAT16=596e-10,MAX_FLOAT16=65504;function canBeRepresented(num){return!!(env().getBool("WEBGL_RENDER_FLOAT32_ENABLED")||num===0||MIN_FLOAT16gl.getExtension(extensionName),'Extension "'+extensionName+'" not supported on this browser.')}function createVertexShader(gl,vertexShaderSource){let vertexShader=throwIfNull(gl,()=>gl.createShader(gl.VERTEX_SHADER),"Unable to create vertex WebGLShader.");if(callAndCheck(gl,()=>gl.shaderSource(vertexShader,vertexShaderSource)),callAndCheck(gl,()=>gl.compileShader(vertexShader)),gl.getShaderParameter(vertexShader,gl.COMPILE_STATUS)===!1)throw console.log(gl.getShaderInfoLog(vertexShader)),new Error("Failed to compile vertex shader.");return vertexShader}function createFragmentShader(gl,fragmentShaderSource){let fragmentShader=throwIfNull(gl,()=>gl.createShader(gl.FRAGMENT_SHADER),"Unable to create fragment WebGLShader.");if(callAndCheck(gl,()=>gl.shaderSource(fragmentShader,fragmentShaderSource)),callAndCheck(gl,()=>gl.compileShader(fragmentShader)),gl.getShaderParameter(fragmentShader,gl.COMPILE_STATUS)===!1)throw logShaderSourceAndInfoLog(fragmentShaderSource,gl.getShaderInfoLog(fragmentShader)),new Error("Failed to compile fragment shader.");return fragmentShader}var lineNumberRegex=/ERROR: [0-9]+:([0-9]+):/g;function logShaderSourceAndInfoLog(shaderSource,shaderInfoLog){let lineNumberRegexResult=lineNumberRegex.exec(shaderInfoLog);if(lineNumberRegexResult==null){console.log(`Couldn't parse line number in error: ${shaderInfoLog}`),console.log(shaderSource);return}let lineNumber=+lineNumberRegexResult[1],shaderLines=shaderSource.split(` -`),pad3=shaderLines.length.toString().length+2,linesWithLineNumbers=shaderLines.map((line,lineNumber2)=>util_exports.rightPad((lineNumber2+1).toString(),pad3)+line),maxLineLength=0;for(let i=0;igl.createProgram(),"Unable to create WebGLProgram.")}function linkProgram(gl,program){if(callAndCheck(gl,()=>gl.linkProgram(program)),gl.getProgramParameter(program,gl.LINK_STATUS)===!1)throw console.log(gl.getProgramInfoLog(program)),new Error("Failed to link vertex and fragment shaders.")}function validateProgram(gl,program){if(callAndCheck(gl,()=>gl.validateProgram(program)),gl.getProgramParameter(program,gl.VALIDATE_STATUS)===!1)throw console.log(gl.getProgramInfoLog(program)),new Error("Shader program validation failed.")}function createStaticVertexBuffer(gl,data){let buffer2=throwIfNull(gl,()=>gl.createBuffer(),"Unable to create WebGLBuffer");return callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,buffer2)),callAndCheck(gl,()=>gl.bufferData(gl.ARRAY_BUFFER,data,gl.STATIC_DRAW)),buffer2}function createStaticIndexBuffer(gl,data){let buffer2=throwIfNull(gl,()=>gl.createBuffer(),"Unable to create WebGLBuffer");return callAndCheck(gl,()=>gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,buffer2)),callAndCheck(gl,()=>gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,data,gl.STATIC_DRAW)),buffer2}function createTexture(gl){return throwIfNull(gl,()=>gl.createTexture(),"Unable to create WebGLTexture.")}function validateTextureSize(width,height){let maxTextureSize=env().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(width<=0||height<=0){let requested=`[${width}x${height}]`;throw new Error("Requested texture size "+requested+" is invalid.")}if(width>maxTextureSize||height>maxTextureSize){let requested=`[${width}x${height}]`,max6=`[${maxTextureSize}x${maxTextureSize}]`;throw new Error("Requested texture size "+requested+" greater than WebGL maximum on this browser / GPU "+max6+".")}}function createFramebuffer(gl){return throwIfNull(gl,()=>gl.createFramebuffer(),"Unable to create WebGLFramebuffer.")}function bindVertexBufferToProgramAttribute(gl,program,attribute,buffer2,arrayEntriesPerItem,itemStrideInBytes,itemOffsetInBytes){let loc=gl.getAttribLocation(program,attribute);return loc===-1?!1:(callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,buffer2)),callAndCheck(gl,()=>gl.vertexAttribPointer(loc,arrayEntriesPerItem,gl.FLOAT,!1,itemStrideInBytes,itemOffsetInBytes)),callAndCheck(gl,()=>gl.enableVertexAttribArray(loc)),!0)}function bindTextureUnit(gl,texture,textureUnit){validateTextureUnit(gl,textureUnit),callAndCheck(gl,()=>gl.activeTexture(gl.TEXTURE0+textureUnit)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,texture))}function getProgramUniformLocationOrThrow(gl,program,uniformName){return throwIfNull(gl,()=>gl.getUniformLocation(program,uniformName),'uniform "'+uniformName+'" not present in program.')}function getProgramUniformLocation(gl,program,uniformName){return gl.getUniformLocation(program,uniformName)}function bindTextureToProgramUniformSampler(gl,texture,uniformSamplerLocation,textureUnit){callAndCheck(gl,()=>bindTextureUnit(gl,texture,textureUnit)),callAndCheck(gl,()=>gl.uniform1i(uniformSamplerLocation,textureUnit))}function bindColorTextureToFramebuffer(gl,texture,framebuffer){callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,framebuffer)),callAndCheck(gl,()=>gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0))}function unbindColorTextureFromFramebuffer(gl,framebuffer){callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,framebuffer)),callAndCheck(gl,()=>gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,null,0))}function validateFramebuffer(gl){let status=gl.checkFramebufferStatus(gl.FRAMEBUFFER);if(status!==gl.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+getFramebufferErrorMessage(gl,status))}function getFramebufferErrorMessage(gl,status){switch(status){case gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case gl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case gl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case gl.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return`unknown error ${status}`}}function throwIfNull(gl,returnTOrNull,failureMessage){let tOrNull=callAndCheck(gl,()=>returnTOrNull());if(tOrNull==null)throw new Error(failureMessage);return tOrNull}function validateTextureUnit(gl,textureUnit){let maxTextureUnit=gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,glTextureUnit=textureUnit+gl.TEXTURE0;if(glTextureUnitmaxTextureUnit){let textureUnitRange=`[gl.TEXTURE0, gl.TEXTURE${maxTextureUnit}]`;throw new Error(`textureUnit must be in ${textureUnitRange}.`)}}function getBatchDim(shape,dimsToSkip=2){return util_exports.sizeFromShape(shape.slice(0,shape.length-dimsToSkip))}function getRowsCols(shape){if(shape.length===0)throw Error("Cannot get rows and columns of an empty shape array.");return[shape.length>1?shape[shape.length-2]:1,shape[shape.length-1]]}function getShapeAs3D(shape){let shapeAs3D=[1,1,1];return shape.length===0||shape.length===1&&shape[0]===1||(shapeAs3D=[getBatchDim(shape),...getRowsCols(shape)]),shapeAs3D}function getTextureShapeFromLogicalShape(logShape,isPacked=!1){let maxTexSize=env().getNumber("WEBGL_MAX_TEXTURE_SIZE");isPacked&&(maxTexSize=maxTexSize*2,logShape=logShape.map((d,i)=>i>=logShape.length-2?util_exports.nearestLargerEven(logShape[i]):logShape[i]),logShape.length===1&&(logShape=[2,logShape[0]])),logShape.length!==2&&(logShape=util_exports.squeezeShape(logShape).newShape);let size=util_exports.sizeFromShape(logShape);if(logShape.length<=1&&size<=maxTexSize)return[1,size];if(logShape.length===2&&logShape[0]<=maxTexSize&&logShape[1]<=maxTexSize)return logShape;if(logShape.length===3&&logShape[0]*logShape[1]<=maxTexSize&&logShape[2]<=maxTexSize)return[logShape[0]*logShape[1],logShape[2]];if(logShape.length===3&&logShape[0]<=maxTexSize&&logShape[1]*logShape[2]<=maxTexSize)return[logShape[0],logShape[1]*logShape[2]];if(logShape.length===4&&logShape[0]*logShape[1]*logShape[2]<=maxTexSize&&logShape[3]<=maxTexSize)return[logShape[0]*logShape[1]*logShape[2],logShape[3]];if(logShape.length===4&&logShape[0]<=maxTexSize&&logShape[1]*logShape[2]*logShape[3]<=maxTexSize)return[logShape[0],logShape[1]*logShape[2]*logShape[3]];if(isPacked){let batchDim=getBatchDim(logShape),rows=2,cols=2;return logShape.length&&([rows,cols]=getRowsCols(logShape)),size=batchDim*(rows/2)*(cols/2),util_exports.sizeToSquarishShape(size).map(d=>d*2)}return util_exports.sizeToSquarishShape(size)}function isEven(n){return n%2==0}function isReshapeFree(shape1,shape2){if(shape1=shape1.slice(-2),shape2=shape2.slice(-2),util_exports.arraysEqual(shape1,shape2)||!shape1.length||!shape2.length||shape1[0]===0||shape1[1]===0||shape2[0]===0||shape2[1]===0)return!0;if(shape1.length!==shape2.length){let shape1Cols=shape1.slice(-1)[0],shape2Cols=shape2.slice(-1)[0];if(shape1Cols===shape2Cols||isEven(shape1Cols)&&isEven(shape2Cols)&&(shape1[0]===1||shape2[0]===1))return!0}return shape1[1]===shape2[1]&&isEven(shape1[0])&&isEven(shape2[0])}var MAX_TEXTURE_SIZE,MAX_TEXTURES_IN_SHADER;function getWebGLMaxTextureSize(webGLVersion){if(MAX_TEXTURE_SIZE==null){let gl=getWebGLContext(webGLVersion);MAX_TEXTURE_SIZE=gl.getParameter(gl.MAX_TEXTURE_SIZE)}return MAX_TEXTURE_SIZE}function getMaxTexturesInShader(webGLVersion){if(MAX_TEXTURES_IN_SHADER==null){let gl=getWebGLContext(webGLVersion);MAX_TEXTURES_IN_SHADER=gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,MAX_TEXTURES_IN_SHADER)}function getWebGLDisjointQueryTimerVersion(webGLVersion){if(webGLVersion===0)return 0;let queryTimerVersion,gl=getWebGLContext(webGLVersion);return hasExtension(gl,"EXT_disjoint_timer_query_webgl2")&&webGLVersion===2?queryTimerVersion=2:hasExtension(gl,"EXT_disjoint_timer_query")?queryTimerVersion=1:queryTimerVersion=0,queryTimerVersion}function hasExtension(gl,extensionName){return gl.getExtension(extensionName)!=null}function isWebGLVersionEnabled(webGLVersion){try{if(getWebGLContext(webGLVersion)!=null)return!0}catch(e){return console.log("Error when getting WebGL context: ",e),!1}return!1}function isCapableOfRenderingToFloatTexture(webGLVersion){if(webGLVersion===0)return!1;let gl=getWebGLContext(webGLVersion);if(webGLVersion===1){if(!hasExtension(gl,"OES_texture_float"))return!1}else if(!hasExtension(gl,"EXT_color_buffer_float"))return!1;return createFloatTextureAndBindToFramebuffer(gl)}function isDownloadFloatTextureEnabled(webGLVersion){if(webGLVersion===0)return!1;let gl=getWebGLContext(webGLVersion);if(webGLVersion===1){if(!hasExtension(gl,"OES_texture_float")||!hasExtension(gl,"WEBGL_color_buffer_float"))return!1}else{if(hasExtension(gl,"EXT_color_buffer_float"))return createFloatTextureAndBindToFramebuffer(gl);let COLOR_BUFFER_HALF_FLOAT="EXT_color_buffer_half_float";if(hasExtension(gl,COLOR_BUFFER_HALF_FLOAT)){let textureHalfFloatExtension=gl.getExtension(COLOR_BUFFER_HALF_FLOAT);return createHalfFloatTextureAndBindToFramebuffer(gl,textureHalfFloatExtension)}return!1}return createFloatTextureAndBindToFramebuffer(gl)}function createFloatTextureAndBindToFramebuffer(gl){let texConfig=getTextureConfig(gl),texture=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,texture);let width=1,height=1;gl.texImage2D(gl.TEXTURE_2D,0,texConfig.internalFormatFloat,width,height,0,texConfig.textureFormatFloat,texConfig.textureTypeFloat,null);let frameBuffer=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,frameBuffer),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0);let isFrameBufferComplete=gl.checkFramebufferStatus(gl.FRAMEBUFFER)===gl.FRAMEBUFFER_COMPLETE;return gl.bindTexture(gl.TEXTURE_2D,null),gl.bindFramebuffer(gl.FRAMEBUFFER,null),gl.deleteTexture(texture),gl.deleteFramebuffer(frameBuffer),isFrameBufferComplete}function createHalfFloatTextureAndBindToFramebuffer(gl,textureHalfFloatExtension){let texConfig=getTextureConfig(gl,textureHalfFloatExtension),texture=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,texture);let width=1,height=1;gl.texImage2D(gl.TEXTURE_2D,0,texConfig.internalFormatHalfFloat,width,height,0,texConfig.textureFormatFloat,texConfig.textureTypeHalfFloat,null);let frameBuffer=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,frameBuffer),gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0);let isFrameBufferComplete=gl.checkFramebufferStatus(gl.FRAMEBUFFER)===gl.FRAMEBUFFER_COMPLETE;return gl.bindTexture(gl.TEXTURE_2D,null),gl.bindFramebuffer(gl.FRAMEBUFFER,null),gl.deleteTexture(texture),gl.deleteFramebuffer(frameBuffer),isFrameBufferComplete}function isWebGLFenceEnabled(webGLVersion){return webGLVersion!==2?!1:getWebGLContext(webGLVersion).fenceSync!=null}function assertNotComplex2(tensor2,opName){Array.isArray(tensor2)||(tensor2=[tensor2]),tensor2.forEach(t=>{t!=null&&util_exports.assert(t.dtype!=="complex64",()=>`${opName} does not support complex64 tensors in the WebGL backend.`)})}var ENV3=env();ENV3.registerFlag("HAS_WEBGL",()=>ENV3.getNumber("WEBGL_VERSION")>0);ENV3.registerFlag("WEBGL_VERSION",()=>isWebGLVersionEnabled(2)?2:isWebGLVersionEnabled(1)?1:0);ENV3.registerFlag("WEBGL_CHECK_NUMERICAL_PROBLEMS",()=>!1);ENV3.registerFlag("WEBGL_BUFFER_SUPPORTED",()=>ENV3.get("WEBGL_VERSION")===2);ENV3.registerFlag("WEBGL_CPU_FORWARD",()=>!0);ENV3.registerFlag("WEBGL_FORCE_F16_TEXTURES",()=>!1);ENV3.registerFlag("WEBGL_PACK",()=>ENV3.getBool("HAS_WEBGL"));ENV3.registerFlag("WEBGL_PACK_NORMALIZATION",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_CLIP",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_DEPTHWISECONV",()=>!1);ENV3.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_PACK_REDUCE",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_LAZILY_UNPACK",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_CONV_IM2COL",()=>ENV3.getBool("WEBGL_PACK"));ENV3.registerFlag("WEBGL_MAX_TEXTURE_SIZE",()=>getWebGLMaxTextureSize(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",()=>getMaxTexturesInShader(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",()=>{let webGLVersion=ENV3.getNumber("WEBGL_VERSION");return webGLVersion===0?0:getWebGLDisjointQueryTimerVersion(webGLVersion)});ENV3.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",()=>ENV3.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!device_util_exports.isMobile());ENV3.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",()=>isCapableOfRenderingToFloatTexture(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",()=>ENV3.getBool("WEBGL_FORCE_F16_TEXTURES")?!1:ENV3.getBool("WEBGL_RENDER_FLOAT32_CAPABLE"));ENV3.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",()=>isDownloadFloatTextureEnabled(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_FENCE_API_ENABLED",()=>isWebGLFenceEnabled(ENV3.getNumber("WEBGL_VERSION")));ENV3.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",()=>ENV3.getBool("WEBGL_RENDER_FLOAT32_ENABLED")?4:0);ENV3.registerFlag("WEBGL_DELETE_TEXTURE_THRESHOLD",()=>-1,threshold2=>{if(threshold2<0&&threshold2!==-1)throw new Error(`WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never delete) or at least 0, but got ${threshold2}.`)});function getGlslDifferences(){let version10,attribute,varyingVs,varyingFs,texture2D,output,defineOutput,defineSpecialNaN,defineSpecialInf,defineRound;return env().getNumber("WEBGL_VERSION")===2?(version10="#version 300 es",attribute="in",varyingVs="out",varyingFs="in",texture2D="texture",output="outputColor",defineOutput="out vec4 outputColor;",defineSpecialNaN=` +============================`));let n={};return this.data.set(n,{values:e,dtype:o,refCount:1}),n}makeTensorInfo(e,t,o){let n;if(t==="string"&&o!=null&&o.length>0&&x.isString(o[0])){let s=o.map(a=>x.encodeString(a));n=this.write(s,e,t)}else n=this.write(o,e,t);return{dataId:n,shape:e,dtype:t}}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,o,n){this.data.set(e,{values:t,dtype:n,refCount:1})}numDataIds(){return this.data.numDataIds()}async read(e){return this.readSync(e)}readSync(e){let{dtype:t,complexTensorInfos:o}=this.data.get(e);if(t==="complex64"){let n=this.readSync(o.real.dataId),s=this.readSync(o.imag.dataId);return S.mergeRealAndImagArrays(n,s)}return this.data.get(e).values}bufferSync(e){let t=this.readSync(e.dataId),o=t;if(e.dtype==="string")try{o=t.map(n=>x.decodeString(n))}catch(n){throw new Error("Failed to decode encoded string bytes into utf-8")}return Ie(e.shape,e.dtype,o)}makeOutput(e,t,o){let n=this.write(e,t,o);return Cs().makeTensorFromDataId(n,t,o,this)}disposeData(e){if(this.data.has(e)){let{complexTensorInfos:t}=this.data.get(e);t!=null&&(this.disposeData(t.real.dataId),this.disposeData(t.imag.dataId)),this.data.delete(e)}}disposeIntermediateTensorInfo(e){let t=e.dataId;if(this.data.has(t)){let o=this.data.get(t);o.refCount--,o.refCount<1&&this.disposeData(t)}}async time(e){let t=x.now();return e(),{kernelMs:x.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){re([e],"where");let t=this.readSync(e.dataId);return c5(e.shape,t)}dispose(){}floatPrecision(){return 32}epsilon(){return super.epsilon()}};var rk={};et(rk,{addImpl:()=>lA,bincountImpl:()=>Bd,bincountReduceImpl:()=>Hv,ceilImpl:()=>cA,concatImpl:()=>Vd,expImpl:()=>mA,expm1Impl:()=>dA,floorImpl:()=>gA,gatherV2Impl:()=>Xv,greaterImpl:()=>yA,lessImpl:()=>_A,linSpaceImpl:()=>Yv,logImpl:()=>vA,maxImpl:()=>Zv,maximumImpl:()=>CA,minimumImpl:()=>NA,multiplyImpl:()=>wx,negImpl:()=>EA,notEqualImpl:()=>DA,prodImpl:()=>FA,rangeImpl:()=>Ud,rsqrtImpl:()=>PA,simpleAbsImpl:()=>rA,sliceImpl:()=>jd,squaredDifferenceImpl:()=>zA,stridedSliceImpl:()=>Jv,subImpl:()=>VA,tileImpl:()=>Qv,topKImpl:()=>ek,transposeImpl:()=>Gd,uniqueImpl:()=>tk});function rA(r){let e=new Float32Array(r.length);for(let t=0;t{let{x:e}=r.inputs,t=r.backend;re(e,"abs");let o=new Float32Array(x.sizeFromShape(e.shape)),n=t.data.get(e.dataId).values;return o=rA(n),t.makeOutput(o,e.shape,"float32")},oA={kernelName:is,backendName:"cpu",kernelFunc:p5};function Ye(r){return(e,t,o,n,s)=>{let a=S.assertAndGetBroadcastShape(e,t),i=a.length,l=x.computeStrides(a),u=x.sizeFromShape(a),c=x.getTypedArrayFromDType(s,u),p=e.length,m=t.length,f=x.computeStrides(e),d=x.computeStrides(t),h=S.getBroadcastDims(e,a),g=S.getBroadcastDims(t,a);if(h.length+g.length===0)for(let y=0;y_[T]=0);let w=x.locToIndex(_,p,f),k=b.slice(-m);g.forEach(T=>k[T]=0);let $=x.locToIndex(k,m,d);c[y]=r(o[w],n[$])}return[c,a]}}function pr(r){let{inputs:e,backend:t}=r,{real:o,imag:n}=e,s=t.data.get(o.dataId).values,a=t.data.get(n.dataId).values,i=t.makeTensorInfo(o.shape,"complex64"),l=t.data.get(i.dataId);return l.complexTensorInfos={real:t.makeTensorInfo(o.shape,"float32",s),imag:t.makeTensorInfo(n.shape,"float32",a)},i}var nA={kernelName:Xl,backendName:"cpu",kernelFunc:pr};function Op(r,e,t="float32"){if(t==="complex64"){let n=Op(r,e,"float32"),s=Op(r,e,"float32");return pr({inputs:{real:n,imag:s},backend:r})}let o=x.makeZerosTypedArray(x.sizeFromShape(e),t);return r.makeTensorInfo(e,t,o)}function Ar(r){let{inputs:e,backend:t}=r,{x:o}=e;return t.incRef(o.dataId),{dataId:o.dataId,shape:o.shape,dtype:o.dtype}}var sA={kernelName:cs,backendName:"cpu",kernelFunc:Ar};function Yn(r){let{inputs:e,backend:t}=r,{input:o}=e,n=t.data.get(o.dataId).complexTensorInfos.real,s=t.data.get(n.dataId).values;return t.makeTensorInfo(n.shape,n.dtype,s)}var iA={kernelName:fu,backendName:"cpu",kernelFunc:Yn};function Zn(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{dtype:s}=o;if(s==="complex64"){if(n.dtype==="complex64")return Ar({inputs:{x:n},backend:t});let a=Op(t,n.shape,n.dtype),i=Zn({inputs:{x:n},backend:t,attrs:{dtype:"float32"}}),l=pr({inputs:{real:i,imag:a},backend:t});return t.disposeIntermediateTensorInfo(a),t.disposeIntermediateTensorInfo(i),l}if(n.dtype==="complex64"){let a=Yn({inputs:{input:n},backend:t}),i=Zn({inputs:{x:a},backend:t,attrs:{dtype:s}});return t.disposeIntermediateTensorInfo(a),i}if(!x.hasEncodingLoss(n.dtype,s)){let a=Ar({inputs:{x:n},backend:t});return{dataId:a.dataId,shape:a.shape,dtype:s}}if(s==="int32"){let a=t.data.get(n.dataId).values,i=Int32Array.from(a);return t.makeTensorInfo(n.shape,"int32",i)}if(s==="bool"){let a=t.data.get(n.dataId).values,i=x.toTypedArray([0],n.dtype),[l,u]=Ye((c,p)=>c!==p?1:0)(n.shape,[],a,i,"bool");return t.makeTensorInfo(u,"bool",l)}throw new Error(`Error in Cast: failed to cast ${n.dtype} to ${s}`)}var aA={kernelName:Fo,backendName:"cpu",kernelFunc:Zn};function ot(r,e,t,o){return t==null?({inputs:n,backend:s})=>{let{a,b:i}=n,l=s;re([a,i],r);let u=l.data.get(a.dataId).values,c=l.data.get(i.dataId).values,p=o||a.dtype,[m,f]=e(a.shape,i.shape,u,c,p);return l.makeTensorInfo(f,p,m)}:({inputs:n,backend:s})=>{let{a,b:i}=n,l=s;if(a.dtype==="complex64"||i.dtype==="complex64"){let u=Zn({inputs:{x:a},backend:l,attrs:{dtype:"complex64"}}),c=l.data.get(u.dataId),p=c.complexTensorInfos.real,m=c.complexTensorInfos.imag,f=l.data.get(p.dataId).values,d=l.data.get(m.dataId).values,h=Zn({inputs:{x:i},backend:l,attrs:{dtype:"complex64"}}),g=l.data.get(h.dataId),y=g.complexTensorInfos.real,b=g.complexTensorInfos.imag,_=l.data.get(y.dataId).values,w=l.data.get(b.dataId).values,[k,$,T]=t(a.shape,i.shape,f,d,_,w),F=l.makeTensorInfo(T,"float32",k),M=l.makeTensorInfo(T,"float32",$),L=pr({inputs:{real:F,imag:M},backend:l});return l.disposeIntermediateTensorInfo(u),l.disposeIntermediateTensorInfo(h),l.disposeIntermediateTensorInfo(F),l.disposeIntermediateTensorInfo(M),L}else{let u=l.data.get(a.dataId).values,c=l.data.get(i.dataId).values,p=o||a.dtype,[m,f]=e(a.shape,i.shape,u,c,p);return l.makeTensorInfo(f,p,m)}}}function Pp(r){return(e,t,o,n,s,a)=>{let i=S.assertAndGetBroadcastShape(e,t),l=x.sizeFromShape(i),u=i.length,c=x.computeStrides(i),p=x.getTypedArrayFromDType("float32",l),m=x.getTypedArrayFromDType("float32",l),f=S.getBroadcastDims(e,i),d=S.getBroadcastDims(t,i),h=S.mergeRealAndImagArrays(o,n),g=S.mergeRealAndImagArrays(s,a),y=e.length,b=x.computeStrides(e),_=t.length,w=x.computeStrides(t);if(f.length+d.length===0)for(let k=0;kT[H]=0);let F=x.locToIndex(T,y,b),M=$.slice(-_);d.forEach(H=>M[H]=0);let L=x.locToIndex(M,_,w),G=r(h[F*2],h[F*2+1],g[L*2],g[L*2+1]);p[k]=G.real,m[k]=G.imag}return[p,m,i]}}var lA=Ye((r,e)=>r+e),m5=Pp((r,e,t,o)=>({real:r+t,imag:e+o})),Ua=ot(bo,lA,m5),uA={kernelName:bo,backendName:"cpu",kernelFunc:Ua};function Bd(r,e,t,o,n){let s=x.sizeFromShape(o),a=x.makeZerosTypedArray(n,t);for(let i=0;i=n||(s>0?a[l]+=e[i]:a[l]+=1)}return a}function Hv(r,e,t,o=!1){let n=r.shape[0],s=r.shape[1],a=Ie([n,t],e.dtype);for(let i=0;i=t||(o?a.set(1,i,u):e.size>0?a.set(a.get(i,u)+e.get(i,l),i,u):a.set(a.get(i,u)+1,i,u))}return a}function Jn(r){return(e,t,o)=>{let n=x.getTypedArrayFromDType(t,e.length);for(let s=0;s{let{x:a}=o;if(re(a,r),a.dtype==="string"||t==="string")throw new Error("unaryKernelFunc does not support string input/output");let i=s,l=i.data.get(a.dataId).values,u=x.sizeFromShape(a.shape),c=t||a.dtype,p=x.getArrayFromDType(c,u);for(let m=0;m{let{x:a}=o;if(re(a,r),a.dtype==="string"||t==="string")throw new Error("unaryKernelFunc does not support string input/output");let i=s,l=i.data.get(a.dataId).values,u=t||a.dtype,c=e(l,u,n);return i.makeTensorInfo(a.shape,u,c)}}var cA=Jn(r=>Math.ceil(r)),f5=Qn(Js,cA),pA={kernelName:Js,backendName:"cpu",kernelFunc:f5};function Vd(r,e,t,o){let n=x.getArrayFromDType(t,x.sizeFromShape(e));if(o&&t!=="string"){let s=0;r.forEach(a=>{let i=x.sizeFromShape(a.shape);n.set(a.vals,s),s+=i})}else{let s=0;r.forEach(a=>{let i=t==="string"?S.fromUint8ToStringArray(a.vals):a.vals,l=0;for(let u=0;uMath.exp(r)),Kv=Qn(on,mA),fA={kernelName:on,backendName:"cpu",kernelFunc:Kv};var dA=Jn(r=>Math.expm1(r)),d5=Qn(si,dA),hA={kernelName:si,backendName:"cpu",kernelFunc:d5};var gA=Jn(r=>Math.floor(r)),h5=Qn(nn,gA),xA={kernelName:nn,backendName:"cpu",kernelFunc:h5};function Xv(r,e,t){let o=Ie(t,r.dtype);for(let n=0;nr>e?1:0),g5=ot(li,yA,null,"bool"),bA={kernelName:li,backendName:"cpu",kernelFunc:g5};var _A=Ye((r,e)=>rMath.log(r)),y5=Qn(cn,vA),kA={kernelName:cn,backendName:"cpu",kernelFunc:y5};function Zv(r,e,t,o){let n=x.getTypedArrayFromDType(o,x.sizeFromShape(t));for(let s=0;si&&(i=u)}n[s]=i}return n}var CA=Ye((r,e)=>Math.max(r,e)),b5=ot(mn,CA),IA={kernelName:mn,backendName:"cpu",kernelFunc:b5};var NA=Ye((r,e)=>Math.min(r,e)),_5=ot(gn,NA),SA={kernelName:gn,backendName:"cpu",kernelFunc:_5};var wx=Ye((r,e)=>r*e),w5=Pp((r,e,t,o)=>({real:r*t-e*o,imag:r*o+e*t})),Wd=ot(xn,wx,w5),TA={kernelName:xn,backendName:"cpu",kernelFunc:Wd};function EA(r,e,t){let o=x.createScalarValue(-1,t);return wx([],e,o,r,t)}function v5(r){let{inputs:e,backend:t}=r,{x:o}=e;re(o,"neg");let n=t.data.get(o.dataId).values,[s,a]=EA(n,o.shape,o.dtype);return t.makeTensorInfo(a,o.dtype,s)}var AA={kernelName:ps,backendName:"cpu",kernelFunc:v5};var DA=Ye((r,e)=>r!==e?1:0),k5=ot(xi,DA,null,"bool"),$A={kernelName:xi,backendName:"cpu",kernelFunc:k5};function Gd(r,e,t,o,n){let s=e.length,a=x.sizeFromShape(e),i=x.computeStrides(e),l=x.computeStrides(n),u=x.getTypedArrayFromDType(t,x.sizeFromShape(n));for(let c=0;ct.disposeIntermediateTensorInfo(b)),t.makeTensorInfo(y,g,d)}var OA={kernelName:wi,backendName:"cpu",kernelFunc:C5};function Ud(r,e,t,o){let n=r===e,s=r1;if(n||s||a)return x.makeZerosTypedArray(0,o);let i=Math.abs(Math.ceil((e-r)/t)),l=x.makeZerosTypedArray(i,o);e1/Math.sqrt(r)),I5=Qn(Sn,PA),MA={kernelName:Sn,backendName:"cpu",kernelFunc:I5};function jd(r,e,t,o,n){let s=sr.isSliceContinous(o,e,t),a=x.sizeFromShape(t),i=x.computeStrides(o);if(s){let p=sr.computeFlatOffset(e,i);return n==="string"?r.slice(p,p+a):r.subarray(p,p+a)}let l=n==="string"?S.fromUint8ToStringArray(r):r,u=Ie(o,n,l),c=Ie(t,n);for(let p=0;pd+e[h]);c.set(u.get(...f),...m)}return n==="string"?S.fromStringArrayToUint8(c.values):c.values}function es(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{begin:s,size:a}=o;re(n,"slice");let[i,l]=sr.parseSliceParams(n,s,a);sr.assertParamsValid(n,i,l);let u=t.data.get(n.dataId).values,c=jd(u,i,l,n.shape,n.dtype);return t.makeTensorInfo(l,n.dtype,c)}var LA={kernelName:gs,backendName:"cpu",kernelFunc:es};var zA=Ye((r,e)=>{let t=r-e;return t*t}),N5=ot(Rn,zA),BA={kernelName:Rn,backendName:"cpu",kernelFunc:N5};function Jv(r,e,t,o){let n=Ie(r,e.dtype);for(let s=0;sr-e),S5=Pp((r,e,t,o)=>({real:r-t,imag:e-o})),qd=ot(Fn,VA,S5),WA={kernelName:Fn,backendName:"cpu",kernelFunc:qd};function Qv(r,e){let t=new Array(r.rank);for(let n=0;n_.value-b.value);let h=p*o,g=l.subarray(h,h+o),y=u.subarray(h,h+o);for(let b=0;b{for(let g=0;gnew qv,1);var ok=$e(ri,r=>r>=0?r:Math.exp(r)-1),UA={kernelName:ri,backendName:"cpu",kernelFunc:ok};function nk(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{alpha:s}=o;re([n],"leakyRelu");let a=x.sizeFromShape(n.shape),i=t.data.get(n.dataId).values,l=x.getTypedArrayFromDType("float32",a);for(let u=0;ur<0?e*r:r);function sk(r){let{inputs:e,backend:t}=r,{x:o,alpha:n}=e;re([o,n],"prelu");let s=t.data.get(o.dataId).values,a=t.data.get(n.dataId).values,[i,l]=T5(o.shape,n.shape,s,a,o.dtype);return t.makeTensorInfo(l,o.dtype,i)}var qA={kernelName:wn,backendName:"cpu",kernelFunc:sk};var ik=$e(vn,r=>Math.max(0,r)),HA={kernelName:vn,backendName:"cpu",kernelFunc:ik};var ak=$e(Cn,r=>Math.min(Math.max(0,r),6)),KA={kernelName:Cn,backendName:"cpu",kernelFunc:ak};function Mp(r,e,t,o,n){if(t==="linear")return Ar({inputs:{x:e},backend:r});if(t==="relu")return ik({inputs:{x:e},backend:r});if(t==="elu")return ok({inputs:{x:e},backend:r});if(t==="relu6")return ak({inputs:{x:e},backend:r});if(t==="prelu")return sk({inputs:{x:e,alpha:o},backend:r});if(t==="leakyrelu")return nk({inputs:{x:e},backend:r,attrs:{alpha:n}});throw new Error(`Activation ${t} has not been implemented for the CPU backend.`)}function tt(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{shape:s}=o,a=x.sizeFromShape(n.shape),i=x.inferFromImplicitShape(s,a),l=x.sizeFromShape(i);x.assert(a===l,()=>`The new shape (${i}) has ${l} elements and the old shape (${n.shape}) has ${a} elements. The new shape and old shape must have the same number of elements.`),t.incRef(n.dataId);let u=t.data.get(n.dataId);if(u.complexTensorInfos!=null){let c=u.complexTensorInfos.real,p=u.complexTensorInfos.imag;c.shape=i,p.shape=i}return{dataId:n.dataId,shape:i,dtype:n.dtype}}var XA={kernelName:ds,backendName:"cpu",kernelFunc:tt};function lk(r){let{inputs:e,backend:t,attrs:o}=r,{a:n,b:s}=e,{transposeA:a,transposeB:i}=o;re([n,s],"matMul");let l=n.shape.length,u=s.shape.length,c=a?n.shape[l-2]:n.shape[l-1],p=i?s.shape[u-1]:s.shape[u-2],m=a?n.shape[l-1]:n.shape[l-2],f=i?s.shape[u-2]:s.shape[u-1],d=n.shape.slice(0,-2),h=s.shape.slice(0,-2),g=x.sizeFromShape(d),y=x.sizeFromShape(h),b=g===y||g===1||y===1;x.assert(l>=2&&u>=2&&b,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${d}) and (${h}).`);let w=(g>y?n.shape.slice(0,-2):s.shape.slice(0,-2)).concat([m,f]);x.assert(c===p,()=>`Error in matMul: inner shapes (${c}) and (${p}) of Tensors with shapes ${n.shape} and ${s.shape} and transposeA=${a} and transposeB=${i} must match.`);let k=a?[g,c,m]:[g,m,c],$=i?[y,f,p]:[y,p,f],T=tt({inputs:{x:n},backend:t,attrs:{shape:k}}),F=tt({inputs:{x:s},backend:t,attrs:{shape:$}}),M=a?T.shape[1]:T.shape[2],L=a?T.shape[2]:T.shape[1],G=i?F.shape[1]:F.shape[2],H=Math.max(g,y),U=t.data.get(T.dataId).values,Z=t.data.get(F.dataId).values,K=x.computeStrides(T.shape),X=x.computeStrides(F.shape),[oe,J,Q]=a?[K[0],1,K[1]]:[K[0],K[1],1],[ie,ae,ue]=i?[1,X[1],X[0]]:[X[1],1,X[0]],le=L*G,ge=Ie([H,L,G],T.dtype),we=ge.values,ye=t.blockSize;for(let ke=0;keMath.acos(r)),JA={kernelName:js,backendName:"cpu",kernelFunc:A5};var D5=$e(qs,r=>Math.acosh(r)),QA={kernelName:qs,backendName:"cpu",kernelFunc:D5};function $5(r){let{inputs:e,backend:t}=r,o=e;re(e,"addN");let n=o.map(i=>t.data.get(i.dataId).values),s=Ie(o[0].shape,o[0].dtype),a=s.values;for(let i=0;ib&&(b=k,_=w)}f[g]=_}return u.forEach(g=>t.disposeIntermediateTensorInfo(g)),t.makeTensorInfo(c,"int32",f)}var o2={kernelName:Ko,backendName:"cpu",kernelFunc:O5};function P5(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{axis:s}=o;re(n,"argMin");let a=x.parseAxisParam(s,n.shape),i=S.getAxesPermutation(a,n.shape.length),l=n,u=[];i!=null&&(l=or({inputs:{x:n},backend:t,attrs:{perm:i}}),u.push(l),a=S.getInnerMostAxes(a.length,l.shape.length)),a=[a[0]],S.assertAxesAreInnerMostDims("argMin",a,l.shape.length);let[c,p]=S.computeOutAndReduceShapes(l.shape,a),m=x.sizeFromShape(c),f=x.makeZerosTypedArray(m,"int32"),d=x.sizeFromShape(p),h=t.data.get(l.dataId).values;for(let g=0;gt.disposeIntermediateTensorInfo(g)),t.makeTensorInfo(c,"int32",f)}var n2={kernelName:oa,backendName:"cpu",kernelFunc:P5};var M5=$e(Hs,r=>Math.asin(r)),s2={kernelName:Hs,backendName:"cpu",kernelFunc:M5};var L5=$e(Ks,r=>Math.asinh(r)),i2={kernelName:Ks,backendName:"cpu",kernelFunc:L5};var z5=$e(Xs,r=>Math.atan(r)),a2={kernelName:Xs,backendName:"cpu",kernelFunc:z5};var B5=Ye((r,e)=>Math.atan2(r,e)),V5=ot(Zs,B5),l2={kernelName:Zs,backendName:"cpu",kernelFunc:V5};var W5=$e(Ys,r=>Math.atanh(r)),u2={kernelName:Ys,backendName:"cpu",kernelFunc:W5};function Lp(r,e,t,o,n,s){let a=n.strideHeight,i=n.strideWidth,l=n.dilationHeight,u=n.dilationWidth,c=n.effectiveFilterHeight,p=n.effectiveFilterWidth,m=n.padInfo.top,f=n.padInfo.left,d=s==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,h=Ie(n.outShape,t),g=h.values,y=n.outShape[1]*n.outShape[2]*n.outShape[3],b=n.outShape[2]*n.outShape[3],_=n.outShape[3];for(let w=0;woe?oe=we:s==="avg"&&(J+=we,Q++)}if(isNaN(oe))break}let ie=H+U*_+T;g[ie]=s==="avg"?J/Q:oe}}}return h}function vx(r,e,t,o,n=!1,s=!1){let a=Ie(o.outShape,"int32"),i=o.strideHeight,l=o.strideWidth,u=o.dilationHeight,c=o.dilationWidth,p=o.effectiveFilterHeight,m=o.effectiveFilterWidth,f=o.padInfo.top,d=o.padInfo.left,h=Ie(e,t,r);for(let g=0;gL&&(L=X,n?G=s?((g*o.inHeight+H)*o.inWidth+Z)*o.inChannels+y:(H*o.inWidth+Z)*o.inChannels+y:G=U*m+K)}}a.set(G,g,b,$,y)}}return a}function kx(r,e,t,o,n,s){let a=n.strideDepth,i=n.strideHeight,l=n.strideWidth,u=n.dilationDepth,c=n.dilationHeight,p=n.dilationWidth,m=n.effectiveFilterDepth,f=n.effectiveFilterHeight,d=n.effectiveFilterWidth,h=n.padInfo.front,g=n.padInfo.top,y=n.padInfo.left,b=s==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,_=Ie(n.outShape,t),w=_.values,k=n.outShape[1]*n.outShape[2]*n.outShape[3]*n.outShape[4],$=n.outShape[2]*n.outShape[3]*n.outShape[4],T=n.outShape[3]*n.outShape[4],F=n.outShape[4];for(let M=0;MEe?Ee=nt:s==="avg"&&(Re+=nt,Pe++),isNaN(Ee))break}if(isNaN(Ee))break}if(isNaN(Ee))break}let ze=ke+H;w[ze]=s==="avg"?Re/Pe:Ee}}}}return _}function c2(r,e){let t=Ie(e.outShape,"int32"),o=e.strideDepth,n=e.strideHeight,s=e.strideWidth,a=e.dilationDepth,i=e.dilationHeight,l=e.dilationWidth,u=e.effectiveFilterDepth,c=e.effectiveFilterHeight,p=e.effectiveFilterWidth,m=e.padInfo.front,f=e.padInfo.top,d=e.padInfo.left;for(let h=0;h=U&&(U=ae,Z=X*c*p+J*c+ie)}}}t.set(Z,h,y,k,M,g)}}}return t}function G5(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e;re(n,"avgPool");let{filterSize:s,strides:a,pad:i,dimRoundingMode:l}=o,u=1;x.assert(S.eitherStridesOrDilationsAreOne(a,u),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${a} and dilations '${u}'`);let c=S.computePool2DInfo(n.shape,s,a,u,i,l),p;if(c.filterWidth===1&&c.filterHeight===1&&x.arraysEqual(c.inShape,c.outShape))p=Ar({inputs:{x:n},backend:t});else{let m=t.data.get(n.dataId).values,f=x.computeStrides(n.shape),d=Lp(m,n.shape,n.dtype,f,c,"avg");p=t.makeTensorInfo(c.outShape,n.dtype,d.values)}return p}var p2={kernelName:Xo,backendName:"cpu",kernelFunc:G5};function U5(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{filterSize:s,strides:a,pad:i,dimRoundingMode:l,dataFormat:u,dilations:c}=o;re(n,"avgPool3d");let p=c;p==null&&(p=[1,1,1]);let m=S.computePool3DInfo(n.shape,s,a,p,i,l,u),f=t.data.get(n.dataId).values,d=kx(f,n.shape,n.dtype,x.computeStrides(n.shape),m,"avg");return t.makeTensorInfo(d.shape,"float32",d.values)}var m2={kernelName:na,backendName:"cpu",kernelFunc:U5};function j5(r){let{inputs:e,backend:t,attrs:o}=r,{dy:n,input:s}=e,{filterSize:a,strides:i,pad:l,dilations:u,dimRoundingMode:c}=o;re([n,s],"avgPool3DGrad");let p=S.computePool3DInfo(s.shape,a,i,u,l,c),m=p.strideDepth,f=p.strideHeight,d=p.strideWidth,h=p.filterDepth,g=p.filterHeight,y=p.filterWidth,b=p.dilationDepth,_=p.dilationHeight,w=p.dilationWidth,k=p.effectiveFilterDepth,$=p.effectiveFilterHeight,T=p.effectiveFilterWidth,F=k-1-p.padInfo.front,M=T-1-p.padInfo.left,L=$-1-p.padInfo.top,G=Ie(s.shape,"float32"),H=1/(h*g*y),U=t.bufferSync(n);for(let Z=0;Z=p.outDepth||Math.floor(ge)!==ge))for(let we=0;we<$;we+=_){let ye=(ie+we)/f;if(!(ye<0||ye>=p.outHeight||Math.floor(ye)!==ye))for(let ke=0;ke=p.outWidth||Math.floor(Ee)!==Ee)continue;ue+=U.get(Z,ge,ye,Ee,K)}}}G.set(ue*H,Z,X,oe,J,K)}return t.makeTensorInfo(G.shape,G.dtype,G.values)}var f2={kernelName:Hl,backendName:"cpu",kernelFunc:j5};function q5(r){let{inputs:e,backend:t,attrs:o}=r,{dy:n,input:s}=e,a=s;re([n,s],"avgPoolGrad");let{filterSize:i,strides:l,pad:u}=o,c=S.computePool2DInfo(a.shape,i,l,1,u),p=c.strideHeight,m=c.strideWidth,f=c.filterHeight,d=c.filterWidth,h=c.dilationHeight,g=c.dilationWidth,y=c.effectiveFilterHeight,b=c.effectiveFilterWidth,_=b-1-c.padInfo.left,w=y-1-c.padInfo.top,k=Ie(a.shape,"float32"),$=1/(f*d),T=t.data.get(n.dataId).values,F=Ie(n.shape,"float32",T);for(let M=0;M=c.outHeight||Math.floor(oe)!==oe))for(let J=0;J=c.outWidth||Math.floor(Q)!==Q)continue;K+=F.get(M,oe,Q,L)}}k.set(K*$,M,G,H,L)}return t.makeTensorInfo(k.shape,k.dtype,k.values)}var d2={kernelName:ql,backendName:"cpu",kernelFunc:q5};function H5(r){let{inputs:e,backend:t,attrs:o}=r,{x:n,scale:s,offset:a,mean:i,variance:l}=e;x.assert(i.shape.length===l.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),x.assert(a==null||i.shape.length===a.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),x.assert(s==null||i.shape.length===s.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks."),re([n,i,l,s,a],"batchNorm");let{varianceEpsilon:u}=o;u==null&&(u=.001);let c=t.data.get(n.dataId).values,p=t.data.get(i.dataId).values,m=t.data.get(l.dataId).values,f=s?t.data.get(s.dataId).values:new Float32Array([1]),d=a?t.data.get(a.dataId).values:new Float32Array([0]),h=new Float32Array(c.length),g=d.length,y=f.length,b=m.length,_=p.length,w=0,k=0,$=0,T=0;for(let F=0;F=g&&(w=0),k>=_&&(k=0),$>=y&&($=0),T>=b&&(T=0);return t.makeTensorInfo(n.shape,n.dtype,h)}var h2={kernelName:an,backendName:"cpu",kernelFunc:H5};function K5(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{blockShape:s,crops:a}=o;re([n],"batchToSpaceND");let i=s.reduce((y,b)=>y*b),l=S.getReshaped(n.shape,s,i),u=S.getPermuted(l.length,s.length),c=S.getReshapedPermuted(n.shape,s,i),p=S.getSliceBeginCoords(a,s.length),m=S.getSliceSize(c,a,s.length),f=tt({inputs:{x:n},backend:t,attrs:{shape:l}}),d=or({inputs:{x:f},backend:t,attrs:{perm:u}}),h=tt({inputs:{x:d},backend:t,attrs:{shape:c}}),g=es({inputs:{x:h},backend:t,attrs:{begin:p,size:m}});return t.disposeIntermediateTensorInfo(f),t.disposeIntermediateTensorInfo(d),t.disposeIntermediateTensorInfo(h),g}var g2={kernelName:sa,backendName:"cpu",kernelFunc:K5};function X5(r){let{inputs:e,backend:t,attrs:o}=r,{x:n,weights:s}=e,{size:a}=o,i=t.data.get(n.dataId).values,l=t.data.get(s.dataId).values,u=Bd(i,l,s.dtype,s.shape,a);return t.makeTensorInfo([a],s.dtype,u)}var x2={kernelName:Kl,backendName:"cpu",kernelFunc:X5};var Y5=$e(Oo,(r,e)=>{let t=e;return r>t.clipValueMax?t.clipValueMax:r{let{x:e}=r.inputs,t=r.backend,o=new Float32Array(x.sizeFromShape(e.shape)),n=t.data.get(e.dataId),s=n.complexTensorInfos.real,a=n.complexTensorInfos.imag,i=t.data.get(s.dataId).values,l=t.data.get(a.dataId).values;for(let u=0;uh.shape),s);if(x.sizeFromShape(a)===0)return t.makeTensorInfo(a,e[0].dtype,[]);let i=e.filter(h=>x.sizeFromShape(h.shape)>0);if(i.length===1)return Ar({inputs:{x:i[0]},backend:t});let l=i.map(h=>h.shape);if(S.assertParamsConsistent(l,s),i[0].dtype==="complex64"){let h=i.map(w=>Yn({inputs:{input:w},backend:t})),g=i.map(w=>Hi({inputs:{input:w},backend:t})),y=Il({inputs:h,backend:t,attrs:{axis:s}}),b=Il({inputs:g,backend:t,attrs:{axis:s}}),_=pr({inputs:{real:y,imag:b},backend:t});return h.forEach(w=>t.disposeIntermediateTensorInfo(w)),g.forEach(w=>t.disposeIntermediateTensorInfo(w)),t.disposeIntermediateTensorInfo(y),t.disposeIntermediateTensorInfo(b),_}let u=i.map(h=>{let g=x.sizeFromShape(h.shape.slice(s));return tt({inputs:{x:h},backend:t,attrs:{shape:[-1,g]}})}),c=u.map(h=>({vals:t.data.get(h.dataId).values,shape:h.shape}));a=S.computeOutShape(u.map(h=>h.shape),1);let p=u[0].shape[0]===1,m=Vd(c,a,e[0].dtype,p),f=S.computeOutShape(i.map(h=>h.shape),s),d=t.makeTensorInfo(f,e[0].dtype,m);return u.forEach(h=>t.disposeIntermediateTensorInfo(h)),d}var w2={kernelName:as,backendName:"cpu",kernelFunc:Il};function uk(r){let{inputs:e,backend:t,attrs:o}=r,{x:n,filter:s}=e,{strides:a,pad:i,dataFormat:l,dilations:u,dimRoundingMode:c}=o;re([n,s],"conv2d");let p=S.convertConv2DDataFormat(l),m=S.computeConv2DInfo(n.shape,s.shape,a,u,i,c,!1,p),f=m.filterHeight,d=m.filterWidth,h=m.dilationHeight,g=m.dilationWidth,y=m.padInfo.left,b=m.padInfo.top,_=m.dataFormat==="channelsLast",w=new ct(m.outShape,n.dtype),k=x.computeStrides(n.shape),$=x.computeStrides(s.shape),T=k[0],F=_?k[1]:k[2],M=_?k[2]:1,L=_?1:k[1],G=w.strides[0],H=_?w.strides[1]:w.strides[2],U=_?w.strides[2]:1,Z=_?1:w.strides[1],K=t.data.get(n.dataId).values,X=t.data.get(s.dataId).values,oe=w.values;for(let J=0;J=m.inHeight)continue;let ye=ge*$[0],ke=Q+we*F;for(let Ee=0;Ee=m.inWidth)continue;let gt=ye+ze*$[1],Ct=ke+mt*M,xt=gt;for(let yt=0;yt=u.inDepth)continue;let J=X*M[0],Q=G+oe*F[1];for(let ie=0;ie=u.inHeight)continue;let we=J+le*M[1],ye=Q+ge*F[2];for(let ke=0;ke=u.inWidth)continue;let mt=we+Pe*M[2],gt=ye+ze*u.inChannels,Ct=mt;for(let xt=0;xtMath.cos(r)),T2={kernelName:Qo,backendName:"cpu",kernelFunc:oX};var nX=$e(Qs,r=>Math.cosh(r)),E2={kernelName:Qs,backendName:"cpu",kernelFunc:nX};function sX(r){let{inputs:e,backend:t,attrs:o}=r,{image:n,boxes:s,boxInd:a}=e,{cropSize:i,method:l,extrapolationValue:u}=o,[c,p,m,f]=n.shape,d=s.shape[0],[h,g]=i,y=Ie([d,h,g,f],"float32"),b=t.data.get(s.dataId).values,_=t.data.get(a.dataId).values,w=t.data.get(n.dataId).values,k=x.computeStrides(n.shape),$=x.computeStrides(y.shape);for(let T=0;T=c)continue;let Z=h>1?(G-M)*(p-1)/(h-1):0,K=g>1?(H-L)*(m-1)/(g-1):0;for(let X=0;X1?M*(p-1)+X*Z:.5*(M+G)*(p-1);if(oe<0||oe>p-1){for(let J=0;J1?L*(m-1)+ae*K:.5*(L+H)*(m-1);if(ue<0||ue>m-1){for(let ye=0;ye1?L*(m-1)+J*K:.5*(L+H)*(m-1);if(Q<0||Q>m-1){for(let ue=0;uey+d-b-1:(y,b)=>y+b;for(let y=0;y`Only NHWC dataFormat supported on CPU for depthToSpace. Got ${a}`),x.assert(s>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${s}`);let i=n.shape[0],l=n.shape[1],u=n.shape[2],c=n.shape[3],p=l*s,m=u*s,f=c/(s*s),d=t.data.get(n.dataId).values,h=new Float32Array(i*p*m*f),g=0;for(let y=0;y`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${a} and dilations '${m}'`);let f=S.computeConv2DInfo(n.shape,s.shape,a,m,i,u,!0),{filterHeight:d,filterWidth:h,dilationHeight:g,dilationWidth:y,padInfo:b}=f,_=b.left,w=b.top,k=f.outChannels/f.inChannels,$=new ct(f.outShape,n.dtype),T=t.data.get(n.dataId).values,F=t.data.get(s.dataId).values,M=$.values;for(let L=0;L=f.inHeight)continue;let J=X*p[0],Q=G+oe*c[1];for(let ie=0;ie=f.inWidth)continue;let we=J+le*p[1],ye=Q+ge*f.inChannels,ke=ae,Ee=we;for(let Re=0;Re{let{x:o,filter:n}=r,{strides:s,pad:a,dilations:i}=t,l=e,u=l.data.get(o.dataId).values,c=o.shape.length,p=l.data.get(n.dataId).values,m=n.shape.length,{batchSize:f,inHeight:d,inWidth:h,inChannels:g,outHeight:y,outWidth:b,padInfo:_,strideHeight:w,strideWidth:k,filterHeight:$,filterWidth:T,dilationHeight:F,dilationWidth:M,outShape:L}=S.computeDilation2DInfo(o.shape,n.shape,s,a,"NHWC",i),G=x.sizeFromShape(L),H=L.length,U=x.getArrayFromDType(o.dtype,G);for(let K=0;K=0&&ge=0&&yeae&&(ae=Re)}}}let ue=x.locToIndex([K,X,J,ie],H,x.computeStrides(L));U[ue]=ae}}}return{dataId:l.write(x.toTypedArray(U,o.dtype),L,o.dtype),shape:L,dtype:o.dtype}}};var z2={kernelName:Oc,backendName:"cpu",kernelFunc:({inputs:r,backend:e,attrs:t})=>{let{x:o,filter:n,dy:s}=r,{strides:a,pad:i,dilations:l}=t,u=e,c=x.toNestedArray(o.shape,u.data.get(o.dataId).values),p=x.toNestedArray(n.shape,u.data.get(n.dataId).values),{batchSize:m,inHeight:f,inWidth:d,inChannels:h,outHeight:g,outWidth:y,padInfo:b,strideHeight:_,strideWidth:w,filterHeight:k,filterWidth:$,dilationHeight:T,dilationWidth:F,outShape:M}=S.computeDilation2DInfo(o.shape,n.shape,a,i,"NHWC",l);x.assert(s.rank===M.length,()=>`Error in ${Oc}, dy must have the same rank as output ${M.length}, but got ${s.rank}`);let L=x.toNestedArray(M,u.data.get(s.dataId).values),G=x.makeZerosNestedTypedArray(n.shape,n.dtype);for(let U=0;U=0&&le=0&&weQ&&(Q=ye,ie=ue,ae=ge)}}}G[ie][ae][J]+=L[U][Z][X][J]}}}return{dataId:u.write(x.toTypedArray(G,o.dtype),n.shape,n.dtype),shape:n.shape,dtype:n.dtype}}};var B2={kernelName:Fc,backendName:"cpu",kernelFunc:({inputs:r,backend:e,attrs:t})=>{let{x:o,filter:n,dy:s}=r,{strides:a,pad:i,dilations:l}=t,u=e,c=x.toNestedArray(o.shape,u.data.get(o.dataId).values),p=x.toNestedArray(n.shape,u.data.get(n.dataId).values),{batchSize:m,inHeight:f,inWidth:d,inChannels:h,outHeight:g,outWidth:y,padInfo:b,strideHeight:_,strideWidth:w,filterHeight:k,filterWidth:$,dilationHeight:T,dilationWidth:F,outShape:M}=S.computeDilation2DInfo(o.shape,n.shape,a,i,"NHWC",l);x.assert(s.rank===M.length,()=>`Error in ${Fc}, dy must have the same rank as output ${M.length}, but got ${s.rank}`);let L=x.toNestedArray(M,u.data.get(s.dataId).values),G=x.makeZerosNestedTypedArray(o.shape,o.dtype);for(let U=0;U=0&&le=0&&weQ&&(Q=ye,ie=le,ae=we)}}}G[U][ie][ae][J]+=L[U][Z][X][J]}}}return{dataId:u.write(x.toTypedArray(G,o.dtype),o.shape,o.dtype),shape:o.shape,dtype:o.dtype}}};function mX(r){let{inputs:e,backend:t}=r,{dy:o,y:n}=e;re([o,n],"eluGrad");let s=new Float32Array(x.sizeFromShape(n.shape)),a=t.data.get(n.dataId).values,i=t.data.get(o.dataId).values;for(let l=0;l=1?s[l]=i[l]:s[l]=i[l]*(u+1)}return t.makeTensorInfo(n.shape,"float32",s)}var V2={kernelName:ou,backendName:"cpu",kernelFunc:mX};var fX=Ye((r,e)=>r===e?1:0),pk=ot(ni,fX,null,"bool"),W2={kernelName:ni,backendName:"cpu",kernelFunc:pk};var dX=S.ERF_P,hX=S.ERF_A1,gX=S.ERF_A2,xX=S.ERF_A3,yX=S.ERF_A4,bX=S.ERF_A5,_X=$e(oi,r=>{let e=Math.sign(r),t=Math.abs(r),o=1/(1+dX*t);return e*(1-((((bX*o+yX)*o+xX)*o+gX)*o+hX)*o*Math.exp(-t*t))}),G2={kernelName:oi,backendName:"cpu",kernelFunc:_X};function zp(r){let{inputs:e,backend:t,attrs:o}=r,{input:n}=e,{dim:s}=o,a=n.shape.length,i=n.shape.slice(),l=s;return s<0&&(x.assert(-(a+1)<=s,()=>`Axis must be in the interval [${-(a+1)}, ${a}]`),l=a+s+1),i.splice(l,0,1),tt({inputs:{x:n},backend:t,attrs:{shape:i}})}var U2={kernelName:ls,backendName:"cpu",kernelFunc:zp};var wX=Ye((r,e)=>r/e),Hd=ot(rn,wX),Kd={kernelName:rn,backendName:"cpu",kernelFunc:Hd};function Cx(r,e,t){let o=r.shape,n=o[0],s=o[1],a=t.data.get(r.dataId),i=a.complexTensorInfos.real,l=a.complexTensorInfos.imag,u=[n,s],c=x.sizeFromShape(u),p=x.getTypedArrayFromDType("float32",c),m=x.getTypedArrayFromDType("float32",c);for(let g=0;g{let{image:o}=r,n=t,s=x.getTypedArrayFromDType(o.dtype,x.sizeFromShape(o.shape)),[a,i,l,u]=o.shape,c=n.data.get(o.dataId).values;for(let m=0;m=0&&kMath.floor(r/e)),TX=ot(sn,SX,null,"int32"),K2={kernelName:sn,backendName:"cpu",kernelFunc:TX};function EX(r){let{inputs:e,backend:t,attrs:o}=r,{x:n,filter:s,bias:a,preluActivationWeights:i}=e,{strides:l,pad:u,dataFormat:c,dilations:p,dimRoundingMode:m,activation:f,leakyreluAlpha:d}=o,h=uk({inputs:{x:n,filter:s},backend:t,attrs:{strides:l,pad:u,dataFormat:c,dilations:p,dimRoundingMode:m}});if(a){let g=h;h=Ua({inputs:{a:h,b:a},backend:t}),t.disposeIntermediateTensorInfo(g)}if(f){let g=h;h=Mp(t,h,f,i,d),t.disposeIntermediateTensorInfo(g)}return h}var X2={kernelName:ws,backendName:"cpu",kernelFunc:EX};function AX(r){let{inputs:e,backend:t,attrs:o}=r,{x:n,filter:s,bias:a,preluActivationWeights:i}=e,{strides:l,pad:u,dataFormat:c,dilations:p,dimRoundingMode:m,activation:f,leakyreluAlpha:d}=o,h=ck({inputs:{x:n,filter:s},backend:t,attrs:{strides:l,pad:u,dataFormat:c,dilations:p,dimRoundingMode:m}});if(a){let g=h;h=Ua({inputs:{a:h,b:a},backend:t}),t.disposeIntermediateTensorInfo(g)}if(f){let g=h;h=Mp(t,h,f,i,d),t.disposeIntermediateTensorInfo(g)}return h}var Y2={kernelName:vs,backendName:"cpu",kernelFunc:AX};function DX(r){let{inputs:e,backend:t}=r,{params:o,indices:n}=e,s=x.sizeFromShape(o.shape),a=n.shape,i=a[a.length-1],[l,u,c,p]=S.prepareAndValidate(o,n);if(u===0)return t.makeTensorInfo(l,o.dtype,[]);let m=Ie([u,c],o.dtype),f=t.data.get(n.dataId).values,d=t.data.get(o.dataId).values;for(let h=0;h=s/c)throw new Error(`Invalid indices: ${g} does not index into ${o.shape}`);for(let b=0;br>=e?1:0),FX=ot(ln,RX,null,"bool"),Q2={kernelName:ln,backendName:"cpu",kernelFunc:FX};function OX(r){let{inputs:e,backend:t}=r,{input:o}=e,n=x.sizeFromShape(o.shape),s=o.shape[o.shape.length-1],a=n/s,i=tt({inputs:{x:o},backend:t,attrs:{shape:[a,s]}}),l=Cx(i,!0,t),u=tt({inputs:{x:l},backend:t,attrs:{shape:o.shape}});return t.disposeIntermediateTensorInfo(i),t.disposeIntermediateTensorInfo(l),u}var eD={kernelName:su,backendName:"cpu",kernelFunc:OX};var PX=$e(ui,r=>Number.isFinite(r)?1:0,"bool"),tD={kernelName:ui,backendName:"cpu",kernelFunc:PX};var MX=$e(ci,r=>Math.abs(r)===Infinity?1:0,"bool"),rD={kernelName:ci,backendName:"cpu",kernelFunc:MX};var LX=$e(pi,r=>Number.isNaN(r)?1:0,"bool"),oD={kernelName:pi,backendName:"cpu",kernelFunc:LX};var zX=Ye((r,e)=>r<=e?1:0),BX=ot(fi,zX,null,"bool"),nD={kernelName:fi,backendName:"cpu",kernelFunc:BX};function VX(r){let{backend:e,attrs:t}=r,{start:o,stop:n,num:s}=t,a=Yv(o,n,s);return e.makeTensorInfo([a.length],"float32",a)}var sD={kernelName:au,backendName:"cpu",kernelFunc:VX};var WX=$e(di,r=>Math.log1p(r)),iD={kernelName:di,backendName:"cpu",kernelFunc:WX};var GX=Ye((r,e)=>r&&e),UX=ot(hi,GX,null,"bool"),aD={kernelName:hi,backendName:"cpu",kernelFunc:UX};var jX=$e(Qa,r=>r?0:1,"bool"),lD={kernelName:Qa,backendName:"cpu",kernelFunc:jX};var qX=Ye((r,e)=>r||e),HX=ot(el,qX,null,"bool"),uD={kernelName:el,backendName:"cpu",kernelFunc:HX};function KX(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{depthRadius:s,bias:a,alpha:i,beta:l}=o;re(n,"LRN");let u=n.shape[3],c=u-1,p=t.data.get(n.dataId).values,m=x.sizeFromShape(n.shape),f=new Float32Array(m);function d(h){let g=h%u,y=h-g+Math.max(0,g-s),b=h-g+Math.min(g+s,c),_=0;for(;y<=b;y++){let w=p[y];_+=w*w}return _}for(let h=0;h`Error in maxPool: Either strides or dilations must be 1. Got strides ${a} and dilations '${u}'`);let c=S.computePool2DInfo(n.shape,s,a,u,i,l),p;if(c.filterWidth===1&&c.filterHeight===1&&x.arraysEqual(c.inShape,c.outShape))p=Ar({inputs:{x:n},backend:t});else{let m=t.data.get(n.dataId).values,f=x.computeStrides(n.shape),d=Lp(m,n.shape,n.dtype,f,c,"max");p=t.makeTensorInfo(c.outShape,n.dtype,d.values)}return p}var fD={kernelName:fn,backendName:"cpu",kernelFunc:YX};function ZX(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{filterSize:s,strides:a,pad:i,dimRoundingMode:l,dataFormat:u,dilations:c}=o;re(n,"maxPool3d");let p=c;p==null&&(p=[1,1,1]);let m=S.computePool3DInfo(n.shape,s,a,p,i,l,u),f=t.data.get(n.dataId).values,d=kx(f,n.shape,n.dtype,x.computeStrides(n.shape),m,"max");return t.makeTensorInfo(d.shape,"float32",d.values)}var dD={kernelName:pa,backendName:"cpu",kernelFunc:ZX};function JX(r){let{inputs:e,backend:t,attrs:o}=r,{dy:n,input:s}=e,{filterSize:a,strides:i,pad:l,dilations:u,dimRoundingMode:c}=o;re([n,s],"maxPool3DGrad");let p=S.computePool3DInfo(s.shape,a,i,u,l,c),m=t.bufferSync(s),f=c2(m,p),d=p.strideDepth,h=p.strideHeight,g=p.strideWidth,y=p.dilationDepth,b=p.dilationHeight,_=p.dilationWidth,w=p.effectiveFilterDepth,k=p.effectiveFilterHeight,$=p.effectiveFilterWidth,T=w-1-p.padInfo.front,F=$-1-p.padInfo.left,M=k-1-p.padInfo.top,L=Ie(s.shape,"float32"),G=t.bufferSync(n);for(let H=0;H=p.outDepth||Math.floor(ue)!==ue))for(let le=0;le=p.outHeight||Math.floor(ge)!==ge))for(let we=0;we<$;we+=_){let ye=(Q+we)/g;if(ye<0||ye>=p.outWidth||Math.floor(ye)!==ye)continue;let ke=w*k*$-1-f.get(H,ue,ge,ye,U),Ee=ae*k*$+le*$+we,Re=ke===Ee?1:0;if(Re===0)continue;ie+=G.get(H,ue,ge,ye,U)*Re}}}L.set(ie,H,Z,K,X,U)}return t.makeTensorInfo(L.shape,L.dtype,L.values)}var hD={kernelName:cu,backendName:"cpu",kernelFunc:JX};function QX(r){let{inputs:e,backend:t,attrs:o}=r,{dy:n,input:s,output:a}=e,i=s;re([s,a],"maxPoolGrad");let{filterSize:l,strides:u,pad:c,dimRoundingMode:p}=o,m=S.computePool2DInfo(i.shape,l,u,1,c,p),f=t.data.get(i.dataId).values,d=Ie(m.outShape,i.dtype,vx(f,i.shape,i.dtype,m).values),h=m.strideHeight,g=m.strideWidth,y=m.dilationHeight,b=m.dilationWidth,_=m.effectiveFilterHeight,w=m.effectiveFilterWidth,k=w-1-m.padInfo.left,$=_-1-m.padInfo.top,T=Ie(i.shape,"float32"),F=t.data.get(n.dataId).values,M=Ie(n.shape,"float32",F);for(let L=0;L=m.outHeight||Math.floor(J)!==J))for(let Q=0;Q=m.outWidth||Math.floor(ie)!==ie)continue;let ae=_*w-1-d.get(L,J,ie,G),ue=oe*w+Q,le=ae===ue?1:0;if(le===0)continue;X+=M.get(L,J,ie,G)*le}}T.set(X,L,H,U,G)}return t.makeTensorInfo(T.shape,T.dtype,T.values)}var gD={kernelName:uu,backendName:"cpu",kernelFunc:QX};function xD(r,e,t,o,n){let s=x.computeStrides(e),a=Lp(r,e,t,s,n,"max"),i=vx(r,e,t,n,!0,o);return[a.values,i.values]}var yD={kernelName:pu,backendName:"cpu",kernelFunc:({inputs:r,attrs:e,backend:t})=>{let{x:o}=r,{filterSize:n,strides:s,pad:a,includeBatchInIndex:i}=e,l=t;re(o,"MaxPoolWithArgmax");let u=l.data.get(o.dataId).values,c=S.computePool2DInfo(o.shape,n,s,[1,1],a),[p,m]=xD(u,o.shape,o.dtype,i,c),f=l.write(p,c.outShape,o.dtype),d=l.write(m,c.outShape,o.dtype);return[{dataId:f,shape:c.outShape,dtype:o.dtype},{dataId:d,shape:c.outShape,dtype:"int32"}]}};function ic(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{axis:s,keepDims:a}=o;re(n,"sum");let i;n.dtype==="bool"?i=Zn({inputs:{x:n},backend:t,attrs:{dtype:"int32"}}):i=Ar({inputs:{x:n},backend:t});let l=i.shape.length,u=x.parseAxisParam(s,i.shape),c=S.getAxesPermutation(u,l),p=u,m=i;c!=null&&(m=or({inputs:{x:i},backend:t,attrs:{perm:c}}),p=S.getInnerMostAxes(p.length,l)),S.assertAxesAreInnerMostDims("sum",p,m.shape.length);let[f,d]=S.computeOutAndReduceShapes(m.shape,p),h=S.upcastType(m.dtype,"int32"),g=Op(t,f,h),y=x.sizeFromShape(d),b=t.data.get(g.dataId).values,_=t.data.get(m.dataId).values;for(let w=0;wt.disposeIntermediateTensorInfo(g)),h}var _D={kernelName:dn,backendName:"cpu",kernelFunc:e8};function t8(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{axis:s,keepDims:a}=o;re(n,"min");let i=x.parseAxisParam(s,n.shape),l=i,u=S.getAxesPermutation(l,n.shape.length),c=n;u!=null&&(c=or({inputs:{x:n},backend:t,attrs:{perm:u}}),l=S.getInnerMostAxes(l.length,n.shape.length)),S.assertAxesAreInnerMostDims("min",l,c.shape.length);let[p,m]=S.computeOutAndReduceShapes(c.shape,l),f=x.sizeFromShape(m),d=x.makeZerosTypedArray(x.sizeFromShape(p),c.dtype),h=t.data.get(c.dataId).values;for(let y=0;y_[0]+n.shape[w]+_[1]),l=s.map(_=>_[0]),u=s.map((_,w)=>_[0]+n.shape[w]),c=a==="reflect"?0:1,p=t.data.get(n.dataId).values,m=n.shape.length,f=x.computeStrides(n.shape),d=x.sizeFromShape(i),h=i.length,g=x.computeStrides(i),y=x.getTypedArrayFromDType(n.dtype,d);for(let _=0;_=u[$]&&(w[$]=(u[$]-1)*2-w[$]+c);w=w.map(($,T)=>$-l[T]);let k=x.locToIndex(w,m,f);y[_]=p[k]}return{dataId:t.write(y,i,n.dtype),shape:i,dtype:n.dtype}}var vD={kernelName:ma,backendName:"cpu",kernelFunc:r8};var o8=Ye((r,e)=>{let t=r%e;return r<0&&e<0||r>=0&&e>=0?t:(t+e)%e}),n8=ot(gi,o8),kD={kernelName:gi,backendName:"cpu",kernelFunc:n8};var ID=Ec(Wm());function dk(r){let{inputs:e,backend:t,attrs:o}=r,{logits:n}=e,{dim:s}=o,a=n.shape.length,i=s;if(i===-1&&(i=a-1),i!==a-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${a} and dim was ${i}`);let l=x.parseAxisParam([i],n.shape),u=fk({inputs:{x:n},backend:t,attrs:{reductionIndices:l,keepDims:!1}}),c=S.expandShapeToKeepDim(u.shape,l),p=tt({inputs:{x:u},backend:t,attrs:{shape:c}}),m=qd({inputs:{a:n,b:p},backend:t}),f=Kv({inputs:{x:m},backend:t}),d=ic({inputs:{x:f},backend:t,attrs:{axis:l,keepDims:!1}}),h=tt({inputs:{x:d},backend:t,attrs:{shape:c}}),g=Hd({inputs:{a:f,b:h},backend:t});return t.disposeIntermediateTensorInfo(u),t.disposeIntermediateTensorInfo(p),t.disposeIntermediateTensorInfo(m),t.disposeIntermediateTensorInfo(f),t.disposeIntermediateTensorInfo(d),t.disposeIntermediateTensorInfo(h),g}var CD={kernelName:$n,backendName:"cpu",kernelFunc:dk};function s8(r){let{inputs:e,backend:t,attrs:o}=r,{logits:n}=e,{numSamples:s,seed:a,normalized:i}=o;re(n,"multinomial");let l=i?n:dk({inputs:{logits:n},backend:t,attrs:{dim:-1}}),u=l.shape[0],c=l.shape[1],p=t.data.get(l.dataId).values,m=[u,s],f=x.makeZerosTypedArray(x.sizeFromShape(m),"int32");for(let d=0;d=0&&c[p]{x.assertShapesMatch(s,c.shape,"All tensors passed to stack must have matching shapes"),x.assert(a===c.dtype,()=>"All tensors passed to stack must have matching dtypes")});let i=[],l=e.map(c=>{let p=zp({inputs:{input:c},backend:t,attrs:{dim:n}});return i.push(p),p}),u=Il({inputs:l,backend:t,attrs:{axis:n}});return i.forEach(c=>t.disposeIntermediateTensorInfo(c)),u}var FD={kernelName:fs,backendName:"cpu",kernelFunc:hk};function f8(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{paddings:s,constantValue:a}=o;re(n,"pad");let i=s.map((b,_)=>b[0]+n.shape[_]+b[1]),l=s.map(b=>b[0]),u=t.data.get(n.dataId).values,c=x.sizeFromShape(n.shape),p=n.shape.length,m=x.computeStrides(n.shape),f=x.sizeFromShape(i),d=i.length,h=x.computeStrides(i),g=x.getTypedArrayFromDType(n.dtype,f);a!==0&&g.fill(a);for(let b=0;b$+l[T]),k=x.locToIndex(w,d,h);g[k]=u[b]}return{dataId:t.write(g,i,n.dtype),shape:i,dtype:n.dtype}}var Ix={kernelName:bn,backendName:"cpu",kernelFunc:f8};var d8=Ye((r,e)=>Math.pow(r,e)),h8=ot(_n,d8),OD={kernelName:_n,backendName:"cpu",kernelFunc:h8};function g8(r){let{backend:e,attrs:t}=r,{start:o,stop:n,dtype:s,step:a}=t,i=Ud(o,n,a,s);return e.makeTensorInfo([i.length],s,i)}var PD={kernelName:fa,backendName:"cpu",kernelFunc:g8};var x8=$e(vi,r=>1/r),MD={kernelName:vi,backendName:"cpu",kernelFunc:x8};function y8(r){let{inputs:e,backend:t,attrs:o}=r,{images:n}=e,{alignCorners:s,halfPixelCenters:a,size:i}=o;re(n,"resizeBilinear");let l=x.computeStrides(n.shape),[u,c]=i,[p,m,f,d]=n.shape,h=t.data.get(n.dataId).values,g=new Float32Array(x.sizeFromShape([p,u,c,d])),y=[s&&u>1?m-1:m,s&&c>1?f-1:f],b=[s&&u>1?u-1:u,s&&c>1?c-1:c],_=0,w=y[0]/b[0],k=y[1]/b[1];for(let $=0;$1?u-1:u,a&&f>1?c-1:c],g=[a&&m>1?m-1:m,a&&f>1?f-1:f],y=h[0]/g[0],b=h[1]/g[1],_=t.data.get(s.dataId).values,w=0;for(let k=0;k1?m-1:m,s&&c>1?f-1:f],b=[s&&u>1?u-1:u,s&&c>1?c-1:c],_=y[0]/b[0],w=y[1]/b[1],k=0;for(let $=0;$1?c-1:c,a&&d>1?p-1:p],b=[a&&f>1?f-1:f,a&&d>1?d-1:d],_=y[0]/b[0],w=y[1]/b[1],k=1/_,$=1/w,T=Math.ceil(k)*2+2,F=Math.ceil($)*2+2;for(let M=0;M=f)continue;let le=L+ue*l[1],ge=ue*_,we=Math.min(c-1,a?Math.round(ge):Math.floor(ge));if(G===we)for(let ye=0;ye=d)continue;let Ee=le+ke*l[2],Re=ke*w,Pe=Math.min(p-1,a?Math.round(Re):Math.floor(Re));K===Pe&&(ie+=g[Ee+Q])}}h[X+Q]=ie}}}}return t.makeTensorInfo(n.shape,n.dtype,h)}var VD={kernelName:du,backendName:"cpu",kernelFunc:w8};function v8(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{dims:s}=o;re(n,"reverse");let a=n.shape.length,i=x.parseAxisParam(s,n.shape);if(a===0)return Ar({inputs:{x:n},backend:t});let l=new ct(n.shape,n.dtype),u=t.bufferSync(n);for(let c=0;cm[f]=n.shape[f]-1-m[f]),l.set(u.get(...m),...p)}return t.makeTensorInfo(l.shape,l.dtype,l.values)}var WD={kernelName:In,backendName:"cpu",kernelFunc:v8};var GD={kernelName:$i,backendName:"cpu",kernelFunc:({inputs:r,attrs:e,backend:t})=>{let{image:o}=r,{radians:n,fillValue:s,center:a}=e,i=t,l=x.getTypedArrayFromDType(o.dtype,x.sizeFromShape(o.shape)),[u,c,p,m]=o.shape,[f,d]=S.getImageCenter(a,c,p),h=255,g=Math.sin(n),y=Math.cos(n),b=i.data.get(o.dataId).values;for(let w=0;w=0&&Z=0&&K{let e=Math.floor(r);return r-e<.5?Math.floor(r):r-e>.5?Math.ceil(r):e%2==0?e:e+1}),UD={kernelName:Nn,backendName:"cpu",kernelFunc:k8};function Nx(r,e,t,o,n,s,a,i,l,u){let c=[o/n,n],p=r.values,m=e.values;if(o===0)return Ie(t,e.dtype);let f=Ie(c,e.dtype);f.values.fill(l);for(let d=0;d=o/n)throw new Error(`Invalid indices: ${h} does not index into ${t}`);for(let y=0;y1||n.shape.length===1?1:x.sizeFromShape(n.shape.slice(1));for(let d=0;dr>=0?S8*r:N8*(Math.exp(r)-1)),HD={kernelName:Ci,backendName:"cpu",kernelFunc:T8};var E8=$e(En,r=>1/(1+Math.exp(-r))),KD={kernelName:En,backendName:"cpu",kernelFunc:E8};var A8=$e(Ni,r=>r<0?-1:r>0?1:0),XD={kernelName:Ni,backendName:"cpu",kernelFunc:A8};var D8=$e(Tn,r=>Math.sin(r)),YD={kernelName:Tn,backendName:"cpu",kernelFunc:D8};var $8=$e(Ii,r=>Math.sinh(r)),ZD={kernelName:Ii,backendName:"cpu",kernelFunc:$8};var R8=11920928955078125e-23,JD=Math.log(R8)+2,F8=$e(Si,r=>{let e=r>-JD,t=r{let m=[...c];m[i]=p;let f=es({inputs:{x:n},backend:t,attrs:{begin:u,size:m}});return u[i]+=p,f})}var r$={kernelName:xs,backendName:"cpu",kernelFunc:M8};var L8=$e(An,r=>Math.sqrt(r)),o$={kernelName:An,backendName:"cpu",kernelFunc:L8};var n$={kernelName:ga,backendName:"cpu",kernelFunc:({inputs:r,backend:e})=>{let{x:t}=r,o=e;re(t,"square");let n=o.data.get(t.dataId).values,s=new Float32Array(n.length);for(let i=0;i{let t=e;return isNaN(r)?NaN:r>0?1:t.alpha}),s$={kernelName:Di,backendName:"cpu",kernelFunc:z8};function B8(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{begin:s,end:a,strides:i,beginMask:l,endMask:u,ellipsisMask:c,newAxisMask:p,shrinkAxisMask:m}=o;re(n,"stridedSlice");let{nonStrided:f,$begin:d,$strides:h,size:g,newShape:y,outShape:b}=sr.sliceInfo(n.shape,s,a,i,l,u,c,p,m),_=tt({inputs:{x:n},backend:t,attrs:{shape:y}}),w;if(f){let $=es({inputs:{x:_},backend:t,attrs:{begin:d,size:g}});w=tt({inputs:{x:$},backend:t,attrs:{shape:b}}),t.disposeIntermediateTensorInfo($)}else if(b.some($=>$===0))w=t.makeTensorInfo(b,n.dtype,[]);else{let $=t.bufferSync(_),T=Jv(b,$,h,d);w=t.makeTensorInfo(T.shape,T.dtype,T.values)}let k=tt({inputs:{x:w},backend:t,attrs:{shape:b}});return t.disposeIntermediateTensorInfo(_),t.disposeIntermediateTensorInfo(w),k}var i$={kernelName:Ti,backendName:"cpu",kernelFunc:B8};var V8=$e(Ei,r=>Math.tan(r)),a$={kernelName:Ei,backendName:"cpu",kernelFunc:V8};var W8=$e(On,r=>Math.tanh(r)),l$={kernelName:On,backendName:"cpu",kernelFunc:W8};function G8(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{reps:s}=o;re(n,"tile");let a=Qv(t.bufferSync(n),s);return t.makeTensorInfo(a.shape,a.dtype,a.values)}var u$={kernelName:_o,backendName:"cpu",kernelFunc:G8};function U8(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{k:s,sorted:a}=o;re(n,"topk");let i=t.data.get(n.dataId).values,[l,u]=ek(i,n.shape,n.dtype,s,a);return[t.makeTensorInfo(l.shape,l.dtype,l.values),t.makeTensorInfo(u.shape,u.dtype,u.values)]}var c$={kernelName:Ai,backendName:"cpu",kernelFunc:U8};function j8(r){let{inputs:e,attrs:t,backend:o}=r,{axis:n}=t,{x:s}=e;re(s,"unique");let a=o.data.get(s.dataId).values,{outputValues:i,outputShape:l,indices:u}=tk(a,n,s.shape,s.dtype);return[o.makeTensorInfo(l,s.dtype,i),o.makeTensorInfo([u.length],"int32",u)]}var p$={kernelName:xu,backendName:"cpu",kernelFunc:j8};function q8(r){let{inputs:e,backend:t,attrs:o}=r,{value:n}=e,{axis:s}=o;s<0&&(s+=n.shape.length);let a=n.shape.length,i=n.shape[s],l=new Array(a-1),u=0;for(let f=0;ft.disposeIntermediateTensorInfo(d)),f}var f$={kernelName:xa,backendName:"cpu",kernelFunc:H8};var K8=[ZA,oA,JA,QA,uA,e2,t2,r2,o2,n2,s2,i2,a2,l2,u2,p2,m2,f2,d2,YA,h2,g2,x2,aA,pA,y2,nA,b2,w2,k2,C2,v2,N2,S2,I2,T2,E2,A2,D2,$2,R2,F2,O2,P2,M2,L2,B2,z2,Kd,UA,V2,W2,G2,fA,U2,hA,j2,q2,H2,xA,K2,X2,Y2,Z2,J2,bA,Q2,sA,eD,_2,tD,rD,oD,jA,wA,nD,sD,kA,iD,aD,lD,uD,cD,pD,IA,fD,dD,hD,gD,yD,mD,_D,wD,SA,vD,kD,ND,TA,AA,SD,TD,ED,$A,AD,RD,FD,Ix,OD,qA,OA,PD,iA,MD,HA,KA,XA,LD,zD,BD,VD,WD,GD,UD,MA,jD,qD,HD,KD,XD,YD,ZD,LA,CD,QD,e$,t$,r$,o$,n$,BA,s$,i$,WA,bD,a$,l$,u$,c$,RA,p$,m$,f$,DD];for(let r of K8)tl(r);var ac={},gk={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function d$(r,e){ac[r]=e}function Go(r){if(!(r in ac)){let t=X8(r);if(t!==null)ac[r]=t;else return console.log("Could not get context for WebGL version",r),null}let e=ac[r];return e.isContextLost()?(delete ac[r],Go(r)):(e.disable(e.DEPTH_TEST),e.disable(e.STENCIL_TEST),e.disable(e.BLEND),e.disable(e.DITHER),e.disable(e.POLYGON_OFFSET_FILL),e.disable(e.SAMPLE_COVERAGE),e.enable(e.SCISSOR_TEST),e.enable(e.CULL_FACE),e.cullFace(e.BACK),ac[r])}function Y8(r){if(typeof OffscreenCanvas!="undefined"&&r===2)return new OffscreenCanvas(300,150);if(typeof document!="undefined")return document.createElement("canvas");throw new Error("Cannot create a canvas in this context")}function X8(r){if(r!==1&&r!==2)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");let e=Y8(r);return e.addEventListener("webglcontextlost",t=>{t.preventDefault(),delete ac[r]},!1),r===1?e.getContext("webgl",gk)||e.getContext("experimental-webgl",gk):e.getContext("webgl2",gk)}var Nl;(function(r){r[r.DENSE=0]="DENSE",r[r.SHARED_BATCH=1]="SHARED_BATCH"})(Nl||(Nl={}));var Dr;(function(r){r[r.RENDER=0]="RENDER",r[r.UPLOAD=1]="UPLOAD",r[r.PIXELS=2]="PIXELS",r[r.DOWNLOAD=3]="DOWNLOAD"})(Dr||(Dr={}));var wr;(function(r){r[r.UNPACKED_FLOAT16=0]="UNPACKED_FLOAT16",r[r.UNPACKED_FLOAT32=1]="UNPACKED_FLOAT32",r[r.PACKED_4X1_UNSIGNED_BYTE=2]="PACKED_4X1_UNSIGNED_BYTE",r[r.PACKED_2X2_FLOAT32=3]="PACKED_2X2_FLOAT32",r[r.PACKED_2X2_FLOAT16=4]="PACKED_2X2_FLOAT16"})(wr||(wr={}));function lc(r,e){return[e,r]}function h$(r,e){return r*e}function Sl(r){let e=x.sizeFromShape(r),t=Math.ceil(e/4);return x.sizeToSquarishShape(t)}function Ki(r,e){return[Math.max(1,Math.ceil(e/2)),Math.max(1,Math.ceil(r/2))]}function g$(r,e){let[t,o]=Ki(r,e);return t*o*4}function Zd(r,e){let t=r,o,n,s,a,i,l,u,c,p,m;return W().getNumber("WEBGL_VERSION")===2?(o=t.R32F,n=t.R16F,s=t.RGBA16F,a=t.RGBA32F,i=t.RED,u=4,c=1,p=t.HALF_FLOAT,m=t.FLOAT):(o=r.RGBA,n=r.RGBA,s=r.RGBA,a=t.RGBA,i=r.RGBA,u=4,c=4,p=e!=null?e.HALF_FLOAT_OES:null,m=r.FLOAT),l=r.RGBA,{internalFormatFloat:o,internalFormatHalfFloat:n,internalFormatPackedHalfFloat:s,internalFormatPackedFloat:a,textureFormatFloat:i,downloadTextureFormat:l,downloadUnpackNumChannels:u,defaultNumChannels:c,textureTypeHalfFloat:p,textureTypeFloat:m}}function De(r,e){let t=e();return W().getBool("DEBUG")&&Z8(r),t}function Z8(r){let e=r.getError();if(e!==r.NO_ERROR)throw new Error("WebGL Error: "+J8(r,e))}var Q8=596e-10,eY=65504;function x$(r){return!!(W().getBool("WEBGL_RENDER_FLOAT32_ENABLED")||r===0||Q8r.getExtension(e),'Extension "'+e+'" not supported on this browser.')}function y$(r,e){let t=ja(r,()=>r.createShader(r.VERTEX_SHADER),"Unable to create vertex WebGLShader.");if(De(r,()=>r.shaderSource(t,e)),De(r,()=>r.compileShader(t)),r.getShaderParameter(t,r.COMPILE_STATUS)===!1)throw console.log(r.getShaderInfoLog(t)),new Error("Failed to compile vertex shader.");return t}function b$(r,e){let t=ja(r,()=>r.createShader(r.FRAGMENT_SHADER),"Unable to create fragment WebGLShader.");if(De(r,()=>r.shaderSource(t,e)),De(r,()=>r.compileShader(t)),r.getShaderParameter(t,r.COMPILE_STATUS)===!1)throw tY(e,r.getShaderInfoLog(t)),new Error("Failed to compile fragment shader.");return t}var rY=/ERROR: [0-9]+:([0-9]+):/g;function tY(r,e){let t=rY.exec(e);if(t==null){console.log(`Couldn't parse line number in error: ${e}`),console.log(r);return}let o=+t[1],n=r.split(` +`),s=n.length.toString().length+2,a=n.map((p,m)=>x.rightPad((m+1).toString(),s)+p),i=0;for(let p=0;pr.createProgram(),"Unable to create WebGLProgram.")}function w$(r,e){if(De(r,()=>r.linkProgram(e)),r.getProgramParameter(e,r.LINK_STATUS)===!1)throw console.log(r.getProgramInfoLog(e)),new Error("Failed to link vertex and fragment shaders.")}function Sx(r,e){if(De(r,()=>r.validateProgram(e)),r.getProgramParameter(e,r.VALIDATE_STATUS)===!1)throw console.log(r.getProgramInfoLog(e)),new Error("Shader program validation failed.")}function v$(r,e){let t=ja(r,()=>r.createBuffer(),"Unable to create WebGLBuffer");return De(r,()=>r.bindBuffer(r.ARRAY_BUFFER,t)),De(r,()=>r.bufferData(r.ARRAY_BUFFER,e,r.STATIC_DRAW)),t}function k$(r,e){let t=ja(r,()=>r.createBuffer(),"Unable to create WebGLBuffer");return De(r,()=>r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,t)),De(r,()=>r.bufferData(r.ELEMENT_ARRAY_BUFFER,e,r.STATIC_DRAW)),t}function C$(r){return ja(r,()=>r.createTexture(),"Unable to create WebGLTexture.")}function I$(r,e){let t=W().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(r<=0||e<=0){let o=`[${r}x${e}]`;throw new Error("Requested texture size "+o+" is invalid.")}if(r>t||e>t){let o=`[${r}x${e}]`,n=`[${t}x${t}]`;throw new Error("Requested texture size "+o+" greater than WebGL maximum on this browser / GPU "+n+".")}}function N$(r){return ja(r,()=>r.createFramebuffer(),"Unable to create WebGLFramebuffer.")}function xk(r,e,t,o,n,s,a){let i=r.getAttribLocation(e,t);return i===-1?!1:(De(r,()=>r.bindBuffer(r.ARRAY_BUFFER,o)),De(r,()=>r.vertexAttribPointer(i,n,r.FLOAT,!1,s,a)),De(r,()=>r.enableVertexAttribArray(i)),!0)}function nY(r,e,t){oY(r,t),De(r,()=>r.activeTexture(r.TEXTURE0+t)),De(r,()=>r.bindTexture(r.TEXTURE_2D,e))}function S$(r,e,t){return ja(r,()=>r.getUniformLocation(e,t),'uniform "'+t+'" not present in program.')}function T$(r,e,t){return r.getUniformLocation(e,t)}function E$(r,e,t,o){De(r,()=>nY(r,e,o)),De(r,()=>r.uniform1i(t,o))}function Tx(r,e,t){De(r,()=>r.bindFramebuffer(r.FRAMEBUFFER,t)),De(r,()=>r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,e,0))}function yk(r,e){De(r,()=>r.bindFramebuffer(r.FRAMEBUFFER,e)),De(r,()=>r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,null,0))}function Qd(r){let e=r.checkFramebufferStatus(r.FRAMEBUFFER);if(e!==r.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+sY(r,e))}function sY(r,e){switch(e){case r.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case r.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case r.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case r.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return`unknown error ${e}`}}function ja(r,e,t){let o=De(r,()=>e());if(o==null)throw new Error(t);return o}function oY(r,e){let t=r.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,o=e+r.TEXTURE0;if(ot){let n=`[gl.TEXTURE0, gl.TEXTURE${t}]`;throw new Error(`textureUnit must be in ${n}.`)}}function Tl(r,e=2){return x.sizeFromShape(r.slice(0,r.length-e))}function El(r){if(r.length===0)throw Error("Cannot get rows and columns of an empty shape array.");return[r.length>1?r[r.length-2]:1,r[r.length-1]]}function Ex(r){let e=[1,1,1];return r.length===0||r.length===1&&r[0]===1||(e=[Tl(r),...El(r)]),e}function A$(r,e=!1){let t=W().getNumber("WEBGL_MAX_TEXTURE_SIZE");e&&(t=t*2,r=r.map((n,s)=>s>=r.length-2?x.nearestLargerEven(r[s]):r[s]),r.length===1&&(r=[2,r[0]])),r.length!==2&&(r=x.squeezeShape(r).newShape);let o=x.sizeFromShape(r);if(r.length<=1&&o<=t)return[1,o];if(r.length===2&&r[0]<=t&&r[1]<=t)return r;if(r.length===3&&r[0]*r[1]<=t&&r[2]<=t)return[r[0]*r[1],r[2]];if(r.length===3&&r[0]<=t&&r[1]*r[2]<=t)return[r[0],r[1]*r[2]];if(r.length===4&&r[0]*r[1]*r[2]<=t&&r[3]<=t)return[r[0]*r[1]*r[2],r[3]];if(r.length===4&&r[0]<=t&&r[1]*r[2]*r[3]<=t)return[r[0],r[1]*r[2]*r[3]];if(e){let n=Tl(r),s=2,a=2;return r.length&&([s,a]=El(r)),o=n*(s/2)*(a/2),x.sizeToSquarishShape(o).map(i=>i*2)}return x.sizeToSquarishShape(o)}function Ax(r){return r%2==0}function uc(r,e){if(r=r.slice(-2),e=e.slice(-2),x.arraysEqual(r,e)||!r.length||!e.length||r[0]===0||r[1]===0||e[0]===0||e[1]===0)return!0;if(r.length!==e.length){let t=r.slice(-1)[0],o=e.slice(-1)[0];if(t===o||Ax(t)&&Ax(o)&&(r[0]===1||e[0]===1))return!0}return r[1]===e[1]&&Ax(r[0])&&Ax(e[0])}var bk,_k;function D$(r){if(bk==null){let e=Go(r);bk=e.getParameter(e.MAX_TEXTURE_SIZE)}return bk}function $$(r){if(_k==null){let e=Go(r);_k=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,_k)}function R$(r){if(r===0)return 0;let e,t=Go(r);return Uo(t,"EXT_disjoint_timer_query_webgl2")&&r===2?e=2:Uo(t,"EXT_disjoint_timer_query")?e=1:e=0,e}function Uo(r,e){return r.getExtension(e)!=null}function wk(r){try{if(Go(r)!=null)return!0}catch(e){return console.log("Error when getting WebGL context: ",e),!1}return!1}function F$(r){if(r===0)return!1;let e=Go(r);if(r===1){if(!Uo(e,"OES_texture_float"))return!1}else if(!Uo(e,"EXT_color_buffer_float"))return!1;return vk(e)}function O$(r){if(r===0)return!1;let e=Go(r);if(r===1){if(!Uo(e,"OES_texture_float")||!Uo(e,"WEBGL_color_buffer_float"))return!1}else{if(Uo(e,"EXT_color_buffer_float"))return vk(e);let o="EXT_color_buffer_half_float";if(Uo(e,o)){let n=e.getExtension(o);return iY(e,n)}return!1}return vk(e)}function vk(r){let e=Zd(r),t=r.createTexture();r.bindTexture(r.TEXTURE_2D,t);let o=1,n=1;r.texImage2D(r.TEXTURE_2D,0,e.internalFormatFloat,o,n,0,e.textureFormatFloat,e.textureTypeFloat,null);let s=r.createFramebuffer();r.bindFramebuffer(r.FRAMEBUFFER,s),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,t,0);let a=r.checkFramebufferStatus(r.FRAMEBUFFER)===r.FRAMEBUFFER_COMPLETE;return r.bindTexture(r.TEXTURE_2D,null),r.bindFramebuffer(r.FRAMEBUFFER,null),r.deleteTexture(t),r.deleteFramebuffer(s),a}function iY(r,e){let t=Zd(r,e),o=r.createTexture();r.bindTexture(r.TEXTURE_2D,o);let n=1,s=1;r.texImage2D(r.TEXTURE_2D,0,t.internalFormatHalfFloat,n,s,0,t.textureFormatFloat,t.textureTypeHalfFloat,null);let a=r.createFramebuffer();r.bindFramebuffer(r.FRAMEBUFFER,a),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,o,0);let i=r.checkFramebufferStatus(r.FRAMEBUFFER)===r.FRAMEBUFFER_COMPLETE;return r.bindTexture(r.TEXTURE_2D,null),r.bindFramebuffer(r.FRAMEBUFFER,null),r.deleteTexture(o),r.deleteFramebuffer(a),i}function P$(r){return r!==2?!1:Go(r).fenceSync!=null}function Xi(r,e){Array.isArray(r)||(r=[r]),r.forEach(t=>{t!=null&&x.assert(t.dtype!=="complex64",()=>`${e} does not support complex64 tensors in the WebGL backend.`)})}var We=W();We.registerFlag("HAS_WEBGL",()=>We.getNumber("WEBGL_VERSION")>0);We.registerFlag("WEBGL_VERSION",()=>wk(2)?2:wk(1)?1:0);We.registerFlag("WEBGL_CHECK_NUMERICAL_PROBLEMS",()=>!1);We.registerFlag("WEBGL_BUFFER_SUPPORTED",()=>We.get("WEBGL_VERSION")===2);We.registerFlag("WEBGL_CPU_FORWARD",()=>!0);We.registerFlag("WEBGL_FORCE_F16_TEXTURES",()=>!1);We.registerFlag("WEBGL_PACK",()=>We.getBool("HAS_WEBGL"));We.registerFlag("WEBGL_PACK_NORMALIZATION",()=>We.getBool("WEBGL_PACK"));We.registerFlag("WEBGL_PACK_CLIP",()=>We.getBool("WEBGL_PACK"));We.registerFlag("WEBGL_PACK_DEPTHWISECONV",()=>!1);We.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",()=>We.getBool("WEBGL_PACK"));We.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",()=>We.getBool("WEBGL_PACK"));We.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",()=>We.getBool("WEBGL_PACK"));We.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",()=>We.getBool("WEBGL_PACK"));We.registerFlag("WEBGL_PACK_REDUCE",()=>We.getBool("WEBGL_PACK"));We.registerFlag("WEBGL_LAZILY_UNPACK",()=>We.getBool("WEBGL_PACK"));We.registerFlag("WEBGL_CONV_IM2COL",()=>We.getBool("WEBGL_PACK"));We.registerFlag("WEBGL_MAX_TEXTURE_SIZE",()=>D$(We.getNumber("WEBGL_VERSION")));We.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",()=>$$(We.getNumber("WEBGL_VERSION")));We.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",()=>{let r=We.getNumber("WEBGL_VERSION");return r===0?0:R$(r)});We.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",()=>We.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!Vc.isMobile());We.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",()=>F$(We.getNumber("WEBGL_VERSION")));We.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",()=>We.getBool("WEBGL_FORCE_F16_TEXTURES")?!1:We.getBool("WEBGL_RENDER_FLOAT32_CAPABLE"));We.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",()=>O$(We.getNumber("WEBGL_VERSION")));We.registerFlag("WEBGL_FENCE_API_ENABLED",()=>P$(We.getNumber("WEBGL_VERSION")));We.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",()=>We.getBool("WEBGL_RENDER_FLOAT32_ENABLED")?4:0);We.registerFlag("WEBGL_DELETE_TEXTURE_THRESHOLD",()=>-1,r=>{if(r<0&&r!==-1)throw new Error(`WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never delete) or at least 0, but got ${r}.`)});function zt(){let r,e,t,o,n,s,a,i,l,u;return W().getNumber("WEBGL_VERSION")===2?(r="#version 300 es",e="in",t="out",o="in",n="texture",s="outputColor",a="out vec4 outputColor;",i=` bool isnan_custom(float val) { return (val > 0.0 || val < 0.0) ? false : val != 0.0; } @@ -52,7 +52,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee } #define isnan(value) isnan_custom(value) - `,defineSpecialInf="",defineRound=` + `,l="",u=` #define round(value) newRound(value) int newRound(float value) { return int(floor(value + 0.5)); @@ -61,7 +61,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee ivec4 newRound(vec4 value) { return ivec4(floor(value + vec4(0.5))); } - `):(version10="",attribute="attribute",varyingVs="varying",varyingFs="varying",texture2D="texture2D",output="gl_FragColor",defineOutput="",defineSpecialNaN=` + `):(r="",e="attribute",t="varying",o="varying",n="texture2D",s="gl_FragColor",a="",i=` #define isnan(value) isnan_custom(value) bool isnan_custom(float val) { return (val > 0. || val < 1. || val == 0.) ? false : true; @@ -69,7 +69,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee bvec4 isnan_custom(vec4 val) { return bvec4(isnan(val.x), isnan(val.y), isnan(val.z), isnan(val.w)); } - `,defineSpecialInf=` + `,l=` uniform float INFINITY; bool isinf(float val) { @@ -78,7 +78,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee bvec4 isinf(vec4 val) { return equal(abs(val), vec4(INFINITY)); } - `,defineRound=` + `,u=` int round(float value) { return int(floor(value + 0.5)); } @@ -86,11 +86,11 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee ivec4 round(vec4 value) { return ivec4(floor(value + vec4(0.5))); } - `),{version:version10,attribute,varyingVs,varyingFs,texture2D,output,defineOutput,defineSpecialNaN,defineSpecialInf,defineRound}}function getLogicalCoordinatesFromFlatIndex(coords2,shape,index="index"){let strides=util_exports.computeStrides(shape);return strides.map((stride,i)=>{let line1=`int ${coords2[i]} = ${index} / ${stride}`,line2=i===strides.length-1?`int ${coords2[i+1]} = ${index} - ${coords2[i]} * ${stride}`:`index -= ${coords2[i]} * ${stride}`;return`${line1}; ${line2};`}).join("")}function getFlatIndexFrom3D(shape){let strides=util_exports.computeStrides(shape).map(d=>d.toString());return` + `),{version:r,attribute:e,varyingVs:t,varyingFs:o,texture2D:n,output:s,defineOutput:a,defineSpecialNaN:i,defineSpecialInf:l,defineRound:u}}function Ls(r,e,t="index"){let o=x.computeStrides(e);return o.map((n,s)=>{let a=`int ${r[s]} = ${t} / ${n}`,i=s===o.length-1?`int ${r[s+1]} = ${t} - ${r[s]} * ${n}`:`index -= ${r[s]} * ${n}`;return`${a}; ${i};`}).join("")}function Bp(r){let e=x.computeStrides(r).map(t=>t.toString());return` int getFlatIndex(ivec3 coords) { - return coords.x * ${strides[0]} + coords.y * ${strides[1]} + coords.z; + return coords.x * ${e[0]} + coords.y * ${e[1]} + coords.z; } -`}var ENCODE_FLOAT_SNIPPET=` +`}var Dx=` const float FLOAT_MAX = 1.70141184e38; const float FLOAT_MIN = 1.17549435e-38; @@ -129,16 +129,16 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee return c / 255.0; } -`;var DecodeMatrixProgram=class{constructor(outputShape){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0,this.outPackingScheme=PackingScheme.DENSE;let texShape=getDenseTexShape(outputShape),glsl=getGlslDifferences();this.outputShape=outputShape,this.userCode=` +`;var kk=class{constructor(e){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0,this.outPackingScheme=Nl.DENSE;let t=Sl(e),o=zt();this.outputShape=e,this.userCode=` ivec3 outCoordsFromFlatIndex(int index) { - ${getLogicalCoordinatesFromFlatIndex(["r","c","d"],outputShape)} + ${Ls(["r","c","d"],e)} return ivec3(r, c, d); } void main() { ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${texShape[0]}, ${texShape[1]})); - int index = 4 * (resTexRC.x * ${texShape[1]} + resTexRC.y); + vec2(${t[0]}, ${t[1]})); + int index = 4 * (resTexRC.x * ${t[1]} + resTexRC.y); vec4 result = vec4(0.); @@ -148,18 +148,18 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee result[i] = getA(rc.x, rc.y, rc.z); } - ${glsl.output} = result; + ${o.output} = result; } - `}};var DecodeMatrixPackedProgram=class{constructor(outputShape){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outPackingScheme=PackingScheme.DENSE;let texShape=getDenseTexShape(outputShape),glsl=getGlslDifferences();this.outputShape=outputShape,this.userCode=` + `}};var Ck=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outPackingScheme=Nl.DENSE;let t=Sl(e),o=zt();this.outputShape=e,this.userCode=` ivec3 outCoordsFromFlatIndex(int index) { - ${getLogicalCoordinatesFromFlatIndex(["r","c","d"],outputShape)} + ${Ls(["r","c","d"],e)} return ivec3(r, c, d); } void main() { ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${texShape[0]}, ${texShape[1]})); - int index = 4 * (resTexRC.x * ${texShape[1]} + resTexRC.y); + vec2(${t[0]}, ${t[1]})); + int index = 4 * (resTexRC.x * ${t[1]} + resTexRC.y); vec4 result = vec4(0.); @@ -169,25 +169,25 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee result[i] = getChannel(getA(rc.x, rc.y, rc.z), vec2(rc.y, rc.z)); } - ${glsl.output} = result; + ${o.output} = result; } - `}};var EncodeFloatProgram=class{constructor(outputShape){this.variableNames=["A"],this.outTexUsage=TextureUsage.DOWNLOAD;let glsl=getGlslDifferences();this.outputShape=outputShape,this.userCode=` - ${ENCODE_FLOAT_SNIPPET} + `}};var Ik=class{constructor(e){this.variableNames=["A"],this.outTexUsage=Dr.DOWNLOAD;let t=zt();this.outputShape=e,this.userCode=` + ${Dx} void main() { float x = getAAtOutCoords(); - ${glsl.output} = encode_float(x); + ${t.output} = encode_float(x); } - `}};var EncodeFloatPackedProgram=class{constructor(outputShape){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outTexUsage=TextureUsage.DOWNLOAD;let glsl=getGlslDifferences();this.outputShape=outputShape,this.userCode=` - ${ENCODE_FLOAT_SNIPPET} + `}};var Nk=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outTexUsage=Dr.DOWNLOAD;let t=zt();this.outputShape=e,this.userCode=` + ${Dx} void main() { ivec3 coords = getOutputCoords(); float x = getChannel(getAAtOutCoords(), vec2(coords.y, coords.z)); - ${glsl.output} = encode_float(x); + ${t.output} = encode_float(x); } - `}};var EncodeMatrixProgram=class{constructor(outputShape,texShape,inputIsUnsignedByte=!1){this.variableNames=["A"];let glsl=getGlslDifferences(),[height,width]=texShape;this.outputShape=outputShape;let output="result";inputIsUnsignedByte&&(output="floor(result * 255. + 0.5)"),this.userCode=` - ${getFlatIndexFrom3D(outputShape)} + `}};var Sk=class{constructor(e,t,o=!1){this.variableNames=["A"];let n=zt(),[s,a]=t;this.outputShape=e;let i="result";o&&(i="floor(result * 255. + 0.5)"),this.userCode=` + ${Bp(e)} void main() { ivec3 coords = getOutputCoords(); @@ -197,10 +197,10 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee flatIndex = idiv(flatIndex, 4, 1.); - int r = flatIndex / ${width}; - int c = imod(flatIndex, ${width}); - vec2 uv = (vec2(c, r) + halfCR) / vec2(${width}.0, ${height}.0); - vec4 values = ${glsl.texture2D}(A, uv); + int r = flatIndex / ${a}; + int c = imod(flatIndex, ${a}); + vec2 uv = (vec2(c, r) + halfCR) / vec2(${a}.0, ${s}.0); + vec4 values = ${n.texture2D}(A, uv); float result; @@ -214,38 +214,38 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee result = values[3]; } - ${glsl.output} = vec4(${output}, 0., 0., 0.); + ${n.output} = vec4(${i}, 0., 0., 0.); } - `}};var EncodeMatrixPackedProgram=class{constructor(outputShape,texShape,inputIsUnsignedByte=!1){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;let glsl=getGlslDifferences(),[height,width]=texShape;this.outputShape=outputShape;let mainLoop="",output="result";inputIsUnsignedByte&&(output="floor(result * 255. + 0.5)");for(let row=0;row<=1;row++)for(let col=0;col<=1;col++){let channel=row*2+col;mainLoop+=` + `}};var Tk=class{constructor(e,t,o=!1){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;let n=zt(),[s,a]=t;this.outputShape=e;let i="",l="result";o&&(l="floor(result * 255. + 0.5)");for(let u=0;u<=1;u++)for(let c=0;c<=1;c++){let p=u*2+c;i+=` localCoords = coords; - if(localCoords[2] + ${col} < ${outputShape[2]}) { - localCoords[2] += ${col}; - if(localCoords[1] + ${row} < ${outputShape[1]}) { - localCoords[1] += ${row}; + if(localCoords[2] + ${c} < ${e[2]}) { + localCoords[2] += ${c}; + if(localCoords[1] + ${u} < ${e[1]}) { + localCoords[1] += ${u}; flatIndex = getFlatIndex(localCoords); offset = imod(flatIndex, 4); flatIndex = idiv(flatIndex, 4, 1.); - r = flatIndex / ${width}; - c = imod(flatIndex, ${width}); - uv = (vec2(c, r) + halfCR) / vec2(${width}.0, ${height}.0); - values = ${glsl.texture2D}(A, uv); + r = flatIndex / ${a}; + c = imod(flatIndex, ${a}); + uv = (vec2(c, r) + halfCR) / vec2(${a}.0, ${s}.0); + values = ${n.texture2D}(A, uv); if(offset == 0) { - result[${channel}] = values[0]; + result[${p}] = values[0]; } else if(offset == 1) { - result[${channel}] = values[1]; + result[${p}] = values[1]; } else if(offset == 2) { - result[${channel}] = values[2]; + result[${p}] = values[2]; } else { - result[${channel}] = values[3]; + result[${p}] = values[3]; } } } `}this.userCode=` - ${getFlatIndexFrom3D(outputShape)} + ${Bp(e)} void main() { ivec3 coords = getOutputCoords(); @@ -256,40 +256,40 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee vec2 uv; vec4 values; - ${mainLoop} + ${i} - ${glsl.output} = ${output}; + ${n.output} = ${l}; } - `}};function createVertexShader2(gl){let glsl=getGlslDifferences(),vertexShaderSource=`${glsl.version} + `}};function M$(r){let e=zt(),t=`${e.version} precision highp float; - ${glsl.attribute} vec3 clipSpacePos; - ${glsl.attribute} vec2 uv; - ${glsl.varyingVs} vec2 resultUV; + ${e.attribute} vec3 clipSpacePos; + ${e.attribute} vec2 uv; + ${e.varyingVs} vec2 resultUV; void main() { gl_Position = vec4(clipSpacePos, 1); resultUV = uv; - }`;return createVertexShader(gl,vertexShaderSource)}function createVertexBuffer(gl){let vertexArray=new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]);return createStaticVertexBuffer(gl,vertexArray)}function createIndexBuffer(gl){let triangleVertexIndices=new Uint16Array([0,1,2,2,1,3]);return createStaticIndexBuffer(gl,triangleVertexIndices)}function createAndConfigureTexture(gl,width,height,internalFormat,textureFormat,textureType){validateTextureSize(width,height);let texture=createTexture(gl),tex2d=gl.TEXTURE_2D;return callAndCheck(gl,()=>gl.bindTexture(tex2d,texture)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_MIN_FILTER,gl.NEAREST)),callAndCheck(gl,()=>gl.texParameteri(tex2d,gl.TEXTURE_MAG_FILTER,gl.NEAREST)),callAndCheck(gl,()=>gl.texImage2D(tex2d,0,internalFormat,width,height,0,textureFormat,textureType,null)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null)),texture}function getInternalFormatForFloat32MatrixTexture(textureConfig){return textureConfig.internalFormatFloat}function createFloat32MatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForFloat32MatrixTexture(textureConfig),textureConfig.textureFormatFloat,gl.FLOAT)}function getInternalFormatForFloat16MatrixTexture(textureConfig){return textureConfig.internalFormatHalfFloat}function createFloat16MatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForFloat16MatrixTexture(textureConfig),textureConfig.textureFormatFloat,textureConfig.textureTypeHalfFloat)}function getInternalFormatForUnsignedBytesMatrixTexture(textureConfig){return textureConfig.downloadTextureFormat}function createUnsignedBytesMatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForUnsignedBytesMatrixTexture(textureConfig),gl.RGBA,gl.UNSIGNED_BYTE)}function getInternalFormatForPackedMatrixTexture(textureConfig){return textureConfig.internalFormatPackedFloat}function createPackedMatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getPackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForPackedMatrixTexture(textureConfig),gl.RGBA,gl.FLOAT)}function getInternalFormatForFloat16PackedMatrixTexture(textureConfig){return textureConfig.internalFormatPackedHalfFloat}function createFloat16PackedMatrixTexture(gl,rows,columns,textureConfig){let[width,height]=getPackedMatrixTextureShapeWidthHeight(rows,columns);return createAndConfigureTexture(gl,width,height,getInternalFormatForFloat16PackedMatrixTexture(textureConfig),gl.RGBA,textureConfig.textureTypeHalfFloat)}function bindVertexProgramAttributeStreams(gl,program,vertexBuffer){let posOffset=0,uvOffset=3*4,stride=3*4+2*4;return callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,vertexBuffer)),bindVertexBufferToProgramAttribute(gl,program,"clipSpacePos",vertexBuffer,3,stride,posOffset)&&bindVertexBufferToProgramAttribute(gl,program,"uv",vertexBuffer,2,stride,uvOffset)}function uploadDenseMatrixToTexture(gl,texture,width,height,data,textureConfig){callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,texture));let dataForUpload,texelDataType,internalFormat;data instanceof Uint8Array?(dataForUpload=new Uint8Array(width*height*4),texelDataType=gl.UNSIGNED_BYTE,internalFormat=gl.RGBA):(dataForUpload=new Float32Array(width*height*4),texelDataType=gl.FLOAT,internalFormat=textureConfig.internalFormatPackedFloat),dataForUpload.set(data),callAndCheck(gl,()=>gl.texImage2D(gl.TEXTURE_2D,0,internalFormat,width,height,0,gl.RGBA,texelDataType,dataForUpload)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null))}function uploadPixelDataToTexture(gl,texture,pixels){callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,texture)),pixels.data instanceof Uint8Array?callAndCheck(gl,()=>gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,pixels.width,pixels.height,0,gl.RGBA,gl.UNSIGNED_BYTE,pixels.data)):callAndCheck(gl,()=>gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,pixels)),callAndCheck(gl,()=>gl.bindTexture(gl.TEXTURE_2D,null))}function createBufferFromOutputTexture(gl2,rows,columns,textureConfig){let buffer2=gl2.createBuffer();callAndCheck(gl2,()=>gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,buffer2));let bufferSizeBytes=4*4*rows*columns;return callAndCheck(gl2,()=>gl2.bufferData(gl2.PIXEL_PACK_BUFFER,bufferSizeBytes,gl2.STREAM_READ)),callAndCheck(gl2,()=>gl2.readPixels(0,0,columns,rows,gl2.RGBA,gl2.FLOAT,0)),callAndCheck(gl2,()=>gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,null)),buffer2}function downloadFloat32MatrixFromBuffer(gl,buffer2,size){let gl2=gl,downloadTarget=new Float32Array(size);return gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,buffer2),gl2.getBufferSubData(gl2.PIXEL_PACK_BUFFER,0,downloadTarget),gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,null),downloadTarget}function downloadByteEncodedFloatMatrixFromOutputTexture(gl,rows,columns,textureConfig){let[w,h]=getUnpackedMatrixTextureShapeWidthHeight(rows,columns),numChannels=4,downloadTarget=new Uint8Array(getUnpackedArraySizeFromMatrixSize(rows*columns,numChannels));return callAndCheck(gl,()=>gl.readPixels(0,0,w,h,textureConfig.downloadTextureFormat,gl.UNSIGNED_BYTE,downloadTarget)),new Float32Array(downloadTarget.buffer)}function downloadPackedMatrixFromBuffer(gl,buffer2,batch,rows,cols,physicalRows,physicalCols,textureConfig){let gl2=gl,downloadTarget=new Float32Array(getPackedRGBAArraySizeFromMatrixShape(physicalRows,physicalCols));return gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,buffer2),gl2.getBufferSubData(gl2.PIXEL_PACK_BUFFER,0,downloadTarget),gl2.bindBuffer(gl2.PIXEL_PACK_BUFFER,null),downloadTarget}function downloadMatrixFromPackedOutputTexture(gl,physicalRows,physicalCols){let packedRGBA=new Float32Array(physicalRows*physicalCols*4);return callAndCheck(gl,()=>gl.readPixels(0,0,physicalCols,physicalRows,gl.RGBA,gl.FLOAT,packedRGBA)),packedRGBA}var GPGPUContext=class{constructor(gl){this.outputTexture=null,this.program=null,this.disposed=!1,this.vertexAttrsAreBound=!1,this.itemsToPoll=[];let glVersion=env().getNumber("WEBGL_VERSION");gl!=null?(this.gl=gl,setWebGLContext(glVersion,gl)):this.gl=getWebGLContext(glVersion);let COLOR_BUFFER_FLOAT="WEBGL_color_buffer_float",COLOR_BUFFER_HALF_FLOAT="EXT_color_buffer_half_float";if(env().getNumber("WEBGL_VERSION")===1){let TEXTURE_FLOAT="OES_texture_float",TEXTURE_HALF_FLOAT="OES_texture_half_float";if(this.textureFloatExtension=getExtensionOrThrow(this.gl,TEXTURE_FLOAT),hasExtension(this.gl,TEXTURE_HALF_FLOAT))this.textureHalfFloatExtension=getExtensionOrThrow(this.gl,TEXTURE_HALF_FLOAT);else if(env().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.");if(this.colorBufferFloatExtension=this.gl.getExtension(COLOR_BUFFER_FLOAT),hasExtension(this.gl,COLOR_BUFFER_HALF_FLOAT))this.colorBufferHalfFloatExtension=getExtensionOrThrow(this.gl,COLOR_BUFFER_HALF_FLOAT);else if(env().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.")}else if(COLOR_BUFFER_FLOAT="EXT_color_buffer_float",hasExtension(this.gl,COLOR_BUFFER_FLOAT))this.colorBufferFloatExtension=this.gl.getExtension(COLOR_BUFFER_FLOAT);else if(hasExtension(this.gl,COLOR_BUFFER_HALF_FLOAT))this.colorBufferHalfFloatExtension=this.gl.getExtension(COLOR_BUFFER_HALF_FLOAT);else throw new Error("GL context does not support color renderable floats");this.vertexBuffer=createVertexBuffer(this.gl),this.indexBuffer=createIndexBuffer(this.gl),this.framebuffer=createFramebuffer(this.gl),this.textureConfig=getTextureConfig(this.gl,this.textureHalfFloatExtension)}get debug(){return env().getBool("DEBUG")}dispose(){if(this.disposed)return;this.program!=null&&console.warn("Disposing a GPGPUContext that still has a bound WebGLProgram. This is probably a resource leak, delete the program with GPGPUContext.deleteProgram before disposing."),this.outputTexture!=null&&console.warn("Disposing a GPGPUContext that still has a bound output matrix texture. This is probably a resource leak, delete the output matrix texture with GPGPUContext.deleteMatrixTexture before disposing.");let gl=this.gl;callAndCheck(gl,()=>gl.finish()),callAndCheck(gl,()=>gl.bindFramebuffer(gl.FRAMEBUFFER,null)),callAndCheck(gl,()=>gl.deleteFramebuffer(this.framebuffer)),callAndCheck(gl,()=>gl.bindBuffer(gl.ARRAY_BUFFER,null)),callAndCheck(gl,()=>gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,null)),callAndCheck(gl,()=>gl.deleteBuffer(this.indexBuffer)),this.disposed=!0}createFloat32MatrixTexture(rows,columns){return this.throwIfDisposed(),createFloat32MatrixTexture(this.gl,rows,columns,this.textureConfig)}createFloat16MatrixTexture(rows,columns){return this.throwIfDisposed(),createFloat16MatrixTexture(this.gl,rows,columns,this.textureConfig)}createUnsignedBytesMatrixTexture(rows,columns){return this.throwIfDisposed(),createUnsignedBytesMatrixTexture(this.gl,rows,columns,this.textureConfig)}uploadPixelDataToTexture(texture,pixels){this.throwIfDisposed(),uploadPixelDataToTexture(this.gl,texture,pixels)}uploadDenseMatrixToTexture(texture,width,height,data){this.throwIfDisposed(),uploadDenseMatrixToTexture(this.gl,texture,width,height,data,this.textureConfig)}createFloat16PackedMatrixTexture(rows,columns){return this.throwIfDisposed(),createFloat16PackedMatrixTexture(this.gl,rows,columns,this.textureConfig)}createPackedMatrixTexture(rows,columns){return this.throwIfDisposed(),createPackedMatrixTexture(this.gl,rows,columns,this.textureConfig)}deleteMatrixTexture(texture){this.throwIfDisposed(),this.outputTexture===texture&&(unbindColorTextureFromFramebuffer(this.gl,this.framebuffer),this.outputTexture=null),callAndCheck(this.gl,()=>this.gl.deleteTexture(texture))}downloadByteEncodedFloatMatrixFromOutputTexture(texture,rows,columns){return this.downloadMatrixDriver(texture,()=>downloadByteEncodedFloatMatrixFromOutputTexture(this.gl,rows,columns,this.textureConfig))}downloadPackedMatrixFromBuffer(buffer2,batch,rows,columns,physicalRows,physicalCols){return downloadPackedMatrixFromBuffer(this.gl,buffer2,batch,rows,columns,physicalRows,physicalCols,this.textureConfig)}downloadFloat32MatrixFromBuffer(buffer2,size){return downloadFloat32MatrixFromBuffer(this.gl,buffer2,size)}createBufferFromTexture(texture,rows,columns){this.bindTextureToFrameBuffer(texture);let result=createBufferFromOutputTexture(this.gl,rows,columns,this.textureConfig);return this.unbindTextureToFrameBuffer(),result}createAndWaitForFence(){let fenceContext=this.createFence(this.gl);return this.pollFence(fenceContext)}createFence(gl){let query,isFencePassed;if(env().getBool("WEBGL_FENCE_API_ENABLED")){let gl2=gl,sync=gl2.fenceSync(gl2.SYNC_GPU_COMMANDS_COMPLETE,0);gl.flush(),isFencePassed=()=>{let status=gl2.clientWaitSync(sync,0,0);return status===gl2.ALREADY_SIGNALED||status===gl2.CONDITION_SATISFIED},query=sync}else env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(query=this.beginQuery(),this.endQuery(),isFencePassed=()=>this.isQueryAvailable(query,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))):isFencePassed=()=>!0;return{query,isFencePassed}}downloadMatrixFromPackedTexture(texture,physicalRows,physicalCols){return this.downloadMatrixDriver(texture,()=>downloadMatrixFromPackedOutputTexture(this.gl,physicalRows,physicalCols))}createProgram(fragmentShaderSource){this.throwIfDisposed();let gl=this.gl,fragmentShader=createFragmentShader(gl,fragmentShaderSource),vertexShader=createVertexShader2(gl),program=createProgram(gl);return callAndCheck(gl,()=>gl.attachShader(program,vertexShader)),callAndCheck(gl,()=>gl.attachShader(program,fragmentShader)),linkProgram(gl,program),this.debug&&validateProgram(gl,program),this.vertexAttrsAreBound||(this.setProgram(program),this.vertexAttrsAreBound=bindVertexProgramAttributeStreams(gl,this.program,this.vertexBuffer)),program}deleteProgram(program){this.throwIfDisposed(),program===this.program&&(this.program=null),program!=null&&callAndCheck(this.gl,()=>this.gl.deleteProgram(program))}setProgram(program){this.throwIfDisposed(),this.program=program,this.program!=null&&this.debug&&validateProgram(this.gl,this.program),callAndCheck(this.gl,()=>this.gl.useProgram(program))}getUniformLocation(program,uniformName,shouldThrow=!0){return this.throwIfDisposed(),shouldThrow?getProgramUniformLocationOrThrow(this.gl,program,uniformName):getProgramUniformLocation(this.gl,program,uniformName)}getAttributeLocation(program,attribute){return this.throwIfDisposed(),callAndCheck(this.gl,()=>this.gl.getAttribLocation(program,attribute))}getUniformLocationNoThrow(program,uniformName){return this.throwIfDisposed(),this.gl.getUniformLocation(program,uniformName)}setInputMatrixTexture(inputMatrixTexture,uniformLocation,textureUnit){this.throwIfDisposed(),this.throwIfNoProgram(),bindTextureToProgramUniformSampler(this.gl,inputMatrixTexture,uniformLocation,textureUnit)}setOutputMatrixTexture(outputMatrixTexture,rows,columns){this.setOutputMatrixTextureDriver(outputMatrixTexture,columns,rows)}setOutputPackedMatrixTexture(outputPackedMatrixTexture,rows,columns){this.throwIfDisposed();let[width,height]=getPackedMatrixTextureShapeWidthHeight(rows,columns);this.setOutputMatrixTextureDriver(outputPackedMatrixTexture,width,height)}setOutputMatrixWriteRegion(startRow,numRows,startColumn,numColumns){this.setOutputMatrixWriteRegionDriver(startColumn,startRow,numColumns,numRows)}setOutputPackedMatrixWriteRegion(startRow,numRows,startColumn,numColumns){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")}debugValidate(){this.program!=null&&validateProgram(this.gl,this.program),validateFramebuffer(this.gl)}executeProgram(){this.throwIfDisposed(),this.throwIfNoProgram();let gl=this.gl;this.debug&&this.debugValidate(),callAndCheck(gl,()=>gl.drawElements(gl.TRIANGLES,6,gl.UNSIGNED_SHORT,0))}blockUntilAllProgramsCompleted(){this.throwIfDisposed(),callAndCheck(this.gl,()=>this.gl.finish())}getQueryTimerExtension(){return this.disjointQueryTimerExtension==null&&(this.disjointQueryTimerExtension=getExtensionOrThrow(this.gl,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension}getQueryTimerExtensionWebGL2(){return this.getQueryTimerExtension()}getQueryTimerExtensionWebGL1(){return this.getQueryTimerExtension()}beginQuery(){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let gl2=this.gl,ext2=this.getQueryTimerExtensionWebGL2(),query2=gl2.createQuery();return gl2.beginQuery(ext2.TIME_ELAPSED_EXT,query2),query2}let ext=this.getQueryTimerExtensionWebGL1(),query=ext.createQueryEXT();return ext.beginQueryEXT(ext.TIME_ELAPSED_EXT,query),query}endQuery(){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let gl2=this.gl,ext2=this.getQueryTimerExtensionWebGL2();gl2.endQuery(ext2.TIME_ELAPSED_EXT);return}let ext=this.getQueryTimerExtensionWebGL1();ext.endQueryEXT(ext.TIME_ELAPSED_EXT)}async waitForQueryAndGetTime(query){return await util_exports.repeatedTry(()=>this.disposed||this.isQueryAvailable(query,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))),this.getQueryTime(query,env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}getQueryTime(query,queryTimerVersion){if(queryTimerVersion===0)return null;if(queryTimerVersion===2){let gl2=this.gl;return gl2.getQueryParameter(query,gl2.QUERY_RESULT)/1e6}else{let ext=this.getQueryTimerExtensionWebGL1();return ext.getQueryObjectEXT(query,ext.QUERY_RESULT_EXT)/1e6}}isQueryAvailable(query,queryTimerVersion){if(queryTimerVersion===0)return!0;if(queryTimerVersion===2){let gl2=this.gl,ext=this.getQueryTimerExtensionWebGL2(),available=gl2.getQueryParameter(query,gl2.QUERY_RESULT_AVAILABLE);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(ext.GPU_DISJOINT_EXT)),available&&!this.disjoint}else{let ext=this.getQueryTimerExtensionWebGL1(),available=ext.getQueryObjectEXT(query,ext.QUERY_RESULT_AVAILABLE_EXT);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(ext.GPU_DISJOINT_EXT)),available&&!this.disjoint}}pollFence(fenceContext){return new Promise(resolve=>{this.addItemToPoll(()=>fenceContext.isFencePassed(),()=>resolve())})}pollItems(){let index=linearSearchLastTrue(this.itemsToPoll.map(x=>x.isDoneFn));for(let i=0;i<=index;++i){let{resolveFn}=this.itemsToPoll[i];resolveFn()}this.itemsToPoll=this.itemsToPoll.slice(index+1)}addItemToPoll(isDoneFn,resolveFn){this.itemsToPoll.push({isDoneFn,resolveFn}),!(this.itemsToPoll.length>1)&&util_exports.repeatedTry(()=>(this.pollItems(),this.itemsToPoll.length===0))}bindTextureToFrameBuffer(texture){this.throwIfDisposed(),bindColorTextureToFramebuffer(this.gl,texture,this.framebuffer),this.debug&&validateFramebuffer(this.gl)}unbindTextureToFrameBuffer(){this.outputTexture!=null?(bindColorTextureToFramebuffer(this.gl,this.outputTexture,this.framebuffer),this.debug&&validateFramebuffer(this.gl)):unbindColorTextureFromFramebuffer(this.gl,this.framebuffer)}downloadMatrixDriver(texture,downloadAndDecode){this.bindTextureToFrameBuffer(texture);let result=downloadAndDecode();return this.unbindTextureToFrameBuffer(),result}setOutputMatrixTextureDriver(outputMatrixTextureMaybePacked,width,height){this.throwIfDisposed();let gl=this.gl;bindColorTextureToFramebuffer(gl,outputMatrixTextureMaybePacked,this.framebuffer),this.debug&&validateFramebuffer(gl),this.outputTexture=outputMatrixTextureMaybePacked,callAndCheck(gl,()=>gl.viewport(0,0,width,height)),callAndCheck(gl,()=>gl.scissor(0,0,width,height))}setOutputMatrixWriteRegionDriver(x,y,width,height){this.throwIfDisposed(),callAndCheck(this.gl,()=>this.gl.scissor(x,y,width,height))}throwIfDisposed(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")}throwIfNoProgram(){if(this.program==null)throw new Error("No GPU program is currently set.")}};function linearSearchLastTrue(arr){let i=0;for(;i{let size=util_exports.sizeFromShape(x.shapeInfo.logicalShape);x.shapeInfo.isUniform?prefixSnippets.push(`uniform float ${x.name}${size>1?`[${size}]`:""};`):(prefixSnippets.push(`uniform sampler2D ${x.name};`),prefixSnippets.push(`uniform int offset${x.name};`))});let inputPrefixSnippet=prefixSnippets.join(` -`),inputSamplingSnippet=inputsInfo.map(x=>getInputSamplingSnippet(x,outputShape,usesPackedTextures)).join(` -`),outTexShape=outputShape.texShape,glsl=getGlslDifferences(),floatTextureSampleSnippet=getFloatTextureSampleSnippet(glsl),outputSamplingSnippet,floatTextureSetOutputSnippet,shaderPrefix=getShaderPrefix(glsl);return outputShape.isPacked?(outputSamplingSnippet=getPackedOutputSamplingSnippet(outputShape.logicalShape,outTexShape),floatTextureSetOutputSnippet=getFloatTextureSetRGBASnippet(glsl)):(outputSamplingSnippet=getOutputSamplingSnippet(outputShape.logicalShape,outTexShape),floatTextureSetOutputSnippet=getFloatTextureSetRSnippet(glsl)),usesPackedTextures&&(shaderPrefix+=SHADER_PACKED_PREFIX),[shaderPrefix,floatTextureSampleSnippet,floatTextureSetOutputSnippet,inputPrefixSnippet,outputSamplingSnippet,inputSamplingSnippet,userCode].join(` -`)}function getSamplerFromInInfo(inInfo){let shape=inInfo.shapeInfo.logicalShape;switch(shape.length){case 0:return getSamplerScalar(inInfo);case 1:return getSampler1D(inInfo);case 2:return getSampler2D(inInfo);case 3:return getSampler3D(inInfo);case 4:return getSampler4D(inInfo);case 5:return getSampler5D(inInfo);case 6:return getSampler6D(inInfo);default:throw new Error(`${shape.length}-D input sampling is not yet supported`)}}function getPackedSamplerFromInInfo(inInfo){switch(inInfo.shapeInfo.logicalShape.length){case 0:return getPackedSamplerScalar(inInfo);case 1:return getPackedSampler1D(inInfo);case 2:return getPackedSampler2D(inInfo);case 3:return getPackedSampler3D(inInfo);default:return getPackedSamplerND(inInfo)}}function getInputSamplingSnippet(inInfo,outShapeInfo,usesPackedTextures=!1){let res="";usesPackedTextures?res+=getPackedSamplerFromInInfo(inInfo):res+=getSamplerFromInInfo(inInfo);let inShape=inInfo.shapeInfo.logicalShape,outShape=outShapeInfo.logicalShape;return inShape.length<=outShape.length&&(usesPackedTextures?res+=getPackedSamplerAtOutputCoords(inInfo,outShapeInfo):res+=getSamplerAtOutputCoords(inInfo,outShapeInfo)),res}function getPackedOutputSamplingSnippet(outShape,outTexShape){switch(outShape.length){case 0:return getOutputScalarCoords();case 1:return getOutputPacked1DCoords(outShape,outTexShape);case 2:return getOutputPacked2DCoords(outShape,outTexShape);case 3:return getOutputPacked3DCoords(outShape,outTexShape);default:return getOutputPackedNDCoords(outShape,outTexShape)}}function getOutputSamplingSnippet(outShape,outTexShape){switch(outShape.length){case 0:return getOutputScalarCoords();case 1:return getOutput1DCoords(outShape,outTexShape);case 2:return getOutput2DCoords(outShape,outTexShape);case 3:return getOutput3DCoords(outShape,outTexShape);case 4:return getOutput4DCoords(outShape,outTexShape);case 5:return getOutput5DCoords(outShape,outTexShape);case 6:return getOutput6DCoords(outShape,outTexShape);default:throw new Error(`${outShape.length}-D output sampling is not yet supported`)}}function getFloatTextureSampleSnippet(glsl){return` + }`;return y$(r,t)}function L$(r){let e=new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]);return v$(r,e)}function z$(r){let e=new Uint16Array([0,1,2,2,1,3]);return k$(r,e)}function eh(r,e,t,o,n,s){I$(e,t);let a=C$(r),i=r.TEXTURE_2D;return De(r,()=>r.bindTexture(i,a)),De(r,()=>r.texParameteri(i,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE)),De(r,()=>r.texParameteri(i,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE)),De(r,()=>r.texParameteri(i,r.TEXTURE_MIN_FILTER,r.NEAREST)),De(r,()=>r.texParameteri(i,r.TEXTURE_MAG_FILTER,r.NEAREST)),De(r,()=>r.texImage2D(i,0,o,e,t,0,n,s,null)),De(r,()=>r.bindTexture(r.TEXTURE_2D,null)),a}function Ek(r){return r.internalFormatFloat}function B$(r,e,t,o){let[n,s]=lc(e,t);return eh(r,n,s,Ek(o),o.textureFormatFloat,r.FLOAT)}function Ak(r){return r.internalFormatHalfFloat}function V$(r,e,t,o){let[n,s]=lc(e,t);return eh(r,n,s,Ak(o),o.textureFormatFloat,o.textureTypeHalfFloat)}function Dk(r){return r.downloadTextureFormat}function W$(r,e,t,o){let[n,s]=lc(e,t);return eh(r,n,s,Dk(o),r.RGBA,r.UNSIGNED_BYTE)}function $k(r){return r.internalFormatPackedFloat}function G$(r,e,t,o){let[n,s]=Ki(e,t);return eh(r,n,s,$k(o),r.RGBA,r.FLOAT)}function Rk(r){return r.internalFormatPackedHalfFloat}function U$(r,e,t,o){let[n,s]=Ki(e,t);return eh(r,n,s,Rk(o),r.RGBA,o.textureTypeHalfFloat)}function j$(r,e,t){let o=0,n=3*4,s=3*4+2*4;return De(r,()=>r.bindBuffer(r.ARRAY_BUFFER,t)),xk(r,e,"clipSpacePos",t,3,s,o)&&xk(r,e,"uv",t,2,s,n)}function q$(r,e,t,o,n,s){De(r,()=>r.bindTexture(r.TEXTURE_2D,e));let a,i,l;n instanceof Uint8Array?(a=new Uint8Array(t*o*4),i=r.UNSIGNED_BYTE,l=r.RGBA):(a=new Float32Array(t*o*4),i=r.FLOAT,l=s.internalFormatPackedFloat),a.set(n),De(r,()=>r.texImage2D(r.TEXTURE_2D,0,l,t,o,0,r.RGBA,i,a)),De(r,()=>r.bindTexture(r.TEXTURE_2D,null))}function H$(r,e,t){De(r,()=>r.bindTexture(r.TEXTURE_2D,e)),t.data instanceof Uint8Array?De(r,()=>r.texImage2D(r.TEXTURE_2D,0,r.RGBA,t.width,t.height,0,r.RGBA,r.UNSIGNED_BYTE,t.data)):De(r,()=>r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,t)),De(r,()=>r.bindTexture(r.TEXTURE_2D,null))}function K$(r,e,t,o){let n=r.createBuffer();De(r,()=>r.bindBuffer(r.PIXEL_PACK_BUFFER,n));let i=4*4*e*t;return De(r,()=>r.bufferData(r.PIXEL_PACK_BUFFER,i,r.STREAM_READ)),De(r,()=>r.readPixels(0,0,t,e,r.RGBA,r.FLOAT,0)),De(r,()=>r.bindBuffer(r.PIXEL_PACK_BUFFER,null)),n}function X$(r,e,t){let o=r,n=new Float32Array(t);return o.bindBuffer(o.PIXEL_PACK_BUFFER,e),o.getBufferSubData(o.PIXEL_PACK_BUFFER,0,n),o.bindBuffer(o.PIXEL_PACK_BUFFER,null),n}function Y$(r,e,t,o){let[n,s]=lc(e,t),a=4,i=new Uint8Array(h$(e*t,a));return De(r,()=>r.readPixels(0,0,n,s,o.downloadTextureFormat,r.UNSIGNED_BYTE,i)),new Float32Array(i.buffer)}function Z$(r,e,t,o,n,s,a,i){let l=r,u=new Float32Array(g$(s,a));return l.bindBuffer(l.PIXEL_PACK_BUFFER,e),l.getBufferSubData(l.PIXEL_PACK_BUFFER,0,u),l.bindBuffer(l.PIXEL_PACK_BUFFER,null),u}function J$(r,e,t){let o=new Float32Array(e*t*4);return De(r,()=>r.readPixels(0,0,t,e,r.RGBA,r.FLOAT,o)),o}var Fk=class{constructor(e){this.outputTexture=null,this.program=null,this.disposed=!1,this.vertexAttrsAreBound=!1,this.itemsToPoll=[];let t=W().getNumber("WEBGL_VERSION");e!=null?(this.gl=e,d$(t,e)):this.gl=Go(t);let o="WEBGL_color_buffer_float",n="EXT_color_buffer_half_float";if(W().getNumber("WEBGL_VERSION")===1){let s="OES_texture_float",a="OES_texture_half_float";if(this.textureFloatExtension=Jd(this.gl,s),Uo(this.gl,a))this.textureHalfFloatExtension=Jd(this.gl,a);else if(W().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.");if(this.colorBufferFloatExtension=this.gl.getExtension(o),Uo(this.gl,n))this.colorBufferHalfFloatExtension=Jd(this.gl,n);else if(W().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.")}else if(o="EXT_color_buffer_float",Uo(this.gl,o))this.colorBufferFloatExtension=this.gl.getExtension(o);else if(Uo(this.gl,n))this.colorBufferHalfFloatExtension=this.gl.getExtension(n);else throw new Error("GL context does not support color renderable floats");this.vertexBuffer=L$(this.gl),this.indexBuffer=z$(this.gl),this.framebuffer=N$(this.gl),this.textureConfig=Zd(this.gl,this.textureHalfFloatExtension)}get debug(){return W().getBool("DEBUG")}dispose(){if(this.disposed)return;this.program!=null&&console.warn("Disposing a GPGPUContext that still has a bound WebGLProgram. This is probably a resource leak, delete the program with GPGPUContext.deleteProgram before disposing."),this.outputTexture!=null&&console.warn("Disposing a GPGPUContext that still has a bound output matrix texture. This is probably a resource leak, delete the output matrix texture with GPGPUContext.deleteMatrixTexture before disposing.");let e=this.gl;De(e,()=>e.finish()),De(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,null)),De(e,()=>e.deleteFramebuffer(this.framebuffer)),De(e,()=>e.bindBuffer(e.ARRAY_BUFFER,null)),De(e,()=>e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null)),De(e,()=>e.deleteBuffer(this.indexBuffer)),this.disposed=!0}createFloat32MatrixTexture(e,t){return this.throwIfDisposed(),B$(this.gl,e,t,this.textureConfig)}createFloat16MatrixTexture(e,t){return this.throwIfDisposed(),V$(this.gl,e,t,this.textureConfig)}createUnsignedBytesMatrixTexture(e,t){return this.throwIfDisposed(),W$(this.gl,e,t,this.textureConfig)}uploadPixelDataToTexture(e,t){this.throwIfDisposed(),H$(this.gl,e,t)}uploadDenseMatrixToTexture(e,t,o,n){this.throwIfDisposed(),q$(this.gl,e,t,o,n,this.textureConfig)}createFloat16PackedMatrixTexture(e,t){return this.throwIfDisposed(),U$(this.gl,e,t,this.textureConfig)}createPackedMatrixTexture(e,t){return this.throwIfDisposed(),G$(this.gl,e,t,this.textureConfig)}deleteMatrixTexture(e){this.throwIfDisposed(),this.outputTexture===e&&(yk(this.gl,this.framebuffer),this.outputTexture=null),De(this.gl,()=>this.gl.deleteTexture(e))}downloadByteEncodedFloatMatrixFromOutputTexture(e,t,o){return this.downloadMatrixDriver(e,()=>Y$(this.gl,t,o,this.textureConfig))}downloadPackedMatrixFromBuffer(e,t,o,n,s,a){return Z$(this.gl,e,t,o,n,s,a,this.textureConfig)}downloadFloat32MatrixFromBuffer(e,t){return X$(this.gl,e,t)}createBufferFromTexture(e,t,o){this.bindTextureToFrameBuffer(e);let n=K$(this.gl,t,o,this.textureConfig);return this.unbindTextureToFrameBuffer(),n}createAndWaitForFence(){let e=this.createFence(this.gl);return this.pollFence(e)}createFence(e){let t,o;if(W().getBool("WEBGL_FENCE_API_ENABLED")){let n=e,s=n.fenceSync(n.SYNC_GPU_COMMANDS_COMPLETE,0);e.flush(),o=()=>{let a=n.clientWaitSync(s,0,0);return a===n.ALREADY_SIGNALED||a===n.CONDITION_SATISFIED},t=s}else W().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(t=this.beginQuery(),this.endQuery(),o=()=>this.isQueryAvailable(t,W().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))):o=()=>!0;return{query:t,isFencePassed:o}}downloadMatrixFromPackedTexture(e,t,o){return this.downloadMatrixDriver(e,()=>J$(this.gl,t,o))}createProgram(e){this.throwIfDisposed();let t=this.gl,o=b$(t,e),n=M$(t),s=_$(t);return De(t,()=>t.attachShader(s,n)),De(t,()=>t.attachShader(s,o)),w$(t,s),this.debug&&Sx(t,s),this.vertexAttrsAreBound||(this.setProgram(s),this.vertexAttrsAreBound=j$(t,this.program,this.vertexBuffer)),s}deleteProgram(e){this.throwIfDisposed(),e===this.program&&(this.program=null),e!=null&&De(this.gl,()=>this.gl.deleteProgram(e))}setProgram(e){this.throwIfDisposed(),this.program=e,this.program!=null&&this.debug&&Sx(this.gl,this.program),De(this.gl,()=>this.gl.useProgram(e))}getUniformLocation(e,t,o=!0){return this.throwIfDisposed(),o?S$(this.gl,e,t):T$(this.gl,e,t)}getAttributeLocation(e,t){return this.throwIfDisposed(),De(this.gl,()=>this.gl.getAttribLocation(e,t))}getUniformLocationNoThrow(e,t){return this.throwIfDisposed(),this.gl.getUniformLocation(e,t)}setInputMatrixTexture(e,t,o){this.throwIfDisposed(),this.throwIfNoProgram(),E$(this.gl,e,t,o)}setOutputMatrixTexture(e,t,o){this.setOutputMatrixTextureDriver(e,o,t)}setOutputPackedMatrixTexture(e,t,o){this.throwIfDisposed();let[n,s]=Ki(t,o);this.setOutputMatrixTextureDriver(e,n,s)}setOutputMatrixWriteRegion(e,t,o,n){this.setOutputMatrixWriteRegionDriver(o,e,n,t)}setOutputPackedMatrixWriteRegion(e,t,o,n){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")}debugValidate(){this.program!=null&&Sx(this.gl,this.program),Qd(this.gl)}executeProgram(){this.throwIfDisposed(),this.throwIfNoProgram();let e=this.gl;this.debug&&this.debugValidate(),De(e,()=>e.drawElements(e.TRIANGLES,6,e.UNSIGNED_SHORT,0))}blockUntilAllProgramsCompleted(){this.throwIfDisposed(),De(this.gl,()=>this.gl.finish())}getQueryTimerExtension(){return this.disjointQueryTimerExtension==null&&(this.disjointQueryTimerExtension=Jd(this.gl,W().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension}getQueryTimerExtensionWebGL2(){return this.getQueryTimerExtension()}getQueryTimerExtensionWebGL1(){return this.getQueryTimerExtension()}beginQuery(){if(W().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let o=this.gl,n=this.getQueryTimerExtensionWebGL2(),s=o.createQuery();return o.beginQuery(n.TIME_ELAPSED_EXT,s),s}let e=this.getQueryTimerExtensionWebGL1(),t=e.createQueryEXT();return e.beginQueryEXT(e.TIME_ELAPSED_EXT,t),t}endQuery(){if(W().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let t=this.gl,o=this.getQueryTimerExtensionWebGL2();t.endQuery(o.TIME_ELAPSED_EXT);return}let e=this.getQueryTimerExtensionWebGL1();e.endQueryEXT(e.TIME_ELAPSED_EXT)}async waitForQueryAndGetTime(e){return await x.repeatedTry(()=>this.disposed||this.isQueryAvailable(e,W().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))),this.getQueryTime(e,W().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}getQueryTime(e,t){if(t===0)return null;if(t===2){let o=this.gl;return o.getQueryParameter(e,o.QUERY_RESULT)/1e6}else{let o=this.getQueryTimerExtensionWebGL1();return o.getQueryObjectEXT(e,o.QUERY_RESULT_EXT)/1e6}}isQueryAvailable(e,t){if(t===0)return!0;if(t===2){let o=this.gl,n=this.getQueryTimerExtensionWebGL2(),s=o.getQueryParameter(e,o.QUERY_RESULT_AVAILABLE);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(n.GPU_DISJOINT_EXT)),s&&!this.disjoint}else{let o=this.getQueryTimerExtensionWebGL1(),n=o.getQueryObjectEXT(e,o.QUERY_RESULT_AVAILABLE_EXT);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(o.GPU_DISJOINT_EXT)),n&&!this.disjoint}}pollFence(e){return new Promise(t=>{this.addItemToPoll(()=>e.isFencePassed(),()=>t())})}pollItems(){let e=aY(this.itemsToPoll.map(t=>t.isDoneFn));for(let t=0;t<=e;++t){let{resolveFn:o}=this.itemsToPoll[t];o()}this.itemsToPoll=this.itemsToPoll.slice(e+1)}addItemToPoll(e,t){this.itemsToPoll.push({isDoneFn:e,resolveFn:t}),!(this.itemsToPoll.length>1)&&x.repeatedTry(()=>(this.pollItems(),this.itemsToPoll.length===0))}bindTextureToFrameBuffer(e){this.throwIfDisposed(),Tx(this.gl,e,this.framebuffer),this.debug&&Qd(this.gl)}unbindTextureToFrameBuffer(){this.outputTexture!=null?(Tx(this.gl,this.outputTexture,this.framebuffer),this.debug&&Qd(this.gl)):yk(this.gl,this.framebuffer)}downloadMatrixDriver(e,t){this.bindTextureToFrameBuffer(e);let o=t();return this.unbindTextureToFrameBuffer(),o}setOutputMatrixTextureDriver(e,t,o){this.throwIfDisposed();let n=this.gl;Tx(n,e,this.framebuffer),this.debug&&Qd(n),this.outputTexture=e,De(n,()=>n.viewport(0,0,t,o)),De(n,()=>n.scissor(0,0,t,o))}setOutputMatrixWriteRegionDriver(e,t,o,n){this.throwIfDisposed(),De(this.gl,()=>this.gl.scissor(e,t,o,n))}throwIfDisposed(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")}throwIfNoProgram(){if(this.program==null)throw new Error("No GPU program is currently set.")}};function aY(r){let e=0;for(;e{let h=x.sizeFromShape(d.shapeInfo.logicalShape);d.shapeInfo.isUniform?n.push(`uniform float ${d.name}${h>1?`[${h}]`:""};`):(n.push(`uniform sampler2D ${d.name};`),n.push(`uniform int offset${d.name};`))});let s=n.join(` +`),a=r.map(d=>lY(d,e,o)).join(` +`),i=e.texShape,l=zt(),u=pY(l),c,p,m=dY(l);return e.isPacked?(c=uY(e.logicalShape,i),p=fY(l)):(c=cY(e.logicalShape,i),p=mY(l)),o&&(m+=hY),[m,u,p,s,c,a,t].join(` +`)}function Vp(r){let e=r.shapeInfo.logicalShape;switch(e.length){case 0:return gY(r);case 1:return xY(r);case 2:return yY(r);case 3:return bY(r);case 4:return _Y(r);case 5:return wY(r);case 6:return vY(r);default:throw new Error(`${e.length}-D input sampling is not yet supported`)}}function tR(r){switch(r.shapeInfo.logicalShape.length){case 0:return kY(r);case 1:return CY(r);case 2:return IY(r);case 3:return NY(r);default:return SY(r)}}function lY(r,e,t=!1){let o="";t?o+=tR(r):o+=Vp(r);let n=r.shapeInfo.logicalShape,s=e.logicalShape;return n.length<=s.length&&(t?o+=TY(r,e):o+=EY(r,e)),o}function uY(r,e){switch(r.length){case 0:return rR();case 1:return AY(r,e);case 2:return RY(r,e);case 3:return DY(r,e);default:return $Y(r,e)}}function cY(r,e){switch(r.length){case 0:return rR();case 1:return FY(r,e);case 2:return zY(r,e);case 3:return OY(r,e);case 4:return PY(r,e);case 5:return MY(r,e);case 6:return LY(r,e);default:throw new Error(`${r.length}-D output sampling is not yet supported`)}}function pY(r){return` float sampleTexture(sampler2D textureSampler, vec2 uv) { - return ${glsl.texture2D}(textureSampler, uv).r; + return ${r.texture2D}(textureSampler, uv).r; } - `}function getFloatTextureSetRSnippet(glsl){return` + `}function mY(r){return` void setOutput(float val) { - ${glsl.output} = vec4(val, 0, 0, 0); + ${r.output} = vec4(val, 0, 0, 0); } - `}function getFloatTextureSetRGBASnippet(glsl){return` + `}function fY(r){return` void setOutput(vec4 val) { - ${glsl.output} = val; + ${r.output} = val; } - `}function getShaderPrefix(glsl){return`${glsl.version} + `}function dY(r){return`${r.version} precision highp float; precision highp int; precision highp sampler2D; - ${glsl.varyingFs} vec2 resultUV; - ${glsl.defineOutput} + ${r.varyingFs} vec2 resultUV; + ${r.defineOutput} const vec2 halfCR = vec2(0.5, 0.5); struct ivec5 @@ -312,9 +312,9 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee }; uniform float NAN; - ${glsl.defineSpecialNaN} - ${glsl.defineSpecialInf} - ${glsl.defineRound} + ${r.defineSpecialNaN} + ${r.defineSpecialInf} + ${r.defineRound} int imod(int x, int y) { return x - y * (x / y); @@ -339,10 +339,10 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee return fract((p3.x + p3.y) * p3.z); } - ${SAMPLE_1D_SNIPPET} - ${SAMPLE_2D_SNIPPET} - ${SAMPLE_3D_SNIPPET} - `}var SAMPLE_1D_SNIPPET=` + ${BY} + ${VY} + ${WY} + `}var BY=` vec2 uvFromFlat(int texNumR, int texNumC, int index) { int texR = index / texNumC; int texC = index - texR * texNumC; @@ -354,7 +354,7 @@ vec2 packedUVfrom1D(int texNumR, int texNumC, int index) { int texC = texelIndex - texR * texNumC; return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); } -`,SAMPLE_2D_SNIPPET=` +`,VY=` vec2 packedUVfrom2D(int texelsInLogicalRow, int texNumR, int texNumC, int row, int col) { int texelIndex = (row / 2) * texelsInLogicalRow + (col / 2); @@ -362,7 +362,7 @@ vec2 packedUVfrom2D(int texelsInLogicalRow, int texNumR, int texC = texelIndex - texR * texNumC; return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); } -`,SAMPLE_3D_SNIPPET=` +`,WY=` vec2 packedUVfrom3D(int texNumR, int texNumC, int texelsInBatch, int texelsInLogicalRow, int b, int row, int col) { @@ -371,7 +371,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, int texC = index - texR * texNumC; return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); } -`,SHADER_PACKED_PREFIX=` +`,hY=` float getChannel(vec4 frag, vec2 innerDims) { vec2 modCoord = mod(innerDims, 2.); return modCoord.x == 0. ? @@ -382,494 +382,494 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, float modCoord = mod(float(dim), 2.); return modCoord == 0. ? frag.r : frag.g; } -`;function getOutputScalarCoords(){return` +`;function rR(){return` int getOutputCoords() { return 0; } - `}function getOutputPacked1DCoords(shape,texShape){let packedTexShape=[Math.ceil(texShape[0]/2),Math.ceil(texShape[1]/2)];return packedTexShape[0]===1?` + `}function AY(r,e){let t=[Math.ceil(e[0]/2),Math.ceil(e[1]/2)];return t[0]===1?` int getOutputCoords() { - return 2 * int(resultUV.x * ${packedTexShape[1]}.0); + return 2 * int(resultUV.x * ${t[1]}.0); } - `:packedTexShape[1]===1?` + `:t[1]===1?` int getOutputCoords() { - return 2 * int(resultUV.y * ${packedTexShape[0]}.0); + return 2 * int(resultUV.y * ${t[0]}.0); } `:` int getOutputCoords() { ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${packedTexShape[0]}, ${packedTexShape[1]})); - return 2 * (resTexRC.x * ${packedTexShape[1]} + resTexRC.y); + vec2(${t[0]}, ${t[1]})); + return 2 * (resTexRC.x * ${t[1]} + resTexRC.y); } - `}function getOutput1DCoords(shape,texShape){return texShape[0]===1?` + `}function FY(r,e){return e[0]===1?` int getOutputCoords() { - return int(resultUV.x * ${texShape[1]}.0); + return int(resultUV.x * ${e[1]}.0); } - `:texShape[1]===1?` + `:e[1]===1?` int getOutputCoords() { - return int(resultUV.y * ${texShape[0]}.0); + return int(resultUV.y * ${e[0]}.0); } `:` int getOutputCoords() { ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${texShape[0]}, ${texShape[1]})); - return resTexRC.x * ${texShape[1]} + resTexRC.y; + vec2(${e[0]}, ${e[1]})); + return resTexRC.x * ${e[1]} + resTexRC.y; } - `}function getOutputPacked3DCoords(shape,texShape){let packedTexShape=[Math.ceil(texShape[0]/2),Math.ceil(texShape[1]/2)],texelsInLogicalRow=Math.ceil(shape[2]/2),texelsInBatch=texelsInLogicalRow*Math.ceil(shape[1]/2);return` + `}function DY(r,e){let t=[Math.ceil(e[0]/2),Math.ceil(e[1]/2)],o=Math.ceil(r[2]/2),n=o*Math.ceil(r[1]/2);return` ivec3 getOutputCoords() { ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${packedTexShape[0]}, ${packedTexShape[1]})); - int index = resTexRC.x * ${packedTexShape[1]} + resTexRC.y; + vec2(${t[0]}, ${t[1]})); + int index = resTexRC.x * ${t[1]} + resTexRC.y; - int b = index / ${texelsInBatch}; - index -= b * ${texelsInBatch}; + int b = index / ${n}; + index -= b * ${n}; - int r = 2 * (index / ${texelsInLogicalRow}); - int c = imod(index, ${texelsInLogicalRow}) * 2; + int r = 2 * (index / ${o}); + int c = imod(index, ${o}) * 2; return ivec3(b, r, c); } - `}function getOutput3DCoords(shape,texShape){let coordsFromIndexSnippet=getLogicalCoordinatesFromFlatIndex(["r","c","d"],shape);return` + `}function OY(r,e){let t=Ls(["r","c","d"],r);return` ivec3 getOutputCoords() { ivec2 resTexRC = ivec2(resultUV.yx * - vec2(${texShape[0]}, ${texShape[1]})); - int index = resTexRC.x * ${texShape[1]} + resTexRC.y; - ${coordsFromIndexSnippet} + vec2(${e[0]}, ${e[1]})); + int index = resTexRC.x * ${e[1]} + resTexRC.y; + ${t} return ivec3(r, c, d); } - `}function getOutputPackedNDCoords(shape,texShape){let packedTexShape=[Math.ceil(texShape[0]/2),Math.ceil(texShape[1]/2)],texelsInLogicalRow=Math.ceil(shape[shape.length-1]/2),texelsInBatch=texelsInLogicalRow*Math.ceil(shape[shape.length-2]/2),texelsInBatchN=texelsInBatch,batches="",coords2="b, r, c";for(let b=2;b=1?coordsSnippet="coords = 0;":coordsSnippet=broadcastDims.map(d=>`coords.${fields[d+rankDiff]} = 0;`).join(` -`);let unpackedCoordsSnippet="";outRank<2&&inRank>0?unpackedCoordsSnippet="coords":unpackedCoordsSnippet=inputInfo.shapeInfo.logicalShape.map((s,i)=>`coords.${fields[i+rankDiff]}`).join(", ");let output="return outputValue;",isInputScalar=util_exports.sizeFromShape(inputInfo.shapeInfo.logicalShape)===1,isOutputScalar=util_exports.sizeFromShape(outShapeInfo.logicalShape)===1;if(inRank===1&&!isInputScalar&&!isOutputScalar)output=` + `}function TY(r,e){let t=r.name,o=t.charAt(0).toUpperCase()+t.slice(1),n="get"+o+"AtOutCoords",s=r.shapeInfo.logicalShape.length,a=e.logicalShape.length,i=Q$(r.shapeInfo.logicalShape,e.logicalShape),l=Be(a),u=a-s,c,p=["x","y","z","w","u","v"];s===0?c="":a<2&&i.length>=1?c="coords = 0;":c=i.map(b=>`coords.${p[b+u]} = 0;`).join(` +`);let m="";a<2&&s>0?m="coords":m=r.shapeInfo.logicalShape.map((b,_)=>`coords.${p[_+u]}`).join(", ");let f="return outputValue;",h=x.sizeFromShape(r.shapeInfo.logicalShape)===1,y=x.sizeFromShape(e.logicalShape)===1;if(s===1&&!h&&!y)f=` return vec4(outputValue.xy, outputValue.xy); - `;else if(isInputScalar&&!isOutputScalar)outRank===1?output=` + `;else if(h&&!y)a===1?f=` return vec4(outputValue.x, outputValue.x, 0., 0.); - `:output=` + `:f=` return vec4(outputValue.x); - `;else if(broadcastDims.length){let rows=inRank-2,cols=inRank-1;broadcastDims.indexOf(rows)>-1&&broadcastDims.indexOf(cols)>-1?output="return vec4(outputValue.x);":broadcastDims.indexOf(rows)>-1?output="return vec4(outputValue.x, outputValue.y, outputValue.x, outputValue.y);":broadcastDims.indexOf(cols)>-1&&(output="return vec4(outputValue.xx, outputValue.zz);")}return` - vec4 ${funcName}() { - ${type} coords = getOutputCoords(); - ${coordsSnippet} - vec4 outputValue = get${texFuncSnippet}(${unpackedCoordsSnippet}); - ${output} + `;else if(i.length){let b=s-2,_=s-1;i.indexOf(b)>-1&&i.indexOf(_)>-1?f="return vec4(outputValue.x);":i.indexOf(b)>-1?f="return vec4(outputValue.x, outputValue.y, outputValue.x, outputValue.y);":i.indexOf(_)>-1&&(f="return vec4(outputValue.xx, outputValue.zz);")}return` + vec4 ${n}() { + ${l} coords = getOutputCoords(); + ${c} + vec4 outputValue = get${o}(${m}); + ${f} } - `}function getSamplerAtOutputCoords(inputInfo,outShapeInfo){let texName=inputInfo.name,texFuncSnippet=texName.charAt(0).toUpperCase()+texName.slice(1),funcName="get"+texFuncSnippet+"AtOutCoords",outTexShape=outShapeInfo.texShape,inTexShape=inputInfo.shapeInfo.texShape,inRank=inputInfo.shapeInfo.logicalShape.length,outRank=outShapeInfo.logicalShape.length;if(!inputInfo.shapeInfo.isUniform&&inRank===outRank&&inputInfo.shapeInfo.flatOffset==null&&util_exports.arraysEqual(inTexShape,outTexShape))return` - float ${funcName}() { - return sampleTexture(${texName}, resultUV); + `}function EY(r,e){let t=r.name,o=t.charAt(0).toUpperCase()+t.slice(1),n="get"+o+"AtOutCoords",s=e.texShape,a=r.shapeInfo.texShape,i=r.shapeInfo.logicalShape.length,l=e.logicalShape.length;if(!r.shapeInfo.isUniform&&i===l&&r.shapeInfo.flatOffset==null&&x.arraysEqual(a,s))return` + float ${n}() { + return sampleTexture(${t}, resultUV); } - `;let type=getCoordsDataType(outRank),broadcastDims=getBroadcastDims2(inputInfo.shapeInfo.logicalShape,outShapeInfo.logicalShape),rankDiff=outRank-inRank,coordsSnippet,fields=["x","y","z","w","u","v"];inRank===0?coordsSnippet="":outRank<2&&broadcastDims.length>=1?coordsSnippet="coords = 0;":coordsSnippet=broadcastDims.map(d=>`coords.${fields[d+rankDiff]} = 0;`).join(` -`);let unpackedCoordsSnippet="";return outRank<2&&inRank>0?unpackedCoordsSnippet="coords":unpackedCoordsSnippet=inputInfo.shapeInfo.logicalShape.map((s,i)=>`coords.${fields[i+rankDiff]}`).join(", "),` - float ${funcName}() { - ${type} coords = getOutputCoords(); - ${coordsSnippet} - return get${texFuncSnippet}(${unpackedCoordsSnippet}); + `;let u=Be(l),c=Q$(r.shapeInfo.logicalShape,e.logicalShape),p=l-i,m,f=["x","y","z","w","u","v"];i===0?m="":l<2&&c.length>=1?m="coords = 0;":m=c.map(h=>`coords.${f[h+p]} = 0;`).join(` +`);let d="";return l<2&&i>0?d="coords":d=r.shapeInfo.logicalShape.map((h,g)=>`coords.${f[g+p]}`).join(", "),` + float ${n}() { + ${u} coords = getOutputCoords(); + ${m} + return get${o}(${d}); } - `}function getCoordsDataType(rank){if(rank<=1)return"int";if(rank===2)return"ivec2";if(rank===3)return"ivec3";if(rank===4)return"ivec4";if(rank===5)return"ivec5";if(rank===6)return"ivec6";throw Error(`GPU for rank ${rank} is not yet supported`)}function squeezeInputInfo(inInfo,squeezedShape){let newInputInfo=JSON.parse(JSON.stringify(inInfo));return newInputInfo.shapeInfo.logicalShape=squeezedShape,newInputInfo}function getSqueezedParams(params,keptDims){return keptDims.map(d=>params[d]).join(", ")}function compileProgram(gpgpu,program,inputs,output){let userCode=program.userCode,inputInfos=inputs.map((input2,i)=>{let shapeInfo={logicalShape:input2.shape,texShape:input2.isUniform?null:input2.texData.texShape,isUniform:input2.isUniform,isPacked:input2.isUniform?!1:input2.texData.isPacked,flatOffset:null};return input2.texData!=null&&input2.texData.slice!=null&&input2.texData.slice.flatOffset>0&&(shapeInfo.flatOffset=input2.texData.slice.flatOffset),{name:program.variableNames[i],shapeInfo}}),inShapeInfos=inputInfos.map(x=>x.shapeInfo),outShapeInfo={logicalShape:output.shape,texShape:output.texData.texShape,isUniform:!1,isPacked:output.texData.isPacked,flatOffset:null},source=makeShader(inputInfos,outShapeInfo,userCode,program.packedInputs),webGLProgram=gpgpu.createProgram(source),infLoc=null,nanLoc=gpgpu.getUniformLocation(webGLProgram,"NAN",!1);env().getNumber("WEBGL_VERSION")===1&&(infLoc=gpgpu.getUniformLocation(webGLProgram,"INFINITY",!1));let uniformLocations={};for(let i=0;i{let shapeA=s.logicalShape,input2=inputs[i],shapeB=input2.shape;if(!util_exports.arraysEqual(shapeA,shapeB))throw Error(`Binary was compiled with different shapes than the current args. Shapes ${shapeA} and ${shapeB} must match`);if(s.isUniform&&input2.isUniform)return;let texShapeA=s.texShape,texShapeB=input2.isUniform?null:input2.texData.texShape;if(!util_exports.arraysEqual(texShapeA,texShapeB))throw Error(`Binary was compiled with different texture shapes than the current args. Shape ${texShapeA} and ${texShapeB} must match`)})}function runProgram(gpgpu,binary,inputs,output,customSetup){validateBinaryAndProgram(binary.inShapeInfos,inputs),validateBinaryAndProgram([binary.outShapeInfo],[output]);let outTex=output.texData.texture,outTexShape=output.texData.texShape;output.texData.isPacked?gpgpu.setOutputPackedMatrixTexture(outTex,outTexShape[0],outTexShape[1]):gpgpu.setOutputMatrixTexture(outTex,outTexShape[0],outTexShape[1]),gpgpu.setProgram(binary.webGLProgram),env().getNumber("WEBGL_VERSION")===1&&binary.infLoc!==null&&gpgpu.gl.uniform1f(binary.infLoc,Infinity),binary.nanLoc!==null&&gpgpu.gl.uniform1f(binary.nanLoc,NaN),inputs.forEach((input2,i)=>{let varName=binary.program.variableNames[i],varLoc=binary.uniformLocations[varName],varOffsetLoc=binary.uniformLocations[`offset${varName}`];if(varLoc!=null){if(input2.isUniform){if(util_exports.sizeFromShape(input2.shape)<2)gpgpu.gl.uniform1f(varLoc,input2.uniformValues[0]);else{let vals=input2.uniformValues;vals instanceof Float32Array||(vals=new Float32Array(vals)),gpgpu.gl.uniform1fv(varLoc,vals)}return}input2.texData.slice!=null&&varOffsetLoc!=null&&gpgpu.gl.uniform1i(varOffsetLoc,input2.texData.slice.flatOffset),gpgpu.setInputMatrixTexture(input2.texData.texture,varLoc,i)}}),customSetup!=null&&customSetup(gpgpu,binary.webGLProgram),gpgpu.executeProgram()}function makeShaderKey(program,inputs,output){let keyInputs="";inputs.concat(output).forEach(x=>{let hasOffset=x.texData!=null&&x.texData.slice!=null&&x.texData.slice.flatOffset>0,texShape=x.isUniform?"uniform":x.texData.texShape;keyInputs+=`${x.shape}_${texShape}_${hasOffset}`});let keyUserCode=program.userCode,key=program.constructor.name;return key+="_"+keyInputs+"_"+keyUserCode,key}var{addImpl:addImplCPU,bincountImpl:bincountImplCPU,bincountReduceImpl:bincountReduceImplCPU,ceilImpl:ceilImplCPU,concatImpl:concatImplCPU,expImpl:expImplCPU,expm1Impl:expm1ImplCPU,floorImpl:floorImplCPU,gatherV2Impl:gatherV2ImplCPU,greaterImpl:greaterImplCPU,lessImpl:lessImplCPU,linSpaceImpl:linSpaceImplCPU,logImpl:logImplCPU,maxImpl:maxImplCPU,maximumImpl:maximumImplCPU,minimumImpl:minimumImplCPU,multiplyImpl:multiplyImplCPU,negImpl:negImplCPU,prodImpl:prodImplCPU,rangeImpl:rangeImplCPU,rsqrtImpl:rsqrtImplCPU,simpleAbsImpl:simpleAbsImplCPU,sliceImpl:sliceImplCPU,stridedSliceImpl:stridedSliceImplCPU,subImpl:subImplCPU,tileImpl:tileImplCPU,topKImpl:topKImplCPU,transposeImpl:transposeImplCPU,uniqueImpl:uniqueImplCPU}=shared_exports;function getVecChannels(name,rank){return["x","y","z","w","u","v"].slice(0,rank).map(d=>`${name}.${d}`)}function getChannels(name,rank){return rank===1?[name]:getVecChannels(name,rank)}function getSourceCoords(rank,dims){if(rank===1)return"rc";let coords2="";for(let i=0;ir[t]).join(", ")}function oR(r,e,t,o){let n=e.userCode,s=t.map((f,d)=>{let h={logicalShape:f.shape,texShape:f.isUniform?null:f.texData.texShape,isUniform:f.isUniform,isPacked:f.isUniform?!1:f.texData.isPacked,flatOffset:null};return f.texData!=null&&f.texData.slice!=null&&f.texData.slice.flatOffset>0&&(h.flatOffset=f.texData.slice.flatOffset),{name:e.variableNames[d],shapeInfo:h}}),a=s.map(f=>f.shapeInfo),i={logicalShape:o.shape,texShape:o.texData.texShape,isUniform:!1,isPacked:o.texData.isPacked,flatOffset:null},l=eR(s,i,n,e.packedInputs),u=r.createProgram(l),c=null,p=r.getUniformLocation(u,"NAN",!1);W().getNumber("WEBGL_VERSION")===1&&(c=r.getUniformLocation(u,"INFINITY",!1));let m={};for(let f=0;f{let n=t.logicalShape,s=e[o],a=s.shape;if(!x.arraysEqual(n,a))throw Error(`Binary was compiled with different shapes than the current args. Shapes ${n} and ${a} must match`);if(t.isUniform&&s.isUniform)return;let i=t.texShape,l=s.isUniform?null:s.texData.texShape;if(!x.arraysEqual(i,l))throw Error(`Binary was compiled with different texture shapes than the current args. Shape ${i} and ${l} must match`)})}function sR(r,e,t,o,n){nR(e.inShapeInfos,t),nR([e.outShapeInfo],[o]);let s=o.texData.texture,a=o.texData.texShape;o.texData.isPacked?r.setOutputPackedMatrixTexture(s,a[0],a[1]):r.setOutputMatrixTexture(s,a[0],a[1]),r.setProgram(e.webGLProgram),W().getNumber("WEBGL_VERSION")===1&&e.infLoc!==null&&r.gl.uniform1f(e.infLoc,Infinity),e.nanLoc!==null&&r.gl.uniform1f(e.nanLoc,NaN),t.forEach((i,l)=>{let u=e.program.variableNames[l],c=e.uniformLocations[u],p=e.uniformLocations[`offset${u}`];if(c!=null){if(i.isUniform){if(x.sizeFromShape(i.shape)<2)r.gl.uniform1f(c,i.uniformValues[0]);else{let m=i.uniformValues;m instanceof Float32Array||(m=new Float32Array(m)),r.gl.uniform1fv(c,m)}return}i.texData.slice!=null&&p!=null&&r.gl.uniform1i(p,i.texData.slice.flatOffset),r.setInputMatrixTexture(i.texData.texture,c,l)}}),n!=null&&n(r,e.webGLProgram),r.executeProgram()}function iR(r,e,t){let o="";e.concat(t).forEach(a=>{let i=a.texData!=null&&a.texData.slice!=null&&a.texData.slice.flatOffset>0,l=a.isUniform?"uniform":a.texData.texShape;o+=`${a.shape}_${l}_${i}`});let n=r.userCode,s=r.constructor.name;return s+="_"+o+"_"+n,s}var{addImpl:aR,bincountImpl:$x,bincountReduceImpl:lR,ceilImpl:uR,concatImpl:cR,expImpl:pR,expm1Impl:mR,floorImpl:fR,gatherV2Impl:dR,greaterImpl:hR,lessImpl:gR,linSpaceImpl:xR,logImpl:yR,maxImpl:bR,maximumImpl:_R,minimumImpl:wR,multiplyImpl:vR,negImpl:kR,prodImpl:CR,rangeImpl:IR,rsqrtImpl:NR,simpleAbsImpl:Rx,sliceImpl:SR,stridedSliceImpl:TR,subImpl:ER,tileImpl:AR,topKImpl:DR,transposeImpl:jp,uniqueImpl:$R}=rk;function Ok(r,e){return["x","y","z","w","u","v"].slice(0,e).map(t=>`${r}.${t}`)}function qt(r,e){return e===1?[r]:Ok(r,e)}function RR(r,e){if(r===1)return"rc";let t="";for(let o=0;o ${shape[0]}`;let cond="";for(let i=rank-2;i= ${shape[i]}`,i ${e[0]}`;let o="";for(let n=r-2;n= ${e[n]}`,n= ${cols}; - bool rEdge = rp1 >= ${rows}; - `}function getOutput(shape,dims){let rank=shape.length,sourceCoords=getSourceCoordsArr(rank,dims);return rank===1?`getA(rc), - rc + 1 >= ${shape[0]} ? 0. : getA(rc + 1), - 0, 0`:`getA(${sourceCoords[0]}), - cEdge ? 0. : getA(${sourceCoords[1]}), - rEdge ? 0. : getA(${sourceCoords[2]}), - rEdge || cEdge ? 0. : getA(${sourceCoords[3]})`}var ReshapePackedProgram=class{constructor(outputShape,inputShape){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=outputShape;let mainLoop="";for(let i=0;i<4;i++){let thisRC="thisRC = rc;";i%2==1&&(thisRC+="thisRC.z += 1;"),i>1&&(thisRC+="thisRC.y += 1;"),mainLoop+=` - ${thisRC} - ${i>0?"if(thisRC.y < rows && thisRC.z < cols){":""} + bool cEdge = cp1 >= ${e}; + bool rEdge = rp1 >= ${t}; + `}function jY(r,e){let t=r.length,o=qY(t,e);return t===1?`getA(rc), + rc + 1 >= ${r[0]} ? 0. : getA(rc + 1), + 0, 0`:`getA(${o[0]}), + cEdge ? 0. : getA(${o[1]}), + rEdge ? 0. : getA(${o[2]}), + rEdge || cEdge ? 0. : getA(${o[3]})`}var th=class{constructor(e,t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e;let o="";for(let n=0;n<4;n++){let s="thisRC = rc;";n%2==1&&(s+="thisRC.z += 1;"),n>1&&(s+="thisRC.y += 1;"),o+=` + ${s} + ${n>0?"if(thisRC.y < rows && thisRC.z < cols){":""} int flatIndex = getFlatIndex(thisRC); ivec3 inputRC = inputCoordsFromReshapedOutCoords(flatIndex); vec2 inputRCInnerDims = vec2(float(inputRC.y),float(inputRC.z)); - result[${i}] = + result[${n}] = getChannel(getA(inputRC.x, inputRC.y, inputRC.z), inputRCInnerDims); - ${i>0?"}":""} + ${n>0?"}":""} `}this.userCode=` - ${getReshapedInputCoords(inputShape)} - ${getFlatIndexFrom3D(outputShape)} + ${HY(t)} + ${Bp(e)} void main() { ivec3 rc = getOutputCoords(); @@ -877,21 +877,21 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, vec4 result = vec4(0.); ivec3 thisRC; - int rows = ${outputShape[1]}; - int cols = ${outputShape[2]}; + int rows = ${e[1]}; + int cols = ${e[2]}; - ${mainLoop} + ${o} setOutput(result); } - `}};function getReshapedInputCoords(shape){return` + `}};function HY(r){return` ivec3 inputCoordsFromReshapedOutCoords(int index) { - ${getLogicalCoordinatesFromFlatIndex(["r","c","d"],shape)} + ${Ls(["r","c","d"],r)} return ivec3(r, c, d); } - `}var TextureManager=class{constructor(gpgpu){this.gpgpu=gpgpu,this.numUsedTextures=0,this.numFreeTextures=0,this._numBytesAllocated=0,this._numBytesFree=0,this.freeTextures={},this.logEnabled=!1,this.usedTextures={}}acquireTexture(shapeRC,usage,isPacked){let physicalTexType=getPhysicalFromLogicalTextureType(usage,isPacked),shapeKey=getKeyFromTextureShape(shapeRC,physicalTexType,isPacked);shapeKey in this.freeTextures||(this.freeTextures[shapeKey]=[]),shapeKey in this.usedTextures||(this.usedTextures[shapeKey]=[]);let texBytes=computeBytes(shapeRC,physicalTexType,this.gpgpu.gl,this.gpgpu.textureConfig,isPacked);if(this.freeTextures[shapeKey].length>0){this.numFreeTextures--,this.numUsedTextures++,this._numBytesFree-=texBytes,this.log();let newTexture2=this.freeTextures[shapeKey].shift();return this.usedTextures[shapeKey].push(newTexture2),newTexture2}let newTexture;return physicalTexType===PhysicalTextureType.PACKED_2X2_FLOAT32?newTexture=this.gpgpu.createPackedMatrixTexture(shapeRC[0],shapeRC[1]):physicalTexType===PhysicalTextureType.PACKED_2X2_FLOAT16?newTexture=this.gpgpu.createFloat16PackedMatrixTexture(shapeRC[0],shapeRC[1]):physicalTexType===PhysicalTextureType.UNPACKED_FLOAT32?newTexture=this.gpgpu.createFloat32MatrixTexture(shapeRC[0],shapeRC[1]):physicalTexType===PhysicalTextureType.UNPACKED_FLOAT16?newTexture=this.gpgpu.createFloat16MatrixTexture(shapeRC[0],shapeRC[1]):physicalTexType===PhysicalTextureType.PACKED_4X1_UNSIGNED_BYTE&&(newTexture=this.gpgpu.createUnsignedBytesMatrixTexture(shapeRC[0],shapeRC[1])),this.usedTextures[shapeKey].push(newTexture),this.numUsedTextures++,this._numBytesAllocated+=texBytes,this.log(),newTexture}releaseTexture(texture,shape,logicalTexType,isPacked){if(this.freeTextures==null)return;let physicalTexType=getPhysicalFromLogicalTextureType(logicalTexType,isPacked),shapeKey=getKeyFromTextureShape(shape,physicalTexType,isPacked);shapeKey in this.freeTextures||(this.freeTextures[shapeKey]=[]);let texBytes=computeBytes(shape,physicalTexType,this.gpgpu.gl,this.gpgpu.textureConfig,isPacked),deleteTexThreshold=env().get("WEBGL_DELETE_TEXTURE_THRESHOLD");deleteTexThreshold!==-1&&this._numBytesAllocated>deleteTexThreshold?(this.gpgpu.deleteMatrixTexture(texture),this._numBytesAllocated-=texBytes):(this.freeTextures[shapeKey].push(texture),this.numFreeTextures++,this._numBytesFree+=texBytes),this.numUsedTextures--;let texList=this.usedTextures[shapeKey],texIndex=texList.indexOf(texture);if(texIndex<0)throw new Error("Cannot release a texture that was never provided by this texture manager");texList.splice(texIndex,1),this.log()}log(){if(!this.logEnabled)return;let total=this.numFreeTextures+this.numUsedTextures;console.log("Free/Used",`${this.numFreeTextures} / ${this.numUsedTextures}`,`(${total})`);let freeRatio=this._numBytesFree/this._numBytesAllocated;console.log(`Bytes allocated: ${this._numBytesAllocated}`),console.log(`Bytes unused: ${this._numBytesFree} (${Math.round(100*freeRatio)}%)`)}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 texShape in this.freeTextures)this.freeTextures[texShape].forEach(tex=>{this.gpgpu.deleteMatrixTexture(tex)});for(let texShape in this.usedTextures)this.usedTextures[texShape].forEach(tex=>{this.gpgpu.deleteMatrixTexture(tex)});this.freeTextures=null,this.usedTextures=null,this.numUsedTextures=0,this.numFreeTextures=0,this._numBytesAllocated=0,this._numBytesFree=0}}};function numBytesForInternalFormat(gl,internalFormat){let glany=gl;if(internalFormat===glany.R32F)return 4;if(internalFormat===glany.R16F)return 2;if(internalFormat===glany.RGBA32F)return 16;if(internalFormat===gl.RGBA)return 16;if(internalFormat===glany.RGBA16F)return 8;throw new Error(`Unknown internal format ${internalFormat}`)}function computeBytes(shape,physicalTexType,gl,textureConfig,isPacked){let internalFormat=internalFormatForPhysicalTexType(physicalTexType,textureConfig),numElements;if(isPacked){let[packedWidth,packedHeight]=getPackedMatrixTextureShapeWidthHeight(shape[0],shape[1]);numElements=packedWidth*packedHeight}else{let[width,height]=getUnpackedMatrixTextureShapeWidthHeight(shape[0],shape[1]);numElements=width*height}let bytesPerElement2=numBytesForInternalFormat(gl,internalFormat);return numElements*bytesPerElement2}function internalFormatForPhysicalTexType(physicalTexType,textureConfig){switch(physicalTexType){case PhysicalTextureType.PACKED_2X2_FLOAT32:return getInternalFormatForPackedMatrixTexture(textureConfig);case PhysicalTextureType.PACKED_2X2_FLOAT16:return getInternalFormatForFloat16PackedMatrixTexture(textureConfig);case PhysicalTextureType.UNPACKED_FLOAT32:return getInternalFormatForFloat32MatrixTexture(textureConfig);case PhysicalTextureType.UNPACKED_FLOAT16:return getInternalFormatForFloat16MatrixTexture(textureConfig);case PhysicalTextureType.PACKED_4X1_UNSIGNED_BYTE:return getInternalFormatForUnsignedBytesMatrixTexture(textureConfig);default:throw new Error(`Unknown physical texture type ${physicalTexType}`)}}function getPhysicalTextureForRendering(isPacked){return env().getBool("WEBGL_RENDER_FLOAT32_ENABLED")?isPacked?PhysicalTextureType.PACKED_2X2_FLOAT32:PhysicalTextureType.UNPACKED_FLOAT32:isPacked?PhysicalTextureType.PACKED_2X2_FLOAT16:PhysicalTextureType.UNPACKED_FLOAT16}function getPhysicalFromLogicalTextureType(logicalTexType,isPacked){if(logicalTexType===TextureUsage.UPLOAD)return PhysicalTextureType.PACKED_2X2_FLOAT32;if(logicalTexType===TextureUsage.RENDER||logicalTexType==null)return getPhysicalTextureForRendering(isPacked);if(logicalTexType===TextureUsage.DOWNLOAD||logicalTexType===TextureUsage.PIXELS)return PhysicalTextureType.PACKED_4X1_UNSIGNED_BYTE;throw new Error(`Unknown logical texture type ${logicalTexType}`)}function getKeyFromTextureShape(shapeRowsCol,physicalTexType,isPacked){return`${shapeRowsCol[0]}_${shapeRowsCol[1]}_${physicalTexType}_${isPacked}`}var UnaryOpProgram=class{constructor(aShape,opSnippet){this.variableNames=["A"],this.outputShape=aShape,this.userCode=` + `}var Mk=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,o){let n=OR(t,o),s=PR(e,n,o);s in this.freeTextures||(this.freeTextures[s]=[]),s in this.usedTextures||(this.usedTextures[s]=[]);let a=FR(e,n,this.gpgpu.gl,this.gpgpu.textureConfig,o);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 n===wr.PACKED_2X2_FLOAT32?i=this.gpgpu.createPackedMatrixTexture(e[0],e[1]):n===wr.PACKED_2X2_FLOAT16?i=this.gpgpu.createFloat16PackedMatrixTexture(e[0],e[1]):n===wr.UNPACKED_FLOAT32?i=this.gpgpu.createFloat32MatrixTexture(e[0],e[1]):n===wr.UNPACKED_FLOAT16?i=this.gpgpu.createFloat16MatrixTexture(e[0],e[1]):n===wr.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,o,n){if(this.freeTextures==null)return;let s=OR(o,n),a=PR(t,s,n);a in this.freeTextures||(this.freeTextures[a]=[]);let i=FR(t,s,this.gpgpu.gl,this.gpgpu.textureConfig,n),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(`Bytes allocated: ${this._numBytesAllocated}`),console.log(`Bytes unused: ${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 KY(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(`Unknown internal format ${e}`)}function FR(r,e,t,o,n){let s=XY(e,o),a;if(n){let[l,u]=Ki(r[0],r[1]);a=l*u}else{let[l,u]=lc(r[0],r[1]);a=l*u}let i=KY(t,s);return a*i}function XY(r,e){switch(r){case wr.PACKED_2X2_FLOAT32:return $k(e);case wr.PACKED_2X2_FLOAT16:return Rk(e);case wr.UNPACKED_FLOAT32:return Ek(e);case wr.UNPACKED_FLOAT16:return Ak(e);case wr.PACKED_4X1_UNSIGNED_BYTE:return Dk(e);default:throw new Error(`Unknown physical texture type ${r}`)}}function YY(r){return W().getBool("WEBGL_RENDER_FLOAT32_ENABLED")?r?wr.PACKED_2X2_FLOAT32:wr.UNPACKED_FLOAT32:r?wr.PACKED_2X2_FLOAT16:wr.UNPACKED_FLOAT16}function OR(r,e){if(r===Dr.UPLOAD)return wr.PACKED_2X2_FLOAT32;if(r===Dr.RENDER||r==null)return YY(e);if(r===Dr.DOWNLOAD||r===Dr.PIXELS)return wr.PACKED_4X1_UNSIGNED_BYTE;throw new Error(`Unknown logical texture type ${r}`)}function PR(r,e,t){return`${r[0]}_${r[1]}_${e}_${t}`}var mo=class{constructor(e,t){this.variableNames=["A"],this.outputShape=e,this.userCode=` float unaryOperation(float x) { - ${opSnippet} + ${t} } void main() { @@ -900,11 +900,11 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, setOutput(y); } - `}},CHECK_NAN_SNIPPET="if (isnan(x)) return x;",LINEAR="return x;",ABS="return abs(x);";var ELU2="return (x >= 0.0) ? x : (exp(x) - 1.0);",RELU=CHECK_NAN_SNIPPET+` + `}},xr="if (isnan(x)) return x;",MR="return x;",Lk="return abs(x);";var LR="return (x >= 0.0) ? x : (exp(x) - 1.0);",zR=xr+` return (x < 0.0) ? 0.0 : x; -`,RELU6=CHECK_NAN_SNIPPET+` +`,BR=xr+` return (x < 0.0) ? 0.0 : min(6.0, x); -`,CLONE="return x;";var LINEAR2="return x;",ELU3=` +`,rh="return x;";var VR="return x;",WR=` vec4 result; result.r = (x.r >= 0.0) ? x.r : (exp(x.r) - 1.0); @@ -913,7 +913,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, result.a = (x.a >= 0.0) ? x.a : (exp(x.a) - 1.0); return result; -`,RELU2=` +`,GR=` vec4 result = x * vec4(greaterThanEqual(x, vec4(0.0))); bvec4 isNaN = isnan(x); @@ -923,7 +923,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, result.a = isNaN.a ? x.a : result.a; return result; -`,RELU62=` +`,UR=` vec4 result = min(x, vec4(6.)) * vec4(greaterThanEqual(x, vec4(0.0))); bvec4 isNaN = isnan(x); @@ -933,9 +933,9 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, result.a = isNaN.a ? x.a : result.a; return result; -`,UnaryOpPackedProgram=class{constructor(aShape,opSnippet){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=aShape,this.userCode=` +`,zs=class{constructor(e,t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.userCode=` vec4 unaryOperation(vec4 x) { - ${opSnippet} + ${t} } void main() { @@ -944,19 +944,19 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, setOutput(y); } - `}};var UnpackProgram=class{constructor(outputShape){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outputShape=outputShape;let rank=outputShape.length,channels=getChannels("rc",rank),dtype=getCoordsDataType(rank),sourceCoords=getSourceCoords(rank,channels),innerDims=channels.slice(-2),coords2=rank<=1?"rc":`vec2(${innerDims.join(",")})`;this.userCode=` + `}};var zk=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outputShape=e;let t=e.length,o=qt("rc",t),n=Be(t),s=RR(t,o),a=o.slice(-2),i=t<=1?"rc":`vec2(${a.join(",")})`;this.userCode=` void main() { - ${dtype} rc = getOutputCoords(); - vec4 packedInput = getA(${sourceCoords}); + ${n} rc = getOutputCoords(); + vec4 packedInput = getA(${s}); - setOutput(getChannel(packedInput, ${coords2})); + setOutput(getChannel(packedInput, ${i})); } - `}};var whereImpl3=kernel_impls_exports.whereImpl,EPSILON_FLOAT322=1e-7,EPSILON_FLOAT162=1e-4,binaryCaches={};function getBinaryCache(webGLVersion){return webGLVersion in binaryCaches||(binaryCaches[webGLVersion]={}),binaryCaches[webGLVersion]}var CPU_HANDOFF_SIZE_THRESHOLD=128,BEFORE_PAGING_CONSTANT=600;function numMBBeforeWarning(){return env().global.screen==null?1024:env().global.screen.height*env().global.screen.width*window.devicePixelRatio*BEFORE_PAGING_CONSTANT/1024/1024}var MathBackendWebGL=class extends KernelBackend{constructor(gpgpu){super();if(this.pendingRead=new WeakMap,this.pendingDisposal=new WeakSet,this.dataRefCount=new WeakMap,this.numBytesInGPU=0,this.uploadWaitMs=0,this.downloadWaitMs=0,this.warnedAboutMemory=!1,this.warnedAboutCPUBackend=!1,this.pendingDeletes=0,this.disposed=!1,!env().getBool("HAS_WEBGL"))throw new Error("WebGL is not supported on this device");if(gpgpu==null){let gl=getWebGLContext(env().getNumber("WEBGL_VERSION"));this.binaryCache=getBinaryCache(env().getNumber("WEBGL_VERSION")),this.gpgpu=new GPGPUContext(gl),this.canvas=gl.canvas,this.gpgpuCreatedLocally=!0}else this.gpgpu=gpgpu,this.binaryCache={},this.gpgpuCreatedLocally=!1,this.canvas=gpgpu.gl.canvas;this.textureManager=new TextureManager(this.gpgpu),this.numMBBeforeWarning=numMBBeforeWarning(),this.texData=new DataStorage(this,engine())}numDataIds(){return this.texData.numDataIds()+(this.cpuBackend?this.cpuBackend.numDataIds():0)-this.pendingDeletes}write(values,shape,dtype){if((env().getBool("WEBGL_CHECK_NUMERICAL_PROBLEMS")||env().getBool("DEBUG"))&&this.checkNumericalProblems(values),dtype==="complex64"&&values!=null)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");let dataId={};return this.texData.set(dataId,{shape,dtype,values,usage:TextureUsage.UPLOAD,refCount:1,complexParentRefCount:0}),dataId}incRef(dataId){let texData=this.texData.get(dataId);texData.refCount++}decRef(dataId){if(this.texData.has(dataId)){let texData=this.texData.get(dataId);texData.refCount--}}move(dataId,values,shape,dtype){if(env().getBool("DEBUG")&&this.checkNumericalProblems(values),dtype==="complex64")throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");this.texData.set(dataId,{shape,dtype,values,usage:TextureUsage.UPLOAD,refCount:1,complexParentRefCount:0})}disposeIntermediateTensorInfo(tensorInfo){let dataId=tensorInfo.dataId;if(this.texData.has(dataId)){let textureData=this.texData.get(dataId);textureData.refCount--,textureData.refCount<1&&this.disposeData(dataId)}}readSync(dataId){let texData=this.texData.get(dataId),{values,dtype,complexTensorInfos,slice:slice5,shape,isPacked}=texData;if(slice5!=null){let program;isPacked?program=new UnaryOpPackedProgram(shape,CLONE):program=new UnaryOpProgram(shape,CLONE);let res=this.runWebGLProgram(program,[{dataId,shape,dtype}],dtype),data=this.readSync(res.dataId);return this.disposeIntermediateTensorInfo(res),data}if(values!=null)return this.convertAndCacheOnCPU(dataId);if(dtype==="string")return values;let shouldTimeProgram=this.activeTimers!=null,start;shouldTimeProgram&&(start=util_exports.now());let result;if(dtype==="complex64"){let realValues=this.readSync(complexTensorInfos.real.dataId),imagValues=this.readSync(complexTensorInfos.imag.dataId);result=backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}else result=this.getValuesFromTexture(dataId);return shouldTimeProgram&&(this.downloadWaitMs+=util_exports.now()-start),this.convertAndCacheOnCPU(dataId,result)}async read(dataId){if(this.pendingRead.has(dataId)){let subscribers2=this.pendingRead.get(dataId);return new Promise(resolve=>subscribers2.push(resolve))}let texData=this.texData.get(dataId),{values,shape,slice:slice5,dtype,complexTensorInfos,isPacked}=texData;if(slice5!=null){let program;isPacked?program=new UnaryOpPackedProgram(shape,CLONE):program=new UnaryOpProgram(shape,CLONE);let res=this.runWebGLProgram(program,[{dataId,shape,dtype}],dtype),data=this.read(res.dataId);return this.disposeIntermediateTensorInfo(res),data}if(values!=null)return this.convertAndCacheOnCPU(dataId);if(!env().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")&&env().getNumber("WEBGL_VERSION")===2)throw new Error("tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.");let buffer2=null,tmpDownloadTarget;if(dtype!=="complex64"&&env().get("WEBGL_BUFFER_SUPPORTED")){tmpDownloadTarget=this.decode(dataId);let tmpData=this.texData.get(tmpDownloadTarget.dataId);buffer2=this.gpgpu.createBufferFromTexture(tmpData.texture,...getDenseTexShape(shape))}this.pendingRead.set(dataId,[]),dtype!=="complex64"&&await this.gpgpu.createAndWaitForFence();let vals;if(dtype==="complex64"){let ps=await Promise.all([this.read(complexTensorInfos.real.dataId),this.read(complexTensorInfos.imag.dataId)]),realValues=ps[0],imagValues=ps[1];vals=backend_util_exports.mergeRealAndImagArrays(realValues,imagValues)}else if(buffer2==null)vals=this.getValuesFromTexture(dataId);else{let size=util_exports.sizeFromShape(shape);vals=this.gpgpu.downloadFloat32MatrixFromBuffer(buffer2,size)}tmpDownloadTarget!=null&&this.disposeIntermediateTensorInfo(tmpDownloadTarget);let dTypeVals=this.convertAndCacheOnCPU(dataId,vals),subscribers=this.pendingRead.get(dataId);return this.pendingRead.delete(dataId),subscribers.forEach(resolve=>resolve(dTypeVals)),this.pendingDisposal.has(dataId)&&(this.pendingDisposal.delete(dataId),this.disposeData(dataId),this.pendingDeletes--),dTypeVals}bufferSync(t){let data=this.readSync(t.dataId),decodedData=data;if(t.dtype==="string")try{decodedData=data.map(d=>util_exports.decodeString(d))}catch(_a){throw new Error("Failed to decode encoded string bytes into utf-8")}return buffer(t.shape,t.dtype,decodedData)}checkNumericalProblems(values){if(values!=null)for(let i=0;id.query)).filter(d=>d!=null),flattenedActiveTimerNames=util_exports.flatten(this.activeTimers.map(d=>d.name)).filter(d=>d!=null);this.activeTimers=oldActiveTimers,outerMostTime&&(this.programTimersStack=null);let res={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null};if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0){let kernelMs=await Promise.all(flattenedActiveTimerQueries);res.kernelMs=util_exports.sum(kernelMs),res.getExtraProfileInfo=()=>kernelMs.map((d,i)=>({name:flattenedActiveTimerNames[i],ms:d})).map(d=>`${d.name}: ${d.ms}`).join(", ")}else res.kernelMs={error:"WebGL query timers are not supported in this environment."};return this.uploadWaitMs=0,this.downloadWaitMs=0,res}memory(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU,numBytesInGPUAllocated:this.textureManager.numBytesAllocated,numBytesInGPUFree:this.textureManager.numBytesFree}}startTimer(){return env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?this.gpgpu.beginQuery():{startMs:util_exports.now(),endMs:null}}endTimer(query){return env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?(this.gpgpu.endQuery(),query):(query.endMs=util_exports.now(),query)}async getQueryTime(query){if(env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0)return this.gpgpu.waitForQueryAndGetTime(query);let timerQuery=query;return timerQuery.endMs-timerQuery.startMs}disposeData(dataId){if(this.pendingDisposal.has(dataId))return;if(this.pendingRead.has(dataId)){this.pendingDisposal.add(dataId),this.pendingDeletes++;return}if(!this.texData.has(dataId))return;if(this.texData.get(dataId).complexParentRefCount>0){this.texData.get(dataId).refCount--;return}this.releaseGPUData(dataId);let{complexTensorInfos}=this.texData.get(dataId);complexTensorInfos!=null&&(this.texData.get(complexTensorInfos.real.dataId).complexParentRefCount--,this.disposeIntermediateTensorInfo(complexTensorInfos.real),this.texData.get(complexTensorInfos.imag.dataId).complexParentRefCount--,this.disposeIntermediateTensorInfo(complexTensorInfos.imag)),this.texData.delete(dataId)}releaseGPUData(dataId){let{texture,dtype,texShape,usage,isPacked,slice:slice5}=this.texData.get(dataId),key=slice5&&slice5.origDataId||dataId,refCount=this.dataRefCount.get(key);refCount>1?this.dataRefCount.set(key,refCount-1):(this.dataRefCount.delete(key),texture!=null&&(this.numBytesInGPU-=this.computeBytes(texShape,dtype),this.textureManager.releaseTexture(texture,texShape,usage,isPacked)));let texData=this.texData.get(dataId);texData.texture=null,texData.texShape=null,texData.isPacked=!1,texData.slice=null}getTexture(dataId){return this.uploadToGPU(dataId),this.texData.get(dataId).texture}getDataInfo(dataId){return this.texData.get(dataId)}getCPUBackend(){return env().getBool("WEBGL_CPU_FORWARD")?(this.cpuBackend==null&&(this.cpuBackend=engine().findBackend("cpu")),this.cpuBackend):null}shouldExecuteOnCPU(inputs,sizeThreshold=CPU_HANDOFF_SIZE_THRESHOLD){let cpuBackend=this.getCPUBackend();return!env().getBool("IS_TEST")&&!this.warnedAboutCPUBackend&&cpuBackend==null&&(console.warn("Your application contains ops that are small enough to be executed on the CPU backend, however the CPU backend cannot be found. Consider importing the CPU backend (@tensorflow/tfjs-backend-cpu) for better performance."),this.warnedAboutCPUBackend=!0),cpuBackend!=null&&inputs.every(input2=>this.texData.get(input2.dataId).texture==null&&util_exports.sizeFromShape(input2.shape)0&&util_exports.isString(values[0])){let encodedValues=values.map(d=>util_exports.encodeString(d));dataId=this.write(encodedValues,shape,dtype)}else dataId=this.write(values,shape,dtype);return this.texData.get(dataId).usage=null,{dataId,shape,dtype}}makeOutput(shape,dtype,values){let{dataId}=this.makeTensorInfo(shape,dtype,values);return engine().makeTensorFromDataId(dataId,shape,dtype,this)}unpackTensor(input2){let program=new UnpackProgram(input2.shape);return this.runWebGLProgram(program,[input2],input2.dtype)}packTensor(input2){let program=new PackProgram(input2.shape),preventEagerUnpackingOutput=!0;return this.runWebGLProgram(program,[input2],input2.dtype,null,preventEagerUnpackingOutput)}packedReshape(input2,afterShape){let input3DShape=[getBatchDim(input2.shape),...getRowsCols(input2.shape)],input3D={dtype:input2.dtype,shape:input3DShape,dataId:input2.dataId},afterShapeAs3D=[getBatchDim(afterShape),...getRowsCols(afterShape)],program=new ReshapePackedProgram(afterShapeAs3D,input3DShape),preventEagerUnpackingOfOutput=!0,output=this.runWebGLProgram(program,[input3D],input2.dtype,null,preventEagerUnpackingOfOutput);return{dataId:output.dataId,shape:afterShape,dtype:output.dtype}}decode(dataId){let texData=this.texData.get(dataId),{isPacked,shape,dtype}=texData,shapeAs3D=getShapeAs3D(shape),program;isPacked?program=new DecodeMatrixPackedProgram(shapeAs3D):program=new DecodeMatrixProgram(shapeAs3D);let preventEagerUnpackingOfOutput=!0,out=this.runWebGLProgram(program,[{shape:shapeAs3D,dtype,dataId}],dtype,null,preventEagerUnpackingOfOutput);return{dtype,shape,dataId:out.dataId}}runWebGLProgram(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput=!1){let output=this.makeTensorInfo(program.outputShape,outputDtype),outData=this.texData.get(output.dataId);if(program.packedOutput&&(outData.isPacked=!0),program.outPackingScheme===PackingScheme.DENSE){let texelShape=getDenseTexShape(program.outputShape);outData.texShape=texelShape.map(d=>d*2)}if(program.outTexUsage!=null&&(outData.usage=program.outTexUsage),util_exports.sizeFromShape(output.shape)===0)return outData.values=util_exports.getTypedArrayFromDType(output.dtype,0),output;let dataToDispose=[],inputsData=inputs.map(input2=>{if(input2.dtype==="complex64")throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");let texData=this.texData.get(input2.dataId);if(texData.texture==null){if(!program.packedInputs&&util_exports.sizeFromShape(input2.shape)<=env().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:input2.shape,texData:null,isUniform:!0,uniformValues:texData.values};program.packedInputs&&(texData.isPacked=!0,texData.shape=input2.shape)}else if(!!texData.isPacked!=!!program.packedInputs)input2=texData.isPacked?this.unpackTensor(input2):this.packTensor(input2),dataToDispose.push(input2),texData=this.texData.get(input2.dataId);else if(texData.isPacked&&!isReshapeFree(texData.shape,input2.shape)){let savedInput=input2,targetShape=input2.shape;input2.shape=texData.shape,input2=this.packedReshape(input2,targetShape),dataToDispose.push(input2),texData=this.texData.get(input2.dataId),savedInput.shape=targetShape}return this.uploadToGPU(input2.dataId),{shape:input2.shape,texData,isUniform:!1}});this.uploadToGPU(output.dataId);let outputData={shape:output.shape,texData:outData,isUniform:!1},key=makeShaderKey(program,inputsData,outputData),binary=this.getAndSaveBinary(key,()=>compileProgram(this.gpgpu,program,inputsData,outputData)),shouldTimeProgram=this.activeTimers!=null,query;if(shouldTimeProgram&&(query=this.startTimer()),runProgram(this.gpgpu,binary,inputsData,outputData,customSetup),dataToDispose.forEach(info=>this.disposeIntermediateTensorInfo(info)),shouldTimeProgram&&(query=this.endTimer(query),this.activeTimers.push({name:program.constructor.name,query:this.getQueryTime(query)})),!env().getBool("WEBGL_LAZILY_UNPACK")&&outData.isPacked&&preventEagerUnpackingOfOutput===!1){let unpacked=this.unpackTensor(output);return this.disposeIntermediateTensorInfo(output),unpacked}return output}compileAndRun(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput=!1){outputDtype=outputDtype||inputs[0].dtype;let outInfo=this.runWebGLProgram(program,inputs,outputDtype,customSetup,preventEagerUnpackingOfOutput);return engine().makeTensorFromDataId(outInfo.dataId,outInfo.shape,outInfo.dtype)}getAndSaveBinary(key,getBinary){return key in this.binaryCache||(this.binaryCache[key]=getBinary()),this.binaryCache[key]}getTextureManager(){return this.textureManager}dispose(){this.disposed||(env().getBool("IS_TEST")||Object.keys(this.binaryCache).forEach(key=>{this.gpgpu.deleteProgram(this.binaryCache[key].webGLProgram),delete this.binaryCache[key]}),this.textureManager.dispose(),this.canvas!=null&&typeof HTMLCanvasElement!="undefined"&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0)}floatPrecision(){return this.floatPrecisionValue==null&&(this.floatPrecisionValue=tidy(()=>{if(!env().get("WEBGL_RENDER_FLOAT32_ENABLED")){let debugFlag=env().getBool("DEBUG");env().set("DEBUG",!1);let underflowCheckValue=this.abs(scalar(1e-8)).dataSync()[0];if(env().set("DEBUG",debugFlag),underflowCheckValue>0)return 32}return 16})),this.floatPrecisionValue}epsilon(){return this.floatPrecision()===32?EPSILON_FLOAT322:EPSILON_FLOAT162}uploadToGPU(dataId){let texData=this.texData.get(dataId),{shape,dtype,values,texture,usage,isPacked}=texData;if(texture!=null)return;let shouldTimeProgram=this.activeTimers!=null,start;shouldTimeProgram&&(start=util_exports.now());let texShape=texData.texShape;if(texShape==null&&(texShape=getTextureShapeFromLogicalShape(shape,isPacked),texData.texShape=texShape),values!=null){let shapeAs3D=getShapeAs3D(shape),program,width=texShape[1],height=texShape[0],isByteArray=values instanceof Uint8Array;isPacked?([width,height]=getPackedMatrixTextureShapeWidthHeight(texShape[0],texShape[1]),program=new EncodeMatrixPackedProgram(shapeAs3D,[height,width],isByteArray)):program=new EncodeMatrixProgram(shapeAs3D,[height,width],isByteArray);let tempDenseInputHandle=this.makeTensorInfo([height,width],dtype);isByteArray?this.texData.get(tempDenseInputHandle.dataId).usage=TextureUsage.PIXELS:this.texData.get(tempDenseInputHandle.dataId).usage=TextureUsage.UPLOAD,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(tempDenseInputHandle.dataId),width,height,values);let preventEagerUnpacking=!0,encodedOutputTarget=this.runWebGLProgram(program,[tempDenseInputHandle],dtype,null,preventEagerUnpacking),outputTexData=this.texData.get(encodedOutputTarget.dataId);texData.texture=outputTexData.texture,texData.texShape=outputTexData.texShape,texData.isPacked=outputTexData.isPacked,texData.usage=outputTexData.usage,this.disposeIntermediateTensorInfo(tempDenseInputHandle),this.texData.delete(encodedOutputTarget.dataId),texData.values=null,shouldTimeProgram&&(this.uploadWaitMs+=util_exports.now()-start)}else{let newTexture=this.acquireTexture(texShape,usage,dtype,isPacked);texData.texture=newTexture}}convertAndCacheOnCPU(dataId,float32Values){let texData=this.texData.get(dataId),{dtype}=texData;return this.releaseGPUData(dataId),float32Values!=null&&(texData.values=float32ToTypedArray(float32Values,dtype)),texData.values}acquireTexture(texShape,texType,dtype,isPacked){if(this.numBytesInGPU+=this.computeBytes(texShape,dtype),!this.warnedAboutMemory&&this.numBytesInGPU>this.numMBBeforeWarning*1024*1024){let mb=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn(`High memory usage in GPU: ${mb} MB, most likely due to a memory leak`)}return this.textureManager.acquireTexture(texShape,texType,isPacked)}computeBytes(shape,dtype){return shape[0]*shape[1]*util_exports.bytesPerElement(dtype)}};function float32ToTypedArray(a,dtype){if(dtype==="float32"||dtype==="complex64")return a;if(dtype==="int32"||dtype==="bool"){let result=dtype==="int32"?new Int32Array(a.length):new Uint8Array(a.length);for(let i=0;inew MathBackendWebGL,2);var CHECK_NAN_SNIPPET2=` + `}};var ZY=Er.whereImpl,JY=1e-7,QY=1e-4,Fx={};function e7(r){return r in Fx||(Fx[r]={}),Fx[r]}var t7=128,r7=600;function o7(){return W().global.screen==null?1024:W().global.screen.height*W().global.screen.width*window.devicePixelRatio*r7/1024/1024}var Bk=class extends Ws{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.warnedAboutMemory=!1,this.warnedAboutCPUBackend=!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=Go(W().getNumber("WEBGL_VERSION"));this.binaryCache=e7(W().getNumber("WEBGL_VERSION")),this.gpgpu=new Fk(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 Mk(this.gpgpu),this.numMBBeforeWarning=o7(),this.texData=new Ja(this,Cs())}numDataIds(){return this.texData.numDataIds()+(this.cpuBackend?this.cpuBackend.numDataIds():0)-this.pendingDeletes}write(e,t,o){if((W().getBool("WEBGL_CHECK_NUMERICAL_PROBLEMS")||W().getBool("DEBUG"))&&this.checkNumericalProblems(e),o==="complex64"&&e!=null)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");let n={};return this.texData.set(n,{shape:t,dtype:o,values:e,usage:Dr.UPLOAD,refCount:1,complexParentRefCount:0}),n}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,o,n){if(W().getBool("DEBUG")&&this.checkNumericalProblems(t),n==="complex64")throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");this.texData.set(e,{shape:o,dtype:n,values:t,usage:Dr.UPLOAD,refCount:1,complexParentRefCount:0})}disposeIntermediateTensorInfo(e){let t=e.dataId;if(this.texData.has(t)){let o=this.texData.get(t);o.refCount--,o.refCount<1&&this.disposeData(t)}}readSync(e){let t=this.texData.get(e),{values:o,dtype:n,complexTensorInfos:s,slice:a,shape:i,isPacked:l}=t;if(a!=null){let m;l?m=new zs(i,rh):m=new mo(i,rh);let f=this.runWebGLProgram(m,[{dataId:e,shape:i,dtype:n}],n),d=this.readSync(f.dataId);return this.disposeIntermediateTensorInfo(f),d}if(o!=null)return this.convertAndCacheOnCPU(e);if(n==="string")return o;let u=this.activeTimers!=null,c;u&&(c=x.now());let p;if(n==="complex64"){let m=this.readSync(s.real.dataId),f=this.readSync(s.imag.dataId);p=S.mergeRealAndImagArrays(m,f)}else p=this.getValuesFromTexture(e);return u&&(this.downloadWaitMs+=x.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:o,shape:n,slice:s,dtype:a,complexTensorInfos:i,isPacked:l}=t;if(s!=null){let d;l?d=new zs(n,rh):d=new mo(n,rh);let h=this.runWebGLProgram(d,[{dataId:e,shape:n,dtype:a}],a),g=this.read(h.dataId);return this.disposeIntermediateTensorInfo(h),g}if(o!=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,...Sl(n))}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=S.mergeRealAndImagArrays(h,g)}else if(u==null)p=this.getValuesFromTexture(e);else{let d=x.sizeFromShape(n);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),this.pendingDeletes--),m}bufferSync(e){let t=this.readSync(e.dataId),o=t;if(e.dtype==="string")try{o=t.map(n=>x.decodeString(n))}catch(n){throw new Error("Failed to decode encoded string bytes into utf-8")}return Ie(e.shape,e.dtype,o)}checkNumericalProblems(e){if(e!=null)for(let t=0;tl.query)).filter(l=>l!=null),a=x.flatten(this.activeTimers.map(l=>l.name)).filter(l=>l!=null);this.activeTimers=t,n&&(this.programTimersStack=null);let i={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null};if(W().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0){let l=await Promise.all(s);i.kernelMs=x.sum(l),i.getExtraProfileInfo=()=>l.map((u,c)=>({name:a[c],ms:u})).map(u=>`${u.name}: ${u.ms}`).join(", ")}else i.kernelMs={error:"WebGL query timers are not supported in this environment."};return this.uploadWaitMs=0,this.downloadWaitMs=0,i}memory(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU,numBytesInGPUAllocated:this.textureManager.numBytesAllocated,numBytesInGPUFree:this.textureManager.numBytesFree}}startTimer(){return W().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?this.gpgpu.beginQuery():{startMs:x.now(),endMs:null}}endTimer(e){return W().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?(this.gpgpu.endQuery(),e):(e.endMs=x.now(),e)}async getQueryTime(e){if(W().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0)return this.gpgpu.waitForQueryAndGetTime(e);let t=e;return t.endMs-t.startMs}disposeData(e){if(this.pendingDisposal.has(e))return;if(this.pendingRead.has(e)){this.pendingDisposal.add(e),this.pendingDeletes++;return}if(!this.texData.has(e))return;if(this.texData.get(e).complexParentRefCount>0){this.texData.get(e).refCount--;return}this.releaseGPUData(e);let{complexTensorInfos:t}=this.texData.get(e);t!=null&&(this.texData.get(t.real.dataId).complexParentRefCount--,this.disposeIntermediateTensorInfo(t.real),this.texData.get(t.imag.dataId).complexParentRefCount--,this.disposeIntermediateTensorInfo(t.imag)),this.texData.delete(e)}releaseGPUData(e){let{texture:t,dtype:o,texShape:n,usage:s,isPacked:a,slice:i}=this.texData.get(e),l=i&&i.origDataId||e,u=this.dataRefCount.get(l);u>1?this.dataRefCount.set(l,u-1):(this.dataRefCount.delete(l),t!=null&&(this.numBytesInGPU-=this.computeBytes(n,o),this.textureManager.releaseTexture(t,n,s,a)));let c=this.texData.get(e);c.texture=null,c.texShape=null,c.isPacked=!1,c.slice=null}getTexture(e){return this.uploadToGPU(e),this.texData.get(e).texture}getDataInfo(e){return this.texData.get(e)}getCPUBackend(){return W().getBool("WEBGL_CPU_FORWARD")?(this.cpuBackend==null&&(this.cpuBackend=Cs().findBackend("cpu")),this.cpuBackend):null}shouldExecuteOnCPU(e,t=t7){let o=this.getCPUBackend();return!W().getBool("IS_TEST")&&!this.warnedAboutCPUBackend&&o==null&&(console.warn("Your application contains ops that are small enough to be executed on the CPU backend, however the CPU backend cannot be found. Consider importing the CPU backend (@tensorflow/tfjs-backend-cpu) for better performance."),this.warnedAboutCPUBackend=!0),o!=null&&e.every(n=>this.texData.get(n.dataId).texture==null&&x.sizeFromShape(n.shape)0&&x.isString(o[0])){let s=o.map(a=>x.encodeString(a));n=this.write(s,e,t)}else n=this.write(o,e,t);return this.texData.get(n).usage=null,{dataId:n,shape:e,dtype:t}}makeOutput(e,t,o){let{dataId:n}=this.makeTensorInfo(e,t,o);return Cs().makeTensorFromDataId(n,e,t,this)}unpackTensor(e){let t=new zk(e.shape);return this.runWebGLProgram(t,[e],e.dtype)}packTensor(e){let t=new Pk(e.shape),o=!0;return this.runWebGLProgram(t,[e],e.dtype,null,o)}packedReshape(e,t){let o=[Tl(e.shape),...El(e.shape)],n={dtype:e.dtype,shape:o,dataId:e.dataId},s=[Tl(t),...El(t)],a=new th(s,o),i=!0,l=this.runWebGLProgram(a,[n],e.dtype,null,i);return{dataId:l.dataId,shape:t,dtype:l.dtype}}decode(e){let t=this.texData.get(e),{isPacked:o,shape:n,dtype:s}=t,a=Ex(n),i;o?i=new Ck(a):i=new kk(a);let l=!0,u=this.runWebGLProgram(i,[{shape:a,dtype:s,dataId:e}],s,null,l);return{dtype:s,shape:n,dataId:u.dataId}}runWebGLProgram(e,t,o,n,s=!1){let a=this.makeTensorInfo(e.outputShape,o),i=this.texData.get(a.dataId);if(e.packedOutput&&(i.isPacked=!0),e.outPackingScheme===Nl.DENSE){let h=Sl(e.outputShape);i.texShape=h.map(g=>g*2)}if(e.outTexUsage!=null&&(i.usage=e.outTexUsage),x.sizeFromShape(a.shape)===0)return i.values=x.getTypedArrayFromDType(a.dtype,0),a;let l=[],u=t.map(h=>{if(h.dtype==="complex64")throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");let g=this.texData.get(h.dataId);if(g.texture==null){if(!e.packedInputs&&x.sizeFromShape(h.shape)<=W().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:h.shape,texData:null,isUniform:!0,uniformValues:g.values};e.packedInputs&&(g.isPacked=!0,g.shape=h.shape)}else if(!!g.isPacked!=!!e.packedInputs)h=g.isPacked?this.unpackTensor(h):this.packTensor(h),l.push(h),g=this.texData.get(h.dataId);else if(g.isPacked&&!uc(g.shape,h.shape)){let y=h,b=h.shape;h.shape=g.shape,h=this.packedReshape(h,b),l.push(h),g=this.texData.get(h.dataId),y.shape=b}return this.uploadToGPU(h.dataId),{shape:h.shape,texData:g,isUniform:!1}});this.uploadToGPU(a.dataId);let c={shape:a.shape,texData:i,isUniform:!1},p=iR(e,u,c),m=this.getAndSaveBinary(p,()=>oR(this.gpgpu,e,u,c)),f=this.activeTimers!=null,d;if(f&&(d=this.startTimer()),sR(this.gpgpu,m,u,c,n),l.forEach(h=>this.disposeIntermediateTensorInfo(h)),f&&(d=this.endTimer(d),this.activeTimers.push({name:e.constructor.name,query:this.getQueryTime(d)})),!W().getBool("WEBGL_LAZILY_UNPACK")&&i.isPacked&&s===!1){let h=this.unpackTensor(a);return this.disposeIntermediateTensorInfo(a),h}return a}compileAndRun(e,t,o,n,s=!1){o=o||t[0].dtype;let a=this.runWebGLProgram(e,t,o,n,s);return Cs().makeTensorFromDataId(a.dataId,a.shape,a.dtype)}getAndSaveBinary(e,t){return e in this.binaryCache||(this.binaryCache[e]=t()),this.binaryCache[e]}getTextureManager(){return this.textureManager}dispose(){this.disposed||(W().getBool("IS_TEST")||Object.keys(this.binaryCache).forEach(t=>{this.gpgpu.deleteProgram(this.binaryCache[t].webGLProgram),delete this.binaryCache[t]}),this.textureManager.dispose(),this.canvas!=null&&typeof HTMLCanvasElement!="undefined"&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0)}floatPrecision(){return this.floatPrecisionValue==null&&(this.floatPrecisionValue=V(()=>{if(!W().get("WEBGL_RENDER_FLOAT32_ENABLED")){let e=W().getBool("DEBUG");W().set("DEBUG",!1);let t=this.abs(ce(1e-8)).dataSync()[0];if(W().set("DEBUG",e),t>0)return 32}return 16})),this.floatPrecisionValue}epsilon(){return this.floatPrecision()===32?JY:QY}uploadToGPU(e){let t=this.texData.get(e),{shape:o,dtype:n,values:s,texture:a,usage:i,isPacked:l}=t;if(a!=null)return;let u=this.activeTimers!=null,c;u&&(c=x.now());let p=t.texShape;if(p==null&&(p=A$(o,l),t.texShape=p),s!=null){let m=Ex(o),f,d=p[1],h=p[0],g=s instanceof Uint8Array;l?([d,h]=Ki(p[0],p[1]),f=new Tk(m,[h,d],g)):f=new Sk(m,[h,d],g);let y=this.makeTensorInfo([h,d],n);g?this.texData.get(y.dataId).usage=Dr.PIXELS:this.texData.get(y.dataId).usage=Dr.UPLOAD,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(y.dataId),d,h,s);let b=!0,_=this.runWebGLProgram(f,[y],n,null,b),w=this.texData.get(_.dataId);t.texture=w.texture,t.texShape=w.texShape,t.isPacked=w.isPacked,t.usage=w.usage,this.disposeIntermediateTensorInfo(y),this.texData.delete(_.dataId),t.values=null,u&&(this.uploadWaitMs+=x.now()-c)}else{let m=this.acquireTexture(p,i,n,l);t.texture=m}}convertAndCacheOnCPU(e,t){let o=this.texData.get(e),{dtype:n}=o;return this.releaseGPUData(e),t!=null&&(o.values=n7(t,n)),o.values}acquireTexture(e,t,o,n){if(this.numBytesInGPU+=this.computeBytes(e,o),!this.warnedAboutMemory&&this.numBytesInGPU>this.numMBBeforeWarning*1024*1024){let s=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn(`High memory usage in GPU: ${s} MB, most likely due to a memory leak`)}return this.textureManager.acquireTexture(e,t,n)}computeBytes(e,t){return e[0]*e[1]*x.bytesPerElement(t)}};function n7(r,e){if(e==="float32"||e==="complex64")return r;if(e==="int32"||e==="bool"){let t=e==="int32"?new Int32Array(r.length):new Uint8Array(r.length);for(let o=0;onew Bk,2);var Ox=` if (isnan(a)) return a; if (isnan(b)) return b; -`;var BinaryOpProgram=class{constructor(op2,aShape,bShape){this.variableNames=["A","B"],this.outputShape=backend_util_exports.assertAndGetBroadcastShape(aShape,bShape),this.userCode=` +`;var ts=class{constructor(e,t,o){this.variableNames=["A","B"],this.outputShape=S.assertAndGetBroadcastShape(t,o),this.userCode=` float binaryOperation(float a, float b) { - ${op2} + ${e} } void main() { @@ -964,32 +964,32 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, float b = getBAtOutCoords(); setOutput(binaryOperation(a, b)); } - `}};var CHECK_NAN_SNIPPET3=` + `}};var Al=` result.r = isNaN.r > 0. ? NAN : result.r; result.g = isNaN.g > 0. ? NAN : result.g; result.b = isNaN.b > 0. ? NAN : result.b; result.a = isNaN.a > 0. ? NAN : result.a; -`;var BinaryOpPackedProgram=class{constructor(op2,aShape,bShape,checkOutOfBounds=!1){this.variableNames=["A","B"],this.supportsBroadcasting=!0,this.packedInputs=!0,this.packedOutput=!0,this.outputShape=backend_util_exports.assertAndGetBroadcastShape(aShape,bShape);let rank=this.outputShape.length,checkOutOfBoundsString="";if(checkOutOfBounds)if(rank===0||util_exports.sizeFromShape(this.outputShape)===1)checkOutOfBoundsString=` +`;var Bs=class{constructor(e,t,o,n=!1){this.variableNames=["A","B"],this.supportsBroadcasting=!0,this.packedInputs=!0,this.packedOutput=!0,this.outputShape=S.assertAndGetBroadcastShape(t,o);let s=this.outputShape.length,a="";if(n)if(s===0||x.sizeFromShape(this.outputShape)===1)a=` result.y = 0.; result.z = 0.; result.w = 0.; - `;else if(checkOutOfBoundsString=` - ${getCoordsDataType(rank)} coords = getOutputCoords(); - `,rank===1)checkOutOfBoundsString+=` + `;else if(a=` + ${Be(s)} coords = getOutputCoords(); + `,s===1)a+=` result.y = (coords + 1) >= ${this.outputShape[0]} ? 0. : result.y; result.z = 0.; result.w = 0.; - `;else{let channels=getChannels("coords",rank);checkOutOfBoundsString+=` + `;else{let l=qt("coords",s);a+=` bool nextRowOutOfBounds = - (${channels[rank-2]} + 1) >= ${this.outputShape[rank-2]}; + (${l[s-2]} + 1) >= ${this.outputShape[s-2]}; bool nextColOutOfBounds = - (${channels[rank-1]} + 1) >= ${this.outputShape[rank-1]}; + (${l[s-1]} + 1) >= ${this.outputShape[s-1]}; result.y = nextColOutOfBounds ? 0. : result.y; result.z = nextRowOutOfBounds ? 0. : result.z; result.w = nextColOutOfBounds || nextRowOutOfBounds ? 0. : result.w; `}this.userCode=` vec4 binaryOperation(vec4 a, vec4 b) { - ${op2} + ${e} } void main() { @@ -997,49 +997,49 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, vec4 b = getBAtOutCoords(); vec4 result = binaryOperation(a, b); - ${checkOutOfBoundsString} + ${a} setOutput(result); } - `}};function identity3(args){let{inputs,backend:backend2}=args,{x}=inputs;return backend2.incRef(x.dataId),{dataId:x.dataId,shape:x.shape,dtype:x.dtype}}var identityConfig2={kernelName:Identity,backendName:"webgl",kernelFunc:identity3};function complex3(args){let{inputs,backend:backend2}=args,{real:real4,imag:imag4}=inputs,complexInfo=backend2.makeTensorInfo(real4.shape,"complex64"),complex4=backend2.texData.get(complexInfo.dataId),realTensorInfo=identity3({inputs:{x:real4},backend:backend2}),realData=backend2.texData.get(realTensorInfo.dataId);realData.complexParentRefCount++;let imagTensorInfo=identity3({inputs:{x:imag4},backend:backend2}),imagData=backend2.texData.get(imagTensorInfo.dataId);return imagData.complexParentRefCount++,complex4.complexTensorInfos={real:realTensorInfo,imag:imagTensorInfo},complexInfo}var complexConfig2={kernelName:Complex,backendName:"webgl",kernelFunc:complex3};var LEAKYRELU="return (a < 0.) ? b * a : a;",LEAKYRELU_PACKED=` + `}};function Ht(r){let{inputs:e,backend:t}=r,{x:o}=e;return t.incRef(o.dataId),{dataId:o.dataId,shape:o.shape,dtype:o.dtype}}var qR={kernelName:cs,backendName:"webgl",kernelFunc:Ht};function fo(r){let{inputs:e,backend:t}=r,{real:o,imag:n}=e,s=t.makeTensorInfo(o.shape,"complex64"),a=t.texData.get(s.dataId),i=Ht({inputs:{x:o},backend:t}),l=t.texData.get(i.dataId);l.complexParentRefCount++;let u=Ht({inputs:{x:n},backend:t}),c=t.texData.get(u.dataId);return c.complexParentRefCount++,a.complexTensorInfos={real:i,imag:u},s}var HR={kernelName:Xl,backendName:"webgl",kernelFunc:fo};var Vk="return (a < 0.) ? b * a : a;",Wk=` vec4 aLessThanZero = vec4(lessThan(a, vec4(0.))); return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a); -`;function leakyRelu3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{alpha}=attrs,$alpha=backend2.makeTensorInfo([],"float32",util_exports.createScalarValue(alpha,"float32")),program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(LEAKYRELU_PACKED,x.shape,$alpha.shape):new BinaryOpProgram(LEAKYRELU,x.shape,$alpha.shape),result=backend2.runWebGLProgram(program,[x,$alpha],x.dtype);return backend2.disposeIntermediateTensorInfo($alpha),result}var leakyReluConfig2={kernelName:LeakyRelu,backendName:"webgl",kernelFunc:leakyRelu3};var PRELU="return (a < 0.) ? b * a : a;",PRELU_PACKED=` +`;function s7(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{alpha:s}=o,a=t.makeTensorInfo([],"float32",x.createScalarValue(s,"float32")),i=W().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Bs(Wk,n.shape,a.shape):new ts(Vk,n.shape,a.shape),l=t.runWebGLProgram(i,[n,a],n.dtype);return t.disposeIntermediateTensorInfo(a),l}var KR={kernelName:un,backendName:"webgl",kernelFunc:s7};var Gk="return (a < 0.) ? b * a : a;",Uk=` vec4 aLessThanZero = vec4(lessThan(a, vec4(0.))); return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a); -`;function prelu4(args){let{inputs,backend:backend2}=args,{x,alpha}=inputs,program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(PRELU_PACKED,x.shape,alpha.shape):new BinaryOpProgram(PRELU,x.shape,alpha.shape);return backend2.runWebGLProgram(program,[x,alpha],x.dtype)}var preluConfig2={kernelName:Prelu,backendName:"webgl",kernelFunc:prelu4};var CHECK_NAN_SNIPPET_UNARY="if (isnan(x)) return x;",CHECK_NAN_SNIPPET_BINARY=` +`;function i7(r){let{inputs:e,backend:t}=r,{x:o,alpha:n}=e,s=W().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Bs(Uk,o.shape,n.shape):new ts(Gk,o.shape,n.shape);return t.runWebGLProgram(s,[o,n],o.dtype)}var XR={kernelName:wn,backendName:"webgl",kernelFunc:i7};var Px="if (isnan(x)) return x;",YR=` if (isnan(a)) return a; if (isnan(b)) return b; -`,CHECK_NAN_SNIPPET_BINARY_PACKED=` +`,ZR=` result.r = isNaN.r > 0. ? NAN : result.r; result.g = isNaN.g > 0. ? NAN : result.g; result.b = isNaN.b > 0. ? NAN : result.b; result.a = isNaN.a > 0. ? NAN : result.a; -`;function unaryKernelFunc2({opSnippet,packedOpSnippet,cpuKernelImpl,dtype}){return({inputs,backend:backend2})=>{let{x}=inputs,webglBackend=backend2,$dtype=dtype||x.dtype;if(webglBackend.shouldExecuteOnCPU([x])&&cpuKernelImpl!=null){let xData=webglBackend.texData.get(x.dataId),outValues=cpuKernelImpl(xData.values,$dtype);return webglBackend.makeTensorInfo(x.shape,$dtype,outValues)}let shouldUsePackedProgram=env().getBool("WEBGL_PACK_UNARY_OPERATIONS")&&packedOpSnippet!=null,program;return shouldUsePackedProgram?program=new UnaryOpPackedProgram(x.shape,packedOpSnippet):program=new UnaryOpProgram(x.shape,opSnippet),webglBackend.runWebGLProgram(program,[x],$dtype)}}function binaryKernelFunc2({opSnippet,packedOpSnippet,checkOutOfBounds=!1,supportsComplex=!1,cpuKernelImpl,dtype}){return({inputs,backend:backend2})=>{let{a,b}=inputs,webglBackend=backend2;if(supportsComplex&&a.dtype==="complex64"){let aData=webglBackend.texData.get(a.dataId),bData=webglBackend.texData.get(b.dataId),[real4,imag4]=[[aData.complexTensorInfos.real,bData.complexTensorInfos.real],[aData.complexTensorInfos.imag,bData.complexTensorInfos.imag]].map(complexParts=>{let[aPart,bPart]=complexParts,aHandle={dataId:aPart.dataId,dtype:aPart.dtype,shape:a.shape},bHandle={dataId:bPart.dataId,dtype:bPart.dtype,shape:b.shape},program2=new BinaryOpProgram(opSnippet,a.shape,b.shape);return webglBackend.runWebGLProgram(program2,[aHandle,bHandle],upcastType(aPart.dtype,bPart.dtype))}),complexOutput=complex3({inputs:{real:real4,imag:imag4},backend:webglBackend});return webglBackend.disposeIntermediateTensorInfo(real4),webglBackend.disposeIntermediateTensorInfo(imag4),complexOutput}let $dtype=dtype||upcastType(a.dtype,b.dtype);if(webglBackend.shouldExecuteOnCPU([a,b])&&cpuKernelImpl!=null){let aData=webglBackend.texData.get(a.dataId),bData=webglBackend.texData.get(b.dataId),[outValues,outShape]=cpuKernelImpl(a.shape,b.shape,aData.values,bData.values,$dtype),out=webglBackend.makeTensorInfo(outShape,$dtype),outData=webglBackend.texData.get(out.dataId);return outData.values=outValues,out}let shouldUsePackedProgram=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")&&packedOpSnippet!=null,program;return shouldUsePackedProgram?program=new BinaryOpPackedProgram(packedOpSnippet,a.shape,b.shape,checkOutOfBounds):program=new BinaryOpProgram(opSnippet,a.shape,b.shape),webglBackend.runWebGLProgram(program,[a,b],$dtype)}}function mapActivationToShaderProgram(activation2,packed=!1){if(activation2==="linear")return packed?LINEAR2:LINEAR;if(activation2==="relu")return packed?RELU2:RELU;if(activation2==="elu")return packed?ELU3:ELU2;if(activation2==="relu6")return packed?RELU62:RELU6;if(activation2==="prelu")return packed?PRELU_PACKED:PRELU;if(activation2==="leakyrelu")return packed?LEAKYRELU_PACKED:LEAKYRELU;throw new Error(`Activation ${activation2} has not been implemented for the WebGL backend.`)}var MatMulPackedProgram=class{constructor(aShape,bShape,outputShape,transposeA=!1,transposeB=!1,addBias=!1,activation2=null,hasPreluActivation=!1,hasLeakyreluActivation=!1){this.variableNames=["matrixA","matrixB"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=outputShape;let sharedDim=transposeA?aShape[1]:aShape[2],sharedDimensionPacked=Math.ceil(sharedDim/2),aSample=transposeA?"i * 2, rc.y":"rc.y, i * 2",bSample=transposeB?"rc.z, i * 2":"i * 2, rc.z",aSwizzle=transposeA?["a.xxyy","a.zzww"]:["a.xxzz","a.yyww"],bSwizzle=transposeB?["b.xzxz","b.ywyw"]:["b.xyxy","b.zwzw"],activationSnippet="",applyActivationSnippet="";activation2&&(hasPreluActivation?activationSnippet=`vec4 activation(vec4 a) { +`;function Ce({opSnippet:r,packedOpSnippet:e,cpuKernelImpl:t,dtype:o}){return({inputs:n,backend:s})=>{let{x:a}=n,i=s,l=o||a.dtype;if(i.shouldExecuteOnCPU([a])&&t!=null){let p=i.texData.get(a.dataId),m=t(p.values,l);return i.makeTensorInfo(a.shape,l,m)}let u=W().getBool("WEBGL_PACK_UNARY_OPERATIONS")&&e!=null,c;return u?c=new zs(a.shape,e):c=new mo(a.shape,r),i.runWebGLProgram(c,[a],l)}}function at({opSnippet:r,packedOpSnippet:e,checkOutOfBounds:t=!1,supportsComplex:o=!1,cpuKernelImpl:n,dtype:s}){return({inputs:a,backend:i})=>{let{a:l,b:u}=a,c=i;if(o&&l.dtype==="complex64"){let d=c.texData.get(l.dataId),h=c.texData.get(u.dataId),[g,y]=[[d.complexTensorInfos.real,h.complexTensorInfos.real],[d.complexTensorInfos.imag,h.complexTensorInfos.imag]].map(_=>{let[w,k]=_,$={dataId:w.dataId,dtype:w.dtype,shape:l.shape},T={dataId:k.dataId,dtype:k.dtype,shape:u.shape},F=new ts(r,l.shape,u.shape);return c.runWebGLProgram(F,[$,T],fr(w.dtype,k.dtype))}),b=fo({inputs:{real:g,imag:y},backend:c});return c.disposeIntermediateTensorInfo(g),c.disposeIntermediateTensorInfo(y),b}let p=s||fr(l.dtype,u.dtype);if(c.shouldExecuteOnCPU([l,u])&&n!=null){let d=c.texData.get(l.dataId),h=c.texData.get(u.dataId),[g,y]=n(l.shape,u.shape,d.values,h.values,p),b=c.makeTensorInfo(y,p),_=c.texData.get(b.dataId);return _.values=g,b}let m=W().getBool("WEBGL_PACK_BINARY_OPERATIONS")&&e!=null,f;return m?f=new Bs(e,l.shape,u.shape,t):f=new ts(r,l.shape,u.shape),c.runWebGLProgram(f,[l,u],p)}}function Dl(r,e=!1){if(r==="linear")return e?VR:MR;if(r==="relu")return e?GR:zR;if(r==="elu")return e?WR:LR;if(r==="relu6")return e?UR:BR;if(r==="prelu")return e?Uk:Gk;if(r==="leakyrelu")return e?Wk:Vk;throw new Error(`Activation ${r} has not been implemented for the WebGL backend.`)}var oh=class{constructor(e,t,o,n=!1,s=!1,a=!1,i=null,l=!1,u=!1){this.variableNames=["matrixA","matrixB"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=o;let c=n?e[1]:e[2],p=Math.ceil(c/2),m=n?"i * 2, rc.y":"rc.y, i * 2",f=s?"rc.z, i * 2":"i * 2, rc.z",d=n?["a.xxyy","a.zzww"]:["a.xxzz","a.yyww"],h=s?["b.xzxz","b.ywyw"]:["b.xyxy","b.zwzw"],g="",y="";i&&(l?g=`vec4 activation(vec4 a) { vec4 b = getPreluActivationWeightsAtOutCoords(); - ${activation2} - }`:hasLeakyreluActivation?activationSnippet=`vec4 activation(vec4 a) { + ${i} + }`:u?g=`vec4 activation(vec4 a) { vec4 b = getLeakyreluAlphaAtOutCoords(); - ${activation2} - }`:activationSnippet=`vec4 activation(vec4 x) { - ${activation2} - }`,applyActivationSnippet="result = activation(result);");let addBiasSnippet=addBias?"result += getBiasAtOutCoords();":"";addBias&&this.variableNames.push("bias"),hasPreluActivation&&this.variableNames.push("preluActivationWeights"),hasLeakyreluActivation&&this.variableNames.push("leakyreluAlpha");let batchASnippet="rc.x",batchBSnippet="rc.x";aShape[0]`The new shape (${$shape}) has ${$xSize} elements and the old shape (${x.shape}) has ${xSize} elements. The new shape and old shape must have the same number of elements.`);let xTexData=webglBackend.texData.get(x.dataId);return xTexData.isPacked&&!isReshapeFree(x.shape,$shape)&&!(xTexData.texture!==null&&isReshapeFree(xTexData.shape,$shape))?packedReshape(x,$shape,webglBackend):(webglBackend.incRef(x.dataId),{dataId:x.dataId,shape:$shape,dtype:x.dtype})}var reshapeConfig2={kernelName:Reshape,backendName:"webgl",kernelFunc:reshape4};var MeanProgram=class{constructor(reduceInfo,divisor){this.variableNames=["x"];let{windowSize,batchSize,inSize,outSize}=reduceInfo;this.outputShape=[batchSize,outSize];let windowSizeNearestVec4=Math.floor(windowSize/4)*4,windowSizeVec4Remainder=windowSize%4,updateSnippet="sumValue += dot(values, ones);";if(divisor!=null){let denominator=1/divisor;updateSnippet=`sumValue += dot(values * ${util_exports.isInt(denominator)?denominator.toPrecision(2):denominator}, ones);`}let checkOutOfBounds="";inSize%windowSize>0&&(checkOutOfBounds=` - if (inIdx < 0 || inIdx >= ${inSize}) { + `}};var JR="return a * b;";function qk(r){let{inputs:e,backend:t}=r,{a:o,b:n}=e,s=S.upcastType(o.dtype,n.dtype);if(o.dtype==="complex64"){let i=t.texData.get(o.dataId),l=t.texData.get(n.dataId),u=new Mx(jk.REAL,o.shape,n.shape),c=new Mx(jk.IMAG,o.shape,n.shape),p=[{dataId:i.complexTensorInfos.real.dataId,dtype:i.complexTensorInfos.real.dtype,shape:o.shape},{dataId:i.complexTensorInfos.imag.dataId,dtype:i.complexTensorInfos.imag.dtype,shape:o.shape},{dataId:l.complexTensorInfos.real.dataId,dtype:l.complexTensorInfos.real.dtype,shape:n.shape},{dataId:l.complexTensorInfos.imag.dataId,dtype:l.complexTensorInfos.imag.dtype,shape:n.shape}],m=t.runWebGLProgram(u,p,"float32"),f=t.runWebGLProgram(c,p,"float32"),d=fo({inputs:{real:m,imag:f},backend:t});return t.disposeIntermediateTensorInfo(m),t.disposeIntermediateTensorInfo(f),d}if(t.shouldExecuteOnCPU([o,n])){let i=t.texData.get(o.dataId),l=t.texData.get(n.dataId),[u,c]=vR(o.shape,n.shape,i.values,l.values,s),p=t.makeTensorInfo(c,s),m=t.texData.get(p.dataId);return m.values=u,p}let a;return W().getBool("WEBGL_PACK_BINARY_OPERATIONS")?a=new Bs(JR,o.shape,n.shape):a=new ts(JR,o.shape,n.shape),t.runWebGLProgram(a,[o,n],s)}var QR={kernelName:xn,backendName:"webgl",kernelFunc:qk};function eF(r,e,t){let o=[Tl(r.shape),...El(r.shape)],n={dtype:r.dtype,shape:o,dataId:r.dataId},s=[Tl(e),...El(e)],a=new th(s,o),i=!0,l=t.runWebGLProgram(a,[n],r.dtype,null,i);return{dataId:l.dataId,shape:e,dtype:l.dtype}}function me(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{shape:s}=o,a=t,i=x.sizeFromShape(n.shape),l=x.inferFromImplicitShape(s,i),u=x.sizeFromShape(l);x.assert(i===u,()=>`The new shape (${l}) has ${u} elements and the old shape (${n.shape}) has ${i} elements. The new shape and old shape must have the same number of elements.`);let c=a.texData.get(n.dataId);return c.isPacked&&!uc(n.shape,l)&&!(c.texture!==null&&uc(c.shape,l))?eF(n,l,a):(a.incRef(n.dataId),{dataId:n.dataId,shape:l,dtype:n.dtype})}var tF={kernelName:ds,backendName:"webgl",kernelFunc:me};var Lx=class{constructor(e,t){this.variableNames=["x"];let{windowSize:o,batchSize:n,inSize:s,outSize:a}=e;this.outputShape=[n,a];let i=Math.floor(o/4)*4,l=o%4,u="sumValue += dot(values, ones);";if(t!=null){let p=1/t;u=`sumValue += dot(values * ${x.isInt(p)?p.toPrecision(2):p}, ones);`}let c="";s%o>0&&(c=` + if (inIdx < 0 || inIdx >= ${s}) { return 0.0; } `),this.userCode=` const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0); float getValue(int batch, int inIdx) { - ${checkOutOfBounds} + ${c} return getX(batch, inIdx); } @@ -1083,11 +1083,11 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, ivec2 coords = getOutputCoords(); int batch = coords[0]; int outIdx = coords[1]; - int inOffset = outIdx * ${windowSize}; + int inOffset = outIdx * ${o}; float sumValue = 0.0; - for (int i = 0; i < ${windowSizeNearestVec4}; i += 4) { + for (int i = 0; i < ${i}; i += 4) { int inIdx = inOffset + i; vec4 values = vec4( getValue(batch, inIdx), @@ -1096,57 +1096,57 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, getValue(batch, inIdx + 3) ); - ${updateSnippet} + ${u} } - int inIdx = inOffset + ${windowSizeNearestVec4}; - if (${windowSizeVec4Remainder===1}) { + int inIdx = inOffset + ${i}; + if (${l===1}) { vec4 values = vec4(getValue(batch, inIdx), 0.0, 0.0, 0.0); - ${updateSnippet} - } else if (${windowSizeVec4Remainder===2}) { + ${u} + } else if (${l===2}) { vec4 values = vec4( getValue(batch, inIdx), getValue(batch, inIdx + 1), 0.0, 0.0); - ${updateSnippet} - } else if (${windowSizeVec4Remainder===3}) { + ${u} + } else if (${l===3}) { vec4 values = vec4( getValue(batch, inIdx), getValue(batch, inIdx + 1), getValue(batch, inIdx + 2), 0.0); - ${updateSnippet} + ${u} } setOutput(sumValue); } - `}};var ReduceProgram=class{constructor(reduceInfo,reduceType){this.variableNames=["x"];let{windowSize,batchSize,inSize,outSize}=reduceInfo;this.outputShape=[batchSize,outSize];let initializationValue="0.0",compareOp="";reduceType==="prod"?initializationValue="1.0":reduceType==="min"?(initializationValue="1.0 / 1e-20",compareOp="min"):reduceType==="max"&&(initializationValue="-1.0 / 1e-20",compareOp="max");let returnValue=`${reduceType}(${reduceType}(${reduceType}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;reduceType==="sum"?returnValue="sumValue":reduceType==="prod"?returnValue="prodValue":reduceType==="all"?returnValue="allValue":reduceType==="any"&&(returnValue="anyValue");let windowSizeNearestVec4=Math.floor(windowSize/4)*4,windowSizeVec4Remainder=windowSize%4,updateSnippet=` - if (${reduceType==="sum"}) { + `}};var Hk=class{constructor(e,t){this.variableNames=["x"];let{windowSize:o,batchSize:n,inSize:s,outSize:a}=e;this.outputShape=[n,a];let i="0.0",l="";t==="prod"?i="1.0":t==="min"?(i="1.0 / 1e-20",l="min"):t==="max"&&(i="-1.0 / 1e-20",l="max");let u=`${t}(${t}(${t}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;t==="sum"?u="sumValue":t==="prod"?u="prodValue":t==="all"?u="allValue":t==="any"&&(u="anyValue");let c=Math.floor(o/4)*4,p=o%4,m=` + if (${t==="sum"}) { sumValue += dot(values, ones); - } else if (${reduceType==="prod"}) { + } else if (${t==="prod"}) { vec2 tmp = vec2(values[0], values[1]) * vec2(values[2], values[3]); prodValue *= tmp[0] * tmp[1]; } else { - minMaxValue = ${compareOp}(values, minMaxValue); + minMaxValue = ${l}(values, minMaxValue); } - `,vecType="vec4";reduceType==="all"?(initializationValue="1.0",updateSnippet=` + `,f="vec4";t==="all"?(i="1.0",m=` bool reducedAllValue = all(values); float floatedReducedAllValue = float(reducedAllValue); allValue = float(allValue >= 1.0 && floatedReducedAllValue >= 1.0); - `,vecType="bvec4"):reduceType==="any"&&(initializationValue="0.0",updateSnippet=` + `,f="bvec4"):t==="any"&&(i="0.0",m=` bool reducedAnyValue = any(values); float floatedReducedAnyValue = float(reducedAnyValue); anyValue = float(anyValue >= 1.0 || floatedReducedAnyValue >= 1.0); - `,vecType="bvec4");let checkOutOfBounds="";inSize%windowSize>0&&(checkOutOfBounds=` - if (inIdx < 0 || inIdx >= ${inSize}) { + `,f="bvec4");let d="";s%o>0&&(d=` + if (inIdx < 0 || inIdx >= ${s}) { return initializationValue; } `),this.userCode=` - const float initializationValue = ${initializationValue}; + const float initializationValue = ${i}; const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0); float getValue(int batch, int inIdx) { - ${checkOutOfBounds} + ${d} return getX(batch, inIdx); } @@ -1154,174 +1154,174 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, ivec2 coords = getOutputCoords(); int batch = coords[0]; int outIdx = coords[1]; - int inOffset = outIdx * ${windowSize}; + int inOffset = outIdx * ${o}; - vec4 minMaxValue = vec4(${initializationValue}); + vec4 minMaxValue = vec4(${i}); float prodValue = 1.0; float sumValue = 0.0; float allValue = 1.0; float anyValue = 0.0; - for (int i = 0; i < ${windowSizeNearestVec4}; i += 4) { + for (int i = 0; i < ${c}; i += 4) { int inIdx = inOffset + i; - ${vecType} values = ${vecType}( + ${f} values = ${f}( getValue(batch, inIdx), getValue(batch, inIdx + 1), getValue(batch, inIdx + 2), getValue(batch, inIdx + 3) ); - ${updateSnippet} + ${m} } - int inIdx = inOffset + ${windowSizeNearestVec4}; - if (${windowSizeVec4Remainder===1}) { - ${vecType} values = ${vecType}( + int inIdx = inOffset + ${c}; + if (${p===1}) { + ${f} values = ${f}( getValue(batch, inIdx), initializationValue, initializationValue, initializationValue ); - ${updateSnippet} - } else if (${windowSizeVec4Remainder===2}) { - ${vecType} values = ${vecType}( + ${m} + } else if (${p===2}) { + ${f} values = ${f}( getValue(batch, inIdx), getValue(batch, inIdx + 1), initializationValue, initializationValue ); - ${updateSnippet} - } else if (${windowSizeVec4Remainder===3}) { - ${vecType} values = ${vecType}( + ${m} + } else if (${p===3}) { + ${f} values = ${f}( getValue(batch, inIdx), getValue(batch, inIdx + 1), getValue(batch, inIdx + 2), initializationValue ); - ${updateSnippet} + ${m} } - setOutput(${returnValue}); + setOutput(${u}); } - `}};function getReductionStages(inShape){let stages=[];for(;stages.length===0||stages[stages.length-1].outSize!==1;){let outSize=stages.length?stages[stages.length-1].outSize:inShape[1],windowSize=backend_util_exports.computeOptimalWindowSize(outSize);stages.push({inSize:outSize,windowSize,outSize:Math.ceil(outSize/windowSize)})}return stages}function reduce(x,dtype,reductionType,backend2){let reductionStages=getReductionStages(x.shape),result=x;for(let i=0;i6)throw Error(`Transpose for rank ${rank} is not yet supported`);let originalOrder=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u","resRC.v"],switchedCoords=new Array(rank);for(let i=0;i6)throw Error(`Packed transpose for rank ${this.rank} is not yet supported.`);let dtype=getCoordsDataType(this.rank),outputOrder=getVecChannels("rc",this.rank),switchedOrder=new Array(this.rank);for(let i=0;i6)throw Error(`Transpose for rank ${e} is not yet supported`);let t=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u","resRC.v"],o=new Array(e);for(let n=0;n6)throw Error(`Packed transpose for rank ${this.rank} is not yet supported.`);let n=Be(this.rank),s=Ok("rc",this.rank),a=new Array(this.rank);for(let c=0;c=2&&bRank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`);let outShape=(batchDimA>batchDimB?a.shape.slice(0,-2):b.shape.slice(0,-2)).concat([outerShapeA,outerShapeB]);util_exports.assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${a.shape} and ${b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let a3dShape=transposeA?[batchDimA,innerShapeA,outerShapeA]:[batchDimA,outerShapeA,innerShapeA],b3dShape=transposeB?[batchDimB,outerShapeB,innerShapeB]:[batchDimB,innerShapeB,outerShapeB],a3d=reshape4({inputs:{x:a},backend:backend2,attrs:{shape:a3dShape}}),b3d=reshape4({inputs:{x:b},backend:backend2,attrs:{shape:b3dShape}}),intermediates=[a3d,b3d],batchDim=Math.max(batchDimA,batchDimB),sharedDim=transposeA?a3d.shape[1]:a3d.shape[2],hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,hasLeakyreluAlpha=activation2==="leakyrelu",fusedActivation=activation2!=null?mapActivationToShaderProgram(activation2,!0):null,containsFusedOps=hasBias||hasPreluActivationWeights||hasLeakyreluAlpha||fusedActivation!=null,out;if((outerShapeA===1||outerShapeB===1)&&sharedDim>MATMUL_SHARED_DIM_THRESHOLD&&containsFusedOps===!1){let aVec=a3d,bVec=b3d;transposeA&&(aVec=transpose3({inputs:{x:a3d},backend:backend2,attrs:{perm:[0,2,1]}}),intermediates.push(aVec)),transposeB&&(bVec=transpose3({inputs:{x:b3d},backend:backend2,attrs:{perm:[0,2,1]}}),intermediates.push(bVec));let shouldReshapeA=outerShapeB!==1,shouldReshapeB=outerShapeB===1,aVec3d=aVec;shouldReshapeA&&(aVec3d=reshape4({inputs:{x:aVec},backend:backend2,attrs:{shape:[batchDim,sharedDim,1]}}),intermediates.push(aVec3d));let axis=outerShapeB===1?2:1,bVec3d=bVec;shouldReshapeB&&(bVec3d=reshape4({inputs:{x:bVec},backend:backend2,attrs:{shape:[batchDim,1,sharedDim]}}),intermediates.push(bVec3d));let product=multiply3({inputs:{a:aVec3d,b:bVec3d},backend:backend2});out=sum4({inputs:{x:product},backend:backend2,attrs:{axis,keepDims:!0}}),intermediates.push(product)}else{let dtype=upcastType(a.dtype,b.dtype),program=new MatMulPackedProgram(a3dShape,b3dShape,[batchDim,outerShapeA,outerShapeB],transposeA,transposeB,hasBias,fusedActivation,hasPreluActivationWeights,hasLeakyreluAlpha),inputs=[a3d,b3d];if(bias!=null&&inputs.push(bias),hasPreluActivationWeights&&inputs.push(preluActivationWeights),hasLeakyreluAlpha){let $leakyreluAlpha=backend2.makeTensorInfo([],"float32",util_exports.createScalarValue(leakyreluAlpha,"float32"));inputs.push($leakyreluAlpha),intermediates.push($leakyreluAlpha)}out=backend2.runWebGLProgram(program,inputs,dtype)}let outReshaped=reshape4({inputs:{x:out},backend:backend2,attrs:{shape:outShape}});intermediates.push(out);for(let i of intermediates)backend2.disposeIntermediateTensorInfo(i);return outReshaped}function _fusedMatMul2(args){let{inputs,backend:backend2,attrs}=args,{a,b,bias,preluActivationWeights}=inputs,{transposeA,transposeB,activation:activation2,leakyreluAlpha}=attrs;return batchMatMulImpl({a,b,transposeA,transposeB,backend:backend2,bias,preluActivationWeights,leakyreluAlpha,activation:activation2})}var _fusedMatMulConfig2={kernelName:_FusedMatMul,backendName:"webgl",kernelFunc:_fusedMatMul2};var ABS2="return abs(x);";function abs3(args){let{inputs,backend:backend2}=args,{x}=inputs;if(backend2.shouldExecuteOnCPU([x])&&x.dtype!=="complex64"){let xData=backend2.texData.get(x.dataId),outValues=simpleAbsImplCPU(xData.values);return backend2.makeTensorInfo(x.shape,x.dtype,outValues)}let program;return env().getBool("WEBGL_PACK_UNARY_OPERATIONS")?program=new UnaryOpPackedProgram(x.shape,ABS2):program=new UnaryOpProgram(x.shape,ABS2),backend2.runWebGLProgram(program,[x],x.dtype)}var absConfig2={kernelName:Abs,backendName:"webgl",kernelFunc:abs3};var ACOS=CHECK_NAN_SNIPPET+` + `}};function $l(r,e,t){let o=W().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new Xk(r.shape,e):new Kk(r.shape,e);return t.runWebGLProgram(o,[r],r.dtype)}function rF(r,e,t,o){let n=e,s=r.shape.length,a=x.parseAxisParam(n,r.shape),i=a,l=S.getAxesPermutation(i,s),u=l!=null,c=r;u&&(c=$l(r,l,o),i=S.getInnerMostAxes(i.length,s)),S.assertAxesAreInnerMostDims("sum",i,s);let[p,m]=S.computeOutAndReduceShapes(c.shape,i),f=p;t&&(f=S.expandShapeToKeepDim(p,a));let d=x.sizeFromShape(m),g=x.sizeFromShape(r.shape)/d,y=me({inputs:{x:c},attrs:{shape:[g,d]},backend:o}),b=yu(r.dtype),_=So(y,b,"sum",o),w=me({inputs:{x:_},attrs:{shape:f},backend:o});return o.disposeIntermediateTensorInfo(y),o.disposeIntermediateTensorInfo(_),u&&o.disposeIntermediateTensorInfo(c),w}function nh(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{axis:s,keepDims:a}=o;return rF(n,s,a,t)}var oF={kernelName:Dn,backendName:"webgl",kernelFunc:nh};function Bt(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{perm:s}=o,a=t,i=n.shape.length,l=new Array(i);for(let c=0;c=2&&c>=2&&_,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${h}) and (${g}).`);let k=(y>b?r.shape.slice(0,-2):e.shape.slice(0,-2)).concat([f,d]);x.assert(p===m,()=>`Error in matMul: inner shapes (${p}) and (${m}) of Tensors with shapes ${r.shape} and ${e.shape} and transposeA=${t} and transposeB=${o} must match.`);let $=t?[y,p,f]:[y,f,p],T=o?[b,d,m]:[b,m,d],F=me({inputs:{x:r},backend:n,attrs:{shape:$}}),M=me({inputs:{x:e},backend:n,attrs:{shape:T}}),L=[F,M],G=Math.max(y,b),H=t?F.shape[1]:F.shape[2],U=s!=null,Z=a!=null,K=l==="leakyrelu",X=l!=null?Dl(l,!0):null,oe=U||Z||K||X!=null,J;if((f===1||d===1)&&H>Yk&&oe===!1){let ie=F,ae=M;t&&(ie=Bt({inputs:{x:F},backend:n,attrs:{perm:[0,2,1]}}),L.push(ie)),o&&(ae=Bt({inputs:{x:M},backend:n,attrs:{perm:[0,2,1]}}),L.push(ae));let ue=d!==1,le=d===1,ge=ie;ue&&(ge=me({inputs:{x:ie},backend:n,attrs:{shape:[G,H,1]}}),L.push(ge));let we=d===1?2:1,ye=ae;le&&(ye=me({inputs:{x:ae},backend:n,attrs:{shape:[G,1,H]}}),L.push(ye));let ke=qk({inputs:{a:ge,b:ye},backend:n});J=nh({inputs:{x:ke},backend:n,attrs:{axis:we,keepDims:!0}}),L.push(ke)}else{let ie=fr(r.dtype,e.dtype),ae=new oh($,T,[G,f,d],t,o,U,X,Z,K),ue=[F,M];if(s!=null&&ue.push(s),Z&&ue.push(a),K){let le=n.makeTensorInfo([],"float32",x.createScalarValue(i,"float32"));ue.push(le),L.push(le)}J=n.runWebGLProgram(ae,ue,ie)}let Q=me({inputs:{x:J},backend:n,attrs:{shape:k}});L.push(J);for(let ie of L)n.disposeIntermediateTensorInfo(ie);return Q}function u7(r){let{inputs:e,backend:t,attrs:o}=r,{a:n,b:s,bias:a,preluActivationWeights:i}=e,{transposeA:l,transposeB:u,activation:c,leakyreluAlpha:p}=o;return pc({a:n,b:s,transposeA:l,transposeB:u,backend:t,bias:a,preluActivationWeights:i,leakyreluAlpha:p,activation:c})}var sF={kernelName:_s,backendName:"webgl",kernelFunc:u7};var iF="return abs(x);";function c7(r){let{inputs:e,backend:t}=r,{x:o}=e;if(t.shouldExecuteOnCPU([o])&&o.dtype!=="complex64"){let s=t.texData.get(o.dataId),a=Rx(s.values);return t.makeTensorInfo(o.shape,o.dtype,a)}let n;return W().getBool("WEBGL_PACK_UNARY_OPERATIONS")?n=new zs(o.shape,iF):n=new mo(o.shape,iF),t.runWebGLProgram(n,[o],o.dtype)}var aF={kernelName:is,backendName:"webgl",kernelFunc:c7};var p7=xr+` if (abs(x) > 1.) { return NAN; } return acos(x); -`,acos3=unaryKernelFunc2({opSnippet:ACOS}),acosConfig2={kernelName:Acos,backendName:"webgl",kernelFunc:acos3};var ACOSH=CHECK_NAN_SNIPPET+` +`,m7=Ce({opSnippet:p7}),lF={kernelName:js,backendName:"webgl",kernelFunc:m7};var f7=xr+` if (x < 1.0) return NAN; -return log(x + sqrt(x * x - 1.0));`,acosh3=unaryKernelFunc2({opSnippet:ACOSH}),acoshConfig2={kernelName:Acosh,backendName:"webgl",kernelFunc:acosh3};var ADD="return a + b;",addKernelFunc=binaryKernelFunc2({opSnippet:ADD,packedOpSnippet:ADD,supportsComplex:!0,cpuKernelImpl:addImplCPU}),addConfig2={kernelName:Add,backendName:"webgl",kernelFunc:addKernelFunc};var AddNProgram=class{constructor(outputShape,shapes){this.outputShape=[],this.outputShape=outputShape,this.variableNames=shapes.map((_,i)=>`T${i}`);let snippets=[];this.variableNames.forEach(variable2=>{snippets.push(`float v${variable2} = get${variable2}AtOutCoords();`)});let operation=this.variableNames.map(variable2=>`v${variable2}`).join(" + ");this.userCode=` +return log(x + sqrt(x * x - 1.0));`,d7=Ce({opSnippet:f7}),uF={kernelName:qs,backendName:"webgl",kernelFunc:d7};var cF="return a + b;",h7=at({opSnippet:cF,packedOpSnippet:cF,supportsComplex:!0,cpuKernelImpl:aR}),pF={kernelName:bo,backendName:"webgl",kernelFunc:h7};var Zk=class{constructor(e,t){this.outputShape=[],this.outputShape=e,this.variableNames=t.map((s,a)=>`T${a}`);let o=[];this.variableNames.forEach(s=>{o.push(`float v${s} = get${s}AtOutCoords();`)});let n=this.variableNames.map(s=>`v${s}`).join(" + ");this.userCode=` void main() { - ${snippets.join(` + ${o.join(` `)} - float result = ${operation}; + float result = ${n}; setOutput(result); } - `}};var AddNPackedProgram=class{constructor(outputShape,shapes){this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=outputShape,this.variableNames=shapes.map((_,i)=>`T${i}`);let snippets=[];this.variableNames.forEach(variable2=>{snippets.push(`vec4 v${variable2} = get${variable2}AtOutCoords();`)});let operation=this.variableNames.map(variable2=>`v${variable2}`).join(" + ");this.userCode=` + `}};var Jk=class{constructor(e,t){this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.variableNames=t.map((s,a)=>`T${a}`);let o=[];this.variableNames.forEach(s=>{o.push(`vec4 v${s} = get${s}AtOutCoords();`)});let n=this.variableNames.map(s=>`v${s}`).join(" + ");this.userCode=` void main() { - ${snippets.join(` + ${o.join(` `)} - vec4 result = ${operation}; + vec4 result = ${n}; setOutput(result); } - `}};function addN3(args){let{inputs,backend:backend2}=args,tensors=inputs;if(tensors.length===1)return identity3({inputs:{x:tensors[0]},backend:backend2});if(tensors.length>env().get("WEBGL_MAX_TEXTURES_IN_SHADER")){let midIndex=Math.floor(tensors.length/2),leftSide=addN3({inputs:tensors.slice(0,midIndex),backend:backend2}),rightSide=addN3({inputs:tensors.slice(midIndex),backend:backend2});return addN3({inputs:[leftSide,rightSide],backend:backend2})}let dtype=tensors.map(t=>t.dtype).reduce((d1,d2)=>upcastType(d1,d2)),shapes=tensors.map(t=>t.shape),program=env().getBool("WEBGL_PACK")?new AddNPackedProgram(tensors[0].shape,shapes):new AddNProgram(tensors[0].shape,shapes);return backend2.runWebGLProgram(program,tensors,dtype)}var addNConfig2={kernelName:AddN,backendName:"webgl",kernelFunc:addN3};function all3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{axis,keepDims}=attrs,xRank=x.shape.length,origAxes=util_exports.parseAxisParam(axis,x.shape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),permutedX=x;permutedAxes!=null&&(permutedX=transpose3({inputs:{x},backend:backend2,attrs:{perm:permutedAxes}}),axes=backend_util_exports.getInnerMostAxes(axes.length,xRank)),backend_util_exports.assertAxesAreInnerMostDims("all",axes,xRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(permutedX.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=reshape4({inputs:{x:permutedX},backend:backend2,attrs:{shape:[-1,inSize]}}),reduced=reduce(a2D,a2D.dtype,"all",backend2),res;if(keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(outShape,origAxes);res=reshape4({inputs:{x:reduced},backend:backend2,attrs:{shape:newShape}})}else res=reshape4({inputs:{x:reduced},backend:backend2,attrs:{shape:outShape}});return backend2.disposeIntermediateTensorInfo(a2D),backend2.disposeIntermediateTensorInfo(reduced),permutedAxes!=null&&backend2.disposeIntermediateTensorInfo(permutedX),res}var allConfig2={kernelName:All,backendName:"webgl",kernelFunc:all3};function any3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{axis,keepDims}=attrs,xRank=x.shape.length,origAxes=util_exports.parseAxisParam(axis,x.shape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),permutedX=x;permutedAxes!=null&&(permutedX=transpose3({inputs:{x},backend:backend2,attrs:{perm:permutedAxes}}),axes=backend_util_exports.getInnerMostAxes(axes.length,xRank)),backend_util_exports.assertAxesAreInnerMostDims("any",axes,xRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(permutedX.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=reshape4({inputs:{x:permutedX},backend:backend2,attrs:{shape:[-1,inSize]}}),reduced=reduce(a2D,a2D.dtype,"any",backend2),res;if(keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(outShape,origAxes);res=reshape4({inputs:{x:reduced},backend:backend2,attrs:{shape:newShape}})}else res=reshape4({inputs:{x:reduced},backend:backend2,attrs:{shape:outShape}});return backend2.disposeIntermediateTensorInfo(a2D),backend2.disposeIntermediateTensorInfo(reduced),permutedAxes!=null&&backend2.disposeIntermediateTensorInfo(permutedX),res}var anyConfig2={kernelName:Any,backendName:"webgl",kernelFunc:any3};var ArgMinMaxProgram=class{constructor(reduceInfo,op2,firstPass){this.variableNames=["A"];let{windowSize,batchSize,outSize}=reduceInfo;firstPass||this.variableNames.push("bestIndicesA"),this.outputShape=[batchSize,outSize];let compOp=op2==="max"?">":"<",indexSnippet=firstPass?"inOffset + i;":"round(getBestIndicesA(batch, inOffset + i));";this.userCode=` + `}};function zx(r){let{inputs:e,backend:t}=r,o=e;if(o.length===1)return Ht({inputs:{x:o[0]},backend:t});if(o.length>W().get("WEBGL_MAX_TEXTURES_IN_SHADER")){let l=Math.floor(o.length/2),u=zx({inputs:o.slice(0,l),backend:t}),c=zx({inputs:o.slice(l),backend:t});return zx({inputs:[u,c],backend:t})}let n=o.map(l=>l.dtype).reduce((l,u)=>fr(l,u)),s=o.map(l=>l.shape),i=W().getBool("WEBGL_PACK")?new Jk(o[0].shape,s):new Zk(o[0].shape,s);return t.runWebGLProgram(i,o,n)}var mF={kernelName:Ho,backendName:"webgl",kernelFunc:zx};function g7(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{axis:s,keepDims:a}=o,i=n.shape.length,l=x.parseAxisParam(s,n.shape),u=l,c=S.getAxesPermutation(u,i),p=n;c!=null&&(p=Bt({inputs:{x:n},backend:t,attrs:{perm:c}}),u=S.getInnerMostAxes(u.length,i)),S.assertAxesAreInnerMostDims("all",u,i);let[m,f]=S.computeOutAndReduceShapes(p.shape,u),d=x.sizeFromShape(f),h=me({inputs:{x:p},backend:t,attrs:{shape:[-1,d]}}),g=So(h,h.dtype,"all",t),y;if(a){let b=S.expandShapeToKeepDim(m,l);y=me({inputs:{x:g},backend:t,attrs:{shape:b}})}else y=me({inputs:{x:g},backend:t,attrs:{shape:m}});return t.disposeIntermediateTensorInfo(h),t.disposeIntermediateTensorInfo(g),c!=null&&t.disposeIntermediateTensorInfo(p),y}var fF={kernelName:Ul,backendName:"webgl",kernelFunc:g7};function x7(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{axis:s,keepDims:a}=o,i=n.shape.length,l=x.parseAxisParam(s,n.shape),u=l,c=S.getAxesPermutation(u,i),p=n;c!=null&&(p=Bt({inputs:{x:n},backend:t,attrs:{perm:c}}),u=S.getInnerMostAxes(u.length,i)),S.assertAxesAreInnerMostDims("any",u,i);let[m,f]=S.computeOutAndReduceShapes(p.shape,u),d=x.sizeFromShape(f),h=me({inputs:{x:p},backend:t,attrs:{shape:[-1,d]}}),g=So(h,h.dtype,"any",t),y;if(a){let b=S.expandShapeToKeepDim(m,l);y=me({inputs:{x:g},backend:t,attrs:{shape:b}})}else y=me({inputs:{x:g},backend:t,attrs:{shape:m}});return t.disposeIntermediateTensorInfo(h),t.disposeIntermediateTensorInfo(g),c!=null&&t.disposeIntermediateTensorInfo(p),y}var dF={kernelName:jl,backendName:"webgl",kernelFunc:x7};var Qk=class{constructor(e,t,o){this.variableNames=["A"];let{windowSize:n,batchSize:s,outSize:a}=e;o||this.variableNames.push("bestIndicesA"),this.outputShape=[s,a];let i=t==="max"?">":"<",l=o?"inOffset + i;":"round(getBestIndicesA(batch, inOffset + i));";this.userCode=` void main() { ivec2 coords = getOutputCoords(); int batch = coords[0]; int outIdx = coords[1]; - int inOffset = outIdx * ${windowSize}; + int inOffset = outIdx * ${n}; int bestIndex = inOffset; float bestValue = getA(batch, bestIndex); - for (int i = 0; i < ${windowSize}; i++) { - int inIdx = ${indexSnippet}; + for (int i = 0; i < ${n}; i++) { + int inIdx = ${l}; float candidate = getA(batch, inIdx); - if (candidate ${compOp} bestValue) { + if (candidate ${i} bestValue) { bestValue = candidate; bestIndex = inIdx; } } setOutput(float(bestIndex)); } - `}};var ArgMinMaxPackedProgram=class{constructor(shape,windowSize,op2,firstPass){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,util_exports.assert(shape.length>2,()=>`Packed arg${op2.charAt(0).toUpperCase()+op2.slice(1)} supports only inputs with rank above 2.`);let inSize=shape[shape.length-1],outSize=Math.ceil(inSize/windowSize);this.outputShape=shape.slice(0,-1),outSize>1&&this.outputShape.push(outSize),firstPass||this.variableNames.push("bestIndicesA");let outShape=this.outputShape,rank=outShape.length,dtype=getCoordsDataType(rank),coords2=getChannels("coords",rank),sourceLocSetup,sourceRank;if(outSize===1){sourceRank=rank+1;let sourceLocDType=getCoordsDataType(sourceRank);sourceLocSetup=` - ${sourceLocDType} sourceLocR = ${sourceLocDType}(${coords2.join()}, 0); - ++${coords2[rank-1]}; - ${sourceLocDType} sourceLocG = ${sourceLocDType}(${coords2.join()}, 0); - ++${coords2[rank-2]}; - ${sourceLocDType} sourceLocA = ${sourceLocDType}(${coords2.join()}, 0); - --${coords2[rank-1]}; - ${sourceLocDType} sourceLocB = ${sourceLocDType}(${coords2.join()}, 0); - --${coords2[rank-2]};`}else sourceRank=rank,sourceLocSetup=` - ${dtype} sourceLocR = coords; - ++${coords2[rank-1]}; - ${dtype} sourceLocG = coords; - ++${coords2[rank-2]}; - ${dtype} sourceLocA = coords; - --${coords2[rank-1]}; - ${dtype} sourceLocB = coords; - --${coords2[rank-2]};`;let channels=["x","y","z","w","u","v"].slice(0,sourceRank),inChannel="."+channels[sourceRank-1],intChannels=channels.map(x=>"int "+x),srcRCoords=getChannels("sourceLocR",sourceRank-1).concat("inIdx.r"),srcGCoords=getChannels("sourceLocG",sourceRank-1).concat("inIdx.g"),srcBCoords=getChannels("sourceLocB",sourceRank-1).concat("inIdx.b"),srcACoords=getChannels("sourceLocA",sourceRank-1).concat("inIdx.a"),compOp=op2==="max"?"greaterThan":"lessThan",fetchCandidateIdx=firstPass?"":` - inIdx = round(vec4(getBestIndicesAChannel(${srcRCoords.join()}), - getBestIndicesAChannel(${srcGCoords.join()}), - getBestIndicesAChannel(${srcBCoords.join()}), - getBestIndicesAChannel(${srcACoords.join()})));`,fetchValue=`vec4( - getAChannel(${srcRCoords.join()}), - hasNextCol ? getAChannel(${srcGCoords.join()}) : 0., - hasNextRow ? getAChannel(${srcBCoords.join()}) : 0., - hasNextRow && hasNextCol ? getAChannel(${srcACoords.join()}) : 0.)`,getBestIndicesAChannelSnippet=firstPass?"":` - float getBestIndicesAChannel(${intChannels.join()}) { - return getChannel(getBestIndicesA(${channels.join()}), - vec2(${channels.slice(-2).join()})); + `}};var eC=class{constructor(e,t,o,n){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,x.assert(e.length>2,()=>`Packed arg${o.charAt(0).toUpperCase()+o.slice(1)} supports only inputs with rank above 2.`);let s=e[e.length-1],a=Math.ceil(s/t);this.outputShape=e.slice(0,-1),a>1&&this.outputShape.push(a),n||this.variableNames.push("bestIndicesA");let i=this.outputShape,l=i.length,u=Be(l),c=qt("coords",l),p,m;if(a===1){m=l+1;let F=Be(m);p=` + ${F} sourceLocR = ${F}(${c.join()}, 0); + ++${c[l-1]}; + ${F} sourceLocG = ${F}(${c.join()}, 0); + ++${c[l-2]}; + ${F} sourceLocA = ${F}(${c.join()}, 0); + --${c[l-1]}; + ${F} sourceLocB = ${F}(${c.join()}, 0); + --${c[l-2]};`}else m=l,p=` + ${u} sourceLocR = coords; + ++${c[l-1]}; + ${u} sourceLocG = coords; + ++${c[l-2]}; + ${u} sourceLocA = coords; + --${c[l-1]}; + ${u} sourceLocB = coords; + --${c[l-2]};`;let f=["x","y","z","w","u","v"].slice(0,m),d="."+f[m-1],h=f.map(F=>"int "+F),g=qt("sourceLocR",m-1).concat("inIdx.r"),y=qt("sourceLocG",m-1).concat("inIdx.g"),b=qt("sourceLocB",m-1).concat("inIdx.b"),_=qt("sourceLocA",m-1).concat("inIdx.a"),w=o==="max"?"greaterThan":"lessThan",k=n?"":` + inIdx = round(vec4(getBestIndicesAChannel(${g.join()}), + getBestIndicesAChannel(${y.join()}), + getBestIndicesAChannel(${b.join()}), + getBestIndicesAChannel(${_.join()})));`,$=`vec4( + getAChannel(${g.join()}), + hasNextCol ? getAChannel(${y.join()}) : 0., + hasNextRow ? getAChannel(${b.join()}) : 0., + hasNextRow && hasNextCol ? getAChannel(${_.join()}) : 0.)`,T=n?"":` + float getBestIndicesAChannel(${h.join()}) { + return getChannel(getBestIndicesA(${f.join()}), + vec2(${f.slice(-2).join()})); }`;this.userCode=` - float getAChannel(${intChannels.join()}) { - return getChannel(getA(${channels.join()}), - vec2(${channels.slice(-2).join()})); + float getAChannel(${h.join()}) { + return getChannel(getA(${f.join()}), + vec2(${f.slice(-2).join()})); } - ${getBestIndicesAChannelSnippet} + ${T} void main() { - ${dtype} coords = getOutputCoords(); - bool hasNextCol = ${coords2[rank-1]} < ${outShape[rank-1]-1}; - bool hasNextRow = ${coords2[rank-2]} < ${outShape[rank-2]-1}; - ${sourceLocSetup} - ivec4 srcIdx = ivec4(sourceLocR${inChannel}, sourceLocG${inChannel}, - sourceLocB${inChannel}, sourceLocA${inChannel}) * ${windowSize}; + ${u} coords = getOutputCoords(); + bool hasNextCol = ${c[l-1]} < ${i[l-1]-1}; + bool hasNextRow = ${c[l-2]} < ${i[l-2]-1}; + ${p} + ivec4 srcIdx = ivec4(sourceLocR${d}, sourceLocG${d}, + sourceLocB${d}, sourceLocA${d}) * ${t}; ivec4 inIdx = srcIdx; vec4 bestIndex = vec4(inIdx); - vec4 bestValue = ${fetchValue}; + vec4 bestValue = ${$}; - for (int i = 0; i < ${windowSize}; i++) { + for (int i = 0; i < ${t}; i++) { inIdx = srcIdx; - ${fetchCandidateIdx} - vec4 candidate = ${fetchValue}; + ${k} + vec4 candidate = ${$}; bvec4 nan = isnan(candidate); bvec4 replace = bvec4( - vec4(${compOp}(candidate, bestValue)) * (vec4(1.0) - vec4(nan))); + vec4(${w}(candidate, bestValue)) * (vec4(1.0) - vec4(nan))); bestValue = vec4(replace.x ? candidate.x : bestValue.x, replace.y ? candidate.y : bestValue.y, @@ -1332,25 +1332,25 @@ return log(x + sqrt(x * x - 1.0));`,acosh3=unaryKernelFunc2({opSnippet:ACOSH}),a } setOutput(bestIndex); } - `}};function argReduce(backend2,x,reduceType,bestIndicesA=null){let batchSize=x.shape[0],inSize=x.shape[1];bestIndicesA!=null&&(batchSize=bestIndicesA.shape[0],inSize=bestIndicesA.shape[1]);let windowSize=backend_util_exports.computeOptimalWindowSize(inSize),reduceInfo={windowSize,inSize,batchSize,outSize:Math.ceil(inSize/windowSize)},program=new ArgMinMaxProgram(reduceInfo,reduceType,bestIndicesA==null),inputs=[x];bestIndicesA!=null&&inputs.push(bestIndicesA);let output=backend2.runWebGLProgram(program,inputs,"int32");if(output.shape[1]===1)return output;let result=argReduce(backend2,x,reduceType,output);return backend2.disposeIntermediateTensorInfo(output),result}function argReducePacked(backend2,x,reduceType,bestIndicesA=null){let inShape=bestIndicesA!=null?bestIndicesA.shape:x.shape,inSize=inShape[inShape.length-1],windowSize=backend_util_exports.computeOptimalWindowSize(inSize),program=new ArgMinMaxPackedProgram(inShape,windowSize,reduceType,bestIndicesA==null),inputs=bestIndicesA==null?[x]:[x,bestIndicesA],output=backend2.runWebGLProgram(program,inputs,"int32");if(output.shape.length===x.shape.length){let result=argReducePacked(backend2,x,reduceType,output);return backend2.disposeIntermediateTensorInfo(output),result}return output}function argMinMaxReduce(backend2,x,axis,reduceType){let axes=[axis];if(backend_util_exports.assertAxesAreInnerMostDims("arg"+reduceType.charAt(0).toUpperCase()+reduceType.slice(1),axes,x.shape.length),!env().getBool("WEBGL_PACK_REDUCE")||x.shape.length<=2){let intermediateTensorInfos=[],[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(x.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=reshape4({inputs:{x},backend:backend2,attrs:{shape:[-1,inSize]}});intermediateTensorInfos.push(a2D);let reduced=argReduce(backend2,a2D,reduceType);intermediateTensorInfos.push(reduced);let reshaped=reshape4({inputs:{x:reduced},backend:backend2,attrs:{shape:outShape}});return intermediateTensorInfos.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),reshaped}return argReducePacked(backend2,x,reduceType)}function argMax3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{axis}=attrs,axes=util_exports.parseAxisParam(axis,x.shape),permutedAxes=backend_util_exports.getAxesPermutation(axes,x.shape.length),$x=x,intermediateTensorInfos=[];permutedAxes!=null&&($x=transpose3({inputs:{x},backend:backend2,attrs:{perm:permutedAxes}}),intermediateTensorInfos.push($x),axes=backend_util_exports.getInnerMostAxes(axes.length,$x.shape.length)),backend_util_exports.assertAxesAreInnerMostDims("argMax",[axes[0]],$x.shape.length);let out=argMinMaxReduce(backend2,$x,axes[0],"max");return intermediateTensorInfos.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),out}var argMaxConfig2={kernelName:ArgMax,backendName:"webgl",kernelFunc:argMax3};function argMin3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{axis}=attrs,axes=util_exports.parseAxisParam(axis,x.shape),permutedAxes=backend_util_exports.getAxesPermutation(axes,x.shape.length),$x=x,intermediateTensorInfos=[];permutedAxes!=null&&($x=transpose3({inputs:{x},backend:backend2,attrs:{perm:permutedAxes}}),intermediateTensorInfos.push($x),axes=backend_util_exports.getInnerMostAxes(axes.length,$x.shape.length)),backend_util_exports.assertAxesAreInnerMostDims("argMin",[axes[0]],$x.shape.length);let out=argMinMaxReduce(backend2,$x,axes[0],"min");return intermediateTensorInfos.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),out}var argMinConfig2={kernelName:ArgMin,backendName:"webgl",kernelFunc:argMin3};var ASIN=CHECK_NAN_SNIPPET+` + `}};function hF(r,e,t,o=null){let n=e.shape[0],s=e.shape[1];o!=null&&(n=o.shape[0],s=o.shape[1]);let a=S.computeOptimalWindowSize(s),i={windowSize:a,inSize:s,batchSize:n,outSize:Math.ceil(s/a)},l=new Qk(i,t,o==null),u=[e];o!=null&&u.push(o);let c=r.runWebGLProgram(l,u,"int32");if(c.shape[1]===1)return c;let p=hF(r,e,t,c);return r.disposeIntermediateTensorInfo(c),p}function gF(r,e,t,o=null){let n=o!=null?o.shape:e.shape,s=n[n.length-1],a=S.computeOptimalWindowSize(s),i=new eC(n,a,t,o==null),l=o==null?[e]:[e,o],u=r.runWebGLProgram(i,l,"int32");if(u.shape.length===e.shape.length){let c=gF(r,e,t,u);return r.disposeIntermediateTensorInfo(u),c}return u}function Bx(r,e,t,o){let n=[t];if(S.assertAxesAreInnerMostDims("arg"+o.charAt(0).toUpperCase()+o.slice(1),n,e.shape.length),!W().getBool("WEBGL_PACK_REDUCE")||e.shape.length<=2){let s=[],[a,i]=S.computeOutAndReduceShapes(e.shape,n),l=x.sizeFromShape(i),u=me({inputs:{x:e},backend:r,attrs:{shape:[-1,l]}});s.push(u);let c=hF(r,u,o);s.push(c);let p=me({inputs:{x:c},backend:r,attrs:{shape:a}});return s.forEach(m=>r.disposeIntermediateTensorInfo(m)),p}return gF(r,e,o)}function y7(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{axis:s}=o,a=x.parseAxisParam(s,n.shape),i=S.getAxesPermutation(a,n.shape.length),l=n,u=[];i!=null&&(l=Bt({inputs:{x:n},backend:t,attrs:{perm:i}}),u.push(l),a=S.getInnerMostAxes(a.length,l.shape.length)),S.assertAxesAreInnerMostDims("argMax",[a[0]],l.shape.length);let c=Bx(t,l,a[0],"max");return u.forEach(p=>t.disposeIntermediateTensorInfo(p)),c}var xF={kernelName:Ko,backendName:"webgl",kernelFunc:y7};function b7(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{axis:s}=o,a=x.parseAxisParam(s,n.shape),i=S.getAxesPermutation(a,n.shape.length),l=n,u=[];i!=null&&(l=Bt({inputs:{x:n},backend:t,attrs:{perm:i}}),u.push(l),a=S.getInnerMostAxes(a.length,l.shape.length)),S.assertAxesAreInnerMostDims("argMin",[a[0]],l.shape.length);let c=Bx(t,l,a[0],"min");return u.forEach(p=>t.disposeIntermediateTensorInfo(p)),c}var yF={kernelName:oa,backendName:"webgl",kernelFunc:b7};var _7=xr+` if (abs(x) > 1.) { return NAN; } return asin(x); -`,asin3=unaryKernelFunc2({opSnippet:ASIN}),asinConfig2={kernelName:Asin,backendName:"webgl",kernelFunc:asin3};var ASINH=CHECK_NAN_SNIPPET+"return log(x + sqrt(x * x + 1.0));",asinh3=unaryKernelFunc2({opSnippet:ASINH}),asinhConfig2={kernelName:Asinh,backendName:"webgl",kernelFunc:asinh3};var ATAN=CHECK_NAN_SNIPPET+` +`,w7=Ce({opSnippet:_7}),bF={kernelName:Hs,backendName:"webgl",kernelFunc:w7};var v7=xr+"return log(x + sqrt(x * x + 1.0));",k7=Ce({opSnippet:v7}),_F={kernelName:Ks,backendName:"webgl",kernelFunc:k7};var C7=xr+` return atan(x); -`,atan4=unaryKernelFunc2({opSnippet:ATAN}),atanConfig2={kernelName:Atan,backendName:"webgl",kernelFunc:atan4};var ATAN2=CHECK_NAN_SNIPPET_BINARY+` +`,I7=Ce({opSnippet:C7}),wF={kernelName:Xs,backendName:"webgl",kernelFunc:I7};var N7=YR+` return atan(a, b); -`,ATAN2_PACKED=` +`,S7=` vec4 result = atan(a, b); vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0)); - `+CHECK_NAN_SNIPPET_BINARY_PACKED+` + `+ZR+` return result; -`,atan23=binaryKernelFunc2({opSnippet:ATAN2,packedOpSnippet:ATAN2_PACKED}),atan2Config2={kernelName:Atan2,backendName:"webgl",kernelFunc:atan23};var ATANH=CHECK_NAN_SNIPPET+` +`,T7=at({opSnippet:N7,packedOpSnippet:S7}),vF={kernelName:Zs,backendName:"webgl",kernelFunc:T7};var E7=xr+` if ((x < -1.0) || (x > 1.0)) return NAN; -return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet:ATANH}),atanhConfig2={kernelName:Atanh,backendName:"webgl",kernelFunc:atanh3};var Pool2DProgram=class{constructor(convInfo,poolType,computePositions,flattenPositions=!1,includeBatchInIndex=!1){if(this.variableNames=["x"],poolType==="avg"&&computePositions)throw new Error("Cannot compute positions for average pool.");let filterWidth=convInfo.filterWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left;this.outputShape=convInfo.outShape;let isAvgPool=poolType==="avg",batchFlattenPositionStr=`((batch * ${convInfo.inHeight} + xR) * ${convInfo.inWidth} + xC) * ${convInfo.inChannels} + d`,flattenPositionStr=`(xR * ${convInfo.inWidth} + xC) * ${convInfo.inChannels} + d`,initializationValue="0.0";if(isAvgPool||(initializationValue="-1.0 / 1e-20"),computePositions){let compareOp2=">=";this.userCode=` - const ivec2 strides = ivec2(${strideHeight}, ${strideWidth}); - const ivec2 pads = ivec2(${padTop}, ${padLeft}); +return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,A7=Ce({opSnippet:E7}),kF={kernelName:Ys,backendName:"webgl",kernelFunc:A7};var Yi=class{constructor(e,t,o,n=!1,s=!1){if(this.variableNames=["x"],t==="avg"&&o)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`,y=`(xR * ${e.inWidth} + xC) * ${e.inChannels} + d`,b="0.0";if(h||(b="-1.0 / 1e-20"),o){let F=">=";this.userCode=` + const ivec2 strides = ivec2(${i}, ${l}); + const ivec2 pads = ivec2(${f}, ${d}); void main() { ivec4 coords = getOutputCoords(); @@ -1368,19 +1368,19 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: int minMaxPosition = 0; float avgValue = 0.0; - for (int wR = 0; wR < ${effectiveFilterHeight}; - wR += ${dilationHeight}) { + for (int wR = 0; wR < ${p}; + wR += ${u}) { int xR = xRCorner + wR; - if (xR < 0 || xR >= ${convInfo.inHeight}) { + if (xR < 0 || xR >= ${e.inHeight}) { continue; } - for (int wC = 0; wC < ${effectiveFilterWidth}; - wC += ${dilationWidth}) { + for (int wC = 0; wC < ${m}; + wC += ${c}) { int xC = xCCorner + wC; - if (xC < 0 || xC >= ${convInfo.inWidth}) { + if (xC < 0 || xC >= ${e.inWidth}) { continue; } @@ -1390,31 +1390,31 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // use the current value. float currMinMaxValue = mix( value, minMaxValue, minMaxValueFound); - if (value ${compareOp2} currMinMaxValue) { + if (value ${F} currMinMaxValue) { minMaxValue = value; minMaxValueFound = 1.0; - minMaxPosition = ${flattenPositions?includeBatchInIndex?batchFlattenPositionStr:flattenPositionStr:`wR * ${effectiveFilterWidth} + wC`}; + minMaxPosition = ${n?s?g:y:`wR * ${m} + wC`}; } } } setOutput(float(minMaxPosition)); } - `;return}let compareOp="max",returnValue=`${poolType}(${poolType}(${poolType}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;poolType==="avg"&&(returnValue="avgValue / count");let filterWidthNearestVec4=Math.floor(filterWidth/4)*4,filterWidthVec4Remainder=filterWidth%4,updateSnippet=` - if (${isAvgPool}) { + `;return}let _="max",w=`${t}(${t}(${t}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;t==="avg"&&(w="avgValue / count");let k=Math.floor(a/4)*4,$=a%4,T=` + if (${h}) { avgValue += dot(values, ones); } else { - minMaxValue = ${compareOp}(values, minMaxValue); + minMaxValue = ${_}(values, minMaxValue); } `;this.userCode=` - const ivec2 strides = ivec2(${strideHeight}, ${strideWidth}); - const ivec2 pads = ivec2(${padTop}, ${padLeft}); - const float initializationValue = ${initializationValue}; + const ivec2 strides = ivec2(${i}, ${l}); + const ivec2 pads = ivec2(${f}, ${d}); + const float initializationValue = ${b}; const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0); float count = 0.0; float getValue(int batch, int xR, int xC, int d) { - if (xC < 0 || xC >= ${convInfo.inWidth}) { + if (xC < 0 || xC >= ${e.inWidth}) { return initializationValue; } count += 1.0; @@ -1432,33 +1432,33 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // max/min x(?, ?, d) to get y(yR, yC, d). // ? = to be determined - vec4 minMaxValue = vec4(${initializationValue}); + vec4 minMaxValue = vec4(${b}); float avgValue = 0.0; count = 0.0; - for (int wR = 0; wR < ${effectiveFilterHeight}; - wR += ${dilationHeight}) { + for (int wR = 0; wR < ${p}; + wR += ${u}) { int xR = xRCorner + wR; - if (xR < 0 || xR >= ${convInfo.inHeight}) { + if (xR < 0 || xR >= ${e.inHeight}) { continue; } - for (int wC = 0; wC < ${filterWidthNearestVec4}; wC += 4) { - int xC = xCCorner + wC * ${dilationWidth}; + for (int wC = 0; wC < ${k}; wC += 4) { + int xC = xCCorner + wC * ${c}; vec4 values = vec4( getValue(batch, xR, xC, d), - getValue(batch, xR, xC + ${dilationWidth}, d), - getValue(batch, xR, xC + 2 * ${dilationWidth}, d), - getValue(batch, xR, xC + 3 * ${dilationWidth}, d) + getValue(batch, xR, xC + ${c}, d), + getValue(batch, xR, xC + 2 * ${c}, d), + getValue(batch, xR, xC + 3 * ${c}, d) ); - ${updateSnippet} + ${T} } - int xC = xCCorner + ${filterWidthNearestVec4}; - if (${filterWidthVec4Remainder===1}) { + int xC = xCCorner + ${k}; + if (${$===1}) { vec4 values = vec4( getValue(batch, xR, xC, d), initializationValue, @@ -1466,33 +1466,33 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: initializationValue ); - ${updateSnippet} - } else if (${filterWidthVec4Remainder===2}) { + ${T} + } else if (${$===2}) { vec4 values = vec4( getValue(batch, xR, xC, d), - getValue(batch, xR, xC + ${dilationWidth}, d), + getValue(batch, xR, xC + ${c}, d), initializationValue, initializationValue ); - ${updateSnippet} - } else if (${filterWidthVec4Remainder===3}) { + ${T} + } else if (${$===3}) { vec4 values = vec4( getValue(batch, xR, xC, d), - getValue(batch, xR, xC + ${dilationWidth}, d), - getValue(batch, xR, xC + 2 * ${dilationWidth}, d), + getValue(batch, xR, xC + ${c}, d), + getValue(batch, xR, xC + 2 * ${c}, d), initializationValue ); - ${updateSnippet} + ${T} } } - setOutput(${returnValue}); + setOutput(${w}); } - `}},Pool3DProgram=class{constructor(convInfo,poolType,computePositions,flattenPositions=!1,includeBatchInIndex=!1){if(this.variableNames=["x"],poolType==="avg"&&computePositions)throw new Error("Cannot compute positions for average pool.");let filterWidth=convInfo.filterWidth,strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=convInfo.padInfo.front,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left;this.outputShape=convInfo.outShape;let isAvgPool=poolType==="avg",initializationValue="0.0";if(isAvgPool||(initializationValue="-1.0 / 1e-20"),computePositions){let compareOp2=">=";this.userCode=` + `}},mc=class{constructor(e,t,o,n=!1,s=!1){if(this.variableNames=["x"],t==="avg"&&o)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,y=e.padInfo.top,b=e.padInfo.left;this.outputShape=e.outShape;let _=t==="avg",w="0.0";if(_||(w="-1.0 / 1e-20"),o){let L=">=";this.userCode=` const ivec3 strides = - ivec3(${strideDepth}, ${strideHeight}, ${strideWidth}); - const ivec3 pads = ivec3(${padFront}, ${padTop}, ${padLeft}); + ivec3(${i}, ${l}, ${u}); + const ivec3 pads = ivec3(${g}, ${y}, ${b}); void main() { ivec5 coords = getOutputCoords(); @@ -1510,27 +1510,27 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: float minMaxValueFound = 0.0; int minMaxPosition = 0; - for (int wD = 0; wD < ${effectiveFilterDepth}; - wD += ${dilationDepth}) { + for (int wD = 0; wD < ${f}; + wD += ${c}) { int xD = xDCorner + wD; - if (xD < 0 || xD >= ${convInfo.inDepth}) { + if (xD < 0 || xD >= ${e.inDepth}) { continue; } - for (int wR = 0; wR < ${effectiveFilterHeight}; - wR += ${dilationHeight}) { + for (int wR = 0; wR < ${d}; + wR += ${p}) { int xR = xRCorner + wR; - if (xR < 0 || xR >= ${convInfo.inHeight}) { + if (xR < 0 || xR >= ${e.inHeight}) { continue; } - for (int wC = 0; wC < ${effectiveFilterWidth}; - wC += ${dilationWidth}) { + for (int wC = 0; wC < ${h}; + wC += ${m}) { int xC = xCCorner + wC; - if (xC < 0 || xC >= ${convInfo.inWidth}) { + if (xC < 0 || xC >= ${e.inWidth}) { continue; } @@ -1540,34 +1540,34 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // use the current value. float currMinMaxValue = mix( value, minMaxValue, minMaxValueFound); - if (value ${compareOp2} currMinMaxValue) { + if (value ${L} currMinMaxValue) { minMaxValue = value; minMaxValueFound = 1.0; - minMaxPosition = ${flattenPositions?includeBatchInIndex?`(((batch * ${convInfo.inDepth} + xD) * ${convInfo.inHeight} + xR) * ${convInfo.inWidth} + xC) * ${convInfo.inChannels} + ch`:`((xD * ${convInfo.inHeight} + xR) * ${convInfo.inWidth} + xC) * ${convInfo.inChannels} + ch`:`wD * ${effectiveFilterHeight} * ${effectiveFilterWidth} + - wR * ${effectiveFilterWidth} + wC`}; + minMaxPosition = ${n?s?`(((batch * ${e.inDepth} + xD) * ${e.inHeight} + xR) * ${e.inWidth} + xC) * ${e.inChannels} + ch`:`((xD * ${e.inHeight} + xR) * ${e.inWidth} + xC) * ${e.inChannels} + ch`:`wD * ${d} * ${h} + + wR * ${h} + wC`}; } } } } setOutput(float(minMaxPosition)); } - `;return}let compareOp="max",returnValue=`${poolType}(${poolType}(${poolType}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;poolType==="avg"&&(returnValue="avgValue / count");let filterWidthNearestVec4=Math.floor(filterWidth/4)*4,filterWidthVec4Remainder=filterWidth%4,updateSnippet=` - if (${isAvgPool}) { + `;return}let k="max",$=`${t}(${t}(${t}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;t==="avg"&&($="avgValue / count");let T=Math.floor(a/4)*4,F=a%4,M=` + if (${_}) { avgValue += dot(values, ones); } else { - minMaxValue = ${compareOp}(values, minMaxValue); + minMaxValue = ${k}(values, minMaxValue); } `;this.userCode=` const ivec3 strides = - ivec3(${strideDepth}, ${strideHeight}, ${strideWidth}); - const ivec3 pads = ivec3(${padFront}, ${padTop}, ${padLeft}); - const float initializationValue = ${initializationValue}; + ivec3(${i}, ${l}, ${u}); + const ivec3 pads = ivec3(${g}, ${y}, ${b}); + const float initializationValue = ${w}; const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0); float count = 0.0; float getValue(int batch, int xD, int xR, int xC, int ch) { - if (xC < 0 || xC >= ${convInfo.inWidth}) { + if (xC < 0 || xC >= ${e.inWidth}) { return initializationValue; } count += 1.0; @@ -1586,41 +1586,41 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // max/min x(?, ?, ?, d) to get y(yD, yR, yC, ch). // ? = to be determined - vec4 minMaxValue = vec4(${initializationValue}); + vec4 minMaxValue = vec4(${w}); float avgValue = 0.0; count = 0.0; - for (int wD = 0; wD < ${effectiveFilterDepth}; - wD += ${dilationDepth}) { + for (int wD = 0; wD < ${f}; + wD += ${c}) { int xD = xDCorner + wD; - if (xD < 0 || xD >= ${convInfo.inDepth}) { + if (xD < 0 || xD >= ${e.inDepth}) { continue; } - for (int wR = 0; wR < ${effectiveFilterHeight}; - wR += ${dilationHeight}) { + for (int wR = 0; wR < ${d}; + wR += ${p}) { int xR = xRCorner + wR; - if (xR < 0 || xR >= ${convInfo.inHeight}) { + if (xR < 0 || xR >= ${e.inHeight}) { continue; } - for (int wC = 0; wC < ${filterWidthNearestVec4}; wC += 4) { - int xC = xCCorner + wC * ${dilationWidth}; + for (int wC = 0; wC < ${T}; wC += 4) { + int xC = xCCorner + wC * ${m}; vec4 values = vec4( getValue(batch, xD, xR, xC, ch), - getValue(batch, xD, xR, xC + ${dilationWidth}, ch), - getValue(batch, xD, xR, xC + 2 * ${dilationWidth}, ch), - getValue(batch, xD, xR, xC + 3 * ${dilationWidth}, ch) + getValue(batch, xD, xR, xC + ${m}, ch), + getValue(batch, xD, xR, xC + 2 * ${m}, ch), + getValue(batch, xD, xR, xC + 3 * ${m}, ch) ); - ${updateSnippet} + ${M} } - int xC = xCCorner + ${filterWidthNearestVec4}; - if (${filterWidthVec4Remainder===1}) { + int xC = xCCorner + ${T}; + if (${F===1}) { vec4 values = vec4( getValue(batch, xD, xR, xC, ch), initializationValue, @@ -1628,33 +1628,33 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: initializationValue ); - ${updateSnippet} - } else if (${filterWidthVec4Remainder===2}) { + ${M} + } else if (${F===2}) { vec4 values = vec4( getValue(batch, xD, xR, xC, ch), - getValue(batch, xD, xR, xC + ${dilationWidth}, ch), + getValue(batch, xD, xR, xC + ${m}, ch), initializationValue, initializationValue ); - ${updateSnippet} - } else if (${filterWidthVec4Remainder===3}) { + ${M} + } else if (${F===3}) { vec4 values = vec4( getValue(batch, xD, xR, xC, ch), - getValue(batch, xD, xR, xC + ${dilationWidth}, ch), - getValue(batch, xD, xR, xC + 2 * ${dilationWidth}, ch), + getValue(batch, xD, xR, xC + ${m}, ch), + getValue(batch, xD, xR, xC + 2 * ${m}, ch), initializationValue ); - ${updateSnippet} + ${M} } } - setOutput(${returnValue}); + setOutput(${$}); } } - `}};function avgPool3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs;assertNotComplex2(x,"avgPool");let{filterSize,strides,pad:pad3,dimRoundingMode}=attrs,dilations=1;util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad3,dimRoundingMode);if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))return identity3({inputs:{x},backend:backend2});let avgPoolProgram=new Pool2DProgram(convInfo,"avg",!1);return backend2.runWebGLProgram(avgPoolProgram,[x],"float32")}var avgPoolConfig2={kernelName:AvgPool,backendName:"webgl",kernelFunc:avgPool3};function avgPool3D2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{filterSize,strides,pad:pad3,dimRoundingMode,dataFormat}=attrs,dilations=[1,1,1],convInfo=backend_util_exports.computePool3DInfo(x.shape,filterSize,strides,dilations,pad3,dimRoundingMode,dataFormat),avgPoolProgram=new Pool3DProgram(convInfo,"avg",!1);return backend2.runWebGLProgram(avgPoolProgram,[x],"float32")}var avgPool3DConfig2={kernelName:AvgPool3D,backendName:"webgl",kernelFunc:avgPool3D2};var AvgPool2DBackpropProgram=class{constructor(convInfo){this.variableNames=["dy"],this.outputShape=convInfo.inShape;let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,avgMultiplier=1/(filterHeight*filterWidth);this.userCode=` - const ivec2 pads = ivec2(${padTop}, ${padLeft}); - const float avgMultiplier = float(${avgMultiplier}); + `}};function D7(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e;Xi(n,"avgPool");let{filterSize:s,strides:a,pad:i,dimRoundingMode:l}=o,u=1;x.assert(S.eitherStridesOrDilationsAreOne(a,u),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${a} and dilations '${u}'`);let c=S.computePool2DInfo(n.shape,s,a,u,i,l);if(c.filterWidth===1&&c.filterHeight===1&&x.arraysEqual(c.inShape,c.outShape))return Ht({inputs:{x:n},backend:t});let p=new Yi(c,"avg",!1);return t.runWebGLProgram(p,[n],"float32")}var CF={kernelName:Xo,backendName:"webgl",kernelFunc:D7};function $7(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{filterSize:s,strides:a,pad:i,dimRoundingMode:l,dataFormat:u}=o,c=[1,1,1],p=S.computePool3DInfo(n.shape,s,a,c,i,l,u),m=new mc(p,"avg",!1);return t.runWebGLProgram(m,[n],"float32")}var IF={kernelName:na,backendName:"webgl",kernelFunc:$7};var tC=class{constructor(e){this.variableNames=["dy"],this.outputShape=e.inShape;let t=e.filterHeight,o=e.filterWidth,n=e.strideHeight,s=e.strideWidth,a=e.dilationHeight,i=e.dilationWidth,l=e.effectiveFilterHeight,u=e.effectiveFilterWidth,c=l-1-e.padInfo.top,p=u-1-e.padInfo.left,m=1/(t*o);this.userCode=` + const ivec2 pads = ivec2(${c}, ${p}); + const float avgMultiplier = float(${m}); void main() { ivec4 coords = getOutputCoords(); @@ -1668,20 +1668,20 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d). // ? = to be determined. : = across all values in that axis. float dotProd = 0.0; - for (int wR = 0; wR < ${effectiveFilterHeight}; - wR += ${dilationHeight}) { - float dyR = float(dyRCorner + wR) / ${strideHeight}.0; + for (int wR = 0; wR < ${l}; + wR += ${a}) { + float dyR = float(dyRCorner + wR) / ${n}.0; - if (dyR < 0.0 || dyR >= ${convInfo.outHeight}.0 || fract(dyR) > 0.0) { + if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || fract(dyR) > 0.0) { continue; } int idyR = int(dyR); - for (int wC = 0; wC < ${effectiveFilterWidth}; - wC+= ${dilationWidth}) { - float dyC = float(dyCCorner + wC) / ${strideWidth}.0; + for (int wC = 0; wC < ${u}; + wC+= ${i}) { + float dyC = float(dyCCorner + wC) / ${s}.0; - if (dyC < 0.0 || dyC >= ${convInfo.outWidth}.0 || + if (dyC < 0.0 || dyC >= ${e.outWidth}.0 || fract(dyC) > 0.0) { continue; } @@ -1694,9 +1694,9 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(dotProd); } - `}},AvgPool3DBackpropProgram=class{constructor(convInfo){this.variableNames=["dy"],this.outputShape=convInfo.inShape;let filterDepth=convInfo.filterDepth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=effectiveFilterDepth-1-convInfo.padInfo.front,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,avgMultiplier=1/(filterDepth*filterHeight*filterWidth);this.userCode=` - const ivec3 pads = ivec3(${padFront}, ${padTop}, ${padLeft}); - const float avgMultiplier = float(${avgMultiplier}); + `}},rC=class{constructor(e){this.variableNames=["dy"],this.outputShape=e.inShape;let t=e.filterDepth,o=e.filterHeight,n=e.filterWidth,s=e.strideDepth,a=e.strideHeight,i=e.strideWidth,l=e.dilationDepth,u=e.dilationHeight,c=e.dilationWidth,p=e.effectiveFilterDepth,m=e.effectiveFilterHeight,f=e.effectiveFilterWidth,d=p-1-e.padInfo.front,h=m-1-e.padInfo.top,g=f-1-e.padInfo.left,y=1/(t*o*n);this.userCode=` + const ivec3 pads = ivec3(${d}, ${h}, ${g}); + const float avgMultiplier = float(${y}); void main() { ivec5 coords = getOutputCoords(); @@ -1713,30 +1713,30 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // ? = to be determined. : = across all values in that axis. float dotProd = 0.0; - for (int wD = 0; wD < ${effectiveFilterDepth}; - wD += ${dilationDepth}) { - float dyD = float(dyDCorner + wD) / ${strideDepth}.0; + for (int wD = 0; wD < ${p}; + wD += ${l}) { + float dyD = float(dyDCorner + wD) / ${s}.0; - if (dyD < 0.0 || dyD >= ${convInfo.outDepth}.0 || fract(dyD) > 0.0) { + if (dyD < 0.0 || dyD >= ${e.outDepth}.0 || fract(dyD) > 0.0) { continue; } int idyD = int(dyD); - for (int wR = 0; wR < ${effectiveFilterHeight}; - wR += ${dilationHeight}) { - float dyR = float(dyRCorner + wR) / ${strideHeight}.0; + for (int wR = 0; wR < ${m}; + wR += ${u}) { + float dyR = float(dyRCorner + wR) / ${a}.0; - if (dyR < 0.0 || dyR >= ${convInfo.outHeight}.0 || + if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || fract(dyR) > 0.0) { continue; } int idyR = int(dyR); - for (int wC = 0; wC < ${effectiveFilterWidth}; - wC += ${dilationWidth}) { - float dyC = float(dyCCorner + wC) / ${strideWidth}.0; + for (int wC = 0; wC < ${f}; + wC += ${c}) { + float dyC = float(dyCCorner + wC) / ${i}.0; - if (dyC < 0.0 || dyC >= ${convInfo.outWidth}.0 || + if (dyC < 0.0 || dyC >= ${e.outWidth}.0 || fract(dyC) > 0.0) { continue; } @@ -1750,71 +1750,71 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(dotProd); } - `}};function avgPool3DGrad2(args){let{inputs,backend:backend2,attrs}=args,{dy,input:input2}=inputs,x=input2,{filterSize,strides,pad:pad3,dimRoundingMode}=attrs,dilations=[1,1,1],convInfo=backend_util_exports.computePool3DInfo(x.shape,filterSize,strides,dilations,pad3,dimRoundingMode),avgPoolBackpropProgram=new AvgPool3DBackpropProgram(convInfo);return backend2.runWebGLProgram(avgPoolBackpropProgram,[dy],x.dtype)}var avgPoolGrad3DConfig={kernelName:AvgPool3DGrad,backendName:"webgl",kernelFunc:avgPool3DGrad2};function avgPoolGrad3(args){let{inputs,backend:backend2,attrs}=args,{dy,input:input2}=inputs,x=input2;assertNotComplex2([dy,input2],"avgPoolGrad");let{filterSize,strides,pad:pad3}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad3),avgPoolBackpropProgram=new AvgPool2DBackpropProgram(convInfo);return backend2.runWebGLProgram(avgPoolBackpropProgram,[dy],x.dtype)}var avgPoolGradConfig3={kernelName:AvgPoolGrad,backendName:"webgl",kernelFunc:avgPoolGrad3};function batchMatMul2(args){let{inputs,backend:backend2,attrs}=args,{a,b}=inputs,{transposeA,transposeB}=attrs;return batchMatMulImpl({a,b,transposeA,transposeB,backend:backend2})}var batchMatMulConfig2={kernelName:BatchMatMul,backendName:"webgl",kernelFunc:batchMatMul2};var BatchNormProgram=class{constructor(xShape,meanShape,varianceShape,offsetShape,scaleShape,varianceEpsilon){this.outputShape=[],this.variableNames=["x","mean","variance"],backend_util_exports.assertAndGetBroadcastShape(xShape,meanShape),backend_util_exports.assertAndGetBroadcastShape(xShape,varianceShape);let offsetSnippet="0.0";offsetShape!=null&&(backend_util_exports.assertAndGetBroadcastShape(xShape,offsetShape),this.variableNames.push("offset"),offsetSnippet="getOffsetAtOutCoords()");let scaleSnippet="1.0";scaleShape!=null&&(backend_util_exports.assertAndGetBroadcastShape(xShape,scaleShape),this.variableNames.push("scale"),scaleSnippet="getScaleAtOutCoords()"),this.outputShape=xShape,this.userCode=` + `}};function R7(r){let{inputs:e,backend:t,attrs:o}=r,{dy:n,input:s}=e,a=s,{filterSize:i,strides:l,pad:u,dimRoundingMode:c}=o,p=[1,1,1],m=S.computePool3DInfo(a.shape,i,l,p,u,c),f=new rC(m);return t.runWebGLProgram(f,[n],a.dtype)}var NF={kernelName:Hl,backendName:"webgl",kernelFunc:R7};function F7(r){let{inputs:e,backend:t,attrs:o}=r,{dy:n,input:s}=e,a=s;Xi([n,s],"avgPoolGrad");let{filterSize:i,strides:l,pad:u}=o,c=S.computePool2DInfo(a.shape,i,l,1,u),p=new tC(c);return t.runWebGLProgram(p,[n],a.dtype)}var SF={kernelName:ql,backendName:"webgl",kernelFunc:F7};function O7(r){let{inputs:e,backend:t,attrs:o}=r,{a:n,b:s}=e,{transposeA:a,transposeB:i}=o;return pc({a:n,b:s,transposeA:a,transposeB:i,backend:t})}var TF={kernelName:Yo,backendName:"webgl",kernelFunc:O7};var oC=class{constructor(e,t,o,n,s,a){this.outputShape=[],this.variableNames=["x","mean","variance"],S.assertAndGetBroadcastShape(e,t),S.assertAndGetBroadcastShape(e,o);let i="0.0";n!=null&&(S.assertAndGetBroadcastShape(e,n),this.variableNames.push("offset"),i="getOffsetAtOutCoords()");let l="1.0";s!=null&&(S.assertAndGetBroadcastShape(e,s),this.variableNames.push("scale"),l="getScaleAtOutCoords()"),this.outputShape=e,this.userCode=` void main() { float x = getXAtOutCoords(); float mean = getMeanAtOutCoords(); float variance = getVarianceAtOutCoords(); - float offset = ${offsetSnippet}; - float scale = ${scaleSnippet}; - float inv = scale * inversesqrt(variance + float(${varianceEpsilon})); + float offset = ${i}; + float scale = ${l}; + float inv = scale * inversesqrt(variance + float(${a})); setOutput(dot(vec3(x, -mean, offset), vec3(inv, inv, 1))); } - `}};var BatchNormPackedProgram=class{constructor(xShape,meanShape,varianceShape,offsetShape,scaleShape,varianceEpsilon){this.packedInputs=!0,this.packedOutput=!0,this.variableNames=["x","mean","variance"],backend_util_exports.assertAndGetBroadcastShape(xShape,meanShape),backend_util_exports.assertAndGetBroadcastShape(xShape,varianceShape);let offsetSnippet="vec4(0.0)";offsetShape!=null&&(backend_util_exports.assertAndGetBroadcastShape(xShape,offsetShape),this.variableNames.push("offset"),offsetSnippet="getOffsetAtOutCoords()");let scaleSnippet="vec4(1.0)";scaleShape!=null&&(backend_util_exports.assertAndGetBroadcastShape(xShape,scaleShape),this.variableNames.push("scale"),scaleSnippet="getScaleAtOutCoords()"),this.outputShape=xShape,this.userCode=` + `}};var nC=class{constructor(e,t,o,n,s,a){this.packedInputs=!0,this.packedOutput=!0,this.variableNames=["x","mean","variance"],S.assertAndGetBroadcastShape(e,t),S.assertAndGetBroadcastShape(e,o);let i="vec4(0.0)";n!=null&&(S.assertAndGetBroadcastShape(e,n),this.variableNames.push("offset"),i="getOffsetAtOutCoords()");let l="vec4(1.0)";s!=null&&(S.assertAndGetBroadcastShape(e,s),this.variableNames.push("scale"),l="getScaleAtOutCoords()"),this.outputShape=e,this.userCode=` void main() { - vec4 offset = ${offsetSnippet}; - vec4 scale = ${scaleSnippet}; + vec4 offset = ${i}; + vec4 scale = ${l}; vec4 x = getXAtOutCoords(); vec4 mean = getMeanAtOutCoords(); vec4 variance = getVarianceAtOutCoords(); - vec4 inv = scale * inversesqrt(variance + vec4(${varianceEpsilon})); + vec4 inv = scale * inversesqrt(variance + vec4(${a})); setOutput((x - mean) * inv + offset); } - `}};var batchNorm3=({inputs,backend:backend2,attrs})=>{let{x,mean:mean4,variance,offset,scale:scale2}=inputs;util_exports.assert(mean4.shape.length===variance.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),util_exports.assert(offset==null||mean4.shape.length===offset.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),util_exports.assert(scale2==null||mean4.shape.length===scale2.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let{varianceEpsilon}=attrs;varianceEpsilon==null&&(varianceEpsilon=.001);let finalInputs=[x,mean4,variance],offsetShape=null;offset!=null&&(offsetShape=offset.shape,finalInputs.push(offset));let scaleShape=null;scale2!=null&&(scaleShape=scale2.shape,finalInputs.push(scale2));let program=env().getBool("WEBGL_PACK_NORMALIZATION")?new BatchNormPackedProgram(x.shape,mean4.shape,variance.shape,offsetShape,scaleShape,varianceEpsilon):new BatchNormProgram(x.shape,mean4.shape,variance.shape,offsetShape,scaleShape,varianceEpsilon);return backend2.runWebGLProgram(program,finalInputs,finalInputs[0].dtype)},batchNormConfig2={kernelName:FusedBatchNorm,backendName:"webgl",kernelFunc:batchNorm3};var SliceProgram=class{constructor(destSize){this.variableNames=["source"],this.outputShape=destSize,this.rank=destSize.length;let dtype=getCoordsDataType(this.rank),uniformPart=`uniform int start[${this.rank}];`,sourceCoords=getCoords(this.rank),body,coordSum=destSize.map((_,i)=>`sourceLoc.${coords[i]} = start[${i}] + coords.${coords[i]};`);body=` - ${dtype} sourceLoc; - ${dtype} coords = getOutputCoords(); - ${coordSum.join(` + `}};var P7=({inputs:r,backend:e,attrs:t})=>{let{x:o,mean:n,variance:s,offset:a,scale:i}=r;x.assert(n.shape.length===s.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),x.assert(a==null||n.shape.length===a.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),x.assert(i==null||n.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=[o,n,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 nC(o.shape,n.shape,s.shape,c,p,l):new oC(o.shape,n.shape,s.shape,c,p,l);return e.runWebGLProgram(m,u,u[0].dtype)},EF={kernelName:an,backendName:"webgl",kernelFunc:P7};var sC=class{constructor(e){this.variableNames=["source"],this.outputShape=e,this.rank=e.length;let t=Be(this.rank),o=`uniform int start[${this.rank}];`,n=M7(this.rank),s,a=e.map((i,l)=>`sourceLoc.${iC[l]} = start[${l}] + coords.${iC[l]};`);s=` + ${t} sourceLoc; + ${t} coords = getOutputCoords(); + ${a.join(` `)} `,this.userCode=` - ${uniformPart} + ${o} void main() { - ${body} - setOutput(getSource(${sourceCoords})); + ${s} + setOutput(getSource(${n})); } - `}getCustomSetupFunc(start){if(start.length!==this.rank)throw Error(`The rank (${this.rank}) of the program must match the length of start (${start.length})`);return(gpgpu,webGLProgram)=>{this.startLoc==null&&(this.startLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"start"),this.startLoc==null)||gpgpu.gl.uniform1iv(this.startLoc,start)}}},coords=["x","y","z","w","u","v"];function getCoords(rank){if(rank===1)return"sourceLoc";if(rank<=6)return coords.slice(0,rank).map(x=>"sourceLoc."+x).join(",");throw Error(`Slicing for rank ${rank} is not yet supported`)}var SlicePackedProgram=class{constructor(destSize){this.variableNames=["source"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=destSize,this.rank=destSize.length;let dtype=getCoordsDataType(this.rank),coords2=getChannels("coords",this.rank),sourceLoc=getChannels("sourceLoc",this.rank),innerDims=this.rank===1?"sourceLoc":`vec2(${sourceLoc.slice(-2).join()})`,getChannel=`getChannel(getSource(${sourceLoc.join()}), ${innerDims})`,upperRow=` - result.x = ${getChannel}; - if (++${coords2[this.rank-1]} < ${destSize[this.rank-1]}) { - ++${sourceLoc[this.rank-1]}; - result.y = ${getChannel}; - --${sourceLoc[this.rank-1]}; + `}getCustomSetupFunc(e){if(e.length!==this.rank)throw Error(`The rank (${this.rank}) of the program must match the length of start (${e.length})`);return(t,o)=>{this.startLoc==null&&(this.startLoc=t.getUniformLocationNoThrow(o,"start"),this.startLoc==null)||t.gl.uniform1iv(this.startLoc,e)}}},iC=["x","y","z","w","u","v"];function M7(r){if(r===1)return"sourceLoc";if(r<=6)return iC.slice(0,r).map(e=>"sourceLoc."+e).join(",");throw Error(`Slicing for rank ${r} is not yet supported`)}var aC=class{constructor(e){this.variableNames=["source"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.rank=e.length;let t=Be(this.rank),o=qt("coords",this.rank),n=qt("sourceLoc",this.rank),s=this.rank===1?"sourceLoc":`vec2(${n.slice(-2).join()})`,a=`getChannel(getSource(${n.join()}), ${s})`,i=` + result.x = ${a}; + if (++${o[this.rank-1]} < ${e[this.rank-1]}) { + ++${n[this.rank-1]}; + result.y = ${a}; + --${n[this.rank-1]}; } - `,lowerRow=this.rank===1?"":` - --${coords2[this.rank-1]}; - if (++${coords2[this.rank-2]} < ${destSize[this.rank-2]}) { - ++${sourceLoc[this.rank-2]}; - result.z = ${getChannel}; - if (++${coords2[this.rank-1]} < ${destSize[this.rank-1]}) { - ++${sourceLoc[this.rank-1]}; - result.w = ${getChannel}; + `,l=this.rank===1?"":` + --${o[this.rank-1]}; + if (++${o[this.rank-2]} < ${e[this.rank-2]}) { + ++${n[this.rank-2]}; + result.z = ${a}; + if (++${o[this.rank-1]} < ${e[this.rank-1]}) { + ++${n[this.rank-1]}; + result.w = ${a}; } } - `,sourceLocSetup=this.rank<=4?`sourceLoc = coords + - ${dtype}(${destSize.map((_,i)=>`start[${i}]`).join()});`:destSize.map((_,i)=>`${sourceLoc[i]} = ${coords2[i]} + start[${i}];`).join(` + `,u=this.rank<=4?`sourceLoc = coords + + ${t}(${e.map((c,p)=>`start[${p}]`).join()});`:e.map((c,p)=>`${n[p]} = ${o[p]} + start[${p}];`).join(` `);this.userCode=` uniform int start[${this.rank}]; void main() { - ${dtype} coords = getOutputCoords(); - ${dtype} sourceLoc; - ${sourceLocSetup} + ${t} coords = getOutputCoords(); + ${t} sourceLoc; + ${u} vec4 result = vec4(0.); - ${upperRow} - ${lowerRow} + ${i} + ${l} setOutput(result); } - `}getCustomSetupFunc(start){if(start.length!==this.rank)throw Error(`The rank (${this.rank}) of the program must match the length of start (${start.length})`);return(gpgpu,webGLProgram)=>{this.startLoc==null&&(this.startLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"start"),this.startLoc==null)||gpgpu.gl.uniform1iv(this.startLoc,start)}}};function shallowSlice(x,begin,size,backend2){let xTexData=backend2.texData.get(x.dataId),t=backend2.makeTensorInfo(size,x.dtype),newTexData=backend2.texData.get(t.dataId);Object.assign(newTexData,xTexData),newTexData.shape=size,newTexData.dtype=x.dtype;let flatOffset=slice_util_exports.computeFlatOffset(begin,util_exports.computeStrides(x.shape));xTexData.slice&&(flatOffset+=xTexData.slice.flatOffset),newTexData.slice={flatOffset,origDataId:xTexData.slice&&xTexData.slice.origDataId||x.dataId};let refCount=backend2.dataRefCount.get(newTexData.slice.origDataId)||1;return backend2.dataRefCount.set(newTexData.slice.origDataId,refCount+1),t}function slice3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{begin,size}=attrs,[$begin,$size]=slice_util_exports.parseSliceParams(x,begin,size);if(slice_util_exports.assertParamsValid(x,$begin,$size),util_exports.sizeFromShape($size)===0)return backend2.makeTensorInfo($size,x.dtype,[]);if(backend2.shouldExecuteOnCPU([x])||x.dtype==="string"){let xTexData=backend2.texData.get(x.dataId),outValues=sliceImplCPU(xTexData.values,$begin,$size,x.shape,x.dtype);return backend2.makeTensorInfo($size,x.dtype,outValues)}let{isPacked}=backend2.texData.get(x.dataId),isContinous=slice_util_exports.isSliceContinous(x.shape,$begin,$size);if(isPacked||!isContinous){let program=env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new SlicePackedProgram($size):new SliceProgram($size),customSetup=program.getCustomSetupFunc($begin);return backend2.runWebGLProgram(program,[x],x.dtype,customSetup)}return backend2.uploadToGPU(x.dataId),shallowSlice(x,$begin,$size,backend2)}var sliceConfig2={kernelName:Slice,backendName:"webgl",kernelFunc:slice3};var batchToSpaceND3=args=>{let{inputs,backend:backend2,attrs}=args,{x}=inputs,{blockShape,crops}=attrs;util_exports.assert(x.shape.length<=4,()=>"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet");let prod5=blockShape.reduce((a,b)=>a*b),reshaped=backend_util_exports.getReshaped(x.shape,blockShape,prod5),permuted=backend_util_exports.getPermuted(reshaped.length,blockShape.length),reshapedPermuted=backend_util_exports.getReshapedPermuted(x.shape,blockShape,prod5),sliceBeginCoords=backend_util_exports.getSliceBeginCoords(crops,blockShape.length),sliceSize=backend_util_exports.getSliceSize(reshapedPermuted,crops,blockShape.length),toDispose=[],reshapedIntermediate=reshape4({inputs:{x},backend:backend2,attrs:{shape:reshaped}}),transposedIntermediate=transpose3({inputs:{x:reshapedIntermediate},backend:backend2,attrs:{perm:permuted}}),reshapedIntermediate2=reshape4({inputs:{x:transposedIntermediate},backend:backend2,attrs:{shape:reshapedPermuted}}),sliced=slice3({inputs:{x:reshapedIntermediate2},backend:backend2,attrs:{begin:sliceBeginCoords,size:sliceSize}});return toDispose.push(reshapedIntermediate),toDispose.push(transposedIntermediate),toDispose.push(reshapedIntermediate2),toDispose.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),sliced},batchToSpaceNDConfig2={kernelName:BatchToSpaceND,backendName:"webgl",kernelFunc:batchToSpaceND3};function bincount3(args){let{inputs,backend:backend2,attrs}=args,{x,weights}=inputs,{size}=attrs,xVals=backend2.readSync(x.dataId),weightsVals=backend2.readSync(weights.dataId),outVals=bincountImplCPU(xVals,weightsVals,weights.dtype,weights.shape,size);return backend2.makeTensorInfo([size],weights.dtype,outVals)}var bincountConfig2={kernelName:Bincount,backendName:"webgl",kernelFunc:bincount3};var NOT_EQUAL="return float(a != b);",notEqual3=binaryKernelFunc2({opSnippet:NOT_EQUAL,dtype:"bool"}),notEqualConfig2={kernelName:NotEqual,backendName:"webgl",kernelFunc:notEqual3};function real3(args){let{inputs,backend:backend2}=args,{input:input2}=inputs,inputData=backend2.texData.get(input2.dataId);return identity3({inputs:{x:inputData.complexTensorInfos.real},backend:backend2})}var realConfig2={kernelName:Real,backendName:"webgl",kernelFunc:real3};var TO_INT="return float(int(x));";function int(input2,backend2){let program=new UnaryOpProgram(input2.shape,TO_INT),output=backend2.runWebGLProgram(program,[input2],"int32");return{dataId:output.dataId,shape:output.shape,dtype:output.dtype}}function cast4(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{dtype}=attrs;if(dtype==="complex64"){if(x.dtype==="complex64")return identity3({inputs:{x},backend:backend2});let zerosTensor=zeros(x.shape),floatX=cast4({inputs:{x},backend:backend2,attrs:{dtype:"float32"}}),result=complex3({inputs:{real:floatX,imag:zerosTensor},backend:backend2});return zerosTensor.dispose(),backend2.disposeIntermediateTensorInfo(floatX),result}if(x.dtype==="complex64"){let realPart=real3({inputs:{input:x},backend:backend2}),result=cast4({inputs:{x:realPart},backend:backend2,attrs:{dtype}});return backend2.disposeIntermediateTensorInfo(realPart),result}if(!util_exports.hasEncodingLoss(x.dtype,dtype)){let result=identity3({inputs:{x},backend:backend2});return{dataId:result.dataId,shape:result.shape,dtype}}if(dtype==="int32")return int(x,backend2);if(dtype==="bool"){let zerosTensorInfo=backend2.makeTensorInfo([],"bool",util_exports.getTypedArrayFromDType("bool",1)),result=notEqual3({inputs:{a:x,b:zerosTensorInfo},backend:backend2});return backend2.disposeIntermediateTensorInfo(zerosTensorInfo),result}throw new Error(`Error in Cast: failed to cast ${x.dtype} to ${dtype}`)}var castConfig2={kernelName:Cast,backendName:"webgl",kernelFunc:cast4};var CEIL="return ceil(x);",ceil3=unaryKernelFunc2({opSnippet:CEIL,packedOpSnippet:CEIL,cpuKernelImpl:ceilImplCPU}),ceilConfig2={kernelName:Ceil,backendName:"webgl",kernelFunc:ceil3};var ClipProgram=class{constructor(aShape){this.variableNames=["A"],this.outputShape=aShape,this.userCode=` + `}getCustomSetupFunc(e){if(e.length!==this.rank)throw Error(`The rank (${this.rank}) of the program must match the length of start (${e.length})`);return(t,o)=>{this.startLoc==null&&(this.startLoc=t.getUniformLocationNoThrow(o,"start"),this.startLoc==null)||t.gl.uniform1iv(this.startLoc,e)}}};function L7(r,e,t,o){let n=o.texData.get(r.dataId),s=o.makeTensorInfo(t,r.dtype),a=o.texData.get(s.dataId);Object.assign(a,n),a.shape=t,a.dtype=r.dtype;let i=sr.computeFlatOffset(e,x.computeStrides(r.shape));n.slice&&(i+=n.slice.flatOffset),a.slice={flatOffset:i,origDataId:n.slice&&n.slice.origDataId||r.dataId};let l=o.dataRefCount.get(a.slice.origDataId)||1;return o.dataRefCount.set(a.slice.origDataId,l+1),s}function qa(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{begin:s,size:a}=o,[i,l]=sr.parseSliceParams(n,s,a);if(sr.assertParamsValid(n,i,l),x.sizeFromShape(l)===0)return t.makeTensorInfo(l,n.dtype,[]);if(t.shouldExecuteOnCPU([n])||n.dtype==="string"){let p=t.texData.get(n.dataId),m=SR(p.values,i,l,n.shape,n.dtype);return t.makeTensorInfo(l,n.dtype,m)}let{isPacked:u}=t.texData.get(n.dataId),c=sr.isSliceContinous(n.shape,i,l);if(u||!c){let p=W().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new aC(l):new sC(l),m=p.getCustomSetupFunc(i);return t.runWebGLProgram(p,[n],n.dtype,m)}return t.uploadToGPU(n.dataId),L7(n,i,l,t)}var AF={kernelName:gs,backendName:"webgl",kernelFunc:qa};var z7=r=>{let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{blockShape:s,crops:a}=o;x.assert(n.shape.length<=4,()=>"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet");let i=s.reduce((b,_)=>b*_),l=S.getReshaped(n.shape,s,i),u=S.getPermuted(l.length,s.length),c=S.getReshapedPermuted(n.shape,s,i),p=S.getSliceBeginCoords(a,s.length),m=S.getSliceSize(c,a,s.length),f=[],d=me({inputs:{x:n},backend:t,attrs:{shape:l}}),h=Bt({inputs:{x:d},backend:t,attrs:{perm:u}}),g=me({inputs:{x:h},backend:t,attrs:{shape:c}}),y=qa({inputs:{x:g},backend:t,attrs:{begin:p,size:m}});return f.push(d),f.push(h),f.push(g),f.forEach(b=>t.disposeIntermediateTensorInfo(b)),y},DF={kernelName:sa,backendName:"webgl",kernelFunc:z7};function B7(r){let{inputs:e,backend:t,attrs:o}=r,{x:n,weights:s}=e,{size:a}=o,i=t.readSync(n.dataId),l=t.readSync(s.dataId),u=$x(i,l,s.dtype,s.shape,a);return t.makeTensorInfo([a],s.dtype,u)}var $F={kernelName:Kl,backendName:"webgl",kernelFunc:B7};var V7="return float(a != b);",lC=at({opSnippet:V7,dtype:"bool"}),RF={kernelName:xi,backendName:"webgl",kernelFunc:lC};function Ha(r){let{inputs:e,backend:t}=r,{input:o}=e,n=t.texData.get(o.dataId);return Ht({inputs:{x:n.complexTensorInfos.real},backend:t})}var FF={kernelName:fu,backendName:"webgl",kernelFunc:Ha};var W7="return float(int(x));";function OF(r,e){let t=new mo(r.shape,W7),o=e.runWebGLProgram(t,[r],"int32");return{dataId:o.dataId,shape:o.shape,dtype:o.dtype}}function uC(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{dtype:s}=o;if(s==="complex64"){if(n.dtype==="complex64")return Ht({inputs:{x:n},backend:t});let a=pt(n.shape),i=uC({inputs:{x:n},backend:t,attrs:{dtype:"float32"}}),l=fo({inputs:{real:i,imag:a},backend:t});return a.dispose(),t.disposeIntermediateTensorInfo(i),l}if(n.dtype==="complex64"){let a=Ha({inputs:{input:n},backend:t}),i=uC({inputs:{x:a},backend:t,attrs:{dtype:s}});return t.disposeIntermediateTensorInfo(a),i}if(!x.hasEncodingLoss(n.dtype,s)){let a=Ht({inputs:{x:n},backend:t});return{dataId:a.dataId,shape:a.shape,dtype:s}}if(s==="int32")return OF(n,t);if(s==="bool"){let a=t.makeTensorInfo([],"bool",x.getTypedArrayFromDType("bool",1)),l=lC({inputs:{a:n,b:a},backend:t});return t.disposeIntermediateTensorInfo(a),l}throw new Error(`Error in Cast: failed to cast ${n.dtype} to ${s}`)}var PF={kernelName:Fo,backendName:"webgl",kernelFunc:uC};var MF="return ceil(x);",G7=Ce({opSnippet:MF,packedOpSnippet:MF,cpuKernelImpl:uR}),LF={kernelName:Js,backendName:"webgl",kernelFunc:G7};var cC=class{constructor(e){this.variableNames=["A"],this.outputShape=e,this.userCode=` uniform float minVal; uniform float maxVal; @@ -1827,7 +1827,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: setOutput(clamp(value, minVal, maxVal)); } - `}getCustomSetupFunc(min6,max6){return(gpgpu,webGLProgram)=>{this.minLoc==null&&(this.minLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"minVal"),this.maxLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"maxVal")),gpgpu.gl.uniform1f(this.minLoc,min6),gpgpu.gl.uniform1f(this.maxLoc,max6)}}};var ClipPackedProgram=class{constructor(aShape){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=aShape,this.userCode=` + `}getCustomSetupFunc(e,t){return(o,n)=>{this.minLoc==null&&(this.minLoc=o.getUniformLocationNoThrow(n,"minVal"),this.maxLoc=o.getUniformLocationNoThrow(n,"maxVal")),o.gl.uniform1f(this.minLoc,e),o.gl.uniform1f(this.maxLoc,t)}}};var pC=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.userCode=` uniform float minVal; uniform float maxVal; @@ -1841,7 +1841,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: setOutput(clamp(value, vec4(minVal), vec4(maxVal))); } - `}getCustomSetupFunc(min6,max6){return(gpgpu,webGLProgram)=>{this.minLoc==null&&(this.minLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"minVal"),this.maxLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"maxVal")),gpgpu.gl.uniform1f(this.minLoc,min6),gpgpu.gl.uniform1f(this.maxLoc,max6)}}};function clipByValue2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{clipValueMin,clipValueMax}=attrs,program;env().getBool("WEBGL_PACK_CLIP")?program=new ClipPackedProgram(x.shape):program=new ClipProgram(x.shape);let customSetup=program.getCustomSetupFunc(clipValueMin,clipValueMax);return backend2.runWebGLProgram(program,[x],x.dtype,customSetup)}var clipByValueConfig={kernelName:ClipByValue,backendName:"webgl",kernelFunc:clipByValue2};var ComplexAbsProgram=class{constructor(shape){this.variableNames=["real","imag"],this.outputShape=shape,this.userCode=` + `}getCustomSetupFunc(e,t){return(o,n)=>{this.minLoc==null&&(this.minLoc=o.getUniformLocationNoThrow(n,"minVal"),this.maxLoc=o.getUniformLocationNoThrow(n,"maxVal")),o.gl.uniform1f(this.minLoc,e),o.gl.uniform1f(this.maxLoc,t)}}};function U7(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{clipValueMin:s,clipValueMax:a}=o,i;W().getBool("WEBGL_PACK_CLIP")?i=new pC(n.shape):i=new cC(n.shape);let l=i.getCustomSetupFunc(s,a);return t.runWebGLProgram(i,[n],n.dtype,l)}var zF={kernelName:Oo,backendName:"webgl",kernelFunc:U7};var mC=class{constructor(e){this.variableNames=["real","imag"],this.outputShape=e,this.userCode=` void main() { float re = abs(getRealAtOutCoords()); float im = abs(getImagAtOutCoords()); @@ -1854,96 +1854,96 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: mx == 0.0 ? 0.0 : mx * length(vec2(1, min(re, im)/mx)) ); } - `}};function makeComplexComponentTensorInfo(complexTensor,complexPart){return{dataId:complexPart.dataId,dtype:complexPart.dtype,shape:complexTensor.shape}}function complexAbs2(args){let{inputs,backend:backend2}=args,{x}=inputs,xData=backend2.texData.get(x.dataId),program=new ComplexAbsProgram(x.shape),programInputs=[makeComplexComponentTensorInfo(x,xData.complexTensorInfos.real),makeComplexComponentTensorInfo(x,xData.complexTensorInfos.imag)];return backend2.runWebGLProgram(program,programInputs,programInputs[0].dtype)}var complexAbsConfig2={kernelName:ComplexAbs,backendName:"webgl",kernelFunc:complexAbs2};var ConcatProgram=class{constructor(shapes){this.outputShape=[],this.outputShape=backend_util_exports.computeOutShape(shapes,1),this.variableNames=shapes.map((_,i)=>`T${i}`);let offsets=new Array(shapes.length-1);offsets[0]=shapes[0][1];for(let i=1;i`T${i}`);let t=new Array(e.length-1);t[0]=e[0][1];for(let a=1;a`T${i}`);let offsets=new Array(shapes.length-1);offsets[0]=shapes[0][axis];for(let i=1;i`T${g}`);let l=new Array(e.length-1);l[0]=e[0][t];for(let h=1;h= ${offsets[i-1]}) { + getT0(${p}), vec2(${c.join()})); + }`;for(let h=1;h= ${l[h-1]}) { return getChannel( - getT${i}(${shiftedChannels(channels,channel,shift2)}), - vec2(${shiftedChannels(lastChannels,channel,shift2)})); - }`}let lastIndex=offsets.length,shift=offsets[offsets.length-1];getValueSnippet+=` + getT${h}(${Vx(i,u,g)}), + vec2(${Vx(c,u,g)})); + }`}let f=l.length,d=l[l.length-1];m+=` return getChannel( - getT${lastIndex}(${shiftedChannels(channels,channel,shift)}), - vec2(${shiftedChannels(lastChannels,channel,shift)}));`,this.userCode=` - float getValue(${channels.map(x=>"int "+x)}) { - ${getValueSnippet} + getT${f}(${Vx(i,u,d)}), + vec2(${Vx(c,u,d)}));`,this.userCode=` + float getValue(${i.map(h=>"int "+h)}) { + ${m} } void main() { - ${dtype} coords = getOutputCoords(); - vec4 result = vec4(getValue(${coords2}), 0., 0., 0.); + ${s} coords = getOutputCoords(); + vec4 result = vec4(getValue(${a}), 0., 0., 0.); - ${coords2[rank-1]} = ${coords2[rank-1]} + 1; - if (${coords2[rank-1]} < ${shape[rank-1]}) { - result.g = getValue(${coords2}); + ${a[n-1]} = ${a[n-1]} + 1; + if (${a[n-1]} < ${o[n-1]}) { + result.g = getValue(${a}); } - ${coords2[rank-2]} = ${coords2[rank-2]} + 1; - if (${coords2[rank-2]} < ${shape[rank-2]}) { - result.a = getValue(${coords2}); + ${a[n-2]} = ${a[n-2]} + 1; + if (${a[n-2]} < ${o[n-2]}) { + result.a = getValue(${a}); } - ${coords2[rank-1]} = ${coords2[rank-1]} - 1; - if (${coords2[rank-2]} < ${shape[rank-2]} && - ${coords2[rank-1]} < ${shape[rank-1]}) { - result.b = getValue(${coords2}); + ${a[n-1]} = ${a[n-1]} - 1; + if (${a[n-2]} < ${o[n-2]} && + ${a[n-1]} < ${o[n-1]}) { + result.b = getValue(${a}); } setOutput(result); } - `}};function shiftedChannels(channels,channel,shift){let channelIdx=channels.indexOf(channel);return channels.map((c,idx)=>idx===channelIdx?`${c} - ${shift}`:c).join()}function imag3(args){let{inputs,backend:backend2}=args,{input:input2}=inputs,inputData=backend2.texData.get(input2.dataId);return identity3({inputs:{x:inputData.complexTensorInfos.imag},backend:backend2})}var imagConfig2={kernelName:Imag,backendName:"webgl",kernelFunc:imag3};function concatImpl2(inputs,axis,backend2){let dtype=inputs[0].dtype;if(dtype==="complex64"){let reals=inputs.map(t=>real3({inputs:{input:t},backend:backend2})),imags=inputs.map(t=>imag3({inputs:{input:t},backend:backend2})),realConcated=concatImpl2(reals,axis,backend2),imagConcated=concatImpl2(imags,axis,backend2),result2=complex3({inputs:{real:realConcated,imag:imagConcated},backend:backend2});return reals.forEach(r=>backend2.disposeIntermediateTensorInfo(r)),imags.forEach(i=>backend2.disposeIntermediateTensorInfo(i)),backend2.disposeIntermediateTensorInfo(realConcated),backend2.disposeIntermediateTensorInfo(imagConcated),result2}if(dtype==="string"){let{tensors2D:tensors2D2,outShape:outShape2}=computeTensors2D(inputs,axis,backend2),inputsValShapes=tensors2D2.map(t=>({vals:backend2.readSync(t.dataId),shape:t.shape})),simplyConcat=tensors2D2[0].shape[0]===1,outVals=concatImplCPU(inputsValShapes,outShape2,dtype,simplyConcat),finalOutShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),axis),outInfo=backend2.makeTensorInfo(finalOutShape,dtype,outVals);return tensors2D2.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),outInfo}if(inputs.length>env().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER")){let midIndex=Math.floor(inputs.length/2),leftSide=concatImpl2(inputs.slice(0,midIndex),axis,backend2),rightSide=concatImpl2(inputs.slice(midIndex),axis,backend2),result2=concatImpl2([leftSide,rightSide],axis,backend2);return backend2.disposeIntermediateTensorInfo(leftSide),backend2.disposeIntermediateTensorInfo(rightSide),result2}if(env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")&&inputs[0].shape.length>1){let program2=new ConcatPackedProgram(inputs.map(t=>t.shape),axis);return backend2.runWebGLProgram(program2,inputs,dtype)}let{tensors2D,outShape}=computeTensors2D(inputs,axis,backend2),program=new ConcatProgram(tensors2D.map(t=>t.shape)),result=backend2.runWebGLProgram(program,tensors2D,dtype);tensors2D.forEach(r=>backend2.disposeIntermediateTensorInfo(r));let reshapedResult=reshape4({inputs:{x:result},attrs:{shape:outShape},backend:backend2});return backend2.disposeIntermediateTensorInfo(result),reshapedResult}function computeTensors2D(inputs,axis,backend2){let outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),axis);return{tensors2D:inputs.map(x=>reshape4({inputs:{x},attrs:{shape:[-1,util_exports.sizeFromShape(x.shape.slice(axis))]},backend:backend2})),outShape}}function concat3(args){let{inputs,backend:backend2,attrs}=args,{axis}=attrs,$axis=util_exports.parseAxisParam(axis,inputs[0].shape)[0],outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),$axis);if(util_exports.sizeFromShape(outShape)===0)return backend2.makeTensorInfo(outShape,inputs[0].dtype,[]);let $inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return identity3({inputs:{x:$inputs[0]},backend:backend2});let shapes=$inputs.map(t=>t.shape);return backend_util_exports.assertParamsConsistent(shapes,$axis),concatImpl2($inputs,$axis,backend2)}var concatConfig2={kernelName:Concat,backendName:"webgl",kernelFunc:concat3};var Conv2DProgram=class{constructor(convInfo,addBias=!1,activation2=null,hasPreluActivationWeights=!1,hasLeakyreluAlpha=!1){this.variableNames=["x","W"],this.outputShape=convInfo.outShape;let padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,inputDepthNearestVec4=Math.floor(convInfo.inChannels/4)*4,inputDepthVec4Remainder=convInfo.inChannels%4,isChannelsLast=convInfo.dataFormat==="channelsLast",rowDim=isChannelsLast?1:2,colDim=isChannelsLast?2:3,channelDim=isChannelsLast?3:1,activationSnippet="",applyActivationSnippet="";activation2&&(hasPreluActivationWeights?activationSnippet=`float activation(float a) { + `}};function Vx(r,e,t){let o=r.indexOf(e);return r.map((s,a)=>a===o?`${s} - ${t}`:s).join()}function fc(r){let{inputs:e,backend:t}=r,{input:o}=e,n=t.texData.get(o.dataId);return Ht({inputs:{x:n.complexTensorInfos.imag},backend:t})}var WF={kernelName:iu,backendName:"webgl",kernelFunc:fc};function dc(r,e,t){let o=r[0].dtype;if(o==="complex64"){let u=r.map(d=>Ha({inputs:{input:d},backend:t})),c=r.map(d=>fc({inputs:{input:d},backend:t})),p=dc(u,e,t),m=dc(c,e,t),f=fo({inputs:{real:p,imag:m},backend:t});return u.forEach(d=>t.disposeIntermediateTensorInfo(d)),c.forEach(d=>t.disposeIntermediateTensorInfo(d)),t.disposeIntermediateTensorInfo(p),t.disposeIntermediateTensorInfo(m),f}if(o==="string"){let{tensors2D:u,outShape:c}=GF(r,e,t),p=u.map(g=>({vals:t.readSync(g.dataId),shape:g.shape})),m=u[0].shape[0]===1,f=cR(p,c,o,m),d=S.computeOutShape(r.map(g=>g.shape),e),h=t.makeTensorInfo(d,o,f);return u.forEach(g=>t.disposeIntermediateTensorInfo(g)),h}if(r.length>W().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER")){let u=Math.floor(r.length/2),c=dc(r.slice(0,u),e,t),p=dc(r.slice(u),e,t),m=dc([c,p],e,t);return t.disposeIntermediateTensorInfo(c),t.disposeIntermediateTensorInfo(p),m}if(W().getBool("WEBGL_PACK_ARRAY_OPERATIONS")&&r[0].shape.length>1){let u=new dC(r.map(c=>c.shape),e);return t.runWebGLProgram(u,r,o)}let{tensors2D:n,outShape:s}=GF(r,e,t),a=new fC(n.map(u=>u.shape)),i=t.runWebGLProgram(a,n,o);n.forEach(u=>t.disposeIntermediateTensorInfo(u));let l=me({inputs:{x:i},attrs:{shape:s},backend:t});return t.disposeIntermediateTensorInfo(i),l}function GF(r,e,t){let o=S.computeOutShape(r.map(s=>s.shape),e);return{tensors2D:r.map(s=>me({inputs:{x:s},attrs:{shape:[-1,x.sizeFromShape(s.shape.slice(e))]},backend:t})),outShape:o}}function hC(r){let{inputs:e,backend:t,attrs:o}=r,{axis:n}=o,s=x.parseAxisParam(n,e[0].shape)[0],a=S.computeOutShape(e.map(u=>u.shape),s);if(x.sizeFromShape(a)===0)return t.makeTensorInfo(a,e[0].dtype,[]);let i=e.filter(u=>x.sizeFromShape(u.shape)>0);if(i.length===1)return Ht({inputs:{x:i[0]},backend:t});let l=i.map(u=>u.shape);return S.assertParamsConsistent(l,s),dc(i,s,t)}var UF={kernelName:as,backendName:"webgl",kernelFunc:hC};var sh=class{constructor(e,t=!1,o=null,n=!1,s=!1){this.variableNames=["x","W"],this.outputShape=e.outShape;let a=e.padInfo.top,i=e.padInfo.left,l=e.strideHeight,u=e.strideWidth,c=e.dilationHeight,p=e.dilationWidth,m=e.filterHeight,f=e.filterWidth,d=Math.floor(e.inChannels/4)*4,h=e.inChannels%4,g=e.dataFormat==="channelsLast",y=g?1:2,b=g?2:3,_=g?3:1,w="",k="";o&&(n?w=`float activation(float a) { float b = getPreluActivationWeightsAtOutCoords(); - ${activation2} - }`:hasLeakyreluAlpha?activationSnippet=`float activation(float a) { + ${o} + }`:s?w=`float activation(float a) { float b = getLeakyreluAlphaAtOutCoords(); - ${activation2} - }`:activationSnippet=` + ${o} + }`:w=` float activation(float x) { - ${activation2} + ${o} } - `,applyActivationSnippet="result = activation(result);");let addBiasSnippet=addBias?"result += getBiasAtOutCoords();":"";addBias&&this.variableNames.push("bias"),hasPreluActivationWeights&&this.variableNames.push("preluActivationWeights"),hasLeakyreluAlpha&&this.variableNames.push("leakyreluAlpha"),this.userCode=` - ${activationSnippet} + `,k="result = activation(result);");let $=t?"result += getBiasAtOutCoords();":"";t&&this.variableNames.push("bias"),n&&this.variableNames.push("preluActivationWeights"),s&&this.variableNames.push("leakyreluAlpha"),this.userCode=` + ${w} - const ivec2 strides = ivec2(${strideHeight}, ${strideWidth}); - const ivec2 pads = ivec2(${padTop}, ${padLeft}); + const ivec2 strides = ivec2(${l}, ${u}); + const ivec2 pads = ivec2(${a}, ${i}); void main() { ivec4 coords = getOutputCoords(); int batch = coords[0]; - int d2 = coords[${channelDim}]; + int d2 = coords[${_}]; ivec2 xRCCorner = - ivec2(coords[${rowDim}], coords[${colDim}]) * strides - pads; + ivec2(coords[${y}], coords[${b}]) * strides - pads; int xRCorner = xRCCorner.x; int xCCorner = xRCCorner.y; // Convolve x(?, ?, d1) with w(:, :, d1, d2) to get y(yR, yC, d2). // ? = to be determined. : = across all values in that axis. float dotProd = 0.0; - for (int wR = 0; wR < ${filterHeight}; wR++) { - int xR = xRCorner + wR * ${dilationHeight}; + for (int wR = 0; wR < ${m}; wR++) { + int xR = xRCorner + wR * ${c}; - if (xR < 0 || xR >= ${convInfo.inHeight}) { + if (xR < 0 || xR >= ${e.inHeight}) { continue; } - for (int wC = 0; wC < ${filterWidth}; wC++) { - int xC = xCCorner + wC * ${dilationWidth}; + for (int wC = 0; wC < ${f}; wC++) { + int xC = xCCorner + wC * ${p}; - if (xC < 0 || xC >= ${convInfo.inWidth}) { + if (xC < 0 || xC >= ${e.inWidth}) { continue; } - for (int d1 = 0; d1 < ${inputDepthNearestVec4}; d1 += 4) { + for (int d1 = 0; d1 < ${d}; d1 += 4) { vec4 wValues = vec4( getW(wR, wC, d1, d2), getW(wR, wC, d1 + 1, d2), @@ -1951,7 +1951,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: getW(wR, wC, d1 + 3, d2) ); - if (${isChannelsLast}) { + if (${g}) { vec4 xValues = vec4( getX(batch, xR, xC, d1), getX(batch, xR, xC, d1 + 1), @@ -1970,57 +1970,57 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } } - if (${inputDepthVec4Remainder===1}) { + if (${h===1}) { - if (${isChannelsLast}) { + if (${g}) { dotProd += - getX(batch, xR, xC, ${inputDepthNearestVec4}) * - getW(wR, wC, ${inputDepthNearestVec4}, d2); + getX(batch, xR, xC, ${d}) * + getW(wR, wC, ${d}, d2); } else { dotProd += - getX(batch, ${inputDepthNearestVec4}, xR, xC) * - getW(wR, wC, ${inputDepthNearestVec4}, d2); + getX(batch, ${d}, xR, xC) * + getW(wR, wC, ${d}, d2); } - } else if (${inputDepthVec4Remainder===2}) { + } else if (${h===2}) { vec2 wValues = vec2( - getW(wR, wC, ${inputDepthNearestVec4}, d2), - getW(wR, wC, ${inputDepthNearestVec4} + 1, d2) + getW(wR, wC, ${d}, d2), + getW(wR, wC, ${d} + 1, d2) ); - if (${isChannelsLast}) { + if (${g}) { vec2 xValues = vec2( - getX(batch, xR, xC, ${inputDepthNearestVec4}), - getX(batch, xR, xC, ${inputDepthNearestVec4} + 1) + getX(batch, xR, xC, ${d}), + getX(batch, xR, xC, ${d} + 1) ); dotProd += dot(xValues, wValues); } else { vec2 xValues = vec2( - getX(batch, ${inputDepthNearestVec4}, xR, xC), - getX(batch, ${inputDepthNearestVec4} + 1, xR, xC) + getX(batch, ${d}, xR, xC), + getX(batch, ${d} + 1, xR, xC) ); dotProd += dot(xValues, wValues); } - } else if (${inputDepthVec4Remainder===3}) { + } else if (${h===3}) { vec3 wValues = vec3( - getW(wR, wC, ${inputDepthNearestVec4}, d2), - getW(wR, wC, ${inputDepthNearestVec4} + 1, d2), - getW(wR, wC, ${inputDepthNearestVec4} + 2, d2) + getW(wR, wC, ${d}, d2), + getW(wR, wC, ${d} + 1, d2), + getW(wR, wC, ${d} + 2, d2) ); - if (${isChannelsLast}) { + if (${g}) { vec3 xValues = vec3( - getX(batch, xR, xC, ${inputDepthNearestVec4}), - getX(batch, xR, xC, ${inputDepthNearestVec4} + 1), - getX(batch, xR, xC, ${inputDepthNearestVec4} + 2) + getX(batch, xR, xC, ${d}), + getX(batch, xR, xC, ${d} + 1), + getX(batch, xR, xC, ${d} + 2) ); dotProd += dot(xValues, wValues); } else { vec3 xValues = vec3( - getX(batch, ${inputDepthNearestVec4}, xR, xC), - getX(batch, ${inputDepthNearestVec4} + 1, xR, xC), - getX(batch, ${inputDepthNearestVec4} + 2, xR, xC) + getX(batch, ${d}, xR, xC), + getX(batch, ${d} + 1, xR, xC), + getX(batch, ${d} + 2, xR, xC) ); dotProd += dot(xValues, wValues); } @@ -2030,13 +2030,13 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } float result = dotProd; - ${addBiasSnippet} - ${applyActivationSnippet} + ${$} + ${k} setOutput(result); } - `}},Conv3DProgram=class{constructor(convInfo){this.variableNames=["x","W"],this.outputShape=convInfo.outShape;let padFront=convInfo.padInfo.front,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,filterDepth=convInfo.filterDepth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,inputDepthNearestVec4=Math.floor(convInfo.inChannels/4)*4,inputDepthVec4Remainder=convInfo.inChannels%4;this.userCode=` - const ivec3 strides = ivec3(${strideDepth}, ${strideHeight}, ${strideWidth}); - const ivec3 pads = ivec3(${padFront}, ${padTop}, ${padLeft}); + `}},gC=class{constructor(e){this.variableNames=["x","W"],this.outputShape=e.outShape;let t=e.padInfo.front,o=e.padInfo.top,n=e.padInfo.left,s=e.strideDepth,a=e.strideHeight,i=e.strideWidth,l=e.dilationDepth,u=e.dilationHeight,c=e.dilationWidth,p=e.filterDepth,m=e.filterHeight,f=e.filterWidth,d=Math.floor(e.inChannels/4)*4,h=e.inChannels%4;this.userCode=` + const ivec3 strides = ivec3(${s}, ${a}, ${i}); + const ivec3 pads = ivec3(${t}, ${o}, ${n}); void main() { ivec5 coords = getOutputCoords(); @@ -2052,28 +2052,28 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // y(yF, yR, yC, d2). ? = to be determined. : = across all // values in that axis. float dotProd = 0.0; - for (int wF = 0; wF < ${filterDepth}; wF++) { - int xF = xFCorner + wF * ${dilationDepth}; + for (int wF = 0; wF < ${p}; wF++) { + int xF = xFCorner + wF * ${l}; - if (xF < 0 || xF >= ${convInfo.inDepth}) { + if (xF < 0 || xF >= ${e.inDepth}) { continue; } - for (int wR = 0; wR < ${filterHeight}; wR++) { - int xR = xRCorner + wR * ${dilationHeight}; + for (int wR = 0; wR < ${m}; wR++) { + int xR = xRCorner + wR * ${u}; - if (xR < 0 || xR >= ${convInfo.inHeight}) { + if (xR < 0 || xR >= ${e.inHeight}) { continue; } - for (int wC = 0; wC < ${filterWidth}; wC++) { - int xC = xCCorner + wC * ${dilationWidth}; + for (int wC = 0; wC < ${f}; wC++) { + int xC = xCCorner + wC * ${c}; - if (xC < 0 || xC >= ${convInfo.inWidth}) { + if (xC < 0 || xC >= ${e.inWidth}) { continue; } - for (int d1 = 0; d1 < ${inputDepthNearestVec4}; d1 += 4) { + for (int d1 = 0; d1 < ${d}; d1 += 4) { vec4 xValues = vec4( getX(batch, xF, xR, xC, d1), getX(batch, xF, xR, xC, d1 + 1), @@ -2090,30 +2090,30 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: dotProd += dot(xValues, wValues); } - if (${inputDepthVec4Remainder===1}) { + if (${h===1}) { dotProd += - getX(batch, xF, xR, xC, ${inputDepthNearestVec4}) * - getW(wF, wR, wC, ${inputDepthNearestVec4}, d2); - } else if (${inputDepthVec4Remainder===2}) { + getX(batch, xF, xR, xC, ${d}) * + getW(wF, wR, wC, ${d}, d2); + } else if (${h===2}) { vec2 xValues = vec2( - getX(batch, xF, xR, xC, ${inputDepthNearestVec4}), - getX(batch, xF, xR, xC, ${inputDepthNearestVec4} + 1) + getX(batch, xF, xR, xC, ${d}), + getX(batch, xF, xR, xC, ${d} + 1) ); vec2 wValues = vec2( - getW(wF, wR, wC, ${inputDepthNearestVec4}, d2), - getW(wF, wR, wC, ${inputDepthNearestVec4} + 1, d2) + getW(wF, wR, wC, ${d}, d2), + getW(wF, wR, wC, ${d} + 1, d2) ); dotProd += dot(xValues, wValues); - } else if (${inputDepthVec4Remainder===3}) { + } else if (${h===3}) { vec3 xValues = vec3( - getX(batch, xF, xR, xC, ${inputDepthNearestVec4}), - getX(batch, xF, xR, xC, ${inputDepthNearestVec4} + 1), - getX(batch, xF, xR, xC, ${inputDepthNearestVec4} + 2) + getX(batch, xF, xR, xC, ${d}), + getX(batch, xF, xR, xC, ${d} + 1), + getX(batch, xF, xR, xC, ${d} + 2) ); vec3 wValues = vec3( - getW(wF, wR, wC, ${inputDepthNearestVec4}, d2), - getW(wF, wR, wC, ${inputDepthNearestVec4} + 1, d2), - getW(wF, wR, wC, ${inputDepthNearestVec4} + 2, d2) + getW(wF, wR, wC, ${d}, d2), + getW(wF, wR, wC, ${d} + 1, d2), + getW(wF, wR, wC, ${d} + 2, d2) ); dotProd += dot(xValues, wValues); } @@ -2122,31 +2122,31 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(dotProd); } - `}};var Im2ColPackedProgram=class{constructor(outputShape,inputShape,convInfo){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=outputShape;let{filterWidth,inChannels,strideWidth,strideHeight,padInfo,outWidth,dilationWidth,dilationHeight,dataFormat}=convInfo,{left,top}=padInfo,itemsPerBlockRow=inChannels*filterWidth,glsl=getGlslDifferences(),isChannelsLast=dataFormat==="channelsLast",rowDim=isChannelsLast?0:1,colDim=isChannelsLast?1:2,unrolled="";for(let row=0;row<=1;row++)for(let col=0;col<=1;col++)unrolled+=` - blockIndex = rc.y + ${col}; - pos = rc.x + ${row}; + `}};var xC=class{constructor(e,t,o){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e;let{filterWidth:n,inChannels:s,strideWidth:a,strideHeight:i,padInfo:l,outWidth:u,dilationWidth:c,dilationHeight:p,dataFormat:m}=o,{left:f,top:d}=l,h=s*n,g=zt(),y=m==="channelsLast",b=y?0:1,_=y?1:2,w="";for(let k=0;k<=1;k++)for(let $=0;$<=1;$++)w+=` + blockIndex = rc.y + ${$}; + pos = rc.x + ${k}; - if(blockIndex < ${outputShape[1]} && pos < ${outputShape[0]}) { - offsetY = int(blockIndex / (${outWidth})) * ${strideHeight} - ${top}; - d0 = offsetY + ${dilationHeight} * (pos / ${itemsPerBlockRow}); + if(blockIndex < ${e[1]} && pos < ${e[0]}) { + offsetY = int(blockIndex / (${u})) * ${i} - ${d}; + d0 = offsetY + ${p} * (pos / ${h}); - if(d0 < ${inputShape[rowDim]} && d0 >= 0) { + if(d0 < ${t[b]} && d0 >= 0) { - offsetX = int(mod(float(blockIndex), ${outWidth}.) * ${strideWidth}. - ${left}.); - d1 = offsetX + ${dilationWidth} * (int(mod(float(pos), ${itemsPerBlockRow}.) / ${inChannels}.)); + offsetX = int(mod(float(blockIndex), ${u}.) * ${a}. - ${f}.); + d1 = offsetX + ${c} * (int(mod(float(pos), ${h}.) / ${s}.)); - if(d1 < ${inputShape[colDim]} && d1 >= 0) { + if(d1 < ${t[_]} && d1 >= 0) { - ch = int(mod(float(pos), ${inChannels}.)); + ch = int(mod(float(pos), ${s}.)); - if (${isChannelsLast}) { + if (${y}) { innerDims = vec2(d1, ch); - result[${row*2+col}] = getChannel( + result[${k*2+$}] = getChannel( getA(d0, int(innerDims.x), int(innerDims.y)), innerDims); } else { innerDims = vec2(d0, d1); - result[${row*2+col}] = getChannel( + result[${k*2+$}] = getChannel( getA(ch, int(innerDims.x), int(innerDims.y)), innerDims); } @@ -2162,11 +2162,11 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: int blockIndex, pos, offsetY, d0, offsetX, d1, ch; vec2 innerDims; - ${unrolled} + ${w} - ${glsl.output} = result; + ${g.output} = result; } - `}};function conv2dByMatMul({x,filter,convInfo,backend:backend2,bias=null,preluActivationWeights=null,leakyreluAlpha=0,activation:activation2=null}){let xShape=x.shape,xTexData=backend2.texData.get(x.dataId),sharedMatMulDim=convInfo.inChannels,outerShapeX=xShape[0]*xShape[1]*xShape[2],outerShapeFilter=convInfo.outChannels,isChannelsLast=convInfo.dataFormat==="channelsLast",transposeA=!1,transposeB=!1,out,intermediates=[],batchMatMulWillBeUnpacked=(outerShapeX===1||outerShapeFilter===1)&&sharedMatMulDim>MATMUL_SHARED_DIM_THRESHOLD,reshapeWillBeExpensive=xShape[2]%2!=0&&!!xTexData.isPacked;if(batchMatMulWillBeUnpacked||!env().getBool("WEBGL_LAZILY_UNPACK")||!env().getBool("WEBGL_PACK_BINARY_OPERATIONS")||!reshapeWillBeExpensive){let targetShape=isChannelsLast?xShape[0]*xShape[1]*xShape[2]:xShape[0]*xShape[2]*xShape[3],xReshaped=reshape4({inputs:{x},backend:backend2,attrs:{shape:[1,targetShape,convInfo.inChannels]}}),filterReshaped=reshape4({inputs:{x:filter},backend:backend2,attrs:{shape:[1,convInfo.inChannels,convInfo.outChannels]}}),result=batchMatMulImpl({a:xReshaped,b:filterReshaped,transposeA,transposeB,backend:backend2,bias,activation:activation2,preluActivationWeights,leakyreluAlpha});out=reshape4({inputs:{x:result},backend:backend2,attrs:{shape:convInfo.outShape}}),intermediates.push(xReshaped),intermediates.push(filterReshaped),intermediates.push(result)}else{let targetShape=isChannelsLast?xShape[0]*xShape[1]*(xShape[2]+1):xShape[0]*xShape[2]*(xShape[3]+1),xReshaped={dataId:x.dataId,shape:[1,targetShape,convInfo.inChannels],dtype:x.dtype},originalXTexDataShape=xTexData.shape;xTexData.shape=xTexData.shape.slice(),xTexData.shape[xTexData.shape.length-2]++,util_exports.assert(isReshapeFree(xTexData.shape,xReshaped.shape),()=>`packed reshape ${xTexData.shape} to ${xReshaped.shape} isn't free`);let filterReshaped=reshape4({inputs:{x:filter},backend:backend2,attrs:{shape:[1,convInfo.inChannels,convInfo.outChannels]}});intermediates.push(filterReshaped);let pointwiseConv=batchMatMulImpl({a:xReshaped,b:filterReshaped,backend:backend2,transposeA,transposeB,bias,activation:activation2,preluActivationWeights,leakyreluAlpha}),pointwiseConvTexData=backend2.texData.get(pointwiseConv.dataId);util_exports.assert(pointwiseConvTexData.isPacked,()=>"batchMatMul result is expected to be packed"),xTexData.shape=originalXTexDataShape,pointwiseConvTexData.shape=convInfo.outShape,out=identity3({inputs:{x:pointwiseConv},backend:backend2}),out.shape=convInfo.outShape,intermediates.push(pointwiseConv)}for(let i of intermediates)backend2.disposeIntermediateTensorInfo(i);return out}function conv2dWithIm2Row({x,filter,convInfo,backend:backend2,bias=null,preluActivationWeights=null,leakyreluAlpha=0,activation:activation2=null}){let{filterWidth,filterHeight,inChannels,outWidth,outHeight,dataFormat}=convInfo,isChannelsLast=dataFormat==="channelsLast",sharedDim=filterWidth*filterHeight*inChannels,numCols=outHeight*outWidth,x2ColShape=[sharedDim,numCols],transposeA=!0,transposeB=!1,intermediates=[],xSqueezed=reshape4({inputs:{x},backend:backend2,attrs:{shape:x.shape.slice(1)}}),w2Row=reshape4({inputs:{x:filter},backend:backend2,attrs:{shape:[1,sharedDim,util_exports.sizeFromShape(filter.shape)/sharedDim]}});intermediates.push(xSqueezed),intermediates.push(w2Row);let im2ColProgram=new Im2ColPackedProgram(x2ColShape,xSqueezed.shape,convInfo),im2Col=backend2.runWebGLProgram(im2ColProgram,[xSqueezed],"float32"),im2ColReshaped=reshape4({inputs:{x:im2Col},backend:backend2,attrs:{shape:[1,x2ColShape[0],x2ColShape[1]]}});intermediates.push(im2Col),intermediates.push(im2ColReshaped);let hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,hasLeakyreluAlpha=activation2==="leakyrelu",fusedActivation=activation2?mapActivationToShaderProgram(activation2,!0):null,matmulProgram=new MatMulPackedProgram(im2ColReshaped.shape,w2Row.shape,[1,numCols,convInfo.outChannels],transposeA,transposeB,hasBias,fusedActivation,hasPreluActivationWeights,hasLeakyreluAlpha),inputs=[im2ColReshaped,w2Row];if(bias&&inputs.push(bias),hasPreluActivationWeights&&inputs.push(preluActivationWeights),hasLeakyreluAlpha){let $leakyreluAlpha=backend2.makeTensorInfo([],"float32",util_exports.createScalarValue(leakyreluAlpha,"float32"));inputs.push($leakyreluAlpha),intermediates.push($leakyreluAlpha)}let product=backend2.runWebGLProgram(matmulProgram,inputs,"float32"),outShape=isChannelsLast?[1,outHeight,outWidth,convInfo.outChannels]:[1,convInfo.outChannels,outHeight,outWidth],out=reshape4({inputs:{x:product},backend:backend2,attrs:{shape:outShape}});intermediates.push(product);for(let i of intermediates)backend2.disposeIntermediateTensorInfo(i);return out}function conv2d4(args){let{inputs,backend:backend2,attrs}=args,{x,filter}=inputs,{strides,pad:pad3,dataFormat,dilations,dimRoundingMode}=attrs,$dataFormat=backend_util_exports.convertConv2DDataFormat(dataFormat),convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad3,dimRoundingMode,!1,$dataFormat),out;if(convInfo.filterHeight===1&&convInfo.filterWidth===1&&convInfo.dilationHeight===1&&convInfo.dilationWidth===1&&convInfo.strideHeight===1&&convInfo.strideWidth===1&&(convInfo.padInfo.type==="SAME"||convInfo.padInfo.type==="VALID"))out=conv2dByMatMul({x,filter,convInfo,backend:backend2});else if(env().getBool("WEBGL_CONV_IM2COL")&&x.shape[0]===1)out=conv2dWithIm2Row({x,filter,convInfo,backend:backend2});else{let program=new Conv2DProgram(convInfo);out=backend2.runWebGLProgram(program,[x,filter],"float32")}let outReshaped=reshape4({inputs:{x:out},backend:backend2,attrs:{shape:convInfo.outShape}});return backend2.disposeIntermediateTensorInfo(out),outReshaped}var conv2DConfig2={kernelName:Conv2D,backendName:"webgl",kernelFunc:conv2d4};var Conv2DDerFilterProgram=class{constructor(convInfo){this.variableNames=["x","dy"],this.outputShape=convInfo.filterShape;let strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,isChannelsLast=convInfo.dataFormat==="channelsLast";this.userCode=` + `}};function Wx({x:r,filter:e,convInfo:t,backend:o,bias:n=null,preluActivationWeights:s=null,leakyreluAlpha:a=0,activation:i=null}){let l=r.shape,u=o.texData.get(r.dataId),c=t.inChannels,p=l[0]*l[1]*l[2],m=t.outChannels,f=t.dataFormat==="channelsLast",d=!1,h=!1,g,y=[],b=(p===1||m===1)&&c>Yk,_=l[2]%2!=0&&!!u.isPacked;if(b||!W().getBool("WEBGL_LAZILY_UNPACK")||!W().getBool("WEBGL_PACK_BINARY_OPERATIONS")||!_){let w=f?l[0]*l[1]*l[2]:l[0]*l[2]*l[3],k=me({inputs:{x:r},backend:o,attrs:{shape:[1,w,t.inChannels]}}),$=me({inputs:{x:e},backend:o,attrs:{shape:[1,t.inChannels,t.outChannels]}}),T=pc({a:k,b:$,transposeA:d,transposeB:h,backend:o,bias:n,activation:i,preluActivationWeights:s,leakyreluAlpha:a});g=me({inputs:{x:T},backend:o,attrs:{shape:t.outShape}}),y.push(k),y.push($),y.push(T)}else{let w=f?l[0]*l[1]*(l[2]+1):l[0]*l[2]*(l[3]+1),k={dataId:r.dataId,shape:[1,w,t.inChannels],dtype:r.dtype},$=u.shape;u.shape=u.shape.slice(),u.shape[u.shape.length-2]++,x.assert(uc(u.shape,k.shape),()=>`packed reshape ${u.shape} to ${k.shape} isn't free`);let T=me({inputs:{x:e},backend:o,attrs:{shape:[1,t.inChannels,t.outChannels]}});y.push(T);let F=pc({a:k,b:T,backend:o,transposeA:d,transposeB:h,bias:n,activation:i,preluActivationWeights:s,leakyreluAlpha:a}),M=o.texData.get(F.dataId);x.assert(M.isPacked,()=>"batchMatMul result is expected to be packed"),u.shape=$,M.shape=t.outShape,g=Ht({inputs:{x:F},backend:o}),g.shape=t.outShape,y.push(F)}for(let w of y)o.disposeIntermediateTensorInfo(w);return g}function Gx({x:r,filter:e,convInfo:t,backend:o,bias:n=null,preluActivationWeights:s=null,leakyreluAlpha:a=0,activation:i=null}){let{filterWidth:l,filterHeight:u,inChannels:c,outWidth:p,outHeight:m,dataFormat:f}=t,d=f==="channelsLast",h=l*u*c,g=m*p,y=[h,g],b=!0,_=!1,w=[],k=me({inputs:{x:r},backend:o,attrs:{shape:r.shape.slice(1)}}),$=me({inputs:{x:e},backend:o,attrs:{shape:[1,h,x.sizeFromShape(e.shape)/h]}});w.push(k),w.push($);let T=new xC(y,k.shape,t),F=o.runWebGLProgram(T,[k],"float32"),M=me({inputs:{x:F},backend:o,attrs:{shape:[1,y[0],y[1]]}});w.push(F),w.push(M);let L=n!=null,G=s!=null,H=i==="leakyrelu",U=i?Dl(i,!0):null,Z=new oh(M.shape,$.shape,[1,g,t.outChannels],b,_,L,U,G,H),K=[M,$];if(n&&K.push(n),G&&K.push(s),H){let Q=o.makeTensorInfo([],"float32",x.createScalarValue(a,"float32"));K.push(Q),w.push(Q)}let X=o.runWebGLProgram(Z,K,"float32"),oe=d?[1,m,p,t.outChannels]:[1,t.outChannels,m,p],J=me({inputs:{x:X},backend:o,attrs:{shape:oe}});w.push(X);for(let Q of w)o.disposeIntermediateTensorInfo(Q);return J}function q7(r){let{inputs:e,backend:t,attrs:o}=r,{x:n,filter:s}=e,{strides:a,pad:i,dataFormat:l,dilations:u,dimRoundingMode:c}=o,p=S.convertConv2DDataFormat(l),m=S.computeConv2DInfo(n.shape,s.shape,a,u,i,c,!1,p),f;if(m.filterHeight===1&&m.filterWidth===1&&m.dilationHeight===1&&m.dilationWidth===1&&m.strideHeight===1&&m.strideWidth===1&&(m.padInfo.type==="SAME"||m.padInfo.type==="VALID"))f=Wx({x:n,filter:s,convInfo:m,backend:t});else if(W().getBool("WEBGL_CONV_IM2COL")&&n.shape[0]===1)f=Gx({x:n,filter:s,convInfo:m,backend:t});else{let h=new sh(m);f=t.runWebGLProgram(h,[n,s],"float32")}let d=me({inputs:{x:f},backend:t,attrs:{shape:m.outShape}});return t.disposeIntermediateTensorInfo(f),d}var jF={kernelName:Zo,backendName:"webgl",kernelFunc:q7};var yC=class{constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;let t=e.strideHeight,o=e.strideWidth,n=e.padInfo.top,s=e.padInfo.left,a=e.dataFormat==="channelsLast";this.userCode=` void main() { ivec4 coords = getOutputCoords(); int wR = coords.x; @@ -2178,22 +2178,22 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // ? = to be determined. : = across all values in that axis. float dotProd = 0.0; - for (int b = 0; b < ${convInfo.batchSize}; b++) { - for (int yR = 0; yR < ${convInfo.outHeight}; yR++) { - int xR = wR + yR * ${strideHeight} - ${padTop}; + for (int b = 0; b < ${e.batchSize}; b++) { + for (int yR = 0; yR < ${e.outHeight}; yR++) { + int xR = wR + yR * ${t} - ${n}; - if (xR < 0 || xR >= ${convInfo.inHeight}) { + if (xR < 0 || xR >= ${e.inHeight}) { continue; } - for (int yC = 0; yC < ${convInfo.outWidth}; yC++) { - int xC = wC + yC * ${strideWidth} - ${padLeft}; + for (int yC = 0; yC < ${e.outWidth}; yC++) { + int xC = wC + yC * ${o} - ${s}; - if (xC < 0 || xC >= ${convInfo.inWidth}) { + if (xC < 0 || xC >= ${e.inWidth}) { continue; } - if (${isChannelsLast}) { + if (${a}) { float dyValue = getDy(b, yR, yC, d2); float xValue = getX(b, xR, xC, d1); dotProd += (xValue * dyValue); @@ -2208,45 +2208,45 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(dotProd); } - `}},Conv2DDerInputProgram=class{constructor(convInfo){this.variableNames=["dy","W"],this.outputShape=convInfo.inShape;let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,isChannelsLast=convInfo.dataFormat==="channelsLast",padTop=filterHeight-1-convInfo.padInfo.top,padLeft=filterWidth-1-convInfo.padInfo.left,rowDim=isChannelsLast?1:2,colDim=isChannelsLast?2:3,channelDim=isChannelsLast?3:1;this.userCode=` - const ivec2 pads = ivec2(${padTop}, ${padLeft}); + `}},bC=class{constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;let t=e.filterHeight,o=e.filterWidth,n=e.strideHeight,s=e.strideWidth,a=e.dataFormat==="channelsLast",i=t-1-e.padInfo.top,l=o-1-e.padInfo.left,u=a?1:2,c=a?2:3,p=a?3:1;this.userCode=` + const ivec2 pads = ivec2(${i}, ${l}); void main() { ivec4 coords = getOutputCoords(); int batch = coords[0]; - int d1 = coords[${channelDim}]; + int d1 = coords[${p}]; - ivec2 dyCorner = ivec2(coords[${rowDim}], coords[${colDim}]) - pads; + ivec2 dyCorner = ivec2(coords[${u}], coords[${c}]) - pads; int dyRCorner = dyCorner.x; int dyCCorner = dyCorner.y; // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1). // ? = to be determined. : = across all values in that axis. float dotProd = 0.0; - for (int wR = 0; wR < ${filterHeight}; wR++) { - float dyR = float(dyRCorner + wR) / ${strideHeight}.0; + for (int wR = 0; wR < ${t}; wR++) { + float dyR = float(dyRCorner + wR) / ${n}.0; - if (dyR < 0.0 || dyR >= ${convInfo.outHeight}.0 || fract(dyR) > 0.0) { + if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || fract(dyR) > 0.0) { continue; } int idyR = int(dyR); - int wRPerm = ${filterHeight} - 1 - wR; + int wRPerm = ${t} - 1 - wR; - for (int wC = 0; wC < ${filterWidth}; wC++) { - float dyC = float(dyCCorner + wC) / ${strideWidth}.0; + for (int wC = 0; wC < ${o}; wC++) { + float dyC = float(dyCCorner + wC) / ${s}.0; - if (dyC < 0.0 || dyC >= ${convInfo.outWidth}.0 || + if (dyC < 0.0 || dyC >= ${e.outWidth}.0 || fract(dyC) > 0.0) { continue; } int idyC = int(dyC); - int wCPerm = ${filterWidth} - 1 - wC; + int wCPerm = ${o} - 1 - wC; - for (int d2 = 0; d2 < ${convInfo.outChannels}; d2++) { + for (int d2 = 0; d2 < ${e.outChannels}; d2++) { - if (${isChannelsLast}) { + if (${a}) { float xValue = getDy(batch, idyR, idyC, d2); float wValue = getW(wRPerm, wCPerm, d1, d2); dotProd += xValue * wValue; @@ -2261,7 +2261,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(dotProd); } - `}},Conv3DDerFilterProgram=class{constructor(convInfo){this.variableNames=["x","dy"],this.outputShape=convInfo.filterShape;let strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,padFront=convInfo.padInfo.front,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left;this.userCode=` + `}},_C=class{constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;let t=e.strideDepth,o=e.strideHeight,n=e.strideWidth,s=e.padInfo.front,a=e.padInfo.top,i=e.padInfo.left;this.userCode=` void main() { ivec5 coords = getOutputCoords(); int wF = coords.x; @@ -2272,25 +2272,25 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: float dotProd = 0.0; - for (int b = 0; b < ${convInfo.batchSize}; b++) { - for (int yF = 0; yF < ${convInfo.outDepth}; yF++) { - int xF = wF + yF * ${strideDepth} - ${padFront}; + for (int b = 0; b < ${e.batchSize}; b++) { + for (int yF = 0; yF < ${e.outDepth}; yF++) { + int xF = wF + yF * ${t} - ${s}; - if (xF < 0 || xF >= ${convInfo.inDepth}) { + if (xF < 0 || xF >= ${e.inDepth}) { continue; } - for (int yR = 0; yR < ${convInfo.outHeight}; yR++) { - int xR = wR + yR * ${strideHeight} - ${padTop}; + for (int yR = 0; yR < ${e.outHeight}; yR++) { + int xR = wR + yR * ${o} - ${a}; - if (xR < 0 || xR >= ${convInfo.inHeight}) { + if (xR < 0 || xR >= ${e.inHeight}) { continue; } - for (int yC = 0; yC < ${convInfo.outWidth}; yC++) { - int xC = wC + yC * ${strideWidth} - ${padLeft}; + for (int yC = 0; yC < ${e.outWidth}; yC++) { + int xC = wC + yC * ${n} - ${i}; - if (xC < 0 || xC >= ${convInfo.inWidth}) { + if (xC < 0 || xC >= ${e.inWidth}) { continue; } @@ -2303,8 +2303,8 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(dotProd); } - `}},Conv3DDerInputProgram=class{constructor(convInfo){this.variableNames=["dy","W"],this.outputShape=convInfo.inShape;let filterDepth=convInfo.filterDepth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,padFront=filterDepth-1-convInfo.padInfo.front,padTop=filterHeight-1-convInfo.padInfo.top,padLeft=filterWidth-1-convInfo.padInfo.left;this.userCode=` - const ivec3 pads = ivec3(${padFront}, ${padTop}, ${padLeft}); + `}},wC=class{constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;let t=e.filterDepth,o=e.filterHeight,n=e.filterWidth,s=e.strideDepth,a=e.strideHeight,i=e.strideWidth,l=t-1-e.padInfo.front,u=o-1-e.padInfo.top,c=n-1-e.padInfo.left;this.userCode=` + const ivec3 pads = ivec3(${l}, ${u}, ${c}); void main() { ivec5 coords = getOutputCoords(); @@ -2318,39 +2318,39 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: int dyCCorner = dyCorner.z; float dotProd = 0.0; - for (int wF = 0; wF < ${filterDepth}; wF++) { - float dyF = float(dyFCorner + wF) / ${strideDepth}.0; + for (int wF = 0; wF < ${t}; wF++) { + float dyF = float(dyFCorner + wF) / ${s}.0; - if (dyF < 0.0 || dyF >= ${convInfo.outDepth}.0 || fract(dyF) > 0.0) { + if (dyF < 0.0 || dyF >= ${e.outDepth}.0 || fract(dyF) > 0.0) { continue; } int idyF = int(dyF); - int wFPerm = ${filterDepth} - 1 - wF; + int wFPerm = ${t} - 1 - wF; - for (int wR = 0; wR < ${filterHeight}; wR++) { - float dyR = float(dyRCorner + wR) / ${strideHeight}.0; + for (int wR = 0; wR < ${o}; wR++) { + float dyR = float(dyRCorner + wR) / ${a}.0; - if (dyR < 0.0 || dyR >= ${convInfo.outHeight}.0 || + if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || fract(dyR) > 0.0) { continue; } int idyR = int(dyR); - int wRPerm = ${filterHeight} - 1 - wR; + int wRPerm = ${o} - 1 - wR; - for (int wC = 0; wC < ${filterWidth}; wC++) { - float dyC = float(dyCCorner + wC) / ${strideWidth}.0; + for (int wC = 0; wC < ${n}; wC++) { + float dyC = float(dyCCorner + wC) / ${i}.0; - if (dyC < 0.0 || dyC >= ${convInfo.outWidth}.0 || + if (dyC < 0.0 || dyC >= ${e.outWidth}.0 || fract(dyC) > 0.0) { continue; } int idyC = int(dyC); - int wCPerm = ${filterWidth} - 1 - wC; + int wCPerm = ${n} - 1 - wC; - for (int d2 = 0; d2 < ${convInfo.outChannels}; d2++) { + for (int d2 = 0; d2 < ${e.outChannels}; d2++) { float xValue = getDy(batch, idyF, idyR, idyC, d2); float wValue = getW(wFPerm, wRPerm, wCPerm, d1, d2); dotProd += xValue * wValue; @@ -2360,14 +2360,14 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(dotProd); } - `}};function conv2DBackpropFilter3(args){let{inputs,backend:backend2,attrs}=args,{x,dy}=inputs,{strides,pad:pad3,dataFormat,dimRoundingMode,filterShape}=attrs,$dataFormat=backend_util_exports.convertConv2DDataFormat(dataFormat),convInfo=backend_util_exports.computeConv2DInfo(x.shape,filterShape,strides,1,pad3,dimRoundingMode,!1,$dataFormat),program=new Conv2DDerFilterProgram(convInfo);return backend2.runWebGLProgram(program,[x,dy],"float32")}var conv2DBackpropFilterConfig2={kernelName:Conv2DBackpropFilter,backendName:"webgl",kernelFunc:conv2DBackpropFilter3};function conv2DBackpropInput3(args){let{inputs,backend:backend2,attrs}=args,{dy,filter}=inputs,{inputShape,strides,pad:pad3,dataFormat,dimRoundingMode}=attrs,$dataFormat=backend_util_exports.convertConv2DDataFormat(dataFormat),convInfo=backend_util_exports.computeConv2DInfo(inputShape,filter.shape,strides,1,pad3,dimRoundingMode,!1,$dataFormat),program=new Conv2DDerInputProgram(convInfo);return backend2.runWebGLProgram(program,[dy,filter],"float32")}var conv2DBackpropInputConfig2={kernelName:Conv2DBackpropInput,backendName:"webgl",kernelFunc:conv2DBackpropInput3};function conv3D2(args){let{inputs,backend:backend2,attrs}=args,{x,filter}=inputs,{strides,pad:pad3,dilations}=attrs,convInfo=backend_util_exports.computeConv3DInfo(x.shape,filter.shape,strides,dilations,pad3),program=new Conv3DProgram(convInfo);return backend2.runWebGLProgram(program,[x,filter],"float32")}var conv3DConfig2={kernelName:Conv3D,backendName:"webgl",kernelFunc:conv3D2};function conv3DBackpropFilterV22(args){let{inputs,backend:backend2,attrs}=args,{x,dy}=inputs,{strides,pad:pad3,filterShape}=attrs,convInfo=backend_util_exports.computeConv3DInfo(x.shape,filterShape,strides,1,pad3),program=new Conv3DDerFilterProgram(convInfo);return backend2.runWebGLProgram(program,[x,dy],"float32")}var conv3DBackpropFilterV2Config2={kernelName:Conv3DBackpropFilterV2,backendName:"webgl",kernelFunc:conv3DBackpropFilterV22};function conv3DBackpropInput2(args){let{inputs,backend:backend2,attrs}=args,{dy,filter}=inputs,{pad:pad3,strides,inputShape}=attrs,convInfo=backend_util_exports.computeConv3DInfo(inputShape,filter.shape,strides,1,pad3),program=new Conv3DDerInputProgram(convInfo);return backend2.runWebGLProgram(program,[dy,filter],"float32")}var conv3DBackpropInputConfig={kernelName:Conv3DBackpropInputV2,backendName:"webgl",kernelFunc:conv3DBackpropInput2};var COS=CHECK_NAN_SNIPPET_UNARY+` + `}};function H7(r){let{inputs:e,backend:t,attrs:o}=r,{x:n,dy:s}=e,{strides:a,pad:i,dataFormat:l,dimRoundingMode:u,filterShape:c}=o,p=S.convertConv2DDataFormat(l),m=S.computeConv2DInfo(n.shape,c,a,1,i,u,!1,p),f=new yC(m);return t.runWebGLProgram(f,[n,s],"float32")}var qF={kernelName:Yl,backendName:"webgl",kernelFunc:H7};function K7(r){let{inputs:e,backend:t,attrs:o}=r,{dy:n,filter:s}=e,{inputShape:a,strides:i,pad:l,dataFormat:u,dimRoundingMode:c}=o,p=S.convertConv2DDataFormat(u),m=S.computeConv2DInfo(a,s.shape,i,1,l,c,!1,p),f=new bC(m);return t.runWebGLProgram(f,[n,s],"float32")}var HF={kernelName:Jo,backendName:"webgl",kernelFunc:K7};function X7(r){let{inputs:e,backend:t,attrs:o}=r,{x:n,filter:s}=e,{strides:a,pad:i,dilations:l}=o,u=S.computeConv3DInfo(n.shape,s.shape,a,l,i),c=new gC(u);return t.runWebGLProgram(c,[n,s],"float32")}var KF={kernelName:aa,backendName:"webgl",kernelFunc:X7};function Y7(r){let{inputs:e,backend:t,attrs:o}=r,{x:n,dy:s}=e,{strides:a,pad:i,filterShape:l}=o,u=S.computeConv3DInfo(n.shape,l,a,1,i),c=new _C(u);return t.runWebGLProgram(c,[n,s],"float32")}var XF={kernelName:Zl,backendName:"webgl",kernelFunc:Y7};function Z7(r){let{inputs:e,backend:t,attrs:o}=r,{dy:n,filter:s}=e,{pad:a,strides:i,inputShape:l}=o,u=S.computeConv3DInfo(l,s.shape,i,1,a),c=new wC(u);return t.runWebGLProgram(c,[n,s],"float32")}var YF={kernelName:Jl,backendName:"webgl",kernelFunc:Z7};var J7=Px+` return cos(x); -`,cos3=unaryKernelFunc2({opSnippet:COS}),cosConfig2={kernelName:Cos,backendName:"webgl",kernelFunc:cos3};var COSH=` +`,Q7=Ce({opSnippet:J7}),ZF={kernelName:Qo,backendName:"webgl",kernelFunc:Q7};var eZ=` float e2x = exp(-x); return (e2x + 1.0 / e2x) / 2.0; -`,cosh3=unaryKernelFunc2({opSnippet:COSH}),coshConfig2={kernelName:Cosh,backendName:"webgl",kernelFunc:cosh3};var CropAndResizeProgram=class{constructor(imageShape,boxShape,cropSize,method,extrapolationValue){this.variableNames=["Image","Boxes","BoxInd"],this.outputShape=[];let[batch,imageHeight,imageWidth,depth]=imageShape,[numBoxes]=boxShape,[cropHeight,cropWidth]=cropSize;this.outputShape=[numBoxes,cropHeight,cropWidth,depth];let methodId=method==="bilinear"?1:0,[inputHeightFloat,inputWidthFloat]=[`${imageHeight-1}.0`,`${imageWidth-1}.0`],[heightRatio,heightScale,inY]=cropHeight>1?[`${(imageHeight-1)/(cropHeight-1)}`,"(y2-y1) * height_ratio",`y1*${inputHeightFloat} + float(y)*(height_scale)`]:["0.0","0.0",`0.5 * (y1+y2) * ${inputHeightFloat}`],[widthRatio,widthScale,inX]=cropWidth>1?[`${(imageWidth-1)/(cropWidth-1)}`,"(x2-x1) * width_ratio",`x1*${inputWidthFloat} + float(x)*(width_scale)`]:["0.0","0.0",`0.5 * (x1+x2) * ${inputWidthFloat}`];this.userCode=` - const float height_ratio = float(${heightRatio}); - const float width_ratio = float(${widthRatio}); +`,tZ=Ce({opSnippet:eZ}),JF={kernelName:Qs,backendName:"webgl",kernelFunc:tZ};var vC=class{constructor(e,t,o,n,s){this.variableNames=["Image","Boxes","BoxInd"],this.outputShape=[];let[a,i,l,u]=e,[c]=t,[p,m]=o;this.outputShape=[c,p,m,u];let f=n==="bilinear"?1:0,[d,h]=[`${i-1}.0`,`${l-1}.0`],[g,y,b]=p>1?[`${(i-1)/(p-1)}`,"(y2-y1) * height_ratio",`y1*${d} + float(y)*(height_scale)`]:["0.0","0.0",`0.5 * (y1+y2) * ${d}`],[_,w,k]=m>1?[`${(l-1)/(m-1)}`,"(x2-x1) * width_ratio",`x1*${h} + float(x)*(width_scale)`]:["0.0","0.0",`0.5 * (x1+x2) * ${h}`];this.userCode=` + const float height_ratio = float(${g}); + const float width_ratio = float(${_}); void main() { ivec4 coords = getOutputCoords(); int b = coords[0]; @@ -2383,26 +2383,26 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // get image in batch index int bInd = round(getBoxInd(b)); - if(bInd < 0 || bInd >= ${batch}) { + if(bInd < 0 || bInd >= ${a}) { return; } - float height_scale = ${heightScale}; - float width_scale = ${widthScale}; + float height_scale = ${y}; + float width_scale = ${w}; - float in_y = ${inY}; - if( in_y < 0.0 || in_y > ${inputHeightFloat} ) { - setOutput(float(${extrapolationValue})); + float in_y = ${b}; + if( in_y < 0.0 || in_y > ${d} ) { + setOutput(float(${s})); return; } - float in_x = ${inX}; - if( in_x < 0.0 || in_x > ${inputWidthFloat} ) { - setOutput(float(${extrapolationValue})); + float in_x = ${k}; + if( in_x < 0.0 || in_x > ${h} ) { + setOutput(float(${s})); return; } vec2 sourceFracIndexCR = vec2(in_x,in_y); - if(${methodId} == 1) { + if(${f} == 1) { // Compute the four integer indices. ivec2 sourceFloorCR = ivec2(sourceFracIndexCR); ivec2 sourceCeilCR = ivec2(ceil(sourceFracIndexCR)); @@ -2426,21 +2426,21 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: setOutput(newValue); } } - `}};var cropAndResize3=args=>{let{inputs,backend:backend2,attrs}=args,{image:image3,boxes,boxInd}=inputs,{cropSize,method,extrapolationValue}=attrs,program=new CropAndResizeProgram(image3.shape,boxes.shape,cropSize,method,extrapolationValue);return backend2.runWebGLProgram(program,[image3,boxes,boxInd],"float32")},cropAndResizeConfig2={kernelName:CropAndResize,backendName:"webgl",kernelFunc:cropAndResize3};var CumSumProgram=class{constructor(shape,exclusive,reverse5){this.variableNames=["x"],this.outputShape=shape;let rank=shape.length,val=exclusive?"0.0":`getX(${getCoords2(rank,"coords")})`,length=shape[shape.length-1],condition="",idxString="";exclusive?(condition=reverse5?`end != ${length-1}`:"end != 0",idxString=reverse5?"end + 1":"end - 1"):(condition=reverse5?`end + pow2 < ${length}`:"end >= pow2",idxString=reverse5?"end + pow2":"end - pow2"),this.userCode=` + `}};var rZ=r=>{let{inputs:e,backend:t,attrs:o}=r,{image:n,boxes:s,boxInd:a}=e,{cropSize:i,method:l,extrapolationValue:u}=o,c=new vC(n.shape,s.shape,i,l,u);return t.runWebGLProgram(c,[n,s,a],"float32")},QF={kernelName:ei,backendName:"webgl",kernelFunc:rZ};var Ux=class{constructor(e,t,o){this.variableNames=["x"],this.outputShape=e;let n=e.length,s=t?"0.0":`getX(${eO(n,"coords")})`,a=e[e.length-1],i="",l="";t?(i=o?`end != ${a-1}`:"end != 0",l=o?"end + 1":"end - 1"):(i=o?`end + pow2 < ${a}`:"end >= pow2",l=o?"end + pow2":"end - pow2"),this.userCode=` uniform float index; void main() { - ${getCoordsDataType(rank)} coords = getOutputCoords(); - int end = ${getFinalCoord(rank,"coords")}; - float val = ${val}; + ${Be(n)} coords = getOutputCoords(); + int end = ${tO(n,"coords")}; + float val = ${s}; int pow2 = int(pow(2.0, index)); - if (${condition}) { - int idx = ${idxString}; - ${getFinalCoord(rank,"coords")} = idx; - val += getX(${getCoords2(rank,"coords")}); + if (${i}) { + int idx = ${l}; + ${tO(n,"coords")} = idx; + val += getX(${eO(n,"coords")}); } setOutput(val); } - `}getCustomSetupFunc(index){return(gpgpu,webGLProgram)=>{this.index==null&&(this.index=gpgpu.getUniformLocation(webGLProgram,"index")),gpgpu.gl.uniform1f(this.index,index)}}};function getCoords2(rank,name){if(rank===1)return`${name}`;if(rank===2)return`${name}.x, ${name}.y`;if(rank===3)return`${name}.x, ${name}.y, ${name}.z`;if(rank===4)return`${name}.x, ${name}.y, ${name}.z, ${name}.w`;throw Error(`Cumulative sum for rank ${rank} is not yet supported`)}function getFinalCoord(rank,name){if(rank===1)return`${name}`;if(rank===2)return`${name}.y`;if(rank===3)return`${name}.z`;if(rank===4)return`${name}.w`;throw Error(`Cumulative sum for rank ${rank} is not yet supported`)}function cumsum3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{axis,exclusive,reverse:reverse5}=attrs,xRank=x.shape.length,permutation=backend_util_exports.getAxesPermutation([axis],xRank),permutedX=x;permutation!=null&&(permutedX=transpose3({inputs:{x},backend:backend2,attrs:{perm:permutation}}));let permutedAxis=backend_util_exports.getInnerMostAxes(1,xRank)[0];if(permutedAxis!==xRank-1)throw new Error(`WebGL cumsum shader expects an inner-most axis=${x.shape.length-1} but got axis=${axis}`);let size=x.shape[permutedAxis],result=identity3({inputs:{x:permutedX},backend:backend2});for(let i=0;i<=Math.ceil(Math.log2(size))-1;i++){let program=new CumSumProgram(permutedX.shape,!1,reverse5),customSetup=program.getCustomSetupFunc(i),prevResult=result;result=backend2.runWebGLProgram(program,[result],result.dtype,customSetup),backend2.disposeIntermediateTensorInfo(prevResult)}if(exclusive){let program=new CumSumProgram(permutedX.shape,exclusive,reverse5),prevResult=result;result=backend2.runWebGLProgram(program,[result],result.dtype),backend2.disposeIntermediateTensorInfo(prevResult)}if(permutation!=null){let reversePermutation=backend_util_exports.getUndoAxesPermutation(permutation),reverseTransposedResult=transpose3({inputs:{x:result},backend:backend2,attrs:{perm:reversePermutation}});return backend2.disposeIntermediateTensorInfo(result),backend2.disposeIntermediateTensorInfo(permutedX),reverseTransposedResult}return result}var cumsumConfig2={kernelName:Cumsum,backendName:"webgl",kernelFunc:cumsum3};function denseBincount3(args){let{inputs,backend:backend2,attrs}=args,{x,weights}=inputs,{size,binaryOutput}=attrs;if(x.shape.length===1){let xVals=backend2.readSync(x.dataId),weightsVals=backend2.readSync(weights.dataId),outVals=bincountImplCPU(xVals,weightsVals,weights.dtype,weights.shape,size);return backend2.makeTensorInfo([size],weights.dtype,outVals)}else if(x.shape.length===2){let xBuf=backend2.bufferSync(x),weightsBuf=backend2.bufferSync(weights),outBuf=bincountReduceImplCPU(xBuf,weightsBuf,size,binaryOutput);return backend2.makeTensorInfo(outBuf.shape,weights.dtype,outBuf.values)}throw new Error(`Error in denseBincount: input must be at most rank 2, but got rank${x.shape.length}.`)}var denseBincountConfig2={kernelName:DenseBincount,backendName:"webgl",kernelFunc:denseBincount3};var DepthToSpaceProgram=class{constructor(outputShape,blockSize,dataFormat){this.variableNames=["x"],this.outputShape=[],this.outputShape=outputShape,this.blockSize=blockSize,this.dataFormat=dataFormat,this.userCode=` + `}getCustomSetupFunc(e){return(t,o)=>{this.index==null&&(this.index=t.getUniformLocation(o,"index")),t.gl.uniform1f(this.index,e)}}};function eO(r,e){if(r===1)return`${e}`;if(r===2)return`${e}.x, ${e}.y`;if(r===3)return`${e}.x, ${e}.y, ${e}.z`;if(r===4)return`${e}.x, ${e}.y, ${e}.z, ${e}.w`;throw Error(`Cumulative sum for rank ${r} is not yet supported`)}function tO(r,e){if(r===1)return`${e}`;if(r===2)return`${e}.y`;if(r===3)return`${e}.z`;if(r===4)return`${e}.w`;throw Error(`Cumulative sum for rank ${r} is not yet supported`)}function oZ(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{axis:s,exclusive:a,reverse:i}=o,l=n.shape.length,u=S.getAxesPermutation([s],l),c=n;u!=null&&(c=Bt({inputs:{x:n},backend:t,attrs:{perm:u}}));let p=S.getInnerMostAxes(1,l)[0];if(p!==l-1)throw new Error(`WebGL cumsum shader expects an inner-most axis=${n.shape.length-1} but got axis=${s}`);let m=n.shape[p],f=Ht({inputs:{x:c},backend:t});for(let d=0;d<=Math.ceil(Math.log2(m))-1;d++){let h=new Ux(c.shape,!1,i),g=h.getCustomSetupFunc(d),y=f;f=t.runWebGLProgram(h,[f],f.dtype,g),t.disposeIntermediateTensorInfo(y)}if(a){let d=new Ux(c.shape,a,i),h=f;f=t.runWebGLProgram(d,[f],f.dtype),t.disposeIntermediateTensorInfo(h)}if(u!=null){let d=S.getUndoAxesPermutation(u),h=Bt({inputs:{x:f},backend:t,attrs:{perm:d}});return t.disposeIntermediateTensorInfo(f),t.disposeIntermediateTensorInfo(c),h}return f}var rO={kernelName:en,backendName:"webgl",kernelFunc:oZ};function nZ(r){let{inputs:e,backend:t,attrs:o}=r,{x:n,weights:s}=e,{size:a,binaryOutput:i}=o;if(n.shape.length===1){let l=t.readSync(n.dataId),u=t.readSync(s.dataId),c=$x(l,u,s.dtype,s.shape,a);return t.makeTensorInfo([a],s.dtype,c)}else if(n.shape.length===2){let l=t.bufferSync(n),u=t.bufferSync(s),c=lR(l,u,a,i);return t.makeTensorInfo(c.shape,s.dtype,c.values)}throw new Error(`Error in denseBincount: input must be at most rank 2, but got rank${n.shape.length}.`)}var oO={kernelName:Ql,backendName:"webgl",kernelFunc:nZ};var kC=class{constructor(e,t,o){this.variableNames=["x"],this.outputShape=[],this.outputShape=e,this.blockSize=t,this.dataFormat=o,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords[0]; @@ -2448,40 +2448,40 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: int w = ${this.getWidthCoordString()}; int d = ${this.getDepthCoordString()}; - int in_h = h / ${blockSize}; - int offset_h = imod(h, ${blockSize}); - int in_w = w / ${blockSize}; - int offset_w = imod(w, ${blockSize}); - int offset_d = (offset_h * ${blockSize} + offset_w) * + int in_h = h / ${t}; + int offset_h = imod(h, ${t}); + int in_w = w / ${t}; + int offset_w = imod(w, ${t}); + int offset_d = (offset_h * ${t} + offset_w) * ${this.getOutputDepthSize()}; int in_d = d + offset_d; float result = ${this.getInputSamplingString()}; setOutput(result); } - `}getHeightCoordString(){return this.dataFormat==="NHWC"?"coords[1]":"coords[2]"}getWidthCoordString(){return this.dataFormat==="NHWC"?"coords[2]":"coords[3]"}getDepthCoordString(){return this.dataFormat==="NHWC"?"coords[3]":"coords[1]"}getOutputDepthSize(){return this.dataFormat==="NHWC"?this.outputShape[3]:this.outputShape[1]}getInputSamplingString(){return this.dataFormat==="NHWC"?"getX(b, in_h, in_w, in_d)":"getX(b, in_d, in_h, in_w)"}};function depthToSpace3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{blockSize,dataFormat}=attrs;util_exports.assert(blockSize>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=dataFormat==="NHWC"?x.shape[1]:x.shape[2],inputWidth=dataFormat==="NHWC"?x.shape[2]:x.shape[3],inputDepth=dataFormat==="NHWC"?x.shape[3]:x.shape[1],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),outputShape=dataFormat==="NHWC"?[batchSize,outputHeight,outputWidth,outputDepth]:[batchSize,outputDepth,outputHeight,outputWidth],program=new DepthToSpaceProgram(outputShape,blockSize,dataFormat);return backend2.runWebGLProgram(program,[x],x.dtype)}var depthToSpaceConfig2={kernelName:DepthToSpace,backendName:"webgl",kernelFunc:depthToSpace3};var DepthwiseConv2DProgram=class{constructor(convInfo,addBias=!1,activation2=null,hasPreluActivation=!1,hasLeakyReluAlpha=!1){this.variableNames=["x","W"],this.outputShape=convInfo.outShape;let xNumRows=convInfo.inHeight,xNumCols=convInfo.inWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,channelMul=convInfo.outChannels/convInfo.inChannels,activationSnippet="",applyActivationSnippet="";activation2&&(hasPreluActivation?activationSnippet=`float activation(float a) { + `}getHeightCoordString(){return this.dataFormat==="NHWC"?"coords[1]":"coords[2]"}getWidthCoordString(){return this.dataFormat==="NHWC"?"coords[2]":"coords[3]"}getDepthCoordString(){return this.dataFormat==="NHWC"?"coords[3]":"coords[1]"}getOutputDepthSize(){return this.dataFormat==="NHWC"?this.outputShape[3]:this.outputShape[1]}getInputSamplingString(){return this.dataFormat==="NHWC"?"getX(b, in_h, in_w, in_d)":"getX(b, in_d, in_h, in_w)"}};function sZ(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{blockSize:s,dataFormat:a}=o;x.assert(s>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${s}`);let i=n.shape[0],l=a==="NHWC"?n.shape[1]:n.shape[2],u=a==="NHWC"?n.shape[2]:n.shape[3],c=a==="NHWC"?n.shape[3]:n.shape[1],p=l*s,m=u*s,f=c/(s*s),d=a==="NHWC"?[i,p,m,f]:[i,f,p,m],h=new kC(d,s,a);return t.runWebGLProgram(h,[n],n.dtype)}var nO={kernelName:ti,backendName:"webgl",kernelFunc:sZ};var ih=class{constructor(e,t=!1,o=null,n=!1,s=!1){this.variableNames=["x","W"],this.outputShape=e.outShape;let a=e.inHeight,i=e.inWidth,l=e.padInfo.top,u=e.padInfo.left,c=e.strideHeight,p=e.strideWidth,m=e.dilationHeight,f=e.dilationWidth,d=e.filterHeight,h=e.filterWidth,g=e.outChannels/e.inChannels,y="",b="";o&&(n?y=`float activation(float a) { float b = getPreluActivationWeightsAtOutCoords(); - ${activation2} - }`:hasLeakyReluAlpha?activationSnippet=`float activation(float a) { + ${o} + }`:s?y=`float activation(float a) { float b = getLeakyreluAlphaAtOutCoords(); - ${activation2} - }`:activationSnippet=` + ${o} + }`:y=` float activation(float x) { - ${activation2} + ${o} } - `,applyActivationSnippet="result = activation(result);");let addBiasSnippet=addBias?"result += getBiasAtOutCoords();":"";addBias&&this.variableNames.push("bias"),hasPreluActivation&&this.variableNames.push("preluActivationWeights"),hasLeakyReluAlpha&&this.variableNames.push("leakyreluAlpha"),this.userCode=` - ${activationSnippet} + `,b="result = activation(result);");let _=t?"result += getBiasAtOutCoords();":"";t&&this.variableNames.push("bias"),n&&this.variableNames.push("preluActivationWeights"),s&&this.variableNames.push("leakyreluAlpha"),this.userCode=` + ${y} - const ivec2 strides = ivec2(${strideHeight}, ${strideWidth}); - const ivec2 pads = ivec2(${padTop}, ${padLeft}); + const ivec2 strides = ivec2(${c}, ${p}); + const ivec2 pads = ivec2(${l}, ${u}); void main() { ivec4 coords = getOutputCoords(); int batch = coords.x; ivec2 xRCCorner = coords.yz * strides - pads; int d2 = coords.w; - int d1 = d2 / ${channelMul}; - int q = d2 - d1 * ${channelMul}; + int d1 = d2 / ${g}; + int q = d2 - d1 * ${g}; int xRCorner = xRCCorner.x; int xCCorner = xRCCorner.y; @@ -2490,17 +2490,17 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // ? = to be determined. : = across all values in that axis. float dotProd = 0.0; // TO DO(dsmilkov): Flatten the two for loops and vec4 the operations. - for (int wR = 0; wR < ${filterHeight}; wR++) { - int xR = xRCorner + wR * ${dilationHeight}; + for (int wR = 0; wR < ${d}; wR++) { + int xR = xRCorner + wR * ${m}; - if (xR < 0 || xR >= ${xNumRows}) { + if (xR < 0 || xR >= ${a}) { continue; } - for (int wC = 0; wC < ${filterWidth}; wC++) { - int xC = xCCorner + wC * ${dilationWidth}; + for (int wC = 0; wC < ${h}; wC++) { + int xC = xCCorner + wC * ${f}; - if (xC < 0 || xC >= ${xNumCols}) { + if (xC < 0 || xC >= ${i}) { continue; } @@ -2511,142 +2511,142 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } float result = dotProd; - ${addBiasSnippet} - ${applyActivationSnippet} + ${_} + ${b} setOutput(result); } - `}};var DepthwiseConvPacked2DProgram=class{constructor(convInfo,addBias=!1,activation2=null,hasPreluActivation=!1,hasLeakyReluAlpha=!1){this.variableNames=["x","W"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=convInfo.outShape;let xNumRows=convInfo.inHeight,xNumCols=convInfo.inWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,texelsAcross=filterWidth,mainLoop="int xR; int xC; int xCOffset;";for(let r=0;r= 0 && xR < ${xNumRows} && xCOffset >= 0 && xCOffset < ${xNumCols}) { - xTexelR${r}C${c} = getX(batch, xR, xCOffset, d1); + if(xR >= 0 && xR < ${a} && xCOffset >= 0 && xCOffset < ${i}) { + xTexelR${k}C${T} = getX(batch, xR, xCOffset, d1); // Need to manually clear unused channels in case // we're reading from recycled texture. - if(xCOffset + 1 >= ${xNumCols}) { - xTexelR${r}C${c}.zw = vec2(0.); + if(xCOffset + 1 >= ${i}) { + xTexelR${k}C${T}.zw = vec2(0.); } } else { - xTexelR${r}C${c} = vec4(0.); + xTexelR${k}C${T} = vec4(0.); } xCOffset = xC + 1 - 2; - if(xR >= 0 && xR < ${xNumRows} && xCOffset >= 0 && xCOffset < ${xNumCols}) { + if(xR >= 0 && xR < ${a} && xCOffset >= 0 && xCOffset < ${i}) { vec4 previous = getX(batch, xR, xCOffset, d1); // Need to manually clear unused channels in case // we're reading from recycled texture. - if(xCOffset + 1 >= ${xNumCols}) { + if(xCOffset + 1 >= ${i}) { previous.zw = vec2(0.); } - xR${r}C${c} = vec4(previous.zw, xTexelR${r}C${c}.xy); + xR${k}C${T} = vec4(previous.zw, xTexelR${k}C${T}.xy); } else { - xR${r}C${c} = vec4(0, 0, xTexelR${r}C${c}.xy); + xR${k}C${T} = vec4(0, 0, xTexelR${k}C${T}.xy); } - `:mainLoop+=` - if(xR >= 0 && xR < ${xNumRows} && xC >= 0 && xC < ${xNumCols}) { - xTexelR${r}C${c} = getX(batch, xR, xC, d1); + `:y+=` + if(xR >= 0 && xR < ${a} && xC >= 0 && xC < ${i}) { + xTexelR${k}C${T} = getX(batch, xR, xC, d1); } else { - xTexelR${r}C${c} = vec4(0.); + xTexelR${k}C${T} = vec4(0.); } - xR${r}C${c} = xTexelR${r}C${c}; - `,c+1= 0 && xR < ${xNumRows} && - xCOffset >= 0 && xCOffset < ${xNumCols}) { - xTexelR${r}C${c+2} = getX(batch, xR, xCOffset, d1); + if(xR >= 0 && xR < ${a} && + xCOffset >= 0 && xCOffset < ${i}) { + xTexelR${k}C${T+2} = getX(batch, xR, xCOffset, d1); } - `,dilationWidth>1&&(mainLoop+=` + `,f>1&&(y+=` xCOffset -= 2; - if(xR >= 0 && xR < ${xNumRows} && - xCOffset >= 0 && xCOffset < ${xNumCols}) { - xTexelR${r}C${c} = getX(batch, xR, xCOffset, d1); + if(xR >= 0 && xR < ${a} && + xCOffset >= 0 && xCOffset < ${i}) { + xTexelR${k}C${T} = getX(batch, xR, xCOffset, d1); } else { - xTexelR${r}C${c} = vec4(0.); + xTexelR${k}C${T} = vec4(0.); } - `),mainLoop+=` - xR${r}C${c+1} = vec4( - xTexelR${r}C${c}.zw, xTexelR${r}C${c+2}.xy); - `):mainLoop+=` - xCOffset = xC + ${nextTexelOffset}; + `),y+=` + xR${k}C${T+1} = vec4( + xTexelR${k}C${T}.zw, xTexelR${k}C${T+2}.xy); + `):y+=` + xCOffset = xC + ${F}; - if(xR >= 0 && xR < ${xNumRows} && - xCOffset >= 0 && xCOffset < ${xNumCols}) { - xTexelR${r}C${c+2} = getX(batch, xR, xCOffset, d1); + if(xR >= 0 && xR < ${a} && + xCOffset >= 0 && xCOffset < ${i}) { + xTexelR${k}C${T+2} = getX(batch, xR, xCOffset, d1); } - xR${r}C${c+1} = xTexelR${r}C${c+2}; - `}}else c= 0 && xR < ${xNumRows}) { - `,padLeft%2==1?(mainLoop+=` - xCOffset = xC + 1 - ${strideWidth}; - if(xCOffset >= 0 && xCOffset < ${xNumCols}) { - xTexelR${r}C${c} = getX(batch, xR, xCOffset, d1); + xR${k}C${T+1} = xTexelR${k}C${T+2}; + `}}else T= 0 && xR < ${a}) { + `,u%2==1?(y+=` + xCOffset = xC + 1 - ${p}; + if(xCOffset >= 0 && xCOffset < ${i}) { + xTexelR${k}C${T} = getX(batch, xR, xCOffset, d1); } else { - xTexelR${r}C${c} = vec4(0.); + xTexelR${k}C${T} = vec4(0.); } - if(xC + 1 >= 0 && xC + 1 < ${xNumCols}) { - xTexelR${r}C${c+2} = getX(batch, xR, xC + 1, d1); + if(xC + 1 >= 0 && xC + 1 < ${i}) { + xTexelR${k}C${T+2} = getX(batch, xR, xC + 1, d1); } else { - xTexelR${r}C${c+2} = vec4(0.); + xTexelR${k}C${T+2} = vec4(0.); } - xR${r}C${c} = vec4( - xTexelR${r}C${c}.zw, xTexelR${r}C${c+2}.zw); - `,c+1= 0 && xCOffset < ${xNumCols}) { + xCOffset = xC + 1 + ${p}; + if(xCOffset >= 0 && xCOffset < ${i}) { final = getX(batch, xR, xCOffset, d1); } - xR${r}C${c+1} = vec4(xTexelR${r}C${c+2}.xy, final.xy); - `)):(mainLoop+=` - if(xC >= 0 && xC < ${xNumCols}) { - xTexelR${r}C${c} = getX(batch, xR, xC, d1); + xR${k}C${T+1} = vec4(xTexelR${k}C${T+2}.xy, final.xy); + `)):(y+=` + if(xC >= 0 && xC < ${i}) { + xTexelR${k}C${T} = getX(batch, xR, xC, d1); } else { - xTexelR${r}C${c} = vec4(0.); + xTexelR${k}C${T} = vec4(0.); } - xCOffset = xC + ${strideWidth}; - if(xCOffset >= 0 && xCOffset < ${xNumCols}) { - xTexelR${r}C${c+2} = getX(batch, xR, xCOffset, d1); + xCOffset = xC + ${p}; + if(xCOffset >= 0 && xCOffset < ${i}) { + xTexelR${k}C${T+2} = getX(batch, xR, xCOffset, d1); } else { - xTexelR${r}C${c+2} = vec4(0.); + xTexelR${k}C${T+2} = vec4(0.); } - xR${r}C${c} = vec4( - xTexelR${r}C${c}.xy, xTexelR${r}C${c+2}.xy); - `,c+1`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${$dilations}'`);let convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,$dilations,pad3,dimRoundingMode,!0),program;return env().getBool("WEBGL_PACK_DEPTHWISECONV")&&convInfo.strideWidth<=2&&convInfo.outChannels/convInfo.inChannels==1?program=new DepthwiseConvPacked2DProgram(convInfo):program=new DepthwiseConv2DProgram(convInfo),backend2.runWebGLProgram(program,[x,filter],"float32")}var depthwiseConv2dNativeConfig2={kernelName:DepthwiseConv2dNative,backendName:"webgl",kernelFunc:depthwiseConv2dNative2};var DepthwiseConv2DDerFilterProgram=class{constructor(convInfo){this.variableNames=["x","dy"],this.outputShape=convInfo.filterShape;let strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,padTop=convInfo.padInfo.top,padLeft=convInfo.padInfo.left,channelMul=convInfo.outChannels/convInfo.inChannels;this.userCode=` + `}};function iZ(r){let{inputs:e,backend:t,attrs:o}=r,{x:n,filter:s}=e,{strides:a,pad:i,dilations:l,dimRoundingMode:u}=o,c=l;c==null&&(c=[1,1]),x.assert(S.eitherStridesOrDilationsAreOne(a,c),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${a} and dilations '${c}'`);let p=S.computeConv2DInfo(n.shape,s.shape,a,c,i,u,!0),m;return W().getBool("WEBGL_PACK_DEPTHWISECONV")&&p.strideWidth<=2&&p.outChannels/p.inChannels==1?m=new ah(p):m=new ih(p),t.runWebGLProgram(m,[n,s],"float32")}var sO={kernelName:tn,backendName:"webgl",kernelFunc:iZ};var CC=class{constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;let t=e.strideHeight,o=e.strideWidth,n=e.padInfo.top,s=e.padInfo.left,a=e.outChannels/e.inChannels;this.userCode=` void main() { ivec4 coords = getOutputCoords(); int wR = coords.x; int wC = coords.y; int d1 = coords.z; int dm = coords.w; - int d2 = d1 * ${channelMul} + dm; + int d2 = d1 * ${a} + dm; float dotProd = 0.0; // TO DO: Vec4 over the batch size - for (int b = 0; b < ${convInfo.batchSize}; b++) { - for (int yR = 0; yR < ${convInfo.outHeight}; yR++) { - int xR = wR + yR * ${strideHeight} - ${padTop}; + for (int b = 0; b < ${e.batchSize}; b++) { + for (int yR = 0; yR < ${e.outHeight}; yR++) { + int xR = wR + yR * ${t} - ${n}; - if (xR < 0 || xR >= ${convInfo.inHeight}) { + if (xR < 0 || xR >= ${e.inHeight}) { continue; } - for (int yC = 0; yC < ${convInfo.outWidth}; yC++) { - int xC = wC + yC * ${strideWidth} - ${padLeft}; + for (int yC = 0; yC < ${e.outWidth}; yC++) { + int xC = wC + yC * ${o} - ${s}; - if (xC < 0 || xC >= ${convInfo.inWidth}) { + if (xC < 0 || xC >= ${e.inWidth}) { continue; } @@ -2703,8 +2703,8 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(dotProd); } - `}},DepthwiseConv2DDerInputProgram=class{constructor(convInfo){this.variableNames=["dy","W"],this.outputShape=convInfo.inShape;let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,padTop=filterHeight-1-convInfo.padInfo.top,padLeft=filterWidth-1-convInfo.padInfo.left,channelMul=convInfo.outChannels/convInfo.inChannels;this.userCode=` - const ivec2 pads = ivec2(${padTop}, ${padLeft}); + `}},IC=class{constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;let t=e.filterHeight,o=e.filterWidth,n=e.strideHeight,s=e.strideWidth,a=t-1-e.padInfo.top,i=o-1-e.padInfo.left,l=e.outChannels/e.inChannels;this.userCode=` + const ivec2 pads = ivec2(${a}, ${i}); void main() { ivec4 coords = getOutputCoords(); @@ -2716,30 +2716,30 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: float dotProd = 0.0; - for (int wR = 0; wR < ${filterHeight}; wR++) { - float dyR = float(dyRCorner + wR) / ${strideHeight}.0; + for (int wR = 0; wR < ${t}; wR++) { + float dyR = float(dyRCorner + wR) / ${n}.0; - if (dyR < 0.0 || dyR >= ${convInfo.outHeight}.0 || fract(dyR) > 0.0) { + if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || fract(dyR) > 0.0) { continue; } int idyR = int(dyR); - int wRPerm = ${filterHeight} - 1 - wR; + int wRPerm = ${t} - 1 - wR; - for (int wC = 0; wC < ${filterWidth}; wC++) { - float dyC = float(dyCCorner + wC) / ${strideWidth}.0; + for (int wC = 0; wC < ${o}; wC++) { + float dyC = float(dyCCorner + wC) / ${s}.0; - if (dyC < 0.0 || dyC >= ${convInfo.outWidth}.0 || + if (dyC < 0.0 || dyC >= ${e.outWidth}.0 || fract(dyC) > 0.0) { continue; } int idyC = int(dyC); - int wCPerm = ${filterWidth} - 1 - wC; + int wCPerm = ${o} - 1 - wC; // TO DO: Vec4 over the channelMul - for (int dm = 0; dm < ${channelMul}; dm++) { - int d2 = d1 * ${channelMul} + dm; + for (int dm = 0; dm < ${l}; dm++) { + int d2 = d1 * ${l} + dm; float xValue = getDy(batch, idyR, idyC, d2); float wValue = getW(wRPerm, wCPerm, d1, dm); dotProd += xValue * wValue; @@ -2748,15 +2748,15 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(dotProd); } - `}};function depthwiseConv2dNativeBackpropFilter3(args){let{inputs,backend:backend2,attrs}=args,{x,dy}=inputs,{strides,dilations,pad:pad3,dimRoundingMode,filterShape}=attrs,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filterShape,strides,dilations,pad3,dimRoundingMode,!0),program=new DepthwiseConv2DDerFilterProgram(convInfo);return backend2.runWebGLProgram(program,[x,dy],"float32")}var depthwiseConv2dNativeBackpropFilterConfig2={kernelName:DepthwiseConv2dNativeBackpropFilter,backendName:"webgl",kernelFunc:depthwiseConv2dNativeBackpropFilter3};function depthwiseConv2dNativeBackpropInput3(args){let{inputs,backend:backend2,attrs}=args,{dy,filter}=inputs,{strides,dilations,pad:pad3,dimRoundingMode,inputShape}=attrs,convInfo=backend_util_exports.computeConv2DInfo(inputShape,filter.shape,strides,dilations,pad3,dimRoundingMode,!0),program=new DepthwiseConv2DDerInputProgram(convInfo);return backend2.runWebGLProgram(program,[dy,filter],"float32")}var depthwiseConv2dNativeBackpropInputConfig2={kernelName:DepthwiseConv2dNativeBackpropInput,backendName:"webgl",kernelFunc:depthwiseConv2dNativeBackpropInput3};var DiagProgram=class{constructor(size){this.variableNames=["X"],this.outputShape=[size,size],this.userCode=` + `}};function aZ(r){let{inputs:e,backend:t,attrs:o}=r,{x:n,dy:s}=e,{strides:a,dilations:i,pad:l,dimRoundingMode:u,filterShape:c}=o,p=S.computeConv2DInfo(n.shape,c,a,i,l,u,!0),m=new CC(p);return t.runWebGLProgram(m,[n,s],"float32")}var iO={kernelName:eu,backendName:"webgl",kernelFunc:aZ};function lZ(r){let{inputs:e,backend:t,attrs:o}=r,{dy:n,filter:s}=e,{strides:a,dilations:i,pad:l,dimRoundingMode:u,inputShape:c}=o,p=S.computeConv2DInfo(c,s.shape,a,i,l,u,!0),m=new IC(p);return t.runWebGLProgram(m,[n,s],"float32")}var aO={kernelName:tu,backendName:"webgl",kernelFunc:lZ};var NC=class{constructor(e){this.variableNames=["X"],this.outputShape=[e,e],this.userCode=` void main() { ivec2 coords = getOutputCoords(); float val = coords[0] == coords[1] ? getX(coords[0]) : 0.0; setOutput(val); } - `}};function diag3(args){let{inputs,backend:backend2}=args,{x}=inputs,outShape=[...x.shape,...x.shape],xSize=util_exports.sizeFromShape(x.shape),flat=reshape4({inputs:{x},backend:backend2,attrs:{shape:[xSize]}}),program=new DiagProgram(xSize),res=backend2.runWebGLProgram(program,[flat],flat.dtype),out=reshape4({inputs:{x:res},backend:backend2,attrs:{shape:outShape}});return backend2.disposeIntermediateTensorInfo(flat),backend2.disposeIntermediateTensorInfo(res),out}var diagConfig2={kernelName:Diag,backendName:"webgl",kernelFunc:diag3};var Dilation2DProgram=class{constructor(convInfo){this.variableNames=["x","W"],this.outputShape=convInfo.outShape;let{inHeight,inWidth,padInfo,strideHeight,strideWidth,filterHeight,filterWidth,dilationHeight,dilationWidth}=convInfo,{top:padTop,left:padLeft}=padInfo;this.userCode=` - const ivec2 strides = ivec2(${strideHeight}, ${strideWidth}); - const ivec2 pads = ivec2(${padTop}, ${padLeft}); + `}};function uZ(r){let{inputs:e,backend:t}=r,{x:o}=e,n=[...o.shape,...o.shape],s=x.sizeFromShape(o.shape),a=me({inputs:{x:o},backend:t,attrs:{shape:[s]}}),i=new NC(s),l=t.runWebGLProgram(i,[a],a.dtype),u=me({inputs:{x:l},backend:t,attrs:{shape:n}});return t.disposeIntermediateTensorInfo(a),t.disposeIntermediateTensorInfo(l),u}var lO={kernelName:ru,backendName:"webgl",kernelFunc:uZ};var SC=class{constructor(e){this.variableNames=["x","W"],this.outputShape=e.outShape;let{inHeight:t,inWidth:o,padInfo:n,strideHeight:s,strideWidth:a,filterHeight:i,filterWidth:l,dilationHeight:u,dilationWidth:c}=e,{top:p,left:m}=n;this.userCode=` + const ivec2 strides = ivec2(${s}, ${a}); + const ivec2 pads = ivec2(${p}, ${m}); const float neg_infinity = -3.4e38; void main() { @@ -2769,14 +2769,14 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: int wBeg = outTopLeftCorner.y; float curVal = neg_infinity; - for (int h = 0; h < ${filterHeight}; h++) { - int hIn = hBeg + h * ${dilationHeight}; + for (int h = 0; h < ${i}; h++) { + int hIn = hBeg + h * ${u}; - if (hIn >= 0 && hIn < ${inHeight}) { - for (int w = 0; w < ${filterWidth}; w++) { - int wIn = wBeg + w * ${dilationWidth}; + if (hIn >= 0 && hIn < ${t}) { + for (int w = 0; w < ${l}; w++) { + int wIn = wBeg + w * ${c}; - if (wIn >= 0 && wIn < ${inWidth}) { + if (wIn >= 0 && wIn < ${o}) { float xVal = getX(batch, hIn, wIn, d1); float wVal = getW(h, w, d1); @@ -2792,7 +2792,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: float result = curVal; setOutput(result); } - `}};function dilation2D(args){let{inputs,backend:backend2,attrs}=args,{x,filter}=inputs,{strides,pad:pad3,dilations}=attrs,convInfo=backend_util_exports.computeDilation2DInfo(x.shape,filter.shape,strides,pad3,"NHWC",dilations),out,program=new Dilation2DProgram(convInfo);out=backend2.runWebGLProgram(program,[x,filter],"float32");let outReshaped=reshape4({inputs:{x:out},backend:backend2,attrs:{shape:convInfo.outShape}});return backend2.disposeIntermediateTensorInfo(out),outReshaped}var dilation2DConfig={kernelName:Dilation2D,backendName:"webgl",kernelFunc:dilation2D};var ELU4="return (x >= 0.0) ? x : (exp(x) - 1.0);",ELU_PACKED=` + `}};function cZ(r){let{inputs:e,backend:t,attrs:o}=r,{x:n,filter:s}=e,{strides:a,pad:i,dilations:l}=o,u=S.computeDilation2DInfo(n.shape,s.shape,a,i,"NHWC",l),c,p=new SC(u);c=t.runWebGLProgram(p,[n,s],"float32");let m=me({inputs:{x:c},backend:t,attrs:{shape:u.outShape}});return t.disposeIntermediateTensorInfo(c),m}var uO={kernelName:la,backendName:"webgl",kernelFunc:cZ};var pZ="return (x >= 0.0) ? x : (exp(x) - 1.0);",mZ=` vec4 result; result.r = (x.r >= 0.0) ? x.r : (exp(x.r) - 1.0); @@ -2801,41 +2801,41 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: result.a = (x.a >= 0.0) ? x.a : (exp(x.a) - 1.0); return result; -`,elu5=unaryKernelFunc2({opSnippet:ELU4,packedOpSnippet:ELU_PACKED}),eluConfig2={kernelName:Elu,backendName:"webgl",kernelFunc:elu5};var ELU_DER="return (b >= 1.0) ? a : a * (b + 1.0);",ELU_DER_PACKED=` +`,fZ=Ce({opSnippet:pZ,packedOpSnippet:mZ}),cO={kernelName:ri,backendName:"webgl",kernelFunc:fZ};var dZ="return (b >= 1.0) ? a : a * (b + 1.0);",hZ=` vec4 bGTEZero = vec4(greaterThanEqual(b, vec4(0.))); return (bGTEZero * a) + ((vec4(1.0) - bGTEZero) * (a * (b + vec4(1.0)))); -`,eluGrad2=args=>{let{inputs,backend:backend2}=args,{dy,y}=inputs,program=env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new BinaryOpPackedProgram(ELU_DER_PACKED,dy.shape,y.shape):new BinaryOpProgram(ELU_DER,dy.shape,y.shape);return backend2.runWebGLProgram(program,[dy,y],dy.dtype)},eluGradConfig3={kernelName:EluGrad,backendName:"webgl",kernelFunc:eluGrad2};var PACKED_EQUAL=` +`,gZ=r=>{let{inputs:e,backend:t}=r,{dy:o,y:n}=e,s=W().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Bs(hZ,o.shape,n.shape):new ts(dZ,o.shape,n.shape);return t.runWebGLProgram(s,[o,n],o.dtype)},pO={kernelName:ou,backendName:"webgl",kernelFunc:gZ};var xZ=` return vec4(equal(a, b)); -`,EQUAL="return float(a == b);",equal3=binaryKernelFunc2({opSnippet:EQUAL,packedOpSnippet:PACKED_EQUAL,dtype:"bool"}),equalConfig2={kernelName:Equal,backendName:"webgl",kernelFunc:equal3};var ERF=` +`,yZ="return float(a == b);",bZ=at({opSnippet:yZ,packedOpSnippet:xZ,dtype:"bool"}),mO={kernelName:ni,backendName:"webgl",kernelFunc:bZ};var _Z=` // Error function is calculated approximately with elementary function. // See "Handbook of Mathematical Functions with Formulas, // Graphs, and Mathematical Tables", Abramowitz and Stegun. - float p = ${backend_util_exports.ERF_P}; - float a1 = ${backend_util_exports.ERF_A1}; - float a2 = ${backend_util_exports.ERF_A2}; - float a3 = ${backend_util_exports.ERF_A3}; - float a4 = ${backend_util_exports.ERF_A4}; - float a5 = ${backend_util_exports.ERF_A5}; + float p = ${S.ERF_P}; + float a1 = ${S.ERF_A1}; + float a2 = ${S.ERF_A2}; + float a3 = ${S.ERF_A3}; + float a4 = ${S.ERF_A4}; + float a5 = ${S.ERF_A5}; float sign = sign(x); x = abs(x); float t = 1.0 / (1.0 + p * x); return sign * (1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*exp(-x*x)); -`,erf3=unaryKernelFunc2({opSnippet:ERF}),erfConfig2={kernelName:Erf,backendName:"webgl",kernelFunc:erf3};var EXP="return exp(x);",exp3=unaryKernelFunc2({opSnippet:EXP,packedOpSnippet:EXP,cpuKernelImpl:expImplCPU}),expConfig2={kernelName:Exp,backendName:"webgl",kernelFunc:exp3};function expandDims4(args){let{inputs,attrs,backend:backend2}=args,{dim}=attrs,{input:input2}=inputs,inputRank=input2.shape.length,newShape=input2.shape.slice(),$dim=dim;return dim<0&&(util_exports.assert(-(inputRank+1)<=dim,()=>`Axis must be in the interval [${-(inputRank+1)}, ${inputRank}]`),$dim=inputRank+dim+1),newShape.splice($dim,0,1),reshape4({inputs:{x:input2},backend:backend2,attrs:{shape:newShape}})}var expandDimsConfig2={kernelName:ExpandDims,backendName:"webgl",kernelFunc:expandDims4};var EXPM1="return exp(x) - 1.0;",expm13=unaryKernelFunc2({opSnippet:EXPM1,packedOpSnippet:EXPM1,cpuKernelImpl:expm1ImplCPU}),expm1Config2={kernelName:Expm1,backendName:"webgl",kernelFunc:expm13};var FFTProgram=class{constructor(component,inputShape,inverse){this.variableNames=["real","imag"];let innerDim=inputShape[1];this.outputShape=inputShape;let exponentMultiplierSnippet=inverse?`2.0 * ${Math.PI}`:`-2.0 * ${Math.PI}`,resultDenominator=inverse?`${innerDim}.0`:"1.0",opString;if(component==="real")opString="return real * expR - imag * expI;";else if(component==="imag")opString="return real * expI + imag * expR;";else throw new Error(`FFT component must be either "real" or "imag", got ${component}.`);this.userCode=` - const float exponentMultiplier = ${exponentMultiplierSnippet}; +`,wZ=Ce({opSnippet:_Z}),fO={kernelName:oi,backendName:"webgl",kernelFunc:wZ};var dO="return exp(x);",TC=Ce({opSnippet:dO,packedOpSnippet:dO,cpuKernelImpl:pR}),hO={kernelName:on,backendName:"webgl",kernelFunc:TC};function jx(r){let{inputs:e,attrs:t,backend:o}=r,{dim:n}=t,{input:s}=e,a=s.shape.length,i=s.shape.slice(),l=n;return n<0&&(x.assert(-(a+1)<=n,()=>`Axis must be in the interval [${-(a+1)}, ${a}]`),l=a+n+1),i.splice(l,0,1),me({inputs:{x:s},backend:o,attrs:{shape:i}})}var gO={kernelName:ls,backendName:"webgl",kernelFunc:jx};var xO="return exp(x) - 1.0;",vZ=Ce({opSnippet:xO,packedOpSnippet:xO,cpuKernelImpl:mR}),yO={kernelName:si,backendName:"webgl",kernelFunc:vZ};var qx=class{constructor(e,t,o){this.variableNames=["real","imag"];let n=t[1];this.outputShape=t;let s=o?`2.0 * ${Math.PI}`:`-2.0 * ${Math.PI}`,a=o?`${n}.0`:"1.0",i;if(e==="real")i="return real * expR - imag * expI;";else if(e==="imag")i="return real * expI + imag * expR;";else throw new Error(`FFT component must be either "real" or "imag", got ${e}.`);this.userCode=` + const float exponentMultiplier = ${s}; float unaryOpComplex(float real, float expR, float imag, float expI) { - ${opString} + ${i} } float mulMatDFT(int batch, int index) { - float indexRatio = float(index) / float(${innerDim}); + float indexRatio = float(index) / float(${n}); float exponentMultiplierTimesIndexRatio = exponentMultiplier * indexRatio; float result = 0.0; - for (int i = 0; i < ${innerDim}; i++) { + for (int i = 0; i < ${n}; i++) { // x = (-2|2 * PI / N) * index * i; float x = exponentMultiplierTimesIndexRatio * float(i); float expR = cos(x); @@ -2844,7 +2844,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: float imag = getImag(batch, i); result += - unaryOpComplex(real, expR, imag, expI) / ${resultDenominator}; + unaryOpComplex(real, expR, imag, expI) / ${a}; } return result; @@ -2854,27 +2854,27 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: ivec2 coords = getOutputCoords(); setOutput(mulMatDFT(coords[0], coords[1])); } - `}};function fftImpl2(x,inverse,backend2){let xData=backend2.texData.get(x.dataId),inputSize=util_exports.sizeFromShape(x.shape),innerDimensionSize=x.shape[x.shape.length-1],batch=inputSize/innerDimensionSize,xShape=reshape4({inputs:{x},backend:backend2,attrs:{shape:[batch,innerDimensionSize]}}).shape,realProgram=new FFTProgram("real",xShape,inverse),imagProgram=new FFTProgram("imag",xShape,inverse),inputs=[{dataId:xData.complexTensorInfos.real.dataId,dtype:xData.complexTensorInfos.real.dtype,shape:xShape},{dataId:xData.complexTensorInfos.imag.dataId,dtype:xData.complexTensorInfos.imag.dtype,shape:xShape}],realPart=backend2.runWebGLProgram(realProgram,inputs,"float32"),imagPart=backend2.runWebGLProgram(imagProgram,inputs,"float32"),complexOutput=complex3({inputs:{real:realPart,imag:imagPart},backend:backend2});backend2.disposeIntermediateTensorInfo(realPart),backend2.disposeIntermediateTensorInfo(imagPart);let complexOutputReshaped=reshape4({inputs:{x:complexOutput},backend:backend2,attrs:{shape:x.shape}});return backend2.disposeIntermediateTensorInfo(complexOutputReshaped),complexOutputReshaped}function fft3(args){let{inputs,backend:backend2}=args,{input:input2}=inputs;return fftImpl2(input2,!1,backend2)}var fftConfig2={kernelName:FFT,backendName:"webgl",kernelFunc:fft3};var FillProgram=class{constructor(shape,value){this.outputShape=[],this.variableNames=["x"],this.outputShape=shape,this.userCode=` + `}};function Hx(r,e,t){let o=t.texData.get(r.dataId),n=x.sizeFromShape(r.shape),s=r.shape[r.shape.length-1],a=n/s,l=me({inputs:{x:r},backend:t,attrs:{shape:[a,s]}}).shape,u=new qx("real",l,e),c=new qx("imag",l,e),p=[{dataId:o.complexTensorInfos.real.dataId,dtype:o.complexTensorInfos.real.dtype,shape:l},{dataId:o.complexTensorInfos.imag.dataId,dtype:o.complexTensorInfos.imag.dtype,shape:l}],m=t.runWebGLProgram(u,p,"float32"),f=t.runWebGLProgram(c,p,"float32"),d=fo({inputs:{real:m,imag:f},backend:t});t.disposeIntermediateTensorInfo(m),t.disposeIntermediateTensorInfo(f);let h=me({inputs:{x:d},backend:t,attrs:{shape:r.shape}});return t.disposeIntermediateTensorInfo(h),h}function kZ(r){let{inputs:e,backend:t}=r,{input:o}=e;return Hx(o,!1,t)}var bO={kernelName:nu,backendName:"webgl",kernelFunc:kZ};var EC=class{constructor(e,t){this.outputShape=[],this.variableNames=["x"],this.outputShape=e,this.userCode=` uniform float value; void main() { // Input can be obtained from uniform value. setOutput(value); } - `}getCustomSetupFunc(value){return(gpgpu,webGLProgram)=>{this.valueLoc==null&&(this.valueLoc=gpgpu.getUniformLocationNoThrow(webGLProgram,"value")),gpgpu.gl.uniform1f(this.valueLoc,value)}}};function fill3(args){let{backend:backend2,attrs}=args,{shape,value}=attrs,{dtype}=attrs;if(dtype=dtype||util_exports.inferDtype(value),dtype==="string"){let values=util_exports.getArrayFromDType(dtype,util_exports.sizeFromShape(shape));return values.fill(value),backend2.makeTensorInfo(shape,dtype,values)}else{let program=new FillProgram(shape,value),customSetup=program.getCustomSetupFunc(value);return backend2.runWebGLProgram(program,[],dtype,customSetup)}}var fillConfig2={kernelName:Fill,backendName:"webgl",kernelFunc:fill3};var FlipLeftRightProgram=class{constructor(imageShape){this.variableNames=["Image"],this.outputShape=[];let imageWidth=imageShape[2];this.outputShape=imageShape,this.userCode=` + `}getCustomSetupFunc(e){return(t,o)=>{this.valueLoc==null&&(this.valueLoc=t.getUniformLocationNoThrow(o,"value")),t.gl.uniform1f(this.valueLoc,e)}}};function lh(r){let{backend:e,attrs:t}=r,{shape:o,value:n}=t,{dtype:s}=t;if(s=s||x.inferDtype(n),s==="string"){let a=x.getArrayFromDType(s,x.sizeFromShape(o));return a.fill(n),e.makeTensorInfo(o,s,a)}else{let a=new EC(o,n),i=a.getCustomSetupFunc(n);return e.runWebGLProgram(a,[],s,i)}}var _O={kernelName:ua,backendName:"webgl",kernelFunc:lh};var AC=class{constructor(e){this.variableNames=["Image"],this.outputShape=[];let t=e[2];this.outputShape=e,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int x = coords[2]; - int coordX = ${imageWidth} - x; + int coordX = ${t} - x; float outputValue; - if(coordX >= 0 && coordX < ${imageWidth}) { + if(coordX >= 0 && coordX < ${t}) { outputValue = getImage(coords[0], coords[1], coordX, coords[3]); } else { outputValue = getImage(coords[0], coords[1], coords[2], coords[3]); } setOutput(outputValue); } - `}};var flipLeftRightConfig2={kernelName:FlipLeftRight,backendName:"webgl",kernelFunc:({inputs,backend:backend2})=>{let{image:image3}=inputs,webglBackend=backend2,program=new FlipLeftRightProgram(image3.shape);return webglBackend.runWebGLProgram(program,[image3],image3.dtype)}};var FLOOR="return floor(x);",floor3=unaryKernelFunc2({opSnippet:FLOOR,packedOpSnippet:FLOOR,cpuKernelImpl:floorImplCPU}),floorConfig2={kernelName:Floor,backendName:"webgl",kernelFunc:floor3};var INT_DIV=` + `}};var wO={kernelName:ii,backendName:"webgl",kernelFunc:({inputs:r,backend:e})=>{let{image:t}=r,o=e,n=new AC(t.shape);return o.runWebGLProgram(n,[t],t.dtype)}};var vO="return floor(x);",CZ=Ce({opSnippet:vO,packedOpSnippet:vO,cpuKernelImpl:fR}),kO={kernelName:nn,backendName:"webgl",kernelFunc:CZ};var IZ=` float s = sign(a) * sign(b); int ia = round(a); int ib = round(b); @@ -2884,7 +2884,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } else { return NAN; } -`,INT_DIV_PACKED=` +`,NZ=` ivec4 ia = round(a); ivec4 ib = round(b); bvec4 cond = notEqual(ib, ivec4(0)); @@ -2905,15 +2905,15 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: result[3] = idiv(ia[3], ib[3], s[3]); } return vec4(result); -`,floorDiv3=binaryKernelFunc2({opSnippet:INT_DIV,packedOpSnippet:INT_DIV_PACKED,dtype:"int32"}),floorDivConfig2={kernelName:FloorDiv,backendName:"webgl",kernelFunc:floorDiv3};var FromPixelsProgram=class{constructor(outputShape){this.variableNames=["A"];let glsl=getGlslDifferences(),[height,width]=outputShape;this.outputShape=outputShape,this.userCode=` +`,SZ=at({opSnippet:IZ,packedOpSnippet:NZ,dtype:"int32"}),CO={kernelName:sn,backendName:"webgl",kernelFunc:SZ};var DC=class{constructor(e){this.variableNames=["A"];let t=zt(),[o,n]=e;this.outputShape=e,this.userCode=` void main() { ivec3 coords = getOutputCoords(); int texR = coords[0]; int texC = coords[1]; int depth = coords[2]; - vec2 uv = (vec2(texC, texR) + halfCR) / vec2(${width}.0, ${height}.0); + vec2 uv = (vec2(texC, texR) + halfCR) / vec2(${n}.0, ${o}.0); - vec4 values = ${glsl.texture2D}(A, uv); + vec4 values = ${t.texture2D}(A, uv); float value; if (depth == 0) { value = values.r; @@ -2927,7 +2927,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: setOutput(floor(value * 255.0 + 0.5)); } - `}};var FromPixelsPackedProgram=class{constructor(outputShape){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;let glsl=getGlslDifferences(),[height,width]=outputShape;this.outputShape=outputShape,this.userCode=` + `}};var $C=class{constructor(e){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;let t=zt(),[o,n]=e;this.outputShape=e,this.userCode=` void main() { ivec3 coords = getOutputCoords(); int texR = coords[0]; @@ -2942,8 +2942,8 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: depth = coords[2] + col; vec2 uv = (vec2(texC, texR) + halfCR) / - vec2(${width}.0, ${height}.0); - vec4 values = ${glsl.texture2D}(A, uv); + vec2(${n}.0, ${o}.0); + vec4 values = ${t.texture2D}(A, uv); float value; if (depth == 0) { value = values.r; @@ -2959,34 +2959,34 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } } - ${glsl.output} = result; + ${t.output} = result; } - `}};var fromPixelsConfig={kernelName:FromPixels,backendName:"webgl",kernelFunc:fromPixels2},fromPixels2DContext2;function fromPixels2(args){let{inputs,backend:backend2,attrs}=args,{pixels}=inputs,{numChannels}=attrs,isVideo=typeof HTMLVideoElement!="undefined"&&pixels instanceof HTMLVideoElement,isImage=typeof HTMLImageElement!="undefined"&&pixels instanceof HTMLImageElement,isImageBitmap=typeof ImageBitmap!="undefined"&&pixels instanceof ImageBitmap,[width,height]=isVideo?[pixels.videoWidth,pixels.videoHeight]:[pixels.width,pixels.height],texShape=[height,width],outShape=[height,width,numChannels];(isImage||isVideo||isImageBitmap)&&(fromPixels2DContext2==null&&(fromPixels2DContext2=document.createElement("canvas").getContext("2d")),fromPixels2DContext2.canvas.width=width,fromPixels2DContext2.canvas.height=height,fromPixels2DContext2.drawImage(pixels,0,0,width,height),pixels=fromPixels2DContext2.canvas);let tempPixelHandle=backend2.makeTensorInfo(texShape,"int32");backend2.texData.get(tempPixelHandle.dataId).usage=TextureUsage.PIXELS,backend2.gpgpu.uploadPixelDataToTexture(backend2.getTexture(tempPixelHandle.dataId),pixels);let program=env().getBool("WEBGL_PACK")?new FromPixelsPackedProgram(outShape):new FromPixelsProgram(outShape),res=backend2.runWebGLProgram(program,[tempPixelHandle],"int32");return backend2.disposeData(tempPixelHandle.dataId),res}function fusedConv2d(args){let{inputs,backend:backend2,attrs}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad3,dataFormat,dilations,dimRoundingMode,activation:activation2,leakyreluAlpha}=attrs,$dataFormat=backend_util_exports.convertConv2DDataFormat(dataFormat),convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad3,dimRoundingMode,!1,$dataFormat),out,intermediates=[];if(convInfo.filterHeight===1&&convInfo.filterWidth===1&&convInfo.dilationHeight===1&&convInfo.dilationWidth===1&&convInfo.strideHeight===1&&convInfo.strideWidth===1&&(convInfo.padInfo.type==="SAME"||convInfo.padInfo.type==="VALID"))out=conv2dByMatMul({x,filter,convInfo,backend:backend2,bias,activation:activation2,preluActivationWeights,leakyreluAlpha});else if(env().getBool("WEBGL_CONV_IM2COL")&&x.shape[0]===1)out=conv2dWithIm2Row({x,filter,convInfo,backend:backend2,bias,activation:activation2,preluActivationWeights,leakyreluAlpha});else{let hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,hasLeakyreluAlpha=activation2==="leakyrelu",fusedActivation=activation2?mapActivationToShaderProgram(activation2,!1):null,program=new Conv2DProgram(convInfo,hasBias,fusedActivation,hasPreluActivationWeights,hasLeakyreluAlpha),inputs2=[x,filter];if(bias&&inputs2.push(bias),preluActivationWeights&&inputs2.push(preluActivationWeights),hasLeakyreluAlpha){let $leakyreluAlpha=backend2.makeTensorInfo([],"float32",util_exports.createScalarValue(leakyreluAlpha,"float32"));inputs2.push($leakyreluAlpha),intermediates.push($leakyreluAlpha)}out=backend2.runWebGLProgram(program,inputs2,"float32")}let outReshaped=reshape4({inputs:{x:out},backend:backend2,attrs:{shape:convInfo.outShape}});return intermediates.push(out),intermediates.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),outReshaped}var fusedConv2DConfig2={kernelName:FusedConv2D,backendName:"webgl",kernelFunc:fusedConv2d};function fusedDepthwiseConv2D2(args){let{inputs,backend:backend2,attrs}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad3,dilations,dimRoundingMode,activation:activation2,leakyreluAlpha}=attrs,intermediates=[],$dilations=dilations;$dilations==null&&($dilations=[1,1]),util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,$dilations),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${strides} and dilations '${$dilations}'`);let convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,$dilations,pad3,dimRoundingMode,!0),shouldPackDepthwiseConv=env().getBool("WEBGL_PACK_DEPTHWISECONV")&&convInfo.strideWidth<=2&&convInfo.outChannels/convInfo.inChannels==1,fusedActivation=activation2?mapActivationToShaderProgram(activation2,shouldPackDepthwiseConv):null,programInputs=[x,filter],hasBias=bias!=null,hasPreluActivationWeights=preluActivationWeights!=null,hasLeakyreluAlpha=activation2==="leakyrelu";if(hasBias&&programInputs.push(bias),hasPreluActivationWeights&&programInputs.push(preluActivationWeights),hasLeakyreluAlpha){let $leakyreluAlpha=backend2.makeTensorInfo([],"float32",util_exports.createScalarValue(leakyreluAlpha,"float32"));programInputs.push($leakyreluAlpha),intermediates.push($leakyreluAlpha)}let program;shouldPackDepthwiseConv?program=new DepthwiseConvPacked2DProgram(convInfo,hasBias,fusedActivation,hasPreluActivationWeights,hasLeakyreluAlpha):program=new DepthwiseConv2DProgram(convInfo,hasBias,fusedActivation,hasPreluActivationWeights,hasLeakyreluAlpha);let result=backend2.runWebGLProgram(program,programInputs,"float32");return intermediates.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),result}var fusedDepthwiseConv2DConfig2={kernelName:FusedDepthwiseConv2D,backendName:"webgl",kernelFunc:fusedDepthwiseConv2D2};var GatherNDProgram=class{constructor(sliceDim,strides,shape){this.sliceDim=sliceDim,this.strides=strides,this.variableNames=["x","indices"],this.outputShape=shape;let stridesType=getCoordsDataType(strides.length),dtype=getCoordsDataType(shape.length),strideString=this.sliceDim>1?"strides[j]":"strides";this.userCode=` - ${stridesType} strides = ${stridesType}(${this.strides}); + `}};var IO={kernelName:Pc,backendName:"webgl",kernelFunc:TZ},qp;function TZ(r){let{inputs:e,backend:t,attrs:o}=r,{pixels:n}=e,{numChannels:s}=o,a=typeof HTMLVideoElement!="undefined"&&n instanceof HTMLVideoElement,i=typeof HTMLImageElement!="undefined"&&n instanceof HTMLImageElement,l=typeof ImageBitmap!="undefined"&&n instanceof ImageBitmap,[u,c]=a?[n.videoWidth,n.videoHeight]:[n.width,n.height],p=[c,u],m=[c,u,s];(i||a||l)&&(qp==null&&(qp=document.createElement("canvas").getContext("2d")),qp.canvas.width=u,qp.canvas.height=c,qp.drawImage(n,0,0,u,c),n=qp.canvas);let f=t.makeTensorInfo(p,"int32");t.texData.get(f.dataId).usage=Dr.PIXELS,t.gpgpu.uploadPixelDataToTexture(t.getTexture(f.dataId),n);let d=W().getBool("WEBGL_PACK")?new $C(m):new DC(m),h=t.runWebGLProgram(d,[f],"int32");return t.disposeData(f.dataId),h}function EZ(r){let{inputs:e,backend:t,attrs:o}=r,{x:n,filter:s,bias:a,preluActivationWeights:i}=e,{strides:l,pad:u,dataFormat:c,dilations:p,dimRoundingMode:m,activation:f,leakyreluAlpha:d}=o,h=S.convertConv2DDataFormat(c),g=S.computeConv2DInfo(n.shape,s.shape,l,p,u,m,!1,h),y,b=[];if(g.filterHeight===1&&g.filterWidth===1&&g.dilationHeight===1&&g.dilationWidth===1&&g.strideHeight===1&&g.strideWidth===1&&(g.padInfo.type==="SAME"||g.padInfo.type==="VALID"))y=Wx({x:n,filter:s,convInfo:g,backend:t,bias:a,activation:f,preluActivationWeights:i,leakyreluAlpha:d});else if(W().getBool("WEBGL_CONV_IM2COL")&&n.shape[0]===1)y=Gx({x:n,filter:s,convInfo:g,backend:t,bias:a,activation:f,preluActivationWeights:i,leakyreluAlpha:d});else{let w=a!=null,k=i!=null,$=f==="leakyrelu",T=f?Dl(f,!1):null,F=new sh(g,w,T,k,$),M=[n,s];if(a&&M.push(a),i&&M.push(i),$){let L=t.makeTensorInfo([],"float32",x.createScalarValue(d,"float32"));M.push(L),b.push(L)}y=t.runWebGLProgram(F,M,"float32")}let _=me({inputs:{x:y},backend:t,attrs:{shape:g.outShape}});return b.push(y),b.forEach(w=>t.disposeIntermediateTensorInfo(w)),_}var NO={kernelName:ws,backendName:"webgl",kernelFunc:EZ};function AZ(r){let{inputs:e,backend:t,attrs:o}=r,{x:n,filter:s,bias:a,preluActivationWeights:i}=e,{strides:l,pad:u,dilations:c,dimRoundingMode:p,activation:m,leakyreluAlpha:f}=o,d=[],h=c;h==null&&(h=[1,1]),x.assert(S.eitherStridesOrDilationsAreOne(l,h),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${l} and dilations '${h}'`);let g=S.computeConv2DInfo(n.shape,s.shape,l,h,u,p,!0),y=W().getBool("WEBGL_PACK_DEPTHWISECONV")&&g.strideWidth<=2&&g.outChannels/g.inChannels==1,b=m?Dl(m,y):null,_=[n,s],w=a!=null,k=i!=null,$=m==="leakyrelu";if(w&&_.push(a),k&&_.push(i),$){let M=t.makeTensorInfo([],"float32",x.createScalarValue(f,"float32"));_.push(M),d.push(M)}let T;y?T=new ah(g,w,b,k,$):T=new ih(g,w,b,k,$);let F=t.runWebGLProgram(T,_,"float32");return d.forEach(M=>t.disposeIntermediateTensorInfo(M)),F}var SO={kernelName:vs,backendName:"webgl",kernelFunc:AZ};var RC=class{constructor(e,t,o){this.sliceDim=e,this.strides=t,this.variableNames=["x","indices"],this.outputShape=o;let n=Be(t.length),s=Be(o.length),a=this.sliceDim>1?"strides[j]":"strides";this.userCode=` + ${n} strides = ${n}(${this.strides}); void main() { - ${dtype} coords = getOutputCoords(); + ${s} coords = getOutputCoords(); int flattenIndex = 0; for (int j = 0; j < ${this.sliceDim}; j++) { int index = round(getIndices(coords[0], j)); - flattenIndex += index * ${strideString}; + flattenIndex += index * ${a}; } setOutput(getX(flattenIndex, coords[1])); } - `}};function gatherNd2(args){let{inputs,backend:backend2}=args,{params,indices}=inputs,indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],[resultShape,numSlices,sliceSize,strides]=backend_util_exports.prepareAndValidate(params,indices),flattenIndices=reshape4({inputs:{x:indices},backend:backend2,attrs:{shape:[numSlices,sliceRank]}}),flattenX=reshape4({inputs:{x:params},backend:backend2,attrs:{shape:[util_exports.sizeFromShape(params.shape)/sliceSize,sliceSize]}}),program=new GatherNDProgram(sliceRank,strides,[numSlices,sliceSize]),res=backend2.runWebGLProgram(program,[flattenX,flattenIndices],flattenX.dtype),reshaped=reshape4({inputs:{x:res},backend:backend2,attrs:{shape:resultShape}});return backend2.disposeIntermediateTensorInfo(flattenIndices),backend2.disposeIntermediateTensorInfo(flattenX),backend2.disposeIntermediateTensorInfo(res),reshaped}var gatherNdConfig2={kernelName:GatherNd,backendName:"webgl",kernelFunc:gatherNd2};var GatherProgram=class{constructor(aShape,outputShape){this.variableNames=["A","indices"],this.outputShape=outputShape,this.rank=outputShape.length;let dtype=getCoordsDataType(this.rank),sourceCoords=getSourceCoords2(aShape,2);this.userCode=` + `}};function DZ(r){let{inputs:e,backend:t}=r,{params:o,indices:n}=e,s=n.shape,a=s[s.length-1],[i,l,u,c]=S.prepareAndValidate(o,n),p=me({inputs:{x:n},backend:t,attrs:{shape:[l,a]}}),m=me({inputs:{x:o},backend:t,attrs:{shape:[x.sizeFromShape(o.shape)/u,u]}}),f=new RC(a,c,[l,u]),d=t.runWebGLProgram(f,[m,p],m.dtype),h=me({inputs:{x:d},backend:t,attrs:{shape:i}});return t.disposeIntermediateTensorInfo(p),t.disposeIntermediateTensorInfo(m),t.disposeIntermediateTensorInfo(d),h}var TO={kernelName:ai,backendName:"webgl",kernelFunc:DZ};var FC=class{constructor(e,t){this.variableNames=["A","indices"],this.outputShape=t,this.rank=t.length;let o=Be(this.rank),n=$Z(e,2);this.userCode=` void main() { - ${dtype} resRC = getOutputCoords(); - setOutput(getA(${sourceCoords})); + ${o} resRC = getOutputCoords(); + setOutput(getA(${n})); } - `}};function getSourceCoords2(aShape,axis){let currentCoords=["resRC.x","resRC.y","resRC.z","resRC.w"],sourceCoords=[];for(let i=0;ibackend2.disposeIntermediateTensorInfo(t)),backend2.makeTensorInfo(shapeInfo.outputShape,outBuf.dtype,outBuf.values)}let program=new GatherProgram(flattenX.shape,flattenOutputShape),res=backend2.runWebGLProgram(program,[flattenX,flattenIndex],flattenX.dtype);toDispose.push(res);let reshaped=reshape4({inputs:{x:res},backend:backend2,attrs:{shape:shapeInfo.outputShape}});return toDispose.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),reshaped}var gatherV2Config2={kernelName:GatherV2,backendName:"webgl",kernelFunc:gatherV22};var GREATER="return float(a > b);",GREATER_PACKED=` + `}};function $Z(r,e){let t=["resRC.x","resRC.y","resRC.z","resRC.w"],o=[];for(let n=0;nt.disposeIntermediateTensorInfo(k)),t.makeTensorInfo(u.outputShape,w.dtype,w.values)}let h=new FC(m.shape,d),g=t.runWebGLProgram(h,[m,f],m.dtype);p.push(g);let y=me({inputs:{x:g},backend:t,attrs:{shape:u.outputShape}});return p.forEach(b=>t.disposeIntermediateTensorInfo(b)),y}var EO={kernelName:us,backendName:"webgl",kernelFunc:RZ};var FZ="return float(a > b);",OZ=` return vec4(greaterThan(a, b)); -`,greater4=binaryKernelFunc2({opSnippet:GREATER,packedOpSnippet:GREATER_PACKED,cpuKernelImpl:greaterImplCPU,dtype:"bool"}),greaterConfig2={kernelName:Greater,backendName:"webgl",kernelFunc:greater4};var GREATER_EQUAL="return float(a >= b);",GREATER_EQUAL_PACKED=` +`,PZ=at({opSnippet:FZ,packedOpSnippet:OZ,cpuKernelImpl:hR,dtype:"bool"}),AO={kernelName:li,backendName:"webgl",kernelFunc:PZ};var MZ="return float(a >= b);",LZ=` return vec4(greaterThanEqual(a, b)); -`,greaterEqual3=binaryKernelFunc2({opSnippet:GREATER_EQUAL,packedOpSnippet:GREATER_EQUAL_PACKED,dtype:"bool"}),greaterEqualConfig2={kernelName:GreaterEqual,backendName:"webgl",kernelFunc:greaterEqual3};function ifft3(args){let{inputs,backend:backend2}=args,{input:input2}=inputs;return fftImpl2(input2,!0,backend2)}var ifftConfig2={kernelName:IFFT,backendName:"webgl",kernelFunc:ifft3};var IS_FINITE="return float(!isnan(x) && !isinf(x));",isFinite4=unaryKernelFunc2({opSnippet:IS_FINITE,dtype:"bool"}),isFiniteConfig2={kernelName:IsFinite,backendName:"webgl",kernelFunc:isFinite4};var IS_INF="return float(isinf(x));",isInf3=unaryKernelFunc2({opSnippet:IS_INF,dtype:"bool"}),isInfConfig2={kernelName:IsInf,backendName:"webgl",kernelFunc:isInf3};var IS_NAN="return float(isnan(x));",isNaN4=unaryKernelFunc2({opSnippet:IS_NAN,dtype:"bool"}),isNaNConfig2={kernelName:IsNan,backendName:"webgl",kernelFunc:isNaN4};var LESS="return float(a < b);",LESS_PACKED=` +`,zZ=at({opSnippet:MZ,packedOpSnippet:LZ,dtype:"bool"}),DO={kernelName:ln,backendName:"webgl",kernelFunc:zZ};function BZ(r){let{inputs:e,backend:t}=r,{input:o}=e;return Hx(o,!0,t)}var $O={kernelName:su,backendName:"webgl",kernelFunc:BZ};var VZ="return float(!isnan(x) && !isinf(x));",WZ=Ce({opSnippet:VZ,dtype:"bool"}),RO={kernelName:ui,backendName:"webgl",kernelFunc:WZ};var GZ="return float(isinf(x));",UZ=Ce({opSnippet:GZ,dtype:"bool"}),FO={kernelName:ci,backendName:"webgl",kernelFunc:UZ};var jZ="return float(isnan(x));",qZ=Ce({opSnippet:jZ,dtype:"bool"}),OO={kernelName:pi,backendName:"webgl",kernelFunc:qZ};var HZ="return float(a < b);",KZ=` return vec4(lessThan(a, b)); -`,less4=binaryKernelFunc2({opSnippet:LESS,packedOpSnippet:LESS_PACKED,cpuKernelImpl:lessImplCPU,dtype:"bool"}),lessConfig2={kernelName:Less,backendName:"webgl",kernelFunc:less4};var LESS_EQUAL="return float(a <= b);",LESS_EQUAL_PACKED=` +`,XZ=at({opSnippet:HZ,packedOpSnippet:KZ,cpuKernelImpl:gR,dtype:"bool"}),PO={kernelName:mi,backendName:"webgl",kernelFunc:XZ};var YZ="return float(a <= b);",ZZ=` return vec4(lessThanEqual(a, b)); -`,lessEqual3=binaryKernelFunc2({opSnippet:LESS_EQUAL,packedOpSnippet:LESS_EQUAL_PACKED,dtype:"bool"}),lessEqualConfig2={kernelName:LessEqual,backendName:"webgl",kernelFunc:lessEqual3};function linSpace2(args){let{backend:backend2,attrs}=args,{start,stop,num}=attrs,outVals=linSpaceImplCPU(start,stop,num);return backend2.makeTensorInfo([outVals.length],"float32",outVals)}var linSpaceConfig2={kernelName:LinSpace,backendName:"webgl",kernelFunc:linSpace2};var LOG=`if (x < 0.0) return NAN; - return log(x);`,LOG_PACKED=` +`,JZ=at({opSnippet:YZ,packedOpSnippet:ZZ,dtype:"bool"}),MO={kernelName:fi,backendName:"webgl",kernelFunc:JZ};function QZ(r){let{backend:e,attrs:t}=r,{start:o,stop:n,num:s}=t,a=xR(o,n,s);return e.makeTensorInfo([a.length],"float32",a)}var LO={kernelName:au,backendName:"webgl",kernelFunc:QZ};var e9=`if (x < 0.0) return NAN; + return log(x);`,t9=` vec4 result = log(x); vec4 isNaN = vec4(lessThan(x, vec4(0.0))); result.r = isNaN.r == 1.0 ? NAN : result.r; @@ -2995,16 +2995,16 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: result.a = isNaN.a == 1.0 ? NAN : result.a; return result; -`,log4=unaryKernelFunc2({opSnippet:LOG,packedOpSnippet:LOG_PACKED,cpuKernelImpl:logImplCPU}),logConfig2={kernelName:Log,backendName:"webgl",kernelFunc:log4};var LOG1P="return log(1.0 + x);",log1p3=unaryKernelFunc2({opSnippet:LOG1P}),log1pConfig2={kernelName:Log1p,backendName:"webgl",kernelFunc:log1p3};var LOGICAL_AND="return float(a >= 1.0 && b >= 1.0);",LOGICAL_AND_PACKED=` +`,r9=Ce({opSnippet:e9,packedOpSnippet:t9,cpuKernelImpl:yR}),zO={kernelName:cn,backendName:"webgl",kernelFunc:r9};var o9="return log(1.0 + x);",n9=Ce({opSnippet:o9}),BO={kernelName:di,backendName:"webgl",kernelFunc:n9};var s9="return float(a >= 1.0 && b >= 1.0);",i9=` return vec4( vec4(greaterThanEqual(a, vec4(1.0))) * vec4(greaterThanEqual(b, vec4(1.0)))); -`,logicalAnd3=binaryKernelFunc2({opSnippet:LOGICAL_AND,packedOpSnippet:LOGICAL_AND_PACKED,dtype:"bool"}),logicalAndConfig2={kernelName:LogicalAnd,backendName:"webgl",kernelFunc:logicalAnd3};var LOGICAL_NOT="return float(!(x >= 1.0));",logicalNot3=unaryKernelFunc2({opSnippet:LOGICAL_NOT}),logicalNotConfig2={kernelName:LogicalNot,backendName:"webgl",kernelFunc:logicalNot3};var LOGICAL_OR="return float(a >= 1.0 || b >= 1.0);",LOGICAL_OR_PACKED=` +`,a9=at({opSnippet:s9,packedOpSnippet:i9,dtype:"bool"}),VO={kernelName:hi,backendName:"webgl",kernelFunc:a9};var l9="return float(!(x >= 1.0));",u9=Ce({opSnippet:l9}),WO={kernelName:Qa,backendName:"webgl",kernelFunc:u9};var c9="return float(a >= 1.0 || b >= 1.0);",p9=` return min( vec4(greaterThanEqual(a, vec4(1.0))) + vec4(greaterThanEqual(b, vec4(1.0))), vec4(1.0)); -`,logicalOr3=binaryKernelFunc2({opSnippet:LOGICAL_OR,packedOpSnippet:LOGICAL_OR_PACKED,dtype:"bool"}),logicalOrConfig2={kernelName:LogicalOr,backendName:"webgl",kernelFunc:logicalOr3};var LRNProgram=class{constructor(xShape,radius,bias,alpha,beta){this.variableNames=["x"],this.outputShape=[];let rad=radius,maxD=xShape[3]-1;this.outputShape=xShape;let powOperator,basis=`float(${bias}) + float(${alpha}) * sum`;beta===.5?powOperator=`inversesqrt(${basis})`:beta===1?powOperator=`1.0/(${basis})`:powOperator=`exp(log(${basis}) * float(-${beta}));`,this.userCode=` +`,m9=at({opSnippet:c9,packedOpSnippet:p9,dtype:"bool"}),GO={kernelName:el,backendName:"webgl",kernelFunc:m9};var OC=class{constructor(e,t,o,n,s){this.variableNames=["x"],this.outputShape=[];let a=t,i=e[3]-1;this.outputShape=e;let l,u=`float(${o}) + float(${n}) * sum`;s===.5?l=`inversesqrt(${u})`:s===1?l=`1.0/(${u})`:l=`exp(log(${u}) * float(-${s}));`,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords[0]; @@ -3013,17 +3013,17 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: int d = coords[3]; float x = getX(b, r, c, d); float sum = 0.0; - for (int j = -${rad}; j <= ${rad}; j++) { + for (int j = -${a}; j <= ${a}; j++) { int idx = d + j; - if (idx >= 0 && idx <= ${maxD}) { + if (idx >= 0 && idx <= ${i}) { float z = getX(b, r, c, idx); sum += z * z; } } - float val = x * ${powOperator}; + float val = x * ${l}; setOutput(val); } - `}};var LRNPackedProgram=class{constructor(xShape,radius,bias,alpha,beta){this.variableNames=["x"],this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0;let rad=radius,maxD=xShape[3]-1;this.outputShape=xShape;let powOperator,basis=`float(${bias}) + float(${alpha}) * sum`;beta===.5?powOperator=`inversesqrt(${basis})`:beta===1?powOperator=`1.0/(${basis})`:powOperator=`exp(log(${basis}) * float(-${beta}));`,this.userCode=` + `}};var PC=class{constructor(e,t,o,n,s){this.variableNames=["x"],this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0;let a=t,i=e[3]-1;this.outputShape=e;let l,u=`float(${o}) + float(${n}) * sum`;s===.5?l=`inversesqrt(${u})`:s===1?l=`1.0/(${u})`:l=`exp(log(${u}) * float(-${s}));`,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords.x; @@ -3047,7 +3047,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: getChannel(xFragAtOutputCoords, vec2(c + 1, d + 1)) : 0.0 ); - int firstChannel = d - ${rad}; + int firstChannel = d - ${a}; vec2 cache = vec2(0.); if(firstChannel >= 0){ vec4 firstChannelFrag = getX(b, r, c, firstChannel); @@ -3058,10 +3058,10 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } ivec2 depth = ivec2(d, d + 1); - for (int j = - ${rad}; j <= ${rad}; j++) { + for (int j = - ${a}; j <= ${a}; j++) { ivec2 idx = depth + j; bvec2 aboveLowerBound = greaterThanEqual(idx, ivec2(0)); - bvec2 belowUpperBound = lessThanEqual(idx, ivec2(${maxD})); + bvec2 belowUpperBound = lessThanEqual(idx, ivec2(${i})); bool depthInRange = aboveLowerBound.x && belowUpperBound.x; bool depthPlusOneInRange = aboveLowerBound.y && belowUpperBound.y; @@ -3082,10 +3082,10 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: sum += z * z; } } - vec4 result = xAtOutputCoords * ${powOperator}; + vec4 result = xAtOutputCoords * ${l}; setOutput(result); } - `}};var lrn=args=>{let{inputs,backend:backend2,attrs}=args,{x}=inputs,{depthRadius,bias,alpha,beta}=attrs,program=env().getBool("WEBGL_PACK_NORMALIZATION")?new LRNPackedProgram(x.shape,depthRadius,bias,alpha,beta):new LRNProgram(x.shape,depthRadius,bias,alpha,beta);return backend2.runWebGLProgram(program,[x],x.dtype)},LRNConfig={kernelName:LRN,backendName:"webgl",kernelFunc:lrn};var LRNGradProgram=class{constructor(inputShape,depthRadius,bias,alpha,beta){this.variableNames=["inputImage","outputImage","dy"],this.outputShape=[],this.outputShape=inputShape,this.depth=inputShape[3],this.depthRadius=depthRadius,this.bias=bias,this.alpha=alpha,this.beta=beta,this.userCode=` + `}};var f9=r=>{let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{depthRadius:s,bias:a,alpha:i,beta:l}=o,u=W().getBool("WEBGL_PACK_NORMALIZATION")?new PC(n.shape,s,a,i,l):new OC(n.shape,s,a,i,l);return t.runWebGLProgram(u,[n],n.dtype)},UO={kernelName:ca,backendName:"webgl",kernelFunc:f9};var MC=class{constructor(e,t,o,n,s){this.variableNames=["inputImage","outputImage","dy"],this.outputShape=[],this.outputShape=e,this.depth=e[3],this.depthRadius=t,this.bias=o,this.alpha=n,this.beta=s,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords[0]; @@ -3094,9 +3094,9 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: float result = 0.0; for (int d = 0; d < ${this.depth}; ++d) { - int depthBegin = int(max(0.0, float(d - ${depthRadius}))); + int depthBegin = int(max(0.0, float(d - ${t}))); int depthEnd = int(min(float(${this.depth}), - float(d + ${depthRadius} + 1))); + float(d + ${t} + 1))); const int MIN_DEPTH_BEGIN = 0; const int MAX_DEPTH_END = ${this.depth}; @@ -3114,19 +3114,19 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } } - norm = float(${alpha}) * norm + float(${bias}); + norm = float(${n}) * norm + float(${o}); for(int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k){ if (k < depthBegin){ continue; } else if (k >= depthBegin && k < depthEnd){ - float dyi = -2.0 * float(${alpha}) - * float(${beta}) + float dyi = -2.0 * float(${n}) + * float(${s}) * getInputImage(b ,r ,c, k) * getOutputImage(b, r, c, d) / norm; if (k == d) { - dyi += pow(norm, -1.0 * ${beta}); + dyi += pow(norm, -1.0 * ${s}); } if (k == coords[3]) { dyi *= getDy(b, r, c, d); @@ -3140,15 +3140,15 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(result); } - `}};var lrnGrad=args=>{let{inputs,backend:backend2,attrs}=args,{x,y,dy}=inputs,{depthRadius,bias,alpha,beta}=attrs,program=new LRNGradProgram(x.shape,depthRadius,bias,alpha,beta);return backend2.runWebGLProgram(program,[x,y,dy],x.dtype)},LRNGradConfig={kernelName:LRNGrad,backendName:"webgl",kernelFunc:lrnGrad};function maxImpl2(x,reduceShape,outShape,backend2){let inSize=util_exports.sizeFromShape(reduceShape),batchSize=util_exports.sizeFromShape(x.shape)/inSize,reshapedInput=reshape4({inputs:{x},attrs:{shape:[batchSize,inSize]},backend:backend2}),reduced=reduce(reshapedInput,x.dtype,"max",backend2),reshapedOutput=reshape4({inputs:{x:reduced},attrs:{shape:outShape},backend:backend2});return backend2.disposeIntermediateTensorInfo(reshapedInput),backend2.disposeIntermediateTensorInfo(reduced),reshapedOutput}function max4(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{reductionIndices,keepDims}=attrs,xRank=x.shape.length,origAxes=util_exports.parseAxisParam(reductionIndices,x.shape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),maxInputIsTransposed=permutedAxes!=null,shouldExecuteOnCPU=backend2.shouldExecuteOnCPU([x]),maxInput=x;if(maxInputIsTransposed){if(shouldExecuteOnCPU){let values=backend2.texData.get(maxInput.dataId).values,newShape=new Array(xRank);for(let i=0;i{let{inputs:e,backend:t,attrs:o}=r,{x:n,y:s,dy:a}=e,{depthRadius:i,bias:l,alpha:u,beta:c}=o,p=new MC(n.shape,i,l,u,c);return t.runWebGLProgram(p,[n,s,a],n.dtype)},jO={kernelName:lu,backendName:"webgl",kernelFunc:d9};function qO(r,e,t,o){let n=x.sizeFromShape(e),a=x.sizeFromShape(r.shape)/n,i=me({inputs:{x:r},attrs:{shape:[a,n]},backend:o}),l=So(i,r.dtype,"max",o),u=me({inputs:{x:l},attrs:{shape:t},backend:o});return o.disposeIntermediateTensorInfo(i),o.disposeIntermediateTensorInfo(l),u}function LC(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{reductionIndices:s,keepDims:a}=o,i=n.shape.length,l=x.parseAxisParam(s,n.shape),u=l,c=S.getAxesPermutation(u,i),p=c!=null,m=t.shouldExecuteOnCPU([n]),f=n;if(p){if(m){let _=t.texData.get(f.dataId).values,w=new Array(i);for(let T=0;T`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad3,dimRoundingMode);if(convInfo.filterWidth===1&&convInfo.filterHeight===1&&util_exports.arraysEqual(convInfo.inShape,convInfo.outShape))return identity3({inputs:{x},backend:backend2});let maxPoolProgram=new Pool2DProgram(convInfo,"max",!1);return backend2.runWebGLProgram(maxPoolProgram,[x],x.dtype)}var maxPoolConfig2={kernelName:MaxPool,backendName:"webgl",kernelFunc:maxPool3};function maxPool3d2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{filterSize,strides,pad:pad3,dataFormat,dimRoundingMode}=attrs,dilations=[1,1,1],convInfo=backend_util_exports.computePool3DInfo(x.shape,filterSize,strides,dilations,pad3,dimRoundingMode,dataFormat),maxPoolProgram=new Pool3DProgram(convInfo,"max",!1);return backend2.runWebGLProgram(maxPoolProgram,[x],x.dtype)}var maxPool3DConfig2={kernelName:MaxPool3D,backendName:"webgl",kernelFunc:maxPool3d2};var MaxPool2DBackpropProgram=class{constructor(convInfo){this.variableNames=["dy","maxPos"],this.outputShape=convInfo.inShape;let strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationHeight=convInfo.dilationHeight,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,lastIndex=effectiveFilterHeight*effectiveFilterWidth-1;this.userCode=` - const ivec2 pads = ivec2(${padTop}, ${padLeft}); +`,x9=at({opSnippet:h9,packedOpSnippet:g9,cpuKernelImpl:_R}),KO={kernelName:mn,backendName:"webgl",kernelFunc:x9};function y9(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e;Xi(n,"maxPool");let{filterSize:s,strides:a,pad:i,dimRoundingMode:l}=o,u=1;x.assert(S.eitherStridesOrDilationsAreOne(a,u),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${a} and dilations '${u}'`);let c=S.computePool2DInfo(n.shape,s,a,u,i,l);if(c.filterWidth===1&&c.filterHeight===1&&x.arraysEqual(c.inShape,c.outShape))return Ht({inputs:{x:n},backend:t});let p=new Yi(c,"max",!1);return t.runWebGLProgram(p,[n],n.dtype)}var XO={kernelName:fn,backendName:"webgl",kernelFunc:y9};function b9(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{filterSize:s,strides:a,pad:i,dataFormat:l,dimRoundingMode:u}=o,c=[1,1,1],p=S.computePool3DInfo(n.shape,s,a,c,i,u,l),m=new mc(p,"max",!1);return t.runWebGLProgram(m,[n],n.dtype)}var YO={kernelName:pa,backendName:"webgl",kernelFunc:b9};var zC=class{constructor(e){this.variableNames=["dy","maxPos"],this.outputShape=e.inShape;let t=e.strideHeight,o=e.strideWidth,n=e.dilationHeight,s=e.effectiveFilterHeight,a=e.effectiveFilterWidth,i=s-1-e.padInfo.top,l=a-1-e.padInfo.left,u=s*a-1;this.userCode=` + const ivec2 pads = ivec2(${i}, ${l}); void main() { ivec4 coords = getOutputCoords(); @@ -3162,30 +3162,30 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d). // ? = to be determined. : = across all values in that axis. float dotProd = 0.0; - for (int wR = 0; wR < ${effectiveFilterHeight}; - wR += ${dilationHeight}) { - float dyR = float(dyRCorner + wR) / ${strideHeight}.0; + for (int wR = 0; wR < ${s}; + wR += ${n}) { + float dyR = float(dyRCorner + wR) / ${t}.0; - if (dyR < 0.0 || dyR >= ${convInfo.outHeight}.0 || fract(dyR) > 0.0) { + if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || fract(dyR) > 0.0) { continue; } int idyR = int(dyR); - for (int wC = 0; wC < ${effectiveFilterWidth}; wC++) { - float dyC = float(dyCCorner + wC) / ${strideWidth}.0; + for (int wC = 0; wC < ${a}; wC++) { + float dyC = float(dyCCorner + wC) / ${o}.0; - if (dyC < 0.0 || dyC >= ${convInfo.outWidth}.0 || + if (dyC < 0.0 || dyC >= ${e.outWidth}.0 || fract(dyC) > 0.0) { continue; } int idyC = int(dyC); float dyValue = getDy(b, idyR, idyC, d); - int maxPosValue = ${lastIndex} - int(getMaxPos(b, idyR, idyC, d)); + int maxPosValue = ${u} - int(getMaxPos(b, idyR, idyC, d)); // Get the current value, check it against the value from the // position matrix. - int curPosValue = wR * ${effectiveFilterWidth} + wC; + int curPosValue = wR * ${a} + wC; float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0); dotProd += dyValue * mask; @@ -3193,8 +3193,8 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(dotProd); } - `}},MaxPool3DBackpropProgram=class{constructor(convInfo){this.variableNames=["dy","maxPos"],this.outputShape=convInfo.inShape;let strideDepth=convInfo.strideDepth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,dilationDepth=convInfo.dilationDepth,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,effectiveFilterDepth=convInfo.effectiveFilterDepth,effectiveFilterHeight=convInfo.effectiveFilterHeight,effectiveFilterWidth=convInfo.effectiveFilterWidth,padFront=effectiveFilterDepth-1-convInfo.padInfo.front,padTop=effectiveFilterHeight-1-convInfo.padInfo.top,padLeft=effectiveFilterWidth-1-convInfo.padInfo.left,lastIndex=effectiveFilterDepth*effectiveFilterHeight*effectiveFilterWidth-1;this.userCode=` - const ivec3 pads = ivec3(${padFront}, ${padTop}, ${padLeft}); + `}},BC=class{constructor(e){this.variableNames=["dy","maxPos"],this.outputShape=e.inShape;let t=e.strideDepth,o=e.strideHeight,n=e.strideWidth,s=e.dilationDepth,a=e.dilationHeight,i=e.dilationWidth,l=e.effectiveFilterDepth,u=e.effectiveFilterHeight,c=e.effectiveFilterWidth,p=l-1-e.padInfo.front,m=u-1-e.padInfo.top,f=c-1-e.padInfo.left,d=l*u*c-1;this.userCode=` + const ivec3 pads = ivec3(${p}, ${m}, ${f}); void main() { ivec5 coords = getOutputCoords(); @@ -3211,44 +3211,44 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: // ? = to be determined. : = across all values in that axis. float dotProd = 0.0; - for (int wD = 0; wD < ${effectiveFilterDepth}; - wD += ${dilationDepth}) { - float dyD = float(dyDCorner + wD) / ${strideDepth}.0; + for (int wD = 0; wD < ${l}; + wD += ${s}) { + float dyD = float(dyDCorner + wD) / ${t}.0; - if (dyD < 0.0 || dyD >= ${convInfo.outDepth}.0 || fract(dyD) > 0.0) { + if (dyD < 0.0 || dyD >= ${e.outDepth}.0 || fract(dyD) > 0.0) { continue; } int idyD = int(dyD); - for (int wR = 0; wR < ${effectiveFilterHeight}; - wR += ${dilationHeight}) { - float dyR = float(dyRCorner + wR) / ${strideHeight}.0; + for (int wR = 0; wR < ${u}; + wR += ${a}) { + float dyR = float(dyRCorner + wR) / ${o}.0; - if (dyR < 0.0 || dyR >= ${convInfo.outHeight}.0 || + if (dyR < 0.0 || dyR >= ${e.outHeight}.0 || fract(dyR) > 0.0) { continue; } int idyR = int(dyR); - for (int wC = 0; wC < ${effectiveFilterWidth}; - wC += ${dilationWidth}) { - float dyC = float(dyCCorner + wC) / ${strideWidth}.0; + for (int wC = 0; wC < ${c}; + wC += ${i}) { + float dyC = float(dyCCorner + wC) / ${n}.0; - if (dyC < 0.0 || dyC >= ${convInfo.outWidth}.0 || + if (dyC < 0.0 || dyC >= ${e.outWidth}.0 || fract(dyC) > 0.0) { continue; } int idyC = int(dyC); float dyValue = getDy(batch, idyD, idyR, idyC, ch); - int maxPosValue = ${lastIndex} - + int maxPosValue = ${d} - int(getMaxPos(batch, idyD, idyR, idyC, ch)); // Get the current value, check it against the value from the // position matrix. int curPosValue = - wD * ${effectiveFilterHeight} * ${effectiveFilterWidth} + - wR * ${effectiveFilterWidth} + wC; + wD * ${u} * ${c} + + wR * ${c} + wC; float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0); dotProd += dyValue * mask; @@ -3257,105 +3257,105 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } setOutput(dotProd); } - `}};function maxPool3DGrad2(args){let{inputs,backend:backend2,attrs}=args,{dy,input:input2}=inputs,x=input2,{filterSize,strides,pad:pad3,dimRoundingMode}=attrs,dilations=[1,1,1],convInfo=backend_util_exports.computePool3DInfo(x.shape,filterSize,strides,dilations,pad3,dimRoundingMode),maxPool3dPositionsProgram=new Pool3DProgram(convInfo,"max",!0),maxPool3dPositions2=backend2.runWebGLProgram(maxPool3dPositionsProgram,[x],x.dtype),maxPoolBackpropProgram=new MaxPool3DBackpropProgram(convInfo),result=backend2.runWebGLProgram(maxPoolBackpropProgram,[dy,maxPool3dPositions2],x.dtype);return backend2.disposeIntermediateTensorInfo(maxPool3dPositions2),result}var maxPoolGrad3DConfig={kernelName:MaxPool3DGrad,backendName:"webgl",kernelFunc:maxPool3DGrad2};function maxPoolGrad3(args){let{inputs,backend:backend2,attrs}=args,{dy,input:input2,output}=inputs,x=input2;assertNotComplex2([input2,output],"maxPoolGrad");let{filterSize,strides,pad:pad3,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad3,dimRoundingMode),getPositions=!0,maxPoolPositionsProgram=new Pool2DProgram(convInfo,"max",getPositions),maxPoolPositions2=backend2.runWebGLProgram(maxPoolPositionsProgram,[x],x.dtype),maxPoolBackPropProgram=new MaxPool2DBackpropProgram(convInfo),result=backend2.runWebGLProgram(maxPoolBackPropProgram,[dy,maxPoolPositions2],x.dtype);return backend2.disposeIntermediateTensorInfo(maxPoolPositions2),result}var maxPoolGradConfig3={kernelName:MaxPoolGrad,backendName:"webgl",kernelFunc:maxPoolGrad3};function maxPoolWithArgmaxImpl2(x,includeBatchInIndex,convInfo,backend2){let program=new Pool2DProgram(convInfo,"max",!1),poolOutput=backend2.runWebGLProgram(program,[x],"float32");program=new Pool2DProgram(convInfo,"max",!0,!0,includeBatchInIndex);let indexOutput=backend2.runWebGLProgram(program,[x],"float32");return[poolOutput,indexOutput]}var maxPoolWithArgmaxConfig2={kernelName:MaxPoolWithArgmax,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend2})=>{let{x}=inputs,{filterSize,strides,pad:pad3,includeBatchInIndex}=attrs,webglBackend=backend2;util_exports.assert(x.shape.length===4,()=>`Error in maxPool: input must be rank 4 but got rank ${x.shape.length}.`);let dilations=[1,1];util_exports.assert(backend_util_exports.eitherStridesOrDilationsAreOne(strides,dilations),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${strides} and dilations '${dilations}'`);let convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,dilations,pad3),[result,indexes]=maxPoolWithArgmaxImpl2(x,includeBatchInIndex,convInfo,webglBackend);return[result,indexes]}};function meanImpl(x,reduceShape,outShape,backend2){let inSize=util_exports.sizeFromShape(reduceShape),batchSize=util_exports.sizeFromShape(x.shape)/inSize,reshapedInput=reshape4({inputs:{x},attrs:{shape:[batchSize,inSize]},backend:backend2}),reduced=reduce(reshapedInput,"float32","mean",backend2),reshapedOutput=reshape4({inputs:{x:reduced},attrs:{shape:outShape},backend:backend2});return backend2.disposeIntermediateTensorInfo(reshapedInput),backend2.disposeIntermediateTensorInfo(reduced),reshapedOutput}var meanConfig2={kernelName:Mean,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend2})=>{let{x}=inputs,{keepDims,axis}=attrs,webglBackend=backend2,xRank=x.shape.length,origAxes=util_exports.parseAxisParam(axis,x.shape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),meanInputIsTransposed=permutedAxes!=null,shouldExecuteOnCPU=webglBackend.shouldExecuteOnCPU([x]),intermediates=[],meanInput=x;if(meanInputIsTransposed){if(shouldExecuteOnCPU){let values=webglBackend.texData.get(meanInput.dataId).values,newShape=new Array(xRank);for(let i=0;i{let{x:o}=r,{filterSize:n,strides:s,pad:a,includeBatchInIndex:i}=e,l=t;x.assert(o.shape.length===4,()=>`Error in maxPool: input must be rank 4 but got rank ${o.shape.length}.`);let u=[1,1];x.assert(S.eitherStridesOrDilationsAreOne(s,u),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${s} and dilations '${u}'`);let c=S.computePool2DInfo(o.shape,n,s,u,a),[p,m]=QO(o,i,c,l);return[p,m]}};function tP(r,e,t,o){let n=x.sizeFromShape(e),a=x.sizeFromShape(r.shape)/n,i=me({inputs:{x:r},attrs:{shape:[a,n]},backend:o}),l=So(i,"float32","mean",o),u=me({inputs:{x:l},attrs:{shape:t},backend:o});return o.disposeIntermediateTensorInfo(i),o.disposeIntermediateTensorInfo(l),u}var rP={kernelName:dn,backendName:"webgl",kernelFunc:({inputs:r,attrs:e,backend:t})=>{let{x:o}=r,{keepDims:n,axis:s}=e,a=t,i=o.shape.length,l=x.parseAxisParam(s,o.shape),u=l,c=S.getAxesPermutation(u,i),p=c!=null,m=a.shouldExecuteOnCPU([o]),f=[],d=o;if(p){if(m){let w=a.texData.get(d.dataId).values,k=new Array(i);for(let F=0;Fp2[0]+xShape[i]+p2[1]);let rank=xShape.length,dtype=getCoordsDataType(rank),start=paddings.map(p2=>p2[0]).join(","),end=paddings.map((p2,i)=>p2[0]+xShape[i]).join(","),unpackedCoords=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,rank),offset=mode==="reflect"?0:1;if(rank===1){this.userCode=` - int start = ${start}; - int end = ${end}; +`,I9=at({opSnippet:k9,packedOpSnippet:C9,cpuKernelImpl:wR}),nP={kernelName:gn,backendName:"webgl",kernelFunc:I9};var VC=class{constructor(e,t,o){this.variableNames=["x"],this.outputShape=t.map((c,p)=>c[0]+e[p]+c[1]);let n=e.length,s=Be(n),a=t.map(c=>c[0]).join(","),i=t.map((c,p)=>c[0]+e[p]).join(","),l=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,n),u=o==="reflect"?0:1;if(n===1){this.userCode=` + int start = ${a}; + int end = ${i}; void main() { int outC = getOutputCoords(); if (outC < start) { - outC = start * 2 - outC - ${offset}; + outC = start * 2 - outC - ${u}; } else if(outC >= end) { - outC = (end - 1) * 2 - outC + ${offset}; + outC = (end - 1) * 2 - outC + ${u}; } setOutput(getX(outC - start)); } `;return}this.userCode=` - ${dtype} start = ${dtype}(${start}); - ${dtype} end = ${dtype}(${end}); + ${s} start = ${s}(${a}); + ${s} end = ${s}(${i}); void main() { - ${dtype} outC = getOutputCoords(); - for (int i = 0; i < ${rank}; i++) { + ${s} outC = getOutputCoords(); + for (int i = 0; i < ${n}; i++) { if (outC[i] < start[i]) { - outC[i] = start[i] * 2 - outC[i] - ${offset}; + outC[i] = start[i] * 2 - outC[i] - ${u}; } else if(outC[i] >= end[i]) { - outC[i] = (end[i] - 1) * 2 - outC[i] + ${offset}; + outC[i] = (end[i] - 1) * 2 - outC[i] + ${u}; } } - ${dtype} coords = outC - start; - setOutput(getX(${unpackedCoords})); + ${s} coords = outC - start; + setOutput(getX(${l})); } - `}};var MirrorPadPackedProgram=class{constructor(xShape,paddings,mode){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=paddings.map((p2,i)=>p2[0]+xShape[i]+p2[1]);let rank=xShape.length,dtype=getCoordsDataType(rank),start=paddings.map(p2=>p2[0]).join(","),end=paddings.map((p2,i)=>p2[0]+xShape[i]).join(","),coords2=getChannels("rc",rank),source=getChannels("source",rank),cLimit=`${coords2[rank-1]} < ${this.outputShape[rank-1]}`,innerDims=rank===1?"source":`vec2(${source.slice(-2).join()})`,offset=mode==="reflect"?0:1,mainLoop="";if(rank===1){let padSetup=` - ${dtype} source = rc; + `}};var WC=class{constructor(e,t,o){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t.map((d,h)=>d[0]+e[h]+d[1]);let n=e.length,s=Be(n),a=t.map(d=>d[0]).join(","),i=t.map((d,h)=>d[0]+e[h]).join(","),l=qt("rc",n),u=qt("source",n),c=`${l[n-1]} < ${this.outputShape[n-1]}`,p=n===1?"source":`vec2(${u.slice(-2).join()})`,m=o==="reflect"?0:1,f="";if(n===1){let d=` + ${s} source = rc; if (source < start) { - source = start * 2 - source - ${offset}; + source = start * 2 - source - ${m}; } else if (source >= end) { - source = (end - 1) * 2 - source + ${offset}; + source = (end - 1) * 2 - source + ${m}; } source -= start; - `;mainLoop=` - ${dtype} rc = outputLoc; - ${padSetup} - result[0] = getChannel(getX(${source.join()}), ${innerDims}); - ${coords2[rank-1]} += 1; - if(${cLimit}) { - ${padSetup} - result[1] = getChannel(getX(${source.join()}), ${innerDims}); + `;f=` + ${s} rc = outputLoc; + ${d} + result[0] = getChannel(getX(${u.join()}), ${p}); + ${l[n-1]} += 1; + if(${c}) { + ${d} + result[1] = getChannel(getX(${u.join()}), ${p}); } - `}else{let padSetup=` - ${dtype} source = rc; - ${dtype} lt = ${dtype}(lessThan(source, start)); - ${dtype} gte = ${dtype}(greaterThanEqual(source, end)); - ${dtype} orig = 1 - (lt + gte); + `}else{let d=` + ${s} source = rc; + ${s} lt = ${s}(lessThan(source, start)); + ${s} gte = ${s}(greaterThanEqual(source, end)); + ${s} orig = 1 - (lt + gte); source = orig * source + - lt * (start * 2 - source - ${offset}) + - gte * ((end - 1) * 2 - source + ${offset}); + lt * (start * 2 - source - ${m}) + + gte * ((end - 1) * 2 - source + ${m}); source -= start; - `;mainLoop=` - ${dtype} rc = outputLoc; - ${padSetup} - result[0] = getChannel(getX(${source.join()}), ${innerDims}); - ${coords2[rank-1]} += 1; - if(${cLimit}) { - ${padSetup} - result[1] = getChannel(getX(${source.join()}), ${innerDims}); + `;f=` + ${s} rc = outputLoc; + ${d} + result[0] = getChannel(getX(${u.join()}), ${p}); + ${l[n-1]} += 1; + if(${c}) { + ${d} + result[1] = getChannel(getX(${u.join()}), ${p}); } rc = outputLoc; - ${coords2[rank-2]} += 1; - if(${coords2[rank-2]} < ${this.outputShape[rank-2]}) { - ${padSetup} - result[2] = getChannel(getX(${source.join()}), ${innerDims}); - ${coords2[rank-1]} += 1; - if(${cLimit}) { - ${padSetup} - result[3] = getChannel(getX(${source.join()}), ${innerDims}); + ${l[n-2]} += 1; + if(${l[n-2]} < ${this.outputShape[n-2]}) { + ${d} + result[2] = getChannel(getX(${u.join()}), ${p}); + ${l[n-1]} += 1; + if(${c}) { + ${d} + result[3] = getChannel(getX(${u.join()}), ${p}); } } `}this.userCode=` - const ${dtype} start = ${dtype}(${start}); - const ${dtype} end = ${dtype}(${end}); + const ${s} start = ${s}(${a}); + const ${s} end = ${s}(${i}); void main() { - ${dtype} outputLoc = getOutputCoords(); + ${s} outputLoc = getOutputCoords(); vec4 result = vec4(0.); - ${mainLoop} + ${f} setOutput(result); } - `}};var mirrorPadKernelFunc=({inputs,backend:backend2,attrs})=>{let{x}=inputs,{paddings,mode}=attrs,program=env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new MirrorPadPackedProgram(x.shape,paddings,mode):new MirrorPadProgram(x.shape,paddings,mode);return backend2.runWebGLProgram(program,[x],x.dtype)},mirrorPadConfig2={kernelName:MirrorPad,backendName:"webgl",kernelFunc:mirrorPadKernelFunc};var MOD=`if (b == 0.0) return NAN; - return mod(a, b);`,MOD_PACKED=` + `}};var N9=({inputs:r,backend:e,attrs:t})=>{let{x:o}=r,{paddings:n,mode:s}=t,a=W().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new WC(o.shape,n,s):new VC(o.shape,n,s);return e.runWebGLProgram(a,[o],o.dtype)},sP={kernelName:ma,backendName:"webgl",kernelFunc:N9};var S9=`if (b == 0.0) return NAN; + return mod(a, b);`,T9=` vec4 result = mod(a, b); vec4 isNaN = vec4(equal(b, vec4(0.0))); - `+CHECK_NAN_SNIPPET3+` + `+Al+` return result; -`,mod3=binaryKernelFunc2({opSnippet:MOD,packedOpSnippet:MOD_PACKED}),modConfig2={kernelName:Mod,backendName:"webgl",kernelFunc:mod3};var MultinomialProgram=class{constructor(batchSize,numOutcomes,numSamples){this.variableNames=["probs"],this.outputShape=[batchSize,numSamples],this.userCode=` +`,E9=at({opSnippet:S9,packedOpSnippet:T9}),iP={kernelName:gi,backendName:"webgl",kernelFunc:E9};var GC=class{constructor(e,t,o){this.variableNames=["probs"],this.outputShape=[e,o],this.userCode=` uniform float seed; void main() { @@ -3365,7 +3365,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: float r = random(seed); float cdf = 0.0; - for (int i = 0; i < ${numOutcomes-1}; i++) { + for (int i = 0; i < ${t-1}; i++) { cdf += getProbs(batch, i); if (r < cdf) { @@ -3375,13 +3375,13 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,atanh3=unaryKernelFunc2({opSnippet: } // If no other event happened, last event happened. - setOutput(float(${numOutcomes-1})); + setOutput(float(${t-1})); } - `}getCustomSetupFunc(seed){return(gpgpu,webGLProgram)=>{this.seedLoc==null&&(this.seedLoc=gpgpu.getUniformLocation(webGLProgram,"seed")),gpgpu.gl.uniform1f(this.seedLoc,seed)}}};var DIV=` + `}getCustomSetupFunc(e){return(t,o)=>{this.seedLoc==null&&(this.seedLoc=t.getUniformLocation(o,"seed")),t.gl.uniform1f(this.seedLoc,e)}}};var A9=` if (a == b) { return 1.0; }; -return a / b;`,DIV_PACKED=` +return a / b;`,D9=` // vec4 one = vec4(equal(a, b)); // return one + (vec4(1.0) - one) * a / b; vec4 result = a / b; @@ -3399,63 +3399,63 @@ return a / b;`,DIV_PACKED=` } return result; -`,realDiv=binaryKernelFunc2({opSnippet:DIV,packedOpSnippet:DIV_PACKED,checkOutOfBounds:!0}),realDivConfig2={kernelName:RealDiv,backendName:"webgl",kernelFunc:realDiv};var SUB="return a - b;",sub3=binaryKernelFunc2({opSnippet:SUB,packedOpSnippet:SUB,supportsComplex:!0,cpuKernelImpl:subImplCPU}),subConfig2={kernelName:Sub,backendName:"webgl",kernelFunc:sub3};function softmax4(args){let{inputs,backend:backend2,attrs}=args,{logits}=inputs,{dim}=attrs,axes=util_exports.parseAxisParam([dim],logits.shape),maxLogit=max4({inputs:{x:logits},backend:backend2,attrs:{reductionIndices:axes,keepDims:!1}}),expandedShape=backend_util_exports.expandShapeToKeepDim(maxLogit.shape,axes),maxLogitsReshaped=reshape4({inputs:{x:maxLogit},backend:backend2,attrs:{shape:expandedShape}}),a=sub3({inputs:{a:logits,b:maxLogitsReshaped},backend:backend2}),b=exp3({inputs:{x:a},backend:backend2}),sumExp=sum4({inputs:{x:b},backend:backend2,attrs:{axis:axes,keepDims:!1}}),sumExpReshaped=reshape4({inputs:{x:sumExp},backend:backend2,attrs:{shape:expandedShape}}),res=realDiv({inputs:{a:b,b:sumExpReshaped},backend:backend2});return backend2.disposeIntermediateTensorInfo(maxLogit),backend2.disposeIntermediateTensorInfo(maxLogitsReshaped),backend2.disposeIntermediateTensorInfo(a),backend2.disposeIntermediateTensorInfo(b),backend2.disposeIntermediateTensorInfo(sumExp),backend2.disposeIntermediateTensorInfo(sumExpReshaped),res}var softmaxConfig2={kernelName:Softmax,backendName:"webgl",kernelFunc:softmax4};function multinomial3(args){let{inputs,backend:backend2,attrs}=args,{logits}=inputs,{numSamples,seed,normalized}=attrs,probs=normalized?logits:softmax4({inputs:{logits},backend:backend2,attrs:{dim:logits.shape.length-1}}),batchSize=probs.shape[0],numOutcomes=probs.shape[1],program=new MultinomialProgram(batchSize,numOutcomes,numSamples),customSetup=program.getCustomSetupFunc(seed),res=backend2.runWebGLProgram(program,[probs],"int32",customSetup);return normalized||backend2.disposeIntermediateTensorInfo(probs),res}var multinomialConfig2={kernelName:Multinomial,backendName:"webgl",kernelFunc:multinomial3};var NEG="return -x;";function neg3(args){let{inputs,backend:backend2}=args,{x}=inputs;if(backend2.shouldExecuteOnCPU([x])){let xData=backend2.texData.get(x.dataId),[outValues,newShape]=negImplCPU(xData.values,x.shape,x.dtype);return backend2.makeTensorInfo(newShape,x.dtype,outValues)}let program;return env().getBool("WEBGL_PACK_UNARY_OPERATIONS")?program=new UnaryOpPackedProgram(x.shape,NEG):program=new UnaryOpProgram(x.shape,NEG),backend2.runWebGLProgram(program,[x],x.dtype)}var negConfig2={kernelName:Neg,backendName:"webgl",kernelFunc:neg3};var nonMaxSuppressionV3Impl3=kernel_impls_exports.nonMaxSuppressionV3Impl;function nonMaxSuppressionV32(args){backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs,backend:backend2,attrs}=args,{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold}=attrs,boxesVals=backend2.readSync(boxes.dataId),scoresVals=backend2.readSync(scores.dataId),{selectedIndices}=nonMaxSuppressionV3Impl3(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold);return backend2.makeTensorInfo([selectedIndices.length],"int32",new Int32Array(selectedIndices))}var nonMaxSuppressionV3Config2={kernelName:NonMaxSuppressionV3,backendName:"webgl",kernelFunc:nonMaxSuppressionV32};var nonMaxSuppressionV4Impl3=kernel_impls_exports.nonMaxSuppressionV4Impl;function nonMaxSuppressionV42(args){backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs,backend:backend2,attrs}=args,{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize}=attrs,boxesVals=backend2.readSync(boxes.dataId),scoresVals=backend2.readSync(scores.dataId),{selectedIndices,validOutputs}=nonMaxSuppressionV4Impl3(boxesVals,scoresVals,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize);return[backend2.makeTensorInfo([selectedIndices.length],"int32",new Int32Array(selectedIndices)),backend2.makeTensorInfo([],"int32",new Int32Array([validOutputs]))]}var nonMaxSuppressionV4Config2={kernelName:NonMaxSuppressionV4,backendName:"webgl",kernelFunc:nonMaxSuppressionV42};var nonMaxSuppressionV5Impl3=kernel_impls_exports.nonMaxSuppressionV5Impl;function nonMaxSuppressionV52(args){backend_util_exports.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs,backend:backend2,attrs}=args,{boxes,scores}=inputs,{maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma}=attrs,boxesVals=backend2.readSync(boxes.dataId),scoresVals=backend2.readSync(scores.dataId),maxOutputSizeVal=maxOutputSize,iouThresholdVal=iouThreshold,scoreThresholdVal=scoreThreshold,softNmsSigmaVal=softNmsSigma,{selectedIndices,selectedScores}=nonMaxSuppressionV5Impl3(boxesVals,scoresVals,maxOutputSizeVal,iouThresholdVal,scoreThresholdVal,softNmsSigmaVal);return[backend2.makeTensorInfo([selectedIndices.length],"int32",new Int32Array(selectedIndices)),backend2.makeTensorInfo([selectedScores.length],"float32",new Float32Array(selectedScores))]}var nonMaxSuppressionV5Config2={kernelName:NonMaxSuppressionV5,backendName:"webgl",kernelFunc:nonMaxSuppressionV52};var OneHotProgram=class{constructor(numIndices,depth,onValue,offValue){this.variableNames=["indices"],this.outputShape=[numIndices,depth],this.userCode=` +`,UC=at({opSnippet:A9,packedOpSnippet:D9,checkOutOfBounds:!0}),aP={kernelName:rn,backendName:"webgl",kernelFunc:UC};var lP="return a - b;",jC=at({opSnippet:lP,packedOpSnippet:lP,supportsComplex:!0,cpuKernelImpl:ER}),uP={kernelName:Fn,backendName:"webgl",kernelFunc:jC};function qC(r){let{inputs:e,backend:t,attrs:o}=r,{logits:n}=e,{dim:s}=o,a=x.parseAxisParam([s],n.shape),i=LC({inputs:{x:n},backend:t,attrs:{reductionIndices:a,keepDims:!1}}),l=S.expandShapeToKeepDim(i.shape,a),u=me({inputs:{x:i},backend:t,attrs:{shape:l}}),c=jC({inputs:{a:n,b:u},backend:t}),p=TC({inputs:{x:c},backend:t}),m=nh({inputs:{x:p},backend:t,attrs:{axis:a,keepDims:!1}}),f=me({inputs:{x:m},backend:t,attrs:{shape:l}}),d=UC({inputs:{a:p,b:f},backend:t});return t.disposeIntermediateTensorInfo(i),t.disposeIntermediateTensorInfo(u),t.disposeIntermediateTensorInfo(c),t.disposeIntermediateTensorInfo(p),t.disposeIntermediateTensorInfo(m),t.disposeIntermediateTensorInfo(f),d}var cP={kernelName:$n,backendName:"webgl",kernelFunc:qC};function $9(r){let{inputs:e,backend:t,attrs:o}=r,{logits:n}=e,{numSamples:s,seed:a,normalized:i}=o,l=i?n:qC({inputs:{logits:n},backend:t,attrs:{dim:n.shape.length-1}}),u=l.shape[0],c=l.shape[1],p=new GC(u,c,s),m=p.getCustomSetupFunc(a),f=t.runWebGLProgram(p,[l],"int32",m);return i||t.disposeIntermediateTensorInfo(l),f}var pP={kernelName:mu,backendName:"webgl",kernelFunc:$9};var mP="return -x;";function R9(r){let{inputs:e,backend:t}=r,{x:o}=e;if(t.shouldExecuteOnCPU([o])){let s=t.texData.get(o.dataId),[a,i]=kR(s.values,o.shape,o.dtype);return t.makeTensorInfo(i,o.dtype,a)}let n;return W().getBool("WEBGL_PACK_UNARY_OPERATIONS")?n=new zs(o.shape,mP):n=new mo(o.shape,mP),t.runWebGLProgram(n,[o],o.dtype)}var fP={kernelName:ps,backendName:"webgl",kernelFunc:R9};var F9=Er.nonMaxSuppressionV3Impl;function O9(r){S.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs:e,backend:t,attrs:o}=r,{boxes:n,scores:s}=e,{maxOutputSize:a,iouThreshold:i,scoreThreshold:l}=o,u=t.readSync(n.dataId),c=t.readSync(s.dataId),{selectedIndices:p}=F9(u,c,a,i,l);return t.makeTensorInfo([p.length],"int32",new Int32Array(p))}var dP={kernelName:yi,backendName:"webgl",kernelFunc:O9};var P9=Er.nonMaxSuppressionV4Impl;function M9(r){S.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs:e,backend:t,attrs:o}=r,{boxes:n,scores:s}=e,{maxOutputSize:a,iouThreshold:i,scoreThreshold:l,padToMaxOutputSize:u}=o,c=t.readSync(n.dataId),p=t.readSync(s.dataId),{selectedIndices:m,validOutputs:f}=P9(c,p,a,i,l,u);return[t.makeTensorInfo([m.length],"int32",new Int32Array(m)),t.makeTensorInfo([],"int32",new Int32Array([f]))]}var hP={kernelName:bi,backendName:"webgl",kernelFunc:M9};var L9=Er.nonMaxSuppressionV5Impl;function z9(r){S.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs:e,backend:t,attrs:o}=r,{boxes:n,scores:s}=e,{maxOutputSize:a,iouThreshold:i,scoreThreshold:l,softNmsSigma:u}=o,c=t.readSync(n.dataId),p=t.readSync(s.dataId),m=a,f=i,d=l,h=u,{selectedIndices:g,selectedScores:y}=L9(c,p,m,f,d,h);return[t.makeTensorInfo([g.length],"int32",new Int32Array(g)),t.makeTensorInfo([y.length],"float32",new Float32Array(y))]}var gP={kernelName:_i,backendName:"webgl",kernelFunc:z9};var HC=class{constructor(e,t,o,n){this.variableNames=["indices"],this.outputShape=[e,t],this.userCode=` void main() { ivec2 coords = getOutputCoords(); int index = round(getIndices(coords.x)); - setOutput(mix(float(${offValue}), float(${onValue}), + setOutput(mix(float(${n}), float(${o}), float(index == coords.y))); } - `}};var oneHot3=args=>{let{inputs,backend:backend2,attrs}=args,{indices}=inputs,{depth,onValue,offValue}=attrs,indicesSize=util_exports.sizeFromShape(indices.shape),program=new OneHotProgram(indicesSize,depth,onValue,offValue),reshaped=reshape4({inputs:{x:indices},backend:backend2,attrs:{shape:[indicesSize]}}),result=backend2.runWebGLProgram(program,[reshaped],indices.dtype);backend2.disposeIntermediateTensorInfo(reshaped);let outShape=[...indices.shape,depth],out=reshape4({inputs:{x:result},backend:backend2,attrs:{shape:outShape}});return backend2.disposeIntermediateTensorInfo(result),out},oneHotConfig2={kernelName:OneHot,backendName:"webgl",kernelFunc:oneHot3};function zerosLike3(args){let{inputs,backend:backend2}=args,{x}=inputs;if(x.dtype==="complex64"){let realPart=real3({inputs:{input:x},backend:backend2}),r=zerosLike3({inputs:{x:realPart},backend:backend2}),imagPart=imag3({inputs:{input:x},backend:backend2}),i=zerosLike3({inputs:{x:imagPart},backend:backend2}),result=complex3({inputs:{real:r,imag:i},backend:backend2});return backend2.disposeIntermediateTensorInfo(realPart),backend2.disposeIntermediateTensorInfo(r),backend2.disposeIntermediateTensorInfo(imagPart),backend2.disposeIntermediateTensorInfo(i),result}else return fill3({attrs:{shape:x.shape,dtype:x.dtype,value:x.dtype==="string"?"":0},backend:backend2})}var zerosLikeConfig2={kernelName:ZerosLike,backendName:"webgl",kernelFunc:zerosLike3};function onesLike3(args){let{inputs,backend:backend2}=args,{x}=inputs;if(x.dtype==="string")throw new Error("onesLike is not supported under string dtype");if(x.dtype==="complex64"){let realPart=real3({inputs:{input:x},backend:backend2}),r=onesLike3({inputs:{x:realPart},backend:backend2}),imagPart=imag3({inputs:{input:x},backend:backend2}),i=zerosLike3({inputs:{x:imagPart},backend:backend2}),result=complex3({inputs:{real:r,imag:i},backend:backend2});return backend2.disposeIntermediateTensorInfo(realPart),backend2.disposeIntermediateTensorInfo(r),backend2.disposeIntermediateTensorInfo(imagPart),backend2.disposeIntermediateTensorInfo(i),result}else return fill3({attrs:{shape:x.shape,dtype:x.dtype,value:1},backend:backend2})}var onesLikeConfig2={kernelName:OnesLike,backendName:"webgl",kernelFunc:onesLike3};function pack2(args){let{inputs,backend:backend2,attrs}=args,{axis}=attrs;if(inputs.length===1)return expandDims4({inputs:{input:inputs[0]},backend:backend2,attrs:{dim:axis}});let shape=inputs[0].shape,dtype=inputs[0].dtype;inputs.forEach(t=>{util_exports.assertShapesMatch(shape,t.shape,"All tensors passed to stack must have matching shapes"),util_exports.assert(dtype===t.dtype,()=>"All tensors passed to stack must have matching dtypes")});let intermediateTensorInfos=[],expandedTensors=inputs.map(t=>{let expandedT=expandDims4({inputs:{input:t},backend:backend2,attrs:{dim:axis}});return intermediateTensorInfos.push(expandedT),expandedT}),result=concat3({inputs:expandedTensors,backend:backend2,attrs:{axis}});return intermediateTensorInfos.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),result}var packConfig2={kernelName:Pack,backendName:"webgl",kernelFunc:pack2};var PadProgram=class{constructor(xShape,paddings,constantValue){this.variableNames=["x"],this.outputShape=paddings.map((p2,i)=>p2[0]+xShape[i]+p2[1]);let rank=xShape.length,type=getCoordsDataType(rank),start=paddings.map(p2=>p2[0]).join(","),end=paddings.map((p2,i)=>p2[0]+xShape[i]).join(","),unpackedCoords=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,rank);if(rank===1){this.userCode=` - int start = ${start}; - int end = ${end}; + `}};var B9=r=>{let{inputs:e,backend:t,attrs:o}=r,{indices:n}=e,{depth:s,onValue:a,offValue:i}=o,l=x.sizeFromShape(n.shape),u=new HC(l,s,a,i),c=me({inputs:{x:n},backend:t,attrs:{shape:[l]}}),p=t.runWebGLProgram(u,[c],n.dtype);t.disposeIntermediateTensorInfo(c);let m=[...n.shape,s],f=me({inputs:{x:p},backend:t,attrs:{shape:m}});return t.disposeIntermediateTensorInfo(p),f},xP={kernelName:yn,backendName:"webgl",kernelFunc:B9};function uh(r){let{inputs:e,backend:t}=r,{x:o}=e;if(o.dtype==="complex64"){let n=Ha({inputs:{input:o},backend:t}),s=uh({inputs:{x:n},backend:t}),a=fc({inputs:{input:o},backend:t}),i=uh({inputs:{x:a},backend:t}),l=fo({inputs:{real:s,imag:i},backend:t});return t.disposeIntermediateTensorInfo(n),t.disposeIntermediateTensorInfo(s),t.disposeIntermediateTensorInfo(a),t.disposeIntermediateTensorInfo(i),l}else return lh({attrs:{shape:o.shape,dtype:o.dtype,value:o.dtype==="string"?"":0},backend:t})}var yP={kernelName:bs,backendName:"webgl",kernelFunc:uh};function bP(r){let{inputs:e,backend:t}=r,{x:o}=e;if(o.dtype==="string")throw new Error("onesLike is not supported under string dtype");if(o.dtype==="complex64"){let n=Ha({inputs:{input:o},backend:t}),s=bP({inputs:{x:n},backend:t}),a=fc({inputs:{input:o},backend:t}),i=uh({inputs:{x:a},backend:t}),l=fo({inputs:{real:s,imag:i},backend:t});return t.disposeIntermediateTensorInfo(n),t.disposeIntermediateTensorInfo(s),t.disposeIntermediateTensorInfo(a),t.disposeIntermediateTensorInfo(i),l}else return lh({attrs:{shape:o.shape,dtype:o.dtype,value:1},backend:t})}var _P={kernelName:ms,backendName:"webgl",kernelFunc:bP};function V9(r){let{inputs:e,backend:t,attrs:o}=r,{axis:n}=o;if(e.length===1)return jx({inputs:{input:e[0]},backend:t,attrs:{dim:n}});let s=e[0].shape,a=e[0].dtype;e.forEach(c=>{x.assertShapesMatch(s,c.shape,"All tensors passed to stack must have matching shapes"),x.assert(a===c.dtype,()=>"All tensors passed to stack must have matching dtypes")});let i=[],l=e.map(c=>{let p=jx({inputs:{input:c},backend:t,attrs:{dim:n}});return i.push(p),p}),u=hC({inputs:l,backend:t,attrs:{axis:n}});return i.forEach(c=>t.disposeIntermediateTensorInfo(c)),u}var wP={kernelName:fs,backendName:"webgl",kernelFunc:V9};var KC=class{constructor(e,t,o){this.variableNames=["x"],this.outputShape=t.map((u,c)=>u[0]+e[c]+u[1]);let n=e.length,s=Be(n),a=t.map(u=>u[0]).join(","),i=t.map((u,c)=>u[0]+e[c]).join(","),l=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,n);if(n===1){this.userCode=` + int start = ${a}; + int end = ${i}; void main() { int outC = getOutputCoords(); if (outC < start || outC >= end) { - setOutput(float(${constantValue})); + setOutput(float(${o})); } else { setOutput(getX(outC - start)); } } `;return}this.userCode=` - ${type} start = ${type}(${start}); - ${type} end = ${type}(${end}); + ${s} start = ${s}(${a}); + ${s} end = ${s}(${i}); void main() { - ${type} outC = getOutputCoords(); + ${s} outC = getOutputCoords(); if (any(lessThan(outC, start)) || any(greaterThanEqual(outC, end))) { - setOutput(float(${constantValue})); + setOutput(float(${o})); } else { - ${type} coords = outC - start; - setOutput(getX(${unpackedCoords})); + ${s} coords = outC - start; + setOutput(getX(${l})); } } - `}};var PadPackedProgram=class{constructor(xShape,paddings,constantValue){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=paddings.map((p2,i)=>p2[0]+xShape[i]+p2[1]);let rank=xShape.length,dtype=getCoordsDataType(rank),start=paddings.map(p2=>p2[0]).join(","),end=paddings.map((p2,i)=>p2[0]+xShape[i]).join(","),coords2=getChannels("rc",rank),source=getChannels("source",rank),cLimit=`${coords2[rank-1]} < ${this.outputShape[rank-1]}`,innerDims=rank===1?"source":`vec2(${source.slice(-2).join()})`,componentSetup=[`${dtype} rc = outputLoc;`,`${coords2[rank-1]} += 1; - if(${cLimit}) { - `,rank===1?"":`} + `}};var XC=class{constructor(e,t,o){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t.map((h,g)=>h[0]+e[g]+h[1]);let n=e.length,s=Be(n),a=t.map(h=>h[0]).join(","),i=t.map((h,g)=>h[0]+e[g]).join(","),l=qt("rc",n),u=qt("source",n),c=`${l[n-1]} < ${this.outputShape[n-1]}`,p=n===1?"source":`vec2(${u.slice(-2).join()})`,m=[`${s} rc = outputLoc;`,`${l[n-1]} += 1; + if(${c}) { + `,n===1?"":`} rc = outputLoc; - ${coords2[rank-2]} += 1; - if(${coords2[rank-2]} < ${this.outputShape[rank-2]}) {`,rank===1?"":` ${coords2[rank-1]} += 1; - if(${cLimit}) {`],paddingArea=rank===1?"rc < start || rc >= end":"any(lessThan(rc, start)) || any(greaterThanEqual(rc, end))",mainLoop="";for(let i=0,j=rank===1?2:4;i= end":"any(lessThan(rc, start)) || any(greaterThanEqual(rc, end))",d="";for(let h=0,g=n===1?2:4;h{let{inputs,backend:backend2,attrs}=args,{x}=inputs,{paddings,constantValue}=attrs,program=env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new PadPackedProgram(x.shape,paddings,constantValue):new PadProgram(x.shape,paddings,constantValue);return backend2.runWebGLProgram(program,[x],x.dtype)},padV2Config2={kernelName:PadV2,backendName:"webgl",kernelFunc:padV22};var POW=` + `}};var YC=r=>{let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{paddings:s,constantValue:a}=o,i=W().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new XC(n.shape,s,a):new KC(n.shape,s,a);return t.runWebGLProgram(i,[n],n.dtype)},vP={kernelName:bn,backendName:"webgl",kernelFunc:YC};var W9=` if(a < 0.0 && floor(b) < b){ return NAN; } @@ -3464,7 +3464,7 @@ return a / b;`,DIV_PACKED=` } return (round(mod(b, 2.0)) != 1) ? pow(abs(a), b) : sign(a) * pow(abs(a), b); -`,POW_PACKED=` +`,G9=` // isModRound1 has 1 for components with round(mod(b, 2.0)) == 1, 0 otherwise. vec4 isModRound1 = vec4(equal(round(mod(b, 2.0)), ivec4(1))); vec4 multiplier = sign(a) * isModRound1 + (vec4(1.0) - isModRound1); @@ -3478,11 +3478,11 @@ return a / b;`,DIV_PACKED=` result.a = isExpZero.a ? 1.0 : result.a; vec4 isNaN = vec4(lessThan(a, vec4(0.0))) * vec4(lessThan(floor(b), b)); - `+CHECK_NAN_SNIPPET3+` + `+Al+` return result; -`,pow3=binaryKernelFunc2({opSnippet:POW,packedOpSnippet:POW_PACKED}),powConfig2={kernelName:Pow,backendName:"webgl",kernelFunc:pow3};function prod3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{axis,keepDims}=attrs,xRank=x.shape.length,toDispose=[],origAxes=util_exports.parseAxisParam(axis,x.shape),axes=origAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),permutedX=x;permutedAxes!=null&&(permutedX=transpose3({inputs:{x},backend:backend2,attrs:{perm:permutedAxes}}),axes=backend_util_exports.getInnerMostAxes(axes.length,xRank),toDispose.push(permutedX)),backend_util_exports.assertAxesAreInnerMostDims("prod",axes,xRank);let res;if(backend2.shouldExecuteOnCPU([permutedX])){let xVals=backend2.texData.get(permutedX.dataId).values,{outVals,outShape,outDtype}=prodImplCPU(permutedX.shape,permutedX.dtype,xVals,axes);res=backend2.makeTensorInfo(outShape,outDtype,outVals)}else{let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(permutedX.shape,axes),inSize=util_exports.sizeFromShape(reduceShape),a2D=reshape4({inputs:{x:permutedX},backend:backend2,attrs:{shape:[-1,inSize]}}),outputDType=sumOutType(x.dtype),reduced=reduce(a2D,outputDType,"prod",backend2);res=reshape4({inputs:{x:reduced},backend:backend2,attrs:{shape:outShape}}),toDispose.push(a2D),toDispose.push(reduced)}if(keepDims){toDispose.push(res);let newShape=backend_util_exports.expandShapeToKeepDim(res.shape,origAxes);res=reshape4({inputs:{x:res},backend:backend2,attrs:{shape:newShape}})}return toDispose.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),res}var prodConfig2={kernelName:Prod,backendName:"webgl",kernelFunc:prod3};var range4=args=>{let{backend:backend2,attrs}=args,{start,stop,step:step4,dtype}=attrs,values=rangeImplCPU(start,stop,step4,dtype);return backend2.makeTensorInfo([values.length],dtype,values)},rangeConfig2={kernelName:Range,backendName:"webgl",kernelFunc:range4};var RECIPROCAL="return 1.0 / x;",reciprocal3=unaryKernelFunc2({opSnippet:RECIPROCAL}),reciprocalConfig2={kernelName:Reciprocal,backendName:"webgl",kernelFunc:reciprocal3};var RELU3=CHECK_NAN_SNIPPET+` +`,U9=at({opSnippet:W9,packedOpSnippet:G9}),kP={kernelName:_n,backendName:"webgl",kernelFunc:U9};function j9(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{axis:s,keepDims:a}=o,i=n.shape.length,l=[],u=x.parseAxisParam(s,n.shape),c=u,p=S.getAxesPermutation(c,i),m=n;p!=null&&(m=Bt({inputs:{x:n},backend:t,attrs:{perm:p}}),c=S.getInnerMostAxes(c.length,i),l.push(m)),S.assertAxesAreInnerMostDims("prod",c,i);let f;if(t.shouldExecuteOnCPU([m])){let d=t.texData.get(m.dataId).values,{outVals:h,outShape:g,outDtype:y}=CR(m.shape,m.dtype,d,c);f=t.makeTensorInfo(g,y,h)}else{let[d,h]=S.computeOutAndReduceShapes(m.shape,c),g=x.sizeFromShape(h),y=me({inputs:{x:m},backend:t,attrs:{shape:[-1,g]}}),b=yu(n.dtype),_=So(y,b,"prod",t);f=me({inputs:{x:_},backend:t,attrs:{shape:d}}),l.push(y),l.push(_)}if(a){l.push(f);let d=S.expandShapeToKeepDim(f.shape,u);f=me({inputs:{x:f},backend:t,attrs:{shape:d}})}return l.forEach(d=>t.disposeIntermediateTensorInfo(d)),f}var CP={kernelName:wi,backendName:"webgl",kernelFunc:j9};var ZC=r=>{let{backend:e,attrs:t}=r,{start:o,stop:n,step:s,dtype:a}=t,i=IR(o,n,s,a);return e.makeTensorInfo([i.length],a,i)},IP={kernelName:fa,backendName:"webgl",kernelFunc:ZC};var q9="return 1.0 / x;",H9=Ce({opSnippet:q9}),NP={kernelName:vi,backendName:"webgl",kernelFunc:H9};var K9=xr+` return (x < 0.0) ? 0.0 : x; -`,RELU_PACKED=` +`,X9=` vec4 result = x * vec4(greaterThanEqual(x, vec4(0.0))); bvec4 isNaN = isnan(x); @@ -3492,9 +3492,9 @@ return a / b;`,DIV_PACKED=` result.a = isNaN.a ? x.a : result.a; return result; -`,relu3=unaryKernelFunc2({opSnippet:RELU3,packedOpSnippet:RELU_PACKED}),reluConfig2={kernelName:Relu,backendName:"webgl",kernelFunc:relu3};var RELU63=CHECK_NAN_SNIPPET+` +`,Y9=Ce({opSnippet:K9,packedOpSnippet:X9}),SP={kernelName:vn,backendName:"webgl",kernelFunc:Y9};var Z9=xr+` return (x < 0.0) ? 0.0 : min(6.0, x); -`,RELU6_PACKED=` +`,J9=` vec4 result = min(x, vec4(6.)) * vec4(greaterThanEqual(x, vec4(0.0))); bvec4 isNaN = isnan(x); @@ -3504,11 +3504,11 @@ return a / b;`,DIV_PACKED=` result.a = isNaN.a ? x.a : result.a; return result; -`,relu63=unaryKernelFunc2({opSnippet:RELU63,packedOpSnippet:RELU6_PACKED}),relu6Config2={kernelName:Relu6,backendName:"webgl",kernelFunc:relu63};var ResizeBilinearProgram=class{constructor(inputShape,newHeight,newWidth,alignCorners,halfPixelCenters){this.variableNames=["A"],this.outputShape=[];let[batch,oldHeight,oldWidth,depth]=inputShape;this.outputShape=[batch,newHeight,newWidth,depth];let effectiveInSize=[alignCorners&&newHeight>1?oldHeight-1:oldHeight,alignCorners&&newWidth>1?oldWidth-1:oldWidth],effectiveOutSize=[alignCorners&&newHeight>1?newHeight-1:newHeight,alignCorners&&newWidth>1?newWidth-1:newWidth],sourceFracIndexRC;halfPixelCenters?sourceFracIndexRC="(vec2(yRC) + vec2(0.5)) * effectiveInputOverOutputRatioRC - vec2(0.5)":sourceFracIndexRC="vec2(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` +`,Q9=Ce({opSnippet:Z9,packedOpSnippet:J9}),TP={kernelName:Cn,backendName:"webgl",kernelFunc:Q9};var JC=class{constructor(e,t,o,n,s){this.variableNames=["A"],this.outputShape=[];let[a,i,l,u]=e;this.outputShape=[a,t,o,u];let c=[n&&t>1?i-1:i,n&&o>1?l-1:l],p=[n&&t>1?t-1:t,n&&o>1?o-1:o],m;s?m="(vec2(yRC) + vec2(0.5)) * effectiveInputOverOutputRatioRC - vec2(0.5)":m="vec2(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` const vec2 effectiveInputOverOutputRatioRC = vec2( - ${effectiveInSize[0]/effectiveOutSize[0]}, - ${effectiveInSize[1]/effectiveOutSize[1]}); - const vec2 inputShapeRC = vec2(${oldHeight}.0, ${oldWidth}.0); + ${c[0]/p[0]}, + ${c[1]/p[1]}); + const vec2 inputShapeRC = vec2(${i}.0, ${l}.0); void main() { ivec4 coords = getOutputCoords(); @@ -3517,7 +3517,7 @@ return a / b;`,DIV_PACKED=` ivec2 yRC = coords.yz; // Fractional source index. - vec2 sourceFracIndexRC = ${sourceFracIndexRC}; + vec2 sourceFracIndexRC = ${m}; // Compute the four integer indices. ivec2 sourceFloorRC = ivec2(max(sourceFracIndexRC, vec2(0.0))); @@ -3537,13 +3537,13 @@ return a / b;`,DIV_PACKED=` setOutput(newValue); } - `}};var ResizeBilinearPackedProgram=class{constructor(inputShape,newHeight,newWidth,alignCorners,halfPixelCenters){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[];let[batch,oldHeight,oldWidth,depth]=inputShape;this.outputShape=[batch,newHeight,newWidth,depth];let effectiveInSize=[alignCorners&&newHeight>1?oldHeight-1:oldHeight,alignCorners&&newWidth>1?oldWidth-1:oldWidth],effectiveOutSize=[alignCorners&&newHeight>1?newHeight-1:newHeight,alignCorners&&newWidth>1?newWidth-1:newWidth],sourceFracIndexRC;halfPixelCenters?sourceFracIndexRC="(vec3(yRC) + vec3(0.5)) * effectiveInputOverOutputRatioRC - vec3(0.5)":sourceFracIndexRC="vec3(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` + `}};var QC=class{constructor(e,t,o,n,s){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[];let[a,i,l,u]=e;this.outputShape=[a,t,o,u];let c=[n&&t>1?i-1:i,n&&o>1?l-1:l],p=[n&&t>1?t-1:t,n&&o>1?o-1:o],m;s?m="(vec3(yRC) + vec3(0.5)) * effectiveInputOverOutputRatioRC - vec3(0.5)":m="vec3(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` const vec3 effectiveInputOverOutputRatioRC = vec3( - ${effectiveInSize[0]/effectiveOutSize[0]}, - ${effectiveInSize[1]/effectiveOutSize[1]}, - ${effectiveInSize[1]/effectiveOutSize[1]}); - const vec3 inputShapeRC = vec3(${oldHeight}.0, ${oldWidth}.0, - ${oldWidth}.0); + ${c[0]/p[0]}, + ${c[1]/p[1]}, + ${c[1]/p[1]}); + const vec3 inputShapeRC = vec3(${i}.0, ${l}.0, + ${l}.0); float getAValue(int b, int r, int c, int d) { return getChannel(getA(b, r, c, d), vec2(c, d)); @@ -3557,7 +3557,7 @@ return a / b;`,DIV_PACKED=` ivec3 yRC = coords.yzz + ivec3(0, 0, 1); // Fractional source index. - vec3 sourceFracIndexRC = ${sourceFracIndexRC}; + vec3 sourceFracIndexRC = ${m}; // Compute the four integer indices. ivec3 sourceFloorRC = ivec3(max(sourceFracIndexRC, vec3(0.0))); @@ -3565,8 +3565,8 @@ return a / b;`,DIV_PACKED=` min(inputShapeRC - 1.0, ceil(sourceFracIndexRC))); // Should we calculate next column and row elements in 2x2 packed cell. - bool hasNextCol = d < ${depth-1}; - bool hasNextRow = coords.z < ${newWidth-1}; + bool hasNextCol = d < ${u-1}; + bool hasNextRow = coords.z < ${o-1}; // In parallel, construct four corners for all four components in // packed 2x2 cell. @@ -3614,7 +3614,7 @@ return a / b;`,DIV_PACKED=` setOutput(newValue); } - `}};function resizeBilinear3(args){let{inputs,backend:backend2,attrs}=args,{images}=inputs,{alignCorners,halfPixelCenters,size}=attrs,[newHeight,newWidth]=size,program=env().getBool("WEBGL_PACK_IMAGE_OPERATIONS")?new ResizeBilinearPackedProgram(images.shape,newHeight,newWidth,alignCorners,halfPixelCenters):new ResizeBilinearProgram(images.shape,newHeight,newWidth,alignCorners,halfPixelCenters);return backend2.runWebGLProgram(program,[images],"float32")}var resizeBilinearConfig2={kernelName:ResizeBilinear,backendName:"webgl",kernelFunc:resizeBilinear3};var ResizeBilinearBackpropProgram=class{constructor(dyShape,inputShape,alignCorners){this.variableNames=["dy"],this.outputShape=[],this.outputShape=inputShape;let[,xHeight,xWidth]=inputShape,[,yHeight,yWidth]=dyShape,effectiveXSize=[alignCorners&&yHeight>1?xHeight-1:xHeight,alignCorners&&yWidth>1?xWidth-1:xWidth],effectiveYSize=[alignCorners&&yHeight>1?yHeight-1:yHeight,alignCorners&&yWidth>1?yWidth-1:yWidth],heightScale=effectiveXSize[0]/effectiveYSize[0],widthScale=effectiveXSize[1]/effectiveYSize[1],invHeightScale=1/heightScale,invWidthScale=1/widthScale,winHeight=Math.ceil(invHeightScale)*2+2,winWidth=Math.ceil(invWidthScale)*2+2;this.userCode=` + `}};function eJ(r){let{inputs:e,backend:t,attrs:o}=r,{images:n}=e,{alignCorners:s,halfPixelCenters:a,size:i}=o,[l,u]=i,c=W().getBool("WEBGL_PACK_IMAGE_OPERATIONS")?new QC(n.shape,l,u,s,a):new JC(n.shape,l,u,s,a);return t.runWebGLProgram(c,[n],"float32")}var EP={kernelName:kn,backendName:"webgl",kernelFunc:eJ};var eI=class{constructor(e,t,o){this.variableNames=["dy"],this.outputShape=[],this.outputShape=t;let[,n,s]=t,[,a,i]=e,l=[o&&a>1?n-1:n,o&&i>1?s-1:s],u=[o&&a>1?a-1:a,o&&i>1?i-1:i],c=l[0]/u[0],p=l[1]/u[1],m=1/c,f=1/p,d=Math.ceil(m)*2+2,h=Math.ceil(f)*2+2;this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords[0]; @@ -3624,14 +3624,14 @@ return a / b;`,DIV_PACKED=` float accumulator = 0.0; - const float heightScale = float(${heightScale}); - const float widthScale = float(${widthScale}); + const float heightScale = float(${c}); + const float widthScale = float(${p}); - const float invHeightScale = float(${invHeightScale}); - const float invWidthScale = float(${invWidthScale}); + const float invHeightScale = float(${m}); + const float invWidthScale = float(${f}); - const int winHeight = int(${winHeight}); - const int winWidth = int(${winWidth}); + const int winHeight = int(${d}); + const int winWidth = int(${h}); // Compute bounds for where in dy we will look float startRLerp = floor(float(r) * invHeightScale); @@ -3645,7 +3645,7 @@ return a / b;`,DIV_PACKED=` int dyR = dyROffset + startDyR; // Guard against the window exceeding the bounds of dy - if (dyR < 0 || dyR >= ${yHeight}) { + if (dyR < 0 || dyR >= ${a}) { continue; } @@ -3653,19 +3653,19 @@ return a / b;`,DIV_PACKED=` int dyC = dyCOffset + startDyC; // Guard against the window exceeding the bounds of dy - if (dyC < 0 || dyC >= ${yWidth}) { + if (dyC < 0 || dyC >= ${i}) { continue; } float dxR = float(dyR) * heightScale; int topDxRIndex = int(floor(dxR)); - int bottomDxRIndex = int(min(ceil(dxR), ${xHeight-1}.0)); + int bottomDxRIndex = int(min(ceil(dxR), ${n-1}.0)); float dxRLerp = dxR - float(topDxRIndex); float inverseDxRLerp = 1.0 - dxRLerp; float dxC = float(dyC) * widthScale; int leftDxCIndex = int(floor(dxC)); - int rightDxCIndex = int(min(ceil(dxC), ${xWidth-1}.0)); + int rightDxCIndex = int(min(ceil(dxC), ${s-1}.0)); float dxCLerp = dxC - float(leftDxCIndex); float inverseDxCLerp = 1.0 - dxCLerp; @@ -3695,11 +3695,11 @@ return a / b;`,DIV_PACKED=` setOutput(accumulator); } - `}};function resizeBilinearGrad2(args){let{inputs,backend:backend2,attrs}=args,{images,dy}=inputs,{alignCorners}=attrs,program=new ResizeBilinearBackpropProgram(dy.shape,images.shape,alignCorners);return backend2.runWebGLProgram(program,[dy],dy.dtype)}var resizeBilinearGradConfig3={kernelName:ResizeBilinearGrad,backendName:"webgl",kernelFunc:resizeBilinearGrad2};var ResizeNearestNeighborProgram=class{constructor(inputShape,newHeight,newWidth,alignCorners,halfPixelCenters){this.variableNames=["A"],this.outputShape=[];let[batch,oldHeight,oldWidth,depth]=inputShape;this.outputShape=[batch,newHeight,newWidth,depth];let effectiveInSize=[alignCorners&&newHeight>1?oldHeight-1:oldHeight,alignCorners&&newWidth>1?oldWidth-1:oldWidth],effectiveOutSize=[alignCorners&&newHeight>1?newHeight-1:newHeight,alignCorners&&newWidth>1?newWidth-1:newWidth],roundBase=alignCorners?"0.5":"0.0",sourceFracIndexRC;halfPixelCenters?sourceFracIndexRC="max((vec2(yRC) + vec2(0.5)) * effectiveInputOverOutputRatioRC, vec2(0.0))":sourceFracIndexRC="vec2(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` + `}};function tJ(r){let{inputs:e,backend:t,attrs:o}=r,{images:n,dy:s}=e,{alignCorners:a}=o,i=new eI(s.shape,n.shape,a);return t.runWebGLProgram(i,[s],s.dtype)}var AP={kernelName:hu,backendName:"webgl",kernelFunc:tJ};var tI=class{constructor(e,t,o,n,s){this.variableNames=["A"],this.outputShape=[];let[a,i,l,u]=e;this.outputShape=[a,t,o,u];let c=[n&&t>1?i-1:i,n&&o>1?l-1:l],p=[n&&t>1?t-1:t,n&&o>1?o-1:o],m=n?"0.5":"0.0",f;s?f="max((vec2(yRC) + vec2(0.5)) * effectiveInputOverOutputRatioRC, vec2(0.0))":f="vec2(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` const vec2 effectiveInputOverOutputRatioRC = vec2( - ${effectiveInSize[0]/effectiveOutSize[0]}, - ${effectiveInSize[1]/effectiveOutSize[1]}); - const vec2 inputShapeRC = vec2(${oldHeight}.0, ${oldWidth}.0); + ${c[0]/p[0]}, + ${c[1]/p[1]}); + const vec2 inputShapeRC = vec2(${i}.0, ${l}.0); void main() { ivec4 coords = getOutputCoords(); @@ -3708,16 +3708,16 @@ return a / b;`,DIV_PACKED=` ivec2 yRC = coords.yz; // Fractional source index. - vec2 sourceFracIndexRC = ${sourceFracIndexRC}; + vec2 sourceFracIndexRC = ${f}; // Compute the coordinators of nearest neighbor point. ivec2 sourceNearestRC = ivec2( - min(inputShapeRC - 1.0, floor(sourceFracIndexRC + ${roundBase}))); + min(inputShapeRC - 1.0, floor(sourceFracIndexRC + ${m}))); float newValue = getA(b, sourceNearestRC.x, sourceNearestRC.y, d); setOutput(newValue); } - `}};function resizeNearestNeighbor3(args){let{inputs,backend:backend2,attrs}=args,{images}=inputs,{alignCorners,halfPixelCenters,size}=attrs,[newHeight,newWidth]=size,program=new ResizeNearestNeighborProgram(images.shape,newHeight,newWidth,alignCorners,halfPixelCenters);return backend2.runWebGLProgram(program,[images],images.dtype)}var resizeNearestNeighborConfig2={kernelName:ResizeNearestNeighbor,backendName:"webgl",kernelFunc:resizeNearestNeighbor3};var ResizeNearestNeigborBackpropProgram=class{constructor(dyShape,inputShape,alignCorners){this.variableNames=["dy"],this.outputShape=[],this.outputShape=inputShape;let[,xHeight,xWidth]=inputShape,[,yHeight,yWidth]=dyShape,effectiveXSize=[alignCorners&&yHeight>1?xHeight-1:xHeight,alignCorners&&yWidth>1?xWidth-1:xWidth],effectiveYSize=[alignCorners&&yHeight>1?yHeight-1:yHeight,alignCorners&&yWidth>1?yWidth-1:yWidth],heightScale=effectiveXSize[0]/effectiveYSize[0],widthScale=effectiveXSize[1]/effectiveYSize[1],invHeightScale=1/heightScale,invWidthScale=1/widthScale,winHeight=Math.ceil(invHeightScale)*2+2,winWidth=Math.ceil(invWidthScale)*2+2;this.userCode=` + `}};function rJ(r){let{inputs:e,backend:t,attrs:o}=r,{images:n}=e,{alignCorners:s,halfPixelCenters:a,size:i}=o,[l,u]=i,c=new tI(n.shape,l,u,s,a);return t.runWebGLProgram(c,[n],n.dtype)}var DP={kernelName:da,backendName:"webgl",kernelFunc:rJ};var rI=class{constructor(e,t,o){this.variableNames=["dy"],this.outputShape=[],this.outputShape=t;let[,n,s]=t,[,a,i]=e,l=[o&&a>1?n-1:n,o&&i>1?s-1:s],u=[o&&a>1?a-1:a,o&&i>1?i-1:i],c=l[0]/u[0],p=l[1]/u[1],m=1/c,f=1/p,d=Math.ceil(m)*2+2,h=Math.ceil(f)*2+2;this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords[0]; @@ -3727,14 +3727,14 @@ return a / b;`,DIV_PACKED=` float accumulator = 0.0; - const float heightScale = float(${heightScale}); - const float widthScale = float(${widthScale}); + const float heightScale = float(${c}); + const float widthScale = float(${p}); - const float invHeightScale = float(${invHeightScale}); - const float invWidthScale = float(${invWidthScale}); + const float invHeightScale = float(${m}); + const float invWidthScale = float(${f}); - const int winHeight = int(${winHeight}); - const int winWidth = int(${winWidth}); + const int winHeight = int(${d}); + const int winWidth = int(${h}); // Compute bounds for where in dy we will look float startRLerp = floor(float(r) * invHeightScale); @@ -3748,7 +3748,7 @@ return a / b;`,DIV_PACKED=` int dyR = dyROffset + startDyR; // Guard against the window exceeding the bounds of dy - if (dyR < 0 || dyR >= ${yHeight}) { + if (dyR < 0 || dyR >= ${a}) { continue; } @@ -3756,26 +3756,26 @@ return a / b;`,DIV_PACKED=` int dyC = dyCOffset + startDyC; // Guard against the window exceeding the bounds of dy - if (dyC < 0 || dyC >= ${yWidth}) { + if (dyC < 0 || dyC >= ${i}) { continue; } float sourceFracRow = - float(${effectiveXSize[0]}) * - (float(dyR) / float(${effectiveYSize[0]})); + float(${l[0]}) * + (float(dyR) / float(${u[0]})); float sourceFracCol = - float(${effectiveXSize[1]}) * - (float(dyC) / float(${effectiveYSize[1]})); + float(${l[1]}) * + (float(dyC) / float(${u[1]})); int sourceNearestRow = int(min( - float(int(${xHeight}) - 1), - ${alignCorners} ? float(round(sourceFracRow)) : + float(int(${n}) - 1), + ${o} ? float(round(sourceFracRow)) : float(floor(sourceFracRow)))); int sourceNearestCol = int(min( - float(int(${xWidth}) - 1), - ${alignCorners} ? float(round(sourceFracCol)) : + float(int(${s}) - 1), + ${o} ? float(round(sourceFracCol)) : float(floor(sourceFracCol)))); if (r == sourceNearestRow && c == sourceNearestCol) { @@ -3787,62 +3787,62 @@ return a / b;`,DIV_PACKED=` setOutput(accumulator); } - `}};function resizeNearestNeighborGrad2(args){let{inputs,backend:backend2,attrs}=args,{images,dy}=inputs,{alignCorners}=attrs,program=new ResizeNearestNeigborBackpropProgram(dy.shape,images.shape,alignCorners);return backend2.runWebGLProgram(program,[dy],dy.dtype)}var resizeNearestNeighborGradConfig3={kernelName:ResizeNearestNeighborGrad,backendName:"webgl",kernelFunc:resizeNearestNeighborGrad2};var ReverseProgram=class{constructor(xShape,axis){this.variableNames=["x"];let rank=xShape.length;if(rank>4)throw new Error(`WebGL backend: Reverse of rank-${rank} tensor is not yet supported`);if(this.outputShape=xShape,rank===1){this.userCode=` + `}};function oJ(r){let{inputs:e,backend:t,attrs:o}=r,{images:n,dy:s}=e,{alignCorners:a}=o,i=new rI(s.shape,n.shape,a);return t.runWebGLProgram(i,[s],s.dtype)}var $P={kernelName:du,backendName:"webgl",kernelFunc:oJ};var oI=class{constructor(e,t){this.variableNames=["x"];let o=e.length;if(o>4)throw new Error(`WebGL backend: Reverse of rank-${o} tensor is not yet supported`);if(this.outputShape=e,o===1){this.userCode=` void main() { int coord = getOutputCoords(); - setOutput(getX(${xShape[0]} - coord - 1)); + setOutput(getX(${e[0]} - coord - 1)); } - `;return}let getInCoord=i=>axis.indexOf(i)!==-1&&xShape[i]!==1?`${xShape[i]} - coords[${i}] - 1`:`coords[${i}]`,inCoords=xShape.map((_,i)=>getInCoord(i)).join(","),type=getCoordsDataType(rank);this.userCode=` + `;return}let n=i=>t.indexOf(i)!==-1&&e[i]!==1?`${e[i]} - coords[${i}] - 1`:`coords[${i}]`,s=e.map((i,l)=>n(l)).join(","),a=Be(o);this.userCode=` void main() { - ${type} coords = getOutputCoords(); - setOutput(getX(${inCoords})); + ${a} coords = getOutputCoords(); + setOutput(getX(${s})); } - `}};var ReversePackedProgram=class{constructor(xShape,axis){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0;let rank=xShape.length;if(rank>4)throw new Error(`WebGL backend: Reverse of rank-${rank} tensor is not yet supported`);this.outputShape=xShape;let channels=getChannels("rc",rank),nextColumn=`${channels[rank-1]} + 1 < ${this.outputShape[rank-1]}`,nextRow=`${channels[rank-2]} + 1 < ${this.outputShape[rank-2]}`,type=getCoordsDataType(rank);rank===1?this.userCode=` + `}};var nI=class{constructor(e,t){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0;let o=e.length;if(o>4)throw new Error(`WebGL backend: Reverse of rank-${o} tensor is not yet supported`);this.outputShape=e;let n=qt("rc",o),s=`${n[o-1]} + 1 < ${this.outputShape[o-1]}`,a=`${n[o-2]} + 1 < ${this.outputShape[o-2]}`,i=Be(o);o===1?this.userCode=` void main(){ int rc = getOutputCoords(); vec4 result = vec4(0.); - result.r = getChannel(getX(${xShape[0]} - rc - 1), - ${xShape[0]} - rc - 1); - if(${nextColumn}){ - result.g = getChannel(getX(${xShape[0]} - (rc + 1) - 1), - ${xShape[0]} - (rc + 1) - 1); + result.r = getChannel(getX(${e[0]} - rc - 1), + ${e[0]} - rc - 1); + if(${s}){ + result.g = getChannel(getX(${e[0]} - (rc + 1) - 1), + ${e[0]} - (rc + 1) - 1); } setOutput(result); } `:this.userCode=` void main() { - ${type} rc = getOutputCoords(); + ${i} rc = getOutputCoords(); vec4 result = vec4(0.); - result.r = ${getR(channels.slice())}; - if(${nextColumn}){ - result.g = ${getG(channels.slice())}; + result.r = ${l(n.slice())}; + if(${s}){ + result.g = ${u(n.slice())}; } - if(${nextRow}) { - result.b = ${getB(channels.slice())}; - if(${nextColumn}) { - result.a = ${getA(channels.slice())}; + if(${a}) { + result.b = ${c(n.slice())}; + if(${s}) { + result.a = ${p(n.slice())}; } } setOutput(result); } - `;function getR(channels2){return getChannel(channels2)}function getG(channels2){return channels2[rank-1]="("+channels2[rank-1]+" + 1)",getChannel(channels2)}function getB(channels2){return channels2[rank-2]="("+channels2[rank-2]+" + 1)",getChannel(channels2)}function getA(channels2){return channels2[rank-1]="("+channels2[rank-1]+" + 1)",channels2[rank-2]="("+channels2[rank-2]+" + 1)",getChannel(channels2)}function getChannel(channels2){let inCoordsArray=xShape.map((_,i)=>getInCoord(i,channels2)),inCoords=inCoordsArray.join(","),innerDims=inCoordsArray.slice(-2).join(",");return`getChannel(getX(${inCoords}), vec2(${innerDims}))`}function getInCoord(i,channels1){return axis.indexOf(i)!==-1&&xShape[i]!==1?`${xShape[i]} - ${channels1[i]} - 1`:`${channels1[i]}`}}};function reverse3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{dims}=attrs,xRank=x.shape.length,$dims=util_exports.parseAxisParam(dims,x.shape);if(xRank===0)return identity3({inputs:{x},backend:backend2});let program=env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new ReversePackedProgram(x.shape,$dims):new ReverseProgram(x.shape,$dims);return backend2.runWebGLProgram(program,[x],x.dtype)}var reverseConfig2={kernelName:Reverse,backendName:"webgl",kernelFunc:reverse3};var RotateProgram=class{constructor(imageShape,radians,fillValue,center){this.variableNames=["Image"],this.outputShape=[];let imageHeight=imageShape[1],imageWidth=imageShape[2],sinFactor=Math.sin(radians).toFixed(3),cosFactor=Math.cos(radians).toFixed(3);this.outputShape=imageShape;let[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),centerXString=centerX.toFixed(3),centerYString=centerY.toFixed(3),fillSnippet="";typeof fillValue=="number"?fillSnippet=`float outputValue = ${fillValue.toFixed(2)};`:fillSnippet=` - vec3 fill = vec3(${fillValue.join(",")}); + `;function l(d){return m(d)}function u(d){return d[o-1]="("+d[o-1]+" + 1)",m(d)}function c(d){return d[o-2]="("+d[o-2]+" + 1)",m(d)}function p(d){return d[o-1]="("+d[o-1]+" + 1)",d[o-2]="("+d[o-2]+" + 1)",m(d)}function m(d){let h=e.map((b,_)=>f(_,d)),g=h.join(","),y=h.slice(-2).join(",");return`getChannel(getX(${g}), vec2(${y}))`}function f(d,h){return t.indexOf(d)!==-1&&e[d]!==1?`${e[d]} - ${h[d]} - 1`:`${h[d]}`}}};function nJ(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{dims:s}=o,a=n.shape.length,i=x.parseAxisParam(s,n.shape);if(a===0)return Ht({inputs:{x:n},backend:t});let l=W().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new nI(n.shape,i):new oI(n.shape,i);return t.runWebGLProgram(l,[n],n.dtype)}var RP={kernelName:In,backendName:"webgl",kernelFunc:nJ};var sI=class{constructor(e,t,o,n){this.variableNames=["Image"],this.outputShape=[];let s=e[1],a=e[2],i=Math.sin(t).toFixed(3),l=Math.cos(t).toFixed(3);this.outputShape=e;let[u,c]=S.getImageCenter(n,s,a),p=u.toFixed(3),m=c.toFixed(3),f="";typeof o=="number"?f=`float outputValue = ${o.toFixed(2)};`:f=` + vec3 fill = vec3(${o.join(",")}); float outputValue = fill[coords[3]];`,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int x = coords[2]; int y = coords[1]; - float coordXFloat = (float(x) - ${centerXString}) * ${cosFactor} - (float(y) - ${centerYString}) * ${sinFactor}; - float coordYFloat = (float(x) - ${centerXString}) * ${sinFactor} + (float(y) - ${centerYString}) * ${cosFactor}; - int coordX = int(round(coordXFloat + ${centerXString})); - int coordY = int(round(coordYFloat + ${centerYString})); - ${fillSnippet} - if(coordX >= 0 && coordX < ${imageWidth} && coordY >= 0 && coordY < ${imageHeight}) { + float coordXFloat = (float(x) - ${p}) * ${l} - (float(y) - ${m}) * ${i}; + float coordYFloat = (float(x) - ${p}) * ${i} + (float(y) - ${m}) * ${l}; + int coordX = int(round(coordXFloat + ${p})); + int coordY = int(round(coordYFloat + ${m})); + ${f} + if(coordX >= 0 && coordX < ${a} && coordY >= 0 && coordY < ${s}) { outputValue = getImage(coords[0], coordY, coordX, coords[3]); } setOutput(outputValue); } - `}};var rotateWithOffsetConfig2={kernelName:RotateWithOffset,backendName:"webgl",kernelFunc:({inputs,attrs,backend:backend2})=>{let{image:image3}=inputs,{radians,fillValue,center}=attrs,webglBackend=backend2,program=new RotateProgram(image3.shape,radians,fillValue,center);return webglBackend.runWebGLProgram(program,[image3],image3.dtype)}};var ROUND=` + `}};var FP={kernelName:$i,backendName:"webgl",kernelFunc:({inputs:r,attrs:e,backend:t})=>{let{image:o}=r,{radians:n,fillValue:s,center:a}=e,i=t,l=new sI(o.shape,n,s,a);return i.runWebGLProgram(l,[o],o.dtype)}};var sJ=` // OpenGL ES does not support round function. // The algorithm is based on banker's rounding. float base = floor(x); @@ -3857,51 +3857,51 @@ return a / b;`,DIV_PACKED=` return base + 1.0; } } -`,round4=unaryKernelFunc2({opSnippet:ROUND}),roundConfig2={kernelName:Round,backendName:"webgl",kernelFunc:round4};var RSQRT="return inversesqrt(x);",rsqrt3=unaryKernelFunc2({opSnippet:RSQRT,cpuKernelImpl:rsqrtImplCPU}),rsqrtConfig2={kernelName:Rsqrt,backendName:"webgl",kernelFunc:rsqrt3};var ScatterProgram=class{constructor(updateSize,sliceDim,indicesRank,updatesRank,strides,shape,summingDupeIndex=!0){this.variableNames=["updates","indices","defaultValue"],this.outputShape=shape;let stridesType=getCoordsDataType(strides.length),dtype=getCoordsDataType(shape.length),indicesString="";indicesRank===1?indicesString="i":indicesRank===2&&(indicesString="i, j");let indicesSnippet=`getIndices(${indicesString})`,updatesString="";updatesRank===1?updatesString="i":updatesRank===2&&(updatesString="i, coords[1]");let updatesSnippet=`getUpdates(${updatesString})`,strideString=sliceDim>1?"strides[j]":"strides";this.userCode=` - ${stridesType} strides = ${stridesType}(${strides}); +`,iJ=Ce({opSnippet:sJ}),OP={kernelName:Nn,backendName:"webgl",kernelFunc:iJ};var aJ="return inversesqrt(x);",lJ=Ce({opSnippet:aJ,cpuKernelImpl:NR}),PP={kernelName:Sn,backendName:"webgl",kernelFunc:lJ};var ch=class{constructor(e,t,o,n,s,a,i=!0){this.variableNames=["updates","indices","defaultValue"],this.outputShape=a;let l=Be(s.length),u=Be(a.length),c="";o===1?c="i":o===2&&(c="i, j");let p=`getIndices(${c})`,m="";n===1?m="i":n===2&&(m="i, coords[1]");let f=`getUpdates(${m})`,d=t>1?"strides[j]":"strides";this.userCode=` + ${l} strides = ${l}(${s}); void main() { - ${dtype} coords = getOutputCoords(); + ${u} coords = getOutputCoords(); float sum = 0.0; bool found = false; - for (int i = 0; i < ${updateSize}; i++) { + for (int i = 0; i < ${e}; i++) { int flattenedIndex = 0; - for (int j = 0; j < ${sliceDim}; j++) { - int index = round(${indicesSnippet}); - flattenedIndex += index * ${strideString}; + for (int j = 0; j < ${t}; j++) { + int index = round(${p}); + flattenedIndex += index * ${d}; } if (flattenedIndex == coords[0]) { - sum += ${updatesSnippet}; + sum += ${f}; found = true; } } setOutput(mix(getDefaultValue(), sum, float(found))); } - `}};function scatterNd2(args){let{inputs,backend:backend2,attrs}=args,{indices,updates}=inputs,{shape}=attrs,{sliceRank,numUpdates,sliceSize,strides,outputSize}=backend_util_exports.calculateShapes(updates,indices,shape),flattenShape=[outputSize/sliceSize,sliceSize];if(outputSize===0)return backend2.makeTensorInfo(shape,indices.dtype);let flattenIndices=reshape4({inputs:{x:indices},backend:backend2,attrs:{shape:[numUpdates,sliceRank]}}),flattenX=reshape4({inputs:{x:updates},backend:backend2,attrs:{shape:[numUpdates,sliceSize]}}),defaultValue=backend2.makeTensorInfo([],"float32",new Float32Array([0])),program=new ScatterProgram(numUpdates,sliceRank,flattenIndices.shape.length,flattenX.shape.length,strides,flattenShape),res=backend2.runWebGLProgram(program,[flattenX,flattenIndices,defaultValue],flattenX.dtype),reshaped=reshape4({inputs:{x:res},backend:backend2,attrs:{shape}});return backend2.disposeIntermediateTensorInfo(flattenIndices),backend2.disposeIntermediateTensorInfo(flattenX),backend2.disposeIntermediateTensorInfo(res),backend2.disposeIntermediateTensorInfo(defaultValue),reshaped}var scatterNdConfig2={kernelName:ScatterNd,backendName:"webgl",kernelFunc:scatterNd2};var SelectProgram=class{constructor(cRank,shape,rank){this.variableNames=["c","a","b"],this.outputShape=shape;let cCoords,abCoords;if(rank>4)throw Error(`Where for rank ${rank} is not yet supported`);if(rank===1)abCoords="resRC",cCoords="resRC";else{let currentCoords=["resRC.x","resRC.y","resRC.z","resRC.w"],cCoordVars=[],abCoordVars=[];for(let i=0;i4)throw Error(`Where for rank ${o} is not yet supported`);if(o===1)s="resRC",n="resRC";else{let i=["resRC.x","resRC.y","resRC.z","resRC.w"],l=[],u=[];for(let c=0;c= 1.0) { - setOutput(getA(${abCoords})); + setOutput(getA(${s})); } else { - setOutput(getB(${abCoords})); + setOutput(getB(${s})); } } - `}};function select2(args){let{inputs,backend:backend2}=args,{condition,t,e}=inputs,program=new SelectProgram(condition.shape.length,t.shape,t.shape.length);return backend2.runWebGLProgram(program,[condition,t,e],upcastType(t.dtype,e.dtype))}var selectConfig2={kernelName:Select,backendName:"webgl",kernelFunc:select2};var SELU=` + `}};function cJ(r){let{inputs:e,backend:t}=r,{condition:o,t:n,e:s}=e,a=new iI(o.shape.length,n.shape,n.shape.length);return t.runWebGLProgram(a,[o,n,s],fr(n.dtype,s.dtype))}var LP={kernelName:hs,backendName:"webgl",kernelFunc:cJ};var pJ=` // Stable and Attracting Fixed Point (0, 1) for Normalized Weights. // see: https://arxiv.org/abs/1706.02515 - float scaleAlpha = ${backend_util_exports.SELU_SCALEALPHA}; - float scale = ${backend_util_exports.SELU_SCALE}; + float scaleAlpha = ${S.SELU_SCALEALPHA}; + float scale = ${S.SELU_SCALE}; return (x >= 0.0) ? scale * x : scaleAlpha * (exp(x) - 1.0); -`,selu3=unaryKernelFunc2({opSnippet:SELU}),seluConfig2={kernelName:Selu,backendName:"webgl",kernelFunc:selu3};var SIGMOID="return 1.0 / (1.0 + exp(-1.0 * x));",sigmoid3=unaryKernelFunc2({opSnippet:SIGMOID}),sigmoidConfig2={kernelName:Sigmoid,backendName:"webgl",kernelFunc:sigmoid3};var SIGN=` +`,mJ=Ce({opSnippet:pJ}),zP={kernelName:Ci,backendName:"webgl",kernelFunc:mJ};var fJ="return 1.0 / (1.0 + exp(-1.0 * x));",dJ=Ce({opSnippet:fJ}),BP={kernelName:En,backendName:"webgl",kernelFunc:dJ};var hJ=` if (isnan(x)) { return 0.0; } return sign(x); -`,sign3=unaryKernelFunc2({opSnippet:SIGN}),signConfig2={kernelName:Sign,backendName:"webgl",kernelFunc:sign3};var SIN=CHECK_NAN_SNIPPET_UNARY+` +`,gJ=Ce({opSnippet:hJ}),VP={kernelName:Ni,backendName:"webgl",kernelFunc:gJ};var xJ=Px+` return sin(x); -`,sin3=unaryKernelFunc2({opSnippet:SIN}),sinConfig2={kernelName:Sin,backendName:"webgl",kernelFunc:sin3};var SINH=` +`,yJ=Ce({opSnippet:xJ}),WP={kernelName:Tn,backendName:"webgl",kernelFunc:yJ};var bJ=` float e2x = exp(x); return (e2x - 1.0 / e2x) / 2.0; -`,sinh3=unaryKernelFunc2({opSnippet:SINH}),sinhConfig2={kernelName:Sinh,backendName:"webgl",kernelFunc:sinh3};var SOFTPLUS=` +`,_J=Ce({opSnippet:bJ}),GP={kernelName:Ii,backendName:"webgl",kernelFunc:_J};var wJ=` float epsilon = 1.1920928955078125e-7; float threshold = log(epsilon) + 2.0; @@ -3921,44 +3921,44 @@ return a / b;`,DIV_PACKED=` result = log(exp_x + 1.0); } return result; -`,softplus3=unaryKernelFunc2({opSnippet:SOFTPLUS}),softplusConfig2={kernelName:Softplus,backendName:"webgl",kernelFunc:softplus3};var spaceToBatchND3=args=>{let{inputs,backend:backend2,attrs}=args,{x}=inputs,{blockShape,paddings}=attrs;util_exports.assert(x.shape.length<=4,()=>"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet");let prod5=blockShape.reduce((a,b)=>a*b),completePaddings=[[0,0]];completePaddings.push(...paddings);for(let i=1+blockShape.length;ibackend2.disposeIntermediateTensorInfo(t)),result},spaceToBatchNDConfig2={kernelName:SpaceToBatchND,backendName:"webgl",kernelFunc:spaceToBatchND3};function sparseToDense3(args){let{inputs,backend:backend2,attrs}=args,{sparseIndices,sparseValues,defaultValue}=inputs,{outputShape}=attrs,{sliceRank,numUpdates,strides,outputSize}=backend_util_exports.calculateShapes(sparseValues,sparseIndices,outputShape),sumDupeIndices=!1,program=new ScatterProgram(numUpdates,sliceRank,sparseIndices.shape.length,sparseValues.shape.length,strides,[outputSize,1],sumDupeIndices),res=backend2.runWebGLProgram(program,[sparseValues,sparseIndices,defaultValue],sparseValues.dtype),reshaped=reshape4({inputs:{x:res},backend:backend2,attrs:{shape:outputShape}});return backend2.disposeIntermediateTensorInfo(res),reshaped}var sparseToDenseConfig2={kernelName:SparseToDense,backendName:"webgl",kernelFunc:sparseToDense3};function splitV2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{numOrSizeSplits,axis}=attrs,$axis=util_exports.parseAxisParam(axis,x.shape)[0],splitSizes=backend_util_exports.prepareSplitSize(x,numOrSizeSplits,$axis),xRank=x.shape.length,begin=new Array(xRank).fill(0),size=x.shape.slice();return splitSizes.map(s=>{let sliceSize=[...size];sliceSize[$axis]=s;let sliceT=slice3({inputs:{x},backend:backend2,attrs:{begin,size:sliceSize}});return begin[$axis]+=s,sliceT})}var splitVConfig2={kernelName:SplitV,backendName:"webgl",kernelFunc:splitV2};var SQRT="return sqrt(x);",sqrt3=unaryKernelFunc2({opSnippet:SQRT}),sqrtConfig2={kernelName:Sqrt,backendName:"webgl",kernelFunc:sqrt3};var SQUARE="return x * x;",square3=unaryKernelFunc2({opSnippet:SQUARE}),squareConfig2={kernelName:Square,backendName:"webgl",kernelFunc:square3};var SQUARED_DIFFERENCE="return (a - b) * (a - b);",squaredDifference3=binaryKernelFunc2({opSnippet:SQUARED_DIFFERENCE,packedOpSnippet:SQUARED_DIFFERENCE}),squaredDifferenceConfig2={kernelName:SquaredDifference,backendName:"webgl",kernelFunc:squaredDifference3};function step3({inputs,attrs,backend:backend2}){let{x}=inputs,opSnippet=CHECK_NAN_SNIPPET+` - return x > 0.0 ? 1.0 : float(${attrs.alpha}); - `,program=new UnaryOpProgram(x.shape,opSnippet);return backend2.runWebGLProgram(program,[x],x.dtype)}var stepConfig2={kernelName:Step,backendName:"webgl",kernelFunc:step3};var StridedSliceProgram=class{constructor(begin,strides,size){this.variableNames=["x"],this.outputShape=size;let rank=size.length,inputDtype=getCoordsDataType(size.length),dtype=getCoordsDataType(size.length),newCoords="";if(rank===1)newCoords="coords * strides + begin";else{let outputAxis=0;newCoords=size.map((_,i)=>(outputAxis++,size.length===1?`coords * strides[${i}] + begin[${i}]`:`coords[${outputAxis-1}] * strides[${i}] + begin[${i}]`)).join(",")}this.userCode=` - ${inputDtype} begin = ${inputDtype}(${begin}); - ${inputDtype} strides = ${inputDtype}(${strides}); +`,vJ=Ce({opSnippet:wJ}),UP={kernelName:Si,backendName:"webgl",kernelFunc:vJ};var kJ=r=>{let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{blockShape:s,paddings:a}=o;x.assert(n.shape.length<=4,()=>"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet");let i=s.reduce((y,b)=>y*b),l=[[0,0]];l.push(...a);for(let y=1+s.length;yt.disposeIntermediateTensorInfo(y)),g},jP={kernelName:ha,backendName:"webgl",kernelFunc:kJ};function CJ(r){let{inputs:e,backend:t,attrs:o}=r,{sparseIndices:n,sparseValues:s,defaultValue:a}=e,{outputShape:i}=o,{sliceRank:l,numUpdates:u,strides:c,outputSize:p}=S.calculateShapes(s,n,i),m=!1,f=new ch(u,l,n.shape.length,s.shape.length,c,[p,1],m),d=t.runWebGLProgram(f,[s,n,a],s.dtype),h=me({inputs:{x:d},backend:t,attrs:{shape:i}});return t.disposeIntermediateTensorInfo(d),h}var qP={kernelName:gu,backendName:"webgl",kernelFunc:CJ};function IJ(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{numOrSizeSplits:s,axis:a}=o,i=x.parseAxisParam(a,n.shape)[0],l=S.prepareSplitSize(n,s,i),u=n.shape.length,c=new Array(u).fill(0),p=n.shape.slice();return l.map(m=>{let f=[...p];f[i]=m;let d=qa({inputs:{x:n},backend:t,attrs:{begin:c,size:f}});return c[i]+=m,d})}var HP={kernelName:xs,backendName:"webgl",kernelFunc:IJ};var NJ="return sqrt(x);",SJ=Ce({opSnippet:NJ}),KP={kernelName:An,backendName:"webgl",kernelFunc:SJ};var TJ="return x * x;",EJ=Ce({opSnippet:TJ}),XP={kernelName:ga,backendName:"webgl",kernelFunc:EJ};var YP="return (a - b) * (a - b);",AJ=at({opSnippet:YP,packedOpSnippet:YP}),ZP={kernelName:Rn,backendName:"webgl",kernelFunc:AJ};function DJ({inputs:r,attrs:e,backend:t}){let{x:o}=r,n=xr+` + return x > 0.0 ? 1.0 : float(${e.alpha}); + `,s=new mo(o.shape,n);return t.runWebGLProgram(s,[o],o.dtype)}var JP={kernelName:Di,backendName:"webgl",kernelFunc:DJ};var aI=class{constructor(e,t,o){this.variableNames=["x"],this.outputShape=o;let n=o.length,s=Be(o.length),a=Be(o.length),i="";if(n===1)i="coords * strides + begin";else{let l=0;i=o.map((u,c)=>(l++,o.length===1?`coords * strides[${c}] + begin[${c}]`:`coords[${l-1}] * strides[${c}] + begin[${c}]`)).join(",")}this.userCode=` + ${s} begin = ${s}(${e}); + ${s} strides = ${s}(${t}); void main() { - ${dtype} coords = getOutputCoords(); - setOutput(getX(${newCoords})); + ${a} coords = getOutputCoords(); + setOutput(getX(${i})); } - `}};function stridedSlice3(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask}=attrs,{nonStrided,$begin,$strides,size,newShape,outShape}=slice_util_exports.sliceInfo(x.shape,begin,end,strides,beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask),$x=reshape4({inputs:{x},backend:backend2,attrs:{shape:newShape}}),result;if(nonStrided){let sliced=slice3({inputs:{x:$x},backend:backend2,attrs:{begin:$begin,size}});result=reshape4({inputs:{x:sliced},backend:backend2,attrs:{shape:outShape}}),backend2.disposeIntermediateTensorInfo(sliced)}else if(outShape.some(axis=>axis===0))result=backend2.makeTensorInfo(outShape,x.dtype,[]);else if(backend2.shouldExecuteOnCPU([$x])){let values=backend2.texData.get($x.dataId).values,xBuf=buffer($x.shape,$x.dtype,values),resultValues=stridedSliceImplCPU(outShape,xBuf,$strides,$begin);result=backend2.makeTensorInfo(outShape,$x.dtype,resultValues.values)}else{let program=new StridedSliceProgram($begin,$strides,outShape);result=backend2.runWebGLProgram(program,[$x],$x.dtype)}let resultReshaped=reshape4({inputs:{x:result},backend:backend2,attrs:{shape:outShape}});return backend2.disposeIntermediateTensorInfo($x),backend2.disposeIntermediateTensorInfo(result),resultReshaped}var stridedSliceConfig2={kernelName:StridedSlice,backendName:"webgl",kernelFunc:stridedSlice3};var TAN="return tan(x);",tan3=unaryKernelFunc2({opSnippet:TAN}),tanConfig2={kernelName:Tan,backendName:"webgl",kernelFunc:tan3};var TANH=` + `}};function $J(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{begin:s,end:a,strides:i,beginMask:l,endMask:u,ellipsisMask:c,newAxisMask:p,shrinkAxisMask:m}=o,{nonStrided:f,$begin:d,$strides:h,size:g,newShape:y,outShape:b}=sr.sliceInfo(n.shape,s,a,i,l,u,c,p,m),_=me({inputs:{x:n},backend:t,attrs:{shape:y}}),w;if(f){let $=qa({inputs:{x:_},backend:t,attrs:{begin:d,size:g}});w=me({inputs:{x:$},backend:t,attrs:{shape:b}}),t.disposeIntermediateTensorInfo($)}else if(b.some($=>$===0))w=t.makeTensorInfo(b,n.dtype,[]);else if(t.shouldExecuteOnCPU([_])){let F=t.texData.get(_.dataId).values,M=Ie(_.shape,_.dtype,F),L=TR(b,M,h,d);w=t.makeTensorInfo(b,_.dtype,L.values)}else{let T=new aI(d,h,b);w=t.runWebGLProgram(T,[_],_.dtype)}let k=me({inputs:{x:w},backend:t,attrs:{shape:b}});return t.disposeIntermediateTensorInfo(_),t.disposeIntermediateTensorInfo(w),k}var QP={kernelName:Ti,backendName:"webgl",kernelFunc:$J};var RJ="return tan(x);",FJ=Ce({opSnippet:RJ}),eM={kernelName:Ei,backendName:"webgl",kernelFunc:FJ};var OJ=` float e2x = exp(-2.0 * abs(x)); return sign(x) * (1.0 - e2x) / (1.0 + e2x); -`,tanh4=unaryKernelFunc2({opSnippet:TANH}),tanhConfig2={kernelName:Tanh,backendName:"webgl",kernelFunc:tanh4};var TileProgram=class{constructor(aShape,reps){this.variableNames=["A"];let outputShape=new Array(aShape.length);for(let i=0;i5)throw Error(`Tile for rank ${rank} is not yet supported`);if(rank===1)return`imod(resRC, ${aShape[0]})`;let currentCoords=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u"],sourceCoords=[];for(let i=0;iutil_exports.decodeString(d)),buf=buffer(x.shape,x.dtype,decodedData),outBuf=tileImplCPU(buf,reps);return backend2.makeTensorInfo(outBuf.shape,outBuf.dtype,outBuf.values)}let program=new TileProgram(x.shape,reps);return backend2.runWebGLProgram(program,[x],x.dtype)}var tileConfig2={kernelName:Tile,backendName:"webgl",kernelFunc:tile4};function topK2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{k,sorted}=attrs,xVals=backend2.readSync(x.dataId),[allTopKVals,allTopKIndices]=topKImplCPU(xVals,x.shape,x.dtype,k,sorted);return[backend2.makeTensorInfo(allTopKVals.shape,allTopKVals.dtype,allTopKVals.values),backend2.makeTensorInfo(allTopKIndices.shape,allTopKIndices.dtype,allTopKIndices.values)]}var topKConfig2={kernelName:TopK,backendName:"webgl",kernelFunc:topK2};function unique4(args){let{inputs,attrs,backend:backend2}=args,{axis}=attrs,{x}=inputs;assertNotComplex2(x,"unique"),console.warn("WARNING: ","UI might be locked temporarily as data is being downloaded");let values=backend2.readSync(x.dataId),{outputValues,outputShape,indices}=uniqueImplCPU(values,axis,x.shape,x.dtype);return[backend2.makeTensorInfo(outputShape,x.dtype,outputValues),backend2.makeTensorInfo([indices.length],"int32",indices)]}var uniqueConfig2={kernelName:Unique,backendName:"webgl",kernelFunc:unique4};function unpack2(args){let{inputs,backend:backend2,attrs}=args,{value}=inputs,{axis}=attrs;axis<0&&(axis+=value.shape.length);let x=value,xRank=x.shape.length,num=value.shape[axis],outShape=new Array(xRank-1),outIndex=0;for(let i=0;ibackend2.disposeIntermediateTensorInfo(t)),res}var unpackConfig2={kernelName:Unpack,backendName:"webgl",kernelFunc:unpack2};var SegmentOpProgram=class{constructor(segOpInfo,segOpType){this.variableNames=["x","segmentIds"];let windowSize=segOpInfo.windowSize,batchSize=segOpInfo.batchSize,inSize=segOpInfo.inSize,numSegments=segOpInfo.numSegments,outSize=numSegments*Math.ceil(inSize/windowSize);this.outputShape=[batchSize,outSize];let initializationValue="0.0",returnValue="sumValue",windowSizeNearestVec4=Math.floor(windowSize/4)*4,windowSizeVec4Remainder=windowSize%4,updateSnippet=` + `}};function MJ(r){let e=r.length;if(e>5)throw Error(`Tile for rank ${e} is not yet supported`);if(e===1)return`imod(resRC, ${r[0]})`;let t=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u"],o=[];for(let n=0;nx.decodeString(m)),c=Ie(n.shape,n.dtype,u),p=AR(c,s);return t.makeTensorInfo(p.shape,p.dtype,p.values)}let a=new lI(n.shape,s);return t.runWebGLProgram(a,[n],n.dtype)}var rM={kernelName:_o,backendName:"webgl",kernelFunc:uI};function LJ(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{k:s,sorted:a}=o,i=t.readSync(n.dataId),[l,u]=DR(i,n.shape,n.dtype,s,a);return[t.makeTensorInfo(l.shape,l.dtype,l.values),t.makeTensorInfo(u.shape,u.dtype,u.values)]}var oM={kernelName:Ai,backendName:"webgl",kernelFunc:LJ};function zJ(r){let{inputs:e,attrs:t,backend:o}=r,{axis:n}=t,{x:s}=e;Xi(s,"unique"),console.warn("WARNING: ","UI might be locked temporarily as data is being downloaded");let a=o.readSync(s.dataId),{outputValues:i,outputShape:l,indices:u}=$R(a,n,s.shape,s.dtype);return[o.makeTensorInfo(l,s.dtype,i),o.makeTensorInfo([u.length],"int32",u)]}var nM={kernelName:xu,backendName:"webgl",kernelFunc:zJ};function BJ(r){let{inputs:e,backend:t,attrs:o}=r,{value:n}=e,{axis:s}=o;s<0&&(s+=n.shape.length);let a=n,i=a.shape.length,l=n.shape[s],u=new Array(i-1),c=0;for(let h=0;ht.disposeIntermediateTensorInfo(h)),d}var sM={kernelName:ys,backendName:"webgl",kernelFunc:BJ};var cI=class{constructor(e,t){this.variableNames=["x","segmentIds"];let o=e.windowSize,n=e.batchSize,s=e.inSize,a=e.numSegments,i=a*Math.ceil(s/o);this.outputShape=[n,i];let l="0.0",u="sumValue",c=Math.floor(o/4)*4,p=o%4,m=` sumValue += dot(values, segFilter); - `,checkValueOutOfBounds="";inSize%windowSize>0&&(checkValueOutOfBounds=` - if (inIdx < 0 || inIdx >= ${inSize}) { + `,f="";s%o>0&&(f=` + if (inIdx < 0 || inIdx >= ${s}) { return initializationValue; } - `);let checkSegmentIdOutOfBounds="";inSize%windowSize>0&&(checkSegmentIdOutOfBounds=` - if (inIdx < 0 || inIdx >= ${inSize}) { + `);let d="";s%o>0&&(d=` + if (inIdx < 0 || inIdx >= ${s}) { return -1.0; } `),this.userCode=` - const float initializationValue = ${initializationValue}; + const float initializationValue = ${l}; float getValue(int batch, int inIdx) { - ${checkValueOutOfBounds} + ${f} return getX(batch, inIdx); } float getSegmentIdAtIndex(int inIdx) { - ${checkSegmentIdOutOfBounds} + ${d} return getSegmentIds(inIdx); } @@ -3967,12 +3967,12 @@ return a / b;`,DIV_PACKED=` int batch = coords[0]; int outIdx = coords[1]; int inOffset = int(floor(float(outIdx) / float( - ${numSegments})) * float(${windowSize})); - int currentSeg = int(mod(float(outIdx), float(${numSegments}))); + ${a})) * float(${o})); + int currentSeg = int(mod(float(outIdx), float(${a}))); float sumValue = 0.0; - for (int i = 0; i < ${windowSizeNearestVec4}; i += 4) { + for (int i = 0; i < ${c}; i += 4) { int inIdx = inOffset + i; vec4 values = vec4( getValue(batch, inIdx), @@ -3988,11 +3988,11 @@ return a / b;`,DIV_PACKED=` int(getSegmentIdAtIndex(inIdx + 3)) == currentSeg ? 1 : 0 ); - ${updateSnippet} + ${m} } - int inIdx = inOffset + ${windowSizeNearestVec4}; - if (${windowSizeVec4Remainder===1}) { + int inIdx = inOffset + ${c}; + if (${p===1}) { vec4 values = vec4( getValue(batch, inIdx), initializationValue, @@ -4009,8 +4009,8 @@ return a / b;`,DIV_PACKED=` 0 ); - ${updateSnippet} - } else if (${windowSizeVec4Remainder===2}) { + ${m} + } else if (${p===2}) { vec4 values = vec4( getValue(batch, inIdx), getValue(batch, inIdx + 1), @@ -4025,8 +4025,8 @@ return a / b;`,DIV_PACKED=` 0 ); - ${updateSnippet} - } else if (${windowSizeVec4Remainder===3}) { + ${m} + } else if (${p===3}) { vec4 values = vec4( getValue(batch, inIdx), getValue(batch, inIdx + 1), @@ -4041,11 +4041,11 @@ return a / b;`,DIV_PACKED=` 0 ); - ${updateSnippet} + ${m} } - setOutput(${returnValue}); + setOutput(${u}); } - `}};function unsortedSegmentSum3(args){let{inputs,backend:backend2,attrs}=args,{x,segmentIds}=inputs,{numSegments}=attrs,xRank=x.shape.length,toDispose=[],axis=0,permutation=backend_util_exports.getAxesPermutation([axis],xRank),permutedX=x;permutation!=null&&(permutedX=transpose3({inputs:{x},backend:backend2,attrs:{perm:permutation}}),toDispose.push(permutedX),axis=backend_util_exports.getInnerMostAxes(1,xRank)[0]);let outShape=backend_util_exports.segment_util.computeOutShape(permutedX.shape,axis,numSegments),inSize=util_exports.sizeFromShape([permutedX.shape[axis]]),a2D=reshape4({inputs:{x:permutedX},backend:backend2,attrs:{shape:[-1,inSize]}});toDispose.push(a2D);let outputDType=sumOutType(x.dtype),segOpCompute=(x2,segOpType,segmentIds2,dtype,numSegments2)=>{let batchSize=x2.shape[0],inSize2=x2.shape[1],windowSize=backend_util_exports.segment_util.segOpComputeOptimalWindowSize(inSize2,numSegments2),segOpInfo={windowSize,inSize:inSize2,batchSize,numSegments:numSegments2},program=new SegmentOpProgram(segOpInfo,segOpType),output=backend2.compileAndRun(program,[x2,segmentIds2],dtype);if(toDispose.push(output),output.shape[1]===numSegments2)return output;let rangeInfo=range4({backend:backend2,attrs:{start:0,stop:numSegments2,step:1,dtype:"float32"}}),tileInfo=tile4({inputs:{x:rangeInfo},backend:backend2,attrs:{reps:[inSize2/windowSize]}});return toDispose.push(rangeInfo),toDispose.push(tileInfo),segOpCompute(output,segOpType,tileInfo,dtype,numSegments2)},segOpResult=segOpCompute(a2D,"unsortedSegmentSum",segmentIds,outputDType,numSegments),reshaped=reshape4({inputs:{x:segOpResult},backend:backend2,attrs:{shape:outShape}}),result=reshaped;if(permutation!=null){toDispose.push(reshaped);let perm=backend_util_exports.getUndoAxesPermutation(permutation);result=transpose3({inputs:{x:result},backend:backend2,attrs:{perm}})}return toDispose.forEach(t=>backend2.disposeIntermediateTensorInfo(t)),result}var unsortedSegmentSumConfig2={kernelName:UnsortedSegmentSum,backendName:"webgl",kernelFunc:unsortedSegmentSum3};var kernelConfigs2=[LRNConfig,LRNGradConfig,_fusedMatMulConfig2,absConfig2,acosConfig2,acoshConfig2,addConfig2,addNConfig2,allConfig2,anyConfig2,argMaxConfig2,argMinConfig2,asinConfig2,asinhConfig2,atan2Config2,atanConfig2,atanhConfig2,avgPool3DConfig2,avgPoolConfig2,avgPoolGrad3DConfig,avgPoolGradConfig3,batchMatMulConfig2,batchNormConfig2,batchToSpaceNDConfig2,bincountConfig2,castConfig2,ceilConfig2,clipByValueConfig,complexAbsConfig2,complexConfig2,concatConfig2,conv2DBackpropFilterConfig2,conv2DBackpropInputConfig2,conv2DConfig2,conv3DBackpropFilterV2Config2,conv3DBackpropInputConfig,conv3DConfig2,cosConfig2,coshConfig2,cropAndResizeConfig2,cumsumConfig2,denseBincountConfig2,depthToSpaceConfig2,depthwiseConv2dNativeBackpropFilterConfig2,depthwiseConv2dNativeBackpropInputConfig2,depthwiseConv2dNativeConfig2,diagConfig2,dilation2DConfig,eluConfig2,eluGradConfig3,equalConfig2,erfConfig2,expConfig2,expandDimsConfig2,expm1Config2,fftConfig2,fillConfig2,flipLeftRightConfig2,floorConfig2,floorDivConfig2,fromPixelsConfig,fusedConv2DConfig2,fusedDepthwiseConv2DConfig2,gatherNdConfig2,gatherV2Config2,greaterConfig2,greaterEqualConfig2,identityConfig2,ifftConfig2,imagConfig2,isFiniteConfig2,isInfConfig2,isNaNConfig2,leakyReluConfig2,lessConfig2,lessEqualConfig2,linSpaceConfig2,log1pConfig2,logConfig2,logicalAndConfig2,logicalNotConfig2,logicalOrConfig2,maxConfig2,maxPool3DConfig2,maxPoolConfig2,maxPoolGrad3DConfig,maxPoolGradConfig3,maxPoolWithArgmaxConfig2,maximumConfig2,meanConfig2,minConfig2,minimumConfig2,mirrorPadConfig2,modConfig2,multinomialConfig2,multiplyConfig2,negConfig2,nonMaxSuppressionV3Config2,nonMaxSuppressionV4Config2,nonMaxSuppressionV5Config2,notEqualConfig2,oneHotConfig2,onesLikeConfig2,packConfig2,padV2Config2,powConfig2,preluConfig2,prodConfig2,rangeConfig2,realConfig2,realDivConfig2,reciprocalConfig2,relu6Config2,reluConfig2,reshapeConfig2,resizeBilinearConfig2,resizeBilinearGradConfig3,resizeNearestNeighborConfig2,resizeNearestNeighborGradConfig3,reverseConfig2,rotateWithOffsetConfig2,roundConfig2,rsqrtConfig2,scatterNdConfig2,selectConfig2,seluConfig2,sigmoidConfig2,signConfig2,sinConfig2,sinhConfig2,sliceConfig2,softmaxConfig2,softplusConfig2,spaceToBatchNDConfig2,sparseToDenseConfig2,splitVConfig2,sqrtConfig2,squareConfig2,squaredDifferenceConfig2,stepConfig2,stridedSliceConfig2,subConfig2,sumConfig2,tanConfig2,tanhConfig2,tileConfig2,topKConfig2,transposeConfig2,uniqueConfig2,unpackConfig2,unsortedSegmentSumConfig2,zerosLikeConfig2];for(let kernelConfig of kernelConfigs2)registerKernel(kernelConfig);var version7="2.8.3";var version8={"tfjs-core":version,"tfjs-backend-cpu":version5,"tfjs-backend-webgl":version6,"tfjs-data":version4,"tfjs-layers":version2,"tfjs-converter":version3,tfjs:version7};var CppDType;(function(CppDType2){CppDType2[CppDType2.float32=0]="float32",CppDType2[CppDType2.int32=1]="int32",CppDType2[CppDType2.bool=2]="bool",CppDType2[CppDType2.string=3]="string",CppDType2[CppDType2.complex64=4]="complex64"})(CppDType||(CppDType={}));var FusableActivation;(function(FusableActivation2){FusableActivation2[FusableActivation2.linear=0]="linear",FusableActivation2[FusableActivation2.relu=1]="relu",FusableActivation2[FusableActivation2.relu6=2]="relu6",FusableActivation2[FusableActivation2.prelu=3]="prelu",FusableActivation2[FusableActivation2.leakyrelu=4]="leakyrelu"})(FusableActivation||(FusableActivation={}));var wasmFusedMatMul;function setup(backend2){wasmFusedMatMul=backend2.wasm.cwrap(_FusedMatMul,null,["number","array","number","number","array","number","number","number","number","number","number","number","number"])}function fusedBatchMatMul(args){let{inputs,backend:backend2,attrs}=args,{a,b,bias,preluActivationWeights}=inputs;if(a.dtype!=="float32"||b.dtype!=="float32")throw new Error("_FusedMatMul for non non-float32 tensors not yet supported.");let{transposeA,transposeB,activation:activation2,leakyreluAlpha}=attrs,aId=backend2.dataIdMap.get(a.dataId).id,bId=backend2.dataIdMap.get(b.dataId).id,biasId=0;if(bias!=null){let biasData=backend2.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`_FusedMatMul only supports rank-1 bias but got rank ${biasData.shape.length}.`);biasId=biasData.id}let preluActivationWeightsId=preluActivationWeights==null?0:backend2.dataIdMap.get(preluActivationWeights.dataId).id,fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedConv2D in the wasm backend.`);let leftDim=transposeA?a.shape[2]:a.shape[1],rightDim=transposeB?b.shape[1]:b.shape[2],batchDim=a.shape[0],out=backend2.makeOutput([batchDim,leftDim,rightDim],a.dtype),outId=backend2.dataIdMap.get(out.dataId).id,aShapeBytes=new Uint8Array(new Int32Array(a.shape).buffer),bShapeBytes=new Uint8Array(new Int32Array(b.shape).buffer);return wasmFusedMatMul(aId,aShapeBytes,a.shape.length,bId,bShapeBytes,b.shape.length,transposeA,transposeB,fusedActivation,biasId,preluActivationWeightsId,leakyreluAlpha||0,outId),out}var fusedMatMulConfig={kernelName:_FusedMatMul,backendName:"wasm",setupFunc:setup,kernelFunc:fusedBatchMatMul};function createUnaryKernelConfig(kernelName){let wasmFunc9;function setupFunc3(backend2){wasmFunc9=backend2.wasm.cwrap(kernelName,null,["number","number"])}function kernelFunc3(args){let{backend:backend2,inputs:{x}}=args,xId=backend2.dataIdMap.get(x.dataId).id,out=backend2.makeOutput(x.shape,x.dtype),outId=backend2.dataIdMap.get(out.dataId).id;return util_exports.sizeFromShape(out.shape)===0||wasmFunc9(xId,outId),out}return{kernelName,backendName:"wasm",setupFunc:setupFunc3,kernelFunc:kernelFunc3}}var absConfig3=createUnaryKernelConfig(Abs);function createBinaryKernelConfig(kernelName,supportsFullBroadcast17,dtype){let wasmFunc9;function setupFunc3(backend2){wasmFunc9=backend2.wasm.cwrap(kernelName,null,["number","array","number","number","array","number","number","number"])}function kernelFunc3(args){let{backend:backend2,inputs}=args,{a,b}=inputs,aId=backend2.dataIdMap.get(a.dataId).id,bId=backend2.dataIdMap.get(b.dataId).id,outputType=dtype!=null?dtype:a.dtype,newShape=backend_util_exports.assertAndGetBroadcastShape(a.shape,b.shape),out=backend2.makeOutput(newShape,outputType);if(util_exports.sizeFromShape(newShape)===0)return out;let aShapeBytes=new Uint8Array(new Int32Array(a.shape).buffer),bShapeBytes=new Uint8Array(new Int32Array(b.shape).buffer),outId=backend2.dataIdMap.get(out.dataId).id,kernelFunc4=()=>wasmFunc9(aId,aShapeBytes,a.shape.length,bId,bShapeBytes,b.shape.length,CppDType[a.dtype],outId);if(supportsFullBroadcast17&&a.dtype==="float32")return kernelFunc4(),out;let aBroadcastDims=backend_util_exports.getBroadcastDims(a.shape,newShape),bBroadcastDims=backend_util_exports.getBroadcastDims(b.shape,newShape),loopsOverAllOfA=aBroadcastDims.every((v,i)=>v===i),loopsOverAllOfB=bBroadcastDims.every((v,i)=>v===i);if(loopsOverAllOfA&&loopsOverAllOfB)return kernelFunc4(),out;throw new Error(`Broadcasting along outer dims is not yet supported for ${a.dtype} ${kernelName}.`)}return{kernelName,backendName:"wasm",setupFunc:setupFunc3,kernelFunc:kernelFunc3}}var supportsFullBroadcast=!0,addConfig3=createBinaryKernelConfig(Add,supportsFullBroadcast);var wasmFunc;function setupFunc(backend2){wasmFunc=backend2.wasm.cwrap(AddN,null,["array","number","number","number"])}function addn(args){let{inputs,backend:backend2}=args,out=backend2.makeOutput(inputs[0].shape,inputs[0].dtype);if(util_exports.sizeFromShape(out.shape)===0)return out;let inputIds=inputs.map(x=>backend2.dataIdMap.get(x.dataId).id),inputIdsBytes=new Uint8Array(new Int32Array(inputIds).buffer),outId=backend2.dataIdMap.get(out.dataId).id;return wasmFunc(inputIdsBytes,inputIds.length,CppDType[out.dtype],outId),out}var addNConfig3={kernelName:AddN,backendName:"wasm",setupFunc,kernelFunc:addn};function identity4(args){let{inputs:{x},backend:backend2}=args,out=backend2.makeOutput(x.shape,x.dtype),inVals=backend2.typedArrayFromHeap(x);return backend2.typedArrayFromHeap(out).set(inVals),out}var identityConfig3={kernelName:Identity,backendName:"wasm",kernelFunc:identity4};var wasmTranspose;function setup2(backend2){wasmTranspose=backend2.wasm.cwrap(Transpose,null,["number","array","number","number","number","array","number"])}function transpose4(args){let{inputs,backend:backend2,attrs}=args,[reducedShape,perm]=removeOneSizeDims(inputs.x.shape,attrs.perm),permIsNoOp=!0;for(let i=0;i=i&&(minValIdx===-1||newPerm[minValIdx]>newPerm[j])&&(minValIdx=j);newPerm[minValIdx]=i}return[newShape,newPerm]}var transposeConfig3={kernelName:Transpose,backendName:"wasm",kernelFunc:transpose4,setupFunc:setup2};function permuteAxesAndTranspose(x,axis,backend2){let xShape=x.shape,xRank=x.shape.length,originalAxes=util_exports.parseAxisParam(axis,xShape),axes=originalAxes,permutedAxes=backend_util_exports.getAxesPermutation(axes,xRank),xTransposed=null,inputWasTransposed=!1;if(permutedAxes!=null){let newShape=new Array(xRank);for(let i=0;i`new shape: ${$shape}, old shape: ${x.shape}. New shape and old shape must have the same number of elements.`),{dataId:x.dataId,shape:$shape,dtype:x.dtype}}var reshapeConfig3={kernelName:Reshape,backendName:"wasm",kernelFunc:reshape5};var wasmBatchMatMul;function setup5(backend2){wasmBatchMatMul=backend2.wasm.cwrap(BatchMatMul,null,["number","array","number","number","array","number","number","number","number"])}function batchMatMul3(args){let{inputs,backend:backend2,attrs}=args,{a,b}=inputs,{transposeA,transposeB}=attrs;if(a.dtype!=="float32"||b.dtype!=="float32")throw new Error("BatchMatMul for non non-float32 tensors not yet supported.");let aRank=a.shape.length,bRank=b.shape.length,innerShapeA=transposeA?a.shape[aRank-2]:a.shape[aRank-1],innerShapeB=transposeB?b.shape[bRank-1]:b.shape[bRank-2],outerShapeA=transposeA?a.shape[aRank-1]:a.shape[aRank-2],outerShapeB=transposeB?b.shape[bRank-2]:b.shape[bRank-1],outerDimsA=a.shape.slice(0,-2),outerDimsB=b.shape.slice(0,-2),batchDimA=util_exports.sizeFromShape(outerDimsA),batchDimB=util_exports.sizeFromShape(outerDimsB),batchDimsCompatible=batchDimA===batchDimB||batchDimA===1||batchDimB===1;util_exports.assert(aRank>=2&&bRank>=2&&batchDimsCompatible,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${outerDimsA}) and (${outerDimsB}).`);let outShape=(batchDimA>batchDimB?a.shape.slice(0,-2):b.shape.slice(0,-2)).concat([outerShapeA,outerShapeB]);util_exports.assert(innerShapeA===innerShapeB,()=>`Error in matMul: inner shapes (${innerShapeA}) and (${innerShapeB}) of Tensors with shapes ${a.shape} and ${b.shape} and transposeA=${transposeA} and transposeB=${transposeB} must match.`);let a3dShape=transposeA?[batchDimA,innerShapeA,outerShapeA]:[batchDimA,outerShapeA,innerShapeA],b3dShape=transposeB?[batchDimB,outerShapeB,innerShapeB]:[batchDimB,innerShapeB,outerShapeB],a3d=reshape5({inputs:{x:a},backend:backend2,attrs:{shape:a3dShape}}),b3d=reshape5({inputs:{x:b},backend:backend2,attrs:{shape:b3dShape}}),a3dId=backend2.dataIdMap.get(a3d.dataId).id,b3dId=backend2.dataIdMap.get(b3d.dataId).id,leftDim=transposeA?a3d.shape[2]:a3d.shape[1],rightDim=transposeB?b3d.shape[1]:b3d.shape[2],batchDim=Math.max(batchDimA,batchDimB),out=backend2.makeOutput([batchDim,leftDim,rightDim],a3d.dtype),outId=backend2.dataIdMap.get(out.dataId).id,aShapeBytes=new Uint8Array(new Int32Array(a3d.shape).buffer),bShapeBytes=new Uint8Array(new Int32Array(b3d.shape).buffer);return wasmBatchMatMul(a3dId,aShapeBytes,a3d.shape.length,b3dId,bShapeBytes,b3d.shape.length,transposeA,transposeB,outId),out.shape=outShape,out}var batchMatMulConfig3={kernelName:BatchMatMul,backendName:"wasm",setupFunc:setup5,kernelFunc:batchMatMul3};function cast5(args){let{inputs:{x},attrs:{dtype},backend:backend2}=args,out=backend2.makeOutput(x.shape,dtype),inVals=backend2.typedArrayFromHeap(x);return backend2.typedArrayFromHeap(out).set(inVals),out}var castConfig3={kernelName:Cast,backendName:"wasm",kernelFunc:cast5};var wasmClip;function setup6(backend2){wasmClip=backend2.wasm.cwrap(ClipByValue,null,["number","number","number","number"])}function clip2(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{clipValueMin,clipValueMax}=attrs,xId=backend2.dataIdMap.get(x.dataId).id,out=backend2.makeOutput(x.shape,x.dtype),outId=backend2.dataIdMap.get(out.dataId).id;return wasmClip(xId,clipValueMin,clipValueMax,outId),out}var clipByValueConfig2={kernelName:ClipByValue,backendName:"wasm",setupFunc:setup6,kernelFunc:clip2};function concat4(args){let{inputs,backend:backend2}=args,axis=util_exports.parseAxisParam(args.attrs.axis,inputs[0].shape)[0],outShape=backend_util_exports.computeOutShape(inputs.map(t=>t.shape),axis),$inputs=inputs.filter(t=>util_exports.sizeFromShape(t.shape)>0);if($inputs.length===1)return identity4({inputs:{x:$inputs[0]},backend:backend2});let out=backend2.makeOutput(outShape,inputs[0].dtype);if(util_exports.sizeFromShape(outShape)===0)return out;let shapes=$inputs.map(t=>t.shape);if(backend_util_exports.assertParamsConsistent(shapes,axis),$inputs[0].dtype==="string"){let inputs2D=$inputs.map(t=>{let innerSize=util_exports.sizeFromShape(t.shape.slice(axis));return reshape5({inputs:{x:t},backend:backend2,attrs:{shape:[-1,innerSize]}})}),inputsValShapes=inputs2D.map(t=>({vals:backend2.readSync(t.dataId),shape:t.shape}));outShape=backend_util_exports.computeOutShape(inputs2D.map(t=>t.shape),1);let simplyConcat=inputs2D[0].shape[0]===1,outVals2=concatImpl(inputsValShapes,outShape,inputs[0].dtype,simplyConcat),finalOutShape=backend_util_exports.computeOutShape($inputs.map(t=>t.shape),axis);out.shape=finalOutShape;let outData=backend2.dataIdMap.get(out.dataId);return outData.stringBytes=backend_util_exports.fromStringArrayToUint8(outVals2),out}let batchDim=util_exports.sizeFromShape($inputs[0].shape.slice(0,axis)),sumInnerDims=0,innerDims=$inputs.map(input2=>{let innerDim=util_exports.sizeFromShape(input2.shape.slice(axis));return sumInnerDims+=innerDim,innerDim}),inVals=$inputs.map(input2=>backend2.typedArrayFromHeap(input2)),outVals=backend2.typedArrayFromHeap(out);for(let b=0;b`cumsum does not support ${x.dtype} tensors in the WASM backend`);let permutation=backend_util_exports.getAxesPermutation([axis],xRank),permutedX=x;permutation!==null&&(permutedX=transpose4({inputs:{x},attrs:{perm:permutation},backend:backend2}));let permutedAxis=backend_util_exports.getInnerMostAxes(1,xRank)[0];backend_util_exports.assertAxesAreInnerMostDims("cumsum",[permutedAxis],xRank);let permutedOut=backend2.makeOutput(permutedX.shape,permutedX.dtype),finalDim=permutedX.shape[permutedAxis],permutedXId=backend2.dataIdMap.get(permutedX.dataId).id,permutedOutId=backend2.dataIdMap.get(permutedOut.dataId).id;wasmCumsum(permutedXId,exclusive?1:0,reverse5?1:0,finalDim,permutedOutId,CppDType[x.dtype]);let out=permutedOut;if(permutation!==null){let undoPermutation=backend_util_exports.getUndoAxesPermutation(permutation);out=transpose4({inputs:{x:permutedOut},attrs:{perm:undoPermutation},backend:backend2}),backend2.disposeData(permutedX.dataId),backend2.disposeData(permutedOut.dataId)}return out}var cumsumConfig3={kernelName:Cumsum,backendName:"wasm",setupFunc:setup10,kernelFunc:cumsum4};var wasmDepthToSpace;function setup11(backend2){wasmDepthToSpace=backend2.wasm.cwrap(DepthToSpace,null,["number","number","number","array","number","array","array","number","number"])}function depthToSpace4(args){let{backend:backend2,inputs,attrs}=args,{x}=inputs,{blockSize,dataFormat}=attrs;util_exports.assert(blockSize>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${blockSize}`);let batchSize=x.shape[0],inputHeight=dataFormat==="NHWC"?x.shape[1]:x.shape[2],inputWidth=dataFormat==="NHWC"?x.shape[2]:x.shape[3],inputDepth=dataFormat==="NHWC"?x.shape[3]:x.shape[1],outputHeight=inputHeight*blockSize,outputWidth=inputWidth*blockSize,outputDepth=inputDepth/(blockSize*blockSize),outputShape=dataFormat==="NHWC"?[batchSize,outputHeight,outputWidth,outputDepth]:[batchSize,outputDepth,outputHeight,outputWidth],out=backend2.makeOutput(outputShape,"float32"),xId=backend2.dataIdMap.get(x.dataId).id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(x.shape)).buffer),outputShapeBytes=new Uint8Array(new Int32Array(outputShape).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(outputShape)).buffer),outId=backend2.dataIdMap.get(out.dataId).id;return wasmDepthToSpace(xId,blockSize,dataFormat==="NHWC"?1:0,xStridesBytes,x.shape.length-1,outputShapeBytes,outStridesBytes,outputShape.length,outId),out}var depthToSpaceConfig3={kernelName:DepthToSpace,backendName:"wasm",setupFunc:setup11,kernelFunc:depthToSpace4};var wasmDepthwiseConv2d;function setup12(backend2){wasmDepthwiseConv2d=backend2.wasm.cwrap(DepthwiseConv2dNative,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function depthwiseConv2d5(args){let{inputs,attrs,backend:backend2}=args,{x,filter}=inputs,xId=backend2.dataIdMap.get(x.dataId).id,filterId=backend2.dataIdMap.get(filter.dataId).id,{strides,dilations,pad:pad3,dimRoundingMode}=attrs,$dilations=dilations==null?[1,1]:dilations,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,$dilations,pad3,dimRoundingMode,!0),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,outputChannels=convInfo.outChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0;if(convInfo.dataFormat!=="channelsLast")throw new Error(`wasm backend DepthwiseConv2dNative does not support dataFormat:'${convInfo.dataFormat}'. Please use 'channelsLast'.`);let out=backend2.makeOutput(convInfo.outShape,"float32"),outId=backend2.dataIdMap.get(out.dataId).id;return wasmDepthwiseConv2d(xId,x.shape[0],x.shape[1],x.shape[2],filterId,filterHeight,filterWidth,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,outId),out}var depthwiseConv2dNativeConfig3={kernelName:DepthwiseConv2dNative,backendName:"wasm",setupFunc:setup12,kernelFunc:depthwiseConv2d5};var supportsFullBroadcast2=!1,equalConfig3=createBinaryKernelConfig(Equal,supportsFullBroadcast2,"bool");var expConfig3=createUnaryKernelConfig(Exp);function expandDims5(args){let{inputs,attrs,backend:backend2}=args,{input:input2}=inputs,{dim}=attrs,inputRank=input2.shape.length,newShape=input2.shape.slice(),$dim=dim;return dim<0&&(util_exports.assert(-(inputRank+1)<=dim,()=>`Axis must be in the interval [${-(inputRank+1)}, ${inputRank}]`),$dim=inputRank+dim+1),newShape.splice($dim,0,1),reshape5({inputs:{x:input2},backend:backend2,attrs:{shape:newShape}})}var expandDimsConfig3={kernelName:ExpandDims,backendName:"wasm",kernelFunc:expandDims5};function fill4(args){let{attrs:{shape,value,dtype},backend:backend2}=args,out=backend2.makeOutput(shape,dtype);return backend2.typedArrayFromHeap(out).fill(value),out}var fillConfig3={kernelName:Fill,backendName:"wasm",kernelFunc:fill4};var wasmFlipLeftRight;function setup13(backend2){wasmFlipLeftRight=backend2.wasm.cwrap(FlipLeftRight,null,["number","number","number","number","number","number"])}function flipLeftRight2(args){let{inputs,backend:backend2}=args,{image:image3}=inputs,out=backend2.makeOutput(image3.shape,image3.dtype),imageId=backend2.dataIdMap.get(image3.dataId).id,outId=backend2.dataIdMap.get(out.dataId).id,[batch,imageHeight,imageWidth,numChannels]=image3.shape;return wasmFlipLeftRight(imageId,batch,imageHeight,imageWidth,numChannels,outId),out}var flipLeftRightConfig3={kernelName:FlipLeftRight,backendName:"wasm",kernelFunc:flipLeftRight2,setupFunc:setup13};var floorConfig3=createUnaryKernelConfig(Floor);var supportsFullBroadcast3=!1,floorDivConfig3=createBinaryKernelConfig(FloorDiv,supportsFullBroadcast3);var wasmBatchNorm;function setup14(backend2){wasmBatchNorm=backend2.wasm.cwrap(FusedBatchNorm,null,["number","number","number","number","number","number","number"])}function fusedBatchNorm(args){let{backend:backend2,inputs,attrs}=args,{varianceEpsilon}=attrs,{x,mean:mean4,variance,offset,scale:scale2}=inputs,xId=backend2.dataIdMap.get(x.dataId).id,meanId=backend2.dataIdMap.get(mean4.dataId).id,varianceId=backend2.dataIdMap.get(variance.dataId).id,offsetId=offset!=null?backend2.dataIdMap.get(offset.dataId).id:0,scaleId=scale2!=null?backend2.dataIdMap.get(scale2.dataId).id:0,out=backend2.makeOutput(x.shape,x.dtype);if(util_exports.sizeFromShape(x.shape)===0)return out;let outId=backend2.dataIdMap.get(out.dataId).id;return wasmBatchNorm(xId,meanId,varianceId,offsetId,scaleId,varianceEpsilon,outId),out}var fusedBatchNormConfig={kernelName:FusedBatchNorm,backendName:"wasm",setupFunc:setup14,kernelFunc:fusedBatchNorm};var wasmFusedConv2d;function setup15(backend2){wasmFusedConv2d=backend2.wasm.cwrap(FusedConv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function fusedConv2d2(args){let{inputs,attrs,backend:backend2}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad3,dilations,dataFormat,dimRoundingMode,activation:activation2,leakyreluAlpha}=attrs,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad3,dimRoundingMode),fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedConv2D in the wasm backend.`);let xId=backend2.dataIdMap.get(x.dataId).id,filterId=backend2.dataIdMap.get(filter.dataId).id,outputChannels=convInfo.outChannels,biasId=0;if(bias!=null){let biasData=backend2.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`FusedConv2D only supports rank-1 bias but got rank ${biasData.shape.length}.`);if(biasData.shape[0]!==outputChannels)throw new Error(`FusedConv2D bias shape (${biasData.shape}) does not match the number of output channels (${outputChannels})`);biasId=biasData.id}let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0,batchSize=convInfo.batchSize,inHeight=convInfo.inHeight,inWidth=convInfo.inWidth;if(dataFormat!=="NHWC")throw new Error(`wasm backend FusedConv2D does not support dataFormat:'${dataFormat}'. Please use 'NHWC'.`);let out=backend2.makeOutput(convInfo.outShape,"float32"),outId=backend2.dataIdMap.get(out.dataId).id,preluActivationWeightsId=preluActivationWeights==null?0:backend2.dataIdMap.get(preluActivationWeights.dataId).id;return wasmFusedConv2d(xId,batchSize,inHeight,inWidth,filterId,filterHeight,filterWidth,biasId,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,fusedActivation,preluActivationWeightsId,leakyreluAlpha||0,outId),out}var fusedConv2DConfig3={kernelName:FusedConv2D,backendName:"wasm",setupFunc:setup15,kernelFunc:fusedConv2d2};var wasmFusedDepthwiseConv2d;function setup16(backend2){wasmFusedDepthwiseConv2d=backend2.wasm.cwrap(FusedDepthwiseConv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function fusedDepthwiseConv2d(args){let{inputs,attrs,backend:backend2}=args,{x,filter,bias,preluActivationWeights}=inputs,{strides,pad:pad3,dilations,dataFormat,dimRoundingMode,activation:activation2,leakyreluAlpha}=attrs,convInfo=backend_util_exports.computeConv2DInfo(x.shape,filter.shape,strides,dilations,pad3,dimRoundingMode,!0),fusedActivation=FusableActivation[activation2];if(fusedActivation==null)throw new Error(`${activation2} activation not yet supported for FusedDepthwiseConv2D in the wasm backend.`);let xId=backend2.dataIdMap.get(x.dataId).id,filterId=backend2.dataIdMap.get(filter.dataId).id,outputChannels=convInfo.outChannels,biasId=0;if(bias!=null){let biasData=backend2.dataIdMap.get(bias.dataId);if(biasData.shape.length!==1)throw new Error(`FusedDepthwiseConv2D only supports rank-1 bias but got rank ${biasData.shape.length}.`);if(biasData.shape[0]!==outputChannels)throw new Error(`FusedDepthwiseConv2D bias shape (${biasData.shape}) does not match the number of output channels (${outputChannels})`);biasId=biasData.id}let filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,isSamePad=convInfo.padInfo.type==="SAME"?1:0,batchSize=convInfo.batchSize,inHeight=convInfo.inHeight,inWidth=convInfo.inWidth;if(dataFormat!=="NHWC")throw new Error(`wasm backend FusedDepthwiseConv2D does not support dataFormat:'${dataFormat}'. Please use 'NHWC'.`);let out=backend2.makeOutput(convInfo.outShape,"float32"),outId=backend2.dataIdMap.get(out.dataId).id,preluActivationWeightsId=preluActivationWeights==null?0:backend2.dataIdMap.get(preluActivationWeights.dataId).id;return wasmFusedDepthwiseConv2d(xId,batchSize,inHeight,inWidth,filterId,filterHeight,filterWidth,biasId,padTop,padRight,padBottom,padLeft,isSamePad,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,fusedActivation,preluActivationWeightsId,leakyreluAlpha||0,outId),out}var fusedDepthwiseConv2DConfig3={kernelName:FusedDepthwiseConv2D,backendName:"wasm",setupFunc:setup16,kernelFunc:fusedDepthwiseConv2d};var wasmGatherNd;function setup17(backend2){wasmGatherNd=backend2.wasm.cwrap(GatherNd,null,["number","number","number","number","number","number","array","number"])}function gatherNd3(args){let{backend:backend2,inputs}=args,{params,indices}=inputs,[resultShape,numSlices,sliceSize,strides]=gather_nd_util_exports.prepareAndValidate(params,indices),out=backend2.makeOutput(resultShape,params.dtype);if(numSlices===0)return out;let indicesShape=indices.shape,sliceRank=indicesShape[indicesShape.length-1],xId=backend2.dataIdMap.get(params.dataId).id,indicesId=backend2.dataIdMap.get(indices.dataId).id,stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outId=backend2.dataIdMap.get(out.dataId).id;return wasmGatherNd(xId,CppDType[params.dtype],indicesId,numSlices,sliceRank,sliceSize,stridesBytes,outId),out}var gatherNdConfig3={kernelName:GatherNd,backendName:"wasm",setupFunc:setup17,kernelFunc:gatherNd3};var wasmGather;function setup18(backend2){wasmGather=backend2.wasm.cwrap("Gather",null,["number","number","array","number","number","number","array","number"])}function gatherV23(args){let{backend:backend2,inputs,attrs}=args,{x,indices}=inputs,{axis,batchDims}=attrs,parsedAxis=util_exports.parseAxisParam(axis,x.shape)[0],shapeInfo=backend_util_exports.segment_util.collectGatherOpShapeInfo(x,indices,parsedAxis,batchDims),flattenX=reshape5({inputs:{x},attrs:{shape:[shapeInfo.batchSize,shapeInfo.outerSize,shapeInfo.dimSize,shapeInfo.sliceSize]},backend:backend2}),indicesSize=util_exports.sizeFromShape(indices.shape),flattenIndex=reshape5({inputs:{x:indices},attrs:{shape:[shapeInfo.batchSize,indicesSize/shapeInfo.batchSize]},backend:backend2}),flattenOutputShape=[shapeInfo.batchSize,shapeInfo.outerSize,indicesSize/shapeInfo.batchSize,shapeInfo.sliceSize],out=backend2.makeOutput(flattenOutputShape,x.dtype);if(util_exports.sizeFromShape(x.shape)===0)return out;let stridesSize=flattenX.shape.length-1,xId=backend2.dataIdMap.get(flattenX.dataId).id,indicesId=backend2.dataIdMap.get(flattenIndex.dataId).id,outId=backend2.dataIdMap.get(out.dataId).id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(flattenX.shape)).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(flattenOutputShape)).buffer);return wasmGather(xId,CppDType[x.dtype],xStridesBytes,stridesSize,indicesId,shapeInfo.batchSize,outStridesBytes,outId),out.shape=shapeInfo.outputShape,out}var gatherV2Config3={kernelName:GatherV2,backendName:"wasm",setupFunc:setup18,kernelFunc:gatherV23};var supportsFullBroadcast4=!1,greaterConfig3=createBinaryKernelConfig(Greater,supportsFullBroadcast4,"bool");var supportsFullBroadcast5=!1,greaterEqualConfig3=createBinaryKernelConfig(GreaterEqual,supportsFullBroadcast5,"bool");var wasmFunc3;function setupFunc2(backend2){wasmFunc3=backend2.wasm.cwrap(LeakyRelu,null,["number","number","number"])}function leakyRelu4(args){let{inputs:{x},attrs:{alpha},backend:backend2}=args,xId=backend2.dataIdMap.get(x.dataId).id,out=backend2.makeOutput(x.shape,x.dtype);if(util_exports.sizeFromShape(x.shape)!==0){let outId=backend2.dataIdMap.get(out.dataId).id;wasmFunc3(xId,alpha,outId)}return out}var leakyReluConfig3={kernelName:LeakyRelu,backendName:"wasm",setupFunc:setupFunc2,kernelFunc:leakyRelu4};var supportsFullBroadcast6=!1,lessConfig3=createBinaryKernelConfig(Less,supportsFullBroadcast6,"bool");var supportsFullBroadcast7=!1,lessEqualConfig3=createBinaryKernelConfig(LessEqual,supportsFullBroadcast7,"bool");var logConfig3=createUnaryKernelConfig(Log);var supportsFullBroadcast8=!1,logicalAndConfig3=createBinaryKernelConfig(LogicalAnd,supportsFullBroadcast8,"bool");var wasmMax;function setup19(backend2){wasmMax=backend2.wasm.cwrap(Max,null,["number, number, number"])}function max5(args){let{backend:backend2,inputs,attrs}=args,{reductionIndices:axis,keepDims}=attrs,{x}=inputs,inputId=backend2.dataIdMap.get(x.dataId).id,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend2);if(inputWasTransposed){let transposedId=backend2.dataIdMap.get(transposed.dataId).id;input2=transposed,inputId=transposedId}let inputRank=input2.shape.length;backend_util_exports.assertAxesAreInnerMostDims("max",axes,inputRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,axes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend2.makeOutput(outShape,x.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend2.dataIdMap.get(out.dataId).id;wasmMax(inputId,reduceSize,outId)}if(inputWasTransposed&&backend2.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var maxConfig3={kernelName:Max,backendName:"wasm",setupFunc:setup19,kernelFunc:max5};var supportsFullBroadcast9=!1,maximumConfig3=createBinaryKernelConfig(Maximum,supportsFullBroadcast9);var wasmMaxPool;function setup20(backend2){wasmMaxPool=backend2.wasm.cwrap(MaxPool,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function maxPool4(args){let{inputs,attrs,backend:backend2}=args,x=inputs.x,xId=backend2.dataIdMap.get(x.dataId).id,{filterSize,strides,pad:pad3,dimRoundingMode}=attrs,convInfo=backend_util_exports.computePool2DInfo(x.shape,filterSize,strides,1,pad3,dimRoundingMode),filterHeight=convInfo.filterHeight,filterWidth=convInfo.filterWidth,padTop=convInfo.padInfo.top,padRight=convInfo.padInfo.right,padBottom=convInfo.padInfo.bottom,padLeft=convInfo.padInfo.left,dilationHeight=convInfo.dilationHeight,dilationWidth=convInfo.dilationWidth,strideHeight=convInfo.strideHeight,strideWidth=convInfo.strideWidth,inputChannels=convInfo.inChannels,outputChannels=convInfo.outChannels;if(convInfo.dataFormat!=="channelsLast")throw new Error(`wasm backend does not support dataFormat:'${convInfo.dataFormat}'. Please use 'channelsLast'.`);let out=backend2.makeOutput(convInfo.outShape,"float32"),outId=backend2.dataIdMap.get(out.dataId).id;return wasmMaxPool(xId,x.shape[0],x.shape[1],x.shape[2],filterHeight,filterWidth,padTop,padRight,padBottom,padLeft,dilationHeight,dilationWidth,strideHeight,strideWidth,inputChannels,outputChannels,outId),out}var maxPoolConfig3={kernelName:MaxPool,backendName:"wasm",setupFunc:setup20,kernelFunc:maxPool4};var wasmMean;function setup21(backend2){wasmMean=backend2.wasm.cwrap(Mean,null,["number, number, number"])}function mean3(args){let{backend:backend2,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend2.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend2),reductionAxes=axes;if(inputWasTransposed){let transposedId=backend2.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId,reductionAxes=backend_util_exports.getInnerMostAxes(reductionAxes.length,input2.shape.length))}backend_util_exports.assertAxesAreInnerMostDims("mean",reductionAxes,input2.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,reductionAxes),reduceSize=util_exports.sizeFromShape(reduceShape),castedInput=input2;input2.dtype!=="float32"&&(castedInput=cast5({backend:backend2,inputs:{x:input2},attrs:{dtype:"float32"}}),inputId=backend2.dataIdMap.get(castedInput.dataId).id);let out=backend2.makeOutput(outShape,"float32");if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend2.dataIdMap.get(out.dataId).id;wasmMean(inputId,reduceSize,outId)}if(inputWasTransposed&&backend2.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return input2.dtype!=="float32"&&backend2.disposeData(castedInput.dataId),out}var meanConfig3={kernelName:Mean,backendName:"wasm",setupFunc:setup21,kernelFunc:mean3};var wasmMin;function setup22(backend2){wasmMin=backend2.wasm.cwrap(Min,null,["number, number, number"])}function min5(args){let{backend:backend2,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend2.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend2);if(inputWasTransposed){let transposedId=backend2.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId)}let inputRank=input2.shape.length;backend_util_exports.assertAxesAreInnerMostDims("min",axes,inputRank);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,axes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend2.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend2.dataIdMap.get(out.dataId).id;wasmMin(inputId,reduceSize,outId)}if(inputWasTransposed&&backend2.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var minConfig3={kernelName:Min,backendName:"wasm",setupFunc:setup22,kernelFunc:min5};var supportsFullBroadcast10=!1,minimumConfig3=createBinaryKernelConfig(Minimum,supportsFullBroadcast10);var supportsFullBroadcast11=!0,multiplyConfig3=createBinaryKernelConfig(Multiply,supportsFullBroadcast11);var negConfig3=createUnaryKernelConfig(Neg);function parseResultStruct(backend2,resOffset){let result=new Int32Array(backend2.wasm.HEAPU8.buffer,resOffset,4),pSelectedIndices=result[0],selectedSize=result[1],pSelectedScores=result[2],pValidOutputs=result[3];return backend2.wasm._free(resOffset),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}}var wasmFunc4;function setup23(backend2){wasmFunc4=backend2.wasm.cwrap(NonMaxSuppressionV3,"number",["number","number","number","number","number"])}function kernelFunc(args){let{backend:backend2,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold}=attrs,{boxes,scores}=inputs,boxesId=backend2.dataIdMap.get(boxes.dataId).id,scoresId=backend2.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc4(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend2,resOffset);return backend2.wasm._free(pSelectedScores),backend2.wasm._free(pValidOutputs),backend2.makeOutput([selectedSize],"int32",pSelectedIndices)}var nonMaxSuppressionV3Config3={kernelName:NonMaxSuppressionV3,backendName:"wasm",setupFunc:setup23,kernelFunc};var wasmFunc5;function setup24(backend2){wasmFunc5=backend2.wasm.cwrap(NonMaxSuppressionV4,"number",["number","number","number","number","number","bool"])}function nonMaxSuppressionV43(args){let{backend:backend2,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold,padToMaxOutputSize}=attrs,{boxes,scores}=inputs,boxesId=backend2.dataIdMap.get(boxes.dataId).id,scoresId=backend2.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc5(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold,padToMaxOutputSize),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend2,resOffset);backend2.wasm._free(pSelectedScores);let selectedIndicesTensor=backend2.makeOutput([selectedSize],"int32",pSelectedIndices),validOutputsTensor=backend2.makeOutput([],"int32",pValidOutputs);return[selectedIndicesTensor,validOutputsTensor]}var nonMaxSuppressionV4Config3={kernelName:NonMaxSuppressionV4,backendName:"wasm",setupFunc:setup24,kernelFunc:nonMaxSuppressionV43};var wasmFunc6;function setup25(backend2){wasmFunc6=backend2.wasm.cwrap(NonMaxSuppressionV5,"number",["number","number","number","number","number","number"])}function kernelFunc2(args){let{backend:backend2,inputs,attrs}=args,{iouThreshold,maxOutputSize,scoreThreshold,softNmsSigma}=attrs,{boxes,scores}=inputs,boxesId=backend2.dataIdMap.get(boxes.dataId).id,scoresId=backend2.dataIdMap.get(scores.dataId).id,resOffset=wasmFunc6(boxesId,scoresId,maxOutputSize,iouThreshold,scoreThreshold,softNmsSigma),{pSelectedIndices,selectedSize,pSelectedScores,pValidOutputs}=parseResultStruct(backend2,resOffset);backend2.wasm._free(pValidOutputs);let selectedIndicesTensor=backend2.makeOutput([selectedSize],"int32",pSelectedIndices),selectedScoresTensor=backend2.makeOutput([selectedSize],"float32",pSelectedScores);return[selectedIndicesTensor,selectedScoresTensor]}var nonMaxSuppressionV5Config3={kernelName:NonMaxSuppressionV5,backendName:"wasm",setupFunc:setup25,kernelFunc:kernelFunc2};var supportsFullBroadcast12=!1,notEqualConfig3=createBinaryKernelConfig(NotEqual,supportsFullBroadcast12,"bool");var wasmOneHot;function setup26(backend2){wasmOneHot=backend2.wasm.cwrap(OneHot,null,["number","number","number","number","number"])}function oneHot4(args){let{inputs,backend:backend2,attrs}=args,{indices}=inputs,{depth,onValue,offValue}=attrs,out=backend2.makeOutput([...indices.shape,depth],"int32"),outId=backend2.dataIdMap.get(out.dataId).id,indicesId=backend2.dataIdMap.get(indices.dataId).id;return wasmOneHot(indicesId,depth,onValue,offValue,outId),out}var oneHotConfig3={kernelName:OneHot,backendName:"wasm",setupFunc:setup26,kernelFunc:oneHot4};function onesLike4(args){let{inputs:{x},backend:backend2}=args,out=backend2.makeOutput(x.shape,x.dtype);return backend2.typedArrayFromHeap(out).fill(1),out}var onesLikeConfig3={kernelName:OnesLike,backendName:"wasm",kernelFunc:onesLike4};function pack3(args){let{inputs,backend:backend2,attrs}=args,{axis}=attrs;if(inputs.length===1)return expandDims5({inputs:{input:inputs[0]},backend:backend2,attrs:{dim:axis}});let shape=inputs[0].shape,dtype=inputs[0].dtype;inputs.forEach(t=>{util_exports.assertShapesMatch(shape,t.shape,"All tensors passed to stack must have matching shapes"),util_exports.assert(dtype===t.dtype,()=>"All tensors passed to stack must have matching dtypes")});let expandedTensors=inputs.map(t=>expandDims5({inputs:{input:t},backend:backend2,attrs:{dim:axis}}));return concat4({inputs:expandedTensors,backend:backend2,attrs:{axis}})}var packConfig3={kernelName:Pack,backendName:"wasm",kernelFunc:pack3};var wasmPadV2;function setup27(backend2){wasmPadV2=backend2.wasm.cwrap(PadV2,null,["number","array","number","number","array","array","number","number"])}function pad2(args){let{inputs:{x},backend:backend2,attrs:{paddings,constantValue}}=args,outShape=paddings.map((p2,i)=>p2[0]+x.shape[i]+p2[1]),xId=backend2.dataIdMap.get(x.dataId).id,out=backend2.makeOutput(outShape,x.dtype),outId=backend2.dataIdMap.get(out.dataId).id,xShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer),prePaddingsFlat=paddings.map(padTuple=>padTuple[0]),postPaddingsFlat=paddings.map(padTuple=>padTuple[1]),prePaddingsBytes=new Uint8Array(new Int32Array(prePaddingsFlat).buffer),postPaddingsBytes=new Uint8Array(new Int32Array(postPaddingsFlat).buffer);return wasmPadV2(xId,xShapeBytes,x.shape.length,CppDType[x.dtype],prePaddingsBytes,postPaddingsBytes,constantValue,outId),out}var padV2Config3={kernelName:PadV2,backendName:"wasm",kernelFunc:pad2,setupFunc:setup27};var supportsFullBroadcast13=!1,powConfig3=createBinaryKernelConfig(Pow,supportsFullBroadcast13);var wasmPrelu;function setup28(backend2){wasmPrelu=backend2.wasm.cwrap(Prelu,null,["number","number","number"])}function prelu5(args){let{inputs,backend:backend2}=args,{x,alpha}=inputs,xId=backend2.dataIdMap.get(x.dataId).id,weightsId=backend2.dataIdMap.get(alpha.dataId).id,out=backend2.makeOutput(x.shape,"float32"),outId=backend2.dataIdMap.get(out.dataId).id;return wasmPrelu(xId,weightsId,outId),out}var preluConfig3={kernelName:Prelu,backendName:"wasm",setupFunc:setup28,kernelFunc:prelu5};var wasmProd;function setup29(backend2){wasmProd=backend2.wasm.cwrap(Prod,null,["number","number","number","number"])}function prod4(args){let{backend:backend2,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend2.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend2),reductionAxes=axes;if(inputWasTransposed){let transposedId=backend2.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId,reductionAxes=backend_util_exports.getInnerMostAxes(reductionAxes.length,input2.shape.length))}backend_util_exports.assertAxesAreInnerMostDims("prod",reductionAxes,input2.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,reductionAxes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend2.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend2.dataIdMap.get(out.dataId).id;wasmProd(inputId,reduceSize,CppDType[out.dtype],outId)}if(inputWasTransposed&&backend2.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var prodConfig3={kernelName:Prod,backendName:"wasm",setupFunc:setup29,kernelFunc:prod4};var range5=args=>{let{backend:backend2,attrs}=args,{start,stop,step:step4,dtype}=attrs,values=rangeImpl(start,stop,step4,dtype),out=backend2.makeOutput([values.length],dtype);return backend2.typedArrayFromHeap(out).set(values),out},rangeConfig3={kernelName:Range,backendName:"wasm",kernelFunc:range5};var supportsFullBroadcast14=!0,realDivConfig3=createBinaryKernelConfig(RealDiv,supportsFullBroadcast14);var reluConfig3=createUnaryKernelConfig(Relu);var relu6Config3=createUnaryKernelConfig(Relu6);var wasmResizeBilinear;function setup30(backend2){wasmResizeBilinear=backend2.wasm.cwrap(ResizeBilinear,null,["number","number","number","number","number","number","number","number","number","number"])}function resizeBilinear4(args){let{backend:backend2,inputs,attrs}=args,{images}=inputs,{alignCorners,halfPixelCenters,size}=attrs,[newHeight,newWidth]=size,[batch,oldHeight,oldWidth,numChannels]=images.shape,outShape=[batch,newHeight,newWidth,numChannels],xData=backend2.dataIdMap.get(images.dataId),castedData;xData.dtype!=="float32"&&(castedData=cast5({backend:backend2,inputs:{x:images},attrs:{dtype:"float32"}}),xData=backend2.dataIdMap.get(castedData.dataId));let xId=xData.id,out=backend2.makeOutput(outShape,"float32");if(util_exports.sizeFromShape(images.shape)===0)return out;let outId=backend2.dataIdMap.get(out.dataId).id;return wasmResizeBilinear(xId,batch,oldHeight,oldWidth,numChannels,newHeight,newWidth,alignCorners?1:0,halfPixelCenters?1:0,outId),castedData!=null&&backend2.disposeData(castedData.dataId),out}var resizeBilinearConfig3={kernelName:ResizeBilinear,backendName:"wasm",setupFunc:setup30,kernelFunc:resizeBilinear4};var wasmReverse;function setup31(backend2){wasmReverse=backend2.wasm.cwrap(Reverse,null,["number","array","number","array","number","number"])}function reverse4(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,{dims}=attrs,axes=util_exports.parseAxisParam(dims,x.shape);if(x.shape.length===0)return identity4({inputs:{x},backend:backend2});let out=backend2.makeOutput(x.shape,x.dtype),xId=backend2.dataIdMap.get(x.dataId).id,outId=backend2.dataIdMap.get(out.dataId).id,axesBytes=new Uint8Array(new Int32Array(axes).buffer),outShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer);return wasmReverse(xId,axesBytes,axes.length,outShapeBytes,x.shape.length,outId),reshape5({inputs:{x:out},attrs:{shape:x.shape},backend:backend2})}var reverseConfig3={kernelName:Reverse,backendName:"wasm",kernelFunc:reverse4,setupFunc:setup31};var wasmRotate;function setup32(backend2){wasmRotate=backend2.wasm.cwrap(RotateWithOffset,null,["number","number","number","number","number","number","number","number","array","number","number"])}function rotateWithOffset2(args){let{inputs,backend:backend2,attrs}=args,{image:image3}=inputs,{radians,fillValue,center}=attrs,out=backend2.makeOutput(image3.shape,image3.dtype),imageId=backend2.dataIdMap.get(image3.dataId).id,outId=backend2.dataIdMap.get(out.dataId).id,[batch,imageHeight,imageWidth,numChannels]=image3.shape,[centerX,centerY]=backend_util_exports.getImageCenter(center,imageHeight,imageWidth),fillIsBlack=fillValue===0,fullOpacityValue=255,fillValues2=typeof fillValue=="number"?[fillValue,fillValue,fillValue,fillIsBlack?0:fullOpacityValue]:[...fillValue,fullOpacityValue],fillBytes=new Uint8Array(new Int32Array(fillValues2).buffer);return wasmRotate(imageId,batch,imageHeight,imageWidth,numChannels,radians,centerX,centerY,fillBytes,fillValues2.length,outId),out}var rotateWithOffsetConfig3={kernelName:RotateWithOffset,backendName:"wasm",kernelFunc:rotateWithOffset2,setupFunc:setup32};var roundConfig3=createUnaryKernelConfig(Round);var rsqrtConfig3=createUnaryKernelConfig(Rsqrt);var wasmScatterNd;function setup33(backend2){wasmScatterNd=backend2.wasm.cwrap(ScatterNd,null,["number","number","number","number","number","number","array","number","number"])}function scatterNd3(args){let{backend:backend2,inputs,attrs}=args,{indices,updates}=inputs,{shape}=attrs,out=backend2.makeOutput(shape,updates.dtype);if(util_exports.sizeFromShape(shape)===0)return out;let{sliceRank,numUpdates,sliceSize,strides,outputSize}=scatter_nd_util_exports.calculateShapes(updates,indices,shape),indicesId=backend2.dataIdMap.get(indices.dataId).id,updatesId=backend2.dataIdMap.get(updates.dataId).id,stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outId=backend2.dataIdMap.get(out.dataId).id;return wasmScatterNd(indicesId,updatesId,CppDType[updates.dtype],sliceRank,numUpdates,sliceSize,stridesBytes,outputSize,outId),out}var scatterNdConfig3={kernelName:ScatterNd,backendName:"wasm",setupFunc:setup33,kernelFunc:scatterNd3};var wasmSelect;function setup34(backend2){wasmSelect=backend2.wasm.cwrap("SelectV2",null,["number","number","number","number","number"])}function select3(args){let{inputs,backend:backend2}=args,{condition,t,e}=inputs,conditionId=backend2.dataIdMap.get(condition.dataId).id,tId=backend2.dataIdMap.get(t.dataId).id,eId=backend2.dataIdMap.get(e.dataId).id,out=backend2.makeOutput(t.shape,t.dtype),outId=backend2.dataIdMap.get(out.dataId).id,cRank=condition.shape.length,tRank=t.shape.length,offset=cRank===0||cRank>1||tRank===1?1:util_exports.sizeFromShape(t.shape.slice(1));return wasmSelect(conditionId,tId,eId,offset,outId),out}var selectConfig3={kernelName:Select,backendName:"wasm",kernelFunc:select3,setupFunc:setup34};var wasmFunc7;function setup35(backend2){wasmFunc7=backend2.wasm.cwrap(Sigmoid,null,["number","number"])}function sigmoid4(args){let{backend:backend2,inputs:{x}}=args,xId=backend2.dataIdMap.get(x.dataId).id,out=backend2.makeOutput(x.shape,x.dtype),outId=backend2.dataIdMap.get(out.dataId).id;return util_exports.sizeFromShape(out.shape)===0||wasmFunc7(xId,outId),out}var sigmoidConfig3={kernelName:"Sigmoid",backendName:"wasm",setupFunc:setup35,kernelFunc:sigmoid4};var sinConfig3=createUnaryKernelConfig(Sin);function slice4(args){let{inputs:{x},attrs:{begin,size},backend:backend2}=args,[begin_,size_]=slice_util_exports.parseSliceParams(x,begin,size),isContinous=slice_util_exports.isSliceContinous(x.shape,begin_,size_),xVals=backend2.readSync(x.dataId),out=backend2.makeOutput(size_,x.dtype),xStrides=util_exports.computeStrides(x.shape),outData=backend2.dataIdMap.get(out.dataId);if(isContinous){let flatOffset=slice_util_exports.computeFlatOffset(begin_,xStrides);return x.dtype==="string"?outData.stringBytes=xVals.slice(flatOffset,flatOffset+util_exports.sizeFromShape(size_)):backend2.typedArrayFromHeap(out).set(xVals.subarray(flatOffset,flatOffset+util_exports.sizeFromShape(size_))),out}if(x.dtype==="string"){let res=sliceImpl(xVals,begin_,size_,x.shape,x.dtype);return outData.stringBytes=res,out}let outVals=backend2.typedArrayFromHeap(out),rank=x.shape.length;if(rank===2)slice2d2(xVals,xStrides[0],outVals,begin_,size_);else if(rank===3)slice3d2(xVals,xStrides[0],xStrides[1],outVals,begin_,size_);else if(rank===4)slice4d2(xVals,xStrides[0],xStrides[1],xStrides[2],outVals,begin_,size_);else{let res=sliceImpl(xVals,begin_,size_,x.shape,x.dtype);outVals.set(res)}return out}function slice2d2(xVals,xStride,outVals,begin,size){let outOffset=0,beginI=begin[0],beginJ=begin[1],endI=beginI+size[0];for(let i=beginI;i{let xSliceSize=[...size];xSliceSize[$axis]=s;let xSlice=slice4({inputs:{x},attrs:{begin,size:xSliceSize},backend:backend2});return begin[$axis]+=s,xSlice})}var splitVConfig3={kernelName:SplitV,backendName:"wasm",kernelFunc:splitV3};var sqrtConfig3=createUnaryKernelConfig(Sqrt);var squareConfig3=createUnaryKernelConfig(Square);var supportsFullBroadcast15=!0,squaredDifferenceConfig3=createBinaryKernelConfig(SquaredDifference,supportsFullBroadcast15);var wasmStridedSlice;function setup37(backend2){wasmStridedSlice=backend2.wasm.cwrap(StridedSlice,null,["number","array","number","array","array","array","array","array","number","number"])}function stridedSlice4(args){let{backend:backend2,inputs,attrs}=args,{x}=inputs,{begin,end,strides}=attrs;strides==null&&(strides=new Array(begin.length));let{beginMask,endMask,ellipsisMask,newAxisMask,shrinkAxisMask}=attrs,ellipsisAxes=backend_util_exports.slice_util.maskToAxes(ellipsisMask);if(ellipsisAxes.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(ellipsisMask!==0&&newAxisMask!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(ellipsisMask!==0&&shrinkAxisMask!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let numInterpolatedAxes=x.shape.length-begin.length,expandAxes=backend_util_exports.slice_util.maskToAxes(newAxisMask),newShape=x.shape.slice();expandAxes.forEach(axis=>{begin[axis]=0,end[axis]=1,newShape.splice(axis,0,1)});let xReshaped=reshape5({inputs:{x},attrs:{shape:newShape},backend:backend2}),{begin:normalizedBegin,end:normalizedEnd,strides:normalizedStrides}=backend_util_exports.slice_util.getNormalizedAxes(xReshaped.shape,ellipsisAxes,numInterpolatedAxes,begin,end,strides,beginMask,endMask,ellipsisMask);begin=normalizedBegin,end=normalizedEnd,strides=normalizedStrides;let shrinkAxes=backend_util_exports.slice_util.maskToAxes(shrinkAxisMask);shrinkAxes.forEach(axis=>{end[axis]=begin[axis]+1,strides[axis]=1});let size=backend_util_exports.slice_util.computeOutShape(begin,end,strides),outShape=size.filter((_,axis)=>shrinkAxes.indexOf(axis)===-1);if(strides.every(v=>v===1)){let xSliced=slice4({inputs:{x},attrs:{begin,size},backend:backend2});return reshape5({inputs:{x:xSliced},attrs:{shape:outShape},backend:backend2})}let out=backend2.makeOutput(outShape,"float32");if(!outShape.some(axis=>axis===0)){let xId=backend2.dataIdMap.get(xReshaped.dataId).id,xStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(xReshaped.shape)).buffer),beginBytes=new Uint8Array(new Int32Array(begin).buffer),endBytes=new Uint8Array(new Int32Array(end).buffer),stridesBytes=new Uint8Array(new Int32Array(strides).buffer),outputShapeBytes=new Uint8Array(new Int32Array(outShape).buffer),outStridesBytes=new Uint8Array(new Int32Array(util_exports.computeStrides(outShape)).buffer),outId=backend2.dataIdMap.get(out.dataId).id;wasmStridedSlice(xId,xStridesBytes,xReshaped.shape.length,beginBytes,endBytes,stridesBytes,outputShapeBytes,outStridesBytes,outShape.length,outId)}return reshape5({inputs:{x:out},attrs:{shape:outShape},backend:backend2})}var stridedSliceConfig3={kernelName:StridedSlice,backendName:"wasm",setupFunc:setup37,kernelFunc:stridedSlice4};var supportsFullBroadcast16=!0,subConfig3=createBinaryKernelConfig(Sub,supportsFullBroadcast16);var wasmSum;function setup38(backend2){wasmSum=backend2.wasm.cwrap(Sum,null,["number, number, number"])}function sum5(args){let{backend:backend2,inputs,attrs}=args,{axis,keepDims}=attrs,{x}=inputs,xId=backend2.dataIdMap.get(x.dataId).id,inputId=xId,input2=x,{transposed,axes,originalAxes,inputWasTransposed}=permuteAxesAndTranspose(x,axis,backend2),reductionAxes=axes;if(inputWasTransposed){let transposedId=backend2.dataIdMap.get(transposed.dataId).id;transposedId!==xId&&(input2=transposed,inputId=transposedId,reductionAxes=backend_util_exports.getInnerMostAxes(reductionAxes.length,input2.shape.length))}backend_util_exports.assertAxesAreInnerMostDims("sum",reductionAxes,input2.shape.length);let[outShape,reduceShape]=backend_util_exports.computeOutAndReduceShapes(input2.shape,reductionAxes),reduceSize=util_exports.sizeFromShape(reduceShape),out=backend2.makeOutput(outShape,input2.dtype);if(util_exports.sizeFromShape(input2.shape)!==0){let outId=backend2.dataIdMap.get(out.dataId).id;wasmSum(inputId,reduceSize,outId)}if(inputWasTransposed&&backend2.disposeData(transposed.dataId),keepDims){let newShape=backend_util_exports.expandShapeToKeepDim(out.shape,originalAxes);out.shape=newShape}return out}var sumConfig3={kernelName:Sum,backendName:"wasm",setupFunc:setup38,kernelFunc:sum5};var tanhConfig3=createUnaryKernelConfig(Tanh);var wasmTile;function setup39(backend2){wasmTile=backend2.wasm.cwrap(Tile,null,["number","array","number","array","number","number"])}function tile5(args){let{inputs,backend:backend2,attrs}=args,{x}=inputs,xId=backend2.dataIdMap.get(x.dataId).id,{reps}=attrs,newShape=new Array(x.shape.length);for(let i=0;i{let{x}=inputs,{k,sorted}=attrs,xId=backend2.dataIdMap.get(x.dataId).id,xShapeBytes=new Uint8Array(new Int32Array(x.shape).buffer),outputShape=x.shape.slice();outputShape[outputShape.length-1]=k;let outValues=backend2.makeOutput(outputShape,x.dtype),outValuesId=backend2.dataIdMap.get(outValues.dataId).id,outIndices=backend2.makeOutput(outputShape,"int32"),outIndicesId=backend2.dataIdMap.get(outIndices.dataId).id;return wasmTopK(xId,xShapeBytes,x.shape.length,CppDType[x.dtype],k,sorted,outValuesId,outIndicesId),[outValues,outIndices]},topKConfig3={kernelName:TopK,backendName:"wasm",setupFunc:setup40,kernelFunc:topk2};function unpack3(args){let{inputs,backend:backend2,attrs}=args,{value}=inputs,{axis}=attrs;axis<0&&(axis+=value.shape.length);let numOutputs=value.shape[axis],rank=value.shape.length,outShape=new Array(rank-1),outIndex=0;for(let i=0;i({dataId,dtype,shape:outShape}))}var unpackConfig3={kernelName:Unpack,backendName:"wasm",kernelFunc:unpack3};function zerosLike4(args){let{inputs:{x},backend:backend2}=args,out=backend2.makeOutput(x.shape,x.dtype);return backend2.typedArrayFromHeap(out).fill(0),out}var zerosLikeConfig3={kernelName:ZerosLike,backendName:"wasm",kernelFunc:zerosLike4};var kernelConfigs3=[absConfig3,addConfig3,addNConfig3,argMaxConfig3,avgPoolConfig3,batchMatMulConfig3,castConfig3,clipByValueConfig2,concatConfig3,conv2DConfig3,conv2DBackpropInputConfig3,cosConfig3,cropAndResizeConfig3,cumsumConfig3,depthToSpaceConfig3,depthwiseConv2dNativeConfig3,equalConfig3,expConfig3,expandDimsConfig3,fillConfig3,flipLeftRightConfig3,floorConfig3,floorDivConfig3,fusedMatMulConfig,fusedBatchNormConfig,fusedConv2DConfig3,fusedDepthwiseConv2DConfig3,gatherNdConfig3,gatherV2Config3,greaterConfig3,greaterEqualConfig3,identityConfig3,leakyReluConfig3,lessConfig3,lessEqualConfig3,logConfig3,logicalAndConfig3,maxConfig3,maximumConfig3,maxPoolConfig3,meanConfig3,minConfig3,minimumConfig3,multiplyConfig3,negConfig3,nonMaxSuppressionV3Config3,nonMaxSuppressionV4Config3,nonMaxSuppressionV5Config3,notEqualConfig3,oneHotConfig3,onesLikeConfig3,packConfig3,padV2Config3,powConfig3,preluConfig3,prodConfig3,rangeConfig3,realDivConfig3,reluConfig3,relu6Config3,reshapeConfig3,resizeBilinearConfig3,reverseConfig3,rotateWithOffsetConfig3,rsqrtConfig3,roundConfig3,scatterNdConfig3,selectConfig3,sigmoidConfig3,sinConfig3,sliceConfig3,softmaxConfig3,splitVConfig3,sqrtConfig3,squareConfig3,squaredDifferenceConfig3,stridedSliceConfig3,subConfig3,sumConfig3,tanhConfig3,tileConfig3,topKConfig3,transposeConfig3,unpackConfig3,zerosLikeConfig3];for(let kernelConfig of kernelConfigs3)registerKernel(kernelConfig);var ENV4=env();ENV4.registerFlag("WASM_HAS_SIMD_SUPPORT",async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,9,1,7,0,65,0,253,15,26,11])));ENV4.registerFlag("WASM_HAS_MULTITHREAD_SUPPORT",async()=>{if(ENV4.get("IS_NODE"))return!1;try{return new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch(e){return!1}});var import_tfjs_backend_wasm_threaded_simd=__toModule(require_tfjs_backend_wasm_threaded_simd());var wasmWorkerContents='var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module["instantiateWasm"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module["wasmModule"],info);Module["wasmModule"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd==="load"){Module["DYNAMIC_BASE"]=e.data.DYNAMIC_BASE;Module["DYNAMICTOP_PTR"]=e.data.DYNAMICTOP_PTR;Module["wasmModule"]=e.data.wasmModule;Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;if(typeof e.data.urlOrBlob==="string"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({"cmd":"loaded"})}else if(e.data.cmd==="objectTransfer"){Module["PThread"].receiveObjectTransfer(e.data)}else if(e.data.cmd==="run"){Module["__performance_now_clock_drift"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module["__register_pthread_ptr"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module["establishStackSpace"](top,max);Module["_emscripten_tls_init"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].setThreadStatus(Module["_pthread_self"](),1);try{var result=Module["dynCall_ii"](e.data.start_routine,e.data.arg);if(!Module["getNoExitRuntime"]())Module["PThread"].threadExit(result)}catch(ex){if(ex==="Canceled!"){Module["PThread"].threadCancel()}else if(ex!="unwind"){Atomics.store(Module["HEAPU32"],threadInfoStruct+4>>2,ex instanceof Module["ExitStatus"]?ex.status:-2);Atomics.store(Module["HEAPU32"],threadInfoStruct+0>>2,1);Module["_emscripten_futex_wake"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module["ExitStatus"]))throw ex}}}else if(e.data.cmd==="cancel"){if(threadInfoStruct){Module["PThread"].threadCancel()}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processThreadQueue"){if(threadInfoStruct){Module["_emscripten_current_thread_process_queued_calls"]()}}else{err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){err("worker.js onmessage() captured an uncaught exception: "+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require("worker_threads");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",function(data){onmessage({data:data})});var nodeFS=require("fs");var nodeRead=function(filename){return nodeFS.readFileSync(filename,"utf8")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance==="undefined"){performance={now:function(){return Date.now()}}}}';var import_tfjs_backend_wasm=__toModule(require_tfjs_backend_wasm());var BackendWasm=class extends KernelBackend{constructor(wasm){super();this.wasm=wasm,this.dataIdNextNumber=1,this.wasm.tfjs.init(),this.dataIdMap=new DataStorage(this,engine())}write(values,shape,dtype){let dataId={};return this.move(dataId,values,shape,dtype),dataId}numDataIds(){return this.dataIdMap.numDataIds()}async time(f){let start=util_exports.now();return f(),{kernelMs:util_exports.now()-start}}move(dataId,values,shape,dtype){let id=this.dataIdNextNumber++;if(dtype==="string"){let stringBytes=values;this.dataIdMap.set(dataId,{id,stringBytes,shape,dtype,memoryOffset:null});return}let size=util_exports.sizeFromShape(shape),numBytes=size*util_exports.bytesPerElement(dtype),memoryOffset=this.wasm._malloc(numBytes);this.dataIdMap.set(dataId,{id,memoryOffset,shape,dtype}),this.wasm.tfjs.registerTensor(id,size,memoryOffset),values!=null&&this.wasm.HEAPU8.set(new Uint8Array(values.buffer,values.byteOffset,numBytes),memoryOffset)}async read(dataId){return this.readSync(dataId)}readSync(dataId){let{memoryOffset,dtype,shape,stringBytes}=this.dataIdMap.get(dataId);if(dtype==="string")return stringBytes;let bytes=this.wasm.HEAPU8.slice(memoryOffset,memoryOffset+util_exports.sizeFromShape(shape)*util_exports.bytesPerElement(dtype));return typedArrayFromBuffer(bytes.buffer,dtype)}disposeData(dataId){let data=this.dataIdMap.get(dataId);this.wasm._free(data.memoryOffset),this.wasm.tfjs.disposeData(data.id),this.dataIdMap.delete(dataId)}floatPrecision(){return 32}getMemoryOffset(dataId){return this.dataIdMap.get(dataId).memoryOffset}dispose(){this.wasm.tfjs.dispose(),this.wasm=null}memory(){return{unreliable:!1}}makeOutput(shape,dtype,memoryOffset){let dataId;if(memoryOffset==null)dataId=this.write(null,shape,dtype);else{dataId={};let id=this.dataIdNextNumber++;this.dataIdMap.set(dataId,{id,memoryOffset,shape,dtype});let size=util_exports.sizeFromShape(shape);this.wasm.tfjs.registerTensor(id,size,memoryOffset)}return{dataId,shape,dtype}}typedArrayFromHeap({shape,dtype,dataId}){let buffer2=this.wasm.HEAPU8.buffer,{memoryOffset}=this.dataIdMap.get(dataId),size=util_exports.sizeFromShape(shape);switch(dtype){case"float32":return new Float32Array(buffer2,memoryOffset,size);case"int32":return new Int32Array(buffer2,memoryOffset,size);case"bool":return new Uint8Array(buffer2,memoryOffset,size);default:throw new Error(`Unknown dtype ${dtype}`)}}};function createInstantiateWasmFunc(path){return(imports,callback)=>(util_exports.fetch(path,{credentials:"same-origin"}).then(response=>{response.ok||imports.env.a(`failed to load wasm binary file at '${path}'`),response.arrayBuffer().then(binary=>{WebAssembly.instantiate(binary,imports).then(output=>{callback(output.instance)})})}),{})}function getPathToWasmBinary(simdSupported,threadsSupported,wasmModuleFolder){if(wasmPath!=null)return wasmPath;let path="tfjs-backend-wasm.wasm";return simdSupported&&threadsSupported?path="tfjs-backend-wasm-threaded-simd.wasm":simdSupported&&(path="tfjs-backend-wasm-simd.wasm"),wasmFileMap!=null&&wasmFileMap[path]!=null?wasmFileMap[path]:wasmModuleFolder+path}async function init(){let[simdSupported,threadsSupported]=await Promise.all([env().getAsync("WASM_HAS_SIMD_SUPPORT"),env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT")]);return new Promise((resolve,reject)=>{let factoryConfig={};factoryConfig.locateFile=(path,prefix)=>{if(path.endsWith(".worker.js")){let response=wasmWorkerContents,blob=new Blob([response],{type:"application/javascript"});return URL.createObjectURL(blob)}return path.endsWith(".wasm")?getPathToWasmBinary(simdSupported,threadsSupported,wasmPathPrefix!=null?wasmPathPrefix:prefix):prefix+path},customFetch&&(factoryConfig.instantiateWasm=createInstantiateWasmFunc(getPathToWasmBinary(simdSupported,threadsSupported,wasmPathPrefix!=null?wasmPathPrefix:"")));let wasm;threadsSupported&&simdSupported&&wasmPath==null?(wasm=import_tfjs_backend_wasm_threaded_simd.default(factoryConfig),wasm.mainScriptUrlOrBlob=new Blob(["var WasmBackendModuleThreadedSimd = "+import_tfjs_backend_wasm_threaded_simd.default.toString()],{type:"text/javascript"})):wasm=import_tfjs_backend_wasm.default(factoryConfig);let voidReturnType=null;wasm.tfjs={init:wasm.cwrap("init",null,[]),registerTensor:wasm.cwrap("register_tensor",null,["number","number","number"]),disposeData:wasm.cwrap("dispose_data",voidReturnType,["number"]),dispose:wasm.cwrap("dispose",voidReturnType,[])};let initialized=!1;wasm.onRuntimeInitialized=()=>{initialized=!0,initAborted=!1,resolve({wasm})},wasm.onAbort=()=>{if(initialized||initAborted)return;initAborted=!0,reject({message:"Make sure the server can serve the `.wasm` file relative to the bundled js file. For more details see https://github.com/tensorflow/tfjs/blob/master/tfjs-backend-wasm/README.md#using-bundlers"})}})}function typedArrayFromBuffer(buffer2,dtype){switch(dtype){case"float32":return new Float32Array(buffer2);case"int32":return new Int32Array(buffer2);case"bool":return new Uint8Array(buffer2);default:throw new Error(`Unknown dtype ${dtype}`)}}var wasmBinaryNames=["tfjs-backend-wasm.wasm","tfjs-backend-wasm-simd.wasm","tfjs-backend-wasm-threaded-simd.wasm"],wasmPath=null,wasmPathPrefix=null,wasmFileMap={},initAborted=!1,customFetch=!1;function setWasmPath(path,usePlatformFetch=!1){if(deprecationWarn("setWasmPath has been deprecated in favor of setWasmPaths and will be removed in a future release."),initAborted)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPath()` before you call `tf.setBackend()` or `tf.ready()`");wasmPath=path,customFetch=usePlatformFetch}function setWasmPaths(prefixOrFileMap,usePlatformFetch=!1){if(initAborted)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPaths()` before you call `tf.setBackend()` or `tf.ready()`");if(typeof prefixOrFileMap=="string")wasmPathPrefix=prefixOrFileMap;else{wasmFileMap=prefixOrFileMap;let missingPaths=wasmBinaryNames.filter(name=>wasmFileMap[name]==null);if(missingPaths.length>0)throw new Error(`There were no entries found for the following binaries: ${missingPaths.join(",")}. Please either call setWasmPaths with a map providing a path for each binary, or with a string indicating the directory where all the binaries can be found.`)}customFetch=usePlatformFetch}var version9="2.8.3";var WASM_PRIORITY=2;registerBackend("wasm",async()=>{let{wasm}=await init();return new BackendWasm(wasm)},WASM_PRIORITY);export{Abs,Acos,Acosh,AdadeltaOptimizer,AdagradOptimizer,AdamOptimizer,AdamaxOptimizer,Add,AddN,All,Any,ArgMax,ArgMin,Asin,Asinh,Atan,Atan2,Atanh,AvgPool,AvgPool3D,AvgPool3DGrad,AvgPoolGrad,BackendWasm,BatchMatMul,BatchToSpaceND,Bincount,BroadcastTo,Callback,CallbackList,Cast,Ceil,ClipByValue,Complex,ComplexAbs,Concat,Conv2D,Conv2DBackpropFilter,Conv2DBackpropInput,Conv3D,Conv3DBackpropFilterV2,Conv3DBackpropInputV2,Cos,Cosh,CropAndResize,Cumsum,CustomCallback,DataStorage,DenseBincount,DepthToSpace,DepthwiseConv2dNative,DepthwiseConv2dNativeBackpropFilter,DepthwiseConv2dNativeBackpropInput,Diag,Dilation2D,Dilation2DBackpropFilter,Dilation2DBackpropInput,ENV,EarlyStopping,Elu,EluGrad,Environment,Equal,Erf,Exp,ExpandDims,Expm1,FFT,Fill,FlipLeftRight,Floor,FloorDiv,FromPixels,FusedBatchNorm,FusedConv2D,FusedDepthwiseConv2D,GatherNd,GatherV2,GraphModel,Greater,GreaterEqual,History,IFFT,Identity,Imag,InputSpec,IsFinite,IsInf,IsNan,KernelBackend,LRN,LRNGrad,LayerVariable,LayersModel,LeakyRelu,Less,LessEqual,LinSpace,Log,Log1p,LogSoftmax,LogicalAnd,LogicalNot,LogicalOr,Max,MaxPool,MaxPool3D,MaxPool3DGrad,MaxPoolGrad,MaxPoolWithArgmax,Maximum,Mean,Min,Minimum,MirrorPad,Mod,MomentumOptimizer,Multinomial,Multiply,Neg,NonMaxSuppressionV3,NonMaxSuppressionV4,NonMaxSuppressionV5,NotEqual,OP_SCOPE_SUFFIX,OneHot,OnesLike,Optimizer,Pack,PadV2,Pool,Pow,Prelu,Prod,RMSPropOptimizer,RNN,Range,Rank,Real,RealDiv,Reciprocal,Reduction,Relu,Relu6,Reshape,ResizeBilinear,ResizeBilinearGrad,ResizeNearestNeighbor,ResizeNearestNeighborGrad,Reverse,RotateWithOffset,Round,Rsqrt,SGDOptimizer,ScatterNd,Select,Selu,Sequential,Sigmoid,Sign,Sin,Sinh,Slice,Softmax,Softplus,SpaceToBatchND,SparseToDense,SplitV,Sqrt,Square,SquaredDifference,Step,StridedSlice,Sub,Sum,SymbolicTensor,Tan,Tanh,Tensor,TensorBuffer,Tile,TopK,Transpose,Unique,Unpack,UnsortedSegmentSum,Variable,ZerosLike,_FusedMatMul,abs,acos,acosh,add2 as add,addN,addStrict,all,any,argMax,argMin,asin,asinh,atan,atan2,atanh,avgPool,avgPool3d,backend,backend_util_exports as backend_util,basicLSTMCell,batchNorm,batchNorm2d,batchNorm3d,batchNorm4d,batchToSpaceND,bincount,booleanMaskAsync,broadcastTo,browser_exports as browser,buffer,callbacks,cast,ceil,clipByValue,clone,complex,concat,concat1d,concat2d,concat3d,concat4d,exports_constraints_exports as constraints,conv1d,conv2d,conv2dTranspose,conv3d,conv3dTranspose,copyRegisteredKernels,cos,cosh,cosineWindow,cumsum,customGrad,dist_exports as data,denseBincount,deprecationWarn,depthToSpace,depthwiseConv2d,deregisterOp,device_util_exports as device_util,diag,dilation2d,disableDeprecationWarnings,dispose,disposeVariables,div,divNoNan,divStrict,dot,dropout,elu,enableDebugMode,enableProdMode,enclosingPowerOfTwo,engine,env,equal,equalStrict,erf,exp,expandDims,expm1,eye,fft,fill,findBackend,findBackendFactory,floor,floorDiv,fused_ops_exports as fused,gather,gatherND,gather_nd_util_exports as gather_util,getBackend,getGradient,getKernel,getKernelsForBackend,grad,grads,greater,greaterEqual,greaterEqualStrict,greaterStrict,ifft,imag,image,inTopKAsync,exports_initializers_exports as initializers,input,io_exports as io,irfft,isFinite2 as isFinite,isInf,isNaN2 as isNaN,keep,kernel_impls_exports as kernel_impls,exports_layers_exports as layers,leakyRelu,less,lessEqual,lessEqualStrict,lessStrict,linalg,linspace,loadGraphModel,loadLayersModel,localResponseNormalization,log,log1p,logSigmoid,logSoftmax,logSumExp,logicalAnd,logicalNot,logicalOr,logicalXor,losses,matMul,math_exports as math,max,maxPool,maxPool3d,maxPoolWithArgmax,maximum,maximumStrict,mean,memory,exports_metrics_exports as metrics,min,minimum,minimumStrict,mirrorPad,mod,modStrict,model,exports_models_exports as models,moments,movingAverage,mul,mulStrict,multiRNNCell,multinomial,neg,nextFrame,norm,notEqual,notEqualStrict,oneHot,ones2 as ones,onesLike,op,outerProduct,pad,pad1d,pad2d,pad3d,pad4d,pool,pow,powStrict,prelu,print2 as print,prod,profile,rand,randomGamma,randomNormal,randomUniform,range,ready,real,reciprocal,registerBackend,registerCallbackConstructor,registerGradient,registerKernel,registerOp,exports_regularizers_exports as regularizers,relu,relu6,removeBackend,reshape,reverse,reverse1d,reverse2d,reverse3d,reverse4d,rfft,round2 as round,rsqrt,scalar,scatterND,scatter_nd_util_exports as scatter_util,selu,separableConv2d,sequential,serialization_exports as serialization,setBackend,setPlatform,setWasmPath,setWasmPaths,setdiff1dAsync,sigmoid,sign,signal,sin,sinh,slice,slice1d,slice2d,slice3d,slice4d,slice_util_exports as slice_util,softmax,softplus,spaceToBatchND,sparseToDense,spectral,split,sqrt,square,squaredDifference,squaredDifferenceStrict,squeeze,stack,step,stridedSlice,sub,subStrict,sum2 as sum,sumOutType,tan,tanh2 as tanh,tensor,tensor1d,tensor2d,tensor3d,tensor4d,tensor5d,tensor6d,tensor_util_exports as tensor_util,test_util_exports as test_util,tidy,tile,time,topk,train,transpose,truncatedNormal,unique,unregisterGradient,unregisterKernel,unsortedSegmentSum,unstack,upcastType,util_exports as util,valueAndGrad,valueAndGrads,variable,variableGrads,version8 as version,version3 as version_converter,version as version_core,version2 as version_layers,version9 as version_wasm,where,whereAsync,zeros,zerosLike}; + `}};function VJ(r){let{inputs:e,backend:t,attrs:o}=r,{x:n,segmentIds:s}=e,{numSegments:a}=o,i=n.shape.length,l=[],u=0,c=S.getAxesPermutation([u],i),p=n;c!=null&&(p=Bt({inputs:{x:n},backend:t,attrs:{perm:c}}),l.push(p),u=S.getInnerMostAxes(1,i)[0]);let m=S.segment_util.computeOutShape(p.shape,u,a),f=x.sizeFromShape([p.shape[u]]),d=me({inputs:{x:p},backend:t,attrs:{shape:[-1,f]}});l.push(d);let h=yu(n.dtype),g=(w,k,$,T,F)=>{let M=w.shape[0],L=w.shape[1],G=S.segment_util.segOpComputeOptimalWindowSize(L,F),H={windowSize:G,inSize:L,batchSize:M,numSegments:F},U=new cI(H,k),Z=t.compileAndRun(U,[w,$],T);if(l.push(Z),Z.shape[1]===F)return Z;let K=ZC({backend:t,attrs:{start:0,stop:F,step:1,dtype:"float32"}}),X=uI({inputs:{x:K},backend:t,attrs:{reps:[L/G]}});return l.push(K),l.push(X),g(Z,k,X,T,F)},y=g(d,"unsortedSegmentSum",s,h,a),b=me({inputs:{x:y},backend:t,attrs:{shape:m}}),_=b;if(c!=null){l.push(b);let w=S.getUndoAxesPermutation(c);_=Bt({inputs:{x:_},backend:t,attrs:{perm:w}})}return l.forEach(w=>t.disposeIntermediateTensorInfo(w)),_}var iM={kernelName:xa,backendName:"webgl",kernelFunc:VJ};var WJ=[UO,jO,sF,aF,lF,uF,pF,mF,fF,dF,xF,yF,bF,_F,vF,wF,kF,IF,CF,NF,SF,TF,EF,DF,$F,PF,LF,zF,VF,HR,UF,qF,HF,jF,XF,YF,KF,ZF,JF,QF,rO,oO,nO,iO,aO,sO,lO,uO,cO,pO,mO,fO,hO,gO,yO,bO,_O,wO,kO,CO,IO,NO,SO,TO,EO,AO,DO,qR,$O,WF,RO,FO,OO,KR,PO,MO,LO,BO,zO,VO,WO,GO,HO,YO,XO,ZO,JO,eP,KO,rP,oP,nP,sP,iP,pP,QR,fP,dP,hP,gP,RF,xP,_P,wP,vP,kP,XR,CP,IP,FF,aP,NP,TP,SP,tF,EP,AP,DP,$P,RP,FP,OP,PP,MP,LP,zP,BP,VP,WP,GP,AF,cP,UP,jP,qP,HP,KP,XP,ZP,JP,QP,uP,oF,eM,tM,rM,oM,nF,nM,sM,iM,yP];for(let r of WJ)tl(r);var aM="2.8.3";var GJ={"tfjs-core":Zb,"tfjs-backend-cpu":GA,"tfjs-backend-webgl":jR,"tfjs-data":_x,"tfjs-layers":xl,"tfjs-converter":fx,tfjs:aM};var Vt;(function(r){r[r.float32=0]="float32",r[r.int32=1]="int32",r[r.bool=2]="bool",r[r.string=3]="string",r[r.complex64=4]="complex64"})(Vt||(Vt={}));var Rl;(function(r){r[r.linear=0]="linear",r[r.relu=1]="relu",r[r.relu6=2]="relu6",r[r.prelu=3]="prelu",r[r.leakyrelu=4]="leakyrelu"})(Rl||(Rl={}));var lM;function UJ(r){lM=r.wasm.cwrap(_s,null,["number","array","number","number","array","number","number","number","number","number","number","number","number"])}function jJ(r){let{inputs:e,backend:t,attrs:o}=r,{a:n,b:s,bias:a,preluActivationWeights:i}=e;if(n.dtype!=="float32"||s.dtype!=="float32")throw new Error("_FusedMatMul for non non-float32 tensors not yet supported.");let{transposeA:l,transposeB:u,activation:c,leakyreluAlpha:p}=o,m=t.dataIdMap.get(n.dataId).id,f=t.dataIdMap.get(s.dataId).id,d=0;if(a!=null){let F=t.dataIdMap.get(a.dataId);if(F.shape.length!==1)throw new Error(`_FusedMatMul only supports rank-1 bias but got rank ${F.shape.length}.`);d=F.id}let h=i==null?0:t.dataIdMap.get(i.dataId).id,g=Rl[c];if(g==null)throw new Error(`${c} activation not yet supported for FusedConv2D in the wasm backend.`);let y=l?n.shape[2]:n.shape[1],b=u?s.shape[1]:s.shape[2],_=n.shape[0],w=t.makeOutput([_,y,b],n.dtype),k=t.dataIdMap.get(w.dataId).id,$=new Uint8Array(new Int32Array(n.shape).buffer),T=new Uint8Array(new Int32Array(s.shape).buffer);return lM(m,$,n.shape.length,f,T,s.shape.length,l,u,g,d,h,p||0,k),w}var uM={kernelName:_s,backendName:"wasm",setupFunc:UJ,kernelFunc:jJ};function Ft(r){let e;function t(n){e=n.wasm.cwrap(r,null,["number","number"])}function o(n){let{backend:s,inputs:{x:a}}=n,i=s.dataIdMap.get(a.dataId).id,l=s.makeOutput(a.shape,a.dtype),u=s.dataIdMap.get(l.dataId).id;return x.sizeFromShape(l.shape)===0||e(i,u),l}return{kernelName:r,backendName:"wasm",setupFunc:t,kernelFunc:o}}var cM=Ft(is);function kt(r,e,t){let o;function n(a){o=a.wasm.cwrap(r,null,["number","array","number","number","array","number","number","number"])}function s(a){let{backend:i,inputs:l}=a,{a:u,b:c}=l,p=i.dataIdMap.get(u.dataId).id,m=i.dataIdMap.get(c.dataId).id,f=t!=null?t:u.dtype,d=S.assertAndGetBroadcastShape(u.shape,c.shape),h=i.makeOutput(d,f);if(x.sizeFromShape(d)===0)return h;let g=new Uint8Array(new Int32Array(u.shape).buffer),y=new Uint8Array(new Int32Array(c.shape).buffer),b=i.dataIdMap.get(h.dataId).id,_=()=>o(p,g,u.shape.length,m,y,c.shape.length,Vt[u.dtype],b);if(e&&u.dtype==="float32")return _(),h;let w=S.getBroadcastDims(u.shape,d),k=S.getBroadcastDims(c.shape,d),$=w.every((F,M)=>F===M),T=k.every((F,M)=>F===M);if($&&T)return _(),h;throw new Error(`Broadcasting along outer dims is not yet supported for ${u.dtype} ${r}.`)}return{kernelName:r,backendName:"wasm",setupFunc:n,kernelFunc:s}}var qJ=!0,pM=kt(bo,qJ);var mM;function HJ(r){mM=r.wasm.cwrap(Ho,null,["array","number","number","number"])}function KJ(r){let{inputs:e,backend:t}=r,o=t.makeOutput(e[0].shape,e[0].dtype);if(x.sizeFromShape(o.shape)===0)return o;let n=e.map(i=>t.dataIdMap.get(i.dataId).id),s=new Uint8Array(new Int32Array(n).buffer),a=t.dataIdMap.get(o.dataId).id;return mM(s,n.length,Vt[o.dtype],a),o}var fM={kernelName:Ho,backendName:"wasm",setupFunc:HJ,kernelFunc:KJ};function hc(r){let{inputs:{x:e},backend:t}=r,o=t.makeOutput(e.shape,e.dtype),n=t.typedArrayFromHeap(e);return t.typedArrayFromHeap(o).set(n),o}var dM={kernelName:cs,backendName:"wasm",kernelFunc:hc};var hM;function XJ(r){hM=r.wasm.cwrap(Pn,null,["number","array","number","number","number","array","number"])}function Hp(r){let{inputs:e,backend:t,attrs:o}=r,[n,s]=ZJ(e.x.shape,o.perm),a=!0;for(let d=0;d=n&&(s===-1||o[s]>o[a])&&(s=a);o[s]=n}return[t,o]}var gM={kernelName:Pn,backendName:"wasm",kernelFunc:Hp,setupFunc:XJ};function rs(r,e,t){let o=r.shape,n=r.shape.length,s=x.parseAxisParam(e,o),a=s,i=S.getAxesPermutation(a,n),l=null,u=!1;if(i!=null){let c=new Array(n);for(let f=0;f`new shape: ${a}, old shape: ${o.shape}. New shape and old shape must have the same number of elements.`),{dataId:o.dataId,shape:a,dtype:o.dtype}}var wM={kernelName:ds,backendName:"wasm",kernelFunc:Wr};var vM;function rQ(r){vM=r.wasm.cwrap(Yo,null,["number","array","number","number","array","number","number","number","number"])}function oQ(r){let{inputs:e,backend:t,attrs:o}=r,{a:n,b:s}=e,{transposeA:a,transposeB:i}=o;if(n.dtype!=="float32"||s.dtype!=="float32")throw new Error("BatchMatMul for non non-float32 tensors not yet supported.");let l=n.shape.length,u=s.shape.length,c=a?n.shape[l-2]:n.shape[l-1],p=i?s.shape[u-1]:s.shape[u-2],m=a?n.shape[l-1]:n.shape[l-2],f=i?s.shape[u-2]:s.shape[u-1],d=n.shape.slice(0,-2),h=s.shape.slice(0,-2),g=x.sizeFromShape(d),y=x.sizeFromShape(h),b=g===y||g===1||y===1;x.assert(l>=2&&u>=2&&b,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${d}) and (${h}).`);let w=(g>y?n.shape.slice(0,-2):s.shape.slice(0,-2)).concat([m,f]);x.assert(c===p,()=>`Error in matMul: inner shapes (${c}) and (${p}) of Tensors with shapes ${n.shape} and ${s.shape} and transposeA=${a} and transposeB=${i} must match.`);let k=a?[g,c,m]:[g,m,c],$=i?[y,f,p]:[y,p,f],T=Wr({inputs:{x:n},backend:t,attrs:{shape:k}}),F=Wr({inputs:{x:s},backend:t,attrs:{shape:$}}),M=t.dataIdMap.get(T.dataId).id,L=t.dataIdMap.get(F.dataId).id,G=a?T.shape[2]:T.shape[1],H=i?F.shape[1]:F.shape[2],U=Math.max(g,y),Z=t.makeOutput([U,G,H],T.dtype),K=t.dataIdMap.get(Z.dataId).id,X=new Uint8Array(new Int32Array(T.shape).buffer),oe=new Uint8Array(new Int32Array(F.shape).buffer);return vM(M,X,T.shape.length,L,oe,F.shape.length,a,i,K),Z.shape=w,Z}var kM={kernelName:Yo,backendName:"wasm",setupFunc:rQ,kernelFunc:oQ};function gc(r){let{inputs:{x:e},attrs:{dtype:t},backend:o}=r,n=o.makeOutput(e.shape,t),s=o.typedArrayFromHeap(e);return o.typedArrayFromHeap(n).set(s),n}var CM={kernelName:Fo,backendName:"wasm",kernelFunc:gc};var IM;function nQ(r){IM=r.wasm.cwrap(Oo,null,["number","number","number","number"])}function sQ(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{clipValueMin:s,clipValueMax:a}=o,i=t.dataIdMap.get(n.dataId).id,l=t.makeOutput(n.shape,n.dtype),u=t.dataIdMap.get(l.dataId).id;return IM(i,s,a,u),l}var NM={kernelName:Oo,backendName:"wasm",setupFunc:nQ,kernelFunc:sQ};function pI(r){let{inputs:e,backend:t}=r,o=x.parseAxisParam(r.attrs.axis,e[0].shape)[0],n=S.computeOutShape(e.map(f=>f.shape),o),s=e.filter(f=>x.sizeFromShape(f.shape)>0);if(s.length===1)return hc({inputs:{x:s[0]},backend:t});let a=t.makeOutput(n,e[0].dtype);if(x.sizeFromShape(n)===0)return a;let i=s.map(f=>f.shape);if(S.assertParamsConsistent(i,o),s[0].dtype==="string"){let f=s.map(_=>{let w=x.sizeFromShape(_.shape.slice(o));return Wr({inputs:{x:_},backend:t,attrs:{shape:[-1,w]}})}),d=f.map(_=>({vals:t.readSync(_.dataId),shape:_.shape}));n=S.computeOutShape(f.map(_=>_.shape),1);let h=f[0].shape[0]===1,g=Vd(d,n,e[0].dtype,h),y=S.computeOutShape(s.map(_=>_.shape),o);a.shape=y;let b=t.dataIdMap.get(a.dataId);return b.stringBytes=S.fromStringArrayToUint8(g),a}let l=x.sizeFromShape(s[0].shape.slice(0,o)),u=0,c=s.map(f=>{let d=x.sizeFromShape(f.shape.slice(o));return u+=d,d}),p=s.map(f=>t.typedArrayFromHeap(f)),m=t.typedArrayFromHeap(a);for(let f=0;f`cumsum does not support ${n.dtype} tensors in the WASM backend`);let u=S.getAxesPermutation([s],l),c=n;u!==null&&(c=Hp({inputs:{x:n},attrs:{perm:u},backend:t}));let p=S.getInnerMostAxes(1,l)[0];S.assertAxesAreInnerMostDims("cumsum",[p],l);let m=t.makeOutput(c.shape,c.dtype),f=c.shape[p],d=t.dataIdMap.get(c.dataId).id,h=t.dataIdMap.get(m.dataId).id;OM(d,a?1:0,i?1:0,f,h,Vt[n.dtype]);let g=m;if(u!==null){let y=S.getUndoAxesPermutation(u);g=Hp({inputs:{x:m},attrs:{perm:y},backend:t}),t.disposeData(c.dataId),t.disposeData(m.dataId)}return g}var PM={kernelName:en,backendName:"wasm",setupFunc:mQ,kernelFunc:fQ};var MM;function dQ(r){MM=r.wasm.cwrap(ti,null,["number","number","number","array","number","array","array","number","number"])}function hQ(r){let{backend:e,inputs:t,attrs:o}=r,{x:n}=t,{blockSize:s,dataFormat:a}=o;x.assert(s>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${s}`);let i=n.shape[0],l=a==="NHWC"?n.shape[1]:n.shape[2],u=a==="NHWC"?n.shape[2]:n.shape[3],c=a==="NHWC"?n.shape[3]:n.shape[1],p=l*s,m=u*s,f=c/(s*s),d=a==="NHWC"?[i,p,m,f]:[i,f,p,m],h=e.makeOutput(d,"float32"),y=e.dataIdMap.get(n.dataId).id,b=new Uint8Array(new Int32Array(x.computeStrides(n.shape)).buffer),_=new Uint8Array(new Int32Array(d).buffer),w=new Uint8Array(new Int32Array(x.computeStrides(d)).buffer),k=e.dataIdMap.get(h.dataId).id;return MM(y,s,a==="NHWC"?1:0,b,n.shape.length-1,_,w,d.length,k),h}var LM={kernelName:ti,backendName:"wasm",setupFunc:dQ,kernelFunc:hQ};var zM;function gQ(r){zM=r.wasm.cwrap(tn,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function xQ(r){let{inputs:e,attrs:t,backend:o}=r,{x:n,filter:s}=e,a=o.dataIdMap.get(n.dataId).id,i=o.dataIdMap.get(s.dataId).id,{strides:l,dilations:u,pad:c,dimRoundingMode:p}=t,m=u==null?[1,1]:u,f=S.computeConv2DInfo(n.shape,s.shape,l,m,c,p,!0),d=f.filterHeight,h=f.filterWidth,g=f.padInfo.top,y=f.padInfo.right,b=f.padInfo.bottom,_=f.padInfo.left,w=f.dilationHeight,k=f.dilationWidth,$=f.strideHeight,T=f.strideWidth,F=f.inChannels,M=f.outChannels,L=f.padInfo.type==="SAME"?1:0;if(f.dataFormat!=="channelsLast")throw new Error(`wasm backend DepthwiseConv2dNative does not support dataFormat:'${f.dataFormat}'. Please use 'channelsLast'.`);let G=o.makeOutput(f.outShape,"float32"),H=o.dataIdMap.get(G.dataId).id;return zM(a,n.shape[0],n.shape[1],n.shape[2],i,d,h,g,y,b,_,L,w,k,$,T,F,M,H),G}var BM={kernelName:tn,backendName:"wasm",setupFunc:gQ,kernelFunc:xQ};var yQ=!1,VM=kt(ni,yQ,"bool");var WM=Ft(on);function Kx(r){let{inputs:e,attrs:t,backend:o}=r,{input:n}=e,{dim:s}=t,a=n.shape.length,i=n.shape.slice(),l=s;return s<0&&(x.assert(-(a+1)<=s,()=>`Axis must be in the interval [${-(a+1)}, ${a}]`),l=a+s+1),i.splice(l,0,1),Wr({inputs:{x:n},backend:o,attrs:{shape:i}})}var GM={kernelName:ls,backendName:"wasm",kernelFunc:Kx};function bQ(r){let{attrs:{shape:e,value:t,dtype:o},backend:n}=r,s=n.makeOutput(e,o);return n.typedArrayFromHeap(s).fill(t),s}var UM={kernelName:ua,backendName:"wasm",kernelFunc:bQ};var jM;function _Q(r){jM=r.wasm.cwrap(ii,null,["number","number","number","number","number","number"])}function wQ(r){let{inputs:e,backend:t}=r,{image:o}=e,n=t.makeOutput(o.shape,o.dtype),s=t.dataIdMap.get(o.dataId).id,a=t.dataIdMap.get(n.dataId).id,[i,l,u,c]=o.shape;return jM(s,i,l,u,c,a),n}var qM={kernelName:ii,backendName:"wasm",kernelFunc:wQ,setupFunc:_Q};var HM=Ft(nn);var vQ=!1,KM=kt(sn,vQ);var XM;function kQ(r){XM=r.wasm.cwrap(an,null,["number","number","number","number","number","number","number"])}function CQ(r){let{backend:e,inputs:t,attrs:o}=r,{varianceEpsilon:n}=o,{x:s,mean:a,variance:i,offset:l,scale:u}=t,c=e.dataIdMap.get(s.dataId).id,p=e.dataIdMap.get(a.dataId).id,m=e.dataIdMap.get(i.dataId).id,f=l!=null?e.dataIdMap.get(l.dataId).id:0,d=u!=null?e.dataIdMap.get(u.dataId).id:0,h=e.makeOutput(s.shape,s.dtype);if(x.sizeFromShape(s.shape)===0)return h;let g=e.dataIdMap.get(h.dataId).id;return XM(c,p,m,f,d,n,g),h}var YM={kernelName:an,backendName:"wasm",setupFunc:kQ,kernelFunc:CQ};var ZM;function IQ(r){ZM=r.wasm.cwrap(ws,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function NQ(r){let{inputs:e,attrs:t,backend:o}=r,{x:n,filter:s,bias:a,preluActivationWeights:i}=e,{strides:l,pad:u,dilations:c,dataFormat:p,dimRoundingMode:m,activation:f,leakyreluAlpha:d}=t,h=S.computeConv2DInfo(n.shape,s.shape,l,c,u,m),g=Rl[f];if(g==null)throw new Error(`${f} activation not yet supported for FusedConv2D in the wasm backend.`);let y=o.dataIdMap.get(n.dataId).id,b=o.dataIdMap.get(s.dataId).id,_=h.outChannels,w=0;if(a!=null){let le=o.dataIdMap.get(a.dataId);if(le.shape.length!==1)throw new Error(`FusedConv2D only supports rank-1 bias but got rank ${le.shape.length}.`);if(le.shape[0]!==_)throw new Error(`FusedConv2D bias shape (${le.shape}) does not match the number of output channels (${_})`);w=le.id}let k=h.filterHeight,$=h.filterWidth,T=h.padInfo.top,F=h.padInfo.right,M=h.padInfo.bottom,L=h.padInfo.left,G=h.dilationHeight,H=h.dilationWidth,U=h.strideHeight,Z=h.strideWidth,K=h.inChannels,X=h.padInfo.type==="SAME"?1:0,oe=h.batchSize,J=h.inHeight,Q=h.inWidth;if(p!=="NHWC")throw new Error(`wasm backend FusedConv2D does not support dataFormat:'${p}'. Please use 'NHWC'.`);let ie=o.makeOutput(h.outShape,"float32"),ae=o.dataIdMap.get(ie.dataId).id,ue=i==null?0:o.dataIdMap.get(i.dataId).id;return ZM(y,oe,J,Q,b,k,$,w,T,F,M,L,X,G,H,U,Z,K,_,g,ue,d||0,ae),ie}var JM={kernelName:ws,backendName:"wasm",setupFunc:IQ,kernelFunc:NQ};var QM;function SQ(r){QM=r.wasm.cwrap(vs,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function TQ(r){let{inputs:e,attrs:t,backend:o}=r,{x:n,filter:s,bias:a,preluActivationWeights:i}=e,{strides:l,pad:u,dilations:c,dataFormat:p,dimRoundingMode:m,activation:f,leakyreluAlpha:d}=t,h=S.computeConv2DInfo(n.shape,s.shape,l,c,u,m,!0),g=Rl[f];if(g==null)throw new Error(`${f} activation not yet supported for FusedDepthwiseConv2D in the wasm backend.`);let y=o.dataIdMap.get(n.dataId).id,b=o.dataIdMap.get(s.dataId).id,_=h.outChannels,w=0;if(a!=null){let le=o.dataIdMap.get(a.dataId);if(le.shape.length!==1)throw new Error(`FusedDepthwiseConv2D only supports rank-1 bias but got rank ${le.shape.length}.`);if(le.shape[0]!==_)throw new Error(`FusedDepthwiseConv2D bias shape (${le.shape}) does not match the number of output channels (${_})`);w=le.id}let k=h.filterHeight,$=h.filterWidth,T=h.padInfo.top,F=h.padInfo.right,M=h.padInfo.bottom,L=h.padInfo.left,G=h.dilationHeight,H=h.dilationWidth,U=h.strideHeight,Z=h.strideWidth,K=h.inChannels,X=h.padInfo.type==="SAME"?1:0,oe=h.batchSize,J=h.inHeight,Q=h.inWidth;if(p!=="NHWC")throw new Error(`wasm backend FusedDepthwiseConv2D does not support dataFormat:'${p}'. Please use 'NHWC'.`);let ie=o.makeOutput(h.outShape,"float32"),ae=o.dataIdMap.get(ie.dataId).id,ue=i==null?0:o.dataIdMap.get(i.dataId).id;return QM(y,oe,J,Q,b,k,$,w,T,F,M,L,X,G,H,U,Z,K,_,g,ue,d||0,ae),ie}var eL={kernelName:vs,backendName:"wasm",setupFunc:SQ,kernelFunc:TQ};var tL;function EQ(r){tL=r.wasm.cwrap(ai,null,["number","number","number","number","number","number","array","number"])}function AQ(r){let{backend:e,inputs:t}=r,{params:o,indices:n}=t,[s,a,i,l]=Zh.prepareAndValidate(o,n),u=e.makeOutput(s,o.dtype);if(a===0)return u;let c=n.shape,p=c[c.length-1],f=e.dataIdMap.get(o.dataId).id,h=e.dataIdMap.get(n.dataId).id,g=new Uint8Array(new Int32Array(l).buffer),y=e.dataIdMap.get(u.dataId).id;return tL(f,Vt[o.dtype],h,a,p,i,g,y),u}var rL={kernelName:ai,backendName:"wasm",setupFunc:EQ,kernelFunc:AQ};var oL;function DQ(r){oL=r.wasm.cwrap("Gather",null,["number","number","array","number","number","number","array","number"])}function $Q(r){let{backend:e,inputs:t,attrs:o}=r,{x:n,indices:s}=t,{axis:a,batchDims:i}=o,l=x.parseAxisParam(a,n.shape)[0],u=S.segment_util.collectGatherOpShapeInfo(n,s,l,i),c=Wr({inputs:{x:n},attrs:{shape:[u.batchSize,u.outerSize,u.dimSize,u.sliceSize]},backend:e}),p=x.sizeFromShape(s.shape),m=Wr({inputs:{x:s},attrs:{shape:[u.batchSize,p/u.batchSize]},backend:e}),f=[u.batchSize,u.outerSize,p/u.batchSize,u.sliceSize],d=e.makeOutput(f,n.dtype);if(x.sizeFromShape(n.shape)===0)return d;let h=c.shape.length-1,y=e.dataIdMap.get(c.dataId).id,_=e.dataIdMap.get(m.dataId).id,w=e.dataIdMap.get(d.dataId).id,k=new Uint8Array(new Int32Array(x.computeStrides(c.shape)).buffer),$=new Uint8Array(new Int32Array(x.computeStrides(f)).buffer);return oL(y,Vt[n.dtype],k,h,_,u.batchSize,$,w),d.shape=u.outputShape,d}var nL={kernelName:us,backendName:"wasm",setupFunc:DQ,kernelFunc:$Q};var RQ=!1,sL=kt(li,RQ,"bool");var FQ=!1,iL=kt(ln,FQ,"bool");var aL;function OQ(r){aL=r.wasm.cwrap(un,null,["number","number","number"])}function PQ(r){let{inputs:{x:e},attrs:{alpha:t},backend:o}=r,n=o.dataIdMap.get(e.dataId).id,s=o.makeOutput(e.shape,e.dtype);if(x.sizeFromShape(e.shape)!==0){let a=o.dataIdMap.get(s.dataId).id;aL(n,t,a)}return s}var lL={kernelName:un,backendName:"wasm",setupFunc:OQ,kernelFunc:PQ};var MQ=!1,uL=kt(mi,MQ,"bool");var LQ=!1,cL=kt(fi,LQ,"bool");var pL=Ft(cn);var zQ=!1,mL=kt(hi,zQ,"bool");var fL;function BQ(r){fL=r.wasm.cwrap(pn,null,["number, number, number"])}function VQ(r){let{backend:e,inputs:t,attrs:o}=r,{reductionIndices:n,keepDims:s}=o,{x:a}=t,l=e.dataIdMap.get(a.dataId).id,u=a,{transposed:c,axes:p,originalAxes:m,inputWasTransposed:f}=rs(a,n,e);if(f){let _=e.dataIdMap.get(c.dataId).id;u=c,l=_}let d=u.shape.length;S.assertAxesAreInnerMostDims("max",p,d);let[h,g]=S.computeOutAndReduceShapes(u.shape,p),y=x.sizeFromShape(g),b=e.makeOutput(h,a.dtype);if(x.sizeFromShape(u.shape)!==0){let _=e.dataIdMap.get(b.dataId).id;fL(l,y,_)}if(f&&e.disposeData(c.dataId),s){let _=S.expandShapeToKeepDim(b.shape,m);b.shape=_}return b}var dL={kernelName:pn,backendName:"wasm",setupFunc:BQ,kernelFunc:VQ};var WQ=!1,hL=kt(mn,WQ);var gL;function GQ(r){gL=r.wasm.cwrap(fn,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function UQ(r){let{inputs:e,attrs:t,backend:o}=r,n=e.x,s=o.dataIdMap.get(n.dataId).id,{filterSize:a,strides:i,pad:l,dimRoundingMode:u}=t,c=S.computePool2DInfo(n.shape,a,i,1,l,u),p=c.filterHeight,m=c.filterWidth,f=c.padInfo.top,d=c.padInfo.right,h=c.padInfo.bottom,g=c.padInfo.left,y=c.dilationHeight,b=c.dilationWidth,_=c.strideHeight,w=c.strideWidth,k=c.inChannels,$=c.outChannels;if(c.dataFormat!=="channelsLast")throw new Error(`wasm backend does not support dataFormat:'${c.dataFormat}'. Please use 'channelsLast'.`);let T=o.makeOutput(c.outShape,"float32"),F=o.dataIdMap.get(T.dataId).id;return gL(s,n.shape[0],n.shape[1],n.shape[2],p,m,f,d,h,g,y,b,_,w,k,$,F),T}var xL={kernelName:fn,backendName:"wasm",setupFunc:GQ,kernelFunc:UQ};var yL;function jQ(r){yL=r.wasm.cwrap(dn,null,["number, number, number"])}function qQ(r){let{backend:e,inputs:t,attrs:o}=r,{axis:n,keepDims:s}=o,{x:a}=t,i=e.dataIdMap.get(a.dataId).id,l=i,u=a,{transposed:c,axes:p,originalAxes:m,inputWasTransposed:f}=rs(a,n,e),d=p;if(f){let w=e.dataIdMap.get(c.dataId).id;w!==i&&(u=c,l=w,d=S.getInnerMostAxes(d.length,u.shape.length))}S.assertAxesAreInnerMostDims("mean",d,u.shape.length);let[h,g]=S.computeOutAndReduceShapes(u.shape,d),y=x.sizeFromShape(g),b=u;u.dtype!=="float32"&&(b=gc({backend:e,inputs:{x:u},attrs:{dtype:"float32"}}),l=e.dataIdMap.get(b.dataId).id);let _=e.makeOutput(h,"float32");if(x.sizeFromShape(u.shape)!==0){let w=e.dataIdMap.get(_.dataId).id;yL(l,y,w)}if(f&&e.disposeData(c.dataId),s){let w=S.expandShapeToKeepDim(_.shape,m);_.shape=w}return u.dtype!=="float32"&&e.disposeData(b.dataId),_}var bL={kernelName:dn,backendName:"wasm",setupFunc:jQ,kernelFunc:qQ};var _L;function HQ(r){_L=r.wasm.cwrap(hn,null,["number, number, number"])}function KQ(r){let{backend:e,inputs:t,attrs:o}=r,{axis:n,keepDims:s}=o,{x:a}=t,i=e.dataIdMap.get(a.dataId).id,l=i,u=a,{transposed:c,axes:p,originalAxes:m,inputWasTransposed:f}=rs(a,n,e);if(f){let _=e.dataIdMap.get(c.dataId).id;_!==i&&(u=c,l=_)}let d=u.shape.length;S.assertAxesAreInnerMostDims("min",p,d);let[h,g]=S.computeOutAndReduceShapes(u.shape,p),y=x.sizeFromShape(g),b=e.makeOutput(h,u.dtype);if(x.sizeFromShape(u.shape)!==0){let _=e.dataIdMap.get(b.dataId).id;_L(l,y,_)}if(f&&e.disposeData(c.dataId),s){let _=S.expandShapeToKeepDim(b.shape,m);b.shape=_}return b}var wL={kernelName:hn,backendName:"wasm",setupFunc:HQ,kernelFunc:KQ};var XQ=!1,vL=kt(gn,XQ);var YQ=!0,kL=kt(xn,YQ);var CL=Ft(ps);function Kp(r,e){let t=new Int32Array(r.wasm.HEAPU8.buffer,e,4),o=t[0],n=t[1],s=t[2],a=t[3];return r.wasm._free(e),{pSelectedIndices:o,selectedSize:n,pSelectedScores:s,pValidOutputs:a}}var IL;function ZQ(r){IL=r.wasm.cwrap(yi,"number",["number","number","number","number","number"])}function JQ(r){let{backend:e,inputs:t,attrs:o}=r,{iouThreshold:n,maxOutputSize:s,scoreThreshold:a}=o,{boxes:i,scores:l}=t,u=e.dataIdMap.get(i.dataId).id,c=e.dataIdMap.get(l.dataId).id,p=IL(u,c,s,n,a),{pSelectedIndices:m,selectedSize:f,pSelectedScores:d,pValidOutputs:h}=Kp(e,p);return e.wasm._free(d),e.wasm._free(h),e.makeOutput([f],"int32",m)}var NL={kernelName:yi,backendName:"wasm",setupFunc:ZQ,kernelFunc:JQ};var SL;function QQ(r){SL=r.wasm.cwrap(bi,"number",["number","number","number","number","number","bool"])}function eee(r){let{backend:e,inputs:t,attrs:o}=r,{iouThreshold:n,maxOutputSize:s,scoreThreshold:a,padToMaxOutputSize:i}=o,{boxes:l,scores:u}=t,c=e.dataIdMap.get(l.dataId).id,p=e.dataIdMap.get(u.dataId).id,m=SL(c,p,s,n,a,i),{pSelectedIndices:f,selectedSize:d,pSelectedScores:h,pValidOutputs:g}=Kp(e,m);e.wasm._free(h);let y=e.makeOutput([d],"int32",f),b=e.makeOutput([],"int32",g);return[y,b]}var TL={kernelName:bi,backendName:"wasm",setupFunc:QQ,kernelFunc:eee};var EL;function tee(r){EL=r.wasm.cwrap(_i,"number",["number","number","number","number","number","number"])}function ree(r){let{backend:e,inputs:t,attrs:o}=r,{iouThreshold:n,maxOutputSize:s,scoreThreshold:a,softNmsSigma:i}=o,{boxes:l,scores:u}=t,c=e.dataIdMap.get(l.dataId).id,p=e.dataIdMap.get(u.dataId).id,m=EL(c,p,s,n,a,i),{pSelectedIndices:f,selectedSize:d,pSelectedScores:h,pValidOutputs:g}=Kp(e,m);e.wasm._free(g);let y=e.makeOutput([d],"int32",f),b=e.makeOutput([d],"float32",h);return[y,b]}var AL={kernelName:_i,backendName:"wasm",setupFunc:tee,kernelFunc:ree};var oee=!1,DL=kt(xi,oee,"bool");var $L;function nee(r){$L=r.wasm.cwrap(yn,null,["number","number","number","number","number"])}function see(r){let{inputs:e,backend:t,attrs:o}=r,{indices:n}=e,{depth:s,onValue:a,offValue:i}=o,l=t.makeOutput([...n.shape,s],"int32"),u=t.dataIdMap.get(l.dataId).id,p=t.dataIdMap.get(n.dataId).id;return $L(p,s,a,i,u),l}var RL={kernelName:yn,backendName:"wasm",setupFunc:nee,kernelFunc:see};function iee(r){let{inputs:{x:e},backend:t}=r,o=t.makeOutput(e.shape,e.dtype);return t.typedArrayFromHeap(o).fill(1),o}var FL={kernelName:ms,backendName:"wasm",kernelFunc:iee};function aee(r){let{inputs:e,backend:t,attrs:o}=r,{axis:n}=o;if(e.length===1)return Kx({inputs:{input:e[0]},backend:t,attrs:{dim:n}});let s=e[0].shape,a=e[0].dtype;e.forEach(l=>{x.assertShapesMatch(s,l.shape,"All tensors passed to stack must have matching shapes"),x.assert(a===l.dtype,()=>"All tensors passed to stack must have matching dtypes")});let i=e.map(l=>Kx({inputs:{input:l},backend:t,attrs:{dim:n}}));return pI({inputs:i,backend:t,attrs:{axis:n}})}var OL={kernelName:fs,backendName:"wasm",kernelFunc:aee};var PL;function lee(r){PL=r.wasm.cwrap(bn,null,["number","array","number","number","array","array","number","number"])}function uee(r){let{inputs:{x:e},backend:t,attrs:{paddings:o,constantValue:n}}=r,s=o.map((d,h)=>d[0]+e.shape[h]+d[1]),a=t.dataIdMap.get(e.dataId).id,i=t.makeOutput(s,e.dtype),l=t.dataIdMap.get(i.dataId).id,u=new Uint8Array(new Int32Array(e.shape).buffer),c=o.map(d=>d[0]),p=o.map(d=>d[1]),m=new Uint8Array(new Int32Array(c).buffer),f=new Uint8Array(new Int32Array(p).buffer);return PL(a,u,e.shape.length,Vt[e.dtype],m,f,n,l),i}var ML={kernelName:bn,backendName:"wasm",kernelFunc:uee,setupFunc:lee};var cee=!1,LL=kt(_n,cee);var zL;function pee(r){zL=r.wasm.cwrap(wn,null,["number","number","number"])}function mee(r){let{inputs:e,backend:t}=r,{x:o,alpha:n}=e,s=t.dataIdMap.get(o.dataId).id,a=t.dataIdMap.get(n.dataId).id,i=t.makeOutput(o.shape,"float32"),l=t.dataIdMap.get(i.dataId).id;return zL(s,a,l),i}var BL={kernelName:wn,backendName:"wasm",setupFunc:pee,kernelFunc:mee};var VL;function fee(r){VL=r.wasm.cwrap(wi,null,["number","number","number","number"])}function dee(r){let{backend:e,inputs:t,attrs:o}=r,{axis:n,keepDims:s}=o,{x:a}=t,i=e.dataIdMap.get(a.dataId).id,l=i,u=a,{transposed:c,axes:p,originalAxes:m,inputWasTransposed:f}=rs(a,n,e),d=p;if(f){let _=e.dataIdMap.get(c.dataId).id;_!==i&&(u=c,l=_,d=S.getInnerMostAxes(d.length,u.shape.length))}S.assertAxesAreInnerMostDims("prod",d,u.shape.length);let[h,g]=S.computeOutAndReduceShapes(u.shape,d),y=x.sizeFromShape(g),b=e.makeOutput(h,u.dtype);if(x.sizeFromShape(u.shape)!==0){let _=e.dataIdMap.get(b.dataId).id;VL(l,y,Vt[b.dtype],_)}if(f&&e.disposeData(c.dataId),s){let _=S.expandShapeToKeepDim(b.shape,m);b.shape=_}return b}var WL={kernelName:wi,backendName:"wasm",setupFunc:fee,kernelFunc:dee};var hee=r=>{let{backend:e,attrs:t}=r,{start:o,stop:n,step:s,dtype:a}=t,i=Ud(o,n,s,a),l=e.makeOutput([i.length],a);return e.typedArrayFromHeap(l).set(i),l},GL={kernelName:fa,backendName:"wasm",kernelFunc:hee};var gee=!0,UL=kt(rn,gee);var jL=Ft(vn);var qL=Ft(Cn);var HL;function xee(r){HL=r.wasm.cwrap(kn,null,["number","number","number","number","number","number","number","number","number","number"])}function yee(r){let{backend:e,inputs:t,attrs:o}=r,{images:n}=t,{alignCorners:s,halfPixelCenters:a,size:i}=o,[l,u]=i,[c,p,m,f]=n.shape,d=[c,l,u,f],h=e.dataIdMap.get(n.dataId),g;h.dtype!=="float32"&&(g=gc({backend:e,inputs:{x:n},attrs:{dtype:"float32"}}),h=e.dataIdMap.get(g.dataId));let y=h.id,b=e.makeOutput(d,"float32");if(x.sizeFromShape(n.shape)===0)return b;let _=e.dataIdMap.get(b.dataId).id;return HL(y,c,p,m,f,l,u,s?1:0,a?1:0,_),g!=null&&e.disposeData(g.dataId),b}var KL={kernelName:kn,backendName:"wasm",setupFunc:xee,kernelFunc:yee};var XL;function bee(r){XL=r.wasm.cwrap(In,null,["number","array","number","array","number","number"])}function _ee(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,{dims:s}=o,a=x.parseAxisParam(s,n.shape);if(n.shape.length===0)return hc({inputs:{x:n},backend:t});let i=t.makeOutput(n.shape,n.dtype),l=t.dataIdMap.get(n.dataId).id,u=t.dataIdMap.get(i.dataId).id,c=new Uint8Array(new Int32Array(a).buffer),p=new Uint8Array(new Int32Array(n.shape).buffer);return XL(l,c,a.length,p,n.shape.length,u),Wr({inputs:{x:i},attrs:{shape:n.shape},backend:t})}var YL={kernelName:In,backendName:"wasm",kernelFunc:_ee,setupFunc:bee};var ZL;function wee(r){ZL=r.wasm.cwrap($i,null,["number","number","number","number","number","number","number","number","array","number","number"])}function vee(r){let{inputs:e,backend:t,attrs:o}=r,{image:n}=e,{radians:s,fillValue:a,center:i}=o,l=t.makeOutput(n.shape,n.dtype),u=t.dataIdMap.get(n.dataId).id,c=t.dataIdMap.get(l.dataId).id,[p,m,f,d]=n.shape,[h,g]=S.getImageCenter(i,m,f),y=a===0,b=255,_=typeof a=="number"?[a,a,a,y?0:b]:[...a,b],w=new Uint8Array(new Int32Array(_).buffer);return ZL(u,p,m,f,d,s,h,g,w,_.length,c),l}var JL={kernelName:$i,backendName:"wasm",kernelFunc:vee,setupFunc:wee};var QL=Ft(Nn);var ez=Ft(Sn);var tz;function kee(r){tz=r.wasm.cwrap(ki,null,["number","number","number","number","number","number","array","number","number"])}function Cee(r){let{backend:e,inputs:t,attrs:o}=r,{indices:n,updates:s}=t,{shape:a}=o,i=e.makeOutput(a,s.dtype);if(x.sizeFromShape(a)===0)return i;let{sliceRank:l,numUpdates:u,sliceSize:c,strides:p,outputSize:m}=Jh.calculateShapes(s,n,a),d=e.dataIdMap.get(n.dataId).id,g=e.dataIdMap.get(s.dataId).id,y=new Uint8Array(new Int32Array(p).buffer),b=e.dataIdMap.get(i.dataId).id;return tz(d,g,Vt[s.dtype],l,u,c,y,m,b),i}var rz={kernelName:ki,backendName:"wasm",setupFunc:kee,kernelFunc:Cee};var oz;function Iee(r){oz=r.wasm.cwrap("SelectV2",null,["number","number","number","number","number"])}function Nee(r){let{inputs:e,backend:t}=r,{condition:o,t:n,e:s}=e,a=t.dataIdMap.get(o.dataId).id,i=t.dataIdMap.get(n.dataId).id,l=t.dataIdMap.get(s.dataId).id,u=t.makeOutput(n.shape,n.dtype),c=t.dataIdMap.get(u.dataId).id,p=o.shape.length,m=n.shape.length,f=p===0||p>1||m===1?1:x.sizeFromShape(n.shape.slice(1));return oz(a,i,l,f,c),u}var nz={kernelName:hs,backendName:"wasm",kernelFunc:Nee,setupFunc:Iee};var sz;function See(r){sz=r.wasm.cwrap(En,null,["number","number"])}function Tee(r){let{backend:e,inputs:{x:t}}=r,o=e.dataIdMap.get(t.dataId).id,n=e.makeOutput(t.shape,t.dtype),s=e.dataIdMap.get(n.dataId).id;return x.sizeFromShape(n.shape)===0||sz(o,s),n}var iz={kernelName:"Sigmoid",backendName:"wasm",setupFunc:See,kernelFunc:Tee};var az=Ft(Tn);function xc(r){let{inputs:{x:e},attrs:{begin:t,size:o},backend:n}=r,[s,a]=sr.parseSliceParams(e,t,o),i=sr.isSliceContinous(e.shape,s,a),l=n.readSync(e.dataId),u=n.makeOutput(a,e.dtype),c=x.computeStrides(e.shape),p=n.dataIdMap.get(u.dataId);if(i){let d=sr.computeFlatOffset(s,c);return e.dtype==="string"?p.stringBytes=l.slice(d,d+x.sizeFromShape(a)):n.typedArrayFromHeap(u).set(l.subarray(d,d+x.sizeFromShape(a))),u}if(e.dtype==="string"){let d=jd(l,s,a,e.shape,e.dtype);return p.stringBytes=d,u}let m=n.typedArrayFromHeap(u),f=e.shape.length;if(f===2)Eee(l,c[0],m,s,a);else if(f===3)Aee(l,c[0],c[1],m,s,a);else if(f===4)Dee(l,c[0],c[1],c[2],m,s,a);else{let d=jd(l,s,a,e.shape,e.dtype);m.set(d)}return u}function Eee(r,e,t,o,n){let s=0,a=o[0],i=o[1],l=a+n[0];for(let u=a;u{let m=[...c];m[i]=p;let f=xc({inputs:{x:n},attrs:{begin:u,size:m},backend:o});return u[i]+=p,f})}var pz={kernelName:xs,backendName:"wasm",kernelFunc:Fee};var mz=Ft(An);var fz=Ft(ga);var Oee=!0,dz=kt(Rn,Oee);var hz;function Pee(r){hz=r.wasm.cwrap(Ti,null,["number","array","number","array","array","array","array","array","number","number"])}function Mee(r){let{backend:e,inputs:t,attrs:o}=r,{x:n}=t,{begin:s,end:a,strides:i}=o;i==null&&(i=new Array(s.length));let{beginMask:l,endMask:u,ellipsisMask:c,newAxisMask:p,shrinkAxisMask:m}=o,f=S.slice_util.maskToAxes(c);if(f.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(c!==0&&p!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(c!==0&&m!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let d=n.shape.length-s.length,h=S.slice_util.maskToAxes(p),g=n.shape.slice();h.forEach(L=>{s[L]=0,a[L]=1,g.splice(L,0,1)});let y=Wr({inputs:{x:n},attrs:{shape:g},backend:e}),{begin:b,end:_,strides:w}=S.slice_util.getNormalizedAxes(y.shape,f,d,s,a,i,l,u,c);s=b,a=_,i=w;let k=S.slice_util.maskToAxes(m);k.forEach(L=>{a[L]=s[L]+1,i[L]=1});let $=S.slice_util.computeOutShape(s,a,i),T=$.filter((L,G)=>k.indexOf(G)===-1);if(i.every(L=>L===1)){let L=xc({inputs:{x:n},attrs:{begin:s,size:$},backend:e});return Wr({inputs:{x:L},attrs:{shape:T},backend:e})}let M=e.makeOutput(T,"float32");if(!T.some(L=>L===0)){let L=e.dataIdMap.get(y.dataId).id,G=new Uint8Array(new Int32Array(x.computeStrides(y.shape)).buffer),H=new Uint8Array(new Int32Array(s).buffer),U=new Uint8Array(new Int32Array(a).buffer),Z=new Uint8Array(new Int32Array(i).buffer),K=new Uint8Array(new Int32Array(T).buffer),X=new Uint8Array(new Int32Array(x.computeStrides(T)).buffer),oe=e.dataIdMap.get(M.dataId).id;hz(L,G,y.shape.length,H,U,Z,K,X,T.length,oe)}return Wr({inputs:{x:M},attrs:{shape:T},backend:e})}var gz={kernelName:Ti,backendName:"wasm",setupFunc:Pee,kernelFunc:Mee};var Lee=!0,xz=kt(Fn,Lee);var yz;function zee(r){yz=r.wasm.cwrap(Dn,null,["number, number, number"])}function Bee(r){let{backend:e,inputs:t,attrs:o}=r,{axis:n,keepDims:s}=o,{x:a}=t,i=e.dataIdMap.get(a.dataId).id,l=i,u=a,{transposed:c,axes:p,originalAxes:m,inputWasTransposed:f}=rs(a,n,e),d=p;if(f){let _=e.dataIdMap.get(c.dataId).id;_!==i&&(u=c,l=_,d=S.getInnerMostAxes(d.length,u.shape.length))}S.assertAxesAreInnerMostDims("sum",d,u.shape.length);let[h,g]=S.computeOutAndReduceShapes(u.shape,d),y=x.sizeFromShape(g),b=e.makeOutput(h,u.dtype);if(x.sizeFromShape(u.shape)!==0){let _=e.dataIdMap.get(b.dataId).id;yz(l,y,_)}if(f&&e.disposeData(c.dataId),s){let _=S.expandShapeToKeepDim(b.shape,m);b.shape=_}return b}var bz={kernelName:Dn,backendName:"wasm",setupFunc:zee,kernelFunc:Bee};var _z=Ft(On);var wz;function Vee(r){wz=r.wasm.cwrap(_o,null,["number","array","number","array","number","number"])}function Wee(r){let{inputs:e,backend:t,attrs:o}=r,{x:n}=e,s=t.dataIdMap.get(n.dataId).id,{reps:a}=o,i=new Array(n.shape.length);for(let m=0;m{let{x:o}=r,{k:n,sorted:s}=t,a=e.dataIdMap.get(o.dataId).id,i=new Uint8Array(new Int32Array(o.shape).buffer),l=o.shape.slice();l[l.length-1]=n;let u=e.makeOutput(l,o.dtype),c=e.dataIdMap.get(u.dataId).id,p=e.makeOutput(l,"int32"),m=e.dataIdMap.get(p.dataId).id;return kz(a,i,o.shape.length,Vt[o.dtype],n,s,c,m),[u,p]},Cz={kernelName:Ai,backendName:"wasm",setupFunc:Gee,kernelFunc:Uee};function jee(r){let{inputs:e,backend:t,attrs:o}=r,{value:n}=e,{axis:s}=o;s<0&&(s+=n.shape.length);let a=n.shape[s],i=n.shape.length,l=new Array(i-1),u=0;for(let f=0;f({dataId:f,dtype:d,shape:l}))}var Iz={kernelName:ys,backendName:"wasm",kernelFunc:jee};function qee(r){let{inputs:{x:e},backend:t}=r,o=t.makeOutput(e.shape,e.dtype);return t.typedArrayFromHeap(o).fill(0),o}var Nz={kernelName:bs,backendName:"wasm",kernelFunc:qee};var Hee=[cM,pM,fM,yM,_M,kM,CM,NM,SM,EM,DM,$M,FM,PM,LM,BM,VM,WM,GM,UM,qM,HM,KM,uM,YM,JM,eL,rL,nL,sL,iL,dM,lL,uL,cL,pL,mL,dL,hL,xL,bL,wL,vL,kL,CL,NL,TL,AL,DL,RL,FL,OL,ML,LL,BL,WL,GL,UL,jL,qL,wM,KL,YL,JL,ez,QL,rz,nz,iz,az,lz,cz,pz,mz,fz,dz,gz,xz,bz,_z,vz,Cz,gM,Iz,Nz];for(let r of Hee)tl(r);var fI=W();fI.registerFlag("WASM_HAS_SIMD_SUPPORT",async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,9,1,7,0,65,0,253,15,26,11])));fI.registerFlag("WASM_HAS_MULTITHREAD_SUPPORT",async()=>{if(fI.get("IS_NODE"))return!1;try{return new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch(r){return!1}});var yI=Ec(Ez());var Az='var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module["instantiateWasm"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module["wasmModule"],info);Module["wasmModule"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd==="load"){Module["DYNAMIC_BASE"]=e.data.DYNAMIC_BASE;Module["DYNAMICTOP_PTR"]=e.data.DYNAMICTOP_PTR;Module["wasmModule"]=e.data.wasmModule;Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;if(typeof e.data.urlOrBlob==="string"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({"cmd":"loaded"})}else if(e.data.cmd==="objectTransfer"){Module["PThread"].receiveObjectTransfer(e.data)}else if(e.data.cmd==="run"){Module["__performance_now_clock_drift"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module["__register_pthread_ptr"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module["establishStackSpace"](top,max);Module["_emscripten_tls_init"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].setThreadStatus(Module["_pthread_self"](),1);try{var result=Module["dynCall_ii"](e.data.start_routine,e.data.arg);if(!Module["getNoExitRuntime"]())Module["PThread"].threadExit(result)}catch(ex){if(ex==="Canceled!"){Module["PThread"].threadCancel()}else if(ex!="unwind"){Atomics.store(Module["HEAPU32"],threadInfoStruct+4>>2,ex instanceof Module["ExitStatus"]?ex.status:-2);Atomics.store(Module["HEAPU32"],threadInfoStruct+0>>2,1);Module["_emscripten_futex_wake"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module["ExitStatus"]))throw ex}}}else if(e.data.cmd==="cancel"){if(threadInfoStruct){Module["PThread"].threadCancel()}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processThreadQueue"){if(threadInfoStruct){Module["_emscripten_current_thread_process_queued_calls"]()}}else{err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){err("worker.js onmessage() captured an uncaught exception: "+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require("worker_threads");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",function(data){onmessage({data:data})});var nodeFS=require("fs");var nodeRead=function(filename){return nodeFS.readFileSync(filename,"utf8")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance==="undefined"){performance={now:function(){return Date.now()}}}}';var $z=Ec(Dz());var Zx=class extends Ws{constructor(e){super();this.wasm=e,this.dataIdNextNumber=1,this.wasm.tfjs.init(),this.dataIdMap=new Ja(this,Cs())}write(e,t,o){let n={};return this.move(n,e,t,o),n}numDataIds(){return this.dataIdMap.numDataIds()}async time(e){let t=x.now();return e(),{kernelMs:x.now()-t}}move(e,t,o,n){let s=this.dataIdNextNumber++;if(n==="string"){let u=t;this.dataIdMap.set(e,{id:s,stringBytes:u,shape:o,dtype:n,memoryOffset:null});return}let a=x.sizeFromShape(o),i=a*x.bytesPerElement(n),l=this.wasm._malloc(i);this.dataIdMap.set(e,{id:s,memoryOffset:l,shape:o,dtype:n}),this.wasm.tfjs.registerTensor(s,a,l),t!=null&&this.wasm.HEAPU8.set(new Uint8Array(t.buffer,t.byteOffset,i),l)}async read(e){return this.readSync(e)}readSync(e){let{memoryOffset:t,dtype:o,shape:n,stringBytes:s}=this.dataIdMap.get(e);if(o==="string")return s;let a=this.wasm.HEAPU8.slice(t,t+x.sizeFromShape(n)*x.bytesPerElement(o));return Kee(a.buffer,o)}disposeData(e){let t=this.dataIdMap.get(e);this.wasm._free(t.memoryOffset),this.wasm.tfjs.disposeData(t.id),this.dataIdMap.delete(e)}floatPrecision(){return 32}getMemoryOffset(e){return this.dataIdMap.get(e).memoryOffset}dispose(){this.wasm.tfjs.dispose(),this.wasm=null}memory(){return{unreliable:!1}}makeOutput(e,t,o){let n;if(o==null)n=this.write(null,e,t);else{n={};let s=this.dataIdNextNumber++;this.dataIdMap.set(n,{id:s,memoryOffset:o,shape:e,dtype:t});let a=x.sizeFromShape(e);this.wasm.tfjs.registerTensor(s,a,o)}return{dataId:n,shape:e,dtype:t}}typedArrayFromHeap({shape:e,dtype:t,dataId:o}){let n=this.wasm.HEAPU8.buffer,{memoryOffset:s}=this.dataIdMap.get(o),a=x.sizeFromShape(e);switch(t){case"float32":return new Float32Array(n,s,a);case"int32":return new Int32Array(n,s,a);case"bool":return new Uint8Array(n,s,a);default:throw new Error(`Unknown dtype ${t}`)}}};function Xee(r){return(e,t)=>(x.fetch(r,{credentials:"same-origin"}).then(o=>{o.ok||e.env.a(`failed to load wasm binary file at '${r}'`),o.arrayBuffer().then(n=>{WebAssembly.instantiate(n,e).then(s=>{t(s.instance)})})}),{})}function Rz(r,e,t){if(Jx!=null)return Jx;let o="tfjs-backend-wasm.wasm";return r&&e?o="tfjs-backend-wasm-threaded-simd.wasm":r&&(o="tfjs-backend-wasm-simd.wasm"),ph!=null&&ph[o]!=null?ph[o]:t+o}async function Fz(){let[r,e]=await Promise.all([W().getAsync("WASM_HAS_SIMD_SUPPORT"),W().getAsync("WASM_HAS_MULTITHREAD_SUPPORT")]);return new Promise((t,o)=>{let n={};n.locateFile=(l,u)=>{if(l.endsWith(".worker.js")){let c=Az,p=new Blob([c],{type:"application/javascript"});return URL.createObjectURL(p)}return l.endsWith(".wasm")?Rz(r,e,mh!=null?mh:u):u+l},bI&&(n.instantiateWasm=Xee(Rz(r,e,mh!=null?mh:"")));let s;e&&r&&Jx==null?(s=yI.default(n),s.mainScriptUrlOrBlob=new Blob(["var WasmBackendModuleThreadedSimd = "+yI.default.toString()],{type:"text/javascript"})):s=$z.default(n);let a=null;s.tfjs={init:s.cwrap("init",null,[]),registerTensor:s.cwrap("register_tensor",null,["number","number","number"]),disposeData:s.cwrap("dispose_data",a,["number"]),dispose:s.cwrap("dispose",a,[])};let i=!1;s.onRuntimeInitialized=()=>{i=!0,fh=!1,t({wasm:s})},s.onAbort=()=>{if(i||fh)return;fh=!0,o({message:"Make sure the server can serve the `.wasm` file relative to the bundled js file. For more details see https://github.com/tensorflow/tfjs/blob/master/tfjs-backend-wasm/README.md#using-bundlers"})}})}function Kee(r,e){switch(e){case"float32":return new Float32Array(r);case"int32":return new Int32Array(r);case"bool":return new Uint8Array(r);default:throw new Error(`Unknown dtype ${e}`)}}var Yee=["tfjs-backend-wasm.wasm","tfjs-backend-wasm-simd.wasm","tfjs-backend-wasm-threaded-simd.wasm"],Jx=null,mh=null,ph={},fh=!1,bI=!1;function Zee(r,e=!1){if(Ot("setWasmPath has been deprecated in favor of setWasmPaths and will be removed in a future release."),fh)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPath()` before you call `tf.setBackend()` or `tf.ready()`");Jx=r,bI=e}function Jee(r,e=!1){if(fh)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPaths()` before you call `tf.setBackend()` or `tf.ready()`");if(typeof r=="string")mh=r;else{ph=r;let t=Yee.filter(o=>ph[o]==null);if(t.length>0)throw new Error(`There were no entries found for the following binaries: ${t.join(",")}. Please either call setWasmPaths with a map providing a path for each binary, or with a string indicating the directory where all the binaries can be found.`)}bI=e}var Qee="2.8.3";var ete=2;wu("wasm",async()=>{let{wasm:r}=await Fz();return new Zx(r)},ete);export{is as Abs,js as Acos,qs as Acosh,rp as AdadeltaOptimizer,op as AdagradOptimizer,np as AdamOptimizer,sp as AdamaxOptimizer,bo as Add,Ho as AddN,Ul as All,jl as Any,Ko as ArgMax,oa as ArgMin,Hs as Asin,Ks as Asinh,Xs as Atan,Zs as Atan2,Ys as Atanh,Xo as AvgPool,na as AvgPool3D,Hl as AvgPool3DGrad,ql as AvgPoolGrad,Zx as BackendWasm,Yo as BatchMatMul,sa as BatchToSpaceND,Kl as Bincount,yb as BroadcastTo,Xg as Callback,Dg as CallbackList,Fo as Cast,Js as Ceil,Oo as ClipByValue,Xl as Complex,ia as ComplexAbs,as as Concat,Zo as Conv2D,Yl as Conv2DBackpropFilter,Jo as Conv2DBackpropInput,aa as Conv3D,Zl as Conv3DBackpropFilterV2,Jl as Conv3DBackpropInputV2,Qo as Cos,Qs as Cosh,ei as CropAndResize,en as Cumsum,Rg as CustomCallback,Ja as DataStorage,Ql as DenseBincount,ti as DepthToSpace,tn as DepthwiseConv2dNative,eu as DepthwiseConv2dNativeBackpropFilter,tu as DepthwiseConv2dNativeBackpropInput,ru as Diag,la as Dilation2D,Oc as Dilation2DBackpropFilter,Fc as Dilation2DBackpropInput,db as ENV,Zg as EarlyStopping,ri as Elu,ou as EluGrad,zh as Environment,ni as Equal,oi as Erf,on as Exp,ls as ExpandDims,si as Expm1,nu as FFT,ua as Fill,ii as FlipLeftRight,nn as Floor,sn as FloorDiv,Pc as FromPixels,an as FusedBatchNorm,ws as FusedConv2D,vs as FusedDepthwiseConv2D,ai as GatherNd,us as GatherV2,mx as GraphModel,li as Greater,ln as GreaterEqual,$g as History,su as IFFT,cs as Identity,iu as Imag,At as InputSpec,ui as IsFinite,ci as IsInf,pi as IsNan,Ws as KernelBackend,ca as LRN,lu as LRNGrad,bf as LayerVariable,Io as LayersModel,un as LeakyRelu,mi as Less,fi as LessEqual,au as LinSpace,cn as Log,di as Log1p,bb as LogSoftmax,hi as LogicalAnd,Qa as LogicalNot,el as LogicalOr,pn as Max,fn as MaxPool,pa as MaxPool3D,cu as MaxPool3DGrad,uu as MaxPoolGrad,pu as MaxPoolWithArgmax,mn as Maximum,dn as Mean,hn as Min,gn as Minimum,ma as MirrorPad,gi as Mod,ip as MomentumOptimizer,mu as Multinomial,xn as Multiply,ps as Neg,yi as NonMaxSuppressionV3,bi as NonMaxSuppressionV4,_i as NonMaxSuppressionV5,xi as NotEqual,XI as OP_SCOPE_SUFFIX,yn as OneHot,ms as OnesLike,Mr as Optimizer,fs as Pack,bn as PadV2,w3 as Pool,_n as Pow,wn as Prelu,wi as Prod,ap as RMSPropOptimizer,co as RNN,fa as Range,Cb as Rank,fu as Real,rn as RealDiv,vi as Reciprocal,Ut as Reduction,vn as Relu,Cn as Relu6,ds as Reshape,kn as ResizeBilinear,hu as ResizeBilinearGrad,da as ResizeNearestNeighbor,du as ResizeNearestNeighborGrad,In as Reverse,$i as RotateWithOffset,Nn as Round,Sn as Rsqrt,cl as SGDOptimizer,ki as ScatterNd,hs as Select,Ci as Selu,ji as Sequential,En as Sigmoid,Ni as Sign,Tn as Sin,Ii as Sinh,gs as Slice,$n as Softmax,Si as Softplus,ha as SpaceToBatchND,gu as SparseToDense,xs as SplitV,An as Sqrt,ga as Square,Rn as SquaredDifference,Di as Step,Ti as StridedSlice,Fn as Sub,Dn as Sum,Vr as SymbolicTensor,Ei as Tan,On as Tanh,R as Tensor,ct as TensorBuffer,_o as Tile,Ai as TopK,Pn as Transpose,xu as Unique,ys as Unpack,xa as UnsortedSegmentSum,ol as Variable,bs as ZerosLike,_s as _FusedMatMul,Et as abs,wm as acos,vm as acosh,ee as add,Qb as addN,W_ as addStrict,ku as all,il as any,al as argMax,km as argMin,Cm as asin,Im as asinh,Nm as atan,Sm as atan2,Tm as atanh,ka as avgPool,Em as avgPool3d,Jb as backend,S as backend_util,bW as basicLSTMCell,Ln as batchNorm,o_ as batchNorm2d,n_ as batchNorm3d,s_ as batchNorm4d,Ca as batchToSpaceND,i_ as bincount,SU as booleanMaskAsync,ll as broadcastTo,Yh as browser,Ie as buffer,W1 as callbacks,ne as cast,Am as ceil,ir as clipByValue,Po as clone,wo as complex,Je as concat,a_ as concat1d,l_ as concat2d,u_ as concat3d,c_ as concat4d,xw as constraints,Nu as conv1d,Xr as conv2d,Su as conv2dTranspose,Dm as conv3d,BW as conv3dTranspose,C3 as copyRegisteredKernels,Ia as cos,Tu as cosh,tf as cosineWindow,Eu as cumsum,Zr as customGrad,jv as data,p_ as denseBincount,Ot as deprecationWarn,$m as depthToSpace,Lo as depthwiseConv2d,j1 as deregisterOp,Vc as device_util,KW as diag,Rm as dilation2d,$V as disableDeprecationWarnings,Ae as dispose,RV as disposeVariables,fe as div,Fm as divNoNan,G_ as divStrict,m_ as dot,Q_ as dropout,Is as elu,DV as enableDebugMode,AV as enableProdMode,ew as enclosingPowerOfTwo,Cs as engine,W as env,Yr as equal,P_ as equalStrict,Om as erf,Qt as exp,br as expandDims,Pm as expm1,Xc as eye,Fa as fft,Na as fill,zV as findBackend,BV as findBackendFactory,Ns as floor,vu as floorDiv,Vn as fused,zn as gather,J_ as gatherND,Zh as gather_util,MV as getBackend,Bh as getGradient,dm as getKernel,hm as getKernelsForBackend,kG as grad,CG as grads,Xt as greater,Or as greaterEqual,M_ as greaterEqualStrict,L_ as greaterStrict,Li as ifft,Au as imag,As as image,ZU as inTopKAsync,vw as initializers,Hg as input,Cr as io,Wu as irfft,f_ as isFinite,d_ as isInf,h_ as isNaN,Dt as keep,Er as kernel_impls,nv as layers,Sa as leakyRelu,Ta as less,no as lessEqual,z_ as lessEqualStrict,B_ as lessStrict,sw as linalg,g_ as linspace,bE as loadGraphModel,E1 as loadLayersModel,Mm as localResponseNormalization,ar as log,Du as log1p,x_ as logSigmoid,$u as logSoftmax,zm as logSumExp,dr as logicalAnd,Ea as logicalNot,Ru as logicalOr,w_ as logicalXor,Gj as losses,je as matMul,NN as math,lr as max,Aa as maxPool,Bm as maxPool3d,v_ as maxPoolWithArgmax,Ir as maximum,U_ as maximumStrict,bt as mean,qc as memory,lv as metrics,Mi as min,Bo as minimum,j_ as minimumStrict,Vm as mirrorPad,Fu as mod,q_ as modStrict,S1 as model,uv as models,Yc as moments,jU as movingAverage,O as mul,H_ as mulStrict,QG as multiRNNCell,k_ as multinomial,He as neg,rf as nextFrame,Uu as norm,vo as notEqual,V_ as notEqualStrict,ks as oneHot,Nr as ones,rr as onesLike,N as op,n4 as outerProduct,Pr as pad,a4 as pad1d,u4 as pad2d,p4 as pad3d,f4 as pad4d,C_ as pool,_r as pow,K_ as powStrict,$a as prelu,Vb as print,Ou as prod,FV as profile,v4 as rand,A4 as randomGamma,lg as randomNormal,Ts as randomUniform,Jc as range,PV as ready,ul as real,Gm as reciprocal,wu as registerBackend,A1 as registerCallbackConstructor,wb as registerGradient,tl as registerKernel,U1 as registerOp,cv as regularizers,Sr as relu,Mu as relu6,LV as removeBackend,z as reshape,Yt as reverse,z4 as reverse1d,V4 as reverse2d,G4 as reverse3d,j4 as reverse4d,Oa as rfft,Um as round,Lu as rsqrt,ce as scalar,Z_ as scatterND,Jh as scatter_util,zu as selu,jm as separableConv2d,T1 as sequential,te as serialization,WN as setBackend,VV as setPlatform,Zee as setWasmPath,Jee as setWasmPaths,R_ as setdiff1dAsync,Kr as sigmoid,qm as sign,Wj as signal,Bu as sin,Vu as sinh,Fe as slice,Hm as slice1d,ug as slice2d,Km as slice3d,Qc as slice4d,sr as slice_util,Ra as softmax,Ss as softplus,Da as spaceToBatchND,ef as sparseToDense,Vj as spectral,ur as split,_t as sqrt,Me as square,Pa as squaredDifference,X_ as squaredDifferenceStrict,ko as squeeze,Wt as stack,Es as step,Xm as stridedSlice,pe as sub,Y_ as subStrict,be as sum,yu as sumOutType,Ym as tan,Pi as tanh,Fr as tensor,Gt as tensor1d,zi as tensor2d,jb as tensor3d,xU as tensor4d,yU as tensor5d,bU as tensor6d,Mn as tensor_util,zN as test_util,V as tidy,zo as tile,OV as time,Zm as topk,pl as train,qe as transpose,Gu as truncatedNormal,ep as unique,k3 as unregisterGradient,v3 as unregisterKernel,Jm as unsortedSegmentSum,cr as unstack,fr as upcastType,x as util,IG as valueAndGrad,NG as valueAndGrads,F_ as variable,sg as variableGrads,GJ as version,fx as version_converter,Zb as version_core,xl as version_layers,Qee as version_wasm,$t as where,Qm as whereAsync,pt as zeros,Ne as zerosLike}; /** * @license * Copyright 2017 Google LLC. All Rights Reserved. diff --git a/dist/tfjs.esm.js.map b/dist/tfjs.esm.js.map index 9f41066..7250b1a 100644 --- a/dist/tfjs.esm.js.map +++ b/dist/tfjs.esm.js.map @@ -2,6 +2,6 @@ "version": 3, "sources": ["empty:/home/vlado/dev/face-api/node_modules/node-fetch/browser.js", "../node_modules/seedrandom/lib/alea.js", "../node_modules/seedrandom/lib/xor128.js", "../node_modules/seedrandom/lib/xorwow.js", "../node_modules/seedrandom/lib/xorshift7.js", "../node_modules/seedrandom/lib/xor4096.js", "../node_modules/seedrandom/lib/tychei.js", "empty:crypto", "../node_modules/seedrandom/seedrandom.js", "../node_modules/seedrandom/index.js", "empty:/home/vlado/dev/face-api/node_modules/string_decoder/lib/string_decoder.js", "empty:path", "empty:worker_threads", "empty:perf_hooks", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.js", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js", "../node_modules/@tensorflow/tfjs-core/src/backends/backend.ts", "../node_modules/@tensorflow/tfjs-core/src/util_base.ts", "../node_modules/@tensorflow/tfjs-core/src/environment.ts", "../node_modules/@tensorflow/tfjs-core/src/global_util.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_names.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/profiler.ts", "../node_modules/@tensorflow/tfjs-core/src/tape.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_format.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/types.ts", "../node_modules/@tensorflow/tfjs-core/src/engine.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/flags.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util_env.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/operation.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/complex.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/io/types.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/io/router_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/model_management.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_browser.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/buffer.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clone.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/print.ts", "../node_modules/@tensorflow/tfjs-core/src/base_side_effects.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/io/browser_files.ts", "../node_modules/@tensorflow/tfjs-core/src/io/progress.ts", "../node_modules/@tensorflow/tfjs-core/src/io/weights_loader.ts", "../node_modules/@tensorflow/tfjs-core/src/io/http.ts", "../node_modules/@tensorflow/tfjs-core/src/io/passthrough.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/confusion_matrix.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/version.ts", "../node_modules/@tensorflow/tfjs-core/src/globals.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add_n.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/basic_lstm_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dense_bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/diag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/eye.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fill.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/imag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linspace.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/axis_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_with_argmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moments.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multi_rnn_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multinomial.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/outer_product.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_gamma.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_uniform.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/range.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/real.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/setdiff1d_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor5d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor6d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/truncated_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/variable.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/where_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/boolean_mask.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/compare.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/binary_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moving_average.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/in_top_k.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hamming_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hann_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/frame.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/stft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/crop_and_resize.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/flip_left_right.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/rotate_with_offset.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/nonmax_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/band_part.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/gram_schmidt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/qr.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/loss_ops_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/compute_weighted_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/absolute_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/cosine_distance.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/hinge_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/huber_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/log_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/mean_squared_error.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/sigmoid_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/softmax_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ops.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adadelta_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adagrad_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adam_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adamax_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/sgd_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/momentum_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/rmsprop_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer_constructors.ts", "../node_modules/@tensorflow/tfjs-core/src/train.ts", "../node_modules/@tensorflow/tfjs-core/src/browser_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reduce_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rotate_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/array_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf_util.ts", "../node_modules/@tensorflow/tfjs-core/src/log.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/complex_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Abs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Add_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AddN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchMatMul_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchToSpaceND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BroadcastTo_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cast_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Ceil_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ClipByValue_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ComplexAbs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Concat_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2DBackpropInput_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cumsum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/DepthwiseConv2dNative_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Dilation2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Elu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Erf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Exp_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ExpandDims_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Expm1_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Floor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FloorDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FusedBatchNorm_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GatherV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GreaterEqual_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Identity_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsFinite_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsInf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsNan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LeakyRelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log1p_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LogSoftmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LRN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/min_max_grad_util.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Max_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Maximum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mean_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Min_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Minimum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MirrorPad_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mod_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Multiply_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Neg_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OneHot_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OnesLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/PadV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pow_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Prelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/RealDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reciprocal_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu6_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reshape_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeBilinear_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeNearestNeighbor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reverse_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Round_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Rsqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Select_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Selu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sigmoid_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sign_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Slice_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softplus_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SpaceToBatchND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SplitV_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Square_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SquaredDifference_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Step_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sub_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tile_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Transpose_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Unpack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/UnsortedSegmentSum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ZerosLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/register_all_gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_type.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as3d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as4d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as5d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2D_deprecated.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/flatten.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape_as.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub_strict.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_bool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_float.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_int.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/register_all_chained_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/index.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/errors.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/initializer_config.ts", "../node_modules/@tensorflow/tfjs-layers/src/initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/state.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/types_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/variable_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/topology.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/input_layer.ts", "../node_modules/@tensorflow/tfjs-layers/src/logs.ts", "../node_modules/@tensorflow/tfjs-layers/src/base_callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/serialization.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/optimizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/user_defined_metadata.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/layer_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/serialization_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/version.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/executor.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/container.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_dataset.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_tensors.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training.ts", "../node_modules/@tensorflow/tfjs-layers/src/models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports.ts", "../node_modules/@tensorflow/tfjs-layers/src/activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/advanced_activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/conv_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_depthwise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/core.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/embeddings.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/noise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/normalization.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/pooling.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/wrappers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/index.ts", "../node_modules/@tensorflow/tfjs-converter/src/data/compiled_api.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/register.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_mapper.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/node_value_impl.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/arithmetic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/basic_math_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_array.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_list.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/control_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/convolution_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/creation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/dynamic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/evaluation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/hash_table_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/image_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/logical_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/matrices_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/normalization_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/reduction_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/slice_join_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/spectral_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/transformation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/execution_context.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/model_analysis.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/resource_manager.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_model.ts", "../node_modules/@tensorflow/tfjs-converter/src/version.ts", "../node_modules/@tensorflow/tfjs-converter/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_map.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_clone.ts", "../node_modules/@tensorflow/tfjs-data/src/util/ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/util/growing_ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/text_line_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/csv_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/microphone_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/webcam_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/datasource.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/string_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/byte_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/file_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/url_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/source_util.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/file_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/url_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/readers.ts", "../node_modules/@tensorflow/tfjs-data/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/cpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/zeros_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fused_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/pool_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Clip.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fft_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Scatter_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flags_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/glsl_version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_context.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_math.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/shared.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/packing_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reshape_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/texture_manager.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unpack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/backend_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mulmat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_complex_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mean_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reduce_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reduce.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/arg_min_max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pool_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/avg_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/int.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/complex_abs_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/im2col_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/crop_and_resize_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/cumsum_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/depth_to_space_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_packed_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/diag_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/dilation_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fft_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fill_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flip_left_right_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_nd_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_grad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/max_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/multinomial_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/onehot_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/rotate_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/scatter_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/select_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/strided_slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tile_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/segment_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/index.ts", "../node_modules/@tensorflow/tfjs/src/version.ts", "../node_modules/@tensorflow/tfjs/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/types.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/unary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/binary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedBatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppression_util.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/flags_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.worker.js", "../node_modules/@tensorflow/tfjs-backend-wasm/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/index.ts"], "sourcesContent": ["", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", "", "", "\nvar WasmBackendModuleThreadedSimd = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModuleThreadedSimd) {\n WasmBackendModuleThreadedSimd = WasmBackendModuleThreadedSimd || {};\n\nfunction GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd!==\"undefined\"?WasmBackendModuleThreadedSimd:{};var _scriptDir=undefined;var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module[\"ENVIRONMENT_IS_PTHREAD\"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module[\"buffer\"];DYNAMIC_BASE=Module[\"DYNAMIC_BASE\"];DYNAMICTOP_PTR=Module[\"DYNAMICTOP_PTR\"]}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"};var nodeWorkerThreads;try{nodeWorkerThreads=require(\"worker_threads\")}catch(e){console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(ENVIRONMENT_IS_NODE){read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}}else{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance===\"undefined\"){performance=require(\"perf_hooks\").performance}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":169,\"maximum\":169+0,\"element\":\"anyfunc\"});var wasmModule;var threadInfoStruct=0;var selfThreadId=0;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var STACK_BASE=5256464,STACKTOP=STACK_BASE,STACK_MAX=13584,DYNAMIC_BASE=5256464,DYNAMICTOP_PTR=12656;if(ENVIRONMENT_IS_PTHREAD){}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module[\"wasmMemory\"];buffer=Module[\"buffer\"]}else{if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,\"maximum\":2147483648/WASM_PAGE_SIZE,\"shared\":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err(\"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\");if(ENVIRONMENT_IS_NODE){console.log(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)\")}throw Error(\"bad memory\")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);if(!ENVIRONMENT_IS_PTHREAD){GROWABLE_HEAP_I32()[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,\"addRunDependency cannot be used in a pthread worker\");runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error(\"Pthread aborting at \"+(new Error).stack);what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm-threaded-simd.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency(\"wasm-instantiate\")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency(\"wasm-instantiate\")}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}var ASM_CONSTS={};function initPthreadsJS(){PThread.initRuntime()}if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});var __pthread_ptr=0;var __pthread_is_main_runtime_thread=0;var __pthread_is_main_browser_thread=0;function __register_pthread_ptr(pthreadPtr,isMainBrowserThread,isMainRuntimeThread){pthreadPtr=pthreadPtr|0;isMainBrowserThread=isMainBrowserThread|0;isMainRuntimeThread=isMainRuntimeThread|0;__pthread_ptr=pthreadPtr;__pthread_is_main_browser_thread=isMainBrowserThread;__pthread_is_main_runtime_thread=isMainRuntimeThread}Module[\"__register_pthread_ptr\"]=__register_pthread_ptr;var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var __main_thread_futex_wait_address=13568;function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw\"Atomics.notify returned an unexpected value \"+ret}Module[\"_emscripten_futex_wake\"]=_emscripten_futex_wake;function __kill_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _kill_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _kill_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function __cancel_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cancel_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cancel_thread!\";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({\"cmd\":\"cancel\"})}function __cleanup_thread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _cleanup_thread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in _cleanup_thread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){__register_pthread_ptr(PThread.mainThreadBlock,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(PThread.mainThreadBlock)},initMainThreadBlock:function(){var pthreadPoolSize=8;for(var i=0;i>2]=PThread.mainThreadBlock;var headPtr=PThread.mainThreadBlock+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var tlsMemory=13056;for(var i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+104>>2,tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+40>>2,PThread.mainThreadBlock);Atomics.store(GROWABLE_HEAP_U32(),PThread.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(PThread.exitHandlers!==null){while(PThread.exitHandlers.length>0){PThread.exitHandlers.pop()()}PThread.exitHandlers=null}if(ENVIRONMENT_IS_PTHREAD&&threadInfoStruct)___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+64>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__register_pthread_ptr(0,0,0);threadInfoStruct=0;if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exit\"})}}},threadCancel:function(){PThread.runExitHandlers();Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+4>>2,-1);Atomics.store(GROWABLE_HEAP_U32(),threadInfoStruct+0>>2,1);_emscripten_futex_wake(threadInfoStruct+0,2147483647);threadInfoStruct=selfThreadId=0;__register_pthread_ptr(0,0,0);postMessage({\"cmd\":\"cancelDone\"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+104>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){delete PThread.pthreads[worker.pthread.thread];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e[\"data\"];var cmd=d[\"cmd\"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d[\"targetThread\"]&&d[\"targetThread\"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d[\"transferList\"])}else{console.error('Internal error! Worker sent a message \"'+cmd+'\" to target pthread '+d[\"targetThread\"]+\", but that thread no longer exists!\")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd===\"processQueuedMainThreadWork\"){_emscripten_main_thread_process_queued_calls()}else if(cmd===\"spawnThread\"){__spawn_thread(e.data)}else if(cmd===\"cleanupThread\"){__cleanup_thread(d[\"thread\"])}else if(cmd===\"killThread\"){__kill_thread(d[\"thread\"])}else if(cmd===\"cancelThread\"){__cancel_thread(d[\"thread\"])}else if(cmd===\"loaded\"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd===\"print\"){out(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"printErr\"){err(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"alert\"){alert(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"exit\"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.thread+68>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd===\"cancelDone\"){PThread.returnWorkerToPool(worker)}else if(cmd===\"objectTransfer\"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target===\"setimmediate\"){worker.postMessage(e.data)}else{err(\"worker sent an unknown command \"+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err(\"pthread sent an error! \"+e.filename+\":\"+e.lineno+\": \"+e.message)};if(ENVIRONMENT_IS_NODE){worker.on(\"message\",function(data){worker.onmessage({data:data})});worker.on(\"error\",function(data){worker.onerror(data)});worker.on(\"exit\",function(data){console.log(\"worker exited - TODO: update the worker queue?\")})}worker.postMessage({\"cmd\":\"load\",\"urlOrBlob\":Module[\"mainScriptUrlOrBlob\"]||_scriptDir,\"wasmMemory\":wasmMemory,\"wasmModule\":wasmModule,\"DYNAMIC_BASE\":DYNAMIC_BASE,\"DYNAMICTOP_PTR\":DYNAMICTOP_PTR})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile(\"tfjs-backend-wasm-threaded-simd.worker.js\");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()>2]=value;return value}function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func,arg);__ATEXIT__.unshift({func:func,arg:arg})}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({\"cmd\":\"processQueuedMainThreadWork\"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({\"targetThread\":targetThreadId,\"cmd\":\"processThreadQueue\"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({\"cmd\":\"processThreadQueue\"})}return 1}function _abort(){abort()}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){expectedStatus=expectedStatus|0;newStatus=newStatus|0}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(ENVIRONMENT_IS_WORKER){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret===\"timed-out\")return-73;if(ret===\"not-equal\")return-6;if(ret===\"ok\")return 0;throw\"Atomics.wait returned an unexpected value \"+ret}else{var loadedVal=Atomics.load(GROWABLE_HEAP_I32(),addr>>2);if(val!=loadedVal)return-6;var tNow=performance.now();var tEnd=tNow+timeout;Atomics.store(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2,addr);var ourWaitAddress=addr;while(addr==ourWaitAddress){tNow=performance.now();if(tNow>tEnd){return-73}_emscripten_main_thread_process_queued_calls();addr=Atomics.load(GROWABLE_HEAP_I32(),__main_thread_futex_wait_address>>2)}return 0}}function _emscripten_is_main_browser_thread(){return __pthread_is_main_browser_thread|0}function _emscripten_is_main_runtime_thread(){return __pthread_is_main_runtime_thread|0}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){return navigator[\"hardwareConcurrency\"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var args=stackAlloc(numCallArgs*8);var b=args>>3;for(var i=0;i>3]);buf+=8}else{buf=buf+3&~3;args.push(GROWABLE_HEAP_I32()[buf>>2]);buf+=4}}return args}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize){return false}var PAGE_MULTIPLE=65536;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}var minHeapSize=16777216;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:false,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;_emscripten_async_queue_on_thread_(targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return\"\";if(target==window)return\"#window\";if(target==screen)return\"#screen\";return target&&target.nodeName?target.nodeName:\"\"},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;_emscripten_async_queue_on_thread_(targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):\"\";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function __maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!==\"undefined\"?document:0,typeof window!==\"undefined\"?window:0];function __findEventTarget(target){target=__maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!==\"undefined\"?document.querySelector(target):undefined);return domElement}function __findCanvasEventTarget(target){return __findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=__findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=__findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){newStatus=newStatus|0}function _emscripten_set_thread_name(threadId,name){threadId=threadId|0;name=name|0}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=function(index,divisor){ext[\"vertexAttribDivisorANGLE\"](index,divisor)};ctx[\"drawArraysInstanced\"]=function(mode,first,count,primcount){ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount)};ctx[\"drawElementsInstanced\"]=function(mode,count,type,indices,primcount){ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=function(){return ext[\"createVertexArrayOES\"]()};ctx[\"deleteVertexArray\"]=function(vao){ext[\"deleteVertexArrayOES\"](vao)};ctx[\"bindVertexArray\"]=function(vao){ext[\"bindVertexArrayOES\"](vao)};ctx[\"isVertexArray\"]=function(vao){return ext[\"isVertexArrayOES\"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=function(n,bufs){ext[\"drawBuffersWEBGL\"](n,bufs)};return 1}}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){var miniTempFloatBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE);for(var i=0;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault===\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents===\"object\")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\");var automaticallyEnabledExtensions=[\"OES_texture_float\",\"OES_texture_half_float\",\"OES_standard_derivatives\",\"OES_vertex_array_object\",\"WEBGL_compressed_texture_s3tc\",\"WEBGL_depth_texture\",\"OES_element_index_uint\",\"EXT_texture_filter_anisotropic\",\"EXT_frag_depth\",\"WEBGL_draw_buffers\",\"ANGLE_instanced_arrays\",\"OES_texture_float_linear\",\"OES_texture_half_float_linear\",\"EXT_blend_minmax\",\"EXT_shader_texture_lod\",\"EXT_texture_norm16\",\"WEBGL_compressed_texture_pvrtc\",\"EXT_color_buffer_half_float\",\"WEBGL_color_buffer_float\",\"EXT_sRGB\",\"WEBGL_compressed_texture_etc1\",\"EXT_disjoint_timer_query\",\"WEBGL_compressed_texture_etc\",\"WEBGL_compressed_texture_astc\",\"EXT_color_buffer_float\",\"WEBGL_compressed_texture_s3tc_srgb\",\"EXT_disjoint_timer_query_webgl2\",\"WEBKIT_WEBGL_compressed_texture_pvrtc\"];var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(automaticallyEnabledExtensions.indexOf(ext)!=-1){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>2;contextAttributes[\"alpha\"]=!!GROWABLE_HEAP_I32()[a+(0>>2)];contextAttributes[\"depth\"]=!!GROWABLE_HEAP_I32()[a+(4>>2)];contextAttributes[\"stencil\"]=!!GROWABLE_HEAP_I32()[a+(8>>2)];contextAttributes[\"antialias\"]=!!GROWABLE_HEAP_I32()[a+(12>>2)];contextAttributes[\"premultipliedAlpha\"]=!!GROWABLE_HEAP_I32()[a+(16>>2)];contextAttributes[\"preserveDrawingBuffer\"]=!!GROWABLE_HEAP_I32()[a+(20>>2)];var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];contextAttributes[\"powerPreference\"]=__emscripten_webgl_power_preferences[powerPreference];contextAttributes[\"failIfMajorPerformanceCaveat\"]=!!GROWABLE_HEAP_I32()[a+(28>>2)];contextAttributes.majorVersion=GROWABLE_HEAP_I32()[a+(32>>2)];contextAttributes.minorVersion=GROWABLE_HEAP_I32()[a+(36>>2)];contextAttributes.enableExtensionsByDefault=GROWABLE_HEAP_I32()[a+(40>>2)];contextAttributes.explicitSwapControl=GROWABLE_HEAP_I32()[a+(44>>2)];contextAttributes.proxyContextToMainThread=GROWABLE_HEAP_I32()[a+(48>>2)];contextAttributes.renderViaOffscreenBackBuffer=GROWABLE_HEAP_I32()[a+(52>>2)];var canvas=__findCanvasEventTarget(target);if(!canvas){return-4}if(contextAttributes.explicitSwapControl){return-1}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,fd);return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _pthread_cleanup_pop(execute){var routine=PThread.exitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){if(PThread.exitHandlers===null){PThread.exitHandlers=[]}PThread.exitHandlers.push(function(){dynCall_vi(routine,arg)})}function __spawn_thread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! _spawn_thread() can only ever be called from main application thread!\";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw\"Internal error!\";if(!threadParams.pthread_ptr)throw\"Internal error, no pthread ptr!\";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,thread:threadParams.pthread_ptr,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(0>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(4>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(8>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(68>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tis+(48>>2),0);Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct);Atomics.store(GROWABLE_HEAP_U32(),tis+(44>>2),42);Atomics.store(GROWABLE_HEAP_U32(),tis+(108>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(84>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+12>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+20>>2),threadParams.schedPolicy);Atomics.store(GROWABLE_HEAP_U32(),tis+(108+24>>2),threadParams.schedPrio);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(176>>2),global_locale);worker.pthread=pthread;var msg={\"cmd\":\"run\",\"start_routine\":threadParams.startRoutine,\"arg\":threadParams.arg,\"threadInfoStruct\":threadParams.pthread_ptr,\"selfThreadId\":threadParams.pthread_ptr,\"parentThreadId\":threadParams.parent_pthread_ptr,\"stackBase\":threadParams.stackBase,\"stackSize\":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_getschedparam(thread,policy,schedparam){if(!policy&&!schedparam)return ERRNO_CODES.EINVAL;if(!thread){err(\"pthread_getschedparam called with a null thread pointer!\");return ERRNO_CODES.ESRCH}var self=GROWABLE_HEAP_I32()[thread+12>>2];if(self!==thread){err(\"pthread_getschedparam attempted on thread \"+thread+\", which does not point to a valid thread, or does not exist anymore!\");return ERRNO_CODES.ESRCH}var schedPolicy=Atomics.load(GROWABLE_HEAP_U32(),thread+108+20>>2);var schedPrio=Atomics.load(GROWABLE_HEAP_U32(),thread+108+24>>2);if(policy)GROWABLE_HEAP_I32()[policy>>2]=schedPolicy;if(schedparam)GROWABLE_HEAP_I32()[schedparam>>2]=schedPrio;return 0}function _pthread_self(){return __pthread_ptr|0}Module[\"_pthread_self\"]=_pthread_self;function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer===\"undefined\"){err(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\");return 6}if(!pthread_ptr){err(\"pthread_create called with a null thread pointer!\");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;var schedPolicy=0;var schedPrio=0;if(attr){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=81920;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0;var inheritSched=GROWABLE_HEAP_I32()[attr+16>>2]===0;if(inheritSched){var prevSchedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];var prevSchedPrio=GROWABLE_HEAP_I32()[attr+24>>2];var parentThreadPtr=PThread.currentProxiedOperationCallerThread?PThread.currentProxiedOperationCallerThread:_pthread_self();_pthread_getschedparam(parentThreadPtr,attr+20,attr+24);schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2];GROWABLE_HEAP_I32()[attr+20>>2]=prevSchedPolicy;GROWABLE_HEAP_I32()[attr+24>>2]=prevSchedPrio}else{schedPolicy=GROWABLE_HEAP_I32()[attr+20>>2];schedPrio=GROWABLE_HEAP_I32()[attr+24>>2]}}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(232);for(var i=0;i<232>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct;GROWABLE_HEAP_I32()[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+156;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,schedPolicy:schedPolicy,schedPrio:schedPrio,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,parent_pthread_ptr:_pthread_self(),arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd=\"spawnThread\";postMessage(threadParams,transferList)}else{__spawn_thread(threadParams)}return 0}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();else PThread.initWorker();var GLctx;GL.init();var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf];var asmLibraryArg={\"e\":___assert_fail,\"r\":___call_main,\"w\":__emscripten_notify_thread_queue,\"a\":_abort,\"l\":_emscripten_conditional_set_current_thread_status,\"d\":_emscripten_futex_wait,\"c\":_emscripten_futex_wake,\"h\":_emscripten_get_now,\"g\":_emscripten_is_main_browser_thread,\"x\":_emscripten_is_main_runtime_thread,\"q\":_emscripten_memcpy_big,\"B\":_emscripten_num_logical_cores,\"t\":_emscripten_receive_on_main_thread_js,\"A\":_emscripten_resize_heap,\"u\":_emscripten_set_canvas_element_size,\"k\":_emscripten_set_current_thread_status,\"s\":_emscripten_set_thread_name,\"v\":_emscripten_webgl_create_context,\"m\":_fd_close,\"o\":_fd_seek,\"i\":_fd_write,\"p\":initPthreadsJS,\"memory\":wasmMemory||Module[\"wasmMemory\"],\"y\":_pthread_cleanup_pop,\"z\":_pthread_cleanup_push,\"j\":_pthread_create,\"b\":_pthread_self,\"f\":_roundf,\"n\":_sysconf,\"table\":wasmTable};var asm=createWasm();Module[\"asm\"]=asm;var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"F\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _Round=Module[\"_Round\"]=function(){return(_Round=Module[\"_Round\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=function(){return(_emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var ___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=function(){return(___em_js__initPthreadsJS=Module[\"___em_js__initPthreadsJS\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var _memalign=Module[\"_memalign\"]=function(){return(_memalign=Module[\"_memalign\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=function(){return(___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=function(){return(_emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=function(){return(_emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=function(){return(_emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var _emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=function(){return(_emscripten_main_browser_thread_id=Module[\"_emscripten_main_browser_thread_id\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};var _emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=function(){return(_emscripten_async_run_in_main_thread=Module[\"_emscripten_async_run_in_main_thread\"]=Module[\"asm\"][\"ib\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=function(){return(_emscripten_sync_run_in_main_thread=Module[\"_emscripten_sync_run_in_main_thread\"]=Module[\"asm\"][\"jb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=function(){return(_emscripten_sync_run_in_main_thread_0=Module[\"_emscripten_sync_run_in_main_thread_0\"]=Module[\"asm\"][\"kb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=function(){return(_emscripten_sync_run_in_main_thread_1=Module[\"_emscripten_sync_run_in_main_thread_1\"]=Module[\"asm\"][\"lb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=function(){return(_emscripten_sync_run_in_main_thread_2=Module[\"_emscripten_sync_run_in_main_thread_2\"]=Module[\"asm\"][\"mb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=function(){return(_emscripten_sync_run_in_main_thread_xprintf_varargs=Module[\"_emscripten_sync_run_in_main_thread_xprintf_varargs\"]=Module[\"asm\"][\"nb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=function(){return(_emscripten_sync_run_in_main_thread_3=Module[\"_emscripten_sync_run_in_main_thread_3\"]=Module[\"asm\"][\"ob\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=Module[\"asm\"][\"pb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=function(){return(_emscripten_sync_run_in_main_thread_5=Module[\"_emscripten_sync_run_in_main_thread_5\"]=Module[\"asm\"][\"qb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=function(){return(_emscripten_sync_run_in_main_thread_6=Module[\"_emscripten_sync_run_in_main_thread_6\"]=Module[\"asm\"][\"rb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=function(){return(_emscripten_sync_run_in_main_thread_7=Module[\"_emscripten_sync_run_in_main_thread_7\"]=Module[\"asm\"][\"sb\"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=Module[\"asm\"][\"tb\"]).apply(null,arguments)};var _emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=function(){return(_emscripten_async_queue_on_thread_=Module[\"_emscripten_async_queue_on_thread_\"]=Module[\"asm\"][\"ub\"]).apply(null,arguments)};var _emscripten_tls_init=Module[\"_emscripten_tls_init\"]=function(){return(_emscripten_tls_init=Module[\"_emscripten_tls_init\"]=Module[\"asm\"][\"vb\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"wb\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"xb\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"yb\"]).apply(null,arguments)};var dynCall_vi=Module[\"dynCall_vi\"]=function(){return(dynCall_vi=Module[\"dynCall_vi\"]=Module[\"asm\"][\"zb\"]).apply(null,arguments)};var dynCall_v=Module[\"dynCall_v\"]=function(){return(dynCall_v=Module[\"dynCall_v\"]=Module[\"asm\"][\"Ab\"]).apply(null,arguments)};var dynCall_ii=Module[\"dynCall_ii\"]=function(){return(dynCall_ii=Module[\"dynCall_ii\"]=Module[\"asm\"][\"Bb\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;Module[\"PThread\"]=PThread;Module[\"PThread\"]=PThread;Module[\"_pthread_self\"]=_pthread_self;Module[\"wasmMemory\"]=wasmMemory;Module[\"ExitStatus\"]=ExitStatus;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}if(!ENVIRONMENT_IS_PTHREAD)noExitRuntime=true;if(!ENVIRONMENT_IS_PTHREAD)run();\n\n\n return WasmBackendModuleThreadedSimd\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModuleThreadedSimd;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModuleThreadedSimd; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModuleThreadedSimd\"] = WasmBackendModuleThreadedSimd;\n ", "\nvar WasmBackendModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModule) {\n WasmBackendModule = WasmBackendModule || {};\n\nvar Module=typeof WasmBackendModule!==\"undefined\"?WasmBackendModule:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":151,\"maximum\":151+0,\"element\":\"anyfunc\"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_ceil=Math.ceil;var Math_floor=Math.floor;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"env\":asmLibraryArg,\"wasi_snapshot_preview1\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=exports[\"memory\"];updateGlobalBufferAndViews(wasmMemory.buffer);removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}__ATINIT__.push();function _emscripten_notify_memory_growth(memoryIndex){updateGlobalBufferAndViews(wasmMemory.buffer)}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _exit(status){exit(status)}function _proc_exit(code){_exit(code)}function _roundf(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}var asmLibraryArg={\"emscripten_notify_memory_growth\":_emscripten_notify_memory_growth,\"fd_close\":_fd_close,\"fd_seek\":_fd_seek,\"fd_write\":_fd_write,\"proc_exit\":_proc_exit,\"roundf\":_roundf};var asm=createWasm();Module[\"asm\"]=asm;var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"init\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"register_tensor\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"dispose_data\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"dispose\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"Abs\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"Add\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"AddN\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"ArgMax\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"AvgPool\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"BatchMatMul\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"ClipByValue\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"Conv2D\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"Conv2DBackpropInput\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Cos\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"CropAndResize\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"Cumsum\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"DepthToSpace\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"DepthwiseConv2dNative\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"Equal\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"Exp\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"FlipLeftRight\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Floor\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"FloorDiv\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"FusedBatchNorm\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"FusedConv2D\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"FusedDepthwiseConv2D\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"Gather\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"GatherNd\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"Greater\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"GreaterEqual\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"LeakyRelu\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"Less\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"LessEqual\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"Log\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"LogicalAnd\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"Max\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"MaxPool\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"Maximum\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"Mean\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"Min\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"Minimum\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"Multiply\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"Neg\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"NonMaxSuppressionV3\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"NonMaxSuppressionV4\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"NonMaxSuppressionV5\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"NotEqual\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"OneHot\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"PadV2\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"Pow\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"Prelu\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Prod\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"RealDiv\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Relu\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Relu6\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"ResizeBilinear\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Reverse\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"RotateWithOffset\"]).apply(null,arguments)};var _Round=Module[\"_Round\"]=function(){return(_Round=Module[\"_Round\"]=Module[\"asm\"][\"Round\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Rsqrt\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"ScatterNd\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"SelectV2\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"Sigmoid\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Sin\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Softmax\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Sqrt\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Square\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"SquaredDifference\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"StridedSlice\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Sub\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Sum\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Tanh\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Tile\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"TopK\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Transpose\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"_FusedMatMul\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"malloc\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"free\"]).apply(null,arguments)};var __start=Module[\"__start\"]=function(){return(__start=Module[\"__start\"]=Module[\"asm\"][\"_start\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"stackSave\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"stackAlloc\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"stackRestore\"]).apply(null,arguments)};Module[\"asm\"]=asm;Module[\"cwrap\"]=cwrap;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module[\"__start\"];try{entryFunction();var ret=0;exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e==\"unwind\"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e===\"object\"&&e.stack){toLog=[e,e.stack]}err(\"exception thrown: \"+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(shouldRunNow)callMain(args);postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{ABORT=true;EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}quit_(status,new ExitStatus(status))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}var shouldRunNow=true;if(Module[\"noInitialRun\"])shouldRunNow=false;noExitRuntime=true;run();\n\n\n return WasmBackendModule\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModule;\n else if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModule; });\n else if (typeof exports === 'object')\n exports[\"WasmBackendModule\"] = WasmBackendModule;\n ", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export const wasmWorkerContents = 'var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module[\"instantiateWasm\"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);Module[\"wasmModule\"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd===\"load\"){Module[\"DYNAMIC_BASE\"]=e.data.DYNAMIC_BASE;Module[\"DYNAMICTOP_PTR\"]=e.data.DYNAMICTOP_PTR;Module[\"wasmModule\"]=e.data.wasmModule;Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob===\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({\"cmd\":\"loaded\"})}else if(e.data.cmd===\"objectTransfer\"){Module[\"PThread\"].receiveObjectTransfer(e.data)}else if(e.data.cmd===\"run\"){Module[\"__performance_now_clock_drift\"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module[\"__register_pthread_ptr\"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module[\"establishStackSpace\"](top,max);Module[\"_emscripten_tls_init\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].setThreadStatus(Module[\"_pthread_self\"](),1);try{var result=Module[\"dynCall_ii\"](e.data.start_routine,e.data.arg);if(!Module[\"getNoExitRuntime\"]())Module[\"PThread\"].threadExit(result)}catch(ex){if(ex===\"Canceled!\"){Module[\"PThread\"].threadCancel()}else if(ex!=\"unwind\"){Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+4>>2,ex instanceof Module[\"ExitStatus\"]?ex.status:-2);Atomics.store(Module[\"HEAPU32\"],threadInfoStruct+0>>2,1);Module[\"_emscripten_futex_wake\"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module[\"ExitStatus\"]))throw ex}}}else if(e.data.cmd===\"cancel\"){if(threadInfoStruct){Module[\"PThread\"].threadCancel()}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processThreadQueue\"){if(threadInfoStruct){Module[\"_emscripten_current_thread_process_queued_calls\"]()}}else{err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){err(\"worker.js onmessage() captured an uncaught exception: \"+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require(\"worker_threads\");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",function(data){onmessage({data:data})});var nodeFS=require(\"fs\");var nodeRead=function(filename){return nodeFS.readFileSync(filename,\"utf8\")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance===\"undefined\"){performance={now:function(){return Date.now()}}}}';", null, null, null], - "mappings": "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AAS,UAAU,UAChD,SAAW,OAAO,EAAG,oBACvB,WAAa,aAAa,QAAS,OAAO,EAAG,UAC3C,SAAW,SAAS,KAAO,WAAW,KAC5C,OAAS,GAAI,EAAG,EAAI,SAAU,EAAE,EAC9B,WAAa,WAAW,WAAY,EAAI,GAE1C,WAAa,WAAW,WAAY,MAAK,SAAS,MAAO,SACzD,GAAM,WAAY,UAAU,UAC5B,MAAO,OAAM,WAAY,SAAU,WCxDrC,AAsBO,GAAM,qBAAkC,CAC7C,WAAY,UACZ,SAAU,AAAC,IACF,EAAC,EAAG,IAAM,UAAU,OCzB/B,AAwHA,GAAM,aAA4B,CAChC,cACA,eACA,gBACA,cACA,eACA,iBACA,iBACA,eACA,gBACA,gBACA,eACA,gBACA,oBACA,kBACA,sBACA,yBACA,sBACA,eACA,eACA,sBACA,qBACA,iBACA,8BACA,iBACA,iBACA,cACA,eACA,iBACA,gCACA,qBACA,cACA,cACA,cACA,cACA,qBACA,gBACA,mBACA,gBACA,yBACA,iBACA,uBACA,mBACA,mBACA,gBACA,gBACA,oBACA,gBACA,cACA,qBACA,cACA,cACA,cACA,kBACA,oBACA,kBACA,eACA,cACA,kBACA,oBACA,cACA,mBACA,cACA,iBACA,mBACA,eACA,gBACA,gBACA,cACA,gBACA,qBACA,gBACA,eACA,kBACA,yBACA,gCACA,kBACA,gBACA,gBACA,iBACA,eACA,kBACA,eACA,cACA,eACA,gBACA,kBACA,mBACA,yBACA,yBACA,iBACA,iBACA,eACA,4BACA,iBACA,eACA,cACA,cACA,cACA,eACA,eACA,oBACA,iBACA,6BACA,qBAGF,OAAW,kBAAkB,aAC3B,iBAAiB,gBCpOnB,AA4BA,OAAO,UAAU,IAAM,WACrB,YAAK,kBACE,IAAI,OC9Bb,AA4BA,OAAO,UAAU,KAAO,WACtB,YAAK,kBACE,KAAK,OC9Bd,AA4BA,OAAO,UAAU,MAAQ,WACvB,YAAK,kBACE,MAAM,OC9Bf,AA+BA,OAAO,UAAU,UAAY,SAChB,GACX,YAAK,kBACE,UAAU,KAAM,IClCzB,AA0BA,OAAO,UAAU,IAAM,SAA2B,GAChD,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CA,aACA,WACA,YACA,WACA,YACA,YACA,cACA,gBACA,qBACA,mBACA,kBACA,gBACA,qBACA,eACA,WACA,WACA,WACA,cACA,iBACA,aACA,2BACA,0BACA,aACA,6BACA,4BACA,aACA,UACA,WACA,oBACA,aACA,oBACA,mBACA,4BACA,0CACA,yCACA,WACA,iBACA,8BACA,+BACA,cACA,UACA,eACA,YACA,UACA,UACA,iBACA,YACA,UACA,WACA,oBACA,YACA,eACA,kBACA,2BACA,eACA,eACA,cACA,mBACA,eACA,WACA,WACA,eACA,YACA,YACA,gBACA,WACA,gBACA,eACA,UACA,YACA,iBACA,iBACA,gBACA,UACA,cACA,cACA,cACA,gBACA,qBACA,mBACA,wBACA,UACA,WACA,UACA,cACA,gBACA,UACA,kBACA,eACA,UACA,0BACA,0BACA,0BACA,eACA,aACA,eACA,WACA,YACA,UACA,YACA,WACA,YACA,WACA,iBACA,WACA,YACA,cACA,qBACA,0BACA,4BACA,iCACA,cACA,uBACA,YACA,YACA,gBACA,aACA,WACA,cACA,WACA,UACA,WACA,YACA,cACA,eACA,qBACA,oBACA,aACA,WACA,aACA,wBACA,WACA,mBACA,UACA,UACA,UACA,WACA,WACA,WACA,gBACA,aACA,aACA,yBACA,iBAGF,OAAW,gBAAgB,eACzB,eAAe,cC7UjB,ACAA,AAiBA,GAAM,UAAmD,GAEnD,iBAA2C,CAC/C,MAAO,GACP,UAAW,GACX,mBAAoB,GACpB,sBAAuB,GACvB,MAAO,GACP,QAAS,GACT,6BAA8B,IAO1B,yBACF,aAAsB,IACxB,SAAS,cAAgB,GAGrB,yBAA0B,cAC9B,GAAI,CAAE,gBAAgB,YACpB,GAAM,QAAS,yBAAyB,cACxC,GAAI,SAAW,KACb,SAAS,cAAgB,WAEzB,gBAAQ,IAAI,0CAA2C,cAChD,KAGX,GAAM,IAAK,SAAS,cACpB,MAAI,IAAG,gBACL,OAAO,UAAS,cACT,gBAAgB,eAGzB,IAAG,QAAQ,GAAG,YACd,GAAG,QAAQ,GAAG,cACd,GAAG,QAAQ,GAAG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U,KAAK,UACf,GAAM,MAAO,qBAAa,uBAAuB,aACjD,OAAS,WAAU,CAAC,OAAQ,CAAC,EAAG,QAAS,iBAAS,MAAO,CAAC,QAG5D,iBAAU,QAAQ,GAAK,SAAQ,8BAA8B,IACtD,OAGF,GAAM,2BAAyC,CACpD,WAAY,mBACZ,YAAa,QACb,WAAY,qBChHd,AA4KA,GAAM,gBAAgC,CACpC,UACA,cACA,oBACA,WACA,YACA,aACA,WACA,YACA,WACA,WACA,cACA,cACA,YACA,aACA,aACA,YACA,aACA,iBACA,eACA,oBACA,mBACA,mBACA,iBACA,sBACA,gBACA,YACA,YACA,kBACA,kBACA,eACA,cACA,4BACA,2BACA,cACA,8BACA,0BACA,cACA,WACA,YACA,qBACA,cACA,qBACA,oBACA,2CACA,0CACA,6BACA,YACA,iBACA,WACA,eACA,aACA,WACA,WACA,kBACA,aACA,WACA,YACA,qBACA,aACA,gBACA,iBACA,mBACA,4BACA,gBACA,gBACA,eACA,oBACA,gBACA,YACA,YACA,gBACA,aACA,aACA,iBACA,YACA,iBACA,gBACA,aACA,WACA,kBACA,kBACA,iBACA,WACA,iBACA,eACA,oBACA,mBACA,yBACA,eACA,YACA,WACA,eACA,iBACA,WACA,mBACA,gBACA,WACA,2BACA,2BACA,2BACA,gBACA,cACA,gBACA,YACA,aACA,WACA,aACA,YACA,aACA,YACA,eACA,kBACA,aACA,YACA,eACA,sBACA,0BACA,6BACA,iCACA,eACA,wBACA,aACA,aACA,iBACA,cACA,YACA,eACA,YACA,WACA,YACA,aACA,eACA,gBACA,sBACA,qBACA,cACA,YACA,cACA,yBACA,YACA,oBACA,WACA,WACA,WACA,YACA,YACA,YACA,iBACA,cACA,cACA,0BACA,kBAGF,OAAW,gBAAgB,gBACzB,eAAe,cCxUjB,ACAA,AAGA,GAAM,UAAU,QCHhB,AAsCO,GAAM,UAAU,CACrB,YAAa,QACb,mBAAoB,SACpB,qBAAsB,SACtB,YAAa,SACb,cAAe,SACf,iBAAkB,SAClB,KAAQ,UC7CV,AAkB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", + "mappings": "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AO,CAAC,EAAG,IAAM,GAAU,EAAI,MC7BnC,AAqBO,GAAM,IAA+B,CAC1C,WAAY,GACZ,SAAU,CAAC,EAAc,EAAiB,KACxC,GAAM,GAA2B,EAC3B,CAAC,QAAQ,EACf,MAAO,CAAC,MAAO,IAAM,GAAM,EAAI,MC1BnC,AA8BO,GAAM,IAA2C,CACtD,WAAY,GACZ,aAAc,CAAC,cACf,SAAU,CAAC,EAAY,KACrB,GAAM,CAAC,GAAc,EAKrB,MAAO,CAAC,EAHK,IACJ,GAAoB,EAAI,MAMrC,YAA+C,EAAM,GAInD,GAAM,GAAqB,GAAQ,EAAS,GAAU,IAChD,EAAW,GAAO,EAAG,GACvB,EAAa,GAAa,EAAS,GAAO,EAAG,UAC3C,EAAW,EAAS,KAAO,EAAW,KAC5C,OAAS,GAAI,EAAG,EAAI,EAAU,EAAE,EAC9B,EAAa,GAAW,EAAY,EAAI,GAE1C,EAAa,GAAW,EAAY,GAAK,EAAS,MAAO,SACzD,GAAM,GAAY,GAAU,GAC5B,MAAO,IAAM,EAAY,EAAU,GCxDrC,AAsBO,GAAM,IAAkC,CAC7C,WAAY,GACZ,SAAU,AAAC,GACF,EAAC,EAAG,IAAM,GAAU,MCzB/B,AAwHA,GAAM,IAA4B,CAChC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAGF,OAAW,KAAkB,IAC3B,G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vC,EACF,GAAI,CAAC,OAAQ,CAAC,EAAG,GAAM,UAAS,MAAO,CAAC,KAAM,EAAG,SAAU,MAC/D,EAAI,KAAK,GACT,EAAc,KAAK,GACnB,EAAc,KAAK,GACnB,EAAc,KAAK,GACnB,EAAc,KAAK,GACnB,EAAc,KAAK,GAGrB,GAAM,GAAS,GAAK,CAAC,OAAQ,EAAK,UAAS,MAAO,CAAC,KAAM,KAEzD,SAAc,QAAQ,GAAK,EAAQ,8BAA8B,IAE1D,EAGF,GAAM,IAAyC,CACpD,WAAY,GACZ,YAAa,MACb,WAAY,ICrFd,AAgLA,GAAM,IAAgC,CACpC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAGF,OAAW,KAAgB,IACzB,GAAe,GC7UjB,ACAA,AAiBA,GAAM,IAAmD,GAEnD,GAA2C,CAC/C,MAAO,GACP,UAAW,GACX,mBAAoB,GACpB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AAM,KAAO,EACtB,MAAO,GAET,GAAM,GAAY,GAAM,CACtB,UACA,MAAO,CAAC,MAAO,EAAG,KAAM,EAAa,KAAM,EAAG,MAAO,aAEjD,EAAW,GAAK,CACpB,OAAQ,CAAC,EAAG,GACZ,UACA,MAAO,CAAC,KAAM,CAAC,EAAS,MAG1B,SAAU,KAAK,GACf,EAAU,KAAK,GAGX,EAAa,EAAQ,EAAW,EAAU,EAAO,IAIrD,EAAc,EAChB,EAAK,qBAAsB,EAAY,EAAa,GAElD,EACF,GAAQ,CAAC,OAAQ,CAAC,EAAG,GAAc,UAAS,MAAO,CAAC,MAAO,KAE3D,EAAS,EACb,GAAI,GAAe,MACjB,EAAU,KAAK,GACf,GAAM,GAAO,EAAa,uBAAuB,GACjD,EAAS,GAAU,CAAC,OAAQ,CAAC,EAAG,GAAS,UAAS,MAAO,CAAC,UAG5D,SAAU,QAAQ,GAAK,EAAQ,8BAA8B,IACtD,EAGF,GAAM,IAAyC,CACpD,WAAY,GACZ,YAAa,QACb,WAAY,IChHd,AA4KA,GAAM,IAAgC,CACpC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,G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", "names": [] } diff --git a/dist/tfjs.esm.json b/dist/tfjs.esm.json index dc0c2f7..4c6a111 100644 --- a/dist/tfjs.esm.json +++ b/dist/tfjs.esm.json @@ -20854,7 +20854,7 @@ "dist/tfjs.esm.js.map": { "imports": [], "inputs": {}, - "bytes": 1146818 + "bytes": 1136864 }, "dist/tfjs.esm.js": { "imports": [], @@ -21339,3778 +21339,3778 @@ ], "inputs": { "empty:/home/vlado/dev/face-api/node_modules/node-fetch/browser.js": { - "bytesInOutput": 39 + "bytesInOutput": 18 }, "node_modules/seedrandom/lib/alea.js": { - "bytesInOutput": 1265 + "bytesInOutput": 995 }, "node_modules/seedrandom/lib/xor128.js": { - "bytesInOutput": 1027 + "bytesInOutput": 760 }, "node_modules/seedrandom/lib/xorwow.js": { - "bytesInOutput": 1132 + "bytesInOutput": 850 }, "node_modules/seedrandom/lib/xorshift7.js": { - "bytesInOutput": 1284 + "bytesInOutput": 1006 }, "node_modules/seedrandom/lib/xor4096.js": { - "bytesInOutput": 1483 + "bytesInOutput": 1169 }, "node_modules/seedrandom/lib/tychei.js": { - "bytesInOutput": 1154 + "bytesInOutput": 885 }, "empty:crypto": { - "bytesInOutput": 38 + "bytesInOutput": 18 }, "node_modules/seedrandom/seedrandom.js": { - "bytesInOutput": 2544 + "bytesInOutput": 1620 }, "node_modules/seedrandom/index.js": { - "bytesInOutput": 358 + "bytesInOutput": 177 }, "empty:/home/vlado/dev/face-api/node_modules/string_decoder/lib/string_decoder.js": { - "bytesInOutput": 46 + "bytesInOutput": 18 }, "empty:path": { - "bytesInOutput": 36 + "bytesInOutput": 18 }, "empty:worker_threads": { - "bytesInOutput": 46 + "bytesInOutput": 18 }, "empty:perf_hooks": { - "bytesInOutput": 42 + "bytesInOutput": 18 }, "node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.js": { - "bytesInOutput": 70199 + "bytesInOutput": 45506 }, "node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js": { - "bytesInOutput": 26105 + "bytesInOutput": 18001 }, "node_modules/@tensorflow/tfjs-core/dist/backends/backend.js": { - "bytesInOutput": 9449 + "bytesInOutput": 5981 }, "node_modules/@tensorflow/tfjs-core/dist/util_base.js": { - "bytesInOutput": 8547 + "bytesInOutput": 6014 }, "node_modules/@tensorflow/tfjs-core/dist/environment.js": { - "bytesInOutput": 2836 + "bytesInOutput": 2118 }, "node_modules/@tensorflow/tfjs-core/dist/global_util.js": { - "bytesInOutput": 657 + "bytesInOutput": 462 }, "node_modules/@tensorflow/tfjs-core/dist/kernel_names.js": { - "bytesInOutput": 3328 + "bytesInOutput": 2294 }, "node_modules/@tensorflow/tfjs-core/dist/kernel_registry.js": { - "bytesInOutput": 1741 + "bytesInOutput": 946 }, "node_modules/@tensorflow/tfjs-core/dist/util.js": { - "bytesInOutput": 2856 + "bytesInOutput": 1946 }, "node_modules/@tensorflow/tfjs-core/dist/profiler.js": { - "bytesInOutput": 1907 + "bytesInOutput": 1214 }, "node_modules/@tensorflow/tfjs-core/dist/tape.js": { - "bytesInOutput": 2521 + "bytesInOutput": 1538 }, "node_modules/@tensorflow/tfjs-core/dist/tensor_format.js": { - "bytesInOutput": 3542 + "bytesInOutput": 1811 }, "node_modules/@tensorflow/tfjs-core/dist/tensor.js": { - "bytesInOutput": 4847 + "bytesInOutput": 3899 }, "node_modules/@tensorflow/tfjs-core/dist/tensor_util.js": { - "bytesInOutput": 1066 + "bytesInOutput": 656 }, "node_modules/@tensorflow/tfjs-core/dist/types.js": { - "bytesInOutput": 1557 + "bytesInOutput": 802 }, "node_modules/@tensorflow/tfjs-core/dist/engine.js": { - "bytesInOutput": 19509 + "bytesInOutput": 15035 }, "node_modules/@tensorflow/tfjs-core/dist/device_util.js": { - "bytesInOutput": 2380 + "bytesInOutput": 2280 }, "node_modules/@tensorflow/tfjs-core/dist/flags.js": { - "bytesInOutput": 868 + "bytesInOutput": 819 }, "node_modules/@tensorflow/tfjs-core/dist/tensor_util_env.js": { - "bytesInOutput": 2646 + "bytesInOutput": 1699 }, "node_modules/@tensorflow/tfjs-core/dist/ops/operation.js": { - "bytesInOutput": 659 + "bytesInOutput": 515 }, "node_modules/@tensorflow/tfjs-core/dist/ops/complex.js": { - "bytesInOutput": 367 + "bytesInOutput": 247 }, "node_modules/@tensorflow/tfjs-core/dist/ops/tensor_ops_util.js": { - "bytesInOutput": 1314 + "bytesInOutput": 828 }, "node_modules/@tensorflow/tfjs-core/dist/ops/tensor.js": { - "bytesInOutput": 131 + "bytesInOutput": 52 }, "node_modules/@tensorflow/tfjs-core/dist/io/types.js": { - "bytesInOutput": 91 + "bytesInOutput": 73 }, "node_modules/@tensorflow/tfjs-core/dist/io/io_utils.js": { - "bytesInOutput": 8136 + "bytesInOutput": 5274 }, "node_modules/@tensorflow/tfjs-core/dist/io/router_registry.js": { - "bytesInOutput": 1190 + "bytesInOutput": 686 }, "node_modules/@tensorflow/tfjs-core/dist/io/indexed_db.js": { - "bytesInOutput": 5549 + "bytesInOutput": 3447 }, "node_modules/@tensorflow/tfjs-core/dist/io/local_storage.js": { - "bytesInOutput": 5865 + "bytesInOutput": 4305 }, "node_modules/@tensorflow/tfjs-core/dist/io/model_management.js": { - "bytesInOutput": 3226 + "bytesInOutput": 1951 }, "node_modules/@tensorflow/tfjs-core/dist/platforms/platform_browser.js": { - "bytesInOutput": 723 + "bytesInOutput": 497 }, "node_modules/@tensorflow/tfjs-core/dist/platforms/platform_node.js": { - "bytesInOutput": 774 + "bytesInOutput": 563 }, "node_modules/@tensorflow/tfjs-core/dist/ops/buffer.js": { - "bytesInOutput": 155 + "bytesInOutput": 71 }, "node_modules/@tensorflow/tfjs-core/dist/ops/cast.js": { - "bytesInOutput": 378 + "bytesInOutput": 304 }, "node_modules/@tensorflow/tfjs-core/dist/ops/clone.js": { - "bytesInOutput": 149 + "bytesInOutput": 109 }, "node_modules/@tensorflow/tfjs-core/dist/ops/print.js": { - "bytesInOutput": 63 + "bytesInOutput": 47 }, "node_modules/@tensorflow/tfjs-core/dist/base_side_effects.js": { - "bytesInOutput": 91 + "bytesInOutput": 57 }, "node_modules/@tensorflow/tfjs-core/dist/io/io.js": { - "bytesInOutput": 729 + "bytesInOutput": 463 }, "node_modules/@tensorflow/tfjs-core/dist/io/browser_files.js": { - "bytesInOutput": 5982 + "bytesInOutput": 3912 }, "node_modules/@tensorflow/tfjs-core/dist/io/progress.js": { - "bytesInOutput": 1114 + "bytesInOutput": 563 }, "node_modules/@tensorflow/tfjs-core/dist/io/weights_loader.js": { - "bytesInOutput": 3526 + "bytesInOutput": 1497 }, "node_modules/@tensorflow/tfjs-core/dist/io/http.js": { - "bytesInOutput": 5904 + "bytesInOutput": 4112 }, "node_modules/@tensorflow/tfjs-core/dist/io/passthrough.js": { - "bytesInOutput": 1177 + "bytesInOutput": 872 }, "node_modules/@tensorflow/tfjs-core/dist/math.js": { - "bytesInOutput": 81 + "bytesInOutput": 42 }, "node_modules/@tensorflow/tfjs-core/dist/ops/mat_mul.js": { - "bytesInOutput": 282 + "bytesInOutput": 181 }, "node_modules/@tensorflow/tfjs-core/dist/ops/one_hot.js": { - "bytesInOutput": 312 + "bytesInOutput": 233 }, "node_modules/@tensorflow/tfjs-core/dist/ops/transpose.js": { - "bytesInOutput": 511 + "bytesInOutput": 407 }, "node_modules/@tensorflow/tfjs-core/dist/ops/confusion_matrix.js": { - "bytesInOutput": 1155 + "bytesInOutput": 740 }, "node_modules/@tensorflow/tfjs-core/dist/ops/browser.js": { - "bytesInOutput": 4099 + "bytesInOutput": 2907 }, "node_modules/@tensorflow/tfjs-core/dist/ops/tensor3d.js": { - "bytesInOutput": 525 + "bytesInOutput": 380 }, "node_modules/@tensorflow/tfjs-core/dist/ops/gather_nd_util.js": { - "bytesInOutput": 1402 + "bytesInOutput": 890 }, "node_modules/@tensorflow/tfjs-core/dist/ops/scatter_nd_util.js": { - "bytesInOutput": 2589 + "bytesInOutput": 1764 }, "node_modules/@tensorflow/tfjs-core/dist/ops/slice_util.js": { - "bytesInOutput": 7720 + "bytesInOutput": 3874 }, "node_modules/@tensorflow/tfjs-core/dist/serialization.js": { - "bytesInOutput": 983 + "bytesInOutput": 736 }, "node_modules/@tensorflow/tfjs-core/dist/test_util.js": { - "bytesInOutput": 3151 + "bytesInOutput": 1852 }, "node_modules/@tensorflow/tfjs-core/dist/version.js": { - "bytesInOutput": 20 + "bytesInOutput": 15 }, "node_modules/@tensorflow/tfjs-core/dist/globals.js": { - "bytesInOutput": 1455 + "bytesInOutput": 970 }, "node_modules/@tensorflow/tfjs-core/dist/ops/add.js": { - "bytesInOutput": 196 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/floorDiv.js": { - "bytesInOutput": 225 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/div.js": { - "bytesInOutput": 279 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/mul.js": { - "bytesInOutput": 200 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/abs.js": { - "bytesInOutput": 220 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/acos.js": { - "bytesInOutput": 121 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/acosh.js": { - "bytesInOutput": 126 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/add_n.js": { - "bytesInOutput": 669 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/all.js": { - "bytesInOutput": 173 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/any.js": { - "bytesInOutput": 173 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/arg_max.js": { - "bytesInOutput": 157 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/arg_min.js": { - "bytesInOutput": 157 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/asin.js": { - "bytesInOutput": 121 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/asinh.js": { - "bytesInOutput": 126 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/atan.js": { - "bytesInOutput": 121 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/atan2.js": { - "bytesInOutput": 207 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/atanh.js": { - "bytesInOutput": 126 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/conv_util.js": { - "bytesInOutput": 9565 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/reshape.js": { - "bytesInOutput": 182 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool.js": { - "bytesInOutput": 898 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool_3d.js": { - "bytesInOutput": 1213 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/concat.js": { - "bytesInOutput": 535 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/sigmoid.js": { - "bytesInOutput": 136 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/slice.js": { - "bytesInOutput": 257 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/tanh.js": { - "bytesInOutput": 122 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/basic_lstm_cell.js": { - "bytesInOutput": 889 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/batch_to_space_nd.js": { - "bytesInOutput": 712 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm_util.js": { - "bytesInOutput": 213 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm.js": { - "bytesInOutput": 1011 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm2d.js": { - "bytesInOutput": 1124 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm3d.js": { - "bytesInOutput": 1124 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm4d.js": { - "bytesInOutput": 1124 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/bincount.js": { - "bytesInOutput": 617 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/broadcast_to.js": { - "bytesInOutput": 894 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/ceil.js": { - "bytesInOutput": 121 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/clip_by_value.js": { - "bytesInOutput": 363 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/concat_1d.js": { - "bytesInOutput": 82 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/concat_2d.js": { - "bytesInOutput": 90 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/concat_3d.js": { - "bytesInOutput": 90 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/concat_4d.js": { - "bytesInOutput": 90 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/conv2d.js": { - "bytesInOutput": 1251 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/conv1d.js": { - "bytesInOutput": 1424 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/conv2d_backprop_input.js": { - "bytesInOutput": 1568 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/conv2d_transpose.js": { - "bytesInOutput": 314 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/conv3d.js": { - "bytesInOutput": 1165 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/conv3d_backprop_input.js": { - "bytesInOutput": 1313 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/conv3d_transpose.js": { - "bytesInOutput": 275 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/cos.js": { - "bytesInOutput": 116 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/cosh.js": { - "bytesInOutput": 121 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/cumsum.js": { - "bytesInOutput": 209 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/dense_bincount.js": { - "bytesInOutput": 784 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/depth_to_space.js": { - "bytesInOutput": 956 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/depthwise_conv2d.js": { - "bytesInOutput": 1149 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/diag.js": { - "bytesInOutput": 121 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/dilation2d.js": { - "bytesInOutput": 857 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/broadcast_util.js": { - "bytesInOutput": 916 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/equal.js": { - "bytesInOutput": 253 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/where.js": { - "bytesInOutput": 675 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/zeros_like.js": { - "bytesInOutput": 146 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/div_no_nan.js": { - "bytesInOutput": 276 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/dot.js": { - "bytesInOutput": 985 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/elu.js": { - "bytesInOutput": 116 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/erf.js": { - "bytesInOutput": 267 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/exp.js": { - "bytesInOutput": 116 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/expand_dims.js": { - "bytesInOutput": 278 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/expm1.js": { - "bytesInOutput": 126 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/tile.js": { - "bytesInOutput": 291 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/eye.js": { - "bytesInOutput": 745 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/fill.js": { - "bytesInOutput": 102 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/floor.js": { - "bytesInOutput": 126 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/gather.js": { - "bytesInOutput": 273 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/greater.js": { - "bytesInOutput": 265 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/greater_equal.js": { - "bytesInOutput": 295 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/imag.js": { - "bytesInOutput": 139 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/is_finite.js": { - "bytesInOutput": 142 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/is_inf.js": { - "bytesInOutput": 126 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/is_nan.js": { - "bytesInOutput": 127 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/leaky_relu.js": { - "bytesInOutput": 175 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/less.js": { - "bytesInOutput": 247 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/less_equal.js": { - "bytesInOutput": 277 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/linspace.js": { - "bytesInOutput": 174 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/local_response_normalization.js": { - "bytesInOutput": 762 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/log.js": { - "bytesInOutput": 116 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/log1p.js": { - "bytesInOutput": 126 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients.js": { - "bytesInOutput": 3865 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/neg.js": { - "bytesInOutput": 116 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/softplus.js": { - "bytesInOutput": 141 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/log_sigmoid.js": { - "bytesInOutput": 198 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/max.js": { - "bytesInOutput": 183 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/sub.js": { - "bytesInOutput": 195 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/sum.js": { - "bytesInOutput": 218 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/log_softmax.js": { - "bytesInOutput": 659 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/axis_util.js": { - "bytesInOutput": 1350 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/log_sum_exp.js": { - "bytesInOutput": 359 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/logical_and.js": { - "bytesInOutput": 267 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/logical_not.js": { - "bytesInOutput": 158 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/logical_or.js": { - "bytesInOutput": 261 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/logical_xor.js": { - "bytesInOutput": 263 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/max_pool.js": { - "bytesInOutput": 865 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/max_pool_3d.js": { - "bytesInOutput": 1187 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/max_pool_with_argmax.js": { - "bytesInOutput": 338 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/maximum.js": { - "bytesInOutput": 326 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/mean.js": { - "bytesInOutput": 171 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/min.js": { - "bytesInOutput": 166 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/minimum.js": { - "bytesInOutput": 326 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/mirror_pad.js": { - "bytesInOutput": 949 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/mod.js": { - "bytesInOutput": 195 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/square.js": { - "bytesInOutput": 140 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/moments.js": { - "bytesInOutput": 405 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/multi_rnn_cell.js": { - "bytesInOutput": 525 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/multinomial.js": { - "bytesInOutput": 623 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/not_equal.js": { - "bytesInOutput": 271 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/zeros.js": { - "bytesInOutput": 256 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/ones.js": { - "bytesInOutput": 255 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/ones_like.js": { - "bytesInOutput": 141 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/outer_product.js": { - "bytesInOutput": 368 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/pad.js": { - "bytesInOutput": 275 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/pad1d.js": { - "bytesInOutput": 189 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/pad2d.js": { - "bytesInOutput": 240 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/pad3d.js": { - "bytesInOutput": 264 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/pad4d.js": { - "bytesInOutput": 288 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/space_to_batch_nd.js": { - "bytesInOutput": 761 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/pool.js": { - "bytesInOutput": 2100 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/pow.js": { - "bytesInOutput": 234 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/prelu.js": { - "bytesInOutput": 197 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/prod.js": { - "bytesInOutput": 222 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/rand.js": { - "bytesInOutput": 415 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/rand_util.js": { - "bytesInOutput": 2345 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/random_gamma.js": { - "bytesInOutput": 401 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/random_normal.js": { - "bytesInOutput": 352 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/random_uniform.js": { - "bytesInOutput": 278 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/range.js": { - "bytesInOutput": 190 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/real.js": { - "bytesInOutput": 139 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/reciprocal.js": { - "bytesInOutput": 151 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/relu.js": { - "bytesInOutput": 121 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/relu6.js": { - "bytesInOutput": 126 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/reverse.js": { - "bytesInOutput": 165 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/reverse_1d.js": { - "bytesInOutput": 203 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/reverse_2d.js": { - "bytesInOutput": 211 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/reverse_3d.js": { - "bytesInOutput": 211 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/reverse_4d.js": { - "bytesInOutput": 211 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/round.js": { - "bytesInOutput": 127 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/rsqrt.js": { - "bytesInOutput": 126 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/scalar.js": { - "bytesInOutput": 416 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/selu.js": { - "bytesInOutput": 121 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/separable_conv2d.js": { - "bytesInOutput": 1826 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/setdiff1d_async.js": { - "bytesInOutput": 816 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/sign.js": { - "bytesInOutput": 121 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/sin.js": { - "bytesInOutput": 116 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/sinh.js": { - "bytesInOutput": 121 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/slice1d.js": { - "bytesInOutput": 223 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/slice2d.js": { - "bytesInOutput": 219 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/slice3d.js": { - "bytesInOutput": 219 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/slice4d.js": { - "bytesInOutput": 219 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/softmax.js": { - "bytesInOutput": 389 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/spectral/fft.js": { - "bytesInOutput": 219 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/spectral/ifft.js": { - "bytesInOutput": 224 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/spectral/irfft.js": { - "bytesInOutput": 940 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/split.js": { - "bytesInOutput": 183 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/spectral/rfft.js": { - "bytesInOutput": 1357 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/sqrt.js": { - "bytesInOutput": 121 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/squared_difference.js": { - "bytesInOutput": 340 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/squeeze.js": { - "bytesInOutput": 149 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/stack.js": { - "bytesInOutput": 373 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/step.js": { - "bytesInOutput": 149 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/strided_slice.js": { - "bytesInOutput": 337 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/tan.js": { - "bytesInOutput": 116 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/tensor1d.js": { - "bytesInOutput": 246 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/tensor2d.js": { - "bytesInOutput": 526 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/tensor4d.js": { - "bytesInOutput": 526 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/tensor5d.js": { - "bytesInOutput": 528 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/tensor6d.js": { - "bytesInOutput": 556 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/topk.js": { - "bytesInOutput": 435 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/truncated_normal.js": { - "bytesInOutput": 364 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/unique.js": { - "bytesInOutput": 281 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/unsorted_segment_sum.js": { - "bytesInOutput": 421 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/unstack.js": { - "bytesInOutput": 321 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/variable.js": { - "bytesInOutput": 118 - }, - "node_modules/@tensorflow/tfjs-core/dist/backends/where_impl.js": { - "bytesInOutput": 359 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/where_async.js": { - "bytesInOutput": 261 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/boolean_mask.js": { - "bytesInOutput": 1048 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/ops.js": { - "bytesInOutput": 504 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/compare.js": { - "bytesInOutput": 2011 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/binary_ops.js": { - "bytesInOutput": 2807 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/norm.js": { - "bytesInOutput": 1163 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/moving_average.js": { - "bytesInOutput": 629 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/scatter_nd.js": { - "bytesInOutput": 346 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/sparse_to_dense_util.js": { - "bytesInOutput": 943 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/sparse_to_dense.js": { - "bytesInOutput": 617 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/gather_nd.js": { - "bytesInOutput": 234 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/dropout_util.js": { - "bytesInOutput": 364 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/dropout.js": { - "bytesInOutput": 571 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/signal_ops_util.js": { - "bytesInOutput": 361 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/in_top_k.js": { - "bytesInOutput": 1517 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/fused_ops.js": { "bytesInOutput": 130 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/conv2d_backprop_filter.js": { - "bytesInOutput": 1357 + "node_modules/@tensorflow/tfjs-core/dist/ops/floorDiv.js": { + "bytesInOutput": 145 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/fused_util.js": { - "bytesInOutput": 943 + "node_modules/@tensorflow/tfjs-core/dist/ops/div.js": { + "bytesInOutput": 192 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/fused/conv2d.js": { - "bytesInOutput": 3167 + "node_modules/@tensorflow/tfjs-core/dist/ops/mul.js": { + "bytesInOutput": 129 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/depthwise_conv2d_native_backprop_filter.js": { - "bytesInOutput": 518 + "node_modules/@tensorflow/tfjs-core/dist/ops/abs.js": { + "bytesInOutput": 162 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/depthwise_conv2d_native_backprop_input.js": { - "bytesInOutput": 550 + "node_modules/@tensorflow/tfjs-core/dist/ops/acos.js": { + "bytesInOutput": 87 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/fused/depthwise_conv2d.js": { - "bytesInOutput": 3284 + "node_modules/@tensorflow/tfjs-core/dist/ops/acosh.js": { + "bytesInOutput": 89 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/fused/mat_mul.js": { - "bytesInOutput": 3225 + "node_modules/@tensorflow/tfjs-core/dist/ops/add_n.js": { + "bytesInOutput": 521 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/signal/hamming_window.js": { - "bytesInOutput": 119 + "node_modules/@tensorflow/tfjs-core/dist/ops/all.js": { + "bytesInOutput": 128 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/signal/hann_window.js": { + "node_modules/@tensorflow/tfjs-core/dist/ops/any.js": { + "bytesInOutput": 128 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/arg_max.js": { "bytesInOutput": 108 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/signal/frame.js": { - "bytesInOutput": 512 + "node_modules/@tensorflow/tfjs-core/dist/ops/arg_min.js": { + "bytesInOutput": 108 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/signal/stft.js": { - "bytesInOutput": 413 + "node_modules/@tensorflow/tfjs-core/dist/ops/asin.js": { + "bytesInOutput": 87 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/image/crop_and_resize.js": { - "bytesInOutput": 1226 + "node_modules/@tensorflow/tfjs-core/dist/ops/asinh.js": { + "bytesInOutput": 89 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/image/flip_left_right.js": { - "bytesInOutput": 319 + "node_modules/@tensorflow/tfjs-core/dist/ops/atan.js": { + "bytesInOutput": 87 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/image/rotate_with_offset.js": { - "bytesInOutput": 403 + "node_modules/@tensorflow/tfjs-core/dist/ops/atan2.js": { + "bytesInOutput": 136 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/nonmax_util.js": { - "bytesInOutput": 965 + "node_modules/@tensorflow/tfjs-core/dist/ops/atanh.js": { + "bytesInOutput": 89 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression.js": { - "bytesInOutput": 609 + "node_modules/@tensorflow/tfjs-core/dist/ops/conv_util.js": { + "bytesInOutput": 4584 }, - "node_modules/@tensorflow/tfjs-core/dist/backends/non_max_suppression_util.js": { - "bytesInOutput": 612 + "node_modules/@tensorflow/tfjs-core/dist/ops/reshape.js": { + "bytesInOutput": 128 }, - "node_modules/@tensorflow/tfjs-core/dist/backends/non_max_suppression_impl.js": { - "bytesInOutput": 3224 + "node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool.js": { + "bytesInOutput": 621 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_async.js": { - "bytesInOutput": 841 + "node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool_3d.js": { + "bytesInOutput": 869 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_with_score.js": { - "bytesInOutput": 783 + "node_modules/@tensorflow/tfjs-core/dist/ops/concat.js": { + "bytesInOutput": 398 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_with_score_async.js": { - "bytesInOutput": 1015 + "node_modules/@tensorflow/tfjs-core/dist/ops/sigmoid.js": { + "bytesInOutput": 93 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_padded.js": { - "bytesInOutput": 788 + "node_modules/@tensorflow/tfjs-core/dist/ops/slice.js": { + "bytesInOutput": 206 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_padded_async.js": { - "bytesInOutput": 931 + "node_modules/@tensorflow/tfjs-core/dist/ops/tanh.js": { + "bytesInOutput": 87 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/image/resize_bilinear.js": { - "bytesInOutput": 908 + "node_modules/@tensorflow/tfjs-core/dist/ops/basic_lstm_cell.js": { + "bytesInOutput": 454 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/image/resize_nearest_neighbor.js": { - "bytesInOutput": 1078 + "node_modules/@tensorflow/tfjs-core/dist/ops/batch_to_space_nd.js": { + "bytesInOutput": 536 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/linalg/band_part.js": { - "bytesInOutput": 1004 + "node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm_util.js": { + "bytesInOutput": 180 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/linalg/gram_schmidt.js": { - "bytesInOutput": 854 + "node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm.js": { + "bytesInOutput": 671 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/linalg/qr.js": { - "bytesInOutput": 1846 + "node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm2d.js": { + "bytesInOutput": 784 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/loss_ops_utils.js": { - "bytesInOutput": 247 + "node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm3d.js": { + "bytesInOutput": 784 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/losses/compute_weighted_loss.js": { - "bytesInOutput": 1059 + "node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm4d.js": { + "bytesInOutput": 784 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/losses/absolute_difference.js": { - "bytesInOutput": 572 + "node_modules/@tensorflow/tfjs-core/dist/ops/bincount.js": { + "bytesInOutput": 474 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/losses/cosine_distance.js": { - "bytesInOutput": 581 + "node_modules/@tensorflow/tfjs-core/dist/ops/broadcast_to.js": { + "bytesInOutput": 662 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/losses/hinge_loss.js": { - "bytesInOutput": 577 + "node_modules/@tensorflow/tfjs-core/dist/ops/ceil.js": { + "bytesInOutput": 87 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/losses/huber_loss.js": { - "bytesInOutput": 678 + "node_modules/@tensorflow/tfjs-core/dist/ops/clip_by_value.js": { + "bytesInOutput": 231 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/losses/log_loss.js": { - "bytesInOutput": 669 + "node_modules/@tensorflow/tfjs-core/dist/ops/concat_1d.js": { + "bytesInOutput": 55 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/losses/mean_squared_error.js": { - "bytesInOutput": 567 + "node_modules/@tensorflow/tfjs-core/dist/ops/concat_2d.js": { + "bytesInOutput": 57 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/losses/sigmoid_cross_entropy.js": { - "bytesInOutput": 1313 + "node_modules/@tensorflow/tfjs-core/dist/ops/concat_3d.js": { + "bytesInOutput": 57 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/losses/softmax_cross_entropy.js": { - "bytesInOutput": 1606 + "node_modules/@tensorflow/tfjs-core/dist/ops/concat_4d.js": { + "bytesInOutput": 57 }, - "node_modules/@tensorflow/tfjs-core/dist/optimizers/optimizer.js": { - "bytesInOutput": 1246 + "node_modules/@tensorflow/tfjs-core/dist/ops/conv2d.js": { + "bytesInOutput": 885 }, - "node_modules/@tensorflow/tfjs-core/dist/optimizers/adadelta_optimizer.js": { - "bytesInOutput": 2526 + "node_modules/@tensorflow/tfjs-core/dist/ops/conv1d.js": { + "bytesInOutput": 986 }, - "node_modules/@tensorflow/tfjs-core/dist/optimizers/adagrad_optimizer.js": { - "bytesInOutput": 1786 - }, - "node_modules/@tensorflow/tfjs-core/dist/optimizers/adam_optimizer.js": { - "bytesInOutput": 3175 - }, - "node_modules/@tensorflow/tfjs-core/dist/optimizers/adamax_optimizer.js": { - "bytesInOutput": 2575 - }, - "node_modules/@tensorflow/tfjs-core/dist/optimizers/sgd_optimizer.js": { + "node_modules/@tensorflow/tfjs-core/dist/ops/conv2d_backprop_input.js": { "bytesInOutput": 1133 }, - "node_modules/@tensorflow/tfjs-core/dist/optimizers/momentum_optimizer.js": { - "bytesInOutput": 1846 + "node_modules/@tensorflow/tfjs-core/dist/ops/conv2d_transpose.js": { + "bytesInOutput": 154 }, - "node_modules/@tensorflow/tfjs-core/dist/optimizers/rmsprop_optimizer.js": { - "bytesInOutput": 4115 + "node_modules/@tensorflow/tfjs-core/dist/ops/conv3d.js": { + "bytesInOutput": 854 }, - "node_modules/@tensorflow/tfjs-core/dist/optimizers/optimizer_constructors.js": { - "bytesInOutput": 868 + "node_modules/@tensorflow/tfjs-core/dist/ops/conv3d_backprop_input.js": { + "bytesInOutput": 957 }, - "node_modules/@tensorflow/tfjs-core/dist/train.js": { - "bytesInOutput": 266 + "node_modules/@tensorflow/tfjs-core/dist/ops/conv3d_transpose.js": { + "bytesInOutput": 143 }, - "node_modules/@tensorflow/tfjs-core/dist/browser_util.js": { + "node_modules/@tensorflow/tfjs-core/dist/ops/cos.js": { + "bytesInOutput": 85 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/cosh.js": { + "bytesInOutput": 87 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/cumsum.js": { + "bytesInOutput": 140 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/dense_bincount.js": { + "bytesInOutput": 610 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/depth_to_space.js": { + "bytesInOutput": 676 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/depthwise_conv2d.js": { + "bytesInOutput": 838 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/diag.js": { + "bytesInOutput": 87 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/dilation2d.js": { + "bytesInOutput": 618 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/broadcast_util.js": { + "bytesInOutput": 609 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/equal.js": { + "bytesInOutput": 156 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/where.js": { + "bytesInOutput": 371 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/zeros_like.js": { + "bytesInOutput": 97 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/div_no_nan.js": { + "bytesInOutput": 143 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/dot.js": { + "bytesInOutput": 712 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/elu.js": { + "bytesInOutput": 85 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/erf.js": { "bytesInOutput": 222 }, - "node_modules/@tensorflow/tfjs-core/dist/backends/backend_util.js": { - "bytesInOutput": 3525 + "node_modules/@tensorflow/tfjs-core/dist/ops/exp.js": { + "bytesInOutput": 85 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/concat_util.js": { - "bytesInOutput": 763 + "node_modules/@tensorflow/tfjs-core/dist/ops/expand_dims.js": { + "bytesInOutput": 201 }, - "node_modules/@tensorflow/tfjs-core/dist/ops/reduce_util.js": { + "node_modules/@tensorflow/tfjs-core/dist/ops/expm1.js": { + "bytesInOutput": 89 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/tile.js": { + "bytesInOutput": 233 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/eye.js": { + "bytesInOutput": 446 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/fill.js": { + "bytesInOutput": 79 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/floor.js": { + "bytesInOutput": 89 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/gather.js": { + "bytesInOutput": 174 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/greater.js": { + "bytesInOutput": 162 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/greater_equal.js": { + "bytesInOutput": 177 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/imag.js": { + "bytesInOutput": 95 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/is_finite.js": { + "bytesInOutput": 95 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/is_inf.js": { + "bytesInOutput": 89 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/is_nan.js": { + "bytesInOutput": 89 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/leaky_relu.js": { + "bytesInOutput": 116 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/less.js": { + "bytesInOutput": 153 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/less_equal.js": { "bytesInOutput": 168 }, + "node_modules/@tensorflow/tfjs-core/dist/ops/linspace.js": { + "bytesInOutput": 144 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/local_response_normalization.js": { + "bytesInOutput": 559 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/log.js": { + "bytesInOutput": 85 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/log1p.js": { + "bytesInOutput": 89 + }, + "node_modules/@tensorflow/tfjs-core/dist/gradients.js": { + "bytesInOutput": 2998 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/neg.js": { + "bytesInOutput": 85 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/softplus.js": { + "bytesInOutput": 95 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/log_sigmoid.js": { + "bytesInOutput": 138 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/max.js": { + "bytesInOutput": 133 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/sub.js": { + "bytesInOutput": 130 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/sum.js": { + "bytesInOutput": 165 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/log_softmax.js": { + "bytesInOutput": 424 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/axis_util.js": { + "bytesInOutput": 787 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/log_sum_exp.js": { + "bytesInOutput": 215 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/logical_and.js": { + "bytesInOutput": 171 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/logical_not.js": { + "bytesInOutput": 106 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/logical_or.js": { + "bytesInOutput": 168 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/logical_xor.js": { + "bytesInOutput": 161 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/max_pool.js": { + "bytesInOutput": 595 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/max_pool_3d.js": { + "bytesInOutput": 851 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/max_pool_with_argmax.js": { + "bytesInOutput": 209 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/maximum.js": { + "bytesInOutput": 214 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/mean.js": { + "bytesInOutput": 123 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/min.js": { + "bytesInOutput": 121 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/minimum.js": { + "bytesInOutput": 214 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/mirror_pad.js": { + "bytesInOutput": 755 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/mod.js": { + "bytesInOutput": 130 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/square.js": { + "bytesInOutput": 104 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/moments.js": { + "bytesInOutput": 210 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/multi_rnn_cell.js": { + "bytesInOutput": 313 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/multinomial.js": { + "bytesInOutput": 414 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/not_equal.js": { + "bytesInOutput": 165 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/zeros.js": { + "bytesInOutput": 147 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/ones.js": { + "bytesInOutput": 147 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/ones_like.js": { + "bytesInOutput": 95 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/outer_product.js": { + "bytesInOutput": 268 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/pad.js": { + "bytesInOutput": 216 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/pad1d.js": { + "bytesInOutput": 133 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/pad2d.js": { + "bytesInOutput": 170 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/pad3d.js": { + "bytesInOutput": 187 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/pad4d.js": { + "bytesInOutput": 204 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/space_to_batch_nd.js": { + "bytesInOutput": 558 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/pool.js": { + "bytesInOutput": 983 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/pow.js": { + "bytesInOutput": 135 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/prelu.js": { + "bytesInOutput": 126 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/prod.js": { + "bytesInOutput": 167 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/rand.js": { + "bytesInOutput": 289 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/rand_util.js": { + "bytesInOutput": 1914 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/random_gamma.js": { + "bytesInOutput": 289 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/random_normal.js": { + "bytesInOutput": 240 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/random_uniform.js": { + "bytesInOutput": 182 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/range.js": { + "bytesInOutput": 154 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/real.js": { + "bytesInOutput": 95 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/reciprocal.js": { + "bytesInOutput": 99 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/relu.js": { + "bytesInOutput": 87 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/relu6.js": { + "bytesInOutput": 89 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/reverse.js": { + "bytesInOutput": 108 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/reverse_1d.js": { + "bytesInOutput": 162 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/reverse_2d.js": { + "bytesInOutput": 164 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/reverse_3d.js": { + "bytesInOutput": 164 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/reverse_4d.js": { + "bytesInOutput": 164 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/round.js": { + "bytesInOutput": 89 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/rsqrt.js": { + "bytesInOutput": 89 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/scalar.js": { + "bytesInOutput": 340 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/selu.js": { + "bytesInOutput": 87 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/separable_conv2d.js": { + "bytesInOutput": 1183 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/setdiff1d_async.js": { + "bytesInOutput": 585 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/sign.js": { + "bytesInOutput": 87 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/sin.js": { + "bytesInOutput": 85 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/sinh.js": { + "bytesInOutput": 87 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/slice1d.js": { + "bytesInOutput": 174 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/slice2d.js": { + "bytesInOutput": 170 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/slice3d.js": { + "bytesInOutput": 170 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/slice4d.js": { + "bytesInOutput": 170 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/softmax.js": { + "bytesInOutput": 290 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/spectral/fft.js": { + "bytesInOutput": 177 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/spectral/ifft.js": { + "bytesInOutput": 179 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/spectral/irfft.js": { + "bytesInOutput": 416 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/split.js": { + "bytesInOutput": 126 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/spectral/rfft.js": { + "bytesInOutput": 593 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/sqrt.js": { + "bytesInOutput": 87 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/squared_difference.js": { + "bytesInOutput": 199 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/squeeze.js": { + "bytesInOutput": 101 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/stack.js": { + "bytesInOutput": 264 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/step.js": { + "bytesInOutput": 105 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/strided_slice.js": { + "bytesInOutput": 227 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/tan.js": { + "bytesInOutput": 85 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/tensor1d.js": { + "bytesInOutput": 145 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/tensor2d.js": { + "bytesInOutput": 381 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/tensor4d.js": { + "bytesInOutput": 381 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/tensor5d.js": { + "bytesInOutput": 383 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/tensor6d.js": { + "bytesInOutput": 391 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/topk.js": { + "bytesInOutput": 362 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/truncated_normal.js": { + "bytesInOutput": 250 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/unique.js": { + "bytesInOutput": 217 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/unsorted_segment_sum.js": { + "bytesInOutput": 257 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/unstack.js": { + "bytesInOutput": 250 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/variable.js": { + "bytesInOutput": 55 + }, + "node_modules/@tensorflow/tfjs-core/dist/backends/where_impl.js": { + "bytesInOutput": 227 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/where_async.js": { + "bytesInOutput": 135 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/boolean_mask.js": { + "bytesInOutput": 497 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/ops.js": { + "bytesInOutput": 576 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/compare.js": { + "bytesInOutput": 1474 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/binary_ops.js": { + "bytesInOutput": 2068 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/norm.js": { + "bytesInOutput": 889 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/moving_average.js": { + "bytesInOutput": 386 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/scatter_nd.js": { + "bytesInOutput": 192 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/sparse_to_dense_util.js": { + "bytesInOutput": 648 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/sparse_to_dense.js": { + "bytesInOutput": 299 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/gather_nd.js": { + "bytesInOutput": 148 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/dropout_util.js": { + "bytesInOutput": 228 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/dropout.js": { + "bytesInOutput": 395 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/signal_ops_util.js": { + "bytesInOutput": 225 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/in_top_k.js": { + "bytesInOutput": 963 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/fused_ops.js": { + "bytesInOutput": 70 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/conv2d_backprop_filter.js": { + "bytesInOutput": 1004 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/fused_util.js": { + "bytesInOutput": 522 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/fused/conv2d.js": { + "bytesInOutput": 1947 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/depthwise_conv2d_native_backprop_filter.js": { + "bytesInOutput": 325 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/depthwise_conv2d_native_backprop_input.js": { + "bytesInOutput": 318 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/fused/depthwise_conv2d.js": { + "bytesInOutput": 1970 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/fused/mat_mul.js": { + "bytesInOutput": 1804 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/signal/hamming_window.js": { + "bytesInOutput": 66 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/signal/hann_window.js": { + "bytesInOutput": 61 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/signal/frame.js": { + "bytesInOutput": 242 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/signal/stft.js": { + "bytesInOutput": 173 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/image/crop_and_resize.js": { + "bytesInOutput": 891 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/image/flip_left_right.js": { + "bytesInOutput": 223 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/image/rotate_with_offset.js": { + "bytesInOutput": 277 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/nonmax_util.js": { + "bytesInOutput": 645 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression.js": { + "bytesInOutput": 330 + }, + "node_modules/@tensorflow/tfjs-core/dist/backends/non_max_suppression_util.js": { + "bytesInOutput": 270 + }, + "node_modules/@tensorflow/tfjs-core/dist/backends/non_max_suppression_impl.js": { + "bytesInOutput": 1384 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_async.js": { + "bytesInOutput": 374 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_with_score.js": { + "bytesInOutput": 425 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_with_score_async.js": { + "bytesInOutput": 455 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_padded.js": { + "bytesInOutput": 409 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_padded_async.js": { + "bytesInOutput": 432 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/image/resize_bilinear.js": { + "bytesInOutput": 606 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/image/resize_nearest_neighbor.js": { + "bytesInOutput": 738 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/linalg/band_part.js": { + "bytesInOutput": 742 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/linalg/gram_schmidt.js": { + "bytesInOutput": 699 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/linalg/qr.js": { + "bytesInOutput": 1252 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/loss_ops_utils.js": { + "bytesInOutput": 145 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/losses/compute_weighted_loss.js": { + "bytesInOutput": 547 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/losses/absolute_difference.js": { + "bytesInOutput": 308 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/losses/cosine_distance.js": { + "bytesInOutput": 308 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/losses/hinge_loss.js": { + "bytesInOutput": 299 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/losses/huber_loss.js": { + "bytesInOutput": 324 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/losses/log_loss.js": { + "bytesInOutput": 326 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/losses/mean_squared_error.js": { + "bytesInOutput": 294 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/losses/sigmoid_cross_entropy.js": { + "bytesInOutput": 623 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/losses/softmax_cross_entropy.js": { + "bytesInOutput": 830 + }, + "node_modules/@tensorflow/tfjs-core/dist/optimizers/optimizer.js": { + "bytesInOutput": 1029 + }, + "node_modules/@tensorflow/tfjs-core/dist/optimizers/adadelta_optimizer.js": { + "bytesInOutput": 1731 + }, + "node_modules/@tensorflow/tfjs-core/dist/optimizers/adagrad_optimizer.js": { + "bytesInOutput": 1246 + }, + "node_modules/@tensorflow/tfjs-core/dist/optimizers/adam_optimizer.js": { + "bytesInOutput": 2257 + }, + "node_modules/@tensorflow/tfjs-core/dist/optimizers/adamax_optimizer.js": { + "bytesInOutput": 1877 + }, + "node_modules/@tensorflow/tfjs-core/dist/optimizers/sgd_optimizer.js": { + "bytesInOutput": 775 + }, + "node_modules/@tensorflow/tfjs-core/dist/optimizers/momentum_optimizer.js": { + "bytesInOutput": 1261 + }, + "node_modules/@tensorflow/tfjs-core/dist/optimizers/rmsprop_optimizer.js": { + "bytesInOutput": 2732 + }, + "node_modules/@tensorflow/tfjs-core/dist/optimizers/optimizer_constructors.js": { + "bytesInOutput": 389 + }, + "node_modules/@tensorflow/tfjs-core/dist/train.js": { + "bytesInOutput": 130 + }, + "node_modules/@tensorflow/tfjs-core/dist/browser_util.js": { + "bytesInOutput": 181 + }, + "node_modules/@tensorflow/tfjs-core/dist/backends/backend_util.js": { + "bytesInOutput": 2267 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/concat_util.js": { + "bytesInOutput": 544 + }, + "node_modules/@tensorflow/tfjs-core/dist/ops/reduce_util.js": { + "bytesInOutput": 71 + }, "node_modules/@tensorflow/tfjs-core/dist/ops/rotate_util.js": { - "bytesInOutput": 208 + "bytesInOutput": 99 }, "node_modules/@tensorflow/tfjs-core/dist/ops/array_ops_util.js": { - "bytesInOutput": 1826 + "bytesInOutput": 794 }, "node_modules/@tensorflow/tfjs-core/dist/ops/selu_util.js": { - "bytesInOutput": 69 + "bytesInOutput": 48 }, "node_modules/@tensorflow/tfjs-core/dist/ops/erf_util.js": { - "bytesInOutput": 114 + "bytesInOutput": 91 }, "node_modules/@tensorflow/tfjs-core/dist/log.js": { - "bytesInOutput": 137 + "bytesInOutput": 121 }, "node_modules/@tensorflow/tfjs-core/dist/backends/complex_util.js": { - "bytesInOutput": 1700 + "bytesInOutput": 1172 }, "node_modules/@tensorflow/tfjs-core/dist/ops/split_util.js": { - "bytesInOutput": 776 + "bytesInOutput": 474 }, "node_modules/@tensorflow/tfjs-core/dist/ops/segment_util.js": { - "bytesInOutput": 1851 + "bytesInOutput": 1124 }, "node_modules/@tensorflow/tfjs-core/dist/backends/kernel_impls.js": { - "bytesInOutput": 241 + "bytesInOutput": 129 }, "node_modules/@tensorflow/tfjs-core/dist/index.js": { "bytesInOutput": 0 }, "node_modules/@tensorflow/tfjs-core/dist/gradients/Abs_grad.js": { - "bytesInOutput": 139 + "bytesInOutput": 111 }, "node_modules/@tensorflow/tfjs-core/dist/gradients/Acos_grad.js": { - "bytesInOutput": 187 + "bytesInOutput": 148 }, "node_modules/@tensorflow/tfjs-core/dist/gradients/Acosh_grad.js": { - "bytesInOutput": 172 + "bytesInOutput": 136 }, "node_modules/@tensorflow/tfjs-core/dist/gradients/Add_grad.js": { - "bytesInOutput": 439 + "bytesInOutput": 257 }, "node_modules/@tensorflow/tfjs-core/dist/gradients/AddN_grad.js": { - "bytesInOutput": 148 + "bytesInOutput": 115 }, "node_modules/@tensorflow/tfjs-core/dist/gradients/ArgMax_grad.js": { - "bytesInOutput": 123 + "bytesInOutput": 89 }, "node_modules/@tensorflow/tfjs-core/dist/gradients/ArgMin_grad.js": { - "bytesInOutput": 123 + "bytesInOutput": 89 }, "node_modules/@tensorflow/tfjs-core/dist/gradients/Asin_grad.js": { - "bytesInOutput": 161 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Asinh_grad.js": { - "bytesInOutput": 181 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Atan2_grad.js": { - "bytesInOutput": 532 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Atan_grad.js": { - "bytesInOutput": 148 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Atanh_grad.js": { - "bytesInOutput": 157 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool_3d_grad.js": { - "bytesInOutput": 1260 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/AvgPool3D_grad.js": { - "bytesInOutput": 300 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool_grad.js": { - "bytesInOutput": 911 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/AvgPool_grad.js": { - "bytesInOutput": 196 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/BatchMatMul_grad.js": { - "bytesInOutput": 435 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/BatchToSpaceND_grad.js": { - "bytesInOutput": 164 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/BroadcastTo_grad.js": { - "bytesInOutput": 507 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Cast_grad.js": { - "bytesInOutput": 71 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Ceil_grad.js": { - "bytesInOutput": 74 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/ClipByValue_grad.js": { - "bytesInOutput": 251 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/ComplexAbs_grad.js": { - "bytesInOutput": 100 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Concat_grad.js": { - "bytesInOutput": 261 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Conv2D_grad.js": { - "bytesInOutput": 493 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Conv2DBackpropInput_grad.js": { - "bytesInOutput": 368 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/conv3d_backprop_filter.js": { - "bytesInOutput": 1060 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Conv3D_grad.js": { - "bytesInOutput": 462 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Cos_grad.js": { - "bytesInOutput": 140 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Cosh_grad.js": { - "bytesInOutput": 138 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Cumsum_grad.js": { - "bytesInOutput": 311 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/DepthwiseConv2dNative_grad.js": { - "bytesInOutput": 1421 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Dilation2D_grad.js": { - "bytesInOutput": 326 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Elu_grad.js": { - "bytesInOutput": 151 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Erf_grad.js": { - "bytesInOutput": 162 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Exp_grad.js": { - "bytesInOutput": 114 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/ExpandDims_grad.js": { - "bytesInOutput": 156 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Expm1_grad.js": { "bytesInOutput": 123 }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Floor_grad.js": { - "bytesInOutput": 76 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Asinh_grad.js": { + "bytesInOutput": 140 }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/FloorDiv_grad.js": { - "bytesInOutput": 536 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Atan2_grad.js": { + "bytesInOutput": 319 }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/FusedBatchNorm_grad.js": { - "bytesInOutput": 1518 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Atan_grad.js": { + "bytesInOutput": 115 }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/GatherV2_grad.js": { - "bytesInOutput": 1257 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Atanh_grad.js": { + "bytesInOutput": 119 }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/GreaterEqual_grad.js": { - "bytesInOutput": 160 + "node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool_3d_grad.js": { + "bytesInOutput": 853 }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Identity_grad.js": { - "bytesInOutput": 87 + "node_modules/@tensorflow/tfjs-core/dist/gradients/AvgPool3D_grad.js": { + "bytesInOutput": 186 }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/IsFinite_grad.js": { - "bytesInOutput": 82 + "node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool_grad.js": { + "bytesInOutput": 621 }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/IsInf_grad.js": { - "bytesInOutput": 76 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/IsNan_grad.js": { - "bytesInOutput": 76 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/LeakyRelu_grad.js": { - "bytesInOutput": 183 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Log1p_grad.js": { - "bytesInOutput": 126 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Log_grad.js": { - "bytesInOutput": 130 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/LogSoftmax_grad.js": { - "bytesInOutput": 252 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/local_response_normalization_backprop.js": { - "bytesInOutput": 273 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/LRN_grad.js": { - "bytesInOutput": 238 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/min_max_grad_util.js": { - "bytesInOutput": 250 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Max_grad.js": { - "bytesInOutput": 289 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Maximum_grad.js": { - "bytesInOutput": 200 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/max_pool_3d_grad.js": { - "bytesInOutput": 1564 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/MaxPool3D_grad.js": { - "bytesInOutput": 323 - }, - "node_modules/@tensorflow/tfjs-core/dist/ops/max_pool_grad.js": { - "bytesInOutput": 885 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/MaxPool_grad.js": { - "bytesInOutput": 219 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Mean_grad.js": { - "bytesInOutput": 445 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Min_grad.js": { - "bytesInOutput": 255 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Minimum_grad.js": { - "bytesInOutput": 200 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/MirrorPad_grad.js": { - "bytesInOutput": 195 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Mod_grad.js": { - "bytesInOutput": 442 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Multiply_grad.js": { - "bytesInOutput": 481 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Neg_grad.js": { - "bytesInOutput": 66 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/OneHot_grad.js": { - "bytesInOutput": 161 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/OnesLike_grad.js": { - "bytesInOutput": 82 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Pack_grad.js": { - "bytesInOutput": 137 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/PadV2_grad.js": { - "bytesInOutput": 187 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Pow_grad.js": { - "bytesInOutput": 680 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Prelu_grad.js": { - "bytesInOutput": 355 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/RealDiv_grad.js": { - "bytesInOutput": 530 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Reciprocal_grad.js": { - "bytesInOutput": 141 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Relu6_grad.js": { - "bytesInOutput": 170 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Relu_grad.js": { - "bytesInOutput": 138 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Reshape_grad.js": { + "node_modules/@tensorflow/tfjs-core/dist/gradients/AvgPool_grad.js": { "bytesInOutput": 132 }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/ResizeBilinear_grad.js": { - "bytesInOutput": 216 + "node_modules/@tensorflow/tfjs-core/dist/gradients/BatchMatMul_grad.js": { + "bytesInOutput": 300 }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/ResizeNearestNeighbor_grad.js": { - "bytesInOutput": 237 + "node_modules/@tensorflow/tfjs-core/dist/gradients/BatchToSpaceND_grad.js": { + "bytesInOutput": 95 }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Reverse_grad.js": { - "bytesInOutput": 154 + "node_modules/@tensorflow/tfjs-core/dist/gradients/BroadcastTo_grad.js": { + "bytesInOutput": 312 }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Round_grad.js": { - "bytesInOutput": 76 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Cast_grad.js": { + "bytesInOutput": 55 }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Rsqrt_grad.js": { - "bytesInOutput": 139 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Ceil_grad.js": { + "bytesInOutput": 51 }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Select_grad.js": { - "bytesInOutput": 261 + "node_modules/@tensorflow/tfjs-core/dist/gradients/ClipByValue_grad.js": { + "bytesInOutput": 151 }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Selu_grad.js": { - "bytesInOutput": 354 + "node_modules/@tensorflow/tfjs-core/dist/gradients/ComplexAbs_grad.js": { + "bytesInOutput": 63 }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Sigmoid_grad.js": { - "bytesInOutput": 144 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Concat_grad.js": { + "bytesInOutput": 165 }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Sign_grad.js": { - "bytesInOutput": 74 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Conv2D_grad.js": { + "bytesInOutput": 328 }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Sin_grad.js": { - "bytesInOutput": 135 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Conv2DBackpropInput_grad.js": { + "bytesInOutput": 202 }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Sinh_grad.js": { - "bytesInOutput": 138 + "node_modules/@tensorflow/tfjs-core/dist/ops/conv3d_backprop_filter.js": { + "bytesInOutput": 822 }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Slice_grad.js": { + "node_modules/@tensorflow/tfjs-core/dist/gradients/Conv3D_grad.js": { "bytesInOutput": 313 }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Softmax_grad.js": { - "bytesInOutput": 217 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Cos_grad.js": { + "bytesInOutput": 112 }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Softplus_grad.js": { - "bytesInOutput": 133 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/SpaceToBatchND_grad.js": { - "bytesInOutput": 170 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/SplitV_grad.js": { - "bytesInOutput": 116 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Sqrt_grad.js": { - "bytesInOutput": 145 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Square_grad.js": { - "bytesInOutput": 143 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/SquaredDifference_grad.js": { - "bytesInOutput": 210 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Step_grad.js": { - "bytesInOutput": 74 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Sub_grad.js": { - "bytesInOutput": 444 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Sum_grad.js": { - "bytesInOutput": 321 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Tan_grad.js": { - "bytesInOutput": 127 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Tanh_grad.js": { - "bytesInOutput": 139 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Tile_grad.js": { - "bytesInOutput": 965 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Transpose_grad.js": { - "bytesInOutput": 198 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/Unpack_grad.js": { - "bytesInOutput": 144 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/UnsortedSegmentSum_grad.js": { - "bytesInOutput": 620 - }, - "node_modules/@tensorflow/tfjs-core/dist/gradients/ZerosLike_grad.js": { - "bytesInOutput": 84 - }, - "node_modules/@tensorflow/tfjs-core/dist/register_all_gradients.js": { - "bytesInOutput": 1935 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/abs.js": { - "bytesInOutput": 73 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/acos.js": { - "bytesInOutput": 75 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/acosh.js": { - "bytesInOutput": 77 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/add_strict.js": { - "bytesInOutput": 88 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/add.js": { - "bytesInOutput": 77 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/all.js": { - "bytesInOutput": 100 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/any.js": { - "bytesInOutput": 100 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/arg_max.js": { - "bytesInOutput": 88 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/arg_min.js": { - "bytesInOutput": 88 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as_scalar.js": { - "bytesInOutput": 149 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as_type.js": { - "bytesInOutput": 88 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as1d.js": { - "bytesInOutput": 90 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as2d.js": { - "bytesInOutput": 105 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as3d.js": { - "bytesInOutput": 117 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as4d.js": { - "bytesInOutput": 131 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as5d.js": { - "bytesInOutput": 145 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/asin.js": { - "bytesInOutput": 75 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/asinh.js": { - "bytesInOutput": 77 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/atan.js": { - "bytesInOutput": 75 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/atan2.js": { - "bytesInOutput": 80 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/atanh.js": { - "bytesInOutput": 77 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/avg_pool.js": { - "bytesInOutput": 160 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/batch_to_space_nd.js": { - "bytesInOutput": 128 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/batchnorm.js": { - "bytesInOutput": 174 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/broadcast_to.js": { - "bytesInOutput": 100 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cast.js": { - "bytesInOutput": 86 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/ceil.js": { - "bytesInOutput": 75 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/clip_by_value.js": { + "node_modules/@tensorflow/tfjs-core/dist/gradients/Cosh_grad.js": { "bytesInOutput": 108 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/concat.js": { - "bytesInOutput": 126 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Cumsum_grad.js": { + "bytesInOutput": 186 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/conv1d.js": { - "bytesInOutput": 188 + "node_modules/@tensorflow/tfjs-core/dist/gradients/DepthwiseConv2dNative_grad.js": { + "bytesInOutput": 1012 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/conv2d_transpose.js": { - "bytesInOutput": 192 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Dilation2D_grad.js": { + "bytesInOutput": 191 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/conv2d.js": { - "bytesInOutput": 192 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Elu_grad.js": { + "bytesInOutput": 114 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cos.js": { - "bytesInOutput": 73 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Erf_grad.js": { + "bytesInOutput": 130 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cosh.js": { - "bytesInOutput": 75 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Exp_grad.js": { + "bytesInOutput": 90 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cumsum.js": { - "bytesInOutput": 126 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/depth_to_space.js": { - "bytesInOutput": 132 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/depthwise_conv2D_deprecated.js": { - "bytesInOutput": 288 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/depthwise_conv2d.js": { - "bytesInOutput": 210 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/dilation2d.js": { - "bytesInOutput": 168 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/div_no_nan.js": { - "bytesInOutput": 86 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/div_strict.js": { - "bytesInOutput": 88 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/div.js": { - "bytesInOutput": 76 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/dot.js": { - "bytesInOutput": 76 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/elu.js": { - "bytesInOutput": 73 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/equal_strict.js": { - "bytesInOutput": 92 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/equal.js": { - "bytesInOutput": 80 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/erf.js": { - "bytesInOutput": 73 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/exp.js": { - "bytesInOutput": 73 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/expand_dims.js": { - "bytesInOutput": 96 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/expm1.js": { - "bytesInOutput": 77 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/fft.js": { - "bytesInOutput": 73 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/flatten.js": { - "bytesInOutput": 93 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/floor.js": { - "bytesInOutput": 77 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/floorDiv.js": { - "bytesInOutput": 86 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/gather.js": { + "node_modules/@tensorflow/tfjs-core/dist/gradients/ExpandDims_grad.js": { "bytesInOutput": 104 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/greater_equal_strict.js": { - "bytesInOutput": 106 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/greater_equal.js": { + "node_modules/@tensorflow/tfjs-core/dist/gradients/Expm1_grad.js": { "bytesInOutput": 94 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/greater_strict.js": { - "bytesInOutput": 96 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Floor_grad.js": { + "bytesInOutput": 51 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/greater.js": { - "bytesInOutput": 84 + "node_modules/@tensorflow/tfjs-core/dist/gradients/FloorDiv_grad.js": { + "bytesInOutput": 327 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/ifft.js": { - "bytesInOutput": 75 + "node_modules/@tensorflow/tfjs-core/dist/gradients/FusedBatchNorm_grad.js": { + "bytesInOutput": 712 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/irfft.js": { - "bytesInOutput": 77 + "node_modules/@tensorflow/tfjs-core/dist/gradients/GatherV2_grad.js": { + "bytesInOutput": 541 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/is_finite.js": { - "bytesInOutput": 84 + "node_modules/@tensorflow/tfjs-core/dist/gradients/GreaterEqual_grad.js": { + "bytesInOutput": 107 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/is_inf.js": { - "bytesInOutput": 77 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Identity_grad.js": { + "bytesInOutput": 61 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/is_nan.js": { - "bytesInOutput": 78 + "node_modules/@tensorflow/tfjs-core/dist/gradients/IsFinite_grad.js": { + "bytesInOutput": 51 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/leaky_relu.js": { - "bytesInOutput": 96 + "node_modules/@tensorflow/tfjs-core/dist/gradients/IsInf_grad.js": { + "bytesInOutput": 51 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/less_equal_strict.js": { - "bytesInOutput": 100 + "node_modules/@tensorflow/tfjs-core/dist/gradients/IsNan_grad.js": { + "bytesInOutput": 51 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/less_equal.js": { - "bytesInOutput": 88 + "node_modules/@tensorflow/tfjs-core/dist/gradients/LeakyRelu_grad.js": { + "bytesInOutput": 122 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/less_strict.js": { - "bytesInOutput": 90 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Log1p_grad.js": { + "bytesInOutput": 97 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/less.js": { - "bytesInOutput": 78 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Log_grad.js": { + "bytesInOutput": 105 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/local_response_normalization.js": { - "bytesInOutput": 174 + "node_modules/@tensorflow/tfjs-core/dist/gradients/LogSoftmax_grad.js": { + "bytesInOutput": 164 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log_sigmoid.js": { - "bytesInOutput": 87 + "node_modules/@tensorflow/tfjs-core/dist/ops/local_response_normalization_backprop.js": { + "bytesInOutput": 175 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log_softmax.js": { - "bytesInOutput": 96 + "node_modules/@tensorflow/tfjs-core/dist/gradients/LRN_grad.js": { + "bytesInOutput": 164 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log_sum_exp.js": { - "bytesInOutput": 112 + "node_modules/@tensorflow/tfjs-core/dist/gradients/min_max_grad_util.js": { + "bytesInOutput": 137 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log.js": { - "bytesInOutput": 73 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log1p.js": { - "bytesInOutput": 77 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_and.js": { - "bytesInOutput": 90 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_not.js": { - "bytesInOutput": 87 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_or.js": { - "bytesInOutput": 88 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_xor.js": { - "bytesInOutput": 90 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mat_mul.js": { - "bytesInOutput": 126 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/max_pool.js": { - "bytesInOutput": 160 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/max.js": { - "bytesInOutput": 100 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/maximum_strict.js": { - "bytesInOutput": 96 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/maximum.js": { - "bytesInOutput": 84 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mean.js": { - "bytesInOutput": 102 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/min.js": { - "bytesInOutput": 100 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/minimum_strict.js": { - "bytesInOutput": 96 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/minimum.js": { - "bytesInOutput": 84 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mirror_pad.js": { - "bytesInOutput": 112 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mod_strict.js": { - "bytesInOutput": 88 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mod.js": { - "bytesInOutput": 76 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mul_strict.js": { - "bytesInOutput": 88 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mul.js": { - "bytesInOutput": 76 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/neg.js": { - "bytesInOutput": 73 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/norm.js": { - "bytesInOutput": 110 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/not_equal_strict.js": { - "bytesInOutput": 98 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/not_equal.js": { - "bytesInOutput": 86 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/one_hot.js": { - "bytesInOutput": 128 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/ones_like.js": { - "bytesInOutput": 83 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/pad.js": { - "bytesInOutput": 118 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/pool.js": { - "bytesInOutput": 180 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/pow_strict.js": { - "bytesInOutput": 94 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/pow.js": { - "bytesInOutput": 82 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/prelu.js": { - "bytesInOutput": 88 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/prod.js": { - "bytesInOutput": 102 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reciprocal.js": { - "bytesInOutput": 87 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/relu.js": { - "bytesInOutput": 75 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/relu6.js": { - "bytesInOutput": 77 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reshape_as.js": { - "bytesInOutput": 92 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reshape.js": { - "bytesInOutput": 92 - }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/resize_bilinear.js": { + "node_modules/@tensorflow/tfjs-core/dist/gradients/Max_grad.js": { "bytesInOutput": 176 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/resize_nearest_neighbor.js": { - "bytesInOutput": 190 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Maximum_grad.js": { + "bytesInOutput": 149 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reverse.js": { - "bytesInOutput": 90 + "node_modules/@tensorflow/tfjs-core/dist/ops/max_pool_3d_grad.js": { + "bytesInOutput": 1045 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/rfft.js": { - "bytesInOutput": 75 + "node_modules/@tensorflow/tfjs-core/dist/gradients/MaxPool3D_grad.js": { + "bytesInOutput": 209 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/round.js": { - "bytesInOutput": 78 + "node_modules/@tensorflow/tfjs-core/dist/ops/max_pool_grad.js": { + "bytesInOutput": 632 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/rsqrt.js": { - "bytesInOutput": 77 + "node_modules/@tensorflow/tfjs-core/dist/gradients/MaxPool_grad.js": { + "bytesInOutput": 155 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/selu.js": { - "bytesInOutput": 75 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Mean_grad.js": { + "bytesInOutput": 239 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/separable_conv2d.js": { - "bytesInOutput": 226 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Min_grad.js": { + "bytesInOutput": 158 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sigmoid.js": { - "bytesInOutput": 81 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Minimum_grad.js": { + "bytesInOutput": 149 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sign.js": { - "bytesInOutput": 75 + "node_modules/@tensorflow/tfjs-core/dist/gradients/MirrorPad_grad.js": { + "bytesInOutput": 135 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sin.js": { - "bytesInOutput": 73 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Mod_grad.js": { + "bytesInOutput": 262 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sinh.js": { - "bytesInOutput": 75 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Multiply_grad.js": { + "bytesInOutput": 285 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/slice.js": { - "bytesInOutput": 98 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Neg_grad.js": { + "bytesInOutput": 51 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/softmax.js": { - "bytesInOutput": 88 + "node_modules/@tensorflow/tfjs-core/dist/gradients/OneHot_grad.js": { + "bytesInOutput": 119 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/softplus.js": { - "bytesInOutput": 83 + "node_modules/@tensorflow/tfjs-core/dist/gradients/OnesLike_grad.js": { + "bytesInOutput": 51 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/space_to_batch_nd.js": { - "bytesInOutput": 134 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Pack_grad.js": { + "bytesInOutput": 103 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/split.js": { - "bytesInOutput": 118 + "node_modules/@tensorflow/tfjs-core/dist/gradients/PadV2_grad.js": { + "bytesInOutput": 135 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sqrt.js": { - "bytesInOutput": 75 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Pow_grad.js": { + "bytesInOutput": 370 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/square.js": { - "bytesInOutput": 79 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Prelu_grad.js": { + "bytesInOutput": 221 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/squared_difference.js": { - "bytesInOutput": 104 + "node_modules/@tensorflow/tfjs-core/dist/gradients/RealDiv_grad.js": { + "bytesInOutput": 327 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/squared_difference_strict.js": { - "bytesInOutput": 116 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Reciprocal_grad.js": { + "bytesInOutput": 99 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/squeeze.js": { - "bytesInOutput": 90 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Relu6_grad.js": { + "bytesInOutput": 123 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/stack.js": { - "bytesInOutput": 166 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Relu_grad.js": { + "bytesInOutput": 108 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/step.js": { - "bytesInOutput": 86 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Reshape_grad.js": { + "bytesInOutput": 96 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/strided_slice.js": { - "bytesInOutput": 242 + "node_modules/@tensorflow/tfjs-core/dist/gradients/ResizeBilinear_grad.js": { + "bytesInOutput": 133 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sub_strict.js": { - "bytesInOutput": 88 + "node_modules/@tensorflow/tfjs-core/dist/gradients/ResizeNearestNeighbor_grad.js": { + "bytesInOutput": 133 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sub.js": { - "bytesInOutput": 76 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Reverse_grad.js": { + "bytesInOutput": 95 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sum.js": { - "bytesInOutput": 101 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Round_grad.js": { + "bytesInOutput": 51 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/tan.js": { - "bytesInOutput": 73 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Rsqrt_grad.js": { + "bytesInOutput": 108 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/tanh.js": { - "bytesInOutput": 76 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Select_grad.js": { + "bytesInOutput": 173 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/tile.js": { - "bytesInOutput": 84 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Selu_grad.js": { + "bytesInOutput": 179 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/to_bool.js": { - "bytesInOutput": 84 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Sigmoid_grad.js": { + "bytesInOutput": 105 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/to_float.js": { - "bytesInOutput": 88 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Sign_grad.js": { + "bytesInOutput": 51 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/to_int.js": { - "bytesInOutput": 84 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Sin_grad.js": { + "bytesInOutput": 108 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/topk.js": { - "bytesInOutput": 92 + "node_modules/@tensorflow/tfjs-core/dist/gradients/Sinh_grad.js": { + "bytesInOutput": 108 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/transpose.js": { + "node_modules/@tensorflow/tfjs-core/dist/gradients/Slice_grad.js": { + "bytesInOutput": 198 + }, + "node_modules/@tensorflow/tfjs-core/dist/gradients/Softmax_grad.js": { + "bytesInOutput": 137 + }, + "node_modules/@tensorflow/tfjs-core/dist/gradients/Softplus_grad.js": { "bytesInOutput": 94 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/unique.js": { + "node_modules/@tensorflow/tfjs-core/dist/gradients/SpaceToBatchND_grad.js": { + "bytesInOutput": 98 + }, + "node_modules/@tensorflow/tfjs-core/dist/gradients/SplitV_grad.js": { + "bytesInOutput": 79 + }, + "node_modules/@tensorflow/tfjs-core/dist/gradients/Sqrt_grad.js": { + "bytesInOutput": 114 + }, + "node_modules/@tensorflow/tfjs-core/dist/gradients/Square_grad.js": { + "bytesInOutput": 109 + }, + "node_modules/@tensorflow/tfjs-core/dist/gradients/SquaredDifference_grad.js": { + "bytesInOutput": 139 + }, + "node_modules/@tensorflow/tfjs-core/dist/gradients/Step_grad.js": { + "bytesInOutput": 51 + }, + "node_modules/@tensorflow/tfjs-core/dist/gradients/Sub_grad.js": { + "bytesInOutput": 261 + }, + "node_modules/@tensorflow/tfjs-core/dist/gradients/Sum_grad.js": { + "bytesInOutput": 193 + }, + "node_modules/@tensorflow/tfjs-core/dist/gradients/Tan_grad.js": { + "bytesInOutput": 99 + }, + "node_modules/@tensorflow/tfjs-core/dist/gradients/Tanh_grad.js": { + "bytesInOutput": 104 + }, + "node_modules/@tensorflow/tfjs-core/dist/gradients/Tile_grad.js": { + "bytesInOutput": 835 + }, + "node_modules/@tensorflow/tfjs-core/dist/gradients/Transpose_grad.js": { + "bytesInOutput": 92 + }, + "node_modules/@tensorflow/tfjs-core/dist/gradients/Unpack_grad.js": { "bytesInOutput": 88 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/unsorted_segment_sum.js": { - "bytesInOutput": 148 + "node_modules/@tensorflow/tfjs-core/dist/gradients/UnsortedSegmentSum_grad.js": { + "bytesInOutput": 271 }, - "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/unstack.js": { + "node_modules/@tensorflow/tfjs-core/dist/gradients/ZerosLike_grad.js": { + "bytesInOutput": 51 + }, + "node_modules/@tensorflow/tfjs-core/dist/register_all_gradients.js": { + "bytesInOutput": 343 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/abs.js": { + "bytesInOutput": 67 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/acos.js": { + "bytesInOutput": 68 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/acosh.js": { + "bytesInOutput": 69 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/add_strict.js": { + "bytesInOutput": 76 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/add.js": { + "bytesInOutput": 70 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/all.js": { + "bytesInOutput": 74 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/any.js": { + "bytesInOutput": 74 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/arg_max.js": { + "bytesInOutput": 73 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/arg_min.js": { + "bytesInOutput": 73 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as_scalar.js": { + "bytesInOutput": 133 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as_type.js": { + "bytesInOutput": 73 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as1d.js": { + "bytesInOutput": 79 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as2d.js": { + "bytesInOutput": 76 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as3d.js": { + "bytesInOutput": 80 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as4d.js": { + "bytesInOutput": 84 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as5d.js": { + "bytesInOutput": 88 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/asin.js": { + "bytesInOutput": 68 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/asinh.js": { + "bytesInOutput": 69 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/atan.js": { + "bytesInOutput": 68 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/atan2.js": { + "bytesInOutput": 72 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/atanh.js": { + "bytesInOutput": 69 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/avg_pool.js": { + "bytesInOutput": 86 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/batch_to_space_nd.js": { + "bytesInOutput": 85 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/batchnorm.js": { + "bytesInOutput": 92 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/broadcast_to.js": { + "bytesInOutput": 78 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cast.js": { + "bytesInOutput": 71 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/ceil.js": { + "bytesInOutput": 68 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/clip_by_value.js": { + "bytesInOutput": 82 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/concat.js": { + "bytesInOutput": 106 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/conv1d.js": { + "bytesInOutput": 93 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/conv2d_transpose.js": { + "bytesInOutput": 98 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/conv2d.js": { + "bytesInOutput": 93 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cos.js": { + "bytesInOutput": 67 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cosh.js": { + "bytesInOutput": 68 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cumsum.js": { + "bytesInOutput": 81 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/depth_to_space.js": { + "bytesInOutput": 83 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/depthwise_conv2D_deprecated.js": { + "bytesInOutput": 167 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/depthwise_conv2d.js": { + "bytesInOutput": 102 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/dilation2d.js": { + "bytesInOutput": 93 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/div_no_nan.js": { + "bytesInOutput": 75 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/div_strict.js": { + "bytesInOutput": 76 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/div.js": { + "bytesInOutput": 70 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/dot.js": { + "bytesInOutput": 70 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/elu.js": { + "bytesInOutput": 67 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/equal_strict.js": { + "bytesInOutput": 78 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/equal.js": { + "bytesInOutput": 72 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/erf.js": { + "bytesInOutput": 67 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/exp.js": { + "bytesInOutput": 67 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/expand_dims.js": { + "bytesInOutput": 77 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/expm1.js": { + "bytesInOutput": 69 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/fft.js": { + "bytesInOutput": 67 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/flatten.js": { + "bytesInOutput": 82 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/floor.js": { + "bytesInOutput": 69 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/floorDiv.js": { + "bytesInOutput": 75 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/gather.js": { + "bytesInOutput": 77 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/greater_equal_strict.js": { + "bytesInOutput": 85 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/greater_equal.js": { + "bytesInOutput": 79 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/greater_strict.js": { + "bytesInOutput": 80 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/greater.js": { + "bytesInOutput": 74 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/ifft.js": { + "bytesInOutput": 68 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/irfft.js": { + "bytesInOutput": 69 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/is_finite.js": { + "bytesInOutput": 72 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/is_inf.js": { + "bytesInOutput": 69 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/is_nan.js": { + "bytesInOutput": 69 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/leaky_relu.js": { + "bytesInOutput": 76 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/less_equal_strict.js": { + "bytesInOutput": 82 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/less_equal.js": { + "bytesInOutput": 76 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/less_strict.js": { + "bytesInOutput": 77 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/less.js": { + "bytesInOutput": 71 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/local_response_normalization.js": { + "bytesInOutput": 105 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log_sigmoid.js": { + "bytesInOutput": 74 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log_softmax.js": { + "bytesInOutput": 77 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log_sum_exp.js": { + "bytesInOutput": 80 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log.js": { + "bytesInOutput": 67 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log1p.js": { + "bytesInOutput": 69 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_and.js": { + "bytesInOutput": 77 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_not.js": { + "bytesInOutput": 74 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_or.js": { + "bytesInOutput": 76 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_xor.js": { + "bytesInOutput": 77 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mat_mul.js": { + "bytesInOutput": 81 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/max_pool.js": { + "bytesInOutput": 86 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/max.js": { + "bytesInOutput": 74 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/maximum_strict.js": { + "bytesInOutput": 80 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/maximum.js": { + "bytesInOutput": 74 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mean.js": { + "bytesInOutput": 75 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/min.js": { + "bytesInOutput": 74 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/minimum_strict.js": { + "bytesInOutput": 80 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/minimum.js": { + "bytesInOutput": 74 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mirror_pad.js": { + "bytesInOutput": 80 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mod_strict.js": { + "bytesInOutput": 76 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mod.js": { + "bytesInOutput": 70 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mul_strict.js": { + "bytesInOutput": 76 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mul.js": { + "bytesInOutput": 69 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/neg.js": { + "bytesInOutput": 67 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/norm.js": { + "bytesInOutput": 79 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/not_equal_strict.js": { + "bytesInOutput": 81 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/not_equal.js": { + "bytesInOutput": 75 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/one_hot.js": { + "bytesInOutput": 85 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/ones_like.js": { + "bytesInOutput": 72 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/pad.js": { + "bytesInOutput": 74 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/pool.js": { + "bytesInOutput": 87 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/pow_strict.js": { + "bytesInOutput": 76 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/pow.js": { + "bytesInOutput": 70 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/prelu.js": { + "bytesInOutput": 72 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/prod.js": { + "bytesInOutput": 75 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reciprocal.js": { + "bytesInOutput": 74 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/relu.js": { + "bytesInOutput": 68 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/relu6.js": { + "bytesInOutput": 69 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reshape_as.js": { + "bytesInOutput": 81 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reshape.js": { + "bytesInOutput": 73 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/resize_bilinear.js": { + "bytesInOutput": 89 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/resize_nearest_neighbor.js": { + "bytesInOutput": 96 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reverse.js": { + "bytesInOutput": 74 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/rfft.js": { + "bytesInOutput": 68 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/round.js": { + "bytesInOutput": 69 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/rsqrt.js": { + "bytesInOutput": 69 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/selu.js": { + "bytesInOutput": 68 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/separable_conv2d.js": { + "bytesInOutput": 102 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sigmoid.js": { + "bytesInOutput": 71 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sign.js": { + "bytesInOutput": 68 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sin.js": { + "bytesInOutput": 67 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sinh.js": { + "bytesInOutput": 68 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/slice.js": { + "bytesInOutput": 76 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/softmax.js": { + "bytesInOutput": 74 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/softplus.js": { + "bytesInOutput": 72 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/space_to_batch_nd.js": { + "bytesInOutput": 85 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/split.js": { + "bytesInOutput": 76 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sqrt.js": { + "bytesInOutput": 68 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/square.js": { + "bytesInOutput": 70 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/squared_difference.js": { + "bytesInOutput": 84 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/squared_difference_strict.js": { "bytesInOutput": 90 }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/squeeze.js": { + "bytesInOutput": 74 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/stack.js": { + "bytesInOutput": 113 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/step.js": { + "bytesInOutput": 71 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/strided_slice.js": { + "bytesInOutput": 107 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sub_strict.js": { + "bytesInOutput": 76 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sub.js": { + "bytesInOutput": 70 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sum.js": { + "bytesInOutput": 74 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/tan.js": { + "bytesInOutput": 67 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/tanh.js": { + "bytesInOutput": 68 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/tile.js": { + "bytesInOutput": 71 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/to_bool.js": { + "bytesInOutput": 77 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/to_float.js": { + "bytesInOutput": 81 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/to_int.js": { + "bytesInOutput": 77 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/topk.js": { + "bytesInOutput": 75 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/transpose.js": { + "bytesInOutput": 76 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/unique.js": { + "bytesInOutput": 73 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/unsorted_segment_sum.js": { + "bytesInOutput": 89 + }, + "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/unstack.js": { + "bytesInOutput": 74 + }, "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/where.js": { - "bytesInOutput": 100 + "bytesInOutput": 76 }, "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/zeros_like.js": { - "bytesInOutput": 85 + "bytesInOutput": 73 }, "node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/register_all_chained_ops.js": { "bytesInOutput": 0 }, "node_modules/@tensorflow/tfjs/dist/index.js": { - "bytesInOutput": 177 + "bytesInOutput": 130 }, "node_modules/@tensorflow/tfjs-layers/dist/exports_constraints.js": { - "bytesInOutput": 353 + "bytesInOutput": 206 }, "node_modules/@tensorflow/tfjs-layers/dist/backend/common.js": { - "bytesInOutput": 143 + "bytesInOutput": 96 }, "node_modules/@tensorflow/tfjs-layers/dist/errors.js": { - "bytesInOutput": 750 + "bytesInOutput": 542 }, "node_modules/@tensorflow/tfjs-layers/dist/utils/generic_utils.js": { - "bytesInOutput": 5877 + "bytesInOutput": 3474 }, "node_modules/@tensorflow/tfjs-layers/dist/constraints.js": { - "bytesInOutput": 2682 + "bytesInOutput": 1851 }, "node_modules/@tensorflow/tfjs-layers/dist/exports_initializers.js": { - "bytesInOutput": 1292 + "bytesInOutput": 766 }, "node_modules/@tensorflow/tfjs-layers/dist/keras_format/common.js": { - "bytesInOutput": 269 + "bytesInOutput": 144 }, "node_modules/@tensorflow/tfjs-layers/dist/common.js": { - "bytesInOutput": 1467 + "bytesInOutput": 706 }, "node_modules/@tensorflow/tfjs-layers/dist/utils/math_utils.js": { - "bytesInOutput": 632 + "bytesInOutput": 441 }, "node_modules/@tensorflow/tfjs-layers/dist/backend/tfjs_backend.js": { - "bytesInOutput": 7079 + "bytesInOutput": 4920 }, "node_modules/@tensorflow/tfjs-layers/dist/keras_format/initializer_config.js": { - "bytesInOutput": 119 + "bytesInOutput": 77 }, "node_modules/@tensorflow/tfjs-layers/dist/initializers.js": { - "bytesInOutput": 8996 + "bytesInOutput": 6284 }, "node_modules/@tensorflow/tfjs-layers/dist/exports_layers.js": { - "bytesInOutput": 5871 + "bytesInOutput": 3496 }, "node_modules/@tensorflow/tfjs-layers/dist/backend/state.js": { - "bytesInOutput": 254 + "bytesInOutput": 117 }, "node_modules/@tensorflow/tfjs-layers/dist/utils/types_utils.js": { - "bytesInOutput": 561 + "bytesInOutput": 430 }, "node_modules/@tensorflow/tfjs-layers/dist/utils/variable_utils.js": { - "bytesInOutput": 166 + "bytesInOutput": 101 }, "node_modules/@tensorflow/tfjs-layers/dist/variables.js": { - "bytesInOutput": 1408 + "bytesInOutput": 1018 }, "node_modules/@tensorflow/tfjs-layers/dist/engine/topology.js": { - "bytesInOutput": 15371 + "bytesInOutput": 11561 }, "node_modules/@tensorflow/tfjs-layers/dist/engine/input_layer.js": { - "bytesInOutput": 2399 + "bytesInOutput": 1961 }, "node_modules/@tensorflow/tfjs-layers/dist/logs.js": { - "bytesInOutput": 561 + "bytesInOutput": 332 }, "node_modules/@tensorflow/tfjs-layers/dist/base_callbacks.js": { - "bytesInOutput": 7230 + "bytesInOutput": 4776 }, "node_modules/@tensorflow/tfjs-layers/dist/layers/serialization.js": { - "bytesInOutput": 200 + "bytesInOutput": 92 }, "node_modules/@tensorflow/tfjs-layers/dist/losses.js": { - "bytesInOutput": 4164 + "bytesInOutput": 2416 }, "node_modules/@tensorflow/tfjs-layers/dist/metrics.js": { - "bytesInOutput": 2503 + "bytesInOutput": 1426 }, "node_modules/@tensorflow/tfjs-layers/dist/optimizers.js": { - "bytesInOutput": 651 + "bytesInOutput": 393 }, "node_modules/@tensorflow/tfjs-layers/dist/user_defined_metadata.js": { - "bytesInOutput": 1223 + "bytesInOutput": 842 }, "node_modules/@tensorflow/tfjs-layers/dist/utils/layer_utils.js": { - "bytesInOutput": 3552 + "bytesInOutput": 1880 }, "node_modules/@tensorflow/tfjs-layers/dist/utils/serialization_utils.js": { - "bytesInOutput": 1699 + "bytesInOutput": 885 }, "node_modules/@tensorflow/tfjs-layers/dist/version.js": { - "bytesInOutput": 21 + "bytesInOutput": 15 }, "node_modules/@tensorflow/tfjs-layers/dist/engine/executor.js": { - "bytesInOutput": 6457 + "bytesInOutput": 3705 }, "node_modules/@tensorflow/tfjs-layers/dist/engine/container.js": { - "bytesInOutput": 19995 + "bytesInOutput": 12541 }, "node_modules/@tensorflow/tfjs-layers/dist/engine/training_utils.js": { - "bytesInOutput": 2452 + "bytesInOutput": 1678 }, "node_modules/@tensorflow/tfjs-layers/dist/engine/training_dataset.js": { - "bytesInOutput": 8826 + "bytesInOutput": 5966 }, "node_modules/@tensorflow/tfjs-layers/dist/engine/training_tensors.js": { - "bytesInOutput": 6990 + "bytesInOutput": 3799 }, "node_modules/@tensorflow/tfjs-layers/dist/engine/training.js": { - "bytesInOutput": 25215 + "bytesInOutput": 16841 }, "node_modules/@tensorflow/tfjs-layers/dist/models.js": { - "bytesInOutput": 10187 + "bytesInOutput": 7761 }, "node_modules/@tensorflow/tfjs-layers/dist/exports.js": { - "bytesInOutput": 451 + "bytesInOutput": 193 }, "node_modules/@tensorflow/tfjs-layers/dist/activations.js": { - "bytesInOutput": 2590 + "bytesInOutput": 1615 }, "node_modules/@tensorflow/tfjs-layers/dist/regularizers.js": { - "bytesInOutput": 1793 + "bytesInOutput": 1071 }, "node_modules/@tensorflow/tfjs-layers/dist/layers/advanced_activations.js": { - "bytesInOutput": 4388 + "bytesInOutput": 3228 }, "node_modules/@tensorflow/tfjs-layers/dist/utils/conv_utils.js": { - "bytesInOutput": 1127 + "bytesInOutput": 660 }, "node_modules/@tensorflow/tfjs-layers/dist/layers/convolutional.js": { - "bytesInOutput": 21341 + "bytesInOutput": 15986 }, "node_modules/@tensorflow/tfjs-layers/dist/layers/convolutional_depthwise.js": { - "bytesInOutput": 3352 + "bytesInOutput": 2351 }, "node_modules/@tensorflow/tfjs-layers/dist/layers/recurrent.js": { - "bytesInOutput": 29664 + "bytesInOutput": 21989 }, "node_modules/@tensorflow/tfjs-layers/dist/layers/convolutional_recurrent.js": { - "bytesInOutput": 9083 + "bytesInOutput": 6613 }, "node_modules/@tensorflow/tfjs-layers/dist/layers/core.js": { - "bytesInOutput": 9930 + "bytesInOutput": 7030 }, "node_modules/@tensorflow/tfjs-layers/dist/layers/embeddings.js": { - "bytesInOutput": 2792 + "bytesInOutput": 2138 }, "node_modules/@tensorflow/tfjs-layers/dist/layers/merge.js": { - "bytesInOutput": 11970 + "bytesInOutput": 8264 }, "node_modules/@tensorflow/tfjs-layers/dist/layers/noise.js": { - "bytesInOutput": 2316 + "bytesInOutput": 1539 }, "node_modules/@tensorflow/tfjs-layers/dist/layers/normalization.js": { - "bytesInOutput": 9069 + "bytesInOutput": 5938 }, "node_modules/@tensorflow/tfjs-layers/dist/layers/padding.js": { - "bytesInOutput": 2978 + "bytesInOutput": 2181 }, "node_modules/@tensorflow/tfjs-layers/dist/layers/pooling.js": { - "bytesInOutput": 10585 + "bytesInOutput": 6858 }, "node_modules/@tensorflow/tfjs-layers/dist/layers/wrappers.js": { - "bytesInOutput": 9076 + "bytesInOutput": 6226 }, "node_modules/@tensorflow/tfjs-layers/dist/exports_metrics.js": { - "bytesInOutput": 1736 + "bytesInOutput": 822 }, "node_modules/@tensorflow/tfjs-layers/dist/exports_models.js": { - "bytesInOutput": 97 + "bytesInOutput": 40 }, "node_modules/@tensorflow/tfjs-layers/dist/exports_regularizers.js": { - "bytesInOutput": 237 + "bytesInOutput": 139 }, "node_modules/@tensorflow/tfjs-layers/dist/index.js": { "bytesInOutput": 0 }, "node_modules/@tensorflow/tfjs-layers/dist/callbacks.js": { - "bytesInOutput": 2025 + "bytesInOutput": 1695 }, "node_modules/@tensorflow/tfjs-converter/dist/data/compiled_api.js": { - "bytesInOutput": 1910 + "bytesInOutput": 1173 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/custom_op/register.js": { - "bytesInOutput": 272 + "bytesInOutput": 164 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/utils.js": { - "bytesInOutput": 2242 + "bytesInOutput": 1145 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/arithmetic.js": { - "bytesInOutput": 2950 + "bytesInOutput": 2908 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/basic_math.js": { - "bytesInOutput": 6698 + "bytesInOutput": 6654 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/control.js": { - "bytesInOutput": 7197 + "bytesInOutput": 7159 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/convolution.js": { - "bytesInOutput": 6635 + "bytesInOutput": 6589 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/creation.js": { - "bytesInOutput": 2795 + "bytesInOutput": 2755 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/dynamic.js": { - "bytesInOutput": 1694 + "bytesInOutput": 1656 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/evaluation.js": { - "bytesInOutput": 459 + "bytesInOutput": 415 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/graph.js": { - "bytesInOutput": 1625 + "bytesInOutput": 1591 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/hash_table.js": { - "bytesInOutput": 1880 + "bytesInOutput": 1836 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/image.js": { - "bytesInOutput": 1047 + "bytesInOutput": 1011 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/logical.js": { - "bytesInOutput": 2098 + "bytesInOutput": 2058 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/matrices.js": { - "bytesInOutput": 1753 + "bytesInOutput": 1711 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/normalization.js": { - "bytesInOutput": 2123 + "bytesInOutput": 2071 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/reduction.js": { - "bytesInOutput": 2162 + "bytesInOutput": 2118 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/slice_join.js": { - "bytesInOutput": 3453 + "bytesInOutput": 3407 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/spectral.js": { - "bytesInOutput": 518 + "bytesInOutput": 476 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/op_list/transformation.js": { - "bytesInOutput": 2010 + "bytesInOutput": 1956 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/operation_mapper.js": { - "bytesInOutput": 9568 + "bytesInOutput": 6217 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/custom_op/node_value_impl.js": { - "bytesInOutput": 1449 + "bytesInOutput": 970 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/arithmetic_executor.js": { - "bytesInOutput": 1496 + "bytesInOutput": 752 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/basic_math_executor.js": { - "bytesInOutput": 3296 + "bytesInOutput": 1762 }, "node_modules/@tensorflow/tfjs-converter/dist/executor/tensor_utils.js": { - "bytesInOutput": 383 + "bytesInOutput": 212 }, "node_modules/@tensorflow/tfjs-converter/dist/executor/tensor_array.js": { - "bytesInOutput": 5324 + "bytesInOutput": 4188 }, "node_modules/@tensorflow/tfjs-converter/dist/executor/tensor_list.js": { - "bytesInOutput": 6679 + "bytesInOutput": 4531 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/control_executor.js": { - "bytesInOutput": 9416 + "bytesInOutput": 4753 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/convolution_executor.js": { - "bytesInOutput": 6501 + "bytesInOutput": 3336 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/creation_executor.js": { - "bytesInOutput": 2249 + "bytesInOutput": 1047 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/dynamic_executor.js": { - "bytesInOutput": 1840 + "bytesInOutput": 1136 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/evaluation_executor.js": { - "bytesInOutput": 637 + "bytesInOutput": 361 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/graph_executor.js": { - "bytesInOutput": 1555 + "bytesInOutput": 993 }, "node_modules/@tensorflow/tfjs-converter/dist/executor/hash_table.js": { - "bytesInOutput": 1528 + "bytesInOutput": 1161 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/hash_table_executor.js": { - "bytesInOutput": 1067 + "bytesInOutput": 587 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/image_executor.js": { - "bytesInOutput": 1310 + "bytesInOutput": 635 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/logical_executor.js": { - "bytesInOutput": 1320 + "bytesInOutput": 649 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/matrices_executor.js": { - "bytesInOutput": 1435 + "bytesInOutput": 831 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/normalization_executor.js": { - "bytesInOutput": 1465 + "bytesInOutput": 704 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/reduction_executor.js": { - "bytesInOutput": 2506 + "bytesInOutput": 1139 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/slice_join_executor.js": { - "bytesInOutput": 3847 + "bytesInOutput": 1817 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/spectral_executor.js": { - "bytesInOutput": 396 + "bytesInOutput": 240 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/executors/transformation_executor.js": { - "bytesInOutput": 1808 + "bytesInOutput": 875 }, "node_modules/@tensorflow/tfjs-converter/dist/operations/operation_executor.js": { - "bytesInOutput": 1847 + "bytesInOutput": 1110 }, "node_modules/@tensorflow/tfjs-converter/dist/executor/execution_context.js": { - "bytesInOutput": 2405 + "bytesInOutput": 2061 }, "node_modules/@tensorflow/tfjs-converter/dist/executor/model_analysis.js": { - "bytesInOutput": 2320 + "bytesInOutput": 1419 }, "node_modules/@tensorflow/tfjs-converter/dist/executor/graph_executor.js": { - "bytesInOutput": 11935 + "bytesInOutput": 7656 }, "node_modules/@tensorflow/tfjs-converter/dist/executor/resource_manager.js": { - "bytesInOutput": 646 + "bytesInOutput": 506 }, "node_modules/@tensorflow/tfjs-converter/dist/executor/graph_model.js": { - "bytesInOutput": 4678 + "bytesInOutput": 3710 }, "node_modules/@tensorflow/tfjs-converter/dist/index.js": { "bytesInOutput": 0 }, "node_modules/@tensorflow/tfjs-converter/dist/version.js": { - "bytesInOutput": 21 + "bytesInOutput": 15 }, "node_modules/@tensorflow/tfjs-data/dist/index.js": { - "bytesInOutput": 341 + "bytesInOutput": 234 }, "node_modules/@tensorflow/tfjs-data/dist/dataset.js": { - "bytesInOutput": 4805 + "bytesInOutput": 3469 }, "node_modules/@tensorflow/tfjs-data/dist/iterators/lazy_iterator.js": { - "bytesInOutput": 10882 + "bytesInOutput": 8089 }, "node_modules/@tensorflow/tfjs-data/dist/util/deep_map.js": { - "bytesInOutput": 2452 + "bytesInOutput": 1587 }, "node_modules/@tensorflow/tfjs-data/dist/util/deep_clone.js": { - "bytesInOutput": 227 + "bytesInOutput": 148 }, "node_modules/@tensorflow/tfjs-data/dist/util/ring_buffer.js": { - "bytesInOutput": 1720 + "bytesInOutput": 1497 }, "node_modules/@tensorflow/tfjs-data/dist/util/growing_ring_buffer.js": { - "bytesInOutput": 551 + "bytesInOutput": 428 }, "node_modules/@tensorflow/tfjs-data/dist/datasets/text_line_dataset.js": { - "bytesInOutput": 230 + "bytesInOutput": 187 }, "node_modules/@tensorflow/tfjs-data/dist/datasets/csv_dataset.js": { - "bytesInOutput": 5300 + "bytesInOutput": 3822 }, "node_modules/@tensorflow/tfjs-data/dist/iterators/microphone_iterator.js": { - "bytesInOutput": 4232 + "bytesInOutput": 3488 }, "node_modules/@tensorflow/tfjs-data/dist/iterators/webcam_iterator.js": { - "bytesInOutput": 3704 + "bytesInOutput": 2999 }, "node_modules/@tensorflow/tfjs-data/dist/datasource.js": { - "bytesInOutput": 23 + "bytesInOutput": 15 }, "node_modules/@tensorflow/tfjs-data/dist/iterators/string_iterator.js": { - "bytesInOutput": 932 + "bytesInOutput": 688 }, "node_modules/@tensorflow/tfjs-data/dist/iterators/byte_chunk_iterator.js": { - "bytesInOutput": 898 + "bytesInOutput": 671 }, "node_modules/@tensorflow/tfjs-data/dist/iterators/file_chunk_iterator.js": { - "bytesInOutput": 1215 + "bytesInOutput": 989 }, "node_modules/@tensorflow/tfjs-data/dist/iterators/url_chunk_iterator.js": { - "bytesInOutput": 657 + "bytesInOutput": 381 }, "node_modules/@tensorflow/tfjs-data/dist/util/source_util.js": { - "bytesInOutput": 92 + "bytesInOutput": 68 }, "node_modules/@tensorflow/tfjs-data/dist/sources/file_data_source.js": { - "bytesInOutput": 315 + "bytesInOutput": 245 }, "node_modules/@tensorflow/tfjs-data/dist/sources/url_data_source.js": { - "bytesInOutput": 274 + "bytesInOutput": 196 }, "node_modules/@tensorflow/tfjs-data/dist/readers.js": { - "bytesInOutput": 542 + "bytesInOutput": 259 }, "node_modules/@tensorflow/tfjs-data/dist/version.js": { - "bytesInOutput": 21 + "bytesInOutput": 15 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/cpu_util.js": { - "bytesInOutput": 231 + "bytesInOutput": 166 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/backend_cpu.js": { - "bytesInOutput": 3143 + "bytesInOutput": 2391 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/shared.js": { - "bytesInOutput": 877 + "bytesInOutput": 588 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Abs.js": { - "bytesInOutput": 518 + "bytesInOutput": 337 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/binary_impl.js": { - "bytesInOutput": 1159 + "bytesInOutput": 579 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Complex.js": { - "bytesInOutput": 541 + "bytesInOutput": 355 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/zeros_impl.js": { - "bytesInOutput": 357 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Identity.js": { - "bytesInOutput": 229 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Real.js": { - "bytesInOutput": 319 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cast.js": { - "bytesInOutput": 1442 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/binary_utils.js": { - "bytesInOutput": 3698 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Add.js": { - "bytesInOutput": 275 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Bincount_impl.js": { - "bytesInOutput": 875 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/unary_impl.js": { "bytesInOutput": 220 }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Identity.js": { + "bytesInOutput": 176 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Real.js": { + "bytesInOutput": 228 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cast.js": { + "bytesInOutput": 1026 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/binary_utils.js": { + "bytesInOutput": 1950 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Add.js": { + "bytesInOutput": 129 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Bincount_impl.js": { + "bytesInOutput": 498 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/unary_impl.js": { + "bytesInOutput": 126 + }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/unary_utils.js": { - "bytesInOutput": 978 + "bytesInOutput": 648 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Ceil.js": { - "bytesInOutput": 163 + "bytesInOutput": 91 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Concat_impl.js": { - "bytesInOutput": 668 + "bytesInOutput": 368 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Exp.js": { - "bytesInOutput": 155 + "bytesInOutput": 90 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Expm1.js": { - "bytesInOutput": 171 + "bytesInOutput": 92 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Floor.js": { - "bytesInOutput": 171 + "bytesInOutput": 92 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherV2_impl.js": { - "bytesInOutput": 443 + "bytesInOutput": 203 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Greater.js": { - "bytesInOutput": 193 + "bytesInOutput": 102 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Less.js": { - "bytesInOutput": 172 + "bytesInOutput": 102 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LinSpace_impl.js": { - "bytesInOutput": 214 + "bytesInOutput": 131 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Log.js": { - "bytesInOutput": 155 + "bytesInOutput": 90 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Max_impl.js": { - "bytesInOutput": 319 + "bytesInOutput": 180 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Maximum.js": { - "bytesInOutput": 207 + "bytesInOutput": 96 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Minimum.js": { - "bytesInOutput": 207 + "bytesInOutput": 96 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Multiply.js": { - "bytesInOutput": 364 + "bytesInOutput": 137 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Neg.js": { - "bytesInOutput": 446 + "bytesInOutput": 288 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NotEqual.js": { - "bytesInOutput": 202 + "bytesInOutput": 104 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Transpose_impl.js": { - "bytesInOutput": 569 + "bytesInOutput": 306 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Transpose.js": { - "bytesInOutput": 508 + "bytesInOutput": 343 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Prod.js": { - "bytesInOutput": 1477 + "bytesInOutput": 815 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Range_impl.js": { - "bytesInOutput": 533 + "bytesInOutput": 240 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Rsqrt.js": { - "bytesInOutput": 172 + "bytesInOutput": 93 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Slice.js": { - "bytesInOutput": 1252 + "bytesInOutput": 728 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SquaredDifference.js": { - "bytesInOutput": 275 + "bytesInOutput": 105 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StridedSlice_impl.js": { - "bytesInOutput": 305 + "bytesInOutput": 191 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sub.js": { - "bytesInOutput": 295 + "bytesInOutput": 129 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tile_impl.js": { - "bytesInOutput": 456 + "bytesInOutput": 289 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/TopK_impl.js": { - "bytesInOutput": 828 + "bytesInOutput": 450 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Unique_impl.js": { - "bytesInOutput": 1319 + "bytesInOutput": 687 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/version.js": { - "bytesInOutput": 21 + "bytesInOutput": 15 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/base.js": { - "bytesInOutput": 48 + "bytesInOutput": 23 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/index.js": { "bytesInOutput": 0 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Elu.js": { - "bytesInOutput": 119 + "bytesInOutput": 89 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LeakyRelu.js": { - "bytesInOutput": 491 + "bytesInOutput": 341 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Prelu.js": { - "bytesInOutput": 500 + "bytesInOutput": 297 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Relu.js": { - "bytesInOutput": 115 + "bytesInOutput": 82 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Relu6.js": { - "bytesInOutput": 132 + "bytesInOutput": 94 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/fused_utils.js": { - "bytesInOutput": 663 + "bytesInOutput": 436 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Reshape.js": { - "bytesInOutput": 782 + "bytesInOutput": 585 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BatchMatMul.js": { - "bytesInOutput": 3147 + "bytesInOutput": 1843 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/_FusedMatMul.js": { - "bytesInOutput": 754 + "bytesInOutput": 436 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Acos.js": { - "bytesInOutput": 114 + "bytesInOutput": 81 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Acosh.js": { - "bytesInOutput": 120 + "bytesInOutput": 82 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AddN.js": { - "bytesInOutput": 485 + "bytesInOutput": 323 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/All.js": { - "bytesInOutput": 1385 + "bytesInOutput": 849 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Any.js": { - "bytesInOutput": 1393 + "bytesInOutput": 849 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ArgMax.js": { - "bytesInOutput": 1246 + "bytesInOutput": 746 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ArgMin.js": { - "bytesInOutput": 1246 + "bytesInOutput": 746 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Asin.js": { - "bytesInOutput": 114 + "bytesInOutput": 81 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Asinh.js": { - "bytesInOutput": 120 + "bytesInOutput": 82 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Atan.js": { - "bytesInOutput": 114 + "bytesInOutput": 81 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Atan2.js": { - "bytesInOutput": 195 + "bytesInOutput": 98 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Atanh.js": { - "bytesInOutput": 120 + "bytesInOutput": 82 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/pool_utils.js": { - "bytesInOutput": 7788 + "bytesInOutput": 3602 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPool.js": { - "bytesInOutput": 975 + "bytesInOutput": 649 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPool3D.js": { - "bytesInOutput": 654 + "bytesInOutput": 422 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPool3DGrad.js": { - "bytesInOutput": 2232 + "bytesInOutput": 1156 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPoolGrad.js": { - "bytesInOutput": 1595 + "bytesInOutput": 909 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BatchNorm.js": { - "bytesInOutput": 1556 + "bytesInOutput": 1068 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BatchToSpaceND.js": { - "bytesInOutput": 1231 + "bytesInOutput": 665 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Bincount.js": { - "bytesInOutput": 405 + "bytesInOutput": 260 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Clip.js": { - "bytesInOutput": 250 + "bytesInOutput": 155 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ComplexAbs.js": { - "bytesInOutput": 616 + "bytesInOutput": 385 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Imag.js": { - "bytesInOutput": 319 + "bytesInOutput": 228 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Concat.js": { - "bytesInOutput": 1951 + "bytesInOutput": 1239 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv2D.js": { - "bytesInOutput": 2250 + "bytesInOutput": 1281 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv2DBackpropFilter.js": { - "bytesInOutput": 1722 + "bytesInOutput": 1099 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv2DBackpropInput.js": { - "bytesInOutput": 2394 + "bytesInOutput": 1352 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv3D.js": { - "bytesInOutput": 2005 + "bytesInOutput": 1301 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv3DBackpropFilterV2.js": { - "bytesInOutput": 2291 + "bytesInOutput": 1362 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv3DBackpropInputV2.js": { - "bytesInOutput": 2192 + "bytesInOutput": 1373 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cos.js": { - "bytesInOutput": 108 + "bytesInOutput": 80 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cosh.js": { - "bytesInOutput": 114 + "bytesInOutput": 81 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/CropAndResize.js": { - "bytesInOutput": 2913 + "bytesInOutput": 1608 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cumsum.js": { - "bytesInOutput": 1543 + "bytesInOutput": 959 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DenseBincount.js": { - "bytesInOutput": 803 + "bytesInOutput": 538 }, "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthToSpace.js": { - "bytesInOutput": 1238 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthwiseConv2dNative.js": { - "bytesInOutput": 2081 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthwiseConv2dNativeBackpropFilter.js": { - "bytesInOutput": 1646 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthwiseConv2dNativeBackpropInput.js": { - "bytesInOutput": 1983 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Diag.js": { - "bytesInOutput": 434 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Dilation2D.js": { - "bytesInOutput": 1650 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Dilation2DBackpropFilter.js": { - "bytesInOutput": 1668 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Dilation2DBackpropInput.js": { - "bytesInOutput": 1678 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/EluGrad.js": { - "bytesInOutput": 520 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Equal.js": { - "bytesInOutput": 181 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Erf.js": { - "bytesInOutput": 397 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ExpandDims.js": { - "bytesInOutput": 499 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RealDiv.js": { - "bytesInOutput": 169 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/fft_utils.js": { - "bytesInOutput": 7748 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FFT.js": { - "bytesInOutput": 621 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Fill.js": { - "bytesInOutput": 416 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FlipLeftRight.js": { - "bytesInOutput": 1106 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FloorDiv.js": { - "bytesInOutput": 209 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FusedConv2D.js": { - "bytesInOutput": 744 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FusedDepthwiseConv2D.js": { - "bytesInOutput": 795 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherNd.js": { - "bytesInOutput": 1085 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherV2.js": { - "bytesInOutput": 1203 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GreaterEqual.js": { - "bytesInOutput": 229 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IFFT.js": { - "bytesInOutput": 625 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IsFinite.js": { - "bytesInOutput": 151 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IsInf.js": { - "bytesInOutput": 140 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IsNaN.js": { - "bytesInOutput": 133 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LessEqual.js": { - "bytesInOutput": 208 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LinSpace.js": { - "bytesInOutput": 263 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Log1p.js": { - "bytesInOutput": 120 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LogicalAnd.js": { - "bytesInOutput": 211 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LogicalNot.js": { - "bytesInOutput": 144 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LogicalOr.js": { - "bytesInOutput": 204 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LRN.js": { - "bytesInOutput": 884 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LRNGrad.js": { - "bytesInOutput": 1015 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Max.js": { - "bytesInOutput": 1162 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPool.js": { - "bytesInOutput": 975 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPool3D.js": { - "bytesInOutput": 654 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPool3DGrad.js": { - "bytesInOutput": 2412 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPoolGrad.js": { - "bytesInOutput": 1826 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPoolWithArgmax_impl.js": { - "bytesInOutput": 318 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPoolWithArgmax.js": { - "bytesInOutput": 741 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sum.js": { - "bytesInOutput": 1603 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Mean.js": { - "bytesInOutput": 792 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Min.js": { - "bytesInOutput": 1393 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MirrorPad.js": { - "bytesInOutput": 1144 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Mod.js": { - "bytesInOutput": 251 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Multinomial.js": { - "bytesInOutput": 1228 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Softmax.js": { - "bytesInOutput": 1336 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NonMaxSuppressionV3.js": { "bytesInOutput": 685 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NonMaxSuppressionV4.js": { - "bytesInOutput": 810 + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthwiseConv2dNative.js": { + "bytesInOutput": 1313 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NonMaxSuppressionV5.js": { - "bytesInOutput": 962 + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthwiseConv2dNativeBackpropFilter.js": { + "bytesInOutput": 1031 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/OneHot.js": { - "bytesInOutput": 596 + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthwiseConv2dNativeBackpropInput.js": { + "bytesInOutput": 1197 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ZerosLike.js": { - "bytesInOutput": 818 + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Diag.js": { + "bytesInOutput": 307 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/OnesLike.js": { - "bytesInOutput": 812 + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Dilation2D.js": { + "bytesInOutput": 1094 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Pack.js": { - "bytesInOutput": 874 + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Dilation2DBackpropFilter.js": { + "bytesInOutput": 1164 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/PadV2.js": { - "bytesInOutput": 962 + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Dilation2DBackpropInput.js": { + "bytesInOutput": 1181 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Pow.js": { - "bytesInOutput": 159 + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/EluGrad.js": { + "bytesInOutput": 353 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Range.js": { - "bytesInOutput": 264 + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Equal.js": { + "bytesInOutput": 104 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Reciprocal.js": { - "bytesInOutput": 135 + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Erf.js": { + "bytesInOutput": 248 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeBilinear.js": { - "bytesInOutput": 2334 + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ExpandDims.js": { + "bytesInOutput": 321 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeBilinearGrad.js": { - "bytesInOutput": 2148 + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RealDiv.js": { + "bytesInOutput": 86 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeNearestNeighbor.js": { - "bytesInOutput": 1868 + "node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/fft_utils.js": { + "bytesInOutput": 4283 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeNearestNeighborGrad.js": { - "bytesInOutput": 2145 + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FFT.js": { + "bytesInOutput": 365 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Reverse.js": { - "bytesInOutput": 648 + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Fill.js": { + "bytesInOutput": 258 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RotateWithOffset.js": { - "bytesInOutput": 1663 + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FlipLeftRight.js": { + "bytesInOutput": 511 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Round.js": { - "bytesInOutput": 217 + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FloorDiv.js": { + "bytesInOutput": 111 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Scatter_impl.js": { - "bytesInOutput": 877 + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FusedConv2D.js": { + "bytesInOutput": 511 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ScatterNd.js": { - "bytesInOutput": 576 + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FusedDepthwiseConv2D.js": { + "bytesInOutput": 511 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Select.js": { - "bytesInOutput": 814 + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherNd.js": { + "bytesInOutput": 605 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Selu.js": { - "bytesInOutput": 229 + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherV2.js": { + "bytesInOutput": 698 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sigmoid.js": { - "bytesInOutput": 135 + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GreaterEqual.js": { + "bytesInOutput": 103 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sign.js": { - "bytesInOutput": 117 + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IFFT.js": { + "bytesInOutput": 365 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sin.js": { - "bytesInOutput": 108 + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IsFinite.js": { + "bytesInOutput": 98 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sinh.js": { - "bytesInOutput": 114 + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IsInf.js": { + "bytesInOutput": 102 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Softplus.js": { - "bytesInOutput": 336 + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IsNaN.js": { + "bytesInOutput": 95 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SpaceToBatchND.js": { - "bytesInOutput": 1307 + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LessEqual.js": { + "bytesInOutput": 103 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseToDense.js": { - "bytesInOutput": 739 + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LinSpace.js": { + "bytesInOutput": 180 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SplitV.js": { - "bytesInOutput": 540 + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Log1p.js": { + "bytesInOutput": 82 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sqrt.js": { - "bytesInOutput": 114 + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LogicalAnd.js": { + "bytesInOutput": 99 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Square.js": { - "bytesInOutput": 415 + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LogicalNot.js": { + "bytesInOutput": 81 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Step.js": { - "bytesInOutput": 174 + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LogicalOr.js": { + "bytesInOutput": 99 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StridedSlice.js": { - "bytesInOutput": 1206 + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LRN.js": { + "bytesInOutput": 488 }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tan.js": { - "bytesInOutput": 108 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tanh.js": { - "bytesInOutput": 114 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tile.js": { - "bytesInOutput": 301 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/TopK.js": { - "bytesInOutput": 474 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Unique.js": { - "bytesInOutput": 435 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Unpack.js": { - "bytesInOutput": 728 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/UnsortedSegmentSum.js": { - "bytesInOutput": 1322 - }, - "node_modules/@tensorflow/tfjs-backend-cpu/dist/register_all_kernels.js": { - "bytesInOutput": 2466 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/canvas_util.js": { - "bytesInOutput": 1586 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/tex_util.js": { - "bytesInOutput": 2847 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/webgl_util.js": { - "bytesInOutput": 14084 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/flags_webgl.js": { - "bytesInOutput": 2601 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/glsl_version.js": { - "bytesInOutput": 1922 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/shader_compiler_util.js": { - "bytesInOutput": 1536 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/decode_matrix_gpu.js": { - "bytesInOutput": 888 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/decode_matrix_packed_gpu.js": { - "bytesInOutput": 924 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_float_gpu.js": { - "bytesInOutput": 339 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_float_packed_gpu.js": { - "bytesInOutput": 467 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_matrix_gpu.js": { - "bytesInOutput": 1064 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_matrix_packed_gpu.js": { - "bytesInOutput": 1719 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/gpgpu_util.js": { - "bytesInOutput": 6616 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/gpgpu_context.js": { - "bytesInOutput": 12216 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/shader_compiler.js": { - "bytesInOutput": 33777 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/gpgpu_math.js": { - "bytesInOutput": 3832 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/shared.js": { - "bytesInOutput": 741 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/packing_util.js": { - "bytesInOutput": 339 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/pack_gpu.js": { - "bytesInOutput": 1943 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/reshape_packed_gpu.js": { - "bytesInOutput": 1279 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/texture_manager.js": { - "bytesInOutput": 6044 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/unaryop_gpu.js": { + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LRNGrad.js": { "bytesInOutput": 599 }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Max.js": { + "bytesInOutput": 624 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPool.js": { + "bytesInOutput": 649 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPool3D.js": { + "bytesInOutput": 422 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPool3DGrad.js": { + "bytesInOutput": 1204 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPoolGrad.js": { + "bytesInOutput": 1059 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPoolWithArgmax_impl.js": { + "bytesInOutput": 116 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPoolWithArgmax.js": { + "bytesInOutput": 447 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sum.js": { + "bytesInOutput": 955 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Mean.js": { + "bytesInOutput": 536 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Min.js": { + "bytesInOutput": 853 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MirrorPad.js": { + "bytesInOutput": 679 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Mod.js": { + "bytesInOutput": 132 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Multinomial.js": { + "bytesInOutput": 687 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Softmax.js": { + "bytesInOutput": 899 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NonMaxSuppressionV3.js": { + "bytesInOutput": 397 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NonMaxSuppressionV4.js": { + "bytesInOutput": 491 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NonMaxSuppressionV5.js": { + "bytesInOutput": 516 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/OneHot.js": { + "bytesInOutput": 368 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ZerosLike.js": { + "bytesInOutput": 615 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/OnesLike.js": { + "bytesInOutput": 614 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Pack.js": { + "bytesInOutput": 598 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/PadV2.js": { + "bytesInOutput": 580 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Pow.js": { + "bytesInOutput": 96 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Range.js": { + "bytesInOutput": 183 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Reciprocal.js": { + "bytesInOutput": 72 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeBilinear.js": { + "bytesInOutput": 924 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeBilinearGrad.js": { + "bytesInOutput": 850 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeNearestNeighbor.js": { + "bytesInOutput": 771 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeNearestNeighborGrad.js": { + "bytesInOutput": 1036 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Reverse.js": { + "bytesInOutput": 454 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RotateWithOffset.js": { + "bytesInOutput": 744 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Round.js": { + "bytesInOutput": 151 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Scatter_impl.js": { + "bytesInOutput": 405 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ScatterNd.js": { + "bytesInOutput": 338 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Select.js": { + "bytesInOutput": 516 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Selu.js": { + "bytesInOutput": 134 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sigmoid.js": { + "bytesInOutput": 87 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sign.js": { + "bytesInOutput": 83 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sin.js": { + "bytesInOutput": 80 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sinh.js": { + "bytesInOutput": 81 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Softplus.js": { + "bytesInOutput": 185 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SpaceToBatchND.js": { + "bytesInOutput": 714 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseToDense.js": { + "bytesInOutput": 403 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SplitV.js": { + "bytesInOutput": 370 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sqrt.js": { + "bytesInOutput": 81 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Square.js": { + "bytesInOutput": 289 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Step.js": { + "bytesInOutput": 116 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StridedSlice.js": { + "bytesInOutput": 803 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tan.js": { + "bytesInOutput": 80 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tanh.js": { + "bytesInOutput": 81 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tile.js": { + "bytesInOutput": 214 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/TopK.js": { + "bytesInOutput": 302 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Unique.js": { + "bytesInOutput": 314 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Unpack.js": { + "bytesInOutput": 512 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/UnsortedSegmentSum.js": { + "bytesInOutput": 756 + }, + "node_modules/@tensorflow/tfjs-backend-cpu/dist/register_all_kernels.js": { + "bytesInOutput": 490 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/canvas_util.js": { + "bytesInOutput": 1106 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/tex_util.js": { + "bytesInOutput": 1292 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/webgl_util.js": { + "bytesInOutput": 8548 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/flags_webgl.js": { + "bytesInOutput": 2228 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/glsl_version.js": { + "bytesInOutput": 1626 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/shader_compiler_util.js": { + "bytesInOutput": 1318 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/decode_matrix_gpu.js": { + "bytesInOutput": 724 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/decode_matrix_packed_gpu.js": { + "bytesInOutput": 754 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_float_gpu.js": { + "bytesInOutput": 253 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_float_packed_gpu.js": { + "bytesInOutput": 375 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_matrix_gpu.js": { + "bytesInOutput": 885 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_matrix_packed_gpu.js": { + "bytesInOutput": 1439 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/gpgpu_util.js": { + "bytesInOutput": 3256 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/gpgpu_context.js": { + "bytesInOutput": 8972 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/shader_compiler.js": { + "bytesInOutput": 23775 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/gpgpu_math.js": { + "bytesInOutput": 2637 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/shared.js": { + "bytesInOutput": 412 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/packing_util.js": { + "bytesInOutput": 221 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/pack_gpu.js": { + "bytesInOutput": 1366 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/reshape_packed_gpu.js": { + "bytesInOutput": 1056 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/texture_manager.js": { + "bytesInOutput": 3665 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/unaryop_gpu.js": { + "bytesInOutput": 501 + }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/unaryop_packed_gpu.js": { - "bytesInOutput": 1190 + "bytesInOutput": 1132 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/unpack_gpu.js": { - "bytesInOutput": 560 + "bytesInOutput": 388 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/backend_webgl.js": { - "bytesInOutput": 20045 + "bytesInOutput": 14272 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/version.js": { - "bytesInOutput": 21 + "bytesInOutput": 15 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/base.js": { - "bytesInOutput": 85 + "bytesInOutput": 41 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/index.js": { "bytesInOutput": 0 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/binaryop_gpu.js": { - "bytesInOutput": 485 + "bytesInOutput": 413 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/binaryop_packed_gpu.js": { - "bytesInOutput": 1808 + "bytesInOutput": 1491 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Identity.js": { - "bytesInOutput": 232 + "bytesInOutput": 178 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Complex.js": { - "bytesInOutput": 669 + "bytesInOutput": 398 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LeakyRelu.js": { - "bytesInOutput": 752 + "bytesInOutput": 542 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Prelu.js": { - "bytesInOutput": 549 + "bytesInOutput": 425 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/kernel_funcs_utils.js": { - "bytesInOutput": 3225 + "bytesInOutput": 2028 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/mulmat_packed_gpu.js": { - "bytesInOutput": 2453 + "bytesInOutput": 1738 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/binaryop_complex_gpu.js": { - "bytesInOutput": 719 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Multiply.js": { - "bytesInOutput": 1780 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/reshape.js": { - "bytesInOutput": 521 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Reshape.js": { - "bytesInOutput": 828 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/mean_gpu.js": { - "bytesInOutput": 2036 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/reduce_gpu.js": { - "bytesInOutput": 3744 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/reduce.js": { - "bytesInOutput": 1008 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/transpose_gpu.js": { - "bytesInOutput": 794 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/transpose_packed_gpu.js": { - "bytesInOutput": 1215 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Transpose_impl.js": { - "bytesInOutput": 227 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sum_impl.js": { - "bytesInOutput": 1227 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sum.js": { - "bytesInOutput": 202 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Transpose.js": { - "bytesInOutput": 655 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchMatMul_impl.js": { - "bytesInOutput": 3711 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/_FusedMatMul.js": { - "bytesInOutput": 408 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Abs.js": { - "bytesInOutput": 557 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Acos.js": { - "bytesInOutput": 198 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Acosh.js": { - "bytesInOutput": 206 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Add.js": { - "bytesInOutput": 210 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/addn_gpu.js": { - "bytesInOutput": 507 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/addn_packed_gpu.js": { - "bytesInOutput": 553 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AddN.js": { - "bytesInOutput": 800 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/All.js": { - "bytesInOutput": 1238 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Any.js": { - "bytesInOutput": 1238 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/argminmax_gpu.js": { - "bytesInOutput": 939 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/argminmax_packed_gpu.js": { - "bytesInOutput": 4225 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/arg_min_max.js": { - "bytesInOutput": 2086 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ArgMax.js": { - "bytesInOutput": 739 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ArgMin.js": { - "bytesInOutput": 739 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Asin.js": { - "bytesInOutput": 198 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Asinh.js": { - "bytesInOutput": 178 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Atan.js": { - "bytesInOutput": 157 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Atan2.js": { - "bytesInOutput": 367 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Atanh.js": { - "bytesInOutput": 231 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/pool_gpu.js": { - "bytesInOutput": 12733 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPool.js": { - "bytesInOutput": 854 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPool3D.js": { - "bytesInOutput": 476 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/avg_pool_backprop_gpu.js": { - "bytesInOutput": 4569 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPool3DGrad.js": { - "bytesInOutput": 509 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPoolGrad.js": { - "bytesInOutput": 492 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchMatMul.js": { - "bytesInOutput": 272 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/batchnorm_gpu.js": { - "bytesInOutput": 1108 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/batchnorm_packed_gpu.js": { - "bytesInOutput": 1123 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchNorm.js": { - "bytesInOutput": 1255 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/slice_gpu.js": { - "bytesInOutput": 1159 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/slice_packed_gpu.js": { - "bytesInOutput": 1867 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Slice.js": { - "bytesInOutput": 1685 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchToSpaceND.js": { - "bytesInOutput": 1379 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Bincount.js": { - "bytesInOutput": 397 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NotEqual.js": { - "bytesInOutput": 181 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Real.js": { - "bytesInOutput": 276 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/int.js": { - "bytesInOutput": 242 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cast.js": { - "bytesInOutput": 1249 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Ceil.js": { - "bytesInOutput": 182 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/clip_gpu.js": { - "bytesInOutput": 664 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/clip_packed_gpu.js": { - "bytesInOutput": 729 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ClipByValue.js": { - "bytesInOutput": 452 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/complex_abs_gpu.js": { - "bytesInOutput": 561 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ComplexAbs.js": { - "bytesInOutput": 610 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/concat_gpu.js": { - "bytesInOutput": 839 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/concat_packed_gpu.js": { - "bytesInOutput": 2315 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Imag.js": { - "bytesInOutput": 276 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Concat_impl.js": { - "bytesInOutput": 2425 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Concat.js": { - "bytesInOutput": 677 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_gpu.js": { - "bytesInOutput": 9904 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/im2col_packed_gpu.js": { - "bytesInOutput": 2022 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2D_impl.js": { - "bytesInOutput": 4687 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2D.js": { - "bytesInOutput": 1083 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_backprop_gpu.js": { - "bytesInOutput": 7656 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2DBackpropFilter.js": { - "bytesInOutput": 561 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2DBackpropInput.js": { - "bytesInOutput": 569 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv3D.js": { - "bytesInOutput": 384 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv3DBackpropFilterV2.js": { - "bytesInOutput": 442 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv3DBackpropInputV2.js": { - "bytesInOutput": 443 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cos.js": { - "bytesInOutput": 156 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cosh.js": { - "bytesInOutput": 178 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/crop_and_resize_gpu.js": { - "bytesInOutput": 3046 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/CropAndResize.js": { - "bytesInOutput": 406 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/cumsum_gpu.js": { - "bytesInOutput": 1585 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cumsum.js": { - "bytesInOutput": 1532 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DenseBincount.js": { - "bytesInOutput": 798 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/depth_to_space_gpu.js": { - "bytesInOutput": 1259 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthToSpace.js": { - "bytesInOutput": 854 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_gpu_depthwise.js": { - "bytesInOutput": 2765 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_packed_gpu_depthwise.js": { - "bytesInOutput": 7672 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthwiseConv2dNative.js": { - "bytesInOutput": 939 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_backprop_gpu_depthwise.js": { - "bytesInOutput": 3142 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthwiseConv2dNativeBackpropFilter.js": { - "bytesInOutput": 556 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthwiseConv2dNativeBackpropInput.js": { - "bytesInOutput": 564 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/diag_gpu.js": { - "bytesInOutput": 286 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Diag.js": { - "bytesInOutput": 537 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/dilation_gpu.js": { - "bytesInOutput": 1421 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Dilation2D.js": { - "bytesInOutput": 568 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Elu.js": { - "bytesInOutput": 439 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/EluGrad.js": { - "bytesInOutput": 560 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Equal.js": { - "bytesInOutput": 235 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Erf.js": { - "bytesInOutput": 729 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Exp.js": { - "bytesInOutput": 173 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ExpandDims.js": { - "bytesInOutput": 502 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Expm1.js": { - "bytesInOutput": 195 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/fft_gpu.js": { - "bytesInOutput": 1517 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FFT_impl.js": { - "bytesInOutput": 1109 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FFT.js": { - "bytesInOutput": 180 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/fill_gpu.js": { - "bytesInOutput": 460 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Fill.js": { - "bytesInOutput": 532 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/flip_left_right_gpu.js": { - "bytesInOutput": 638 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FlipLeftRight.js": { - "bytesInOutput": 275 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Floor.js": { - "bytesInOutput": 191 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FloorDiv.js": { - "bytesInOutput": 934 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels_utils/from_pixels_gpu.js": { - "bytesInOutput": 793 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels_utils/from_pixels_packed_gpu.js": { - "bytesInOutput": 1174 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels.js": { - "bytesInOutput": 1368 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FusedConv2D.js": { - "bytesInOutput": 1933 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FusedDepthwiseConv2D.js": { - "bytesInOutput": 1850 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/gather_nd_gpu.js": { - "bytesInOutput": 737 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/GatherNd.js": { - "bytesInOutput": 960 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/gather_gpu.js": { "bytesInOutput": 642 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/GatherV2.js": { - "bytesInOutput": 1545 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Multiply.js": { + "bytesInOutput": 1233 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Greater.js": { - "bytesInOutput": 285 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/reshape.js": { + "bytesInOutput": 222 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/GreaterEqual.js": { - "bytesInOutput": 306 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Reshape.js": { + "bytesInOutput": 559 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IFFT.js": { - "bytesInOutput": 184 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/mean_gpu.js": { + "bytesInOutput": 1623 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IsFinite.js": { - "bytesInOutput": 196 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/reduce_gpu.js": { + "bytesInOutput": 2949 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IsInf.js": { - "bytesInOutput": 164 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/reduce.js": { + "bytesInOutput": 638 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IsNaN.js": { - "bytesInOutput": 164 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/transpose_gpu.js": { + "bytesInOutput": 538 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Less.js": { - "bytesInOutput": 255 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/transpose_packed_gpu.js": { + "bytesInOutput": 899 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LessEqual.js": { - "bytesInOutput": 279 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Transpose_impl.js": { + "bytesInOutput": 144 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LinSpace.js": { - "bytesInOutput": 271 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sum_impl.js": { + "bytesInOutput": 600 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Log.js": { - "bytesInOutput": 493 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sum.js": { + "bytesInOutput": 155 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Log1p.js": { - "bytesInOutput": 146 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Transpose.js": { + "bytesInOutput": 405 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LogicalAnd.js": { - "bytesInOutput": 366 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchMatMul_impl.js": { + "bytesInOutput": 1976 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LogicalNot.js": { - "bytesInOutput": 184 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/_FusedMatMul.js": { + "bytesInOutput": 329 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LogicalOr.js": { - "bytesInOutput": 372 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Abs.js": { + "bytesInOutput": 402 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/lrn_gpu.js": { - "bytesInOutput": 903 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Acos.js": { + "bytesInOutput": 148 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/lrn_packed_gpu.js": { - "bytesInOutput": 2650 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Acosh.js": { + "bytesInOutput": 150 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LRN.js": { - "bytesInOutput": 378 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Add.js": { + "bytesInOutput": 153 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/lrn_grad_gpu.js": { - "bytesInOutput": 1937 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/addn_gpu.js": { + "bytesInOutput": 391 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LRNGrad.js": { - "bytesInOutput": 308 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/addn_packed_gpu.js": { + "bytesInOutput": 431 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Max_impl.js": { - "bytesInOutput": 505 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AddN.js": { + "bytesInOutput": 518 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Max.js": { - "bytesInOutput": 1677 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/All.js": { + "bytesInOutput": 758 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Maximum.js": { - "bytesInOutput": 397 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Any.js": { + "bytesInOutput": 758 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPool.js": { - "bytesInOutput": 852 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/argminmax_gpu.js": { + "bytesInOutput": 821 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPool3D.js": { - "bytesInOutput": 474 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/argminmax_packed_gpu.js": { + "bytesInOutput": 3185 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/max_pool_backprop_gpu.js": { - "bytesInOutput": 5025 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/arg_min_max.js": { + "bytesInOutput": 1118 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPool3DGrad.js": { - "bytesInOutput": 750 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ArgMax.js": { + "bytesInOutput": 462 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPoolGrad.js": { - "bytesInOutput": 792 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ArgMin.js": { + "bytesInOutput": 462 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPoolWithArgmax_impl.js": { - "bytesInOutput": 344 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Asin.js": { + "bytesInOutput": 148 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPoolWithArgmax.js": { - "bytesInOutput": 767 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Asinh.js": { + "bytesInOutput": 122 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Mean_impl.js": { - "bytesInOutput": 508 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Atan.js": { + "bytesInOutput": 107 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Mean.js": { - "bytesInOutput": 1451 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Atan2.js": { + "bytesInOutput": 254 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Min.js": { - "bytesInOutput": 1247 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Minimum.js": { - "bytesInOutput": 397 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/mirror_pad_gpu.js": { - "bytesInOutput": 1317 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/mirror_pad_packed_gpu.js": { - "bytesInOutput": 2507 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MirrorPad.js": { - "bytesInOutput": 388 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Mod.js": { - "bytesInOutput": 313 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/multinomial_gpu.js": { - "bytesInOutput": 825 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RealDiv.js": { - "bytesInOutput": 525 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sub.js": { - "bytesInOutput": 192 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Softmax.js": { - "bytesInOutput": 1127 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Multinomial.js": { - "bytesInOutput": 611 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Neg.js": { - "bytesInOutput": 549 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NonMaxSuppressionV3.js": { - "bytesInOutput": 751 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NonMaxSuppressionV4.js": { - "bytesInOutput": 870 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NonMaxSuppressionV5.js": { - "bytesInOutput": 1019 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/onehot_gpu.js": { - "bytesInOutput": 392 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/OneHot.js": { - "bytesInOutput": 667 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ZerosLike.js": { - "bytesInOutput": 756 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/OnesLike.js": { - "bytesInOutput": 815 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Pack.js": { - "bytesInOutput": 879 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/pad_gpu.js": { - "bytesInOutput": 1124 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/pad_packed_gpu.js": { - "bytesInOutput": 1558 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/PadV2.js": { - "bytesInOutput": 377 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Pow.js": { - "bytesInOutput": 1002 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Prod.js": { - "bytesInOutput": 1524 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Range.js": { - "bytesInOutput": 263 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Reciprocal.js": { - "bytesInOutput": 171 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Relu.js": { - "bytesInOutput": 474 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Relu6.js": { - "bytesInOutput": 507 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_bilinear_gpu.js": { - "bytesInOutput": 1959 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_bilinear_packed_gpu.js": { - "bytesInOutput": 3903 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeBilinear.js": { - "bytesInOutput": 554 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_bilinear_backprop_gpu.js": { - "bytesInOutput": 3430 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeBilinearGrad.js": { - "bytesInOutput": 361 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_nearest_neighbor_gpu.js": { - "bytesInOutput": 1499 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeNearestNeighbor.js": { - "bytesInOutput": 452 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_nearest_neighbor_backprop_gpu.js": { - "bytesInOutput": 3021 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeNearestNeighborGrad.js": { - "bytesInOutput": 395 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/reverse_gpu.js": { - "bytesInOutput": 706 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/reverse_packed_gpu.js": { - "bytesInOutput": 2138 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Reverse.js": { - "bytesInOutput": 482 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/rotate_gpu.js": { - "bytesInOutput": 1427 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RotateWithOffset.js": { - "bytesInOutput": 338 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Round.js": { - "bytesInOutput": 461 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Rsqrt.js": { + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Atanh.js": { "bytesInOutput": 175 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/scatter_gpu.js": { - "bytesInOutput": 1312 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/pool_gpu.js": { + "bytesInOutput": 10264 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ScatterNd.js": { - "bytesInOutput": 1186 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPool.js": { + "bytesInOutput": 563 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/select_gpu.js": { - "bytesInOutput": 815 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPool3D.js": { + "bytesInOutput": 294 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Select.js": { - "bytesInOutput": 315 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/avg_pool_backprop_gpu.js": { + "bytesInOutput": 3558 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Selu.js": { - "bytesInOutput": 411 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPool3DGrad.js": { + "bytesInOutput": 281 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sigmoid.js": { - "bytesInOutput": 173 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPoolGrad.js": { + "bytesInOutput": 278 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sign.js": { - "bytesInOutput": 171 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchMatMul.js": { + "bytesInOutput": 205 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sin.js": { - "bytesInOutput": 156 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/batchnorm_gpu.js": { + "bytesInOutput": 794 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sinh.js": { - "bytesInOutput": 177 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/batchnorm_packed_gpu.js": { + "bytesInOutput": 803 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Softplus.js": { - "bytesInOutput": 483 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchNorm.js": { + "bytesInOutput": 828 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SpaceToBatchND.js": { - "bytesInOutput": 1358 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/slice_gpu.js": { + "bytesInOutput": 934 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseToDense.js": { + "node_modules/@tensorflow/tfjs-backend-webgl/dist/slice_packed_gpu.js": { + "bytesInOutput": 1481 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Slice.js": { + "bytesInOutput": 1088 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchToSpaceND.js": { + "bytesInOutput": 717 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Bincount.js": { + "bytesInOutput": 248 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NotEqual.js": { + "bytesInOutput": 119 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Real.js": { + "bytesInOutput": 196 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/int.js": { + "bytesInOutput": 160 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cast.js": { + "bytesInOutput": 909 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Ceil.js": { + "bytesInOutput": 136 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/clip_gpu.js": { + "bytesInOutput": 580 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/clip_packed_gpu.js": { + "bytesInOutput": 639 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ClipByValue.js": { + "bytesInOutput": 291 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/complex_abs_gpu.js": { + "bytesInOutput": 538 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ComplexAbs.js": { + "bytesInOutput": 328 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/concat_gpu.js": { + "bytesInOutput": 639 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/concat_packed_gpu.js": { + "bytesInOutput": 1568 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Imag.js": { + "bytesInOutput": 196 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Concat_impl.js": { + "bytesInOutput": 1445 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Concat.js": { + "bytesInOutput": 433 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_gpu.js": { + "bytesInOutput": 7879 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/im2col_packed_gpu.js": { + "bytesInOutput": 1645 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2D_impl.js": { + "bytesInOutput": 2523 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2D.js": { "bytesInOutput": 752 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SplitV.js": { - "bytesInOutput": 557 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_backprop_gpu.js": { + "bytesInOutput": 6539 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sqrt.js": { + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2DBackpropFilter.js": { + "bytesInOutput": 317 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2DBackpropInput.js": { + "bytesInOutput": 321 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv3D.js": { + "bytesInOutput": 256 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv3DBackpropFilterV2.js": { + "bytesInOutput": 248 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv3DBackpropInputV2.js": { + "bytesInOutput": 252 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cos.js": { + "bytesInOutput": 106 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cosh.js": { + "bytesInOutput": 143 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/crop_and_resize_gpu.js": { + "bytesInOutput": 2552 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/CropAndResize.js": { + "bytesInOutput": 251 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/cumsum_gpu.js": { + "bytesInOutput": 1196 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cumsum.js": { + "bytesInOutput": 912 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DenseBincount.js": { + "bytesInOutput": 526 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/depth_to_space_gpu.js": { + "bytesInOutput": 1148 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthToSpace.js": { + "bytesInOutput": 452 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_gpu_depthwise.js": { + "bytesInOutput": 2100 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_packed_gpu_depthwise.js": { + "bytesInOutput": 6440 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthwiseConv2dNative.js": { + "bytesInOutput": 566 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_backprop_gpu_depthwise.js": { + "bytesInOutput": 2653 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthwiseConv2dNativeBackpropFilter.js": { + "bytesInOutput": 283 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthwiseConv2dNativeBackpropInput.js": { + "bytesInOutput": 287 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/diag_gpu.js": { + "bytesInOutput": 268 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Diag.js": { + "bytesInOutput": 381 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/dilation_gpu.js": { + "bytesInOutput": 1295 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Dilation2D.js": { + "bytesInOutput": 368 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Elu.js": { + "bytesInOutput": 392 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/EluGrad.js": { + "bytesInOutput": 428 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Equal.js": { + "bytesInOutput": 173 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Erf.js": { + "bytesInOutput": 586 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Exp.js": { "bytesInOutput": 135 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Square.js": { - "bytesInOutput": 145 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ExpandDims.js": { + "bytesInOutput": 323 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SquaredDifference.js": { - "bytesInOutput": 261 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Expm1.js": { + "bytesInOutput": 141 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Step.js": { - "bytesInOutput": 316 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/fft_gpu.js": { + "bytesInOutput": 1296 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/strided_slice_gpu.js": { - "bytesInOutput": 703 + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FFT_impl.js": { + "bytesInOutput": 671 }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StridedSlice.js": { - "bytesInOutput": 1393 - }, - "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Tan.js": { + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FFT.js": { "bytesInOutput": 128 }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/fill_gpu.js": { + "bytesInOutput": 397 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Fill.js": { + "bytesInOutput": 341 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/flip_left_right_gpu.js": { + "bytesInOutput": 566 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FlipLeftRight.js": { + "bytesInOutput": 157 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Floor.js": { + "bytesInOutput": 137 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FloorDiv.js": { + "bytesInOutput": 852 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels_utils/from_pixels_gpu.js": { + "bytesInOutput": 708 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels_utils/from_pixels_packed_gpu.js": { + "bytesInOutput": 1080 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels.js": { + "bytesInOutput": 818 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FusedConv2D.js": { + "bytesInOutput": 1157 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FusedDepthwiseConv2D.js": { + "bytesInOutput": 895 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/gather_nd_gpu.js": { + "bytesInOutput": 590 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/GatherNd.js": { + "bytesInOutput": 528 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/gather_gpu.js": { + "bytesInOutput": 437 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/GatherV2.js": { + "bytesInOutput": 908 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Greater.js": { + "bytesInOutput": 195 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/GreaterEqual.js": { + "bytesInOutput": 184 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IFFT.js": { + "bytesInOutput": 128 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IsFinite.js": { + "bytesInOutput": 135 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IsInf.js": { + "bytesInOutput": 121 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IsNaN.js": { + "bytesInOutput": 121 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Less.js": { + "bytesInOutput": 192 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LessEqual.js": { + "bytesInOutput": 181 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LinSpace.js": { + "bytesInOutput": 182 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Log.js": { + "bytesInOutput": 440 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Log1p.js": { + "bytesInOutput": 105 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LogicalAnd.js": { + "bytesInOutput": 260 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LogicalNot.js": { + "bytesInOutput": 111 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LogicalOr.js": { + "bytesInOutput": 274 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/lrn_gpu.js": { + "bytesInOutput": 766 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/lrn_packed_gpu.js": { + "bytesInOutput": 2505 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LRN.js": { + "bytesInOutput": 277 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/lrn_grad_gpu.js": { + "bytesInOutput": 1821 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LRNGrad.js": { + "bytesInOutput": 226 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Max_impl.js": { + "bytesInOutput": 276 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Max.js": { + "bytesInOutput": 882 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Maximum.js": { + "bytesInOutput": 275 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPool.js": { + "bytesInOutput": 561 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPool3D.js": { + "bytesInOutput": 292 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/max_pool_backprop_gpu.js": { + "bytesInOutput": 4026 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPool3DGrad.js": { + "bytesInOutput": 378 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPoolGrad.js": { + "bytesInOutput": 408 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPoolWithArgmax_impl.js": { + "bytesInOutput": 162 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPoolWithArgmax.js": { + "bytesInOutput": 498 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Mean_impl.js": { + "bytesInOutput": 279 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Mean.js": { + "bytesInOutput": 728 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Min.js": { + "bytesInOutput": 771 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Minimum.js": { + "bytesInOutput": 275 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/mirror_pad_gpu.js": { + "bytesInOutput": 1115 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/mirror_pad_packed_gpu.js": { + "bytesInOutput": 2012 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MirrorPad.js": { + "bytesInOutput": 252 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Mod.js": { + "bytesInOutput": 251 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/multinomial_gpu.js": { + "bytesInOutput": 705 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RealDiv.js": { + "bytesInOutput": 465 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sub.js": { + "bytesInOutput": 153 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Softmax.js": { + "bytesInOutput": 739 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Multinomial.js": { + "bytesInOutput": 377 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Neg.js": { + "bytesInOutput": 389 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NonMaxSuppressionV3.js": { + "bytesInOutput": 459 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NonMaxSuppressionV4.js": { + "bytesInOutput": 547 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NonMaxSuppressionV5.js": { + "bytesInOutput": 569 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/onehot_gpu.js": { + "bytesInOutput": 329 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/OneHot.js": { + "bytesInOutput": 422 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ZerosLike.js": { + "bytesInOutput": 552 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/OnesLike.js": { + "bytesInOutput": 616 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Pack.js": { + "bytesInOutput": 600 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/pad_gpu.js": { + "bytesInOutput": 933 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/pad_packed_gpu.js": { + "bytesInOutput": 1181 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/PadV2.js": { + "bytesInOutput": 263 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Pow.js": { + "bytesInOutput": 940 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Prod.js": { + "bytesInOutput": 909 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Range.js": { + "bytesInOutput": 178 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Reciprocal.js": { + "bytesInOutput": 100 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Relu.js": { + "bytesInOutput": 404 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Relu6.js": { + "bytesInOutput": 429 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_bilinear_gpu.js": { + "bytesInOutput": 1520 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_bilinear_packed_gpu.js": { + "bytesInOutput": 3411 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeBilinear.js": { + "bytesInOutput": 307 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_bilinear_backprop_gpu.js": { + "bytesInOutput": 2959 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeBilinearGrad.js": { + "bytesInOutput": 211 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_nearest_neighbor_gpu.js": { + "bytesInOutput": 1026 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeNearestNeighbor.js": { + "bytesInOutput": 238 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_nearest_neighbor_backprop_gpu.js": { + "bytesInOutput": 2470 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeNearestNeighborGrad.js": { + "bytesInOutput": 211 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/reverse_gpu.js": { + "bytesInOutput": 585 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/reverse_packed_gpu.js": { + "bytesInOutput": 1562 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Reverse.js": { + "bytesInOutput": 342 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/rotate_gpu.js": { + "bytesInOutput": 1036 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RotateWithOffset.js": { + "bytesInOutput": 206 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Round.js": { + "bytesInOutput": 420 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Rsqrt.js": { + "bytesInOutput": 124 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/scatter_gpu.js": { + "bytesInOutput": 918 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ScatterNd.js": { + "bytesInOutput": 727 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/select_gpu.js": { + "bytesInOutput": 594 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Select.js": { + "bytesInOutput": 226 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Selu.js": { + "bytesInOutput": 338 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sigmoid.js": { + "bytesInOutput": 120 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sign.js": { + "bytesInOutput": 136 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sin.js": { + "bytesInOutput": 106 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sinh.js": { + "bytesInOutput": 142 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Softplus.js": { + "bytesInOutput": 424 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SpaceToBatchND.js": { + "bytesInOutput": 757 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseToDense.js": { + "bytesInOutput": 438 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SplitV.js": { + "bytesInOutput": 376 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sqrt.js": { + "bytesInOutput": 100 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Square.js": { + "bytesInOutput": 98 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SquaredDifference.js": { + "bytesInOutput": 129 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Step.js": { + "bytesInOutput": 227 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/strided_slice_gpu.js": { + "bytesInOutput": 497 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StridedSlice.js": { + "bytesInOutput": 904 + }, + "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Tan.js": { + "bytesInOutput": 99 + }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Tanh.js": { - "bytesInOutput": 201 + "bytesInOutput": 166 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/tile_gpu.js": { - "bytesInOutput": 833 + "bytesInOutput": 581 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Tile.js": { - "bytesInOutput": 500 + "bytesInOutput": 349 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/TopK.js": { - "bytesInOutput": 444 + "bytesInOutput": 280 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Unique.js": { - "bytesInOutput": 522 + "bytesInOutput": 396 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Unpack.js": { - "bytesInOutput": 775 + "bytesInOutput": 551 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/segment_gpu.js": { - "bytesInOutput": 3803 + "bytesInOutput": 3184 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/UnsortedSegmentSum.js": { - "bytesInOutput": 2032 + "bytesInOutput": 1097 }, "node_modules/@tensorflow/tfjs-backend-webgl/dist/register_all_kernels.js": { - "bytesInOutput": 2566 + "bytesInOutput": 487 }, "node_modules/@tensorflow/tfjs/dist/version.js": { - "bytesInOutput": 21 + "bytesInOutput": 15 }, "src/tfjs/tf-browser.ts": { "bytesInOutput": 0 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/types.js": { - "bytesInOutput": 638 + "bytesInOutput": 300 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/_FusedMatMul.js": { - "bytesInOutput": 1736 + "bytesInOutput": 1193 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/unary_kernel.js": { - "bytesInOutput": 503 + "bytesInOutput": 327 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Abs.js": { - "bytesInOutput": 44 + "bytesInOutput": 14 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/binary_kernel.js": { - "bytesInOutput": 1447 + "bytesInOutput": 897 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Add.js": { - "bytesInOutput": 92 + "bytesInOutput": 23 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/AddN.js": { - "bytesInOutput": 612 + "bytesInOutput": 430 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Identity.js": { - "bytesInOutput": 280 + "bytesInOutput": 199 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Transpose.js": { - "bytesInOutput": 1575 + "bytesInOutput": 992 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/kernel_utils.js": { - "bytesInOutput": 720 + "bytesInOutput": 408 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/ArgMax.js": { - "bytesInOutput": 936 + "bytesInOutput": 567 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/AvgPool.js": { - "bytesInOutput": 1486 + "bytesInOutput": 1029 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Reshape.js": { - "bytesInOutput": 479 + "bytesInOutput": 363 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/BatchMatMul.js": { - "bytesInOutput": 2546 + "bytesInOutput": 1607 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Cast.js": { - "bytesInOutput": 276 + "bytesInOutput": 209 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/ClipByValue.js": { - "bytesInOutput": 513 + "bytesInOutput": 360 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Concat.js": { - "bytesInOutput": 1916 + "bytesInOutput": 1127 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Conv2D.js": { - "bytesInOutput": 1716 + "bytesInOutput": 1093 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Conv2DBackpropInput.js": { - "bytesInOutput": 2126 + "bytesInOutput": 1186 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Cos.js": { - "bytesInOutput": 44 + "bytesInOutput": 14 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/CropAndResize.js": { - "bytesInOutput": 1521 + "bytesInOutput": 846 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Cumsum.js": { - "bytesInOutput": 1441 + "bytesInOutput": 874 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/DepthToSpace.js": { - "bytesInOutput": 1477 + "bytesInOutput": 862 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/DepthwiseConv2dNative.js": { - "bytesInOutput": 1775 + "bytesInOutput": 1080 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Equal.js": { - "bytesInOutput": 105 + "bytesInOutput": 30 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Exp.js": { - "bytesInOutput": 44 + "bytesInOutput": 14 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/ExpandDims.js": { - "bytesInOutput": 501 + "bytesInOutput": 322 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Fill.js": { - "bytesInOutput": 237 + "bytesInOutput": 181 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/FlipLeftRight.js": { - "bytesInOutput": 649 + "bytesInOutput": 362 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Floor.js": { - "bytesInOutput": 48 + "bytesInOutput": 14 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/FloorDiv.js": { - "bytesInOutput": 104 + "bytesInOutput": 23 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/FusedBatchNorm.js": { - "bytesInOutput": 926 + "bytesInOutput": 605 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/FusedConv2D.js": { - "bytesInOutput": 2563 + "bytesInOutput": 1609 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/FusedDepthwiseConv2D.js": { - "bytesInOutput": 2672 + "bytesInOutput": 1648 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/GatherNd.js": { - "bytesInOutput": 915 + "bytesInOutput": 539 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/GatherV2.js": { - "bytesInOutput": 1612 + "bytesInOutput": 997 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Greater.js": { - "bytesInOutput": 109 + "bytesInOutput": 30 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/GreaterEqual.js": { - "bytesInOutput": 119 + "bytesInOutput": 30 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/LeakyRelu.js": { - "bytesInOutput": 514 + "bytesInOutput": 356 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Less.js": { - "bytesInOutput": 103 + "bytesInOutput": 30 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/LessEqual.js": { - "bytesInOutput": 113 + "bytesInOutput": 30 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Log.js": { - "bytesInOutput": 44 + "bytesInOutput": 14 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/LogicalAnd.js": { - "bytesInOutput": 115 + "bytesInOutput": 30 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Max.js": { - "bytesInOutput": 1169 + "bytesInOutput": 712 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Maximum.js": { - "bytesInOutput": 102 + "bytesInOutput": 23 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/MaxPool.js": { - "bytesInOutput": 1476 + "bytesInOutput": 938 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Mean.js": { - "bytesInOutput": 1552 + "bytesInOutput": 920 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Min.js": { - "bytesInOutput": 1187 + "bytesInOutput": 713 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Minimum.js": { - "bytesInOutput": 104 + "bytesInOutput": 23 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Multiply.js": { - "bytesInOutput": 106 + "bytesInOutput": 23 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Neg.js": { - "bytesInOutput": 44 + "bytesInOutput": 14 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/NonMaxSuppression_util.js": { - "bytesInOutput": 314 + "bytesInOutput": 185 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/NonMaxSuppressionV3.js": { - "bytesInOutput": 816 + "bytesInOutput": 512 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/NonMaxSuppressionV4.js": { - "bytesInOutput": 990 + "bytesInOutput": 568 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/NonMaxSuppressionV5.js": { - "bytesInOutput": 980 + "bytesInOutput": 569 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/NotEqual.js": { - "bytesInOutput": 113 + "bytesInOutput": 32 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/OneHot.js": { - "bytesInOutput": 554 + "bytesInOutput": 387 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/OnesLike.js": { - "bytesInOutput": 238 + "bytesInOutput": 176 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Pack.js": { - "bytesInOutput": 686 + "bytesInOutput": 516 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/PadV2.js": { - "bytesInOutput": 948 + "bytesInOutput": 617 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Pow.js": { - "bytesInOutput": 96 + "bytesInOutput": 25 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Prelu.js": { - "bytesInOutput": 495 + "bytesInOutput": 352 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Prod.js": { - "bytesInOutput": 1334 + "bytesInOutput": 783 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Range.js": { - "bytesInOutput": 301 + "bytesInOutput": 208 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/RealDiv.js": { - "bytesInOutput": 104 + "bytesInOutput": 25 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Relu.js": { - "bytesInOutput": 46 + "bytesInOutput": 14 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Relu6.js": { - "bytesInOutput": 48 + "bytesInOutput": 14 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/ResizeBilinear.js": { - "bytesInOutput": 1146 + "bytesInOutput": 682 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Reverse.js": { - "bytesInOutput": 836 + "bytesInOutput": 614 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/RotateWithOffset.js": { - "bytesInOutput": 1106 + "bytesInOutput": 601 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Round.js": { - "bytesInOutput": 48 + "bytesInOutput": 14 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Rsqrt.js": { - "bytesInOutput": 48 + "bytesInOutput": 14 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/ScatterNd.js": { - "bytesInOutput": 939 + "bytesInOutput": 616 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Select.js": { - "bytesInOutput": 722 + "bytesInOutput": 509 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Sigmoid.js": { - "bytesInOutput": 466 + "bytesInOutput": 333 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Sin.js": { - "bytesInOutput": 44 + "bytesInOutput": 14 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Slice.js": { - "bytesInOutput": 2295 + "bytesInOutput": 1268 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Softmax.js": { - "bytesInOutput": 612 + "bytesInOutput": 409 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/SplitV.js": { - "bytesInOutput": 547 + "bytesInOutput": 373 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Sqrt.js": { - "bytesInOutput": 46 + "bytesInOutput": 14 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Square.js": { - "bytesInOutput": 50 + "bytesInOutput": 14 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/SquaredDifference.js": { - "bytesInOutput": 124 + "bytesInOutput": 25 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/StridedSlice.js": { - "bytesInOutput": 2788 + "bytesInOutput": 1766 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Sub.js": { - "bytesInOutput": 96 + "bytesInOutput": 25 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Sum.js": { - "bytesInOutput": 1294 + "bytesInOutput": 759 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Tanh.js": { - "bytesInOutput": 46 + "bytesInOutput": 14 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Tile.js": { - "bytesInOutput": 766 + "bytesInOutput": 559 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/TopK.js": { - "bytesInOutput": 820 + "bytesInOutput": 544 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/Unpack.js": { - "bytesInOutput": 649 + "bytesInOutput": 480 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/kernels/ZerosLike.js": { - "bytesInOutput": 242 + "bytesInOutput": 176 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/register_all_kernels.js": { - "bytesInOutput": 1425 + "bytesInOutput": 288 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/flags_wasm.js": { - "bytesInOutput": 494 + "bytesInOutput": 484 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/backend_wasm.js": { - "bytesInOutput": 6450 + "bytesInOutput": 4488 }, "node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.worker.js": { - "bytesInOutput": 3430 + "bytesInOutput": 3414 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/version.js": { - "bytesInOutput": 21 + "bytesInOutput": 16 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/base.js": { - "bytesInOutput": 121 + "bytesInOutput": 76 }, "node_modules/@tensorflow/tfjs-backend-wasm/dist/index.js": { "bytesInOutput": 0 } }, - "bytes": 1566890 + "bytes": 1064181 } } } diff --git a/server/build.js b/server/build.js index cf77a79..7a73973 100644 --- a/server/build.js +++ b/server/build.js @@ -44,6 +44,7 @@ const tsconfig = { const common = { banner, minifyWhitespace: true, + minifyIdentifiers: true, minifySyntax: true, bundle: true, sourcemap: true,